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