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.
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";
"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
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;
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.