Dear Friends,
This is fifth or tenth times writing to list but still no way :(
REGISTERED USERS (12345 and 54321 are ATAs, 201 is Analog FXO's Port 0)
[root@localhost ser]# serctl ul show Dumping all contacts may take long: are you sure you want to proceed? [Y|N] y ===Domain list=== ---Domain--- name : 'location' size : 512 table: 0xf50cb0f8 d_ll { n : 3 first: 0xf50cd108 last : 0xf50cd388 }
...Record(0xf50cd108)... domain: 'location' aor : '12345' ~~~Contact(0xf50cd168)~~~ domain : 'location' aor : '12345' Contact : 'sip:12345@192.168.1.200:5060' Expires : 33 q : Call-ID : '410D1B912D91111@192.168.1.200' CSeq : 7962 User-Agent: 'Unknown' received : '' State : CS_NEW Flags : 0 next : (nil) prev : (nil) ~~~/Contact~~~~ .../Record... ...Record(0xf50cd248)... domain: 'location' aor : '54321' ~~~Contact(0xf50cd2a8)~~~ domain : 'location' aor : '54321' Contact : 'sip:54321@192.168.1.201:5060' Expires : 34 q : Call-ID : '379D1B912DA1111@192.168.1.201' CSeq : 7955 User-Agent: 'Unknown' received : '' State : CS_NEW Flags : 0 next : (nil) prev : (nil) ~~~/Contact~~~~ .../Record... ...Record(0xf50cd388)... domain: 'location' aor : '201' ~~~Contact(0xf50cd3e8)~~~ domain : 'location' aor : '201' Contact : 'sip:201@192.168.1.35:5060' Expires : 37 q : Call-ID : 'c0a80123-13c4-3a570cf4-1f6-5973' CSeq : 184 User-Agent: 'Unknown' received : '' State : CS_NEW Flags : 0 next : (nil) prev : (nil) ~~~/Contact~~~~ .../Record...
---/Domain--- ---Domain--- name : 'aliases' size : 512 table: 0xf50c9068 d_ll { n : 0 first: (nil) last : (nil) } ---/Domain--- ===/Domain list===
(Basic SER.CFG , I want to it to route any 053XXXXXXXX Calls to 192.168.1.35 [Analog FXO Gateway] by adding 201 Prefix so it dials a Cellular. Nearly same thing worked for Brekeke's Ondo SIP Proxy but why id does not work in SER)
debug=3 fork=yes log_stderror=no
listen=192.168.1.10 # put your server IP address here port=5060 children=4
dns=no rev_dns=no fifo="/tmp/ser_fifo"
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"
modparam("usrloc", "db_mode", 0) modparam("rr", "enable_full_lr", 1)
route {
# ------------------------------------------------------------------------ # Sanity Check Section # ------------------------------------------------------------------------ if (!mf_process_maxfwd_header("12")) { sl_send_reply("483", "Too Many Hops"); break; };
if (msg:len > max_len) { sl_send_reply("513", "Message Overflow"); break; };
# ------------------------------------------------------------------------ # Record Route Section # ------------------------------------------------------------------------ if (method!="REGISTER") { record_route(); };
# ------------------------------------------------------------------------ # Loose Route Section # ------------------------------------------------------------------------ if (loose_route()) { route(1); break; };
# ------------------------------------------------------------------------ # Call Type Processing Section # ------------------------------------------------------------------------ if (uri!=myself) { route(1); break; };
if (uri==myself) {
if (method=="REGISTER") { route(2); break; };
lookup("aliases"); if (uri!=myself) { route(1); break; };
if (uri=~"^sip:053[0-9]*@.*") { prefix("201"); rewritehostport ("192.168.1.35:5060"); # forward ("192.168.1.35:5060"); # t_relay_to_udp("192.168.1.35","5060"); break; };
if (!lookup("location")) { sl_send_reply("404", "User Not Found"); break; };
route(1); }; }
route[1] { # ------------------------------------------------------------------------ # Default Message Handler # ------------------------------------------------------------------------ if (!t_relay()) { sl_reply_error(); }; }
route[2] { # ------------------------------------------------------------------------ # REGISTER Message Handler # ------------------------------------------------------------------------ if (!save("location")) { sl_reply_error(); }; }
SIPSAK RESULTS (Too Many Hops and User Not Found Errors)
[root@localhost ser]# sipsak -T -s sip:20105353490056@192.168.1.10 warning: IP extract from warning activated to be more informational 0: 192.168.1.10 (0.098 ms) SIP/2.0 483 Too Many Hops 1: 192.168.1.10 (0.244 ms) SIP/2.0 404 User Not Found without Contact header [root@localhost ser]# sipsak -T -s sip:12345@192.168.1.10 warning: IP extract from warning activated to be more informational 0: 192.168.1.10 (0.084 ms) SIP/2.0 483 Too Many Hops 1: ?? (13.000 ms) SIP/2.0 200 OK Contact: sip:12345@192.168.1.200:5060 [root@localhost ser]# sipsak -T -s sip:54321@192.168.1.10 warning: IP extract from warning activated to be more informational 0: 192.168.1.10 (0.079 ms) SIP/2.0 483 Too Many Hops 1: ?? (13.020 ms) SIP/2.0 200 OK Contact: sip:54321@192.168.1.201:5060 [root@localhost ser]#
On Jun 06, 2005 at 16:33, Ozan Blotter cosmocid@ispro.net.tr wrote:
Dear Friends,
This is fifth or tenth times writing to list but still no way :(
REGISTERED USERS (12345 and 54321 are ATAs, 201 is Analog FXO's Port 0)
[...]
It's normal to get too many hops when you are using sipsak's traceroute mode (sip traceroute is based on playing with the Max-Forwards value. A hop is detected when you get back a 483 from it.
[root@localhost ser]# sipsak -T -s sip:20105353490056@192.168.1.10 warning: IP extract from warning activated to be more informational 0: 192.168.1.10 (0.098 ms) SIP/2.0 483 Too Many Hops 1: 192.168.1.10 (0.244 ms) SIP/2.0 404 User Not Found
Here you get "User Not Found" because you handle only "^sip:053[0-9]*" and not also "^sip201053.*" (and 20105353490056 is not present in the location table).
Note also that in the following cfg fragment you just drop the matching requests (all the forwards are commented out, and the block ends with a break):
if (uri=~"^sip:053[0-9]*@.*") { prefix("201"); rewritehostport ("192.168.1.35:5060"); # forward ("192.168.1.35:5060"); # t_relay_to_udp("192.168.1.35","5060"); break; };
Andrei