Dear sirs,
I have a AS5300 setup as PSTN and it works fine to place from PSTN to SIP gateway in IP network. Now I want to place calls to PSTN with prefix '2' and the prefix should be striped before forward to PSTN, but I always get "404 not found" from SER server. Could anyone help me to debug my setting on ser.cfg? I attached my ser.cfg file as below:
# # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $ # # simple quick-start config script #
# ----------- 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 debug=7 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/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/lib/ser/modules/auth.so" loadmodule "/usr/lib/ser/modules/auth_db.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)
# ------------------------- 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; };
# 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 record_route(); # loose-route processing if (loose_route()) { t_relay(); 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; };
# native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; };
#handle PSTN calls if (uri=~ "^sip:2"){ log(1,"Forwarding to PSTN/n"); strip(1); rewritehostport("220.XX.XX.XX:5060"); if (!t_relay()) { sl_reply_error(); break; }; };
# forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP if (!t_relay()) { sl_reply_error(); };
}
I also try t_relay_to_udp() and forward(), but both can't help to forward call to PSTN gateway.
Regards, Wayne
hi chen,
Here is how i do it:
# Route to PSTN Gateways(s) if (uri=~"^sip:9[0-9]*@XX.XX.XX.XX") { ## This assumes that the caller is log("Forwarding to PSTN\n"); ## registered in our realm strip(1); rewritehostport("PSTN-GATEWAY-IP:5060"); forward(uri:host, uri:port); break; };
On Jan 4, 2005, at 10:27 AM, Wayne Chen wrote:
Dear sirs,
I have a AS5300 setup as PSTN and it works fine to place from PSTN to SIP gateway in IP network. Now I want to place calls to PSTN with prefix '2' and the prefix should be striped before forward to PSTN, but I always get "404 not found" from SER server. Could anyone help me to debug my setting on ser.cfg? I attached my ser.cfg file as below:
# # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $ # # simple quick-start config script #
# ----------- 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 debug=7 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/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/lib/ser/modules/auth.so" loadmodule "/usr/lib/ser/modules/auth_db.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)
# ------------------------- 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; }; # 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 record_route(); # loose-route processing if (loose_route()) { t_relay(); 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; }; # native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; }; #handle PSTN calls if (uri=~ "^sip:2"){ log(1,"Forwarding to PSTN/n"); strip(1); rewritehostport("220.XX.XX.XX:5060"); if (!t_relay()) { sl_reply_error(); break; }; }; # forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP if (!t_relay()) { sl_reply_error(); };
}
I also try t_relay_to_udp() and forward(), but both can't help to forward call to PSTN gateway.
Regards, Wayne
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Srbo Cvetkovic | CityNet, Inc. srbo@city-net.com | Pittsburgh, PA voice: 412.481.5406 | fax: 412.431.1315
Thanks for quick response from Srbislav. I tried the same method, but still got "404 not found". It looks that the call meet the "if (!lookup("location"))" condition.
Does the placement of IF condition matter?
Thanks & Regards, Wayne
On 1/4/2005 11:35 PM, "Srbislav Cvetkovic" srbislav@city-net.com wrote:
hi chen,
Here is how i do it:
# Route to PSTN Gateways(s) if (uri=~"^sip:9[0-9]*@XX.XX.XX.XX") { ## This assumes that the caller is log("Forwarding to PSTN\n"); ## registered in our realm strip(1); rewritehostport("PSTN-GATEWAY-IP:5060"); forward(uri:host, uri:port); break; };
On Jan 4, 2005, at 10:27 AM, Wayne Chen wrote:
Dear sirs,
I have a AS5300 setup as PSTN and it works fine to place from PSTN to SIP gateway in IP network. Now I want to place calls to PSTN with prefix '2' and the prefix should be striped before forward to PSTN, but I always get "404 not found" from SER server. Could anyone help me to debug my setting on ser.cfg? I attached my ser.cfg file as below:
# # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $ # # simple quick-start config script #
# ----------- 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 debug=7 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/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/lib/ser/modules/auth.so" loadmodule "/usr/lib/ser/modules/auth_db.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)
# ------------------------- 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; }; # 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 record_route(); # loose-route processing if (loose_route()) { t_relay(); 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; }; # native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; }; #handle PSTN calls if (uri=~ "^sip:2"){ log(1,"Forwarding to PSTN/n"); strip(1); rewritehostport("220.XX.XX.XX:5060"); if (!t_relay()) { sl_reply_error(); break; }; }; # forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP if (!t_relay()) { sl_reply_error(); };
}
I also try t_relay_to_udp() and forward(), but both can't help to forward call to PSTN gateway.
Regards, Wayne
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Srbo Cvetkovic | CityNet, Inc. srbo@city-net.com | Pittsburgh, PA voice: 412.481.5406 | fax: 412.431.1315
change the whole block with if(!lookup("location")).. to something like this:
if(!lookup("location")){ if(uri =~"sip:2"){ route[..] break; }else{ sl_send_reply("404","Ha. not found"); break; }; };
The reason to do this, is with your if(!lookup.. you dont get down to the next ifsentence you have. so it will never hit it.
-Atle
* Wayne Chen wayne.chen16@msa.hinet.net [050105 05:03]:
Thanks for quick response from Srbislav. I tried the same method, but still got "404 not found". It looks that the call meet the "if (!lookup("location"))" condition.
Does the placement of IF condition matter?
Thanks & Regards, Wayne
On 1/4/2005 11:35 PM, "Srbislav Cvetkovic" srbislav@city-net.com wrote:
hi chen,
Here is how i do it:
# Route to PSTN Gateways(s) if (uri=~"^sip:9[0-9]*@XX.XX.XX.XX") { ## This assumes that the caller is log("Forwarding to PSTN\n"); ## registered in our realm strip(1); rewritehostport("PSTN-GATEWAY-IP:5060"); forward(uri:host, uri:port); break; };
On Jan 4, 2005, at 10:27 AM, Wayne Chen wrote:
Dear sirs,
I have a AS5300 setup as PSTN and it works fine to place from PSTN to SIP gateway in IP network. Now I want to place calls to PSTN with prefix '2' and the prefix should be striped before forward to PSTN, but I always get "404 not found" from SER server. Could anyone help me to debug my setting on ser.cfg? I attached my ser.cfg file as below:
# # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $ # # simple quick-start config script #
# ----------- 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 debug=7 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/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/lib/ser/modules/auth.so" loadmodule "/usr/lib/ser/modules/auth_db.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)
# ------------------------- 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; }; # 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 record_route(); # loose-route processing if (loose_route()) { t_relay(); 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; }; # native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; }; #handle PSTN calls if (uri=~ "^sip:2"){ log(1,"Forwarding to PSTN/n"); strip(1); rewritehostport("220.XX.XX.XX:5060"); if (!t_relay()) { sl_reply_error(); break; }; }; # forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP if (!t_relay()) { sl_reply_error(); };
}
I also try t_relay_to_udp() and forward(), but both can't help to forward call to PSTN gateway.
Regards, Wayne
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Srbo Cvetkovic | CityNet, Inc. srbo@city-net.com | Pittsburgh, PA voice: 412.481.5406 | fax: 412.431.1315
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Hi, sir,
I reconfigure the ser.cfg as below:
if (!lookup("location")) { if(uri =~"sip:2"){ log(1,"Forwarding to PSTN\n"); strip(1); rewritehostport("220.130.48.254:5060"); t_relay_to_udp("220.130.48.245","5060"); forward(uri:host,uri:port); break; }else{ sl_send_reply("404", "Not Found"); log(1,"404 Not found\n"); break; }; };
The call looks get down to the if sentence, because I can see the "Forwarding to PSTN" show on log. However, the still cannot be establish. I still heard busy tone. Still some things wrong on my ser.cfg?
Following is the running-config of my AS5300 PSTN gateway:
Current configuration : 2553 bytes ! version 12.2 no service pad service timestamps debug datetime msec localtime service timestamps log datetime msec localtime no service password-encryption ! hostname AS5300 ! logging buffered 800000 debugging enable password xxxxx ! ! ! resource-pool disable clock timezone Taiwan 8 ! ip subnet-zero no ip domain-lookup ip name-server 168.95.1.1 ! ! voice class codec 99 codec preference 10 g729r8 codec preference 13 g711ulaw ! voice class codec 98 codec preference 10 g711ulaw codec preference 13 g729r8 ! ! ! ! ! ! fax interface-type modem mta receive maximum-recipients 0 ! controller T1 0 framing esf clock source line primary linecode b8zs ds0-group 0 timeslots 1-24 type e&m-immediate-start ! controller T1 1 framing esf clock source line secondary 1 linecode b8zs ! controller T1 2 framing esf clock source line secondary 2 linecode b8zs ! controller T1 3 framing esf clock source line secondary 3 linecode b8zs ! ! ! interface Ethernet0 ip address 220.130.4x.xxx 255.255.255.240 no ip route-cache no ip mroute-cache ! interface Serial0 no ip address no ip route-cache no ip mroute-cache shutdown no fair-queue clockrate 2015232 ! interface Serial1 no ip address no ip route-cache no ip mroute-cache shutdown no fair-queue clockrate 2015232 ! interface Serial2 no ip address no ip route-cache no ip mroute-cache shutdown no fair-queue clockrate 2015232 ! interface Serial3 no ip address no ip route-cache no ip mroute-cache shutdown no fair-queue clockrate 2015232 ! interface FastEthernet0 description "VoIP Packet Interface" ip address 172.18.66.2 255.255.255.0 no ip route-cache no ip mroute-cache duplex auto speed auto ! ip classless ip route 0.0.0.0 0.0.0.0 220.130.4x.xx ip route 172.18.0.0 255.255.0.0 172.18.66.254 ip route 172.19.0.0 255.255.0.0 172.18.66.254 no ip http server ! access-list 100 permit udp any any range 1718 1719 access-list 100 permit tcp any eq 1720 any access-list 100 permit tcp any any eq 1720 ! snmp-server community changeme RW snmp-server community public RO snmp-server enable traps tty ! call rsvp-sync ! voice-port 0:0 ! ! mgcp profile default ! dial-peer voice 300 voip destination-pattern 3... voice-class codec 99 session protocol sipv2 session target sip-server ! dial-peer voice 400 pots application session destination-pattern 2T no digit-strip port 0:0 ! sip-ua retry response 2 retry bye 2 retry cancel 2 sip-server ipv4:211.23.5x.xxx ! ! line con 0 exec-timeout 0 0 line aux 0 line vty 0 4 no login ! end
How can I debug this issue?
Regards, Wayne
On 1/5/2005 2:50 PM, "Atle Samuelsen" clona@camaro.no wrote:
change the whole block with if(!lookup("location")).. to something like this:
if(!lookup("location")){ if(uri =~"sip:2"){ route[..] break; }else{ sl_send_reply("404","Ha. not found"); break; }; };
The reason to do this, is with your if(!lookup.. you dont get down to the next ifsentence you have. so it will never hit it.
-Atle
- Wayne Chen wayne.chen16@msa.hinet.net [050105 05:03]:
Thanks for quick response from Srbislav. I tried the same method, but still got "404 not found". It looks that the call meet the "if (!lookup("location"))" condition.
Does the placement of IF condition matter?
Thanks & Regards, Wayne
On 1/4/2005 11:35 PM, "Srbislav Cvetkovic" srbislav@city-net.com wrote:
hi chen,
Here is how i do it:
# Route to PSTN Gateways(s) if (uri=~"^sip:9[0-9]*@XX.XX.XX.XX") { ## This assumes that the caller is log("Forwarding to PSTN\n"); ## registered in our realm strip(1); rewritehostport("PSTN-GATEWAY-IP:5060"); forward(uri:host, uri:port); break; };
On Jan 4, 2005, at 10:27 AM, Wayne Chen wrote:
Dear sirs,
I have a AS5300 setup as PSTN and it works fine to place from PSTN to SIP gateway in IP network. Now I want to place calls to PSTN with prefix '2' and the prefix should be striped before forward to PSTN, but I always get "404 not found" from SER server. Could anyone help me to debug my setting on ser.cfg? I attached my ser.cfg file as below:
# # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $ # # simple quick-start config script #
# ----------- 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 debug=7 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/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/lib/ser/modules/auth.so" loadmodule "/usr/lib/ser/modules/auth_db.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)
# ------------------------- 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; }; # 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 record_route(); # loose-route processing if (loose_route()) { t_relay(); 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; }; # native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; }; #handle PSTN calls if (uri=~ "^sip:2"){ log(1,"Forwarding to PSTN/n"); strip(1); rewritehostport("220.XX.XX.XX:5060"); if (!t_relay()) { sl_reply_error(); break; }; }; # forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP if (!t_relay()) { sl_reply_error(); };
}
I also try t_relay_to_udp() and forward(), but both can't help to forward call to PSTN gateway.
Regards, Wayne
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Srbo Cvetkovic | CityNet, Inc. srbo@city-net.com | Pittsburgh, PA voice: 412.481.5406 | fax: 412.431.1315
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
What happens when you issue the command show dialplan number <called number> on the gateway?
Wayne Chen wrote:
Hi, sir,
I reconfigure the ser.cfg as below:
if (!lookup("location")) { if(uri =~"sip:2"){ log(1,"Forwarding to PSTN\n"); strip(1); rewritehostport("220.130.48.254:5060"); t_relay_to_udp("220.130.48.245","5060"); forward(uri:host,uri:port); break; }else{ sl_send_reply("404", "Not Found"); log(1,"404 Not found\n"); break; }; };
The call looks get down to the if sentence, because I can see the "Forwarding to PSTN" show on log. However, the still cannot be establish. I still heard busy tone. Still some things wrong on my ser.cfg?
Following is the running-config of my AS5300 PSTN gateway:
Current configuration : 2553 bytes ! version 12.2 no service pad service timestamps debug datetime msec localtime service timestamps log datetime msec localtime no service password-encryption ! hostname AS5300 ! logging buffered 800000 debugging enable password xxxxx ! ! ! resource-pool disable clock timezone Taiwan 8 ! ip subnet-zero no ip domain-lookup ip name-server 168.95.1.1 ! ! voice class codec 99 codec preference 10 g729r8 codec preference 13 g711ulaw ! voice class codec 98 codec preference 10 g711ulaw codec preference 13 g729r8 ! ! ! ! ! ! fax interface-type modem mta receive maximum-recipients 0 ! controller T1 0 framing esf clock source line primary linecode b8zs ds0-group 0 timeslots 1-24 type e&m-immediate-start ! controller T1 1 framing esf clock source line secondary 1 linecode b8zs ! controller T1 2 framing esf clock source line secondary 2 linecode b8zs ! controller T1 3 framing esf clock source line secondary 3 linecode b8zs ! ! ! interface Ethernet0 ip address 220.130.4x.xxx 255.255.255.240 no ip route-cache no ip mroute-cache ! interface Serial0 no ip address no ip route-cache no ip mroute-cache shutdown no fair-queue clockrate 2015232 ! interface Serial1 no ip address no ip route-cache no ip mroute-cache shutdown no fair-queue clockrate 2015232 ! interface Serial2 no ip address no ip route-cache no ip mroute-cache shutdown no fair-queue clockrate 2015232 ! interface Serial3 no ip address no ip route-cache no ip mroute-cache shutdown no fair-queue clockrate 2015232 ! interface FastEthernet0 description "VoIP Packet Interface" ip address 172.18.66.2 255.255.255.0 no ip route-cache no ip mroute-cache duplex auto speed auto ! ip classless ip route 0.0.0.0 0.0.0.0 220.130.4x.xx ip route 172.18.0.0 255.255.0.0 172.18.66.254 ip route 172.19.0.0 255.255.0.0 172.18.66.254 no ip http server ! access-list 100 permit udp any any range 1718 1719 access-list 100 permit tcp any eq 1720 any access-list 100 permit tcp any any eq 1720 ! snmp-server community changeme RW snmp-server community public RO snmp-server enable traps tty ! call rsvp-sync ! voice-port 0:0 ! ! mgcp profile default ! dial-peer voice 300 voip destination-pattern 3... voice-class codec 99 session protocol sipv2 session target sip-server ! dial-peer voice 400 pots application session destination-pattern 2T no digit-strip port 0:0 ! sip-ua retry response 2 retry bye 2 retry cancel 2 sip-server ipv4:211.23.5x.xxx ! ! line con 0 exec-timeout 0 0 line aux 0 line vty 0 4 no login ! end
How can I debug this issue?
Regards, Wayne
On 1/5/2005 2:50 PM, "Atle Samuelsen" clona@camaro.no wrote:
change the whole block with if(!lookup("location")).. to something like this:
if(!lookup("location")){ if(uri =~"sip:2"){ route[..] break; }else{ sl_send_reply("404","Ha. not found"); break; }; };
The reason to do this, is with your if(!lookup.. you dont get down to the next ifsentence you have. so it will never hit it.
-Atle
- Wayne Chen wayne.chen16@msa.hinet.net [050105 05:03]:
Thanks for quick response from Srbislav. I tried the same method, but still got "404 not found". It looks that the call meet the "if (!lookup("location"))" condition.
Does the placement of IF condition matter?
Thanks & Regards, Wayne
On 1/4/2005 11:35 PM, "Srbislav Cvetkovic" srbislav@city-net.com wrote:
hi chen,
Here is how i do it:
# Route to PSTN Gateways(s) if (uri=~"^sip:9[0-9]*@XX.XX.XX.XX") { ## This assumes that the caller is log("Forwarding to PSTN\n"); ## registered in our realm strip(1); rewritehostport("PSTN-GATEWAY-IP:5060"); forward(uri:host, uri:port); break; };
On Jan 4, 2005, at 10:27 AM, Wayne Chen wrote:
Dear sirs,
I have a AS5300 setup as PSTN and it works fine to place from PSTN to SIP gateway in IP network. Now I want to place calls to PSTN with prefix '2' and the prefix should be striped before forward to PSTN, but I always get "404 not found" from SER server. Could anyone help me to debug my setting on ser.cfg? I attached my ser.cfg file as below:
# # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $ # # simple quick-start config script #
# ----------- 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 debug=7 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/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/lib/ser/modules/auth.so" loadmodule "/usr/lib/ser/modules/auth_db.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)
# ------------------------- 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; }; # 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 record_route(); # loose-route processing if (loose_route()) { t_relay(); 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; }; # native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; }; #handle PSTN calls if (uri=~ "^sip:2"){ log(1,"Forwarding to PSTN/n"); strip(1); rewritehostport("220.XX.XX.XX:5060"); if (!t_relay()) { sl_reply_error(); break; }; }; # forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP if (!t_relay()) { sl_reply_error(); };
}
I also try t_relay_to_udp() and forward(), but both can't help to forward call to PSTN gateway.
Regards, Wayne
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Srbo Cvetkovic | CityNet, Inc. srbo@city-net.com | Pittsburgh, PA voice: 412.481.5406 | fax: 412.431.1315
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Hello,
Wayne Chen wrote: rewritehostport("220.130.48.254:5060"); t_relay_to_udp("220.130.48.245","5060"); forward(uri:host,uri:port);
<snipped>
Why are the IPs in rewritehostport, and t_relay_to_udp different? What is the need for forward after t_relay_to_udp? Can you try like the following and see what happens?
rewritehostport ("IP:PORT"); t_relay(); break;
Best,
===== Girish Gopinath gr_sh2003@yahoo.com
__________________________________ Do you Yahoo!? All your favorites on one personal page � Try My Yahoo! http://my.yahoo.com
My bad. Now all problems solved....:P Thanks for help from Girish and Steve.
Regards, Wayne
On 1/6/2005 12:38 AM, "Girish" gr_sh2003@yahoo.com wrote:
Hello,
Wayne Chen wrote: rewritehostport("220.130.48.254:5060"); t_relay_to_udp("220.130.48.245","5060"); forward(uri:host,uri:port);
<snipped>
Why are the IPs in rewritehostport, and t_relay_to_udp different? What is the need for forward after t_relay_to_udp? Can you try like the following and see what happens?
rewritehostport ("IP:PORT"); t_relay(); break;
Best,
===== Girish Gopinath gr_sh2003@yahoo.com
Do you Yahoo!? All your favorites on one personal page ? Try My Yahoo! http://my.yahoo.com