<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal>Hi all <o:p></o:p></p>
<p class=MsoNormal>I try to configure kamailio to register sip client with
freeradius via kamailio.<o:p></o:p></p>
<p class=MsoNormal>My configure as:<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>###################kamailio.cfg#############<o:p></o:p></p>
<p class=MsoNormal>#!KAMAILIO<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># $Id$<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># Kamailio (OpenSER) SIP Server v3.0 - basic configuration
script<o:p></o:p></p>
<p class=MsoNormal># - web: http://www.kamailio.org<o:p></o:p></p>
<p class=MsoNormal># - git: http://sip-router.org<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># Direct your questions about this file to:
<users@lists.kamailio.org><o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># Refer to the Core CookBook at
http://www.kamailio.org/dokuwiki/doku.php<o:p></o:p></p>
<p class=MsoNormal># for an explanation of possible statements, functions and
parameters.<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># Several features can be enabled using '#!define
WITH_FEATURE' directives:<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># *** To run in debug mode:<o:p></o:p></p>
<p class=MsoNormal>#!define WITH_DEBUG<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># *** To enable mysql:<o:p></o:p></p>
<p class=MsoNormal>#!define WITH_MYSQL<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># *** To enable authentication execute:<o:p></o:p></p>
<p class=MsoNormal># - enable mysql<o:p></o:p></p>
<p class=MsoNormal>#!define WITH_AUTH<o:p></o:p></p>
<p class=MsoNormal># - add users using 'kamctl'<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># *** To enable persistent user location execute:<o:p></o:p></p>
<p class=MsoNormal># - enable mysql<o:p></o:p></p>
<p class=MsoNormal># - define WITH_USRLOCDB<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># *** To enable presence server execute:<o:p></o:p></p>
<p class=MsoNormal># - enable mysql<o:p></o:p></p>
<p class=MsoNormal># - define WITH_PRESENCE<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># *** To enable nat traversal execute:<o:p></o:p></p>
<p class=MsoNormal># - define WITH_NAT<o:p></o:p></p>
<p class=MsoNormal># - install RTPProxy:
http://www.rtpproxy.org<o:p></o:p></p>
<p class=MsoNormal># - start RTPProxy:<o:p></o:p></p>
<p class=MsoNormal># rtpproxy -l
_your_public_ip_ -s udp:localhost:7722<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># *** To enable PSTN gateway routing execute:<o:p></o:p></p>
<p class=MsoNormal># - define WITH_PSTN<o:p></o:p></p>
<p class=MsoNormal># - set the value of pstn.gw_ip<o:p></o:p></p>
<p class=MsoNormal># - check route[PSTN] for regexp
routing condition<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># *** To enhance accounting execute:<o:p></o:p></p>
<p class=MsoNormal># - enable mysql<o:p></o:p></p>
<p class=MsoNormal># - define WITH_ACCDB<o:p></o:p></p>
<p class=MsoNormal># - add following columns to
database<o:p></o:p></p>
<p class=MsoNormal>#!ifdef ACCDB_COMMENT<o:p></o:p></p>
<p class=MsoNormal> ALTER TABLE acc ADD COLUMN src_user VARCHAR(64) NOT
NULL DEFAULT '';<o:p></o:p></p>
<p class=MsoNormal> ALTER TABLE acc ADD COLUMN src_domain VARCHAR(128)
NOT NULL DEFAULT '';<o:p></o:p></p>
<p class=MsoNormal> ALTER TABLE acc ADD COLUMN dst_ouser VARCHAR(64) NOT
NULL DEFAULT '';<o:p></o:p></p>
<p class=MsoNormal> ALTER TABLE acc ADD COLUMN dst_user VARCHAR(64) NOT
NULL DEFAULT '';<o:p></o:p></p>
<p class=MsoNormal> ALTER TABLE acc ADD COLUMN dst_domain VARCHAR(128)
NOT NULL DEFAULT '';<o:p></o:p></p>
<p class=MsoNormal> ALTER TABLE missed_calls ADD COLUMN src_user
VARCHAR(64) NOT NULL DEFAULT '';<o:p></o:p></p>
<p class=MsoNormal> ALTER TABLE missed_calls ADD COLUMN src_domain
VARCHAR(128) NOT NULL DEFAULT '';<o:p></o:p></p>
<p class=MsoNormal> ALTER TABLE missed_calls ADD COLUMN dst_ouser
VARCHAR(64) NOT NULL DEFAULT '';<o:p></o:p></p>
<p class=MsoNormal> ALTER TABLE missed_calls ADD COLUMN dst_user
VARCHAR(64) NOT NULL DEFAULT '';<o:p></o:p></p>
<p class=MsoNormal> ALTER TABLE missed_calls ADD COLUMN dst_domain
VARCHAR(128) NOT NULL DEFAULT '';<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>####### Global Parameters #########<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>#!ifdef WITH_DEBUG<o:p></o:p></p>
<p class=MsoNormal>debug=4<o:p></o:p></p>
<p class=MsoNormal>log_stderror=no<o:p></o:p></p>
<p class=MsoNormal>#!else<o:p></o:p></p>
<p class=MsoNormal>debug=2<o:p></o:p></p>
<p class=MsoNormal>log_stderror=no<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>memdbg=5<o:p></o:p></p>
<p class=MsoNormal>memlog=5<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>log_facility=LOG_LOCAL0<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>fork=yes<o:p></o:p></p>
<p class=MsoNormal>children=4<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>/* uncomment the next line to disable TCP (default on) */<o:p></o:p></p>
<p class=MsoNormal>#disable_tcp=yes<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>/* uncomment the next line to disable the auto discovery of
local aliases<o:p></o:p></p>
<p class=MsoNormal> based on revers DNS on IPs (default on) */<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>#auto_aliases=no<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>port=5060<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>/* uncomment and configure the following line if you want
Kamailio to<o:p></o:p></p>
<p class=MsoNormal> bind on a specific interface/port/proto
(default bind on all available) */<o:p></o:p></p>
<p class=MsoNormal>#listen=udp:10.0.0.10:5060<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>####### Custom Parameters #########<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># These parameters can be modified runtime via RPC interface<o:p></o:p></p>
<p class=MsoNormal># - see the documentation of 'cfg_rpc' module.<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># Format: group.id = value 'desc' description<o:p></o:p></p>
<p class=MsoNormal># Access: $sel(cfg_get.group.id) or @cfg_get.group.id<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>#!ifdef WITH_PSTN<o:p></o:p></p>
<p class=MsoNormal># PSTN GW Routing<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># - pstn.gw_ip: valid IP or hostname as string value,
example:<o:p></o:p></p>
<p class=MsoNormal># pstn.gw_ip = "10.0.0.101" desc "My PSTN GW
Address"<o:p></o:p></p>
<p class=MsoNormal>#<o:p></o:p></p>
<p class=MsoNormal># - by default is empty to avoid misrouting<o:p></o:p></p>
<p class=MsoNormal>pstn.gw_ip = "" desc "PSTN GW Address"<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>####### Modules Section ########<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>#set module path<o:p></o:p></p>
<p class=MsoNormal>mpath="/usr/local/lib/kamailio/modules_k/:/usr/local/lib/kamailio/modules/"<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>/* uncomment next line for MySQL DB support */<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_MYSQL<o:p></o:p></p>
<p class=MsoNormal>loadmodule "db_mysql.so"<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal>loadmodule "mi_fifo.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "kex.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "tm.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "tmx.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "sl.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "rr.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "pv.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "maxfwd.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "usrloc.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "registrar.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "textops.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "uri_db.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "siputils.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "xlog.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "sanity.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "ctl.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "mi_rpc.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "acc.so"<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_AUTH<o:p></o:p></p>
<p class=MsoNormal>loadmodule "auth.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "auth_radius.so"<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal>/* uncomment next line for aliases support<o:p></o:p></p>
<p class=MsoNormal> NOTE: a DB (like db_mysql) module must be also
loaded */<o:p></o:p></p>
<p class=MsoNormal>#loadmodule "alias_db.so"<o:p></o:p></p>
<p class=MsoNormal>/* uncomment next line for multi-domain support<o:p></o:p></p>
<p class=MsoNormal> NOTE: a DB (like db_mysql) module must be also
loaded<o:p></o:p></p>
<p class=MsoNormal> NOTE: be sure and enable multi-domain support
in all used modules<o:p></o:p></p>
<p class=MsoNormal> (see
"multi-module params" section ) */<o:p></o:p></p>
<p class=MsoNormal>#loadmodule "domain.so"<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_PRESENCE<o:p></o:p></p>
<p class=MsoNormal>loadmodule "presence.so"<o:p></o:p></p>
<p class=MsoNormal>loadmodule "presence_xml.so"<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>#!ifdef WITH_NAT<o:p></o:p></p>
<p class=MsoNormal>loadmodule "nathelper.so"<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----------------- setting module-specific parameters
---------------<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----- mi_fifo params -----<o:p></o:p></p>
<p class=MsoNormal>modparam("mi_fifo", "fifo_name",
"/tmp/kamailio_fifo")<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----- rr params -----<o:p></o:p></p>
<p class=MsoNormal># add value to ;lr param to cope with most of the UAs<o:p></o:p></p>
<p class=MsoNormal>modparam("rr", "enable_full_lr", 1)<o:p></o:p></p>
<p class=MsoNormal># do not append from tag to the RR (no need for this script)<o:p></o:p></p>
<p class=MsoNormal>modparam("rr", "append_fromtag", 0)<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----- rr params -----<o:p></o:p></p>
<p class=MsoNormal>modparam("registrar",
"method_filtering", 1)<o:p></o:p></p>
<p class=MsoNormal>/* uncomment the next line to disable parallel forking via
location */<o:p></o:p></p>
<p class=MsoNormal># modparam("registrar",
"append_branches", 0)<o:p></o:p></p>
<p class=MsoNormal>/* uncomment the next line not to allow more than 10
contacts per AOR */<o:p></o:p></p>
<p class=MsoNormal>#modparam("registrar", "max_contacts",
10)<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----- uri_db params -----<o:p></o:p></p>
<p class=MsoNormal>/* by default we disable the DB support in the module as we
do not need it<o:p></o:p></p>
<p class=MsoNormal> in this configuration */<o:p></o:p></p>
<p class=MsoNormal>modparam("uri_db", "use_uri_table", 0)<o:p></o:p></p>
<p class=MsoNormal>modparam("uri_db", "db_url",
"")<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----- acc params -----<o:p></o:p></p>
<p class=MsoNormal>/* what sepcial events should be accounted ? */<o:p></o:p></p>
<p class=MsoNormal>modparam("acc", "early_media", 1)<o:p></o:p></p>
<p class=MsoNormal>modparam("acc", "report_ack", 1)<o:p></o:p></p>
<p class=MsoNormal>modparam("acc", "report_cancels", 1)<o:p></o:p></p>
<p class=MsoNormal>/* by default ww do not adjust the direct of the sequential
requests.<o:p></o:p></p>
<p class=MsoNormal> if you enable this parameter, be sure the
enable "append_fromtag"<o:p></o:p></p>
<p class=MsoNormal> in "rr" module */<o:p></o:p></p>
<p class=MsoNormal>modparam("acc", "detect_direction", 0)<o:p></o:p></p>
<p class=MsoNormal>/* account triggers (flags) */<o:p></o:p></p>
<p class=MsoNormal>modparam("acc",
"failed_transaction_flag", 3)<o:p></o:p></p>
<p class=MsoNormal>modparam("acc", "log_flag", 1)<o:p></o:p></p>
<p class=MsoNormal>modparam("acc", "log_missed_flag", 2)<o:p></o:p></p>
<p class=MsoNormal>modparam("acc", "log_extra",<o:p></o:p></p>
<p class=MsoNormal>
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")<o:p></o:p></p>
<p class=MsoNormal>/* enhanced DB accounting */<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_ACCDB<o:p></o:p></p>
<p class=MsoNormal>modparam("acc", "db_flag", 1)<o:p></o:p></p>
<p class=MsoNormal>modparam("acc", "db_missed_flag", 2)<o:p></o:p></p>
<p class=MsoNormal>modparam("acc", "db_url",<o:p></o:p></p>
<p class=MsoNormal>
"mysql://openser:openserrw@localhost/openser")<o:p></o:p></p>
<p class=MsoNormal>modparam("acc", "db_extra",<o:p></o:p></p>
<p class=MsoNormal>
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----- usrloc params -----<o:p></o:p></p>
<p class=MsoNormal>/* enable DB persistency for location entries */<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_USRLOCDB<o:p></o:p></p>
<p class=MsoNormal>modparam("usrloc",
"db_mode", 2)<o:p></o:p></p>
<p class=MsoNormal>modparam("usrloc", "db_url",<o:p></o:p></p>
<p class=MsoNormal>
"mysql://openser:openserrw@localhost/openser")<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----- auth_db params -----<o:p></o:p></p>
<p class=MsoNormal>/* enable the DB based authentication */<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_AUTH<o:p></o:p></p>
<p class=MsoNormal>#modparam("auth_db", "calculate_ha1",
yes)<o:p></o:p></p>
<p class=MsoNormal>#modparam("auth_db", "password_column",
"password")<o:p></o:p></p>
<p class=MsoNormal>#modparam("auth_db", "db_url",<o:p></o:p></p>
<p class=MsoNormal>#
"mysql://openser:openserrw@localhost/kamailio")<o:p></o:p></p>
<p class=MsoNormal>#modparam("auth_db", "load_credentials",
"")<o:p></o:p></p>
<p class=MsoNormal>modparam("auth_radius", "radius_config",
"/usr/local/etc/radiusclient-ng/radiusclient.conf")<o:p></o:p></p>
<p class=MsoNormal>modparam("auth_radius", "service_type",
15)<o:p></o:p></p>
<p class=MsoNormal>modparam("auth_radius", "auth_extra",
"Acct-Session-Id=$ci")<o:p></o:p></p>
<p class=MsoNormal>modparam("auth_radius", "use_ruri_flag",
22)<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----- alias_db params -----<o:p></o:p></p>
<p class=MsoNormal>/* uncomment the following lines if you want to enable the
DB based<o:p></o:p></p>
<p class=MsoNormal> aliases */<o:p></o:p></p>
<p class=MsoNormal>#modparam("alias_db", "db_url",<o:p></o:p></p>
<p class=MsoNormal>#
"mysql://openser:openserrw@localhost/openser")<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----- domain params -----<o:p></o:p></p>
<p class=MsoNormal>/* uncomment the following lines to enable multi-domain
detection<o:p></o:p></p>
<p class=MsoNormal> support */<o:p></o:p></p>
<p class=MsoNormal>#modparam("domain", "db_url",<o:p></o:p></p>
<p class=MsoNormal>#
"mysql://openser:openserrw@localhost/openser")<o:p></o:p></p>
<p class=MsoNormal>#modparam("domain", "db_mode",
1) # Use caching<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----- multi-module params -----<o:p></o:p></p>
<p class=MsoNormal>/* uncomment the following line if you want to enable
multi-domain support<o:p></o:p></p>
<p class=MsoNormal> in the modules (dafault off) */<o:p></o:p></p>
<p class=MsoNormal>#modparam("alias_db|auth_db|usrloc|uri_db",
"use_domain", 1)<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----- presence params -----<o:p></o:p></p>
<p class=MsoNormal>/* enable presence server support */<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_PRESENCE<o:p></o:p></p>
<p class=MsoNormal>modparam("presence|presence_xml",
"db_url",<o:p></o:p></p>
<p class=MsoNormal>
"mysql://openser:openserrw@localhost/openser")<o:p></o:p></p>
<p class=MsoNormal>modparam("presence_xml", "force_active",
1)<o:p></o:p></p>
<p class=MsoNormal>modparam("presence", "server_address",
"sip:10.0.0.10:5060")<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># ----- nathelper -----<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_NAT<o:p></o:p></p>
<p class=MsoNormal>modparam("nathelper", "rtpproxy_sock",
"udp:127.0.0.1:7722")<o:p></o:p></p>
<p class=MsoNormal>modparam("nathelper",
"natping_interval", 30)<o:p></o:p></p>
<p class=MsoNormal>modparam("nathelper", "ping_nated_only",
1)<o:p></o:p></p>
<p class=MsoNormal>modparam("nathelper", "sipping_bflag",
7)<o:p></o:p></p>
<p class=MsoNormal>modparam("nathelper", "sipping_from",
"sip:pinger@kamailio.org")<o:p></o:p></p>
<p class=MsoNormal>modparam("registrar|nathelper",
"received_avp", "$avp(i:80)")<o:p></o:p></p>
<p class=MsoNormal>modparam("usrloc", "nat_bflag", 6)<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>####### Routing Logic ########<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># main request routing logic<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>route{<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> if
(!mf_process_maxfwd_header("10")) {<o:p></o:p></p>
<p class=MsoNormal>
sl_send_reply("483","Too Many Hops");<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>
if(!sanity_check("1511", "7"))<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>
xlog("Malformed SIP message from $si:$sp\n");<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> # NAT detection<o:p></o:p></p>
<p class=MsoNormal> route(NAT);<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>if (has_totag()) {<o:p></o:p></p>
<p class=MsoNormal>
# sequential request withing a dialog should<o:p></o:p></p>
<p class=MsoNormal>
# take the path determined by record-routing<o:p></o:p></p>
<p class=MsoNormal>
if (loose_route()) {<o:p></o:p></p>
<p class=MsoNormal>
if (is_method("BYE")) {<o:p></o:p></p>
<p class=MsoNormal> setflag(1);
# do accounting ...<o:p></o:p></p>
<p class=MsoNormal>
setflag(3); # ... even if the transaction fails<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>
route(RELAY);<o:p></o:p></p>
<p class=MsoNormal>
} else {<o:p></o:p></p>
<p class=MsoNormal>
if (is_method("SUBSCRIBE") && uri == myself) {<o:p></o:p></p>
<p class=MsoNormal>
# in-dialog subscribe requests<o:p></o:p></p>
<p class=MsoNormal>
route(PRESENCE);<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>
if ( is_method("ACK") ) {<o:p></o:p></p>
<p class=MsoNormal>
if ( t_check_trans() ) {<o:p></o:p></p>
<p class=MsoNormal>
# non loose-route, but stateful ACK; must be an ACK after a 487 or e.g. 404
from upstream server<o:p></o:p></p>
<p class=MsoNormal>
t_relay();<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal>
} else {<o:p></o:p></p>
<p class=MsoNormal>
# ACK without matching transaction ... ignore and discard.\n");<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>
sl_send_reply("404","Not here");<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> #initial requests<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> # CANCEL
processing<o:p></o:p></p>
<p class=MsoNormal> if
(is_method("CANCEL"))<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal> if
(t_check_trans())<o:p></o:p></p>
<p class=MsoNormal>
t_relay();<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> t_check_trans();<o:p></o:p></p>
<p class=MsoNormal># authentication<o:p></o:p></p>
<p class=MsoNormal> route(AUTH);<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> # record routing
for dialog forming requests (in case they are routed)<o:p></o:p></p>
<p class=MsoNormal> # - remove
preloaded route headers<o:p></o:p></p>
<p class=MsoNormal>
remove_hf("Route");<o:p></o:p></p>
<p class=MsoNormal> if
(is_method("INVITE|SUBSCRIBE"))<o:p></o:p></p>
<p class=MsoNormal>
record_route();<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> # account only
INVITEs<o:p></o:p></p>
<p class=MsoNormal> if
(is_method("INVITE")) {<o:p></o:p></p>
<p class=MsoNormal>
setflag(1); # do accounting<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> if (!uri==myself)<o:p></o:p></p>
<p class=MsoNormal> /* replace with
following line if multi-domain support is used */<o:p></o:p></p>
<p class=MsoNormal> ##if
(!is_uri_host_local())<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>
append_hf("P-hint: outbound\r\n");<o:p></o:p></p>
<p class=MsoNormal>
route(RELAY);<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> # requests for my
domain<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> if(
is_method("PUBLISH|SUBSCRIBE"))<o:p></o:p></p>
<p class=MsoNormal>
route(PRESENCE);<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> if
(is_method("REGISTER"))<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>
if(isflagset(5))<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
setbflag("6");<o:p></o:p></p>
<p class=MsoNormal>
# uncomment next line to do SIP
NAT pinging<o:p></o:p></p>
<p class=MsoNormal>
## setbflag("7");<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>
if (!save("location"))<o:p></o:p></p>
<p class=MsoNormal>
sl_reply_error();<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> if ($rU==$null) {<o:p></o:p></p>
<p class=MsoNormal>
# request with no Username in RURI<o:p></o:p></p>
<p class=MsoNormal>sl_send_reply("484","Address
Incomplete");<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> route(PSTN);<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> # apply DB based
aliases (uncomment to enable)<o:p></o:p></p>
<p class=MsoNormal>
##alias_db_lookup("dbaliases");<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> if
(!lookup("location")) {<o:p></o:p></p>
<p class=MsoNormal>
switch ($rc) {<o:p></o:p></p>
<p class=MsoNormal>
case -1:<o:p></o:p></p>
<p class=MsoNormal>
case -3:<o:p></o:p></p>
<p class=MsoNormal>
t_newtran();<o:p></o:p></p>
<p class=MsoNormal>
t_reply("404", "Not Found");<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal>
case -2:<o:p></o:p></p>
<p class=MsoNormal>
sl_send_reply("405", "Method Not Allowed");<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> # when routing
via usrloc, log the missed calls also<o:p></o:p></p>
<p class=MsoNormal> setflag(2);<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> route(RELAY);<o:p></o:p></p>
<p class=MsoNormal>}<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>route[RELAY] {<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_NAT<o:p></o:p></p>
<p class=MsoNormal> if
(check_route_param("nat=yes")) {<o:p></o:p></p>
<p class=MsoNormal>
setbflag("6");<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> if (isflagset(5)
|| isbflagset("6")) {<o:p></o:p></p>
<p class=MsoNormal>
route(RTPPROXY);<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> /* example how to
enable some additional event routes */<o:p></o:p></p>
<p class=MsoNormal> if
(is_method("INVITE")) {<o:p></o:p></p>
<p class=MsoNormal>
#t_on_branch("BRANCH_ONE");<o:p></o:p></p>
<p class=MsoNormal>
t_on_reply("REPLY_ONE");<o:p></o:p></p>
<p class=MsoNormal>t_on_reply("REPLY_ONE");<o:p></o:p></p>
<p class=MsoNormal>
t_on_failure("FAIL_ONE");<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> if (!t_relay()) {<o:p></o:p></p>
<p class=MsoNormal>
sl_reply_error();<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> exit;<o:p></o:p></p>
<p class=MsoNormal>}<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># Presence server route<o:p></o:p></p>
<p class=MsoNormal>route[PRESENCE]<o:p></o:p></p>
<p class=MsoNormal>{<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_PRESENCE<o:p></o:p></p>
<p class=MsoNormal> if (!t_newtran())<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>
sl_reply_error();<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal> };<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>
if(is_method("PUBLISH"))<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>
handle_publish();<o:p></o:p></p>
<p class=MsoNormal>
t_release();<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> else<o:p></o:p></p>
<p class=MsoNormal> if(
is_method("SUBSCRIBE"))<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>
handle_subscribe();<o:p></o:p></p>
<p class=MsoNormal>
t_release();<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> exit;<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> # if presence
enabled, this part will not be executed<o:p></o:p></p>
<p class=MsoNormal> if
(is_method("PUBLISH") || $rU==$null)<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>
sl_send_reply("404", "Not here");<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> return;<o:p></o:p></p>
<p class=MsoNormal># Authentication route<o:p></o:p></p>
<p class=MsoNormal>route[AUTH] {<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_AUTH<o:p></o:p></p>
<p class=MsoNormal> if
(is_method("REGISTER"))<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>
# authenticate the REGISTER requests (uncomment to enable auth)<o:p></o:p></p>
<p class=MsoNormal>
if (!radius_www_authorize("192.168.1.70"))<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
www_challenge("192.168.1.70", "0");<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>
if ($au!=$tU)<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
sl_send_reply("403","Forbidden auth ID");<o:p></o:p></p>
<p class=MsoNormal> exit;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> } else {<o:p></o:p></p>
<p class=MsoNormal>
# authenticate if from local subscriber (uncomment to enable auth)<o:p></o:p></p>
<p class=MsoNormal>
if (from_uri==myself)<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
if (!radius_proxy_authorize("192.168.1.70")) {<o:p></o:p></p>
<p class=MsoNormal>
proxy_challenge("192.168.1.70", "0");<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>
if (is_method("PUBLISH"))<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
if ($au!=$tU) {<o:p></o:p></p>
<p class=MsoNormal>
sl_send_reply("403","Forbidden auth ID");<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>
} else {<o:p></o:p></p>
<p class=MsoNormal>
if ($au!=$fU) {<o:p></o:p></p>
<p class=MsoNormal>
sl_send_reply("403","Forbidden auth ID");<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>
consume_credentials();<o:p></o:p></p>
<p class=MsoNormal>
# caller authenticated<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal> return;<o:p></o:p></p>
<p class=MsoNormal>}<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># Caller NAT detection route<o:p></o:p></p>
<p class=MsoNormal>route[NAT]{<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_NAT<o:p></o:p></p>
<p class=MsoNormal> force_rport();<o:p></o:p></p>
<p class=MsoNormal> if
(nat_uac_test("19")) {<o:p></o:p></p>
<p class=MsoNormal>
if (method=="REGISTER") {<o:p></o:p></p>
<p class=MsoNormal>
fix_nated_register();<o:p></o:p></p>
<p class=MsoNormal>
} else {<o:p></o:p></p>
<p class=MsoNormal>
fix_nated_contact();<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>
setflag(5);<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal> return;<o:p></o:p></p>
<p class=MsoNormal>}<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># RTPProxy control<o:p></o:p></p>
<p class=MsoNormal>route[RTPPROXY] {<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_NAT<o:p></o:p></p>
<p class=MsoNormal> if
(is_method("BYE")) {<o:p></o:p></p>
<p class=MsoNormal>
unforce_rtp_proxy();<o:p></o:p></p>
<p class=MsoNormal> } else if
(is_method("INVITE")){<o:p></o:p></p>
<p class=MsoNormal>
force_rtp_proxy();<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> if (!has_totag())
add_rr_param(";nat=yes");<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal> return;<o:p></o:p></p>
<p class=MsoNormal>}<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># PSTN GW routing<o:p></o:p></p>
<p class=MsoNormal>route[PSTN] {<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_PSTN<o:p></o:p></p>
<p class=MsoNormal> # check if PSTN
GW IP is defined<o:p></o:p></p>
<p class=MsoNormal> if
(strempty($sel(cfg_get.pstn.gw_ip))) {<o:p></o:p></p>
<p class=MsoNormal>
xlog("SCRIPT: PSTN rotuing enabled but pstn.gw_ip not defined\n");<o:p></o:p></p>
<p class=MsoNormal>
return;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> # route to PSTN
dialed numbers starting with '+' or '00'<o:p></o:p></p>
<p class=MsoNormal> # (international format)<o:p></o:p></p>
<p class=MsoNormal> # - update the
condition to match your dialing rules for PSTN routing<o:p></o:p></p>
<p class=MsoNormal>
if(!($rU=~"^(\+|00)[1-9][0-9]{3,20}$"))<o:p></o:p></p>
<p class=MsoNormal>
return;<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> # only local
users allowed to call<o:p></o:p></p>
<p class=MsoNormal>
if(from_uri!=myself) {<o:p></o:p></p>
<p class=MsoNormal>
sl_send_reply("403", "Not Allowed");<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> $ru =
"sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip);<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> route(RELAY);<o:p></o:p></p>
<p class=MsoNormal> exit;<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> return;<o:p></o:p></p>
<p class=MsoNormal>}<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># Sample branch router<o:p></o:p></p>
<p class=MsoNormal>branch_route[BRANCH_ONE] {<o:p></o:p></p>
<p class=MsoNormal> xdbg("new
branch at $ru\n");<o:p></o:p></p>
<p class=MsoNormal>}<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># Sample onreply route<o:p></o:p></p>
<p class=MsoNormal>onreply_route[REPLY_ONE] {<o:p></o:p></p>
<p class=MsoNormal>
xdbg("incoming reply\n");<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_NAT<o:p></o:p></p>
<p class=MsoNormal> if ((isflagset(5)
|| isbflagset("6")) &&
status=~"(183)|(2[0-9][0-9])") {<o:p></o:p></p>
<p class=MsoNormal>
force_rtp_proxy();<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> if
(isbflagset("6")) {<o:p></o:p></p>
<p class=MsoNormal>
fix_nated_contact();<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal>}<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal># Sample failure route<o:p></o:p></p>
<p class=MsoNormal>failure_route[FAIL_ONE] {<o:p></o:p></p>
<p class=MsoNormal>#!ifdef WITH_NAT<o:p></o:p></p>
<p class=MsoNormal> if
(is_method("INVITE")<o:p></o:p></p>
<p class=MsoNormal>
&& (isbflagset("6") || isflagset(5))) {<o:p></o:p></p>
<p class=MsoNormal>
unforce_rtp_proxy();<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal>#!endif<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> if
(t_is_canceled()) {<o:p></o:p></p>
<p class=MsoNormal>
exit;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> # uncomment the
following lines if you want to block client<o:p></o:p></p>
<p class=MsoNormal> # redirect based
on 3xx replies.<o:p></o:p></p>
<p class=MsoNormal> ##if
(t_check_status("3[0-9][0-9]")) {<o:p></o:p></p>
<p class=MsoNormal>
##t_reply("404","Not found");<o:p></o:p></p>
<p class=MsoNormal>
## exit;<o:p></o:p></p>
<p class=MsoNormal> ##}<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> # uncomment the
following lines if you want to redirect the failed<o:p></o:p></p>
<p class=MsoNormal> # calls to a
different new destination<o:p></o:p></p>
<p class=MsoNormal> ##if
(t_check_status("486|408")) {<o:p></o:p></p>
<p class=MsoNormal>
## sethostport("192.168.2.100:5060");<o:p></o:p></p>
<p class=MsoNormal> ##
append_branch();<o:p></o:p></p>
<p class=MsoNormal>
## # do not set the missed call flag again<o:p></o:p></p>
<p class=MsoNormal>
## t_relay();<o:p></o:p></p>
<p class=MsoNormal> ##}<o:p></o:p></p>
<p class=MsoNormal>}<o:p></o:p></p>
<p class=MsoNormal>##############################################<o:p></o:p></p>
<p class=MsoNormal>I run command : kamctl start<o:p></o:p></p>
<p class=MsoNormal>But : ERROR: PID file /var/run/kamailio.pid does not exist --
Kamailio start failed<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>And I run : tail –f /var/log/message to show log:<o:p></o:p></p>
<p class=MsoNormal>The log is:<o:p></o:p></p>
<p class=MsoNormal>Aug 4 15:05:07 appliance kamailio: ERROR: <core>
[sr_module.c:390]: ERROR: load_module: could not open module
</usr/local/lib/kamailio/modules/auth_radius.so>:
libradiusclient-ng.so.2: cannot open shared object file: No such file or
directory<o:p></o:p></p>
<p class=MsoNormal>Aug 4 15:05:07 appliance kamailio: : <core>
[cfg.y:3330]: parse error in config file /usr/local/etc/kamailio/kamailio.cfg,
line 145, column 12-27: failed to load module<o:p></o:p></p>
<p class=MsoNormal>Aug 4 15:05:07 appliance kamailio: ERROR: <core>
[modparam.c:154]: set_mod_param_regex: No module matching <auth_radius>
found<o:p></o:p></p>
<p class=MsoNormal>Aug 4 15:05:07 appliance kamailio: : <core>
[cfg.y:3333]: parse error in config file /usr/local/etc/kamailio/kamailio.cfg,
line 234, column 92: Can't set module parameter<o:p></o:p></p>
<p class=MsoNormal>Aug 4 15:05:07 appliance kamailio: ERROR: <core>
[modparam.c:154]: set_mod_param_regex: No module matching <auth_radius>
found<o:p></o:p></p>
<p class=MsoNormal>Aug 4 15:05:07 appliance kamailio: : <core>
[cfg.y:3333]: parse error in config file /usr/local/etc/kamailio/kamailio.cfg,
line 235, column 43: Can't set module parameter<o:p></o:p></p>
<p class=MsoNormal>Aug 4 15:05:07 appliance kamailio: ERROR: <core>
[modparam.c:154]: set_mod_param_regex: No module matching <auth_radius>
found<o:p></o:p></p>
<p class=MsoNormal>Aug 4 15:05:07 appliance kamailio: : <core>
[cfg.y:3333]: parse error in config file /usr/local/etc/kamailio/kamailio.cfg,
line 236, column 60: Can't set module parameter<o:p></o:p></p>
<p class=MsoNormal>Aug 4 15:05:07 appliance kamailio: ERROR: <core>
[modparam.c:154]: set_mod_param_regex: No module matching <auth_radius>
found<o:p></o:p></p>
<p class=MsoNormal>Aug 4 15:05:07 appliance kamailio: : <core>
[cfg.y:3333]: parse error in config file /usr/local/etc/kamailio/kamailio.cfg,
line 237, column 44: Can't set module parameter<o:p></o:p></p>
<p class=MsoNormal>Aug 4 15:05:07 appliance kamailio: : <core>
[cfg.y:3333]: parse error in config file /usr/local/etc/kamailio/kamailio.cfg,
line 479, column 50: unknown command, missing loadmodule?<o:p></o:p></p>
<p class=MsoNormal>Aug 4 15:05:07 appliance kamailio: : <core>
[cfg.y:3333]: parse error in config file /usr/local/etc/kamailio/kamailio.cfg,
line 494, column 53: unknown command, missing loadmodule?<o:p></o:p></p>
<p class=MsoNormal>############### <o:p></o:p></p>
<p class=MsoNormal>I try to add : /usr/local/lib/* to /etc/ld.so.conf <o:p></o:p></p>
<p class=MsoNormal>And run : ldconfig –v<o:p></o:p></p>
<p class=MsoNormal>But the result is the same error .<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Please help me if someone know what is wrong.<o:p></o:p></p>
<p class=MsoNormal>Any suggest is welcome.<o:p></o:p></p>
<p class=MsoNormal>Thanks and Regards<o:p></o:p></p>
<p class=MsoNormal>Thanh.Truong<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
</div>
</body>
</html>