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>