Browse Source

ims_qos: better name for the rx_pcscf_ip parameter and added documentation

Dragos Vingarzan 9 years ago
parent
commit
d99753e459

+ 87 - 66
modules/ims_qos/README

@@ -2,8 +2,8 @@ The IMS QoS Module
 
 
 Dragos Vingarzan
 Dragos Vingarzan
 
 
-   FhG Fokus
-   <[email protected]>
+   Core Network Dynamics (ex FhG Fokus)
+   <[email protected]>
 
 
 Jason Penton
 Jason Penton
 
 
@@ -25,6 +25,8 @@ Carsten Bock
    Copyright © 2012 Smile Communications
    Copyright © 2012 Smile Communications
 
 
    Copyright © 2015 ng-voice GmbH
    Copyright © 2015 ng-voice GmbH
+
+   Copyright © 2016 Core Network Dynamics GmbH
      __________________________________________________________________
      __________________________________________________________________
 
 
    Table of Contents
    Table of Contents
@@ -42,16 +44,17 @@ Carsten Bock
               3.1. rx_dest_realm (string)
               3.1. rx_dest_realm (string)
               3.2. rx_forced_peer (string)
               3.2. rx_forced_peer (string)
               3.3. rx_auth_expiry (integer)
               3.3. rx_auth_expiry (integer)
-              3.4. cdp_event_latency (integer)
-              3.5. cdp_event_threshold (integer)
-              3.6. cdp_event_latency_log (integer)
-              3.7. authorize_video_flow (integer)
-              3.8. cdp_event_list_size_threshold (integer)
-              3.9. audio_default_bandwidth (integer)
-              3.10. video_default_bandwidth (integer)
-              3.11. early_qosrelease_reason (String)
-              3.12. confirmed_qosrelease_headers (String)
-              3.13. regex_sdp_ip_prefix_to_maintain_in_fd (String)
+              3.4. af_signaling_ip (string)
+              3.5. cdp_event_latency (integer)
+              3.6. cdp_event_threshold (integer)
+              3.7. cdp_event_latency_log (integer)
+              3.8. authorize_video_flow (integer)
+              3.9. cdp_event_list_size_threshold (integer)
+              3.10. audio_default_bandwidth (integer)
+              3.11. video_default_bandwidth (integer)
+              3.12. early_qosrelease_reason (String)
+              3.13. confirmed_qosrelease_headers (String)
+              3.14. regex_sdp_ip_prefix_to_maintain_in_fd (String)
 
 
         4. Functions
         4. Functions
 
 
@@ -69,18 +72,19 @@ Carsten Bock
    1.1. rx_dest_realm parameter usage
    1.1. rx_dest_realm parameter usage
    1.2. rx_forced_peer parameter usage
    1.2. rx_forced_peer parameter usage
    1.3. rx_auth_expiry parameter usage
    1.3. rx_auth_expiry parameter usage
-   1.4. cdp_event_latency parameter usage
-   1.5. cdp_event_threshold parameter usage
-   1.6. cdp_event_latency_log parameter usage
-   1.7. authorize_video_flow parameter usage
-   1.8. cdp_event_list_size_threshold parameter usage
-   1.9. audio_default_bandwidth parameter usage
-   1.10. video_default_bandwidth parameter usage
-   1.11. early_qosrelease_reason parameter usage
-   1.12. confirmed_qosrelease_headers parameter usage
-   1.13. regex_sdp_ip_prefix_to_maintain_in_fd parameter usage
-   1.14. Rx_AAR_Register
-   1.15. Rx_AAR
+   1.4. rx_auth_expiry parameter usage
+   1.5. cdp_event_latency parameter usage
+   1.6. cdp_event_threshold parameter usage
+   1.7. cdp_event_latency_log parameter usage
+   1.8. authorize_video_flow parameter usage
+   1.9. cdp_event_list_size_threshold parameter usage
+   1.10. audio_default_bandwidth parameter usage
+   1.11. video_default_bandwidth parameter usage
+   1.12. early_qosrelease_reason parameter usage
+   1.13. confirmed_qosrelease_headers parameter usage
+   1.14. regex_sdp_ip_prefix_to_maintain_in_fd parameter usage
+   1.15. Rx_AAR_Register
+   1.16. Rx_AAR
 
 
 Chapter 1. Admin Guide
 Chapter 1. Admin Guide
 
 
@@ -97,16 +101,17 @@ Chapter 1. Admin Guide
         3.1. rx_dest_realm (string)
         3.1. rx_dest_realm (string)
         3.2. rx_forced_peer (string)
         3.2. rx_forced_peer (string)
         3.3. rx_auth_expiry (integer)
         3.3. rx_auth_expiry (integer)
-        3.4. cdp_event_latency (integer)
-        3.5. cdp_event_threshold (integer)
-        3.6. cdp_event_latency_log (integer)
-        3.7. authorize_video_flow (integer)
-        3.8. cdp_event_list_size_threshold (integer)
-        3.9. audio_default_bandwidth (integer)
-        3.10. video_default_bandwidth (integer)
-        3.11. early_qosrelease_reason (String)
-        3.12. confirmed_qosrelease_headers (String)
-        3.13. regex_sdp_ip_prefix_to_maintain_in_fd (String)
+        3.4. af_signaling_ip (string)
+        3.5. cdp_event_latency (integer)
+        3.6. cdp_event_threshold (integer)
+        3.7. cdp_event_latency_log (integer)
+        3.8. authorize_video_flow (integer)
+        3.9. cdp_event_list_size_threshold (integer)
+        3.10. audio_default_bandwidth (integer)
+        3.11. video_default_bandwidth (integer)
+        3.12. early_qosrelease_reason (String)
+        3.13. confirmed_qosrelease_headers (String)
+        3.14. regex_sdp_ip_prefix_to_maintain_in_fd (String)
 
 
    4. Functions
    4. Functions
 
 
@@ -150,16 +155,17 @@ Chapter 1. Admin Guide
    3.1. rx_dest_realm (string)
    3.1. rx_dest_realm (string)
    3.2. rx_forced_peer (string)
    3.2. rx_forced_peer (string)
    3.3. rx_auth_expiry (integer)
    3.3. rx_auth_expiry (integer)
-   3.4. cdp_event_latency (integer)
-   3.5. cdp_event_threshold (integer)
-   3.6. cdp_event_latency_log (integer)
-   3.7. authorize_video_flow (integer)
-   3.8. cdp_event_list_size_threshold (integer)
-   3.9. audio_default_bandwidth (integer)
-   3.10. video_default_bandwidth (integer)
-   3.11. early_qosrelease_reason (String)
-   3.12. confirmed_qosrelease_headers (String)
-   3.13. regex_sdp_ip_prefix_to_maintain_in_fd (String)
+   3.4. af_signaling_ip (string)
+   3.5. cdp_event_latency (integer)
+   3.6. cdp_event_threshold (integer)
+   3.7. cdp_event_latency_log (integer)
+   3.8. authorize_video_flow (integer)
+   3.9. cdp_event_list_size_threshold (integer)
+   3.10. audio_default_bandwidth (integer)
+   3.11. video_default_bandwidth (integer)
+   3.12. early_qosrelease_reason (String)
+   3.13. confirmed_qosrelease_headers (String)
+   3.14. regex_sdp_ip_prefix_to_maintain_in_fd (String)
 
 
 3.1. rx_dest_realm (string)
 3.1. rx_dest_realm (string)
 
 
@@ -200,19 +206,34 @@ modparam("ims_qos", "rx_forced_peer", "pcrf.ims.smilecoms.com")
 modparam("ims_qos", "rx_auth_expiry", 14400)
 modparam("ims_qos", "rx_auth_expiry", 14400)
 ...
 ...
 
 
-3.4. cdp_event_latency (integer)
+3.4. af_signaling_ip (string)
+
+   Defines the IP address to use in the flow description for the media
+   flow of the SIP registration. This is known in EPC as the AF-Signaling
+   path and usually would create a dedicated bearer for the SIP signaling
+   between the UE IP and the P-CSCF IP. Usually set this value to the IP
+   address of the P-CSCF.
+
+   Default value is 127.0.0.1 - dummy value.
+
+   Example 1.4. rx_auth_expiry parameter usage
+...
+modparam("ims_qos", "af_signaling_ip", "192.168.1.45")
+...
+
+3.5. cdp_event_latency (integer)
 
 
    This is a flag to determine whether or slow CDP responses should be
    This is a flag to determine whether or slow CDP responses should be
    reported in the log file. 1 is enabled and 0 is disabled.
    reported in the log file. 1 is enabled and 0 is disabled.
 
 
    Default value is 1.
    Default value is 1.
 
 
-   Example 1.4. cdp_event_latency parameter usage
+   Example 1.5. cdp_event_latency parameter usage
 ...
 ...
 modparam("ims_qos", "cdp_event_latency", 1)
 modparam("ims_qos", "cdp_event_latency", 1)
 ...
 ...
 
 
-3.5. cdp_event_threshold (integer)
+3.6. cdp_event_threshold (integer)
 
 
    This time in milliseconds is the limit we should report a CDP response
    This time in milliseconds is the limit we should report a CDP response
    as slow. i.e. if a CDP response exceeds this limit it will be reported
    as slow. i.e. if a CDP response exceeds this limit it will be reported
@@ -221,12 +242,12 @@ modparam("ims_qos", "cdp_event_latency", 1)
 
 
    Default value is 500.
    Default value is 500.
 
 
-   Example 1.5. cdp_event_threshold parameter usage
+   Example 1.6. cdp_event_threshold parameter usage
 ...
 ...
 modparam("ims_qos", "cdp_event_threshold", 500)
 modparam("ims_qos", "cdp_event_threshold", 500)
 ...
 ...
 
 
-3.6. cdp_event_latency_log (integer)
+3.7. cdp_event_latency_log (integer)
 
 
    This time log level at which we should report slow CDP responses. 0 is
    This time log level at which we should report slow CDP responses. 0 is
    ERROR, 1 is WARN, 2 is INFO and 3 is DEBUG. This is only relevant is
    ERROR, 1 is WARN, 2 is INFO and 3 is DEBUG. This is only relevant is
@@ -234,12 +255,12 @@ modparam("ims_qos", "cdp_event_threshold", 500)
 
 
    Default value is 0.
    Default value is 0.
 
 
-   Example 1.6. cdp_event_latency_log parameter usage
+   Example 1.7. cdp_event_latency_log parameter usage
 ...
 ...
 modparam("ims_qos", "cdp_event_latency_log", 1)
 modparam("ims_qos", "cdp_event_latency_log", 1)
 ...
 ...
 
 
-3.7. authorize_video_flow (integer)
+3.8. authorize_video_flow (integer)
 
 
    This is a flag that specifies whether or not to authorize video flows.
    This is a flag that specifies whether or not to authorize video flows.
    1 means video flows will be authorized over Rx and 0 means video flows
    1 means video flows will be authorized over Rx and 0 means video flows
@@ -247,48 +268,48 @@ modparam("ims_qos", "cdp_event_latency_log", 1)
 
 
    Default value is 1.
    Default value is 1.
 
 
-   Example 1.7. authorize_video_flow parameter usage
+   Example 1.8. authorize_video_flow parameter usage
 ...
 ...
 modparam("ims_qos", "authorize_video_flow", 0)
 modparam("ims_qos", "authorize_video_flow", 0)
 ...
 ...
 
 
-3.8. cdp_event_list_size_threshold (integer)
+3.9. cdp_event_list_size_threshold (integer)
 
 
    This is a threshold on the size of the cdp event list. Once the queue
    This is a threshold on the size of the cdp event list. Once the queue
    exceeds this length a warning is logged. 0 disables this feature
    exceeds this length a warning is logged. 0 disables this feature
 
 
    Default value is 0.
    Default value is 0.
 
 
-   Example 1.8. cdp_event_list_size_threshold parameter usage
+   Example 1.9. cdp_event_list_size_threshold parameter usage
 ...
 ...
 modparam("ims_qos", "cdp_event_list_size_threshold", 10)
 modparam("ims_qos", "cdp_event_list_size_threshold", 10)
 ...
 ...
 
 
-3.9. audio_default_bandwidth (integer)
+3.10. audio_default_bandwidth (integer)
 
 
    This parameters defines the default bandwidth for Audio, if no
    This parameters defines the default bandwidth for Audio, if no
    "b=AS"-Parameter is found in the SDP.
    "b=AS"-Parameter is found in the SDP.
 
 
    Default value is 64 (64 kBit)
    Default value is 64 (64 kBit)
 
 
-   Example 1.9. audio_default_bandwidth parameter usage
+   Example 1.10. audio_default_bandwidth parameter usage
 ...
 ...
 modparam("ims_qos", "audio_default_bandwidth", 32)
 modparam("ims_qos", "audio_default_bandwidth", 32)
 ...
 ...
 
 
-3.10. video_default_bandwidth (integer)
+3.11. video_default_bandwidth (integer)
 
 
    This parameters defines the default bandwidth for Video, if no
    This parameters defines the default bandwidth for Video, if no
    "b=AS"-Parameter is found in the SDP.
    "b=AS"-Parameter is found in the SDP.
 
 
    Default value is 128 (128 kBit)
    Default value is 128 (128 kBit)
 
 
-   Example 1.10. video_default_bandwidth parameter usage
+   Example 1.11. video_default_bandwidth parameter usage
 ...
 ...
 modparam("ims_qos", "video_default_bandwidth", 256)
 modparam("ims_qos", "video_default_bandwidth", 256)
 ...
 ...
 
 
-3.11. early_qosrelease_reason (String)
+3.12. early_qosrelease_reason (String)
 
 
    This sets the default Reason, when a call is terminated in early stage
    This sets the default Reason, when a call is terminated in early stage
    due to QoS-failure.
    due to QoS-failure.
@@ -296,12 +317,12 @@ modparam("ims_qos", "video_default_bandwidth", 256)
    Default value is "QoS released", an call in early stage would be
    Default value is "QoS released", an call in early stage would be
    released with "488 QoS released".
    released with "488 QoS released".
 
 
-   Example 1.11. early_qosrelease_reason parameter usage
+   Example 1.12. early_qosrelease_reason parameter usage
 ...
 ...
 modparam("ims_qos", "early_qosrelease_reason", "Sorry - QoS failed")
 modparam("ims_qos", "early_qosrelease_reason", "Sorry - QoS failed")
 ...
 ...
 
 
-3.12. confirmed_qosrelease_headers (String)
+3.13. confirmed_qosrelease_headers (String)
 
 
    These headers are added to the BYE-Message, when an confirmed call is
    These headers are added to the BYE-Message, when an confirmed call is
    terminated due to a QoS failure.
    terminated due to a QoS failure.
@@ -310,12 +331,12 @@ modparam("ims_qos", "early_qosrelease_reason", "Sorry - QoS failed")
 
 
    The headers must end with CRLF.
    The headers must end with CRLF.
 
 
-   Example 1.12. confirmed_qosrelease_headers parameter usage
+   Example 1.13. confirmed_qosrelease_headers parameter usage
 ...
 ...
 modparam("ims_qos", "confirmed_qosrelease_headers", "X-Reason: QoS failed\r\n")
 modparam("ims_qos", "confirmed_qosrelease_headers", "X-Reason: QoS failed\r\n")
 ...
 ...
 
 
-3.13. regex_sdp_ip_prefix_to_maintain_in_fd (String)
+3.14. regex_sdp_ip_prefix_to_maintain_in_fd (String)
 
 
    The flow-description AVP is typically populated using IP:port
    The flow-description AVP is typically populated using IP:port
    information present in the SDP. Certain (buggy) UEs can change ports
    information present in the SDP. Certain (buggy) UEs can change ports
@@ -327,7 +348,7 @@ modparam("ims_qos", "confirmed_qosrelease_headers", "X-Reason: QoS failed\r\n")
 
 
    Default value is "", no IPs replaced
    Default value is "", no IPs replaced
 
 
-   Example 1.13. regex_sdp_ip_prefix_to_maintain_in_fd parameter usage
+   Example 1.14. regex_sdp_ip_prefix_to_maintain_in_fd parameter usage
 ...
 ...
 modparam("ims_qos", "regex_sdp_ip_prefix_to_maintain_in_fd", "10.21.0.1")
 modparam("ims_qos", "regex_sdp_ip_prefix_to_maintain_in_fd", "10.21.0.1")
 ...
 ...
@@ -362,7 +383,7 @@ modparam("ims_qos", "regex_sdp_ip_prefix_to_maintain_in_fd", "10.21.0.1")
    p.s. this is executed asynchronously. See example on how to retrieve
    p.s. this is executed asynchronously. See example on how to retrieve
    return value
    return value
 
 
-   Example 1.14. Rx_AAR_Register
+   Example 1.15. Rx_AAR_Register
 ...
 ...
 if(Rx_AAR_Register("REG_AAR_REPLY","location")==0){
 if(Rx_AAR_Register("REG_AAR_REPLY","location")==0){
     exit;
     exit;
@@ -404,7 +425,7 @@ route[REG_AAR_REPLY]
    p.s. this is executed asynchronously. See example on how to retrieve
    p.s. this is executed asynchronously. See example on how to retrieve
    return value
    return value
 
 
-   Example 1.15. Rx_AAR
+   Example 1.16. Rx_AAR
 ...
 ...
 if(Rx_AAR("ORIG_SESSION_AAR_REPLY","orig","",-1)==0){
 if(Rx_AAR("ORIG_SESSION_AAR_REPLY","orig","",-1)==0){
     exit;
     exit;

+ 6 - 2
modules/ims_qos/doc/ims_qos.xml

@@ -16,10 +16,10 @@
         <surname/>
         <surname/>
 
 
         <affiliation>
         <affiliation>
-          <orgname>FhG Fokus</orgname>
+          <orgname>Core Network Dynamics (ex FhG Fokus)</orgname>
         </affiliation>
         </affiliation>
 
 
-        <email>[email protected]</email>
+        <email>[email protected]</email>
       </author>
       </author>
 
 
       <author>
       <author>
@@ -71,6 +71,10 @@
       <year>2015</year>
       <year>2015</year>
       <holder>ng-voice GmbH</holder>
       <holder>ng-voice GmbH</holder>
     </copyright>
     </copyright>
+    <copyright>
+      <year>2016</year>
+      <holder>Core Network Dynamics GmbH</holder>
+    </copyright>
   </bookinfo>
   </bookinfo>
 
 
   <toc/>
   <toc/>

+ 23 - 0
modules/ims_qos/doc/ims_qos_admin.xml

@@ -121,6 +121,29 @@ modparam("ims_qos", "rx_auth_expiry", 14400)
       </example>
       </example>
     </section>
     </section>
 
 
+    <section>
+      <title><varname>af_signaling_ip</varname> (string)</title>
+
+      <para>Defines the IP address to use in the flow description for the
+      media flow of the SIP registration. This is known in EPC as the 
+      AF-Signaling path and usually would create a dedicated bearer for the SIP
+      signaling between the UE IP and the P-CSCF IP. 
+      
+      Usually set this value to the IP address of the P-CSCF.</para>
+
+      <para><emphasis> Default value is 127.0.0.1 - dummy value. </emphasis></para>
+
+      <example>
+        <title><varname>rx_auth_expiry</varname> parameter usage</title>
+
+        <programlisting format="linespecific">
+...
+modparam("ims_qos", "af_signaling_ip", "192.168.1.45")
+...
+        </programlisting>
+      </example>
+    </section>
+    
     <section>
     <section>
       <title><varname>cdp_event_latency</varname> (integer)</title>
       <title><varname>cdp_event_latency</varname> (integer)</title>
 
 

+ 26 - 26
modules/ims_qos/mod.c

@@ -3,23 +3,23 @@
  *
  *
  * Copyright (C) 2012 Smile Communications, [email protected]
  * Copyright (C) 2012 Smile Communications, [email protected]
  * Copyright (C) 2012 Smile Communications, [email protected]
  * Copyright (C) 2012 Smile Communications, [email protected]
- * 
+ *
  * The initial version of this code was written by Dragos Vingarzan
  * The initial version of this code was written by Dragos Vingarzan
  * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
  * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
  * Fruanhofer Institute. It was and still is maintained in a separate
  * Fruanhofer Institute. It was and still is maintained in a separate
  * branch of the original SER. We are therefore migrating it to
  * branch of the original SER. We are therefore migrating it to
  * Kamailio/SR and look forward to maintaining it from here on out.
  * Kamailio/SR and look forward to maintaining it from here on out.
  * 2011/2012 Smile Communications, Pty. Ltd.
  * 2011/2012 Smile Communications, Pty. Ltd.
- * ported/maintained/improved by 
+ * ported/maintained/improved by
  * Jason Penton (jason(dot)penton(at)smilecoms.com and
  * Jason Penton (jason(dot)penton(at)smilecoms.com and
- * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an
  * effort to add full IMS support to Kamailio/SR using a new and
  * effort to add full IMS support to Kamailio/SR using a new and
  * improved architecture
  * improved architecture
- * 
+ *
  * NB: Alot of this code was originally part of OpenIMSCore,
  * NB: Alot of this code was originally part of OpenIMSCore,
- * FhG Fokus. 
+ * FhG Fokus.
  * Copyright (C) 2004-2006 FhG Fokus
  * Copyright (C) 2004-2006 FhG Fokus
- * Thanks for great work! This is an effort to 
+ * Thanks for great work! This is an effort to
  * break apart the various CSCF functions into logically separate
  * break apart the various CSCF functions into logically separate
  * components. We hope this will drive wider use. We also feel
  * components. We hope this will drive wider use. We also feel
  * that in this way the architecture is more complete and thereby easier
  * that in this way the architecture is more complete and thereby easier
@@ -37,10 +37,10 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  * GNU General Public License for more details.
  *
  *
- * You should have received a copy of the GNU General Public License 
- * along with this program; if not, write to the Free Software 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
+ *
  */
  */
 
 
 #include <stdio.h>
 #include <stdio.h>
@@ -136,7 +136,7 @@ str rx_dest_realm = str_init("ims.smilecoms.com");
 str rx_forced_peer = str_init("");
 str rx_forced_peer = str_init("");
 
 
 /* P-CSCF IP address to generate the flows for the UE<->PCSCF signaling path */
 /* P-CSCF IP address to generate the flows for the UE<->PCSCF signaling path */
-str rx_pcscf_ip = str_init("192.168.1.45");
+str af_signaling_ip = str_init("127.0.0.1");
 
 
 /* commands wrappers and fixups */
 /* commands wrappers and fixups */
 static int w_rx_aar(struct sip_msg *msg, char *route, char* dir, char *id, int id_type);
 static int w_rx_aar(struct sip_msg *msg, char *route, char* dir, char *id, int id_type);
@@ -185,9 +185,9 @@ static cmd_export_t cmds[] = {
 
 
 static param_export_t params[] = {
 static param_export_t params[] = {
 		{ "rx_dest_realm", PARAM_STR, &rx_dest_realm},
 		{ "rx_dest_realm", PARAM_STR, &rx_dest_realm},
-		{ "rx_pcscf_ip", PARAM_STR, &rx_pcscf_ip},
 		{ "rx_forced_peer", PARAM_STR, &rx_forced_peer},
 		{ "rx_forced_peer", PARAM_STR, &rx_forced_peer},
 		{ "rx_auth_expiry", INT_PARAM, &rx_auth_expiry},
 		{ "rx_auth_expiry", INT_PARAM, &rx_auth_expiry},
+		{ "af_signaling_ip", PARAM_STR, &af_signaling_ip}, /* IP of this P-CSCF, to be used in the flow for the AF-signaling */
 		{ "cdp_event_latency", INT_PARAM, &cdp_event_latency}, /*flag: report slow processing of CDP callback events or not */
 		{ "cdp_event_latency", INT_PARAM, &cdp_event_latency}, /*flag: report slow processing of CDP callback events or not */
 		{ "cdp_event_threshold", INT_PARAM, &cdp_event_threshold}, /*time in ms above which we should report slow processing of CDP callback event*/
 		{ "cdp_event_threshold", INT_PARAM, &cdp_event_threshold}, /*time in ms above which we should report slow processing of CDP callback event*/
 		{ "cdp_event_latency_log", INT_PARAM, &cdp_event_latency_loglevel}, /*log-level to use to report slow processing of CDP callback event*/
 		{ "cdp_event_latency_log", INT_PARAM, &cdp_event_latency_loglevel}, /*log-level to use to report slow processing of CDP callback event*/
@@ -720,8 +720,8 @@ static int w_rx_aar(struct sip_msg *msg, char *route, char* dir, char *c_id, int
 
 
 
 
 		/*  we may need the request message from here on.. if there are headers we need that were not parsed in the original request
 		/*  we may need the request message from here on.. if there are headers we need that were not parsed in the original request
-			(which we cannot assume) then we would pollute the shm_msg t->uas.request if we did any parsing on it. Instead, we need to 
-			make a private copy of the message and free it when we are done 
+			(which we cannot assume) then we would pollute the shm_msg t->uas.request if we did any parsing on it. Instead, we need to
+			make a private copy of the message and free it when we are done
 		 */
 		 */
 		if ((_pv_treq.T != t || t->uas.request != _pv_treq.tmsgp)
 		if ((_pv_treq.T != t || t->uas.request != _pv_treq.tmsgp)
 				&& t->uas.request->id != _pv_treq.id) {
 				&& t->uas.request->id != _pv_treq.id) {
@@ -947,7 +947,7 @@ static int w_rx_aar(struct sip_msg *msg, char *route, char* dir, char *c_id, int
 								identifier_type = AVP_Subscription_Id_Type_SIP_URI; //default is END_USER_SIP_URI
 								identifier_type = AVP_Subscription_Id_Type_SIP_URI; //default is END_USER_SIP_URI
 						}
 						}
 				}
 				}
-				//IP 
+				//IP
 				//if its mo we use request SDP
 				//if its mo we use request SDP
 				//if its mt we use reply SDP
 				//if its mt we use reply SDP
 				if (dlg_direction == DLG_MOBILE_ORIGINATING) {
 				if (dlg_direction == DLG_MOBILE_ORIGINATING) {
@@ -965,9 +965,9 @@ static int w_rx_aar(struct sip_msg *msg, char *route, char* dir, char *c_id, int
 						}
 						}
 						ip = sdp_session->ip_addr;
 						ip = sdp_session->ip_addr;
 						ip_version = sdp_session->pf;
 						ip_version = sdp_session->pf;
-						
+
 						LM_DBG("IP retrieved from Request SDP to use for framed IP address: [%.*s]", ip.len, ip.s);
 						LM_DBG("IP retrieved from Request SDP to use for framed IP address: [%.*s]", ip.len, ip.s);
-						
+
 						if (ip.len <= 0) {
 						if (ip.len <= 0) {
 								LM_DBG("Request SDP connection IP could not be retrieved, so we use SDP stream IP");
 								LM_DBG("Request SDP connection IP could not be retrieved, so we use SDP stream IP");
 								sdp_stream = get_sdp_stream(orig_sip_request_msg, 0, 0);
 								sdp_stream = get_sdp_stream(orig_sip_request_msg, 0, 0);
@@ -975,7 +975,7 @@ static int w_rx_aar(struct sip_msg *msg, char *route, char* dir, char *c_id, int
 										LM_ERR("Missing SDP stream information from request\n");
 										LM_ERR("Missing SDP stream information from request\n");
 										goto error;
 										goto error;
 								}
 								}
-								
+
 								ip = sdp_stream->ip_addr;
 								ip = sdp_stream->ip_addr;
 								if (ip.len <= 0) {
 								if (ip.len <= 0) {
 										LM_ERR("Request SDP IP information could not be retrieved");
 										LM_ERR("Request SDP IP information could not be retrieved");
@@ -986,11 +986,11 @@ static int w_rx_aar(struct sip_msg *msg, char *route, char* dir, char *c_id, int
 										LM_ERR("check_ip_version returned 0 \n");
 										LM_ERR("check_ip_version returned 0 \n");
 										goto error;
 										goto error;
 								}
 								}
-								
+
 						}
 						}
-						
+
 						free_sdp((sdp_info_t**) (void*) &t->uas.request->body);
 						free_sdp((sdp_info_t**) (void*) &t->uas.request->body);
-						
+
 				} else {
 				} else {
 						LM_DBG("terminating direction\n");
 						LM_DBG("terminating direction\n");
 						//get ip from reply sdp (we use first SDP session)
 						//get ip from reply sdp (we use first SDP session)
@@ -1006,9 +1006,9 @@ static int w_rx_aar(struct sip_msg *msg, char *route, char* dir, char *c_id, int
 						}
 						}
 						ip = sdp_session->ip_addr;
 						ip = sdp_session->ip_addr;
 						ip_version = sdp_session->pf;
 						ip_version = sdp_session->pf;
-						
+
 						LM_DBG("IP retrieved from Reply SDP to use for framed IP address: [%.*s]", ip.len, ip.s);
 						LM_DBG("IP retrieved from Reply SDP to use for framed IP address: [%.*s]", ip.len, ip.s);
-						
+
 						if (ip.len <= 0) {
 						if (ip.len <= 0) {
 								LM_DBG("Reply SDP connection IP could not be retrieved, so we use SDP stream IP");
 								LM_DBG("Reply SDP connection IP could not be retrieved, so we use SDP stream IP");
 								sdp_stream = get_sdp_stream(msg, 0, 0);
 								sdp_stream = get_sdp_stream(msg, 0, 0);
@@ -1016,7 +1016,7 @@ static int w_rx_aar(struct sip_msg *msg, char *route, char* dir, char *c_id, int
 										LM_ERR("Missing SDP stream information from reply\n");
 										LM_ERR("Missing SDP stream information from reply\n");
 										goto error;
 										goto error;
 								}
 								}
-								
+
 								ip = sdp_stream->ip_addr;
 								ip = sdp_stream->ip_addr;
 								if (ip.len <= 0) {
 								if (ip.len <= 0) {
 										LM_ERR("Reply SDP IP information could not be retrieved");
 										LM_ERR("Reply SDP IP information could not be retrieved");
@@ -1027,9 +1027,9 @@ static int w_rx_aar(struct sip_msg *msg, char *route, char* dir, char *c_id, int
 										LM_ERR("check_ip_version returned 0 \n");
 										LM_ERR("check_ip_version returned 0 \n");
 										goto error;
 										goto error;
 								}
 								}
-								
+
 						}
 						}
-						
+
 						free_sdp((sdp_info_t**) (void*) &msg->body);
 						free_sdp((sdp_info_t**) (void*) &msg->body);
 				}
 				}
 
 
@@ -1254,7 +1254,7 @@ static int w_rx_aar_register(struct sip_msg *msg, char* route, char* str1, char*
 				goto error;
 				goto error;
 		}
 		}
 
 
-		//we use the received IP address for the framed_ip_address 
+		//we use the received IP address for the framed_ip_address
 		recv_ip.s = ip_addr2a(&msg->rcv.src_ip);
 		recv_ip.s = ip_addr2a(&msg->rcv.src_ip);
 		recv_ip.len = strlen(ip_addr2a(&msg->rcv.src_ip));
 		recv_ip.len = strlen(ip_addr2a(&msg->rcv.src_ip));
 
 

+ 21 - 21
modules/ims_qos/rx_aar.c

@@ -3,23 +3,23 @@
  *
  *
  * Copyright (C) 2012 Smile Communications, [email protected]
  * Copyright (C) 2012 Smile Communications, [email protected]
  * Copyright (C) 2012 Smile Communications, [email protected]
  * Copyright (C) 2012 Smile Communications, [email protected]
- * 
+ *
  * The initial version of this code was written by Dragos Vingarzan
  * The initial version of this code was written by Dragos Vingarzan
  * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
  * (dragos(dot)vingarzan(at)fokus(dot)fraunhofer(dot)de and the
  * Fruanhofer Institute. It was and still is maintained in a separate
  * Fruanhofer Institute. It was and still is maintained in a separate
  * branch of the original SER. We are therefore migrating it to
  * branch of the original SER. We are therefore migrating it to
  * Kamailio/SR and look forward to maintaining it from here on out.
  * Kamailio/SR and look forward to maintaining it from here on out.
  * 2011/2012 Smile Communications, Pty. Ltd.
  * 2011/2012 Smile Communications, Pty. Ltd.
- * ported/maintained/improved by 
+ * ported/maintained/improved by
  * Jason Penton (jason(dot)penton(at)smilecoms.com and
  * Jason Penton (jason(dot)penton(at)smilecoms.com and
- * Richard Good (richard(dot)good(at)smilecoms.com) as part of an 
+ * Richard Good (richard(dot)good(at)smilecoms.com) as part of an
  * effort to add full IMS support to Kamailio/SR using a new and
  * effort to add full IMS support to Kamailio/SR using a new and
  * improved architecture
  * improved architecture
- * 
+ *
  * NB: Alot of this code was originally part of OpenIMSCore,
  * NB: Alot of this code was originally part of OpenIMSCore,
- * FhG Fokus. 
+ * FhG Fokus.
  * Copyright (C) 2004-2006 FhG Fokus
  * Copyright (C) 2004-2006 FhG Fokus
- * Thanks for great work! This is an effort to 
+ * Thanks for great work! This is an effort to
  * break apart the various CSCF functions into logically separate
  * break apart the various CSCF functions into logically separate
  * components. We hope this will drive wider use. We also feel
  * components. We hope this will drive wider use. We also feel
  * that in this way the architecture is more complete and thereby easier
  * that in this way the architecture is more complete and thereby easier
@@ -37,10 +37,10 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  * GNU General Public License for more details.
  *
  *
- * You should have received a copy of the GNU General Public License 
- * along with this program; if not, write to the Free Software 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
+ *
  *
  *
  *
  *
  * History:
  * History:
@@ -77,7 +77,7 @@ extern struct ims_qos_counters_h ims_qos_cnts_h;
 
 
 extern int authorize_video_flow;
 extern int authorize_video_flow;
 
 
-extern str rx_pcscf_ip;
+extern str af_signaling_ip;
 
 
 str IMS_Serv_AVP_val = {"IMS Services", 12};
 str IMS_Serv_AVP_val = {"IMS Services", 12};
 str IMS_Em_Serv_AVP_val = {"Emergency IMS Call", 18};
 str IMS_Em_Serv_AVP_val = {"Emergency IMS Call", 18};
@@ -409,7 +409,7 @@ int add_media_components_using_current_flow_description(AAAMessage* aar, rx_auth
                 add_flow = 0;
                 add_flow = 0;
             }
             }
         }
         }
-	
+
 	if(add_flow) {
 	if(add_flow) {
             rx_add_media_component_description_avp(aar, flow_description->stream_num,
             rx_add_media_component_description_avp(aar, flow_description->stream_num,
                     &flow_description->media, &flow_description->req_sdp_ip_addr,
                     &flow_description->media, &flow_description->req_sdp_ip_addr,
@@ -467,7 +467,7 @@ int add_media_components(AAAMessage* aar, struct sip_msg *req,
 
 
             if (!rpl_sdp_session)
             if (!rpl_sdp_session)
                 LM_ERR("Missing SDP session information from rpl\n");
                 LM_ERR("Missing SDP session information from rpl\n");
-            
+
 			goto error;
 			goto error;
         }
         }
 
 
@@ -495,7 +495,7 @@ int add_media_components(AAAMessage* aar, struct sip_msg *req,
                     }
                     }
 
 
 			if(add_flow) {
 			if(add_flow) {
-					
+
 						str ipA = req_sdp_session->ip_addr;
 						str ipA = req_sdp_session->ip_addr;
 						str ipB = rpl_sdp_session->ip_addr;
 						str ipB = rpl_sdp_session->ip_addr;
 
 
@@ -507,7 +507,7 @@ int add_media_components(AAAMessage* aar, struct sip_msg *req,
 										goto error;
 										goto error;
 								}
 								}
 						}
 						}
-						
+
 						if (ipB.len <= 0) {
 						if (ipB.len <= 0) {
 								LM_DBG("Reply SDP connection IP could not be retrieved, so we use SDP 1st stream IP");
 								LM_DBG("Reply SDP connection IP could not be retrieved, so we use SDP 1st stream IP");
 								ipB = rpl_sdp_stream->ip_addr;
 								ipB = rpl_sdp_stream->ip_addr;
@@ -516,7 +516,7 @@ int add_media_components(AAAMessage* aar, struct sip_msg *req,
 										goto error;
 										goto error;
 								}
 								}
 						}
 						}
-						
+
 						//add this to auth session data
 						//add this to auth session data
                         add_flow_description((rx_authsessiondata_t*) auth->u.auth.generic_data, sdp_stream_num + 1,
                         add_flow_description((rx_authsessiondata_t*) auth->u.auth.generic_data, sdp_stream_num + 1,
                                 &req_sdp_stream->media, &ipA,
                                 &req_sdp_stream->media, &ipA,
@@ -544,9 +544,9 @@ int add_media_components(AAAMessage* aar, struct sip_msg *req,
     free_sdp((sdp_info_t**) (void*) &rpl->body);
     free_sdp((sdp_info_t**) (void*) &rpl->body);
 
 
 	return 1;
 	return 1;
-	
+
 	error:
 	error:
-	
+
     return 0;
     return 0;
 }
 }
 
 
@@ -569,7 +569,7 @@ int rx_send_aar_update_no_video(AAASession* auth) {
     str recv_ip;
     str recv_ip;
     uint16_t ip_version;
     uint16_t ip_version;
 
 
-    //we get ip and identifier for the auth session data 
+    //we get ip and identifier for the auth session data
     rx_authsessiondata_t* p_session_data = 0;
     rx_authsessiondata_t* p_session_data = 0;
     p_session_data = (rx_authsessiondata_t*) auth->u.auth.generic_data;
     p_session_data = (rx_authsessiondata_t*) auth->u.auth.generic_data;
     identifier = p_session_data->identifier;
     identifier = p_session_data->identifier;
@@ -730,7 +730,7 @@ int rx_send_aar(struct sip_msg *req, struct sip_msg *res,
     str ip;
     str ip;
     uint16_t ip_version;
     uint16_t ip_version;
 
 
-    //we get ip and identifier for the auth session data 
+    //we get ip and identifier for the auth session data
     rx_authsessiondata_t* p_session_data = 0;
     rx_authsessiondata_t* p_session_data = 0;
     p_session_data = (rx_authsessiondata_t*) auth->u.auth.generic_data;
     p_session_data = (rx_authsessiondata_t*) auth->u.auth.generic_data;
     identifier = p_session_data->identifier;
     identifier = p_session_data->identifier;
@@ -904,7 +904,7 @@ int rx_send_aar_register(struct sip_msg *msg, AAASession* auth, saved_transactio
     str ip;
     str ip;
     uint16_t ip_version;
     uint16_t ip_version;
 
 
-    //we get ip and identifier for the auth session data 
+    //we get ip and identifier for the auth session data
     rx_authsessiondata_t* p_session_data = 0;
     rx_authsessiondata_t* p_session_data = 0;
     p_session_data = (rx_authsessiondata_t*) auth->u.auth.generic_data;
     p_session_data = (rx_authsessiondata_t*) auth->u.auth.generic_data;
     identifier = p_session_data->identifier;
     identifier = p_session_data->identifier;
@@ -968,7 +968,7 @@ int rx_send_aar_register(struct sip_msg *msg, AAASession* auth, saved_transactio
     /* Add media component description avp for register*/
     /* Add media component description avp for register*/
     rx_add_media_component_description_avp(aar, 1,
     rx_add_media_component_description_avp(aar, 1,
                &media, &saved_t_data->via_host,
                &media, &saved_t_data->via_host,
-               &port_from, &rx_pcscf_ip,
+               &port_from, &af_signaling_ip,
                &port_to, &protocol,
                &port_to, &protocol,
                &raw_stream,
                &raw_stream,
                &raw_stream, DLG_MOBILE_REGISTER);
                &raw_stream, DLG_MOBILE_REGISTER);