lfpinit() signed or unsigned?

Gary E. Miller gem at rellim.com
Fri Mar 10 18:38:03 UTC 2017


Yo Hal!

On Fri, 10 Mar 2017 00:59:49 -0800
Hal Murray <hmurray at megapathdsl.net> wrote:

> > I'm now leaning that way too.  And two ways to make an l_fp, one
> > starting with int's and the other uint's.   
> 
> Be careful with making negative values.  The case I'm worried about
> is dropping the carry out of the low half.

The code has a normalize_tspec() ir prolly needs a normalize_lp().

> > The npd code is gonna be OK, the problem is that the NTP wire
> > protocol for timestamps is in 32 bits!   
> 
> Why is that a problem?

Because a RasPi has no RTC.  When it starts up it is always 1970
again.  When 2036 comes, how will the RasPi know it is 2036 and not
1970?


> To convert between NTP and Unix...  Until 2036, you just add/sub
> JAN_1970. After 2036 add/sub JAN_1970 and 1<<32 if T < build date.
> (Or something close to that.)

I love the lcak of confidence you have there.  Could should be obvious.

> >> Does the current code have the right variable?  Have you found it?
> >> Is there more than one place that does NTP to Unix conversion?  
> > Sort of.  The conversion constant is JAN_1970.  That is defined in
> > include/ ntp_calendar.h.  
> 
> That constant doesn't have anything to do with calendars.  I'm not
> sure where it should go.

Good enough place for now.

> In the long run, it's more complicated.  See above.

Oh, yeah.

> > There is a macro to do the conversion from timestamp to NTP Epoch:
> > tspec_stamp_to_lfp(), but it is not always used.  
> 
> > There look to be just two places the conversion from NTP Epoch is
> > done: ntpcal_ntp_to_time() and ctl_putfs().  And the later not even
> > using l_fp, it uniquely uses tstamp_t which is seconds based on NTP
> > Epoch.  
> 
> ctl_putfs is only used to printout leap second dates.

Looks to me like it is creating an NTP mode 6 message in wire format.

To change that you would need to change the mode 6 protocol.

> I don't see any
> reason to involve NTP date formats or epochs.  From a quick glance,
> the NTP in the comment where it is defined looks bogus.  I'll clean
> that up if you want to unload a nice small chunk, but it looks like
> you have already done something in that area.

I have some ideas, but if it makes sense to you, go ahead.

> I haven't sorted out ntpcal_ntp_to_time yet.

Easy, it is just converting a 32 bit NTP Epoch time stamp into a
POSIX Epoch time stamp.  It is not worth a lot of time it is only used
in libntp/prettydate.c common_prettydate().

ntpcal_ntp_to_time() could become a static in libntp/prettydate.c

RGDS
GARY
---------------------------------------------------------------------------
Gary E. Miller Rellim 109 NW Wilmington Ave., Suite E, Bend, OR 97703
	gem at rellim.com  Tel:+1 541 382 8588

	    Veritas liberabit vos. -- Quid est veritas?
    "If you can’t measure it, you can’t improve it." - Lord Kelvin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ntpsec.org/pipermail/devel/attachments/20170310/c5e2d271/attachment.bin>


More information about the devel mailing list