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