mirror of https://github.com/sipwise/kamailio.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
5.5 KiB
195 lines
5.5 KiB
path Module
|
|
|
|
Andreas Granig
|
|
|
|
Inode GmbH
|
|
|
|
Edited by
|
|
|
|
Andreas Granig
|
|
|
|
Copyright © 2006 Inode GmbH
|
|
Revision History
|
|
Revision $Revision$ $Date: 2008-08-06 12:08:33 +0200
|
|
(Mi, 06 Aug 2008) $
|
|
__________________________________________________________
|
|
|
|
Table of Contents
|
|
|
|
1. Admin Guide
|
|
|
|
1.1. Overview
|
|
|
|
1.1.1. Path insertion for registrations
|
|
1.1.2. Outbound routing to NAT'ed UACs
|
|
|
|
1.2. Dependencies
|
|
|
|
1.2.1. Kamailio Modules
|
|
1.2.2. External Libraries or Applications
|
|
|
|
1.3. Exported Parameters
|
|
|
|
1.3.1. use_received (int)
|
|
|
|
1.4. Exported Functions
|
|
|
|
1.4.1. add_path()
|
|
1.4.2. add_path(user)
|
|
1.4.3. add_path_received()
|
|
1.4.4. add_path_received(user)
|
|
|
|
List of Examples
|
|
|
|
1.1. Set use_received parameter
|
|
1.2. add_path usage
|
|
1.3. add_path(user) usage
|
|
1.4. add_path_received() usage
|
|
1.5. add_path_received(user) usage
|
|
|
|
Chapter 1. Admin Guide
|
|
|
|
1.1. Overview
|
|
|
|
This module is designed to be used at intermediate sip proxies
|
|
like loadbalancers in front of registrars and proxies. It
|
|
provides functions for inserting a Path header including a
|
|
parameter for passing forward the received-URI of a
|
|
registration to the next hop. It also provides a mechanism for
|
|
evaluating this parameter in subsequent requests and to set the
|
|
destination URI according to it.
|
|
|
|
1.1.1. Path insertion for registrations
|
|
|
|
For registrations in a scenario like "[UAC] -> [P1] -> [REG]",
|
|
the "path" module can be used at the intermediate proxy P1 to
|
|
insert a Path header into the message before forwarding it to
|
|
the registrar REG. Two functions can be used to achieve this:
|
|
* add_path(...) adds a Path header in the form of "Path:
|
|
<sip:1.2.3.4;lr>" to the message using the address of the
|
|
outgoing interface. A port is only added if it's not the
|
|
default port 5060.
|
|
If a username is passed to the function, it is also
|
|
included in the Path URI, like "Path:
|
|
<sip:username@1.2.3.4;lr>".
|
|
* add_path_received(...) also add a Path header in the same
|
|
form as above, but also adds a parameter indicating the
|
|
received-URI of the message, like "Path:
|
|
<sip:1.2.3.4;received=sip:2.3.4.5:1234;lr>". This is
|
|
especially useful if the proxy does NAT detection and wants
|
|
to pass the NAT'ed address to the registrar.
|
|
If the function is called with a username, it's included in
|
|
the Path URI too.
|
|
|
|
1.1.2. Outbound routing to NAT'ed UACs
|
|
|
|
If the NAT'ed address of an UAC is passed to the registrar, the
|
|
registrar routes back subsequent requests using the Path header
|
|
of the registration as Route header of the current request. If
|
|
the intermediate proxy had inserted a Path header including the
|
|
"received" parameter during the registration, this parameter
|
|
will show up in the Route header of the new request as well,
|
|
allowing the intermediate proxy to route to this address
|
|
instead of the one propagated in the Route URI for tunneling
|
|
through NAT. This behaviour can be activated by setting the
|
|
module parameter "use_received".
|
|
|
|
1.2. Dependencies
|
|
|
|
1.2.1. Kamailio Modules
|
|
|
|
The following modules must be loaded before this module:
|
|
* The "rr" module is needed for outbound routing according to
|
|
the "received" parameter.
|
|
|
|
1.2.2. External Libraries or Applications
|
|
|
|
The following libraries or applications must be installed
|
|
before running Kamailio with this module loaded:
|
|
* None.
|
|
|
|
1.3. Exported Parameters
|
|
|
|
1.3.1. use_received (int)
|
|
|
|
If set to 1, the "received" parameter of the first Route URI is
|
|
evaluated and used as destination-URI if present.
|
|
|
|
Default value is 0.
|
|
|
|
Example 1.1. Set use_received parameter
|
|
...
|
|
modparam("path", "use_received", 1)
|
|
...
|
|
|
|
1.4. Exported Functions
|
|
|
|
1.4.1. add_path()
|
|
|
|
This function is used to insert a Path header in the form
|
|
"Path: <sip:1.2.3.4;lr>", where "1.2.3.4" is the address of the
|
|
outgoing interface.
|
|
|
|
This function can be used from REQUEST_ROUTE.
|
|
|
|
Example 1.2. add_path usage
|
|
...
|
|
if (!add_path()) {
|
|
sl_send_reply("503", "Internal Path Error");
|
|
...
|
|
};
|
|
...
|
|
|
|
1.4.2. add_path(user)
|
|
|
|
This function adds a Path header in the form "Path:
|
|
<sip:user@1.2.3.4;lr>".
|
|
|
|
Meaning of the parameters is as follows:
|
|
* user - The username to be inserted as user part.
|
|
|
|
This function can be used from REQUEST_ROUTE.
|
|
|
|
Example 1.3. add_path(user) usage
|
|
...
|
|
if (!add_path("loadbalancer")) {
|
|
sl_send_reply("503", "Internal Path Error");
|
|
...
|
|
};
|
|
...
|
|
|
|
1.4.3. add_path_received()
|
|
|
|
This function adds a Path header in the form "Path:
|
|
<sip:1.2.3.4;received=sip:2.3.4.5:1234;lr>", setting it's own
|
|
outgoing address as domain-part, and the address the request
|
|
has been received from as received-parameter.
|
|
|
|
This function can be used from REQUEST_ROUTE.
|
|
|
|
Example 1.4. add_path_received() usage
|
|
...
|
|
if (!add_path_received()) {
|
|
sl_send_reply("503", "Internal Path Error");
|
|
...
|
|
};
|
|
...
|
|
|
|
1.4.4. add_path_received(user)
|
|
|
|
This function adds a Path header in the form "Path:
|
|
<sip:user@1.2.3.4;received=sip:2.3.4.5:1234;lr>", setting
|
|
'user' as username part of address, it's own outgoing address
|
|
as domain-part, and the address the request has been received
|
|
from as received-parameter.
|
|
|
|
This function can be used from REQUEST_ROUTE.
|
|
|
|
Example 1.5. add_path_received(user) usage
|
|
...
|
|
if (!add_path_received("inbound")) {
|
|
sl_send_reply("503", "Internal Path Error");
|
|
...
|
|
};
|
|
...
|