count=$(echo "${OUTPUT}" | grep -Fci "1020:3040:5060:7100:90a0:b0c0:de0:f000")
assert_eq 1 "${count}" "incrementV6Prefix output is wrong. (expected count %d, actual %d)"
- # Verify createSharedFlqPool4.
- qry="call createSharedFlqPool4(inet_aton('127.0.0.0'), inet_aton('127.0.0.1'), 0, 0)"
+ # Verify sflqCreateFlqPool4.
+ qry="call sflqCreateFlqPool4(inet_aton('127.0.0.0'), inet_aton('127.0.0.1'), 0, 0)"
run_command \
mysql_execute "${qry}"
- assert_eq 0 "${EXIT_CODE}" "call createSharedFlqPool4 failed. (expected status code %d, returned %d)"
+ assert_eq 0 "${EXIT_CODE}" "call sflqCreateFlqPool4 failed. (expected status code %d, returned %d)"
qry="select count(start_address) from flq_pool4 where start_address = inet_aton('127.0.0.0')\
and end_address = inet_aton('127.0.0.1')"
count="${OUTPUT}"
assert_eq 2 "${count}" "free_lease4 content wrong. (expected count %d, actual %d)"
- # Verify pickFreeLease4.
- qry="select inet_ntoa(pickFreeLease4(inet_aton('127.0.0.0'),inet_aton('127.0.0.1')))"
+ # Verify sflqPickFreeLease4.
+ qry="select inet_ntoa(sflqPickFreeLease4(inet_aton('127.0.0.0'),inet_aton('127.0.0.1')))"
run_command \
mysql_execute "${qry}"
- assert_eq 0 "${EXIT_CODE}" "select from pickFreeLease4 failed. (expected status code %d, returned %d)"
+ assert_eq 0 "${EXIT_CODE}" "select from sflqPickFreeLease4 failed. (expected status code %d, returned %d)"
assert_str_eq '127.0.0.0' "${OUTPUT}"
- # Verify createSharedFlqPool6.
- qry="call createSharedFlqPool6('3001::', '3001::10', 2, 128, 1, 0)"
+ # Verify sflqCreateFlqPool6.
+ qry="call sflqCreateFlqPool6('3001::', '3001::10', 2, 128, 1, 0)"
run_command \
mysql_execute "${qry}"
- assert_eq 0 "${EXIT_CODE}" "call createSharedFlqPool6 failed. (expected status code %d, returned %d)"
+ assert_eq 0 "${EXIT_CODE}" "call sflqCreateFlqPool6 failed. (expected status code %d, returned %d)"
qry="select count(start_address) from flq_pool6 where start_address = '3001::'\
and end_address = '3001::10'"
count="${OUTPUT}"
assert_eq 17 "${count}" "free_lease6 content wrong. (expected count %d, actual %d)"
- # Verify pickFreeLease6.
- qry="select pickFreeLease6('3001::', '3001::10')"
+ # Verify sflqPickFreeLease6.
+ qry="select sflqPickFreeLease6('3001::', '3001::10')"
run_command \
mysql_execute "${qry}"
- assert_eq 0 "${EXIT_CODE}" "select from pickFreeLease6 failed. (expected status code %d, returned %d)"
+ assert_eq 0 "${EXIT_CODE}" "select from sflqPickFreeLease6 failed. (expected status code %d, returned %d)"
assert_str_eq '3001::1' "${OUTPUT}"
}
test_finish 0
}
-# Verifies basic SFLQ for V4
-mysql_SFLQ4() {
- test_start "mysql.mysql_SFLQ4"
+# Verifies SFLQ sflqPickFreeLease4 function
+mysql_sflqPickFreeLease4() {
+ test_start "mysql.mysql_sflqPickFreeLease4"
# Let's wipe the whole database
mysql_wipe
# We need to create an older database with lease data so we can
- sql="call createSharedFlqPool4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2'), 1, false)"
- run_statement "createSharedFlqPool4" "$sql"
+ sql="call sflqCreateFlqPool4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2'), 1, false)"
+ run_statement "sflqCreateFlqPool4" "$sql"
- sql="select inet_ntoa(pickFreeLease4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2')))"
- run_statement "pickFreeLease4.1" "$sql" "127.0.0.0";
- run_statement "pickFreeLease4.2" "$sql" "127.0.0.1";
- run_statement "pickFreeLease4.3" "$sql" "127.0.0.2";
+ sql="select inet_ntoa(sflqPickFreeLease4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2')))"
+ run_statement "sflqPickFreeLease4.1" "$sql" "127.0.0.0";
+ run_statement "sflqPickFreeLease4.2" "$sql" "127.0.0.1";
+ run_statement "sflqPickFreeLease4.3" "$sql" "127.0.0.2";
sql="insert into lease4 (address, subnet_id) values (inet_aton('127.0.0.1'), 1)";
run_statement "insert 127.0.0.1" "$sql" "";
- sql="select inet_ntoa(pickFreeLease4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2')))"
- run_statement "pickFreeLease4.4" "$sql" "127.0.0.0";
- run_statement "pickFreeLease4.5" "$sql" "127.0.0.2";
- run_statement "pickFreeLease4.6" "$sql" "127.0.0.0";
+ sql="select inet_ntoa(sflqPickFreeLease4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2')))"
+ run_statement "sflqPickFreeLease4.4" "$sql" "127.0.0.0";
+ run_statement "sflqPickFreeLease4.5" "$sql" "127.0.0.2";
+ run_statement "sflqPickFreeLease4.6" "$sql" "127.0.0.0";
sql="update lease4 set state = 2 where address = (inet_aton('127.0.0.1'));"
run_statement "update 127.0.0.1" "$sql" "";
- sql="select inet_ntoa(pickFreeLease4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2')))"
- run_statement "pickFreeLease4.7" "$sql" "127.0.0.1";
- run_statement "pickFreeLease4.8" "$sql" "127.0.0.2";
- run_statement "pickFreeLease4.9" "$sql" "127.0.0.0";
+ sql="select inet_ntoa(sflqPickFreeLease4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2')))"
+ run_statement "sflqPickFreeLease4.7" "$sql" "127.0.0.1";
+ run_statement "sflqPickFreeLease4.8" "$sql" "127.0.0.2";
+ run_statement "sflqPickFreeLease4.9" "$sql" "127.0.0.0";
sql="delete from lease4"
run_statement "delete 127.0.0.1" "$sql" "";
- sql="select inet_ntoa(pickFreeLease4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2')))"
- run_statement "pickFreeLease4.10" "$sql" "127.0.0.1";
- run_statement "pickFreeLease4.11" "$sql" "127.0.0.2";
- run_statement "pickFreeLease4.12" "$sql" "127.0.0.0";
+ sql="select inet_ntoa(sflqPickFreeLease4(inet_aton('127.0.0.0'), inet_aton('127.0.0.2')))"
+ run_statement "sflqPickFreeLease4.10" "$sql" "127.0.0.1";
+ run_statement "sflqPickFreeLease4.11" "$sql" "127.0.0.2";
+ run_statement "sflqPickFreeLease4.12" "$sql" "127.0.0.0";
# Let's wipe the whole database
mysql_wipe
test_finish 0
}
-# Verifies basic SFLQ for V6
-mysql_SFLQ6() {
- test_start "mysql.mysql_SFLQ6"
+# Verifies SFLQ sflqPickFreeLease6 function
+mysql_sflqPickFreeLease6() {
+ test_start "mysql.mysql_sflqPickFreeLease6"
# Let's wipe the whole database
mysql_wipe
# We need to create an older database with lease data so we can
- sql="call createSharedFlqPool6('3001::', '3001::02', 1, 128, 1, false)"
- run_statement "createSharedFlqPool6" "$sql"
+ sql="call sflqCreateFlqPool6('3001::', '3001::02', 1, 128, 1, false)"
+ run_statement "sflqCreateFlqPool6" "$sql"
- sql="select pickFreeLease6('3001::', '3001::02')"
- run_statement "pickFreeLease6.1" "$sql" "3001::1";
- run_statement "pickFreeLease6.2" "$sql" "3001::2";
- run_statement "pickFreeLease6.3" "$sql" "3001::";
+ sql="select sflqPickFreeLease6('3001::', '3001::02')"
+ run_statement "sflqPickFreeLease6.1" "$sql" "3001::1";
+ run_statement "sflqPickFreeLease6.2" "$sql" "3001::2";
+ run_statement "sflqPickFreeLease6.3" "$sql" "3001::";
sql="insert into lease6 (address, lease_type, subnet_id) values (inet6_aton('3001::1'), 1, 1)";
run_statement "insert 3001::1" "$sql" "";
- sql="select pickFreeLease6('3001::', '3001::02')"
- run_statement "pickFreeLease6.4" "$sql" "3001::2";
- run_statement "pickFreeLease6.5" "$sql" "3001::";
- run_statement "pickFreeLease6.6" "$sql" "3001::2";
+ sql="select sflqPickFreeLease6('3001::', '3001::02')"
+ run_statement "sflqPickFreeLease6.4" "$sql" "3001::2";
+ run_statement "sflqPickFreeLease6.5" "$sql" "3001::";
+ run_statement "sflqPickFreeLease6.6" "$sql" "3001::2";
sql="update lease6 set state = 2 where address = (inet6_aton('3001::1'));"
run_statement "update 3001::1" "$sql" "";
- sql="select pickFreeLease6('3001::', '3001::02')"
- run_statement "pickFreeLease6.7" "$sql" "3001::";
- run_statement "pickFreeLease6.8" "$sql" "3001::1";
- run_statement "pickFreeLease6.9" "$sql" "3001::2";
+ sql="select sflqPickFreeLease6('3001::', '3001::02')"
+ run_statement "sflqPickFreeLease6.7" "$sql" "3001::";
+ run_statement "sflqPickFreeLease6.8" "$sql" "3001::1";
+ run_statement "sflqPickFreeLease6.9" "$sql" "3001::2";
sql="delete from lease6"
run_statement "delete 3001::1" "$sql" "";
- sql="select pickFreeLease6('3001::', '3001::02')"
- run_statement "pickFreeLease6.10" "$sql" "3001::";
- run_statement "pickFreeLease6.11" "$sql" "3001::1";
- run_statement "pickFreeLease6.12" "$sql" "3001::2";
+ sql="select sflqPickFreeLease6('3001::', '3001::02')"
+ run_statement "sflqPickFreeLease6.10" "$sql" "3001::";
+ run_statement "sflqPickFreeLease6.11" "$sql" "3001::1";
+ run_statement "sflqPickFreeLease6.12" "$sql" "3001::2";
# Let's wipe the whole database
mysql_wipe
mysql_remove_control_socket_parameters_test
mysql_migrate_client_class_test
mysql_migrate_dhcpX_options_client_classes
-mysql_SFLQ4
-mysql_SFLQ6
+mysql_sflqPickFreeLease4
+mysql_sflqPickFreeLease6
assert_str_eq '\x102030405060710090a0b0c00de0f000' "${OUTPUT}"
- # Verify createSharedFlqPool4.
- qry="call createSharedFlqPool4('127.0.0.0'::inet, '127.0.0.10'::inet, 1::bigint, false)"
+ # Verify sflqCreateFlqPool4.
+ qry="call sflqCreateFlqPool4('127.0.0.0'::inet, '127.0.0.10'::inet, 1::bigint, false)"
run_command \
pgsql_execute "${qry}"
- assert_eq 0 "${EXIT_CODE}" "call createSharedFlqPool4 failed. (expected status code %d, returned %d)"
+ assert_eq 0 "${EXIT_CODE}" "call sflqCreateFlqPool4 failed. (expected status code %d, returned %d)"
qry="select count(start_address) from flq_pool4 where start_address = '127.0.0.0'::inet\
and end_address = '127.0.0.10'::inet"
count="${OUTPUT}"
assert_eq 11 "${count}" "free_lease4 content wrong. (expected count %d, actual %d)"
- # Verify pickFreeLease4.
- qry="select pickFreeLease4('127.0.0.0'::inet, '127.0.0.10'::inet)"
+ # Verify sflqPickFreeLease4.
+ qry="select sflqPickFreeLease4('127.0.0.0'::inet, '127.0.0.10'::inet)"
run_command \
pgsql_execute "${qry}"
- assert_eq 0 "${EXIT_CODE}" "select from pickFreeLease4 failed. (expected status code %d, returned %d)"
+ assert_eq 0 "${EXIT_CODE}" "select from sflqPickFreeLease4 failed. (expected status code %d, returned %d)"
assert_str_eq '127.0.0.0' "${OUTPUT}"
- # Verify createSharedFlqPool6.
- qry="call createSharedFlqPool6('3001::'::inet, '3001::10'::inet, 2::smallint, 128::smallint,\
+ # Verify sflqCreateFlqPool6.
+ qry="call sflqCreateFlqPool6('3001::'::inet, '3001::10'::inet, 2::smallint, 128::smallint,\
1::bigint, false)"
run_command \
pgsql_execute "${qry}"
- assert_eq 0 "${EXIT_CODE}" "call createSharedFlqPool6 failed. (expected status code %d, returned %d)"
+ assert_eq 0 "${EXIT_CODE}" "call sflqCreateFlqPool6 failed. (expected status code %d, returned %d)"
qry="select count(start_address) from flq_pool6 where start_address = '3001::'::inet\
and end_address = '3001::10'::inet"
count="${OUTPUT}"
assert_eq 17 "${count}" "flq_pool6 content wrong. (expected count %d, actual %d)"
- # Verify pickFreeLease6.
- qry="select pickFreeLease6('3001::'::inet, '3001::10'::inet)"
+ # Verify sflqPickFreeLease6.
+ qry="select sflqPickFreeLease6('3001::'::inet, '3001::10'::inet)"
run_command \
pgsql_execute "${qry}"
- assert_eq 0 "${EXIT_CODE}" "select from pickFreeLease6 failed. (expected status code %d, returned %d)"
+ assert_eq 0 "${EXIT_CODE}" "select from sflqPickFreeLease6 failed. (expected status code %d, returned %d)"
assert_str_eq '3001::' "${OUTPUT}"
}
test_finish 0
}
-# Verifies basic SFLQ for V4
-pgsql_SFLQ4() {
- test_start "pgsql.pgsql_SFLQ4"
+# Verifies SFLQ sflqPickFreeLease4 function
+pgsql_sflqPickFreeLease4() {
+ test_start "pgsql.pgsql_sflqPickFreeLease4"
# Let's wipe the whole database
pgsql_wipe
# We need to create an older database with lease data so we can
- sql="call createSharedFlqPool4('127.0.0.0'::inet, '127.0.0.2'::inet, 1::bigint, false)"
- run_statement "createSharedFlqPool4" "$sql"
+ sql="call sflqCreateFlqPool4('127.0.0.0'::inet, '127.0.0.2'::inet, 1::bigint, false)"
+ run_statement "sflqCreateFlqPool4" "$sql"
- sql="select pickFreeLease4('127.0.0.0'::inet, '127.0.0.2'::inet)"
- run_statement "pickFreeLease4.1" "$sql" "127.0.0.0";
- run_statement "pickFreeLease4.2" "$sql" "127.0.0.1";
- run_statement "pickFreeLease4.3" "$sql" "127.0.0.2";
+ sql="select sflqPickFreeLease4('127.0.0.0'::inet, '127.0.0.2'::inet)"
+ run_statement "sflqPickFreeLease4.1" "$sql" "127.0.0.0";
+ run_statement "sflqPickFreeLease4.2" "$sql" "127.0.0.1";
+ run_statement "sflqPickFreeLease4.3" "$sql" "127.0.0.2";
sql="insert into lease4 (address, subnet_id) values ('127.0.0.1'::inet - '0.0.0.0'::inet, 1)";
run_statement "insert 127.0.0.1" "$sql" "";
- sql="select pickFreeLease4('127.0.0.0'::inet, '127.0.0.2'::inet)"
- run_statement "pickFreeLease4.4" "$sql" "127.0.0.0";
- run_statement "pickFreeLease4.5" "$sql" "127.0.0.2";
- run_statement "pickFreeLease4.6" "$sql" "127.0.0.0";
+ sql="select sflqPickFreeLease4('127.0.0.0'::inet, '127.0.0.2'::inet)"
+ run_statement "sflqPickFreeLease4.4" "$sql" "127.0.0.0";
+ run_statement "sflqPickFreeLease4.5" "$sql" "127.0.0.2";
+ run_statement "sflqPickFreeLease4.6" "$sql" "127.0.0.0";
sql="update lease4 set state = 2 where address = ('127.0.0.1'::inet - '0.0.0.0'::inet);"
run_statement "update 127.0.0.1" "$sql" "";
- sql="select pickFreeLease4('127.0.0.0'::inet, '127.0.0.2'::inet)"
- run_statement "pickFreeLease4.7" "$sql" "127.0.0.1";
- run_statement "pickFreeLease4.8" "$sql" "127.0.0.2";
- run_statement "pickFreeLease4.9" "$sql" "127.0.0.0";
+ sql="select sflqPickFreeLease4('127.0.0.0'::inet, '127.0.0.2'::inet)"
+ run_statement "sflqPickFreeLease4.7" "$sql" "127.0.0.1";
+ run_statement "sflqPickFreeLease4.8" "$sql" "127.0.0.2";
+ run_statement "sflqPickFreeLease4.9" "$sql" "127.0.0.0";
sql="delete from lease4"
run_statement "delete 127.0.0.1" "$sql" "";
- sql="select pickFreeLease4('127.0.0.0'::inet, '127.0.0.2'::inet)"
- run_statement "pickFreeLease4.10" "$sql" "127.0.0.1";
- run_statement "pickFreeLease4.11" "$sql" "127.0.0.2";
- run_statement "pickFreeLease4.12" "$sql" "127.0.0.0";
+ sql="select sflqPickFreeLease4('127.0.0.0'::inet, '127.0.0.2'::inet)"
+ run_statement "sflqPickFreeLease4.10" "$sql" "127.0.0.1";
+ run_statement "sflqPickFreeLease4.11" "$sql" "127.0.0.2";
+ run_statement "sflqPickFreeLease4.12" "$sql" "127.0.0.0";
# Let's wipe the whole database
pgsql_wipe
test_finish 0
}
-# Verifies basic SFLQ for V6
-pgsql_SFLQ6() {
- test_start "pgsql.pgsql_SFLQ6"
+# Verifies SFLQ sflqPickFreeLease6 function
+pgsql_sflqPickFreeLease6() {
+ test_start "pgsql.pgsql_sflqPickFreeLease6"
# Let's wipe the whole database
pgsql_wipe
# We need to create an older database with lease data so we can
- sql="call createSharedFlqPool6('3001::'::inet, '3001::02'::inet, 1::smallint,\
+ sql="call sflqCreateFlqPool6('3001::'::inet, '3001::02'::inet, 1::smallint,\
128::smallint, 1::bigint, false)"
- run_statement "createSharedFlqPool6" "$sql"
+ run_statement "sflqCreateFlqPool6" "$sql"
- sql="select pickFreeLease6('3001::'::inet, '3001::02'::inet)"
- run_statement "pickFreeLease6.1" "$sql" "3001::";
- run_statement "pickFreeLease6.2" "$sql" "3001::1";
- run_statement "pickFreeLease6.3" "$sql" "3001::2";
+ sql="select sflqPickFreeLease6('3001::'::inet, '3001::02'::inet)"
+ run_statement "sflqPickFreeLease6.1" "$sql" "3001::";
+ run_statement "sflqPickFreeLease6.2" "$sql" "3001::1";
+ run_statement "sflqPickFreeLease6.3" "$sql" "3001::2";
sql="insert into lease6 (address, lease_type, subnet_id) values ('3001::1'::inet, 1::smallint, 1::bigint)";
run_statement "insert 3001::1" "$sql" "";
- sql="select pickFreeLease6('3001::'::inet, '3001::02'::inet)"
- run_statement "pickFreeLease6.4" "$sql" "3001::";
- run_statement "pickFreeLease6.5" "$sql" "3001::2";
- run_statement "pickFreeLease6.6" "$sql" "3001::";
+ sql="select sflqPickFreeLease6('3001::'::inet, '3001::02'::inet)"
+ run_statement "sflqPickFreeLease6.4" "$sql" "3001::";
+ run_statement "sflqPickFreeLease6.5" "$sql" "3001::2";
+ run_statement "sflqPickFreeLease6.6" "$sql" "3001::";
sql="update lease6 set state = 2 where address = ('3001::1'::inet);"
run_statement "update 3001::1" "$sql" "";
- sql="select pickFreeLease6('3001::'::inet, '3001::02'::inet)"
- run_statement "pickFreeLease6.7" "$sql" "3001::1";
- run_statement "pickFreeLease6.8" "$sql" "3001::2";
- run_statement "pickFreeLease6.9" "$sql" "3001::";
+ sql="select sflqPickFreeLease6('3001::'::inet, '3001::02'::inet)"
+ run_statement "sflqPickFreeLease6.7" "$sql" "3001::1";
+ run_statement "sflqPickFreeLease6.8" "$sql" "3001::2";
+ run_statement "sflqPickFreeLease6.9" "$sql" "3001::";
sql="delete from lease6"
run_statement "delete 3001::1" "$sql" "";
- sql="select pickFreeLease6('3001::'::inet, '3001::02'::inet)"
- run_statement "pickFreeLease6.10" "$sql" "3001::1";
- run_statement "pickFreeLease6.11" "$sql" "3001::2";
- run_statement "pickFreeLease6.12" "$sql" "3001::";
+ sql="select sflqPickFreeLease6('3001::'::inet, '3001::02'::inet)"
+ run_statement "sflqPickFreeLease6.10" "$sql" "3001::1";
+ run_statement "sflqPickFreeLease6.11" "$sql" "3001::2";
+ run_statement "sflqPickFreeLease6.12" "$sql" "3001::";
# Let's wipe the whole database
pgsql_wipe
pgsql_remove_control_socket_parameters_test
pgsql_migrate_client_class_test
pgsql_migrate_dhcpX_options_client_classes
-pgsql_SFLQ4
-pgsql_SFLQ6
+pgsql_sflqPickFreeLease4
+pgsql_sflqPickFreeLease6
DELIMITER ;
-- Populate flq_pool4 and free_lease4 based on an address range.
-DROP PROCEDURE IF EXISTS createSharedFlqPool4;
+DROP PROCEDURE IF EXISTS sflqCreateFlqPool4;
DELIMITER $$
-CREATE PROCEDURE createSharedFlqPool4(IN p_start_address INT UNSIGNED,
- IN p_end_address INT UNSIGNED,
- IN p_subnet_id INT UNSIGNED,
- IN p_recreate TINYINT)
+CREATE PROCEDURE sflqCreateFlqPool4(IN p_start_address INT UNSIGNED,
+ IN p_end_address INT UNSIGNED,
+ IN p_subnet_id INT UNSIGNED,
+ IN p_recreate TINYINT)
BEGIN
DECLARE loop_limit INT UNSIGNED;
DECLARE next_start_address INT UNSIGNED;
)
SELECT avail FROM addresses
LEFT JOIN lease4 on avail = lease4.address
- WHERE lease4.address IS NULL OR lease4.state = 2;
+ WHERE (lease4.address IS NULL OR lease4.state = 2
+ OR (expire <= now() AND valid_lifetime != 0xFFFFFFFF));
SET next_start_address = next_start_address + loop_limit;
END WHILE;
DELIMITER ;
-- Select a free address from an address range.
-DROP FUNCTION IF EXISTS pickFreeLease4;
+DROP FUNCTION IF EXISTS sflqPickFreeLease4;
DELIMITER $$
-CREATE FUNCTION pickFreeLease4(alloc_start_address INT UNSIGNED,
- alloc_end_address INT UNSIGNED)
+CREATE FUNCTION sflqPickFreeLease4(alloc_start_address INT UNSIGNED,
+ alloc_end_address INT UNSIGNED)
RETURNS INT UNSIGNED
DETERMINISTIC
BEGIN
-- Populate flq_pool6 and free_lease6 based on an address
-- range and delegated len. Use 128 for NA addresses.
-DROP PROCEDURE IF EXISTS createSharedFlqPool6;
-DELIMITER $$
-CREATE PROCEDURE createSharedFlqPool6(IN p_start_address VARCHAR(45),
- IN p_end_address VARCHAR(45),
- IN p_lease_type TINYINT UNSIGNED,
- IN p_delegated_len TINYINT UNSIGNED,
- IN p_subnet_id INT UNSIGNED,
- IN p_recreate TINYINT)
+DROP PROCEDURE IF EXISTS sflqCreateFlqPool6;
+DELIMITER $$
+CREATE PROCEDURE sflqCreateFlqPool6(IN p_start_address VARCHAR(45),
+ IN p_end_address VARCHAR(45),
+ IN p_lease_type TINYINT UNSIGNED,
+ IN p_delegated_len TINYINT UNSIGNED,
+ IN p_subnet_id INT UNSIGNED,
+ IN p_recreate TINYINT)
BEGIN
DECLARE bin_next_address BINARY(16);
DECLARE bin_end_address BINARY(16);
WHILE bin_next_address <= bin_end_address
DO
SELECT address INTO free_address FROM lease6
- WHERE address = INET6_NTOA(bin_next_address) AND lease6.state != 2;
+ WHERE (address = INET6_NTOA(bin_next_address) AND lease6.state != 2
+ AND (expire > now() OR valid_lifetime != 0xFFFFFFFF));
IF (free_address IS NULL)
THEN
DELIMITER ;
-- Find a free lease with an address range.
-DROP FUNCTION IF EXISTS pickFreeLease6;
+DROP FUNCTION IF EXISTS sflqPickFreeLease6;
DELIMITER $$
-CREATE FUNCTION pickFreeLease6(alloc_start_address VARCHAR(45),
- alloc_end_address VARCHAR(45))
+CREATE FUNCTION sflqPickFreeLease6(alloc_start_address VARCHAR(45),
+ alloc_end_address VARCHAR(45))
RETURNS VARCHAR(45)
DETERMINISTIC
BEGIN
DROP TABLE IF EXISTS option_def_data_type;
-- Drop SFLQ tables and procedures
DROP FUNCTION IF EXISTS incrementV6Prefix;
-DROP PROCEDURE IF EXISTS createSharedFlqPool4;
-DROP PROCEDURE IF EXISTS createSharedFlqPool6;
+DROP PROCEDURE IF EXISTS sflqCreateFlqPool4;
+DROP PROCEDURE IF EXISTS sflqCreateFlqPool6;
+DROP FUNCTION IF EXISTS sflqPickFreeLease4;
+DROP FUNCTION IF EXISTS sflqPickFreeLease6;
DROP TABLE IF EXISTS free_lease4;
DROP TABLE IF EXISTS flq_pool4;
DROP TABLE IF EXISTS free_lease6;
DELIMITER ;
-- Populate flq_pool4 and free_lease4 based on an address range.
-DROP PROCEDURE IF EXISTS createSharedFlqPool4;
+DROP PROCEDURE IF EXISTS sflqCreateFlqPool4;
DELIMITER $$
-CREATE PROCEDURE createSharedFlqPool4(IN p_start_address INT UNSIGNED,
- IN p_end_address INT UNSIGNED,
- IN p_subnet_id INT UNSIGNED,
- IN p_recreate TINYINT)
+CREATE PROCEDURE sflqCreateFlqPool4(IN p_start_address INT UNSIGNED,
+ IN p_end_address INT UNSIGNED,
+ IN p_subnet_id INT UNSIGNED,
+ IN p_recreate TINYINT)
BEGIN
DECLARE loop_limit INT UNSIGNED;
DECLARE next_start_address INT UNSIGNED;
)
SELECT avail FROM addresses
LEFT JOIN lease4 on avail = lease4.address
- WHERE lease4.address IS NULL OR lease4.state = 2;
+ WHERE (lease4.address IS NULL OR lease4.state = 2
+ OR (expire <= now() AND valid_lifetime != 0xFFFFFFFF));
SET next_start_address = next_start_address + loop_limit;
END WHILE;
DELIMITER ;
-- Select a free address from an address range.
-DROP FUNCTION IF EXISTS pickFreeLease4;
+DROP FUNCTION IF EXISTS sflqPickFreeLease4;
DELIMITER $$
-CREATE FUNCTION pickFreeLease4(alloc_start_address INT UNSIGNED,
- alloc_end_address INT UNSIGNED)
+CREATE FUNCTION sflqPickFreeLease4(alloc_start_address INT UNSIGNED,
+ alloc_end_address INT UNSIGNED)
RETURNS INT UNSIGNED
DETERMINISTIC
BEGIN
-- Populate flq_pool6 and free_lease6 based on an address
-- range and delegated len. Use 128 for NA addresses.
-DROP PROCEDURE IF EXISTS createSharedFlqPool6;
+DROP PROCEDURE IF EXISTS sflqCreateFlqPool6;
DELIMITER $$
-CREATE PROCEDURE createSharedFlqPool6(IN p_start_address VARCHAR(45),
- IN p_end_address VARCHAR(45),
- IN p_lease_type TINYINT UNSIGNED,
- IN p_delegated_len TINYINT UNSIGNED,
- IN p_subnet_id INT UNSIGNED,
- IN p_recreate TINYINT)
+CREATE PROCEDURE sflqCreateFlqPool6(IN p_start_address VARCHAR(45),
+ IN p_end_address VARCHAR(45),
+ IN p_lease_type TINYINT UNSIGNED,
+ IN p_delegated_len TINYINT UNSIGNED,
+ IN p_subnet_id INT UNSIGNED,
+ IN p_recreate TINYINT)
BEGIN
DECLARE bin_next_address BINARY(16);
DECLARE bin_end_address BINARY(16);
WHILE bin_next_address <= bin_end_address
DO
SELECT address INTO free_address FROM lease6
- WHERE address = INET6_NTOA(bin_next_address) AND lease6.state != 2;
+ WHERE (address = INET6_NTOA(bin_next_address) AND lease6.state != 2
+ AND (expire > now() OR valid_lifetime != 0xFFFFFFFF));
IF (free_address IS NULL)
THEN
DELIMITER ;
-- Find a free lease with an address range.
-DROP FUNCTION IF EXISTS pickFreeLease6;
+DROP FUNCTION IF EXISTS sflqPickFreeLease6;
DELIMITER $$
-CREATE FUNCTION pickFreeLease6(alloc_start_address VARCHAR(45),
- alloc_end_address VARCHAR(45))
+CREATE FUNCTION sflqPickFreeLease6(alloc_start_address VARCHAR(45),
+ alloc_end_address VARCHAR(45))
RETURNS VARCHAR(45)
DETERMINISTIC
BEGIN
CREATE UNIQUE INDEX free_lease6_bin_address ON free_lease6 (bin_address);
-- Populate flq_pool4 and free_lease4 based on an address range.
-CREATE OR REPLACE PROCEDURE createSharedFlqPool4(p_start_address INET,
- p_end_address INET,
- p_subnet_id BIGINT,
- p_recreate BOOLEAN)
+CREATE OR REPLACE PROCEDURE sflqCreateFlqPool4(p_start_address INET,
+ p_end_address INET,
+ p_subnet_id BIGINT,
+ p_recreate BOOLEAN)
LANGUAGE plpgsql AS $$
DECLARE
zero_inet INET := '0.0.0.0.'::INET;
SELECT zero_inet + avail, avail FROM generate_series((p_start_address - zero_inet),
(p_end_address - zero_inet), 1) AS avail
LEFT JOIN lease4 on avail = lease4.address
- WHERE lease4.address IS NULL OR lease4.state = 2
+ WHERE (lease4.address IS NULL OR lease4.state = 2
+ OR (expire <= now() AND valid_lifetime != x'FFFFFFFF'::bigint))
ON CONFLICT DO NOTHING;
-- Update the modification time in the flq_pool row.
$$;
-- Select a free address from an address range.
-CREATE OR REPLACE FUNCTION pickFreeLease4(alloc_start_address INET,
- alloc_end_address INET)
+CREATE OR REPLACE FUNCTION sflqPickFreeLease4(alloc_start_address INET,
+ alloc_end_address INET)
RETURNS INET
AS $$
DECLARE
-- Populate flq_pool6 and free_lease6 based on an address
-- range and delegated len. Use 128 for NA addresses.
-CREATE OR REPLACE PROCEDURE createSharedFlqPool6(p_start_address INET,
- p_end_address INET,
- p_lease_type SMALLINT,
- p_delegated_len SMALLiNT,
- p_subnet_id BIGINT,
- p_recreate BOOLEAN)
+CREATE OR REPLACE PROCEDURE sflqCreateFlqPool6(p_start_address INET,
+ p_end_address INET,
+ p_lease_type SMALLINT,
+ p_delegated_len SMALLiNT,
+ p_subnet_id BIGINT,
+ p_recreate BOOLEAN)
LANGUAGE plpgsql AS $$
DECLARE
zero_inet INET := '::'::INET;
WHILE next_address <= p_end_address
LOOP
SELECT address INTO free_address FROM lease6
- WHERE address = next_address AND lease6.state != 2;
+ WHERE (address = next_address AND lease6.state != 2
+ AND (expire > now() OR valid_lifetime = x'FFFFFFFF'::bigint));
IF (free_address IS NULL)
THEN
$$;
-- Find a free lease with an address range.
-CREATE OR REPLACE FUNCTION pickFreeLease6(alloc_start_address INET,
- alloc_end_address INET)
+CREATE OR REPLACE FUNCTION sflqPickFreeLease6(alloc_start_address INET,
+ alloc_end_address INET)
RETURNS INET
AS $$
DECLARE
DROP TABLE IF EXISTS lease6_remote_id;
-- Drop SFLQ tables and procedures
-DROP PROCEDURE IF EXISTS createSharedFlqPool4;
+DROP PROCEDURE IF EXISTS sflqCreateFlqPool4;
DROP FUNCTION IF EXISTS hexToBin;
DROP FUNCTION IF EXISTS inetToBytea;
DROP FUNCTION IF EXISTS byteaToInet;
DROP FUNCTION IF EXISTS incrementV6Prefix;
-DROP PROCEDURE IF EXISTS createSharedFlqPool6;
-DROP FUNCTION IF EXISTS pickFreeLease4;
-DROP FUNCTION IF EXISTS pickFreeLease6;
+DROP PROCEDURE IF EXISTS sflqCreateFlqPool6;
+DROP FUNCTION IF EXISTS sflqPickFreeLease4;
+DROP FUNCTION IF EXISTS sflqPickFreeLease6;
DROP TABLE IF EXISTS free_lease4;
DROP TABLE IF EXISTS flq_pool4;
DROP TABLE IF EXISTS free_lease6;
CREATE UNIQUE INDEX free_lease6_bin_address ON free_lease6 (bin_address);
-- Populate flq_pool4 and free_lease4 based on an address range.
-CREATE OR REPLACE PROCEDURE createSharedFlqPool4(p_start_address INET,
- p_end_address INET,
- p_subnet_id BIGINT,
- p_recreate BOOLEAN)
+CREATE OR REPLACE PROCEDURE sflqCreateFlqPool4(p_start_address INET,
+ p_end_address INET,
+ p_subnet_id BIGINT,
+ p_recreate BOOLEAN)
LANGUAGE plpgsql AS \$\$
DECLARE
zero_inet INET := '0.0.0.0.'::INET;
SELECT zero_inet + avail, avail FROM generate_series((p_start_address - zero_inet),
(p_end_address - zero_inet), 1) AS avail
LEFT JOIN lease4 on avail = lease4.address
- WHERE lease4.address IS NULL OR lease4.state = 2
+ WHERE (lease4.address IS NULL OR lease4.state = 2
+ OR (expire <= now() AND valid_lifetime != x'FFFFFFFF'::bigint))
ON CONFLICT DO NOTHING;
-- Update the modification time in the flq_pool row.
\$\$;
-- Select a free address from an address range.
-CREATE OR REPLACE FUNCTION pickFreeLease4(alloc_start_address INET,
- alloc_end_address INET)
+CREATE OR REPLACE FUNCTION sflqPickFreeLease4(alloc_start_address INET,
+ alloc_end_address INET)
RETURNS INET
AS \$\$
DECLARE
-- Populate flq_pool6 and free_lease6 based on an address
-- range and delegated len. Use 128 for NA addresses.
-CREATE OR REPLACE PROCEDURE createSharedFlqPool6(p_start_address INET,
- p_end_address INET,
- p_lease_type SMALLINT,
- p_delegated_len SMALLiNT,
- p_subnet_id BIGINT,
- p_recreate BOOLEAN)
+CREATE OR REPLACE PROCEDURE sflqCreateFlqPool6(p_start_address INET,
+ p_end_address INET,
+ p_lease_type SMALLINT,
+ p_delegated_len SMALLiNT,
+ p_subnet_id BIGINT,
+ p_recreate BOOLEAN)
LANGUAGE plpgsql AS \$\$
DECLARE
zero_inet INET := '::'::INET;
WHILE next_address <= p_end_address
LOOP
SELECT address INTO free_address FROM lease6
- WHERE address = next_address AND lease6.state != 2;
+ WHERE (address = next_address AND lease6.state != 2
+ AND (expire > now() OR valid_lifetime = x'FFFFFFFF'::bigint));
IF (free_address IS NULL)
THEN
\$\$;
-- Find a free lease with an address range.
-CREATE OR REPLACE FUNCTION pickFreeLease6(alloc_start_address INET,
- alloc_end_address INET)
+CREATE OR REPLACE FUNCTION sflqPickFreeLease6(alloc_start_address INET,
+ alloc_end_address INET)
RETURNS INET
AS \$\$
DECLARE