Module: kamailio Branch: master Commit: 9c2fea2df70e3fe609324a9d868efe9998bcda10 URL: https://github.com/kamailio/kamailio/commit/9c2fea2df70e3fe609324a9d868efe99...
Author: Kamailio Dev kamailio.dev@kamailio.org Committer: Kamailio Dev kamailio.dev@kamailio.org Date: 2021-05-11T15:46:16+02:00
modules: readme files regenerated - siputils ... [skip ci]
---
Modified: src/modules/siputils/README
---
Diff: https://github.com/kamailio/kamailio/commit/9c2fea2df70e3fe609324a9d868efe99... Patch: https://github.com/kamailio/kamailio/commit/9c2fea2df70e3fe609324a9d868efe99...
---
diff --git a/src/modules/siputils/README b/src/modules/siputils/README index 87d3ecf9e4..a1aeae393c 100644 --- a/src/modules/siputils/README +++ b/src/modules/siputils/README @@ -96,7 +96,7 @@ Gabriel Vasile 4.30. is_reply() 4.31. is_gruu([uri]) 4.32. is_supported(option) - 4.33. is_first_hop() + 4.33. is_first_hop([mode]) 4.34. sip_p_charging_vector(flags) 4.35. contact_param_encode(pname, saddr) 4.36. contact_param_decode(pname) @@ -217,7 +217,7 @@ Chapter 1. Admin Guide 4.30. is_reply() 4.31. is_gruu([uri]) 4.32. is_supported(option) - 4.33. is_first_hop() + 4.33. is_first_hop([mode]) 4.34. sip_p_charging_vector(flags) 4.35. contact_param_encode(pname, saddr) 4.36. contact_param_decode(pname) @@ -438,7 +438,7 @@ modparam("auth", "rpid_avp", "$avp(myrpid)") 4.30. is_reply() 4.31. is_gruu([uri]) 4.32. is_supported(option) - 4.33. is_first_hop() + 4.33. is_first_hop([mode]) 4.34. sip_p_charging_vector(flags) 4.35. contact_param_encode(pname, saddr) 4.36. contact_param_decode(pname) @@ -994,24 +994,37 @@ if(is_gruu()) { ... } if (is_supported("outbound")) { ... } ...
-4.33. is_first_hop() +4.33. is_first_hop([mode])
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 - header. For incoming SIP replies, it means that top Record-Route URI is - 'myself' and source address is not matching it (to avoid detecting in - case of local loops). The detection is done only when Record-Route has - an IP address in its URI (for a domain, it returns -1/false). + sender based on a best effort estimation by checking Via and + Record-Route headers. + + For incoming SIP requests, it means there is only one Via header. + + For incoming SIP replies, if mode==0, it means that top Record-Route + URI is 'myself' and source address is not matching local IP (to avoid + detecting in case of local loops). Therefore for mode==0 the detection + is done only when Record-Route has an IP address in its URI (for a + domain, it returns -1/false). If mode==1, then the check of local IP is + no longer done, only if top Record-Route is myself, returning true also + if there is a domain, assuming that is expected no looping can happen + based on config rules.
Note that it does not detect spirals, which can have the condition for replies true also in the case of additional SIP reply reception.
+ Parameter mode is optional and can be an integer or a varaible holding + an integer. If not provided, the behaviour is like mode==0. + This function can be used from ANY_ROUTE.
Example 1.42. is_first_hop() usage ... if(is_first_hop()) { ... } ... +if(is_first_hop_mode("1")) { ... } +...
4.34. sip_p_charging_vector(flags)