|
@@ -18,7 +18,7 @@ Gabriel Vasile
|
|
|
|
|
|
1. Overview
|
|
|
|
|
|
- This is a module to help with SDP mangling
|
|
|
+ This is a module to help with SDP mangling - changing data in the SDP.
|
|
|
|
|
|
2. Parameters
|
|
|
|
|
@@ -27,7 +27,8 @@ Gabriel Vasile
|
|
|
2.1. contact_flds_separator (string)
|
|
|
|
|
|
First char of this parameter is used as separator for encoding/decoding
|
|
|
- Contact header.
|
|
|
+ Contact header. If you set this parameter to "-", then an encoded uri
|
|
|
+ might look sip:user-password-ip-port-protocol@PublicIP
|
|
|
|
|
|
Warning
|
|
|
|
|
@@ -39,12 +40,9 @@ Warning
|
|
|
|
|
|
Example 1. Set db_url parameter
|
|
|
...
|
|
|
-modparam("module", "contact_flds_separator", "-")
|
|
|
+modparam("mangler", "contact_flds_separator", "-")
|
|
|
...
|
|
|
|
|
|
- then an encoded uri might look
|
|
|
- sip:user-password-ip-port-protocol@PublicIP
|
|
|
-
|
|
|
3. Functions
|
|
|
|
|
|
3.1. sdp_mangle_ip(pattern, newip)
|
|
@@ -56,14 +54,14 @@ modparam("module", "contact_flds_separator", "-")
|
|
|
3.1. sdp_mangle_ip(pattern, newip)
|
|
|
|
|
|
Changes IP addresses inside SDP package in lines describing connections
|
|
|
- like c=IN IP4 Currently in only changes IP4 addresses since IP6
|
|
|
- probably will not need to traverse NAT :)
|
|
|
+ like c=IN IP4 . Currently this function only changes IP4 addresses
|
|
|
+ since IP6 probably will not need to traverse NAT :)
|
|
|
|
|
|
The function returns negative on error, or number of replacements + 1.
|
|
|
|
|
|
Meaning of the parameters is as follows:
|
|
|
- * pattern - A pair ip/mask used to match IP's located inside SDP
|
|
|
- package in lines c=IN IP4 ip. This lines will only be mangled if
|
|
|
+ * pattern - A ip address/mask pair used to match IP's located inside
|
|
|
+ SDP package in lines c=IN IP4 ip. This line will only be changed if
|
|
|
located IP is in the network described by this pattern. Examples of
|
|
|
valid patterns are "10.0.0.0/255.0.0.0" or "10.0.0.0/8" etc.
|
|
|
* newip - A string representing the new IP to be put inside SDP
|
|
@@ -94,14 +92,14 @@ sdp_mangle_port("-12000");
|
|
|
|
|
|
This function will encode uri-s inside Contact header in the following
|
|
|
manner sip:username:password@ip:port;transport=protocol goes
|
|
|
- sip:enc_pref*username*ip*port*protocol@public_ip * is the default
|
|
|
- separator.
|
|
|
+ sip:enc_pref*username*ip*port*protocol@public_ip. "*" (asterisk) is the
|
|
|
+ default separator.
|
|
|
|
|
|
The function returns negative on error, 1 on success.
|
|
|
|
|
|
Meaning of the parameters is as follows:
|
|
|
* encoding_prefix - Something to allow us to determine that a contact
|
|
|
- is encoded publicip--a routable IP,most probably you should put
|
|
|
+ is encoded public ip--a routable IP, most probably you should put
|
|
|
your external IP of your NAT box.
|
|
|
|
|
|
Example 4. encode_contact usage
|
|
@@ -114,16 +112,14 @@ if (src_ip == 10.0.0.0/8) encode_contact("enc_prefix","193.175.135.38");
|
|
|
This function will decode the URI in first line in packets which come
|
|
|
with encoded URI in the following manner
|
|
|
sip:enc_pref*username*ip*port*protocol*src_ip*src_port*src_proto@public
|
|
|
- _ip;parameters goes to sip:username:password@ip:port;parameters and
|
|
|
- will set dst_uri to sip:src_ip:src_port;transport=src_proto (so that
|
|
|
- the next forward() or t_relay() will send the message back to
|
|
|
+ _ip;parameters is converted to sip:username:password@ip:port;parameters
|
|
|
+ and will set destination URI to sip:src_ip:src_port;transport=src_proto
|
|
|
+ (so that the next forward() or t_relay() will send the message back to
|
|
|
src_ip:src_port using src_proto). It uses the default set parameter for
|
|
|
contact encoding separator.
|
|
|
|
|
|
The function returns negative on error, 1 on success.
|
|
|
|
|
|
- Meaning of the parameters is as follows:
|
|
|
-
|
|
|
Example 5. decode_contact usage
|
|
|
...
|
|
|
if (uri =~ "^enc*") { decode_contact(); }
|
|
@@ -132,15 +128,13 @@ if (uri =~ "^enc*") { decode_contact(); }
|
|
|
3.5. decode_contact_header()
|
|
|
|
|
|
This function will decode URIs inside Contact header in the same manner
|
|
|
- as decode_contact. The difference is no dst_uri is set (src_ip,
|
|
|
+ as decode_contact(). The difference is that no dst_uri is set (src_ip,
|
|
|
src_port and src_proto are ignored) and instead of changing the request
|
|
|
- uri, the Contact header uris are modified. It uses the default set
|
|
|
+ uri, the Contact header URI is modified. It uses the default set
|
|
|
parameter for contact encoding separator.
|
|
|
|
|
|
The function returns negative on error, 1 on success.
|
|
|
|
|
|
- Meaning of the parameters is as follows:
|
|
|
-
|
|
|
Example 6. decode_contact_header usage
|
|
|
...
|
|
|
if (uri =~ "^enc*") { decode_contact_header(); }
|