From 8c17b2766addfd41e701d95166bc8fbf7524f298 Mon Sep 17 00:00:00 2001 From: Francis Dupont Date: Mon, 6 Jun 2016 17:38:54 +0200 Subject: [PATCH] [4106_rebase] Addressed comments --- src/lib/dhcpsrv/dhcp4o6_ipc.cc | 25 +++++++++++++++++++++++-- src/lib/dhcpsrv/dhcpsrv_messages.mes | 3 +++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/lib/dhcpsrv/dhcp4o6_ipc.cc b/src/lib/dhcpsrv/dhcp4o6_ipc.cc index 05d7095a10..3eab361a82 100644 --- a/src/lib/dhcpsrv/dhcp4o6_ipc.cc +++ b/src/lib/dhcpsrv/dhcp4o6_ipc.cc @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -147,25 +148,46 @@ Pkt6Ptr Dhcp4o6IpcBase::receive() { pkt->unpack(); OptionVendorPtr vendor = boost::dynamic_pointer_cast(pkt->getOption(D6O_VENDOR_OPTS)); - if (!vendor || vendor->getVendorId() != ENTERPRISE_ID_ISC) { + if (!vendor) { + LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE_DETAIL, + DHCPSRV_DHCP4O6_RECEIVED_BAD_PACKET) + .arg("no vendor option"); + return (Pkt6Ptr()); + } + if (vendor->getVendorId() != ENTERPRISE_ID_ISC) { + LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE_DETAIL, + DHCPSRV_DHCP4O6_RECEIVED_BAD_PACKET) + .arg("vendor option enterprise ID is not ISC"); return (Pkt6Ptr()); } OptionStringPtr ifname = boost::dynamic_pointer_cast(vendor->getOption(ISC_V6_4O6_INTERFACE)); if (!ifname) { + LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE_DETAIL, + DHCPSRV_DHCP4O6_RECEIVED_BAD_PACKET) + .arg("no interface suboption"); return (Pkt6Ptr()); } IfacePtr iface = IfaceMgr::instance().getIface(ifname->getValue()); if (!iface) { + LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE_DETAIL, + DHCPSRV_DHCP4O6_RECEIVED_BAD_PACKET) + .arg("can't get interface"); return (Pkt6Ptr()); } Option6AddrLstPtr srcs = boost::dynamic_pointer_cast(vendor->getOption(ISC_V6_4O6_SRC_ADDRESS)); if (!srcs) { + LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE_DETAIL, + DHCPSRV_DHCP4O6_RECEIVED_BAD_PACKET) + .arg("no source address suboption"); return (Pkt6Ptr()); } Option6AddrLst::AddressContainer addrs = srcs->getAddresses(); if (addrs.size() != 1) { + LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE_DETAIL, + DHCPSRV_DHCP4O6_RECEIVED_BAD_PACKET) + .arg("bad source address suboption"); return (Pkt6Ptr()); } @@ -196,7 +218,6 @@ void Dhcp4o6IpcBase::send(Pkt6Ptr pkt) { // enterprise id, let's create it. if (!vendor_opt || (vendor_opt->getVendorId() != ENTERPRISE_ID_ISC)) { vendor_opt.reset(new OptionVendor(Option::V6, ENTERPRISE_ID_ISC)); - pkt->addOption(vendor_opt); } diff --git a/src/lib/dhcpsrv/dhcpsrv_messages.mes b/src/lib/dhcpsrv/dhcpsrv_messages.mes index 712dab52fa..2678d7d779 100644 --- a/src/lib/dhcpsrv/dhcpsrv_messages.mes +++ b/src/lib/dhcpsrv/dhcpsrv_messages.mes @@ -151,6 +151,9 @@ the database access parameters are changed: in the latter case, the server closes the currently open database, and opens a database using the new parameters. +% DHCPSRV_DHCP4O6_RECEIVED_BAD_PACKET received bad DHCPv4o6 packet: %1 +A bad DHCPv4o6 packet was received. + % DHCPSRV_DHCP_DDNS_ERROR_EXCEPTION error handler for DHCP_DDNS IO generated an expected exception: %1 This is an error message that occurs when an attempt to send a request to kea-dhcp-ddns fails there registered error handler threw an uncaught exception. -- 2.47.2