This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "FreeSWITCH". The branch, master has been updated via 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 (commit) via b3ac44f555a80f8278c5f915cfb36766903905a4 (commit) from 6d3abd41cadef3a2bff8175487c094c80d7d9cf7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9986f4ebf2a0c40cc99bc7f9f03f2dec6ae74645 Merge: 6d3abd4 b3ac44f Author: Raymond Chandler <intralanman@gmail.com> Date: Fri Jan 28 16:12:07 2011 -0500 Merge branch 'master' of fs-git:freeswitch commit b3ac44f555a80f8278c5f915cfb36766903905a4 Author: Daniel Swarbrick <daniel@seventhsignal.de> Date: Fri Jan 28 20:36:06 2011 +0100 add support for getting current call count diff --git a/src/mod/event_handlers/mod_snmp/subagent.c b/src/mod/event_handlers/mod_snmp/subagent.c index 8f08baf..bad3dc6 100644 --- a/src/mod/event_handlers/mod_snmp/subagent.c +++ b/src/mod/event_handlers/mod_snmp/subagent.c @@ -49,6 +49,14 @@ 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; +} + + int handle_identity(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) { netsnmp_request_info *request = NULL; @@ -113,13 +121,20 @@ 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)); break; case SS_CURRENT_CALLS: - /* - * This is zero for now, since there is no convenient way to get total call - * count (not to be confused with session count), without touching the - * database. - */ - int_val = 0; + { + switch_cache_db_handle_t *dbh; + char sql[1024] = "", hostname[256] = ""; + + if (switch_core_db_handle(&dbh) != SWITCH_STATUS_SUCCESS) { + 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)); + switch_cache_db_release_db_handle(&dbh); + } break; case SS_SESSIONS_PER_SECOND: switch_core_session_ctl(SCSC_LAST_SPS, &int_val); ----------------------------------------------------------------------- Summary of changes: src/mod/event_handlers/mod_snmp/subagent.c | 27 +++++++++++++++++++++------ 1 files changed, 21 insertions(+), 6 deletions(-) hooks/post-receive -- FreeSWITCH