I've this ser installation whose purpose in life is accounting all the
calls and redirecting them to asterisk, which routes them to ISDN or a
h323 GSM gateway.
SIP phones -> Ser -> Asterisk -> [isdn | gsm ]
all the calls are "from left to right", asterisk will never see incoming
stuff from the isdn/gsm channels
radius has mysql as backend, the calls works well but :
if the sip phone hangsup radius writes two identical lines in the
radacct table, missing the AcctSessionTime value (writes '0')
if the remote phone hangsup there are the same two lines and a third
line with caller and called inverted, and start and stop time with the
same value
Can someone tell me what's wrong with my route ? or I'm missing
something in radius configuration ?
some columns and lines from the radacct table
"RadAcctId","AcctSessionId","AcctUniqueId","UserName","AcctStartTime","AcctStopTime"
#these lines inserted if the caller hangsup first
49,"e7e71b1b-70eec1ee(a)172.18.1.13","d9428a25afbfdf52","[sip
number]","2005-08-10 08:54:53","2005-08-10 08:54:58"
50,"e7e71b1b-70eec1ee(a)172.18.1.13","d9428a25afbfdf52","[sip
number]","2005-08-10 08:54:53","2005-08-10 08:54:58"
#these if the called number hangsup
51,"72660925-e480d1a5(a)172.18.1.13","43e7c757d53c2970","[sip
number]","2005-08-10 08:57:10","2005-08-10 08:57:22"
52,"72660925-e480d1a5(a)172.18.1.13","43e7c757d53c2970","[sip
number]","2005-08-10 08:57:10","2005-08-10 08:57:22"
53,"72660925-e480d1a5(a)172.18.1.13","5b732c77e7e3f37d","[external
number]","2005-08-10 08:57:13","2005-08-10 08:57:13"
acc_radius paramethers :
modparam("acc", "radius_config",
"/etc/radiusclient-ng/radiusclient.conf")
modparam("acc", "log_level", 2)
modparam("acc", "log_fmt", "cdfimorstup")
modparam("acc", "radius_flag", 1)
routing configuration :
# initial sanity checks
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;
};
# registration (and authentication)
if (uri==myself) {
if (method=="REGISTER") {
if (!radius_www_authorize("")) {
www_challenge("", "0");
break;
};
save("location");
break;
};
lookup("aliases");
};
setflag(1);
if (method=="INVITE") record_route();
rewritehost("172.18.1.11");
if (!t_relay()) {
sl_reply_error();
};