mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-03 15:35:17 +00:00
[#2166] Added pgsql session value fetch functions
src/share/database/scripts/pgsql/dhcpdb_create.pgsql src/share/database/scripts/pgsql/upgrade_6.2_to_7.0.sh.in src/share/database/scripts/pgsql/dhcpdb_drop.pgsql Added functions for getting config session values that handle unset and NULL values
This commit is contained in:
@@ -1715,6 +1715,79 @@ CREATE TRIGGER dhcp4_audit_modification_ts_update
|
|||||||
CREATE INDEX dhcp4_audit_idx1 ON dhcp4_audit (modification_type);
|
CREATE INDEX dhcp4_audit_idx1 ON dhcp4_audit (modification_type);
|
||||||
CREATE INDEX dhcp4_audit_idx2 ON dhcp4_audit (revision_id);
|
CREATE INDEX dhcp4_audit_idx2 ON dhcp4_audit (revision_id);
|
||||||
|
|
||||||
|
-- Fetches a text value from the session configuration.
|
||||||
|
-- param name name of the session variable to fetch
|
||||||
|
-- If the name is not found it returns NULL.
|
||||||
|
-- Postgresql allows you to store custom session values
|
||||||
|
-- but throws an exception if they have not first been
|
||||||
|
-- set. This allows us to be a bit more graceful.
|
||||||
|
CREATE OR REPLACE FUNCTION get_session_value(name text)
|
||||||
|
RETURNS TEXT
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
text_value TEXT := '';
|
||||||
|
BEGIN
|
||||||
|
text_value = current_setting(name);
|
||||||
|
RETURN(text_value);
|
||||||
|
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
RAISE NOTICE 'get_session_value(%) failed, sqlstate: %', name, sqlstate;
|
||||||
|
RETURN NULL;
|
||||||
|
END;$$
|
||||||
|
LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
-- Fetches an BIGINT value from the session configuration.
|
||||||
|
-- param name name of the session variable to fetch
|
||||||
|
-- If the name is not found it returns zero.
|
||||||
|
CREATE OR REPLACE FUNCTION get_session_big_int(name text)
|
||||||
|
RETURNS BIGINT
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
int_value BIGINT := 0;
|
||||||
|
text_value TEXT := '';
|
||||||
|
BEGIN
|
||||||
|
text_value = get_session_value(name);
|
||||||
|
IF text_value is NULL or text_value = '' THEN
|
||||||
|
RETURN(0);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
int_value = cast(text_value as BIGINT);
|
||||||
|
RETURN(int_value);
|
||||||
|
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
RAISE EXCEPTION 'get_session_big_int(%) failed - text:[%] , sqlstate: %', name, text_value, sqlstate;
|
||||||
|
|
||||||
|
END;$$
|
||||||
|
LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
|
||||||
|
-- Fetches an SMALLINT value from the session configuration.
|
||||||
|
-- param name name of the session variable to fetch
|
||||||
|
-- If the name is not found it returns zero.
|
||||||
|
CREATE OR REPLACE FUNCTION get_session_small_int(name text)
|
||||||
|
RETURNS SMALLINT
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
int_value SMALLINT := 0;
|
||||||
|
text_value TEXT := '';
|
||||||
|
BEGIN
|
||||||
|
text_value = get_session_value(name);
|
||||||
|
IF text_value is NULL or text_value = '' THEN
|
||||||
|
RETURN(0);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
int_value = cast(text_value as SMALLINT);
|
||||||
|
RETURN(int_value);
|
||||||
|
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
RAISE EXCEPTION 'get_session_small_int(%) failed - text:[%] , sqlstate: %', name, text_value, sqlstate;
|
||||||
|
|
||||||
|
END;$$
|
||||||
|
LANGUAGE plpgsql;
|
||||||
|
|
||||||
-- -----------------------------------------------------
|
-- -----------------------------------------------------
|
||||||
-- Stored procedure which creates a new entry in the
|
-- Stored procedure which creates a new entry in the
|
||||||
-- dhcp4_audit_revision table and sets appropriate session
|
-- dhcp4_audit_revision table and sets appropriate session
|
||||||
@@ -1760,9 +1833,8 @@ DECLARE
|
|||||||
srv_id BIGINT;
|
srv_id BIGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Fetch session value for disable_audit.
|
-- Fetch session value for disable_audit.
|
||||||
disable_audit := current_setting('kea.disable_audit');
|
disable_audit := get_session_small_int('kea.disable_audit');
|
||||||
|
IF disable_audit = 0 THEN
|
||||||
IF disable_audit IS NULL OR disable_audit = 0 THEN
|
|
||||||
SELECT id INTO STRICT srv_id FROM dhcp4_server WHERE tag = server_tag;
|
SELECT id INTO STRICT srv_id FROM dhcp4_server WHERE tag = server_tag;
|
||||||
INSERT INTO dhcp4_audit_revision (modification_ts, server_id, log_message)
|
INSERT INTO dhcp4_audit_revision (modification_ts, server_id, log_message)
|
||||||
VALUES (audit_ts, srv_id, audit_log_message) returning id INTO audit_revision_id;
|
VALUES (audit_ts, srv_id, audit_log_message) returning id INTO audit_revision_id;
|
||||||
@@ -1805,11 +1877,11 @@ DECLARE
|
|||||||
disable_audit SMALLINT := 0;
|
disable_audit SMALLINT := 0;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Fetch session value for disable_audit.
|
-- Fetch session value for disable_audit.
|
||||||
disable_audit := current_setting('kea.disable_audit');
|
disable_audit := get_session_small_int('kea.disable_audit');
|
||||||
|
|
||||||
IF disable_audit IS NULL OR disable_audit = 0 THEN
|
IF disable_audit IS NULL OR disable_audit = 0 THEN
|
||||||
-- Fetch session value most recently created audit_revision_id.
|
-- Fetch session value most recently created audit_revision_id.
|
||||||
audit_revision_id := current_setting('kea.audit_revision_id');
|
audit_revision_id := get_session_big_int('kea.audit_revision_id');
|
||||||
INSERT INTO dhcp4_audit (object_type, object_id, modification_type, revision_id)
|
INSERT INTO dhcp4_audit (object_type, object_id, modification_type, revision_id)
|
||||||
VALUES (object_type_val, object_id_val,
|
VALUES (object_type_val, object_id_val,
|
||||||
(SELECT id FROM modification WHERE modification_type = modification_type_val),
|
(SELECT id FROM modification WHERE modification_type = modification_type_val),
|
||||||
@@ -2272,7 +2344,7 @@ DECLARE
|
|||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
-- Session variables are set upon a client class update.
|
-- Session variables are set upon a client class update.
|
||||||
client_class_id := current_setting('kea.client_class_id');
|
client_class_id := get_session_big_int('kea.client_class_id');
|
||||||
IF client_class_id IS NOT NULL THEN
|
IF client_class_id IS NOT NULL THEN
|
||||||
-- Check if any of the classes depend on this class. If not,
|
-- Check if any of the classes depend on this class. If not,
|
||||||
-- it is ok to change the dependency on KNOWN/UNKNOWN.
|
-- it is ok to change the dependency on KNOWN/UNKNOWN.
|
||||||
@@ -2282,8 +2354,8 @@ BEGIN
|
|||||||
) THEN
|
) THEN
|
||||||
-- Using the session variables, determine whether the client class
|
-- Using the session variables, determine whether the client class
|
||||||
-- depended on KNOWN/UNKNOWN before the update.
|
-- depended on KNOWN/UNKNOWN before the update.
|
||||||
depend_on_known_directly := current_setting('kea.depend_on_known_directly');
|
depend_on_known_directly := get_session_small_int('kea.depend_on_known_directly');
|
||||||
depend_on_known_indirectly := current_setting('kea.depend_on_known_indirectly');
|
depend_on_known_indirectly := get_session_small_int('kea.depend_on_known_indirectly');
|
||||||
IF depend_on_known_directly <> 0 OR depend_on_known_indirectly <> 0 THEN
|
IF depend_on_known_directly <> 0 OR depend_on_known_indirectly <> 0 THEN
|
||||||
SET depended = 1;
|
SET depended = 1;
|
||||||
END IF;
|
END IF;
|
||||||
@@ -2370,9 +2442,8 @@ DECLARE
|
|||||||
srv_id BIGINT;
|
srv_id BIGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Fetch session value for disable_audit.
|
-- Fetch session value for disable_audit.
|
||||||
disable_audit := current_setting('kea.disable_audit');
|
disable_audit := get_session_small_int('kea.disable_audit');
|
||||||
|
IF disable_audit = 0 THEN
|
||||||
IF disable_audit IS NULL OR disable_audit = 0 THEN
|
|
||||||
SELECT id INTO STRICT srv_id FROM dhcp6_server WHERE tag = server_tag;
|
SELECT id INTO STRICT srv_id FROM dhcp6_server WHERE tag = server_tag;
|
||||||
INSERT INTO dhcp6_audit_revision (modification_ts, server_id, log_message)
|
INSERT INTO dhcp6_audit_revision (modification_ts, server_id, log_message)
|
||||||
VALUES (audit_ts, srv_id, audit_log_message) returning id INTO audit_revision_id;
|
VALUES (audit_ts, srv_id, audit_log_message) returning id INTO audit_revision_id;
|
||||||
@@ -2415,11 +2486,10 @@ DECLARE
|
|||||||
disable_audit SMALLINT := 0;
|
disable_audit SMALLINT := 0;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Fetch session value for disable_audit.
|
-- Fetch session value for disable_audit.
|
||||||
disable_audit := current_setting('kea.disable_audit');
|
disable_audit := get_session_small_int('kea.disable_audit');
|
||||||
|
IF disable_audit = 0 THEN
|
||||||
IF disable_audit IS NULL OR disable_audit = 0 THEN
|
|
||||||
-- Fetch session value most recently created audit_revision_id.
|
-- Fetch session value most recently created audit_revision_id.
|
||||||
audit_revision_id := current_setting('kea.audit_revision_id');
|
audit_revision_id := get_session_big_int('kea.audit_revision_id');
|
||||||
INSERT INTO dhcp6_audit (object_type, object_id, modification_type, revision_id)
|
INSERT INTO dhcp6_audit (object_type, object_id, modification_type, revision_id)
|
||||||
VALUES (object_type_val, object_id_val,
|
VALUES (object_type_val, object_id_val,
|
||||||
(SELECT id FROM modification WHERE modification_type = modification_type_val),
|
(SELECT id FROM modification WHERE modification_type = modification_type_val),
|
||||||
@@ -2877,7 +2947,7 @@ DECLARE
|
|||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
-- Session variables are set upon a client class update.
|
-- Session variables are set upon a client class update.
|
||||||
client_class_id := current_setting('kea.client_class_id');
|
client_class_id := get_session_big_int('kea.client_class_id');
|
||||||
IF client_class_id IS NOT NULL THEN
|
IF client_class_id IS NOT NULL THEN
|
||||||
-- Check if any of the classes depend on this class. If not,
|
-- Check if any of the classes depend on this class. If not,
|
||||||
-- it is ok to change the dependency on KNOWN/UNKNOWN.
|
-- it is ok to change the dependency on KNOWN/UNKNOWN.
|
||||||
@@ -2887,8 +2957,8 @@ BEGIN
|
|||||||
) THEN
|
) THEN
|
||||||
-- Using the session variables, determine whether the client class
|
-- Using the session variables, determine whether the client class
|
||||||
-- depended on KNOWN/UNKNOWN before the update.
|
-- depended on KNOWN/UNKNOWN before the update.
|
||||||
depend_on_known_directly := current_setting('kea.depend_on_known_directly');
|
depend_on_known_directly := get_session_small_int('kea.depend_on_known_directly');
|
||||||
depend_on_known_indirectly := current_setting('kea.depend_on_known_indirectly');
|
depend_on_known_indirectly := get_session_small_int('kea.depend_on_known_indirectly');
|
||||||
IF depend_on_known_directly <> 0 OR depend_on_known_indirectly <> 0 THEN
|
IF depend_on_known_directly <> 0 OR depend_on_known_indirectly <> 0 THEN
|
||||||
SET depended = 1;
|
SET depended = 1;
|
||||||
END IF;
|
END IF;
|
||||||
@@ -3143,6 +3213,7 @@ DECLARE
|
|||||||
snid VARCHAR(128);
|
snid VARCHAR(128);
|
||||||
sid BIGINT;
|
sid BIGINT;
|
||||||
cascade_transaction SMALLINT := 0;
|
cascade_transaction SMALLINT := 0;
|
||||||
|
ct TEXT;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Cascade transaction flag is set to 1 to prevent creation of
|
-- Cascade transaction flag is set to 1 to prevent creation of
|
||||||
-- the audit entries for the options when the options are
|
-- the audit entries for the options when the options are
|
||||||
@@ -3156,8 +3227,9 @@ BEGIN
|
|||||||
-- entire subnet. The only case when the object_type will be
|
-- entire subnet. The only case when the object_type will be
|
||||||
-- set to 'dhcp4_options' is when a global option is added.
|
-- set to 'dhcp4_options' is when a global option is added.
|
||||||
-- Global options do not have the owner.
|
-- Global options do not have the owner.
|
||||||
cascade_transaction := current_setting('kea.cascade_transaction');
|
|
||||||
IF cascade_transaction IS NULL OR cascade_transaction = 0 THEN
|
cascade_transaction := get_session_small_int('kea.cascade_transaction');
|
||||||
|
IF cascade_transaction = 0 THEN
|
||||||
-- todo: host manager hasn't been updated to use audit
|
-- todo: host manager hasn't been updated to use audit
|
||||||
-- mechanisms so ignore host specific options for now.
|
-- mechanisms so ignore host specific options for now.
|
||||||
IF scope_id = 0 THEN
|
IF scope_id = 0 THEN
|
||||||
@@ -3419,8 +3491,8 @@ BEGIN
|
|||||||
-- entire subnet. The only case when the object_type will be
|
-- entire subnet. The only case when the object_type will be
|
||||||
-- set to 'dhcp6_options' is when a global option is added.
|
-- set to 'dhcp6_options' is when a global option is added.
|
||||||
-- Global options do not have the owner.
|
-- Global options do not have the owner.
|
||||||
cascade_transaction := current_setting('kea.cascade_transaction');
|
cascade_transaction := get_session_small_int('kea.cascade_transaction');
|
||||||
IF cascade_transaction IS NULL OR cascade_transaction = 0 THEN
|
IF cascade_transaction = 0 THEN
|
||||||
-- todo: host manager hasn't been updated to use audit
|
-- todo: host manager hasn't been updated to use audit
|
||||||
-- mechanisms so ignore host specific options for now.
|
-- mechanisms so ignore host specific options for now.
|
||||||
IF scope_id = 0 THEN
|
IF scope_id = 0 THEN
|
||||||
|
@@ -162,4 +162,8 @@ DROP TABLE IF EXISTS modification CASCADE;
|
|||||||
DROP TABLE IF EXISTS parameter_data_type CASCADE;
|
DROP TABLE IF EXISTS parameter_data_type CASCADE;
|
||||||
DROP TABLE IF EXISTS ddns_replace_client_name_types CASCADE;
|
DROP TABLE IF EXISTS ddns_replace_client_name_types CASCADE;
|
||||||
DROP FUNCTION IF EXISTS modification_ts_update();
|
DROP FUNCTION IF EXISTS modification_ts_update();
|
||||||
|
DROP FUNCTION IF EXISTS get_session_small_int(name text);
|
||||||
|
DROP FUNCTION IF EXISTS get_session_big_int(name text);
|
||||||
|
DROP FUNCTION IF EXISTS get_session_value(name text);
|
||||||
|
|
||||||
|
|
||||||
|
@@ -721,6 +721,79 @@ CREATE TRIGGER dhcp4_audit_modification_ts_update
|
|||||||
CREATE INDEX dhcp4_audit_idx1 ON dhcp4_audit (modification_type);
|
CREATE INDEX dhcp4_audit_idx1 ON dhcp4_audit (modification_type);
|
||||||
CREATE INDEX dhcp4_audit_idx2 ON dhcp4_audit (revision_id);
|
CREATE INDEX dhcp4_audit_idx2 ON dhcp4_audit (revision_id);
|
||||||
|
|
||||||
|
-- Fetches a text value from the session configuration.
|
||||||
|
-- param name name of the session variable to fetch
|
||||||
|
-- If the name is not found it returns NULL.
|
||||||
|
-- Postgresql allows you to store custom session values
|
||||||
|
-- but throws an exception if they have not first been
|
||||||
|
-- set. This allows us to be a bit more graceful.
|
||||||
|
CREATE OR REPLACE FUNCTION get_session_value(name text)
|
||||||
|
RETURNS TEXT
|
||||||
|
AS \$\$
|
||||||
|
DECLARE
|
||||||
|
text_value TEXT := '';
|
||||||
|
BEGIN
|
||||||
|
text_value = current_setting(name);
|
||||||
|
RETURN(text_value);
|
||||||
|
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
RAISE NOTICE 'get_session_value(%) failed, sqlstate: %', name, sqlstate;
|
||||||
|
RETURN NULL;
|
||||||
|
END;\$\$
|
||||||
|
LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
-- Fetches an BIGINT value from the session configuration.
|
||||||
|
-- param name name of the session variable to fetch
|
||||||
|
-- If the name is not found it returns zero.
|
||||||
|
CREATE OR REPLACE FUNCTION get_session_big_int(name text)
|
||||||
|
RETURNS BIGINT
|
||||||
|
AS \$\$
|
||||||
|
DECLARE
|
||||||
|
int_value BIGINT := 0;
|
||||||
|
text_value TEXT := '';
|
||||||
|
BEGIN
|
||||||
|
text_value = get_session_value(name);
|
||||||
|
IF text_value is NULL or text_value = '' THEN
|
||||||
|
RETURN(0);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
int_value = cast(text_value as BIGINT);
|
||||||
|
RETURN(int_value);
|
||||||
|
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
RAISE EXCEPTION 'get_session_big_int(%) failed - text:[%] , sqlstate: %', name, text_value, sqlstate;
|
||||||
|
|
||||||
|
END;\$\$
|
||||||
|
LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
|
||||||
|
-- Fetches an SMALLINT value from the session configuration.
|
||||||
|
-- param name name of the session variable to fetch
|
||||||
|
-- If the name is not found it returns zero.
|
||||||
|
CREATE OR REPLACE FUNCTION get_session_small_int(name text)
|
||||||
|
RETURNS SMALLINT
|
||||||
|
AS \$\$
|
||||||
|
DECLARE
|
||||||
|
int_value SMALLINT := 0;
|
||||||
|
text_value TEXT := '';
|
||||||
|
BEGIN
|
||||||
|
text_value = get_session_value(name);
|
||||||
|
IF text_value is NULL or text_value = '' THEN
|
||||||
|
RETURN(0);
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
int_value = cast(text_value as SMALLINT);
|
||||||
|
RETURN(int_value);
|
||||||
|
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
RAISE EXCEPTION 'get_session_small_int(%) failed - text:[%] , sqlstate: %', name, text_value, sqlstate;
|
||||||
|
|
||||||
|
END;\$\$
|
||||||
|
LANGUAGE plpgsql;
|
||||||
|
|
||||||
-- -----------------------------------------------------
|
-- -----------------------------------------------------
|
||||||
-- Stored procedure which creates a new entry in the
|
-- Stored procedure which creates a new entry in the
|
||||||
-- dhcp4_audit_revision table and sets appropriate session
|
-- dhcp4_audit_revision table and sets appropriate session
|
||||||
@@ -766,9 +839,8 @@ DECLARE
|
|||||||
srv_id BIGINT;
|
srv_id BIGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Fetch session value for disable_audit.
|
-- Fetch session value for disable_audit.
|
||||||
disable_audit := current_setting('kea.disable_audit');
|
disable_audit := get_session_small_int('kea.disable_audit');
|
||||||
|
IF disable_audit = 0 THEN
|
||||||
IF disable_audit IS NULL OR disable_audit = 0 THEN
|
|
||||||
SELECT id INTO STRICT srv_id FROM dhcp4_server WHERE tag = server_tag;
|
SELECT id INTO STRICT srv_id FROM dhcp4_server WHERE tag = server_tag;
|
||||||
INSERT INTO dhcp4_audit_revision (modification_ts, server_id, log_message)
|
INSERT INTO dhcp4_audit_revision (modification_ts, server_id, log_message)
|
||||||
VALUES (audit_ts, srv_id, audit_log_message) returning id INTO audit_revision_id;
|
VALUES (audit_ts, srv_id, audit_log_message) returning id INTO audit_revision_id;
|
||||||
@@ -811,11 +883,11 @@ DECLARE
|
|||||||
disable_audit SMALLINT := 0;
|
disable_audit SMALLINT := 0;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Fetch session value for disable_audit.
|
-- Fetch session value for disable_audit.
|
||||||
disable_audit := current_setting('kea.disable_audit');
|
disable_audit := get_session_small_int('kea.disable_audit');
|
||||||
|
|
||||||
IF disable_audit IS NULL OR disable_audit = 0 THEN
|
IF disable_audit IS NULL OR disable_audit = 0 THEN
|
||||||
-- Fetch session value most recently created audit_revision_id.
|
-- Fetch session value most recently created audit_revision_id.
|
||||||
audit_revision_id := current_setting('kea.audit_revision_id');
|
audit_revision_id := get_session_big_int('kea.audit_revision_id');
|
||||||
INSERT INTO dhcp4_audit (object_type, object_id, modification_type, revision_id)
|
INSERT INTO dhcp4_audit (object_type, object_id, modification_type, revision_id)
|
||||||
VALUES (object_type_val, object_id_val,
|
VALUES (object_type_val, object_id_val,
|
||||||
(SELECT id FROM modification WHERE modification_type = modification_type_val),
|
(SELECT id FROM modification WHERE modification_type = modification_type_val),
|
||||||
@@ -1278,7 +1350,7 @@ DECLARE
|
|||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
-- Session variables are set upon a client class update.
|
-- Session variables are set upon a client class update.
|
||||||
client_class_id := current_setting('kea.client_class_id');
|
client_class_id := get_session_big_int('kea.client_class_id');
|
||||||
IF client_class_id IS NOT NULL THEN
|
IF client_class_id IS NOT NULL THEN
|
||||||
-- Check if any of the classes depend on this class. If not,
|
-- Check if any of the classes depend on this class. If not,
|
||||||
-- it is ok to change the dependency on KNOWN/UNKNOWN.
|
-- it is ok to change the dependency on KNOWN/UNKNOWN.
|
||||||
@@ -1288,8 +1360,8 @@ BEGIN
|
|||||||
) THEN
|
) THEN
|
||||||
-- Using the session variables, determine whether the client class
|
-- Using the session variables, determine whether the client class
|
||||||
-- depended on KNOWN/UNKNOWN before the update.
|
-- depended on KNOWN/UNKNOWN before the update.
|
||||||
depend_on_known_directly := current_setting('kea.depend_on_known_directly');
|
depend_on_known_directly := get_session_small_int('kea.depend_on_known_directly');
|
||||||
depend_on_known_indirectly := current_setting('kea.depend_on_known_indirectly');
|
depend_on_known_indirectly := get_session_small_int('kea.depend_on_known_indirectly');
|
||||||
IF depend_on_known_directly <> 0 OR depend_on_known_indirectly <> 0 THEN
|
IF depend_on_known_directly <> 0 OR depend_on_known_indirectly <> 0 THEN
|
||||||
SET depended = 1;
|
SET depended = 1;
|
||||||
END IF;
|
END IF;
|
||||||
@@ -1376,9 +1448,8 @@ DECLARE
|
|||||||
srv_id BIGINT;
|
srv_id BIGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Fetch session value for disable_audit.
|
-- Fetch session value for disable_audit.
|
||||||
disable_audit := current_setting('kea.disable_audit');
|
disable_audit := get_session_small_int('kea.disable_audit');
|
||||||
|
IF disable_audit = 0 THEN
|
||||||
IF disable_audit IS NULL OR disable_audit = 0 THEN
|
|
||||||
SELECT id INTO STRICT srv_id FROM dhcp6_server WHERE tag = server_tag;
|
SELECT id INTO STRICT srv_id FROM dhcp6_server WHERE tag = server_tag;
|
||||||
INSERT INTO dhcp6_audit_revision (modification_ts, server_id, log_message)
|
INSERT INTO dhcp6_audit_revision (modification_ts, server_id, log_message)
|
||||||
VALUES (audit_ts, srv_id, audit_log_message) returning id INTO audit_revision_id;
|
VALUES (audit_ts, srv_id, audit_log_message) returning id INTO audit_revision_id;
|
||||||
@@ -1421,11 +1492,10 @@ DECLARE
|
|||||||
disable_audit SMALLINT := 0;
|
disable_audit SMALLINT := 0;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Fetch session value for disable_audit.
|
-- Fetch session value for disable_audit.
|
||||||
disable_audit := current_setting('kea.disable_audit');
|
disable_audit := get_session_small_int('kea.disable_audit');
|
||||||
|
IF disable_audit = 0 THEN
|
||||||
IF disable_audit IS NULL OR disable_audit = 0 THEN
|
|
||||||
-- Fetch session value most recently created audit_revision_id.
|
-- Fetch session value most recently created audit_revision_id.
|
||||||
audit_revision_id := current_setting('kea.audit_revision_id');
|
audit_revision_id := get_session_big_int('kea.audit_revision_id');
|
||||||
INSERT INTO dhcp6_audit (object_type, object_id, modification_type, revision_id)
|
INSERT INTO dhcp6_audit (object_type, object_id, modification_type, revision_id)
|
||||||
VALUES (object_type_val, object_id_val,
|
VALUES (object_type_val, object_id_val,
|
||||||
(SELECT id FROM modification WHERE modification_type = modification_type_val),
|
(SELECT id FROM modification WHERE modification_type = modification_type_val),
|
||||||
@@ -1883,7 +1953,7 @@ DECLARE
|
|||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
-- Session variables are set upon a client class update.
|
-- Session variables are set upon a client class update.
|
||||||
client_class_id := current_setting('kea.client_class_id');
|
client_class_id := get_session_big_int('kea.client_class_id');
|
||||||
IF client_class_id IS NOT NULL THEN
|
IF client_class_id IS NOT NULL THEN
|
||||||
-- Check if any of the classes depend on this class. If not,
|
-- Check if any of the classes depend on this class. If not,
|
||||||
-- it is ok to change the dependency on KNOWN/UNKNOWN.
|
-- it is ok to change the dependency on KNOWN/UNKNOWN.
|
||||||
@@ -1893,8 +1963,8 @@ BEGIN
|
|||||||
) THEN
|
) THEN
|
||||||
-- Using the session variables, determine whether the client class
|
-- Using the session variables, determine whether the client class
|
||||||
-- depended on KNOWN/UNKNOWN before the update.
|
-- depended on KNOWN/UNKNOWN before the update.
|
||||||
depend_on_known_directly := current_setting('kea.depend_on_known_directly');
|
depend_on_known_directly := get_session_small_int('kea.depend_on_known_directly');
|
||||||
depend_on_known_indirectly := current_setting('kea.depend_on_known_indirectly');
|
depend_on_known_indirectly := get_session_small_int('kea.depend_on_known_indirectly');
|
||||||
IF depend_on_known_directly <> 0 OR depend_on_known_indirectly <> 0 THEN
|
IF depend_on_known_directly <> 0 OR depend_on_known_indirectly <> 0 THEN
|
||||||
SET depended = 1;
|
SET depended = 1;
|
||||||
END IF;
|
END IF;
|
||||||
@@ -2149,6 +2219,7 @@ DECLARE
|
|||||||
snid VARCHAR(128);
|
snid VARCHAR(128);
|
||||||
sid BIGINT;
|
sid BIGINT;
|
||||||
cascade_transaction SMALLINT := 0;
|
cascade_transaction SMALLINT := 0;
|
||||||
|
ct TEXT;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Cascade transaction flag is set to 1 to prevent creation of
|
-- Cascade transaction flag is set to 1 to prevent creation of
|
||||||
-- the audit entries for the options when the options are
|
-- the audit entries for the options when the options are
|
||||||
@@ -2162,8 +2233,9 @@ BEGIN
|
|||||||
-- entire subnet. The only case when the object_type will be
|
-- entire subnet. The only case when the object_type will be
|
||||||
-- set to 'dhcp4_options' is when a global option is added.
|
-- set to 'dhcp4_options' is when a global option is added.
|
||||||
-- Global options do not have the owner.
|
-- Global options do not have the owner.
|
||||||
cascade_transaction := current_setting('kea.cascade_transaction');
|
|
||||||
IF cascade_transaction IS NULL OR cascade_transaction = 0 THEN
|
cascade_transaction := get_session_small_int('kea.cascade_transaction');
|
||||||
|
IF cascade_transaction = 0 THEN
|
||||||
-- todo: host manager hasn't been updated to use audit
|
-- todo: host manager hasn't been updated to use audit
|
||||||
-- mechanisms so ignore host specific options for now.
|
-- mechanisms so ignore host specific options for now.
|
||||||
IF scope_id = 0 THEN
|
IF scope_id = 0 THEN
|
||||||
@@ -2425,8 +2497,8 @@ BEGIN
|
|||||||
-- entire subnet. The only case when the object_type will be
|
-- entire subnet. The only case when the object_type will be
|
||||||
-- set to 'dhcp6_options' is when a global option is added.
|
-- set to 'dhcp6_options' is when a global option is added.
|
||||||
-- Global options do not have the owner.
|
-- Global options do not have the owner.
|
||||||
cascade_transaction := current_setting('kea.cascade_transaction');
|
cascade_transaction := get_session_small_int('kea.cascade_transaction');
|
||||||
IF cascade_transaction IS NULL OR cascade_transaction = 0 THEN
|
IF cascade_transaction = 0 THEN
|
||||||
-- todo: host manager hasn't been updated to use audit
|
-- todo: host manager hasn't been updated to use audit
|
||||||
-- mechanisms so ignore host specific options for now.
|
-- mechanisms so ignore host specific options for now.
|
||||||
IF scope_id = 0 THEN
|
IF scope_id = 0 THEN
|
||||||
|
Reference in New Issue
Block a user