Hi,
I have migrated my SER proxy from Linux servers to Sun Solaris 10 (sparc
64 bit). Same SER version (0.9.3) and config file work perfectly fine
under Linux and now its crashing. Every time SER needs to fork of a new
branch (append_branch();) it core dumps.
any idea why this would be happening?
thanks
fil
here is the portion of ser.cfg which is crashing:
failure_route[4]
{
log (1, "**************** FAILURE_ROUTE[4] CALLING VOICEMAIL\n");
# forward to voicemail now
if (isflagset(4)){
rewritehostport("192.168.0.5:5060");
append_branch();
route(1);
};
}
here is the the SER startup with debuging set:
0(17715) failure routing table 4:
0(17715) log( 0(17715) 1 0(17715) , "**************** FAILURE_ROUTE[4]
CALLING VOICEMAIL
" 0(17715) ); 0(17715) if ( 0(17715) isflagset( 0(17715) 4 0(17715) );
0(17715) isflagset( 0(17715) 4 0(17715) ); 0(17715) ) { 0(17715)
sethostport( 0(17715) "192.168.0.5:5060" 0(17715) ); 0(17715)
append_branch( 0(17715) Segmentation fault
here is the output of gdb run:
gdb -c /var/core/core.ser.17722 /usr/local/sbin/ser
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "sparc-sun-solaris2.10"...
Core was generated by `ser'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/sparcv9/libdl.so.1...
warning: Lowest section in /lib/sparcv9/libdl.so.1 is .dynamic at
00000000000000e8
done.
Loaded symbols for /lib/sparcv9/libdl.so.1
Reading symbols from /lib/sparcv9/libresolv.so.2...done.
Loaded symbols for /lib/sparcv9/libresolv.so.2
Reading symbols from /lib/sparcv9/libxnet.so.1...done.
Loaded symbols for /lib/sparcv9/libxnet.so.1
Reading symbols from /lib/sparcv9/libnsl.so.1...done.
Loaded symbols for /lib/sparcv9/libnsl.so.1
Reading symbols from /lib/sparcv9/librt.so.1...done.
Loaded symbols for /lib/sparcv9/librt.so.1
Reading symbols from /lib/sparcv9/libc.so.1...done.
Loaded symbols for /lib/sparcv9/libc.so.1
Reading symbols from /lib/sparcv9/libsocket.so.1...done.
Loaded symbols for /lib/sparcv9/libsocket.so.1
Reading symbols from /lib/sparcv9/libaio.so.1...done.
Loaded symbols for /lib/sparcv9/libaio.so.1
Reading symbols from /lib/sparcv9/libmd5.so.1...done.
Loaded symbols for /lib/sparcv9/libmd5.so.1
Reading symbols from
/platform/SUNW,UltraAX-i2/lib/sparcv9/libc_psr.so.1...done.
Loaded symbols for /platform/SUNW,UltraAX-i2/lib/sparcv9/libc_psr.so.1
Reading symbols from /usr/local/lib/ser/modules/mysql.so...done.
Loaded symbols for /usr/local/lib/ser/modules/mysql.so
Reading symbols from /usr/local/mysql/lib/mysql/libmysqlclient.so.12...done.
Loaded symbols for /usr/local/mysql/lib/mysql/libmysqlclient.so.12
Reading symbols from /usr/local/lib/libz.so...done.
Loaded symbols for /usr/local/lib/libz.so
Reading symbols from /usr/lib/sparcv9/libcrypt_i.so.1...done.
Loaded symbols for /usr/lib/sparcv9/libcrypt_i.so.1
Reading symbols from /lib/sparcv9/libgen.so.1...done.
Loaded symbols for /lib/sparcv9/libgen.so.1
Reading symbols from /lib/sparcv9/libm.so.2...done.
Loaded symbols for /lib/sparcv9/libm.so.2
Reading symbols from /usr/local/gcc/lib/sparcv9/libgcc_s.so.1...done.
Loaded symbols for /usr/local/gcc/lib/sparcv9/libgcc_s.so.1
Reading symbols from /lib/sparcv9/libscf.so.1...done.
Loaded symbols for /lib/sparcv9/libscf.so.1
Reading symbols from /lib/sparcv9/libdoor.so.1...done.
Loaded symbols for /lib/sparcv9/libdoor.so.1
Reading symbols from /lib/sparcv9/libuutil.so.1...done.
Loaded symbols for /lib/sparcv9/libuutil.so.1
Reading symbols from /lib/sparcv9/libmp.so.2...done.
Loaded symbols for /lib/sparcv9/libmp.so.2
Reading symbols from
/platform/SUNW,UltraAX-i2/lib/sparcv9/libmd5_psr.so.1...done.
Loaded symbols for /platform/SUNW,UltraAX-i2/lib/sparcv9/libmd5_psr.so.1
Reading symbols from /usr/local/lib/ser/modules/sl.so...done.
Loaded symbols for /usr/local/lib/ser/modules/sl.so
Reading symbols from /usr/local/lib/ser/modules/tm.so...done.
Loaded symbols for /usr/local/lib/ser/modules/tm.so
Reading symbols from /usr/local/lib/ser/modules/rr.so...done.
Loaded symbols for /usr/local/lib/ser/modules/rr.so
Reading symbols from /usr/local/lib/ser/modules/maxfwd.so...done.
Loaded symbols for /usr/local/lib/ser/modules/maxfwd.so
Reading symbols from /usr/local/lib/ser/modules/usrloc.so...done.
Loaded symbols for /usr/local/lib/ser/modules/usrloc.so
Reading symbols from /usr/local/lib/ser/modules/registrar.so...done.
Loaded symbols for /usr/local/lib/ser/modules/registrar.so
Reading symbols from /usr/local/lib/ser/modules/auth.so...done.
Loaded symbols for /usr/local/lib/ser/modules/auth.so
Reading symbols from /usr/local/lib/ser/modules/auth_db.so...done.
Loaded symbols for /usr/local/lib/ser/modules/auth_db.so
Reading symbols from /usr/local/lib/ser/modules/acc.so...done.
Loaded symbols for /usr/local/lib/ser/modules/acc.so
Reading symbols from /usr/local/lib/ser/modules/exec.so...done.
Loaded symbols for /usr/local/lib/ser/modules/exec.so
Reading symbols from /usr/local/lib/ser/modules/group.so...done.
Loaded symbols for /usr/local/lib/ser/modules/group.so
Reading symbols from /usr/local/lib/ser/modules/print.so...done.
Loaded symbols for /usr/local/lib/ser/modules/print.so
Reading symbols from /usr/local/lib/ser/modules/textops.so...done.
Loaded symbols for /usr/local/lib/ser/modules/textops.so
Reading symbols from /usr/local/lib/ser/modules/uri.so...done.
Loaded symbols for /usr/local/lib/ser/modules/uri.so
Reading symbols from /usr/local/lib/ser/modules/uri_db.so...done.
Loaded symbols for /usr/local/lib/ser/modules/uri_db.so
Reading symbols from /usr/local/lib/ser/modules/mediaproxy.so...done.
Loaded symbols for /usr/local/lib/ser/modules/mediaproxy.so
Reading symbols from /usr/local/lib/ser/modules/domain.so...done.
Loaded symbols for /usr/local/lib/ser/modules/domain.so
#0 0xffffffff7e8371f0 in strlen () from /lib/sparcv9/libc.so.1
(gdb) backtrace
#0 0xffffffff7e8371f0 in strlen () from /lib/sparcv9/libc.so.1
#1 0xffffffff7e89f968 in _ndoprnt () from /lib/sparcv9/libc.so.1
#2 0xffffffff7e8a1e40 in vfprintf () from /lib/sparcv9/libc.so.1
#3 0x000000010000e4b8 in dprint (format=0x1000a6140 "\"%s\"") at
dprint.c:66
#4 0x000000010003d0c8 in print_action (a=0x100210380) at route_struct.c:378
#5 0x000000010003d5c8 in print_action (a=0x100210420) at route_struct.c:392
#6 0x000000010003b9f4 in print_rl () at route.c:782
#7 0x000000010001f804 in main (argc=1822720, argv=0xffffffff7ffff2a8)
at main.c:1418
(gdb)
Hi guys, I have a doubt. Is it possible to use radius related modules
with out using db related modules at all?
Which are going to be the side effects If I don't use db modules?
For example I tried to load mediaproxy module and it is claiming for
commands like "is_uri_host_local()" or "is_from_local()" in order to be
load it but these commands are only available if I load the db modules.
Who can help me to clarify the relationship between radius modules,
mediaproxy module and db modules?
Regards
Alberto Cruz
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Saudações,
Conforme solicitei, o Fernando da Telenova me mandou os CDR's das ligações que efetuamos.
1a coisa que observei, fizemos mais ligações do que ele me enviou.
No geral, somente uma ligação teve o tempo de duração menor no nosso sistema do que no deles (10 segundos), no restante
a ligação tem tempo maior no nosso sistema (normal).
Abraço, sem mais.
- --
============================================
Rodrigo P. Telles <telles(a)devel.it>
Diretor de Tecnologia
Devel-IT - http://www.devel.it
IVOZ # 1029
+55 14 3324-1200
Grupo Bestcom
============================================
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFCrvxbiLK8unYgEMQRAjukAJ9kDpyAgDKUZafhozsrNlYvErpSpgCaA2Hg
SgXkUDFp/l8lmJsKGWQ1NwY=
=1YlC
-----END PGP SIGNATURE-----
Hi all,
Does anyone know how to modify from a Cisco As5300 or 5350 the screening
indicator parameter ? (its value is 1 and I would like to change it with
3-Network Provided).
Thanks
--
Using Opera's revolutionary e-mail client: http://www.opera.com/m2/
Hi,
I would like to ask a small question about serweb : how can I use it to
add new users ? I've done some research on the ml archive but didn't
find clear information about that (some people where talking about
sending an email but I'm not really sure).
Thanks in advance.
Hi all,
I would like to use ser_fifo to register a user; I think the :ul_add:
command is the clue, but I don't how to use the fifo to do this.
My aim is to do the following:
I have a Voip gateway on a customer with a lot of phone number (700) and I
would like to authenticate each number. Unfortunately I have to add a small
amount of configuration on the voip gateway each time I add a number (uri),
moreover I'm not sure this gateway will work with so many numbers, and the
bandwidth needed to register each number every 5 minutes will be wasted.
The idea is to challenge only one time the gateway and then in ser.cfg if
the challenge succeeds I execute a script to register by bulk all the
numbers enclosed in a file on the proxy. To do this I have to pass arguments
to the fifo using the :ul_add: command, but this is where I'm stuck.
I've done this:
echo :ul_add:receiving_fifo > /tmp/ser_fifo
echo location > /tmp/ser_fifo
echo 100 > /tmp/ser_fifo
echo <sip:100@10.1.1.1:5060> > /tmp/ser_fifo
echo 300 > /tmp/ser_fifo
echo 0 > /tmp/ser_fifo
echo 2 > /tmp/ser_fifo
but it does not work, I think this is due to the receiving_fifo, I have to
do something with it to process the response of SER, but what ??
I know I can use the following command to workaround the pbm:
Serctl fifo ul_add location ...
But it requires one process each time I register a number, and it takes 1
minute on a Celeron 700 for 500 numbers (30 % CPU), and I think using the
fifo is a more suitable solution (less CPU consuming).
Thanks for your support,
Rodrigue
PS: I would like to register every 5minutes,cause the customer gateway is
able to redirect to PSTN in case of failure.
i am using kernel-2.6.9-1.667
>hello
>
>i have some problems i am using ser-0.9.0 with
>radiusclient-ng. but unable to compile radius
modules.
>and when i am trying to start ser. and unable to stop
>ser. or even i cannot kill ser. any comments
>
>
>
>[root@voice ser-0.9.0]# serctl moni
>Error opening ser's FIFO /tmp/ser_fifo
>Make sure you have line fifo=/tmp/ser_fifo in your
>config
>-----------------------------------------------------
>#ser.cfg
>dns=no
>rev_dns=no
>fifo="/tmp/ser_fifo"
>
>loadmodule "/usr/local/lib/ser/modules/mysql.so"
>loadmodule "/usr/local/lib/ser/modules/sl.so"
>loadmodule "/usr/local/lib/ser/modules/tm.so"
>loadmodule "/usr/local/lib/ser/modules/rr.so"
>loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
>loadmodule "/usr/local/lib/ser/modules/usrloc.so"
>loadmodule "/usr/local/lib/ser/modules/registrar.so"
>loadmodule "/usr/local/lib/ser/modules/xlog.so"
>
>loadmodule "/usr/local/lib/ser/modules/auth.so"
>
>loadmodule "/usr/local/lib/ser/modules/exec.so"
>
>loadmodule "/usr/local/lib/ser/modules/uri.so"
>loadmodule "/usr/local/lib/ser/modules/nathelper.so"
>loadmodule "/usr/local/lib/ser/modules/textops.so"
>loadmodule "/usr/local/lib/ser/modules/auth_db.so"
>
>modparam("nathelper", "natping_interval", 30)
>modparam("nathelper", "ping_nated_only", 1)
>modparam("nathelper",
>"rtpproxy_sock","unix:/var/run/rtpproxy.sock")
>modparam("usrloc", "db_mode", 0)
>modparam("registrar", "nat_flag", 6)
>modparam("rr", "enable_full_lr", 1)
>modparam("nathelper", "natping_interval", 15)
>modparam("nathelper", "ping_nated_only", 1)
>-----------------------------------------------------
>
>make_and_install_output.txt
>
>make[1]: Entering directory
>`/ser-0.9.0/modules/auth_radius'
>../../Makefile.rules:77: authorize.d: No such file or
>directory
>../../Makefile.rules:77: authrad_mod.d: No such file
>or directory
>../../Makefile.rules:77: sterman.d: No such file or
>directory
>make[1]: Leaving directory
>`/ser-0.9.0/modules/auth_radius'
>make[1]: Entering directory
>`/ser-0.9.0/modules/auth_radius'
>gcc -fPIC -DPIC -g -O9 -funroll-loops -Wcast-align
>-Wall -minline-all-stringops -malign-double
>-falign-loops -mtune=athlon
>-I/opt/axxany/siprouter/radiusclient/include
>-DNAME='"ser"' -DVERSION='"0.9.1"' -DARCH='"i386"'
>-DOS='"linux"' -DCOMPILER='"gcc 3.4"' -D__CPU_i386
>-D__OS_linux -DCFG_DIR='"/usr/local/etc/ser/"'
>-DPKG_MALLOC -DSHM_MEM -DSHM_MMAP -DDNS_IP_HACK
>-DUSE_IPV6 -DUSE_MCAST -DUSE_TCP -DDISABLE_NAGLE
>-DDBG_QM_MALLOC -DFAST_LOCK -DADAPTIVE_WAIT
>-DADAPTIVE_WAIT_LOOPS=1024 -DHAVE_GETHOSTBYNAME2
>-DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD
>-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL
>-DHAVE_ALLOCA_H -I/usr/local/include -c authorize.c
-o
>authorize.o
>gcc -fPIC -DPIC -g -O9 -funroll-loops -Wcast-align
>-Wall -minline-all-stringops -malign-double
>-falign-loops -mtune=athlon
>-I/opt/axxany/siprouter/radiusclient/include
>-DNAME='"ser"' -DVERSION='"0.9.1"' -DARCH='"i386"'
>-DOS='"linux"' -DCOMPILER='"gcc 3.4"' -D__CPU_i386
>-D__OS_linux -DCFG_DIR='"/usr/local/etc/ser/"'
>-DPKG_MALLOC -DSHM_MEM -DSHM_MMAP -DDNS_IP_HACK
>-DUSE_IPV6 -DUSE_MCAST -DUSE_TCP -DDISABLE_NAGLE
>-DDBG_QM_MALLOC -DFAST_LOCK -DADAPTIVE_WAIT
>-DADAPTIVE_WAIT_LOOPS=1024 -DHAVE_GETHOSTBYNAME2
>-DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD
>-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL
>-DHAVE_ALLOCA_H -I/usr/local/include -c authrad_mod.c
>-o authrad_mod.o
>authrad_mod.c: In function `mod_init':
>authrad_mod.c:110: error: `DICT_VENDOR' undeclared
>(first use in this function)
>authrad_mod.c:110: error: (Each undeclared identifier
>is reported only once
>authrad_mod.c:110: error: for each function it
appears
>in.)
>authrad_mod.c:110: error: `vend' undeclared (first
use
>in this function)
>authrad_mod.c:134: warning: assignment makes pointer
>from integer without a cast
>authrad_mod.c:139: error: too many arguments to
>function `rc_conf_str'
>authrad_mod.c:139: error: too many arguments to
>function `rc_read_dictionary'
>authrad_mod.c:144: warning: implicit declaration of
>function `rc_dict_findvend'
>authrad_mod.c:159: error: too many arguments to
>function `rc_dict_findattr'
>authrad_mod.c:159: error: too many arguments to
>function `rc_dict_findval'
>make[1]: *** [authrad_mod.o] Error 1
>make[1]: Leaving directory
>`/ser-0.9.0/modules/auth_radius'
>
>
>
>make[1]: Entering directory
>`/ser-0.9.0/modules/group_radius'
>../../Makefile.rules:77: group.d: No such file or
>directory
>../../Makefile.rules:77: grouprad_mod.d: No such file
>or directory
>make[1]: Leaving directory
>`/ser-0.9.0/modules/group_radius'
>make[1]: Entering directory
>`/ser-0.9.0/modules/group_radius'
>gcc -fPIC -DPIC -g -O9 -funroll-loops -Wcast-align
>-Wall -minline-all-stringops -malign-double
>-falign-loops -mtune=athlon
>-I/opt/axxany/siprouter/radiusclient/include
>-DNAME='"ser"' -DVERSION='"0.9.1"' -DARCH='"i386"'
>-DOS='"linux"' -DCOMPILER='"gcc 3.4"' -D__CPU_i386
>-D__OS_linux -DCFG_DIR='"/usr/local/etc/ser/"'
>-DPKG_MALLOC -DSHM_MEM -DSHM_MMAP -DDNS_IP_HACK
>-DUSE_IPV6 -DUSE_MCAST -DUSE_TCP -DDISABLE_NAGLE
>-DDBG_QM_MALLOC -DFAST_LOCK -DADAPTIVE_WAIT
>-DADAPTIVE_WAIT_LOOPS=1024 -DHAVE_GETHOSTBYNAME2
>-DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD
>-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL
>-DHAVE_ALLOCA_H -I/usr/local/include -c group.c -o
>group.o
>group.c: In function `radius_is_user_in':
>group.c:194: warning: passing arg 2 of
`rc_avpair_add'
>makes integer from pointer without a cast
>group.c:194: warning: passing arg 3 of
`rc_avpair_add'
>makes pointer from integer without a cast
>group.c:194: warning: passing arg 4 of
`rc_avpair_add'
>makes integer from pointer without a cast
>group.c:194: error: too many arguments to function
>`rc_avpair_add'
>group.c:203: warning: passing arg 2 of
`rc_avpair_add'
>makes integer from pointer without a cast
>group.c:203: warning: passing arg 3 of
`rc_avpair_add'
>makes pointer from integer without a cast
>group.c:203: warning: passing arg 4 of
`rc_avpair_add'
>makes integer from pointer without a cast
>group.c:203: error: too many arguments to function
>`rc_avpair_add'
>group.c:209: warning: passing arg 2 of
`rc_avpair_add'
>makes integer from pointer without a cast
>group.c:209: warning: passing arg 3 of
`rc_avpair_add'
>makes pointer from integer without a cast
>group.c:209: warning: passing arg 4 of
`rc_avpair_add'
>makes integer from pointer without a cast
>group.c:209: error: too many arguments to function
>`rc_avpair_add'
>group.c:215: warning: passing arg 1 of `rc_auth'
makes
>integer from pointer without a cast>group.c:215:
warning: passing arg 3 of `rc_auth' from
>incompatible pointer type
>group.c:215: warning: passing arg 4 of `rc_auth' from
>incompatible pointer type
>group.c:215: error: too many arguments to function
>`rc_auth'
>make[1]: *** [group.o] Error 1
>make[1]: Leaving directory
>`/ser-0.9.0/modules/group_radius'
__________________________________
Discover Yahoo!
Find restaurants, movies, travel and more fun for the weekend. Check it out!
http://discover.yahoo.com/weekend.html
hi,
i read in pa module that it cannot subsribe to presence of users using SIP,
so how can i do to manage the presence of my contact list
i added pa module to SER and a had this errors in response to a SUBSCRIBE request
parse_hfs(): Error while parsing headers
handle_subscription(): Error while parsing message header
please i need help
regards
I'm using 'subst' in multiline mode - basically using it to rewrite a
'Refer-To' header based on the contents of the 'Contact' header.
However, if I do that, it looks like all the default processing that
occurs on the message (specifically, the addition of a 'Via' header),
gets tacked on to the end of the message. It almost looks like all the
changes that were made to the message end up in a buffer that gets
appended to the end of the message, and *not* as part of the message.
In the example below, I just used the following to generate the error
condition
subst('/(.*)5100(.*)/\15100aptela\2/si');
And yes, I know that the above doesnt need the 's' flag. Its just that
i've distilled my ridiculously complex 'subst' expressiond down to the
above really simple expression which still causes the error below.
So, the question is, is this actually supposed to work? Anyone ever
actually tried this out?
e.g.
incoming packet is (note that th "Refer-To" line sez 'sip:5100@...'.
This will get changed to sip:5100aptela@...
REFER sip:7732206484@66.23.129.219:5090 SIP/2.0.
f: <sip:operator.aptela@voice.aptela.com>;tag=7f1ca8c0-13c442ad79d2.
t: "7732206484"<sip:7732206484@66.23.129.219:5090>;tag=as10a69cf8.
Call-ID: 6bfbb1d627b2c0366bb2be7206177cea(a)66.23.129.219.
CSeq: 2 REFER.
Via: SIP/2.0/UDP
192.168.28.127:5060;rport;branch=z9hG4bK-42ad79d6-1750412-5e02.
Max-Forwards: 70.
Supported: 100rel,replaces.
Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE.
User-Agent: SIP Phone-1.0.41 - ABP.
Contact: <sip:operator.aptela@64.81.147.138:33049>.
Route: <sip:69.25.47.134;lr;ftag=as10a69cf8>.
Referred-By: <sip:operator.aptela@voice.aptela.com>.
Refer-To: <sip:5100@voice.aptela.com>.
Content-Length: 0.
.
outgoing packet *should* be (note the Refer-To line now
REFER sip:7732206484@66.23.129.219:5090 SIP/2.0.
Record-Route: <sip:69.25.47.134;ftag=7f1ca8c0-13c442ad79d2;lr=on>.
f: <sip:operator.aptela@voice.aptela.com>;tag=7f1ca8c0-13c442ad79d2.
t: "7732206484"<sip:7732206484@66.23.129.219:5090>;tag=as10a69cf8.
Call-ID: 6bfbb1d627b2c0366bb2be7206177cea(a)66.23.129.219.
CSeq: 2 REFER.
Via: SIP/2.0/UDP 69.25.47.134;branch=z9hG4bKfd4a.00e82c93.0.
Via: SIP/2.0/UDP
192.168.28.127:5060;received=64.81.147.138;rport=33049;branch=z9hG4bK-42ad79d6-1750412-5e02.
Max-Forwards: 16.
Supported: 100rel,replaces.
Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE.
User-Agent: SIP Phone-1.0.41 - ABP.
Contact: <sip:operator.aptela@64.81.147.138:33049>.
Route: <sip:69.25.47.134;lr;ftag=as10a69cf8>.
Referred-By: <sip:operator.aptela@voice.aptela.com>.
Refer-To: <sip:5100aptela@voice.aptela.com>.
Content-Length: 0.
but, instead, is
REFER sip:7732206484@66.23.129.219:5090 SIP/2.0.
Record-Route: <sip:69.25.47.134;ftag=7f1ca8c0-13c442ad79d2;lr=on>.
f: <sip:operator.aptela@voice.aptela.com>;tag=7f1ca8c0-13c442ad79d2.
t: "7732206484"<sip:7732206484@66.23.129.219:5090>;tag=as10a69cf8.
Call-ID: 6bfbb1d627b2c0366bb2be7206177cea(a)66.23.129.219.
CSeq: 2 REFER.
Via: SIP/2.0/UDP
192.168.28.127:5060;rport;branch=z9hG4bK-42ad79d6-1750412-5e02.
Max-Forwards: 16.
Supported: 100rel,replaces.
Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE.
User-Agent: SIP Phone-1.0.41 - ABP.
Contact: <sip:operator.aptela@64.81.147.138:33049>.
Route: <sip:69.25.47.134;lr;ftag=as10a69cf8>.
Referred-By: <sip:operator.aptela@voice.aptela.com>.
Refer-To: <sip:5100aptela@voice.aptela.com>.
Content-Length: 0.
.
Via: SIP/2.0/UDP 69.25.47.134;branch=z9hG4bKfd4a.00e82c93.0.
;received=64.81.147.138;rport=33049
note the two lines at the bottom of the message. These are the
additional lines that got changed in the message as it was processed.
Hi again!
I used the nathelper.cfg from the cvs to use ser as an outbound proxy
with rtpproxy. I commented out some parts which I thought I would not
be needing. rtpproxy is working fine as well as ser. I placed my
outbound proxy with a public ip and two ipphones behind nat. The
phones were able to register, however whenever I call one using the
other ipphone, my request timeouts and I get a busy signal. However,
when i place one ipphone to the public and the other still behind nat.
I was able to recieve a ring, calling from the nated to the public.
And when both phones are in public, thus bypassing the outbond proxy,
my calls go perfectly through. When i checked the dumps at the
outbound proxy, it seems the soft switch does not return an "ok signal
" or anything at all after recieving an invite with authentication,
that is whenever using an OP. Are these symptoms familiar to anybody
here? Any help would be most welcome. Btw I posted my ser.cfg file
here just in case.
#
# $Id: nathelper.cfg,v 1.1 2003/11/10 14:15:36 janakj Exp $
#
# simple quick-start config script including nathelper support
# This default script includes nathelper support. To make it work
# you will also have to install Maxim's RTP proxy. The proxy is enforced
# if one of the parties is behind a NAT.
#
# If you have an endpoing in the public internet which is known to
# support symmetric RTP (Cisco PSTN gateway or voicemail, for example),
# then you don't have to force RTP proxy. If you don't want to enforce
# RTP proxy for some destinations than simply use t_relay() instead of
# route(1)
#
# Sections marked with !! Nathelper contain modifications for nathelper
#
# NOTE !! This config is EXPERIMENTAL !
#
# ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (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=4
fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
#loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "/usr/local/lib/ser/modules/auth.so"
#loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# !! Nathelper
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
#modparam("usrloc", "db_mode", 2)
# -- auth params --
# Uncomment if you are using auth module
#
#modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this config),
# uncomment also the following parameter)
#
#modparam("auth_db", "password_column", "password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# !! Nathelper
modparam("registrar", "nat_flag", 6)
modparam("nathelper", "natping_interval", 30) # Ping interval 30 s
modparam("nathelper", "ping_nated_only", 1) # Ping only clients behind NAT
# ------------------------- request routing logic -------------------
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
break;
};
if (msg:len >= max_len ) {
sl_send_reply("513", "Message too big");
break;
};
# !! Nathelper
# Special handling for NATed clients; first, NAT test is
# executed: it looks for via!=received and RFC1918 addresses
# in Contact (may fail if line-folding is used); also,
# the received test should, if completed, should check all
# vias for rpesence of received
if (nat_uac_test("3")) {
# Allow RR-ed requests, as these may indicate that
# a NAT-enabled proxy takes care of it; unless it is
# a REGISTER
if (method == "REGISTER" || ! search("^Record-Route:")) {
log("LOG: Someone trying to register from private IP, rewriting\n");
# This will work only for user agents that support symmetric
# communication. We tested quite many of them and majority is
# smart enough to be symmetric. In some phones it takes a configuration
# option. With Cisco 7960, it is called NAT_Enable=Yes, with kphone it is
# called "symmetric media" and "symmetric signalling".
fix_nated_contact(); # Rewrite contact with source IP of signalling
if (method == "INVITE") {
fix_nated_sdp("1"); # Add direction=active to SDP
};
force_rport(); # Add rport parameter to topmost Via
setflag(6); # Mark as NATed
};
};
# we record-route all messages -- to make sure that
# subsequent messages will go through our proxy; that's
# particularly good if upstream and downstream entities
# use different transport protocol
if (!method=="REGISTER") record_route();
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
# mark routing logic in request
append_hf("P-hint: rr-enforced\r\n");
route(1);
break;
};
if (!uri==myself) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
route(1);
break;
};
# if the request is for other domain use UsrLoc
# (in case, it does not work, use the following command
# with proper names and addresses in it)
if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
# if (!www_authorize("iptel.org", "subscriber")) {
# www_challenge("iptel.org", "0");
# break;
# };
save("location");
break;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
append_hf("P-hint: usrloc applied\r\n");
route(1);
}
route[1]
{
# !! Nathelper
if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
!search("^Route:")){
sl_send_reply("479", "We don't forward to private IP addresses");
break;
};
# if client or server know to be behind a NAT, enable relay
if (isflagset(6)) {
force_rtp_proxy();
};
# NAT processing of replies; apply to all transactions (for example,
# re-INVITEs from public to private UA are hard to identify as
# NATed at the moment of request processing); look at replies
t_on_reply("1");
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
}
# !! Nathelper
onreply_route[1] {
# NATed transaction ?
if (isflagset(6) && status =~ "(183)|2[0-9][0-9]") {
fix_nated_contact();
force_rtp_proxy();
# otherwise, is it a transaction behind a NAT and we did not
# know at time of request processing ? (RFC1918 contacts)
} else if (nat_uac_test("1")) {
fix_nated_contact();
};
}