<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2523" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Hi guys, </FONT></DIV>
<DIV><FONT face=Arial size=2>I have a strange problem when tying to forward call 
to Quintum gw. </FONT></DIV>
<DIV><FONT face=Arial size=2>Callee is hearing what I speak but I don't hear 
anything. </FONT></DIV>
<DIV><FONT face=Arial size=2>Forwarding to another SER is ok. Both - users with 
real ips and natted.</FONT></DIV>
<DIV><FONT face=Arial size=2>Somebody can help me?</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Here is my config file:</FONT></DIV>
<DIV><FONT face=Arial 
size=2>debug=10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # debug level 
(cmd line: -dddddddddd)<BR>#fork=yes<BR>log_stderror=yes&nbsp;# (cmd line: 
-E)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>/* Uncomment these lines to enter debugging mode 
<BR>debug=7<BR>fork=no<BR>log_stderror=yes<BR>*/</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>check_via=no&nbsp;# (cmd. line: 
-v)<BR>dns=no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 
(cmd. line: -r)<BR>rev_dns=no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # (cmd. line: 
-R)<BR>port=5060<BR>children=4<BR>fifo="/tmp/ser_fifo"<BR>#fork=no<BR># 
------------------ module loading 
----------------------------------</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2># Uncomment this if you want to use SQL 
database<BR>loadmodule "/usr/local/lib/ser/modules/mysql.so"</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>loadmodule 
"/usr/local/lib/ser/modules/sl.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/tm.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/rr.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/maxfwd.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/usrloc.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/registrar.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/auth.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/auth_db.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/textops.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/domain.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/mediaproxy.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/acc.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/group.so"<BR>loadmodule 
"/usr/local/lib/ser/modules/nathelper.so"<BR># ----------------- setting 
module-specific parameters ---------------</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2># -- usrloc params --<BR>modparam("usrloc", 
"db_mode", 2)<BR>modparam("usrloc", "db_url", 
"mysql://ser:heslo@192.168.2.15/ser")<BR>modparam("usrloc","user_column","username")</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>modparam("auth_db", "calculate_ha1", 
yes)<BR>modparam("auth_db", "password_column", "password")<BR>modparam("rr", 
"enable_full_lr", 1)<BR>#modparam("acc", "db_url", 
"mysql://ser:heslo@192.168.2.15/ser")<BR>#modparam("acc", "log_level", 2) 
<BR>#modparam("acc", "log_flag", 3)<BR>#modparam("acc", "log_level", 1)<BR># 
number of flag, which will be used for accounting; if a message is<BR># labeled 
with this flag, its completion status will be reported<BR>modparam("acc", 
"log_flag", 1)<BR>modparam("acc", "log_fmt", "cdfimorstup")<BR>modparam("acc", 
"db_url", "mysql://ser:heslo@192.168.2.15/ser")<BR>modparam("acc", "db_flag", 
1)<BR>modparam("acc", "db_missed_flag", 1)<BR>modparam("acc", "log_missed_flag", 
1)<BR>#modparam("acc", "report_cancels", 1)<BR>modparam("acc", "report_ack", 
1)<BR>#modparam("mediaproxy", "mediaproxy_socket", 
"/var/run/proxydispatcher.sock")<BR>#modparam("mediaproxy", "natping_interval", 
20)<BR>modparam("nathelper","rtpproxy_sock", 
"/var/run/rtpproxy.sock")<BR>modparam("registrar", "nat_flag", 
6)<BR>modparam("nathelper", "natping_interval", 30) # Ping interval 30 
s<BR>modparam("nathelper", "ping_nated_only", 1)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>listen=193.2.6.17<BR># 
-------------------------&nbsp; request routing logic -------------------<BR># 
main routing logic<BR>route{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 
(!mf_process_maxfwd_header("70")) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
sl_send_reply("483","Too Many 
Hops");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
};<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( msg:len &gt; max_len ) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
sl_send_reply("513", "Message too 
big");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<BR>&nbsp;if 
(nat_uac_test("3")) {<BR>&nbsp;&nbsp;if (method == "REGISTER" || ! 
search("^Record-Route:")) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log("LOG: Someone 
trying to register from private IP, rewriting\n");</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # This will work 
only for user agents that support symmetric<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 
communication. We tested quite many of them and majority 
is<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # smart enough to be symmetric. In some 
phones it takes a configuration<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # option. With 
Cisco 7960, it is called NAT_Enable=Yes, with kphone it 
is<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # called "symmetric media" and "symmetric 
signalling".</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fix_nated_contact(); 
# Rewrite contact with source IP of signalling<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
if (method == "INVITE") 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fix_nated_sdp("1"); 
# Add direction=active to SDP<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
};<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; force_rport(); # Add rport parameter to 
topmost Via<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setflag(6);&nbsp;&nbsp;&nbsp; # 
Mark as NATed<BR>&nbsp;&nbsp;};<BR>&nbsp;};</FONT></DIV>
<DIV>&nbsp;</DIV><FONT face=Arial size=2>
<DIV><BR>&nbsp;if (!method=="REGISTER") record_route();&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;if (loose_route()) {<BR>&nbsp;&nbsp;# mark routing logic in 
request<BR>&nbsp;&nbsp;append_hf("P-hint: rr-enforced\r\n"); 
<BR>&nbsp;&nbsp;route(1);<BR>&nbsp;&nbsp;break;<BR>&nbsp;};</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;if (!uri==myself) {<BR>&nbsp;&nbsp;# mark routing logic in 
request<BR>&nbsp;&nbsp;append_hf("P-hint: outbound\r\n"); </DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;route(1);<BR>&nbsp;&nbsp;break;<BR>&nbsp;};</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;if (uri==myself) {</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;if (method=="REGISTER") {</DIV>
<DIV>&nbsp;</DIV>
<DIV># Uncomment this if you want to use digest 
authentication<BR>&nbsp;&nbsp;&nbsp;if (!www_authorize("193.2.6.17", 
"subscriber")) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;www_challenge("193.2.6.17", 
"0");<BR>&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;};</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;save("location");<BR>&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;};</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;lookup("aliases");<BR>&nbsp;&nbsp;if (!uri==myself) 
{<BR>&nbsp;&nbsp;&nbsp;append_hf("P-hint: outbound alias\r\n"); 
<BR>&nbsp;&nbsp;&nbsp;route(1);<BR>&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;};</DIV>
<DIV>&nbsp;</DIV>
<DIV>if (uri=~"^sip:[1-9]*@193.2.6.17") {&nbsp; # QUINTUM 
GW<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
rewritehost("194.24.1.6");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
append_branch("194.24.1.6");<BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
t_relay_to_udp("194.24.1.6", 
"5060");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
t_relay();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
rewritehostport("194.24.1.6:5060");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
append_hf("P-hint: VoipSwitch 
GATEWAY");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
break;<BR>}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
} else {<BR>if (uri=~"^sip:[0]*@193.2.6.17") 
{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ### Other 
SER<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
setflag(1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
rewritehostport("bla.mydomain.com:5060");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
append_branch("bla.mydomain.com");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
t_relay();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
break;<BR>};<BR>};</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>&nbsp;&nbsp;# native SIP destinations are handled using our USRLOC 
DB<BR>&nbsp;&nbsp;if (!lookup("location")) 
{<BR>&nbsp;&nbsp;&nbsp;sl_send_reply("404", "Not 
Found");<BR>&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;};</DIV>
<DIV>&nbsp;</DIV>
<DIV>#&nbsp;};<BR>&nbsp;append_hf("P-hint: usrloc applied\r\n"); 
<BR>&nbsp;route(1);<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>route[1] <BR>{<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;# if client or server know to 
be behind a NAT, enable relay<BR>&nbsp;if (isflagset(6)) 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp; force_rtp_proxy();<BR>&nbsp;};</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;# NAT processing of replies; apply to all transactions (for 
example,<BR>&nbsp;# re-INVITEs from public to private UA are hard to identify 
as<BR>&nbsp;# NATed at the moment of request processing); look at 
replies<BR>&nbsp;t_on_reply("1");</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;# send it out now; use stateful forwarding as it works 
reliably<BR>&nbsp;# even for UDP2TCP<BR>&nbsp;if (!t_relay()) 
{<BR>&nbsp;&nbsp;sl_reply_error();<BR>&nbsp;};<BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV># !! Nathelper<BR>onreply_route[1] {<BR>&nbsp;&nbsp;&nbsp; # NATed 
transaction ?<BR>&nbsp;&nbsp;&nbsp; if (isflagset(6) &amp;&amp; status =~ 
"(183)|2[0-9][0-9]") {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
fix_nated_contact();<BR>&nbsp;force_rtp_proxy();<BR>&nbsp;&nbsp;&nbsp; # 
otherwise, is it a transaction behind a NAT and we did not<BR>&nbsp;&nbsp;&nbsp; 
# know at time of request processing ? (RFC1918 contacts)<BR>&nbsp;&nbsp;&nbsp; 
} else if (nat_uac_test("1")) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
fix_nated_contact();<BR>&nbsp;&nbsp;&nbsp; };<BR>}<BR></FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Thanks In Advance!</FONT></DIV>
<DIV><FONT face=Arial size=2>Pavel Siderov</FONT>&nbsp;</DIV></BODY></HTML>