Fixup file modification timestamps to optimize failover from RRDP to RSYNC
authorjob <job@openbsd.org>
Tue, 30 May 2023 16:02:28 +0000 (16:02 +0000)
committerjob <job@openbsd.org>
Tue, 30 May 2023 16:02:28 +0000 (16:02 +0000)
commit08ac1330e7955e03b6bba4571e0a9906d7ef5279
tree4a3d52b25e2c7076e85d93090cb6d8b01fd98feb
parente0b59cc71b918867a5b129fc246328b990a680e1
Fixup file modification timestamps to optimize failover from RRDP to RSYNC

In the RSYNC protocol a file's last modification time and its size are
used to determine whether sending a (partial) copy over the wire is needed.
Previously, when RRDP data structures are serialized to disk, the mtime of
files in DIR_VALID ended up being UTIME_NOW.

Thus, the mtimes of files obtained through RRDP will never match the mtimes
of the same files available through RSYNC - causing each and every file to
be added to the file transfer list.

Instead, use the internal timestamps of RPKI files as the last modified
timestamp. Specifically, for Signed Objects (ROAs, MFTs, GBRs, TAKs, ASPAs)
the CMS signing-time, for .cer files the X.509 notBefore, and for .crl files
the CRL lastUpdate. This results in a surprising optimization for the number
files which have to be transfered.

OK claudio@
usr.sbin/rpki-client/extern.h
usr.sbin/rpki-client/filemode.c
usr.sbin/rpki-client/main.c
usr.sbin/rpki-client/parser.c
usr.sbin/rpki-client/repo.c