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.
kamailio/modules_s/mangler/doc/functions.xml

171 lines
5.0 KiB

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<section id="mangler.functions" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
</sectioninfo>
<title>Functions</title>
<section id="sdp_mangle_ip">
<title>
<function>sdp_mangle_ip(pattern, newip)</function>
</title>
<para>
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 :)
</para>
<para>
The function returns negative on error, or number of replacements + 1.
</para>
<para>Meaning of the parameters is as follows:</para>
<itemizedlist>
<listitem>
<para>
<emphasis>pattern</emphasis> - 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.
</para>
</listitem>
<listitem>
<para>
<emphasis>newip</emphasis> - A string representing the new
IP to be put inside SDP package if old IP address
matches pattern.
</para>
</listitem>
</itemizedlist>
<example>
<title><function>sdp_mangle_ip</function> usage</title>
<programlisting>
...
sdp_mangle_ip("10.0.0.0/8","193.175.135.38");
...
</programlisting>
</example>
</section>
<section id="sdp_mangle_port">
<title>
<function>sdp_mangle_port(offset)</function>
</title>
<para>
Changes ports inside SDP package in lines describing media like
m=audio 13451.
</para>
<para>
The function returns negative on error, or number of replacements + 1.
</para>
<para>Meaning of the parameters is as follows:</para>
<itemizedlist>
<listitem>
<para>
<emphasis>offset</emphasis> - A string representing an
integer which will be added/subtracted from the located
port.
</para>
</listitem>
</itemizedlist>
<example>
<title><function>sdp_mangle_port</function> usage</title>
<programlisting>
...
sdp_mangle_port("-12000");
...
</programlisting>
</example>
</section>
<section id="encode_contact">
<title>
<function>encode_contact(encoding_prefix)</function>
</title>
<para>
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.
</para>
<para>
The function returns negative on error, 1 on success.
</para>
<para>Meaning of the parameters is as follows:</para>
<itemizedlist>
<listitem>
<para>
<emphasis>encoding_prefix</emphasis> - 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.
</para>
</listitem>
</itemizedlist>
<example>
<title><function>encode_contact</function> usage</title>
<programlisting>
...
if (src_ip == 10.0.0.0/8) encode_contact("enc_prefix","193.175.135.38");
...
</programlisting>
</example>
</section>
<section id="decode_contact">
<title>
<function>decode_contact()</function>
</title>
<para>
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 src_ip:src_port using
src_proto). It uses the default set parameter for contact encoding
separator.
</para>
<para>
The function returns negative on error, 1 on success.
</para>
<para>Meaning of the parameters is as follows:</para>
<example>
<title><function>decode_contact</function> usage</title>
<programlisting>
...
if (uri =~ "^enc*") { decode_contact(); }
...
</programlisting>
</example>
</section>
<section id="decode_contact_header">
<title>
<function>decode_contact_header()</function>
</title>
<para>
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, 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 parameter for contact encoding separator.
</para>
<para>
The function returns negative on error, 1 on success.
</para>
<para>Meaning of the parameters is as follows:</para>
<example>
<title><function>decode_contact_header</function> usage</title>
<programlisting>
...
if (uri =~ "^enc*") { decode_contact_header(); }
...
</programlisting>
</example>
</section>
</section>