Index: doc/asterisk-mib.txt =================================================================== --- doc/asterisk-mib.txt (revision 62416) +++ doc/asterisk-mib.txt (working copy) @@ -11,7 +11,7 @@ FROM DIGIUM-MIB; asterisk MODULE-IDENTITY - LAST-UPDATED "200603061840Z" + LAST-UPDATED "200704040317Z" ORGANIZATION "Digium, Inc." CONTACT-INFO "Mark A. Spencer @@ -736,4 +736,14 @@ "Number of active channels using the current technology." ::= { astChanTypeEntry 7 } +astChanScalars OBJECT-IDENTIFIER ::= { asteriskChannels 5 } + +astNumChanBridge OBJECT-TYPE + SYNTAX Gauge32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of channels currently in a bridged state." + ::= { asteriskChanScalars 1 } + END Index: res/snmp/agent.c =================================================================== --- res/snmp/agent.c (revision 62416) +++ res/snmp/agent.c (working copy) @@ -138,6 +138,8 @@ #define ASTCHANTYPETRANSFER 6 #define ASTCHANTYPECHANNELS 7 +#define ASTCHANBRIDGECOUNT 5 + void *agent_thread(void *arg) { ast_verbose(VERBOSE_PREFIX_2 "Starting %sAgent\n", res_snmp_agentx_subagent ? "Sub" : ""); @@ -585,6 +587,34 @@ 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 unsigned long long_ret; + struct ast_channel *chan; + + if (header_generic(vp, name, length, exact, var_len, write_method)) + return NULL; + + long_ret = 0; + for (chan = ast_channel_walk_locked(NULL); + chan != NULL; + chan = ast_channel_walk_locked(chan)) { + if (ast_bridged_channel(chan) != NULL) + long_ret++; + ast_channel_unlock(chan); + } + *var_len = sizeof(long_ret); + + switch (vp->magic) { + case ASTCHANBRIDGECOUNT: + return (u_char *)&long_ret; + default: + break; + } + return NULL; +} + static u_char *ast_var_Config(struct variable *vp, oid *name, size_t *length, int exact, size_t *var_len, WriteMethod **write_method) { @@ -802,6 +832,7 @@ {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, 2, {ASTCHANNELS, ASTCHANBRIDGECOUNT}}, }; register_sysORTable(asterisk_oid, OID_LENGTH(asterisk_oid),