diff --git a/src/modules/tm/README b/src/modules/tm/README index f1b236e936e..511f95f792b 100644 --- a/src/modules/tm/README +++ b/src/modules/tm/README @@ -74,6 +74,7 @@ Daniel-Constantin Mierla 3.45. dns_reuse_rcv_socket (boolean) 3.46. xavp_contact (string) 3.47. event_callback (str) + 3.48. relay_100 (str) 4. Functions @@ -215,53 +216,54 @@ Daniel-Constantin Mierla 1.45. Set dns_reuse_rcv_socket parameter 1.46. Set xavp_contact parameter 1.47. Set event_callback parameter - 1.48. t_relay usage - 1.49. t_relay_to_udp usage - 1.50. t_on_failure usage - 1.51. t_on_branch_failure usage - 1.52. t_on_reply usage - 1.53. t_on_branch usage - 1.54. t_newtran usage - 1.55. t_reply usage - 1.56. t_send_reply usage - 1.57. t_lookup_request usage - 1.58. t_retransmit_reply usage - 1.59. t_release usage - 1.60. t_forward_nonack usage - 1.61. t_set_fr usage - 1.62. t_reset_fr usage - 1.63. t_set_max_lifetime usage - 1.64. t_reset_max_lifetime usage - 1.65. t_set_retr usage - 1.66. t_reset_retr usage - 1.67. t_set_auto_inv_100 usage - 1.68. t_branch_timeout usage - 1.69. t_branch_replied usage - 1.70. t_any_timeout usage - 1.71. t_any_replied usage - 1.72. t_grep_status usage - 1.73. t_is_canceled usage - 1.74. t_is_expired usage - 1.75. t_relay_cancel usage - 1.76. t_lookup_cancel usage - 1.77. t_drop_replies() usage - 1.78. t_save_lumps() usage - 1.79. t_load_contacts usage - 1.80. t_next_contacts usage - 1.81. t_next_contact_flow usage - 1.82. t_check_status usage - 1.83. t_check_trans usage - 1.84. t_set_disable_6xx usage - 1.85. t_set_disable_failover usage - 1.86. t_set_disable_internal_reply usage - 1.87. t_replicate usage - 1.88. t_relay_to usage - 1.89. t_set_no_e2e_cancel_reason usage - 1.90. t_replicate usage - 1.91. t_use_uac_headers usage - 1.92. t_is_retr_async_reply usage - 1.93. t_uac_send usage - 1.94. event_route[tm:branch-failure] usage + 1.48. Set relay_100 parameter + 1.49. t_relay usage + 1.50. t_relay_to_udp usage + 1.51. t_on_failure usage + 1.52. t_on_branch_failure usage + 1.53. t_on_reply usage + 1.54. t_on_branch usage + 1.55. t_newtran usage + 1.56. t_reply usage + 1.57. t_send_reply usage + 1.58. t_lookup_request usage + 1.59. t_retransmit_reply usage + 1.60. t_release usage + 1.61. t_forward_nonack usage + 1.62. t_set_fr usage + 1.63. t_reset_fr usage + 1.64. t_set_max_lifetime usage + 1.65. t_reset_max_lifetime usage + 1.66. t_set_retr usage + 1.67. t_reset_retr usage + 1.68. t_set_auto_inv_100 usage + 1.69. t_branch_timeout usage + 1.70. t_branch_replied usage + 1.71. t_any_timeout usage + 1.72. t_any_replied usage + 1.73. t_grep_status usage + 1.74. t_is_canceled usage + 1.75. t_is_expired usage + 1.76. t_relay_cancel usage + 1.77. t_lookup_cancel usage + 1.78. t_drop_replies() usage + 1.79. t_save_lumps() usage + 1.80. t_load_contacts usage + 1.81. t_next_contacts usage + 1.82. t_next_contact_flow usage + 1.83. t_check_status usage + 1.84. t_check_trans usage + 1.85. t_set_disable_6xx usage + 1.86. t_set_disable_failover usage + 1.87. t_set_disable_internal_reply usage + 1.88. t_replicate usage + 1.89. t_relay_to usage + 1.90. t_set_no_e2e_cancel_reason usage + 1.91. t_replicate usage + 1.92. t_use_uac_headers usage + 1.93. t_is_retr_async_reply usage + 1.94. t_uac_send usage + 1.95. event_route[tm:branch-failure] usage Chapter 1. Admin Guide @@ -318,6 +320,7 @@ Chapter 1. Admin Guide 3.45. dns_reuse_rcv_socket (boolean) 3.46. xavp_contact (string) 3.47. event_callback (str) + 3.48. relay_100 (str) 4. Functions @@ -685,6 +688,7 @@ failure_route["serial"] 3.45. dns_reuse_rcv_socket (boolean) 3.46. xavp_contact (string) 3.47. event_callback (str) + 3.48. relay_100 (str) 3.1. fr_timer (integer) @@ -1626,6 +1630,23 @@ function ksr_tm_event(evname) end ... +3.48. relay_100 (str) + + This parameter controls whether or not a SIP 100 response is proxied. + Note that this is not valid behavior when operating in stateful mode + per RFC 3261 Section 21.1.1, and therefore is useful only when + operating as a stateless proxy. When using this feature, it is possible + to control which 100 responses are proxied and which are not by + detecting whether they are part of an existing transaction and setting + up the appropriate logic in onreply_route. + + Default value is 0 (disabled). + + Example 1.48. Set relay_100 parameter +... +modparam("tm", "relay_100", 1) +... + 4. Functions 4.1. t_relay([host, port]) @@ -1701,7 +1722,7 @@ end Returns a negative value on failure -- you may still want to send a negative reply upstream statelessly not to leave upstream UAC in lurch. - Example 1.48. t_relay usage + Example 1.49. t_relay usage ... if (!t_relay()) { @@ -1728,7 +1749,7 @@ if (!t_relay()) derived from the message uri (using sip specific DNS lookups), but with the protocol corresponding to the function name. - Example 1.49. t_relay_to_udp usage + Example 1.50. t_relay_to_udp usage ... if (src_ip==10.0.0.0/8) t_relay_to_udp("1.2.3.4", "5060"); # sent to 1.2.3.4:5060 over udp @@ -1768,7 +1789,7 @@ else Meaning of the parameters is as follows: * failure_route - Failure route block to be called. - Example 1.50. t_on_failure usage + Example 1.51. t_on_failure usage ... route { t_on_failure("1"); @@ -1804,7 +1825,7 @@ failure_route[1] { * branch_failure_route - Name of the branch_failure route block to be called (it is prefixed internally with 'tm:branch-failure:'). - Example 1.51. t_on_branch_failure usage + Example 1.52. t_on_branch_failure usage ... route { t_on_branch_failure("myroute"); @@ -1827,7 +1848,7 @@ event_route[tm:branch-failure:myroute] { Meaning of the parameters is as follows: * onreply_route - Onreply route block to be called. - Example 1.52. t_on_reply usage + Example 1.53. t_on_reply usage ... loadmodule "/usr/local/lib/ser/modules/nathelper.so" ... @@ -1859,7 +1880,7 @@ es'); Meaning of the parameters is as follows: * branch_route - branch route block to be called. - Example 1.53. t_on_branch usage + Example 1.54. t_on_branch usage ... route { t_on_branch("1"); @@ -1878,7 +1899,7 @@ branch_route[1] { the only way a script can add a new transaction in an atomic way. Typically, it is used to deploy a UAS. - Example 1.54. t_newtran usage + Example 1.55. t_newtran usage ... if (t_newtran()) { log("UAS logic"); @@ -1908,7 +1929,7 @@ if (t_newtran()) { * code - Reply code number. * reason_phrase - Reason string. - Example 1.55. t_reply usage + Example 1.56. t_reply usage ... t_reply("404", "Not found"); ... @@ -1926,7 +1947,7 @@ t_reply("404", "Not found"); * code - Reply code number. * reason - Reason string. - Example 1.56. t_send_reply usage + Example 1.57. t_send_reply usage ... t_send_reply("404", "Not found"); ... @@ -1939,7 +1960,7 @@ t_send_reply("404", "Not found"); none was found. However this is safely (atomically) done using t_newtran. - Example 1.57. t_lookup_request usage + Example 1.58. t_lookup_request usage ... if (t_lookup_request()) { ... @@ -1950,7 +1971,7 @@ if (t_lookup_request()) { Retransmits a reply sent previously by UAS transaction. - Example 1.58. t_retransmit_reply usage + Example 1.59. t_retransmit_reply usage ... t_retransmit_reply(); ... @@ -1960,7 +1981,7 @@ t_retransmit_reply(); Remove transaction from memory (it will be first put on a wait timer to absorb delayed messages). - Example 1.59. t_release usage + Example 1.60. t_release usage ... t_release(); ... @@ -1974,7 +1995,7 @@ t_release(); * ip - IP address where the message should be sent. * port - Port number. - Example 1.60. t_forward_nonack usage + Example 1.61. t_forward_nonack usage ... t_forward_nonack("1.2.3.4", "5060"); ... @@ -2013,7 +2034,7 @@ t_forward_nonack("1.2.3.4", "5060"); See also: fr_timer, fr_inv_timer, t_reset_fr(). - Example 1.61. t_set_fr usage + Example 1.62. t_set_fr usage ... route { t_set_fr(10000); # set only fr invite timeout to 10s @@ -2040,7 +2061,7 @@ branch_route[1] { See also: fr_timer, fr_inv_timer, t_set_fr. - Example 1.62. t_reset_fr usage + Example 1.63. t_reset_fr usage ... route { ... @@ -2066,7 +2087,7 @@ route { See also: max_inv_lifetime, max_noninv_lifetime, t_reset_max_lifetime. - Example 1.63. t_set_max_lifetime usage + Example 1.64. t_set_max_lifetime usage ... route { if (src_ip=1.2.3.4) @@ -2088,7 +2109,7 @@ route { See also: max_inv_lifetime, max_noninv_lifetime, t_set_max_lifetime. - Example 1.64. t_reset_max_lifetime usage + Example 1.65. t_reset_max_lifetime usage ... route { ... @@ -2126,7 +2147,7 @@ route { See also: retr_timer1, retr_timer2, t_reset_retr(). - Example 1.65. t_set_retr usage + Example 1.66. t_set_retr usage ... route { t_set_retr(250, 0); # set only T1 to 250 ms @@ -2153,7 +2174,7 @@ branch_route[1] { See also: retr_timer1, retr_timer2, t_set_retr. - Example 1.66. t_reset_retr usage + Example 1.67. t_reset_retr usage ... route { ... @@ -2169,7 +2190,7 @@ route { See also: auto_inv_100. - Example 1.67. t_set_auto_inv_100 usage + Example 1.68. t_set_auto_inv_100 usage ... route { ... @@ -2184,7 +2205,7 @@ route { timeout. It can be used from FAILURE_ROUTE and BRANCH_FAILURE_ROUTE event route. - Example 1.68. t_branch_timeout usage + Example 1.69. t_branch_timeout usage ... failure_route[0]{ if (t_branch_timeout()){ @@ -2200,7 +2221,7 @@ failure_route[0]{ taken into account). It can be used from failure_route and branch-failure event route. - Example 1.69. t_branch_replied usage + Example 1.70. t_branch_replied usage ... failure_route[0]{ if (t_branch_timeout()){ @@ -2217,7 +2238,7 @@ failure_route[0]{ Returns true if at least one of the current transactions branches did timeout. - Example 1.70. t_any_timeout usage + Example 1.71. t_any_timeout usage ... failure_route[0]{ if (!t_branch_timeout()){ @@ -2234,7 +2255,7 @@ failure_route[0]{ receive some reply in the past. If called from a failure or onreply route, the "current" reply is not taken into account. - Example 1.71. t_any_replied usage + Example 1.72. t_any_replied usage ... onreply_route[0]{ if (!t_any_replied()){ @@ -2248,7 +2269,7 @@ onreply_route[0]{ Returns true if "code" is the final reply received (or locally generated) in at least one of the current transactions branches. - Example 1.72. t_grep_status usage + Example 1.73. t_grep_status usage ... onreply_route[0]{ if (t_grep_status("486")){ @@ -2261,7 +2282,7 @@ onreply_route[0]{ Returns true if the current transaction was canceled. - Example 1.73. t_is_canceled usage + Example 1.74. t_is_canceled usage ... failure_route[0]{ if (t_is_canceled()){ @@ -2275,7 +2296,7 @@ failure_route[0]{ Returns true if the current transaction has already been expired, i.e. the max_inv_lifetime/max_noninv_lifetime interval has already elapsed. - Example 1.74. t_is_expired usage + Example 1.75. t_is_expired usage ... failure_route[0]{ if (t_is_expired()){ @@ -2296,7 +2317,7 @@ failure_route[0]{ CANCELs were successfully sent to the pending branches, true if the INVITE was not found, and false in case of any error. - Example 1.75. t_relay_cancel usage + Example 1.76. t_relay_cancel usage if (method == CANCEL) { if (!t_relay_cancel()) { # implicit drop if relaying was successful, # nothing to do @@ -2323,7 +2344,7 @@ if (method == CANCEL) { overwritten with the flags of the INVITE. isflagset() can be used to check the flags of the previously forwarded INVITE in this case. - Example 1.76. t_lookup_cancel usage + Example 1.77. t_lookup_cancel usage if (method == CANCEL) { if (t_lookup_cancel()) { log("INVITE transaction exists"); @@ -2353,7 +2374,7 @@ if (method == CANCEL) { Dropping replies works only if a new branch is added to the transaction, or it is explicitly replied in the script! - Example 1.77. t_drop_replies() usage + Example 1.78. t_drop_replies() usage ... failure_route[0]{ if (t_check_status("5[0-9][0-9]")){ @@ -2384,7 +2405,7 @@ failure_route[0]{ The transaction must be created by t_newtran() before calling t_save_lumps(). - Example 1.78. t_save_lumps() usage + Example 1.79. t_save_lumps() usage route { ... t_newtran(); @@ -2443,7 +2464,7 @@ failure_route[1] { This function can be used from REQUEST_ROUTE and FAILURE_ROUTE. - Example 1.79. t_load_contacts usage + Example 1.80. t_load_contacts usage ... if (!t_load_contacts()) { sl_send_reply("500", "Server Internal Error - Cannot load contacts"); @@ -2484,7 +2505,7 @@ if (!t_load_contacts()) { contact_flows_avp are not anymore set. Based on that test, you can then use t_set_fr() function to set timers according to your needs. - Example 1.80. t_next_contacts usage + Example 1.81. t_next_contacts usage ... # First call after t_load_contacts() when transaction does not exist yet # and contacts should be available @@ -2522,7 +2543,7 @@ if (!t_next_contacts()) { syslog). This function can be used from a BRANCH_FAILURE_ROUTE event route. - Example 1.81. t_next_contact_flow usage + Example 1.82. t_next_contact_flow usage ... event_route[tm:branch-failure:outbound] { @@ -2545,7 +2566,7 @@ event_route[tm:branch-failure:outbound] This function can be used from ANY_ROUTE . - Example 1.82. t_check_status usage + Example 1.83. t_check_status usage ... if (t_check_status("(487)|(408)")) { log("487 or 408 negative reply\n"); @@ -2599,7 +2620,7 @@ Note See also: t_lookup_request(), t_lookup_cancel(). - Example 1.83. t_check_trans usage + Example 1.84. t_check_trans usage if ( method == "CANCEL" && !t_check_trans()) sl_reply("403", "cancel out of the blue forbidden"); # note: in this example t_check_trans() can be replaced by t_lookup_cancel() @@ -2614,7 +2635,7 @@ if ( method == "CANCEL" && !t_check_trans()) See also: disable_6xx_block. - Example 1.84. t_set_disable_6xx usage + Example 1.85. t_set_disable_6xx usage ... route { ... @@ -2629,7 +2650,7 @@ route { See also: use_dns_failover. - Example 1.85. t_set_disable_failover usage + Example 1.86. t_set_disable_failover usage ... route { ... @@ -2642,7 +2663,7 @@ route { Turn off/on sending internally a SIP reply in case of relay errors. - Example 1.86. t_set_disable_internal_reply usage + Example 1.87. t_set_disable_internal_reply usage ... t_set_disable_internal_reply(1); # turn off sending internal reply on error if(!t_relay()) { @@ -2675,7 +2696,7 @@ if(!t_relay()) { * hostport - address in "host:port" format. It can be given via an AVP. - Example 1.87. t_replicate usage + Example 1.88. t_replicate usage ... # sent to 1.2.3.4:5060 over tcp t_replicate("sip:1.2.3.4:5060;transport=tcp"); @@ -2709,7 +2730,7 @@ t_replicate_to_udp("1.2.3.4", "5060"); + 0x02 - do not generate reply on internal error. + 0x04 - disable dns failover. - Example 1.88. t_relay_to usage + Example 1.89. t_relay_to usage ... # sent to 1.2.3.4:5060 over tcp t_relay_to("tcp:1.2.3.4:5060"); @@ -2735,7 +2756,7 @@ t_relay_to("0x01"); See also: e2e_cancel_reason. - Example 1.89. t_set_no_e2e_cancel_reason usage + Example 1.90. t_set_no_e2e_cancel_reason usage ... route { ... @@ -2758,7 +2779,7 @@ opying * onreply_route - the function returns true if an onreply route is set to be executed. - Example 1.90. t_replicate usage + Example 1.91. t_replicate usage ... if(!t_is_set("failure_route")) LM_DBG("no failure route will be executed for current transaction\n"); @@ -2772,7 +2793,7 @@ if(!t_is_set("failure_route")) It returns true. - Example 1.91. t_use_uac_headers usage + Example 1.92. t_use_uac_headers usage ... t_use_uac_headers(); ... @@ -2791,7 +2812,7 @@ t_use_uac_headers(); returns true if the transaction is currently reply suspended or false if not. - Example 1.92. t_is_retr_async_reply usage + Example 1.93. t_is_retr_async_reply usage ... if (t_is_retr_async_reply()) { xlog("L_DBG", "Dropping retransmitted reply which is still currently sus @@ -2816,7 +2837,7 @@ pended\n"); Content-Type header must exist. * body - SIP message body (can be empty). - Example 1.93. t_uac_send usage + Example 1.94. t_uac_send usage ... t_uac_send("OPTIONS", "sip:alice@kamailio.org", "", "", "From: bob@kamailio.org;tag=2w3e\r\nTo: bob@kamailio.org", ""); @@ -2933,7 +2954,7 @@ t_uac_send("OPTIONS", "sip:alice@kamailio.org", "", "", enabled with the t_on_branch_failure function. This event_route uses the BRANCH_FAILURE_ROUTE route type. - Example 1.94. event_route[tm:branch-failure] usage + Example 1.95. event_route[tm:branch-failure] usage ... request_route { ...