⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ntp.h

📁 网络时间协议NTP 源码 版本v4.2.0b 该源码用于linux平台下
💻 H
📖 第 1 页 / 共 3 页
字号:
	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)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -