"\"renew-timer\": 1000,"
"\"option-data\": [ {"
" \"name\": \"dhcp-message\","
- " \"space\": \"dhcp4\","
- " \"code\": 56,"
" \"data\": \"ABCDEF0105\","
" \"csv-format\": False"
" },"
" {"
" \"name\": \"default-ip-ttl\","
- " \"space\": \"dhcp4\","
- " \"code\": 23,"
" \"data\": \"01\","
" \"csv-format\": False"
" } ],"
"\"renew-timer\": 1000,"
"\"option-data\": [ {"
" \"name\": \"dhcp-message\","
- " \"space\": \"dhcp4\","
- " \"code\": 56,"
" \"data\": \"ABCDEF0105\","
" \"csv-format\": False"
" },"
" {"
" \"name\": \"foo\","
" \"space\": \"isc\","
- " \"code\": 56,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"foo\","
"\"option-data\": [ {"
" \"name\": \"foo\","
" \"space\": \"isc\","
- " \"code\": 1,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" },"
" {"
" \"name\": \"foo2\","
" \"space\": \"isc\","
- " \"code\": 2,"
- " \"data\": \"192.168.2.1\","
- " \"csv-format\": True"
+ " \"data\": \"192.168.2.1\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"foo\","
"\"renew-timer\": 1000,"
"\"option-data\": [ {"
" \"name\": \"base-option\","
- " \"space\": \"dhcp4\","
- " \"code\": 222,"
- " \"data\": \"11\","
- " \"csv-format\": True"
+ " \"data\": \"11\""
" },"
" {"
" \"name\": \"foo\","
" \"space\": \"isc\","
- " \"code\": 1,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" },"
" {"
" \"name\": \"foo2\","
" \"space\": \"isc\","
- " \"code\": 2,"
- " \"data\": \"192.168.2.1\","
- " \"csv-format\": True"
+ " \"data\": \"192.168.2.1\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"base-option\","
"\"renew-timer\": 1000, "
"\"option-data\": [ {"
" \"name\": \"dhcp-message\","
- " \"space\": \"dhcp4\","
- " \"code\": 56,"
" \"data\": \"AB\","
" \"csv-format\": False"
" } ],"
" \"subnet\": \"192.0.2.0/24\", "
" \"option-data\": [ {"
" \"name\": \"dhcp-message\","
- " \"space\": \"dhcp4\","
- " \"code\": 56,"
" \"data\": \"ABCDEF0105\","
" \"csv-format\": False"
" },"
" {"
" \"name\": \"default-ip-ttl\","
- " \"space\": \"dhcp4\","
- " \"code\": 23,"
" \"data\": \"01\","
" \"csv-format\": False"
" } ]"
" \"subnet\": \"192.0.2.0/24\", "
" \"option-data\": [ {"
" \"name\": \"dhcp-message\","
- " \"space\": \"dhcp4\","
- " \"code\": 56,"
" \"data\": \"0102030405060708090A\","
" \"csv-format\": False"
" } ]"
" \"subnet\": \"192.0.3.0/24\", "
" \"option-data\": [ {"
" \"name\": \"default-ip-ttl\","
- " \"space\": \"dhcp4\","
- " \"code\": 23,"
" \"data\": \"FF\","
" \"csv-format\": False"
" } ]"
"\"option-data\": [ {"
" \"name\": \"foo\","
" \"space\": \"vendor-encapsulated-options-space\","
- " \"code\": 1,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" },"
" {"
" \"name\": \"foo2\","
" \"space\": \"vendor-encapsulated-options-space\","
- " \"code\": 2,"
- " \"data\": \"192.168.2.1\","
- " \"csv-format\": True"
+ " \"data\": \"192.168.2.1\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"foo\","
"\"renew-timer\": 1000,"
"\"option-data\": [ {"
" \"name\": \"vendor-encapsulated-options\","
- " \"space\": \"dhcp4\","
- " \"code\": 43,"
- " \"data\": \"\","
" \"csv-format\": False"
" },"
" {"
" \"name\": \"foo\","
" \"space\": \"vendor-encapsulated-options-space\","
- " \"code\": 1,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" },"
" {"
" \"name\": \"foo2\","
" \"name\": \"foo\","
" \"space\": \"vendor-4491\","
" \"code\": 100,"
- " \"data\": \"this is a string vendor-opt\","
- " \"csv-format\": True"
+ " \"data\": \"this is a string vendor-opt\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"foo\","
"\"renew-timer\": 1000,"
"\"option-data\": [ {"
" \"name\": \"dhcp-message\","
- " \"space\": \"dhcp4\","
- " \"code\": 56,"
" \"data\": \"ABCDEF0105\","
" \"csv-format\": False"
" },"
" {"
" \"name\": \"foo\","
" \"space\": \"isc\","
- " \"code\": 56,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"foo\","
" \"pools\": [ { \"pool\": \"10.0.0.10-10.0.0.100\" } ],"
" \"option-data\": [ {"
" \"name\": \"routers\","
- " \"code\": 3,"
- " \"data\": \"10.0.0.200,10.0.0.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.200,10.0.0.201\""
" } ]"
" } ]"
"}"
" \"pools\": [ { \"pool\": \"10.0.0.10-10.0.0.100\" } ],"
" \"option-data\": [ {"
" \"name\": \"routers\","
- " \"code\": 3,"
- " \"data\": \"10.0.0.200,10.0.0.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.200,10.0.0.201\""
" },"
" {"
" \"name\": \"domain-name-servers\","
- " \"code\": 6,"
- " \"data\": \"10.0.0.202,10.0.0.203\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.202,10.0.0.203\""
" },"
" {"
" \"name\": \"log-servers\","
- " \"code\": 7,"
- " \"data\": \"10.0.0.200,10.0.0.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.200,10.0.0.201\""
" },"
" {"
" \"name\": \"cookie-servers\","
- " \"code\": 8,"
- " \"data\": \"10.0.0.202,10.0.0.203\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.202,10.0.0.203\""
" } ]"
" } ]"
"}",
" \"subnet\": \"192.0.2.0/24\", "
" \"option-data\": [ {"
" \"name\": \"routers\","
- " \"code\": 3,"
- " \"data\": \"192.0.2.200,192.0.2.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"192.0.2.200,192.0.2.201\""
" },"
" {"
" \"name\": \"domain-name-servers\","
- " \"code\": 6,"
- " \"data\": \"192.0.2.202,192.0.2.203\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"192.0.2.202,192.0.2.203\""
" },"
" {"
" \"name\": \"log-servers\","
- " \"code\": 7,"
- " \"data\": \"10.0.0.200,10.0.0.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.200,10.0.0.201\""
" },"
" {"
" \"name\": \"cookie-servers\","
- " \"code\": 8,"
- " \"data\": \"10.0.0.202,10.0.0.203\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.202,10.0.0.203\""
" } ]"
" } ]"
"}",
" \"pools\": [ { \"pool\": \"10.0.0.10-10.0.0.100\" } ],"
" \"option-data\": [ {"
" \"name\": \"routers\","
- " \"code\": 3,"
- " \"data\": \"10.0.0.200,10.0.0.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.200,10.0.0.201\""
" } ]"
" } ]"
"}",
" \"pools\": [ { \"pool\": \"10.0.0.10-10.0.0.100\" } ],"
" \"option-data\": [ {"
" \"name\": \"routers\","
- " \"code\": 3,"
- " \"data\": \"10.0.0.200,10.0.0.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.200,10.0.0.201\""
" } ],"
" \"reservations\": ["
" {"
" \"pools\": [ { \"pool\": \"10.0.0.10-10.0.0.100\" } ],"
" \"option-data\": [ {"
" \"name\": \"routers\","
- " \"code\": 3,"
- " \"data\": \"10.0.0.200,10.0.0.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.200,10.0.0.201\""
" } ],"
" \"reservations\": ["
" {"
" \"pools\": [ { \"pool\": \"10.0.0.10-10.0.0.100\" } ],"
" \"option-data\": [ {"
" \"name\": \"routers\","
- " \"code\": 3,"
- " \"data\": \"10.0.0.200,10.0.0.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.200,10.0.0.201\""
" },"
" {"
" \"name\": \"domain-name-servers\","
- " \"code\": 6,"
- " \"data\": \"10.0.0.202,10.0.0.203\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.202,10.0.0.203\""
" },"
" {"
" \"name\": \"log-servers\","
- " \"code\": 7,"
- " \"data\": \"10.0.0.200,10.0.0.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.200,10.0.0.201\""
" },"
" {"
" \"name\": \"cookie-servers\","
- " \"code\": 8,"
- " \"data\": \"10.0.0.202,10.0.0.203\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.202,10.0.0.203\""
" } ]"
" } ]"
"}",
" \"subnet\": \"192.0.2.0/24\", "
" \"option-data\": [ {"
" \"name\": \"routers\","
- " \"code\": 3,"
- " \"data\": \"192.0.2.200,192.0.2.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"192.0.2.200,192.0.2.201\""
" },"
" {"
" \"name\": \"domain-name-servers\","
- " \"code\": 6,"
- " \"data\": \"192.0.2.202,192.0.2.203\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"192.0.2.202,192.0.2.203\""
" },"
" {"
" \"name\": \"log-servers\","
- " \"code\": 7,"
- " \"data\": \"10.0.0.200,10.0.0.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.200,10.0.0.201\""
" },"
" {"
" \"name\": \"cookie-servers\","
- " \"code\": 8,"
- " \"data\": \"10.0.0.202,10.0.0.203\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.202,10.0.0.203\""
" } ]"
" } ]"
"}"
" \"pools\": [ { \"pool\": \"10.0.0.10-10.0.0.100\" } ],"
" \"option-data\": [ {"
" \"name\": \"routers\","
- " \"code\": 3,"
- " \"data\": \"10.0.0.200,10.0.0.201\","
- " \"csv-format\": true,"
- " \"space\": \"dhcp4\""
+ " \"data\": \"10.0.0.200,10.0.0.201\""
" } ]"
" } ]"
"}"
"\"renew-timer\": 1000,"
"\"option-data\": [ {"
" \"name\": \"subscriber-id\","
- " \"space\": \"dhcp6\","
- " \"code\": 38,"
" \"data\": \"ABCDEF0105\","
" \"csv-format\": False"
" },"
" {"
" \"name\": \"preference\","
- " \"space\": \"dhcp6\","
- " \"code\": 7,"
- " \"data\": \"01\","
- " \"csv-format\": True"
+ " \"data\": \"01\""
" } ],"
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"2001:db8:1::/80\" } ],"
"\"renew-timer\": 1000,"
"\"option-data\": [ {"
" \"name\": \"subscriber-id\","
- " \"space\": \"dhcp6\","
- " \"code\": 38,"
" \"data\": \"ABCDEF0105\","
" \"csv-format\": False"
" },"
" {"
" \"name\": \"foo\","
" \"space\": \"isc\","
- " \"code\": 38,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"foo\","
"\"option-data\": [ {"
" \"name\": \"foo\","
" \"space\": \"isc\","
- " \"code\": 110,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" },"
" {"
" \"name\": \"foo2\","
" \"space\": \"isc\","
- " \"code\": 111,"
- " \"data\": \"192.168.2.1\","
- " \"csv-format\": True"
+ " \"data\": \"192.168.2.1\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"foo\","
"\"renew-timer\": 1000,"
"\"option-data\": [ {"
" \"name\": \"base-option\","
- " \"space\": \"dhcp6\","
- " \"code\": 100,"
- " \"data\": \"11\","
- " \"csv-format\": True"
+ " \"data\": \"11\""
" },"
" {"
" \"name\": \"foo\","
" \"space\": \"isc\","
- " \"code\": 110,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" },"
" {"
" \"name\": \"foo2\","
" \"space\": \"isc\","
- " \"code\": 111,"
- " \"data\": \"192.168.2.1\","
- " \"csv-format\": True"
+ " \"data\": \"192.168.2.1\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"base-option\","
" \"subnet\": \"2001:db8:1::/64\", "
" \"option-data\": [ {"
" \"name\": \"subscriber-id\","
- " \"space\": \"dhcp6\","
- " \"code\": 38,"
" \"data\": \"0102030405060708090A\","
" \"csv-format\": False"
" } ]"
" \"subnet\": \"2001:db8:2::/64\", "
" \"option-data\": [ {"
" \"name\": \"user-class\","
- " \"space\": \"dhcp6\","
- " \"code\": 15,"
" \"data\": \"FFFEFDFCFB\","
" \"csv-format\": False"
" } ]"
" \"name\": \"foo\","
" \"space\": \"vendor-4491\","
" \"code\": 100,"
- " \"data\": \"this is a string vendor-opt\","
- " \"csv-format\": True"
+ " \"data\": \"this is a string vendor-opt\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"foo\","
"\"option-data\": [ {"
" \"name\": \"foo\","
" \"space\": \"vendor-opts-space\","
- " \"code\": 110,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" },"
" {"
" \"name\": \"foo2\","
" \"space\": \"vendor-opts-space\","
- " \"code\": 111,"
- " \"data\": \"192.168.2.1\","
- " \"csv-format\": True"
+ " \"data\": \"192.168.2.1\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"foo\","
"\"renew-timer\": 1000,"
"\"option-data\": [ {"
" \"name\": \"vendor-opts\","
- " \"space\": \"dhcp6\","
- " \"code\": 17,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" },"
" {"
" \"name\": \"foo\","
" \"space\": \"vendor-opts-space\","
- " \"code\": 110,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" },"
" {"
" \"name\": \"foo2\","
" \"space\": \"vendor-opts-space\","
- " \"code\": 111,"
- " \"data\": \"192.168.2.1\","
- " \"csv-format\": True"
+ " \"data\": \"192.168.2.1\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"foo\","
"\"option-data\": [ {"
" \"name\": \"foo\","
" \"space\": \"vendor-opts-space\","
- " \"code\": 110,"
- " \"data\": \"1234\","
- " \"csv-format\": True"
+ " \"data\": \"1234\""
" },"
" {"
" \"name\": \"foo2\","
" \"space\": \"vendor-opts-space\","
- " \"code\": 111,"
- " \"data\": \"192.168.2.1\","
- " \"csv-format\": True"
+ " \"data\": \"192.168.2.1\""
" } ],"
"\"option-def\": [ {"
" \"name\": \"foo\","
" \"interface\": \"eth0\", "
" \"option-data\": [ {"
" \"name\": \"dns-servers\","
- " \"space\": \"dhcp6\","
- " \"code\": 23,"
- " \"data\": \"2001:db8:1234:FFFF::1, 2001:db8:1234:FFFF::2\","
- " \"csv-format\": True"
+ " \"data\": \"2001:db8:1234:FFFF::1, 2001:db8:1234:FFFF::2\""
" },"
" {"
" \"name\": \"subscriber-id\","
- " \"space\": \"dhcp6\","
- " \"code\": 38,"
" \"data\": \"1234\","
" \"csv-format\": False"
" } ]"
" \"name\": \"config-file\","
" \"code\": 33,"
" \"type\": \"string\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-4491\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-4491\""
" } ],"
" \"option-data\": [ {"
" \"name\": \"config-file\","
" \"space\": \"vendor-4491\","
- " \"code\": 33,"
- " \"data\": \"normal_erouter_v6.cm\","
- " \"csv-format\": True"
+ " \"data\": \"normal_erouter_v6.cm\""
" }],"
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"2001:db8:1::/64\" } ],"
" \"option-def\": [ {"
" \"name\": \"foo\","
" \"code\": 120,"
- " \"type\": \"binary\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"dhcp6\","
- " \"encapsulate\": \"\""
+ " \"type\": \"binary\""
" } ],"
" \"option-data\": [ {"
" \"code\": 120,"
EXPECT_TRUE(def->getEncapsulatedSpace().empty());
}
-/// @brief Check Basic parsing of options.
+/// @brief Check basic parsing of options.
///
/// Note that this tests basic operation of the OptionDataListParser and
/// OptionDataParser. It uses a simple configuration consisting of one
EXPECT_EQ(val, opt_ptr->toText());
}
+/// @brief Check minimal parsing of options.
+///
+/// Same than basic but without optional parameters set to their default.
+TEST_F(ParseConfigTest, minimalOptionDataTest) {
+
+ // Configuration string.
+ std::string config =
+ "{ \"option-def\": [ {"
+ " \"name\": \"foo\","
+ " \"code\": 100,"
+ " \"type\": \"ipv4-address\","
+ " \"space\": \"isc\""
+ " } ], "
+ " \"option-data\": [ {"
+ " \"name\": \"foo\","
+ " \"space\": \"isc\","
+ " \"data\": \"192.0.2.0\""
+ " } ]"
+ "}";
+
+ // Verify that the configuration string parses.
+ int rcode = parseConfiguration(config);
+ ASSERT_TRUE(rcode == 0);
+
+ // Verify that the option can be retrieved.
+ OptionPtr opt_ptr = getOptionPtr("isc", 100);
+ ASSERT_TRUE(opt_ptr);
+
+ // Verify that the option definition is correct.
+ std::string val = "type=00100, len=00004: 192.0.2.0 (ipv4-address)";
+
+ EXPECT_EQ(val, opt_ptr->toText());
+}
+
// This test checks behavior of the configuration parser for option data
// for different values of csv-format parameter and when there is an option
// definition present.
"{ \"option-data\": [ {"
" \"space\": \"dhcp6\","
" \"code\": 23,"
- " \"csv-format\": True,"
" \"data\": \"2001:db8:1::1\""
" } ]"
"}";
"{ \"option-data\": [ {"
" \"space\": \"dhcp6\","
" \"name\": \"dns-servers\","
- " \"csv-format\": True,"
" \"data\": \"2001:db8:1::1\""
" } ]"
"}";