<div dir="ltr">If anyone can help me on this one thanks before hand, i have a setup on kamilio and everything has been working fine, i need to interface with a huge carrier and they don't like the way kamailio sends the invites so i need to implement stric routing .<div>
<br></div><div style>now when kamailio sends an invite it goes like</div><div style><div style> +0.000140 Kamailio:5060 -> CarrierIP:5060</div><div>INVITE sip:XXXXXX@Kamailio IP SIP/2.0.</div><div><p class=""><span style="color:rgb(31,73,125)">Record-Route: <<a href="sip:54.236.192.19;lr=on;ftag=as4640f260">sip:Kamailio IP;lr=on;ftag=as4640f260</a>>.</span></p>


<p class=""><span style="color:rgb(31,73,125)">Via: SIP/2.0/UDP
Kamailio IP:5060;branch=z9hG4bK9156.eeb6fbf7.0.</span></p>

<p class=""><span style="color:rgb(31,73,125)">Via: SIP/2.0/UDP
Kamailio IP:5060;branch=z9hG4bK7aeceb75;rport=5060.</span></p>

<p class=""><span style="color:rgb(31,73,125)">Max-Forwards: 16.</span></p>

<p class=""><span style="color:rgb(31,73,125)">To: <a href="sip:85630573108863792@54.236.192.19@54.236.192.19">sip:XXXXXX@KAMAILIO IP@54.236.192.19</a>.</span></p>

<p class=""><br></p><p class="" style><font color="#1f497d">and they wanted to receive it like this </font></p><p class=""><font color="#1f497d">INVITE sip:XXXXXX@CARRIER IP;user=phone SIP/2.0.</font></p><p class=""><font color="#1f497d">Via: SIP/2.0/UDP KAMAILIO IP:5062;</font></p>
<p class=""><font color="#1f497d">From: <sip:XXXXXX@KAMAILIO IP:5060;user=phone>;tag=514594693-3792808143-4087363760-57672641.</font></p><p class=""><font color="#1f497d">To: <sip:XXXXXXXX@CARRIERIP;user=phone>.</font></p>
<p class=""><font color="#1f497d">Call-ID: <a href="mailto:8517ac46cfa811e2b038a0f3c1037003@204.2.202.12">8517ac46cfa811e2b038a0f3c1037003@204.2.202.12</a>.</font></p><p class=""><font color="#1f497d"></font></p><p class="">
<font color="#1f497d">CSeq: 1 INVITE.</font></p><p class=""><font color="#1f497d"><br></font></p><p class="" style><font color="#1f497d">I dont know how to achieve this in kamailio, i am working fine with several carriers using loose routing</font></p>
<p class="" style><font color="#1f497d"><br></font></p><p class="" style><font color="#1f497d">here is my config any help is greatly apreciated</font></p><p class=""><font color="#1f497d">debug=4</font></p><p class=""><font color="#1f497d">log_stderror=yes</font></p>
<p class=""><font color="#1f497d">#!else</font></p><p class=""><font color="#1f497d">#debug=2</font></p><p class=""><font color="#1f497d">#log_stderror=yes</font></p><p class=""><font color="#1f497d">#!endif</font></p><p class="">
<font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">memdbg=5</font></p><p class=""><font color="#1f497d">memlog=5</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">log_facility=LOG_LOCAL7</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">fork=yes</font></p><p class=""><font color="#1f497d">children=6</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">auto_aliases=no</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">#listen=udp:KAMAILIO IP</font></p><p class=""><font color="#1f497d">listen=udp:KAMAILIO IP:5060 advertise EXTERNALIP:5060</font></p><p class="">
<font color="#1f497d"><br></font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">port=5060</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">enable_tls=no</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">#tcp_connection_lifetime=3605</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">#!ifdef WITH_SRCPATH</font></p>
<p class=""><font color="#1f497d">mpath="modules_k:modules"</font></p><p class=""><font color="#1f497d">#!else</font></p><p class=""><font color="#1f497d">mpath="/usr/lib64/kamailio/modules_k/:/usr/lib64/kamailio/modules/"</font></p>
<p class=""><font color="#1f497d">#path="/usr/lib64/kamailio/modules_k/:/usr/lib64/kamailio/modules/"</font></p><p class=""><font color="#1f497d">oadmodule "db_mysql.so"</font></p><p class=""><font color="#1f497d">loadmodule "tm.so"</font></p>
<p class=""><font color="#1f497d">loadmodule "sl.so"</font></p><p class=""><font color="#1f497d">loadmodule "acc.so"</font></p><p class=""><font color="#1f497d">loadmodule "rr.so"</font></p><p class="">
<font color="#1f497d">loadmodule "maxfwd.so"</font></p><p class=""><font color="#1f497d">loadmodule "textops.so"</font></p><p class=""><font color="#1f497d">loadmodule "pv.so"</font></p><p class="">
<font color="#1f497d">loadmodule "dispatcher.so"</font></p><p class=""><font color="#1f497d">loadmodule "usrloc.so"</font></p><p class=""><font color="#1f497d">loadmodule "registrar.so"</font></p>
<p class=""><font color="#1f497d">loadmodule "siputils.so"</font></p><p class=""><font color="#1f497d">loadmodule "sanity.so"</font></p><p class=""><font color="#1f497d">loadmodule "ctl.so"</font></p>
<p class=""><font color="#1f497d">loadmodule "mi_rpc.so"</font></p><p class=""><font color="#1f497d">loadmodule "avpops.so"</font></p><p class=""><font color="#1f497d">#!ifdef WITH_NAT</font></p><p class="">
<font color="#1f497d">loadmodule "nathelper.so"</font></p><p class=""><font color="#1f497d">loadmodule "rtpproxy.so"</font></p><p class=""><font color="#1f497d">#!endif</font></p><p class=""><font color="#1f497d">loadmodule "xlog.so"</font></p>
<p class=""><font color="#1f497d">#mysqlcdr</font></p><p class=""><font color="#1f497d">modparam("acc", "db_flag", 2)</font></p><p class=""><font color="#1f497d">modparam("acc", "db_missed_flag", 3)</font></p>
<p class=""><font color="#1f497d">modparam("acc", "db_url", "mysql://some mysql server/openser")</font></p><p class=""><font color="#1f497d">modparam("acc", "db_extra", "some credentials" )</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">#loadmodule "carrierroute"</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">modparam("tm", "failure_reply_mode", 3)</font></p>
<p class=""><font color="#1f497d">modparam("tm", "fr_timer", 30000)</font></p><p class=""><font color="#1f497d">modparam("tm", "fr_inv_timer", 120000)</font></p><p class=""><font color="#1f497d"><br>
</font></p><p class=""><font color="#1f497d">modparam("dispatcher", "list_file", "/etc/kamailio/dispatcher.lst")</font></p><p class=""><font color="#1f497d">modparam("rr", "enable_full_lr", 1)</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">!ifdef WITH_NAT</font></p><p class=""><font color="#1f497d"># ----- rtpproxy params -----</font></p><p class=""><font color="#1f497d">modparam("rtpproxy", "rtpproxy_sock", "udp:<a href="http://127.0.0.1:7722">127.0.0.1:7722</a>")</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d"># ----- nathelper params -----</font></p><p class=""><font color="#1f497d">modparam("nathelper", "natping_interval", 30)</font></p>
<p class=""><font color="#1f497d">modparam("nathelper", "ping_nated_only", 1)</font></p><p class=""><font color="#1f497d">modparam("nathelper", "sipping_bflag", FLB_NATSIPPING)</font></p>
<p class=""><font color="#1f497d">modparam("nathelper", "sipping_from", "<a href="mailto:sip%3Apinger@kamailio.org">sip:pinger@kamailio.org</a>")</font></p><p class=""><font color="#1f497d"><br>
</font></p><p class=""><font color="#1f497d"># params needed for NAT traversal in other modules</font></p><p class=""><font color="#1f497d">modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)")</font></p>
<p class=""><font color="#1f497d">modparam("usrloc", "nat_bflag", FLB_NATB)</font></p><p class=""><font color="#1f497d">#!endif</font></p><p class=""><font color="#1f497d">modparam("xlog", "buf_size", 8192)</font></p>
<p class=""><font color="#1f497d">modparam("xlog", "force_color", 1)</font></p><p class=""><font color="#1f497d">#carrierroute</font></p><p class=""><font color="#1f497d">#modparam("carrierroute", "config_file", "/etc/kamailio/carrierroute.conf")</font></p>
<p class=""><font color="#1f497d">#end carrierroute</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">modparam("pv", "shvset", "ruta=s:$ru")</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">    </font></p><p class=""><font color="#1f497d">request_route {</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">        if (!mf_process_maxfwd_header("10")) {</font></p>
<p class=""><font color="#1f497d">                sl_send_reply("483","Too Many Hops");</font></p><p class=""><font color="#1f497d">                exit;</font></p><p class=""><font color="#1f497d">        }</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">#</font></p><p class=""><font color="#1f497d">        if(is_method("OPTIONS")) {</font></p><p class=""><font color="#1f497d">            # send reply for each options request</font></p>
<p class=""><font color="#1f497d">            sl_send_reply("200", "ok");</font></p><p class=""><font color="#1f497d">            exit();</font></p><p class=""><font color="#1f497d">         }</font></p>
<p class=""><font color="#1f497d">#</font></p><p class=""><font color="#1f497d">   if(method=="BYE") {</font></p><p class=""><font color="#1f497d">   #Account BYE transactions</font></p><p class=""><font color="#1f497d">setflag(2);</font></p>
<p class=""><font color="#1f497d">};</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">#CANCEL processing</font></p><p class=""><font color="#1f497d">if (method=="CANCEL") {</font></p>
<p class=""><font color="#1f497d">setflag(2);</font></p><p class=""><font color="#1f497d">if (t_check_trans()) t_relay();</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">exit;</font></p>
<p class=""><font color="#1f497d">};</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">#</font></p><p class=""><font color="#1f497d">       if (loose_route()) {</font></p><p class="">
<font color="#1f497d">                        if(method=="BYE") {</font></p><p class=""><font color="#1f497d">   #Account BYE transactions</font></p><p class=""><font color="#1f497d">setflag(2);</font></p><p class="">
<font color="#1f497d">};</font></p><p class=""><font color="#1f497d">##CANCEL processing</font></p><p class=""><font color="#1f497d">if (method=="CANCEL") {</font></p><p class=""><font color="#1f497d">setflag(3);</font></p>
<p class=""><font color="#1f497d">if (t_check_trans()) t_relay();</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">exit;</font></p><p class=""><font color="#1f497d">};</font></p>
<p class=""><font color="#1f497d">                        if (!t_relay()) {</font></p><p class=""><font color="#1f497d">                        sl_reply_error();</font></p><p class=""><font color="#1f497d">                }</font></p>
<p class=""><font color="#1f497d">                exit;</font></p><p class=""><font color="#1f497d">       }</font></p><p class=""><font color="#1f497d"><span class="" style="white-space:pre">      </span>   if (is_method("INVITE")) {</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">     # Account INVITE packets</font></p><p class=""><font color="#1f497d">setflag(2);</font></p><p class=""><font color="#1f497d"># Account Missed calls</font></p>
<p class=""><font color="#1f497d">setflag(3);</font></p><p class=""><font color="#1f497d">                record_route();</font></p><p class=""><font color="#1f497d">               </font></p><p class=""><font color="#1f497d">        }</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">#removed 1 from string</font></p>
<p class=""><font color="#1f497d">#(ai{s.substr,4,0});</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">xlog("before strip,< time [$Tf] > Aip= $src_ip, r-uri($ru\n");</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">#MYvariables</font></p><p class=""><font color="#1f497d">$var(x) = $ru;</font></p><p class=""><font color="#1f497d"><br></font></p><p class="">
<font color="#1f497d">$var(y)=$(var(x){s.substr,4,3});</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">$var(z)=$(var(y){<a href="http://s.int">s.int</a>});</font></p><p class="">
<font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">$var(t)=$(var(x){s.substr,7,0});</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d"><br></font></p><p class="">
<font color="#1f497d">xlog("dsroute $var(z)fullruri($ru)\n");</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">xlog(">>>>>>>>>>>>>>>>>la header TO $var(t)----------fullruri($ru)<<<<<<<<<<<<<<<<<<\n");</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">xlog("all---$Tf,$ct,$cs,<$cs>,callid-$ci,$re,$du,$rt,$ru,$si,$sp,$ua,$rm,$rs,$fn,$fd,$fu,$fU ");</font></p><p class=""><font color="#1f497d"><br>
</font></p><p class=""><font color="#1f497d">strip(3);</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">xlog("after strip time [$Tf] method ($rm) via el code ($var(z)-- ($var(y))\n");</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">ds_select_dst("$var(z)", "4");#carrer dynamic</font></p><p class=""><font color="#1f497d"><br>
</font></p><p class=""><font color="#1f497d">#ds_select_dst("103", "4");#to change static carrier</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">xlog("print el destination y el $var(z) ($du)>>($td)>>> ($ru)\n");</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">xlog("errors---$<a href="http://err.info">err.info</a>,$err.rcode,$err.rreason,$rc,$rc,$rc,$rr,--end errors  ");</font></p><p class="">
<font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">#remove_hf("To") ;</font></p><p class=""><font color="#1f497d">#$insert_hf("To: sip:$var(t)@$rd\r\n", "From"); # trying to change to header</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">  #if (!forward()){; #if forwarding</font></p><p class=""><font color="#1f497d"> # if(!t_relay()){;</font></p><p class=""><font color="#1f497d">     if (!t_relay_to_udp()) {#proxing</font></p>
<p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d">sl_reply_error();</font></p><p class=""><font color="#1f497d">exit;</font></p><p class=""><font color="#1f497d">};</font></p><p class=""><font color="#1f497d"><br>
</font></p><p class=""><font color="#1f497d">}</font></p><p class=""><font color="#1f497d"><br></font></p><p class=""><font color="#1f497d"></font></p><p class=""><font color="#1f497d"><span class="" style="white-space:pre">        </span>   </font></p>
</div><div><br></div></div></div>