[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freeradius-users
Subject:    Radius Accounting problem with MaxTnT
From:       "Dimitrios E. Digas" <freeradius () urnet ! gr>
Date:       2002-12-30 20:16:57
[Download RAW message or body]

Dear all,

I have a problem with radius accounting. More specifically I am using
freeradius v0.8 with oracle 8i backend. The problem arises with some
accounting records, all from a MaxTnT NAS. As can be seen from the log
entries below, the problem is that NAS does not send a username with some
accounting records. As a result the SQL query fails and the record
cannot be written into the database. Does anyone know how I can block such
accounting requests from the MaxTnT NAS or does anybody know if this is a
known MaxTnT bug ???

As a temporary solution I've modified the SQL query and used Oracle's NVL
function as follows to prevent a NULL username in the SQL statement:

accounting_start_query = "INSERT into ${acct_table1} (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('', '%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}',
NVL(%{SQL-User-Name},
'dummyraduser'), '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port-Id}', \
'%{NAS-Port-Type}', TO_DATE('%S','yyyy-mm-dd hh24:mi:ss'), NULL, '0', \
'%{Acct-Authentic}', '%{Connect-Info}', '', '0', '0', '%{Called-Station-Id}', \
'%{Calling-Station-Id}', '', '%{Service-Type}', '%{Framed-Protocol}', \
'%{Framed-IP-Address}', '%{Acct-Delay-Time}', '0')"

This might do the trick but has a performance drawback. If anyone notices
any other problems this may cause please let me know.


RADIUS LOG
----------

rad_recv: Accounting-Request packet from host 217.19.74.12:7020, id=34, length=116
	NAS-IP-Address = 217.19.74.12
	NAS-Port = 2113
	NAS-Port-Type = Async
	Acct-Status-Type = Start
	Acct-Delay-Time = 229
	Acct-Session-Id = "369446656"
	Acct-Authentic = Local
	Idle-Timeout = 0
	X-Ascend-Modem-PortNo = 62
	X-Ascend-Modem-SlotNo = 1
	X-Ascend-Modem-ShelfNo = 1
	Calling-Station-Id = "2108150497"
	Called-Station-Id = "8962408080"
modcall: entering group preacct
  modcall[preacct]: module "preprocess" returns noop
    rlm_realm: Proxy reply, or no user name.  Ignoring.
  modcall[preacct]: module "suffix" returns noop
  modcall[preacct]: module "files" returns noop
modcall: group preacct returns noop
modcall: entering group accounting
rlm_acct_unique: WARNING: Attribute NAS-Port-Id was not found in request, unique ID \
                MAY be inconsistent
rlm_acct_unique: WARNING: Attribute User-Name was not found in request, unique ID MAY \
                be inconsistent
rlm_acct_unique: Hashing ',Client-IP-Address = 217.19.74.12,NAS-IP-Address = \
                217.19.74.12,Acct-Session-Id = "369446656",'
rlm_acct_unique: Acct-Unique-Session-ID = "e8b5c0d1af61a38f".
  modcall[accounting]: module "acct_unique" returns ok
radius_xlat:  '/usr/local/var/log/radius/radacct/217.19.74.12/detail-20021212'
rlm_detail: /usr/local/var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d \
expands to /usr/local/var/log/radius/radacct/217.19.74.12/detail-20021212  \
modcall[accounting]: module "detail" returns ok  modcall[accounting]: module \
"counter" returns noop  modcall[accounting]: module "unix" returns noop
radius_xlat:  '/usr/local/var/log/radius/radutmp'
radius_xlat:  ''
  modcall[accounting]: module "radutmp" returns ok
radius_xlat:  ''
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('', \
'369446656', 'e8b5c0d1af61a38f', '', '', '217.19.74.12', '', 'Async', \
TO_DATE('2002-12-12 21:54:56','yyyy-mm-dd hh24:mi:ss'), NULL, '0', 'Local', '', '', \
'0', '0', '8962408080', '2108150497', '', '', '', '', '229', '0')' rlm_sql (sql): \
                Reserving sql socket id: 3
rlm_sql_oracle: execute query failed in sql_query: ORA-01400: cannot insert NULL into \
("URNET"."RADACCT"."USERNAME") rlm_sql (sql): Attempting to connect rlm_sql_oracle #3
rlm_sql (sql): Connected new DB handle, #3
rlm_sql_oracle: execute query failed in sql_query: ORA-01400: cannot insert NULL into \
("URNET"."RADACCT"."USERNAME") rlm_sql (sql): failed after re-connect
rlm_sql (sql): Couldn't update SQL accounting for START packet - ORA-01400: cannot \
                insert NULL into ("URNET"."RADACCT"."USERNAME")
radius_xlat:  'UPDATE radacct SET AcctStartTime = TO_DATE('2002-12-12 \
21:54:56','yyyy-mm-dd hh24:mi:ss'), AcctStartDelay = '229', ConnectInfo_start = '' \
WHERE AcctSessionId = '369446656' AND UserName = '' AND NASIPAddress = '217.19.74.12' \
                AND AcctStopTime = IS NULL'
rlm_sql_oracle: execute query failed in sql_query: ORA-00936: missing expression
rlm_sql (sql): Attempting to connect rlm_sql_oracle #3
rlm_sql (sql): Connected new DB handle, #3
rlm_sql_oracle: execute query failed in sql_query: ORA-00936: missing expression
rlm_sql (sql): failed after re-connect
rlm_sql (sql): Couldn't update SQLaccounting START record - ORA-00936: missing \
expression rlm_sql (sql): Released sql socket id: 3
  modcall[accounting]: module "sql" returns fail
modcall: group accounting returns fail
Finished request 6


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic