rsp->setSiaddr(IOAddress::IPV4_ZERO_ADDRESS());
}
- // Process each class
- const ClientClassDefMapPtr& defs_ptr = CfgMgr::instance().getCurrentCfg()->
- getClientClassDictionary()->getClasses();
- for (ClientClassDefMap::const_iterator it = defs_ptr->begin();
- it != defs_ptr->end(); ++it) {
- // Is the query in this class?
- if (!it->second || !query->inClass(it->first)) {
+ // Process each class in the packet
+ const ClientClasses& classes = query->getClasses();
+ for (ClientClasses::const_iterator cclass = classes.begin();
+ cclass != classes.end(); ++cclass) {
+ // Find the client class definition for this class
+ const ClientClassDefPtr& ccdef = CfgMgr::instance().getCurrentCfg()->
+ getClientClassDictionary()->findClass(*cclass);
+ if (!ccdef) {
+ // Not found
continue;
}
// Get the configured options of this class
- const OptionContainerPtr& options =
- it->second->getCfgOption()->getAll("dhcp4");
+ const OptionContainerPtr& options = ccdef->getCfgOption()->getAll("dhcp4");
if (!options || options->empty()) {
continue;
}
/// @param client_class name of the class to be added
void addClass(const isc::dhcp::ClientClass& client_class);
+ /// @brief Returns the class set
+ ///
+ /// @note This should be used only to iterate over the class set.
+ /// @return
+ const ClientClasses& getClasses() const { return (classes_); }
+
/// @brief Unparsed data (in received packets).
///
/// @warning This public member is accessed by derived