New ntpq peers chops refclocks to 6 characters
Eric S. Raymond
esr at thyrsus.com
Mon Jun 27 09:05:27 UTC 2016
Hal Murray <hmurray at megapathdsl.net>:
> But there is lots more room in that column. I think it will hold a worst
> case IPv4 numerical address.
> remote refid st t when poll reach delay offset jitter
> HP5850 .GPS. 0 l 7 64 1 0.000 0.000 0.000
> PPS(0) .PPS. 0 l - 64 0 0.000 0.000 0.000
> SHM(0) .SHM. 0 l 5 64 1 0.000 -218.14 0.001
> SHM(1) .SHM. 0 l 4 64 1 0.000 -1.094 0.001
> GPSD(0 .GPSD. 0 l 3 64 1 0.000 -308.94 0.001
> GPSD(1 .GPSD. 0 l 2 64 1 0.000 -0.209 0.001
Hmmm. I think the client-side code is computing an incorrectly short field
width. That shouldn't be hard to fix if I can reproduce this. What set of
options produces it?
Let me explain how the behavior has changed.
What ntpq used to do is detect that a peer it's querying is a clock by
looking at its IP address (127.127.t.u), and call a routine that looks
in a table for the driver shortname based on the t field.
But I hated those magic addresses and the exposed numeric driver types,
so I got rid of them. Instead, in response to a peer query ntpd may
send back a variable 'displayname' - will if the peer is a clock. If
ntpq sees 'displayname' in the response it treats that value as an override
for the first column. IOW, ntpd is now responsible for telling ntpq how
a peer line should be labeled.
It looks like displayname is being received correctly, then truncated
by the display code. There's some logic for computing the shortest
possible first-column width to hold all the labels from a
peer-response set that looked fishy and overcomplicated to me when I
first saw it; I think your bug means my change made it lose its marbles
and am less surprised at this than I might be.
(Note: Classic's ntpq will just keep doing what it has always done. The
only case that degrades a little is our ntpq querying a Classic ntpd -
our display logic will fail to recognize that 127.127.t.u is a clock.
But that's not a big deal given there'll be a clock refid in the next
I can probably fix your bug by removing some dodgy code.
<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>
More information about the devel