(RADIATOR) Error in AddressAllocator SQL
Andrew Stevenson
andrews at ntt.net.au
Tue Jan 20 17:15:43 CST 2004
On Tue, 20 Jan 2004, Hugh Irvine wrote:
> I think you have a problem with your configuration file - it appears
> the AddressAllocator is being called in a loop.
I seem to be incurring the same problem. I'm using freetds 0.61 against
MSSQL. I notice William is running FreeTDS also and I found
http://article.gmane.org/gmane.comp.db.tds.freetds/1721 which makes me
wonder if its a FreeTDS problem.
> It is really _much_ easier if I can see the configuration file and a
> complete trace 4 debug.
Mine is below - slightly trimmed for brevity as the address allocator gets
called 20 times producing almost identical log messages.
Tue Jan 20 18:27:48 2004: DEBUG: Packet dump:
*** Received from 10.0.0.1 port 47058 ....
Code: Access-Request
Identifier: 10
Authentic: blah
Attributes:
Framed-Protocol = PPP
NAS-Port-Type = Virtual
NAS-Port = 12
Calling-Station-Id = "292645069"
Called-Station-Id = "452320198336659"
Service-Type = Framed
NAS-IP-Address = 10.0.0.2
NAS-Identifier = "blah.blah.com.au"
User-Password = "Z<129><131>q<11>C<183>{<192><148>5<164>"
User-Name = "andrews at blah"
Proxy-State = E60F14F586A9BD69B0A35A6B2A0C42CE520979F562E444CB2
Tue Jan 20 18:27:48 2004: DEBUG: Handling request with Handler 'Request-Type=Access-Request'
Tue Jan 20 18:27:48 2004: DEBUG: Deleting session for andrews at blah, 10.0.0.2, 12
Tue Jan 20 18:27:48 2004: DEBUG: do query is: 'DELETE FROM blah_dial_current_sessions WHERE nas_ip = '10.0.0.2' AND
nas_port = '12'':
Tue Jan 20 18:27:48 2004: DEBUG: Handling with Radius::AuthSQL
Tue Jan 20 18:27:48 2004: DEBUG: Handling with Radius::AuthSQL:
Tue Jan 20 18:27:48 2004: DEBUG: Query is: 'SELECT password, attributes,
max_sessions FROM blah_dial_users WHERE username = 'andrews' AND realm =
'blah' AND '452320198336659' LIKE '%' + allowed_called_station_id AND
active_flag = 1':
Tue Jan 20 18:27:48 2004: DEBUG: Radius::AuthSQL looks for match with
andrews at blah
Tue Jan 20 18:27:48 2004: DEBUG: Query is: 'SELECT nas_ip, nas_port,
session_id FROM blah_dial_current_sessions WHERE username = 'andrews' AND
realm = 'blah' AND '452320198336659' LIKE '%' + called_station_id':
Tue Jan 20 18:27:48 2004: DEBUG: Radius::AuthSQL ACCEPT:
Tue Jan 20 18:27:48 2004: DEBUG: Handling with Radius::AuthDYNADDRESS
Tue Jan 20 18:27:48 2004: DEBUG: Query is: 'SELECT TOP 1 last_changed,
yiaddr, netmask, dns FROM blah_dial_address_pool WHERE pool = 'pool0' AND
inuse_flag = 0 ORDER BY last_changed':
Tue Jan 20 18:27:48 2004: DEBUG: do query is: 'UPDATE
blah_dial_address_pool SET inuse_flag = 1, last_changed = 1074583668,
username = 'andrews', realm = 'blah', called_station_id =
'452320198336659' WHERE yiaddr = '203.111.65.49'':
Tue Jan 20 18:27:48 2004: DEBUG: Query is: 'SELECT TOP 1 last_changed,
yiaddr, netmask,dns FROM blah_dial_address_pool WHERE pool = 'pool0' AND
inuse_flag = 0 ORDER BYlast_changed':
Tue Jan 20 18:27:48 2004: DEBUG: do query is: 'UPDATE
blah_dial_address_pool SET inuse_flag = 1, last_changed = 1074583668,
username = 'andrews', realm = 'blah', called_station_id =
'452320198336659' WHERE yiaddr = '203.111.65.50'':
Tue Jan 20 18:27:48 2004: DEBUG: Query is: 'SELECT TOP 1 last_changed,
yiaddr, netmask,dns FROM blah_dial_address_pool WHERE pool = 'pool0' AND
inuse_flag = 0 ORDER BYlast_changed':
Tue Jan 20 18:27:48 2004: DEBUG: do query is: 'UPDATE
blah_dial_address_pool SET inuse_flag = 1, last_changed = 1074583668,
username = 'andrews', realm = 'blah', called_station_id =
'452320198336659' WHERE yiaddr = '203.111.65.51'':
Tue Jan 20 18:27:48 2004: DEBUG: Query is: 'SELECT TOP 1 last_changed,
yiaddr, netmask,dns FROM blah_dial_address_pool WHERE pool = 'pool0' AND
inuse_flag = 0 ORDER BYlast_changed':
Tue Jan 20 18:27:48 2004: DEBUG: do query is: 'UPDATE
blah_dial_address_pool SET inuse_flag = 1, last_changed = 1074583668,
username = 'andrews', realm = 'blah', called_station_id =
'452320198336659' WHERE yiaddr = '203.111.65.52'':
.
.
.
and so on for quite a while
.
.
.
Tue Jan 20 18:27:49 2004: DEBUG: Query is: 'SELECT TOP 1 last_changed,
yiaddr, netmask,dns FROM blah_dial_address_pool WHERE pool = 'pool0' AND
inuse_flag = 0 ORDER BY last_changed':
Tue Jan 20 18:27:49 2004: DEBUG: do query is: 'UPDATE
blah_dial_address_pool SET inuse_flag = 1, last_changed = 1074583669,
username = 'andrews', realm = 'blah', called_station_id =
'452320198336659' WHERE yiaddr = '203.111.65.68'':
Tue Jan 20 18:27:49 2004: INFO: Access rejected for andrews at blah: Too many simultaneous address requests
Tue Jan 20 18:27:49 2004: WARNING: No such attribute PoolHint
Tue Jan 20 18:27:49 2004: DEBUG: Packet dump:
*** Sending to 10.0.0.1 port 47058 ....
Code: Access-Reject
Identifier: 10
Authentic: blah
Attributes:
Ascend-Client-Primary-DNS = 203.111.0.10
Ascend-Client-Secondary-DNS = 202.53.36.190
PoolHint = 'pool0'
Reply-Message = "Request Denied"
Proxy-State = E60F14F586A9BD69B0A35A6B2A0C42CE520979F562E444CB2
Relevant parts of the config....
<AddressAllocator SQL>
Identifier InternetDial
DBSource dbi:Sybase:server=BLAH1;database=Radius2
DBUsername XXXXXX
DBAuth XXXXXX
DBSource dbi:Sybase:server=BLAH2;database=Radius2
DBUsername XXXXXX
DBAuth XXXXXX
DefaultLeasePeriod 1209600
#DefaultLeasePeriod 0
FindQuery \
SELECT TOP 1 \
last_changed, \
yiaddr, \
netmask, \
dns \
FROM \
blah_dial_address_pool \
WHERE \
pool = %0 AND \
inuse_flag = 0 \
ORDER BY \
last_changed
AllocateQuery \
UPDATE \
blah_dial_address_pool \
SET \
inuse_flag = 1, \
last_changed = %0, \
username = '%U', \
realm = '%R', \
called_station_id = '%{Called-Station-Id}' \
WHERE \
yiaddr = '%3'
CheckPoolQuery \
SELECT \
inuse_flag \
FROM \
blah_dial_address_pool \
WHERE \
yiaddr = '%0'
AddAddressQuery \
INSERT INTO comindico_dial_address_pool ( \
inuse_flag, \
last_changed, \
pool, \
yiaddr, \
netmask, \
dns \
) VALUES ( \
0, \
'%t', \
'%0', \
'%1', \
'%2', \
'%3' \
)
DeallocateQuery \
UPDATE \
comindico_dial_address_pool \
SET \
inuse_flag = 1, \
last_changed = '%t', \
WHERE \
yiaddr = '%0'
# this is done by an IS stored procedure
ReclaimQuery \
SELECT 0
<AddressPool pool0>
DNSServer 203.111.0.10
Range 203.111.65.0/24
Range 203.111.67.0/24
</AddressPool>
</AddressAllocator>
<Handler Request-Type=Access-Request>
# record accounting info in file in case IS loose it
AcctLogFileName %L/details-%Y%m%d
# keep going through the clauses so we get to the dynamic address
# allocation clause
AuthByPolicy ContinueWhileAccept
# how to determine if we should let this user in
<AuthBy SQL>
# where to find the DB (tried in order)
DBSource dbi:Sybase:server=BLAH1;database=Radius2
DBUsername XXXXXX
DBAuth XXXXXX
DBSource dbi:Sybase:server=BLAH2;database=Radius2
DBUsername XXXXXX
DBAuth XXXXXX
# don't look for a default user entry (there isn't one to find)
NoDefault
# the SQL query to find the user's details
AuthSelect \
SELECT \
password, \
attributes, \
max_sessions \
FROM blah_dial_users WHERE \
username = '%U' AND \
realm = '%R' AND \
'%{Called-Station-Id}' LIKE '%' + allowed_called_station_id AND
\
active_flag = 1
# what to do with the details we have found
AuthColumnDef 0, User-Password, check
AuthColumnDef 1, GENERIC, reply
AuthColumnDef 2, Simultaneous-Use, check
AddToReplyIfNotExist Ascend-Client-Primary-DNS = 203.111.0.10, \
Ascend-Client-Secondary-DNS = 202.53.36.190, \
PoolHint = 'pool0'
</AuthBy>
<AuthBy DYNADDRESS>
AddressAllocator InternetDial
MapAttribute yiaddr, Framed-IP-Address
</AuthBy>
StripFromReply PoolHint
</Handler>
Thanks,
Andrew
===
Archive at http://www.open.com.au/archives/radiator/
Announcements on radiator-announce at open.com.au
To unsubscribe, email 'majordomo at open.com.au' with
'unsubscribe radiator' in the body of the message.
More information about the radiator
mailing list