Adjusted behavior of the del(subnet_id, addr) function in MySQL and
Postgres to delete multiple hosts having the same IPv4 or IPv6 address.
The MySQL schema had to be updated to use CASCADE action rather than
trigger to remove dependent options and IPv6 reservations.
Introduced new host API function which allows for configuring selected
backends to accept non-unique IP reservations for multiple hosts. Support
for it was added in MySQL, Postgres and Kea config file. It is not
supported in Cassandra. New migrations for MySQL and Postgres have been
created.
- Added constants for special SubnetIDs:
SUBNET_ID_GLOBAL, SUBNET_ID_MAX, SUBNET_ID_UNUSED
- Modified code throughout to use these constants, rather than hard-coded
values. Note, MySQL and PostgreSQL host backends convert from NULL to
UNUSED and back.
- kea-dhcp4/6 servers will now parse a "reservations" element at the global
level.
src/lib/dhcpsrv/subnet_id.h
Added constants SubnetID SUBNET_ID_GLOBAL, SUBNET_ID_MAX, SUBNET_ID_UNUSED
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/json_config_parser.cc
kea-dhcp4 parsing now handles reservations as a global element
src/bin/dhcp4/tests/config_parser_unittest.cc
TEST_F(Dhcp4ParserTest, globalReservations) - new test to
verify global HR parsing
src/bin/dhcp4/tests/dora_unittest.cc
src/lib/dhcpsrv/cfg_hosts.cc
src/lib/dhcpsrv/host.cc
src/lib/dhcpsrv/host_mgr.cc
src/lib/dhcpsrv/mysql_host_data_source.cc
src/lib/dhcpsrv/parsers/host_reservation_parser.cc
src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc
src/lib/dhcpsrv/tests/alloc_engine_utils.cc
src/lib/dhcpsrv/tests/host_mgr_unittest.cc
src/lib/dhcpsrv/tests/host_reservation_parser_unittest.cc
src/lib/dhcpsrv/tests/host_reservations_list_parser_unittest.cc
src/lib/dhcpsrv/tests/host_unittest.cc
Replaced SubnetID 0 with SUBNET_ID_UNUSED
src/lib/dhcpsrv/srv_config.cc
SrvConfig::toElement() - added global reservations output
src/lib/dhcpsrv/tests/cfg_hosts_unittest.cc
TEST_F(CfgHostsTest, globalSubnetIDs)
TEST_F(CfgHostsTest, unusedSubnetIDs) - new tests
src/lib/dhcpsrv/tests/host_unittest.cc
Replaced SubnetID 0 with SUBNET_ID_UNUSED
TEST_F(HostTest, toText) - updated to verify global ID output
src/lib/dhcpsrv/tests/mysql_host_data_source_unittest.cc
TEST_F(MySqlHostDataSourceTest, globalSubnetId4)
TEST_F(MySqlHostDataSourceTest, globalSubnetId6) - new tests
src/lib/dhcpsrv/tests/srv_config_unittest.cc
TEST_F(SrvConfigTest, unparseHR) - added global HRs
src/lib/dhcpsrv/testutils/generic_host_data_source_unittest.*
GenericHostDataSourceTest::testGlobalSubnetId4()
GenericHostDataSourceTest::testGlobalSubnetId6()
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/json_config_parser.cc
kea-dhcp6 now parses reservations as a global element
src/bin/dhcp6/tests/config_parser_unittest.cc
TEST_F(Dhcp6ParserTest, globalReservations) - new test