diff --git a/conf/autoload_configs/opal.conf.xml b/conf/autoload_configs/opal.conf.xml index c0844214a3..1133227499 100644 --- a/conf/autoload_configs/opal.conf.xml +++ b/conf/autoload_configs/opal.conf.xml @@ -4,6 +4,9 @@ + + + diff --git a/src/mod/endpoints/mod_opal/mod_opal.cpp b/src/mod/endpoints/mod_opal/mod_opal.cpp index d43fb6f6aa..8c3b922be2 100644 --- a/src/mod/endpoints/mod_opal/mod_opal.cpp +++ b/src/mod/endpoints/mod_opal/mod_opal.cpp @@ -25,6 +25,7 @@ #include "mod_opal.h" #include #include +#include SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_string, mod_opal_globals.codec_string); SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_context, mod_opal_globals.context); @@ -364,6 +365,18 @@ bool FSManager::Initialise(switch_loadable_module_interface_t *iface) } } + if (!m_gkAddress.IsEmpty()) { + if (m_h323ep->UseGatekeeper(m_gkAddress, m_gkIdentifer, m_gkInterface)) + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Started gatekeeper: %s\n", + (const char *)m_h323ep->GetGatekeeper()->GetName()); + else + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, + "Could not start gatekeeper: addr=\"%s\", id=\"%s\", if=\"%s\"\n", + (const char *)m_gkAddress, + (const char *)m_gkIdentifer, + (const char *)m_gkInterface); + } + return TRUE; } @@ -391,39 +404,44 @@ switch_status_t FSManager::ReadConfig(int reload) if (xml == NULL) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of %s failed\n", cf); return SWITCH_STATUS_FALSE; - } else { - switch_xml_t xmlSettings = switch_xml_child(cfg, "settings"); - if (xmlSettings) { - for (switch_xml_t xmlParam = switch_xml_child(xmlSettings, "param"); xmlParam != NULL; xmlParam = xmlParam->next) { - const char *var = switch_xml_attr_soft(xmlParam, "name"); - const char *val = switch_xml_attr_soft(xmlParam, "value"); + } - if (!strcasecmp(var, "trace-level")) { - int level = atoi(val); - if (level > 0) { - mod_opal_globals.trace_level = level; - } - } else if (!strcasecmp(var, "context")) { - set_global_context(val); - } else if (!strcasecmp(var, "dialplan")) { - set_global_dialplan(val); - } else if (!strcasecmp(var, "codec-prefs")) { - set_global_codec_string(val); - } else if (!strcasecmp(var, "jitter-size")) { - char * next; - unsigned minJitter = strtoul(val, &next, 10); - if (minJitter >= 10) { - unsigned maxJitter = minJitter; - if (*next == ',') - maxJitter = atoi(next+1); - SetAudioJitterDelay(minJitter, maxJitter); // In milliseconds - } + switch_xml_t xmlSettings = switch_xml_child(cfg, "settings"); + if (xmlSettings) { + for (switch_xml_t xmlParam = switch_xml_child(xmlSettings, "param"); xmlParam != NULL; xmlParam = xmlParam->next) { + const char *var = switch_xml_attr_soft(xmlParam, "name"); + const char *val = switch_xml_attr_soft(xmlParam, "value"); + + if (!strcasecmp(var, "trace-level")) { + int level = atoi(val); + if (level > 0) { + mod_opal_globals.trace_level = level; } + } else if (!strcasecmp(var, "context")) { + set_global_context(val); + } else if (!strcasecmp(var, "dialplan")) { + set_global_dialplan(val); + } else if (!strcasecmp(var, "codec-prefs")) { + set_global_codec_string(val); + } else if (!strcasecmp(var, "jitter-size")) { + char * next; + unsigned minJitter = strtoul(val, &next, 10); + if (minJitter >= 10) { + unsigned maxJitter = minJitter; + if (*next == ',') + maxJitter = atoi(next+1); + SetAudioJitterDelay(minJitter, maxJitter); // In milliseconds + } + } else if (!strcasecmp(var, "gk-address")) { + m_gkAddress = val; + } else if (!strcasecmp(var, "gk-identifer")) { + m_gkIdentifer = val; + } else if (!strcasecmp(var, "gk-interface")) { + m_gkInterface = val; } } } - switch_xml_t xmlListeners = switch_xml_child(cfg, "listeners"); if (xmlListeners != NULL) { for (switch_xml_t xmlListener = switch_xml_child(xmlListeners, "listener"); xmlListener != NULL; xmlListener = xmlListener->next) { diff --git a/src/mod/endpoints/mod_opal/mod_opal.h b/src/mod/endpoints/mod_opal/mod_opal.h index 462d407469..4e576a67ef 100644 --- a/src/mod/endpoints/mod_opal/mod_opal.h +++ b/src/mod/endpoints/mod_opal/mod_opal.h @@ -111,7 +111,11 @@ class FSManager : public OpalManager { H323EndPoint *m_h323ep; IAX2EndPoint *m_iaxep; - FSEndPoint *m_fsep; + FSEndPoint *m_fsep; + + PString m_gkAddress; + PString m_gkIdentifer; + PString m_gkInterface; list < FSListener > m_listeners; };