| /* $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 |
| * This file is based on Version 2 of the NTP spec (RFC1119). |
| */ |
| |
| /* |
| * Definitions for the masses |
| */ |
| #define JAN_1970 2208988800U /* 1970 - 1900 in seconds */ |
| |
| /* |
| * Structure definitions for NTP fixed point values |
| * |
| * 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 |
| * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| * | Integer Part | |
| * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| * | Fraction Part | |
| * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| * |
| * 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 |
| * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| * | Integer Part | Fraction Part | |
| * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| */ |
| struct l_fixedpt { |
| u_int32_t int_part; |
| u_int32_t fraction; |
| }; |
| |
| struct s_fixedpt { |
| u_int16_t int_part; |
| u_int16_t fraction; |
| }; |
| |
| /* 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 root_delay; |
| struct s_fixedpt root_dispersion; |
| u_int32_t refid; |
| 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) |
| */ |
| #define NO_WARNING 0x00 /* no warning */ |
| #define PLUS_SEC 0x40 /* add a second (61 seconds) */ |
| #define MINUS_SEC 0x80 /* minus a second (59 seconds) */ |
| #define ALARM 0xc0 /* alarm condition (clock unsynchronized) */ |
| |
| /* |
| * Clock Status Bits that Encode Version |
| */ |
| #define NTPVERSION_1 0x08 |
| #define VERSIONMASK 0x38 |
| #define LEAPMASK 0xc0 |
| #define MODEMASK 0x07 |
| |
| /* |
| * Code values |
| */ |
| #define MODE_UNSPEC 0 /* unspecified */ |
| #define MODE_SYM_ACT 1 /* symmetric active */ |
| #define MODE_SYM_PAS 2 /* symmetric passive */ |
| #define MODE_CLIENT 3 /* client */ |
| #define MODE_SERVER 4 /* server */ |
| #define MODE_BROADCAST 5 /* broadcast */ |
| #define MODE_RES1 6 /* reserved */ |
| #define MODE_RES2 7 /* reserved */ |
| |
| /* |
| * Stratum Definitions |
| */ |
| #define UNSPECIFIED 0 |
| #define PRIM_REF 1 /* radio clock */ |
| #define INFO_QUERY 62 /* **** THIS implementation dependent **** */ |
| #define INFO_REPLY 63 /* **** THIS implementation dependent **** */ |