}
isc::dhcp::Subnet4Ptr
-Dhcpv4Srv::selectSubnet(const Pkt4Ptr& query, bool& drop) const {
+Dhcpv4Srv::selectSubnet(const Pkt4Ptr& query, bool& drop,
+ bool sanity_only) const {
// DHCPv4-over-DHCPv6 is a special (and complex) case
if (query->isDhcp4o6()) {
- return (selectSubnet4o6(query, drop));
+ return (selectSubnet4o6(query, drop, sanity_only));
}
Subnet4Ptr subnet;
subnet = cfgmgr.getCurrentCfg()->getCfgSubnets4()->selectSubnet(selector);
// Let's execute all callouts registered for subnet4_select
- if (HooksManager::calloutsPresent(Hooks.hook_index_subnet4_select_)) {
+ if (!sanity_only &&
+ HooksManager::calloutsPresent(Hooks.hook_index_subnet4_select_)) {
CalloutHandlePtr callout_handle = getCalloutHandle(query);
// We're reusing callout_handle from previous calls
}
isc::dhcp::Subnet4Ptr
-Dhcpv4Srv::selectSubnet4o6(const Pkt4Ptr& query, bool& drop) const {
+Dhcpv4Srv::selectSubnet4o6(const Pkt4Ptr& query, bool& drop,
+ bool sanity_only) const {
Subnet4Ptr subnet;
subnet = cfgmgr.getCurrentCfg()->getCfgSubnets4()->selectSubnet4o6(selector);
// Let's execute all callouts registered for subnet4_select
- if (HooksManager::calloutsPresent(Hooks.hook_index_subnet4_select_)) {
+ if (!sanity_only &&
+ HooksManager::calloutsPresent(Hooks.hook_index_subnet4_select_)) {
CalloutHandlePtr callout_handle = getCalloutHandle(query);
// We're reusing callout_handle from previous calls
return (false);
}
bool drop = false;
- bool result = (!pkt->getLocalAddr().isV4Bcast() || selectSubnet(pkt, drop));
+ bool result = (!pkt->getLocalAddr().isV4Bcast() ||
+ selectSubnet(pkt, drop, true));
if (drop) {
- // The packet must be dropped.
+ // The packet must be dropped but as sanity_only is true it is dead code.
return (false);
}
return (result);
///
/// @param query client's message
/// @param drop if it is true the packet will be dropped
+ /// @param sanity_only if it is true the callout won't be called
/// @return selected subnet (or NULL if no suitable subnet was found)
isc::dhcp::Subnet4Ptr selectSubnet(const Pkt4Ptr& query,
- bool& drop) const;
+ bool& drop,
+ bool sanity_only = false) const;
/// @brief Selects a subnet for a given client's DHCP4o6 packet.
///
/// @param query client's message
/// @param drop if it is true the packet will be dropped
+ /// @param sanity_only if it is true the callout won't be called
/// @return selected subnet (or NULL if no suitable subnet was found)
isc::dhcp::Subnet4Ptr selectSubnet4o6(const Pkt4Ptr& query,
- bool& drop) const;
+ bool& drop,
+ bool sanity_only = false) const;
/// indicates if shutdown is in progress. Setting it to true will
/// initiate server shutdown procedure.