I have configured Kamailio to pass a registration request to another VoIP provider. The reason I am doing this is to provide a sip port for users where the ISP is blocking SIP. I am able to pass the registrations to the VoIP provider but I'd like to have inbound calls working as well. I see the inbound invites coming into the Kamailio server but it appears that the server does not 'know' about the UA that is registered 'through' the server to the VoIP provider. Can anyone tell me how to fix this problem? Below is my config.
Thank you, Mike #!KAMAILIO # # Edge proxy configuration # #!subst "/REGISTRAR_IP/xxxxxxxxxx/" #IP address of voip provider #!subst "/REGISTRAR_PORT/5060/" #!substdef "/FLOW_TIMER/20/" debug=2 log_stderror=no log_facility=LOG_LOCAL0 fork=yes children=4 alias="example.com" #mpath="/usr/lib64/kamailio/modules" mpath="/usr/lib/x86_64-linux-gnu/kamailio/modules" tcp_connection_lifetime=30 # FLOW_TIMER + 10 auto_aliases=no mhomed=0 listen=udp:X.X.X.X:531 advertise X.X.X.X:531 alias="X.X.X.X:531" alias=X.X.X.X:531 alias="X.X.X.X:531" alias=X.X.X.X:531 port=531 ####### Modules Section ######## loadmodule "tm.so" loadmodule "sl.so" #loadmodule "outbound.so" loadmodule "rr.so" loadmodule "path.so" loadmodule "pv.so" loadmodule "maxfwd.so" loadmodule "xlog.so" loadmodule "sanity.so" loadmodule "ctl.so" loadmodule "mi_rpc.so" loadmodule "mi_fifo.so" loadmodule "textops.so" loadmodule "siputils.so" loadmodule "rtimer.so" loadmodule "sqlops.so" # ----------------- setting module-specific parameters --------------- # ----- mi_fifo params ----- modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo") # ----- tm params ----- modparam("tm", "failure_reply_mode", 3) # ----- rr params ----- modparam("rr", "append_fromtag", 0) ####### Routing Logic ######## request_route { route(REQINIT); if (is_method("CANCEL")) { if (t_check_trans()) { route(RELAY); } exit; } route(WITHINDLG); t_check_trans(); if (is_method("REGISTER")) { remove_hf("Route"); add_path(); $du = "sip:REGISTRAR_IP:REGISTRAR_PORT"; } else { if (is_method("INVITE|SUBSCRIBE")) record_route(); if ($si == "REGISTRAR_IP" && $sp == "REGISTRAR_PORT") { if (!loose_route()) { switch($rc) { case -2: sl_send_reply("403", "Forbidden"); exit; default: sl_reply_error(); exit; } } t_on_failure("FAIL_OUTBOUND"); } else { if ($rU == $null) { sl_send_reply("484", "Address Incomplete"); exit; } remove_hf("Route"); $du = "sip:REGISTRAR_IP:REGISTRAR_PORT"; } } route(RELAY); } route[RELAY] { if (!t_relay()) { sl_reply_error(); } exit; } route[REQINIT] { if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; } if(!sanity_check("1511", "7")) { xlog("Malformed SIP message from $si:$sp\n"); exit; } } route[WITHINDLG] { if (has_totag()) { if (!loose_route()) { switch($rc) { case -2: sl_send_reply("403", "Forbidden"); exit; default: if (is_method("ACK")) { if ( t_check_trans() ) { route(RELAY); exit; } else { exit; } } sl_send_reply("404","Not Found"); } } else { if (is_method("NOTIFY")) { record_route(); } route(RELAY); } exit; } } onreply_route { if (!t_check_trans()) { drop; } if ($rm == "REGISTER" && $rs >= 200 && $rs <= 299) { remove_hf("Flow-Timer"); if ($(hdr(Require)[*])=~"outbound") insert_hf("Flow-Timer: FLOW_TIMER\r\n", "Call-ID"); } } failure_route[FAIL_OUTBOUND]{ if (t_branch_timeout() || !t_branch_replied()) { send_reply("430", "Flow Failed"); } }
_______________________________________________ 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