From b977ad4fb2fc47f149c0f0ce60d5186f2dc72cce Mon Sep 17 00:00:00 2001 From: Thomas Markwalder Date: Fri, 16 Feb 2024 15:17:20 -0500 Subject: [PATCH] [#3231] Log SOCKET RECEIVED TIME support src/hooks/dhcp/perfmon/perfmon_callouts.cc dhcp4_srv_configured() dhcp6_srv_configured() - added to log socket received time support src/hooks/dhcp/perfmon/perfmon_messages.mes PERFMON_DHCP4_SOCKET_RECEIVED_TIME_SUPPORT PERFMON_DHCP6_SOCKET_RECEIVED_TIME_SUPPORT - new messages --- src/hooks/dhcp/perfmon/perfmon_callouts.cc | 18 ++++++++++++++++++ src/hooks/dhcp/perfmon/perfmon_messages.cc | 4 ++++ src/hooks/dhcp/perfmon/perfmon_messages.h | 2 ++ src/hooks/dhcp/perfmon/perfmon_messages.mes | 19 ++++++++++++++++++- 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/hooks/dhcp/perfmon/perfmon_callouts.cc b/src/hooks/dhcp/perfmon/perfmon_callouts.cc index 274176a40d..853ba1c6cf 100644 --- a/src/hooks/dhcp/perfmon/perfmon_callouts.cc +++ b/src/hooks/dhcp/perfmon/perfmon_callouts.cc @@ -24,6 +24,24 @@ using namespace isc::perfmon; extern "C" { +int dhcp4_srv_configured(CalloutHandle& /* handle */) { + // We do this here rather than in load() to ensure we check after the + // filter has been determined. + LOG_DEBUG(perfmon_logger, DBGLVL_TRACE_BASIC, + PERFMON_DHCP4_SOCKET_RECEIVED_TIME_SUPPORT) + .arg(IfaceMgr::instance().isSocketReceivedTimeSupported() ? "Yes" : "No"); + return (0); +} + +int dhcp6_srv_configured(CalloutHandle& /* handle */) { + // We do this here rather than in load() to ensure we check after the + // filter has been determined. + LOG_DEBUG(perfmon_logger, DBGLVL_TRACE_BASIC, + PERFMON_DHCP6_SOCKET_RECEIVED_TIME_SUPPORT) + .arg(IfaceMgr::instance().isSocketReceivedTimeSupported() ? "Yes" : "No"); + return (0); +} + /// @brief This callout is called at the "pkt4_send" hook. /// /// @param handle CalloutHandle which provides access to context. diff --git a/src/hooks/dhcp/perfmon/perfmon_messages.cc b/src/hooks/dhcp/perfmon/perfmon_messages.cc index c937e748e2..1bb01f93dd 100644 --- a/src/hooks/dhcp/perfmon/perfmon_messages.cc +++ b/src/hooks/dhcp/perfmon/perfmon_messages.cc @@ -7,7 +7,9 @@ extern const isc::log::MessageID PERFMON_DEINIT_FAILED = "PERFMON_DEINIT_FAILED"; extern const isc::log::MessageID PERFMON_DEINIT_OK = "PERFMON_DEINIT_OK"; extern const isc::log::MessageID PERFMON_DHCP4_PKT_EVENTS = "PERFMON_DHCP4_PKT_EVENTS"; +extern const isc::log::MessageID PERFMON_DHCP4_SOCKET_RECEIVED_TIME_SUPPORT = "PERFMON_DHCP4_SOCKET_RECEIVED_TIME_SUPPORT"; extern const isc::log::MessageID PERFMON_DHCP6_PKT_EVENTS = "PERFMON_DHCP6_PKT_EVENTS"; +extern const isc::log::MessageID PERFMON_DHCP6_SOCKET_RECEIVED_TIME_SUPPORT = "PERFMON_DHCP6_SOCKET_RECEIVED_TIME_SUPPORT"; extern const isc::log::MessageID PERFMON_INIT_FAILED = "PERFMON_INIT_FAILED"; extern const isc::log::MessageID PERFMON_INIT_OK = "PERFMON_INIT_OK"; @@ -17,7 +19,9 @@ const char* values[] = { "PERFMON_DEINIT_FAILED", "unloading PerfMon hooks library failed: %1", "PERFMON_DEINIT_OK", "unloading PerfMon hooks library successful", "PERFMON_DHCP4_PKT_EVENTS", "query: %1 events=[%2]", + "PERFMON_DHCP4_SOCKET_RECEIVED_TIME_SUPPORT", "Kernel supports socket received time? %1", "PERFMON_DHCP6_PKT_EVENTS", "query: %1 events=[%2]", + "PERFMON_DHCP6_SOCKET_RECEIVED_TIME_SUPPORT", "Kernel supports socket received time? %1", "PERFMON_INIT_FAILED", "loading PerfMon hooks library failed: %1", "PERFMON_INIT_OK", "loading PerfMon hooks library successful", NULL diff --git a/src/hooks/dhcp/perfmon/perfmon_messages.h b/src/hooks/dhcp/perfmon/perfmon_messages.h index 089c3da729..3fcb213098 100644 --- a/src/hooks/dhcp/perfmon/perfmon_messages.h +++ b/src/hooks/dhcp/perfmon/perfmon_messages.h @@ -8,7 +8,9 @@ extern const isc::log::MessageID PERFMON_DEINIT_FAILED; extern const isc::log::MessageID PERFMON_DEINIT_OK; extern const isc::log::MessageID PERFMON_DHCP4_PKT_EVENTS; +extern const isc::log::MessageID PERFMON_DHCP4_SOCKET_RECEIVED_TIME_SUPPORT; extern const isc::log::MessageID PERFMON_DHCP6_PKT_EVENTS; +extern const isc::log::MessageID PERFMON_DHCP6_SOCKET_RECEIVED_TIME_SUPPORT; extern const isc::log::MessageID PERFMON_INIT_FAILED; extern const isc::log::MessageID PERFMON_INIT_OK; diff --git a/src/hooks/dhcp/perfmon/perfmon_messages.mes b/src/hooks/dhcp/perfmon/perfmon_messages.mes index 72da317f15..37157d0a12 100644 --- a/src/hooks/dhcp/perfmon/perfmon_messages.mes +++ b/src/hooks/dhcp/perfmon/perfmon_messages.mes @@ -19,7 +19,24 @@ This info message indicates that the PerfMon hooks library has been loaded successfully. Enjoy! % PERFMON_DHCP4_PKT_EVENTS query: %1 events=[%2] -The debug message is emitted after an inbound DHCPv4 query has been +This debug message is emitted after an inbound DHCPv4 query has been +processed, the arguments are the query label and the dump of the +query's packet event stack. + +% PERFMON_DHCP4_SOCKET_RECEIVED_TIME_SUPPORT Kernel supports socket received time? %1 +This debug message is emitted after a (re)configuration and indicates +whether or not the packet filter being used by kea-dhcp4 can supply +the timestamp a packet was received by the kernel for recording +SOCKET_RECEIVED events. If it does not, perfmon will still function but +will not have data available to determine kernel buffer wait times. + +% PERFMON_DHCP6_SOCKET_RECEIVED_TIME_SUPPORT Kernel supports socket received time? %1 +This debug message is emitted after a (re)configuration and indicates +whether or not the packet filter being used by kea-dhcp6 can supply +the timestamp a packet was received by the kernel for recording +SOCKET_RECEIVED events. If it does not, perfmon will still function but +will not have data available to determine kernel buffer wait times. + processed, the arguments are the query label and the dump of the query's packet event stack.