Kamailio module rr

From 탱이의 잡동사니
Jump to: navigation, search

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