shared_network->add(*subnet);
}
}
+
+ if (shared_network_data->contains("match-client-id")) {
+ shared_network->setMatchClientId(getBoolean(shared_network_data,
+ "match-client-id"));
+ }
+
+ if (shared_network_data->contains("client-class")) {
+ std::string client_class = getString(shared_network_data, "client-class");
+ if (!client_class.empty()) {
+ shared_network->allowClientClass(client_class);
+ }
+ }
+
} catch (const std::exception& ex) {
isc_throw(DhcpConfigError, ex.what() << " ("
<< shared_network_data->getPosition() << ")");
parser.parse(cfg_option, json);
}
+ if (shared_network_data->contains("client-class")) {
+ std::string client_class = getString(shared_network_data, "client-class");
+ if (!client_class.empty()) {
+ shared_network->allowClientClass(client_class);
+ }
+ }
+
if (shared_network_data->contains("subnet6")) {
auto json = shared_network_data->get("subnet6");
ASSERT_THROW(network = parser.parse(config_element), DhcpConfigError);
}
+// This test verifies that it's possible to specify client-class
+// and match-client-id on shared-network level.
+TEST_F(SharedNetwork4ParserTest, clientClassMatchClientId) {
+ std::string config = getWorkingConfig();
+ ElementPtr config_element = Element::fromJSON(config);
+
+ config_element->set("match-client-id", Element::create(false));
+ config_element->set("client-class", Element::create("alpha"));
+
+ // Parse configuration specified above.
+ SharedNetwork4Parser parser;
+ SharedNetwork4Ptr network;
+ network = parser.parse(config_element);
+ ASSERT_TRUE(network);
+
+ const ClientClasses classes = network->getClientClasses();
+ ASSERT_EQ(1, classes.size());
+ EXPECT_TRUE(classes.contains("alpha"));
+
+ EXPECT_FALSE(network->getMatchClientId());
+}
+
/// @brief Test fixture class for SharedNetwork6Parser class.
class SharedNetwork6ParserTest : public ::testing::Test {
public:
EXPECT_EQ("2001:db8:1::cafe", addresses[0].toText());
}
+// This test verifies that it's possible to specify client-class
+// on shared-network level.
+TEST_F(SharedNetwork6ParserTest, clientClass) {
+ std::string config = getWorkingConfig();
+ ElementPtr config_element = Element::fromJSON(config);
+
+ config_element->set("client-class", Element::create("alpha"));
+
+ // Parse configuration specified above.
+ SharedNetwork6Parser parser;
+ SharedNetwork6Ptr network;
+ network = parser.parse(config_element);
+ ASSERT_TRUE(network);
+
+ const ClientClasses classes = network->getClientClasses();
+ ASSERT_EQ(1, classes.size());
+ EXPECT_TRUE(classes.contains("alpha"));
+}
} // end of anonymous namespace