Annotation of embedaddon/ntp/ntpdate/ntpdate.h, revision 1.1
1.1 ! misho 1: /*
! 2: * ntpdate.h - declarations for the ntpdate and ntptimeset programs
! 3: */
! 4:
! 5: #include "ntp_malloc.h"
! 6:
! 7: extern void loadservers (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: */
! 16: struct server {
! 17: struct server *next_server; /* next server in build list */
! 18: sockaddr_u 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 rootdisp; /* 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 MINTIMEOUT (2 * TIMER_HZ) /* 2s min. between packets */
! 95: #define DEFTIMEOUT MINTIMEOUT /* (to the same server) */
! 96: #define DEFSAMPLES 4 /* get 4 samples per server */
! 97: #define DEFPRECISION (-5) /* the precision we claim */
! 98: #define DEFMAXPERIOD 60 /* maximum time to wait */
! 99: #define DEFMINSERVERS 3 /* minimum responding servers */
! 100: #define DEFMINVALID 1 /* mimimum servers with valid time */
! 101:
! 102: /*
! 103: * Define the max number of sockets we can open
! 104: */
! 105: #define MAX_AF 2
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>