Home | History | Annotate | Download | only in tcpdump
      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 **** */
    128