]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Added gatekeeper support.
authorRobert Joly <rjoly@nortel.com>
Wed, 1 Apr 2009 23:10:52 +0000 (23:10 +0000)
committerRobert Joly <rjoly@nortel.com>
Wed, 1 Apr 2009 23:10:52 +0000 (23:10 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12878 d0543943-73ff-0310-b7d9-9358b9ac24b2

conf/autoload_configs/opal.conf.xml
src/mod/endpoints/mod_opal/mod_opal.cpp
src/mod/endpoints/mod_opal/mod_opal.h

index c0844214a39c10fd282d89d5886d08ef04e4c590..1133227499c8ff7b3f91192963cde975a453aa5d 100644 (file)
@@ -4,6 +4,9 @@
     <param name="context" value="default"/>
     <param name="dialplan" value="XML"/>
     <param name="codec-prefs" value="PCMU"/>
+    <param name="gk-address" value=""/>    <!-- empty to disable, "*" to search LAN -->
+    <param name="gk-identifer" value=""/>  <!-- optional name of gk -->
+    <param name="gk-interface" value=""/>  <!-- optional listener interface name -->
   </settings>
   <listeners>
     <listener name="default">
index d43fb6f6aa43a989b1e7f7b7bcf55ca743b7d008..8c3b922be2c6686801f0767a32d7cdbc25a1a4d5 100644 (file)
@@ -25,6 +25,7 @@
 #include "mod_opal.h"\r
 #include <opal/patch.h>\r
 #include <h323/h323pdu.h>\r
+#include <h323/gkclient.h>\r
 \r
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_string, mod_opal_globals.codec_string);\r
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_context, mod_opal_globals.context);\r
@@ -364,6 +365,18 @@ bool FSManager::Initialise(switch_loadable_module_interface_t *iface)
       }\r
     }\r
 \r
+    if (!m_gkAddress.IsEmpty()) {\r
+      if (m_h323ep->UseGatekeeper(m_gkAddress, m_gkIdentifer, m_gkInterface))\r
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Started gatekeeper: %s\n",\r
+                          (const char *)m_h323ep->GetGatekeeper()->GetName());\r
+      else\r
+        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,\r
+                          "Could not start gatekeeper: addr=\"%s\", id=\"%s\", if=\"%s\"\n",\r
+                          (const char *)m_gkAddress,\r
+                          (const char *)m_gkIdentifer,\r
+                          (const char *)m_gkInterface);\r
+    }\r
+\r
     return TRUE;\r
 }\r
 \r
@@ -391,39 +404,44 @@ switch_status_t FSManager::ReadConfig(int reload)
     if (xml == NULL) {\r
         switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of %s failed\n", cf);\r
         return SWITCH_STATUS_FALSE;\r
-    } else {\r
-        switch_xml_t xmlSettings = switch_xml_child(cfg, "settings");\r
-        if (xmlSettings) {\r
-            for (switch_xml_t xmlParam = switch_xml_child(xmlSettings, "param"); xmlParam != NULL; xmlParam = xmlParam->next) {\r
-                const char *var = switch_xml_attr_soft(xmlParam, "name");\r
-                const char *val = switch_xml_attr_soft(xmlParam, "value");\r
+    }\r
 \r
-                if (!strcasecmp(var, "trace-level")) {\r
-                    int level = atoi(val);\r
-                    if (level > 0) {\r
-                        mod_opal_globals.trace_level = level;\r
-                    }\r
-                } else if (!strcasecmp(var, "context")) {\r
-                    set_global_context(val);\r
-                } else if (!strcasecmp(var, "dialplan")) {\r
-                    set_global_dialplan(val);\r
-                } else if (!strcasecmp(var, "codec-prefs")) {\r
-                    set_global_codec_string(val);\r
-                } else if (!strcasecmp(var, "jitter-size")) {\r
-                    char * next;\r
-                    unsigned minJitter = strtoul(val, &next, 10);\r
-                    if (minJitter >= 10) {\r
-                        unsigned maxJitter = minJitter;\r
-                        if (*next == ',')\r
-                          maxJitter = atoi(next+1);\r
-                        SetAudioJitterDelay(minJitter, maxJitter); // In milliseconds\r
-                    }\r
+    switch_xml_t xmlSettings = switch_xml_child(cfg, "settings");\r
+    if (xmlSettings) {\r
+        for (switch_xml_t xmlParam = switch_xml_child(xmlSettings, "param"); xmlParam != NULL; xmlParam = xmlParam->next) {\r
+            const char *var = switch_xml_attr_soft(xmlParam, "name");\r
+            const char *val = switch_xml_attr_soft(xmlParam, "value");\r
+\r
+            if (!strcasecmp(var, "trace-level")) {\r
+                int level = atoi(val);\r
+                if (level > 0) {\r
+                    mod_opal_globals.trace_level = level;\r
                 }\r
+            } else if (!strcasecmp(var, "context")) {\r
+                set_global_context(val);\r
+            } else if (!strcasecmp(var, "dialplan")) {\r
+                set_global_dialplan(val);\r
+            } else if (!strcasecmp(var, "codec-prefs")) {\r
+                set_global_codec_string(val);\r
+            } else if (!strcasecmp(var, "jitter-size")) {\r
+                char * next;\r
+                unsigned minJitter = strtoul(val, &next, 10);\r
+                if (minJitter >= 10) {\r
+                    unsigned maxJitter = minJitter;\r
+                    if (*next == ',')\r
+                      maxJitter = atoi(next+1);\r
+                    SetAudioJitterDelay(minJitter, maxJitter); // In milliseconds\r
+                }\r
+            } else if (!strcasecmp(var, "gk-address")) {\r
+                m_gkAddress = val;\r
+            } else if (!strcasecmp(var, "gk-identifer")) {\r
+                m_gkIdentifer = val;\r
+            } else if (!strcasecmp(var, "gk-interface")) {\r
+                m_gkInterface = val;\r
             }\r
         }\r
     }\r
 \r
-\r
     switch_xml_t xmlListeners = switch_xml_child(cfg, "listeners");\r
     if (xmlListeners != NULL) {\r
         for (switch_xml_t xmlListener = switch_xml_child(xmlListeners, "listener"); xmlListener != NULL; xmlListener = xmlListener->next) {\r
index 462d407469d740ee9e12b1941375e45b056743ad..4e576a67ef4bbf52fb629dc6cfcbf0caa5311757 100644 (file)
@@ -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;
 };