From 68c9da80ceb8adad2dff8703c7fb02c5a491340a Mon Sep 17 00:00:00 2001 From: "David M. Syzdek" Date: Tue, 28 May 2019 11:06:38 -0800 Subject: changed the return type of ip_assign() to INET --- notes/projects/radius/sql/ippool-functions.sql | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/notes/projects/radius/sql/ippool-functions.sql b/notes/projects/radius/sql/ippool-functions.sql index 719467d..256e8f0 100644 --- a/notes/projects/radius/sql/ippool-functions.sql +++ b/notes/projects/radius/sql/ippool-functions.sql @@ -145,7 +145,7 @@ $$; * : force IP assignment, even if netblock is not assignable (i.e. static * assignments) * - * Returns TRUE if assigned and FALSE if not assigned + * Returns the assigned IP address if successful and NULL if not assigned */ CREATE OR REPLACE FUNCTION ip_assign ( @@ -155,7 +155,7 @@ CREATE OR REPLACE FUNCTION ip_assign assignNas TEXT DEFAULT NULL, assignForce BOOLEAN DEFAULT FALSE ) - RETURNS BOOLEAN + RETURNS INET LANGUAGE plpgsql SECURITY DEFINER AS $$ @@ -172,7 +172,7 @@ BEGIN AND ip.nasId IS NOT NULL AND ip.address != assignIp; IF ( assignPortCount >= assignPortLimit ) THEN - RETURN FALSE; + RETURN NULL; END IF; -- verifies IP address is assignable @@ -182,7 +182,7 @@ BEGIN WHERE netblock.network >>= set_masklen( assignIp, 32 ) AND netblock.busyout = TRUE; IF FOUND THEN - RETURN FALSE; + RETURN NULL; END IF; END IF; @@ -203,7 +203,7 @@ BEGIN WHERE netblock.network >>= assignIp; END IF; IF ( assignNasId IS NULL ) THEN - RETURN FALSE; + RETURN NULL; END IF; -- updates record @@ -213,7 +213,10 @@ BEGIN WHERE address = set_masklen( assignIp, 32 ) AND nasId IS NULL; - RETURN FOUND; + IF NOT FOUND THEN + RETURN NULL; + END IF; + RETURN set_masklen( assignIp, 32 ); END; $$; GRANT EXECUTE -- cgit v1.2.3