120 lines
3.8 KiB
C
120 lines
3.8 KiB
C
|
|
||
|
/*
|
||
|
* Based on ntp.h from the U of MD implementation
|
||
|
* This file is based on Version 2 of the NTP spec (RFC1119).
|
||
|
*
|
||
|
* from: Header: ntp.h,v 1.1 90/08/07 11:08:27 mogul Exp
|
||
|
* $Id: ntp.h,v 1.1 1993/11/14 21:20:24 deraadt Exp $
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* Definitions for the masses
|
||
|
*/
|
||
|
#define JAN_1970 2208988800 /* 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_long int_part;
|
||
|
u_long fraction;
|
||
|
};
|
||
|
|
||
|
struct s_fixedpt {
|
||
|
u_short int_part;
|
||
|
u_short fraction;
|
||
|
};
|
||
|
|
||
|
/* ================= Table 3.3. Packet Variables ================= */
|
||
|
/*
|
||
|
* 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
|
||
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
* |LI | VN | Mode| Stratum | Poll | Precision |
|
||
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
* | Synchronizing Distance |
|
||
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
* | Synchronizing Dispersion |
|
||
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
* | Reference Clock Identifier |
|
||
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
* | |
|
||
|
* | Reference Timestamp (64 bits) |
|
||
|
* | |
|
||
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
* | |
|
||
|
* | Originate Timestamp (64 bits) |
|
||
|
* | |
|
||
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
* | |
|
||
|
* | Receive Timestamp (64 bits) |
|
||
|
* | |
|
||
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
* | |
|
||
|
* | Transmit Timestamp (64 bits) |
|
||
|
* | |
|
||
|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
*/
|
||
|
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 distance;
|
||
|
struct s_fixedpt dispersion;
|
||
|
u_long refid;
|
||
|
struct l_fixedpt reftime;
|
||
|
struct l_fixedpt org;
|
||
|
struct l_fixedpt rec;
|
||
|
struct l_fixedpt xmt;
|
||
|
};
|
||
|
/*
|
||
|
* 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 **** */
|