4 * ntp_control.h - definitions related to NTP mode 6 control messages
9 typedef union ctl_pkt_u_tag {
10 u_char data[480 + MAX_MAC_LEN]; /* data + auth */
11 u_int32 u32[(480 + MAX_MAC_LEN) / sizeof(u_int32)];
15 u_char li_vn_mode; /* leap, version, mode */
16 u_char r_m_e_op; /* response, more, error, opcode */
17 u_short sequence; /* sequence number of request */
18 u_short status; /* status word for association */
19 associd_t associd; /* association ID */
20 u_short offset; /* offset of this batch of data */
21 u_short count; /* count of data in this packet */
26 * Length of the control header, in octets
28 #define CTL_HEADER_LEN (offsetof(struct ntp_control, u))
29 #define CTL_MAX_DATA_LEN 468
35 #define CTL_MAXTRAPS 3 /* maximum number of traps we allow */
36 #define CTL_TRAPTIME (60*60) /* time out traps in 1 hour */
37 #define CTL_MAXAUTHSIZE 64 /* maximum size of an authen'ed req */
40 * Decoding for the r_m_e_op field
42 #define CTL_RESPONSE 0x80
43 #define CTL_ERROR 0x40
45 #define CTL_OP_MASK 0x1f
47 #define CTL_ISRESPONSE(r_m_e_op) ((CTL_RESPONSE & (r_m_e_op)) != 0)
48 #define CTL_ISMORE(r_m_e_op) ((CTL_MORE & (r_m_e_op)) != 0)
49 #define CTL_ISERROR(r_m_e_op) ((CTL_ERROR & (r_m_e_op)) != 0)
50 #define CTL_OP(r_m_e_op) (CTL_OP_MASK & (r_m_e_op))
55 #define CTL_OP_UNSPEC 0 /* unspeciffied */
56 #define CTL_OP_READSTAT 1 /* read status */
57 #define CTL_OP_READVAR 2 /* read variables */
58 #define CTL_OP_WRITEVAR 3 /* write variables */
59 #define CTL_OP_READCLOCK 4 /* read clock variables */
60 #define CTL_OP_WRITECLOCK 5 /* write clock variables */
61 #define CTL_OP_SETTRAP 6 /* set trap address */
62 #define CTL_OP_ASYNCMSG 7 /* asynchronous message */
63 #define CTL_OP_CONFIGURE 8 /* runtime configuration */
64 #define CTL_OP_SAVECONFIG 9 /* save config to file */
65 #define CTL_OP_READ_MRU 10 /* retrieve MRU (mrulist) */
66 #define CTL_OP_READ_ORDLIST_A 11 /* ordered list req. auth. */
67 #define CTL_OP_REQ_NONCE 12 /* request a client nonce */
68 #define CTL_OP_UNSETTRAP 31 /* unset trap */
71 * {En,De}coding of the system status word
73 #define CTL_SST_TS_UNSPEC 0 /* unspec */
74 #define CTL_SST_TS_ATOM 1 /* pps */
75 #define CTL_SST_TS_LF 2 /* lf radio */
76 #define CTL_SST_TS_HF 3 /* hf radio */
77 #define CTL_SST_TS_UHF 4 /* uhf radio */
78 #define CTL_SST_TS_LOCAL 5 /* local */
79 #define CTL_SST_TS_NTP 6 /* ntp */
80 #define CTL_SST_TS_UDPTIME 7 /* other */
81 #define CTL_SST_TS_WRSTWTCH 8 /* wristwatch */
82 #define CTL_SST_TS_TELEPHONE 9 /* telephone */
84 #define CTL_SYS_MAXEVENTS 15
86 #define CTL_SYS_STATUS(li, source, nevnt, evnt) \
87 (((((unsigned short)(li))<< 14)&0xc000) | \
88 (((source)<<8)&0x3f00) | \
89 (((nevnt)<<4)&0x00f0) | \
92 #define CTL_SYS_LI(status) (((status)>>14) & 0x3)
93 #define CTL_SYS_SOURCE(status) (((status)>>8) & 0x3f)
94 #define CTL_SYS_NEVNT(status) (((status)>>4) & 0xf)
95 #define CTL_SYS_EVENT(status) ((status) & 0xf)
98 * {En,De}coding of the peer status word
100 #define CTL_PST_CONFIG 0x80
101 #define CTL_PST_AUTHENABLE 0x40
102 #define CTL_PST_AUTHENTIC 0x20
103 #define CTL_PST_REACH 0x10
104 #define CTL_PST_BCAST 0x08
106 #define CTL_PST_SEL_REJECT 0 /* reject */
107 #define CTL_PST_SEL_SANE 1 /* x falsetick */
108 #define CTL_PST_SEL_CORRECT 2 /* . excess */
109 #define CTL_PST_SEL_SELCAND 3 /* - outlier */
110 #define CTL_PST_SEL_SYNCCAND 4 /* + candidate */
111 #define CTL_PST_SEL_EXCESS 5 /* # backup */
112 #define CTL_PST_SEL_SYSPEER 6 /* * sys.peer */
113 #define CTL_PST_SEL_PPS 7 /* o pps.peer */
115 #define CTL_PEER_MAXEVENTS 15
117 #define CTL_PEER_STATUS(status, nevnt, evnt) \
118 ((((status)<<8) & 0xff00) | \
119 (((nevnt)<<4) & 0x00f0) | \
122 #define CTL_PEER_STATVAL(status)(((status)>>8) & 0xff)
123 #define CTL_PEER_NEVNT(status) (((status)>>4) & 0xf)
124 #define CTL_PEER_EVENT(status) ((status) & 0xf)
127 * {En,De}coding of the clock status word
129 #define CTL_CLK_OKAY 0
130 #define CTL_CLK_NOREPLY 1
131 #define CTL_CLK_BADFORMAT 2
132 #define CTL_CLK_FAULT 3
133 #define CTL_CLK_PROPAGATION 4
134 #define CTL_CLK_BADDATE 5
135 #define CTL_CLK_BADTIME 6
137 #define CTL_CLK_STATUS(status, event) \
138 ((((status)<<8) & 0xff00) | \
142 * Error code responses returned when the E bit is set.
144 #define CERR_UNSPEC 0
145 #define CERR_PERMISSION 1
146 #define CERR_BADFMT 2
148 #define CERR_BADASSOC 4
149 #define CERR_UNKNOWNVAR 5
150 #define CERR_BADVALUE 6
151 #define CERR_RESTRICT 7
153 #define CERR_NORESOURCE CERR_PERMISSION /* wish there was a different code */
157 * Definition of the structure used internally to hold trap information.
158 * ntp_request.c wants to see this.
161 sockaddr_u tr_addr; /* address of trap recipient */
162 struct interface *tr_localaddr; /* interface to send this through */
163 u_long tr_settime; /* time trap was set */
164 u_long tr_count; /* async messages sent to this guy */
165 u_long tr_origtime; /* time trap was originally set */
166 u_long tr_resets; /* count of resets for this trap */
167 u_short tr_sequence; /* trap sequence id */
168 u_char tr_flags; /* trap flags */
169 u_char tr_version; /* version number of trapper */
171 extern struct ctl_trap ctl_traps[CTL_MAXTRAPS];
176 #define TRAP_INUSE 0x1 /* this trap is active */
177 #define TRAP_NONPRIO 0x2 /* this trap is non-priority */
178 #define TRAP_CONFIGURED 0x4 /* this trap was configured */
181 * Types of things we may deal with
182 * shared between ntpq and library
189 * IFSTATS_FIELDS is the number of fields ntpd supplies for each ifstats
190 * row. Similarly RESLIST_FIELDS for reslist.
192 #define IFSTATS_FIELDS 12
193 #define RESLIST_FIELDS 4
195 #endif /* NTP_CONTROL_H */