Bladeren bron

modules: regenerated the readme from docbook for several modules

Daniel-Constantin Mierla 10 jaren geleden
bovenliggende
commit
eba5c3b8c3
8 gewijzigde bestanden met toevoegingen van 506 en 247 verwijderingen
  1. 140 46
      modules/debugger/README
  2. 66 51
      modules/dispatcher/README
  3. 77 43
      modules/p_usrloc/README
  4. 10 6
      modules/pdb/README
  5. 8 5
      modules/permissions/README
  6. 141 94
      modules/rtpengine/README
  7. 63 1
      modules/smsops/README
  8. 1 1
      modules/tmx/README

+ 140 - 46
modules/debugger/README

@@ -10,7 +10,7 @@ Daniel-Constantin Mierla
 
    <[email protected]>
 
-   Copyright © 2010 Daniel-Constantin Mierla (asipto.com)
+   Copyright © 2010 Daniel-Constantin Mierla (asipto.com)
      __________________________________________________________________
 
    Table of Contents
@@ -36,14 +36,17 @@ Daniel-Constantin Mierla
               3.9. mod_hash_size (int)
               3.10. mod_level_mode (int)
               3.11. mod_level (str)
-              3.12. log_assign (int)
-              3.13. cfgpkgcheck (int)
-              3.14. reset_msgid (int)
+              3.12. mod_facility_mode (int)
+              3.13. mod_facility (str)
+              3.14. log_assign (int)
+              3.15. cfgpkgcheck (int)
+              3.16. reset_msgid (int)
 
         4. Functions
 
               4.1. dbg_breakpoint(mode)
               4.2. dbg_pv_dump([mask] [, level])
+              4.3. dbg_sip_msg([log_level], [facility])
 
         5. Exported RPC Functions
 
@@ -68,11 +71,14 @@ Daniel-Constantin Mierla
    1.9. Set mod_hash_size parameter
    1.10. Set mod_level_mode parameter
    1.11. Set mod_level parameter
-   1.12. Set log_assign parameter
-   1.13. Set cfgpkgcheck parameter
-   1.14. Set reset_msgid parameter
-   1.15. dbg_breakpoint usage
-   1.16. dbg_pv_dump usage
+   1.12. Set mod_facility_mode parameter
+   1.13. Set mod_facility parameter
+   1.14. Set log_assign parameter
+   1.15. Set cfgpkgcheck parameter
+   1.16. Set reset_msgid parameter
+   1.17. dbg_breakpoint usage
+   1.18. dbg_pv_dump usage
+   1.19. dbg_sip_msg usage
 
 Chapter 1. Admin Guide
 
@@ -97,14 +103,17 @@ Chapter 1. Admin Guide
         3.9. mod_hash_size (int)
         3.10. mod_level_mode (int)
         3.11. mod_level (str)
-        3.12. log_assign (int)
-        3.13. cfgpkgcheck (int)
-        3.14. reset_msgid (int)
+        3.12. mod_facility_mode (int)
+        3.13. mod_facility (str)
+        3.14. log_assign (int)
+        3.15. cfgpkgcheck (int)
+        3.16. reset_msgid (int)
 
    4. Functions
 
         4.1. dbg_breakpoint(mode)
         4.2. dbg_pv_dump([mask] [, level])
+        4.3. dbg_sip_msg([log_level], [facility])
 
    5. Exported RPC Functions
 
@@ -121,7 +130,8 @@ Chapter 1. Admin Guide
    This module provides an interactive config file debugger. It can print
    a trace of config script execution for a SIP message to log and set
    breakpoints on every script action, allowing step-by-step execution of
-   the routing and response scripts.
+   the routing and response scripts. Moreover, this module allows setting
+   static and dynamic module specific debug settings.
 
    Debugging can be done from local or remote host via RPC interface
    (e.g., XMLRPC, kamcmd, siremis).
@@ -168,9 +178,11 @@ Chapter 1. Admin Guide
    3.9. mod_hash_size (int)
    3.10. mod_level_mode (int)
    3.11. mod_level (str)
-   3.12. log_assign (int)
-   3.13. cfgpkgcheck (int)
-   3.14. reset_msgid (int)
+   3.12. mod_facility_mode (int)
+   3.13. mod_facility (str)
+   3.14. log_assign (int)
+   3.15. cfgpkgcheck (int)
+   3.16. reset_msgid (int)
 
 3.1. cfgtrace (int)
 
@@ -178,7 +190,7 @@ Chapter 1. Admin Guide
    startup. You can change the value at runtime without restart, globally
    or per process.
 
-   Default value is “0� (disabled).
+   Default value is "0" (disabled).
 
    Example 1.1. Set cfgtrace parameter
 ...
@@ -190,7 +202,7 @@ modparam("debugger", "cfgtrace", 1)
    Control whether every line (global) breakpoint is enabled or disabled
    at startup.
 
-   Default value is “0� (disabled).
+   Default value is "0" (disabled).
 
    Example 1.2. Set breakpoint parameter
 ...
@@ -201,7 +213,7 @@ modparam("debugger", "breakpoint", 1)
 
    What log level is to be used to print module-specific messages.
 
-   Default value is “-1� (L_ERR).
+   Default value is "-1" (L_ERR).
 
    Example 1.3. Set log_level parameter
 ...
@@ -212,7 +224,7 @@ modparam("debugger", "log_level", 1)
 
    What log level name is to be used to print cfg trace messages.
 
-   Default value is “NULL� (use default log names).
+   Default value is "NULL" (use default log names).
 
    Example 1.4. Set log_level_name parameter
 ...
@@ -225,7 +237,7 @@ modparam("debugger", "log_level_name", "exec")
    using this setting, you can configure syslog to send debug messages to
    a separate log channel, like a specific kamailio-debug log file.
 
-   Default value is “NULL� (default from core).
+   Default value is "NULL" (default from core).
 
    Example 1.5. Set log_facility parameter
 ...
@@ -236,7 +248,7 @@ modparam("debugger", "log_facility", "LOG_DAEMON")
 
    String to print before any module-specific messages.
 
-   Default value is “*** cfgtrace:�.
+   Default value is "*** cfgtrace:".
 
    Example 1.6. Set log_prefix parameter
 ...
@@ -248,7 +260,7 @@ modparam("debugger", "log_prefix", "from-debugger-with-love:")
    Microseconds to sleep before checking for new commands when waiting at
    a breakpoint.
 
-   Default value is “100000� (that is 0.1 sec).
+   Default value is "100000" (that is 0.1 sec).
 
    Example 1.7. Set step_usleep parameter
 ...
@@ -262,7 +274,7 @@ modparam("debugger", "step_usleep", 500000)
    blocking RPC process forever in case the worker process 'forgets' to
    write back a reply.
 
-   Default value is “200�.
+   Default value is "200".
 
    Example 1.8. Set step_loops parameter
 ...
@@ -273,10 +285,12 @@ modparam("debugger", "step_loops", 100)
 
    Used to compute power of two as size of internal hash table to store
    levels per module (e.g., if its set to 4, internal hash table has 16
-   slots). This parameter is accesible readonly via the Kamailio config
-   framework.
+   slots). One must set it's value grater than 0 such that memory to be
+   allocated to save the module specific debug levels or facility
+   configured by mod_level or mod_facility. This parameter is accesible
+   readonly via the Kamailio config framework.
 
-   Default value is “0� - feature disabled.
+   Default value is "0" - feature disabled.
 
    Example 1.9. Set mod_hash_size parameter
 ...
@@ -289,7 +303,7 @@ modparam("debugger", "mod_hash_size", 5)
    This parameter is tunable via the Kamailio config framework. To use per
    module log level you also have to set mod_hash_size.
 
-   Default value is “0�.
+   Default value is "0".
 
    Example 1.10. Set mod_level_mode parameter
 ...
@@ -309,38 +323,68 @@ modparam("debugger", "mod_level", "core=3")
 modparam("debugger", "mod_level", "tm=3")
 ...
 
-3.12. log_assign (int)
+3.12. mod_facility_mode (int)
+
+   Enable or disable per module log facility (0 - disabled, 1 - enabled).
+   This parameter is tunable via the Kamailio config framework. To use per
+   module log facility you also have to set mod_hash_size.
+
+   Default value is "0".
+
+   Example 1.12. Set mod_facility_mode parameter
+...
+modparam("debugger", "mod_facility_mode", 1)
+...
+
+3.13. mod_facility (str)
+
+   Specify module log facility - the value must be in the format:
+   modulename=facility. The parameter can be set many times. For core log
+   facility, use module name 'core'. You also must enable
+   mod_facility_mode and mod_hash_size.
+
+   NOTE: See the syslog() library call for facility names
+   (http://linux.die.net/man/3/syslog). The most used facilities are
+   LOG_LOCAL[0-7].
+
+   Example 1.13. Set mod_facility parameter
+...
+modparam("debugger", "mod_facility", "core=LOG_LOCAL0")
+modparam("debugger", "mod_facility", "debugger=LOG_LOCAL1")
+...
+
+3.14. log_assign (int)
 
    Enable or disable log assign actions on config (0 - disabled, 1 -
    enabled).
 
-   Default value is “0�.
+   Default value is "0".
 
-   Example 1.12. Set log_assign parameter
+   Example 1.14. Set log_assign parameter
 ...
 modparam("debugger", "log_assign", 1)
 ...
 
-3.13. cfgpkgcheck (int)
+3.15. cfgpkgcheck (int)
 
    If set, before each config action is done pkg memory check, useful to
    detect buffer overflows.
 
-   Default value is “0� (disabled).
+   Default value is "0" (disabled).
 
-   Example 1.13. Set cfgpkgcheck parameter
+   Example 1.15. Set cfgpkgcheck parameter
 ...
 modparam("debugger", "cfgpkgcheck", 1)
 ...
 
-3.14. reset_msgid (int)
+3.16. reset_msgid (int)
 
    Used to enable or disable the ability to reset the msgid ($mi) through
    the dbg.reset_msgid RPC command. (0 - disabled, 1 - enabled).
 
-   Default value is “0� - feature disabled.
+   Default value is "0" - feature disabled.
 
-   Example 1.14. Set reset_msgid parameter
+   Example 1.16. Set reset_msgid parameter
 ...
 modparam("debugger", "reset_msgid", 1)
 ...
@@ -349,8 +393,9 @@ modparam("debugger", "reset_msgid", 1)
 
    4.1. dbg_breakpoint(mode)
    4.2. dbg_pv_dump([mask] [, level])
+   4.3. dbg_sip_msg([log_level], [facility])
 
-4.1.  dbg_breakpoint(mode)
+4.1. dbg_breakpoint(mode)
 
    Anchor a breakpoint at the current line of the config (the one on which
    this function is called). The 'mode' specifies whether the breakpoint
@@ -359,13 +404,13 @@ modparam("debugger", "reset_msgid", 1)
    Note that this version of the module does not export this anchors to
    RPC for interactive debugging (temporarily disabled).
 
-   Example 1.15. dbg_breakpoint usage
+   Example 1.17. dbg_breakpoint usage
 ...
 if($si=="10.0.0.10")
         dbg_breakpoint("1");
 ...
 
-4.2.  dbg_pv_dump([mask] [, level])
+4.2. dbg_pv_dump([mask] [, level])
 
    Prints the content of pv_cache on json format. Defaults are mask=31 and
    level = "L_DBG"
@@ -387,7 +432,7 @@ if($si=="10.0.0.10")
      * L_INFO - log level 2
      * L_DBG - log level 3
 
-   Example 1.16. dbg_pv_dump usage
+   Example 1.18. dbg_pv_dump usage
 ...
 $var(temp) = 1;
 $avp(s:more_avp) = 2;
@@ -410,6 +455,55 @@ vp(x)":[{"different":["foo"]},{"other":[2,1],"more":["hi","bye"]}],"$T_branch_id
 x":0,"$var(empty)":0}
  ...
 
+4.3. dbg_sip_msg([log_level], [facility])
+
+   Prints how the sip message would look like if it would be sent out at
+   that point in the config(i.e. if the current lump lists would have been
+   applied at that point in the config). It also prints a diff list for
+   both header and body of sip msg which contain the lump lists content.
+   The lumps deleted are printed with "-" sign whereas the lumps added
+   have no sign. The config line where the function has been called is
+   also printed.
+
+   NOTE that dbg_sip_msg function does not modify the initially received
+   SIP message. Just displays how it WOULD look like if it were to send it
+   at that point.
+
+   NOTE that the lump lists are usually applied only once, just before
+   sending, to spare message reparse processing. All the changes present
+   in lump list are applied on the initially received SIP message. One can
+   force the lump application using msg_apply_changes() function from
+   textopsx module.
+
+   Example 1.19. dbg_sip_msg usage
+...
+    dbg_sip_msg();
+    dbg_sip_msg("L_ERR");
+    dbg_sip_msg("L_ERR", "LOG_LOCAL0");
+...
+
+   Output when dbg_sip_msg("L_ERR") is called after append_hf("P-Hint: My
+   hint\r\n"); remove_hf("Contact");
+ERROR: debugger [debugger_mod.c:467]: w_dbg_sip_msg(): CONFIG LINE 338
+------------------------- START OF SIP message debug --------------------------
+OPTIONS sip:[email protected] SIP/2.0
+Via: SIP/2.0/UDP 127.0.1.1:56872;branch=z9hG4bK.6d7c487a;rport;alias
+From: sip:[email protected]:56872;tag=188b7433
+To: sip:[email protected]
+Call-ID: [email protected]
+CSeq: 1 OPTIONS
+Content-Length: 0
+Max-Forwards: 70
+User-Agent: sipsak 0.9.6
+Accept: text/plain
+P-Hint: My hintt
+
+------------------------------ SIP header diffs -------------------------------
+- Contact: sip:[email protected]:56872
+P-Hint: My hint
+------------------------------- SIP body diffs --------------------------------
+-------------------------- END OF SIP message debug ---------------------------
+
 5. Exported RPC Functions
 
    5.1. dbg.ls
@@ -418,7 +512,7 @@ x":0,"$var(empty)":0}
    5.4. dbg.mod_level
    5.5. dbg.reset_msgid
 
-5.1.  dbg.ls
+5.1. dbg.ls
 
    List Kamailio processes with info related to interactive debugging.
 
@@ -432,7 +526,7 @@ x":0,"$var(empty)":0}
                 dbg.ls
                 dbg.ls 1234
 
-5.2.  dbg.trace
+5.2. dbg.trace
 
    Control config script running trace.
 
@@ -449,7 +543,7 @@ x":0,"$var(empty)":0}
                 dbg.trace off
                 dbg.trace on 1234
 
-5.3.  dbg.bp
+5.3. dbg.bp
 
    Control breakpoints and config execution.
 
@@ -487,7 +581,7 @@ x":0,"$var(empty)":0}
                 dbg.bp eval 1234 $fu
                 dbg.bp move 1234
 
-5.4.  dbg.mod_level
+5.4. dbg.mod_level
 
    Specify module log level.
 
@@ -501,7 +595,7 @@ x":0,"$var(empty)":0}
                 dbg.mod_level core 3
                 dbg.mod_level tm 3
 
-5.5.  dbg.reset_msgid
+5.5. dbg.reset_msgid
 
    Resets the message sequence ($mi). Internally there is no real change.
    This can be useful for unit test cases in order to be able to replicate

+ 66 - 51
modules/dispatcher/README

@@ -254,17 +254,18 @@ Chapter 1. Admin Guide
 
    This module offers SIP load balancer functionality and it can be used
    as SIP traffic dispatcher. There are many load balancing and traffic
-   dispaching algorithms that you can choose from, like: round-robin,
-   weight based load balancing, call load distribution, hashing over SIP
-   message attributes.
+   dispaching algorithms that you can choose from, for example:
+   round-robin, weight based load balancing, call load distribution, and
+   hashing over SIP message attributes.
 
-   The module can be used as a stateless load balancer, it does not depend
+   The module can be used as a stateless load balancer; it does not depend
    on any call state tracking module. It requires the TM module if you
    enable auto-discovery of active/inactive gateways.
 
    It is very lightweight, therefore suitable for handling heavy SIP
-   traffic. The module has a small footprint and ability to load balancing
-   rules from a text plain file makes it suitable for embedded systems.
+   traffic. As the module has a small footprint and the ability to load
+   balancing rules from a plain text file, it is suitable for embedded
+   systems.
 
 2. Dependencies
 
@@ -784,7 +785,7 @@ Note
    4.8. ds_load_update()
    4.9. ds_load_unset()
 
-4.1.  ds_select_dst(set, alg[, limit])
+4.1. ds_select_dst(set, alg[, limit])
 
    The method selects a destination from addresses set. It returns true if
    a new destination is set. The selected address is set to dst_uri field
@@ -833,6 +834,16 @@ Note
             on each address can change.
             This algorithm can be used only for dispatching INVITE
             requests as it is the only SIP method creating a SIP call.
+          + "11" - use relative weight based load distribution. You have
+            to set the attribute 'rweight' per each address in destination
+            set. Active host usage probability is rweight/(SUM of all
+            active host rweights in destination group).
+            The major difference from the weight distribution is the
+            probability recalculation according to rweight value in case
+            of host enabling/disabling
+            For example, 100 calls in 3-hosts group with rweight params
+            1/2/1 will be distributed as 25/50/25. After third host
+            failing distribution will be changed to 33/67/0.
           + "X" - if the algorithm is not implemented, the first entry in
             set is chosen.
      * limit - the maximum number of items to be stored in AVP list for
@@ -856,7 +867,7 @@ ds_select_dst("1", "$var(a)");
 ds_select_dst("1", "4", "3");
 ...
 
-4.2.  ds_select_domain(set, alg[, limit])
+4.2. ds_select_domain(set, alg[, limit])
 
    The method selects a destination from addresses set and rewrites the
    host and port from R-URI. The parameters have same meaning as for
@@ -869,21 +880,21 @@ ds_select_dst("1", "4", "3");
 
    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
 
-4.3.  ds_next_dst()
+4.3. ds_next_dst()
 
    Takes the next destination address from the AVPs with id 'dst_avp_id'
    and sets the dst_uri (outbound proxy address).
 
    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
 
-4.4.  ds_next_domain()
+4.4. ds_next_domain()
 
    Takes the next destination address from the AVPs with id 'dst_avp_id'
    and sets the domain part of the request URI.
 
    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
 
-4.5.  ds_mark_dst([state])
+4.5. ds_mark_dst([state])
 
    Mark the last used address from destination set as inactive ("i"/"I"),
    active ("a"/"A"), disabled ("d"/"D") or trying ("t"/"T"). Apart of
@@ -920,7 +931,7 @@ failure_route[tryagain] {
 }
 ...
 
-4.6.  ds_list_exist(groupid)
+4.6. ds_list_exist(groupid)
 
    Check if a specific group is defined in dispatcher list or database.
      * groupid - A group ID to check.
@@ -934,7 +945,7 @@ if(ds_list_exist("10")) {
 }
 ...
 
-4.7.  ds_is_from_list([groupid [, mode [, uri] ] ])
+4.7. ds_is_from_list([groupid [, mode [, uri] ] ])
 
    This function returns true, if there is a match of source address or
    uri with an address in the given group of the dispatcher-list;
@@ -986,7 +997,7 @@ if(ds_is_from_list("10", "3", "sip:127.0.0.1:5080")) {
 }
 ...
 
-4.8.  ds_load_update()
+4.8. ds_load_update()
 
    Updates the load state:
      * if it is a BYE or CANCEL - remove the load from destination address
@@ -997,7 +1008,7 @@ if(ds_is_from_list("10", "3", "sip:127.0.0.1:5080")) {
    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
    BRANCH_ROUTE and ONREPLY_ROUTE.
 
-4.9.  ds_load_unset()
+4.9. ds_load_unset()
 
    Remove the call load for the destination that routed the call.
 
@@ -1034,7 +1045,7 @@ onreply_route {
    5.2. ds_list
    5.3. ds_reload
 
-5.1.  ds_set_state
+5.1. ds_set_state
 
    Sets the status for a destination address (can be use to mark the
    destination as active or inactive).
@@ -1059,7 +1070,7 @@ onreply_route {
                 _address_
                 _empty_line_
 
-5.2.  ds_list
+5.2. ds_list
 
    It lists the groups and included destinations.
 
@@ -1071,7 +1082,7 @@ onreply_route {
                 :ds_list:_reply_fifo_file_
                 _empty_line_
 
-5.3.  ds_reload
+5.3. ds_reload
 
    It reloads the groups and included destinations. For algorithm 10 (call
    load distribution), old internal list of active calls is destroyed
@@ -1091,7 +1102,7 @@ onreply_route {
    6.2. dispatcher.list
    6.3. dispatcher.reload
 
-6.1.  dispatcher.set_state
+6.1. dispatcher.set_state
 
    Sets the state for a destination address (can be use to mark the
    destination as active or inactive).
@@ -1115,7 +1126,7 @@ onreply_route {
 kamcmd dispatcher.set_state ip 2 sip:127.0.0.1:5080
 ...
 
-6.2.  dispatcher.list
+6.2. dispatcher.list
 
    Lists the groups and included destinations.
 
@@ -1126,7 +1137,7 @@ kamcmd dispatcher.set_state ip 2 sip:127.0.0.1:5080
    Example:
                 kamcmd dispatcher.list
 
-6.3.  dispatcher.reload
+6.3. dispatcher.reload
 
    Reloads the groups and included destinations. The command is disabled
    for call load based dispatching (algorithm 10) since removal of
@@ -1179,6 +1190,10 @@ kamcmd dispatcher.set_state ip 2 sip:127.0.0.1:5080
      * 'weight' - used for weight based load distribution. It must be set
        to a positive integer value beteen 0 and 100. The value represents
        the percent of calls to be sent to that gateways.
+     * 'rweight' - used for relative weight based load distribution. It
+       must be set to a positive integer value between 1 and 100
+       (otherwise host will be excluded from relative weight distribution
+       type).
      * 'socket' - used to set the sending socket for the gateway. It is
        used for sending the SIP traffic as well as OPTIONS keepalives.
 
@@ -1513,7 +1528,7 @@ failure_route[RTF_DISPATCH] {
    8.1. dispatcher:dst-down
    8.2. dispatcher:dst-up
 
-8.1.  dispatcher:dst-down
+8.1. dispatcher:dst-down
 
    When defined, the module calls event_route[dispatcher:ds-down] when a
    destination goes down (becomes probing). A typical use case is to
@@ -1524,7 +1539,7 @@ event_route[dispatcher:dst-down] {
 }
 ...
 
-8.2.  dispatcher:dst-up
+8.2. dispatcher:dst-up
 
    When defined, the module calls event_route[dispatcher:ds-up] when a
    destination that was previously down (probing) comes up. A typical use
@@ -1545,51 +1560,51 @@ Chapter 2. Frequently Asked Questions
 
    2.1.
 
-       Does dispatcher provide a fair distribution?
+   Does dispatcher provide a fair distribution?
 
-       The algoritms doing hashing over parts of SIP message don't guarantee a
-       fair distribution. You should do some measurements to decide what
-       hashing algorithm fits better in your environment.
+   The algoritms doing hashing over parts of SIP message don't guarantee a
+   fair distribution. You should do some measurements to decide what
+   hashing algorithm fits better in your environment.
 
-       Other distribution algorithms such as round robin or call load
-       dispatching do a fair distribution in terms of delivered calls to
-       gateways.
+   Other distribution algorithms such as round robin or call load
+   dispatching do a fair distribution in terms of delivered calls to
+   gateways.
 
    2.2.
 
-       Is dispatcher dialog stateful?
+   Is dispatcher dialog stateful?
 
-       No. Dispatcher is stateless, although some distribution algorithms are
-       designed to select same destination for subsequent requests of the same
-       dialog (e.g., hashing the call-id).
+   No. Dispatcher is stateless, although some distribution algorithms are
+   designed to select same destination for subsequent requests of the same
+   dialog (e.g., hashing the call-id).
 
    2.3.
 
-       Where can I find more about Kamailio?
+   Where can I find more about Kamailio?
 
-       Take a look at http://www.kamailio.org/.
+   Take a look at http://www.kamailio.org/.
 
    2.4.
 
-       Where can I post a question about this module?
+   Where can I post a question about this module?
 
-       First at all check if your question was already answered on one of our
-       mailing lists:
-         * User Mailing List -
-           http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
-         * Developer Mailing List -
-           http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
+   First at all check if your question was already answered on one of our
+   mailing lists:
+     * User Mailing List -
+       http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
+     * Developer Mailing List -
+       http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
 
-       E-mails regarding any stable version should be sent to
-       <[email protected]> and e-mail regarding development
-       versions or GIT snapshots should be send to
-       <[email protected]>.
+   E-mails regarding any stable version should be sent to
+   <[email protected]> and e-mail regarding development
+   versions or GIT snapshots should be send to
+   <[email protected]>.
 
-       If you want to keep the mail private, send it to
-       <[email protected]>.
+   If you want to keep the mail private, send it to
+   <[email protected]>.
 
    2.5.
 
-       How can I report a bug?
+   How can I report a bug?
 
-       Please follow the guidelines provided at: http://sip-router.org/tracker
+   Please follow the guidelines provided at: http://sip-router.org/tracker

+ 77 - 43
modules/p_usrloc/README

@@ -10,7 +10,7 @@ Patric Marschall
 
    1&1 Internet AG
 
-   Copyright © 2007 1&1 Internet AG
+   Copyright © 2007 1&1 Internet AG
      __________________________________________________________________
 
    Table of Contents
@@ -48,6 +48,8 @@ Patric Marschall
               3.21. alg_location (int)
               3.22. domain_db(str)
               3.23. default_db_type(str)
+              3.24. db_ops_ruid (int)
+              3.25. db_update_as_insert (string)
 
         4. default_db_url(str)
         5. Changes from usrloc module
@@ -115,9 +117,11 @@ Patric Marschall
    1.21. Set alg_location parameter
    1.22. Set domain_db parameter
    1.23. Set default_db_type parameter
-   1.24. Set default_db_type parameter
-   1.25. Set db_mode parameter
-   1.26. Example database content - reg_table (locdb) table
+   1.24. Set db_ops_ruid parameter
+   1.25. Set db_update_as_insert parameter
+   1.26. Set default_db_type parameter
+   1.27. Set db_mode parameter
+   1.28. Example database content - reg_table (locdb) table
 
 Chapter 1. User's Guide
 
@@ -154,6 +158,8 @@ Chapter 1. User's Guide
         3.21. alg_location (int)
         3.22. domain_db(str)
         3.23. default_db_type(str)
+        3.24. db_ops_ruid (int)
+        3.25. db_update_as_insert (string)
 
    4. default_db_url(str)
    5. Changes from usrloc module
@@ -268,12 +274,14 @@ Warning
    3.21. alg_location (int)
    3.22. domain_db(str)
    3.23. default_db_type(str)
+   3.24. db_ops_ruid (int)
+   3.25. db_update_as_insert (string)
 
 3.1. write_db_url (string)
 
    The url to the master database where errors are written to.
 
-   Default value is “mysql://kamailio:kamailiorw@localhost/kamailio�
+   Default value is "mysql://kamailio:kamailiorw@localhost/kamailio"
 
    Example 1.1. Set write_db_url parameter
 ...
@@ -299,7 +307,7 @@ modparam("p_usrloc", "read_db_url", "mysql://user:passwd@localhost/db")
    Specifies the table where the information about the distributed
    databases is stored.
 
-   Default value is “locdb�.
+   Default value is "locdb".
 
    Example 1.3. Set reg_db_table parameter
 ...
@@ -310,7 +318,7 @@ modparam("p_usrloc", "reg_db_table", "locdb")
 
    Specifies the column where the id of a distributed database is stored.
 
-   Default value is “id�.
+   Default value is "id".
 
    Example 1.4. Set id_column parameter
 ...
@@ -324,7 +332,7 @@ modparam("p_usrloc", "id_column", "id")
    least two databases available, the databases above the second are
    ignored.
 
-   Default value is “no�.
+   Default value is "no".
 
    Example 1.5. Set num_column parameter
 ...
@@ -336,7 +344,7 @@ modparam("p_usrloc", "num_column", "nr")
    Specifies the column where the url of the distributed database is
    stored.
 
-   Default value is “url�.
+   Default value is "url".
 
    Example 1.6. Set url_column parameter
 ...
@@ -348,7 +356,7 @@ modparam("p_usrloc", "url_column", "url")
    Specifies the column where the status of the distributed database is
    stored.
 
-   Default value is “status�.
+   Default value is "status".
 
    Example 1.7. Set status_column parameter
 ...
@@ -361,7 +369,7 @@ modparam("p_usrloc", "status_column", "status")
    is stored. This field is set to the current time when a databases is
    turned off or turned on.
 
-   Default value is “failover�.
+   Default value is "failover".
 
    Example 1.8. Set failover_time_column parameter
 ...
@@ -376,7 +384,7 @@ modparam("p_usrloc", "failover_time_column", "fail")
    stored in two databases and it takes the spare the complete expire time
    to be up to date, it is not very useful.
 
-   Default value is “spare�.
+   Default value is "spare".
 
    Example 1.9. Set spare_flag_column parameter
 ...
@@ -389,7 +397,7 @@ modparam("p_usrloc", "spare_flag_column", "spare")
    stored. Each call to db_handle_error increases the error counter. After
    exceeding the error threshold, the database's status is set to off.
 
-   Default value is “errors�.
+   Default value is "errors".
 
    Example 1.10. Set error_column parameter
 ...
@@ -403,7 +411,7 @@ modparam("p_usrloc", "error_column", "error")
    is only useful when using spares and prevents the module from taking a
    spare which shares the same risk as the broken database.
 
-   Default value is “rg�.
+   Default value is "rg".
 
    Example 1.11. Set risk_group_column parameter
 ...
@@ -417,7 +425,7 @@ modparam("p_usrloc", "risk_group_column", "rg")
    equal or greater than the contact expiration time of the registrar
    module.
 
-   Default value is “3600�.
+   Default value is "3600".
 
    Example 1.12. Set expire_time parameter
 ...
@@ -428,7 +436,7 @@ modparam("p_usrloc", "expire_time", "3600")
 
    Specifies the error value on which a database shall be turned of.
 
-   Default value is “50�.
+   Default value is "50".
 
    Example 1.13. Set db_err_threshold parameter
 ...
@@ -442,7 +450,7 @@ modparam("p_usrloc", "db_err_threshold", "50")
      * 2 - Try to find a spare, if none found, just turn off the broken
        database
 
-   Default value is “1�.
+   Default value is "1".
 
    Example 1.14. Set failover_level parameter
 ...
@@ -457,7 +465,7 @@ modparam("p_usrloc", "failover_level", "1")
    to provide a writeable master database, otherwise this check stays
    disabled.
 
-   Default value is “10�.
+   Default value is "10".
 
    Example 1.15. Set db_retry_interval parameter
 ...
@@ -470,7 +478,7 @@ modparam("p_usrloc", "db_retry_interval", "10")
    data consistency. Keep in mind that this will probably decrease
    performance.
 
-   Default value is “0�.
+   Default value is "0".
 
    Example 1.16. Set db_use_transactions parameter
 ...
@@ -484,7 +492,7 @@ modparam("p_usrloc", "db_use_transactions", "0")
    activate transaction the db_use_transactions parameter must be also
    set.
 
-   Default value is “READ UNCOMMITED�.
+   Default value is "READ UNCOMMITED".
 
    Example 1.17. Set db_transaction_level parameter
 ...
@@ -496,7 +504,7 @@ modparam("p_usrloc", "db_transaction_level", "READ UNCOMMITED")
    Sets the write access to the master database. If set to 0, no write
    operations are permitted on the master database.
 
-   Default value is “0�.
+   Default value is "0".
 
    Example 1.18. Set write_on_master_db parameter
 ...
@@ -508,7 +516,7 @@ modparam("p_usrloc", "write_on_master_db", "0")
    Sets the write access to the distributed databases. If set to 0, no
    write operations are permitted on the databases.
 
-   Default value is “0�.
+   Default value is "0".
 
    Example 1.19. Set write_on_db parameter
 ...
@@ -520,7 +528,7 @@ modparam("p_usrloc", "write_on_db", "0")
    Specifies the period (in seconds) after a database connection expires.
    Usage of a too small value will probably decrease the performance.
 
-   Default value is “300�.
+   Default value is "300".
 
    Example 1.20. Set connection_expires parameter
 ...
@@ -533,7 +541,7 @@ modparam("p_usrloc", "connection_expires", "300")
    the moment the only way is to use the CRC32 algorithm to compute the
    location ID. Any integer value is fine.
 
-   Default value is “0�.
+   Default value is "0".
 
    Example 1.21. Set alg_location parameter
 ...
@@ -546,7 +554,7 @@ modparam("p_usrloc", "alg_location", 1)
    single. For example, if you have a location table that is large and
    needs to be partitioned, and a smaller table cfa that is ok to be on
    only the master db(so there is no need to have it distributed), you can
-   set this parameter to “location=cluster,cfa=single�. This means that a
+   set this parameter to "location=cluster,cfa=single". This means that a
    call to
 lookup(location)
 
@@ -556,7 +564,7 @@ lookup(cfa)
 
    will be done on only the master database (as with usrloc module)
 
-   Default value is “location=cluster,cfa=single�.
+   Default value is "location=cluster,cfa=single".
 
    Example 1.22. Set domain_db parameter
 ...
@@ -569,21 +577,47 @@ modparam("p_usrloc", "domain_db", "location=cluster,cfa=single")
    definition, the type is configured by using this parameter. Accepted
    values are single and cluster.
 
-   Default value is “single�.
+   Default value is "single".
 
    Example 1.23. Set default_db_type parameter
 ...
 modparam("p_usrloc", "default_db_type", "cluster")
 ...
 
+3.24. db_ops_ruid (int)
+
+   If set to 1, database queries for update or delete are done using ruid
+   value. If it is set to 0, the old style using aor, contact and call-id
+   is done.
+
+   Default value is "1".
+
+   Example 1.24. Set db_ops_ruid parameter
+...
+modparam("p_usrloc", "db_ops_ruid", 0)
+...
+
+3.25. db_update_as_insert (string)
+
+   Set this parameter if you want to do INSERT DB operations instead of
+   UPDATE DB operations. It is recommended to set this parameter if you
+   use Cassandra as a DB backend.
+
+   Default value is "0".
+
+   Example 1.25. Set db_update_as_insert parameter
+...
+modparam("usrloc", "db_update_as_insert", 1)
+...
+
 4. default_db_url(str)
 
    The URL of the default database for Location domains (for domains that
    are single). This must be configured if they are use.
 
-   Default value is “DEFAULT_DB_URL�.
+   Default value is "DEFAULT_DB_URL".
 
-   Example 1.24. Set default_db_type parameter
+   Example 1.26. Set default_db_type parameter
 ...
 modparam("p_usrloc", "default_db_url", "mysql://ser:ser@localhost/ser")
 ...
@@ -610,7 +644,7 @@ modparam("p_usrloc", "default_db_url", "mysql://ser:ser@localhost/ser")
 
    Default value is 3.
 
-   Example 1.25. Set db_mode parameter
+   Example 1.27. Set db_mode parameter
 ...
 modparam("p_usrloc", "db_mode", 2)
 ...
@@ -644,7 +678,7 @@ modparam("p_usrloc", "db_mode", 2)
    complete database documentation on the project webpage,
    http://www.kamailio.org/docs/db-tables/kamailio-db-devel.html.
 
-   Example 1.26. Example database content - reg_table (locdb) table
+   Example 1.28. Example database content - reg_table (locdb) table
 ...
 +----+----+------+--------+--------+---------------------+-------+----+
 | id | no | url  | status | errors | failover            | spare | rg |
@@ -668,16 +702,16 @@ modparam("p_usrloc", "db_mode", 2)
 
    The module supports the decativation of redundant databases for
    maintenance reasons. This can be done by setting the status column of
-   the respective database in the p_usrloc to the value “2�. This setting
+   the respective database in the p_usrloc to the value "2". This setting
    is autodetected from all modules on the server cluster. Changes in the
    locdb table are periodically polled with help of a timer process. After
    one minute the all read and write traffic is removed from the
    deactivated database, and maintenance can be done.
 
    In order to activate the database again, after the maintenance has been
-   finished, the respective status column needs to be set to “0�. This is
+   finished, the respective status column needs to be set to "0". This is
    autodetected as well, the first module that noticed the change will set
-   the status column to “1� and setting the failover column to the current
+   the status column to "1" and setting the failover column to the current
    time and date. Write requests are now transfered again to the database,
    but no reads are done yet.
 
@@ -723,14 +757,14 @@ Chapter 2. Developer's Guide
    These are the primary functions that are used to perform the SQL
    queries.
 
-1.  load_ul_db_api(ul_db_api_t * api)
+1. load_ul_db_api(ul_db_api_t * api)
 
    Import the dbd API, setup the master database connection.
 
    Meaning of the parameters is as follows:
      * api - Pointer to distributed database API structure
 
-2.  int (* ul_db_insert_t) (str * table, str * first, str * second, db_key_t*
+2. int (* ul_db_insert_t) (str * table, str * first, str * second, db_key_t*
 _k, db_val_t* _v, int _n)
 
    Lookup the first and if needed the second key, and insert the given
@@ -744,7 +778,7 @@ _k, db_val_t* _v, int _n)
      * _v - Pointer to the inserted db values.
      * _n - Number of key-value pairs in _k and _v parameters.
 
-3.  int (* ul_db_update_t) (str * table, str * first, str * second, db_key_t*
+3. int (* ul_db_update_t) (str * table, str * first, str * second, db_key_t*
 _k, db_op_t * _op, db_val_t* _v, db_key_t* _uk, db_val_t* _uv, int _n, int
 _un);
 
@@ -763,7 +797,7 @@ _un);
      * _n - Number of key-value pairs in _k and _v parameters.
      * _un - Number of key-value pairs in _uk and _uv parameters.
 
-4.  int (* ul_db_insert_update_t) (str * table, str * first, str * second,
+4. int (* ul_db_insert_update_t) (str * table, str * first, str * second,
 db_key_t* _k, db_val_t* _v, int _n)
 
    Lookup the first and if needed the second key, and insert on duplicate
@@ -778,8 +812,8 @@ db_key_t* _k, db_val_t* _v, int _n)
      * _v - Pointer to the inserted or updated db values.
      * _n - Number of key-value pairs in _k and _v parameters.
 
-5.  int (* ul_db_replace_t) (str * table, str * first, str * second,
-db_key_t* _k, db_val_t* _v, int _n)
+5. int (* ul_db_replace_t) (str * table, str * first, str * second, db_key_t*
+_k, db_val_t* _v, int _n)
 
    Lookup the first and if needed the second key, and replace the given
    values in the choosen databases.
@@ -792,7 +826,7 @@ db_key_t* _k, db_val_t* _v, int _n)
      * _v - Pointer to the replaced db values.
      * _n - Number of key-value pairs in _k and _v parameters.
 
-6.  int (* ul_db_delete_t) (str * table, str * first, str * second, db_key_t*
+6. int (* ul_db_delete_t) (str * table, str * first, str * second, db_key_t*
 _k, db_op_t* _o, db_val_t* _v, int _n)
 
    Lookup the first and if needed the second key, and delete the given
@@ -807,7 +841,7 @@ _k, db_op_t* _o, db_val_t* _v, int _n)
      * _v - Pointer to the deleted db values.
      * _n - Number of key-value pairs in _k and _v parameters.
 
-7.  int (* ul_db_query_t) (str * table, str * first, str * second, db_con_t
+7. int (* ul_db_query_t) (str * table, str * first, str * second, db_con_t
 *** _r_h, db_key_t* _k, db_op_t* _op, db_val_t* _v, db_key_t* _c, int _n, int
 _nc, db_key_t _o, db_res_t** _r);
 
@@ -831,7 +865,7 @@ _nc, db_key_t _o, db_res_t** _r);
      * _o - Order by options for the query.
      * _nc - Pointer to the result set.
 
-8.  int (* ul_db_free_result_t)(db_con_t ** dbh, db_res_t * res);
+8. int (* ul_db_free_result_t)(db_con_t ** dbh, db_res_t * res);
 
    Frees the given result set, .
 

+ 10 - 6
modules/pdb/README

@@ -14,7 +14,7 @@ Pawel Kuzak
    1&1 Internet AG
    <[email protected]>
 
-   Copyright © 2009 1&1 Internet AG
+   Copyright © 2009 1&1 Internet AG
      __________________________________________________________________
 
    Table of Contents
@@ -90,6 +90,10 @@ Chapter 1. Admin Guide
    be defined in milliseconds. The queying can be activated and
    deactivated using FIFO commands.
 
+   More about the new communication protocol between this module and
+   pdb_server can be found in utils/pdbt/docs/network_protocol.txt. The
+   current version is 1.
+
 2. Dependencies
 
    2.1. Kamailio Modules
@@ -116,7 +120,7 @@ Chapter 1. Admin Guide
 
    This is the timeout in milliseconds for the pdb_query function.
 
-   Default value is “50�.
+   Default value is "50".
 
    Example 1.1. Set timeout parameter
 ...
@@ -138,7 +142,7 @@ modparam("pdb", "server", "localhost:10001,host.name:10001,192.168.1.7:10002")
 
    4.1. pdb_query (string query, string dstavp)
 
-4.1.  pdb_query (string query, string dstavp)
+4.1. pdb_query (string query, string dstavp)
 
    Sends the query string to all configured servers and stores the answer
    in dstavp. If it takes more than the configured timeout, false is
@@ -162,7 +166,7 @@ cr_route("$avp(i:82)", "$rd", "$rU", "$rU", "call_id");
    5.2. pdb_activate
    5.3. pdb_deactivate
 
-5.1.  pdb_status
+5.1. pdb_status
 
    Prints the status of the module. This can either be "active" or
    "deactivated".
@@ -172,7 +176,7 @@ cr_route("$avp(i:82)", "$rd", "$rU", "$rU", "call_id");
 kamctl fifo pdb_status
 ...
 
-5.2.  pdb_activate
+5.2. pdb_activate
 
    Activates the module. This is the default after loading the module.
 
@@ -181,7 +185,7 @@ kamctl fifo pdb_status
 kamctl fifo pdb_activate
 ...
 
-5.3.  pdb_deactivate
+5.3. pdb_deactivate
 
    Deactivates the module. No more queries are performed until it is
    activated again. As long as the module is deactivated, the pdb_query

+ 8 - 5
modules/permissions/README

@@ -60,7 +60,7 @@ Emmanuel Schmidbauer
               3.16. from_col (string)
               3.17. ruri_col (string)
               3.18. tag_col (string)
-              3.19. priority_col (integer)
+              3.19. priority_col (string)
               3.20. peer_tag_avp (AVP string)
               3.21. peer_tag_mode (integer)
 
@@ -168,7 +168,7 @@ Chapter 1. Admin Guide
         3.16. from_col (string)
         3.17. ruri_col (string)
         3.18. tag_col (string)
-        3.19. priority_col (integer)
+        3.19. priority_col (string)
         3.20. peer_tag_avp (AVP string)
         3.21. peer_tag_mode (integer)
 
@@ -400,7 +400,7 @@ Chapter 1. Admin Guide
    3.16. from_col (string)
    3.17. ruri_col (string)
    3.18. tag_col (string)
-   3.19. priority_col (integer)
+   3.19. priority_col (string)
    3.20. peer_tag_avp (AVP string)
    3.21. peer_tag_mode (integer)
 
@@ -642,10 +642,13 @@ modparam("permissions", "ruri_col", "regexp")
 modparam("permissions", "tag_col", "peer_tag")
 ...
 
-3.19. priority_col (integer)
+3.19. priority_col (string)
 
    The column name used to store the priority of the corresponding rule
-   from the database row.
+   from the database row. Priority values should be integer. When db_mode
+   is set to 1 (caching), priorities are ordered from highest to lowest.
+   In non-caching mode, priority order (ASC vs DESC) is determined by
+   database.
 
    Default value is "priority".
 

+ 141 - 94
modules/rtpengine/README

@@ -36,15 +36,15 @@ Richard Fuchs
 
    Sipwise GmbH
 
-   Copyright © 2003-2008 Sippy Software, Inc.
+   Copyright © 2003-2008 Sippy Software, Inc.
 
-   Copyright © 2005 Voice Sistem SRL
+   Copyright © 2005 Voice Sistem SRL
 
-   Copyright © 2009-2014 TuTPro Inc.
+   Copyright © 2009-2014 TuTPro Inc.
 
-   Copyright © 2010 VoIPEmbedded Inc.
+   Copyright © 2010 VoIPEmbedded Inc.
 
-   Copyright © 2013-2015 Sipwise GmbH
+   Copyright © 2013-2015 Sipwise GmbH
      __________________________________________________________________
 
    Table of Contents
@@ -86,8 +86,9 @@ Richard Fuchs
 
         7. MI Commands
 
-              7.1. nh_enable_rtpp
-              7.2. nh_show_rtpp
+              7.1. nh_enable_rtpp proxy_url/all 0/1
+              7.2. nh_show_rtpp proxy_url/all
+              7.3. nh_ping_rtpp proxy_url/all
 
    2. Frequently Asked Questions
 
@@ -112,6 +113,7 @@ Richard Fuchs
    1.17. $rtpstat Usage
    1.18. nh_enable_rtpp usage
    1.19. nh_show_rtpp usage
+   1.20. nh_ping_rtpp usage
 
 Chapter 1. Admin Guide
 
@@ -152,8 +154,9 @@ Chapter 1. Admin Guide
 
    7. MI Commands
 
-        7.1. nh_enable_rtpp
-        7.2. nh_show_rtpp
+        7.1. nh_enable_rtpp proxy_url/all 0/1
+        7.2. nh_show_rtpp proxy_url/all
+        7.3. nh_ping_rtpp proxy_url/all
 
 1. Overview
 
@@ -174,7 +177,7 @@ Chapter 1. Admin Guide
    The module allows definition of several sets of rtpproxies.
    Load-balancing will be performed over a set and the admin has the
    ability to choose what set should be used. The set is selected via its
-   id - the id being defined with the set. Refer to the “rtpengine_sock�
+   id - the id being defined with the set. Refer to the "rtpengine_sock"
    module parameter definition for syntax description.
 
    The balancing inside a set is done automatically by the module based on
@@ -234,7 +237,7 @@ Chapter 1. Admin Guide
    Definition of socket(s) used to connect to (a set) RTP proxy. It may
    specify a UNIX socket or an IPv4/IPv6 UDP socket.
 
-   Default value is “NONE� (disabled).
+   Default value is "NONE" (disabled).
 
    Example 1.1. Set rtpengine_sock parameter
 ...
@@ -256,7 +259,7 @@ modparam("rtpengine", "rtpengine_sock",
    rtpengine module will not attempt to establish communication to that
    RTP proxy for rtpengine_disable_tout seconds.
 
-   Default value is “60�.
+   Default value is "60".
 
    Example 1.2. Set rtpengine_disable_tout parameter
 ...
@@ -268,7 +271,7 @@ modparam("rtpengine", "rtpengine_disable_tout", 20)
    Timeout value expressed in milliseconds in waiting for reply from RTP
    proxy.
 
-   Default value is “1000�.
+   Default value is "1000".
 
    Example 1.3. Set rtpengine_tout_ms parameter
 ...
@@ -295,7 +298,7 @@ modparam("rtpengine", "queried_nodes_limit", 5)
    How many times the module should retry to send and receive after
    timeout was generated.
 
-   Default value is “5�.
+   Default value is "5".
 
    Example 1.5. Set rtpengine_retr parameter
 ...
@@ -304,11 +307,11 @@ modparam("rtpengine", "rtpengine_retr", 2)
 
 4.6. extra_id_pv (string)
 
-   The parameter sets the PV defination to use when the “b� parameter is
+   The parameter sets the PV defination to use when the "b" parameter is
    used on rtpengine_delete(), rtpengine_offer(), rtpengine_answer() or
    rtpengine_manage() command.
 
-   Default is empty, the “b� parameter may not be used then.
+   Default is empty, the "b" parameter may not be used then.
 
    Example 1.6. Set extra_id_pv parameter
 ...
@@ -384,7 +387,7 @@ modparam("rtpproxy", "rtp_inst_pvar", "$avp(RTP_INSTANCE)")
    5.5. rtpengine_manage([flags])
    5.6. start_recording()
 
-5.1.  set_rtpengine_set(setid[, setid])
+5.1. set_rtpengine_set(setid[, setid])
 
    Sets the ID of the RTP proxy set to be used for the next
    rtpengine_delete(), rtpengine_offer(), rtpengine_answer() or
@@ -412,7 +415,7 @@ set_rtpengine_set("2");
 rtpengine_offer();
 ...
 
-5.2.  rtpengine_offer([flags])
+5.2. rtpengine_offer([flags])
 
    Rewrites SDP body to ensure that media is passed through an RTP proxy.
    To be invoked on INVITE for the cases the SDP bodies are in INVITE and
@@ -420,31 +423,31 @@ rtpengine_offer();
 
    Meaning of the parameters is as follows:
      * flags - flags to turn on some features.
-       The “flags� string is a list of space-separated items. Each item is
-       either an individual token, or a token in “key=value� format. The
+       The "flags" string is a list of space-separated items. Each item is
+       either an individual token, or a token in "key=value" format. The
        possible tokens are described below.
-          + via-branch=... - Include the “branch� value of one of the
-            “Via� headers in the request to the RTP proxy. Possible values
-            are: “1� - use the first “Via� header; “2� - use the second
-            “Via� header; “auto� - use the first “Via� header if this is a
-            request, or the second one if this is a reply; “extra� - don't
+          + via-branch=... - Include the "branch" value of one of the
+            "Via" headers in the request to the RTP proxy. Possible values
+            are: "1" - use the first "Via" header; "2" - use the second
+            "Via" header; "auto" - use the first "Via" header if this is a
+            request, or the second one if this is a reply; "extra" - don't
             take the value from a header, but instead use the value of the
-            “extra_id_pv� variable. This can be used to create one media
+            "extra_id_pv" variable. This can be used to create one media
             session per branch on the RTP proxy. When sending a subsequent
-            “delete� command to the RTP proxy, you can then stop just the
+            "delete" command to the RTP proxy, you can then stop just the
             session for a specific branch when passing the flag '1' or '2'
-            in the “rtpengine_delete�, or stop all sessions for a call
+            in the "rtpengine_delete", or stop all sessions for a call
             when not passing one of those two flags there. This is
             especially useful if you have serially forked call scenarios
-            where the RTP proxy gets an “offer� command for a new branch,
-            and then a “delete� command for the previous branch, which
+            where the RTP proxy gets an "offer" command for a new branch,
+            and then a "delete" command for the previous branch, which
             would otherwise delete the full call, breaking the subsequent
-            “answer� for the new branch. This flag is only supported by
+            "answer" for the new branch. This flag is only supported by
             the Sipwise rtpengine RTP proxy at the moment!
           + asymmetric - flags that UA from which message is received
             doesn't support symmetric RTP. Disables learning of endpoint
             addresses in the Sipwise rtpengine proxy.
-          + force-answer - force “answer�, that is, only rewrite SDP when
+          + force-answer - force "answer", that is, only rewrite SDP when
             corresponding session already exists in the RTP proxy. By
             default is on when the session is to be completed.
           + direction=... - this option specifies a logical network
@@ -456,17 +459,17 @@ rtpengine_offer();
             interface that the target should be using. For example, if the
             SIP message was sent by an endpoint on a private network and
             will be sent to an endpoint on the public internet, you would
-            use “direction=priv direction=pub� if those two logical
-            network interfaces were called “priv� and “pub� in your RTP
+            use "direction=priv direction=pub" if those two logical
+            network interfaces were called "priv" and "pub" in your RTP
             proxy's configuration respectively. The direction must only be
             specified in for initial SDP offer; answers or subsequent
             offers can omit this option.
-          + internal, external - shorthand for “direction=internal� and
-            “direction=external� respectively. Useful for brevity or as
+          + internal, external - shorthand for "direction=internal" and
+            "direction=external" respectively. Useful for brevity or as
             legacy option if the RTP proxy only supports two network
             interfaces instead of multiple, arbitrarily named ones.
-          + auto-bridge - this flag an alternative to the “internal� and
-            “external� flags in order to do automatic bridging between
+          + auto-bridge - this flag an alternative to the "internal" and
+            "external" flags in order to do automatic bridging between
             IPv4 on the "internal network" and IPv6 on the "external
             network". Instead of explicitly instructing the RTP proxy to
             select a particular address family, the distinction is done by
@@ -474,14 +477,14 @@ rtpengine_offer();
             supported by Sipwise rtpengine.
           + address-family=... - instructs the RTP proxy that the
             recipient of this SDP body expects to see addresses of a
-            particular family. Possible values are “IP4� and “IP6�. For
+            particular family. Possible values are "IP4" and "IP6". For
             example, if the SDP body contains IPv4 addresses but the
-            recipient only speaks IPv6, you would use “address-family=IP6�
+            recipient only speaks IPv6, you would use "address-family=IP6"
             to bridge between the two address families.
             Sipwise rtpengine remembers the address family preference of
             each party after it has seen an SDP body from them. This means
             that normally it is only necessary to explicitly specify the
-            address family in the “offer�, but not in the “answer�.
+            address family in the "offer", but not in the "answer".
             Note: Please note, that this will only work properly with
             non-dual-stack user-agents or with dual-stack clients
             according to RFC6157 (which suggest ICE for Dual-Stack
@@ -522,15 +525,15 @@ rtpengine_offer();
             G.729 going from 10ms to 100ms saves two thirds of the network
             bandwith. Not supported by Sipwise rtpengine.
           + ICE=... - controls the RTP proxy's behaviour regarding ICE
-            attributes within the SDP body. Possible values are: “force� -
+            attributes within the SDP body. Possible values are: "force" -
             discard any ICE attributes already present in the SDP body and
             then generate and insert new ICE data, leaving itself as the
-            only ICE candidates; “force-relay� - discard any “relay� type
+            only ICE candidates; "force-relay" - discard any "relay" type
             ICE attributes already present in the SDP body and then
-            generate and insert itself as the only ICE “relay� candidates;
-            “remove� instructs the RTP proxy to discard any ICE attributes
+            generate and insert itself as the only ICE "relay" candidates;
+            "remove" instructs the RTP proxy to discard any ICE attributes
             and not insert any new ones into the SDP. The default (if no
-            “ICE=...� is given at all), new ICE data will only be
+            "ICE=..." is given at all), new ICE data will only be
             generated if no ICE was present in the SDP originally;
             otherwise the RTP proxy will only insert itself as additional
             ICE candidate. Other SDP substitutions (c=, m=, etc) are
@@ -538,20 +541,20 @@ rtpengine_offer();
           + RTP, SRTP, AVP, AVPF - These flags control the RTP transport
             protocol that should be used towards the recipient of the SDP.
             If none of them are specified, the protocol given in the SDP
-            is left untouched. Otherwise, the “SRTP� flag indicates that
-            SRTP should be used, while “RTP� indicates that SRTP should
-            not be used. “AVPF� indicates that the advanced RTCP profile
-            with feedback messages should be used, and “AVP� indicates
+            is left untouched. Otherwise, the "SRTP" flag indicates that
+            SRTP should be used, while "RTP" indicates that SRTP should
+            not be used. "AVPF" indicates that the advanced RTCP profile
+            with feedback messages should be used, and "AVP" indicates
             that the regular RTCP profile should be used. See also the
             next set of flags below.
           + RTP/AVP, RTP/SAVP, RTP/AVPF, RTP/SAVPF - these serve as an
             alternative, more explicit way to select between the different
             RTP protocols and profiles supported by the RTP proxy. For
-            example, giving the flag “RTP/SAVPF� has the same effect as
-            giving the two flags “SRTP AVPF�.
-          + to-tag - force inclusion of the “To� tag. Normally, the “To�
-            tag is always included when present, except for “delete�
-            messages. Including the “To� tag in a “delete� messages allows
+            example, giving the flag "RTP/SAVPF" has the same effect as
+            giving the two flags "SRTP AVPF".
+          + to-tag - force inclusion of the "To" tag. Normally, the "To"
+            tag is always included when present, except for "delete"
+            messages. Including the "To" tag in a "delete" messages allows
             you to be more selective about which dialogues within a call
             are being torn down.
           + rtcp-mux-demux - if rtcp-mux (RFC 5761) was offered, make the
@@ -559,20 +562,20 @@ rtpengine_offer();
             of this message.
           + rtcp-mux-reject - if rtcp-mux was offered, make the RTP proxy
             reject the offer, but still offer it to the recipient. Can be
-            combined with “rtcp-mux-offer� to always offer it.
+            combined with "rtcp-mux-offer" to always offer it.
           + rtcp-mux-offer - make the RTP proxy offer rtcp-mux to the
             recipient of this message, regardless of whether it was
             offered originally or not.
           + rtcp-mux-accept - if rtcp-mux was offered, make the RTP proxy
             accept the offer and also offer it to the recipient of this
-            message. Can be combined with “rtcp-mux-offer� to always offer
+            message. Can be combined with "rtcp-mux-offer" to always offer
             it.
           + media-address=... - force a particular media address to be
             used in the SDP body. Address family is detected
             automatically.
           + TOS=... - change the IP TOS value for all outgoing RTP packets
             within the entire call in both directions. Only honoured in an
-            “offer�, ignored for an “answer�. Valid values are 0 through
+            "offer", ignored for an "answer". Valid values are 0 through
             255, given in decimal. If this option is not specified, the
             TOS value will revert to the default TOS (normally 184). A
             value of -1 may be used to leave the currently used TOS
@@ -591,8 +594,8 @@ rtpengine_offer();
             recommended as it allows media streams to be hijacked by an
             attacker.
           + DTLS=... - influence the behaviour of DTLS-SRTP. Possible
-            values are “no� or “off� to suppress offering or accepting
-            DTLS-SRTP, and “passive� to prefer participating in DTLS-SRTP
+            values are "no" or "off" to suppress offering or accepting
+            DTLS-SRTP, and "passive" to prefer participating in DTLS-SRTP
             in a passive role.
           + SDES-off - don't offer SDES when it normally would. In an SRTP
             context, this leaves DTLS-SRTP as the only other option.
@@ -639,7 +642,7 @@ onreply_route[2]
 ...
 }
 
-5.3.  rtpengine_answer([flags])
+5.3. rtpengine_answer([flags])
 
    Rewrites SDP body to ensure that media is passed through an RTP proxy.
    To be invoked on 200 OK for the cases the SDP bodies are in INVITE and
@@ -655,12 +658,12 @@ onreply_route[2]
 
    See rtpengine_offer() function example above for example.
 
-5.4.  rtpengine_delete([flags])
+5.4. rtpengine_delete([flags])
 
    Tears down the RTPProxy session for the current call.
 
    See rtpengine_offer() function description above for the meaning of the
-   parameters. Note that not all flags make sense for a “delete�.
+   parameters. Note that not all flags make sense for a "delete".
 
    This function can be used from ANY_ROUTE.
 
@@ -669,7 +672,7 @@ onreply_route[2]
 rtpengine_delete();
 ...
 
-5.5.  rtpengine_manage([flags])
+5.5. rtpengine_manage([flags])
 
    Manage the RTPProxy session - it combines the functionality of
    rtpengine_offer(), rtpengine_answer() and rtpengine_delete(), detecting
@@ -699,7 +702,7 @@ rtpengine_delete();
 rtpengine_manage();
 ...
 
-5.6.  start_recording()
+5.6. start_recording()
 
    This function will send a signal to the RTP proxy to record the RTP
    stream on the RTP proxy. This function is not supported by Sipwise
@@ -730,74 +733,118 @@ start_recording();
 
 7. MI Commands
 
-   7.1. nh_enable_rtpp
-   7.2. nh_show_rtpp
+   7.1. nh_enable_rtpp proxy_url/all 0/1
+   7.2. nh_show_rtpp proxy_url/all
+   7.3. nh_ping_rtpp proxy_url/all
 
-7.1. nh_enable_rtpp
+7.1. nh_enable_rtpp proxy_url/all 0/1
 
-   Enables a RTP proxy if parameter value is greater than 0. Disables it
-   if a zero value is given.
+   Enables a RTP proxy if the second parameter value is greater than 0.
+   Disables it if a zero value is given. The first parameter is either a
+   specific RTP proxy url (exactly as defined in the config file) or the
+   keyword all. The second parameter value must be a number in decimal.
 
-   The first parameter is the RTP proxy url (exactly as defined in the
-   config file).
+   When try to enable the RTP proxy, an application ping command is sent
+   to it. If it fails, the proxy is not enabled. Displays success or fail
+   when try to enable/disable.
 
-   The second parameter value must be a number in decimal.
+   NOTE: If a RTP proxy is defined multiple times (in the same or diferent
+   sets), all of its instances will be enabled/disabled.
 
-   NOTE: if a RTP proxy is defined multiple times (in the same or
-   diferente sete), all of its instances will be enables/disabled.
+   NOTE: If a RTP proxy is in the disabled permanent state and one tries
+   to enable it, even if the ping fails, it is moved to a disabled
+   temporary state and a recheck_ticks are given to it. While the
+   recheck_ticks are grater than 0, the proxy is considered disabled
+   temporary, and it is not taken into consideration for sending data.
+   When the recheck_ticks are 0, the proxy is retested when trying to send
+   data(not automatically retested), and data can be send to it on
+   success.
 
-   Example 1.18.  nh_enable_rtpp usage
+   NOTE: When specify the IPv6 RTP proxy url one must prefix it with :: to
+   escape the :: from the IPv6 address. See the example below.
+
+   Example 1.18. nh_enable_rtpp usage
 ...
 $ kamctl fifo nh_enable_rtpp udp:192.168.2.133:8081 0
+$ kamctl fifo nh_enable_rtpp ::udp6:fe80::9a90:96ff:fea8:fd99:9999 1
+$ kamctl fifo nh_enable_rtpp all 1
 ...
 
-7.2. nh_show_rtpp
+7.2. nh_show_rtpp proxy_url/all
 
    Displays all the RTP proxies and their information: set and status
    (disabled or not, weight and recheck_ticks). If a RTP proxy has been
-   disabled by a mi command a "(permanent)" quote will appear when
-   printing the disabled status. This is to differentiate from a temporary
-   disable due to the proxy being not found responsive by kamailio.
+   disabled by nh_enable_rtpp mi command a "(permanent)" quote will appear
+   when printing the disabled status. This is to differentiate from a
+   temporary disable due to the proxy being not found responsive by
+   kamailio. In addition, when disabled permanent, recheck_ticks have no
+   meaning and "N\A" is printed instead of the value.
+
+   It takes either a specific RTP proxy url (exactly as defined in the
+   config file) or the keyword all as a parameter.
+
+   NOTE: When specify the IPv6 RTP proxy url one must prefix it with :: to
+   escape the :: from the IPv6 address. See the example below.
+
+   Example 1.19. nh_show_rtpp usage
+...
+$ kamctl fifo nh_show_rtpp udp:192.168.2.133:8081
+$ kamctl fifo nh_show_rtpp ::udp6:fe80::9a90:96ff:fea8:fd99:9999
+$ kamctl fifo nh_show_rtpp all
+...
+
+7.3. nh_ping_rtpp proxy_url/all
+
+   Sends an application ping command to the RTP proxy. If the proxy does
+   not respond, it will be disabled, but not permanent. If the proxy
+   responds, no action is taken. Displays the ping result, i.e. success or
+   fail when try to ping.
+
+   It takes either a specific RTP proxy url (exactly as defined in the
+   config file) or the keyword all as a parameter.
 
-   No parameter.
+   NOTE: When specify the IPv6 RTP proxy url one must prefix it with :: to
+   escape the :: from the IPv6 address. See the example below.
 
-   Example 1.19.  nh_show_rtpp usage
+   Example 1.20. nh_ping_rtpp usage
 ...
-$ kamctl fifo nh_show_rtpp
+$ kamctl fifo nh_ping_rtpp udp:192.168.2.133:8081
+$ kamctl fifo nh_ping_rtpp ::udp6:fe80::9a90:96ff:fea8:fd99:9999
+$ kamctl fifo nh_ping_rtpp all
 ...
 
 Chapter 2. Frequently Asked Questions
 
-   2.1. How do I migrate from “rtpproxy� or “rtpproxy-ng� to “rtpengine�?
+   2.1. How do I migrate from "rtpproxy" or "rtpproxy-ng" to "rtpengine"?
    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.
 
-   How do I migrate from “rtpproxy� or “rtpproxy-ng� to “rtpengine�?
+   How do I migrate from "rtpproxy" or "rtpproxy-ng" to "rtpengine"?
 
    For the most part, only the names of the functions have changed, with
-   “rtpproxy� in each name replaced with “rtpengine�. For example,
-   “rtpproxy_manage()� has become “rtpengine_manage()�. A few name
+   "rtpproxy" in each name replaced with "rtpengine". For example,
+   "rtpproxy_manage()" has become "rtpengine_manage()". A few name
    duplications have also been resolved, for example there is now a single
-   “rtpengine_delete()� instead of “unforce_rtp_proxy()� and the identical
-   “rtpproxy_destroy()�.
+   "rtpengine_delete()" instead of "unforce_rtp_proxy()" and the identical
+   "rtpproxy_destroy()".
 
    The largest difference to the old module is how flags are passed to
-   “rtpengine_offer()�, “rtpengine_answer()�, “rtpengine_manage()� and
-   “rtpengine_delete()�. Instead of having a string of single-letter
+   "rtpengine_offer()", "rtpengine_answer()", "rtpengine_manage()" and
+   "rtpengine_delete()". Instead of having a string of single-letter
    flags, they now take a string of space-separated items, with each item
-   being either a single token (word) or a “key=value� pair.
+   being either a single token (word) or a "key=value" pair.
 
-   For example, if you had a call “rtpproxy_offer("FRWOC+PS");�, this
+   For example, if you had a call "rtpproxy_offer("FRWOC+PS");", this
    would then become:
 rtpengine_offer("force trust-address symmetric replace-origin replace-session-co
 nnection ICE=force RTP/SAVPF");
 
    Finally, if you were using the second paramater (explicit media
    address) to any of these functions, this has been replaced by the
-   “media-address=...� option within the first string of flags.
+   "media-address=..." option within the first string of flags.
 
    2.2.
 

+ 63 - 1
modules/smsops/README

@@ -24,6 +24,20 @@ Carsten Bock
               2.1. Kamailio Modules
               2.2. External Libraries or Applications
 
+        3. Parameters
+
+              3.1.
+
+        4. Functions
+
+              4.1. isRPDATA()
+              4.2. smsdump()
+
+   List of Examples
+
+   1.1. isRPDATA() usage
+   1.2. smsdump() usage
+
 Chapter 1. Admin Guide
 
    Table of Contents
@@ -34,9 +48,18 @@ Chapter 1. Admin Guide
         2.1. Kamailio Modules
         2.2. External Libraries or Applications
 
+   3. Parameters
+
+        3.1.
+
+   4. Functions
+
+        4.1. isRPDATA()
+        4.2. smsdump()
+
 1. Overview
 
-   This module collects the Transformations for 3GPP-SMS-V2.
+   This module collects the Transformations for 3GPP-SMS.
 
 2. Dependencies
 
@@ -53,3 +76,42 @@ Chapter 1. Admin Guide
    The following libraries or applications must be installed before
    running Kamailio with this module loaded:
      * None.
+
+3. Parameters
+
+   3.1.
+
+   There are no configurable Parameters yet
+
+4. Functions
+
+   4.1. isRPDATA()
+   4.2. smsdump()
+
+4.1. isRPDATA()
+
+   Returns true, if the message contains RP-Data in it's body.
+
+   This function can be used from REQUEST_ROUTE.
+
+   Example 1.1. isRPDATA() usage
+...
+if (isRPDATA())
+{
+    ...
+}
+...
+
+4.2. smsdump()
+
+   Dumps the content of a 3GPP-SMS message to the Debug-Log.
+
+   Please make sure, to have debug-Log enabled. Otherwise, you won't see
+   anything.
+
+   This function can be used from REQUEST_ROUTE.
+
+   Example 1.2. smsdump() usage
+...
+smsdump();
+...

+ 1 - 1
modules/tmx/README

@@ -242,7 +242,7 @@ if (t_cancel_callid("123qaz", "5", "22", "200")) {
 
 4.3. t_reply_callid(callid, cseq, code, reason)
 
-   Send reply to first INVITE transaction identified by callid and cseq.
+   Send reply to first transaction identified by callid and cseq.
 
    Parameters:.
      * callid - call-id value.