153f17a9db278d33517d9888dd77848f554522a38JP Abgrall/* $Header: /tcpdump/master/tcpdump/ntp.h,v 1.8 2004-01-28 14:34:50 hannes Exp $ */
22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Based on ntp.h from the U of MD implementation
52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	This file is based on Version 2 of the NTP spec (RFC1119).
62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *  Definitions for the masses
102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	JAN_1970	2208988800U	/* 1970 - 1900 in seconds */
122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Structure definitions for NTP fixed point values
152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    0			  1		      2			  3
172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    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
182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *   |			       Integer Part			     |
202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *   |			       Fraction Part			     |
222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    0			  1		      2			  3
252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    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
262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *   |		  Integer Part	     |	   Fraction Part	     |
282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project*/
302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct l_fixedpt {
312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t int_part;
322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t fraction;
332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct s_fixedpt {
362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t int_part;
372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t fraction;
382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* rfc2030
412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *                      1                   2                   3
422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *  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
432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |LI | VN  |Mode |    Stratum    |     Poll      |   Precision   |
452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                          Root Delay                           |
472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                       Root Dispersion                         |
492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                     Reference Identifier                      |
512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                                                               |
532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                   Reference Timestamp (64)                    |
542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                                                               |
552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                                                               |
572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                   Originate Timestamp (64)                    |
582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                                                               |
592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                                                               |
612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                    Receive Timestamp (64)                     |
622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                                                               |
632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                                                               |
652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                    Transmit Timestamp (64)                    |
662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                                                               |
672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                 Key Identifier (optional) (32)                |
692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                                                               |
712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                                                               |
722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                 Message Digest (optional) (128)               |
732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                                                               |
742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * |                                                               |
752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct ntpdata {
792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char status;		/* status of local clock and leap info */
802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char stratum;		/* Stratum level */
812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_char ppoll;		/* poll value */
822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	int precision:8;
832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct s_fixedpt root_delay;
842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct s_fixedpt root_dispersion;
852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t refid;
862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct l_fixedpt ref_timestamp;
872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct l_fixedpt org_timestamp;
882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct l_fixedpt rec_timestamp;
892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct l_fixedpt xmt_timestamp;
902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        u_int32_t key_id;
912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        u_int8_t  message_digest[16];
922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	Leap Second Codes (high order two bits)
952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	NO_WARNING	0x00	/* no warning */
972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	PLUS_SEC	0x40	/* add a second (61 seconds) */
982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MINUS_SEC	0x80	/* minus a second (59 seconds) */
992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	ALARM		0xc0	/* alarm condition (clock unsynchronized) */
1002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
1022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	Clock Status Bits that Encode Version
1032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
1042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	NTPVERSION_1	0x08
1052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	VERSIONMASK	0x38
1062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define LEAPMASK	0xc0
1072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODEMASK	0x07
1082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
1102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	Code values
1112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
1122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODE_UNSPEC	0	/* unspecified */
1132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODE_SYM_ACT	1	/* symmetric active */
1142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODE_SYM_PAS	2	/* symmetric passive */
1152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODE_CLIENT	3	/* client */
1162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODE_SERVER	4	/* server */
1172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODE_BROADCAST	5	/* broadcast */
1182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODE_RES1	6	/* reserved */
1192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	MODE_RES2	7	/* reserved */
1202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
1222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *	Stratum Definitions
1232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
1242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	UNSPECIFIED	0
1252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	PRIM_REF	1	/* radio clock */
1262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	INFO_QUERY	62	/* **** THIS implementation dependent **** */
1272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define	INFO_REPLY	63	/* **** THIS implementation dependent **** */
128