Initial commit
[profile/ivi/tcpdump.git] / ntp.h
1 /* $Header: /tcpdump/master/tcpdump/ntp.h,v 1.8 2004-01-28 14:34:50 hannes Exp $ */
2
3 /*
4  * Based on ntp.h from the U of MD implementation
5  *      This file is based on Version 2 of the NTP spec (RFC1119).
6  */
7
8 /*
9  *  Definitions for the masses
10  */
11 #define JAN_1970        2208988800U     /* 1970 - 1900 in seconds */
12
13 /*
14  * Structure definitions for NTP fixed point values
15  *
16  *    0                   1                   2                   3
17  *    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
18  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
19  *   |                         Integer Part                          |
20  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
21  *   |                         Fraction Part                         |
22  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
23  *
24  *    0                   1                   2                   3
25  *    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
26  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
27  *   |            Integer Part       |     Fraction Part             |
28  *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
29 */
30 struct l_fixedpt {
31         u_int32_t int_part;
32         u_int32_t fraction;
33 };
34
35 struct s_fixedpt {
36         u_int16_t int_part;
37         u_int16_t fraction;
38 };
39
40 /* rfc2030
41  *                      1                   2                   3
42  *  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
43  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
44  * |LI | VN  |Mode |    Stratum    |     Poll      |   Precision   |
45  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
46  * |                          Root Delay                           |
47  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
48  * |                       Root Dispersion                         |
49  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
50  * |                     Reference Identifier                      |
51  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
52  * |                                                               |
53  * |                   Reference Timestamp (64)                    |
54  * |                                                               |
55  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
56  * |                                                               |
57  * |                   Originate Timestamp (64)                    |
58  * |                                                               |
59  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
60  * |                                                               |
61  * |                    Receive Timestamp (64)                     |
62  * |                                                               |
63  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
64  * |                                                               |
65  * |                    Transmit Timestamp (64)                    |
66  * |                                                               |
67  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
68  * |                 Key Identifier (optional) (32)                |
69  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
70  * |                                                               |
71  * |                                                               |
72  * |                 Message Digest (optional) (128)               |
73  * |                                                               |
74  * |                                                               |
75  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
76  */
77
78 struct ntpdata {
79         u_char status;          /* status of local clock and leap info */
80         u_char stratum;         /* Stratum level */
81         u_char ppoll;           /* poll value */
82         int precision:8;
83         struct s_fixedpt root_delay;
84         struct s_fixedpt root_dispersion;
85         u_int32_t refid;
86         struct l_fixedpt ref_timestamp;
87         struct l_fixedpt org_timestamp;
88         struct l_fixedpt rec_timestamp;
89         struct l_fixedpt xmt_timestamp;
90         u_int32_t key_id;
91         u_int8_t  message_digest[16];
92 };
93 /*
94  *      Leap Second Codes (high order two bits)
95  */
96 #define NO_WARNING      0x00    /* no warning */
97 #define PLUS_SEC        0x40    /* add a second (61 seconds) */
98 #define MINUS_SEC       0x80    /* minus a second (59 seconds) */
99 #define ALARM           0xc0    /* alarm condition (clock unsynchronized) */
100
101 /*
102  *      Clock Status Bits that Encode Version
103  */
104 #define NTPVERSION_1    0x08
105 #define VERSIONMASK     0x38
106 #define LEAPMASK        0xc0
107 #define MODEMASK        0x07
108
109 /*
110  *      Code values
111  */
112 #define MODE_UNSPEC     0       /* unspecified */
113 #define MODE_SYM_ACT    1       /* symmetric active */
114 #define MODE_SYM_PAS    2       /* symmetric passive */
115 #define MODE_CLIENT     3       /* client */
116 #define MODE_SERVER     4       /* server */
117 #define MODE_BROADCAST  5       /* broadcast */
118 #define MODE_RES1       6       /* reserved */
119 #define MODE_RES2       7       /* reserved */
120
121 /*
122  *      Stratum Definitions
123  */
124 #define UNSPECIFIED     0
125 #define PRIM_REF        1       /* radio clock */
126 #define INFO_QUERY      62      /* **** THIS implementation dependent **** */
127 #define INFO_REPLY      63      /* **** THIS implementation dependent **** */