<!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>
<DIV><FONT face=Arial size=2>Marian, Jan please tell me what to 
do.</FONT></DIV></DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=pi@hostmates.com href="mailto:pi@hostmates.com">Pavel Siderov</A> 
  </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=serusers@lists.iptel.org 
  href="mailto:serusers@lists.iptel.org">serusers@lists.iptel.org</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Tuesday, November 30, 2004 6:58 
  PM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> [Serusers] Forward to Quintum GW 
  - One way audio</DIV>
  <DIV><BR></DIV>
  <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>
  <P>
  <HR>

  <P></P>_______________________________________________<BR>Serusers mailing 
  list<BR>serusers@lists.iptel.org<BR>http://lists.iptel.org/mailman/listinfo/serusers<BR></BLOCKQUOTE></BODY></HTML>