Hal Murray <hmur...@megapathdsl.net>:
> Disclaimer: I could easily get something backwards.  I've worked with both 
> and can easily switch even when I shouldn't.
> 
> 
> > +#define LAST32MASK 0x00000000ffffffffUL
> > +#define FIRST32MASK        0xffffffff00000000UL
> 
> FIRST and LAST seem like poor choices for words.  Do you mean first on the 
> wire?  Network protocols are almost always little endian.
> 
> In any case, those masks are not within an ifdef so they will be used in both 
> cases.
> 
> If you want the low or high bits, the masks and macros don't depend on the 
> endianness if you are extracting from a uint64_t.  You may need to invent a 
> new host2net type macro to byte swap an 8 byte chunk if you want to 
> send/receive those chunks from the network.

I found the problem a few hours ago.

There only needs to be one set of those macros, and it's the one that
I was thinking of as big-endian.  That's because at the point at which
the data is in a uint64_t it's no longer in wire format; it has
already been word-swapped to host order.

Elementary, I know - but these things are easy for even the
experienced to get backwards, as you just demonstrated.  Most network
protocols are *big-endian*, and NTP's are not an exception.
-- 
                <a href="http://www.catb.org/~esr/";>Eric S. Raymond</a>
_______________________________________________
devel mailing list
devel@ntpsec.org
http://lists.ntpsec.org/mailman/listinfo/devel

Reply via email to