*/
#ifdef HAVE_CONFIG_H
-#include "config.h"
+#include <config.h>
#endif
-#include <netdissect-stdinc.h>
+#include "netdissect-stdinc.h"
#ifdef HAVE_STRFTIME
#include <time.h>
ND_TCHECK_1(bp->precision);
ND_PRINT(", precision %d", EXTRACT_S_1(bp->precision));
- ND_TCHECK(bp->root_delay);
+ ND_TCHECK_SIZE(&bp->root_delay);
ND_PRINT("\n\tRoot Delay: ");
p_sfix(ndo, &bp->root_delay);
- ND_TCHECK(bp->root_dispersion);
+ ND_TCHECK_SIZE(&bp->root_dispersion);
ND_PRINT(", Root dispersion: ");
p_sfix(ndo, &bp->root_dispersion);
- ND_TCHECK(bp->refid);
+ ND_TCHECK_4(bp->refid);
ND_PRINT(", Reference-ID: ");
/* Interpretation depends on stratum */
switch (stratum) {
break;
case INFO_QUERY:
- ND_PRINT("%s INFO_QUERY", ipaddr_string(ndo, &(bp->refid)));
+ ND_PRINT("%s INFO_QUERY", ipaddr_string(ndo, bp->refid));
/* this doesn't have more content */
return;
case INFO_REPLY:
- ND_PRINT("%s INFO_REPLY", ipaddr_string(ndo, &(bp->refid)));
+ ND_PRINT("%s INFO_REPLY", ipaddr_string(ndo, bp->refid));
/* this is too complex to be worth printing */
return;
default:
/* In NTPv4 (RFC 5905) refid is an IPv4 address or first 32 bits of
MD5 sum of IPv6 address */
- ND_PRINT("0x%08x", EXTRACT_BE_U_4(&bp->refid));
+ ND_PRINT("0x%08x", EXTRACT_BE_U_4(bp->refid));
break;
}
- ND_TCHECK(bp->ref_timestamp);
+ ND_TCHECK_SIZE(&bp->ref_timestamp);
ND_PRINT("\n\t Reference Timestamp: ");
p_ntp_time(ndo, &(bp->ref_timestamp));
- ND_TCHECK(bp->org_timestamp);
+ ND_TCHECK_SIZE(&bp->org_timestamp);
ND_PRINT("\n\t Originator Timestamp: ");
p_ntp_time(ndo, &(bp->org_timestamp));
- ND_TCHECK(bp->rec_timestamp);
+ ND_TCHECK_SIZE(&bp->rec_timestamp);
ND_PRINT("\n\t Receive Timestamp: ");
p_ntp_time(ndo, &(bp->rec_timestamp));
- ND_TCHECK(bp->xmt_timestamp);
+ ND_TCHECK_SIZE(&bp->xmt_timestamp);
ND_PRINT("\n\t Transmit Timestamp: ");
p_ntp_time(ndo, &(bp->xmt_timestamp));
const u_char *cp, u_int length)
{
const union ntpdata *bp = (const union ntpdata *)cp;
- int mode, version, leapind;
+ u_int mode, version, leapind;
uint8_t status;
- ND_TCHECK(bp->td.status);
+ ND_TCHECK_1(bp->td.status);
status = EXTRACT_U_1(bp->td.status);
version = (status & VERSIONMASK) >> VERSIONSHIFT;
- ND_PRINT("NTPv%d", version);
+ ND_PRINT("NTPv%u", version);
mode = (status & MODEMASK) >> MODESHIFT;
if (!ndo->ndo_vflag) {
tok2str(ntp_leapind_values, "Unknown", leapind),
leapind);
- if (mode >= MODE_UNSPEC && mode <= MODE_BROADCAST)
+ switch (mode) {
+
+ case MODE_UNSPEC:
+ case MODE_SYM_ACT:
+ case MODE_SYM_PAS:
+ case MODE_CLIENT:
+ case MODE_SERVER:
+ case MODE_BROADCAST:
ntp_time_print(ndo, &bp->td, length);
- else if (mode == MODE_CONTROL)
+ break;
+
+ case MODE_CONTROL:
ntp_control_print(ndo, &bp->cd, length);
- else
- {;} /* XXX: not implemented! */
+ break;
+
+ default:
+ break; /* XXX: not implemented! */
+ }
return;
trunc:
int f;
double ff;
- i = EXTRACT_BE_U_2(&sfp->int_part);
- f = EXTRACT_BE_U_2(&sfp->fraction);
+ i = EXTRACT_BE_U_2(sfp->int_part);
+ f = EXTRACT_BE_U_2(sfp->fraction);
ff = f / 65536.0; /* shift radix point by 16 bits */
f = (int)(ff * 1000000.0); /* Treat fraction as parts per million */
ND_PRINT("%d.%06d", i, f);
uint32_t f;
double ff;
- i = EXTRACT_BE_U_4(&lfp->int_part);
- uf = EXTRACT_BE_U_4(&lfp->fraction);
+ i = EXTRACT_BE_U_4(lfp->int_part);
+ uf = EXTRACT_BE_U_4(lfp->fraction);
ff = uf;
if (ff < 0.0) /* some compilers are buggy */
ff += FMAXINT;
ff = ff / FMAXINT; /* shift radix point by 32 bits */
f = (uint32_t)(ff * 1000000000.0); /* treat fraction as parts per billion */
- ND_PRINT("%u.%09d", i, f);
+ ND_PRINT("%u.%09u", i, f);
#ifdef HAVE_STRFTIME
/*
const struct l_fixedpt *olfp,
const struct l_fixedpt *lfp)
{
- int32_t i;
uint32_t u, uf;
uint32_t ou, ouf;
+ uint32_t i;
uint32_t f;
double ff;
int signbit;
- u = EXTRACT_BE_U_4(&lfp->int_part);
- ou = EXTRACT_BE_U_4(&olfp->int_part);
- uf = EXTRACT_BE_U_4(&lfp->fraction);
- ouf = EXTRACT_BE_U_4(&olfp->fraction);
+ u = EXTRACT_BE_U_4(lfp->int_part);
+ ou = EXTRACT_BE_U_4(olfp->int_part);
+ uf = EXTRACT_BE_U_4(lfp->fraction);
+ ouf = EXTRACT_BE_U_4(olfp->fraction);
if (ou == 0 && ouf == 0) {
p_ntp_time(ndo, lfp);
return;
}
- i = u - ou;
-
- if (i > 0) { /* new is definitely greater than old */
+ if (u > ou) { /* new is definitely greater than old */
signbit = 0;
+ i = u - ou;
f = uf - ouf;
if (ouf > uf) /* must borrow from high-order bits */
i -= 1;
- } else if (i < 0) { /* new is definitely less than old */
+ } else if (u < ou) { /* new is definitely less than old */
signbit = 1;
+ i = ou - u;
f = ouf - uf;
- if (uf > ouf) /* must carry into the high-order bits */
- i += 1;
- i = -i;
+ if (uf > ouf) /* must borrow from the high-order bits */
+ i -= 1;
} else { /* int_part is zero */
+ i = 0;
if (uf > ouf) {
signbit = 0;
f = uf - ouf;
ff += FMAXINT;
ff = ff / FMAXINT; /* shift radix point by 32 bits */
f = (uint32_t)(ff * 1000000000.0); /* treat fraction as parts per billion */
- ND_PRINT("%s%d.%09d", signbit ? "-" : "+", i, f);
+ ND_PRINT("%s%u.%09u", signbit ? "-" : "+", i, f);
}
/* Prints polling interval in log2 as seconds or fraction of second */