DHCP6_LEASE_QUERY_PROCESS_FAILED)
.arg(LeaseQueryImpl6::leaseQueryLabel(query))
.arg(ex.what());
+
+ StatsMgr::instance().addValue("pkt6-receive-drop",
+ static_cast<int64_t>(1));
+ handle.setStatus(CalloutHandle::NEXT_STEP_DROP);
+ return (0);
}
// We always set status to DROP as the query has been handled.
}
if (!isRequester(requester_ip)) {
+ StatsMgr::instance().addValue("pkt4-admin-filtered",
+ static_cast<int64_t>(1));
isc_throw(BadValue, "rejecting query from unauthorized requester: "
<< requester_ip.toText());
}
if (!isRequester(requester_ip)) {
// RFC 5007 says we may discard or return STATUS_NotAllowed
+ StatsMgr::instance().addValue("pkt6-admin-filtered",
+ static_cast<int64_t>(1));
isc_throw(BadValue,
"rejecting DHCPV6_LEASEQUERY from unauthorized requester: "
<< requester_ip.toText());
#include <dhcp/testutils/iface_mgr_test_config.h>
#include <dhcpsrv/cfgmgr.h>
#include <dhcpsrv/lease_mgr_factory.h>
-#include <lease_query_impl4.h>
+#include <stats/stats_mgr.h>
#include <testutils/gtest_utils.h>
+#include <lease_query_impl4.h>
#include <gtest/gtest.h>
#include <sstream>
using namespace isc::dhcp;
using namespace isc::dhcp::test;
using namespace isc::lease_query;
+using namespace isc::stats;
using namespace isc::util;
namespace {
ASSERT_THROW_MSG(impl->processQuery(lq), BadValue,
"giaddr cannot be 0.0.0.0");
+ // Set the pkt4-admin-filtered stat to 0.
+ StatsMgr::instance().setValue("pkt4-admin-filtered", static_cast<int64_t>(0));
+
// An unknown giaddr should fail.
lq->setGiaddr(IOAddress("192.0.2.2"));
ASSERT_THROW_MSG(impl->processQuery(lq), BadValue,
"rejecting query from unauthorized requester: 192.0.2.2");
+ // Check the stat which was bumped by one.
+ ObservationPtr stat = StatsMgr::instance().getObservation("pkt4-admin-filtered");
+ ASSERT_TRUE(stat);
+ EXPECT_EQ(1, stat->getInteger().first);
+
// Now we'll iterate over all invalid combinations of ciaddr, HWAddr, client id.
struct Scenario {
const std::string description_;
#include <dhcp/testutils/iface_mgr_test_config.h>
#include <dhcpsrv/cfgmgr.h>
#include <dhcpsrv/lease_mgr_factory.h>
-#include <lease_query_impl6.h>
+#include <stats/stats_mgr.h>
#include <testutils/gtest_utils.h>
+#include <lease_query_impl6.h>
#include <test_lease_mgr.h>
#include <gtest/gtest.h>
using namespace isc::dhcp;
using namespace isc::dhcp::test;
using namespace isc::lease_query;
+using namespace isc::stats;
using namespace isc::test;
using namespace isc::util;
ASSERT_THROW_MSG(impl->processQuery(lq), BadValue,
"DHCPV6_LEASEQUERY source address cannot be ::");
+ // Set the pkt6-admin-filtered stat to 0.
+ StatsMgr::instance().setValue("pkt6-admin-filtered", static_cast<int64_t>(0));
+
// Set source address to an unknown requester address.
lq->setRemoteAddr(IOAddress("de:ad:be:ef::"));
ASSERT_THROW_MSG(impl->processQuery(lq), BadValue,
"rejecting DHCPV6_LEASEQUERY from unauthorized requester: de:ad:be:ef::");
+ // Check the stat which was bumped by one.
+ ObservationPtr stat = StatsMgr::instance().getObservation("pkt6-admin-filtered");
+ ASSERT_TRUE(stat);
+ EXPECT_EQ(1, stat->getInteger().first);
+
// Set source address to a known requester address.
lq->setRemoteAddr(IOAddress("2001:db8:2::1"));