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*/ 30struct l_fixedpt { 31 u_int32_t int_part; 32 u_int32_t fraction; 33}; 34 35struct 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 78struct 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