diff options
Diffstat (limited to 'include/ntp_config.h')
| -rw-r--r-- | include/ntp_config.h | 359 |
1 files changed, 218 insertions, 141 deletions
diff --git a/include/ntp_config.h b/include/ntp_config.h index 037ed0733c3ea..900688cef4eed 100644 --- a/include/ntp_config.h +++ b/include/ntp_config.h @@ -1,8 +1,11 @@ #ifndef NTP_CONFIG_H #define NTP_CONFIG_H +#ifdef HAVE_SYS_RESOURCE_H +# include <sys/resource.h> +#endif /* HAVE_SYS_RESOURCE_H */ + #include "ntp_machine.h" -#include "ntp_data_structures.h" #include "ntpsim.h" @@ -19,28 +22,6 @@ # endif /* SYS_WINNT */ #endif /* not CONFIG_FILE */ -#ifdef HAVE_IPTOS_SUPPORT -/* - * "qos" modified keywords - */ -#define CONF_QOS_LOWDELAY 1 -#define CONF_QOS_THROUGHPUT 2 -#define CONF_QOS_RELIABILITY 3 -#define CONF_QOS_MINCOST 4 - -#ifdef IPTOS_PREC_INTERNETCONTROL -#define CONF_QOS_CS0 5 -#define CONF_QOS_CS1 6 -#define CONF_QOS_CS2 7 -#define CONF_QOS_CS3 8 -#define CONF_QOS_CS4 9 -#define CONF_QOS_CS5 10 -#define CONF_QOS_CS6 11 -#define CONF_QOS_CS7 12 -#endif /* IPTOS_PREC_INTERNETCONTROL */ - -#endif /* HAVE_IPTOS_SUPPORT */ - /* * We keep config trees around for possible saveconfig use. When @@ -61,132 +42,203 @@ #define CONF_SOURCE_FILE 0 #define CONF_SOURCE_NTPQ 1 +/* list of servers from command line for config_peers() */ +extern int cmdline_server_count; +extern char ** cmdline_servers; + +/* set to zero if admin doesn't want memory locked */ +extern int do_memlock; + +typedef struct int_range_tag { + int first; + int last; +} int_range; /* Structure for storing an attribute-value pair */ -struct attr_val { - int attr; - union val { - double d; - int i; - u_int u; - char * s; - void * p; - } value; - int type; +typedef struct attr_val_tag attr_val; +struct attr_val_tag { + attr_val * link; + int attr; + int type; /* T_String, T_Integer, ... */ + union val { + int i; + u_int u; + int_range r; + double d; + char * s; + } value; }; +typedef DECL_FIFO_ANCHOR(attr_val) attr_val_fifo; + /* Structure for nodes on the syntax tree */ -struct address_node { - char *address; - int type; +typedef struct address_node_tag address_node; +struct address_node_tag { + address_node * link; + char * address; + u_short type; /* family, AF_UNSPEC (0), AF_INET[6] */ }; -struct restrict_node { - struct address_node *addr; - struct address_node *mask; - queue *flags; - int line_no; +typedef DECL_FIFO_ANCHOR(address_node) address_fifo; + +typedef struct int_node_tag int_node; +struct int_node_tag { + int_node * link; + int i; +}; + +typedef DECL_FIFO_ANCHOR(int_node) int_fifo; + +typedef struct string_node_tag string_node; +struct string_node_tag { + string_node * link; + char * s; }; -struct peer_node { - int host_mode; - struct address_node *addr; - queue *peerflags; - int minpoll; - int maxpoll; - int ttl; - int peerversion; - int peerkey; - double bias; +typedef DECL_FIFO_ANCHOR(string_node) string_fifo; + +typedef struct restrict_node_tag restrict_node; +struct restrict_node_tag { + restrict_node * link; + address_node * addr; + address_node * mask; + int_fifo * flags; + int line_no; }; -struct unpeer_node { - u_int assocID; - struct address_node * addr; +typedef DECL_FIFO_ANCHOR(restrict_node) restrict_fifo; + +typedef struct peer_node_tag peer_node; +struct peer_node_tag { + peer_node * link; + int host_mode; + address_node * addr; + attr_val_fifo * peerflags; + u_char minpoll; + u_char maxpoll; + u_int32 ttl; + u_char peerversion; + keyid_t peerkey; + char * group; }; -struct auth_node { - int control_key; - int cryptosw; - queue *crypto_cmd_list; - char *keys; - char *keysdir; - int request_key; - int revoke; - queue *trusted_key_list; - char *ntp_signd_socket; +typedef DECL_FIFO_ANCHOR(peer_node) peer_fifo; + +typedef struct unpeer_node_tag unpeer_node; +struct unpeer_node_tag { + unpeer_node * link; + associd_t assocID; + address_node * addr; }; -struct filegen_node { - int filegen_token; - queue * options; +typedef DECL_FIFO_ANCHOR(unpeer_node) unpeer_fifo; + +typedef struct auth_node_tag auth_node; +struct auth_node_tag { + int control_key; + int cryptosw; + attr_val_fifo * crypto_cmd_list; + char * keys; + char * keysdir; + int request_key; + int revoke; + attr_val_fifo * trusted_key_list; + char * ntp_signd_socket; }; -struct setvar_node { - char * var; - char * val; - int isdefault; +typedef struct filegen_node_tag filegen_node; +struct filegen_node_tag { + filegen_node * link; + int filegen_token; + attr_val_fifo * options; }; -typedef struct nic_rule_node_tag { - int match_class; - char *if_name; /* interface name or numeric address */ - int action; -} nic_rule_node; +typedef DECL_FIFO_ANCHOR(filegen_node) filegen_fifo; -struct addr_opts_node { - struct address_node *addr; - queue *options; +typedef struct setvar_node_tag setvar_node; +struct setvar_node_tag { + setvar_node * link; + char * var; + char * val; + int isdefault; }; -struct sim_node { - queue *init_opts; - queue *servers; +typedef DECL_FIFO_ANCHOR(setvar_node) setvar_fifo; + +typedef struct nic_rule_node_tag nic_rule_node; +struct nic_rule_node_tag { + nic_rule_node * link; + int match_class; + char * if_name; /* or numeric address */ + int action; +}; + +typedef DECL_FIFO_ANCHOR(nic_rule_node) nic_rule_fifo; + +typedef struct addr_opts_node_tag addr_opts_node; +struct addr_opts_node_tag { + addr_opts_node *link; + address_node * addr; + attr_val_fifo * options; }; +typedef DECL_FIFO_ANCHOR(addr_opts_node) addr_opts_fifo; + +typedef struct sim_node_tag sim_node; +struct sim_node_tag { + sim_node * link; + attr_val_fifo * init_opts; + server_info_fifo * servers; +}; + +typedef DECL_FIFO_ANCHOR(sim_node) sim_fifo; /* The syntax tree */ -struct config_tree { - struct config_tree *link; +typedef struct config_tree_tag config_tree; +struct config_tree_tag { + config_tree * link; + + attr_val source; + time_t timestamp; - struct attr_val source; - time_t timestamp; + peer_fifo * peers; + unpeer_fifo * unpeers; - queue *peers; - queue *unpeers; + /* Other Modes */ + int broadcastclient; + address_fifo * manycastserver; + address_fifo * multicastclient; - /* Other Modes */ - int broadcastclient; - queue *manycastserver; - queue *multicastclient; + attr_val_fifo * orphan_cmds; /* s/b renamed tos_options */ - queue *orphan_cmds; + /* Monitoring Configuration */ + int_fifo * stats_list; + char * stats_dir; + filegen_fifo * filegen_opts; - /* Monitoring Configuration */ - queue *stats_list; - char *stats_dir; - queue *filegen_opts; + /* Access Control Configuration */ + attr_val_fifo * discard_opts; + attr_val_fifo * mru_opts; + restrict_fifo * restrict_opts; - /* Access Control Configuration */ - queue *discard_opts; - queue *restrict_opts; + addr_opts_fifo *fudge; + attr_val_fifo * rlimit; + attr_val_fifo * tinker; + attr_val_fifo * enable_opts; + attr_val_fifo * disable_opts; - queue *fudge; - queue *tinker; - queue *enable_opts; - queue *disable_opts; - struct auth_node auth; + auth_node auth; - queue *logconfig; - queue *qos; - queue *phone; - queue *setvar; - queue *ttl; - queue *trap; - queue *vars; - queue *nic_rules; + attr_val_fifo * logconfig; + string_fifo * phone; + setvar_fifo * setvar; + int_fifo * ttl; + addr_opts_fifo *trap; + attr_val_fifo * vars; + nic_rule_fifo * nic_rules; + int_fifo * reset_counters; - struct sim_node *sim_details; + sim_fifo * sim_details; }; @@ -199,47 +251,72 @@ struct REMOTE_CONFIG_INFO { int no_errors; }; + +/* + * context for trap_name_resolved() to call ctlsettrap() once the + * name->address resolution completes. + */ +typedef struct settrap_parms_tag { + sockaddr_u ifaddr; + int ifaddr_nonnull; +} settrap_parms; + + /* get text from T_ tokens */ const char * token_name(int token); -struct peer_node *create_peer_node(int hmode, - struct address_node *addr, - queue *options); -struct unpeer_node *create_unpeer_node(struct address_node *addr); -struct address_node *create_address_node(char *addr, int type); -void destroy_address_node(struct address_node *my_node); -queue *enqueue_in_new_queue(void *my_node); -struct attr_val *create_attr_dval(int attr, double value); -struct attr_val *create_attr_ival(int attr, int value); -struct attr_val *create_attr_shorts(int, ntp_u_int16_t, ntp_u_int16_t); -struct attr_val *create_attr_sval(int attr, char *s); -struct attr_val *create_attr_pval(int attr, void *s); -struct filegen_node *create_filegen_node(int filegen_token, queue *options); -void **create_pval(void *val); -struct restrict_node *create_restrict_node(struct address_node *addr, - struct address_node *mask, - queue *flags, int line_no); -int *create_ival(int val); -struct addr_opts_node *create_addr_opts_node(struct address_node *addr, - queue *options); -struct sim_node *create_sim_node(queue *init_opts, queue *servers); -struct setvar_node *create_setvar_node(char *var, char *val, - int isdefault); +/* generic fifo routines for structs linked by 1st member */ +void* append_gen_fifo(void *fifo, void *entry); +void * concat_gen_fifos(void *first, void *second); +#define APPEND_G_FIFO(pf, pe) \ + ((pf) = append_gen_fifo((pf), (pe))) +#define CONCAT_G_FIFOS(first, second) \ + ((first) = concat_gen_fifos((first), (second))) +#define HEAD_PFIFO(pf) \ + (((pf) != NULL) \ + ? HEAD_FIFO(*(pf)) \ + : NULL) + +peer_node *create_peer_node(int hmode, address_node *addr, + attr_val_fifo *options); +unpeer_node *create_unpeer_node(address_node *addr); +address_node *create_address_node(char *addr, int type); +void destroy_address_node(address_node *my_node); +attr_val *create_attr_dval(int attr, double value); +attr_val *create_attr_ival(int attr, int value); +attr_val *create_attr_uval(int attr, u_int value); +attr_val *create_attr_rangeval(int attr, int first, int last); +attr_val *create_attr_sval(int attr, char *s); +filegen_node *create_filegen_node(int filegen_token, + attr_val_fifo *options); +string_node *create_string_node(char *str); +restrict_node *create_restrict_node(address_node *addr, + address_node *mask, + int_fifo *flags, int line_no); +int_node *create_int_node(int val); +addr_opts_node *create_addr_opts_node(address_node *addr, + attr_val_fifo *options); +sim_node *create_sim_node(attr_val_fifo *init_opts, + server_info_fifo *servers); +setvar_node *create_setvar_node(char *var, char *val, int isdefault); nic_rule_node *create_nic_rule_node(int match_class, char *if_name, int action); script_info *create_sim_script_info(double duration, - queue *script_queue); -server_info *create_sim_server(struct address_node *addr, - double server_offset, queue *script); + attr_val_fifo *script_queue); +server_info *create_sim_server(address_node *addr, double server_offset, + script_info_fifo *script); extern struct REMOTE_CONFIG_INFO remote_config; void config_remotely(sockaddr_u *); #ifdef SAVECONFIG -int dump_config_tree(struct config_tree *ptree, FILE *df, int comment); +int dump_config_tree(config_tree *ptree, FILE *df, int comment); int dump_all_config_trees(FILE *df, int comment); #endif +#if defined(HAVE_SETRLIMIT) +void ntp_rlimit(int, rlim_t, int, char *); +#endif #endif /* !defined(NTP_CONFIG_H) */ |
