|
@@ -32,15 +32,11 @@ Edited by
|
|
|
|
|
|
Jan Janak
|
|
|
|
|
|
-Edited by
|
|
|
-
|
|
|
Bogdan-Andrei Iancu
|
|
|
|
|
|
-Edited by
|
|
|
-
|
|
|
Gabriel Vasile
|
|
|
|
|
|
- Copyright (c) 2008, 2005, 2003 1&1 Internet AG, FhG Fokus, Voice Sistem
|
|
|
+ Copyright © 2008, 2005, 2003 1&1 Internet AG, FhG Fokus, Voice Sistem
|
|
|
SRL
|
|
|
__________________________________________________________________
|
|
|
|
|
@@ -96,6 +92,7 @@ Gabriel Vasile
|
|
|
4.26. is_gruu([uri])
|
|
|
4.27. is_supported(option)
|
|
|
4.28. is_first_hop()
|
|
|
+ 4.29. sip_p_charging_vector(flags)
|
|
|
|
|
|
List of Examples
|
|
|
|
|
@@ -136,6 +133,7 @@ Gabriel Vasile
|
|
|
1.35. is_gruu() usage
|
|
|
1.36. is_supported() usage
|
|
|
1.37. is_first_hop() usage
|
|
|
+ 1.38. sip_p_charging_vector() usage
|
|
|
|
|
|
Chapter 1. Admin Guide
|
|
|
|
|
@@ -189,6 +187,7 @@ Chapter 1. Admin Guide
|
|
|
4.26. is_gruu([uri])
|
|
|
4.27. is_supported(option)
|
|
|
4.28. is_first_hop()
|
|
|
+ 4.29. sip_p_charging_vector(flags)
|
|
|
|
|
|
1. Overview
|
|
|
|
|
@@ -392,8 +391,9 @@ modparam("auth", "rpid_avp", "$avp(myrpid)")
|
|
|
4.26. is_gruu([uri])
|
|
|
4.27. is_supported(option)
|
|
|
4.28. is_first_hop()
|
|
|
+ 4.29. sip_p_charging_vector(flags)
|
|
|
|
|
|
-4.1. ring_insert_callid()
|
|
|
+4.1. ring_insert_callid()
|
|
|
|
|
|
Inserting the call-id in the internal list, which is checked when
|
|
|
further replies arrive. Any 183 reply that is received during the
|
|
@@ -410,7 +410,7 @@ modparam("auth", "rpid_avp", "$avp(myrpid)")
|
|
|
ring_insert_callid();
|
|
|
...
|
|
|
|
|
|
-4.2. options_reply()
|
|
|
+4.2. options_reply()
|
|
|
|
|
|
This function checks if the request method is OPTIONS and if the
|
|
|
request URI does not contain an username. If both is true the request
|
|
@@ -438,7 +438,7 @@ if (uri==myself) {
|
|
|
}
|
|
|
...
|
|
|
|
|
|
-4.3. is_user(username)
|
|
|
+4.3. is_user(username)
|
|
|
|
|
|
Check if the username in credentials matches the given username.
|
|
|
|
|
@@ -454,7 +454,7 @@ if (is_user("john")) {
|
|
|
};
|
|
|
...
|
|
|
|
|
|
-4.4. has_totag()
|
|
|
+4.4. has_totag()
|
|
|
|
|
|
Check if To header field uri contains tag parameter.
|
|
|
|
|
@@ -467,7 +467,7 @@ if (has_totag()) {
|
|
|
};
|
|
|
...
|
|
|
|
|
|
-4.5. uri_param(param)
|
|
|
+4.5. uri_param(param)
|
|
|
|
|
|
Find if Request URI has a given parameter with no value
|
|
|
|
|
@@ -483,7 +483,7 @@ if (uri_param("param1")) {
|
|
|
};
|
|
|
...
|
|
|
|
|
|
-4.6. uri_param(param,value)
|
|
|
+4.6. uri_param(param,value)
|
|
|
|
|
|
Find if Request URI has a given parameter with matching value
|
|
|
|
|
@@ -500,7 +500,7 @@ if (uri_param("param1","value1")) {
|
|
|
};
|
|
|
...
|
|
|
|
|
|
-4.7. add_uri_param(param)
|
|
|
+4.7. add_uri_param(param)
|
|
|
|
|
|
Add to RURI a parameter (name=value);
|
|
|
|
|
@@ -514,7 +514,7 @@ if (uri_param("param1","value1")) {
|
|
|
add_uri_param("nat=yes");
|
|
|
...
|
|
|
|
|
|
-4.8. get_uri_param(name, var)
|
|
|
+4.8. get_uri_param(name, var)
|
|
|
|
|
|
Get the value of RURI parameter.
|
|
|
|
|
@@ -529,7 +529,7 @@ add_uri_param("nat=yes");
|
|
|
get_uri_param("nat", "$var(nat)");
|
|
|
...
|
|
|
|
|
|
-4.9. tel2sip(uri, hostpart, result)
|
|
|
+4.9. tel2sip(uri, hostpart, result)
|
|
|
|
|
|
Converts URI in first param (pseudo variable or string) to SIP URI, if
|
|
|
it is a tel URI. If conversion was done, writes resulting SIP URI to
|
|
@@ -561,7 +561,7 @@ tel2sip("$ru", $fd", "$ru");
|
|
|
# $ru: sip:+12345678;ext=200;[email protected];user=phone
|
|
|
...
|
|
|
|
|
|
-4.10. is_e164(pseudo-variable)
|
|
|
+4.10. is_e164(pseudo-variable)
|
|
|
|
|
|
Checks if string value of pseudo variable argument is an E164 number.
|
|
|
|
|
@@ -579,7 +579,7 @@ if (is_e164("$avp(i:705)") {
|
|
|
};
|
|
|
...
|
|
|
|
|
|
-4.11. is_uri_user_e164(pseudo-variable)
|
|
|
+4.11. is_uri_user_e164(pseudo-variable)
|
|
|
|
|
|
Checks if userpart of URI stored in pseudo variable is E164 number.
|
|
|
|
|
@@ -596,7 +596,7 @@ if (is_uri_user_e164("$avp(i:705)") {
|
|
|
};
|
|
|
...
|
|
|
|
|
|
-4.12. is_tel_number(tval)
|
|
|
+4.12. is_tel_number(tval)
|
|
|
|
|
|
Checks if the parameter value is a telephone number: starting with one
|
|
|
optional +, followed by digits. The parameter can include variables.
|
|
@@ -613,7 +613,7 @@ if (is_tel_number("+24242424") {
|
|
|
}
|
|
|
...
|
|
|
|
|
|
-4.13. is_numeric(tval)
|
|
|
+4.13. is_numeric(tval)
|
|
|
|
|
|
Checks if the parameter value consists solely of decimal digits. The
|
|
|
parameter can include variables.
|
|
@@ -627,7 +627,7 @@ if (is_numeric($rU)) { # Test if R-URI user consists of decimal digits
|
|
|
}
|
|
|
...
|
|
|
|
|
|
-4.14. encode_contact(encoding_prefix,hostpart)
|
|
|
+4.14. encode_contact(encoding_prefix,hostpart)
|
|
|
|
|
|
This function will encode uri-s inside Contact header in the following
|
|
|
manner sip:username:password@ip:port;transport=protocol goes
|
|
@@ -654,7 +654,7 @@ if (is_numeric($rU)) { # Test if R-URI user consists of decimal digits
|
|
|
if (src_ip == 10.0.0.0/8) encode_contact("natted_client","1.2.3.4");
|
|
|
...
|
|
|
|
|
|
-4.15. decode_contact()
|
|
|
+4.15. decode_contact()
|
|
|
|
|
|
This function will decode the request URI. If the RURI is in the format
|
|
|
sip:encoding_prefix*username*ip*port*protocol@hostpart it will be
|
|
@@ -672,7 +672,7 @@ if (src_ip == 10.0.0.0/8) encode_contact("natted_client","1.2.3.4");
|
|
|
if (uri =~ "^sip:natted_client") { decode_contact(); }
|
|
|
...
|
|
|
|
|
|
-4.16. decode_contact_header()
|
|
|
+4.16. decode_contact_header()
|
|
|
|
|
|
This function will decode URIs inside Contact header. If the URI in the
|
|
|
format sip:encoding_prefix*username*ip*port*protocol@hostpart it will
|
|
@@ -694,7 +694,7 @@ reply_route[2] {
|
|
|
}
|
|
|
...
|
|
|
|
|
|
-4.17. cmp_uri(str1, str2)
|
|
|
+4.17. cmp_uri(str1, str2)
|
|
|
|
|
|
The function returns true if the two parameters matches as SIP URI.
|
|
|
|
|
@@ -708,7 +708,7 @@ if(cmp_uri("$ru", "sip:[email protected]"))
|
|
|
}
|
|
|
...
|
|
|
|
|
|
-4.18. cmp_aor(str1, str2)
|
|
|
+4.18. cmp_aor(str1, str2)
|
|
|
|
|
|
The function returns true if the two parameters matches as AoR. The
|
|
|
parameters have to be SIP URIs.
|
|
@@ -723,7 +723,7 @@ if(cmp_aor("[email protected]", "sip:kamailio@$fd"))
|
|
|
}
|
|
|
...
|
|
|
|
|
|
-4.19. append_rpid_hf()
|
|
|
+4.19. append_rpid_hf()
|
|
|
|
|
|
Appends to the message a Remote-Party-ID header that contains header
|
|
|
'Remote-Party-ID: ' followed by the saved value of the SIP URI received
|
|
@@ -739,7 +739,7 @@ if(cmp_aor("[email protected]", "sip:kamailio@$fd"))
|
|
|
append_rpid_hf(); # Append Remote-Party-ID header field
|
|
|
...
|
|
|
|
|
|
-4.20. append_rpid_hf(prefix, suffix)
|
|
|
+4.20. append_rpid_hf(prefix, suffix)
|
|
|
|
|
|
This function is the same as Section 4.19, " append_rpid_hf()". The
|
|
|
only difference is that it accepts two parameters--prefix and suffix to
|
|
@@ -764,7 +764,7 @@ append_rpid_hf(); # Append Remote-Party-ID header field
|
|
|
append_rpid_hf("", ";party=calling;id-type=subscriber;screen=yes");
|
|
|
...
|
|
|
|
|
|
-4.21. is_rpid_user_e164()
|
|
|
+4.21. is_rpid_user_e164()
|
|
|
|
|
|
The function checks if the SIP URI received from the database or radius
|
|
|
server and will potentially be used in Remote-Party-ID header field
|
|
@@ -781,7 +781,7 @@ if (is_rpid_user_e164()) {
|
|
|
};
|
|
|
...
|
|
|
|
|
|
-4.22. set_uri_user(uri, user)
|
|
|
+4.22. set_uri_user(uri, user)
|
|
|
|
|
|
Sets userpart of SIP URI stored in writable pseudo variable 'uri' to
|
|
|
value of pseudo variable 'user'.
|
|
@@ -795,7 +795,7 @@ $var(user) = "new_user";
|
|
|
set_uri_user("$var(uri)", "$var(user)");
|
|
|
...
|
|
|
|
|
|
-4.23. set_uri_host(uri, host)
|
|
|
+4.23. set_uri_host(uri, host)
|
|
|
|
|
|
Sets hostpart of SIP URI stored in writable pseudo variable 'uri' to
|
|
|
value of pseudo variable 'host'.
|
|
@@ -809,7 +809,7 @@ $var(host) = "new_host";
|
|
|
set_uri_host("$var(uri)", "$var(host)");
|
|
|
...
|
|
|
|
|
|
-4.24. is_request()
|
|
|
+4.24. is_request()
|
|
|
|
|
|
Return true if the SIP message is a request.
|
|
|
|
|
@@ -822,7 +822,7 @@ if (is_request()) {
|
|
|
}
|
|
|
...
|
|
|
|
|
|
-4.25. is_reply()
|
|
|
+4.25. is_reply()
|
|
|
|
|
|
Return true if the SIP message is a reply.
|
|
|
|
|
@@ -835,7 +835,7 @@ if (is_reply()) {
|
|
|
}
|
|
|
...
|
|
|
|
|
|
-4.26. is_gruu([uri])
|
|
|
+4.26. is_gruu([uri])
|
|
|
|
|
|
The function returns true if the uri is GRUU ('gr' parameter is
|
|
|
present): 1 - pub-gruu; 2 - temp-gruu.
|
|
@@ -851,7 +851,7 @@ if (is_reply()) {
|
|
|
if(is_gruu()) { ... }
|
|
|
...
|
|
|
|
|
|
-4.27. is_supported(option)
|
|
|
+4.27. is_supported(option)
|
|
|
|
|
|
Function returns true if given option is listed in Supported header(s)
|
|
|
(if any) of the request. Currently the following options are known:
|
|
@@ -864,7 +864,7 @@ if(is_gruu()) { ... }
|
|
|
if (is_supported("outbound")) { ... }
|
|
|
...
|
|
|
|
|
|
-4.28. is_first_hop()
|
|
|
+4.28. is_first_hop()
|
|
|
|
|
|
The function returns true if the proxy is first hop after the original
|
|
|
sender. For incoming SIP requests, it means there is only one Via
|
|
@@ -880,3 +880,15 @@ if (is_supported("outbound")) { ... }
|
|
|
...
|
|
|
if(is_first_hop()) { ... }
|
|
|
...
|
|
|
+
|
|
|
+4.29. sip_p_charging_vector(flags)
|
|
|
+
|
|
|
+ Manage the P-Charging-Vector header (RFC3455). The flags can be: 'r' -
|
|
|
+ remove; 'g' - generate; 'f' - force (remove + generate).
|
|
|
+
|
|
|
+ This function can be used from ANY_ROUTE.
|
|
|
+
|
|
|
+ Example 1.38. sip_p_charging_vector() usage
|
|
|
+...
|
|
|
+sip_p_charging_vector("g");
|
|
|
+...
|