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