| /* |
| * 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 <ctype.h> |
| #include <errno.h> |
| |
| #if TIME_WITH_SYS_TIME |
| # ifdef WIN32 |
| # include <sys/timeb.h> |
| # else |
| # include <sys/time.h> |
| # endif |
| # include <time.h> |
| #else |
| # if HAVE_SYS_TIME_H |
| # include <sys/time.h> |
| # else |
| # include <time.h> |
| # endif |
| #endif |
| #if HAVE_NETINET_IN_H |
| #include <netinet/in.h> |
| #endif |
| #if HAVE_NETINET_IN_SYSTM_H |
| #include <netinet/in_systm.h> |
| #endif |
| #if HAVE_NETINET_IP_H |
| #include <netinet/ip.h> |
| #endif |
| #ifdef INET6 |
| #if HAVE_NETINET_IP6_H |
| #include <netinet/ip6.h> |
| #endif |
| #endif |
| #if HAVE_SYS_QUEUE_H |
| #include <sys/queue.h> |
| #endif |
| #if HAVE_SYS_SOCKET_H |
| #include <sys/socket.h> |
| #elif HAVE_WINSOCK_H |
| #include <winsock.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_IP_VAR_H |
| #include <netinet/ip_var.h> |
| #endif |
| #ifdef INET6 |
| #if HAVE_NETINET6_IP6_VAR_H |
| #include <netinet6/ip6_var.h> |
| #endif |
| #endif |
| #if HAVE_NETINET_IN_PCB_H |
| #include <netinet/in_pcb.h> |
| #endif |
| #if HAVE_INET_MIB2_H |
| #include <inet/mib2.h> |
| #endif |
| |
| #if HAVE_DMALLOC_H |
| #include <dmalloc.h> |
| #endif |
| |
| #include "mibincl.h" |
| #include "snmpusm.h" |
| |
| #include "mibgroup/struct.h" |
| #include "read_config.h" |
| #include "agent_read_config.h" |
| #include "callback.h" |
| #include "snmp_agent.h" |
| #include "agent_trap.h" |
| #include "snmpd.h" |
| #include "system.h" |
| #include "snmp_debug.h" |
| #include "snmp_alarm.h" |
| #include "default_store.h" |
| #include "ds_agent.h" |
| #include "mib_module_includes.h" |
| |
| char dontReadConfigFiles; |
| char *optconfigfile; |
| |
| void init_agent_read_config (const char *app) |
| { |
| if ( app != NULL ) |
| ds_set_string(DS_LIBRARY_ID, DS_LIB_APPTYPE, app); |
| |
| register_app_config_handler("authtrapenable", |
| snmpd_parse_config_authtrap, NULL, |
| "1 | 2\t\t(1 = enable, 2 = disable)"); |
| |
| if ( ds_get_boolean(DS_APPLICATION_ID, DS_AGENT_ROLE) == MASTER_AGENT ) { |
| register_app_config_handler("trapsink", |
| snmpd_parse_config_trapsink, snmpd_free_trapsinks, |
| "host [community] [port]"); |
| register_app_config_handler("trap2sink", |
| snmpd_parse_config_trap2sink, NULL, |
| "host [community] [port]"); |
| register_app_config_handler("informsink", |
| snmpd_parse_config_informsink, NULL, |
| "host [community] [port]"); |
| register_app_config_handler("trapsess", |
| snmpd_parse_config_trapsess, NULL, |
| "[snmpcmdargs] host"); |
| } |
| register_app_config_handler("trapcommunity", |
| snmpd_parse_config_trapcommunity, |
| snmpd_free_trapcommunity, |
| "community-string"); |
| #include "mib_module_dot_conf.h" |
| #ifdef TESTING |
| print_config_handlers(); |
| #endif |
| } |
| |
| void update_config(void) |
| { |
| free_config(); |
| read_configs(); |
| } |
| |
| |
| void |
| snmpd_register_config_handler(const char *token, |
| void (*parser) (const char *, char *), |
| void (*releaser) (void), |
| const char *help) |
| { |
| DEBUGMSGTL(("snmpd_register_app_config_handler", |
| "registering .conf token for \"%s\"\n", token)); |
| register_app_config_handler(token, parser, releaser, help); |
| } |
| |
| void |
| snmpd_unregister_config_handler(const char *token) |
| { |
| unregister_app_config_handler(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_app_config_store(line); |
| } |