Hi Hugh, thanks brining this up. Sadly 1913dd115696793d8dc5d6b6fd3f8238408fc1d1 got merged too soon.
Ideally PLUTO_ADDTIME should be realtime_t, however, add_time is set in netlink_get_sa. It comes from curlft.add_time which is an uint64_t add_time , struct xfrm_lifetime_cur curlft; we could type cast it to realtime_t? realtime_t add_time = (realtime_t) curlft.add_time changei add_time in struct ipsec_proto_info to realtime_t add_time; On the other hand I am not sure netlink_get_sa actually returns the add_time the first time. My experience is it returns 0 the first time and on subsequent calls returns realtime_t of the first call. However, I am waiting on Paul's input on this. -antony On Wed, Aug 13, 2014 at 12:41:27PM -0400, D. Hugh Redelmeier wrote: > Generally speaking, time should not be represented within Pluto with a > uint64_t. > > Most (not all!) times in system and library calls are time_t, which > may or may not be uint64_t (system dependent). > > There are three kinds of time_t that are not the same. > So Pluto has three distinct types for these distinct purposes. The > advantages are: > > - the compiler can detect when you are mixing up kinds of time values: > you will violate C's type system. > > - the programmer has to clearly think out what kind of type is being > used. > > This is documented in linux/include/libreswan.h. Here's a comment > from there: > * realtime_t: absolute UTC time. Might be discontinuous due to clock > adjustment. > * monotime_t: absolute monotonic time. No discontinuities (except for > machine sleep?) > * deltatime_t: relative time between events. Presumed continuous. > > I introduced these types because the uses were being mixed up and > this created at least one long-standing subtle bug. > > The commit 1913dd115696793d8dc5d6b6fd3f8238408fc1d1 message says: > > - Add PLUTO_ADDTIME= for use in updown script. This is an epoch time > stamp, since the IPsec SA was added to the kernel (NETKEY only) > > I don't know what this means. Perhaps > > - ... This is the time_t representation of the UTC time when > the IPsec SA was added ... > > Wall-clock time is "the time since the Epoch (00:00:00 UTC, January 1, > 1970), measured in seconds." (see time(2)). > > In Pluto, the type for wall-clock time is realtime_t. > > _______________________________________________ > Swan-dev mailing list > [email protected] > https://lists.libreswan.org/mailman/listinfo/swan-dev > _______________________________________________ Swan-dev mailing list [email protected] https://lists.libreswan.org/mailman/listinfo/swan-dev
