summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhannes <hannes>2004-01-28 14:34:50 +0000
committerhannes <hannes>2004-01-28 14:34:50 +0000
commit74bb4ee159b105b333421688f1de6f42d115e803 (patch)
treef5459764f264f37b4b80ee2b966160e9384a5f68
parent65be54b51e730463dd02b6d7a84c9c6d0efbb46a (diff)
downloadtcpdump-74bb4ee159b105b333421688f1de6f42d115e803.tar.gz
provide decent multipline output for the NTP printer
-rw-r--r--ntp.h84
-rw-r--r--print-ntp.c146
2 files changed, 115 insertions, 115 deletions
diff --git a/ntp.h b/ntp.h
index 5292295f..0614f73b 100644
--- a/ntp.h
+++ b/ntp.h
@@ -1,4 +1,4 @@
-/* $Header: /tcpdump/master/tcpdump/ntp.h,v 1.7 2003-08-06 04:58:21 guy Exp $ */
+/* $Header: /tcpdump/master/tcpdump/ntp.h,v 1.8 2004-01-28 14:34:50 hannes Exp $ */
/*
* Based on ntp.h from the U of MD implementation
@@ -37,48 +37,58 @@ struct s_fixedpt {
u_int16_t fraction;
};
-/* ================= Table 3.3. Packet Variables ================= */
-/*
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |LI | VN | Mode| Stratum | Poll | Precision |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Synchronizing Distance |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Synchronizing Dispersion |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Reference Clock Identifier |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * | Reference Timestamp (64 bits) |
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * | Originate Timestamp (64 bits) |
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * | Receive Timestamp (64 bits) |
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * | Transmit Timestamp (64 bits) |
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-*/
+/* rfc2030
+ * 1 2 3
+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * |LI | VN |Mode | Stratum | Poll | Precision |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | Root Delay |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | Root Dispersion |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | Reference Identifier |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | |
+ * | Reference Timestamp (64) |
+ * | |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | |
+ * | Originate Timestamp (64) |
+ * | |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | |
+ * | Receive Timestamp (64) |
+ * | |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | |
+ * | Transmit Timestamp (64) |
+ * | |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | Key Identifier (optional) (32) |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | |
+ * | |
+ * | Message Digest (optional) (128) |
+ * | |
+ * | |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ */
+
struct ntpdata {
u_char status; /* status of local clock and leap info */
u_char stratum; /* Stratum level */
u_char ppoll; /* poll value */
int precision:8;
- struct s_fixedpt distance;
- struct s_fixedpt dispersion;
+ struct s_fixedpt root_delay;
+ struct s_fixedpt root_dispersion;
u_int32_t refid;
- struct l_fixedpt reftime;
- struct l_fixedpt org;
- struct l_fixedpt rec;
- struct l_fixedpt xmt;
+ struct l_fixedpt ref_timestamp;
+ struct l_fixedpt org_timestamp;
+ struct l_fixedpt rec_timestamp;
+ struct l_fixedpt xmt_timestamp;
+ u_int32_t key_id;
+ u_int8_t message_digest[16];
};
/*
* Leap Second Codes (high order two bits)
diff --git a/print-ntp.c b/print-ntp.c
index b4ab2ffe..fd5143bc 100644
--- a/print-ntp.c
+++ b/print-ntp.c
@@ -25,7 +25,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ntp.c,v 1.39 2003-11-16 09:36:30 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ntp.c,v 1.40 2004-01-28 14:34:50 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -52,6 +52,26 @@ static void p_sfix(const struct s_fixedpt *);
static void p_ntp_time(const struct l_fixedpt *);
static void p_ntp_delta(const struct l_fixedpt *, const struct l_fixedpt *);
+static struct tok ntp_mode_values[] = {
+ { MODE_UNSPEC, "unspecified" },
+ { MODE_SYM_ACT, "symmetric active" },
+ { MODE_SYM_PAS, "symmetric passive" },
+ { MODE_CLIENT, "Client" },
+ { MODE_SERVER, "Server" },
+ { MODE_BROADCAST, "Broadcast" },
+ { MODE_RES1, "Reserved" },
+ { MODE_RES2, "Reserved" },
+ { 0, NULL }
+};
+
+static struct tok ntp_leapind_values[] = {
+ { NO_WARNING, "" },
+ { PLUS_SEC, "+1s" },
+ { MINUS_SEC, "-1s" },
+ { ALARM, "clock unsynchronized" },
+ { 0, NULL }
+};
+
/*
* Print ntp requests
*/
@@ -71,81 +91,43 @@ ntp_print(register const u_char *cp, u_int length)
version = (int)(bp->status & VERSIONMASK) >> 3;
printf("NTPv%d", version);
- leapind = bp->status & LEAPMASK;
- switch (leapind) {
-
- case NO_WARNING:
- break;
-
- case PLUS_SEC:
- fputs(" +1s", stdout);
- break;
-
- case MINUS_SEC:
- fputs(" -1s", stdout);
- break;
- }
-
mode = bp->status & MODEMASK;
- switch (mode) {
-
- case MODE_UNSPEC: /* unspecified */
- fputs(" unspec", stdout);
- break;
-
- case MODE_SYM_ACT: /* symmetric active */
- fputs(" sym_act", stdout);
- break;
-
- case MODE_SYM_PAS: /* symmetric passive */
- fputs(" sym_pas", stdout);
- break;
+ if (!vflag) {
+ printf (", %s, length %u",
+ tok2str(ntp_mode_values, "Unknown mode", mode),
+ length);
+ return;
+ }
+
+ printf (", length %u\n\t%s",
+ length,
+ tok2str(ntp_mode_values, "Unknown mode", mode));
- case MODE_CLIENT: /* client */
- fputs(" client", stdout);
- break;
-
- case MODE_SERVER: /* server */
- fputs(" server", stdout);
- break;
-
- case MODE_BROADCAST: /* broadcast */
- fputs(" bcast", stdout);
- break;
-
- case MODE_RES1: /* reserved */
- fputs(" res1", stdout);
- break;
-
- case MODE_RES2: /* reserved */
- fputs(" res2", stdout);
- break;
-
- }
+ leapind = bp->status & LEAPMASK;
+ printf (", Leap indicator: %s (%u)",
+ tok2str(ntp_leapind_values, "Unknown", leapind),
+ leapind);
TCHECK(bp->stratum);
- printf(", strat %d", bp->stratum);
+ printf(", Stratum %u", bp->stratum);
TCHECK(bp->ppoll);
- printf(", poll %d", bp->ppoll);
+ printf(", poll %us", bp->ppoll);
/* Can't TCHECK bp->precision bitfield so bp->distance + 0 instead */
- TCHECK2(bp->distance, 0);
- printf(", prec %d", bp->precision);
-
- if (!vflag)
- return;
+ TCHECK2(bp->root_delay, 0);
+ printf(", precision %d", bp->precision);
- TCHECK(bp->distance);
- fputs(" dist ", stdout);
- p_sfix(&bp->distance);
+ TCHECK(bp->root_delay);
+ fputs("\n\tRoot Delay: ", stdout);
+ p_sfix(&bp->root_delay);
- TCHECK(bp->dispersion);
- fputs(", disp ", stdout);
- p_sfix(&bp->dispersion);
+ TCHECK(bp->root_dispersion);
+ fputs(", Root dispersion: ", stdout);
+ p_sfix(&bp->root_dispersion);
TCHECK(bp->refid);
- fputs(", ref ", stdout);
+ fputs(", Reference-ID: ", stdout);
/* Interpretation depends on stratum */
switch (bp->stratum) {
@@ -172,21 +154,29 @@ ntp_print(register const u_char *cp, u_int length)
break;
}
- TCHECK(bp->reftime);
- putchar('@');
- p_ntp_time(&(bp->reftime));
+ TCHECK(bp->ref_timestamp);
+ fputs("\n\t Reference Timestamp: ", stdout);
+ p_ntp_time(&(bp->ref_timestamp));
+
+ TCHECK(bp->org_timestamp);
+ fputs("\n\t Originator Timestamp: ", stdout);
+ p_ntp_time(&(bp->org_timestamp));
+
+ TCHECK(bp->rec_timestamp);
+ fputs("\n\t Receive Timestamp: ", stdout);
+ p_ntp_time(&(bp->rec_timestamp));
+
+ TCHECK(bp->xmt_timestamp);
+ fputs("\n\t Transmit Timestamp: ", stdout);
+ p_ntp_time(&(bp->xmt_timestamp));
- TCHECK(bp->org);
- fputs(" orig ", stdout);
- p_ntp_time(&(bp->org));
+ fputs("\n\t Originator - Receive Timestamp: ", stdout);
+ p_ntp_delta(&(bp->org_timestamp), &(bp->rec_timestamp));
- TCHECK(bp->rec);
- fputs(" rec ", stdout);
- p_ntp_delta(&(bp->org), &(bp->rec));
+ fputs("\n\t Originator - Transmit Timestamp: ", stdout);
+ p_ntp_delta(&(bp->org_timestamp), &(bp->xmt_timestamp));
- TCHECK(bp->xmt);
- fputs(" xmt ", stdout);
- p_ntp_delta(&(bp->org), &(bp->xmt));
+ /* FIXME key-id, authentication */
return;
@@ -229,9 +219,9 @@ p_ntp_time(register const struct l_fixedpt *lfp)
#ifdef HAVE_STRFTIME
/*
- * For extra verbosity, print the time in human-readable format.
+ * print the time in human-readable format.
*/
- if (vflag > 1 && i) {
+ if (i) {
time_t seconds = i - JAN_1970;
struct tm *tm;
char time_buf[128];