From 88e8ae6f41c465bca0130434793a183617f6c887 Mon Sep 17 00:00:00 2001 From: Kamailio Dev Date: Fri, 5 Oct 2018 07:31:52 +0200 Subject: [PATCH] modules: readme files regenerated - htable ... [skip ci] --- src/modules/htable/README | 108 +++++++++------ src/modules/siputils/README | 263 +++++++++++++++++++----------------- 2 files changed, 205 insertions(+), 166 deletions(-) diff --git a/src/modules/htable/README b/src/modules/htable/README index 8a8fbdd3061..c003e524b29 100644 --- a/src/modules/htable/README +++ b/src/modules/htable/README @@ -51,9 +51,10 @@ Ovidiu Sas 3.10. timer_interval (integer) 3.11. db_expires (integer) 3.12. enable_dmq (integer) - 3.13. timer_procs (integer) - 3.14. event_callback (str) - 3.15. event_callback_mode (int) + 3.13. dmq_init_sync (integer) + 3.14. timer_procs (integer) + 3.15. event_callback (str) + 3.16. event_callback_mode (int) 4. Functions @@ -106,23 +107,24 @@ Ovidiu Sas 1.13. Set timer_interval parameter 1.14. Set db_expires parameter 1.15. Set enable_dmq parameter - 1.16. Set timer_procs parameter - 1.17. Set event_callback parameter - 1.18. Set event_callback_mode parameter - 1.19. sht_print usage - 1.20. sht_rm usage - 1.21. sht_rm_name_re usage - 1.22. sht_rm_value_re usage - 1.23. sht_rm_name usage - 1.24. sht_rm_value usage - 1.25. sht_reset usage - 1.26. sht_lock usage - 1.27. sht_unlock usage - 1.28. sht_iterator_start usage - 1.29. sht_iterator_end usage - 1.30. sht_iterator_next usage - 1.31. sht_has_name usage + 1.16. Set dmq_init_sync parameter + 1.17. Set timer_procs parameter + 1.18. Set event_callback parameter + 1.19. Set event_callback_mode parameter + 1.20. sht_print usage + 1.21. sht_rm usage + 1.22. sht_rm_name_re usage + 1.23. sht_rm_value_re usage + 1.24. sht_rm_name usage + 1.25. sht_rm_value usage + 1.26. sht_reset usage + 1.27. sht_lock usage + 1.28. sht_unlock usage + 1.29. sht_iterator_start usage + 1.30. sht_iterator_end usage + 1.31. sht_iterator_next usage 1.32. sht_has_name usage + 1.33. sht_has_name usage Chapter 1. Admin Guide @@ -149,9 +151,10 @@ Chapter 1. Admin Guide 3.10. timer_interval (integer) 3.11. db_expires (integer) 3.12. enable_dmq (integer) - 3.13. timer_procs (integer) - 3.14. event_callback (str) - 3.15. event_callback_mode (int) + 3.13. dmq_init_sync (integer) + 3.14. timer_procs (integer) + 3.15. event_callback (str) + 3.16. event_callback_mode (int) 4. Functions @@ -422,9 +425,10 @@ $ kamcmd htable.dump htable 3.10. timer_interval (integer) 3.11. db_expires (integer) 3.12. enable_dmq (integer) - 3.13. timer_procs (integer) - 3.14. event_callback (str) - 3.15. event_callback_mode (int) + 3.13. dmq_init_sync (integer) + 3.14. timer_procs (integer) + 3.15. event_callback (str) + 3.16. event_callback_mode (int) 3.1. htable (str) @@ -619,7 +623,21 @@ modparam("htable", "db_expires", 1) modparam("htable", "enable_dmq", 1) ... -3.13. timer_procs (integer) +3.13. dmq_init_sync (integer) + + If set to 1, will request synchronization from other nodes at startup. + It applies to all tables having the "dmqreplicate" parameter set. As + above, it is important to ensure the definition (size, autoexpire etc.) + of replicated tables is identical across all instances. + + Default value is 0. + + Example 1.16. Set dmq_init_sync parameter +... +modparam("htable", "dmq_init_sync", 1) +... + +3.14. timer_procs (integer) If set to 1 or greater, the module will create its own timer processes to scan for expired items in hash tables. If set to zero, it will use @@ -628,12 +646,12 @@ modparam("htable", "enable_dmq", 1) Default value is 0. - Example 1.16. Set timer_procs parameter + Example 1.17. Set timer_procs parameter ... modparam("htable", "timer_procs", 4) ... -3.14. event_callback (str) +3.15. event_callback (str) The name of the function in the kemi configuration file (embedded scripting language such as Lua, Python, ...) to be executed instead of @@ -645,7 +663,7 @@ modparam("htable", "timer_procs", 4) Default value is 'empty' (no function is executed for events). - Example 1.17. Set event_callback parameter + Example 1.18. Set event_callback parameter ... modparam("htable", "event_callback", "ksr_htable_event") ... @@ -656,7 +674,7 @@ function ksr_htable_event(evname) end ... -3.15. event_callback_mode (int) +3.16. event_callback_mode (int) Control when event_route[htable:init] is executed: 0 - after all modules were initialized; 1 - in first worker process. @@ -666,7 +684,7 @@ end Default value is 0. - Example 1.18. Set event_callback_mode parameter + Example 1.19. Set event_callback_mode parameter ... modparam("htable", "event_callback_mode", 1) ... @@ -696,7 +714,7 @@ modparam("htable", "event_callback_mode", 1) This function can be used from REQUEST_ROUTE, FAILURE_ROUTE, ONREPLY_ROUTE, BRANCH_ROUTE. - Example 1.19. sht_print usage + Example 1.20. sht_print usage ... sht_print(); ... @@ -708,7 +726,7 @@ sht_print(); This function can be used from ANY_ROUTE. - Example 1.20. sht_rm usage + Example 1.21. sht_rm usage ... sht_rm("ha", "test""); ... @@ -721,7 +739,7 @@ sht_rm("ha", "test""); This function can be used from REQUEST_ROUTE, FAILURE_ROUTE, ONREPLY_ROUTE, BRANCH_ROUTE. - Example 1.21. sht_rm_name_re usage + Example 1.22. sht_rm_name_re usage ... sht_rm_name_re("ha=>.*"); ... @@ -734,7 +752,7 @@ sht_rm_name_re("ha=>.*"); This function can be used from REQUEST_ROUTE, FAILURE_ROUTE, ONREPLY_ROUTE, BRANCH_ROUTE. - Example 1.22. sht_rm_value_re usage + Example 1.23. sht_rm_value_re usage ... sht_rm_value_re("ha=>.*"); ... @@ -752,7 +770,7 @@ sht_rm_value_re("ha=>.*"); This function can be used from ANY_ROUTE. - Example 1.23. sht_rm_name usage + Example 1.24. sht_rm_name usage ... sht_rm_name("ha", "re", ".*"); ... @@ -770,7 +788,7 @@ sht_rm_name("ha", "re", ".*"); This function can be used from ANY_ROUTE. - Example 1.24. sht_rm_value usage + Example 1.25. sht_rm_value usage ... sht_rm_value("ha", "re", ".*"); ... @@ -782,7 +800,7 @@ sht_rm_value("ha", "re", ".*"); This function can be used from ANY_ROUTE. - Example 1.25. sht_reset usage + Example 1.26. sht_reset usage ... sht_reset("ha$var(x)"); ... @@ -795,7 +813,7 @@ sht_reset("ha$var(x)"); This function can be used from ANY_ROUTE. - Example 1.26. sht_lock usage + Example 1.27. sht_lock usage ... sht_lock("ha=>test"); ... @@ -808,7 +826,7 @@ sht_lock("ha=>test"); This function can be used from ANY_ROUTE. - Example 1.27. sht_unlock usage + Example 1.28. sht_unlock usage ... sht_lock("ha=>test"); $sht(ha=>test) = $sht(ha=>test) + 10; @@ -830,7 +848,7 @@ sht_unlock("ha=>test"); This function can be used from ANY_ROUTE. - Example 1.28. sht_iterator_start usage + Example 1.29. sht_iterator_start usage ... sht_iterator_start("i1", "h1"); ... @@ -845,7 +863,7 @@ sht_iterator_start("i1", "h1"); This function can be used from ANY_ROUTE. - Example 1.29. sht_iterator_end usage + Example 1.30. sht_iterator_end usage ... sht_iterator_end("i1"); ... @@ -867,7 +885,7 @@ sht_iterator_end("i1"); This function can be used from ANY_ROUTE. - Example 1.30. sht_iterator_next usage + Example 1.31. sht_iterator_next usage ... sht_iterator_start("i1", "h1"); while(sht_iterator_next("i1")) { @@ -891,7 +909,7 @@ sht_iterator_end("i1"); This function can be used from ANY_ROUTE. - Example 1.31. sht_has_name usage + Example 1.32. sht_has_name usage ... if(sht_has_name("ha", "eq", "alice")) { ... @@ -913,7 +931,7 @@ if(sht_has_name("ha", "eq", "alice")) { This function can be used from ANY_ROUTE. - Example 1.32. sht_has_name usage + Example 1.33. sht_has_name usage ... if(sht_has_str_value("ha", "eq", "alice")) { ... diff --git a/src/modules/siputils/README b/src/modules/siputils/README index ea79a97c361..32649f976f3 100644 --- a/src/modules/siputils/README +++ b/src/modules/siputils/README @@ -79,26 +79,27 @@ Gabriel Vasile 4.9. tel2sip(uri, hostpart, result) 4.10. is_e164(pseudo-variable) 4.11. is_uri_user_e164(pseudo-variable) - 4.12. is_tel_number(tval) - 4.13. is_numeric(tval) - 4.14. is_alphanum(tval) - 4.15. is_alphanumex(tval, eset) - 4.16. encode_contact(encoding_prefix,hostpart) - 4.17. decode_contact() - 4.18. decode_contact_header() - 4.19. cmp_uri(str1, str2) - 4.20. cmp_aor(str1, str2) - 4.21. append_rpid_hf() - 4.22. append_rpid_hf(prefix, suffix) - 4.23. is_rpid_user_e164() - 4.24. set_uri_user(uri, user) - 4.25. set_uri_host(uri, host) - 4.26. is_request() - 4.27. is_reply() - 4.28. is_gruu([uri]) - 4.29. is_supported(option) - 4.30. is_first_hop() - 4.31. sip_p_charging_vector(flags) + 4.12. is_uri(pseudo-variable) + 4.13. is_tel_number(tval) + 4.14. is_numeric(tval) + 4.15. is_alphanum(tval) + 4.16. is_alphanumex(tval, eset) + 4.17. encode_contact(encoding_prefix,hostpart) + 4.18. decode_contact() + 4.19. decode_contact_header() + 4.20. cmp_uri(str1, str2) + 4.21. cmp_aor(str1, str2) + 4.22. append_rpid_hf() + 4.23. append_rpid_hf(prefix, suffix) + 4.24. is_rpid_user_e164() + 4.25. set_uri_user(uri, user) + 4.26. set_uri_host(uri, host) + 4.27. is_request() + 4.28. is_reply() + 4.29. is_gruu([uri]) + 4.30. is_supported(option) + 4.31. is_first_hop() + 4.32. sip_p_charging_vector(flags) 5. Exported pseudo-variables @@ -130,26 +131,27 @@ Gabriel Vasile 1.18. tel2sip usage 1.19. is_e164 usage 1.20. is_uri_user_e164 usage - 1.21. is_tel_number usage - 1.22. is_numeric usage - 1.23. is_alphanum usage - 1.24. is_alphanumex usage - 1.25. encode_contact usage - 1.26. decode_contact usage - 1.27. decode_contact_header usage - 1.28. cmp_uri usage - 1.29. cmp_aor usage - 1.30. append_rpid_hf usage - 1.31. append_rpid_hf(prefix, suffix) usage - 1.32. is_rpid_user_e164 usage - 1.33. set_uri_user usage - 1.34. set_uri_host usage - 1.35. is_request usage - 1.36. is_reply usage - 1.37. is_gruu() usage - 1.38. is_supported() usage - 1.39. is_first_hop() usage - 1.40. sip_p_charging_vector() usage + 1.21. is_uri usage + 1.22. is_tel_number usage + 1.23. is_numeric usage + 1.24. is_alphanum usage + 1.25. is_alphanumex usage + 1.26. encode_contact usage + 1.27. decode_contact usage + 1.28. decode_contact_header usage + 1.29. cmp_uri usage + 1.30. cmp_aor usage + 1.31. append_rpid_hf usage + 1.32. append_rpid_hf(prefix, suffix) usage + 1.33. is_rpid_user_e164 usage + 1.34. set_uri_user usage + 1.35. set_uri_host usage + 1.36. is_request usage + 1.37. is_reply usage + 1.38. is_gruu() usage + 1.39. is_supported() usage + 1.40. is_first_hop() usage + 1.41. sip_p_charging_vector() usage Chapter 1. Admin Guide @@ -186,26 +188,27 @@ Chapter 1. Admin Guide 4.9. tel2sip(uri, hostpart, result) 4.10. is_e164(pseudo-variable) 4.11. is_uri_user_e164(pseudo-variable) - 4.12. is_tel_number(tval) - 4.13. is_numeric(tval) - 4.14. is_alphanum(tval) - 4.15. is_alphanumex(tval, eset) - 4.16. encode_contact(encoding_prefix,hostpart) - 4.17. decode_contact() - 4.18. decode_contact_header() - 4.19. cmp_uri(str1, str2) - 4.20. cmp_aor(str1, str2) - 4.21. append_rpid_hf() - 4.22. append_rpid_hf(prefix, suffix) - 4.23. is_rpid_user_e164() - 4.24. set_uri_user(uri, user) - 4.25. set_uri_host(uri, host) - 4.26. is_request() - 4.27. is_reply() - 4.28. is_gruu([uri]) - 4.29. is_supported(option) - 4.30. is_first_hop() - 4.31. sip_p_charging_vector(flags) + 4.12. is_uri(pseudo-variable) + 4.13. is_tel_number(tval) + 4.14. is_numeric(tval) + 4.15. is_alphanum(tval) + 4.16. is_alphanumex(tval, eset) + 4.17. encode_contact(encoding_prefix,hostpart) + 4.18. decode_contact() + 4.19. decode_contact_header() + 4.20. cmp_uri(str1, str2) + 4.21. cmp_aor(str1, str2) + 4.22. append_rpid_hf() + 4.23. append_rpid_hf(prefix, suffix) + 4.24. is_rpid_user_e164() + 4.25. set_uri_user(uri, user) + 4.26. set_uri_host(uri, host) + 4.27. is_request() + 4.28. is_reply() + 4.29. is_gruu([uri]) + 4.30. is_supported(option) + 4.31. is_first_hop() + 4.32. sip_p_charging_vector(flags) 5. Exported pseudo-variables @@ -400,26 +403,27 @@ modparam("auth", "rpid_avp", "$avp(myrpid)") 4.9. tel2sip(uri, hostpart, result) 4.10. is_e164(pseudo-variable) 4.11. is_uri_user_e164(pseudo-variable) - 4.12. is_tel_number(tval) - 4.13. is_numeric(tval) - 4.14. is_alphanum(tval) - 4.15. is_alphanumex(tval, eset) - 4.16. encode_contact(encoding_prefix,hostpart) - 4.17. decode_contact() - 4.18. decode_contact_header() - 4.19. cmp_uri(str1, str2) - 4.20. cmp_aor(str1, str2) - 4.21. append_rpid_hf() - 4.22. append_rpid_hf(prefix, suffix) - 4.23. is_rpid_user_e164() - 4.24. set_uri_user(uri, user) - 4.25. set_uri_host(uri, host) - 4.26. is_request() - 4.27. is_reply() - 4.28. is_gruu([uri]) - 4.29. is_supported(option) - 4.30. is_first_hop() - 4.31. sip_p_charging_vector(flags) + 4.12. is_uri(pseudo-variable) + 4.13. is_tel_number(tval) + 4.14. is_numeric(tval) + 4.15. is_alphanum(tval) + 4.16. is_alphanumex(tval, eset) + 4.17. encode_contact(encoding_prefix,hostpart) + 4.18. decode_contact() + 4.19. decode_contact_header() + 4.20. cmp_uri(str1, str2) + 4.21. cmp_aor(str1, str2) + 4.22. append_rpid_hf() + 4.23. append_rpid_hf(prefix, suffix) + 4.24. is_rpid_user_e164() + 4.25. set_uri_user(uri, user) + 4.26. set_uri_host(uri, host) + 4.27. is_request() + 4.28. is_reply() + 4.29. is_gruu([uri]) + 4.30. is_supported(option) + 4.31. is_first_hop() + 4.32. sip_p_charging_vector(flags) 4.1. ring_insert_callid() @@ -624,14 +628,31 @@ if (is_uri_user_e164("$avp(i:705)") { }; ... -4.12. is_tel_number(tval) +4.12. is_uri(pseudo-variable) + + Checks if string value of pseudo variable argument is a valid uri. + + This function can be used from ANY_ROUTE. + + Example 1.21. is_uri usage +... +if (is_uri("$var(x)")) { # Check if variable contains a uri + ... +} +if (is_uri("$avp(i:705)") { + # Check value stored in avp i:705 + ... +}; +... + +4.13. is_tel_number(tval) Checks if the parameter value is a telephone number: starting with one optional +, followed by digits. The parameter can include variables. This function can be used from ANY_ROUTE. - Example 1.21. is_tel_number usage + Example 1.22. is_tel_number usage ... if (is_tel_number("$rU")) { # Test if R-URI user is telephone number ... @@ -641,35 +662,35 @@ if (is_tel_number("+24242424") { } ... -4.13. is_numeric(tval) +4.14. is_numeric(tval) Checks if the parameter value consists solely of decimal digits. The parameter can include variables. This function can be used from ANY_ROUTE. - Example 1.22. is_numeric usage + Example 1.23. is_numeric usage ... if (is_numeric("$rU")) { # Test if R-URI user consists of decimal digits ... } ... -4.14. is_alphanum(tval) +4.15. is_alphanum(tval) Checks if the parameter value consists solely of decimal digits or alphabetic ASCII characters. The parameter can include variables. This function can be used from ANY_ROUTE. - Example 1.23. is_alphanum usage + Example 1.24. is_alphanum usage ... if (is_alphanum("$rU")) { ... } ... -4.15. is_alphanumex(tval, eset) +4.16. is_alphanumex(tval, eset) Checks if the value of parameter 'tval' consists solely of decimal digits, alphabetic ASCII characters and the characters in the second @@ -677,14 +698,14 @@ if (is_alphanum("$rU")) { This function can be used from ANY_ROUTE. - Example 1.24. is_alphanumex usage + Example 1.25. is_alphanumex usage ... if (is_alphanumex("$rU", "+.-_")) { ... } ... -4.16. encode_contact(encoding_prefix,hostpart) +4.17. encode_contact(encoding_prefix,hostpart) This function will encode uri-s inside Contact header in the following manner sip:username:password@ip:port;transport=protocol goes @@ -706,12 +727,12 @@ if (is_alphanumex("$rU", "+.-_")) { This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE. - Example 1.25. encode_contact usage + Example 1.26. encode_contact usage ... if (src_ip == 10.0.0.0/8) encode_contact("natted_client","1.2.3.4"); ... -4.17. decode_contact() +4.18. decode_contact() This function will decode the request URI. If the RURI is in the format sip:encoding_prefix*username*ip*port*protocol@hostpart it will be @@ -724,12 +745,12 @@ if (src_ip == 10.0.0.0/8) encode_contact("natted_client","1.2.3.4"); This function can be used from REQUEST_ROUTE. - Example 1.26. decode_contact usage + Example 1.27. decode_contact usage ... if (uri =~ "^sip:natted_client") { decode_contact(); } ... -4.18. decode_contact_header() +4.19. decode_contact_header() This function will decode URIs inside Contact header. If the URI in the format sip:encoding_prefix*username*ip*port*protocol@hostpart it will @@ -742,7 +763,7 @@ if (uri =~ "^sip:natted_client") { decode_contact(); } This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE. - Example 1.27. decode_contact_header usage + Example 1.28. decode_contact_header usage ... reply_route[2] { ... @@ -751,13 +772,13 @@ reply_route[2] { } ... -4.19. cmp_uri(str1, str2) +4.20. cmp_uri(str1, str2) The function returns true if the two parameters matches as SIP URI. This function can be used from ANY_ROUTE. - Example 1.28. cmp_uri usage + Example 1.29. cmp_uri usage ... if(cmp_uri("$ru", "sip:kamailio@kamailio.org")) { @@ -765,14 +786,14 @@ if(cmp_uri("$ru", "sip:kamailio@kamailio.org")) } ... -4.20. cmp_aor(str1, str2) +4.21. cmp_aor(str1, str2) The function returns true if the two parameters matches as AoR. The parameters have to be SIP URIs. This function can be used from ANY_ROUTE. - Example 1.29. cmp_aor usage + Example 1.30. cmp_aor usage ... if(cmp_aor("$rU@KaMaIlIo.org", "sip:kamailio@$fd")) { @@ -780,7 +801,7 @@ if(cmp_aor("$rU@KaMaIlIo.org", "sip:kamailio@$fd")) } ... -4.21. append_rpid_hf() +4.22. append_rpid_hf() Appends to the message a Remote-Party-ID header that contains header 'Remote-Party-ID: ' followed by the saved value of the SIP URI received @@ -791,14 +812,14 @@ if(cmp_aor("$rU@KaMaIlIo.org", "sip:kamailio@$fd")) This function can be used from REQUEST_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. - Example 1.30. append_rpid_hf usage + Example 1.31. append_rpid_hf usage ... append_rpid_hf(); # Append Remote-Party-ID header field ... -4.22. append_rpid_hf(prefix, suffix) +4.23. append_rpid_hf(prefix, suffix) - This function is the same as Section 4.21, “ append_rpid_hf()”. The + This function is the same as Section 4.22, “ append_rpid_hf()”. The only difference is that it accepts two parameters--prefix and suffix to be added to Remote-Party-ID header field. This function ignores rpid_prefix and rpid_suffix parameters, instead of that allows to set @@ -815,13 +836,13 @@ append_rpid_hf(); # Append Remote-Party-ID header field This function can be used from REQUEST_ROUTE, FAILURE_ROUTE, BRANCH_ROUTE. - Example 1.31. append_rpid_hf(prefix, suffix) usage + Example 1.32. append_rpid_hf(prefix, suffix) usage ... # Append Remote-Party-ID header field append_rpid_hf("", ";party=calling;id-type=subscriber;screen=yes"); ... -4.23. is_rpid_user_e164() +4.24. is_rpid_user_e164() The function checks if the SIP URI received from the database or radius server and will potentially be used in Remote-Party-ID header field @@ -831,68 +852,68 @@ append_rpid_hf("", ";party=calling;id-type=subscriber;screen=yes"); This function can be used from REQUEST_ROUTE. - Example 1.32. is_rpid_user_e164 usage + Example 1.33. is_rpid_user_e164 usage ... if (is_rpid_user_e164()) { # do something here }; ... -4.24. set_uri_user(uri, user) +4.25. set_uri_user(uri, user) Sets userpart of SIP URI stored in writable pseudo variable 'uri' to value of pseudo variable 'user'. This function can be used from ANY_ROUTE. - Example 1.33. set_uri_user usage + Example 1.34. set_uri_user usage ... $var(uri) = "sip:user@host"; $var(user) = "new_user"; set_uri_user("$var(uri)", "$var(user)"); ... -4.25. set_uri_host(uri, host) +4.26. set_uri_host(uri, host) Sets hostpart of SIP URI stored in writable pseudo variable 'uri' to value of pseudo variable 'host'. This function can be used from ANY_ROUTE. - Example 1.34. set_uri_host usage + Example 1.35. set_uri_host usage ... $var(uri) = "sip:user@host"; $var(host) = "new_host"; set_uri_host("$var(uri)", "$var(host)"); ... -4.26. is_request() +4.27. is_request() Return true if the SIP message is a request. This function can be used from ANY_ROUTE. - Example 1.35. is_request usage + Example 1.36. is_request usage ... if (is_request()) { ... } ... -4.27. is_reply() +4.28. is_reply() Return true if the SIP message is a reply. This function can be used from ANY_ROUTE. - Example 1.36. is_reply usage + Example 1.37. is_reply usage ... if (is_reply()) { ... } ... -4.28. is_gruu([uri]) +4.29. is_gruu([uri]) The function returns true if the uri is GRUU ('gr' parameter is present): 1 - pub-gruu; 2 - temp-gruu. @@ -903,12 +924,12 @@ if (is_reply()) { This function can be used from ANY_ROUTE. - Example 1.37. is_gruu() usage + Example 1.38. is_gruu() usage ... if(is_gruu()) { ... } ... -4.29. is_supported(option) +4.30. is_supported(option) Function returns true if given option is listed in Supported header(s) (if any) of the request. Currently the following options are known: @@ -916,12 +937,12 @@ if(is_gruu()) { ... } This function can be used from ANY_ROUTE. - Example 1.38. is_supported() usage + Example 1.39. is_supported() usage ... if (is_supported("outbound")) { ... } ... -4.30. is_first_hop() +4.31. is_first_hop() The function returns true if the proxy is first hop after the original sender. For incoming SIP requests, it means there is only one Via @@ -935,19 +956,19 @@ if (is_supported("outbound")) { ... } This function can be used from ANY_ROUTE. - Example 1.39. is_first_hop() usage + Example 1.40. is_first_hop() usage ... if(is_first_hop()) { ... } ... -4.31. sip_p_charging_vector(flags) +4.32. sip_p_charging_vector(flags) Manage the P-Charging-Vector header (RFC7315). The flags can be: 'r' - remove; 'g' - generate; 'f' - force (remove + generate). This function can be used from ANY_ROUTE. - Example 1.40. sip_p_charging_vector() usage + Example 1.41. sip_p_charging_vector() usage ... sip_p_charging_vector("g"); ...