blob: 124f349263c88920d6705e0e5a6895b3b3886dad [file] [log] [blame]
# -*- text -*-
#
# ippool-dhcp/sqlite/queries.conf -- SQLite queries for rlm_sqlippool
#
# $Id: 8709a562ee8877f02a43118464371eae101f3fbc $
#
# This series of queries allocates an IP address
#
#allocate_clear = "\
# UPDATE ${ippool_table} \
# SET \
# nasipaddress = '', \
# pool_key = 0, \
# callingstationid = '', \
# username = '', \
# expiry_time = NULL \
# WHERE pool_key = '${pool_key}'"
#
# This series of queries allocates an IP address
# (Note: If your pool_key is set to Calling-Station-Id and not NAS-Port
# then you may wish to delete the "AND nasipaddress = '%{Nas-IP-Address}'
# from the WHERE clause)
#
allocate_clear = "\
UPDATE ${ippool_table} \
SET \
nasipaddress = '', \
pool_key = 0, \
callingstationid = '', \
username = '', \
expiry_time = NULL \
WHERE expiry_time <= datetime(strftime('%%s', 'now') - 1, 'unixepoch') \
AND nasipaddress = '%{Nas-IP-Address}'"
#
# The ORDER BY clause of this query tries to allocate the same IP-address
# which user had last session...
#
allocate_find = "\
SELECT framedipaddress \
FROM ${ippool_table} \
WHERE pool_name = '%{control:Pool-Name}' \
AND (\
((expiry_time < datetime('now')) OR expiry_time IS NULL) \
OR (callingstationid = '%{Calling-Station-Id}') \
AND expiry_time > datetime('now')\
) \
ORDER BY \
(callingstationid <> '%{Calling-Station-Id}'), \
expiry_time \
LIMIT 1"
#
# If you prefer to allocate a random IP address every time, use this query instead
#
#allocate_find = "\
# SELECT framedipaddress FROM ${ippool_table} \
# WHERE pool_name = '%{control:Pool-Name}' \
# AND expiry_time IS NULL \
# ORDER BY RAND() \
# LIMIT 1 \
# FOR UPDATE"
#
# If an IP could not be allocated, check to see if the pool exists or not
# This allows the module to differentiate between a full pool and no pool
# Note: If you are not running redundant pool modules this query may be
# commented out to save running this query every time an ip is not allocated.
#
pool_check = "\
SELECT id \
FROM ${ippool_table} \
WHERE pool_name='%{control:Pool-Name}' \
LIMIT 1"
#
# This is the final IP Allocation query, which saves the allocated ip details
#
allocate_update = "\
UPDATE ${ippool_table} \
SET \
nasipaddress = '%{NAS-IP-Address}', \
pool_key = '${pool_key}', \
callingstationid = '%{Calling-Station-Id}', \
username = '%{User-Name}', \
expiry_time = datetime(strftime('%%s', 'now') + ${lease_duration}, 'unixepoch') \
WHERE framedipaddress = '%I' \
AND expiry_time IS NULL"
#
# The following queries are not used for DHCP IP assignment.
#
#
# This series of queries frees an IP number when an accounting START record arrives
#
start_update = "\
UPDATE ${ippool_table} \
SET \
expiry_time = datetime(strftime('%%s', 'now') + ${lease_duration}, 'unixepoch') \
WHERE nasipaddress = '%{NAS-IP-Address}' \
AND pool_key = '${pool_key}' \
AND username = '%{User-Name}' \
AND callingstationid = '%{Calling-Station-Id}' \
AND framedipaddress = '%{Framed-IP-Address}'"
#
# This series of queries frees an IP number when an accounting STOP record arrives
#
stop_clear = "\
UPDATE ${ippool_table} \
SET \
nasipaddress = '', \
pool_key = 0, \
callingstationid = '', \
username = '', \
expiry_time = NULL \
WHERE nasipaddress = '%{Nas-IP-Address}' \
AND pool_key = '${pool_key}' \
AND username = '%{User-Name}' \
AND callingstationid = '%{Calling-Station-Id}' \
AND framedipaddress = '%{Framed-IP-Address}'"
#
# This series of queries frees an IP number when an accounting ALIVE record arrives
#
alive_update = "\
UPDATE ${ippool_table} \
SET \
expiry_time = datetime(strftime('%%s', 'now') + ${lease_duration}, 'unixepoch') \
WHERE nasipaddress = '%{Nas-IP-Address}' \
AND pool_key = '${pool_key}' \
AND username = '%{User-Name}' \
AND callingstationid = '%{Calling-Station-Id}' \
AND framedipaddress = '%{Framed-IP-Address}'"
#
# This series of queries frees the IP numbers allocate to a
# NAS when an accounting ON record arrives
#
on_clear = "\
UPDATE ${ippool_table} \
SET \
nasipaddress = '', \
pool_key = 0, \
callingstationid = '', \
username = '', \
expiry_time = NULL \
WHERE \nasipaddress = '%{Nas-IP-Address}'"
#
# This series of queries frees the IP numbers allocate to a
# NAS when an accounting OFF record arrives
#
off_clear = "\
UPDATE ${ippool_table} \
SET \
nasipaddress = '', \
pool_key = 0, \
callingstationid = '', \
username = '', \
expiry_time = NULL \
WHERE nasipaddress = '%{Nas-IP-Address}'"