Kamailio module rr: Difference between revisions
(Created page with "== Overview == Kamailio module RR 내용 정리. == Functions == === loose_route() === The function performs routing of SIP requests which contain a route set. The name is a...") |
|||
Line 7: | Line 7: | ||
This function is usually used to route in-dialog requests(like ACK, BYE, reINVITE). Nevertheless also out-of-dialog requests can have a "pre-loaded route set" and maybe routed with with loose_route. It also takes care of translating between strict-routers and loose-router. | This function is usually used to route in-dialog requests(like ACK, BYE, reINVITE). Nevertheless also out-of-dialog requests can have a "pre-loaded route set" and maybe routed with with loose_route. It also takes care of translating between strict-routers and loose-router. | ||
The loose_route function analyzes the Route: headers in the requests. If there is no Route: header, the function returns FALSE and routing should be done with normal lookup functions. If a Route: header is found, the function returns 1 and behaves as described in section 16.12 of RFC 3261. There is only one exception: If the request is out-of-dialog (no to-tag) and there is only one Route: header indicating the local proxy, then the Route: header is removed and the function returns FALSE. | |||
When the "outbound" module was loaded before this module and the Route: header contains a username part this function will attempt to use the username part as a flow-token for routing. If route calculation based on flow-token succeeds, function returns TRUE even if there is only one Route: header indicating the local proxy. | |||
Make sure your loose_routing function can't be used by attackers to bypass proxy authorization. | |||
The loose_routing topic is very complex. See RFC 3261 for more details(grep for "route set" is a good starting point in this comprehensive RFC). | |||
This function can be used from REQUEST_ROUTE. | |||
'''Return codes''' | |||
: 1: route calculation has been successful. | |||
: 2: route calculation based on flow-token has been successful. | |||
: -1: route calculation has been unsuccessful. | |||
: -2: outbound flow-token shows evidence of tampering. | |||
: -3: next hop is taken from a preloaded route set. | |||
<pre> | |||
loose_route(); | |||
</pre> | |||
== See also == | == See also == |
Latest revision as of 21:44, 27 July 2019
Overview
Kamailio module RR 내용 정리.
Functions
loose_route()
The function performs routing of SIP requests which contain a route set. The name is a little bit confusing, as this function also routes requests which are in the "strict router" format.
This function is usually used to route in-dialog requests(like ACK, BYE, reINVITE). Nevertheless also out-of-dialog requests can have a "pre-loaded route set" and maybe routed with with loose_route. It also takes care of translating between strict-routers and loose-router.
The loose_route function analyzes the Route: headers in the requests. If there is no Route: header, the function returns FALSE and routing should be done with normal lookup functions. If a Route: header is found, the function returns 1 and behaves as described in section 16.12 of RFC 3261. There is only one exception: If the request is out-of-dialog (no to-tag) and there is only one Route: header indicating the local proxy, then the Route: header is removed and the function returns FALSE.
When the "outbound" module was loaded before this module and the Route: header contains a username part this function will attempt to use the username part as a flow-token for routing. If route calculation based on flow-token succeeds, function returns TRUE even if there is only one Route: header indicating the local proxy.
Make sure your loose_routing function can't be used by attackers to bypass proxy authorization.
The loose_routing topic is very complex. See RFC 3261 for more details(grep for "route set" is a good starting point in this comprehensive RFC).
This function can be used from REQUEST_ROUTE.
Return codes
- 1: route calculation has been successful.
- 2: route calculation based on flow-token has been successful.
- -1: route calculation has been unsuccessful.
- -2: outbound flow-token shows evidence of tampering.
- -3: next hop is taken from a preloaded route set.
loose_route();