<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-9">
<META content="MSHTML 6.00.2900.2604" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>
<DIV><FONT face=Arial size=2>
<DIV><FONT face=Arial size=2>Conditions as follows :</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>* SER runs on a Public IP</FONT></DIV>
<DIV><FONT face=Arial size=2>* SER works without auth & database
modules,</FONT></DIV>
<DIV><FONT face=Arial size=2>* Nearly all user behind NAT (but routers
configured to do port forwarding for TCP/UDP 5060) to help SER in some
cases,</FONT></DIV>
<DIV><FONT face=Arial size=2>* Users numbers in format of 833XXXXXXX 834XXXXXXX
and they should call each P2P-SIP-Calls (if not behind NAT),</FONT></DIV>
<DIV><FONT face=Arial size=2>* If a user need to call PSTN end point (SIP
Gateway located at 212.154.32.154) the call traffic should flow over SER to SIP
Gateway via T1 connection already located between that systems so SER
handles all voice traffic by help of RTP Proxy.</FONT></DIV>
<DIV><FONT face=Arial size=2>* UA's registers on SER (Zyxel Prestige 2000, Zyxel
Prestige 200W, Cisco ATA186 etc.)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Problem is users </FONT><FONT face=Arial
size=2>cannot call each other (if i comment lines for nathelper they can
call)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>It's clear i think, and below is my ser.cfg, what
do i need extra or erase. (It was successful without nathelper module and added
dial plan)</FONT></DIV>
<DIV> </DIV>
<DIV>I get this error :</DIV>
<DIV> </DIV>
<DIV><A
href="mailto:root@sipproxy/usr/local/etc/ser">root@sipproxy/usr/local/etc/ser</A>>
ser 127.0.0.1 -n 1 -ddddddd -D -E<BR> 0(4419) read 23490987 from
/dev/random<BR> 0(4419) seeding PRNG with 1133443665<BR> 0(4419) test
random number 1528986547<BR> 0(4419) shm_mem_init: success<BR> 0(4419)
DEBUG: register_fifo_cmd: new command (print) registered<BR> 0(4419) DEBUG:
register_fifo_cmd: new command (uptime) registered<BR> 0(4419) DEBUG:
register_fifo_cmd: new command (version) registered<BR> 0(4419) DEBUG:
register_fifo_cmd: new command (pwd) registered<BR> 0(4419) DEBUG:
register_fifo_cmd: new command (arg) registered<BR> 0(4419) DEBUG:
register_fifo_cmd: new command (which) registered<BR> 0(4419) DEBUG:
register_fifo_cmd: new command (ps) registered<BR> 0(4419) DEBUG:
register_fifo_cmd: new command (kill) registered<BR> 0(4419) parse error
(60,46-47): parse error<BR> 0(4419) parse error (60,46-47): bad
command<BR> 0(4419) parse error (60,46-47): bad command<BR> 0(4419)
parse error (60,48-49): bad command<BR> 0(4419) parse error (65,6-7): parse
error<BR> 0(4419) parse error (65,6-7):<BR>ERROR: bad config file (6
errors)<BR><A
href="mailto:root@sipproxy/usr/local/etc/ser">root@sipproxy/usr/local/etc/ser</A>><BR></DIV></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2><<< ser.cfg. starts here
<<<</FONT></DIV>
<DIV> </DIV></FONT></DIV>
<DIV><FONT face=Arial size=2>#<BR># /usr/local/etc/ser/ser.cfg 2005/04/03
12:00:00 by Ozan Blotter $<BR>#<BR># simple quick-start config script with
nathelper/rtpproxy<BR># for IPv4/IPv6 gatewaying<BR>#<BR># ----------- global
configuration parameters ------------------------</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial
size=2>debug=3
# debug
level<BR>#fork=yes<BR>#log_stderror=no
#</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial
size=2>check_via=no
# (cmd. line:
-v)<BR>dns=no
# (cmd. line:
-r)<BR>rev_dns=no
# (cmd. line:
-R)<BR>port=5060<BR>children=2
# count of ser processes per interface<BR>fifo="/tmp/ser_fifo"</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2># ------------------ module loading
----------------------------------</FONT></DIV>
<DIV> </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"</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>#Nathelper for RTPproxy<BR>loadmodule
"/usr/local/lib/ser/modules/nathelper.so"</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2># ----------------- setting module-specific
parameters ---------------<BR># -- usrloc params --</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>modparam("usrloc", "db_mode",
0)</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2># -- rr params --<BR># add value to ;lr param to
make some broken UAs happy<BR>modparam("rr", "enable_full_lr", 1)</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>modparam ("nathelper", "rtpproxy_sock",
"/var/run/rtpproxy.sock")</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2># ------------------------- request routing
logic -------------------</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2># main routing logic</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>route {<BR> # initial sanity
checks -- messages with<BR> # max_forwards==0, or excessively
long requests<BR> if (!mf_process_maxfwd_header("10"))
{<BR> sl_send_reply("483","Too Many
Hops");<BR>
break;<BR> };<BR> if ( msg:len > max_len
) {<BR> sl_send_reply("513", "Message
Too Big");<BR>
break;<BR> };</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> # route invitation request to
other domains<BR> if (!uri == myself) && method ==
"INVITE") {<BR>
record_route();<BR> if
(!t_relay())<BR>
sl_reply_error();<BR>
break;<BR> };</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> if (method == "REGISTER")
{<BR> if (af == inet)
{<BR>
save ("location_inet4");<BR> } else if
(af ==inet6)
{<BR>
save ("location_inet6");<BR> } else
{<BR>
sl_send_reply("403", "Call Cannot Be Served
Here");<BR>
};<BR> break;<BR>
};</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> if (method == "INVITE")
{<BR> if (lookup("location_inet4"))
{</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial
size=2>
# Comment Out Three Lines Below If You
Want<BR>
# RTP for IPv4>IPv4 Calls To Go
Directly<BR>
# Between UAs</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial
size=2>
if (af ==
inet)<BR>
if
(force_rtp_proxy("FAII"))<BR>
t_on_reply("1");</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial
size=2>
# Proxy Session From An Internal
IPv4<BR>
# Phone To An External IPv6 Address</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial
size=2>
if (af ==
inet6)<BR>
if
(force_rtp_proxy("FAIE"))<BR>
t_on_reply("1");<BR>
} else if (lookup("location_inet6")) {</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial
size=2>
# Proxy Session From An External
IPv6<BR>
# Phone To An Internal IPv4 Address</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial
size=2>
if (af ==
inet)<BR>
if
(force_rtp_proxy(FAEI"))<BR>
t_on_reply("1");</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial
size=2>
# Comment Out Three Lines Below If You
Want<BR>
# RTP for IPv6>IPv6 Calls To Go
Directly<BR>
# Between UAs</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial
size=2>
if (af ==
inet6)<BR>
if
(force_rtp_proxy("FAEE"))<BR>
t_on_reply("1");<BR> } else
{<BR>
sl_send_reply("403", "Call Cannot Be Served
Here");<BR>
break;<BR> };<BR>
};</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> if (method == "BYE" || method ==
"CANCEL")<BR>
unforce_rtp_proxy();</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> #Do Strict Routing If Pre-Loaded
Route Headers Present<BR> if (loose_route())
{<BR> t_relay();<BR>
break;<BR> };</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> if (method ==
"INVITE")<BR> record_route();</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> if
(!t_relay())<BR> sl_reply_error();<BR>
}</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2> onreply_route[1]
{<BR> if (!(status=~"183" ||
status=~"200"))<BR>
break;<BR>
force_rtp_proxy("FA");<BR> }</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>>>> ser.cfg. ends here
>>></FONT></DIV></BODY></HTML>