<br><div>Hola tengo problemas para traspasar llamadas desde un terminal asterisk de numeracion 5XXX a un</div><div>terminal  en kamailio 3XXX</div><div>La configuracion es muy simple</div><div>Telefono3XXX&lt;-------&gt;Kamailio&lt;-------&gt;Asterisk&lt;-------&gt;telefono5XXX</div>
<div><br></div><div>cuando llamo de 3100 a 5555</div><div>Kamailio le  responde a asterisk con un 484 address incomplete</div><div><br></div><div>y cuando lo hago de 5555 a 3000 </div><div>Asterisk manda un 403 forbidem</div>
<div><br></div><div>Cual es el problema? Es una configuración bien simple </div><div>de antemano muchas gracias</div><div><br></div><div>Adjunto mi configuracion en Asterisk</div><div>extensions.conf</div><div><span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px; "><pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(47, 111, 171); border-right-color: rgb(47, 111, 171); border-bottom-color: rgb(47, 111, 171); border-left-color: rgb(47, 111, 171); color: black; line-height: 1.1em; ">
<span class="Apple-style-span" style="background-color: rgb(255, 255, 255);">[from-kamailio]
include =&gt; from-internal

[sip-local]
include =&gt; asterisk-out
;;Llamadas a extensions locales
exten =&gt; _5XXX,1,NoOp(Llamada Entrante)
exten =&gt; _5XXX,2, Dial(SIP/${EXTEN},20,Ttr)
exten =&gt; _5XXX,3,Hangup()

[asterisk-out]
;;Llamadas hacia Kamailio
exten =&gt; _3XXX,1,NoOp(Llamada hacia Kamailio)
exten =&gt; _3XXX,2, Dial(SIP/${<a href="http://EXTEN}@10.3.0.240:5060">EXTEN}@10.3.0.240:5060</a>)
exten =&gt; _3XXX,3,Hangup()</span></pre></span></div><div>sip.conf</div><div><br></div><div><span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px; "><pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(47, 111, 171); border-right-color: rgb(47, 111, 171); border-bottom-color: rgb(47, 111, 171); border-left-color: rgb(47, 111, 171); color: black; background-color: rgb(249, 249, 249); line-height: 1.1em; ">
[general]
context=default
register =&gt; <a href="mailto:5999%3A5999@10.3.0.240">5999:5999@10.3.0.240</a>
registertimeout=20
registerattempts=10
allowoverlap=no
bindport=5060
srvlookup=yes
</pre><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="line-height: 14px; white-space: pre;"><span class="Apple-style-span" style="font-family: sans-serif; line-height: 19px; white-space: normal; "><pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(47, 111, 171); border-right-color: rgb(47, 111, 171); border-bottom-color: rgb(47, 111, 171); border-left-color: rgb(47, 111, 171); color: black; background-color: rgb(249, 249, 249); line-height: 1.1em; ">
[5999]
type=friend
secret=5999
context=from-kamailio
callerid=”Kamailio-Asterisk” &lt;5999&gt;
username=5999
fromuser=5999
insecure=very
fromdomain=10.2.0.240
call-limit=1
outboundproxy=10.2.0.240
port=5060</pre></span></span></font></div></span></div><div>Adjunto mi archivo de configuracion de kamailio</div><div><br></div><div>***************************Archivo de configuracion de Kamailio*******************************************+</div>
<div><br></div><div><div>#!KAMAILIO</div><div>#</div><div># $Id$</div><div>#</div><div># Kamailio (OpenSER) SIP Server v3.0 - basic configuration script</div><div>#     - web: <a href="http://www.kamailio.org">http://www.kamailio.org</a></div>
<div>#     - git: <a href="http://sip-router.org">http://sip-router.org</a></div><div>#</div><div># Direct your questions about this file to: &lt;<a href="mailto:users@lists.kamailio.org">users@lists.kamailio.org</a>&gt;</div>
<div>#</div><div># Refer to the Core CookBook at <a href="http://www.kamailio.org/dokuwiki/doku.php">http://www.kamailio.org/dokuwiki/doku.php</a></div><div># for an explanation of possible statements, functions and parameters.</div>
<div>#</div><div># Several features can be enabled using &#39;#!define WITH_FEATURE&#39; directives:</div><div>#</div><div># *** To run in debug mode: </div><div>#     - define WITH_DEBUG</div><div>#</div><div># *** To enable mysql: </div>
<div>#     - define WITH_MYSQL</div><div>#</div><div># *** To enable authentication execute:</div><div>#     - enable mysql</div><div>#     - define WITH_AUTH</div><div>#     - add users using &#39;kamctl&#39;</div><div>#</div>
<div># *** To enable persistent user location execute:</div><div>#     - enable mysql</div><div>#     - define WITH_USRLOCDB</div><div>#</div><div># *** To enable presence server execute:</div><div>#     - enable mysql</div>
<div>#     - define WITH_PRESENCE</div><div>#</div><div># *** To enable nat traversal execute:</div><div>#     - define WITH_NAT</div><div>#     - install RTPProxy: <a href="http://www.rtpproxy.org">http://www.rtpproxy.org</a></div>
<div>#     - start RTPProxy:</div><div>#        rtpproxy -l _your_public_ip_ -s udp:localhost:7722</div><div>#</div><div># *** To enable PSTN gateway routing execute:</div><div>#     - define WITH_PSTN</div><div>#     - set the value of pstn.gw_ip</div>
<div>#     - check route[PSTN] for regexp routing condition</div><div>#</div><div># *** To enhance accounting execute:</div><div>#     - enable mysql</div><div>#     - define WITH_ACCDB</div><div>#     - add following columns to database</div>
<div>#!ifdef ACCDB_COMMENT</div><div>  ALTER TABLE acc ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT &#39;&#39;;</div><div>  ALTER TABLE acc ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT &#39;&#39;;</div><div>  ALTER TABLE acc ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT &#39;&#39;;</div>
<div>  ALTER TABLE acc ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT &#39;&#39;;</div><div>  ALTER TABLE acc ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT &#39;&#39;;</div><div>  ALTER TABLE missed_calls ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT &#39;&#39;;</div>
<div>  ALTER TABLE missed_calls ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT &#39;&#39;;</div><div>  ALTER TABLE missed_calls ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT &#39;&#39;;</div><div>  ALTER TABLE missed_call ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT &#39;&#39;;</div>
<div>  ALTER TABLE missed_calls ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT &#39;&#39;;</div><div>#!endif</div><div><br></div><div><br></div><div>####### Global Parameters #########</div><div><br></div><div>#!ifdef WITH_DEBUG</div>
<div>debug=3</div><div>log_stderror=no</div><div>#!else</div><div>debug=2</div><div>log_stderror=no</div><div>#!endif</div><div><br></div><div>memdbg=5</div><div>memlog=5</div><div><br></div><div>log_facility=LOG_LOCAL0</div>
<div>fork=yes</div><div>children=4</div><div><br></div><div>/* uncomment the next line to disable TCP (default on) */</div><div>disable_tcp=yes</div><div><br></div><div>/* uncomment the next line to disable the auto discovery of local aliases</div>
<div>   based on revers DNS on IPs (default on) */</div><div>auto_aliases=no</div><div>dns_try_ipv6=no</div><div><br></div><div>port=5060</div><div><br></div><div>/* uncomment and configure the following line if you want Kamailio to </div>
<div>   bind on a specific interface/port/proto (default bind on all available) */</div><div>#listen=udp:<a href="http://10.0.0.10:5060">10.0.0.10:5060</a></div><div><br></div><div><br></div><div>####### Custom Parameters #########</div>
<div><br></div><div># These parameters can be modified runtime via RPC interface</div><div># - see the documentation of &#39;cfg_rpc&#39; module.</div><div>#</div><div># Format: <a href="http://group.id">group.id</a> = value &#39;desc&#39; description</div>
<div># Access: $sel(<a href="http://cfg_get.group.id">cfg_get.group.id</a>) or @<a href="http://cfg_get.group.id">cfg_get.group.id</a></div><div>#</div><div><br></div><div>#!ifdef WITH_PSTN</div><div># PSTN GW Routing</div>
<div>#</div><div># - pstn.gw_ip: valid IP or hostname as string value, example:</div><div># pstn.gw_ip = &quot;10.0.0.101&quot; desc &quot;My PSTN GW Address&quot;</div><div>#</div><div># - by default is empty to avoid misrouting</div>
<div>pstn.gw_ip = &quot;&quot; desc &quot;PSTN GW Address&quot;</div><div>#!endif</div><div><br></div><div><br></div><div>####### Modules Section ########</div><div><br></div><div>#set module path</div><div>mpath=&quot;/usr/local/lib/kamailio/modules_k/:/usr/local/lib/kamailio/modules/&quot;</div>
<div><br></div><div>/* uncomment next line for MySQL DB support */</div><div>#!ifdef WITH_MYSQL</div><div>loadmodule &quot;db_mysql.so&quot;</div><div>#!endif</div><div>loadmodule &quot;mi_fifo.so&quot;</div><div>loadmodule &quot;kex.so&quot;</div>
<div>loadmodule &quot;tm.so&quot;</div><div>loadmodule &quot;tmx.so&quot;</div><div>loadmodule &quot;sl.so&quot;</div><div>loadmodule &quot;rr.so&quot;</div><div>loadmodule &quot;pv.so&quot;</div><div>loadmodule &quot;maxfwd.so&quot;</div>
<div>loadmodule &quot;usrloc.so&quot;</div><div>loadmodule &quot;registrar.so&quot;</div><div>loadmodule &quot;textops.so&quot;</div><div>loadmodule &quot;uri_db.so&quot;</div><div>loadmodule &quot;siputils.so&quot;</div>
<div>loadmodule &quot;xlog.so&quot;</div><div>loadmodule &quot;sanity.so&quot;</div><div>loadmodule &quot;ctl.so&quot;</div><div>loadmodule &quot;mi_rpc.so&quot;</div><div>loadmodule &quot;acc.so&quot;</div><div>#!ifdef WITH_AUTH</div>
<div>loadmodule &quot;auth.so&quot;</div><div>loadmodule &quot;auth_db.so&quot;</div><div>#!endif</div><div>/* uncomment next line for aliases support</div><div>   NOTE: a DB (like db_mysql) module must be also loaded */</div>
<div>#loadmodule &quot;alias_db.so&quot;</div><div>/* uncomment next line for multi-domain support</div><div>   NOTE: a DB (like db_mysql) module must be also loaded</div><div>   NOTE: be sure and enable multi-domain support in all used modules</div>
<div>         (see &quot;multi-module params&quot; section ) */</div><div>#loadmodule &quot;domain.so&quot;</div><div>#!ifdef WITH_PRESENCE</div><div>loadmodule &quot;presence.so&quot;</div><div>loadmodule &quot;presence_xml.so&quot;</div>
<div>#!endif</div><div><br></div><div>#!ifdef WITH_NAT</div><div>loadmodule &quot;nathelper.so&quot;</div><div>#!endif</div><div><br></div><div># ----------------- setting module-specific parameters ---------------</div><div>
<br></div><div><br></div><div># ----- mi_fifo params -----</div><div>modparam(&quot;mi_fifo&quot;, &quot;fifo_name&quot;, &quot;/tmp/kamailio_fifo&quot;)</div><div><br></div><div><br></div><div># ----- rr params -----</div>
<div># add value to ;lr param to cope with most of the UAs</div><div>modparam(&quot;rr&quot;, &quot;enable_full_lr&quot;, 1)</div><div># do not append from tag to the RR (no need for this script)</div><div>modparam(&quot;rr&quot;, &quot;append_fromtag&quot;, 0)</div>
<div><br></div><div><br></div><div># ----- rr params -----</div><div>modparam(&quot;registrar&quot;, &quot;method_filtering&quot;, 1)</div><div>/* uncomment the next line to disable parallel forking via location */</div><div>
# modparam(&quot;registrar&quot;, &quot;append_branches&quot;, 0)</div><div>/* uncomment the next line not to allow more than 10 contacts per AOR */</div><div>#modparam(&quot;registrar&quot;, &quot;max_contacts&quot;, 10)</div>
<div><br></div><div><br></div><div># ----- uri_db params -----</div><div>/* by default we disable the DB support in the module as we do not need it</div><div>   in this configuration */</div><div>modparam(&quot;uri_db&quot;, &quot;use_uri_table&quot;, 0)</div>
<div>modparam(&quot;uri_db&quot;, &quot;db_url&quot;, &quot;&quot;)</div><div><br></div><div><br></div><div># ----- acc params -----</div><div>/* what sepcial events should be accounted ? */</div><div>modparam(&quot;acc&quot;, &quot;early_media&quot;, 1)</div>
<div>modparam(&quot;acc&quot;, &quot;report_ack&quot;, 1)</div><div>modparam(&quot;acc&quot;, &quot;report_cancels&quot;, 1)</div><div>/* by default ww do not adjust the direct of the sequential requests.</div><div>   if you enable this parameter, be sure the enable &quot;append_fromtag&quot;</div>
<div>   in &quot;rr&quot; module */</div><div>modparam(&quot;acc&quot;, &quot;detect_direction&quot;, 0)</div><div>/* account triggers (flags) */</div><div>modparam(&quot;acc&quot;, &quot;failed_transaction_flag&quot;, 3)</div>
<div>modparam(&quot;acc&quot;, &quot;log_flag&quot;, 1)</div><div>modparam(&quot;acc&quot;, &quot;log_missed_flag&quot;, 2)</div><div>modparam(&quot;acc&quot;, &quot;log_extra&quot;, </div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&quot;src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd&quot;)</div>
<div>/* enhanced DB accounting */</div><div>#!ifdef WITH_ACCDB</div><div>modparam(&quot;acc&quot;, &quot;db_flag&quot;, 1)</div><div>modparam(&quot;acc&quot;, &quot;db_missed_flag&quot;, 2)</div><div>modparam(&quot;acc&quot;, &quot;db_url&quot;,</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>&quot;mysql://openser:openserrw@localhost/openser&quot;)</div><div>modparam(&quot;acc&quot;, &quot;db_extra&quot;,</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&quot;src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd&quot;)</div>
<div>#!endif</div><div><br></div><div># ----- usrloc params -----</div><div>/* enable DB persistency for location entries */</div><div>#!ifdef WITH_USRLOCDB</div><div>modparam(&quot;usrloc&quot;, &quot;db_mode&quot;,   2)</div>
<div>modparam(&quot;usrloc&quot;, &quot;db_url&quot;,</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&quot;mysql://openser:openserrw@localhost/openser&quot;)</div><div>#!endif</div><div><br></div><div>
# ----- auth_db params -----</div><div>/* enable the DB based authentication */</div><div>#!ifdef WITH_AUTH</div><div>#modparam(&quot;auth_db&quot;, &quot;calculate_ha1&quot;, yes)</div><div>#modparam(&quot;auth_db&quot;, &quot;password_column&quot;, &quot;password&quot;)</div>
<div>#modparam(&quot;auth_db&quot;, &quot;db_url&quot;,</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&quot;mysql://openser:openserrw@localhost/openser&quot;)</div><div>#modparam(&quot;auth_db&quot;, &quot;load_credentials&quot;, &quot;&quot;)</div>
<div>#!endif</div><div><br></div><div># ----- alias_db params -----</div><div>/* uncomment the following lines if you want to enable the DB based</div><div>   aliases */</div><div>#modparam(&quot;alias_db&quot;, &quot;db_url&quot;,</div>
<div>#<span class="Apple-tab-span" style="white-space:pre">        </span>&quot;mysql://openser:openserrw@localhost/openser&quot;)</div><div><br></div><div><br></div><div># ----- domain params -----</div><div>/* uncomment the following lines to enable multi-domain detection</div>
<div>   support */</div><div>#modparam(&quot;domain&quot;, &quot;db_url&quot;,</div><div>#<span class="Apple-tab-span" style="white-space:pre">        </span>&quot;mysql://openser:openserrw@localhost/openser&quot;)</div><div>#modparam(&quot;domain&quot;, &quot;db_mode&quot;, 1)   # Use caching</div>
<div><br></div><div><br></div><div># ----- multi-module params -----</div><div>/* uncomment the following line if you want to enable multi-domain support</div><div>   in the modules (dafault off) */</div><div>#modparam(&quot;alias_db|auth_db|usrloc|uri_db&quot;, &quot;use_domain&quot;, 1)</div>
<div><br></div><div><br></div><div># ----- presence params -----</div><div>/* enable presence server support */</div><div>#!ifdef WITH_PRESENCE</div><div>modparam(&quot;presence|presence_xml&quot;, &quot;db_url&quot;,</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>&quot;mysql://openser:openserrw@localhost/openser&quot;)</div><div>modparam(&quot;presence_xml&quot;, &quot;force_active&quot;, 1)</div><div>modparam(&quot;presence&quot;, &quot;server_address&quot;, &quot;sip:<a href="http://10.0.0.10:5060">10.0.0.10:5060</a>&quot;)</div>
<div>#!endif</div><div><br></div><div># ----- nathelper -----</div><div>#!ifdef WITH_NAT</div><div>modparam(&quot;nathelper&quot;, &quot;rtpproxy_sock&quot;, &quot;udp:<a href="http://127.0.0.1:7722">127.0.0.1:7722</a>&quot;)</div>
<div>modparam(&quot;nathelper&quot;, &quot;natping_interval&quot;, 30)</div><div>modparam(&quot;nathelper&quot;, &quot;ping_nated_only&quot;, 1)</div><div>modparam(&quot;nathelper&quot;, &quot;sipping_bflag&quot;, 7)</div>
<div>modparam(&quot;nathelper&quot;, &quot;sipping_from&quot;, &quot;<a href="mailto:sip%3Apinger@kamailio.org">sip:pinger@kamailio.org</a>&quot;)</div><div>modparam(&quot;registrar|nathelper&quot;, &quot;received_avp&quot;, &quot;$avp(i:80)&quot;)</div>
<div>modparam(&quot;usrloc&quot;, &quot;nat_bflag&quot;, 6)</div><div>#!endif</div><div><br></div><div>####### Routing Logic ########</div><div><br></div><div><br></div><div># main request routing logic</div><div><br></div>
<div>route{</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (!mf_process_maxfwd_header(&quot;10&quot;)) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>sl_send_reply(&quot;483&quot;,&quot;Too Many Hops&quot;);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if(!sanity_check(&quot;1511&quot;, &quot;7&quot;))</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>xlog(&quot;Malformed SIP message from $si:$sp\n&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># NAT detection</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>route(NAT);</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (has_totag()) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span># sequential request withing a dialog should</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span># take the path determined by record-routing</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>if (loose_route()) {</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>if (is_method(&quot;BYE&quot;)) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>setflag(1); # do accounting ...</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>setflag(3); # ... even if the transaction fails</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>route(RELAY);</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>#route(1);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>} else {</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>#if (is_method(&quot;SUBSCRIBE&quot;) &amp;&amp; uri == myself) {</div><div>
<span class="Apple-tab-span" style="white-space:pre">                        </span>if (is_method(&quot;SUBSCRIBE&quot;) &amp;&amp; $rd == &quot;<a href="http://10.3.0.249:5060">10.3.0.249:5060</a>&quot;) {<span class="Apple-tab-span" style="white-space:pre">        </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span># in-dialog subscribe requests</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>route(PRESENCE);</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>#route(2);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>if ( is_method(&quot;ACK&quot;) ) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>if ( t_check_trans() ) {</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span># non loose-route, but stateful ACK; must be an ACK after a 487 or e.g. 404 from upstream server</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>t_relay();</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>} else {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span># ACK without matching transaction ... ignore and discard.\n&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>exit;</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>sl_send_reply(&quot;404&quot;,&quot;Not here&quot;);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>#initial requests</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># CANCEL processing</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method(&quot;CANCEL&quot;))</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>if (t_check_trans())</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>t_relay();</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>t_check_trans();</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># authentication</div><div><span class="Apple-tab-span" style="white-space:pre">        </span># route(AUTH);</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># record routing for dialog forming requests (in case they are routed)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span># - remove preloaded route headers</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>remove_hf(&quot;Route&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method(&quot;INVITE|SUBSCRIBE&quot;))</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>record_route();</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># account only INVITEs</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method(&quot;INVITE&quot;)) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>if (uri =~ &quot;sip:5[0-9][0-9][0-9]@*&quot;){</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>route(3);</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>exit;</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>#setflag(1); # do accounting</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>if (!uri==myself)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>/* replace with following line if multi-domain support is used */</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>##if (!is_uri_host_local())</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>append_hf(&quot;P-hint: outbound\r\n&quot;); </div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>route(RELAY);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># requests for my domain</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if( is_method(&quot;PUBLISH|SUBSCRIBE&quot;))</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>route(PRESENCE);</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method(&quot;PUBLISH&quot;)) </div><div>           { </div><div>           sl_send_reply(&quot;503&quot;, &quot;Service Unavailable&quot;); </div>
<div>           exit; </div><div>           } </div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method(&quot;REGISTER&quot;))</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>if(isflagset(5))</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>setbflag(&quot;6&quot;);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span># uncomment next line to do SIP NAT pinging </div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>## setbflag(&quot;7&quot;);</div><div>
<span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>if (!save(&quot;location&quot;))</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>sl_reply_error();</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if ($rU==$null) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>#$rU==10.3.0.252</div><div><span class="Apple-tab-span" style="white-space:pre">                </span># request with no Username in RURI</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>sl_send_reply(&quot;484&quot;,&quot;Address Incomplete&quot;+$rU);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>#route(PSTN);</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># apply DB based aliases (uncomment to enable)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>##alias_db_lookup(&quot;dbaliases&quot;);</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (!lookup(&quot;location&quot;)) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>switch ($rc) {</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>case -1:</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>case -3:</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>t_newtran();</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>t_reply(&quot;404&quot;, &quot;Not Found&quot;);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>case -2:</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>sl_send_reply(&quot;405&quot;, &quot;Method Not Allowed&quot;);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># when routing via usrloc, log the missed calls also</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>setflag(2);</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>route(RELAY);</div><div>}</div><div><br></div><div><br></div><div>route[RELAY] {</div><div>#!ifdef WITH_NAT</div><div>#<span class="Apple-tab-span" style="white-space:pre">        </span>if (check_route_param(&quot;nat=yes&quot;)) {</div>
<div>#<span class="Apple-tab-span" style="white-space:pre">                </span>setbflag(&quot;6&quot;);</div><div>#<span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>#<span class="Apple-tab-span" style="white-space:pre">        </span>if (isflagset(5) || isbflagset(&quot;6&quot;)) {</div>
<div>#<span class="Apple-tab-span" style="white-space:pre">                </span>route(RTPPROXY);</div><div>#<span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>#!endif</div><div><br></div><div>#<span class="Apple-tab-span" style="white-space:pre">        </span>/* example how to enable some additional event routes */</div>
<div>#<span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method(&quot;INVITE&quot;)) {</div><div>#<span class="Apple-tab-span" style="white-space:pre">                </span>#t_on_branch(&quot;BRANCH_ONE&quot;);</div><div>
#<span class="Apple-tab-span" style="white-space:pre">                </span>t_on_reply(&quot;REPLY_ONE&quot;);</div><div>#<span class="Apple-tab-span" style="white-space:pre">                </span>t_on_failure(&quot;FAIL_ONE&quot;);</div><div>#<span class="Apple-tab-span" style="white-space:pre">        </span>}</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (!t_relay()) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>sl_reply_error();</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>exit;</div><div>}</div><div><br></div><div><br></div><div># Presence server route</div><div>route[PRESENCE]</div><div>{</div><div>#!ifdef WITH_PRESENCE</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>if (!t_newtran())</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>sl_reply_error();</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>};</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if(is_method(&quot;PUBLISH&quot;))</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>handle_publish();</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>t_release();</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>else</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if( is_method(&quot;SUBSCRIBE&quot;))</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>handle_subscribe();</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>t_release();</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>exit;</div><div>#!endif</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span># if presence enabled, this part will not be executed</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method(&quot;PUBLISH&quot;) || $rU==$null)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>sl_send_reply(&quot;404&quot;, &quot;Not here&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>return;</div><div>}</div><div><br></div><div># Authentication route</div><div>route[AUTH] {</div>
<div>#!ifdef WITH_AUTH</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method(&quot;REGISTER&quot;))</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span># authenticate the REGISTER requests (uncomment to enable auth)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>if (!www_authorize(&quot;&quot;, &quot;subscriber&quot;))</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>www_challenge(&quot;&quot;, &quot;0&quot;);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>if ($au!=$tU)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>sl_send_reply(&quot;403&quot;,&quot;Forbidden auth ID&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>exit;</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>} else {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span># authenticate if from local subscriber (uncomment to enable auth)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>if (from_uri==myself)</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>if (!proxy_authorize(&quot;&quot;, &quot;subscriber&quot;)) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>proxy_challenge(&quot;&quot;, &quot;0&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>if (is_method(&quot;PUBLISH&quot;))</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>if ($au!=$tU) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>sl_send_reply(&quot;403&quot;,&quot;Forbidden auth ID&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>exit;</div><div>
<span class="Apple-tab-span" style="white-space:pre">                                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>} else {</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>if ($au!=$fU) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>sl_send_reply(&quot;403&quot;,&quot;Forbidden auth ID&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>exit;</div><div>
<span class="Apple-tab-span" style="white-space:pre">                                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>consume_credentials();</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span># caller authenticated</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div>
<div>#!endif</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>return;</div><div>}</div><div><br></div><div># Caller NAT detection route</div><div>route[NAT]{</div><div>#!ifdef WITH_NAT</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>force_rport();</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>if (nat_uac_test(&quot;19&quot;)) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>if (method==&quot;REGISTER&quot;) {</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>fix_nated_register();</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>} else {</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>fix_nated_contact();</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>setflag(5);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>#!endif</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>return;</div>
<div>}</div><div><br></div><div># RTPProxy control</div><div>route[RTPPROXY] {</div><div>#!ifdef WITH_NAT</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method(&quot;BYE&quot;)) {</div><div>
<span class="Apple-tab-span" style="white-space:pre">                </span>unforce_rtp_proxy();</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>} else if (is_method(&quot;INVITE&quot;)){</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>force_rtp_proxy();</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (!has_totag()) add_rr_param(&quot;;nat=yes&quot;);</div><div>#!endif</div><div>
<span class="Apple-tab-span" style="white-space:pre">        </span>return;</div><div>}</div><div><br></div><div># PSTN GW routing</div><div>route[PSTN] {</div><div>#!ifdef WITH_PSTN</div><div><span class="Apple-tab-span" style="white-space:pre">        </span># check if PSTN GW IP is defined</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>if (strempty($sel(cfg_get.pstn.gw_ip))) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>xlog(&quot;SCRIPT: PSTN rotuing enabled but pstn.gw_ip not defined\n&quot;);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>return;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># route to PSTN dialed numbers starting with &#39;+&#39; or &#39;00&#39;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>#     (international format)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span># - update the condition to match your dialing rules for PSTN routing</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>if(!($rU=~&quot;^(\+|00)[1-9][0-9]{3,20}$&quot;))</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>return;</div><div><br></div><div>
<span class="Apple-tab-span" style="white-space:pre">        </span># only local users allowed to call</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if(from_uri!=myself) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>sl_send_reply(&quot;403&quot;, &quot;Not Allowed&quot;);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>$ru = &quot;sip:&quot; + $rU + &quot;@&quot; + $sel(cfg_get.pstn.gw_ip);</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>route(RELAY);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>exit;</div><div>#!endif</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>return;</div>
<div>}</div><div><br></div><div># Sample branch router</div><div>branch_route[BRANCH_ONE] {</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>xdbg(&quot;new branch at $ru\n&quot;);</div><div>}</div><div>
<br></div><div># Sample onreply route</div><div>onreply_route[REPLY_ONE] {</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>xdbg(&quot;incoming reply\n&quot;);</div><div>#!ifdef WITH_NAT</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if ((isflagset(5) || isbflagset(&quot;6&quot;)) &amp;&amp; status=~&quot;(183)|(2[0-9][0-9])&quot;) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>force_rtp_proxy();</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (isbflagset(&quot;6&quot;)) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>fix_nated_contact();</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>#!endif</div><div>}</div><div><br></div><div># Sample failure route</div>
<div>failure_route[FAIL_ONE] {</div><div>#!ifdef WITH_NAT</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method(&quot;INVITE&quot;)</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>&amp;&amp; (isbflagset(&quot;6&quot;) || isflagset(5))) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>unforce_rtp_proxy();</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>#!endif</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (t_is_canceled()) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># uncomment the following lines if you want to block client </div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span># redirect based on 3xx replies.</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>##if (t_check_status(&quot;3[0-9][0-9]&quot;)) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>##t_reply(&quot;404&quot;,&quot;Not found&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>##<span class="Apple-tab-span" style="white-space:pre">        </span>exit;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>##}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># uncomment the following lines if you want to redirect the failed </div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span># calls to a different new destination</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>##if (t_check_status(&quot;486|408&quot;)) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>##<span class="Apple-tab-span" style="white-space:pre">        </span>sethostport(&quot;<a href="http://192.168.2.100:5060">192.168.2.100:5060</a>&quot;);</div><div>
<span class="Apple-tab-span" style="white-space:pre">        </span>##<span class="Apple-tab-span" style="white-space:pre">        </span>append_branch();</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>##<span class="Apple-tab-span" style="white-space:pre">        </span># do not set the missed call flag again</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>##<span class="Apple-tab-span" style="white-space:pre">        </span>t_relay();</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>##}</div><div>
}</div><div> route[3] { </div><div>            if (uri=~ &quot;sip:5[0-9][0-9][0-9]@*&quot;){ #nuevamente corrobora la regla de marcación</div><div>                     rewritehostport(&quot;<a href="http://10.3.0.249:5060">10.3.0.249:5060</a>&quot;); </div>
<div>                     route(RELAY); </div><div>                     exit;</div><div>                     } </div><div> }</div></div>