|
@@ -82,18 +82,19 @@ Bogdan-Andrei Iancu
|
|
1.2. Set enable_full_lr parameter
|
|
1.2. Set enable_full_lr parameter
|
|
1.3. Set append_fromtag parameter
|
|
1.3. Set append_fromtag parameter
|
|
1.4. Set enable_double_rr parameter
|
|
1.4. Set enable_double_rr parameter
|
|
- 1.5. Set add_username parameter
|
|
|
|
- 1.6. enable_socket_mismatch_warning usage
|
|
|
|
- 1.7. custom_user_avp usage
|
|
|
|
- 1.8. loose_route usage
|
|
|
|
- 1.9. record_route usage
|
|
|
|
- 1.10. remove_record_route usage
|
|
|
|
- 1.11. record_route_preset usage
|
|
|
|
- 1.12. record_route_advertised_address usage
|
|
|
|
- 1.13. add_rr_param usage
|
|
|
|
- 1.14. check_route_param usage
|
|
|
|
- 1.15. is_direction usage
|
|
|
|
- 1.16. $route_uri
|
|
|
|
|
|
+ 1.5. Set enable_double_rr to 2 to always have two explicit RR headers
|
|
|
|
+ 1.6. Set add_username parameter
|
|
|
|
+ 1.7. enable_socket_mismatch_warning usage
|
|
|
|
+ 1.8. custom_user_avp usage
|
|
|
|
+ 1.9. loose_route usage
|
|
|
|
+ 1.10. record_route usage
|
|
|
|
+ 1.11. remove_record_route usage
|
|
|
|
+ 1.12. record_route_preset usage
|
|
|
|
+ 1.13. record_route_advertised_address usage
|
|
|
|
+ 1.14. add_rr_param usage
|
|
|
|
+ 1.15. check_route_param usage
|
|
|
|
+ 1.16. is_direction usage
|
|
|
|
+ 1.17. $route_uri
|
|
2.1. record_route usage
|
|
2.1. record_route usage
|
|
2.2. record_route_advertised_address usage
|
|
2.2. record_route_advertised_address usage
|
|
2.3. Loading RR module's API from another module
|
|
2.3. Loading RR module's API from another module
|
|
@@ -253,6 +254,22 @@ modparam("rr", "append_fromtag", 0)
|
|
Example 1.4. Set enable_double_rr parameter
|
|
Example 1.4. Set enable_double_rr parameter
|
|
...
|
|
...
|
|
modparam("rr", "enable_double_rr", 0)
|
|
modparam("rr", "enable_double_rr", 0)
|
|
|
|
+...
|
|
|
|
+
|
|
|
|
+ Some useragents (e. g. Linphone) incorrectly use UDP transport for
|
|
|
|
+ subsequent requests in dialog, despite being configured to use another
|
|
|
|
+ SIP transport protocol. This can be worked around by setting
|
|
|
|
+ Record-Route header with explicit transport attribute. But
|
|
|
|
+ enable_double_rr enabled in default mode omits transport attribute from
|
|
|
|
+ being added to header if it detects that both sender and receiver use
|
|
|
|
+ same protocol (e. g. TCP or TLS), and this results in UDP being used by
|
|
|
|
+ such broken clients. Set enable_double_rr to value 2 to always have two
|
|
|
|
+ RR headers with transport attributes expicitly set.
|
|
|
|
+
|
|
|
|
+ Example 1.5. Set enable_double_rr to 2 to always have two explicit RR
|
|
|
|
+ headers
|
|
|
|
+...
|
|
|
|
+modparam("rr", "enable_double_rr", 2)
|
|
...
|
|
...
|
|
|
|
|
|
4.4. add_username (integer)
|
|
4.4. add_username (integer)
|
|
@@ -266,7 +283,7 @@ modparam("rr", "enable_double_rr", 0)
|
|
|
|
|
|
Default value is 0 (no).
|
|
Default value is 0 (no).
|
|
|
|
|
|
- Example 1.5. Set add_username parameter
|
|
|
|
|
|
+ Example 1.6. Set add_username parameter
|
|
...
|
|
...
|
|
modparam("rr", "add_username", 1)
|
|
modparam("rr", "add_username", 1)
|
|
...
|
|
...
|
|
@@ -282,7 +299,7 @@ modparam("rr", "add_username", 1)
|
|
|
|
|
|
Default value is 1 (yes).
|
|
Default value is 1 (yes).
|
|
|
|
|
|
- Example 1.6. enable_socket_mismatch_warning usage
|
|
|
|
|
|
+ Example 1.7. enable_socket_mismatch_warning usage
|
|
...
|
|
...
|
|
modparam("rr", "enable_socket_mismatch_warning", 0)
|
|
modparam("rr", "enable_socket_mismatch_warning", 0)
|
|
...
|
|
...
|
|
@@ -297,7 +314,7 @@ modparam("rr", "enable_socket_mismatch_warning", 0)
|
|
Default value: if not set, the std add_username behaviour is used -
|
|
Default value: if not set, the std add_username behaviour is used -
|
|
i.e. Request URI username.
|
|
i.e. Request URI username.
|
|
|
|
|
|
- Example 1.7. custom_user_avp usage
|
|
|
|
|
|
+ Example 1.8. custom_user_avp usage
|
|
...
|
|
...
|
|
modparam("rr", "custom_user_avp", "$avp(RR_CUSTOMER_USER_AVP)")
|
|
modparam("rr", "custom_user_avp", "$avp(RR_CUSTOMER_USER_AVP)")
|
|
|
|
|
|
@@ -359,7 +376,7 @@ record_route();
|
|
|
|
|
|
This function can be used from REQUEST_ROUTE.
|
|
This function can be used from REQUEST_ROUTE.
|
|
|
|
|
|
- Example 1.8. loose_route usage
|
|
|
|
|
|
+ Example 1.9. loose_route usage
|
|
...
|
|
...
|
|
loose_route();
|
|
loose_route();
|
|
...
|
|
...
|
|
@@ -382,7 +399,7 @@ loose_route();
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE and
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE and
|
|
FAILURE_ROUTE.
|
|
FAILURE_ROUTE.
|
|
|
|
|
|
- Example 1.9. record_route usage
|
|
|
|
|
|
+ Example 1.10. record_route usage
|
|
...
|
|
...
|
|
record_route();
|
|
record_route();
|
|
...
|
|
...
|
|
@@ -396,7 +413,7 @@ record_route();
|
|
|
|
|
|
This function can be used from REQUEST_ROUTE and FAILURE_ROUTE.
|
|
This function can be used from REQUEST_ROUTE and FAILURE_ROUTE.
|
|
|
|
|
|
- Example 1.10. remove_record_route usage
|
|
|
|
|
|
+ Example 1.11. remove_record_route usage
|
|
...
|
|
...
|
|
remove_record_route();
|
|
remove_record_route();
|
|
...
|
|
...
|
|
@@ -424,7 +441,7 @@ remove_record_route();
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE and
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE and
|
|
FAILURE_ROUTE.
|
|
FAILURE_ROUTE.
|
|
|
|
|
|
- Example 1.11. record_route_preset usage
|
|
|
|
|
|
+ Example 1.12. record_route_preset usage
|
|
...
|
|
...
|
|
record_route_preset("1.2.3.4:5090");
|
|
record_route_preset("1.2.3.4:5090");
|
|
...
|
|
...
|
|
@@ -451,7 +468,7 @@ record_route_preset("1.2.3.4:5090");
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE and
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE and
|
|
FAILURE_ROUTE.
|
|
FAILURE_ROUTE.
|
|
|
|
|
|
- Example 1.12. record_route_advertised_address usage
|
|
|
|
|
|
+ Example 1.13. record_route_advertised_address usage
|
|
...
|
|
...
|
|
record_route_advertised_address("1.2.3.4:5080");
|
|
record_route_advertised_address("1.2.3.4:5080");
|
|
...
|
|
...
|
|
@@ -471,7 +488,7 @@ record_route_advertised_address("1.2.3.4:5080");
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE and
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE and
|
|
FAILURE_ROUTE.
|
|
FAILURE_ROUTE.
|
|
|
|
|
|
- Example 1.13. add_rr_param usage
|
|
|
|
|
|
+ Example 1.14. add_rr_param usage
|
|
...
|
|
...
|
|
add_rr_param(";nat=yes");
|
|
add_rr_param(";nat=yes");
|
|
...
|
|
...
|
|
@@ -488,7 +505,7 @@ add_rr_param(";nat=yes");
|
|
|
|
|
|
This function can be used from REQUEST_ROUTE.
|
|
This function can be used from REQUEST_ROUTE.
|
|
|
|
|
|
- Example 1.14. check_route_param usage
|
|
|
|
|
|
+ Example 1.15. check_route_param usage
|
|
...
|
|
...
|
|
if (check_route_param("nat=yes")) {
|
|
if (check_route_param("nat=yes")) {
|
|
setflag(6);
|
|
setflag(6);
|
|
@@ -516,7 +533,7 @@ if (check_route_param("nat=yes")) {
|
|
|
|
|
|
This function can be used from REQUEST_ROUTE.
|
|
This function can be used from REQUEST_ROUTE.
|
|
|
|
|
|
- Example 1.15. is_direction usage
|
|
|
|
|
|
+ Example 1.16. is_direction usage
|
|
...
|
|
...
|
|
if (is_direction("downstream")) {
|
|
if (is_direction("downstream")) {
|
|
xdbg("in-dialog request from caller to callee (downstream) ($rm)\n");
|
|
xdbg("in-dialog request from caller to callee (downstream) ($rm)\n");
|
|
@@ -533,7 +550,7 @@ if (is_direction("downstream")) {
|
|
|
|
|
|
Returns the URI of the top route-header.
|
|
Returns the URI of the top route-header.
|
|
|
|
|
|
- Example 1.16. $route_uri
|
|
|
|
|
|
+ Example 1.17. $route_uri
|
|
...
|
|
...
|
|
xdbg("Route-URI is: $route_uri\n");
|
|
xdbg("Route-URI is: $route_uri\n");
|
|
...
|
|
...
|