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