From b69ee2d4b13ab1069f4667b8d4b5e5b455e8adc4 Mon Sep 17 00:00:00 2001 From: Tomek Mrugalski Date: Mon, 7 Dec 2015 17:48:28 +0100 Subject: [4206] Fix for empty DUID in v6 --- src/bin/dhcp6/dhcp6_messages.mes | 5 +++++ src/bin/dhcp6/dhcp6_srv.cc | 14 ++++++++++++++ 2 files changed, 19 insertions(+) (limited to 'src/bin/dhcp6') diff --git a/src/bin/dhcp6/dhcp6_messages.mes b/src/bin/dhcp6/dhcp6_messages.mes index 8c5ca2cfb0..66c27edf2b 100644 --- a/src/bin/dhcp6/dhcp6_messages.mes +++ b/src/bin/dhcp6/dhcp6_messages.mes @@ -425,6 +425,11 @@ because packets of this type must be sent to multicast. The first argument specifies the client and transaction identification information, the second argument specifies packet type. +% DHCP6_PACKET_PROCESS_EXCEPTION exception occurred during packet processing: %1 +This error message indicates that an exception was raised during packet processing +that was not caught by other, more specific exception handlers. This packet will +be dropped and the server will continue operation. + % DHCP6_PACKET_PROCESS_FAIL processing of %1 message received from %2 failed: %3 This is a general catch-all message indicating that the processing of the specified packet type from the indicated address failed. The reason is given in the diff --git a/src/bin/dhcp6/dhcp6_srv.cc b/src/bin/dhcp6/dhcp6_srv.cc index 0aaf4fe6e1..2eaf423e2f 100644 --- a/src/bin/dhcp6/dhcp6_srv.cc +++ b/src/bin/dhcp6/dhcp6_srv.cc @@ -300,6 +300,8 @@ bool Dhcpv6Srv::run() { Pkt6Ptr query; Pkt6Ptr rsp; + try { + try { uint32_t timeout = 1000; LOG_DEBUG(packet6_logger, DBG_DHCP6_DETAIL, DHCP6_BUFFER_WAIT).arg(timeout); @@ -693,6 +695,18 @@ bool Dhcpv6Srv::run() { .arg(e.what()); } } + + } catch (const std::exception& e) { + // General catch-all standard exceptions that are not caught by more + // specific catches. + LOG_ERROR(packet6_logger, DHCP6_PACKET_PROCESS_EXCEPTION) + .arg(e.what()); + } catch (...) { + // General catch-all non-standard exception that are not caught + // by more specific catches. + LOG_ERROR(packet6_logger, DHCP6_PACKET_PROCESS_EXCEPTION) + .arg("an unknown exception not derived from std::exception"); + } } return (true); -- cgit v1.2.3