PageRenderTime 49ms CodeModel.GetById 33ms app.highlight 10ms RepoModel.GetById 1ms app.codeStats 1ms

/contrib/ntp/ntpdate/ntpdate.h

https://bitbucket.org/freebsd/freebsd-head/
C++ Header | 104 lines | 50 code | 12 blank | 42 comment | 0 complexity | 4bd198cd2e606d7fb591617e1dd97e88 MD5 | raw file
  1/*
  2 * ntpdate.h - declarations for the ntpdate and ntptimeset programs
  3 */
  4
  5#include "ntp_malloc.h"
  6
  7extern void	loadservers	P((char *cfgpath));
  8
  9/*
 10 * The server structure is a much simplified version of the
 11 * peer structure, for ntpdate's use.  Since we always send
 12 * in client mode and expect to receive in server mode, this
 13 * leaves only a very limited number of things we need to
 14 * remember about the server.
 15 */
 16struct server {
 17	struct server *next_server;	/* next server in build list */
 18	struct sockaddr_storage srcadr;	/* address of remote host */
 19	u_char version;			/* version to use */
 20	u_char leap;			/* leap indicator */
 21	u_char stratum;			/* stratum of remote server */
 22	s_char precision;		/* server's clock precision */
 23	u_char trust;			/* trustability of the filtered data */
 24	u_fp rootdelay;			/* distance from primary clock */
 25	u_fp rootdispersion;		/* peer clock dispersion */
 26	u_int32 refid;			/* peer reference ID */
 27	l_fp reftime;			/* time of peer's last update */
 28	u_long event_time;		/* time for next timeout */
 29	u_long last_xmit;		/* time of last transmit */
 30	u_short xmtcnt;			/* number of packets transmitted */
 31	u_short rcvcnt;			/* number of packets received */
 32	u_char reach;			/* reachability, NTP_WINDOW bits */
 33	u_short filter_nextpt;		/* index into filter shift register */
 34	s_fp filter_delay[NTP_SHIFT];	/* delay part of shift register */
 35	l_fp filter_offset[NTP_SHIFT];	/* offset part of shift register */
 36	s_fp filter_soffset[NTP_SHIFT]; /* offset in s_fp format, for disp */
 37	u_fp filter_error[NTP_SHIFT];	/* error part of shift register */
 38	l_fp org;			/* peer's originate time stamp */
 39	l_fp xmt;			/* transmit time stamp */
 40	u_fp delay;			/* filter estimated delay */
 41	u_fp dispersion;		/* filter estimated dispersion */
 42	l_fp offset;			/* filter estimated clock offset */
 43	s_fp soffset;			/* fp version of above */
 44};
 45
 46
 47/*
 48 * ntpdate runs everything on a simple, short timeout.  It sends a
 49 * packet and sets the timeout (by default, to a small value suitable
 50 * for a LAN).  If it receives a response it sends another request.
 51 * If it times out it shifts zeroes into the filter and sends another
 52 * request.
 53 *
 54 * The timer routine is run often (once every 1/5 second currently)
 55 * so that time outs are done with reasonable precision.
 56 */
 57#define TIMER_HZ	(5)		/* 5 per second */
 58
 59/*
 60 * ntpdate will make a long adjustment using adjtime() if the times
 61 * are close, or step the time if the times are farther apart.  The
 62 * following defines what is "close".
 63 */
 64#define	NTPDATE_THRESHOLD	(FP_SECOND >> 1)	/* 1/2 second */
 65
 66#define NTP_MAXAGE	86400	/* one day in seconds */
 67
 68/*
 69 * When doing adjustments, ntpdate actually overadjusts (currently
 70 * by 50%, though this may change).  While this will make it take longer
 71 * to reach a steady state condition, it will typically result in
 72 * the clock keeping more accurate time, on average.  The amount of
 73 * overshoot is limited.
 74 */
 75#ifdef	NOTNOW
 76#define	ADJ_OVERSHOOT	1/2	/* this is hard coded */
 77#endif	/* NOTNOW */
 78#define	ADJ_MAXOVERSHOOT	0x10000000	/* 50 ms as a ts fraction */
 79
 80/*
 81 * Since ntpdate isn't aware of some of the things that normally get
 82 * put in an NTP packet, we fix some values.
 83 */
 84#define	NTPDATE_PRECISION	(-6)		/* use this precision */
 85#define	NTPDATE_DISTANCE	FP_SECOND	/* distance is 1 sec */
 86#define	NTPDATE_DISP		FP_SECOND	/* so is the dispersion */
 87#define	NTPDATE_REFID		(0)		/* reference ID to use */
 88#define PEER_MAXDISP	(64*FP_SECOND)	/* maximum dispersion (fp 64) */
 89
 90
 91/*
 92 * Some defaults
 93 */
 94#define	DEFTIMEOUT	5		/* 5 timer increments */
 95#define	DEFSAMPLES	4		/* get 4 samples per server */
 96#define	DEFPRECISION	(-5)		/* the precision we claim */
 97#define	DEFMAXPERIOD	60		/* maximum time to wait */
 98#define	DEFMINSERVERS	3		/* minimum responding servers */
 99#define	DEFMINVALID	1		/* mimimum servers with valid time */
100
101/*
102 * Define the max number of sockets we can open
103 */
104#define MAX_AF 2