Thanks for the immediate reply. We have this on the
file ser.cfg:
modparam("acc", "radius_flag", 2)
setflag(2); ---->>> could this be on the wrong
location?
To route traffic to PSTN, we have this on the ser
config:
-----
if (uri=~"^sip:90087(.+)@.*") {
rewritehostport("XXX.XXX.XXX.XXX:5060");
forward(uri:host, uri:port);
exec_msg('(/usr/local/etc/ser/logs.csh)');
break;
------
Here is our ser.cfg file:
--------------------------
debug=3
fork=yes
log_stderror=yes
check_via=no
dns=no
rev_dns=no
port=5060
children=4
fifo="/tmp/ser_fifo"
fifo_db_url="mysql://XXXX:XXXX@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/textops.so"
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/uri.so"
loadmodule "/usr/local/lib/ser/modules/acc.so"
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/exec.so"
modparam("usrloc", "db_mode", 2) # 0 Disable
Authentication ; 2 Enable Authentication
modparam("usrloc", "db_url",
"mysql://XXXX:XXXX@localhost/ser")
modparam("auth_db", "db_url",
"mysql://XXXX:XXXX@localhost/ser")
modparam("rr", "enable_full_lr", 1)
modparam("registrar", "nat_flag", 6)
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("acc",
"radius_config","/usr/local/etc/radiusclient-ng/radiusclient.conf")
modparam("acc", "service_type", 15)
modparam("acc", "radius_flag", 2)
modparam("acc", "radius_missed_flag", 3)
modparam("acc", "failed_transactions", 1)
modparam("acc", "report_ack", 0)
route{
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;
};
if (nat_uac_test("3")) {
if (method == "REGISTER" || !
search("^Record-Route:")) {
fix_nated_contact();
if (method == "INVITE") {
fix_nated_sdp("1");
};
force_rport();
setflag(6);
};
};
lookup("aliases");
if (!method=="REGISTER") record_route();
if (loose_route()) {
append_hf("P-hint: rr-enforced\r\n");
route(1);
break;
};
setflag(2);
setflag(5);
if (method=="INVITE") {
exec_msg('(/usr/local/etc/ser/record.pl)');
};
if (!uri==myself) {
append_hf("P-hint: outbound\r\n");
route(1);
break;
};
if (uri=~"^sip:90087(.+)@.*") {
rewritehostport("202.64.248.209:5060");
forward(uri:host, uri:port);
exec_msg('(/usr/local/etc/ser/logs.csh)');
break;
};
#--------- IVR Start -----------
if (uri=~"^sip:222@.*") {
if (!t_newtran()) {
log("could not create new
transaction\n");
sl_send_reply("500","could not
create new transaction");
break;
};
if (method=="ACK"){
t_relay();
break;
};
t_reply("100","Trying -- just wait a
minute !");
if(!t_write_unix("/tmp/am_sock","ivr")) {
t_reply("500","error contacting
sems");
};
break;
};
#--------- IVR End -----------
if (uri==myself) {
if (method=="REGISTER") {
if
(!www_authorize("sip.easy.net.ph","subscriber")) {
www_challenge("sip.easy.net.ph", "0");
break;
};
save("location");
break;
};
if (method=="INVITE") {
exec_msg('(/usr/local/etc/ser/record.pl)');
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound
alias\r\n");
route(1);
break;
};
if (!lookup("location")) {
sl_send_reply("404", "Not
Found");
break;
};
};
append_hf("P-hint: usrloc applied\r\n");
route(1);
}
route[1]
{
if (method=="INVITE") {
exec_msg('/usr/local/etc/ser/record.pl');
};
if (method=="CANCEL") {
exec_msg('/usr/local/etc/ser/record.pl');
};
if (method=="BYE") {
exec_msg('/usr/local/etc/ser/record.pl');
};
if (method=="ACK") {
exec_msg('/usr/local/etc/ser/record.pl');
};
setflag(2);
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 (isflagset(6)) {
force_rtp_proxy();
};
t_on_reply("1");
if (!t_relay()) {
sl_reply_error();
};
}
onreply_route[1] {
if (isflagset(6) && status =~
"(183)|2[0-9][0-9]") {
fix_nated_contact();
force_rtp_proxy();
} else if (nat_uac_test("1")) {
fix_nated_contact();
};
}
--- Matt Simpson <msimpson(a)commpartners.us> wrote:
My question:
What triggers the SER to send START accounting
request
to the RADIUS?
Thanks,
Rommel
Rommel, there should be a statement at the top like:
modparam("acc","radius_flag",1)
The "1" is the flag to account for a call in radius
Then you would use:
setflag(1);
to account for the call. It is hard to tell you
where to put the
statement without seeing your conf but that should
help.
__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com