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