Hello all,
I've got a working conf on which RTPs work perfectly with TCP, but fails to work with UDP... can anyont tell me why??
Here's my conf:
# # sample config file to be used with nathelper/rtpproxy # # start RTPProxy with: rtpproxy -l your_public_ip -s udp:localhost:8899 #
# ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=yes # (cmd line: -E)
/* Uncomment these lines to enter debugging mode fork=no log_stderror=yes */
check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) port=5060 children=10 #fifo="/tmp/openser_fifo"
# --- module loading
mpath="/lib/openser/modules/"
loadmodule "mysql.so" loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" #loadmodule "dispatcher.so" loadmodule "nathelper.so" loadmodule "auth.so" loadmodule "auth_db.so" loadmodule "xlog.so" #loadmodule "/usr/lib/openser/modules/acc.so"
#modparam("acc", "early_media", 0) #modparam("acc", "report_cancels", 1)
#modparam("acc", "db_flag", 2) #modparam("acc", "db_url", "mysql://user:pwd@localhost/openser") #modparam("acc", "report_ack", 0) #modparam("acc", "db_missed_flag", 3) #modparam("acc", "failed_transaction_flag", 4) #modparam("acc", "db_extra", "from_uri=$fu ; to_uri=$tu ; from_user=$fU; source_ip=$si")
# --- setting module parameters
modparam("usrloc|auth_db","db_url","mysql://user:pwd@localhost/openser")
# --- setting module parameters #modparam("dispatcher", "list_file", "/etc/openser/dispatcher.list")
# -- usrloc params -- modparam("usrloc", "db_mode", 2) modparam("usrloc", "nat_bflag", 3)
# -- registrar params -- #modparam("registrar", "received_avp", "$avp(s:rcv)")
# -- auth params -- modparam("auth_db", "calculate_ha1", yes) modparam("auth_db", "password_column", "password")
# -- rr params -- modparam("rr", "enable_full_lr", 1)
# -- nathelper modparam("registrar|nathelper", "received_avp", "$avp(i:42)") modparam("nathelper", "rtpproxy_sock", "unix:/var/run/rtpproxy.sock") modparam("nathelper", "natping_interval", 30) modparam("nathelper", "ping_nated_only", 1) modparam("nathelper", "sipping_bflag", 7) modparam("nathelper", "sipping_from", "sip:pinger@whatever.com") #modparam("nathelper", "received_avp", "$avp(s:rcv)")
# -- xlog modparam("xlog", "buf_size", 8192)
modparam("registrar", "max_contacts", 5)
# --- main routing logic route{
if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; };
# NAT detection route(2);
if (!method=="REGISTER") record_route();
if (loose_route()) { append_hf("P-hint: rr-enforced\r\n"); route(1); };
if (!uri==myself) { append_hf("P-hint: outbound\r\n"); route(1); };
if (uri==myself) { if (method=="REGISTER") { if (!www_authorize("OPENSER_IP", "subscriber")) { www_challenge("OPENSER_IP", "0"); exit; };
if (isflagset(5)) { setbflag(6); # if you want OPTIONS natpings uncomment next # setflag(7); }; save("location"); exit; };
# # - TERMINATIONS # if (method=="INVITE") { if (!proxy_authorize("OPENSER_IP","subscriber")) { if($si=="GW_IP"){ xlog("L_NOTICE", "\n************** ALLOWING INCOMING CALL AS IT COMES FROM $si ************\n"); }else{ proxy_challenge("OPENSER_IP","0"); exit; } }
if (uri=~"^sip:00"){ xlog("L_NOTICE", "\n************** GOT OUTSIDE CALL ************\n"); strip(2); prefix("M3ll4m0d4v1d");
rewritehostport("GW_IP:5060"); sl_send_reply("100","Trying"); forward(); exit(); }
}
if (!lookup("location")) { sl_send_reply("404", "Not Found"); exit; }; append_hf("P-hint: usrloc applied\r\n"); };
route(1); }
route[1] { if (subst_uri('/(sip:.*);nat=yes/\1/')){ setbflag(6); };
if (isflagset(5)||isbflagset(6)) { route(3); }
if (!t_relay()) { sl_reply_error(); }; exit; }
route[2]{ force_rport(); if (nat_uac_test("19")) { if (method=="REGISTER") { fix_nated_register(); } else { fix_nated_contact(); }; setflag(5); }; }
route[3] { if (is_method("BYE|CANCEL")) { unforce_rtp_proxy(); } else if (is_method("INVITE")){ force_rtp_proxy(); t_on_failure("1"); }; if (isflagset(5)) search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes'); t_on_reply("1"); }
failure_route[1] { if (isbflagset(6) || isflagset(5)) { unforce_rtp_proxy(); } }
onreply_route[1] { if ((isflagset(5) || isbflagset(6)) && status=~"(183)|(2[0-9][0-9])") { force_rtp_proxy(); } search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes');
if (isbflagset(6)) { fix_nated_contact(); } exit; }
MANY thanks to all.
David