tain_from_ntp.c (422B)
1 /* ISC license. */ 2 3 #include <skalibs/uint64.h> 4 #include <skalibs/tai.h> 5 #include <skalibs/djbtime.h> 6 7 int tain_from_ntp (tain *a, uint64_t u) 8 { 9 tai secs = { .x = u >> 32 } ; 10 if (secs.x <= 0x7FFFFFFFUL) secs.x |= ((uint64_t)1 << 32) ; 11 secs.x += TAI_MAGIC ; 12 secs.x -= NTP_OFFSET ; 13 if (!tai_from_utc(&secs, secs.x)) return 0 ; 14 a->sec = secs ; 15 a->nano = ((u & 0xFFFFFFFFUL) * 1000000000) >> 32 ; 16 return 1 ; 17 }