From ce8c1ff72e0cfabb40941599b3157df7213b6960 Mon Sep 17 00:00:00 2001 From: alexander <> Date: Sun, 11 Jul 2004 00:15:10 +0000 Subject: [PATCH] Start collecting the remote server state along with the calculated offsets, in preparation for having correct server statistics in responses to client queries. ok henning@ --- src/usr.sbin/ntpd/client.c | 11 ++++++++++- src/usr.sbin/ntpd/ntpd.h | 24 ++++++++++++++++++------ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/usr.sbin/ntpd/client.c b/src/usr.sbin/ntpd/client.c index efe730e9..149ab165 100644 --- a/src/usr.sbin/ntpd/client.c +++ b/src/usr.sbin/ntpd/client.c @@ -1,4 +1,4 @@ -/* $OpenBSD: client.c,v 1.23 2004/07/10 19:16:06 henning Exp $ */ +/* $OpenBSD: client.c,v 1.24 2004/07/11 00:15:10 alexander Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer @@ -169,6 +169,15 @@ client_dispatch(struct ntp_peer *p) p->reply[p->shift].rcvd = time(NULL); p->reply[p->shift].good = 1; + p->reply[p->shift].status.leap = (msg.status & LIMASK) >> 6; + p->reply[p->shift].status.stratum = msg.stratum; + p->reply[p->shift].status.precision = msg.precision; + p->reply[p->shift].status.rootdelay = sfp_to_d(msg.distance); + p->reply[p->shift].status.rootdispersion = sfp_to_d(msg.dispersion); + p->reply[p->shift].status.refid = htonl(msg.refid); + p->reply[p->shift].status.reftime = lfp_to_d(msg.reftime); + p->reply[p->shift].status.poll = msg.ppoll; + if (p->trustlevel < TRUSTLEVEL_PATHETIC) interval = INTERVAL_QUERY_PATHETIC; else if (p->trustlevel < TRUSTLEVEL_AGRESSIVE) diff --git a/src/usr.sbin/ntpd/ntpd.h b/src/usr.sbin/ntpd/ntpd.h index ae9acee3..452dace9 100644 --- a/src/usr.sbin/ntpd/ntpd.h +++ b/src/usr.sbin/ntpd/ntpd.h @@ -1,4 +1,4 @@ -/* $OpenBSD: ntpd.h,v 1.23 2004/07/10 23:12:57 alexander Exp $ */ +/* $OpenBSD: ntpd.h,v 1.24 2004/07/11 00:15:10 alexander Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer @@ -70,12 +70,24 @@ struct ntp_addr { struct sockaddr_storage ss; }; +struct ntp_status { + u_int8_t leap; + u_int8_t stratum; + int8_t precision; + double rootdelay; + double rootdispersion; + u_int32_t refid; + double reftime; + u_int8_t poll; +}; + struct ntp_offset { - u_int8_t good; - double offset; - double delay; - double error; - time_t rcvd; + u_int8_t good; + double offset; + double delay; + double error; + time_t rcvd; + struct ntp_status status; }; struct ntp_peer {