aboutsummaryrefslogtreecommitdiffstats
path: root/notes/projects/radius/sql/ippool-functions.sql
diff options
context:
space:
mode:
authorDavid M. Syzdek <syzdek@bindlebinaries.com>2019-05-14 12:23:17 -0800
committerDavid M. Syzdek <syzdek@bindlebinaries.com>2019-05-14 12:23:17 -0800
commite8e3fbe71941f28b0e94d2c8ed1382df4be86cf6 (patch)
tree415900e52f1ff482f8a3541df93e3fabe021318b /notes/projects/radius/sql/ippool-functions.sql
parentb9b38cac5e2e41326de396164c8422d946817ef0 (diff)
downloadscratchpad-e8e3fbe71941f28b0e94d2c8ed1382df4be86cf6.tar.gz
scratchpad-e8e3fbe71941f28b0e94d2c8ed1382df4be86cf6.tar.bz2
scratchpad-e8e3fbe71941f28b0e94d2c8ed1382df4be86cf6.tar.xz
scratchpad-e8e3fbe71941f28b0e94d2c8ed1382df4be86cf6.zip
Fixing ip assignment tallies
Diffstat (limited to 'notes/projects/radius/sql/ippool-functions.sql')
-rw-r--r--notes/projects/radius/sql/ippool-functions.sql20
1 files changed, 16 insertions, 4 deletions
diff --git a/notes/projects/radius/sql/ippool-functions.sql b/notes/projects/radius/sql/ippool-functions.sql
index bbfd60f..a879cf3 100644
--- a/notes/projects/radius/sql/ippool-functions.sql
+++ b/notes/projects/radius/sql/ippool-functions.sql
@@ -169,7 +169,7 @@ BEGIN
169 END IF; 169 END IF;
170 170
171 -- tallies existing sessions 171 -- tallies existing sessions
172 SELECT count(id) 172 SELECT count( address ) AS ipCount
173 INTO assignPortCount 173 INTO assignPortCount
174 FROM ip 174 FROM ip
175 WHERE ip.username LIKE assignUser 175 WHERE ip.username LIKE assignUser
@@ -181,10 +181,10 @@ BEGIN
181 181
182 -- verifies IP address is not inactive 182 -- verifies IP address is not inactive
183 IF ( assignForce = FALSE ) THEN 183 IF ( assignForce = FALSE ) THEN
184 SELECT network 184 PERFORM network
185 FROM netblock 185 FROM netblock
186 WHERE netblock.network >>= assignIp 186 WHERE netblock.network >>= assignIp
187 AND netblock.active IS FALSE; 187 AND netblock.active = FALSE;
188 IF FOUND THEN 188 IF FOUND THEN
189 RETURN FALSE; 189 RETURN FALSE;
190 END IF; 190 END IF;
@@ -265,7 +265,7 @@ CREATE OR REPLACE FUNCTION ip_autoassign
265 assignUser TEXT, 265 assignUser TEXT,
266 assignNas TEXT, 266 assignNas TEXT,
267 assignPool TEXT, 267 assignPool TEXT,
268 assignPortLimit INTEGER, DEFAULT 2, 268 assignPortLimit INTEGER DEFAULT 2,
269 assignSess TEXT DEFAULT NULL, 269 assignSess TEXT DEFAULT NULL,
270 assignPrevIp BOOLEAN DEFAULT TRUE 270 assignPrevIp BOOLEAN DEFAULT TRUE
271) 271)
@@ -276,6 +276,7 @@ CREATE OR REPLACE FUNCTION ip_autoassign
276DECLARE 276DECLARE
277 assignedIp INET; 277 assignedIp INET;
278 assignNasId INTEGER; 278 assignNasId INTEGER;
279 assignPortCount INTEGER;
279BEGIN 280BEGIN
280 281
281 -- sets defaults 282 -- sets defaults
@@ -283,6 +284,17 @@ BEGIN
283 assignSess := 'user:' || assignUser; 284 assignSess := 'user:' || assignUser;
284 END IF; 285 END IF;
285 286
287 -- tallies existing sessions
288 SELECT count( address )
289 INTO assignPortCount
290 FROM ip
291 WHERE ip.username LIKE assignUser
292 AND ip.nasId IS NOT NULL
293 AND ip.address != assignIp;
294 IF ( assignPortCount >= assignPortLimit ) THEN
295 RETURN NULL;
296 END IF;
297
286 -- search for user's previous address 298 -- search for user's previous address
287 IF ( assignPrevIp IS TRUE ) THEN 299 IF ( assignPrevIp IS TRUE ) THEN
288 SELECT ip.address, 300 SELECT ip.address,