Kamailio module rr

From 탱이의 잡동사니
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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();

See also