Merge branch 'master' of ssh://git.freeswitch.org/freeswitch
This commit is contained in:
commit
231a7ffaa1
|
@ -33,6 +33,12 @@
|
||||||
*.ilk
|
*.ilk
|
||||||
*.bsc
|
*.bsc
|
||||||
*.pch
|
*.pch
|
||||||
|
*.tar
|
||||||
|
*.gz
|
||||||
|
*.tgz
|
||||||
|
*.xz
|
||||||
|
*.bz2
|
||||||
|
*.tbz2
|
||||||
core.*
|
core.*
|
||||||
/Path
|
/Path
|
||||||
/w32/Library/lastversion
|
/w32/Library/lastversion
|
||||||
|
@ -79,7 +85,6 @@ configure.lineno
|
||||||
/scripts/fsxs
|
/scripts/fsxs
|
||||||
/scripts/gentls_cert
|
/scripts/gentls_cert
|
||||||
/a.out.dSYM
|
/a.out.dSYM
|
||||||
/freeswitch-sounds-*
|
|
||||||
src/mod/applications/mod_easyroute/Makefile
|
src/mod/applications/mod_easyroute/Makefile
|
||||||
src/mod/applications/mod_lcr/Makefile
|
src/mod/applications/mod_lcr/Makefile
|
||||||
src/mod/applications/mod_nibblebill/Makefile
|
src/mod/applications/mod_nibblebill/Makefile
|
||||||
|
|
|
@ -61,7 +61,4 @@
|
||||||
<X-PRE-PROCESS cmd="include" data="lang/ru/*.xml"/>
|
<X-PRE-PROCESS cmd="include" data="lang/ru/*.xml"/>
|
||||||
</macros>
|
</macros>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</document>
|
</document>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -188,6 +188,7 @@
|
||||||
<ClInclude Include="..\src\include\ftdm_os.h" />
|
<ClInclude Include="..\src\include\ftdm_os.h" />
|
||||||
<ClInclude Include="..\src\include\private\ftdm_sched.h" />
|
<ClInclude Include="..\src\include\private\ftdm_sched.h" />
|
||||||
<ClInclude Include="..\src\include\ftdm_threadmutex.h" />
|
<ClInclude Include="..\src\include\ftdm_threadmutex.h" />
|
||||||
|
<ClInclude Include="..\src\include\private\ftdm_state.h" />
|
||||||
<ClInclude Include="..\src\include\private\ftdm_types.h" />
|
<ClInclude Include="..\src\include\private\ftdm_types.h" />
|
||||||
<ClInclude Include="..\src\include\private\g711.h" />
|
<ClInclude Include="..\src\include\private\g711.h" />
|
||||||
<ClInclude Include="..\src\include\private\hashtable.h" />
|
<ClInclude Include="..\src\include\private\hashtable.h" />
|
||||||
|
@ -209,6 +210,7 @@
|
||||||
<ClCompile Include="..\src\ftdm_io.c" />
|
<ClCompile Include="..\src\ftdm_io.c" />
|
||||||
<ClCompile Include="..\src\ftdm_queue.c" />
|
<ClCompile Include="..\src\ftdm_queue.c" />
|
||||||
<ClCompile Include="..\src\ftdm_sched.c" />
|
<ClCompile Include="..\src\ftdm_sched.c" />
|
||||||
|
<ClCompile Include="..\src\ftdm_state.c" />
|
||||||
<ClCompile Include="..\src\ftdm_threadmutex.c" />
|
<ClCompile Include="..\src\ftdm_threadmutex.c" />
|
||||||
<ClCompile Include="..\src\g711.c" />
|
<ClCompile Include="..\src\g711.c" />
|
||||||
<ClCompile Include="..\src\hashtable.c" />
|
<ClCompile Include="..\src\hashtable.c" />
|
||||||
|
|
|
@ -71,6 +71,9 @@
|
||||||
<ClInclude Include="..\src\include\private\uart.h">
|
<ClInclude Include="..\src\include\private\uart.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\src\include\private\ftdm_state.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\src\fsk.c">
|
<ClCompile Include="..\src\fsk.c">
|
||||||
|
@ -124,5 +127,8 @@
|
||||||
<ClCompile Include="..\src\uart.c">
|
<ClCompile Include="..\src\uart.c">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\src\ftdm_state.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -1,2 +1,4 @@
|
||||||
!/gsmlib/gsmlib-*/aclocal.m4
|
!/gsmlib/gsmlib-*/aclocal.m4
|
||||||
!/gsmlib/gsmlib-*/configure
|
!/gsmlib/gsmlib-*/configure
|
||||||
|
!/gsmlib/gsmlib-1.10.tar.gz
|
||||||
|
!/gsmlib/gsmlib_1.10-12ubuntu1.diff.gz
|
||||||
|
|
|
@ -107,4 +107,88 @@ maxSessionsPerSecond OBJECT-TYPE
|
||||||
"Maximum permissible sessions per second"
|
"Maximum permissible sessions per second"
|
||||||
::= { systemStats 7 }
|
::= { systemStats 7 }
|
||||||
|
|
||||||
|
|
||||||
|
ChannelEntry ::= SEQUENCE {
|
||||||
|
chanUUID DisplayString,
|
||||||
|
chanDirection DisplayString,
|
||||||
|
chanCreated DisplayString,
|
||||||
|
chanName DisplayString,
|
||||||
|
chanState DisplayString,
|
||||||
|
chanCIDName DisplayString,
|
||||||
|
chanCIDNum DisplayString
|
||||||
|
}
|
||||||
|
|
||||||
|
channelList OBJECT-TYPE
|
||||||
|
SYNTAX SEQUENCE OF ChannelEntry
|
||||||
|
MAX-ACCESS not-accessible
|
||||||
|
STATUS current
|
||||||
|
DESCRIPTION
|
||||||
|
"A table containing a list of active channels"
|
||||||
|
::= { core 9 }
|
||||||
|
|
||||||
|
channelEntry OBJECT-TYPE
|
||||||
|
SYNTAX ChannelEntry
|
||||||
|
MAX-ACCESS not-accessible
|
||||||
|
STATUS current
|
||||||
|
DESCRIPTION
|
||||||
|
"A channel entry"
|
||||||
|
INDEX { chanIndex }
|
||||||
|
::= { channelList 1 }
|
||||||
|
|
||||||
|
chanUUID OBJECT-TYPE
|
||||||
|
SYNTAX DisplayString
|
||||||
|
MAX-ACCESS read-only
|
||||||
|
STATUS current
|
||||||
|
DESCRIPTION
|
||||||
|
"The channel UUID."
|
||||||
|
::= { channelEntry 1 }
|
||||||
|
|
||||||
|
chanDirection OBJECT-TYPE
|
||||||
|
SYNTAX DisplayString
|
||||||
|
MAX-ACCESS read-only
|
||||||
|
STATUS current
|
||||||
|
DESCRIPTION
|
||||||
|
"The channel direction."
|
||||||
|
::= { channelEntry 2 }
|
||||||
|
|
||||||
|
chanCreated OBJECT-TYPE
|
||||||
|
SYNTAX DisplayString
|
||||||
|
MAX-ACCESS read-only
|
||||||
|
STATUS current
|
||||||
|
DESCRIPTION
|
||||||
|
"Channel creation timestamp."
|
||||||
|
::= { channelEntry 3 }
|
||||||
|
|
||||||
|
chanName OBJECT-TYPE
|
||||||
|
SYNTAX DisplayString
|
||||||
|
MAX-ACCESS read-only
|
||||||
|
STATUS current
|
||||||
|
DESCRIPTION
|
||||||
|
"The channel name."
|
||||||
|
::= { channelEntry 4 }
|
||||||
|
|
||||||
|
chanState OBJECT-TYPE
|
||||||
|
SYNTAX DisplayString
|
||||||
|
MAX-ACCESS read-only
|
||||||
|
STATUS current
|
||||||
|
DESCRIPTION
|
||||||
|
"The channel state."
|
||||||
|
::= { channelEntry 5 }
|
||||||
|
|
||||||
|
chanCIDName OBJECT-TYPE
|
||||||
|
SYNTAX DisplayString
|
||||||
|
MAX-ACCESS read-only
|
||||||
|
STATUS current
|
||||||
|
DESCRIPTION
|
||||||
|
"The channel caller ID name."
|
||||||
|
::= { channelEntry 6 }
|
||||||
|
|
||||||
|
chanCIDNum OBJECT-TYPE
|
||||||
|
SYNTAX DisplayString
|
||||||
|
MAX-ACCESS read-only
|
||||||
|
STATUS current
|
||||||
|
DESCRIPTION
|
||||||
|
"The channel caller ID number."
|
||||||
|
::= { channelEntry 7 }
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
|
@ -109,7 +109,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_snmp_load)
|
||||||
*/
|
*/
|
||||||
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, 2);
|
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, 2);
|
||||||
|
|
||||||
init_subagent();
|
init_subagent(pool);
|
||||||
init_snmp("mod_snmp");
|
init_snmp("mod_snmp");
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|
|
@ -36,16 +36,105 @@
|
||||||
#include <net-snmp/agent/net-snmp-agent-includes.h>
|
#include <net-snmp/agent/net-snmp-agent-includes.h>
|
||||||
#include "subagent.h"
|
#include "subagent.h"
|
||||||
|
|
||||||
|
netsnmp_table_registration_info *ch_table_info;
|
||||||
|
netsnmp_tdata *ch_table;
|
||||||
|
netsnmp_handler_registration *ch_reginfo;
|
||||||
|
uint32_t idx;
|
||||||
|
|
||||||
void init_subagent(void)
|
|
||||||
|
static int sql_count_callback(void *pArg, int argc, char **argv, char **columnNames)
|
||||||
|
{
|
||||||
|
uint32_t *count = (uint32_t *) pArg;
|
||||||
|
*count = atoi(argv[0]);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int channelList_callback(void *pArg, int argc, char **argv, char **columnNames)
|
||||||
|
{
|
||||||
|
chan_entry_t *entry;
|
||||||
|
netsnmp_tdata_row *row;
|
||||||
|
|
||||||
|
switch_zmalloc(entry, sizeof(chan_entry_t));
|
||||||
|
if (!entry)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
row = netsnmp_tdata_create_row();
|
||||||
|
if (!row) {
|
||||||
|
switch_safe_free(entry);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
row->data = entry;
|
||||||
|
|
||||||
|
entry->idx = idx++;
|
||||||
|
strncpy(entry->uuid, argv[0], sizeof(entry->uuid));
|
||||||
|
strncpy(entry->direction, argv[1], sizeof(entry->direction));
|
||||||
|
strncpy(entry->created, argv[2], sizeof(entry->created));
|
||||||
|
strncpy(entry->name, argv[4], sizeof(entry->name));
|
||||||
|
strncpy(entry->state, argv[5], sizeof(entry->state));
|
||||||
|
strncpy(entry->cid_name, argv[6], sizeof(entry->cid_name));
|
||||||
|
strncpy(entry->cid_num, argv[7], sizeof(entry->cid_num));
|
||||||
|
|
||||||
|
netsnmp_tdata_row_add_index(row, ASN_INTEGER, &entry->idx, sizeof(entry->idx));
|
||||||
|
netsnmp_tdata_add_row(ch_table, row);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void channelList_free(netsnmp_cache *cache, void *magic)
|
||||||
|
{
|
||||||
|
netsnmp_tdata_row *row = netsnmp_tdata_row_first(ch_table);
|
||||||
|
|
||||||
|
/* Delete table rows one by one */
|
||||||
|
while (row) {
|
||||||
|
netsnmp_tdata_remove_and_delete_row(ch_table, row);
|
||||||
|
switch_safe_free(row->data);
|
||||||
|
row = netsnmp_tdata_row_first(ch_table);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int channelList_load(netsnmp_cache *cache, void *vmagic)
|
||||||
|
{
|
||||||
|
switch_cache_db_handle_t *dbh;
|
||||||
|
char sql[1024] = "", hostname[256] = "";
|
||||||
|
|
||||||
|
channelList_free(cache, NULL);
|
||||||
|
|
||||||
|
if (switch_core_db_handle(&dbh) != SWITCH_STATUS_SUCCESS) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
idx = 1;
|
||||||
|
gethostname(hostname, sizeof(hostname));
|
||||||
|
sprintf(sql, "SELECT * FROM channels WHERE hostname='%s' ORDER BY created_epoch", hostname);
|
||||||
|
switch_cache_db_execute_sql_callback(dbh, sql, channelList_callback, NULL, NULL);
|
||||||
|
|
||||||
|
switch_cache_db_release_db_handle(&dbh);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void init_subagent(switch_memory_pool_t *pool)
|
||||||
{
|
{
|
||||||
static oid identity_oid[] = { 1,3,6,1,4,1,27880,1,1 };
|
static oid identity_oid[] = { 1,3,6,1,4,1,27880,1,1 };
|
||||||
static oid systemStats_oid[] = { 1,3,6,1,4,1,27880,1,2 };
|
static oid systemStats_oid[] = { 1,3,6,1,4,1,27880,1,2 };
|
||||||
|
static oid channelList_oid[] = { 1,3,6,1,4,1,27880,1,9 };
|
||||||
|
|
||||||
DEBUGMSGTL(("init_subagent", "Initializing\n"));
|
DEBUGMSGTL(("init_subagent", "mod_snmp subagent initializing\n"));
|
||||||
|
|
||||||
netsnmp_register_scalar_group(netsnmp_create_handler_registration("identity", handle_identity, identity_oid, OID_LENGTH(identity_oid), HANDLER_CAN_RONLY), 1, 2);
|
netsnmp_register_scalar_group(netsnmp_create_handler_registration("identity", handle_identity, identity_oid, OID_LENGTH(identity_oid), HANDLER_CAN_RONLY), 1, 2);
|
||||||
netsnmp_register_scalar_group(netsnmp_create_handler_registration("systemStats", handle_systemStats, systemStats_oid, OID_LENGTH(systemStats_oid), HANDLER_CAN_RONLY), 1, 7);
|
netsnmp_register_scalar_group(netsnmp_create_handler_registration("systemStats", handle_systemStats, systemStats_oid, OID_LENGTH(systemStats_oid), HANDLER_CAN_RONLY), 1, 7);
|
||||||
|
|
||||||
|
ch_table_info = switch_core_alloc(pool, sizeof(netsnmp_table_registration_info));
|
||||||
|
netsnmp_table_helper_add_index(ch_table_info, ASN_INTEGER);
|
||||||
|
ch_table_info->min_column = 1;
|
||||||
|
ch_table_info->max_column = 7;
|
||||||
|
ch_table = netsnmp_tdata_create_table("channelList", 0);
|
||||||
|
ch_reginfo = netsnmp_create_handler_registration("channelList", handle_channelList, channelList_oid, OID_LENGTH(channelList_oid), HANDLER_CAN_RONLY);
|
||||||
|
netsnmp_tdata_register(ch_reginfo, ch_table, ch_table_info);
|
||||||
|
netsnmp_inject_handler(ch_reginfo, netsnmp_get_cache_handler(5, channelList_load, channelList_free, channelList_oid, OID_LENGTH(channelList_oid)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,7 +178,7 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio
|
||||||
netsnmp_request_info *request = NULL;
|
netsnmp_request_info *request = NULL;
|
||||||
oid subid;
|
oid subid;
|
||||||
switch_time_t uptime;
|
switch_time_t uptime;
|
||||||
uint32_t int_val;
|
uint32_t int_val = 0;
|
||||||
|
|
||||||
switch(reqinfo->mode) {
|
switch(reqinfo->mode) {
|
||||||
case MODE_GET:
|
case MODE_GET:
|
||||||
|
@ -109,17 +198,24 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio
|
||||||
snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val));
|
snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val));
|
||||||
break;
|
break;
|
||||||
case SS_MAX_SESSIONS:
|
case SS_MAX_SESSIONS:
|
||||||
switch_core_session_ctl(SCSC_MAX_SESSIONS, &int_val);;
|
switch_core_session_ctl(SCSC_MAX_SESSIONS, &int_val);
|
||||||
snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val));
|
snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val));
|
||||||
break;
|
break;
|
||||||
case SS_CURRENT_CALLS:
|
case SS_CURRENT_CALLS:
|
||||||
/*
|
{
|
||||||
* This is zero for now, since there is no convenient way to get total call
|
switch_cache_db_handle_t *dbh;
|
||||||
* count (not to be confused with session count), without touching the
|
char sql[1024] = "", hostname[256] = "";
|
||||||
* database.
|
|
||||||
*/
|
if (switch_core_db_handle(&dbh) != SWITCH_STATUS_SUCCESS) {
|
||||||
int_val = 0;
|
return SNMP_ERR_GENERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
gethostname(hostname, sizeof(hostname));
|
||||||
|
sprintf(sql, "SELECT COUNT(*) FROM calls WHERE hostname='%s'", hostname);
|
||||||
|
switch_cache_db_execute_sql_callback(dbh, sql, sql_count_callback, &int_val, NULL);
|
||||||
snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val));
|
snmp_set_var_typed_value(requests->requestvb, ASN_GAUGE, (u_char *) &int_val, sizeof(int_val));
|
||||||
|
switch_cache_db_release_db_handle(&dbh);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SS_SESSIONS_PER_SECOND:
|
case SS_SESSIONS_PER_SECOND:
|
||||||
switch_core_session_ctl(SCSC_LAST_SPS, &int_val);
|
switch_core_session_ctl(SCSC_LAST_SPS, &int_val);
|
||||||
|
@ -145,6 +241,55 @@ int handle_systemStats(netsnmp_mib_handler *handler, netsnmp_handler_registratio
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int handle_channelList(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests)
|
||||||
|
{
|
||||||
|
netsnmp_request_info *request;
|
||||||
|
netsnmp_table_request_info *table_info;
|
||||||
|
chan_entry_t *entry;
|
||||||
|
|
||||||
|
switch (reqinfo->mode) {
|
||||||
|
case MODE_GET:
|
||||||
|
for (request = requests; request; request = request->next) {
|
||||||
|
table_info = netsnmp_extract_table_info(request);
|
||||||
|
entry = (chan_entry_t *) netsnmp_tdata_extract_entry(request);
|
||||||
|
|
||||||
|
switch (table_info->colnum) {
|
||||||
|
case CH_UUID:
|
||||||
|
snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->uuid, strlen(entry->uuid));
|
||||||
|
break;
|
||||||
|
case CH_DIRECTION:
|
||||||
|
snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->direction, strlen(entry->direction));
|
||||||
|
break;
|
||||||
|
case CH_CREATED:
|
||||||
|
snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->created, strlen(entry->created));
|
||||||
|
break;
|
||||||
|
case CH_NAME:
|
||||||
|
snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->name, strlen(entry->name));
|
||||||
|
break;
|
||||||
|
case CH_STATE:
|
||||||
|
snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->state, strlen(entry->state));
|
||||||
|
break;
|
||||||
|
case CH_CID_NAME:
|
||||||
|
snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->cid_name, strlen(entry->cid_name));
|
||||||
|
break;
|
||||||
|
case CH_CID_NUM:
|
||||||
|
snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR, (u_char *) entry->cid_num, strlen(entry->cid_num));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
snmp_log(LOG_WARNING, "Unregistered OID-suffix requested (%d)\n", table_info->colnum);
|
||||||
|
netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
/* we should never get here, so this is a really bad error */
|
||||||
|
snmp_log(LOG_ERR, "Unknown mode (%d) in handle_foo\n", reqinfo->mode );
|
||||||
|
return SNMP_ERR_GENERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return SNMP_ERR_NOERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* For Emacs:
|
/* For Emacs:
|
||||||
* Local Variables:
|
* Local Variables:
|
||||||
|
|
|
@ -14,9 +14,29 @@
|
||||||
#define SS_SESSIONS_PER_SECOND 6
|
#define SS_SESSIONS_PER_SECOND 6
|
||||||
#define SS_MAX_SESSIONS_PER_SECOND 7
|
#define SS_MAX_SESSIONS_PER_SECOND 7
|
||||||
|
|
||||||
|
/* .1.3.6.1.4.1.27880.1.9 */
|
||||||
|
#define CH_UUID 1
|
||||||
|
#define CH_DIRECTION 2
|
||||||
|
#define CH_CREATED 3
|
||||||
|
#define CH_NAME 4
|
||||||
|
#define CH_STATE 5
|
||||||
|
#define CH_CID_NAME 6
|
||||||
|
#define CH_CID_NUM 7
|
||||||
|
|
||||||
void init_subagent(void);
|
typedef struct {
|
||||||
|
uint32_t idx;
|
||||||
|
char uuid[38];
|
||||||
|
char direction[32];
|
||||||
|
char created[128];
|
||||||
|
char name[1024];
|
||||||
|
char state[64];
|
||||||
|
char cid_name[1024];
|
||||||
|
char cid_num[256];
|
||||||
|
} chan_entry_t;
|
||||||
|
|
||||||
|
void init_subagent(switch_memory_pool_t *pool);
|
||||||
Netsnmp_Node_Handler handle_identity;
|
Netsnmp_Node_Handler handle_identity;
|
||||||
Netsnmp_Node_Handler handle_systemStats;
|
Netsnmp_Node_Handler handle_systemStats;
|
||||||
|
Netsnmp_Node_Handler handle_channelList;
|
||||||
|
|
||||||
#endif /* subagent_H */
|
#endif /* subagent_H */
|
||||||
|
|
Loading…
Reference in New Issue