?? ntp.h
字號:
EVP_PKEY *ident_pkey; /* identity key */ tstamp_t fstamp; /* identity filestamp */ BIGNUM *iffval; /* IFF/GQ challenge */ BIGNUM *grpkey; /* GQ group key */ struct value cookval; /* cookie values */ struct value recval; /* receive autokey values */ struct exten *cmmd; /* extension pointer */ /* * Variables used by authenticated server */ keyid_t *keylist; /* session key ID list */ int keynumber; /* current key number */ struct value encrypt; /* send encrypt values */ struct value sndval; /* send autokey values */ struct value tai_leap; /* send leapsecond table */#else /* OPENSSL */#define clear_to_zero status#endif /* OPENSSL */ /* * Ephemeral state variables */ u_char status; /* peer status */ u_char reach; /* reachability register */ u_long epoch; /* reference epoch */ u_int burst; /* packets remaining in burst */ u_int filter_nextpt; /* index into filter shift register */ double filter_delay[NTP_SHIFT]; /* delay shift register */ double filter_offset[NTP_SHIFT]; /* offset shift register */ double filter_disp[NTP_SHIFT]; /* dispersion shift register */ u_long filter_epoch[NTP_SHIFT]; /* epoch shift register */ u_char filter_order[NTP_SHIFT]; /* filter sort index */ l_fp org; /* originate time stamp */ l_fp rec; /* receive time stamp */ l_fp xmt; /* transmit time stamp */ double offset; /* peer clock offset */ double delay; /* peer roundtrip delay */ double jitter; /* peer jitter (squares) */ double disp; /* peer dispersion */ double estbdelay; /* clock offset to broadcast server */ /* * End of clear-to-zero area */ u_long update; /* receive epoch */ u_int unreach; /* unreachable count */#define end_clear_to_zero unreach u_long outdate; /* send time last packet */ u_long nextdate; /* send time next packet */ u_long nextaction; /* peer local activity timeout (refclocks) */ void (*action) P((struct peer *)); /* action timeout function */ /* * Statistic counters */ u_long timereset; /* time stat counters were reset */ u_long timereceived; /* last packet received time */ u_long timereachable; /* last reachable/unreachable time */ u_long sent; /* packets sent */ u_long received; /* packets received */ u_long processed; /* packets processed by the protocol */ u_long badauth; /* packets cryptosum failed */ u_long bogusorg; /* packets bogus origin */ u_long oldpkt; /* packets duplicate packet */ u_long seldisptoolarge; /* packets dispersion too large */ u_long selbroken; /* not used */};/* * Values for peer.leap, sys_leap */#define LEAP_NOWARNING 0x0 /* normal, no leap second warning */#define LEAP_ADDSECOND 0x1 /* last minute of day has 61 seconds */#define LEAP_DELSECOND 0x2 /* last minute of day has 59 seconds */#define LEAP_NOTINSYNC 0x3 /* overload, clock is free running *//* * Values for peer mode and packet mode. Only the modes through * MODE_BROADCAST and MODE_BCLIENT appear in the transition * function. MODE_CONTROL and MODE_PRIVATE can appear in packets, * but those never survive to the transition function. * is a */#define MODE_UNSPEC 0 /* unspecified (old version) */#define MODE_ACTIVE 1 /* symmetric active mode */#define MODE_PASSIVE 2 /* symmetric passive mode */#define MODE_CLIENT 3 /* client mode */#define MODE_SERVER 4 /* server mode */#define MODE_BROADCAST 5 /* broadcast mode *//* * These can appear in packets */#define MODE_CONTROL 6 /* control mode */#define MODE_PRIVATE 7 /* private mode *//* * This is a madeup mode for broadcast client. */#define MODE_BCLIENT 6 /* broadcast client mode *//* * Values for peer.stratum, sys_stratum */#define STRATUM_REFCLOCK ((u_char)0) /* default stratum *//* A stratum of 0 in the packet is mapped to 16 internally */#define STRATUM_PKT_UNSPEC ((u_char)0) /* unspecified in packet */#define STRATUM_UNSPEC ((u_char)16) /* unspecified *//* * Values for peer.flags */#define FLAG_CONFIG 0x0001 /* association was configured */#define FLAG_AUTHENABLE 0x0002 /* authentication required */#define FLAG_AUTHENTIC 0x0004 /* last message was authentic */#define FLAG_SKEY 0x0008 /* autokey authentication */#define FLAG_MCAST 0x0010 /* multicast client mode */#define FLAG_REFCLOCK 0x0020 /* this is actually a reference clock */#define FLAG_SYSPEER 0x0040 /* this is one of the selected peers */#define FLAG_PREFER 0x0080 /* this is the preferred peer */#define FLAG_BURST 0x0100 /* burst mode */#define FLAG_IBURST 0x0200 /* initial burst mode */#define FLAG_NOSELECT 0x0400 /* never select */#define FLAG_ASSOC 0x0800 /* autokey request */#define FLAG_FIXPOLL 0x1000 /* stick at minpoll */#define FLAG_TRUE 0x2000 /* select truechimer */#define FLAG_PREEMPT 0x4000 /* preemptable association *//* * Definitions for the clear() routine. We use memset() to clear * the parts of the peer structure which go to zero. These are * used to calculate the start address and length of the area. */#define CLEAR_TO_ZERO(p) ((char *)&((p)->clear_to_zero))#define END_CLEAR_TO_ZERO(p) ((char *)&((p)->end_clear_to_zero))#define LEN_CLEAR_TO_ZERO (END_CLEAR_TO_ZERO((struct peer *)0) \ - CLEAR_TO_ZERO((struct peer *)0))#define CRYPTO_TO_ZERO(p) ((char *)&((p)->clear_to_zero))#define END_CRYPTO_TO_ZERO(p) ((char *)&((p)->end_clear_to_zero))#define LEN_CRYPTO_TO_ZERO (END_CRYPTO_TO_ZERO((struct peer *)0) \ - CRYPTO_TO_ZERO((struct peer *)0))/* * Reference clock identifiers (for pps signal) */#define PPSREFID (u_int32)"PPS " /* used when pps controls stratum>1 *//* * Reference clock types. Added as necessary. */#define REFCLK_NONE 0 /* unknown or missing */#define REFCLK_LOCALCLOCK 1 /* external (e.g., lockclock) */#define REFCLK_GPS_TRAK 2 /* TRAK 8810 GPS Receiver */#define REFCLK_WWV_PST 3 /* PST/Traconex 1020 WWV/H */#define REFCLK_SPECTRACOM 4 /* Spectracom (generic) Receivers */#define REFCLK_TRUETIME 5 /* TrueTime (generic) Receivers */#define REFCLK_IRIG_AUDIO 6 /* IRIG-B/W audio decoder */#define REFCLK_CHU_AUDIO 7 /* CHU audio demodulator/decoder */#define REFCLK_PARSE 8 /* generic driver (usually DCF77,GPS,MSF) */#define REFCLK_GPS_MX4200 9 /* Magnavox MX4200 GPS */#define REFCLK_GPS_AS2201 10 /* Austron 2201A GPS */#define REFCLK_GPS_ARBITER 11 /* Arbiter 1088A/B/ GPS */#define REFCLK_IRIG_TPRO 12 /* KSI/Odetics TPRO-S IRIG */#define REFCLK_ATOM_LEITCH 13 /* Leitch CSD 5300 Master Clock */#define REFCLK_MSF_EES 14 /* EES M201 MSF Receiver */#define REFCLK_GPSTM_TRUE 15 /* OLD TrueTime GPS/TM-TMD Receiver */#define REFCLK_IRIG_BANCOMM 16 /* Bancomm GPS/IRIG Interface */#define REFCLK_GPS_DATUM 17 /* Datum Programmable Time System */#define REFCLK_ACTS 18 /* Generic Auto Computer Time Service */#define REFCLK_WWV_HEATH 19 /* Heath GC1000 WWV/WWVH Receiver */#define REFCLK_GPS_NMEA 20 /* NMEA based GPS clock */#define REFCLK_GPS_VME 21 /* TrueTime GPS-VME Interface */#define REFCLK_ATOM_PPS 22 /* 1-PPS Clock Discipline */#define REFCLK_PTB_ACTS 23 /* replaced by REFCLK_ACTS */#define REFCLK_USNO 24 /* replaced by REFCLK_ACTS */#define REFCLK_GPS_HP 26 /* HP 58503A Time/Frequency Receiver */#define REFCLK_ARCRON_MSF 27 /* ARCRON MSF radio clock. */#define REFCLK_SHM 28 /* clock attached thru shared memory */#define REFCLK_PALISADE 29 /* Trimble Navigation Palisade GPS */#define REFCLK_ONCORE 30 /* Motorola UT Oncore GPS */#define REFCLK_GPS_JUPITER 31 /* Rockwell Jupiter GPS receiver */#define REFCLK_CHRONOLOG 32 /* Chrono-log K WWVB receiver */#define REFCLK_DUMBCLOCK 33 /* Dumb localtime clock */#define REFCLK_ULINK 34 /* Ultralink M320 WWVB receiver */#define REFCLK_PCF 35 /* Conrad parallel port radio clock */#define REFCLK_WWV_AUDIO 36 /* WWV/H audio demodulator/decoder */#define REFCLK_FG 37 /* Forum Graphic GPS */#define REFCLK_HOPF_SERIAL 38 /* hopf DCF77/GPS serial receiver */#define REFCLK_HOPF_PCI 39 /* hopf DCF77/GPS PCI receiver */#define REFCLK_JJY 40 /* JJY receiver */#define REFCLK_TT560 41 /* TrueTime 560 IRIG-B decoder */#define REFCLK_ZYFER 42 /* Zyfer GPStarplus receiver */#define REFCLK_RIPENCC 43 /* RIPE NCC Trimble driver */#define REFCLK_NEOCLOCK4X 44 /* NeoClock4X DCF77 or TDF receiver */#define REFCLK_MAX 44 /* NeoClock4X DCF77 or TDF receiver */ /* * Macro for sockaddr_storage structures operations */#define SOCKCMP(sock1, sock2) \ (((struct sockaddr_storage *)sock1)->ss_family \ == ((struct sockaddr_storage *)sock2)->ss_family ? \ ((struct sockaddr_storage *)sock1)->ss_family == AF_INET ? \ memcmp(&((struct sockaddr_in *)sock1)->sin_addr, \ &((struct sockaddr_in *)sock2)->sin_addr, \ sizeof(struct in_addr)) == 0 : \ memcmp(&((struct sockaddr_in6 *)sock1)->sin6_addr, \ &((struct sockaddr_in6 *)sock2)->sin6_addr, \ sizeof(struct in6_addr)) == 0 : \ 0)#define SOCKNUL(sock1) \ (((struct sockaddr_storage *)sock1)->ss_family == AF_INET ? \ (((struct sockaddr_in *)sock1)->sin_addr.s_addr == 0) : \ (IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6 *)sock1)->sin6_addr)))#define SOCKLEN(sock) \ (((struct sockaddr_storage *)sock)->ss_family == AF_INET ? \ (sizeof(struct sockaddr_in)) : (sizeof(struct sockaddr_in6)))#define ANYSOCK(sock) \ memset(((struct sockaddr_storage *)sock), 0, \ sizeof(struct sockaddr_storage))#define ANY_INTERFACE_CHOOSE(sock) \ (((struct sockaddr_storage *)sock)->ss_family == AF_INET ? \ any_interface : any6_interface)/* * We tell reference clocks from real peers by giving the reference * clocks an address of the form 127.127.t.u, where t is the type and * u is the unit number. We define some of this here since we will need * some sanity checks to make sure this address isn't interpretted as * that of a normal peer. */#define REFCLOCK_ADDR 0x7f7f0000 /* 127.127.0.0 */#define REFCLOCK_MASK 0xffff0000 /* 255.255.0.0 */#define ISREFCLOCKADR(srcadr) ((SRCADR(srcadr) & REFCLOCK_MASK) \ == REFCLOCK_ADDR)/* * Macro for checking for invalid addresses. This is really, really * gross, but is needed so no one configures a host on net 127 now that * we're encouraging it the the configuration file. */#define LOOPBACKADR 0x7f000001#define LOOPNETMASK 0xff000000#define ISBADADR(srcadr) (((SRCADR(srcadr) & LOOPNETMASK) \ == (LOOPBACKADR & LOOPNETMASK)) \ && (SRCADR(srcadr) != LOOPBACKADR))/* * Utilities for manipulating addresses and port numbers */#define NSRCADR(src) (((struct sockaddr_in *)src)->sin_addr.s_addr) /* address in net byte order */#define NSRCPORT(src) (((struct sockaddr_in *)src)->sin_port) /* port in net byte order */#define SRCADR(src) (ntohl(NSRCADR((src)))) /* address in host byte order */#define SRCPORT(src) (ntohs(NSRCPORT((src)))) /* host port */#define CAST_V4(src) ((struct sockaddr_in *)&(src))#define CAST_V6(src) ((struct sockaddr_in6 *)&(src))#define GET_INADDR(src) (CAST_V4(src)->sin_addr.s_addr)#define GET_INADDR6(src) (CAST_V6(src)->sin6_addr)#define SET_HOSTMASK(addr, family) \ do { \ memset((char *)(addr), 0, sizeof(struct sockaddr_storage)); \ (addr)->ss_family = (family); \ if ((family) == AF_INET) \ GET_INADDR(*(addr)) = 0xffffffff; \ else \ memset(&GET_INADDR6(*(addr)), 0xff, \ sizeof(struct in6_addr)); \ } while(0)/* * NTP packet format. The mac field is optional. It isn't really * an l_fp either, but for now declaring it that way is convenient. * See Appendix A in the specification. * * Note that all u_fp and l_fp values arrive in network byte order * and must be converted (except the mac, which isn't, really). */struct pkt { u_char li_vn_mode; /* leap indicator, version and mode */ u_char stratum; /* peer stratum */ u_char ppoll; /* peer poll interval */ s_char precision; /* peer clock precision */ u_fp rootdelay; /* distance to primary clock */ u_fp rootdispersion; /* clock dispersion */ u_int32 refid; /* reference clock ID */ l_fp reftime; /* time peer clock was last updated */ l_fp org; /* originate time stamp */ l_fp rec; /* receive time stamp */ l_fp xmt; /* transmit time stamp */#define LEN_PKT_NOMAC 12 * sizeof(u_int32) /* min header length */#define LEN_PKT_MAC LEN_PKT_NOMAC + sizeof(u_int32)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -