From d0d9a43d752a1c098762fe45d04485a862731a7b Mon Sep 17 00:00:00 2001 From: "David M. Syzdek" Date: Thu, 9 May 2019 13:21:04 -0800 Subject: Adding function to add IP assignment --- notes/projects/radius/sql/ippool-schema.sql | 37 ++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/notes/projects/radius/sql/ippool-schema.sql b/notes/projects/radius/sql/ippool-schema.sql index ee12658..f0b259d 100644 --- a/notes/projects/radius/sql/ippool-schema.sql +++ b/notes/projects/radius/sql/ippool-schema.sql @@ -127,7 +127,7 @@ CREATE TABLE IF NOT EXISTS netblock poolId INTEGER NOT NULL, regionId INTEGER, active BOOLEAN NOT NULL DEFAULT TRUE, - description VARCHAR(32), + description VARCHAR(256), PRIMARY KEY ( id ), FOREIGN KEY ( poolId ) REFERENCES pool @@ -262,6 +262,41 @@ END; $$; +/* + * updates timestamp of addresses + * + * returns trigger + */ +CREATE OR REPLACE FUNCTION ip_assign +( + assignIp INET, + assignUser TEXT, + assignNas TEXT DEFAULT NULL, + assignSess TEXT DEFAULT NULL +) + RETURNS BOOLEAN + LANGUAGE plpgsql + AS $$ +DECLARE +BEGIN + + -- sets defaults + IF ( assignSess IS NULL ) THEN + assignSess := 'user:' || assignUser; + END IF; + + -- updates record + UPDATE ip + SET nasId = ( SELECT id FROM nas WHERE name LIKE assignNas ), + username = assignUser, + acctSession = assignSess + WHERE address = set_masklen( assignIp, 32 ); + + RETURN FOUND; +END; +$$; + + /* * updates timestamp of addresses * -- cgit v1.2.3