<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
<small>Hi.<br>
<br>
I'm configuring the radius server so that no duplicate
Calling-Station-Id values are found in the DB I'm logging to (Oracle),
which is the only destination I'm logging onto (not even "detail").<br>
The quickest way I thought of was to add a unique index to the RADACCT
table so that any Accounting Start for a Calling-Station-Id already
present in the DB would fail.<br>
<br>
Indeed I can see through the server log (started with -X) that the
INSERT statement fails because it attempts to violate the unique
constraint:<br>
<br>
------<br>
rlm_sql (sql): Couldn't insert SQL accounting START record - ORA-00001:
unique constraint (RADUSER.RADACCT_IDX2) violated<br>
------<br>
<br>
However, just a few lines below I see:<br>
<br>
------<br>
modcall[accounting]: module "sql" returns ok for request 0<br>
------<br>
<br>
which probably is the root cause of unexpected (to me):<br>
<br>
------<br>
Sending Accounting-Response of id 241 to XXX.XXX.XXX.XXX:33863<br>
------<br>
<br>
This Accounting Response is unexpected to me because RFC 2866 says:<br>
"If the RADIUS accounting server is unable to successfully record the
accounting packet it MUST NOT send an Accounting-Response
acknowledgment to the client".<br>
<br>
Any help ?<br>
<br>
Thanks in advance<br>
Giuseppe<br>
<br>
P.S. Here there's the whole log section related to the request
processing that raises the above issue:<br>
<br>
---------<br>
rad_recv: Accounting-Request packet from host XXX.XXX.XXX.XX:33863,
id=241, length=92<br>
        User-Name = "testuser"<br>
        User-Password = "\001\272O\257UN\214\307\245\333%\261 <\020d"<br>
        Acct-Status-Type = Start<br>
        Calling-Station-Id = "393480000000"<br>
        Framed-IP-Address = XXX.XXX.XXX.XX<br>
        Acct-Session-Id = "c16a444a16927797"<br>
  Processing the preacct section of radiusd.conf<br>
modcall: entering group preacct for request 0<br>
  modcall[preacct]: module "preprocess" returns noop for request 0<br>
rlm_acct_unique: WARNING: Attribute NAS-Port was not found in request,
unique ID MAY be inconsistent<br>
rlm_acct_unique: Hashing ',Client-IP-Address =
XXX.XXX.XXX.XXX,NAS-IP-Address = XXX.XXX.XXX.XXX,Acct-Session-Id =
"c16a444a16927797",User-Name = "testuser"'<br>
rlm_acct_unique: Acct-Unique-Session-ID = "aecc66663df0011c".<br>
  modcall[preacct]: module "acct_unique" returns ok for request 0<br>
    rlm_realm: No '@' in User-Name = "testuser", looking up realm NULL<br>
    rlm_realm: No such realm "NULL"<br>
  modcall[preacct]: module "suffix" returns noop for request 0<br>
  modcall[preacct]: module "files" returns noop for request 0<br>
modcall: group preacct returns ok for request 0<br>
  Processing the accounting section of radiusd.conf<br>
modcall: entering group accounting for request 0<br>
radius_xlat:  'testuser'<br>
rlm_sql (sql): sql_set_user escaped user --> 'testuser'<br>
radius_xlat:  'INSERT into radacct (RadAcctId, AcctSessionId,
AcctUniqueId, UserName, Realm, NASIPAddress, NASPortId, NASPortType,
AcctStartTime, AcctStopTime, AcctSessionTime, AcctAuthentic,
ConnectInfo_start, ConnectInfo_stop, AcctInputOctets, AcctOutputOctets,
CalledStationId, CallingStationId, AcctTerminateCause, ServiceType,
FramedProtocol, FramedIPAddress, AcctStartDelay, AcctStopDelay)
values('', 'c16a444a16927797', 'aecc66663df0011c', 'testuser', '',
'XXX.XXX.XXX.XXX', '', '', TO_DATE('2005-09-28 19:46:43','yyyy-mm-dd
hh24:mi:ss'), NULL, '0', '', '', '', '0', '0', '', '393480000000', '',
'', '', 'XXX.XXX.XXX.XXX', '', '0')'<br>
radius_xlat:  '/usr/local/var/log/radius/sqltrace.sql'<br>
rlm_sql (sql): Reserving sql socket id: 4<br>
INSERT into radacct (RadAcctId, AcctSessionId, AcctUniqueId, UserName,
Realm, NASIPAddress, NASPortId, NASPortType, AcctStartTime,
AcctStopTime, AcctSessionTime, AcctAuthentic, ConnectInfo_start,
ConnectInfo_stop, AcctInputOctets, AcctOutputOctets, CalledStationId,
CallingStationId, AcctTerminateCause, ServiceType, FramedProtocol,
FramedIPAddress, AcctStartDelay, AcctStopDelay) values('',
'c16a444a16927797', 'aecc66663df0011c', 'testuser', '',
'XXX.XXX.XXX.XXX', '', '', TO_DATE('2005-09-28 19:46:43','yyyy-mm-dd
hh24:mi:ss'), NULL, '0', '', '', '', '0', '0', '', '393480000000', '',
'', '', 'XXX.XXX.XXX.XXX', '', '0')<br>
rlm_sql_oracle: execute query failed in sql_query: ORA-00001: unique
constraint (RADUSER.RADACCT_IDX2) violated<br>
rlm_sql (sql): Attempting to connect rlm_sql_oracle #4<br>
rlm_sql (sql): Connected new DB handle, #4<br>
INSERT into radacct (RadAcctId, AcctSessionId, AcctUniqueId, UserName,
Realm, NASIPAddress, NASPortId, NASPortType, AcctStartTime,
AcctStopTime, AcctSessionTime, AcctAuthentic, ConnectInfo_start,
ConnectInfo_stop, AcctInputOctets, AcctOutputOctets, CalledStationId,
CallingStationId, AcctTerminateCause, ServiceType, FramedProtocol,
FramedIPAddress, AcctStartDelay, AcctStopDelay) values('',
'c16a444a16927797', 'aecc66663df0011c', 'testuser', '',
'XXX.XXX.XXX.XXX', '', '', TO_DATE('2005-09-28 19:46:43','yyyy-mm-dd
hh24:mi:ss'), NULL, '0', '', '', '', '0', '0', '', '393480000000', '',
'', '', 'XXX.XXX.XXX.XX', '', '0')<br>
rlm_sql_oracle: execute query failed in sql_query: ORA-00001: unique
constraint (RADUSER.RADACCT_IDX2) violated<br>
rlm_sql (sql): failed after re-connect<br>
rlm_sql (sql): Couldn't insert SQL accounting START record - ORA-00001:
unique constraint (RADUSER.RADACCT_IDX2) violated<br>
radius_xlat:  ''<br>
radius_xlat:  '/usr/local/var/log/radius/sqltrace.sql'<br>
rlm_sql (sql): Released sql socket id: 4<br>
  modcall[accounting]: module "sql" returns ok for request 0<br>
modcall: group accounting returns ok for request 0<br>
Sending Accounting-Response of id 241 to XXX.XXX.XXX.XX:33863<br>
Finished request 0<br>
Going to the next request<br>
--- Walking the entire request list ---<br>
Cleaning up request 0 ID 241 with timestamp 433b0133<br>
Nothing to do.  Sleeping until we see a request.<br>
-------------<br>
</small>
<br>
</body>
</html>