| /* |
| * agent_read_config.c |
| */ |
| |
| #include <config.h> |
| |
| #include <sys/types.h> |
| #if HAVE_STDLIB_H |
| #include <stdlib.h> |
| #endif |
| #if HAVE_STRING_H |
| #include <string.h> |
| #else |
| #include <strings.h> |
| #endif |
| #include <stdio.h> |
| #include <signal.h> |
| #include <ctype.h> |
| #include <errno.h> |
| |
| #include <sys/time.h> |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IN_SYSTM_H |
| #include <netinet/in_systm.h> |
| #endif |
| #include <netinet/ip.h> |
| #if HAVE_SYS_QUEUE_H |
| #include <sys/queue.h> |
| #endif |
| #if HAVE_SYS_SOCKET_H |
| #include <sys/socket.h> |
| #endif |
| #if HAVE_SYS_STREAM_H |
| #include <sys/stream.h> |
| #endif |
| #if HAVE_NET_ROUTE_H |
| #include <net/route.h> |
| #endif |
| #if HAVE_NETINET_IN_PCB_H |
| #include <netinet/in_pcb.h> |
| #endif |
| #if HAVE_INET_MIB2_H |
| #include <inet/mib2.h> |
| #endif |
| |
| #include "m2m.h" |
| #include "mibincl.h" |
| #include "snmpusm.h" |
| |
| #include "mibgroup/struct.h" |
| #include "read_config.h" |
| #include "agent_read_config.h" |
| #include "mib_module_includes.h" |
| #include "mib_module_config.h" |
| #include "callback.h" |
| #include "snmp_agent.h" |
| #include "snmpd.h" |
| #include "../snmplib/system.h" |
| #include "snmp_debug.h" |
| |
| char dontReadConfigFiles; |
| char *optconfigfile; |
| |
| |
| void init_agent_read_config (void) |
| { |
| register_config_handler("snmpd","authtrapenable", |
| snmpd_parse_config_authtrap, NULL, |
| "1 | 2\t\t(1 = enable, 2 = disable)"); |
| |
| register_config_handler("snmpd","trapsink", |
| snmpd_parse_config_trapsink, snmpd_free_trapsinks, |
| "host [community]"); |
| register_config_handler("snmpd","trap2sink", |
| snmpd_parse_config_trap2sink, NULL, |
| "host [community]"); |
| register_config_handler("snmpd","trapcommunity", |
| snmpd_parse_config_trapcommunity, |
| snmpd_free_trapcommunity, |
| "community-string"); |
| #include "mibgroup/mib_module_dot_conf.h" |
| #ifdef TESTING |
| print_config_handlers(); |
| #endif |
| } |
| |
| RETSIGTYPE update_config(int a) |
| { |
| free_config(); |
| if (!dontReadConfigFiles) { /* don't read if -C present on command line */ |
| read_configs(); |
| } |
| |
| /* read all optional config files */ |
| /* last is -c from command line */ |
| /* always read this one even if -C is present (ie both -c and -C) */ |
| if (optconfigfile != NULL) { |
| read_config_with_type (optconfigfile, "snmpd"); |
| } |
| snmp_call_callbacks(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_POST_READ_CONFIG, |
| NULL); |
| #ifdef SIGHUP |
| signal(SIGHUP,update_config); |
| #endif |
| } |
| |
| |
| void |
| snmpd_register_config_handler(const char *token, |
| void (*parser) (char *, char *), |
| void (*releaser) (void), |
| const char *help) |
| { |
| DEBUGMSGTL(("snmpd_register_config_handler", |
| "registering .conf token for \"%s\"\n", token)); |
| register_config_handler("snmpd", token, parser, releaser, help); |
| } |
| |
| void |
| snmpd_unregister_config_handler(const char *token) |
| { |
| unregister_config_handler("snmpd", token); |
| } |
| |
| /* this function is intended for use by mib-modules to store permenant |
| configuration information generated by sets or persistent counters */ |
| void |
| snmpd_store_config(const char *line) |
| { |
| read_config_store("snmpd",line); |
| } |