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.
|
|
15 years ago | |
|---|---|---|
| .. | ||
| doc | 15 years ago | |
| Makefile | 15 years ago | |
| README | 15 years ago | |
| common.h | 15 years ago | |
| contact_ops.c | 15 years ago | |
| contact_ops.h | 15 years ago | |
| ip_helper.c | 15 years ago | |
| ip_helper.h | 15 years ago | |
| mangler.c | 15 years ago | |
| mangler.cfg | 15 years ago | |
| mangler.h | 15 years ago | |
| sdp_mangler.c | 15 years ago | |
| sdp_mangler.h | 15 years ago | |
| utils.c | 15 years ago | |
| utils.h | 15 years ago | |
README
mangler Module
Gabriel Vasile
FhG FOKUS
Edited by
Gabriel Vasile
Copyright © 2003 Fill in here
_________________________________________________________
Table of Contents
1. User's Guide
1.1. Overview
1.2. Dependencies
1.2.1. SER Modules
1.2.2. External Libraries or Applications
1.3. Exported Parameters
1.3.1. contact_flds_separator (string)
1.4. Exported Functions
1.4.1. sdp_mangle_ip(pattern, newip)
1.4.2. sdp_mangle_port(offset)
1.4.3. encode_contact(encoding_prefix)
1.4.4. decode_contact()
1.4.5. decode_contact_header()
2. Developer's Guide
3. Frequently Asked Questions
List of Examples
1-1. Set db_url parameter
1-2. sdp_mangle_ip usage
1-3. sdp_mangle_port usage
1-4. encode_contact usage
1-5. decode_contact usage
1-6. decode_contact_header usage
_________________________________________________________
Chapter 1. User's Guide
1.1. Overview
This is a module to help with SDP mangling. Still in testing.
_________________________________________________________
1.2. Dependencies
1.2.1. SER Modules
The following modules must be loaded before this module:
* No dependencies on other SER modules.
_________________________________________________________
1.2.2. External Libraries or Applications
The following libraries or applications must be installed
before running SER with this module loaded:
* None.
_________________________________________________________
1.3. Exported Parameters
1.3.1. contact_flds_separator (string)
First char of this parameter is used as separator for
encoding/decoding Contact header.
Warning
First char of this field must be set to a value which is not
used inside username,password or other fields of
contact.Otherwise it is possible for the decoding step to
fail/produce wrong results.
Default value is "*".
Example 1-1. Set db_url parameter
...
modparam("module", "contact_flds_separator", "-")
...
then an encoded uri might look
sip:user-password-ip-port-protocol@PublicIP
_________________________________________________________
1.4. Exported Functions
1.4.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 :)
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 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 package if old IP address matches pattern.
Example 1-2. sdp_mangle_ip usage
...
sdp_mangle_ip("10.0.0.0/8","193.175.135.38");
...
_________________________________________________________
1.4.2. sdp_mangle_port(offset)
Changes ports inside SDP package in lines describing media
like m=audio 13451.
The function returns negative on error, or number of
replacements + 1.
Meaning of the parameters is as follows:
* offset - A string representing an integer which will be
added/subtracted from the located port.
Example 1-3. sdp_mangle_port usage
...
sdp_mangle_port("-12000");
...
_________________________________________________________
1.4.3. encode_contact(encoding_prefix)
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.
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 your external IP of your NAT box.
Example 1-4. encode_contact usage
...
if (src_ip == 10.0.0.0/8) encode_contact("enc_prefix","193.175.135.38")
;
...
_________________________________________________________
1.4.4. decode_contact()
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@public_ip goes to
sip:username:password@ip:port;transport=protocol 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 1-5. decode_contact usage
...
if (uri =~ "^enc*") { decode_contact(); }
...
_________________________________________________________
1.4.5. decode_contact_header()
This function will decode URIs inside Contact header in the
following manner
sip:enc_pref*username*ip*port*protocol@public_ip goes to
sip:username:password@ip:port;transport=protocol. 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 1-6. decode_contact_header usage
...
if (uri =~ "^enc*") { decode_contact_header(); }
...
_________________________________________________________
Chapter 2. Developer's Guide
The module does not provide any sort of API to use in other
SER modules.
_________________________________________________________
Chapter 3. Frequently Asked Questions
3.1. Where can I find more about SER?
3.2. Where can I post a question about this module?
3.3. How can I report a bug?
3.1. Where can I find more about SER?
Take a look at http://iptel.org/ser.
3.2. Where can I post a question about this module?
First at all check if your question was already answered on
one of our mailing lists:
* http://mail.iptel.org/mailman/listinfo/serusers
* http://mail.iptel.org/mailman/listinfo/serdev
E-mails regarding any stable version should be sent to
<serusers@iptel.org> and e-mail regarding development versions
or CVS snapshots should be send to <serdev@iptel.org>.
If you want to keep the mail private, send it to
<serhelp@iptel.org>.
3.3. How can I report a bug?
Please follow the guidelines provided at:
http://iptel.org/ser/bugs