Module: sip-router
Branch: master
Commit: 744a8d317b894a1360e3441a9e69ac9190a1745b
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=744a8d317b894a1360e3441a9e69ac9190a1745b

Author: Juha Heinanen <[email protected]>
Committer: Juha Heinanen <[email protected]>
Date:   Thu Apr 25 14:12:21 2013 +0300

modules/outbound: added force_no_outbound flag

---

 modules/outbound/README                 |   29 +++++++++++++++++++++++------
 modules/outbound/doc/outbound_admin.xml |   19 +++++++++++++++++++
 modules/outbound/ob_mod.c               |   17 ++++++++++++++++-
 3 files changed, 58 insertions(+), 7 deletions(-)

diff --git a/modules/outbound/README b/modules/outbound/README
index 057fefa..2f23ab1 100644
--- a/modules/outbound/README
+++ b/modules/outbound/README
@@ -4,7 +4,7 @@ Peter Dunkley
 
    Crocodile RCS Ltd
 
-   Copyright © 2012-2013 Crocodile RCS Ltd
+   Copyright (c) 2012-2013 Crocodile RCS Ltd
      __________________________________________________________________
 
    Table of Contents
@@ -24,6 +24,7 @@ Peter Dunkley
         3. Parameters
 
               3.1. force_outbound_flag (integer)
+              3.2. force_no_outbound_flag (integer)
 
         4. Functions
         5. MI Commands
@@ -33,6 +34,7 @@ Peter Dunkley
    1.1. Edge Proxy Configuration
    1.2. Registrar Configuration
    1.3. Set force_outbound_flag parameter
+   1.4. Set force_no_outbound_flag parameter
 
 Chapter 1. Admin Guide
 
@@ -51,6 +53,7 @@ Chapter 1. Admin Guide
    3. Parameters
 
         3.1. force_outbound_flag (integer)
+        3.2. force_no_outbound_flag (integer)
 
    4. Functions
    5. MI Commands
@@ -69,7 +72,7 @@ Chapter 1. Admin Guide
 1.1. Edge Proxy Keep-Alives (STUN)
 
    Outbound Edge Proxies MUST support STUN NAT keep-alives on their SIP
-   UDP ports. Kamailio supports this though the “stun” module.
+   UDP ports. Kamailio supports this though the "stun" module.
 
 1.2. Flow Timer
 
@@ -78,9 +81,9 @@ Chapter 1. Admin Guide
    responses to REGISTERs.
 
    When using TCP or TLS as the SIP transport care should be taken to set
-   the “tcp_connection_lifetime” on the Edge Proxy to a value slightly
+   the "tcp_connection_lifetime" on the Edge Proxy to a value slightly
    larger than the interval the Registrar is using for flow timer. Setting
-   “tcp_connection_lifetime” to less than the interval could cause
+   "tcp_connection_lifetime" to less than the interval could cause
    connections to be lost, and setting it to a value much larger than the
    interval will keep connections open far longer than is required (which
    is wasteful).
@@ -88,9 +91,9 @@ Chapter 1. Admin Guide
    Application-layer keep-alives are optional when the underlying
    transport already has a keep-alive mechanism. The WebSocket transport
    has a transport-layer keep-alive. When using the WebSocket transport
-   the “keepalive_timeout” should be set to a value a little greater than
+   the "keepalive_timeout" should be set to a value a little greater than
    the Registrar flow timer interval and a little less than the
-   “tcp_connection_lifetime”.
+   "tcp_connection_lifetime".
 
    Example 1.1. Edge Proxy Configuration
 #!KAMAILIO
@@ -489,6 +492,7 @@ event_route[tm:branch-failure:FAIL-BRANCH] {
 3. Parameters
 
    3.1. force_outbound_flag (integer)
+   3.2. force_no_outbound_flag (integer)
 
 3.1. force_outbound_flag (integer)
 
@@ -503,6 +507,19 @@ event_route[tm:branch-failure:FAIL-BRANCH] {
 modparam("outbound", "force_outbound_flag", 1)
 ...
 
+3.2. force_no_outbound_flag (integer)
+
+   A flag which, if set for a request, will force path and rr not to add
+   flow tokens to Path: and Record-Route: headers regardless of the
+   request contents.
+
+   Default value is -1.
+
+   Example 1.4. Set force_no_outbound_flag parameter
+...
+modparam("outbound", "force_no_outbound_flag", 2)
+...
+
 4. Functions
 
    None
diff --git a/modules/outbound/doc/outbound_admin.xml 
b/modules/outbound/doc/outbound_admin.xml
index dca8448..4cd8f0d 100644
--- a/modules/outbound/doc/outbound_admin.xml
+++ b/modules/outbound/doc/outbound_admin.xml
@@ -481,6 +481,25 @@ modparam("outbound", "force_outbound_flag", 1)
 </programlisting>
                </example>
        </section>
+
+       <section>
+               <title><varname>force_no_outbound_flag</varname> 
(integer)</title>
+               <para>A flag which, if set for a request, will force
+               <emphasis>path</emphasis> and <emphasis>rr</emphasis> not
+               to add flow tokens to Path: and Record-Route: headers
+               regardless of the request contents.</para>
+               <para><emphasis>Default value is -1.</emphasis></para>
+               <example>
+               <title>Set <varname>force_no_outbound_flag</varname> parameter
+               </title>
+               <programlisting format="linespecific">
+...
+modparam("outbound", "force_no_outbound_flag", 2)
+...
+</programlisting>
+               </example>
+       </section>
+
        </section>
 
        <section>
diff --git a/modules/outbound/ob_mod.c b/modules/outbound/ob_mod.c
index 69ac1e0..a2b6d12 100644
--- a/modules/outbound/ob_mod.c
+++ b/modules/outbound/ob_mod.c
@@ -48,6 +48,7 @@ static int mod_init(void);
 static void destroy(void);
 
 static unsigned int ob_force_flag = (unsigned int) -1;
+static unsigned int ob_force_no_flag = (unsigned int) -1;
 static str ob_key = {0, 0};
 
 static cmd_export_t cmds[]= 
@@ -61,6 +62,7 @@ static cmd_export_t cmds[]=
 static param_export_t params[]=
 {
        { "force_outbound_flag",        INT_PARAM, &ob_force_flag },
+       { "force_no_outbound_flag",     INT_PARAM, &ob_force_no_flag },
        { 0, 0, 0 }
 };
 
@@ -88,6 +90,12 @@ static int mod_init(void)
                return -1;
        }
 
+       if (ob_force_no_flag != -1 && !flag_in_range(ob_force_no_flag))
+       {
+               LM_ERR("bad no_outbound_flag value (%d)\n", ob_force_no_flag);
+               return -1;
+       }
+
        if ((ob_key.s = shm_malloc(OB_KEY_LEN)) == NULL)
        {
                LM_ERR("Failed to allocate memory for flow-token key\n");
@@ -451,10 +459,17 @@ int use_outbound(struct sip_msg *msg)
        /* If Outbound is forced return success without any further checks */
        if (ob_force_flag != -1 && isflagset(msg, ob_force_flag) > 0)
        {
-               LM_DBG("outbound forced\n");
+               LM_DBG("outbound used by force\n");
                return 1;
        }
 
+       /* If Outbound is turned off, return failure without any further checks 
*/
+       if (ob_force_no_flag != -1 && isflagset(msg, ob_force_no_flag) > 0)
+       {
+               LM_DBG("outbound not used by force\n");
+               return 0;
+       }
+
        LM_DBG("Analysing %.*s for outbound markers\n",
                msg->first_line.u.request.method.len,
                msg->first_line.u.request.method.s);


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to