Annotation of embedaddon/ntp/include/ntp_control.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * ntp_control.h - definitions related to NTP mode 6 control messages
                      3:  */
                      4: 
                      5: #include "ntp_types.h"
                      6: 
                      7: struct ntp_control {
                      8:        u_char li_vn_mode;              /* leap, version, mode */
                      9:        u_char r_m_e_op;                /* response, more, error, opcode */
                     10:        u_short sequence;               /* sequence number of request */
                     11:        u_short status;                 /* status word for association */
                     12:        associd_t associd;              /* association ID */
                     13:        u_short offset;                 /* offset of this batch of data */
                     14:        u_short count;                  /* count of data in this packet */
                     15:        u_char data[(480 + MAX_MAC_LEN)]; /* data + auth */
                     16: };
                     17: 
                     18: /*
                     19:  * Length of the control header, in octets
                     20:  */
                     21: #define        CTL_HEADER_LEN          (offsetof(struct ntp_control, data))
                     22: #define        CTL_MAX_DATA_LEN        468
                     23: 
                     24: 
                     25: /*
                     26:  * Limits and things
                     27:  */
                     28: #define        CTL_MAXTRAPS    3               /* maximum number of traps we allow */
                     29: #define        CTL_TRAPTIME    (60*60)         /* time out traps in 1 hour */
                     30: #define        CTL_MAXAUTHSIZE 64              /* maximum size of an authen'ed req */
                     31: 
                     32: /*
                     33:  * Decoding for the r_m_e_op field
                     34:  */
                     35: #define        CTL_RESPONSE    0x80
                     36: #define        CTL_ERROR       0x40
                     37: #define        CTL_MORE        0x20
                     38: #define        CTL_OP_MASK     0x1f
                     39: 
                     40: #define        CTL_ISRESPONSE(r_m_e_op)        (((r_m_e_op) & 0x80) != 0)
                     41: #define        CTL_ISMORE(r_m_e_op)    (((r_m_e_op) & 0x20) != 0)
                     42: #define        CTL_ISERROR(r_m_e_op)   (((r_m_e_op) & 0x40) != 0)
                     43: #define        CTL_OP(r_m_e_op)        ((r_m_e_op) & CTL_OP_MASK)
                     44: 
                     45: /*
                     46:  * Opcodes
                     47:  */
                     48: #define        CTL_OP_UNSPEC           0       /* unspeciffied */
                     49: #define        CTL_OP_READSTAT         1       /* read status */
                     50: #define        CTL_OP_READVAR          2       /* read variables */
                     51: #define        CTL_OP_WRITEVAR         3       /* write variables */
                     52: #define        CTL_OP_READCLOCK        4       /* read clock variables */
                     53: #define        CTL_OP_WRITECLOCK       5       /* write clock variables */
                     54: #define        CTL_OP_SETTRAP          6       /* set trap address */
                     55: #define        CTL_OP_ASYNCMSG         7       /* asynchronous message */
                     56: #define CTL_OP_CONFIGURE       8       /* runtime configuration */
                     57: #define CTL_OP_SAVECONFIG      9       /* save config to file */
                     58: #define        CTL_OP_UNSETTRAP        31      /* unset trap */
                     59: 
                     60: /*
                     61:  * {En,De}coding of the system status word
                     62:  */
                     63: #define        CTL_SST_TS_UNSPEC       0       /* unspec */
                     64: #define        CTL_SST_TS_ATOM         1       /* pps */
                     65: #define        CTL_SST_TS_LF           2       /* lf radio */
                     66: #define        CTL_SST_TS_HF           3       /* hf radio */
                     67: #define        CTL_SST_TS_UHF          4       /* uhf radio */
                     68: #define        CTL_SST_TS_LOCAL        5       /* local */
                     69: #define        CTL_SST_TS_NTP          6       /* ntp */
                     70: #define        CTL_SST_TS_UDPTIME      7       /* other */
                     71: #define        CTL_SST_TS_WRSTWTCH     8       /* wristwatch */
                     72: #define        CTL_SST_TS_TELEPHONE    9       /* telephone */
                     73: 
                     74: #define        CTL_SYS_MAXEVENTS       15
                     75: 
                     76: #define        CTL_SYS_STATUS(li, source, nevnt, evnt) \
                     77:                (((((unsigned short)(li))<< 14)&0xc000) | \
                     78:                (((source)<<8)&0x3f00) | \
                     79:                (((nevnt)<<4)&0x00f0) | \
                     80:                ((evnt)&0x000f))
                     81: 
                     82: #define        CTL_SYS_LI(status)      (((status)>>14) & 0x3)
                     83: #define        CTL_SYS_SOURCE(status)  (((status)>>8) & 0x3f)
                     84: #define        CTL_SYS_NEVNT(status)   (((status)>>4) & 0xf)
                     85: #define        CTL_SYS_EVENT(status)   ((status) & 0xf)
                     86: 
                     87: /*
                     88:  * {En,De}coding of the peer status word
                     89:  */
                     90: #define        CTL_PST_CONFIG          0x80
                     91: #define        CTL_PST_AUTHENABLE      0x40
                     92: #define        CTL_PST_AUTHENTIC       0x20
                     93: #define        CTL_PST_REACH           0x10
                     94: #define        CTL_PST_BCAST           0x08
                     95: 
                     96: #define        CTL_PST_SEL_REJECT      0       /*   reject */
                     97: #define        CTL_PST_SEL_SANE        1       /* x falsetick */
                     98: #define        CTL_PST_SEL_CORRECT     2       /* . excess */
                     99: #define        CTL_PST_SEL_SELCAND     3       /* - outlyer */
                    100: #define        CTL_PST_SEL_SYNCCAND    4       /* + candidate */
                    101: #define        CTL_PST_SEL_EXCESS      5       /* # backup */
                    102: #define        CTL_PST_SEL_SYSPEER     6       /* * sys.peer */
                    103: #define        CTL_PST_SEL_PPS         7       /* o pps.peer */
                    104: 
                    105: #define        CTL_PEER_MAXEVENTS      15
                    106: 
                    107: #define        CTL_PEER_STATUS(status, nevnt, evnt) \
                    108:                ((((status)<<8) & 0xff00) | \
                    109:                (((nevnt)<<4) & 0x00f0) | \
                    110:                ((evnt) & 0x000f))
                    111: 
                    112: #define        CTL_PEER_STATVAL(status)(((status)>>8) & 0xff)
                    113: #define        CTL_PEER_NEVNT(status)  (((status)>>4) & 0xf)
                    114: #define        CTL_PEER_EVENT(status)  ((status) & 0xf)
                    115: 
                    116: /*
                    117:  * {En,De}coding of the clock status word
                    118:  */
                    119: #define        CTL_CLK_OKAY            0
                    120: #define        CTL_CLK_NOREPLY         1
                    121: #define        CTL_CLK_BADFORMAT       2
                    122: #define        CTL_CLK_FAULT           3
                    123: #define        CTL_CLK_PROPAGATION     4
                    124: #define        CTL_CLK_BADDATE         5
                    125: #define        CTL_CLK_BADTIME         6
                    126: 
                    127: #define        CTL_CLK_STATUS(status, event) \
                    128:                ((((status)<<8) & 0xff00) | \
                    129:                ((event) & 0x00ff))
                    130: 
                    131: /*
                    132:  * Error code responses returned when the E bit is set.
                    133:  */
                    134: #define        CERR_UNSPEC     0
                    135: #define        CERR_PERMISSION 1
                    136: #define        CERR_BADFMT     2
                    137: #define        CERR_BADOP      3
                    138: #define        CERR_BADASSOC   4
                    139: #define        CERR_UNKNOWNVAR 5
                    140: #define        CERR_BADVALUE   6
                    141: #define        CERR_RESTRICT   7
                    142: 
                    143: #define        CERR_NORESOURCE CERR_PERMISSION /* wish there was a different code */
                    144: 
                    145: 
                    146: /*
                    147:  * System variables we understand
                    148:  */
                    149: #define        CS_LEAP         1
                    150: #define        CS_STRATUM      2
                    151: #define        CS_PRECISION    3
                    152: #define        CS_ROOTDELAY    4
                    153: #define        CS_ROOTDISPERSION       5
                    154: #define        CS_REFID        6
                    155: #define        CS_REFTIME      7
                    156: #define        CS_POLL         8
                    157: #define        CS_PEERID       9
                    158: #define        CS_OFFSET       10
                    159: #define        CS_DRIFT        11
                    160: #define CS_JITTER      12
                    161: #define CS_ERROR       13
                    162: #define        CS_CLOCK        14
                    163: #define        CS_PROCESSOR    15
                    164: #define        CS_SYSTEM       16
                    165: #define CS_VERSION     17
                    166: #define        CS_STABIL       18
                    167: #define CS_VARLIST     19
                    168: #define CS_TAI          20
                    169: #define CS_LEAPTAB      21
                    170: #define CS_LEAPEND      22
                    171: #define        CS_RATE         23
                    172: #ifdef OPENSSL
                    173: #define CS_FLAGS       24
                    174: #define CS_HOST                25
                    175: #define CS_PUBLIC      26
                    176: #define        CS_CERTIF       27
                    177: #define        CS_SIGNATURE    28
                    178: #define        CS_REVTIME      29
                    179: #define        CS_GROUP        30
                    180: #define CS_DIGEST      31
                    181: #define        CS_MAXCODE      CS_DIGEST
                    182: #else
                    183: #define        CS_MAXCODE      CS_RATE
                    184: #endif /* OPENSSL */
                    185: 
                    186: /*
                    187:  * Peer variables we understand
                    188:  */
                    189: #define        CP_CONFIG       1
                    190: #define        CP_AUTHENABLE   2
                    191: #define        CP_AUTHENTIC    3
                    192: #define        CP_SRCADR       4
                    193: #define        CP_SRCPORT      5
                    194: #define        CP_DSTADR       6
                    195: #define        CP_DSTPORT      7
                    196: #define        CP_LEAP         8
                    197: #define        CP_HMODE        9
                    198: #define        CP_STRATUM      10
                    199: #define        CP_PPOLL        11
                    200: #define        CP_HPOLL        12
                    201: #define        CP_PRECISION    13
                    202: #define        CP_ROOTDELAY    14
                    203: #define        CP_ROOTDISPERSION       15
                    204: #define        CP_REFID        16
                    205: #define        CP_REFTIME      17
                    206: #define        CP_ORG          18
                    207: #define        CP_REC          19
                    208: #define        CP_XMT          20
                    209: #define        CP_REACH        21
                    210: #define        CP_UNREACH      22
                    211: #define        CP_TIMER        23
                    212: #define        CP_DELAY        24
                    213: #define        CP_OFFSET       25
                    214: #define CP_JITTER      26
                    215: #define        CP_DISPERSION   27
                    216: #define        CP_KEYID        28
                    217: #define        CP_FILTDELAY    29
                    218: #define        CP_FILTOFFSET   30
                    219: #define        CP_PMODE        31
                    220: #define        CP_RECEIVED     32
                    221: #define        CP_SENT         33
                    222: #define        CP_FILTERROR    34
                    223: #define        CP_FLASH        35
                    224: #define CP_TTL         36
                    225: #define CP_VARLIST     37
                    226: #define        CP_IN           38
                    227: #define        CP_OUT          39
                    228: #define        CP_RATE         40
                    229: #define        CP_BIAS         41
                    230: #ifdef OPENSSL
                    231: #define CP_FLAGS       42
                    232: #define CP_HOST                43
                    233: #define CP_VALID       44
                    234: #define        CP_INITSEQ      45
                    235: #define        CP_INITKEY      46
                    236: #define        CP_INITTSP      47
                    237: #define        CP_SIGNATURE    48
                    238: #define        CP_MAXCODE      CP_SIGNATURE
                    239: #else
                    240: #define        CP_MAXCODE      CP_BIAS
                    241: #endif /* OPENSSL */
                    242: 
                    243: /*
                    244:  * Clock variables we understand
                    245:  */
                    246: #define        CC_TYPE         1
                    247: #define        CC_TIMECODE     2
                    248: #define        CC_POLL         3
                    249: #define        CC_NOREPLY      4
                    250: #define        CC_BADFORMAT    5
                    251: #define        CC_BADDATA      6
                    252: #define        CC_FUDGETIME1   7
                    253: #define        CC_FUDGETIME2   8
                    254: #define        CC_FUDGEVAL1    9
                    255: #define        CC_FUDGEVAL2    10
                    256: #define        CC_FLAGS        11
                    257: #define        CC_DEVICE       12
                    258: #define CC_VARLIST     13
                    259: #define        CC_MAXCODE      CC_VARLIST
                    260: 
                    261: /*
                    262:  * Definition of the structure used internally to hold trap information.
                    263:  * ntp_request.c wants to see this.
                    264:  */
                    265: struct ctl_trap {
                    266:        sockaddr_u tr_addr;             /* address of trap recipient */
                    267:        struct interface *tr_localaddr; /* interface to send this through */
                    268:        u_long tr_settime;              /* time trap was set */
                    269:        u_long tr_count;                /* async messages sent to this guy */
                    270:        u_long tr_origtime;             /* time trap was originally set */
                    271:        u_long tr_resets;               /* count of resets for this trap */
                    272:        u_short tr_sequence;            /* trap sequence id */
                    273:        u_char tr_flags;                /* trap flags */
                    274:        u_char tr_version;              /* version number of trapper */
                    275: };
                    276: extern struct ctl_trap ctl_trap[];
                    277: 
                    278: /*
                    279:  * Flag bits
                    280:  */
                    281: #define        TRAP_INUSE      0x1             /* this trap is active */
                    282: #define        TRAP_NONPRIO    0x2             /* this trap is non-priority */
                    283: #define        TRAP_CONFIGURED 0x4             /* this trap was configured */
                    284: 
                    285: /*
                    286:  * Types of things we may deal with
                    287:  * shared between ntpq and library
                    288:  */
                    289: #define        TYPE_SYS        1
                    290: #define        TYPE_PEER       2
                    291: #define        TYPE_CLOCK      3

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>