xref: /openbsd/usr.sbin/tcpdump/ntp.h (revision 2068f686)
1*2068f686Sderaadt /*	$OpenBSD: ntp.h,v 1.7 2007/10/07 16:41:05 deraadt Exp $	*/
2cf4e9b47Sho 
3*2068f686Sderaadt /* $Id: ntp.h,v 1.7 2007/10/07 16:41:05 deraadt Exp $ */
4df930be7Sderaadt 
5df930be7Sderaadt /*
6df930be7Sderaadt  * Based on ntp.h from the U of MD implementation
7df930be7Sderaadt  *	This file is based on Version 2 of the NTP spec (RFC1119).
8df930be7Sderaadt  */
9df930be7Sderaadt 
10df930be7Sderaadt /*
11df930be7Sderaadt  *  Definitions for the masses
12df930be7Sderaadt  */
13df930be7Sderaadt #define	JAN_1970	2208988800	/* 1970 - 1900 in seconds */
14df930be7Sderaadt 
15df930be7Sderaadt /*
16df930be7Sderaadt  * Structure definitions for NTP fixed point values
17df930be7Sderaadt  *
18df930be7Sderaadt  *    0			  1		      2			  3
19df930be7Sderaadt  *    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
20df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
21df930be7Sderaadt  *   |			       Integer Part			     |
22df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
23df930be7Sderaadt  *   |			       Fraction Part			     |
24df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
25df930be7Sderaadt  *
26df930be7Sderaadt  *    0			  1		      2			  3
27df930be7Sderaadt  *    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
28df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
29df930be7Sderaadt  *   |		  Integer Part	     |	   Fraction Part	     |
30df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
31df930be7Sderaadt */
32df930be7Sderaadt struct l_fixedpt {
33c15d59edSmickey 	u_int32_t int_part;
34c15d59edSmickey 	u_int32_t fraction;
35df930be7Sderaadt };
36df930be7Sderaadt 
37df930be7Sderaadt struct s_fixedpt {
38df930be7Sderaadt 	u_short int_part;
39df930be7Sderaadt 	u_short fraction;
40df930be7Sderaadt };
41df930be7Sderaadt 
42df930be7Sderaadt /*  =================  Table 3.3. Packet Variables   ================= */
43df930be7Sderaadt /*
44df930be7Sderaadt  *    0			  1		      2			  3
45df930be7Sderaadt  *    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
46df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
47df930be7Sderaadt  *   |LI | VN  | Mode|	  Stratum    |	    Poll     |	 Precision   |
48df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
49df930be7Sderaadt  *   |			   Synchronizing Distance		     |
50df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
51df930be7Sderaadt  *   |			  Synchronizing Dispersion		     |
52df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
53df930be7Sderaadt  *   |			Reference Clock Identifier		     |
54df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
55df930be7Sderaadt  *   |								     |
56df930be7Sderaadt  *   |		       Reference Timestamp (64 bits)		     |
57df930be7Sderaadt  *   |								     |
58df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
59df930be7Sderaadt  *   |								     |
60df930be7Sderaadt  *   |		       Originate Timestamp (64 bits)		     |
61df930be7Sderaadt  *   |								     |
62df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
63df930be7Sderaadt  *   |								     |
64df930be7Sderaadt  *   |			Receive Timestamp (64 bits)		     |
65df930be7Sderaadt  *   |								     |
66df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
67df930be7Sderaadt  *   |								     |
68df930be7Sderaadt  *   |			Transmit Timestamp (64 bits)		     |
69df930be7Sderaadt  *   |								     |
70df930be7Sderaadt  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
71df930be7Sderaadt */
72df930be7Sderaadt struct ntpdata {
73df930be7Sderaadt 	u_char status;		/* status of local clock and leap info */
74df930be7Sderaadt 	u_char stratum;		/* Stratum level */
75df930be7Sderaadt 	u_char ppoll;		/* poll value */
76df930be7Sderaadt 	int precision:8;
77df930be7Sderaadt 	struct s_fixedpt distance;
78df930be7Sderaadt 	struct s_fixedpt dispersion;
79c15d59edSmickey 	u_int32_t refid;
80df930be7Sderaadt 	struct l_fixedpt reftime;
81df930be7Sderaadt 	struct l_fixedpt org;
82df930be7Sderaadt 	struct l_fixedpt rec;
83df930be7Sderaadt 	struct l_fixedpt xmt;
84df930be7Sderaadt };
85df930be7Sderaadt /*
86df930be7Sderaadt  *	Leap Second Codes (high order two bits)
87df930be7Sderaadt  */
88df930be7Sderaadt #define	NO_WARNING	0x00	/* no warning */
89df930be7Sderaadt #define	PLUS_SEC	0x40	/* add a second (61 seconds) */
90df930be7Sderaadt #define	MINUS_SEC	0x80	/* minus a second (59 seconds) */
91df930be7Sderaadt #define	ALARM		0xc0	/* alarm condition (clock unsynchronized) */
92df930be7Sderaadt 
93df930be7Sderaadt /*
94df930be7Sderaadt  *	Clock Status Bits that Encode Version
95df930be7Sderaadt  */
96df930be7Sderaadt #define	NTPVERSION_1	0x08
97df930be7Sderaadt #define	VERSIONMASK	0x38
98df930be7Sderaadt #define LEAPMASK	0xc0
99df930be7Sderaadt #define	MODEMASK	0x07
100df930be7Sderaadt 
101df930be7Sderaadt /*
102df930be7Sderaadt  *	Code values
103df930be7Sderaadt  */
104df930be7Sderaadt #define	MODE_UNSPEC	0	/* unspecified */
105df930be7Sderaadt #define	MODE_SYM_ACT	1	/* symmetric active */
106df930be7Sderaadt #define	MODE_SYM_PAS	2	/* symmetric passive */
107df930be7Sderaadt #define	MODE_CLIENT	3	/* client */
108df930be7Sderaadt #define	MODE_SERVER	4	/* server */
109df930be7Sderaadt #define	MODE_BROADCAST	5	/* broadcast */
110df930be7Sderaadt #define	MODE_RES1	6	/* reserved */
111df930be7Sderaadt #define	MODE_RES2	7	/* reserved */
112df930be7Sderaadt 
113df930be7Sderaadt /*
114df930be7Sderaadt  *	Stratum Definitions
115df930be7Sderaadt  */
116df930be7Sderaadt #define	UNSPECIFIED	0
117df930be7Sderaadt #define	PRIM_REF	1	/* radio clock */
118df930be7Sderaadt #define	INFO_QUERY	62	/* **** THIS implementation dependent **** */
119df930be7Sderaadt #define	INFO_REPLY	63	/* **** THIS implementation dependent **** */
120