mirror of
https://github.com/the-tcpdump-group/tcpdump.git
synced 2024-11-30 21:44:49 +08:00
128 lines
4.9 KiB
C
128 lines
4.9 KiB
C
/* $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 **** */
|