allow peers and users to go into a hash table
[asterisk/asterisk.git] / res / res_snmp.c
index fbef97f..1fac2c3 100644 (file)
@@ -12,6 +12,9 @@
  * \brief SNMP Agent / SubAgent support for Asterisk
  *
  * \author Thorsten Lockert <tholo@voop.as>
+ *
+ * \extref Uses the Net-SNMP libraries available at
+ *      http://net-snmp.sourceforge.net/
  */
 
 /*** MODULEINFO
@@ -37,15 +40,20 @@ int res_snmp_enabled;
 
 static pthread_t thread = AST_PTHREADT_NULL;
 
+/*!
+ * \brief Load res_snmp.conf config file
+ * \return 1 on load, 0 file does not exist
+*/
 static int load_config(void)
 {
        struct ast_variable *var;
        struct ast_config *cfg;
+       struct ast_flags config_flags = { 0 };
        char *cat;
 
        res_snmp_enabled = 0;
        res_snmp_agentx_subagent = 1;
-       cfg = ast_config_load("res_snmp.conf");
+       cfg = ast_config_load("res_snmp.conf", config_flags);
        if (!cfg) {
                ast_log(LOG_WARNING, "Could not load res_snmp.conf\n");
                return 0;
@@ -92,42 +100,24 @@ static int load_module(void)
        if(!load_config())
                return AST_MODULE_LOAD_DECLINE;
 
-       ast_verbose(VERBOSE_PREFIX_1 "Loading [Sub]Agent Module\n");
+       ast_verb(1, "Loading [Sub]Agent Module\n");
 
        res_snmp_dont_stop = 1;
        if (res_snmp_enabled)
-               return ast_pthread_create(&thread, NULL, agent_thread, NULL);
+               return ast_pthread_create_background(&thread, NULL, agent_thread, NULL);
        else
                return 0;
 }
 
 static int unload_module(void)
 {
-       ast_verbose(VERBOSE_PREFIX_1 "Unloading [Sub]Agent Module\n");
-
-       res_snmp_dont_stop = 0;
-       return pthread_join(thread, NULL);
-}
-
-static int reload(void)
-{
-       ast_verbose(VERBOSE_PREFIX_1 "Reloading [Sub]Agent Module\n");
+       ast_verb(1, "Unloading [Sub]Agent Module\n");
 
        res_snmp_dont_stop = 0;
-       if (thread != AST_PTHREADT_NULL)
-               pthread_join(thread, NULL);
-       thread = AST_PTHREADT_NULL;
-       load_config();
-
-       res_snmp_dont_stop = 1;
-       if (res_snmp_enabled)
-               return ast_pthread_create(&thread, NULL, agent_thread, NULL);
-       else
-               return 0;
+       return ((thread != AST_PTHREADT_NULL) ? pthread_join(thread, NULL) : 0);
 }
 
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "SNMP [Sub]Agent for Asterisk",
                .load = load_module,
                .unload = unload_module,
-               .reload = reload,
                );