Arun:
This depends a little on your configuration. Generally speaking the
!load_gws and !next_gw would be in route block 0. You will most likely
want to do any per-call checks or rewrites before determining which
gateway should receive the call. The failure_route can be inserted after
your route blocks.
-Steve
Arun Kumar wrote:
Hi,
thanks, One more thing can you please guide me where do I've to place
this code in my ser.cfg.
thanks
arun
On 1/10/07, *Steve Blair * <blairs(a)isc.upenn.edu
<mailto:blairs@isc.upenn.edu>> wrote:
Arun:
I would try something like the following:
if (!load_gws()) {
sl_send_reply("500", "Server Internal Error - Cannot load
gateways");
break;
} else {
xlog("L_INFO", "\n[SER]: - [$Tf] Method: <$rm> R-uri:
<$ru>
From: <$fu>
To <$tu> : Successfully Loaded Gateway List\n");
};
......
if (!next_gw()) {
t_reply("503", "Service not available - No more
gateways");
break;
} else {
t_on_failure("2"); <--- This will be where you load the
next
gateway
t_relay();
break;
};
failure_route[2] {
if (!next_gw()) {
xlog("L_CRIT","No more gateways for <$tu>\n");
t_reply("503", "Service not available - No more
gateways");
break;
} else {
t_on_failure("2");
t_relay();
break;
}
}
-Steve
Arun Kumar wrote:
Hi
thanks for your prompt reply but I've already checked and I'm
not
able
to make my lcr working by seeing these two pages
I got this conf but
This config is sending the call to my first gateway but when My
first
gateway is down its not sending the calls to
other gateways. Plese
help me to make this working. Here is my config file.
------------------------
debug=3
fork=no
log_stderror=yes
listen= 192.168.2.210 <http://192.168.2.210>
<http://192.168.2.210/> # INSERT YOUR IP
ADDRESS HERE
port=5060
children=4
dns=no
rev_dns=no
fifo="/tmp/ser_fifo"
fifo_db_url="mysql://ser:pass@localhost/ser"
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/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/uri.so"
loadmodule "/usr/local/lib/ser/modules/uri_db.so"
loadmodule "/usr/local/lib/ser/modules/domain.so"
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/avpops.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/mediaproxy.so"
loadmodule "/usr/local/lib/ser/modules/permissions.so"
loadmodule "/usr/local/lib/ser/modules/acc.so"
loadmodule "/usr/local/lib/ser/modules/auth_radius.so"
loadmodule "/usr/local/lib/ser/modules/lcr.so"
modparam("auth_db|permissions|uri_db|usrloc|domain", "db_url",
"
mysql://ser:pass@localhost/ser")
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "password_column", "password")
modparam("nathelper", "rtpproxy_disable", 1)
modparam("nathelper", "natping_interval", 0)
modparam("mediaproxy","natping_interval", 30)
modparam("mediaproxy","mediaproxy_socket",
"/var/run/mediaproxy.sock")
#
modparam("mediaproxy","sip_asymmetrics","/usr/local/etc/ser/sip-clients")
#
modparam("mediaproxy","rtp_asymmetrics","/usr/local/etc/ser/rtp-clients")
modparam("usrloc", "db_mode", 2)
modparam("registrar", "nat_flag", 6)
modparam("rr", "enable_full_lr", 1)
modparam("tm", "fr_inv_timer", 120)
modparam("tm", "fr_inv_timer_avp", "inv_timeout")
modparam("permissions", "db_mode", 1)
modparam("permissions", "trusted_table", "trusted")
modparam("lcr","db_url",
"mysql://ser:pass@localhost/ser")
modparam("lcr","gw_table","gw")
modparam("lcr","gw_name_column","gw_name")
modparam("lcr","ip_addr_column","ip_addr")
modparam("lcr","port_column","port")
modparam("lcr","grp_id_column","grp_id")
modparam("lcr","lcr_table","lcr")
modparam("lcr","prefix_column","prefix")
modparam("lcr","from_uri_column","from_uri")
modparam("lcr","priority_column","priority")
modparam("lcr","contact_avp","1401")
modparam("lcr","fr_inv_timer_avp","fr_inv_timer_avp")
modparam("lcr","fr_inv_timer",90)
modparam("lcr","fr_inv_timer_next",60)
# ------ Account and Radius modules--------------
modparam("acc", "db_url", "
mysql://ser:pass@localhost/ser")
modparam("acc","log_level",1)
modparam("acc","log_flag",1)
modparam("acc", "db_flag", 1)
modparam("acc","radius_flag",1)
modparam("acc","service_type",15)
#modparam("acc","radius_config","/usr/local/etc/radiusclient-ng/radiusclient.conf")
route {
#
-----------------------------------------------------------------
# Sanity Check Section
#
-----------------------------------------------------------------
if
(!mf_process_maxfwd_header("10")) {
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=="INVITE" &&
client_nat_test("3")) { # setflag(1);
# INSERT YOUR IP ADDRESS HERE
record_route_preset("192.168.2.210:5060
<http://192.168.2.210:5060>
<http://192.168.2.210:5060/>;nat=yes");
} else if (method!="REGISTER") {
record_route();
};
#
-----------------------------------------------------------------
# Call Tear Down Section
#
-----------------------------------------------------------------
if (method=="BYE" ||
method=="CANCEL") { setflag(1);
end_media_session();
};
#
-----------------------------------------------------------------
# Loose Route Section
#
-----------------------------------------------------------------
if (loose_route()) {
if ((method=="INVITE" || method=="REFER") &&
!has_totag()) {
sl_send_reply("403", "Forbidden Cant cross 1st bridge");
break;
};
if (method=="INVITE") {
if (!allow_trusted()) {
if (!proxy_authorize("","subscriber")) {
proxy_challenge("","0");
break;
} else if (!check_from()) {
sl_send_reply("403", "Use From=ID");
break;
};
consume_credentials();
};
if (client_nat_test("3")||search("^Route:.*;nat=yes")){
setflag(6);
use_media_proxy();
};
};
route(1);
break;
};
#
-----------------------------------------------------------------
# Call Type Processing Section
#
-----------------------------------------------------------------
if (!is_uri_host_local()) {
if (is_from_local() || allow_trusted()) {
sl_send_reply("404", "I am trusted host, ");
route(4);
route(1);
} else {
sl_send_reply("403", "Forbidden, I am here");
};
break;
};
if (method=="ACK") { setflag(1);
route(1);
break;
} if (method=="CANCEL") { setflag(1);
route(1);
break;
} else if (method=="INVITE") { setflag(1);
# sl_send_reply("410", "I am sending your call, ");
route(3);
break;
} else if (method=="REGISTER") {
route(2);
break;
};
lookup("aliases");
if (!is_uri_host_local()) {
route(4);
route(1);
break;
};
if (!lookup("location")) {
sl_send_reply("404", "User Not Found");
break;
};
route(1);
}
route[1] {
#
-----------------------------------------------------------------
# Default Message Handler
#
-----------------------------------------------------------------
t_on_reply("1");
if (!t_relay()) {
if (method=="INVITE" || method=="ACK") { setflag(1);
end_media_session();
};
sl_reply_error();
};
}
route[2] {
#
-----------------------------------------------------------------
# REGISTER Message Handler
#
-----------------------------------------------------------------
sl_send_reply("100", "Trying");
if (!search("^Contact:[ ]*\*") && client_nat_test("7")) {
setflag(6);
fix_nated_register();
force_rport();
};
if (!www_authorize("","subscriber")) {
www_challenge("","0");
break;
};
if (!check_to()) {
sl_send_reply("401", "Unauthorized");
break;
};
consume_credentials();
if (!save("location")) {
sl_reply_error();
};
}
route[3] {
#
-----------------------------------------------------------------
# INVITE Message Handler
#
-----------------------------------------------------------------
if (client_nat_test("3")) {
setflag(7);
force_rport();
fix_nated_contact();
};
if (!allow_trusted()) {
if (!proxy_authorize("","subscriber")) {
proxy_challenge("","0");
break;
} else if (!check_from()) {
sl_send_reply("403", "Use From=ID");
break;
};
consume_credentials();
};
route(4);
if(!load_gws()){
sl_send_reply("500", "Internal server error, unable to load
gateways");
break;
}
if(!next_gw()){
sl_send_reply("503", "Service not available, no gateways found");
break;
};
if (!is_uri_host_local()) {
route(4);
route(1);
break;
};
# route(1);
}
route[4] {
#
-----------------------------------------------------------------
# NAT Traversal Section
#
-----------------------------------------------------------------
if (isflagset(6) || isflagset(7)) {
if (!isflagset(8)) {
setflag(8);
use_media_proxy();
};
};
}
onreply_route[1] {
if ((isflagset(6) || isflagset(7)) &&
(status=~"(180)|(183)|2[0-9][0-9]")) {
if (!search("^Content-Length:[ ]*0")) {
use_media_proxy();
};
};
if (client_nat_test("1")) {
fix_nated_contact();
};
}
thanks very much
arun
On 1/10/07, * Greger V. Teigre* <greger(a)teigre.com
<mailto:greger@teigre.com>
<mailto: greger(a)teigre.com
<mailto:greger@teigre.com>>> wrote:
A quick search on
iptel.org <http://iptel.org>
<http://iptel.org> would have given
<http://www.iptel.org/lcr_with_mysql_accounting>
Arun Kumar wrote:
> Hi
>
> please help with LCR can some one show his lcr config file
> please. I'm not able to make it working.
>
> please help
>
> thanks
> arun
>
------------------------------------------------------------------------
>
> _______________________________________________
> Serusers mailing list
> Serusers(a)lists.iptel.org <mailto:Serusers@lists.iptel.org>
<mailto:Serusers@lists.iptel.org <mailto:Serusers@lists.iptel.org>>
------------------------------------------------------------------------
_______________________________________________
Serusers mailing list
Serusers(a)lists.iptel.org <mailto:Serusers@lists.iptel.org>
http://lists.iptel.org/mailman/listinfo/serusers