Tue Apr 28 22:50:46 2009

Asterisk developer's documentation


res_snmp.c File Reference

SNMP Agent / SubAgent support for Asterisk. More...

#include "asterisk.h"
#include "asterisk/channel.h"
#include "asterisk/module.h"
#include "asterisk/logger.h"
#include "asterisk/options.h"
#include "snmp/agent.h"

Go to the source code of this file.

Defines

#define MODULE_DESCRIPTION   "SNMP [Sub]Agent for Asterisk"

Functions

static void __reg_module (void)
static void __unreg_module (void)
static int load_config (void)
static int load_module (void)
static int unload_module (void)

Variables

static struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_BUILDSUM, .description = "SNMP [Sub]Agent for Asterisk" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "f450f61f60e761b3aa089ebed76ca8a5" , .load = load_module, .unload = unload_module, }
static const struct ast_module_infoast_module_info = &__mod_info
int res_snmp_agentx_subagent
int res_snmp_dont_stop
int res_snmp_enabled
static pthread_t thread = AST_PTHREADT_NULL


Detailed Description

SNMP Agent / SubAgent support for Asterisk.

Author:
Thorsten Lockert <tholo@voop.as>

Definition in file res_snmp.c.


Define Documentation

#define MODULE_DESCRIPTION   "SNMP [Sub]Agent for Asterisk"

Definition at line 32 of file res_snmp.c.


Function Documentation

static void __reg_module ( void   )  [static]

Definition at line 115 of file res_snmp.c.

static void __unreg_module ( void   )  [static]

Definition at line 115 of file res_snmp.c.

static int load_config ( void   )  [static]

Definition at line 40 of file res_snmp.c.

References ast_category_browse(), ast_config_destroy(), ast_config_load(), ast_false(), ast_log(), ast_true(), ast_variable_browse(), LOG_ERROR, LOG_WARNING, and var.

00041 {
00042    struct ast_variable *var;
00043    struct ast_config *cfg;
00044    char *cat;
00045 
00046    res_snmp_enabled = 0;
00047    res_snmp_agentx_subagent = 1;
00048    cfg = ast_config_load("res_snmp.conf");
00049    if (!cfg) {
00050       ast_log(LOG_WARNING, "Could not load res_snmp.conf\n");
00051       return 0;
00052    }
00053    cat = ast_category_browse(cfg, NULL);
00054    while (cat) {
00055       var = ast_variable_browse(cfg, cat);
00056 
00057       if (strcasecmp(cat, "general") == 0) {
00058          while (var) {
00059             if (strcasecmp(var->name, "subagent") == 0) {
00060                if (ast_true(var->value))
00061                   res_snmp_agentx_subagent = 1;
00062                else if (ast_false(var->value))
00063                   res_snmp_agentx_subagent = 0;
00064                else {
00065                   ast_log(LOG_ERROR, "Value '%s' does not evaluate to true or false.\n", var->value);
00066                   ast_config_destroy(cfg);
00067                   return 1;
00068                }
00069             } else if (strcasecmp(var->name, "enabled") == 0) {
00070                res_snmp_enabled = ast_true(var->value);
00071             } else {
00072                ast_log(LOG_ERROR, "Unrecognized variable '%s' in category '%s'\n", var->name, cat);
00073                ast_config_destroy(cfg);
00074                return 1;
00075             }
00076             var = var->next;
00077          }
00078       } else {
00079          ast_log(LOG_ERROR, "Unrecognized category '%s'\n", cat);
00080          ast_config_destroy(cfg);
00081          return 1;
00082       }
00083 
00084       cat = ast_category_browse(cfg, cat);
00085    }
00086    ast_config_destroy(cfg);
00087    return 1;
00088 }

static int load_module ( void   )  [static]

Definition at line 90 of file res_snmp.c.

References AST_MODULE_LOAD_DECLINE, ast_pthread_create_background, ast_verbose(), load_config(), and VERBOSE_PREFIX_1.

00091 {
00092    if(!load_config())
00093       return AST_MODULE_LOAD_DECLINE;
00094 
00095    ast_verbose(VERBOSE_PREFIX_1 "Loading [Sub]Agent Module\n");
00096 
00097    res_snmp_dont_stop = 1;
00098    if (res_snmp_enabled)
00099       return ast_pthread_create_background(&thread, NULL, agent_thread, NULL);
00100    else
00101       return 0;
00102 }

static int unload_module ( void   )  [static]

Definition at line 104 of file res_snmp.c.

References AST_PTHREADT_NULL, ast_verbose(), and VERBOSE_PREFIX_1.

00105 {
00106    ast_verbose(VERBOSE_PREFIX_1 "Unloading [Sub]Agent Module\n");
00107 
00108    res_snmp_dont_stop = 0;
00109    return ((thread != AST_PTHREADT_NULL) ? pthread_join(thread, NULL) : 0);
00110 }


Variable Documentation

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_BUILDSUM, .description = "SNMP [Sub]Agent for Asterisk" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "f450f61f60e761b3aa089ebed76ca8a5" , .load = load_module, .unload = unload_module, } [static]

Definition at line 115 of file res_snmp.c.

const struct ast_module_info* ast_module_info = &__mod_info [static]

Definition at line 115 of file res_snmp.c.

int res_snmp_agentx_subagent

Definition at line 34 of file res_snmp.c.

int res_snmp_dont_stop

Definition at line 35 of file res_snmp.c.

int res_snmp_enabled

Definition at line 36 of file res_snmp.c.

pthread_t thread = AST_PTHREADT_NULL [static]

Definition at line 38 of file res_snmp.c.


Generated on Tue Apr 28 22:50:46 2009 for Asterisk - the Open Source PBX by  doxygen 1.4.7