瀏覽代碼

modules_k:rtpproxy - documentation update

Ovidiu Sas 15 年之前
父節點
當前提交
03d5fa3629
共有 3 個文件被更改,包括 162 次插入1188 次删除
  1. 130 605
      modules_k/rtpproxy/README
  2. 12 1
      modules_k/rtpproxy/doc/nathelper.xml
  3. 20 582
      modules_k/rtpproxy/doc/nathelper_admin.xml

+ 130 - 605
modules_k/rtpproxy/README

@@ -1,4 +1,4 @@
-nathelper Module
+rtpproxy Module
 
 
 Maxim Sobolev
 Maxim Sobolev
 
 
@@ -20,11 +20,17 @@ Edited by
 
 
 Juha Heinanen
 Juha Heinanen
 
 
-   Copyright © 2003-2008 Sippy Software, Inc.
+Edited by
+
+Sas Ovidiu
+
+   Copyright © 2003-2008 Sippy Software, Inc.
 
 
-   Copyright © 2005 voice-system.ro
+   Copyright © 2005 voice-system.ro
 
 
-   Copyright © 2009 TuTPro Inc.
+   Copyright © 2009 TuTPro Inc.
+
+   Copyright © 2010 VoIPEmbedded Inc.
    Revision History
    Revision History
    Revision $Revision$ $Date$
    Revision $Revision$ $Date$
      __________________________________________________________________
      __________________________________________________________________
@@ -33,213 +39,85 @@ Juha Heinanen
 
 
    1. Admin Guide
    1. Admin Guide
 
 
-        1. Overview
-        2. NAT pinging types
-        3. Multiple RTPProxy usage
-        4. Dependencies
-
-              4.1. Kamailio Modules
-              4.2. External Libraries or Applications
-
-        5. Exported Parameters
-
-              5.1. natping_interval (integer)
-              5.2. ping_nated_only (integer)
-              5.3. natping_processes (integer)
-              5.4. natping_socket (string)
-              5.5. received_avp (str)
-              5.6. rtpproxy_sock (string)
-              5.7. rtpproxy_disable_tout (integer)
-              5.8. rtpproxy_tout (integer)
-              5.9. rtpproxy_retr (integer)
-              5.10. force_socket (string)
-              5.11. sipping_bflag (integer)
-              5.12. sipping_from (string)
-              5.13. sipping_method (string)
-              5.14. nortpproxy_str (string)
-
-        6. Exported Functions
-
-              6.1. fix_nated_contact()
-              6.2. fix_nated_sdp(flags [, ip_address])
-              6.3. set_rtp_proxy_set()
-              6.4. force_rtp_proxy([flags [, ip_address]])
-              6.5. rtpproxy_offer([flags [, ip_address]])
-              6.6. rtpproxy_answer([flags [, ip_address]])
-              6.7. unforce_rtp_proxy()
-              6.8. rtpproxy_stream2uac(prompt_name, count),
-                      rtpproxy_stream2uas(prompt_name, count)
+        1.1. Overview
+        1.2. Multiple RTPProxy usage
+        1.3. Dependencies
 
 
-              6.9. rtpproxy_stop_stream2uac(), rtpproxy_stop_stream2uas()
-              6.10. add_rcv_param([flag]),
-              6.11. fix_nated_register()
-              6.12. nat_uac_test(flags)
-              6.13. start_recording()
-              6.14. add_contact_alias()
-              6.15. handle_ruri_alias()
+              1.3.1. Kamailio Modules
+              1.3.2. External Libraries or Applications
+
+        1.4. Exported Parameters
+
+              1.4.1. rtpproxy_sock (string)
+              1.4.2. rtpproxy_disable_tout (integer)
+              1.4.3. rtpproxy_tout (integer)
+              1.4.4. rtpproxy_retr (integer)
+              1.4.5. force_socket (string)
+              1.4.6. nortpproxy_str (string)
+
+        1.5. Exported Functions
+
+              1.5.1. set_rtp_proxy_set()
+              1.5.2. force_rtp_proxy([flags [, ip_address]])
+              1.5.3. rtpproxy_offer([flags [, ip_address]])
+              1.5.4. rtpproxy_answer([flags [, ip_address]])
+              1.5.5. unforce_rtp_proxy()
+              1.5.6. rtpproxy_stream2uac(prompt_name, count),
+                      rtpproxy_stream2uas(prompt_name, count)
 
 
-        7. Exported Pseudo Variables
+              1.5.7. rtpproxy_stop_stream2uac(),
+                      rtpproxy_stop_stream2uas()
 
 
-              7.1. $rr_count
-              7.2. $rr_top_count
+              1.5.8. start_recording()
 
 
-        8. MI Commands
+        1.6. Exported Pseudo Variables
+        1.7. MI Commands
 
 
-              8.1. nh_enable_ping
-              8.2. nh_enable_rtpp
-              8.3. nh_show_rtpp
+              1.7.1. nh_enable_rtpp
+              1.7.2. nh_show_rtpp
 
 
    2. Frequently Asked Questions
    2. Frequently Asked Questions
 
 
    List of Examples
    List of Examples
 
 
-   1.1. Set natping_interval parameter
-   1.2. Set ping_nated_only parameter
-   1.3. Set natping_processes parameter
-   1.4. Set natping_socket parameter
-   1.5. Set received_avp parameter
-   1.6. Set rtpproxy_sock parameter
-   1.7. Set rtpproxy_disable_tout parameter
-   1.8. Set rtpproxy_tout parameter
-   1.9. Set rtpproxy_retr parameter
-   1.10. Set force_socket parameter
-   1.11. Set sipping_bflag parameter
-   1.12. Set sipping_from parameter
-   1.13. Set sipping_method parameter
-   1.14. Set nortpproxy_str parameter
-   1.15. fix_nated_contact usage
-   1.16. fix_nated_sdp usage
-   1.17. fix_nated_contact usage
-   1.18. force_rtp_proxy usage
-   1.19. rtpproxy_offer usage
-   1.20.
-   1.21. unforce_rtp_proxy usage
-   1.22. rtpproxy_stream2xxx usage
-   1.23. add_rcv_paramer usage
-   1.24. fix_nated_register usage
-   1.25. start_recording usage
-   1.26. add_contact_alias usage
-   1.27. handle_ruri_alias usage
-   1.28. $rr_count usage
-   1.29. $rr_top_count usage
-   1.30. nh_enable_ping usage
-   1.31. nh_enable_rtpp usage
-   1.32. nh_show_rtpp usage
+   1.1. Set rtpproxy_sock parameter
+   1.2. Set rtpproxy_disable_tout parameter
+   1.3. Set rtpproxy_tout parameter
+   1.4. Set rtpproxy_retr parameter
+   1.5. Set force_socket parameter
+   1.6. Set nortpproxy_str parameter
+   1.7. fix_nated_contact usage
+   1.8. force_rtp_proxy usage
+   1.9. rtpproxy_offer usage
+   1.10.
+   1.11. unforce_rtp_proxy usage
+   1.12. rtpproxy_stream2xxx usage
+   1.13. start_recording usage
+   1.14. nh_enable_rtpp usage
+   1.15. nh_show_rtpp usage
 
 
 Chapter 1. Admin Guide
 Chapter 1. Admin Guide
 
 
-   Table of Contents
+1.1. Overview
+
+   This is a module that enables media streams to be proxied via an
+   rtpproxy.
 
 
-   1. Overview
-   2. NAT pinging types
-   3. Multiple RTPProxy usage
-   4. Dependencies
-
-        4.1. Kamailio Modules
-        4.2. External Libraries or Applications
-
-   5. Exported Parameters
-
-        5.1. natping_interval (integer)
-        5.2. ping_nated_only (integer)
-        5.3. natping_processes (integer)
-        5.4. natping_socket (string)
-        5.5. received_avp (str)
-        5.6. rtpproxy_sock (string)
-        5.7. rtpproxy_disable_tout (integer)
-        5.8. rtpproxy_tout (integer)
-        5.9. rtpproxy_retr (integer)
-        5.10. force_socket (string)
-        5.11. sipping_bflag (integer)
-        5.12. sipping_from (string)
-        5.13. sipping_method (string)
-        5.14. nortpproxy_str (string)
-
-   6. Exported Functions
-
-        6.1. fix_nated_contact()
-        6.2. fix_nated_sdp(flags [, ip_address])
-        6.3. set_rtp_proxy_set()
-        6.4. force_rtp_proxy([flags [, ip_address]])
-        6.5. rtpproxy_offer([flags [, ip_address]])
-        6.6. rtpproxy_answer([flags [, ip_address]])
-        6.7. unforce_rtp_proxy()
-        6.8. rtpproxy_stream2uac(prompt_name, count),
-                rtpproxy_stream2uas(prompt_name, count)
-
-        6.9. rtpproxy_stop_stream2uac(), rtpproxy_stop_stream2uas()
-        6.10. add_rcv_param([flag]),
-        6.11. fix_nated_register()
-        6.12. nat_uac_test(flags)
-        6.13. start_recording()
-        6.14. add_contact_alias()
-        6.15. handle_ruri_alias()
-
-   7. Exported Pseudo Variables
-
-        7.1. $rr_count
-        7.2. $rr_top_count
-
-   8. MI Commands
-
-        8.1. nh_enable_ping
-        8.2. nh_enable_rtpp
-        8.3. nh_show_rtpp
-
-1. Overview
-
-   This is a module to help with NAT traversal and reuse of tcp
-   connections. In particular, it helps symmetric UAs that don't advertise
-   they are symmetric and are not able to determine their public address.
-
-   Function fix_nated_contact() rewrites Contact header field with
-   request's source address:port pair. Function fix_nated_sdp() adds the
-   active direction ndication to SDP (flag 0x01) and updates source IP
-   address too (flag 0x02). Function fix_nated_register() exports exports
-   the request's source address:port into an AVP to be used during save()
-   and should be used for REGISTER requests.
-
-   Note: fix_nated_contact changes the Contact header, thus it breaks the
-   RFC. Although usually this is not an issue, it may cause problems with
-   strict SIP clients. An alternative is to use add_contact_alias() that
-   together with handle_ruri_alias() is standards conforming and also
-   supports reuse of TCP/TLS connections.
-
-   Known devices that get along over NATs with nathelper are ATAs (as
+   Known devices that get along over NATs with rtpproxy are ATAs (as
    clients) and Cisco Gateways (since 12.2(T)) as servers. See
    clients) and Cisco Gateways (since 12.2(T)) as servers. See
    http://www.cisco.com/en/US/products/sw/iosswrel/ps1839/products_feature
    http://www.cisco.com/en/US/products/sw/iosswrel/ps1839/products_feature
    _guide09186a0080110bf9.html">
    _guide09186a0080110bf9.html">
 
 
-2. NAT pinging types
-
-   Currently, the nathelper module supports two types of NAT pings:
-     * UDP package - 4 bytes (zero filled) UDP packages are sent to the
-       contact address.
-          + Advantages: low bandwitdh traffic, easy to generate by
-            Kamailio;
-          + Disadvantages: unidirectional traffic through NAT (inbound -
-            from outside to inside); As many NATs do update the bind
-            timeout only on outbound traffic, the bind may expire and
-            closed.
-     * SIP request - a stateless SIP request is sent to the contact
-       address.
-          + Advantages: bidirectional traffic through NAT, since each PING
-            request from Kamailio (inbound traffic) will force the SIP
-            client to generate a SIP reply (outbound traffic) - the NAT
-            bind will be surely kept open.
-          + Disadvantages: higher bandwitdh traffic, more expensive (as
-            time) to generate by Kamailio;
-
-3. Multiple RTPProxy usage
-
-   Currently, the nathelper module can support multiple rtpproxies for
+1.2. Multiple RTPProxy usage
+
+   Currently, the rtpproxy module can support multiple rtpproxies for
    balancing/distribution and control/selection purposes.
    balancing/distribution and control/selection purposes.
 
 
    The module allows the definition of several sets of rtpproxies -
    The module allows the definition of several sets of rtpproxies -
    load-balancing will be performed over a set and the user has the
    load-balancing will be performed over a set and the user has the
    ability to choose what set should be used. The set is selected via its
    ability to choose what set should be used. The set is selected via its
    id - the id being defined along with the set. Refer to the
    id - the id being defined along with the set. Refer to the
-   “rtpproxy_sock� module parameter definition for syntax description.
+   "rtpproxy_sock" module parameter definition for syntax description.
 
 
    The balancing inside a set is done automatically by the module based on
    The balancing inside a set is done automatically by the module based on
    the weight of each rtpproxy from the set.
    the weight of each rtpproxy from the set.
@@ -256,225 +134,93 @@ Chapter 1. Admin Guide
    IMPORTANT: if you use multiple sets, take care and use the same set for
    IMPORTANT: if you use multiple sets, take care and use the same set for
    both force_ and unforce_rtpproxy()!!
    both force_ and unforce_rtpproxy()!!
 
 
-4. Dependencies
+1.3. Dependencies
 
 
-   4.1. Kamailio Modules
-   4.2. External Libraries or Applications
-
-4.1. Kamailio Modules
+1.3.1. Kamailio Modules
 
 
    The following modules must be loaded before this module:
    The following modules must be loaded before this module:
-     * usrloc module - only if the NATed contacts are to be pinged.
+     * None
 
 
-4.2. External Libraries or Applications
+1.3.2. External Libraries or Applications
 
 
    The following libraries or applications must be installed before
    The following libraries or applications must be installed before
    running Kamailio with this module loaded:
    running Kamailio with this module loaded:
      * None.
      * None.
 
 
-5. Exported Parameters
-
-   5.1. natping_interval (integer)
-   5.2. ping_nated_only (integer)
-   5.3. natping_processes (integer)
-   5.4. natping_socket (string)
-   5.5. received_avp (str)
-   5.6. rtpproxy_sock (string)
-   5.7. rtpproxy_disable_tout (integer)
-   5.8. rtpproxy_tout (integer)
-   5.9. rtpproxy_retr (integer)
-   5.10. force_socket (string)
-   5.11. sipping_bflag (integer)
-   5.12. sipping_from (string)
-   5.13. sipping_method (string)
-   5.14. nortpproxy_str (string)
-
-5.1. natping_interval (integer)
-
-   Period of time in seconds between sending the NAT pings to all
-   currently registered UAs to keep their NAT bindings alive. Value of 0
-   disables this functionality.
+1.4. Exported Parameters
 
 
-Note
-
-   Enabling the NAT pinging functionality will force the module to bind
-   itself to USRLOC module.
-
-   Default value is 0.
-
-   Example 1.1. Set natping_interval parameter
-...
-modparam("nathelper", "natping_interval", 10)
-...
-
-5.2. ping_nated_only (integer)
-
-   If this variable is set then only contacts that have “behind_NAT� flag
-   in user location database set will get ping.
-
-   Default value is 0.
-
-   Example 1.2. Set ping_nated_only parameter
-...
-modparam("nathelper", "ping_nated_only", 1)
-...
-
-5.3. natping_processes (integer)
-
-   How many timer processes should be created by the module for the
-   exclusive task of sending the NAT pings.
-
-   Default value is 1.
-
-   Example 1.3. Set natping_processes parameter
-...
-modparam("nathelper", "natping_processes", 3)
-...
-
-5.4. natping_socket (string)
-
-   Spoof the natping's source-ip to this address. Works only for IPv4.
-
-   Default value is NULL.
-
-   Example 1.4. Set natping_socket parameter
-...
-modparam("nathelper", "natping_socket", "192.168.1.1:5006")
-...
-
-5.5. received_avp (str)
-
-   The name of the Attribute-Value-Pair (AVP) used to store the URI
-   containing the received IP, port, and protocol. The URI is created by
-   fix_nated_register function of nathelper module and the attribute is
-   then used by the registrar to store the received parameters. Do not
-   forget to change the value of corresponding parameter in registrar
-   module if you change the value of this parameter.
-
-Note
-
-   You must set this parameter if you use "fix_nated_register". In such
-   case you must set the parameter with same name of "registrar" module to
-   same value.
-
-   Default value is "NULL" (disabled).
-
-   Example 1.5. Set received_avp parameter
-...
-modparam("nathelper", "received_avp", "$avp(i:42)")
-...
-
-5.6. rtpproxy_sock (string)
+1.4.1. rtpproxy_sock (string)
 
 
    Definition of socket(s) used to connect to (a set) RTPProxy. It may
    Definition of socket(s) used to connect to (a set) RTPProxy. It may
    specify a UNIX socket or an IPv4/IPv6 UDP socket.
    specify a UNIX socket or an IPv4/IPv6 UDP socket.
 
 
-   Default value is “NONE� (disabled).
+   Default value is "NONE" (disabled).
 
 
-   Example 1.6. Set rtpproxy_sock parameter
+   Example 1.1. Set rtpproxy_sock parameter
 ...
 ...
 # single rtproxy
 # single rtproxy
-modparam("nathelper", "rtpproxy_sock", "udp:localhost:12221")
+modparam("rtpproxy", "rtpproxy_sock", "udp:localhost:12221")
 # multiple rtproxies for LB
 # multiple rtproxies for LB
-modparam("nathelper", "rtpproxy_sock",
+modparam("rtpproxy", "rtpproxy_sock",
         "udp:localhost:12221 udp:localhost:12222")
         "udp:localhost:12221 udp:localhost:12222")
 # multiple sets of multiple rtproxies
 # multiple sets of multiple rtproxies
-modparam("nathelper", "rtpproxy_sock",
+modparam("rtpproxy", "rtpproxy_sock",
         "1 == udp:localhost:12221 udp:localhost:12222")
         "1 == udp:localhost:12221 udp:localhost:12222")
-modparam("nathelper", "rtpproxy_sock",
+modparam("rtpproxy", "rtpproxy_sock",
         "2 == udp:localhost:12225")
         "2 == udp:localhost:12225")
 ...
 ...
 
 
-5.7. rtpproxy_disable_tout (integer)
+1.4.2. rtpproxy_disable_tout (integer)
 
 
-   Once RTPProxy was found unreachable and marked as disable, nathelper
+   Once RTPProxy was found unreachable and marked as disable, rtpproxy
    will not attempt to establish communication to RTPProxy for
    will not attempt to establish communication to RTPProxy for
    rtpproxy_disable_tout seconds.
    rtpproxy_disable_tout seconds.
 
 
-   Default value is “60�.
+   Default value is "60".
 
 
-   Example 1.7. Set rtpproxy_disable_tout parameter
+   Example 1.2. Set rtpproxy_disable_tout parameter
 ...
 ...
-modparam("nathelper", "rtpproxy_disable_tout", 20)
+modparam("rtpproxy", "rtpproxy_disable_tout", 20)
 ...
 ...
 
 
-5.8. rtpproxy_tout (integer)
+1.4.3. rtpproxy_tout (integer)
 
 
    Timeout value in waiting for reply from RTPProxy.
    Timeout value in waiting for reply from RTPProxy.
 
 
-   Default value is “1�.
+   Default value is "1".
 
 
-   Example 1.8. Set rtpproxy_tout parameter
+   Example 1.3. Set rtpproxy_tout parameter
 ...
 ...
-modparam("nathelper", "rtpproxy_tout", 2)
+modparam("rtpproxy", "rtpproxy_tout", 2)
 ...
 ...
 
 
-5.9. rtpproxy_retr (integer)
+1.4.4. rtpproxy_retr (integer)
 
 
-   How many times nathelper should retry to send and receive after timeout
+   How many times rtpproxy should retry to send and receive after timeout
    was generated.
    was generated.
 
 
-   Default value is “5�.
+   Default value is "5".
 
 
-   Example 1.9. Set rtpproxy_retr parameter
+   Example 1.4. Set rtpproxy_retr parameter
 ...
 ...
-modparam("nathelper", "rtpproxy_retr", 2)
+modparam("rtpproxy", "rtpproxy_retr", 2)
 ...
 ...
 
 
-5.10. force_socket (string)
+1.4.5. force_socket (string)
 
 
    Socket to be forced in communicating to RTPProxy. It makes sense only
    Socket to be forced in communicating to RTPProxy. It makes sense only
    for UDP communication. If no one specified, the OS will choose.
    for UDP communication. If no one specified, the OS will choose.
 
 
-   Default value is “NULL�.
-
-   Example 1.10. Set force_socket parameter
-...
-modparam("nathelper", "force_socket", "localhost:33333")
-...
-
-5.11. sipping_bflag (integer)
-
-   What branch flag should be used by the module to identify NATed
-   contacts for which it should perform NAT ping via a SIP request instead
-   if dummy UDP package.
-
-   Default value is -1 (disabled).
-
-   Example 1.11. Set sipping_bflag parameter
-...
-modparam("nathelper", "sipping_bflag", 7)
-...
-
-5.12. sipping_from (string)
-
-   The parameter sets the SIP URI to be used in generating the SIP
-   requests for NAT ping purposes. To enable the SIP request pinging
-   feature, you have to set this parameter. The SIP request pinging will
-   be used only for requests marked so.
-
-   Default value is “NULL�.
-
-   Example 1.12. Set sipping_from parameter
-...
-modparam("nathelper", "sipping_from", "sip:[email protected]")
-...
-
-5.13. sipping_method (string)
+   Default value is "NULL".
 
 
-   The parameter sets the SIP method to be used in generating the SIP
-   requests for NAT ping purposes.
-
-   Default value is “OPTIONS�.
-
-   Example 1.13. Set sipping_method parameter
+   Example 1.5. Set force_socket parameter
 ...
 ...
-modparam("nathelper", "sipping_method", "INFO")
+modparam("rtpproxy", "force_socket", "localhost:33333")
 ...
 ...
 
 
-5.14. nortpproxy_str (string)
+1.4.6. nortpproxy_str (string)
 
 
-   The parameter sets the SDP attribute used by nathelper to mark the
+   The parameter sets the SDP attribute used by rtpproxy to mark the
    packet SDP informations have already been mangled.
    packet SDP informations have already been mangled.
 
 
    If empty string, no marker will be added or checked.
    If empty string, no marker will be added or checked.
@@ -483,74 +229,16 @@ Note
 
 
    The string must be a complete SDP line, including the EOH (\r\n).
    The string must be a complete SDP line, including the EOH (\r\n).
 
 
-   Default value is “a=nortpproxy:yes\r\n�.
+   Default value is "a=nortpproxy:yes\r\n".
 
 
-   Example 1.14. Set nortpproxy_str parameter
+   Example 1.6. Set nortpproxy_str parameter
 ...
 ...
-modparam("nathelper", "nortpproxy_str", "a=sdpmangled:yes\r\n")
+modparam("rtpproxy", "nortpproxy_str", "a=sdpmangled:yes\r\n")
 ...
 ...
 
 
-6. Exported Functions
-
-   6.1. fix_nated_contact()
-   6.2. fix_nated_sdp(flags [, ip_address])
-   6.3. set_rtp_proxy_set()
-   6.4. force_rtp_proxy([flags [, ip_address]])
-   6.5. rtpproxy_offer([flags [, ip_address]])
-   6.6. rtpproxy_answer([flags [, ip_address]])
-   6.7. unforce_rtp_proxy()
-   6.8. rtpproxy_stream2uac(prompt_name, count),
-          rtpproxy_stream2uas(prompt_name, count)
-
-   6.9. rtpproxy_stop_stream2uac(), rtpproxy_stop_stream2uas()
-   6.10. add_rcv_param([flag]),
-   6.11. fix_nated_register()
-   6.12. nat_uac_test(flags)
-   6.13. start_recording()
-   6.14. add_contact_alias()
-   6.15. handle_ruri_alias()
-
-6.1.  fix_nated_contact()
+1.5. Exported Functions
 
 
-   Rewrites Contact HF to contain request's source address:port.
-
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
-   BRANCH_ROUTE.
-
-   Example 1.15. fix_nated_contact usage
-...
-if (search("User-Agent: Cisco ATA.*") {fix_nated_contact();};
-...
-
-6.2.  fix_nated_sdp(flags [, ip_address])
-
-   Alters the SDP information in orer to facilitate NAT traversal. What
-   changes to be performed may be controled via the “flags� parameter.
-
-   Meaning of the parameters is as follows:
-     * flags - the value may be a bitwise OR of the following flags:
-          + 0x01 - adds “a=direction:active� SDP line;
-          + 0x02 - rewrite media IP address (c=) with source address of
-            the message or the provided IP address (the provide IP address
-            take precedence over the source address).
-          + 0x04 - adds “a=nortpproxy:yes� SDP line;
-          + 0x08 - rewrite IP from origin description (o=) with source
-            address of the message or the provided IP address (the provide
-            IP address take precedence over the source address).
-     * ip_address - IP to be used for rewritting SDP. If not specified,
-       the received signalling IP will be used. The parameter allows
-       pseudo-variables usage. NOTE: For the IP to be used, you need to
-       use 0x02 or 0x08 flags, otherwise it will have no effect.
-
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
-   FAILURE_ROUTE, BRANCH_ROUTE.
-
-   Example 1.16. fix_nated_sdp usage
-...
-if (search("User-Agent: Cisco ATA.*") {fix_nated_sdp("3");};
-...
-
-6.3.  set_rtp_proxy_set()
+1.5.1.  set_rtp_proxy_set()
 
 
    Sets the Id of the rtpproxy set to be used for the next
    Sets the Id of the rtpproxy set to be used for the next
    [un]force_rtp_proxy(), rtpproxy_offer() or rtpproxy_answer() command.
    [un]force_rtp_proxy(), rtpproxy_offer() or rtpproxy_answer() command.
@@ -558,13 +246,13 @@ if (search("User-Agent: Cisco ATA.*") {fix_nated_sdp("3");};
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    BRANCH_ROUTE.
    BRANCH_ROUTE.
 
 
-   Example 1.17. fix_nated_contact usage
+   Example 1.7. fix_nated_contact usage
 ...
 ...
 set_rtp_proxy_set("2");
 set_rtp_proxy_set("2");
 force_rtp_proxy();
 force_rtp_proxy();
 ...
 ...
 
 
-6.4.  force_rtp_proxy([flags [, ip_address]])
+1.5.2.  force_rtp_proxy([flags [, ip_address]])
 
 
    Rewrites SDP body to ensure that media is passed through an RTP proxy.
    Rewrites SDP body to ensure that media is passed through an RTP proxy.
    It can have optional parameters to force additional features. If
    It can have optional parameters to force additional features. If
@@ -589,7 +277,7 @@ force_rtp_proxy();
      * flags - flags to turn on some features.
      * flags - flags to turn on some features.
           + a - flags that UA from which message is received doesn't
           + a - flags that UA from which message is received doesn't
             support symmetric RTP. (automatically sets the 'r' flag)
             support symmetric RTP. (automatically sets the 'r' flag)
-          + l - force “lookup�, that is, only rewrite SDP when
+          + l - force "lookup", that is, only rewrite SDP when
             corresponding session is already exists in the RTP proxy. By
             corresponding session is already exists in the RTP proxy. By
             default is on when the session is to be completed (reply in
             default is on when the session is to be completed (reply in
             non-swap or ACK in swap mode).
             non-swap or ACK in swap mode).
@@ -608,13 +296,13 @@ force_rtp_proxy();
             Note: As rtpproxy is in bridge mode per default asymmetric,
             Note: As rtpproxy is in bridge mode per default asymmetric,
             you have to specify the 'w' flag for clients behind NAT! See
             you have to specify the 'w' flag for clients behind NAT! See
             also above notes!
             also above notes!
-          + f - instructs nathelper to ignore marks inserted by another
-            nathelper in transit to indicate that the session is already
+          + f - instructs rtpproxy to ignore marks inserted by another
+            rtpproxy in transit to indicate that the session is already
             goes through another proxy. Allows creating chain of proxies.
             goes through another proxy. Allows creating chain of proxies.
           + r - flags that IP address in SDP should be trusted. Without
           + r - flags that IP address in SDP should be trusted. Without
-            this flag, nathelper ignores address in the SDP and uses
-            source address of the SIP message as media address which is
-            passed to the RTP proxy.
+            this flag, rtpproxy ignores address in the SDP and uses source
+            address of the SIP message as media address which is passed to
+            the RTP proxy.
           + o - flags that IP from the origin description (o=) should be
           + o - flags that IP from the origin description (o=) should be
             also changed.
             also changed.
           + c - flags to change the session-level SDP connection (c=) IP
           + c - flags to change the session-level SDP connection (c=) IP
@@ -643,14 +331,14 @@ force_rtp_proxy();
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
    FAILURE_ROUTE, BRANCH_ROUTE.
 
 
-   Example 1.18. force_rtp_proxy usage
+   Example 1.8. force_rtp_proxy usage
 ...
 ...
 if (search("User-Agent: Cisco ATA.*") {force_rtp_proxy();};
 if (search("User-Agent: Cisco ATA.*") {force_rtp_proxy();};
 if (src_ip=1.2.3.4) {force_rtp_proxy("i");};
 if (src_ip=1.2.3.4) {force_rtp_proxy("i");};
 if (search("User-Agent: Cisco ATA.*") {force_rtp_proxy("","1.2.3.4");};
 if (search("User-Agent: Cisco ATA.*") {force_rtp_proxy("","1.2.3.4");};
 ...
 ...
 
 
-6.5.  rtpproxy_offer([flags [, ip_address]])
+1.5.3.  rtpproxy_offer([flags [, ip_address]])
 
 
    Rewrites SDP body to ensure that media is passed through an RTP proxy.
    Rewrites SDP body to ensure that media is passed through an RTP proxy.
    Equivalent of force_rtp_proxy() function to be invoked on INVITE for
    Equivalent of force_rtp_proxy() function to be invoked on INVITE for
@@ -663,7 +351,7 @@ if (search("User-Agent: Cisco ATA.*") {force_rtp_proxy("","1.2.3.4");};
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
    FAILURE_ROUTE, BRANCH_ROUTE.
 
 
-   Example 1.19. rtpproxy_offer usage
+   Example 1.9. rtpproxy_offer usage
 route {
 route {
 ...
 ...
     if (is_method("INVITE")) {
     if (is_method("INVITE")) {
@@ -695,7 +383,7 @@ onreply_route[2]
 ...
 ...
 }
 }
 
 
-6.6.  rtpproxy_answer([flags [, ip_address]])
+1.5.4.  rtpproxy_answer([flags [, ip_address]])
 
 
    Rewrites SDP body to ensure that media is passed through an RTP proxy.
    Rewrites SDP body to ensure that media is passed through an RTP proxy.
    Equivalent of force_rtp_proxy() function to be invoked on 200 OK for
    Equivalent of force_rtp_proxy() function to be invoked on 200 OK for
@@ -708,23 +396,23 @@ onreply_route[2]
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
    FAILURE_ROUTE, BRANCH_ROUTE.
 
 
-   Example 1.20.
+   Example 1.10.
 
 
    See rtpproxy_offer() function example above for example.
    See rtpproxy_offer() function example above for example.
 
 
-6.7.  unforce_rtp_proxy()
+1.5.5.  unforce_rtp_proxy()
 
 
    Tears down the RTPProxy session for the current call.
    Tears down the RTPProxy session for the current call.
 
 
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
    FAILURE_ROUTE, BRANCH_ROUTE.
 
 
-   Example 1.21. unforce_rtp_proxy usage
+   Example 1.11. unforce_rtp_proxy usage
 ...
 ...
 unforce_rtp_proxy();
 unforce_rtp_proxy();
 ...
 ...
 
 
-6.8.  rtpproxy_stream2uac(prompt_name, count),
+1.5.6.  rtpproxy_stream2uac(prompt_name, count),
 rtpproxy_stream2uas(prompt_name, count)
 rtpproxy_stream2uas(prompt_name, count)
 
 
    Instruct the RTPproxy to stream prompt/announcement pre-encoded with
    Instruct the RTPproxy to stream prompt/announcement pre-encoded with
@@ -756,7 +444,7 @@ rtpproxy_stream2uas(prompt_name, count)
        -1 means that it will be streaming in loop indefinitely, until
        -1 means that it will be streaming in loop indefinitely, until
        appropriate rtpproxy_stop_stream2xxx is issued.
        appropriate rtpproxy_stop_stream2xxx is issued.
 
 
-   Example 1.22. rtpproxy_stream2xxx usage
+   Example 1.12. rtpproxy_stream2xxx usage
 ...
 ...
     if (is_method("INVITE")) {
     if (is_method("INVITE")) {
         rtpproxy_offer();
         rtpproxy_offer();
@@ -768,7 +456,7 @@ rtpproxy_stream2uas(prompt_name, count)
     };
     };
 ...
 ...
 
 
-6.9.  rtpproxy_stop_stream2uac(), rtpproxy_stop_stream2uas()
+1.5.7.  rtpproxy_stop_stream2uac(), rtpproxy_stop_stream2uas()
 
 
    Stop streaming of announcement/prompt/MOH started previously by the
    Stop streaming of announcement/prompt/MOH started previously by the
    respective rtpproxy_stream2xxx. The uac/uas suffix selects whose
    respective rtpproxy_stream2xxx. The uac/uas suffix selects whose
@@ -777,181 +465,23 @@ rtpproxy_stream2uas(prompt_name, count)
 
 
    These functions can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
    These functions can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
 
 
-6.10.  add_rcv_param([flag]),
-
-   Add received parameter to Contact header fields or Contact URI. The
-   parameter will contain URI created from the source IP, port, and
-   protocol of the packet containing the SIP message. The parameter can be
-   then processed by another registrar, this is useful, for example, when
-   replicating register messages using t_replicate function to another
-   registrar.
-
-   Meaning of the parameters is as follows:
-     * flag - flags to indicate if the parameter should be added to
-       Contact URI or Contact header. If the flag is non-zero, the
-       parameter will be added to the Contact URI. If not used or equal to
-       zero, the parameter will go to the Contact header.
-
-   This function can be used from REQUEST_ROUTE.
-
-   Example 1.23. add_rcv_paramer usage
-...
-add_rcv_param(); # add the parameter to the Contact header
-....
-add_rcv_param("1"); # add the parameter to the Contact URI
-...
-
-6.11.  fix_nated_register()
-
-   The function creates a URI consisting of the source IP, port, and
-   protocol and stores the URI in an Attribute-Value-Pair. The URI will be
-   appended as "received" parameter to Contact in 200 OK and registrar
-   will store it in the received cloumn in the location table.
-
-   Note: You have to set the received_avp parameter of the nathelper
-   module and the registrar module (both module parameters must have the
-   same value) to use this function.
-
-   This function can be used from REQUEST_ROUTE.
-
-   Example 1.24. fix_nated_register usage
-...
-fix_nated_register();
-...
-
-6.12.  nat_uac_test(flags)
-
-   Tries to guess if client's request originated behind a nat. The
-   parameter determines what heuristics is used.
-
-   Meaning of the flags is as follows:
-     * 1 - Contact header field is searched for occurrence of RFC1918
-       addresses.
-     * 2 - the "received" test is used: address in Via is compared against
-       source IP address of signaling
-     * 4 - Top Most VIA is searched for occurrence of RFC1918 addresses
-     * 8 - SDP is searched for occurrence of RFC1918 addresses
-     * 16 - test if the source port is different from the port in Via
-
-   All flags can be bitwise combined, the test returns true if any of the
-   tests identified a NAT.
-
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
-   FAILURE_ROUTE, BRANCH_ROUTE.
-
-6.13.  start_recording()
+1.5.8.  start_recording()
 
 
    This command will send a signal to the RTP-Proxy to record the RTP
    This command will send a signal to the RTP-Proxy to record the RTP
    stream on the RTP-Proxy.
    stream on the RTP-Proxy.
 
 
    This function can be used from REQUEST_ROUTE and ONREPLY_ROUTE.
    This function can be used from REQUEST_ROUTE and ONREPLY_ROUTE.
 
 
-   Example 1.25. start_recording usage
+   Example 1.13. start_recording usage
 ...
 ...
 start_recording();
 start_recording();
 ...
 ...
 
 
-6.14.  add_contact_alias()
-
-   Adds ;alias=ip:port parameter to contact URI containing received
-   ip:port if contact uri ip:port does not match received ip:port.
-
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
-   BRANCH_ROUTE, and LOCAL_ROUTE.
-
-   Example 1.26. add_contact_alias usage
-...
-    if (!is_present_hf("Record-Route")) {
-        if (!add_contact_alias()) {
-            xlog("L_ERR", "Error in aliasing contact $ct\n");
-            send_reply("400", "Bad request");
-            exit;
-        };
-    };
-...
-
-6.15.  handle_ruri_alias()
-
-   Checks if Request URI has alias param and if so, removes it and sets
-   $du based on its value. Note that this means that routing of request is
-   based on ;alias parameter value of Request URI rather than Request URI
-   itself. If you call handle_ruri_alias() on a request, make thus sure
-   that you screen alias parameter value of Request URI the same way as
-   you would screen Request URI itself.
-
-   Returns 1 if ;alias param was found and $du was set and $ru rewritten,
-   2 if alias param was not found and nothing was done, or -1 in case of
-   error.
-
-   This function can be used from REQUEST_ROUTE, BRANCH_ROUTE, and
-   LOCAL_ROUTE.
-
-   Example 1.27. handle_ruri_alias usage
-...
-    if ($du == "") {
-        handle_ruri_alias();
-        switch ($rc) {
-        case -1:
-            xlog("L_ERR", "Failed to handle alias of R-URI $ru\n");
-            send_reply("400", "Bad request");
-            exit;
-        case 1:
-            xlog("L_INFO", "Routing in-dialog $rm from $fu to $du\n");
-            break;
-        case 2:
-            xlog("L_INFO", "Routing in-dialog $rm from $fu to $ru\n");
-            break;
-         };
-    };
-...
-
-7. Exported Pseudo Variables
-
-   7.1. $rr_count
-   7.2. $rr_top_count
-
-7.1. $rr_count
-
-   Number of Record Routes in received SIP request or reply.
-
-   Example 1.28. $rr_count usage
-...
-    $avp(rr_count) = $rr_count;
-...
-
-7.2. $rr_top_count
-
-   If topmost Record Route in received SIP request or reply is a double
-   Record Route, value of $rr_top_count is 2. If it a single Record Route,
-   value of $rr_top_count is 1. If there is no Record Route(s), value of
-   $rr_top_count is 0.
-
-   Example 1.29. $rr_top_count usage
-...
-    if ($rr_count == $avp(rr_count) + $rr_top_count) {
-        route(ADD_CONTACT_ALIAS);
-    };
-...
-
-8. MI Commands
-
-   8.1. nh_enable_ping
-   8.2. nh_enable_rtpp
-   8.3. nh_show_rtpp
+1.6. Exported Pseudo Variables
 
 
-8.1. nh_enable_ping
+1.7. MI Commands
 
 
-   Enables natping if parameter value greater than 0. Disables natping if
-   parameter value is 0.
-
-   The function takes only one parameter - a number in decimal format.
-
-   Example 1.30. nh_enable_ping usage
-...
-$ kamctl fifo nh_enable_ping 1
-...
-
-8.2. nh_enable_rtpp
+1.7.1. nh_enable_rtpp
 
 
    Enables a rtp proxy if parameter value is greater than 0. Disables it
    Enables a rtp proxy if parameter value is greater than 0. Disables it
    if a zero value is given.
    if a zero value is given.
@@ -964,35 +494,30 @@ $ kamctl fifo nh_enable_ping 1
    NOTE: if a rtpproxy is defined multiple times (in the same or diferente
    NOTE: if a rtpproxy is defined multiple times (in the same or diferente
    sete), all its instances will be enables/disabled.
    sete), all its instances will be enables/disabled.
 
 
-   Example 1.31.  nh_enable_rtpp usage
+   Example 1.14.  nh_enable_rtpp usage
 ...
 ...
 $ kamctl fifo nh_enable_rtpp udp:192.168.2.133:8081 0
 $ kamctl fifo nh_enable_rtpp udp:192.168.2.133:8081 0
 ...
 ...
 
 
-8.3. nh_show_rtpp
+1.7.2. nh_show_rtpp
 
 
    Displays all the rtp proxies and their information: set and status
    Displays all the rtp proxies and their information: set and status
    (disabled or not, weight and recheck_ticks).
    (disabled or not, weight and recheck_ticks).
 
 
    No parameter.
    No parameter.
 
 
-   Example 1.32.  nh_show_rtpp usage
+   Example 1.15.  nh_show_rtpp usage
 ...
 ...
 $ kamctl fifo nh_show_rtpp
 $ kamctl fifo nh_show_rtpp
 ...
 ...
 
 
 Chapter 2. Frequently Asked Questions
 Chapter 2. Frequently Asked Questions
 
 
-   2.1. What happend with “rtpproxy_disable� parameter?
-   2.2. Where can I find more about Kamailio?
-   2.3. Where can I post a question about this module?
-   2.4. How can I report a bug?
-
    2.1.
    2.1.
 
 
-       What happend with “rtpproxy_disable� parameter?
+       What happend with "rtpproxy_disable" parameter?
 
 
-       It was removed as it became obsolete - now “rtpproxy_sock� can take
+       It was removed as it became obsolete - now "rtpproxy_sock" can take
        empty value to disable the rtpproxy functionality.
        empty value to disable the rtpproxy functionality.
 
 
    2.2.
    2.2.

+ 12 - 1
modules_k/rtpproxy/doc/nathelper.xml

@@ -10,7 +10,7 @@
 
 
 <book xmlns:xi="http://www.w3.org/2001/XInclude">
 <book xmlns:xi="http://www.w3.org/2001/XInclude">
 	<bookinfo>
 	<bookinfo>
-	<title>nathelper Module</title>
+	<title>rtpproxy Module</title>
 	<productname class="trade">&kamailioname;</productname>
 	<productname class="trade">&kamailioname;</productname>
 	<authorgroup>
 	<authorgroup>
 		<author>
 		<author>
@@ -50,6 +50,13 @@
 			<email>[email protected]</email>
 			<email>[email protected]</email>
 		</address>
 		</address>
 		</editor>
 		</editor>
+		<editor>
+		<firstname>Sas</firstname>
+		<surname>Ovidiu</surname>
+		<address>
+			<email>[email protected]</email>
+		</address>
+		</editor>
 	</authorgroup>
 	</authorgroup>
 	<copyright>
 	<copyright>
 		<year>2003-2008</year>
 		<year>2003-2008</year>
@@ -63,6 +70,10 @@
 		<year>2009</year>
 		<year>2009</year>
 		<holder>TuTPro Inc.</holder>
 		<holder>TuTPro Inc.</holder>
 	</copyright>
 	</copyright>
+	<copyright>
+		<year>2010</year>
+		<holder>VoIPEmbedded Inc.</holder>
+	</copyright>
 	<revhistory>
 	<revhistory>
 		<revision>
 		<revision>
 		<revnumber>$Revision$</revnumber>
 		<revnumber>$Revision$</revnumber>

+ 20 - 582
modules_k/rtpproxy/doc/nathelper_admin.xml

@@ -17,87 +17,21 @@
 	<section>
 	<section>
 	<title>Overview</title>
 	<title>Overview</title>
 	<para>
 	<para>
-		This is a module to help with &nat; traversal and reuse
-	of tcp connections.  In particular, 
-		it helps symmetric &ua;s that don't advertise they are symmetric 
-		and are not able to determine their public
-	address. 
+		This is a module that enables media streams to be proxied
+		via an rtpproxy.
 	</para>
 	</para>
 	<para>
 	<para>
-		Function fix_nated_contact() rewrites Contact header field with request's source
-		address:port pair. Function fix_nated_sdp() adds the active direction ndication 
-		to &sdp; (flag 0x01) and updates source &ip; address too (flag 0x02). Function
-		fix_nated_register() exports exports the request's source address:port into an AVP
-		to be used during save() and should be used for REGISTER requests.
-	</para>
-        <para>
-		Note: fix_nated_contact changes the Contact header, thus it breaks the RFC.
-		Although usually this is not an issue, it may cause problems with strict
-		SIP clients.  An alternative is to use add_contact_alias() that
-		together with handle_ruri_alias() is standards
-	conforming and also supports reuse of TCP/TLS connections.
-	</para>
-	<para>
-		Known devices that get along over &nat;s with nathelper are ATAs 
+		Known devices that get along over &nat;s with rtpproxy are ATAs 
 		(as clients) and Cisco Gateways (since 12.2(T)) as servers.  See <ulink
 		(as clients) and Cisco Gateways (since 12.2(T)) as servers.  See <ulink
 		url="http://www.cisco.com/en/US/products/sw/iosswrel/ps1839/products_feature_guide09186a0080110bf9.html">
 		url="http://www.cisco.com/en/US/products/sw/iosswrel/ps1839/products_feature_guide09186a0080110bf9.html">
 		http://www.cisco.com/en/US/products/sw/iosswrel/ps1839/products_feature_guide09186a0080110bf9.html"></ulink>
 		http://www.cisco.com/en/US/products/sw/iosswrel/ps1839/products_feature_guide09186a0080110bf9.html"></ulink>
 	</para>
 	</para>
 	</section>
 	</section>
 
 
-	<section>
-	<title>NAT pinging types</title>
-	<para>
-		Currently, the nathelper module supports two types of NAT pings:
-	</para>
-	<itemizedlist>
-		<listitem>
-			<para>
-			<emphasis>UDP package</emphasis> - 4 bytes (zero filled) UDP 
-			packages are sent to the contact address.
-			</para>
-			<itemizedlist>
-				<listitem>
-				<para><emphasis>Advantages:</emphasis> low bandwitdh traffic,
-				easy to generate by &kamailio;;
-				</para>
-				</listitem>
-				<listitem>
-				<para><emphasis>Disadvantages:</emphasis> unidirectional 
-				traffic through NAT (inbound - from outside to inside); As 
-				many NATs do update the bind timeout only on outbound traffic,
-				the bind may expire and closed.
-				</para>
-				</listitem>
-			</itemizedlist>
-		</listitem>
-		<listitem>
-			<para>
-			<emphasis>SIP request</emphasis> - a stateless SIP request is 
-			sent to the contact address.
-			</para>
-			<itemizedlist>
-				<listitem>
-				<para><emphasis>Advantages:</emphasis> bidirectional traffic
-				through NAT, since each PING request from &kamailio; (inbound 
-				traffic) will force the SIP client to generate a SIP reply 
-				(outbound traffic) - the NAT bind will be surely kept open.
-				</para>
-				</listitem>
-				<listitem>
-				<para><emphasis>Disadvantages:</emphasis> higher bandwitdh 
-				traffic, more expensive (as time) to generate by &kamailio;;
-				</para>
-				</listitem>
-			</itemizedlist>
-		</listitem>
-	</itemizedlist>
-	</section>
-
 	<section>
 	<section>
 	<title>Multiple RTPProxy usage</title>
 	<title>Multiple RTPProxy usage</title>
 	<para>
 	<para>
-		Currently, the nathelper module can support multiple rtpproxies for
+		Currently, the rtpproxy module can support multiple rtpproxies for
 		balancing/distribution and control/selection purposes.
 		balancing/distribution and control/selection purposes.
 	</para>
 	</para>
 	<para>
 	<para>
@@ -138,8 +72,7 @@
 			<itemizedlist>
 			<itemizedlist>
 			<listitem>
 			<listitem>
 			<para>
 			<para>
-				<emphasis>usrloc</emphasis> module - only if the NATed 
-				contacts are to be pinged.
+				<emphasis>None</emphasis>
 			</para>
 			</para>
 			</listitem>
 			</listitem>
 			</itemizedlist>
 			</itemizedlist>
@@ -163,122 +96,6 @@
 
 
 	<section>
 	<section>
 	<title>Exported Parameters</title>
 	<title>Exported Parameters</title>
-	<section>
-		<title><varname>natping_interval</varname> (integer)</title>
-		<para>
-		Period of time in seconds between sending the NAT pings to all 
-		currently registered &ua;s to keep their &nat; bindings alive. 
-		Value of 0 disables this functionality.
-		</para>
-		<note><para>
-		Enabling the NAT pinging functionality will force the module to
-		bind itself to USRLOC module.
-		</para></note>
-		<para>
-		<emphasis>
-			Default value is 0.
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>natping_interval</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-modparam("nathelper", "natping_interval", 10)
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title><varname>ping_nated_only</varname> (integer)</title>
-		<para>
-		If this variable is set then only contacts that have 
-		<quote>behind_NAT</quote> flag in user location database set will 
-		get ping.
-		</para>
-		<para>
-		<emphasis>
-			Default value is 0.
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>ping_nated_only</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-modparam("nathelper", "ping_nated_only", 1)
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title><varname>natping_processes</varname> (integer)</title>
-		<para>
-		How many timer processes should be created by the module for the
-		exclusive task of sending the NAT pings.
-		</para>
-		<para>
-		<emphasis>
-			Default value is 1.
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>natping_processes</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-modparam("nathelper", "natping_processes", 3)
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title><varname>natping_socket</varname> (string)</title>
-		<para>
-		Spoof the natping's source-ip to this address. Works only for IPv4.
-		</para>
-		<para>
-		<emphasis>
-			Default value is NULL.
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>natping_socket</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-modparam("nathelper", "natping_socket", "192.168.1.1:5006")
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title><varname>received_avp</varname> (str)</title>
-		<para>
-		The name of the Attribute-Value-Pair (AVP) used to store the URI 
-		containing the received IP, port, and protocol. The URI is created 
-		by fix_nated_register function of nathelper module and the attribute 
-		is then used by the registrar to store the received parameters. Do 
-		not forget to change the value of corresponding parameter in
-		registrar module if you change the value of this parameter.
-		</para>
-		<note>
-		<para>
-		You must set this parameter if you use "fix_nated_register". In such
-		case you must set the parameter with same name of "registrar"
-		module to same value.
-		</para>
-		</note>
-		<para>
-		<emphasis>
-			Default value is "NULL" (disabled).
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>received_avp</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-modparam("nathelper", "received_avp", "$avp(i:42)")
-...
-</programlisting>
-		</example>
-	</section>
 	<section>
 	<section>
 		<title><varname>rtpproxy_sock</varname> (string)</title>
 		<title><varname>rtpproxy_sock</varname> (string)</title>
 		<para>
 		<para>
@@ -295,14 +112,14 @@ modparam("nathelper", "received_avp", "$avp(i:42)")
 		<programlisting format="linespecific">
 		<programlisting format="linespecific">
 ...
 ...
 # single rtproxy
 # single rtproxy
-modparam("nathelper", "rtpproxy_sock", "udp:localhost:12221")
+modparam("rtpproxy", "rtpproxy_sock", "udp:localhost:12221")
 # multiple rtproxies for LB
 # multiple rtproxies for LB
-modparam("nathelper", "rtpproxy_sock",
+modparam("rtpproxy", "rtpproxy_sock",
 	"udp:localhost:12221 udp:localhost:12222")
 	"udp:localhost:12221 udp:localhost:12222")
 # multiple sets of multiple rtproxies
 # multiple sets of multiple rtproxies
-modparam("nathelper", "rtpproxy_sock",
+modparam("rtpproxy", "rtpproxy_sock",
 	"1 == udp:localhost:12221 udp:localhost:12222")
 	"1 == udp:localhost:12221 udp:localhost:12222")
-modparam("nathelper", "rtpproxy_sock",
+modparam("rtpproxy", "rtpproxy_sock",
 	"2 == udp:localhost:12225")
 	"2 == udp:localhost:12225")
 ...
 ...
 </programlisting>
 </programlisting>
@@ -311,7 +128,7 @@ modparam("nathelper", "rtpproxy_sock",
 	<section>
 	<section>
 		<title><varname>rtpproxy_disable_tout</varname> (integer)</title>
 		<title><varname>rtpproxy_disable_tout</varname> (integer)</title>
 		<para>
 		<para>
-		Once RTPProxy was found unreachable and marked as disable, nathelper
+		Once RTPProxy was found unreachable and marked as disable, rtpproxy
 		will not attempt to establish communication to RTPProxy for 
 		will not attempt to establish communication to RTPProxy for 
 		rtpproxy_disable_tout seconds.
 		rtpproxy_disable_tout seconds.
 		</para>
 		</para>
@@ -324,7 +141,7 @@ modparam("nathelper", "rtpproxy_sock",
 		<title>Set <varname>rtpproxy_disable_tout</varname> parameter</title>
 		<title>Set <varname>rtpproxy_disable_tout</varname> parameter</title>
 		<programlisting format="linespecific">
 		<programlisting format="linespecific">
 ...
 ...
-modparam("nathelper", "rtpproxy_disable_tout", 20)
+modparam("rtpproxy", "rtpproxy_disable_tout", 20)
 ...
 ...
 </programlisting>
 </programlisting>
 		</example>
 		</example>
@@ -343,7 +160,7 @@ modparam("nathelper", "rtpproxy_disable_tout", 20)
 		<title>Set <varname>rtpproxy_tout</varname> parameter</title>
 		<title>Set <varname>rtpproxy_tout</varname> parameter</title>
 		<programlisting format="linespecific">
 		<programlisting format="linespecific">
 ...
 ...
-modparam("nathelper", "rtpproxy_tout", 2)
+modparam("rtpproxy", "rtpproxy_tout", 2)
 ...
 ...
 </programlisting>
 </programlisting>
 		</example>
 		</example>
@@ -351,7 +168,7 @@ modparam("nathelper", "rtpproxy_tout", 2)
 	<section>
 	<section>
 		<title><varname>rtpproxy_retr</varname> (integer)</title>
 		<title><varname>rtpproxy_retr</varname> (integer)</title>
 		<para>
 		<para>
-		How many times nathelper should retry to send and receive after
+		How many times rtpproxy should retry to send and receive after
 		timeout was generated.
 		timeout was generated.
 		</para>
 		</para>
 		<para>
 		<para>
@@ -363,7 +180,7 @@ modparam("nathelper", "rtpproxy_tout", 2)
 		<title>Set <varname>rtpproxy_retr</varname> parameter</title>
 		<title>Set <varname>rtpproxy_retr</varname> parameter</title>
 		<programlisting format="linespecific">
 		<programlisting format="linespecific">
 ...
 ...
-modparam("nathelper", "rtpproxy_retr", 2)
+modparam("rtpproxy", "rtpproxy_retr", 2)
 ...
 ...
 </programlisting>
 </programlisting>
 		</example>
 		</example>
@@ -383,70 +200,7 @@ modparam("nathelper", "rtpproxy_retr", 2)
 		<title>Set <varname>force_socket</varname> parameter</title>
 		<title>Set <varname>force_socket</varname> parameter</title>
 		<programlisting format="linespecific">
 		<programlisting format="linespecific">
 ...
 ...
-modparam("nathelper", "force_socket", "localhost:33333")
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title><varname>sipping_bflag</varname> (integer)</title>
-		<para>
-		What branch flag should be used by the module to identify NATed 
-		contacts for which it should perform NAT ping via a SIP request 
-		instead if dummy UDP package.
-		</para>
-		<para>
-		<emphasis>
-			Default value is -1 (disabled).
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>sipping_bflag</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-modparam("nathelper", "sipping_bflag", 7)
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title><varname>sipping_from</varname> (string)</title>
-		<para>
-		The parameter sets the SIP URI to be used in generating the SIP
-		requests for NAT ping purposes. To enable the SIP request pinging
-		feature, you have to set this parameter. The SIP request pinging 
-		will be used only for requests marked so.
-		</para>
-		<para>
-		<emphasis>
-			Default value is <quote>NULL</quote>.
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>sipping_from</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-modparam("nathelper", "sipping_from", "sip:[email protected]")
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title><varname>sipping_method</varname> (string)</title>
-		<para>
-		The parameter sets the SIP method to be used in generating the SIP
-		requests for NAT ping purposes.
-		</para>
-		<para>
-		<emphasis>
-			Default value is <quote>OPTIONS</quote>.
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>sipping_method</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-modparam("nathelper", "sipping_method", "INFO")
+modparam("rtpproxy", "force_socket", "localhost:33333")
 ...
 ...
 </programlisting>
 </programlisting>
 		</example>
 		</example>
@@ -454,7 +208,7 @@ modparam("nathelper", "sipping_method", "INFO")
 	<section>
 	<section>
 		<title><varname>nortpproxy_str</varname> (string)</title>
 		<title><varname>nortpproxy_str</varname> (string)</title>
 		<para>
 		<para>
-		The parameter sets the SDP attribute used by nathelper to mark
+		The parameter sets the SDP attribute used by rtpproxy to mark
 		the packet SDP informations have already been mangled.
 		the packet SDP informations have already been mangled.
 		</para>
 		</para>
 		<para>
 		<para>
@@ -472,7 +226,7 @@ modparam("nathelper", "sipping_method", "INFO")
 		<title>Set <varname>nortpproxy_str</varname> parameter</title>
 		<title>Set <varname>nortpproxy_str</varname> parameter</title>
 		<programlisting format="linespecific">
 		<programlisting format="linespecific">
 ...
 ...
-modparam("nathelper", "nortpproxy_str", "a=sdpmangled:yes\r\n")
+modparam("rtpproxy", "nortpproxy_str", "a=sdpmangled:yes\r\n")
 ...
 ...
 </programlisting>
 </programlisting>
 		</example>
 		</example>
@@ -482,87 +236,6 @@ modparam("nathelper", "nortpproxy_str", "a=sdpmangled:yes\r\n")
 
 
 	<section>
 	<section>
 	<title>Exported Functions</title>
 	<title>Exported Functions</title>
-	<section>
-		<title>
-		<function moreinfo="none">fix_nated_contact()</function>
-		</title>
-		<para>
-		Rewrites Contact <acronym>HF</acronym> to contain request's source 
-		address:port.
-		</para>
-		<para>
-		This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, BRANCH_ROUTE.
-		</para>
-		<example>
-		<title><function>fix_nated_contact</function> usage</title>
-		<programlisting format="linespecific">
-...
-if (search("User-Agent: Cisco ATA.*") {fix_nated_contact();};
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title>
-		<function moreinfo="none">fix_nated_sdp(flags [, ip_address])</function>
-		</title>
-		<para>
-		Alters the SDP information in orer to facilitate NAT traversal. What
-		changes to be performed may be controled via the 
-		<quote>flags</quote> parameter.
-		</para>
-		<para>Meaning of the parameters is as follows:</para>
-		<itemizedlist>
-			<listitem><para>
-			<emphasis>flags</emphasis> - the value may be a bitwise OR of 
-			the following flags:
-			</para>
-			<itemizedlist>
-				<listitem>
-					<para><emphasis>0x01</emphasis> - adds 
-					<quote>a=direction:active</quote> SDP line;
-					</para>
-				</listitem>
-				<listitem>
-					<para><emphasis>0x02</emphasis> - rewrite media
-					&ip; address (c=) with source address of the message
-					or the provided IP address (the provide IP address take
-					precedence over the source address).</para>
-				</listitem>
-				<listitem>
-					<para><emphasis>0x04</emphasis> - adds 
-						<quote>a=nortpproxy:yes</quote> SDP line;</para>
-				</listitem>
-				<listitem>
-					<para><emphasis>0x08</emphasis> - rewrite IP from
-					origin description (o=) with source address of the message
-					or the provided IP address (the provide IP address take
-					precedence over the source address).</para>
-				</listitem>
-			</itemizedlist>
-			</listitem>
-			<listitem><para>
-			<emphasis>ip_address</emphasis> - IP to be used for rewritting SDP.
-			If not specified, the received signalling IP will be used. The
-			parameter allows pseudo-variables usage. NOTE: For the IP to be
-			used, you need to use 0x02 or 0x08 flags, otherwise it will have
-			no effect.
-			</para>
-			</listitem>
-		</itemizedlist>
-		<para>
-		This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, 
-		FAILURE_ROUTE, BRANCH_ROUTE.
-		</para>
-		<example>
-		<title><function>fix_nated_sdp</function> usage</title>
-		<programlisting format="linespecific">
-...
-if (search("User-Agent: Cisco ATA.*") {fix_nated_sdp("3");};
-...
-</programlisting>
-		</example>
-	</section>
 	<section>
 	<section>
 		<title>
 		<title>
 		<function moreinfo="none">set_rtp_proxy_set()</function>
 		<function moreinfo="none">set_rtp_proxy_set()</function>
@@ -645,14 +318,14 @@ force_rtp_proxy();
 				the 'w' flag for clients behind NAT! See also above notes!
 				the 'w' flag for clients behind NAT! See also above notes!
 				</para></listitem>
 				</para></listitem>
 				<listitem><para>
 				<listitem><para>
-				<emphasis>f</emphasis> - instructs nathelper to ignore marks 
-				inserted by another nathelper in transit to indicate that the 
+				<emphasis>f</emphasis> - instructs rtpproxy to ignore marks 
+				inserted by another rtpproxy in transit to indicate that the 
 				session is already goes through another proxy. Allows creating 
 				session is already goes through another proxy. Allows creating 
 				chain of proxies.
 				chain of proxies.
 				</para></listitem>
 				</para></listitem>
 				<listitem><para>
 				<listitem><para>
 				<emphasis>r</emphasis> - flags that IP address in SDP should 
 				<emphasis>r</emphasis> - flags that IP address in SDP should 
-				be trusted. Without this flag, nathelper ignores address in 
+				be trusted. Without this flag, rtpproxy ignores address in 
 				the SDP and uses source address of the SIP message as media 
 				the SDP and uses source address of the SIP message as media 
 				address which is passed to the RTP proxy.
 				address which is passed to the RTP proxy.
 				</para></listitem>
 				</para></listitem>
@@ -890,109 +563,6 @@ unforce_rtp_proxy();
 	    These functions can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
 	    These functions can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
 	</para>
 	</para>
 	</section>
 	</section>
-	<section>
-		<title>
-		<function moreinfo="none">add_rcv_param([flag])</function>,
-		</title>
-		<para>
-		Add received parameter to Contact header fields or Contact URI.
-		The parameter will 
-		contain URI created from the source IP, port, and protocol of the 
-		packet containing the SIP message. The parameter can be then 
-		processed by another registrar, this is useful, for example, when 
-		replicating register messages using t_replicate function to
-		another registrar.
-		</para>
-		<para>Meaning of the parameters is as follows:</para>
-		<itemizedlist>
-			<listitem><para>
-			<emphasis>flag</emphasis> - flags to indicate if the parameter
-			should be added to Contact URI or Contact header. If the flag is
-			non-zero, the parameter will be added to the Contact URI. If not
-			used or equal to zero, the parameter will go to the Contact 
-			header.
-			</para></listitem>
-		</itemizedlist>
-		<para>
-		This function can be used from REQUEST_ROUTE.
-		</para>
-		<example>
-		<title><function>add_rcv_paramer</function> usage</title>
-		<programlisting format="linespecific">
-...
-add_rcv_param(); # add the parameter to the Contact header
-....
-add_rcv_param("1"); # add the parameter to the Contact URI
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title>
-		<function moreinfo="none">fix_nated_register()</function>
-		</title>
-		<para>
-		The function creates a URI consisting of the source IP, port, and 
-		protocol and stores the URI in an Attribute-Value-Pair. The URI will 
-		be appended as "received" parameter to Contact in 200 OK and 
-		registrar will store it in the received cloumn in the location table.
-		</para>
-		<para>
-		Note: You have to set the received_avp parameter of the nathelper module
-		and the registrar module (both module parameters must have the same value)
-		to use this function.
-		</para>
-		<para>
-		This function can be used from REQUEST_ROUTE.
-		</para>
-		<example>
-		<title><function>fix_nated_register</function> usage</title>
-		<programlisting format="linespecific">
-...
-fix_nated_register();
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title>
-			<function>nat_uac_test(flags)</function>
-		</title>
-		<para>
-			Tries to guess if client's request originated behind a nat.
-			The parameter determines what heuristics is used.
-		</para>
-		<para>Meaning of the flags is as follows:</para>
-		<itemizedlist>
-			<listitem><para>
-			<emphasis>1</emphasis> -  Contact header field is searched 
-			for occurrence of RFC1918 addresses.
-			</para></listitem>
-			<listitem><para>
-			<emphasis>2</emphasis> -  the "received" test is used: address
-			in Via is compared against source IP address of signaling
-			</para></listitem>
-			<listitem><para>
-			<emphasis>4</emphasis> -  Top Most VIA is searched 
-			for occurrence of RFC1918 addresses
-			</para></listitem>
-			<listitem><para>
-			<emphasis>8</emphasis> -  SDP is searched for occurrence of 
-			RFC1918 addresses
-			</para></listitem>
-			<listitem><para>
-			<emphasis>16</emphasis> -  test if the source port is different
-			from the port in Via 
-			</para></listitem>
-		</itemizedlist>
-		<para>
-		All flags can be bitwise combined, the test returns true if any of 
-		the tests identified a NAT.
-		</para>
-		<para>
-		This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
-		</para>
-	</section>
 	<section>
 	<section>
 		<title>
 		<title>
 		<function moreinfo="none">start_recording()</function>
 		<function moreinfo="none">start_recording()</function>
@@ -1014,147 +584,15 @@ start_recording();
 		</example>
 		</example>
 	</section>
 	</section>
 
 
-	<section>
-		<title>
-		<function moreinfo="none">add_contact_alias()</function>
-		</title>
-		<para>
-		Adds ;alias=ip:port parameter to contact URI containing
-		received ip:port if contact uri ip:port does not match
-		received ip:port.
-		</para>
-		<para>
-		This function can be used from
-		REQUEST_ROUTE, ONREPLY_ROUTE, BRANCH_ROUTE, and LOCAL_ROUTE.
-		</para>
-		<example>
-		<title><function>add_contact_alias</function> usage</title>
-		<programlisting format="linespecific">
-...
-    if (!is_present_hf("Record-Route")) {
-        if (!add_contact_alias()) {
-            xlog("L_ERR", "Error in aliasing contact $ct\n");
-            send_reply("400", "Bad request");
-            exit;
-        };
-    };
-...
-		</programlisting>
-		</example>
-	</section>
-
-	<section>
-		<title>
-		<function moreinfo="none">handle_ruri_alias()</function>
-		</title>
-		<para>
-		Checks if Request URI has alias param and if so, removes
-		it and sets $du based on its value.  Note that this
-		means that routing of request is based on ;alias
-		parameter value of Request URI rather than Request URI
-		itself. If you call handle_ruri_alias() on a request,
-		make thus sure that you screen alias parameter value of
-		Request URI the same way as you would screen
-		Request URI itself.
-		</para>
-		<para>
-		Returns 1 if ;alias param was found and $du was set and
-		$ru rewritten, 2 if alias param was not found and
-		nothing was done, or -1 in case of error.
-		</para>
-		<para>
-		This function can be used from
-		REQUEST_ROUTE, BRANCH_ROUTE, and LOCAL_ROUTE.
-		</para>
-		<example>
-		<title><function>handle_ruri_alias</function> usage</title>
-		<programlisting format="linespecific">
-...
-    if ($du == "") {
-        handle_ruri_alias();
-        switch ($rc) {
-        case -1:
-            xlog("L_ERR", "Failed to handle alias of R-URI $ru\n");
-            send_reply("400", "Bad request");
-            exit;
-        case 1:
-            xlog("L_INFO", "Routing in-dialog $rm from $fu to $du\n");
-            break;
-        case 2:
-            xlog("L_INFO", "Routing in-dialog $rm from $fu to $ru\n");
-            break;
-         };
-    };
-...
-		</programlisting>
-		</example>
-	</section>
 
 
 	</section>
 	</section>
 
 
 	<section>
 	<section>
 		<title>Exported Pseudo Variables</title>
 		<title>Exported Pseudo Variables</title>
-		<section>
-			<title><function moreinfo="none">$rr_count</function></title>
-			<para>
-			Number of Record Routes in received SIP request
-			or reply.
-			</para>
-		<example>
-		<title>$rr_count usage</title>
-		<programlisting format="linespecific">
-...
-    $avp(rr_count) = $rr_count;
-...
-		</programlisting>
-		</example>
-	        </section>
-
-		<section>
-			<title><function moreinfo="none">$rr_top_count</function></title>
-			<para>
-			If topmost Record Route in received SIP request
-			or reply is a double Record Route, value of
-			$rr_top_count is 2.  If it a single Record
-			Route, value of $rr_top_count 
-			is 1.  If there is no Record Route(s), value of
-			$rr_top_count is 0.
-			</para>
-		<example>
-		<title>$rr_top_count usage</title>
-		<programlisting format="linespecific">
-...
-    if ($rr_count == $avp(rr_count) + $rr_top_count) {
-        route(ADD_CONTACT_ALIAS);
-    };
-...
-		</programlisting>
-		</example>
-	        </section>
-
 	</section>
 	</section>
 
 
 	<section>
 	<section>
 		<title><acronym>MI</acronym> Commands</title>
 		<title><acronym>MI</acronym> Commands</title>
-		<section>
-			<title><function moreinfo="none">nh_enable_ping</function></title>
-			<para>
-			Enables natping if parameter value greater than 0.
-			Disables natping if parameter value is 0.
-			</para>
-			<para>
-			The function takes only one parameter - a number in decimal format.
-			</para>
-			<example>
-			<title><function moreinfo="none">nh_enable_ping</function> usage</title>
-			<programlisting format="linespecific">
-...
-$ &ctltool; fifo nh_enable_ping 1
-...
-			</programlisting>
-			</example>
-		</section>
-
 		<section>
 		<section>
 			<title><function moreinfo="none">nh_enable_rtpp</function></title>
 			<title><function moreinfo="none">nh_enable_rtpp</function></title>
 			<para>
 			<para>