-2498. [func] razvan
+2499. [func] razvan
Kea daemons now exit when a critical failure is detected when
issuing "config-reload", "config-set" and "interface-add"
- commands.
+ commands. Changed database reconnect disabled and failed
+ log messages from info to either ERROR or FATAL as
+ appropriate in kea-dhcp4 and kea-dhcp6.
(Gitlab #4415)
+2488. [func] razvan
+ Updated yang modules: added 'ssl-mode' to database connection
+ parameters, added 'adaptive-lease-time-threshold', removed
+ 'consistency', 'serial-consistency', 'request-timeout',
+ 'tcp-keepalive', 'tcp-nodelay' from to database connection
+ parameters, added 'allow-address-registration' to the
+ kea-dhcp6 model.
+ (Gitlab #4461)
+
Kea 3.2.0 (stable) released on June 24, 2026
2497. [build] andrei
options to fix options with bad flags.
(Gitlab #4443)
-2486. [func] razvan
- Updated yang modules: added 'ssl-mode' to database connection
- parameters, added 'adaptive-lease-time-threshold', removed
- 'consistency', 'serial-consistency', 'request-timeout',
- 'tcp-keepalive', 'tcp-nodelay' from to database connection
- parameters, added 'allow-address-registration' to the
- kea-dhcp6 model.
- (Gitlab #4461)
+2486. [func] fdupont
+ Reconfigure commands that trigger fatal a error that leads
+ to server shutdown now return an error response. Changed
+ socket open failure log messages from INFO to either ERROR
+ or FATAL as appropriate. Applies to kea-dhcp4 and kea-dhcp6.
+ (Gitlab #4507)
2485. [doc] sanua356, razvan
Added documentation about internal type of option 121
LOG_INFO(dhcp4_logger, DHCP4_DYNAMIC_RECONFIGURATION_SUCCESS).arg(file);
return (result);
} catch (const FatalException& ex) {
- shutdownServer(EXIT_FAILURE);
- LOG_FATAL(dhcp4_logger, DHCP4_DYNAMIC_RECONFIGURATION_FAIL_FATAL_ERROR)
+ LOG_FATAL(dhcp4_logger, DHCP4_FATAL_DYNAMIC_RECONFIGURATION_FAIL)
.arg(file);
+ shutdownServer(EXIT_FAILURE);
return (createAnswer(CONTROL_RESULT_FATAL_ERROR,
"Config reload failed: " + string(ex.what())));
} catch (const std::exception& ex) {
// return false.
if (!db_reconnect_ctl->retriesLeft() ||
!db_reconnect_ctl->retryInterval()) {
- LOG_INFO(dhcp4_logger, DHCP4_DB_RECONNECT_DISABLED)
- .arg(db_reconnect_ctl->retriesLeft())
- .arg(db_reconnect_ctl->retryInterval())
- .arg(db_reconnect_ctl->id())
- .arg(db_reconnect_ctl->timerName());
if (db_reconnect_ctl->exitOnFailure()) {
+ LOG_FATAL(dhcp4_logger, DHCP4_FATAL_DB_RECONNECT_DISABLED)
+ .arg(db_reconnect_ctl->retriesLeft())
+ .arg(db_reconnect_ctl->retryInterval())
+ .arg(db_reconnect_ctl->id())
+ .arg(db_reconnect_ctl->timerName());
shutdownServer(EXIT_FAILURE);
- }
+ } else {
+ LOG_ERROR(dhcp4_logger, DHCP4_DB_RECONNECT_DISABLED)
+ .arg(db_reconnect_ctl->retriesLeft())
+ .arg(db_reconnect_ctl->retryInterval())
+ .arg(db_reconnect_ctl->id())
+ .arg(db_reconnect_ctl->timerName());
+ }
return (false);
}
return (false);
}
- LOG_INFO(dhcp4_logger, DHCP4_DB_RECONNECT_FAILED)
- .arg(db_reconnect_ctl->maxRetries())
- .arg(db_reconnect_ctl->id())
- .arg(db_reconnect_ctl->timerName());
-
if (db_reconnect_ctl->exitOnFailure()) {
+ LOG_FATAL(dhcp4_logger, DHCP4_FATAL_DB_RECONNECT_FAILED)
+ .arg(db_reconnect_ctl->maxRetries())
+ .arg(db_reconnect_ctl->id())
+ .arg(db_reconnect_ctl->timerName());
shutdownServer(EXIT_FAILURE);
+ } else {
+ LOG_ERROR(dhcp4_logger, DHCP4_DB_RECONNECT_FAILED)
+ .arg(db_reconnect_ctl->maxRetries())
+ .arg(db_reconnect_ctl->id())
+ .arg(db_reconnect_ctl->timerName());
}
return (true);
extern const isc::log::MessageID DHCP4_DISCOVER = "DHCP4_DISCOVER";
extern const isc::log::MessageID DHCP4_DYNAMIC_RECONFIGURATION = "DHCP4_DYNAMIC_RECONFIGURATION";
extern const isc::log::MessageID DHCP4_DYNAMIC_RECONFIGURATION_FAIL = "DHCP4_DYNAMIC_RECONFIGURATION_FAIL";
-extern const isc::log::MessageID DHCP4_DYNAMIC_RECONFIGURATION_FAIL_FATAL_ERROR = "DHCP4_DYNAMIC_RECONFIGURATION_FAIL_FATAL_ERROR";
extern const isc::log::MessageID DHCP4_DYNAMIC_RECONFIGURATION_SUCCESS = "DHCP4_DYNAMIC_RECONFIGURATION_SUCCESS";
extern const isc::log::MessageID DHCP4_EMPTY_HOSTNAME = "DHCP4_EMPTY_HOSTNAME";
+extern const isc::log::MessageID DHCP4_FATAL_DB_RECONNECT_DISABLED = "DHCP4_FATAL_DB_RECONNECT_DISABLED";
+extern const isc::log::MessageID DHCP4_FATAL_DB_RECONNECT_FAILED = "DHCP4_FATAL_DB_RECONNECT_FAILED";
+extern const isc::log::MessageID DHCP4_FATAL_DYNAMIC_RECONFIGURATION_FAIL = "DHCP4_FATAL_DYNAMIC_RECONFIGURATION_FAIL";
extern const isc::log::MessageID DHCP4_FATAL_OPEN_SOCKETS_FAILED = "DHCP4_FATAL_OPEN_SOCKETS_FAILED";
extern const isc::log::MessageID DHCP4_FLEX_ID = "DHCP4_FLEX_ID";
extern const isc::log::MessageID DHCP4_GENERATE_FQDN = "DHCP4_GENERATE_FQDN";
"DHCP4_DISCOVER", "%1: server is processing DHCPDISCOVER with hint=%2",
"DHCP4_DYNAMIC_RECONFIGURATION", "initiate server reconfiguration using file: %1, after receiving SIGHUP signal or config-reload command",
"DHCP4_DYNAMIC_RECONFIGURATION_FAIL", "dynamic server reconfiguration failed with file: %1",
- "DHCP4_DYNAMIC_RECONFIGURATION_FAIL_FATAL_ERROR", "dynamic server reconfiguration failed with file: %1",
"DHCP4_DYNAMIC_RECONFIGURATION_SUCCESS", "dynamic server reconfiguration succeeded with file: %1",
"DHCP4_EMPTY_HOSTNAME", "%1: received empty hostname from the client, skipping processing of this option",
+ "DHCP4_FATAL_DB_RECONNECT_DISABLED", "database reconnect is disabled: retries left: %1, reconnect wait time: %2, manager ID: %3, timer: %4",
+ "DHCP4_FATAL_DB_RECONNECT_FAILED", "maximum number of database reconnect attempts: %1, has been exhausted without success, manager ID: %2, timer: %3",
+ "DHCP4_FATAL_DYNAMIC_RECONFIGURATION_FAIL", "dynamic server reconfiguration failed with file: %1",
"DHCP4_FATAL_OPEN_SOCKETS_FAILED", "maximum number of open service sockets attempts: %1, has been exhausted without success",
"DHCP4_FLEX_ID", "%1: flexible identifier generated for incoming packet: %2",
"DHCP4_GENERATE_FQDN", "%1: client did not send a FQDN or hostname; FQDN will be generated for the client",
extern const isc::log::MessageID DHCP4_DISCOVER;
extern const isc::log::MessageID DHCP4_DYNAMIC_RECONFIGURATION;
extern const isc::log::MessageID DHCP4_DYNAMIC_RECONFIGURATION_FAIL;
-extern const isc::log::MessageID DHCP4_DYNAMIC_RECONFIGURATION_FAIL_FATAL_ERROR;
extern const isc::log::MessageID DHCP4_DYNAMIC_RECONFIGURATION_SUCCESS;
extern const isc::log::MessageID DHCP4_EMPTY_HOSTNAME;
+extern const isc::log::MessageID DHCP4_FATAL_DB_RECONNECT_DISABLED;
+extern const isc::log::MessageID DHCP4_FATAL_DB_RECONNECT_FAILED;
+extern const isc::log::MessageID DHCP4_FATAL_DYNAMIC_RECONFIGURATION_FAIL;
extern const isc::log::MessageID DHCP4_FATAL_OPEN_SOCKETS_FAILED;
extern const isc::log::MessageID DHCP4_FLEX_ID;
extern const isc::log::MessageID DHCP4_GENERATE_FQDN;
object (i.e. a top level element).
% DHCP4_DB_RECONNECT_DISABLED database reconnect is disabled: retries left: %1, reconnect wait time: %2, manager ID: %3, timer: %4
-This is an informational message indicating that connectivity to either the
-lease or host database or both and that automatic reconnect is not enabled.
+This is an error message indicating that connectivity to either the
+lease or host database or both was lost and that automatic reconnect is
+not enabled. Loss of connectivity is typically a network or database server
+issue.
% DHCP4_DB_RECONNECT_FAILED maximum number of database reconnect attempts: %1, has been exhausted without success, manager ID: %2, timer: %3
This error indicates that the server failed to reconnect to the lease and/or
host database(s) after making the maximum configured number of reconnect
-attempts. This might cause the server to shut down as specified in the
-configuration. Loss of connectivity is typically a network or database server
+attempts. Loss of connectivity is typically a network or database server
issue.
% DHCP4_DB_RECONNECT_LOST_CONNECTION database connection lost: manager ID: %1, timer: %2.
This is an error message logged when the dynamic reconfiguration of the
DHCP server failed.
-% DHCP4_DYNAMIC_RECONFIGURATION_FAIL_FATAL_ERROR dynamic server reconfiguration failed with file: %1
-This is a fatal error message logged when the dynamic reconfiguration of the
-DHCP server failed.
-
% DHCP4_DYNAMIC_RECONFIGURATION_SUCCESS dynamic server reconfiguration succeeded with file: %1
This is info message logged when the dynamic reconfiguration of the DHCP server
succeeded.
option is skipped. The argument holds the client and transaction identification
information.
+% DHCP4_FATAL_DB_RECONNECT_DISABLED database reconnect is disabled: retries left: %1, reconnect wait time: %2, manager ID: %3, timer: %4
+This is an error message indicating that connectivity to either the
+lease or host database or both was lost and that automatic reconnect is
+ot enabled. This causes the server to shut down as specified in the
+configuration. Loss of connectivity is typically a network or database server
+issue.
+
+% DHCP4_FATAL_DB_RECONNECT_FAILED maximum number of database reconnect attempts: %1, has been exhausted without success, manager ID: %2, timer: %3
+This error indicates that the server failed to reconnect to the lease and/or
+host database(s) after making the maximum configured number of reconnect
+attempts. This causes the server to shut down as specified in the
+configuration. Loss of connectivity is typically a network or database server
+issue.
+
+% DHCP4_FATAL_DYNAMIC_RECONFIGURATION_FAIL dynamic server reconfiguration failed with file: %1
+This is a fatal error message logged when the dynamic reconfiguration of the
+DHCP server failed.
+
% DHCP4_FATAL_OPEN_SOCKETS_FAILED maximum number of open service sockets attempts: %1, has been exhausted without success
This error indicates that the server failed to bind service sockets after making
the maximum configured number of open attempts. This causes the server
LOG_INFO(dhcp6_logger, DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS).arg(file);
return (result);
} catch (const FatalException& ex) {
- shutdownServer(EXIT_FAILURE);
- LOG_FATAL(dhcp6_logger, DHCP6_DYNAMIC_RECONFIGURATION_FAIL_FATAL_ERROR)
+ LOG_FATAL(dhcp6_logger, DHCP6_FATAL_DYNAMIC_RECONFIGURATION_FAIL)
.arg(file);
+ shutdownServer(EXIT_FAILURE);
return (createAnswer(CONTROL_RESULT_FATAL_ERROR,
"Config reload failed: " + string(ex.what())));
} catch (const std::exception& ex) {
// return false.
if (!db_reconnect_ctl->retriesLeft() ||
!db_reconnect_ctl->retryInterval()) {
- LOG_INFO(dhcp6_logger, DHCP6_DB_RECONNECT_DISABLED)
- .arg(db_reconnect_ctl->retriesLeft())
- .arg(db_reconnect_ctl->retryInterval())
- .arg(db_reconnect_ctl->id())
- .arg(db_reconnect_ctl->timerName());
if (db_reconnect_ctl->exitOnFailure()) {
+ LOG_FATAL(dhcp6_logger, DHCP6_FATAL_DB_RECONNECT_DISABLED)
+ .arg(db_reconnect_ctl->retriesLeft())
+ .arg(db_reconnect_ctl->retryInterval())
+ .arg(db_reconnect_ctl->id())
+ .arg(db_reconnect_ctl->timerName());
shutdownServer(EXIT_FAILURE);
+ } else {
+ LOG_ERROR(dhcp6_logger, DHCP6_DB_RECONNECT_DISABLED)
+ .arg(db_reconnect_ctl->retriesLeft())
+ .arg(db_reconnect_ctl->retryInterval())
+ .arg(db_reconnect_ctl->id())
+ .arg(db_reconnect_ctl->timerName());
}
return (false);
}
return (false);
}
- LOG_INFO(dhcp6_logger, DHCP6_DB_RECONNECT_FAILED)
- .arg(db_reconnect_ctl->maxRetries())
- .arg(db_reconnect_ctl->id())
- .arg(db_reconnect_ctl->timerName());
-
if (db_reconnect_ctl->exitOnFailure()) {
+ LOG_FATAL(dhcp6_logger, DHCP6_FATAL_DB_RECONNECT_FAILED)
+ .arg(db_reconnect_ctl->maxRetries())
+ .arg(db_reconnect_ctl->id())
+ .arg(db_reconnect_ctl->timerName());
shutdownServer(EXIT_FAILURE);
+ } else {
+ LOG_ERROR(dhcp6_logger, DHCP6_DB_RECONNECT_FAILED)
+ .arg(db_reconnect_ctl->maxRetries())
+ .arg(db_reconnect_ctl->id())
+ .arg(db_reconnect_ctl->timerName());
}
-
return (true);
}
extern const isc::log::MessageID DHCP6_DHCP4O6_SEND_FAIL = "DHCP6_DHCP4O6_SEND_FAIL";
extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION = "DHCP6_DYNAMIC_RECONFIGURATION";
extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION_FAIL = "DHCP6_DYNAMIC_RECONFIGURATION_FAIL";
-extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION_FAIL_FATAL_ERROR = "DHCP6_DYNAMIC_RECONFIGURATION_FAIL_FATAL_ERROR";
extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS = "DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS";
+extern const isc::log::MessageID DHCP6_FATAL_DB_RECONNECT_DISABLED = "DHCP6_FATAL_DB_RECONNECT_DISABLED";
+extern const isc::log::MessageID DHCP6_FATAL_DB_RECONNECT_FAILED = "DHCP6_FATAL_DB_RECONNECT_FAILED";
+extern const isc::log::MessageID DHCP6_FATAL_DYNAMIC_RECONFIGURATION_FAIL = "DHCP6_FATAL_DYNAMIC_RECONFIGURATION_FAIL";
extern const isc::log::MessageID DHCP6_FATAL_OPEN_SOCKETS_FAILED = "DHCP6_FATAL_OPEN_SOCKETS_FAILED";
extern const isc::log::MessageID DHCP6_FLEX_ID = "DHCP6_FLEX_ID";
extern const isc::log::MessageID DHCP6_HOOK_ADDR6_REGISTER_DROP = "DHCP6_HOOK_ADDR6_REGISTER_DROP";
"DHCP6_DHCP4O6_SEND_FAIL", "%1: failed to send DHCPv4o6 packet: %2",
"DHCP6_DYNAMIC_RECONFIGURATION", "initiate server reconfiguration using file: %1, after receiving SIGHUP signal or config-reload command",
"DHCP6_DYNAMIC_RECONFIGURATION_FAIL", "dynamic server reconfiguration failed with file: %1",
- "DHCP6_DYNAMIC_RECONFIGURATION_FAIL_FATAL_ERROR", "dynamic server reconfiguration failed with file: %1",
"DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS", "dynamic server reconfiguration succeeded with file: %1",
+ "DHCP6_FATAL_DB_RECONNECT_DISABLED", "database reconnect is disabled: retries left: %1, reconnect wait time: %2, manager ID: %3, timer: %4",
+ "DHCP6_FATAL_DB_RECONNECT_FAILED", "maximum number of database reconnect attempts: %1, has been exhausted without success, manager ID: %2, timer: %3",
+ "DHCP6_FATAL_DYNAMIC_RECONFIGURATION_FAIL", "dynamic server reconfiguration failed with file: %1",
"DHCP6_FATAL_OPEN_SOCKETS_FAILED", "maximum number of open service sockets attempts: %1, has been exhausted without success",
"DHCP6_FLEX_ID", "%1: flexible identifier generated for incoming packet: %2",
"DHCP6_HOOK_ADDR6_REGISTER_DROP", "%1: ADDR-REG-INFORM for %2 is dropped, because a callout set the next step to DROP",
extern const isc::log::MessageID DHCP6_DHCP4O6_SEND_FAIL;
extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION;
extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION_FAIL;
-extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION_FAIL_FATAL_ERROR;
extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS;
+extern const isc::log::MessageID DHCP6_FATAL_DB_RECONNECT_DISABLED;
+extern const isc::log::MessageID DHCP6_FATAL_DB_RECONNECT_FAILED;
+extern const isc::log::MessageID DHCP6_FATAL_DYNAMIC_RECONFIGURATION_FAIL;
extern const isc::log::MessageID DHCP6_FATAL_OPEN_SOCKETS_FAILED;
extern const isc::log::MessageID DHCP6_FLEX_ID;
extern const isc::log::MessageID DHCP6_HOOK_ADDR6_REGISTER_DROP;
'KEA_DHCP_DATA_DIR'.
% DHCP6_DB_RECONNECT_DISABLED database reconnect is disabled: retries left: %1, reconnect wait time: %2, manager ID: %3, timer: %4
-This is an informational message indicating that connectivity to either the
-lease or host database or both and that automatic reconnect is not enabled.
+This is an error message indicating that connectivity to either the
+lease or host database or both was lost and that automatic reconnect is
+not enabled. Loss of connectivity is typically a network or database server
+issue.
% DHCP6_DB_RECONNECT_FAILED maximum number of database reconnect attempts: %1, has been exhausted without success, manager ID: %2, timer: %3
This error indicates that the server failed to reconnect to the lease and/or
host database(s) after making the maximum configured number of reconnect
-attempts. This might cause the server to shut down as specified in the
-configuration. Loss of connectivity is typically a network or database server
+attempts. Loss of connectivity is typically a network or database server
issue.
% DHCP6_DB_RECONNECT_LOST_CONNECTION database connection lost: manager ID: %1, timer: %2.
This is an error message logged when the dynamic reconfiguration of the
DHCP server failed.
-% DHCP6_DYNAMIC_RECONFIGURATION_FAIL_FATAL_ERROR dynamic server reconfiguration failed with file: %1
-This is a fatal error message logged when the dynamic reconfiguration of the
-DHCP server failed.
-
% DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS dynamic server reconfiguration succeeded with file: %1
This is info message logged when the dynamic reconfiguration of the DHCP server
succeeded.
+% DHCP6_FATAL_DB_RECONNECT_DISABLED database reconnect is disabled: retries left: %1, reconnect wait time: %2, manager ID: %3, timer: %4
+This is an error message indicating that connectivity to either the
+lease or host database or both was lost and that automatic reconnect is
+not enabled. This causes the server to shut down as specified in the
+configuration. Loss of connectivity is typically a network or database server
+issue.
+
+% DHCP6_FATAL_DB_RECONNECT_FAILED maximum number of database reconnect attempts: %1, has been exhausted without success, manager ID: %2, timer: %3
+This error indicates that the server failed to reconnect to the lease and/or
+host database(s) after making the maximum configured number of reconnect
+attempts. This causes the server to shut down as specified in the
+configuration. Loss of connectivity is typically a network or database server
+issue.
+
+% DHCP6_FATAL_DYNAMIC_RECONFIGURATION_FAIL dynamic server reconfiguration failed with file: %1
+This is a fatal error message logged when the dynamic reconfiguration of the
+DHCP server failed.
+
% DHCP6_FATAL_OPEN_SOCKETS_FAILED maximum number of open service sockets attempts: %1, has been exhausted without success
This error indicates that the server failed to bind service sockets after making
the maximum configured number of open attempts. This causes the server