src/bin/dhcp4/ctrl_dhcp4_srv.cc
Removed setting D2ClientCfg fetch function
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
ddns-send-updates
ddns-override-no-update
ddns-override-client-update
ddns-replace-client-name
ddns-generated-prefix
ddns-qualifying-suffix
- added to DHCP4,SHARED_NETWORK,SUBNET4
hostname-char-set
hostname-char-replacement
- added to SHARED_NETWORK,SUBNET4
src/bin/dhcp4/dhcp4_srv.cc
Dhcpv4Srv::processClientFqdnOption()
Dhcpv4Srv::processHostnameOption()
Dhcpv4Srv::assignLease()
Use scoped DdnsParams from context to make decisions, pass
into D2ClientMgr functions, and supply hostname sanitizer
src/bin/dhcp4/json_config_parser.cc
configureDhcp4Server()
- use SrvConfig::moveDdnsParams() to move dhcp-ddns parameters
- handle new "ddns-" globals
src/bin/dhcp4/tests/config_parser_unittest.cc
src/bin/dhcp4/tests/d2_unittest.cc
src/bin/dhcp4/tests/dhcp4_test_utils.cc
src/bin/dhcp4/tests/fqdn_unittest.cc
src/bin/dhcp4/tests/get_config_unittest.cc
Updated and new tests
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
Added max-row-errors
src/lib/database/database_connection.*
src/lib/database/dbaccess_parser.*
Added max-row-errors
src/lib/database/tests/dbaccess_parser_unittest.cc
New tests for max-row-errors
src/lib/dhcpsrv/lease_file_loader.h
Changed logic value of 0 means unlimited
src/lib/dhcpsrv/memfile_lease_mgr.cc
Memfile_LeaseMgr::loadLeasesFromFiles() - now uses
connection parmater value for max-row-errors or 0
if not specified
src/lib/dhcpsrv/tests/lease_file_loader_unittest.cc
TEST_F(LeaseFileLoaderTest, maxRowErrors4) - new unit test
to verify max-row-errors operation
src/lib/dhcpsrv/tests/memfile_lease_mgr_unittest.cc
TEST_F(MemfileLeaseMgrTest, constructor) - added tests for
max-row-errors
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
Added max-row-errors
src/lib/database/database_connection.*
src/lib/database/dbaccess_parser.*
Added max-row-errors
src/lib/database/tests/dbaccess_parser_unittest.cc
New tests for max-row-errors
src/lib/dhcpsrv/lease_file_loader.h
Changed logic value of 0 means unlimited
src/lib/dhcpsrv/memfile_lease_mgr.cc
Memfile_LeaseMgr::loadLeasesFromFiles() - now uses
connection parmater value for max-row-errors or 0
if not specified
src/lib/dhcpsrv/tests/lease_file_loader_unittest.cc
TEST_F(LeaseFileLoaderTest, maxRowErrors4) - new unit test
to verify max-row-errors operation
src/lib/dhcpsrv/tests/memfile_lease_mgr_unittest.cc
TEST_F(MemfileLeaseMgrTest, constructor) - added tests for
max-row-errors
Added an optional "pattern" parameter to logger output options. It supports
any combination of content described here:
https://log4cplus.sourceforge.io/docs/html/classlog4cplus_1_1PatternLayout.html
src/lib/log/output_option.*
Added constants to define default patterns:
OutputOption::DEFAULT_CONSOLE_PATTERN = "%D{%Y-%m-%d %H:%M:%S.%q} %-5p [%c/%i] %m\n";
OutputOption::DEFAULT_FILE_PATTERN = "%D{%Y-%m-%d %H:%M:%S.%q} %-5p [%c/%i] %m\n";
OutputOption::DEFAULT_SYSLOG_PATTERN = "%-5p [%c] %m\n";
OutputOption::pattern_ - new member for conveying pattern string
src/lib/log/logger_manager_impl.*
LoggerManagerImpl::createConsoleAppender()
LoggerManagerImpl::createFileAppender()
LoggerManagerImpl::createSyslogAppender() uses either
paramater, option.pattern, or the appropriate default pattern
LoggerManagerImpl::setAppenderLayout() - new, common method to
set the layout, accepts a pattern string parameter
LoggerManagerImpl::setConsoleAppenderLayout()
LoggerManagerImpl::setSyslogAppenderLayout() - deleted
src/lib/process/log_parser.cc
LogConfigParser::parseOutputOptions() - now supports pattern
src/lib/process/logging_info.*
LoggingDestination::pattern_ - new member for conveying pattern string
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
Added "pattern" to the parser grammar
doc/guide/dhcp4-srv.xml
Updated user guide with new parameters and details on rules
src/lib/cc/data.cc
DoubleElement::toJSON(std::ostream& ss) - modified to ensure whole number
values are suffixed with ".0"
src/lib/utils/doubles.h - new file
provides a function for equating doubles within a given tolerance
src/lib/cc/simple_parser.*
SimpleParser::getDouble() - new method for fetching real number
parameters as DoulbeElements
src/lib/dhcpsrv/network.*
Added members and support for new paramters to Network4:
calculate_tee_times_, t1_percent_, t2_percent_
src/lib/dhcpsrv/parsers/dhcp_parsers.cc
src/lib/dhcpsrv/parsers/simple_parser4.cc
Added support for new parameters to Subnet4ConfigParser
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/json_config_parser.cc
Added parser support for calculate-tee-times, t1-percent, and t2-percent
src/bin/dhcp4/dhcp4_srv.*
Dhcpv4Srv::setTeeTimes(lease, subnet, resp) - new method for
determining T1 adn T2 values
src/bin/dhcp<4/6>/ctrl_dhcp<4/6>_srv.cc
ControlledDhcpv<4/6>Srv::processConfig() - now calls
IfaceMgr::configureDHCPPacketQueue
src/bin/dhcp<4/6>/dhcp<4/6>_parser.yy
dhpc-queue-control parsing updated to enforce
enable-queue/queue-type rules
src/bin/dhcp<4/6>/tests/config_parser_unittest.cc
TEST_F(Dhcp<4/6>ParserTest, dhcpQueueControl)
TEST_F(Dhcp<4/6>ParserTest, dhcpQueueControlInvalid)
src/lib/dhcp/iface_mgr.*
IfaceMgr
- closeSockets() - now calls stopDHCPReceiver
- openSockets<4/6>() - now calls startDHCPReceiver
- receive<4/6>Indirect() - new function which monitors receiver
thread watch sockets, reads DHCP packets from queue
- receive<4/6>Direct() - new function which monitors and reads DHCP
packets from interface sockets directly
- receive<4/6>() - rewritten to call receive<4/6>Indirect
if receiver thread is running, otherwise it calls receive<4/6>Direct
- configureDHCPPacketQueue() - new function which either enables queuing
by creating a new packet queue, or disables it by destroying the
existing queue
src/lib/dhcp/packet_queue_mgr.h
PacketQueue::destroyPacketQueue() - new function
src/lib/dhcp/packet_queue_mgr<4/6>.cc
PacketQueueMgr<4/6>::PacketQueueMgr<4/6>() - no longer creates a
default packet queue
src/lib/dhcpsrv/cfg_iface.cc
CfgIface::closeSockets() - removed call to stopDHCPReceiver
CfgIface::openSockets() - removed call to startDHCPReceiver
src/lib/dhcpsrv/parsers/dhcp_queue_control_parser.*
DHCPQueueControlParser
- removed unused family_ member
- parse() - added support for enable-queue
src/lib/dhcpsrv/tests/dhcp_queue_control_parser_unittest.cc
- new file
kea-dhcp4 will parse and use "queue-control" to configure ring
buffer size:
"Dhcp4":
{
"queue-control": {
# max number of packets the ring will hold
"capacity" : 100
},
:
This is an interrim commit for testing purposes.
Expect a fair amount of refactoring in subsequent commits.
New files:
src/lib/dhcp/queue_control.cc
src/lib/dhcp/queue_control.h
src/lib/dhcp/tests/queue_control_unittest.cc
src/lib/dhcpsrv/parsers/queue_control_parser.cc
src/lib/dhcpsrv/parsers/queue_control_parser.h
src/bin/dhcp4/ctrl_dhcp4_srv.cc
ControlledDhcpv4Srv::processConfig() -
added logic to set packet queue controller
src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/parser_context.*
Added queue-control parsing
src/bin/dhcp4/json_config_parser.cc
configureDhcp4Server() - recognize and parse "queue-control"
src/bin/dhcp4/tests/config_parser_unittest.cc
TEST_F(Dhcp4ParserTest, queueControl)
TEST_F(Dhcp4ParserTest, queueControlInvalid)
- new tests
src/lib/dhcp/iface_mgr.*
IfaceMgr::getPacketQueueControl4()
IfaceMgr::setPacketQueueControl4()
IfaceMgr::getPacketQueueControl6()
IfaceMgr::setPacketQueueControl6()
src/lib/dhcp/packet_queue.*
Use QueueControl class
src/lib/dhcpsrv/srv_config.*
Added QueueControl member, getter/setter
SrvConfig::toElement() - now emits queue-control if not null
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
Added parsing support for config-control and config-databases
src/bin/dhcp4/json_config_parser.cc
configureDhcp4Server() - added handler for config-control element
src/bin/dhcp4/parser_context.*
added CONFIG_CONTROL and CONFIG_DATABASE
src/bin/dhcp4/tests/config_parser_unittest.cc
TEST_F(Dhcp4ParserTest, configControlInfo) - new test
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
Added support for HR_GLOBAL mode
src/bin/dhcp4/tests/dhcp4_test_utils.cc
Minor modifications to output exception and config text
when parsing fails.
src/bin/dhcp4/tests/host_unittest.cc
New tests to make sure reservation matching behaves
according to reservation modes
src/lib/dhcpsrv/network.cc
src/lib/dhcpsrv/parsers/dhcp_parsers.cc
Adding missed bits needed to parse HR_GLOBAL mode
- 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
Added to parsing and parsing unit tests.
Servers do not yet utilize the values.
Modified:
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/tests/config_parser_unittest.cc
src/bin/dhcp4/tests/fqdn_unittest.cc
src/bin/dhcp4/tests/get_config_unittest.
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/tests/config_parser_unittest.cc
src/bin/dhcp6/tests/fqdn_unittest.cc
src/bin/dhcp6/tests/get_config_unittest.
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
Modified to support "ip-address" and
"ip-addresses" under "relay"
src/bin/dhcp4/tests/get_config_unittest.cc
Updated per process.
src/bin/dhcp4/tests/config_parser_unittest.cc
void checkResult() - modified to output parsing error text
TEST_F(Dhcp4ParserTest, subnetRelayInfo)
TEST_F(Dhcp4ParserTest, classifySubnets)
- updated to use new Network methods
TEST_F(Dhcp4ParserTest, subnetRelayInfoList) - new test
to verify a list of addresses in relay