Commit ce91bdd7 authored by Thomas Markwalder's avatar Thomas Markwalder
Browse files

Merge branch 'trac3997'

parents ba81e891 6e249400
......@@ -610,6 +610,12 @@ core component within the DHCPv4 server (the Dhcpv4 server object)
has failed. As a result, the server will exit. The reason for the
failure is given within the message.
% DHCP4_SRV_D2STOP_ERROR error stopping IO with DHCP_DDNS during shutdown: %1
This error message indicates that during shutdown, an erro occurred while
stopping IO between the DHCPv4 server and the DHCP_DDNS server. This is
probably due to a programmatic error is not likely to impact either server
upon restart. The reason for the failure is given within the message.
% DHCP4_STARTED Kea DHCPv4 server version %1 started
This informational message indicates that the DHCPv4 server has
processed all configuration information and is ready to process
......
......@@ -263,6 +263,13 @@ Dhcpv4Srv::Dhcpv4Srv(uint16_t port, const bool use_bcast,
}
Dhcpv4Srv::~Dhcpv4Srv() {
try {
stopD2();
} catch(const std::exception& ex) {
// Highly unlikely, but lets Report it but go on
LOG_ERROR(dhcp4_logger, DHCP4_SRV_D2STOP_ERROR).arg(ex.what());
}
IfaceMgr::instance().closeSockets();
}
......@@ -2258,6 +2265,15 @@ Dhcpv4Srv::startD2() {
}
}
void
Dhcpv4Srv::stopD2() {
D2ClientMgr& d2_mgr = CfgMgr::instance().getD2ClientMgr();
if (d2_mgr.ddnsEnabled()) {
// Updates are enabled, so lets stop the sender
d2_mgr.stopSender();
}
}
void
Dhcpv4Srv::d2ClientErrorHandler(const
dhcp_ddns::NameChangeSender::Result result,
......
......@@ -234,11 +234,18 @@ public:
/// @brief Starts DHCP_DDNS client IO if DDNS updates are enabled.
///
/// If updates are enabled, it Instructs the D2ClientMgr singleton to
/// If updates are enabled, it instructs the D2ClientMgr singleton to
/// enter send mode. If D2ClientMgr encounters errors it may throw
/// D2ClientErrors. This method does not catch exceptions.
/// D2ClientError. This method does not catch exceptions.
void startD2();
/// @brief Stops DHCP_DDNS client IO if DDNS updates are enabled.
///
/// If updates are enabled, it instructs the D2ClientMgr singleton to
/// leave send mode. If D2ClientMgr encounters errors it may throw
/// D2ClientError. This method does not catch exceptions.
void stopD2();
/// @brief Implements the error handler for DHCP_DDNS IO errors
///
/// Invoked when a NameChangeRequest send to kea-dhcp-ddns completes with
......
......@@ -37,7 +37,11 @@ CONFIG="{
{
\"subnet\": \"10.0.0.0/8\",
\"pools\": [ { \"pool\": \"10.0.0.10-10.0.0.100\" } ]
} ]
} ],
\"dhcp-ddns\": {
\"enable-updates\": true,
\"qualifying-suffix\": \"\"
}
},
\"Logging\":
......
......@@ -676,6 +676,12 @@ core component within the IPv6 DHCP server (the Dhcpv6 server object)
has failed. As a result, the server will exit. The reason for the
failure is given within the message.
% DHCP6_SRV_D2STOP_ERROR error stopping IO with DHCP_DDNS during shutdown: %1
This error message indicates that during shutdown, an erro occurred while
stopping IO between the DHCPv6 server and the DHCP_DDNS server. This is
probably due to a programmatic error is not likely to impact either server
upon restart. The reason for the failure is given within the message.
% DHCP6_STANDALONE skipping message queue, running standalone
This is a debug message indicating that the IPv6 server is running in
standalone mode, not connected to the message queue. Standalone mode
......
......@@ -229,6 +229,13 @@ Dhcpv6Srv::Dhcpv6Srv(uint16_t port)
}
Dhcpv6Srv::~Dhcpv6Srv() {
try {
stopD2();
} catch(const std::exception& ex) {
// Highly unlikely, but lets Report it but go on
LOG_ERROR(dhcp6_logger, DHCP6_SRV_D2STOP_ERROR).arg(ex.what());
}
IfaceMgr::instance().closeSockets();
LeaseMgrFactory::destroy();
......@@ -2872,6 +2879,15 @@ Dhcpv6Srv::startD2() {
}
}
void
Dhcpv6Srv::stopD2() {
D2ClientMgr& d2_mgr = CfgMgr::instance().getD2ClientMgr();
if (d2_mgr.ddnsEnabled()) {
// Updates are enabled, so lets stop the sender
d2_mgr.stopSender();
}
}
void
Dhcpv6Srv::d2ClientErrorHandler(const
dhcp_ddns::NameChangeSender::Result result,
......
......@@ -119,11 +119,18 @@ public:
/// @brief Starts DHCP_DDNS client IO if DDNS updates are enabled.
///
/// If updates are enabled, it Instructs the D2ClientMgr singleton to
/// If updates are enabled, it instructs the D2ClientMgr singleton to
/// enter send mode. If D2ClientMgr encounters errors it may throw
/// D2ClientErrors. This method does not catch exceptions.
/// D2ClientError. This method does not catch exceptions.
void startD2();
/// @brief Stops DHCP_DDNS client IO if DDNS updates are enabled.
///
/// If updates are enabled, it instructs the D2ClientMgr singleton to
/// leave send mode. If D2ClientMgr encounters errors it may throw
/// D2ClientError. This method does not catch exceptions.
void stopD2();
/// @brief Implements the error handler for DHCP_DDNS IO errors
///
/// Invoked when a NameChangeRequest send to kea-dhcp-ddns completes with
......
......@@ -37,7 +37,11 @@ CONFIG="{
{
\"subnet\": \"2001:db8:1::/64\",
\"pools\": [ { \"pool\": \"2001:db8:1::10-2001:db8:1::100\" } ]
} ]
} ],
\"dhcp-ddns\": {
\"enable-updates\": true,
\"qualifying-suffix\": \"\"
}
},
\"Logging\":
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment