Annotation of embedaddon/ntp/ntpdate/ntpdate.h, revision 1.1.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>