Thu Apr 28 2011 16:56:50

Asterisk developer's documentation


agent.c File Reference

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

#include "asterisk.h"
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "asterisk/paths.h"
#include "asterisk/channel.h"
#include "asterisk/logger.h"
#include "asterisk/options.h"
#include "asterisk/indications.h"
#include "asterisk/ast_version.h"
#include "asterisk/pbx.h"
#include "asterisk/module.h"
#include "agent.h"
Include dependency graph for agent.c:

Go to the source code of this file.

Defines

#define ASTCHANACCOUNTCODE   18
#define ASTCHANADSI   36
#define ASTCHANAMAFLAGS   35
#define ASTCHANAPP   10
#define ASTCHANBRIDGE   6
#define ASTCHANBRIDGECOUNT   1
#define ASTCHANCALLGROUP   21
#define ASTCHANCIDANI   29
#define ASTCHANCIDANI2   32
#define ASTCHANCIDDNID   26
#define ASTCHANCIDNAME   28
#define ASTCHANCIDNUM   27
#define ASTCHANCIDPRES   31
#define ASTCHANCIDRDNIS   30
#define ASTCHANCIDTNS   34
#define ASTCHANCIDTON   33
#define ASTCHANCONTEXT   12
#define ASTCHANCOUNT   1
#define ASTCHANDATA   11
#define ASTCHANEXTEN   16
#define ASTCHANFLAGS   40
#define ASTCHANFORWARDTO   19
#define ASTCHANHANGUPCAUSE   38
#define ASTCHANINDEX   1
#define ASTCHANLANGUAGE   3
#define ASTCHANMACROCONTEXT   13
#define ASTCHANMACROEXTEN   14
#define ASTCHANMACROPRI   15
#define ASTCHANMASQ   7
#define ASTCHANMASQR   8
#define ASTCHANMUSICCLASS   5
#define ASTCHANMUTED   24
#define ASTCHANNAME   2
#define ASTCHANNELS   5
#define ASTCHANPICKUPGROUP   22
#define ASTCHANPRI   17
#define ASTCHANRINGS   25
#define ASTCHANSCALARS   5
#define ASTCHANSTATE   23
#define ASTCHANTABLE   2
#define ASTCHANTONEZONE   37
#define ASTCHANTRANSFERCAP   41
#define ASTCHANTYPE   4
#define ASTCHANTYPECHANNELS   7
#define ASTCHANTYPECOUNT   3
#define ASTCHANTYPEDESC   3
#define ASTCHANTYPEDEVSTATE   4
#define ASTCHANTYPEINDEX   1
#define ASTCHANTYPEINDICATIONS   5
#define ASTCHANTYPENAME   2
#define ASTCHANTYPETABLE   4
#define ASTCHANTYPETRANSFER   6
#define ASTCHANUNIQUEID   20
#define ASTCHANVARIABLES   39
#define ASTCHANWHENHANGUP   9
#define ASTCONFACTIVECALLS   5
#define ASTCONFIGURATION   2
#define ASTCONFPID   3
#define ASTCONFPROCESSEDCALLS   6
#define ASTCONFRELOADTIME   2
#define ASTCONFSOCKET   4
#define ASTCONFUPTIME   1
#define ASTINDALIAS   3
#define ASTINDCOUNT   1
#define ASTINDCOUNTRY   2
#define ASTINDCURRENT   2
#define ASTINDDESCRIPTION   4
#define ASTINDICATIONS   4
#define ASTINDINDEX   1
#define ASTINDTABLE   3
#define ASTMODCOUNT   1
#define ASTMODULES   3
#define ASTVERSION   1
#define ASTVERSTRING   1
#define ASTVERTAG   2
#define HAVE_DMALLOC_H   0
#define unload_module   ast_unload_module

Functions

void * agent_thread (void *arg)
static u_char * ast_var_channel_bridge (struct variable *vp, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method)
static u_char * ast_var_channel_types (struct variable *vp, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method)
static u_char * ast_var_channel_types_table (struct variable *vp, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method)
static u_char * ast_var_channels (struct variable *vp, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method)
static u_char * ast_var_channels_table (struct variable *vp, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method)
static u_char * ast_var_Config (struct variable *vp, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method)
static u_char * ast_var_indications (struct variable *vp, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method)
static u_char * ast_var_indications_table (struct variable *vp, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method)
static u_char * ast_var_Modules (struct variable *vp, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method)
static u_char * ast_var_Version (struct variable *vp, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method)
static int countmodule (const char *mod, const char *desc, int use, const char *like)
int header_generic (struct variable *, oid *, size_t *, int, size_t *, WriteMethod **)
int header_simple_table (struct variable *, oid *, size_t *, int, size_t *, WriteMethod **, int)
static void init_asterisk_mib (void)
int register_sysORTable (oid *, size_t, const char *)
static int term_asterisk_mib (int majorID, int minorID, void *serverarg, void *clientarg)
int unregister_sysORTable (oid *, size_t)

Variables

static oid asterisk_oid [] = { 1, 3, 6, 1, 4, 1, 22736, 1 }

Detailed Description

SNMP Agent / SubAgent support for Asterisk.

Author:
Thorsten Lockert <tholo@voop.as>

Definition in file agent.c.


Define Documentation

#define ASTCHANACCOUNTCODE   18

Definition at line 142 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANADSI   36

Definition at line 160 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANAMAFLAGS   35

Definition at line 159 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANAPP   10

Definition at line 134 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANBRIDGE   6

Definition at line 130 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANBRIDGECOUNT   1

Definition at line 179 of file agent.c.

Referenced by ast_var_channel_bridge(), and init_asterisk_mib().

#define ASTCHANCALLGROUP   21

Definition at line 145 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANCIDANI   29

Definition at line 153 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANCIDANI2   32

Definition at line 156 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANCIDDNID   26

Definition at line 150 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANCIDNAME   28

Definition at line 152 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANCIDNUM   27

Definition at line 151 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANCIDPRES   31

Definition at line 155 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANCIDRDNIS   30

Definition at line 154 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANCIDTNS   34

Definition at line 158 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANCIDTON   33

Definition at line 157 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANCONTEXT   12

Definition at line 136 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANCOUNT   1

Definition at line 122 of file agent.c.

Referenced by ast_var_channels(), and init_asterisk_mib().

#define ASTCHANDATA   11

Definition at line 135 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANEXTEN   16

Definition at line 140 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANFLAGS   40

Definition at line 164 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANFORWARDTO   19

Definition at line 143 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANHANGUPCAUSE   38

Definition at line 162 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANINDEX   1

Definition at line 125 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANLANGUAGE   3

Definition at line 127 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANMACROCONTEXT   13

Definition at line 137 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANMACROEXTEN   14

Definition at line 138 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANMACROPRI   15

Definition at line 139 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANMASQ   7

Definition at line 131 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANMASQR   8

Definition at line 132 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANMUSICCLASS   5

Definition at line 129 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANMUTED   24

Definition at line 148 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANNAME   2

Definition at line 126 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANNELS   5

Definition at line 121 of file agent.c.

Referenced by init_asterisk_mib().

#define ASTCHANPICKUPGROUP   22

Definition at line 146 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANPRI   17

Definition at line 141 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANRINGS   25

Definition at line 149 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANSCALARS   5

Definition at line 178 of file agent.c.

Referenced by init_asterisk_mib().

#define ASTCHANSTATE   23

Definition at line 147 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANTABLE   2

Definition at line 124 of file agent.c.

Referenced by init_asterisk_mib().

#define ASTCHANTONEZONE   37

Definition at line 161 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANTRANSFERCAP   41

Definition at line 165 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANTYPE   4

Definition at line 128 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANTYPECHANNELS   7

Definition at line 176 of file agent.c.

Referenced by ast_var_channel_types_table(), and init_asterisk_mib().

#define ASTCHANTYPECOUNT   3

Definition at line 167 of file agent.c.

Referenced by ast_var_channel_types(), and init_asterisk_mib().

#define ASTCHANTYPEDESC   3

Definition at line 172 of file agent.c.

Referenced by ast_var_channel_types_table(), and init_asterisk_mib().

#define ASTCHANTYPEDEVSTATE   4

Definition at line 173 of file agent.c.

Referenced by ast_var_channel_types_table(), and init_asterisk_mib().

#define ASTCHANTYPEINDEX   1

Definition at line 170 of file agent.c.

Referenced by ast_var_channel_types_table(), and init_asterisk_mib().

#define ASTCHANTYPEINDICATIONS   5

Definition at line 174 of file agent.c.

Referenced by ast_var_channel_types_table(), and init_asterisk_mib().

#define ASTCHANTYPENAME   2

Definition at line 171 of file agent.c.

Referenced by ast_var_channel_types_table(), and init_asterisk_mib().

#define ASTCHANTYPETABLE   4

Definition at line 169 of file agent.c.

Referenced by init_asterisk_mib().

#define ASTCHANTYPETRANSFER   6

Definition at line 175 of file agent.c.

Referenced by ast_var_channel_types_table(), and init_asterisk_mib().

#define ASTCHANUNIQUEID   20

Definition at line 144 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANVARIABLES   39

Definition at line 163 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCHANWHENHANGUP   9

Definition at line 133 of file agent.c.

Referenced by ast_var_channels_table(), and init_asterisk_mib().

#define ASTCONFACTIVECALLS   5

Definition at line 105 of file agent.c.

Referenced by ast_var_Config(), and init_asterisk_mib().

#define ASTCONFIGURATION   2

Definition at line 100 of file agent.c.

Referenced by init_asterisk_mib().

#define ASTCONFPID   3

Definition at line 103 of file agent.c.

Referenced by ast_var_Config(), and init_asterisk_mib().

#define ASTCONFPROCESSEDCALLS   6

Definition at line 106 of file agent.c.

Referenced by ast_var_Config(), and init_asterisk_mib().

#define ASTCONFRELOADTIME   2

Definition at line 102 of file agent.c.

Referenced by ast_var_Config(), and init_asterisk_mib().

#define ASTCONFSOCKET   4

Definition at line 104 of file agent.c.

Referenced by ast_var_Config(), and init_asterisk_mib().

#define ASTCONFUPTIME   1

Definition at line 101 of file agent.c.

Referenced by ast_var_Config(), and init_asterisk_mib().

#define ASTINDALIAS   3

Definition at line 118 of file agent.c.

Referenced by ast_var_indications_table(), and init_asterisk_mib().

#define ASTINDCOUNT   1

Definition at line 112 of file agent.c.

Referenced by ast_var_indications(), and init_asterisk_mib().

#define ASTINDCOUNTRY   2

Definition at line 117 of file agent.c.

Referenced by ast_var_indications_table(), and init_asterisk_mib().

#define ASTINDCURRENT   2

Definition at line 113 of file agent.c.

Referenced by ast_var_indications(), and init_asterisk_mib().

#define ASTINDDESCRIPTION   4

Definition at line 119 of file agent.c.

Referenced by ast_var_indications_table(), and init_asterisk_mib().

#define ASTINDICATIONS   4

Definition at line 111 of file agent.c.

Referenced by init_asterisk_mib().

#define ASTINDINDEX   1

Definition at line 116 of file agent.c.

Referenced by ast_var_indications_table(), and init_asterisk_mib().

#define ASTINDTABLE   3

Definition at line 115 of file agent.c.

Referenced by init_asterisk_mib().

#define ASTMODCOUNT   1

Definition at line 109 of file agent.c.

Referenced by ast_var_Modules(), and init_asterisk_mib().

#define ASTMODULES   3

Definition at line 108 of file agent.c.

Referenced by init_asterisk_mib().

#define ASTVERSION   1

Definition at line 96 of file agent.c.

Referenced by init_asterisk_mib().

#define ASTVERSTRING   1

Definition at line 97 of file agent.c.

Referenced by ast_var_Version(), and init_asterisk_mib().

#define ASTVERTAG   2

Definition at line 98 of file agent.c.

Referenced by ast_var_Version(), and init_asterisk_mib().

#define HAVE_DMALLOC_H   0

Definition at line 47 of file agent.c.

#define unload_module   ast_unload_module

Definition at line 71 of file agent.c.


Function Documentation

void* agent_thread ( void *  arg)

Definition at line 181 of file agent.c.

References ast_verb, init_asterisk_mib(), res_snmp_agentx_subagent, and res_snmp_dont_stop.

Referenced by load_module().

{
   ast_verb(2, "Starting %sAgent\n", res_snmp_agentx_subagent ? "Sub" : "");

   snmp_enable_stderrlog();

   if (res_snmp_agentx_subagent)
      netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
                        NETSNMP_DS_AGENT_ROLE,
                        1);

   init_agent("asterisk");

   init_asterisk_mib();

   init_snmp("asterisk");

   if (!res_snmp_agentx_subagent)
      init_master_agent();

   while (res_snmp_dont_stop)
      agent_check_and_process(1);

   snmp_shutdown("asterisk");

   ast_verb(2, "Terminating %sAgent\n", res_snmp_agentx_subagent ? "Sub" : "");

   return NULL;
}
static u_char* ast_var_channel_bridge ( struct variable *  vp,
oid *  name,
size_t *  length,
int  exact,
size_t *  var_len,
WriteMethod **  write_method 
) [static]

Definition at line 583 of file agent.c.

References ast_bridged_channel(), ast_channel_unlock, ast_channel_walk_locked(), ASTCHANBRIDGECOUNT, chan, and header_generic().

Referenced by init_asterisk_mib().

{
   static unsigned long long_ret;
   struct ast_channel *chan = NULL;

   long_ret = 0;
   if (header_generic(vp, name, length, exact, var_len, write_method))
      return NULL;

   while ((chan = ast_channel_walk_locked(chan))) {
      if (ast_bridged_channel(chan))
         long_ret++;
      ast_channel_unlock(chan);
   }

   *var_len = sizeof(long_ret);

   return (vp->magic == ASTCHANBRIDGECOUNT) ? (u_char *) &long_ret : NULL;
}
static u_char* ast_var_channel_types ( struct variable *  vp,
oid *  name,
size_t *  length,
int  exact,
size_t *  var_len,
WriteMethod **  write_method 
) [static]

Definition at line 510 of file agent.c.

References ast_channeltype_list(), ast_variables_destroy(), ASTCHANTYPECOUNT, header_generic(), and ast_variable::next.

Referenced by init_asterisk_mib().

{
   static unsigned long long_ret;
   struct ast_variable *channel_types, *next;

   if (header_generic(vp, name, length, exact, var_len, write_method))
      return NULL;

   if (vp->magic != ASTCHANTYPECOUNT)
      return NULL;

   for (long_ret = 0, channel_types = next = ast_channeltype_list(); next; next = next->next)
      long_ret++;
   ast_variables_destroy(channel_types);

   return (u_char *)&long_ret;
}
static u_char* ast_var_channel_types_table ( struct variable *  vp,
oid *  name,
size_t *  length,
int  exact,
size_t *  var_len,
WriteMethod **  write_method 
) [static]

Definition at line 529 of file agent.c.

References ast_channel_unlock, ast_channel_walk_locked(), ast_channeltype_list(), ast_get_channel_tech(), ast_variables_destroy(), ASTCHANTYPECHANNELS, ASTCHANTYPEDESC, ASTCHANTYPEDEVSTATE, ASTCHANTYPEINDEX, ASTCHANTYPEINDICATIONS, ASTCHANTYPENAME, ASTCHANTYPETRANSFER, chan, ast_channel_tech::description, ast_channel_tech::devicestate, header_simple_table(), ast_channel_tech::indicate, ast_variable::name, ast_variable::next, ast_channel::tech, ast_channel_tech::transfer, and ast_channel_tech::type.

Referenced by init_asterisk_mib().

{
   const struct ast_channel_tech *tech = NULL;
   struct ast_variable *channel_types, *next;
   static unsigned long long_ret;
   struct ast_channel *chan;
   u_long i;

   if (header_simple_table(vp, name, length, exact, var_len, write_method, -1))
      return NULL;

   channel_types = ast_channeltype_list();
   for (i = 1, next = channel_types; next && i != name[*length - 1]; next = next->next, i++)
      ;
   if (next != NULL)
      tech = ast_get_channel_tech(next->name);
   ast_variables_destroy(channel_types);
   if (next == NULL || tech == NULL)
      return NULL;
   
   switch (vp->magic) {
   case ASTCHANTYPEINDEX:
      long_ret = name[*length - 1];
      return (u_char *)&long_ret;
   case ASTCHANTYPENAME:
      *var_len = strlen(tech->type);
      return (u_char *)tech->type;
   case ASTCHANTYPEDESC:
      *var_len = strlen(tech->description);
      return (u_char *)tech->description;
   case ASTCHANTYPEDEVSTATE:
      long_ret = tech->devicestate ? 1 : 2;
      return (u_char *)&long_ret;
   case ASTCHANTYPEINDICATIONS:
      long_ret = tech->indicate ? 1 : 2;
      return (u_char *)&long_ret;
   case ASTCHANTYPETRANSFER:
      long_ret = tech->transfer ? 1 : 2;
      return (u_char *)&long_ret;
   case ASTCHANTYPECHANNELS:
      long_ret = 0;
      for (chan = ast_channel_walk_locked(NULL); chan; chan = ast_channel_walk_locked(chan)) {
         if (chan->tech == tech)
            long_ret++;
         ast_channel_unlock(chan);
      }
      return (u_char *)&long_ret;
   default:
      break;
   }
   return NULL;
}
static u_char* ast_var_channels ( struct variable *  vp,
oid *  name,
size_t *  length,
int  exact,
size_t *  var_len,
WriteMethod **  write_method 
) [static]

Definition at line 212 of file agent.c.

References ast_active_channels(), ASTCHANCOUNT, and header_generic().

Referenced by init_asterisk_mib().

{
   static unsigned long long_ret;

   if (header_generic(vp, name, length, exact, var_len, write_method))
      return NULL;

   if (vp->magic != ASTCHANCOUNT)
      return NULL;

   long_ret = ast_active_channels();

   return (u_char *)&long_ret;
}
static u_char* ast_var_channels_table ( struct variable *  vp,
oid *  name,
size_t *  length,
int  exact,
size_t *  var_len,
WriteMethod **  write_method 
) [static]

Definition at line 228 of file agent.c.

References ast_channel::_state, ast_channel::accountcode, ast_channel::adsicpe, ast_channel::amaflags, ast_channel::appl, ast_active_channels(), ast_bridged_channel(), ast_channel_unlock, ast_channel_walk_locked(), AST_STATE_MUTE, ast_str_alloca, ast_str_buffer(), ast_str_strlen(), ast_strlen_zero(), ast_tvzero(), ASTCHANACCOUNTCODE, ASTCHANADSI, ASTCHANAMAFLAGS, ASTCHANAPP, ASTCHANBRIDGE, ASTCHANCALLGROUP, ASTCHANCIDANI, ASTCHANCIDANI2, ASTCHANCIDDNID, ASTCHANCIDNAME, ASTCHANCIDNUM, ASTCHANCIDPRES, ASTCHANCIDRDNIS, ASTCHANCIDTNS, ASTCHANCIDTON, ASTCHANCONTEXT, ASTCHANDATA, ASTCHANEXTEN, ASTCHANFLAGS, ASTCHANFORWARDTO, ASTCHANHANGUPCAUSE, ASTCHANINDEX, ASTCHANLANGUAGE, ASTCHANMACROCONTEXT, ASTCHANMACROEXTEN, ASTCHANMACROPRI, ASTCHANMASQ, ASTCHANMASQR, ASTCHANMUSICCLASS, ASTCHANMUTED, ASTCHANNAME, ASTCHANPICKUPGROUP, ASTCHANPRI, ASTCHANRINGS, ASTCHANSTATE, ASTCHANTONEZONE, ASTCHANTRANSFERCAP, ASTCHANTYPE, ASTCHANUNIQUEID, ASTCHANVARIABLES, ASTCHANWHENHANGUP, ast_channel::bridge, ast_channel::call_forward, ast_channel::callgroup, chan, ast_channel::cid, ast_callerid::cid_ani, ast_callerid::cid_ani2, ast_callerid::cid_dnid, ast_callerid::cid_name, ast_callerid::cid_num, ast_callerid::cid_pres, ast_callerid::cid_rdnis, ast_callerid::cid_tns, ast_callerid::cid_ton, ast_channel::context, ast_tone_zone::country, ast_channel::data, ast_channel::exten, ast_channel::flags, ast_channel::hangupcause, header_simple_table(), ast_channel::language, ast_channel::macrocontext, ast_channel::macroexten, ast_channel::macropriority, ast_channel::masq, ast_channel::masqr, ast_channel::musicclass, ast_channel::name, pbx_builtin_serialize_variables(), ast_channel::pickupgroup, ast_channel::priority, ast_channel::rings, ast_channel::tech, ast_channel::transfercapability, ast_channel_tech::type, ast_channel::uniqueid, ast_channel::whentohangup, and ast_channel::zone.

Referenced by init_asterisk_mib().

{
   static unsigned long long_ret;
   static u_char bits_ret[2];
   static char string_ret[256];
   struct ast_channel *chan, *bridge;
   struct timeval tval;
   u_char *ret = NULL;
   int i, bit;
   struct ast_str *out = ast_str_alloca(2048);

   if (header_simple_table(vp, name, length, exact, var_len, write_method, ast_active_channels()))
      return NULL;

   i = name[*length - 1] - 1;
   for (chan = ast_channel_walk_locked(NULL);
       chan && i;
       chan = ast_channel_walk_locked(chan), i--)
      ast_channel_unlock(chan);
   if (chan == NULL)
      return NULL;
   *var_len = sizeof(long_ret);

   switch (vp->magic) {
   case ASTCHANINDEX:
      long_ret = name[*length - 1];
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANNAME:
      if (!ast_strlen_zero(chan->name)) {
         strncpy(string_ret, chan->name, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANLANGUAGE:
      if (!ast_strlen_zero(chan->language)) {
         strncpy(string_ret, chan->language, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANTYPE:
      strncpy(string_ret, chan->tech->type, sizeof(string_ret));
      string_ret[sizeof(string_ret) - 1] = '\0';
      *var_len = strlen(string_ret);
      ret = (u_char *)string_ret;
      break;
   case ASTCHANMUSICCLASS:
      if (!ast_strlen_zero(chan->musicclass)) {
         strncpy(string_ret, chan->musicclass, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANBRIDGE:
      if ((bridge = ast_bridged_channel(chan)) != NULL) {
         strncpy(string_ret, bridge->name, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANMASQ:
      if (chan->masq && !ast_strlen_zero(chan->masq->name)) {
         strncpy(string_ret, chan->masq->name, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANMASQR:
      if (chan->masqr && !ast_strlen_zero(chan->masqr->name)) {
         strncpy(string_ret, chan->masqr->name, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANWHENHANGUP:
      if (!ast_tvzero(chan->whentohangup)) {
         gettimeofday(&tval, NULL);
         long_ret = difftime(chan->whentohangup.tv_sec, tval.tv_sec) * 100 - tval.tv_usec / 10000;
         ret= (u_char *)&long_ret;
      }
      break;
   case ASTCHANAPP:
      if (chan->appl) {
         strncpy(string_ret, chan->appl, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANDATA:
      if (chan->data) {
         strncpy(string_ret, chan->data, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANCONTEXT:
      strncpy(string_ret, chan->context, sizeof(string_ret));
      string_ret[sizeof(string_ret) - 1] = '\0';
      *var_len = strlen(string_ret);
      ret = (u_char *)string_ret;
      break;
   case ASTCHANMACROCONTEXT:
      strncpy(string_ret, chan->macrocontext, sizeof(string_ret));
      string_ret[sizeof(string_ret) - 1] = '\0';
      *var_len = strlen(string_ret);
      ret = (u_char *)string_ret;
      break;
   case ASTCHANMACROEXTEN:
      strncpy(string_ret, chan->macroexten, sizeof(string_ret));
      string_ret[sizeof(string_ret) - 1] = '\0';
      *var_len = strlen(string_ret);
      ret = (u_char *)string_ret;
      break;
   case ASTCHANMACROPRI:
      long_ret = chan->macropriority;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANEXTEN:
      strncpy(string_ret, chan->exten, sizeof(string_ret));
      string_ret[sizeof(string_ret) - 1] = '\0';
      *var_len = strlen(string_ret);
      ret = (u_char *)string_ret;
      break;
   case ASTCHANPRI:
      long_ret = chan->priority;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANACCOUNTCODE:
      if (!ast_strlen_zero(chan->accountcode)) {
         strncpy(string_ret, chan->accountcode, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANFORWARDTO:
      if (!ast_strlen_zero(chan->call_forward)) {
         strncpy(string_ret, chan->call_forward, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANUNIQUEID:
      strncpy(string_ret, chan->uniqueid, sizeof(string_ret));
      string_ret[sizeof(string_ret) - 1] = '\0';
      *var_len = strlen(string_ret);
      ret = (u_char *)string_ret;
      break;
   case ASTCHANCALLGROUP:
      long_ret = chan->callgroup;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANPICKUPGROUP:
      long_ret = chan->pickupgroup;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANSTATE:
      long_ret = chan->_state & 0xffff;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANMUTED:
      long_ret = chan->_state & AST_STATE_MUTE ? 1 : 2;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANRINGS:
      long_ret = chan->rings;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANCIDDNID:
      if (chan->cid.cid_dnid) {
         strncpy(string_ret, chan->cid.cid_dnid, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANCIDNUM:
      if (chan->cid.cid_num) {
         strncpy(string_ret, chan->cid.cid_num, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANCIDNAME:
      if (chan->cid.cid_name) {
         strncpy(string_ret, chan->cid.cid_name, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANCIDANI:
      if (chan->cid.cid_ani) {
         strncpy(string_ret, chan->cid.cid_ani, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANCIDRDNIS:
      if (chan->cid.cid_rdnis) {
         strncpy(string_ret, chan->cid.cid_rdnis, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANCIDPRES:
      long_ret = chan->cid.cid_pres;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANCIDANI2:
      long_ret = chan->cid.cid_ani2;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANCIDTON:
      long_ret = chan->cid.cid_ton;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANCIDTNS:
      long_ret = chan->cid.cid_tns;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANAMAFLAGS:
      long_ret = chan->amaflags;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANADSI:
      long_ret = chan->adsicpe;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANTONEZONE:
      if (chan->zone) {
         strncpy(string_ret, chan->zone->country, sizeof(string_ret));
         string_ret[sizeof(string_ret) - 1] = '\0';
         *var_len = strlen(string_ret);
         ret = (u_char *)string_ret;
      }
      break;
   case ASTCHANHANGUPCAUSE:
      long_ret = chan->hangupcause;
      ret = (u_char *)&long_ret;
      break;
   case ASTCHANVARIABLES:
      if (pbx_builtin_serialize_variables(chan, &out)) {
         *var_len = ast_str_strlen(out);
         ret = (u_char *)ast_str_buffer(out);
      }
      break;
   case ASTCHANFLAGS:
      bits_ret[0] = 0;
      for (bit = 0; bit < 8; bit++)
         bits_ret[0] |= ((chan->flags & (1 << bit)) >> bit) << (7 - bit);
      bits_ret[1] = 0;
      for (bit = 0; bit < 8; bit++)
         bits_ret[1] |= (((chan->flags >> 8) & (1 << bit)) >> bit) << (7 - bit);
      *var_len = 2;
      ret = bits_ret;
      break;
   case ASTCHANTRANSFERCAP:
      long_ret = chan->transfercapability;
      ret = (u_char *)&long_ret;
   default:
      break;
   }
   ast_channel_unlock(chan);
   return ret;
}
static u_char* ast_var_Config ( struct variable *  vp,
oid *  name,
size_t *  length,
int  exact,
size_t *  var_len,
WriteMethod **  write_method 
) [static]

Definition at line 604 of file agent.c.

References ast_active_calls(), ast_config_AST_SOCKET, ast_lastreloadtime, ast_processed_calls(), ast_startuptime, ASTCONFACTIVECALLS, ASTCONFPID, ASTCONFPROCESSEDCALLS, ASTCONFRELOADTIME, ASTCONFSOCKET, ASTCONFUPTIME, and header_generic().

Referenced by init_asterisk_mib().

{
   static unsigned long long_ret;
   struct timeval tval;

   if (header_generic(vp, name, length, exact, var_len, write_method))
      return NULL;

   switch (vp->magic) {
   case ASTCONFUPTIME:
      gettimeofday(&tval, NULL);
      long_ret = difftime(tval.tv_sec, ast_startuptime.tv_sec) * 100 + tval.tv_usec / 10000 - ast_startuptime.tv_usec / 10000;
      return (u_char *)&long_ret;
   case ASTCONFRELOADTIME:
      gettimeofday(&tval, NULL);
      if (ast_lastreloadtime.tv_sec)
         long_ret = difftime(tval.tv_sec, ast_lastreloadtime.tv_sec) * 100 + tval.tv_usec / 10000 - ast_lastreloadtime.tv_usec / 10000;
      else
         long_ret = difftime(tval.tv_sec, ast_startuptime.tv_sec) * 100 + tval.tv_usec / 10000 - ast_startuptime.tv_usec / 10000;
      return (u_char *)&long_ret;
   case ASTCONFPID:
      long_ret = getpid();
      return (u_char *)&long_ret;
   case ASTCONFSOCKET:
      *var_len = strlen(ast_config_AST_SOCKET);
      return (u_char *)ast_config_AST_SOCKET;
   case ASTCONFACTIVECALLS:
      long_ret = ast_active_calls();
      return (u_char *)&long_ret;
   case ASTCONFPROCESSEDCALLS:
      long_ret = ast_processed_calls();
      return (u_char *)&long_ret;
   default:
      break;
   }
   return NULL;
}
static u_char* ast_var_indications ( struct variable *  vp,
oid *  name,
size_t *  length,
int  exact,
size_t *  var_len,
WriteMethod **  write_method 
) [static]

Definition at line 643 of file agent.c.

References ao2_iterator_next, ast_copy_string(), ast_get_indication_zone(), ast_tone_zone_iterator_init(), ast_tone_zone_unref(), ASTINDCOUNT, ASTINDCURRENT, ast_tone_zone::country, and header_generic().

Referenced by init_asterisk_mib().

{
   static unsigned long long_ret;
   static char ret_buf[128];
   struct ast_tone_zone *tz = NULL;

   if (header_generic(vp, name, length, exact, var_len, write_method))
      return NULL;

   switch (vp->magic) {
   case ASTINDCOUNT:
   {
      struct ao2_iterator i;

      long_ret = 0;

      i = ast_tone_zone_iterator_init();
      while ((tz = ao2_iterator_next(&i))) {
         tz = ast_tone_zone_unref(tz);
         long_ret++;
      }

      return (u_char *) &long_ret;
   }
   case ASTINDCURRENT:
      tz = ast_get_indication_zone(NULL);
      if (tz) {
         ast_copy_string(ret_buf, tz->country, sizeof(ret_buf));
         *var_len = strlen(ret_buf);
         tz = ast_tone_zone_unref(tz);
         return (u_char *) ret_buf;
      }
      *var_len = 0;
      return NULL;
   default:
      break;
   }
   return NULL;
}
static u_char* ast_var_indications_table ( struct variable *  vp,
oid *  name,
size_t *  length,
int  exact,
size_t *  var_len,
WriteMethod **  write_method 
) [static]

Definition at line 684 of file agent.c.

References ao2_iterator_next, ast_copy_string(), ast_tone_zone_iterator_init(), ast_tone_zone_lock, ast_tone_zone_unlock, ast_tone_zone_unref(), ASTINDALIAS, ASTINDCOUNTRY, ASTINDDESCRIPTION, ASTINDINDEX, ast_tone_zone::country, ast_tone_zone::description, and header_simple_table().

Referenced by init_asterisk_mib().

{
   static unsigned long long_ret;
   static char ret_buf[256];
   struct ast_tone_zone *tz = NULL;
   int i;
   struct ao2_iterator iter;

   if (header_simple_table(vp, name, length, exact, var_len, write_method, -1)) {
      return NULL;
   }

   i = name[*length - 1] - 1;

   iter = ast_tone_zone_iterator_init();

   while ((tz = ao2_iterator_next(&iter)) && i) {
      tz = ast_tone_zone_unref(tz);
      i--;
   }

   if (tz == NULL) {
      return NULL;
   }

   switch (vp->magic) {
   case ASTINDINDEX:
      long_ret = name[*length - 1];
      return (u_char *)&long_ret;
   case ASTINDCOUNTRY:
      ast_copy_string(ret_buf, tz->country, sizeof(ret_buf));
      tz = ast_tone_zone_unref(tz);
      *var_len = strlen(ret_buf);
      return (u_char *) ret_buf;
   case ASTINDALIAS:
      /* No longer exists */
      return NULL;
   case ASTINDDESCRIPTION:
      ast_tone_zone_lock(tz);
      ast_copy_string(ret_buf, tz->description, sizeof(ret_buf));
      ast_tone_zone_unlock(tz);
      tz = ast_tone_zone_unref(tz);
      *var_len = strlen(ret_buf);
      return (u_char *) ret_buf;
   default:
      break;
   }
   return NULL;
}
static u_char* ast_var_Modules ( struct variable *  vp,
oid *  name,
size_t *  length,
int  exact,
size_t *  var_len,
WriteMethod **  write_method 
) [static]

Definition at line 740 of file agent.c.

References ast_update_module_list(), ASTMODCOUNT, countmodule(), and header_generic().

Referenced by init_asterisk_mib().

{
   static unsigned long long_ret;

   if (header_generic(vp, name, length, exact, var_len, write_method))
      return NULL;

   if (vp->magic != ASTMODCOUNT)
      return NULL;

   long_ret = ast_update_module_list(countmodule, NULL);

   return (u_char *)&long_ret;
}
static u_char* ast_var_Version ( struct variable *  vp,
oid *  name,
size_t *  length,
int  exact,
size_t *  var_len,
WriteMethod **  write_method 
) [static]

Definition at line 756 of file agent.c.

References ast_get_version(), ast_get_version_num(), ASTVERSTRING, ASTVERTAG, header_generic(), and version.

Referenced by init_asterisk_mib().

{
   static unsigned long long_ret;

   if (header_generic(vp, name, length, exact, var_len, write_method))
      return NULL;

   switch (vp->magic) {
   case ASTVERSTRING:
   {
      const char *version = ast_get_version();
      *var_len = strlen(version);
      return (u_char *)version;
   }
   case ASTVERTAG:
      sscanf(ast_get_version_num(), "%30lu", &long_ret);
      return (u_char *)&long_ret;
   default:
      break;
   }
   return NULL;
}
static int countmodule ( const char *  mod,
const char *  desc,
int  use,
const char *  like 
) [static]

Definition at line 735 of file agent.c.

Referenced by ast_var_Modules().

{
   return 1;
}
int header_generic ( struct variable *  ,
oid *  ,
size_t *  ,
int  ,
size_t *  ,
WriteMethod **   
)
int header_simple_table ( struct variable *  ,
oid *  ,
size_t *  ,
int  ,
size_t *  ,
WriteMethod **  ,
int   
)
static void init_asterisk_mib ( void  ) [static]

Definition at line 786 of file agent.c.

References ast_var_channel_bridge(), ast_var_channel_types(), ast_var_channel_types_table(), ast_var_channels(), ast_var_channels_table(), ast_var_Config(), ast_var_indications(), ast_var_indications_table(), ast_var_Modules(), ast_var_Version(), ASTCHANACCOUNTCODE, ASTCHANADSI, ASTCHANAMAFLAGS, ASTCHANAPP, ASTCHANBRIDGE, ASTCHANBRIDGECOUNT, ASTCHANCALLGROUP, ASTCHANCIDANI, ASTCHANCIDANI2, ASTCHANCIDDNID, ASTCHANCIDNAME, ASTCHANCIDNUM, ASTCHANCIDPRES, ASTCHANCIDRDNIS, ASTCHANCIDTNS, ASTCHANCIDTON, ASTCHANCONTEXT, ASTCHANCOUNT, ASTCHANDATA, ASTCHANEXTEN, ASTCHANFLAGS, ASTCHANFORWARDTO, ASTCHANHANGUPCAUSE, ASTCHANINDEX, ASTCHANLANGUAGE, ASTCHANMACROCONTEXT, ASTCHANMACROEXTEN, ASTCHANMACROPRI, ASTCHANMASQ, ASTCHANMASQR, ASTCHANMUSICCLASS, ASTCHANMUTED, ASTCHANNAME, ASTCHANNELS, ASTCHANPICKUPGROUP, ASTCHANPRI, ASTCHANRINGS, ASTCHANSCALARS, ASTCHANSTATE, ASTCHANTABLE, ASTCHANTONEZONE, ASTCHANTRANSFERCAP, ASTCHANTYPE, ASTCHANTYPECHANNELS, ASTCHANTYPECOUNT, ASTCHANTYPEDESC, ASTCHANTYPEDEVSTATE, ASTCHANTYPEINDEX, ASTCHANTYPEINDICATIONS, ASTCHANTYPENAME, ASTCHANTYPETABLE, ASTCHANTYPETRANSFER, ASTCHANUNIQUEID, ASTCHANVARIABLES, ASTCHANWHENHANGUP, ASTCONFACTIVECALLS, ASTCONFIGURATION, ASTCONFPID, ASTCONFPROCESSEDCALLS, ASTCONFRELOADTIME, ASTCONFSOCKET, ASTCONFUPTIME, ASTINDALIAS, ASTINDCOUNT, ASTINDCOUNTRY, ASTINDCURRENT, ASTINDDESCRIPTION, ASTINDICATIONS, ASTINDINDEX, ASTINDTABLE, ASTMODCOUNT, ASTMODULES, ASTVERSION, ASTVERSTRING, ASTVERTAG, register_sysORTable(), and term_asterisk_mib().

Referenced by agent_thread().

{
   static struct variable4 asterisk_vars[] = {
      {ASTVERSTRING,           ASN_OCTET_STR, RONLY, ast_var_Version,             2, {ASTVERSION, ASTVERSTRING}},
      {ASTVERTAG,              ASN_UNSIGNED,  RONLY, ast_var_Version,             2, {ASTVERSION, ASTVERTAG}},
      {ASTCONFUPTIME,          ASN_TIMETICKS, RONLY, ast_var_Config,              2, {ASTCONFIGURATION, ASTCONFUPTIME}},
      {ASTCONFRELOADTIME,      ASN_TIMETICKS, RONLY, ast_var_Config,              2, {ASTCONFIGURATION, ASTCONFRELOADTIME}},
      {ASTCONFPID,             ASN_INTEGER,   RONLY, ast_var_Config,              2, {ASTCONFIGURATION, ASTCONFPID}},
      {ASTCONFSOCKET,          ASN_OCTET_STR, RONLY, ast_var_Config,              2, {ASTCONFIGURATION, ASTCONFSOCKET}},
      {ASTCONFACTIVECALLS,     ASN_GAUGE,    RONLY, ast_var_Config,              2, {ASTCONFIGURATION, ASTCONFACTIVECALLS}},
      {ASTCONFPROCESSEDCALLS,  ASN_COUNTER,   RONLY, ast_var_Config,              2, {ASTCONFIGURATION, ASTCONFPROCESSEDCALLS}},
      {ASTMODCOUNT,            ASN_INTEGER,   RONLY, ast_var_Modules ,            2, {ASTMODULES, ASTMODCOUNT}},
      {ASTINDCOUNT,            ASN_INTEGER,   RONLY, ast_var_indications,         2, {ASTINDICATIONS, ASTINDCOUNT}},
      {ASTINDCURRENT,          ASN_OCTET_STR, RONLY, ast_var_indications,         2, {ASTINDICATIONS, ASTINDCURRENT}},
      {ASTINDINDEX,            ASN_INTEGER,   RONLY, ast_var_indications_table,   4, {ASTINDICATIONS, ASTINDTABLE, 1, ASTINDINDEX}},
      {ASTINDCOUNTRY,          ASN_OCTET_STR, RONLY, ast_var_indications_table,   4, {ASTINDICATIONS, ASTINDTABLE, 1, ASTINDCOUNTRY}},
      {ASTINDALIAS,            ASN_OCTET_STR, RONLY, ast_var_indications_table,   4, {ASTINDICATIONS, ASTINDTABLE, 1, ASTINDALIAS}},
      {ASTINDDESCRIPTION,      ASN_OCTET_STR, RONLY, ast_var_indications_table,   4, {ASTINDICATIONS, ASTINDTABLE, 1, ASTINDDESCRIPTION}},
      {ASTCHANCOUNT,           ASN_GAUGE,     RONLY, ast_var_channels,            2, {ASTCHANNELS, ASTCHANCOUNT}},
      {ASTCHANINDEX,           ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANINDEX}},
      {ASTCHANNAME,            ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANNAME}},
      {ASTCHANLANGUAGE,        ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANLANGUAGE}},
      {ASTCHANTYPE,            ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANTYPE}},
      {ASTCHANMUSICCLASS,      ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANMUSICCLASS}},
      {ASTCHANBRIDGE,          ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANBRIDGE}},
      {ASTCHANMASQ,            ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANMASQ}},
      {ASTCHANMASQR,           ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANMASQR}},
      {ASTCHANWHENHANGUP,      ASN_TIMETICKS, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANWHENHANGUP}},
      {ASTCHANAPP,             ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANAPP}},
      {ASTCHANDATA,            ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANDATA}},
      {ASTCHANCONTEXT,         ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANCONTEXT}},
      {ASTCHANMACROCONTEXT,    ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANMACROCONTEXT}},
      {ASTCHANMACROEXTEN,      ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANMACROEXTEN}},
      {ASTCHANMACROPRI,        ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANMACROPRI}},
      {ASTCHANEXTEN,           ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANEXTEN}},
      {ASTCHANPRI,             ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANPRI}},
      {ASTCHANACCOUNTCODE,     ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANACCOUNTCODE}},
      {ASTCHANFORWARDTO,       ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANFORWARDTO}},
      {ASTCHANUNIQUEID,        ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANUNIQUEID}},
      {ASTCHANCALLGROUP,       ASN_UNSIGNED,  RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANCALLGROUP}},
      {ASTCHANPICKUPGROUP,     ASN_UNSIGNED,  RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANPICKUPGROUP}},
      {ASTCHANSTATE,           ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANSTATE}},
      {ASTCHANMUTED,           ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANMUTED}},
      {ASTCHANRINGS,           ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANRINGS}},
      {ASTCHANCIDDNID,         ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANCIDDNID}},
      {ASTCHANCIDNUM,          ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANCIDNUM}},
      {ASTCHANCIDNAME,         ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANCIDNAME}},
      {ASTCHANCIDANI,          ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANCIDANI}},
      {ASTCHANCIDRDNIS,        ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANCIDRDNIS}},
      {ASTCHANCIDPRES,         ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANCIDPRES}},
      {ASTCHANCIDANI2,         ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANCIDANI2}},
      {ASTCHANCIDTON,          ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANCIDTON}},
      {ASTCHANCIDTNS,          ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANCIDTNS}},
      {ASTCHANAMAFLAGS,        ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANAMAFLAGS}},
      {ASTCHANADSI,            ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANADSI}},
      {ASTCHANTONEZONE,        ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANTONEZONE}},
      {ASTCHANHANGUPCAUSE,     ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANHANGUPCAUSE}},
      {ASTCHANVARIABLES,       ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANVARIABLES}},
      {ASTCHANFLAGS,           ASN_OCTET_STR, RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANFLAGS}},
      {ASTCHANTRANSFERCAP,     ASN_INTEGER,   RONLY, ast_var_channels_table,      4, {ASTCHANNELS, ASTCHANTABLE, 1, ASTCHANTRANSFERCAP}},
      {ASTCHANTYPECOUNT,       ASN_INTEGER,   RONLY, ast_var_channel_types,       2, {ASTCHANNELS, ASTCHANTYPECOUNT}},
      {ASTCHANTYPEINDEX,       ASN_INTEGER,   RONLY, ast_var_channel_types_table, 4, {ASTCHANNELS, ASTCHANTYPETABLE, 1, ASTCHANTYPEINDEX}},
      {ASTCHANTYPENAME,        ASN_OCTET_STR, RONLY, ast_var_channel_types_table, 4, {ASTCHANNELS, ASTCHANTYPETABLE, 1, ASTCHANTYPENAME}},
      {ASTCHANTYPEDESC,        ASN_OCTET_STR, RONLY, ast_var_channel_types_table, 4, {ASTCHANNELS, ASTCHANTYPETABLE, 1, ASTCHANTYPEDESC}},
      {ASTCHANTYPEDEVSTATE,    ASN_INTEGER,   RONLY, ast_var_channel_types_table, 4, {ASTCHANNELS, ASTCHANTYPETABLE, 1, ASTCHANTYPEDEVSTATE}},
      {ASTCHANTYPEINDICATIONS, ASN_INTEGER,   RONLY, ast_var_channel_types_table, 4, {ASTCHANNELS, ASTCHANTYPETABLE, 1, ASTCHANTYPEINDICATIONS}},
      {ASTCHANTYPETRANSFER,    ASN_INTEGER,   RONLY, ast_var_channel_types_table, 4, {ASTCHANNELS, ASTCHANTYPETABLE, 1, ASTCHANTYPETRANSFER}},
      {ASTCHANTYPECHANNELS,    ASN_GAUGE,     RONLY, ast_var_channel_types_table, 4, {ASTCHANNELS, ASTCHANTYPETABLE, 1, ASTCHANTYPECHANNELS}},
      {ASTCHANBRIDGECOUNT,     ASN_GAUGE,     RONLY, ast_var_channel_bridge,      3, {ASTCHANNELS, ASTCHANSCALARS, ASTCHANBRIDGECOUNT}},
   };

   register_sysORTable(asterisk_oid, OID_LENGTH(asterisk_oid),
         "ASTERISK-MIB implementation for Asterisk.");

   REGISTER_MIB("res_snmp", asterisk_vars, variable4, asterisk_oid);

   snmp_register_callback(SNMP_CALLBACK_LIBRARY,
            SNMP_CALLBACK_SHUTDOWN,
            term_asterisk_mib, NULL);
}
int register_sysORTable ( oid *  ,
size_t  ,
const char *   
)

Referenced by init_asterisk_mib().

static int term_asterisk_mib ( int  majorID,
int  minorID,
void *  serverarg,
void *  clientarg 
) [static]

Definition at line 780 of file agent.c.

References unregister_sysORTable().

Referenced by init_asterisk_mib().

{
   unregister_sysORTable(asterisk_oid, OID_LENGTH(asterisk_oid));
   return 0;
}
int unregister_sysORTable ( oid *  ,
size_t   
)

Referenced by term_asterisk_mib().


Variable Documentation

oid asterisk_oid[] = { 1, 3, 6, 1, 4, 1, 22736, 1 } [static]

Definition at line 89 of file agent.c.