Explorar el Código

modules_k:nathelper: updated documentation

Ovidiu Sas hace 15 años
padre
commit
b8f11766d7

+ 114 - 594
modules_k/nathelper/README

@@ -20,11 +20,17 @@ Edited by
 
 Juha Heinanen
 
-   Copyright © 2003-2008 Sippy Software, Inc.
+Edited by
+
+Ovidiu Sas
+
+   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 $Revision$ $Date$
      __________________________________________________________________
@@ -33,61 +39,44 @@ Juha Heinanen
 
    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)
-
-              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.1. Overview
+        1.2. NAT pinging types
+        1.3. Dependencies
+
+              1.3.1. Kamailio Modules
+              1.3.2. External Libraries or Applications
+
+        1.4. Exported Parameters
+
+              1.4.1. natping_interval (integer)
+              1.4.2. ping_nated_only (integer)
+              1.4.3. natping_processes (integer)
+              1.4.4. natping_socket (string)
+              1.4.5. received_avp (str)
+              1.4.6. sipping_bflag (integer)
+              1.4.7. sipping_from (string)
+              1.4.8. sipping_method (string)
+              1.4.9. nortpproxy_str (string)
+
+        1.5. Exported Functions
+
+              1.5.1. fix_nated_contact()
+              1.5.2. fix_nated_sdp(flags [, ip_address])
+              1.5.3. set_rtp_proxy_set()
+              1.5.4. add_rcv_param([flag]),
+              1.5.5. fix_nated_register()
+              1.5.6. nat_uac_test(flags)
+              1.5.7. add_contact_alias()
+              1.5.8. handle_ruri_alias()
+
+        1.6. Exported Pseudo Variables
+
+              1.6.1. $rr_count
+              1.6.2. $rr_top_count
+
+        1.7. MI Commands
+
+              1.7.1. nh_enable_ping
 
    2. Frequently Asked Questions
 
@@ -98,95 +87,24 @@ Juha Heinanen
    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.6. Set sipping_bflag parameter
+   1.7. Set sipping_from parameter
+   1.8. Set sipping_method parameter
+   1.9. Set nortpproxy_str parameter
+   1.10. fix_nated_contact usage
+   1.11. fix_nated_sdp usage
+   1.12. fix_nated_contact usage
+   1.13. add_rcv_paramer usage
+   1.14. fix_nated_register usage
+   1.15. add_contact_alias usage
+   1.16. handle_ruri_alias usage
+   1.17. $rr_count usage
+   1.18. $rr_top_count usage
+   1.19. nh_enable_ping usage
 
 Chapter 1. Admin Guide
 
-   Table of Contents
-
-   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
+1.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
@@ -210,7 +128,7 @@ Chapter 1. Admin Guide
    http://www.cisco.com/en/US/products/sw/iosswrel/ps1839/products_feature
    _guide09186a0080110bf9.html">
 
-2. NAT pinging types
+1.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
@@ -230,66 +148,22 @@ Chapter 1. Admin Guide
           + 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
-   balancing/distribution and control/selection purposes.
-
-   The module allows the definition of several sets of rtpproxies -
-   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
-   id - the id being defined along with the set. Refer to the
-   “rtpproxy_sock� module parameter definition for syntax description.
-
-   The balancing inside a set is done automatically by the module based on
-   the weight of each rtpproxy from the set.
+1.3. Dependencies
 
-   The selection of the set is done from script prior using
-   [un]force_rtp_proxy(), rtpproxy_offer() or rtpproxy_answer() functions
-   - see the set_rtp_proxy_set() function.
-
-   For backward compatibility reasons, a set with no id take by default
-   the id 0. Also if no set is explicitly set before
-   [un]force_rtp_proxy(), rtpproxy_offer() or rtpproxy_answer() the 0 id
-   set will be used.
-
-   IMPORTANT: if you use multiple sets, take care and use the same set for
-   both force_ and unforce_rtpproxy()!!
-
-4. 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:
      * usrloc module - only if the NATed contacts are to be pinged.
 
-4.2. External Libraries or Applications
+1.3.2. External Libraries or Applications
 
    The following libraries or applications must be installed before
    running Kamailio with this module loaded:
      * 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)
+1.4. Exported Parameters
+
+1.4.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
@@ -307,9 +181,9 @@ Note
 modparam("nathelper", "natping_interval", 10)
 ...
 
-5.2. ping_nated_only (integer)
+1.4.2. ping_nated_only (integer)
 
-   If this variable is set then only contacts that have “behind_NAT� flag
+   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.
@@ -319,7 +193,7 @@ modparam("nathelper", "natping_interval", 10)
 modparam("nathelper", "ping_nated_only", 1)
 ...
 
-5.3. natping_processes (integer)
+1.4.3. natping_processes (integer)
 
    How many timer processes should be created by the module for the
    exclusive task of sending the NAT pings.
@@ -331,7 +205,7 @@ modparam("nathelper", "ping_nated_only", 1)
 modparam("nathelper", "natping_processes", 3)
 ...
 
-5.4. natping_socket (string)
+1.4.4. natping_socket (string)
 
    Spoof the natping's source-ip to this address. Works only for IPv4.
 
@@ -342,7 +216,7 @@ modparam("nathelper", "natping_processes", 3)
 modparam("nathelper", "natping_socket", "192.168.1.1:5006")
 ...
 
-5.5. received_avp (str)
+1.4.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
@@ -364,76 +238,7 @@ Note
 modparam("nathelper", "received_avp", "$avp(i:42)")
 ...
 
-5.6. rtpproxy_sock (string)
-
-   Definition of socket(s) used to connect to (a set) RTPProxy. It may
-   specify a UNIX socket or an IPv4/IPv6 UDP socket.
-
-   Default value is “NONE� (disabled).
-
-   Example 1.6. Set rtpproxy_sock parameter
-...
-# single rtproxy
-modparam("nathelper", "rtpproxy_sock", "udp:localhost:12221")
-# multiple rtproxies for LB
-modparam("nathelper", "rtpproxy_sock",
-        "udp:localhost:12221 udp:localhost:12222")
-# multiple sets of multiple rtproxies
-modparam("nathelper", "rtpproxy_sock",
-        "1 == udp:localhost:12221 udp:localhost:12222")
-modparam("nathelper", "rtpproxy_sock",
-        "2 == udp:localhost:12225")
-...
-
-5.7. rtpproxy_disable_tout (integer)
-
-   Once RTPProxy was found unreachable and marked as disable, nathelper
-   will not attempt to establish communication to RTPProxy for
-   rtpproxy_disable_tout seconds.
-
-   Default value is “60�.
-
-   Example 1.7. Set rtpproxy_disable_tout parameter
-...
-modparam("nathelper", "rtpproxy_disable_tout", 20)
-...
-
-5.8. rtpproxy_tout (integer)
-
-   Timeout value in waiting for reply from RTPProxy.
-
-   Default value is “1�.
-
-   Example 1.8. Set rtpproxy_tout parameter
-...
-modparam("nathelper", "rtpproxy_tout", 2)
-...
-
-5.9. rtpproxy_retr (integer)
-
-   How many times nathelper should retry to send and receive after timeout
-   was generated.
-
-   Default value is “5�.
-
-   Example 1.9. Set rtpproxy_retr parameter
-...
-modparam("nathelper", "rtpproxy_retr", 2)
-...
-
-5.10. force_socket (string)
-
-   Socket to be forced in communicating to RTPProxy. It makes sense only
-   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)
+1.4.6. 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
@@ -441,38 +246,38 @@ modparam("nathelper", "force_socket", "localhost:33333")
 
    Default value is -1 (disabled).
 
-   Example 1.11. Set sipping_bflag parameter
+   Example 1.6. Set sipping_bflag parameter
 ...
 modparam("nathelper", "sipping_bflag", 7)
 ...
 
-5.12. sipping_from (string)
+1.4.7. 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�.
+   Default value is "NULL".
 
-   Example 1.12. Set sipping_from parameter
+   Example 1.7. Set sipping_from parameter
 ...
 modparam("nathelper", "sipping_from", "sip:[email protected]")
 ...
 
-5.13. sipping_method (string)
+1.4.8. sipping_method (string)
 
    The parameter sets the SIP method to be used in generating the SIP
    requests for NAT ping purposes.
 
-   Default value is “OPTIONS�.
+   Default value is "OPTIONS".
 
-   Example 1.13. Set sipping_method parameter
+   Example 1.8. Set sipping_method parameter
 ...
 modparam("nathelper", "sipping_method", "INFO")
 ...
 
-5.14. nortpproxy_str (string)
+1.4.9. nortpproxy_str (string)
 
    The parameter sets the SDP attribute used by nathelper to mark the
    packet SDP informations have already been mangled.
@@ -483,57 +288,39 @@ Note
 
    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.9. Set nortpproxy_str parameter
 ...
 modparam("nathelper", "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)
+1.5. Exported Functions
 
-   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.1.  fix_nated_contact()
 
    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
+   Example 1.10. fix_nated_contact usage
 ...
 if (search("User-Agent: Cisco ATA.*") {fix_nated_contact();};
 ...
 
-6.2.  fix_nated_sdp(flags [, ip_address])
+1.5.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.
+   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;
+          + 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;
+          + 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).
@@ -545,12 +332,12 @@ if (search("User-Agent: Cisco ATA.*") {fix_nated_contact();};
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
-   Example 1.16. fix_nated_sdp usage
+   Example 1.11. fix_nated_sdp usage
 ...
 if (search("User-Agent: Cisco ATA.*") {fix_nated_sdp("3");};
 ...
 
-6.3.  set_rtp_proxy_set()
+1.5.3.  set_rtp_proxy_set()
 
    Sets the Id of the rtpproxy set to be used for the next
    [un]force_rtp_proxy(), rtpproxy_offer() or rtpproxy_answer() command.
@@ -558,226 +345,13 @@ if (search("User-Agent: Cisco ATA.*") {fix_nated_sdp("3");};
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    BRANCH_ROUTE.
 
-   Example 1.17. fix_nated_contact usage
+   Example 1.12. fix_nated_contact usage
 ...
 set_rtp_proxy_set("2");
 force_rtp_proxy();
 ...
 
-6.4.  force_rtp_proxy([flags [, ip_address]])
-
-   Rewrites SDP body to ensure that media is passed through an RTP proxy.
-   It can have optional parameters to force additional features. If
-   ip_address is provided, it will be used to replace the one in SDP.
-
-   Note: Behavior of rtpproxy depends on the mode in which rtpproxy is
-   running: If rtpproxy listens only to a single interface, then rtpproxy
-   is default symmetric (port), if rtpproxy listens to two interfaces (so
-   called bridge-mode), then rtpproxy is default asymmetric (port).
-
-   Note: Regardless of symmetric/asymmetric rtpproxy mode, per default
-   rtpproxy accepts incoming RTP packets only from the same IP address as
-   the SIP signaling was received. Thus, if a SIP client uses different IP
-   for media and SIP (often seen with SBCs), the 'r' flag must be
-   specified.
-
-   The function is considered depreciated and provided for the
-   compatibility purposes. Use rtpproxy_offer() or rtpproxy_answer()
-   instead.
-
-   Meaning of the parameters is as follows:
-     * flags - flags to turn on some features.
-          + a - flags that UA from which message is received doesn't
-            support symmetric RTP. (automatically sets the 'r' flag)
-          + l - force “lookup�, that is, only rewrite SDP when
-            corresponding session is already exists in the RTP proxy. By
-            default is on when the session is to be completed (reply in
-            non-swap or ACK in swap mode).
-          + i, e - these flags specify the direction of the SIP message.
-            These flags only make sense when rtpproxy is running in bridge
-            mode. 'i' means internal network (LAN), 'e' means external
-            network (WAN). 'i' corresponds to rtpproxy's first interface,
-            'e' corresponds to rtpproxy's second interface. You always
-            have to specify two flags to define the incoming network and
-            the outgoing network. For example, 'ie' should be used for SIP
-            message received from the local interface and sent out on the
-            external interface, and 'ei' vice versa. Other options are
-            'ii' and 'ee'. So, for example if a SIP requests is processed
-            with 'ie' flags, the corresponding response must be processed
-            with 'ie' flags.
-            Note: As rtpproxy is in bridge mode per default asymmetric,
-            you have to specify the 'w' flag for clients behind NAT! See
-            also above notes!
-          + f - instructs nathelper to ignore marks inserted by another
-            nathelper in transit to indicate that the session is already
-            goes through another proxy. Allows creating chain of proxies.
-          + 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.
-          + o - flags that IP from the origin description (o=) should be
-            also changed.
-          + c - flags to change the session-level SDP connection (c=) IP
-            if media-description also includes connection information.
-          + s - flags to swap creation with confirmation between requests
-            and replies. By default, a request creates the RTP session and
-            a reply confirms it. If swapped, a reply will create the RTP
-            session and a request will confirm it. The flag is considered
-            depreciated and provided for the compatibility purposes. Use
-            rtpproxy_offer() or rtpproxy_answer() instead.
-          + w - flags that for the UA from which message is received,
-            support symmetric RTP must be forced.
-          + zNN - requests the RTPproxy to perform re-packetization of RTP
-            traffic coming from the UA which has sent the current message
-            to increase or decrease payload size per each RTP packet
-            forwarded if possible. The NN is the target payload size in
-            ms, for the most codecs its value should be in 10ms
-            increments, however for some codecs the increment could differ
-            (e.g. 30ms for GSM or 20ms for G.723). The RTPproxy would
-            select the closest value supported by the codec. This feature
-            could be used for significantly reducing bandwith overhead for
-            low bitrate codecs, for example with G.729 going from 10ms to
-            100ms saves two thirds of the network bandwith.
-     * ip_address - new SDP IP address.
-
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
-   FAILURE_ROUTE, BRANCH_ROUTE.
-
-   Example 1.18. force_rtp_proxy usage
-...
-if (search("User-Agent: Cisco ATA.*") {force_rtp_proxy();};
-if (src_ip=1.2.3.4) {force_rtp_proxy("i");};
-if (search("User-Agent: Cisco ATA.*") {force_rtp_proxy("","1.2.3.4");};
-...
-
-6.5.  rtpproxy_offer([flags [, ip_address]])
-
-   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
-   the cases the SDPs are in INVITE and 200 OK and on 200 OK when SDPs are
-   in 200 OK and ACK.
-
-   See force_rtp_proxy() function description above for the meaning of the
-   parameters.
-
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
-   FAILURE_ROUTE, BRANCH_ROUTE.
-
-   Example 1.19. rtpproxy_offer usage
-route {
-...
-    if (is_method("INVITE")) {
-        if (has_sdp()) {
-            if (rtpproxy_offer())
-                t_on_reply("1");
-        } else {
-            t_on_reply("2");
-        }
-    }
-    if (is_method("ACK") && has_sdp())
-        rtpproxy_answer();
-...
-}
-
-onreply_route[1]
-{
-...
-    if (has_sdp())
-        rtpproxy_answer();
-...
-}
-
-onreply_route[2]
-{
-...
-    if (has_sdp())
-        rtpproxy_offer();
-...
-}
-
-6.6.  rtpproxy_answer([flags [, ip_address]])
-
-   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
-   the cases the SDPs are in INVITE and 200 OK and on ACK when SDPs are in
-   200 OK and ACK.
-
-   See force_rtp_proxy() function description above for the meaning of the
-   parameters.
-
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
-   FAILURE_ROUTE, BRANCH_ROUTE.
-
-   Example 1.20.
-
-   See rtpproxy_offer() function example above for example.
-
-6.7.  unforce_rtp_proxy()
-
-   Tears down the RTPProxy session for the current call.
-
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
-   FAILURE_ROUTE, BRANCH_ROUTE.
-
-   Example 1.21. unforce_rtp_proxy usage
-...
-unforce_rtp_proxy();
-...
-
-6.8.  rtpproxy_stream2uac(prompt_name, count),
-rtpproxy_stream2uas(prompt_name, count)
-
-   Instruct the RTPproxy to stream prompt/announcement pre-encoded with
-   the makeann command from the RTPproxy distribution. The uac/uas suffix
-   selects who will hear the announcement relatively to the current
-   transaction - UAC or UAS. For example invoking the rtpproxy_stream2uac
-   in the request processing block on ACK transaction will play the prompt
-   to the UA that has generated original INVITE and ACK while
-   rtpproxy_stop_stream2uas on 183 in reply processing block will play the
-   prompt to the UA that has generated 183.
-
-   Apart from generating announcements, another possible application of
-   this function is implementing music on hold (MOH) functionality. When
-   count is -1, the streaming will be in loop indefinitely until the
-   appropriate rtpproxy_stop_stream2xxx is issued.
-
-   In order to work correctly, functions require that the session in the
-   RTPproxy already exists. Also those functions don't alted SDP, so that
-   they are not substitute for calling rtpproxy_offer, rtpproxy_answer or
-   force_rtp_proxy.
-
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
-
-   Meaning of the parameters is as follows:
-     * prompt_name - name of the prompt to stream. Should be either
-       absolute pathname or pathname relative to the directory where
-       RTPproxy runs.
-     * count - number of times the prompt should be repeated. The value of
-       -1 means that it will be streaming in loop indefinitely, until
-       appropriate rtpproxy_stop_stream2xxx is issued.
-
-   Example 1.22. rtpproxy_stream2xxx usage
-...
-    if (is_method("INVITE")) {
-        rtpproxy_offer();
-        if (detect_hold()) {
-            rtpproxy_stream2uas("/var/rtpproxy/prompts/music_on_hold", "-1");
-        } else {
-            rtpproxy_stop_stream2uas();
-        };
-    };
-...
-
-6.9.  rtpproxy_stop_stream2uac(), rtpproxy_stop_stream2uas()
-
-   Stop streaming of announcement/prompt/MOH started previously by the
-   respective rtpproxy_stream2xxx. The uac/uas suffix selects whose
-   announcement relatively to tha current transaction should be stopped -
-   UAC or UAS.
-
-   These functions can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
-
-6.10.  add_rcv_param([flag]),
+1.5.4.  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
@@ -794,14 +368,14 @@ rtpproxy_stream2uas(prompt_name, count)
 
    This function can be used from REQUEST_ROUTE.
 
-   Example 1.23. add_rcv_paramer usage
+   Example 1.13. 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()
+1.5.5.  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
@@ -814,12 +388,12 @@ add_rcv_param("1"); # add the parameter to the Contact URI
 
    This function can be used from REQUEST_ROUTE.
 
-   Example 1.24. fix_nated_register usage
+   Example 1.14. fix_nated_register usage
 ...
 fix_nated_register();
 ...
 
-6.12.  nat_uac_test(flags)
+1.5.6.  nat_uac_test(flags)
 
    Tries to guess if client's request originated behind a nat. The
    parameter determines what heuristics is used.
@@ -839,19 +413,7 @@ fix_nated_register();
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
-6.13.  start_recording()
-
-   This command will send a signal to the RTP-Proxy to record the RTP
-   stream on the RTP-Proxy.
-
-   This function can be used from REQUEST_ROUTE and ONREPLY_ROUTE.
-
-   Example 1.25. start_recording usage
-...
-start_recording();
-...
-
-6.14.  add_contact_alias()
+1.5.7.  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.
@@ -859,7 +421,7 @@ start_recording();
    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
    BRANCH_ROUTE, and LOCAL_ROUTE.
 
-   Example 1.26. add_contact_alias usage
+   Example 1.15. add_contact_alias usage
 ...
     if (!is_present_hf("Record-Route")) {
         if (!add_contact_alias()) {
@@ -870,7 +432,7 @@ start_recording();
     };
 ...
 
-6.15.  handle_ruri_alias()
+1.5.8.  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
@@ -886,7 +448,7 @@ start_recording();
    This function can be used from REQUEST_ROUTE, BRANCH_ROUTE, and
    LOCAL_ROUTE.
 
-   Example 1.27. handle_ruri_alias usage
+   Example 1.16. handle_ruri_alias usage
 ...
     if ($du == "") {
         handle_ruri_alias();
@@ -905,94 +467,52 @@ start_recording();
     };
 ...
 
-7. Exported Pseudo Variables
+1.6. Exported Pseudo Variables
 
-   7.1. $rr_count
-   7.2. $rr_top_count
-
-7.1. $rr_count
+1.6.1. $rr_count
 
    Number of Record Routes in received SIP request or reply.
 
-   Example 1.28. $rr_count usage
+   Example 1.17. $rr_count usage
 ...
     $avp(rr_count) = $rr_count;
 ...
 
-7.2. $rr_top_count
+1.6.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
+   Example 1.18. $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.7. MI Commands
 
-8.1. nh_enable_ping
+1.7.1. nh_enable_ping
 
    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
+   Example 1.19. nh_enable_ping usage
 ...
 $ kamctl fifo nh_enable_ping 1
 ...
 
-8.2. nh_enable_rtpp
-
-   Enables a rtp proxy if parameter value is greater than 0. Disables it
-   if a zero value is given.
-
-   The first parameter is the rtp proxy url (exactly as defined in the
-   config file).
-
-   The second parameter value must be a number in decimal.
-
-   NOTE: if a rtpproxy is defined multiple times (in the same or diferente
-   sete), all its instances will be enables/disabled.
-
-   Example 1.31.  nh_enable_rtpp usage
-...
-$ kamctl fifo nh_enable_rtpp udp:192.168.2.133:8081 0
-...
-
-8.3. nh_show_rtpp
-
-   Displays all the rtp proxies and their information: set and status
-   (disabled or not, weight and recheck_ticks).
-
-   No parameter.
-
-   Example 1.32.  nh_show_rtpp usage
-...
-$ kamctl fifo nh_show_rtpp
-...
-
 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.
 
-       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.
 
    2.2.

+ 11 - 0
modules_k/nathelper/doc/nathelper.xml

@@ -50,6 +50,13 @@
 			<email>[email protected]</email>
 		</address>
 		</editor>
+		<editor>
+		<firstname>Ovidiu</firstname>
+		<surname>Sas</surname>
+		<address>
+			<email>[email protected]</email>
+		</address>
+		</editor>
 	</authorgroup>
 	<copyright>
 		<year>2003-2008</year>
@@ -63,6 +70,10 @@
 		<year>2009</year>
 		<holder>TuTPro Inc.</holder>
 	</copyright>
+	<copyright>
+		<year>2010</year>
+		<holder>VoIPEmbedded Inc.</holder>
+	</copyright>
 	<revhistory>
 		<revision>
 		<revnumber>$Revision$</revnumber>

+ 0 - 515
modules_k/nathelper/doc/nathelper_admin.xml

@@ -94,41 +94,6 @@
 	</itemizedlist>
 	</section>
 
-	<section>
-	<title>Multiple RTPProxy usage</title>
-	<para>
-		Currently, the nathelper module can support multiple rtpproxies for
-		balancing/distribution and control/selection purposes.
-	</para>
-	<para>
-		The module allows the definition of several sets of rtpproxies - 
-		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 id - the id being defined along with the set. Refer to the 
-		<quote>rtpproxy_sock</quote> module parameter definition for syntax
-		description.
-	</para>
-	<para>
-		The balancing inside a set is done automatically by the module based on
-		the weight of each rtpproxy from the set.
-	</para>
-	<para>
-		The selection of the set is done from script prior using 
-		[un]force_rtp_proxy(), rtpproxy_offer() or rtpproxy_answer()
-		functions - see the set_rtp_proxy_set() function.
-	</para>
-	<para>
-		For backward compatibility reasons, a set with no id take by default 
-		the id 0. Also if no set is explicitly set before 
-		[un]force_rtp_proxy(), rtpproxy_offer() or rtpproxy_answer()
-		the 0 id set will be used.
-	</para>
-	<para>
-		IMPORTANT: if you use multiple sets, take care and use the same set for
-		both force_ and unforce_rtpproxy()!!
-	</para>
-	</section>
-
 	<section>
 	<title>Dependencies</title>
 	<section>
@@ -276,115 +241,6 @@ modparam("nathelper", "natping_socket", "192.168.1.1:5006")
 ...
 modparam("nathelper", "received_avp", "$avp(i:42)")
 ...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title><varname>rtpproxy_sock</varname> (string)</title>
-		<para>
-		Definition of socket(s) used to connect to (a set) RTPProxy. It may 
-		specify a UNIX socket or an IPv4/IPv6 UDP socket.
-		</para>
-		<para>
-		<emphasis>
-			Default value is <quote>NONE</quote> (disabled).
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>rtpproxy_sock</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-# single rtproxy
-modparam("nathelper", "rtpproxy_sock", "udp:localhost:12221")
-# multiple rtproxies for LB
-modparam("nathelper", "rtpproxy_sock",
-	"udp:localhost:12221 udp:localhost:12222")
-# multiple sets of multiple rtproxies
-modparam("nathelper", "rtpproxy_sock",
-	"1 == udp:localhost:12221 udp:localhost:12222")
-modparam("nathelper", "rtpproxy_sock",
-	"2 == udp:localhost:12225")
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title><varname>rtpproxy_disable_tout</varname> (integer)</title>
-		<para>
-		Once RTPProxy was found unreachable and marked as disable, nathelper
-		will not attempt to establish communication to RTPProxy for 
-		rtpproxy_disable_tout seconds.
-		</para>
-		<para>
-		<emphasis>
-			Default value is <quote>60</quote>.
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>rtpproxy_disable_tout</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-modparam("nathelper", "rtpproxy_disable_tout", 20)
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title><varname>rtpproxy_tout</varname> (integer)</title>
-		<para>
-		Timeout value in waiting for reply from RTPProxy.
-		</para>
-		<para>
-		<emphasis>
-			Default value is <quote>1</quote>.
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>rtpproxy_tout</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-modparam("nathelper", "rtpproxy_tout", 2)
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title><varname>rtpproxy_retr</varname> (integer)</title>
-		<para>
-		How many times nathelper should retry to send and receive after
-		timeout was generated.
-		</para>
-		<para>
-		<emphasis>
-			Default value is <quote>5</quote>.
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>rtpproxy_retr</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-modparam("nathelper", "rtpproxy_retr", 2)
-...
-</programlisting>
-		</example>
-	</section>
-	<section>
-		<title><varname>force_socket</varname> (string)</title>
-		<para>
-		Socket to be forced in communicating to RTPProxy. It makes sense only
-		for UDP communication. If no one specified, the OS will choose.
-		</para>
-		<para>
-		<emphasis>
-			Default value is <quote>NULL</quote>.
-		</emphasis>
-		</para>
-		<example>
-		<title>Set <varname>force_socket</varname> parameter</title>
-		<programlisting format="linespecific">
-...
-modparam("nathelper", "force_socket", "localhost:33333")
-...
 </programlisting>
 		</example>
 	</section>
@@ -586,310 +442,6 @@ force_rtp_proxy();
 </programlisting>
 		</example>
 	</section>
-	<section>
-		<title>
-		<function moreinfo="none">force_rtp_proxy([flags [, ip_address]])</function>
-		</title>
-		<para>
-		Rewrites &sdp; body to ensure that media is passed through 
-		an &rtp; proxy. It can have optional parameters to force additional
-		features. If ip_address is provided, it will be used to replace the
-		one in SDP.
-		</para>
-		<para>
-		Note: Behavior of rtpproxy depends on the mode in which rtpproxy is running: If
-		rtpproxy listens only to a single interface, then rtpproxy is default symmetric (port),
-		if rtpproxy listens to two interfaces (so called bridge-mode), then rtpproxy is
-		default asymmetric (port).
-		</para>
-		<para>
-		Note: Regardless of symmetric/asymmetric rtpproxy mode, per default rtpproxy accepts
-		incoming RTP packets only from the same IP address as the SIP signaling was received.
-		Thus, if a SIP client uses different IP for media and SIP (often seen with SBCs), the
-		'r' flag must be specified.
-		</para>
-		<para>
-		The function is considered depreciated and provided for the compatibility
-		purposes.  Use rtpproxy_offer() or rtpproxy_answer() instead.
-		</para>
-		<para>Meaning of the parameters is as follows:</para>
-		<itemizedlist>
-		<listitem>
-			<para>
-			<emphasis>flags</emphasis> - flags to turn on some features.
-			</para>
-			<itemizedlist>
-				<listitem><para>
-				<emphasis>a</emphasis> - flags that UA from which message is
-				received doesn't support symmetric RTP. (automatically sets the 'r' flag)
-				</para></listitem>
-				<listitem><para>
-				<emphasis>l</emphasis> - force <quote>lookup</quote>, that is,
-				only rewrite SDP when corresponding session is already exists 
-				in the RTP proxy. By default is on when the session is to be
-				completed (reply in non-swap or ACK in swap mode).
-				</para></listitem>
-				<listitem><para>
-				<emphasis>i, e</emphasis> - these flags specify the direction of the SIP
-				message. These flags only make sense when rtpproxy is running in bridge mode.
-				'i' means internal network (LAN), 'e' means external network (WAN). 'i'
-				corresponds to rtpproxy's first interface, 'e' corresponds to rtpproxy's
-				second interface. You always have to specify two flags to define
-				the incoming network and the outgoing network. For example, 'ie' should be
-				used for SIP message received from the local interface and sent out on the
-				external interface, and 'ei' vice versa. Other options are 'ii' and 'ee'.
-				So, for example if a SIP requests is processed with 'ie' flags, the corresponding
-				response must be processed with 'ie' flags.
-				</para><para>
-				Note: As rtpproxy is in bridge mode per default asymmetric, you have to specify
-				the 'w' flag for clients behind NAT! See also above notes!
-				</para></listitem>
-				<listitem><para>
-				<emphasis>f</emphasis> - instructs nathelper to ignore marks 
-				inserted by another nathelper in transit to indicate that the 
-				session is already goes through another proxy. Allows creating 
-				chain of proxies.
-				</para></listitem>
-				<listitem><para>
-				<emphasis>r</emphasis> - 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.
-				</para></listitem>
-				<listitem><para>
-				<emphasis>o</emphasis> - flags that IP from the origin 
-				description (o=) should be also changed.
-				</para></listitem>
-				<listitem><para>
-				<emphasis>c</emphasis> - flags to change the session-level 
-				SDP connection (c=) IP if media-description also includes 
-				connection information.
-				</para></listitem>
-				<listitem><para>
-				<emphasis>s</emphasis> - flags to swap creation with 
-				confirmation between requests and replies. By default, a 
-				request creates the RTP session and a reply confirms it. If
-				swapped, a reply will create the RTP session and a request
-				will confirm it.  The flag is considered depreciated and
-				provided for the compatibility purposes.  Use
-				rtpproxy_offer() or rtpproxy_answer() instead.
-				</para></listitem>
-				<listitem><para>
-				<emphasis>w</emphasis> - flags that for the UA from which 
-				message is received, support symmetric RTP must be forced.
-				</para></listitem>
-				<listitem><para>
-				<emphasis>zNN</emphasis> - requests the RTPproxy to perform
-				re-packetization of RTP traffic coming from the UA which
-				has sent the current message to increase or decrease payload
-				size per each RTP packet forwarded if possible.  The NN is the
-				target payload size in ms, for the most codecs its value should
-				be in 10ms increments, however for some codecs the increment
-				could differ (e.g. 30ms for GSM or 20ms for G.723).  The
-				RTPproxy would select the closest value supported by the codec.
-				This feature could be used for significantly reducing bandwith
-				overhead for low bitrate codecs, for example with G.729 going
-				from 10ms to 100ms saves two thirds of the network bandwith.
-				</para></listitem>
-			</itemizedlist>
-		</listitem>
-		<listitem><para>
-		<emphasis>ip_address</emphasis> - new SDP IP address.
-		</para></listitem>
-		</itemizedlist>
-		<para>
-		This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, 
-		FAILURE_ROUTE, BRANCH_ROUTE.
-		</para>
-		<example>
-		<title><function>force_rtp_proxy</function> usage</title>
-		<programlisting format="linespecific">
-...
-if (search("User-Agent: Cisco ATA.*") {force_rtp_proxy();};
-if (src_ip=1.2.3.4) {force_rtp_proxy("i");};
-if (search("User-Agent: Cisco ATA.*") {force_rtp_proxy("","1.2.3.4");};
-...
-</programlisting>
-		</example>
-	</section>
-        <section>
-                <title>
-                <function moreinfo="none">rtpproxy_offer([flags [, ip_address]])</function>
-                </title>
-                <para>
-                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 the cases the SDPs are in INVITE and 200 OK and on 200 OK
-		when SDPs are in 200 OK and ACK.
-                </para>
-                <para>
-		See force_rtp_proxy() function description above for the meaning of the
-		parameters.
-		</para>
-		<para>
-		This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
-		FAILURE_ROUTE, BRANCH_ROUTE.
-                </para>
-		<example>
-		<title><function>rtpproxy_offer</function> usage</title>
-		<programlisting format="linespecific">
-route {
-...
-    if (is_method("INVITE")) {
-        if (has_sdp()) {
-            if (rtpproxy_offer())
-                t_on_reply("1");
-        } else {
-            t_on_reply("2");
-        }
-    }
-    if (is_method("ACK") &amp;&amp; has_sdp())
-        rtpproxy_answer();
-...
-}
-
-onreply_route[1]
-{
-...
-    if (has_sdp())
-        rtpproxy_answer();
-...
-}
-
-onreply_route[2]
-{
-...
-    if (has_sdp())
-        rtpproxy_offer();
-...
-}
-</programlisting>
-                </example>
-	</section>
-        <section>
-                <title>
-                <function moreinfo="none">rtpproxy_answer([flags [, ip_address]])</function>
-                </title>
-		<para>
-		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 the cases the SDPs are in INVITE and 200 OK and on ACK
-		when SDPs are in 200 OK and ACK.
-		</para>
-		<para>
-		See force_rtp_proxy() function description above for the meaning of the
-		parameters.
-		</para>
-		<para>
-		This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
-		FAILURE_ROUTE, BRANCH_ROUTE.
-		</para>
-		<example>
-		<para>
-		See rtpproxy_offer() function example above for example.
-		</para>
-		</example>
-        </section>
-	<section>
-		<title>
-		<function moreinfo="none">unforce_rtp_proxy()</function>
-		</title>
-		<para>
-		Tears down the RTPProxy session for the current call.
-		</para>
-		<para>
-		This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
-		</para>
-		<example>
-		<title><function>unforce_rtp_proxy</function> usage</title>
-		<programlisting format="linespecific">
-...
-unforce_rtp_proxy();
-...
-</programlisting>
-		</example>
-	</section>
-	<section id="rtpproxy_stream2xxx">
-	<title>
-	    <function>rtpproxy_stream2uac(prompt_name, count)</function>,
-	    <function>rtpproxy_stream2uas(prompt_name, count)</function>
-	</title>
-	<para>
-	    Instruct the RTPproxy to stream prompt/announcement pre-encoded with
-	    the makeann command from the RTPproxy distribution. The uac/uas
-	    suffix selects who will hear the announcement relatively to the current
-	    transaction - UAC or UAS. For example invoking the
-	    <function>rtpproxy_stream2uac</function> in the request processing
-	    block on ACK transaction will play the prompt to the UA that has
-	    generated original INVITE and ACK while
-	    <function>rtpproxy_stop_stream2uas</function> on 183 in reply
-	    processing block will play the prompt to the UA that has generated 183.
-	</para>
-	<para>
-	    Apart from generating announcements, another possible application
-	    of this function is implementing music on hold (MOH) functionality.
-	    When count is -1, the streaming will be in loop indefinitely until
-	    the appropriate <function>rtpproxy_stop_stream2xxx</function> is issued.
-	</para>
-	<para>
-	    In order to work correctly, functions require that the session in the
-	    RTPproxy already exists. Also those functions don't alted SDP, so that
-	    they are not substitute for calling <function>rtpproxy_offer</function>,
-	    <function>rtpproxy_answer</function> or
-	    <function>force_rtp_proxy</function>.
-	</para>
-	<para>
-	    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
-	</para>
-	<para>Meaning of the parameters is as follows:</para>
-	<itemizedlist>
-	    <listitem>
-		<para>
-		    <emphasis>prompt_name</emphasis> - name of the prompt to
-		    stream.  Should be either absolute pathname or pathname
-		    relative to the directory where RTPproxy runs.
-		</para>
-	    </listitem>
-	    <listitem>
-		<para>
-		    <emphasis>count</emphasis> - number of times the prompt
-		    should be repeated.  The value of -1 means that it will
-		    be streaming in loop indefinitely, until appropriate
-		    <function>rtpproxy_stop_stream2xxx</function> is issued.
-		</para>
-	    </listitem>
-	</itemizedlist>
-	<example>
-	    <title><function>rtpproxy_stream2xxx</function> usage</title>
-	    <programlisting>
-...
-    if (is_method("INVITE")) {
-        rtpproxy_offer();
-        if (detect_hold()) {
-            rtpproxy_stream2uas("/var/rtpproxy/prompts/music_on_hold", "-1");
-        } else {
-            rtpproxy_stop_stream2uas();
-        };
-    };
-...
-	    </programlisting>
-	</example>
-	</section>
-	<section id="rtpproxy_stop_stream2xxx">
-	<title>
-	    <function>rtpproxy_stop_stream2uac()</function>,
-	    <function>rtpproxy_stop_stream2uas()</function>
-	</title>
-	<para>
-	    Stop streaming of announcement/prompt/MOH started previously by the
-	    respective <function>rtpproxy_stream2xxx</function>.  The uac/uas
-	    suffix selects whose announcement relatively to tha current
-	    transaction should be stopped - UAC or UAS.
-	</para>
-	<para>
-	    These functions can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
-	</para>
-	</section>
 	<section>
 		<title>
 		<function moreinfo="none">add_rcv_param([flag])</function>,
@@ -993,26 +545,6 @@ fix_nated_register();
 		This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE.
 		</para>
 	</section>
-	<section>
-		<title>
-		<function moreinfo="none">start_recording()</function>
-		</title>
-		<para>
-		This command will send a signal to the RTP-Proxy to record 
-		the RTP stream on the RTP-Proxy.
-		</para>
-		<para>
-		This function can be used from REQUEST_ROUTE and ONREPLY_ROUTE.
-		</para>
-		<example>
-		<title><function>start_recording</function> usage</title>
-		<programlisting format="linespecific">
-...
-start_recording();
-...
-		</programlisting>
-		</example>
-	</section>
 
 	<section>
 		<title>
@@ -1155,53 +687,6 @@ $ &ctltool; fifo nh_enable_ping 1
 			</example>
 		</section>
 
-		<section>
-			<title><function moreinfo="none">nh_enable_rtpp</function></title>
-			<para>
-			Enables a rtp proxy if parameter value is greater than 0.
-			Disables it if a zero value is given.
-			</para>
-			<para>
-			The first parameter is the rtp proxy url (exactly as defined in 
-			the config file).
-			</para>
-			<para>
-			The second parameter value must be a number in decimal.
-			</para>
-			<para>
-			NOTE: if a rtpproxy is defined multiple times (in the same or
-			diferente sete), all its instances will be enables/disabled.
-			</para>
-			<example>
-			<title>
-			<function moreinfo="none">nh_enable_rtpp</function> usage</title>
-			<programlisting format="linespecific">
-...
-$ &ctltool; fifo nh_enable_rtpp udp:192.168.2.133:8081 0
-...
-			</programlisting>
-			</example>
-		</section>
-				
-			<section>
-			<title><function moreinfo="none">nh_show_rtpp</function></title>
-			<para>
-			Displays all the rtp proxies and their information: set and 
-			status (disabled or not, weight and recheck_ticks).
-			</para>
-			<para>
-			No parameter.
-			</para>
-			<example>
-			<title>
-				<function moreinfo="none">nh_show_rtpp</function> usage</title>
-			<programlisting format="linespecific">
-...
-$ &ctltool; fifo nh_show_rtpp 
-...
-			</programlisting>
-			</example>
-		</section>
 	</section>
 
 </chapter>