Annotation of embedaddon/ntp/include/ntpd.h, revision 1.1
1.1 ! misho 1: /*
! 2: * ntpd.h - Prototypes for ntpd.
! 3: */
! 4:
! 5: #include "ntp.h"
! 6: #include "ntp_debug.h"
! 7: #include "ntp_syslog.h"
! 8: #include "ntp_select.h"
! 9: #include "ntp_malloc.h"
! 10: #include "ntp_refclock.h"
! 11: #include "recvbuff.h"
! 12:
! 13: /* ntp_config.c */
! 14:
! 15: #define TAI_1972 10 /* initial TAI offset (s) */
! 16: extern char *keysdir; /* crypto keys and leaptable directory */
! 17: extern char * saveconfigdir; /* ntpq saveconfig output directory */
! 18:
! 19: extern void getconfig (int, char **);
! 20: extern void ctl_clr_stats (void);
! 21: extern int ctlclrtrap (sockaddr_u *, struct interface *, int);
! 22: extern u_short ctlpeerstatus (struct peer *);
! 23: extern int ctlsettrap (sockaddr_u *, struct interface *, int, int);
! 24: extern u_short ctlsysstatus (void);
! 25: extern void init_control (void);
! 26: extern void init_logging (char const *, int);
! 27: extern void setup_logfile (void);
! 28: extern void process_control (struct recvbuf *, int);
! 29: extern void report_event (int, struct peer *, const char *);
! 30:
! 31: /* ntp_control.c */
! 32: /*
! 33: * Structure for translation tables between internal system
! 34: * variable indices and text format.
! 35: */
! 36: struct ctl_var {
! 37: u_short code;
! 38: u_short flags;
! 39: char *text;
! 40: };
! 41: /*
! 42: * Flag values
! 43: */
! 44: #define CAN_READ 0x01
! 45: #define CAN_WRITE 0x02
! 46:
! 47: #define DEF 0x20
! 48: #define PADDING 0x40
! 49: #define EOV 0x80
! 50:
! 51: #define RO (CAN_READ)
! 52: #define WO (CAN_WRITE)
! 53: #define RW (CAN_READ|CAN_WRITE)
! 54:
! 55: extern char * add_var (struct ctl_var **, u_long, u_short);
! 56: extern void free_varlist (struct ctl_var *);
! 57: extern void set_var (struct ctl_var **, const char *, u_long, u_short);
! 58: extern void set_sys_var (const char *, u_long, u_short);
! 59:
! 60: /* ntp_intres.c */
! 61: extern void ntp_res_name (sockaddr_u, u_short);
! 62: extern void ntp_res_recv (void);
! 63: extern void ntp_intres (void);
! 64: #ifdef SYS_WINNT
! 65: extern unsigned WINAPI ntp_intres_thread (void *);
! 66: #endif
! 67:
! 68: /* ntp_io.c */
! 69: typedef struct interface_info {
! 70: endpt * ep;
! 71: u_char action;
! 72: } interface_info_t;
! 73:
! 74: typedef void (*interface_receiver_t) (void *, interface_info_t *);
! 75:
! 76: extern int disable_dynamic_updates;
! 77:
! 78: extern void interface_enumerate (interface_receiver_t, void *);
! 79: extern endpt * findinterface (sockaddr_u *);
! 80: extern endpt * findbcastinter (sockaddr_u *);
! 81: extern void enable_broadcast (endpt *, sockaddr_u *);
! 82: extern void enable_multicast_if (endpt *, sockaddr_u *);
! 83: extern void interface_update (interface_receiver_t, void *);
! 84:
! 85: extern void init_io (void);
! 86: extern void io_open_sockets (void);
! 87: extern void input_handler (l_fp *);
! 88: extern void io_clr_stats (void);
! 89: extern void io_setbclient (void);
! 90: extern void io_unsetbclient (void);
! 91: extern void io_multicast_add(sockaddr_u *);
! 92: extern void io_multicast_del(sockaddr_u *);
! 93: extern void sendpkt (sockaddr_u *, struct interface *, int, struct pkt *, int);
! 94: #ifndef SYS_WINNT
! 95: extern void kill_asyncio (int);
! 96: #endif
! 97: #ifdef DEBUG
! 98: extern void collect_timing (struct recvbuf *, const char *, int, l_fp *);
! 99: #endif
! 100: #ifdef HAVE_SIGNALED_IO
! 101: extern void wait_for_signal (void);
! 102: extern void unblock_io_and_alarm (void);
! 103: extern void block_io_and_alarm (void);
! 104: #define UNBLOCK_IO_AND_ALARM() unblock_io_and_alarm()
! 105: #define BLOCK_IO_AND_ALARM() block_io_and_alarm()
! 106: #else
! 107: #define UNBLOCK_IO_AND_ALARM()
! 108: #define BLOCK_IO_AND_ALARM()
! 109: #endif
! 110: #define latoa(pif) localaddrtoa(pif)
! 111: extern const char * localaddrtoa(endpt *);
! 112:
! 113: /* ntp_loopfilter.c */
! 114: extern void init_loopfilter(void);
! 115: extern int local_clock(struct peer *, double);
! 116: extern void adj_host_clock(void);
! 117: extern void loop_config(int, double);
! 118: extern void huffpuff(void);
! 119: extern u_long sys_clocktime;
! 120: extern u_int sys_tai;
! 121:
! 122: /* ntp_monitor.c */
! 123: extern void init_mon (void);
! 124: extern void mon_start (int);
! 125: extern void mon_stop (int);
! 126: extern int ntp_monitor (struct recvbuf *, int);
! 127: extern void ntp_monclearinterface (struct interface *interface);
! 128:
! 129: /* ntp_peer.c */
! 130: extern void init_peer (void);
! 131: extern struct peer *findexistingpeer (sockaddr_u *, struct peer *, int, u_char);
! 132: extern struct peer *findpeer (struct recvbuf *, int, int *);
! 133: extern struct peer *findpeerbyassoc (u_int);
! 134: extern void set_peerdstadr (struct peer *peer, struct interface *interface);
! 135: extern struct peer *newpeer (sockaddr_u *, struct interface *, int, int, int, int, u_int, u_char, int, keyid_t);
! 136: extern void peer_all_reset (void);
! 137: extern void peer_clr_stats (void);
! 138: extern struct peer *peer_config (sockaddr_u *, struct interface *, int, int, int, int, u_int, int, keyid_t, u_char *);
! 139: extern void peer_reset (struct peer *);
! 140: extern void refresh_all_peerinterfaces (void);
! 141: extern void unpeer (struct peer *);
! 142: extern void clear_all (void);
! 143: extern int score_all (struct peer *);
! 144: extern struct peer *findmanycastpeer (struct recvbuf *);
! 145:
! 146: /* ntp_crypto.c */
! 147: #ifdef OPENSSL
! 148: extern int crypto_recv (struct peer *, struct recvbuf *);
! 149: extern int crypto_xmit (struct peer *, struct pkt *,
! 150: struct recvbuf *, int,
! 151: struct exten *, keyid_t);
! 152: extern keyid_t session_key (sockaddr_u *, sockaddr_u *, keyid_t,
! 153: keyid_t, u_long);
! 154: extern int make_keylist (struct peer *, struct interface *);
! 155: extern void key_expire (struct peer *);
! 156: extern void crypto_update (void);
! 157: extern void crypto_config (int, char *);
! 158: extern void crypto_setup (void);
! 159: extern u_int crypto_ident (struct peer *);
! 160: extern struct exten *crypto_args (struct peer *, u_int, associd_t, char *);
! 161: extern int crypto_public (struct peer *, u_char *, u_int);
! 162: extern void value_free (struct value *);
! 163: extern char *iffpar_file;
! 164: extern EVP_PKEY *iffpar_pkey;
! 165: extern char *gqpar_file;
! 166: extern EVP_PKEY *gqpar_pkey;
! 167: extern char *mvpar_file;
! 168: extern EVP_PKEY *mvpar_pkey;
! 169: extern struct value tai_leap;
! 170: #endif /* OPENSSL */
! 171:
! 172: /* ntp_proto.c */
! 173: extern void transmit (struct peer *);
! 174: extern void receive (struct recvbuf *);
! 175: extern void peer_clear (struct peer *, char *);
! 176: extern void process_packet (struct peer *, struct pkt *, u_int);
! 177: extern void clock_select (void);
! 178:
! 179: extern int leap_tai; /* TAI at next leap */
! 180: extern u_long leap_sec; /* next scheduled leap from file */
! 181: extern u_long leap_peers; /* next scheduled leap from peers */
! 182: extern u_long leapsec; /* seconds to next leap */
! 183: extern u_long leap_expire; /* leap information expiration */
! 184: extern int sys_orphan;
! 185: extern double sys_mindisp;
! 186: extern double sys_maxdist;
! 187:
! 188: /*
! 189: * there seems to be a bug in the IRIX 4 compiler which prevents
! 190: * u_char from beeing used in prototyped functions.
! 191: * This is also true AIX compiler.
! 192: * So give up and define it to be int. WLJ
! 193: */
! 194: extern void poll_update (struct peer *, int);
! 195:
! 196: extern void clear (struct peer *);
! 197: extern void clock_filter (struct peer *, double, double, double);
! 198: extern void init_proto (void);
! 199: extern void proto_config (int, u_long, double, sockaddr_u *);
! 200: extern void proto_clr_stats (void);
! 201:
! 202: #ifdef REFCLOCK
! 203: /* ntp_refclock.c */
! 204: extern int refclock_newpeer (struct peer *);
! 205: extern void refclock_unpeer (struct peer *);
! 206: extern void refclock_receive (struct peer *);
! 207: extern void refclock_transmit (struct peer *);
! 208: extern void init_refclock (void);
! 209: #endif /* REFCLOCK */
! 210:
! 211: /* ntp_request.c */
! 212: extern void init_request (void);
! 213: extern void process_private (struct recvbuf *, int);
! 214:
! 215: /* ntp_restrict.c */
! 216: extern void init_restrict (void);
! 217: extern u_short restrictions (sockaddr_u *);
! 218: extern void hack_restrict (int, sockaddr_u *, sockaddr_u *, u_short, u_short);
! 219:
! 220: /* ntp_timer.c */
! 221: extern void init_timer (void);
! 222: extern void reinit_timer (void);
! 223: extern void timer (void);
! 224: extern void timer_clr_stats (void);
! 225: extern void timer_interfacetimeout (u_long);
! 226: extern volatile int interface_interval;
! 227: #ifdef OPENSSL
! 228: extern char *sys_hostname; /* host name */
! 229: extern char *sys_groupname; /* group name */
! 230: extern char *group_name; /* group name */
! 231: extern u_long sys_revoke; /* keys revoke timeout */
! 232: extern u_long sys_automax; /* session key timeout */
! 233: #endif /* OPENSSL */
! 234:
! 235: /* ntp_util.c */
! 236: extern void init_util (void);
! 237: extern void write_stats (void);
! 238: extern void stats_config (int, const char *);
! 239: extern void record_peer_stats (sockaddr_u *, int, double, double, double, double);
! 240: extern void record_proto_stats (char *);
! 241: extern void record_loop_stats (double, double, double, double, int);
! 242: extern void record_clock_stats (sockaddr_u *, const char *);
! 243: extern void record_raw_stats (sockaddr_u *, sockaddr_u *, l_fp *, l_fp *, l_fp *, l_fp *);
! 244: extern u_long leap_month(u_long);
! 245: extern void record_crypto_stats (sockaddr_u *, const char *);
! 246: #ifdef DEBUG
! 247: extern void record_timing_stats (const char *);
! 248: #endif
! 249: extern u_short sock_hash (sockaddr_u *);
! 250: extern char * fstostr(time_t); /* NTP timescale seconds */
! 251: extern double old_drift;
! 252: extern int drift_file_sw;
! 253: extern double wander_threshold;
! 254: extern double wander_resid;
! 255:
! 256: /*
! 257: * Variable declarations for ntpd.
! 258: */
! 259: /* ntp_config.c */
! 260: extern char const * progname;
! 261: extern char *sys_phone[]; /* ACTS phone numbers */
! 262: #if defined(HAVE_SCHED_SETSCHEDULER)
! 263: extern int config_priority_override;
! 264: extern int config_priority;
! 265: #endif
! 266: extern char *ntp_signd_socket;
! 267: extern struct config_tree *cfg_tree_history;
! 268:
! 269: #ifdef BC_LIST_FRAMEWORK_NOT_YET_USED
! 270: /*
! 271: * backwards compatibility flags
! 272: */
! 273: typedef struct bc_entry_tag {
! 274: int token;
! 275: int enabled;
! 276: } bc_entry;
! 277:
! 278: extern bc_entry bc_list[];
! 279: #endif
! 280:
! 281: /* ntp_control.c */
! 282: extern int num_ctl_traps;
! 283: extern keyid_t ctl_auth_keyid; /* keyid used for authenticating write requests */
! 284:
! 285: /*
! 286: * Statistic counters to keep track of requests and responses.
! 287: */
! 288: extern u_long ctltimereset; /* time stats reset */
! 289: extern u_long numctlreq; /* number of requests we've received */
! 290: extern u_long numctlbadpkts; /* number of bad control packets */
! 291: extern u_long numctlresponses; /* number of resp packets sent with data */
! 292: extern u_long numctlfrags; /* number of fragments sent */
! 293: extern u_long numctlerrors; /* number of error responses sent */
! 294: extern u_long numctltooshort; /* number of too short input packets */
! 295: extern u_long numctlinputresp; /* number of responses on input */
! 296: extern u_long numctlinputfrag; /* number of fragments on input */
! 297: extern u_long numctlinputerr; /* number of input pkts with err bit set */
! 298: extern u_long numctlbadoffset; /* number of input pkts with nonzero offset */
! 299: extern u_long numctlbadversion; /* number of input pkts with unknown version */
! 300: extern u_long numctldatatooshort; /* data too short for count */
! 301: extern u_long numctlbadop; /* bad op code found in packet */
! 302: extern u_long numasyncmsgs; /* number of async messages we've sent */
! 303:
! 304: /* ntp_intres.c */
! 305: extern keyid_t req_keyid; /* request keyid */
! 306: extern int req_keytype; /* OpenSSL NID such as NID_md5 */
! 307: extern size_t req_hashlen; /* digest size for req_keytype */
! 308: extern char * req_file; /* name of the file with configuration info */
! 309: #ifdef SYS_WINNT
! 310: extern HANDLE ResolverEventHandle;
! 311: #else
! 312: extern int resolver_pipe_fd[2]; /* used to let the resolver process alert the parent process */
! 313: #endif /* SYS_WINNT */
! 314:
! 315: /*
! 316: * Other statistics of possible interest
! 317: */
! 318: extern volatile u_long packets_dropped; /* total number of packets dropped on reception */
! 319: extern volatile u_long packets_ignored; /* packets received on wild card interface */
! 320: extern volatile u_long packets_received;/* total number of packets received */
! 321: extern u_long packets_sent; /* total number of packets sent */
! 322: extern u_long packets_notsent; /* total number of packets which couldn't be sent */
! 323:
! 324: extern volatile u_long handler_calls; /* number of calls to interrupt handler */
! 325: extern volatile u_long handler_pkts; /* number of pkts received by handler */
! 326: extern u_long io_timereset; /* time counters were reset */
! 327:
! 328: /*
! 329: * Interface stuff
! 330: */
! 331: extern endpt * any_interface; /* IPv4 wildcard */
! 332: extern endpt * any6_interface; /* IPv6 wildcard */
! 333: extern endpt * loopback_interface; /* IPv4 loopback for refclocks */
! 334:
! 335: /*
! 336: * File descriptor masks etc. for call to select
! 337: */
! 338: extern fd_set activefds;
! 339: extern int maxactivefd;
! 340:
! 341: /* ntp_loopfilter.c */
! 342: extern double drift_comp; /* clock frequency (s/s) */
! 343: extern double clock_stability; /* clock stability (s/s) */
! 344: extern double clock_max; /* max offset before step (s) */
! 345: extern double clock_panic; /* max offset before panic (s) */
! 346: extern double clock_phi; /* dispersion rate (s/s) */
! 347: extern double clock_minstep; /* step timeout (s) */
! 348: extern double clock_codec; /* codec frequency */
! 349: #ifdef KERNEL_PLL
! 350: extern int pll_status; /* status bits for kernel pll */
! 351: #endif /* KERNEL_PLL */
! 352:
! 353: /*
! 354: * Clock state machine control flags
! 355: */
! 356: extern int ntp_enable; /* clock discipline enabled */
! 357: extern int pll_control; /* kernel support available */
! 358: extern int kern_enable; /* kernel support enabled */
! 359: extern int pps_enable; /* kernel PPS discipline enabled */
! 360: extern int ext_enable; /* external clock enabled */
! 361: extern int cal_enable; /* refclock calibrate enable */
! 362: extern int allow_panic; /* allow panic correction */
! 363: extern int mode_ntpdate; /* exit on first clock set */
! 364: extern int peer_ntpdate; /* count of ntpdate peers */
! 365:
! 366: /*
! 367: * Clock state machine variables
! 368: */
! 369: extern u_char sys_poll; /* system poll interval (log2 s) */
! 370: extern int state; /* clock discipline state */
! 371: extern int tc_counter; /* poll-adjust counter */
! 372: extern u_long last_time; /* time of last clock update (s) */
! 373: extern double last_offset; /* last clock offset (s) */
! 374: extern u_char allan_xpt; /* Allan intercept (log2 s) */
! 375: extern double clock_jitter; /* clock jitter (s) */
! 376: extern double sys_offset; /* system offset (s) */
! 377: extern double sys_jitter; /* system jitter (s) */
! 378:
! 379: /* ntp_monitor.c */
! 380: extern struct mon_data mon_mru_list;
! 381: extern struct mon_data mon_fifo_list;
! 382: extern int mon_enabled;
! 383:
! 384: /* ntp_peer.c */
! 385: extern struct peer *peer_hash[]; /* peer hash table */
! 386: extern int peer_hash_count[]; /* count of peers in each bucket */
! 387: extern struct peer *assoc_hash[]; /* association ID hash table */
! 388: extern int assoc_hash_count[];
! 389: extern int peer_free_count;
! 390:
! 391: /*
! 392: * Miscellaneous statistic counters which may be queried.
! 393: */
! 394: extern u_long peer_timereset; /* time stat counters were zeroed */
! 395: extern u_long findpeer_calls; /* number of calls to findpeer */
! 396: extern u_long assocpeer_calls; /* number of calls to findpeerbyassoc */
! 397: extern u_long peer_allocations; /* number of allocations from the free list */
! 398: extern u_long peer_demobilizations; /* number of structs freed to free list */
! 399: extern int total_peer_structs; /* number of peer structs in circulation */
! 400: extern int peer_associations; /* mobilized associations */
! 401: extern int peer_preempt; /* preemptable associations */
! 402: /* ntp_proto.c */
! 403: /*
! 404: * System variables are declared here. See Section 3.2 of the
! 405: * specification.
! 406: */
! 407: extern u_char sys_leap; /* system leap indicator */
! 408: extern u_char sys_stratum; /* system stratum */
! 409: extern s_char sys_precision; /* local clock precision */
! 410: extern double sys_rootdelay; /* roundtrip delay to primary source */
! 411: extern double sys_rootdisp; /* dispersion to primary source */
! 412: extern u_int32 sys_refid; /* reference id */
! 413: extern l_fp sys_reftime; /* last update time */
! 414: extern struct peer *sys_peer; /* current peer */
! 415:
! 416: /*
! 417: * Nonspecified system state variables.
! 418: */
! 419: extern int sys_bclient; /* we set our time to broadcasts */
! 420: extern double sys_bdelay; /* broadcast client default delay */
! 421: extern int sys_authenticate; /* requre authentication for config */
! 422: extern l_fp sys_authdelay; /* authentication delay */
! 423: extern keyid_t sys_private; /* private value for session seed */
! 424: extern int sys_manycastserver; /* respond to manycast client pkts */
! 425: extern int sys_minclock; /* minimum survivors */
! 426: extern int sys_minsane; /* minimum candidates */
! 427: extern int sys_floor; /* cluster stratum floor */
! 428: extern int sys_ceiling; /* cluster stratum ceiling */
! 429: extern u_char sys_ttl[MAX_TTL]; /* ttl mapping vector */
! 430: extern int sys_ttlmax; /* max ttl mapping vector index */
! 431:
! 432: /*
! 433: * Statistics counters
! 434: */
! 435: extern u_long sys_stattime; /* time since reset */
! 436: extern u_long sys_received; /* packets received */
! 437: extern u_long sys_processed; /* packets for this host */
! 438: extern u_long sys_restricted; /* restricted packets */
! 439: extern u_long sys_newversion; /* current version */
! 440: extern u_long sys_oldversion; /* old version */
! 441: extern u_long sys_restricted; /* access denied */
! 442: extern u_long sys_badlength; /* bad length or format */
! 443: extern u_long sys_badauth; /* bad authentication */
! 444: extern u_long sys_declined; /* declined */
! 445: extern u_long sys_limitrejected; /* rate exceeded */
! 446: extern u_long sys_kodsent; /* KoD sent */
! 447:
! 448: /* ntp_refclock.c */
! 449: #ifdef REFCLOCK
! 450: #ifdef PPS
! 451: extern int fdpps; /* pps file descriptor */
! 452: #endif /* PPS */
! 453: #endif
! 454:
! 455: /* ntp_request.c */
! 456: extern keyid_t info_auth_keyid; /* keyid used to authenticate requests */
! 457:
! 458: /* ntp_restrict.c */
! 459: extern restrict_u * restrictlist4; /* IPv4 restriction list */
! 460: extern restrict_u * restrictlist6; /* IPv6 restriction list */
! 461: extern int ntp_minpkt;
! 462: extern int ntp_minpoll;
! 463: extern int mon_age; /* monitor preempt age */
! 464:
! 465: /* ntp_timer.c */
! 466: extern volatile int alarm_flag; /* alarm flag */
! 467: extern volatile u_long alarm_overflow;
! 468: extern u_long current_time; /* current time (s) */
! 469: extern u_long timer_timereset;
! 470: extern u_long timer_overflows;
! 471: extern u_long timer_xmtcalls;
! 472:
! 473: /* ntp_util.c */
! 474: extern int stats_control; /* write stats to fileset? */
! 475: extern int stats_write_period; /* # of seconds between writes. */
! 476: extern double stats_write_tolerance;
! 477:
! 478: /* ntpd.c */
! 479: extern volatile int debug; /* debugging flag */
! 480: extern int nofork; /* no-fork flag */
! 481: extern int initializing; /* initializing flag */
! 482: #ifdef HAVE_DROPROOT
! 483: extern int droproot; /* flag: try to drop root privileges after startup */
! 484: extern char *user; /* user to switch to */
! 485: extern char *group; /* group to switch to */
! 486: extern const char *chrootdir; /* directory to chroot to */
! 487: #endif
! 488:
! 489: /* refclock_conf.c */
! 490: #ifdef REFCLOCK
! 491: /* refclock configuration table */
! 492: extern struct refclock * const refclock_conf[];
! 493: extern u_char num_refclock_conf;
! 494: #endif
! 495:
! 496: /* ntp_signd.c */
! 497: #ifdef HAVE_NTP_SIGND
! 498: extern void
! 499: send_via_ntp_signd(
! 500: struct recvbuf *rbufp, /* receive packet pointer */
! 501: int xmode,
! 502: keyid_t xkeyid,
! 503: int flags,
! 504: struct pkt *xpkt
! 505: );
! 506: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>