From cd5f61195a2bcece6db4de937e155da82eac1419 Mon Sep 17 00:00:00 2001 From: Razvan Becheriu Date: Thu, 3 Feb 2022 19:41:17 +0200 Subject: [PATCH 1/5] [#2036] make host reservations lookup before lease lookup configurable --- doc/examples/kea4/all-keys.json | 7 ++ doc/examples/kea6/all-keys.json | 7 ++ doc/sphinx/arm/dhcp4-srv.rst | 20 +++-- doc/sphinx/arm/dhcp6-srv.rst | 9 ++- src/bin/dhcp4/dhcp4_lexer.ll | 9 +++ src/bin/dhcp4/dhcp4_messages.cc | 2 + src/bin/dhcp4/dhcp4_messages.h | 1 + src/bin/dhcp4/dhcp4_messages.mes | 4 + src/bin/dhcp4/dhcp4_parser.yy | 8 ++ src/bin/dhcp4/json_config_parser.cc | 70 ++++++++++------- src/bin/dhcp4/tests/get_config_unittest.cc | 76 +++++++++++++++++++ .../dhcp4/tests/get_config_unittest.cc.skel | 2 +- src/bin/dhcp6/dhcp6_lexer.ll | 9 +++ src/bin/dhcp6/dhcp6_messages.cc | 2 + src/bin/dhcp6/dhcp6_messages.h | 1 + src/bin/dhcp6/dhcp6_messages.mes | 4 + src/bin/dhcp6/dhcp6_parser.yy | 8 ++ src/bin/dhcp6/json_config_parser.cc | 35 ++++++--- src/bin/dhcp6/tests/get_config_unittest.cc | 64 ++++++++++++++++ .../dhcp6/tests/get_config_unittest.cc.skel | 2 +- src/lib/dhcpsrv/alloc_engine.cc | 5 ++ src/lib/dhcpsrv/cfg_globals.cc | 1 + src/lib/dhcpsrv/cfg_globals.h | 1 + src/lib/dhcpsrv/parsers/simple_parser4.cc | 2 + src/lib/dhcpsrv/parsers/simple_parser6.cc | 2 + src/lib/dhcpsrv/srv_config.cc | 12 +-- src/lib/dhcpsrv/srv_config.h | 27 ++++++- .../dhcpsrv/tests/alloc_engine4_unittest.cc | 9 +-- .../dhcpsrv/tests/alloc_engine6_unittest.cc | 9 +-- src/lib/dhcpsrv/tests/srv_config_unittest.cc | 37 ++++++++- 30 files changed, 374 insertions(+), 71 deletions(-) diff --git a/doc/examples/kea4/all-keys.json b/doc/examples/kea4/all-keys.json index cff480b595..a9f0fe78cf 100644 --- a/doc/examples/kea4/all-keys.json +++ b/doc/examples/kea4/all-keys.json @@ -471,6 +471,13 @@ // PostgreSQL backends do support this mode. "ip-reservations-unique": true, + /// Boolean parameter which controls whether host reservations lookup + /// should be performed before lease lookup. This parameter has effect + /// only when multi-threading is disabled. When multi-threading is + /// enabled, host reservations lookup is always performed first to avoid + /// lease lookup resource locking. + "reservations-lookup-first": true, + // Specifies credentials to access lease database. "lease-database": { // memfile backend specific parameter specifying the interval diff --git a/doc/examples/kea6/all-keys.json b/doc/examples/kea6/all-keys.json index 8d45fbc070..d21f6fcf5d 100644 --- a/doc/examples/kea6/all-keys.json +++ b/doc/examples/kea6/all-keys.json @@ -415,6 +415,13 @@ // support this mode. "ip-reservations-unique": true, + /// Boolean parameter which controls whether host reservations lookup + /// should be performed before lease lookup. This parameter has effect + /// only when multi-threading is disabled. When multi-threading is + /// enabled, host reservations lookup is always performed first to avoid + /// lease lookup resource locking. + "reservations-lookup-first": true, + // Specifies credentials to access lease database. "lease-database": { // memfile backend specific parameter specifying the interval diff --git a/doc/sphinx/arm/dhcp4-srv.rst b/doc/sphinx/arm/dhcp4-srv.rst index d549c52142..8c1f8aa0b5 100644 --- a/doc/sphinx/arm/dhcp4-srv.rst +++ b/doc/sphinx/arm/dhcp4-srv.rst @@ -5280,7 +5280,7 @@ IP address within a subnet; this is supported since the Kea 1.9.1 release as an optional mode of operation, enabled with the ``ip-reservations-unique`` global parameter. -``ip-reservations-unique`` is a boolean parameter that defaults to +The ``ip-reservations-unique`` is a boolean parameter that defaults to ``true``, which forbids the specification of more than one reservation for the same IP address within a given subnet. Setting this parameter to ``false`` allows such reservations to be created both in the Kea configuration @@ -5347,12 +5347,18 @@ finds multiple reservations for the same IP address. .. note:: Currently the Kea server does not verify whether multiple reservations for - the same IP address exist in MySQL and/or - PostgreSQL host databases when ``ip-reservations-unique`` is updated from - ``true`` to ``false``. This may cause issues with lease allocations. - The administrator must ensure that there is at most one reservation - for each IP address within each subnet, prior to the configuration - update. + the same IP address exist in MySQL and/or PostgreSQL host databases when + ``ip-reservations-unique`` is updated from ``true`` to ``false``. This may + cause issues with lease allocations. The administrator must ensure that there + is at most one reservation for each IP address within each subnet, prior to + the configuration update. + +The ``reservations-lookup-first`` is a boolean parameter which controls whether +host reservations lookup should be performed before lease lookup. This parameter +has effect only when multi-threading is disabled. When multi-threading is +enabled, host reservations lookup is always performed first to avoid lease +lookup resource locking. The ``reservations-lookup-first`` defaults to ``false`` +when multi-threading is disabled. .. _shared-network4: diff --git a/doc/sphinx/arm/dhcp6-srv.rst b/doc/sphinx/arm/dhcp6-srv.rst index 3310bc6cfa..b1839e234b 100644 --- a/doc/sphinx/arm/dhcp6-srv.rst +++ b/doc/sphinx/arm/dhcp6-srv.rst @@ -4646,7 +4646,7 @@ for the same IPv6 address and/or delegated prefix in a given subnet. This is supported since Kea release 1.9.1 as an optional mode of operation enabled with the ``ip-reservations-unique`` global parameter. -``ip-reservations-unique`` is a boolean parameter that defaults to +The ``ip-reservations-unique`` is a boolean parameter that defaults to ``true``, which forbids the specification of more than one reservation for the same lease in a given subnet. Setting this parameter to ``false`` allows such reservations to be created both in the Kea configuration @@ -4722,6 +4722,13 @@ for the same IP address or delegated prefix. most one reservation for each IP address and/or delegated prefix within each subnet, prior to the configuration update. +The ``reservations-lookup-first`` is a boolean parameter which controls whether +host reservations lookup should be performed before lease lookup. This parameter +has effect only when multi-threading is disabled. When multi-threading is +enabled, host reservations lookup is always performed first to avoid lease +lookup resource locking. The ``reservations-lookup-first`` defaults to ``false`` +when multi-threading is disabled. + .. _shared-network6: Shared Networks in DHCPv6 diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index 31b7ac40af..f4bef02ac1 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -2027,6 +2027,15 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu] } } +\"reservations-lookup-first\" { + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::DHCP4: + return isc::dhcp::Dhcp4Parser::make_RESERVATIONS_LOOKUP_FIRST(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("reservations-lookup-first", driver.loc_); + } +} + \"compatibility\" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: diff --git a/src/bin/dhcp4/dhcp4_messages.cc b/src/bin/dhcp4/dhcp4_messages.cc index 5fe35d6e12..ca296cec17 100644 --- a/src/bin/dhcp4/dhcp4_messages.cc +++ b/src/bin/dhcp4/dhcp4_messages.cc @@ -136,6 +136,7 @@ extern const isc::log::MessageID DHCP4_RELEASE_EXCEPTION = "DHCP4_RELEASE_EXCEPT extern const isc::log::MessageID DHCP4_RELEASE_FAIL = "DHCP4_RELEASE_FAIL"; extern const isc::log::MessageID DHCP4_RELEASE_FAIL_NO_LEASE = "DHCP4_RELEASE_FAIL_NO_LEASE"; extern const isc::log::MessageID DHCP4_RELEASE_FAIL_WRONG_CLIENT = "DHCP4_RELEASE_FAIL_WRONG_CLIENT"; +extern const isc::log::MessageID DHCP4_RESERVATIONS_LOOKUP_FIRST_ENABLED = "DHCP4_RESERVATIONS_LOOKUP_FIRST_ENABLED"; extern const isc::log::MessageID DHCP4_RESERVED_HOSTNAME_ASSIGNED = "DHCP4_RESERVED_HOSTNAME_ASSIGNED"; extern const isc::log::MessageID DHCP4_RESPONSE_DATA = "DHCP4_RESPONSE_DATA"; extern const isc::log::MessageID DHCP4_RESPONSE_FQDN_DATA = "DHCP4_RESPONSE_FQDN_DATA"; @@ -294,6 +295,7 @@ const char* values[] = { "DHCP4_RELEASE_FAIL", "%1: failed to remove lease for address %2", "DHCP4_RELEASE_FAIL_NO_LEASE", "%1: client is trying to release non-existing lease %2", "DHCP4_RELEASE_FAIL_WRONG_CLIENT", "%1: client is trying to release the lease %2 which belongs to a different client", + "DHCP4_RESERVATIONS_LOOKUP_FIRST_ENABLED", "Multi-threading is enabled and host reservations lookup is always performed first.", "DHCP4_RESERVED_HOSTNAME_ASSIGNED", "%1: server assigned reserved hostname %2", "DHCP4_RESPONSE_DATA", "%1: responding with packet %2 (type %3), packet details: %4", "DHCP4_RESPONSE_FQDN_DATA", "%1: including FQDN option in the server's response: %2", diff --git a/src/bin/dhcp4/dhcp4_messages.h b/src/bin/dhcp4/dhcp4_messages.h index d7ff4219e0..c4884684e2 100644 --- a/src/bin/dhcp4/dhcp4_messages.h +++ b/src/bin/dhcp4/dhcp4_messages.h @@ -137,6 +137,7 @@ extern const isc::log::MessageID DHCP4_RELEASE_EXCEPTION; extern const isc::log::MessageID DHCP4_RELEASE_FAIL; extern const isc::log::MessageID DHCP4_RELEASE_FAIL_NO_LEASE; extern const isc::log::MessageID DHCP4_RELEASE_FAIL_WRONG_CLIENT; +extern const isc::log::MessageID DHCP4_RESERVATIONS_LOOKUP_FIRST_ENABLED; extern const isc::log::MessageID DHCP4_RESERVED_HOSTNAME_ASSIGNED; extern const isc::log::MessageID DHCP4_RESPONSE_DATA; extern const isc::log::MessageID DHCP4_RESPONSE_FQDN_DATA; diff --git a/src/bin/dhcp4/dhcp4_messages.mes b/src/bin/dhcp4/dhcp4_messages.mes index 7c67abdf51..b996fb05d6 100644 --- a/src/bin/dhcp4/dhcp4_messages.mes +++ b/src/bin/dhcp4/dhcp4_messages.mes @@ -485,6 +485,10 @@ lifetime. This is a message listing some information about the multi-threading parameters with which the server is running. +% DHCP4_RESERVATIONS_LOOKUP_FIRST_ENABLED Multi-threading is enabled and host reservations lookup is always performed first. +This is a message informing that host reservations lookup is performed before +lease lookup when multi-threading is enabled overwriting configured value. + % DHCP4_NCR_CREATE %1: DDNS updates enabled, therefore sending name change requests This debug message is issued when the server is starting to send name change requests to the D2 module to update records for the client diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy index 052173cf3e..e7b85e746f 100644 --- a/src/bin/dhcp4/dhcp4_parser.yy +++ b/src/bin/dhcp4/dhcp4_parser.yy @@ -240,6 +240,7 @@ using namespace std; HOSTNAME_CHAR_SET "hostname-char-set" HOSTNAME_CHAR_REPLACEMENT "hostname-char-replacement" IP_RESERVATIONS_UNIQUE "ip-reservations-unique" + RESERVATIONS_LOOKUP_FIRST "reservations-lookup-first" LOGGERS "loggers" OUTPUT_OPTIONS "output_options" @@ -541,6 +542,7 @@ global_param: valid_lifetime | statistic_default_sample_age | dhcp_multi_threading | ip_reservations_unique + | reservations_lookup_first | compatibility | parked_packet_limit | unknown_map_entry @@ -762,6 +764,12 @@ ip_reservations_unique: IP_RESERVATIONS_UNIQUE COLON BOOLEAN { ctx.stack_.back()->set("ip-reservations-unique", unique); }; +reservations_lookup_first: RESERVATIONS_LOOKUP_FIRST COLON BOOLEAN { + ctx.unique("reservations-lookup-first", ctx.loc2pos(@1)); + ElementPtr first(new BoolElement($3, ctx.loc2pos(@3))); + ctx.stack_.back()->set("reservations-lookup-first", first); +}; + interfaces_config: INTERFACES_CONFIG { ctx.unique("interfaces-config", ctx.loc2pos(@1)); ElementPtr i(new MapElement(ctx.loc2pos(@1))); diff --git a/src/bin/dhcp4/json_config_parser.cc b/src/bin/dhcp4/json_config_parser.cc index 26f57fcaf5..457333d659 100644 --- a/src/bin/dhcp4/json_config_parser.cc +++ b/src/bin/dhcp4/json_config_parser.cc @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -34,23 +35,23 @@ #include #include #include -#include #include #include -#include +#include #include +#include #include #include #include #include +#include #include #include -#include +#include #include #include -#include using namespace std; using namespace isc; @@ -60,6 +61,7 @@ using namespace isc::asiolink; using namespace isc::hooks; using namespace isc::process; using namespace isc::config; +using namespace isc::util; namespace { @@ -359,10 +361,10 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, // Global parameter name in case of an error. string parameter_name; ElementPtr mutable_cfg; - SrvConfigPtr srv_cfg; + SrvConfigPtr srv_config; try { // Get the staging configuration. - srv_cfg = CfgMgr::instance().getStagingCfg(); + srv_config = CfgMgr::instance().getStagingCfg(); // This is a way to convert ConstElementPtr to ElementPtr. // We need a config that can be edited, because we will insert @@ -373,7 +375,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, // Rule is that a global value overrides the dhcp-ddns value, so // we need to do this before we apply global defaults. // Note this is done for backward compatibility. - srv_cfg->moveDdnsParams(mutable_cfg); + srv_config->moveDdnsParams(mutable_cfg); // Move from reservation mode to new reservations flags. // @todo add warning @@ -395,14 +397,14 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, Dhcp4ConfigParser global_parser; // Apply global options in the staging config, e.g. ip-reservations-unique - global_parser.parseEarly(srv_cfg, mutable_cfg); + global_parser.parseEarly(srv_config, mutable_cfg); // We need definitions first ConstElementPtr option_defs = mutable_cfg->get("option-def"); if (option_defs) { parameter_name = "option-def"; OptionDefListParser parser(AF_INET); - CfgOptionDefPtr cfg_option_def = srv_cfg->getCfgOptionDef(); + CfgOptionDefPtr cfg_option_def = srv_config->getCfgOptionDef(); parser.parse(cfg_option_def, option_defs); } @@ -410,7 +412,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, if (option_datas) { parameter_name = "option-data"; OptionDataListParser parser(AF_INET); - CfgOptionPtr cfg_option = srv_cfg->getCfgOption(); + CfgOptionPtr cfg_option = srv_config->getCfgOption(); parser.parse(cfg_option, option_datas); } @@ -418,21 +420,32 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, if (control_socket) { parameter_name = "control-socket"; ControlSocketParser parser; - parser.parse(*srv_cfg, control_socket); + parser.parse(*srv_config, control_socket); } ConstElementPtr multi_threading = mutable_cfg->get("multi-threading"); if (multi_threading) { parameter_name = "multi-threading"; MultiThreadingConfigParser parser; - parser.parse(*srv_cfg, multi_threading); + parser.parse(*srv_config, multi_threading); } + /// depends on "multi-threading" being enabled, so it must come after. ConstElementPtr queue_control = mutable_cfg->get("dhcp-queue-control"); if (queue_control) { parameter_name = "dhcp-queue-control"; DHCPQueueControlParser parser; - srv_cfg->setDHCPQueueControl(parser.parse(queue_control)); + srv_config->setDHCPQueueControl(parser.parse(queue_control)); + } + + /// depends on "multi-threading" being enabled, so it must come after. + ConstElementPtr reservations_lookup_first = mutable_cfg->get("reservations-lookup-first"); + if (reservations_lookup_first) { + parameter_name = "reservations-lookup-first"; + if (MultiThreadingMgr::instance().getMode()) { + LOG_WARN(dhcp4_logger, DHCP4_RESERVATIONS_LOOKUP_FIRST_ENABLED); + } + srv_config->setReservationsLookupFirst(reservations_lookup_first->boolValue()); } ConstElementPtr hr_identifiers = @@ -447,7 +460,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, if (ifaces_config) { parameter_name = "interfaces-config"; IfacesConfigParser parser(AF_INET, check_only); - CfgIfacePtr cfg_iface = srv_cfg->getCfgIface(); + CfgIfacePtr cfg_iface = srv_config->getCfgIface(); parser.parse(cfg_iface, ifaces_config); } @@ -455,7 +468,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, if (sanity_checks) { parameter_name = "sanity-checks"; SanityChecksParser parser; - parser.parse(*srv_cfg, sanity_checks); + parser.parse(*srv_config, sanity_checks); } ConstElementPtr expiration_cfg = @@ -473,7 +486,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, if (hooks_libraries) { parameter_name = "hooks-libraries"; HooksLibrariesParser hooks_parser; - HooksConfig& libraries = srv_cfg->getHooksConfig(); + HooksConfig& libraries = srv_config->getHooksConfig(); hooks_parser.parse(libraries, hooks_libraries); libraries.verifyLibraries(hooks_libraries->getPosition()); } @@ -497,7 +510,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, ClientClassDefListParser parser; ClientClassDictionaryPtr dictionary = parser.parse(client_classes, AF_INET); - srv_cfg->setClientClassDictionary(dictionary); + srv_config->setClientClassDictionary(dictionary); } // Please move at the end when migration will be finished. @@ -507,7 +520,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, db::DbAccessParser parser; std::string access_string; parser.parse(access_string, lease_database); - CfgDbAccessPtr cfg_db_access = srv_cfg->getCfgDbAccess(); + CfgDbAccessPtr cfg_db_access = srv_config->getCfgDbAccess(); cfg_db_access->setLeaseDbAccessString(access_string); } @@ -517,14 +530,14 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, db::DbAccessParser parser; std::string access_string; parser.parse(access_string, hosts_database); - CfgDbAccessPtr cfg_db_access = srv_cfg->getCfgDbAccess(); + CfgDbAccessPtr cfg_db_access = srv_config->getCfgDbAccess(); cfg_db_access->setHostDbAccessString(access_string); } ConstElementPtr hosts_databases = mutable_cfg->get("hosts-databases"); if (hosts_databases) { parameter_name = "hosts-databases"; - CfgDbAccessPtr cfg_db_access = srv_cfg->getCfgDbAccess(); + CfgDbAccessPtr cfg_db_access = srv_config->getCfgDbAccess(); db::DbAccessParser parser; for (auto it : hosts_databases->listValue()) { std::string access_string; @@ -543,12 +556,12 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, /// add subnets from the CfgSharedNetworks4 into CfgSubnets4 /// as well. SharedNetworks4ListParser parser; - CfgSharedNetworks4Ptr cfg = srv_cfg->getCfgSharedNetworks4(); + CfgSharedNetworks4Ptr cfg = srv_config->getCfgSharedNetworks4(); parser.parse(cfg, shared_networks); // We also need to put the subnets it contains into normal // subnets list. - global_parser.copySubnets4(srv_cfg->getCfgSubnets4(), cfg); + global_parser.copySubnets4(srv_config->getCfgSubnets4(), cfg); } ConstElementPtr subnet4 = mutable_cfg->get("subnet4"); @@ -556,7 +569,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, parameter_name = "subnet4"; Subnets4ListConfigParser subnets_parser; // parse() returns number of subnets parsed. We may log it one day. - subnets_parser.parse(srv_cfg, subnet4); + subnets_parser.parse(srv_config, subnet4); } ConstElementPtr reservations = mutable_cfg->get("reservations"); @@ -566,7 +579,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, HostReservationsListParser parser; parser.parse(SUBNET_ID_GLOBAL, reservations, hosts); for (auto h = hosts.begin(); h != hosts.end(); ++h) { - srv_cfg->getCfgHosts()->add(*h); + srv_config->getCfgHosts()->add(*h); } } @@ -669,6 +682,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, (config_pair.first == "statistic-default-sample-count") || (config_pair.first == "statistic-default-sample-age") || (config_pair.first == "ip-reservations-unique") || + (config_pair.first == "reservations-lookup-first") || (config_pair.first == "parked-packet-limit")) { CfgMgr::instance().getStagingCfg()->addConfiguredGlobal(config_pair.first, config_pair.second); @@ -690,19 +704,19 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, parameter_name = ""; // Apply global options in the staging config. - global_parser.parse(srv_cfg, mutable_cfg); + global_parser.parse(srv_config, mutable_cfg); // This method conducts final sanity checks and tweaks. In particular, // it checks that there is no conflict between plain subnets and those // defined as part of shared networks. - global_parser.sanityChecks(srv_cfg, mutable_cfg); + global_parser.sanityChecks(srv_config, mutable_cfg); // Validate D2 client configuration. if (!d2_client_cfg) { d2_client_cfg.reset(new D2ClientConfig()); } d2_client_cfg->validateContents(); - srv_cfg->setD2ClientConfig(d2_client_cfg); + srv_config->setD2ClientConfig(d2_client_cfg); } catch (const isc::Exception& ex) { LOG_ERROR(dhcp4_logger, DHCP4_PARSER_FAIL) .arg(parameter_name).arg(ex.what()); @@ -777,7 +791,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, try { // If there are config backends, fetch and merge into staging config - server.getCBControl()->databaseConfigFetch(srv_cfg, + server.getCBControl()->databaseConfigFetch(srv_config, CBControlDHCPv4::FetchMode::FETCH_ALL); } catch (const isc::Exception& ex) { std::ostringstream err; diff --git a/src/bin/dhcp4/tests/get_config_unittest.cc b/src/bin/dhcp4/tests/get_config_unittest.cc index 04cf6eeca5..4fbb56f289 100644 --- a/src/bin/dhcp4/tests/get_config_unittest.cc +++ b/src/bin/dhcp4/tests/get_config_unittest.cc @@ -2388,6 +2388,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -2467,6 +2468,7 @@ const char* UNPARSED_CONFIGS[] = { " \"rebind-timer\": 2000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -2573,6 +2575,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -2682,6 +2685,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -2790,6 +2794,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -2979,6 +2984,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3168,6 +3174,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3276,6 +3283,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3387,6 +3395,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3498,6 +3507,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3606,6 +3616,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3714,6 +3725,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3851,6 +3863,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3987,6 +4000,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4124,6 +4138,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4262,6 +4277,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4370,6 +4386,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4513,6 +4530,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4629,6 +4647,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4717,6 +4736,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4814,6 +4834,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4902,6 +4923,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4990,6 +5012,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5078,6 +5101,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5166,6 +5190,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5263,6 +5288,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5371,6 +5397,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5523,6 +5550,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5667,6 +5695,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5800,6 +5829,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5917,6 +5947,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6042,6 +6073,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6195,6 +6227,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6320,6 +6353,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6467,6 +6501,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6611,6 +6646,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6735,6 +6771,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6858,6 +6895,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6985,6 +7023,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7093,6 +7132,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7173,6 +7213,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7253,6 +7294,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7361,6 +7403,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7469,6 +7512,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7577,6 +7621,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7685,6 +7730,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7793,6 +7839,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7985,6 +8032,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8108,6 +8156,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8383,6 +8432,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8511,6 +8561,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8797,6 +8848,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": true,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8933,6 +8985,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9011,6 +9064,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9089,6 +9143,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9167,6 +9222,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9247,6 +9303,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9355,6 +9412,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9463,6 +9521,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9571,6 +9630,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9679,6 +9739,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9813,6 +9874,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9940,6 +10002,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -10046,6 +10109,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -10154,6 +10218,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -10263,6 +10328,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -10376,6 +10442,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -10503,6 +10570,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -10653,6 +10721,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -10867,6 +10936,7 @@ const char* UNPARSED_CONFIGS[] = { " ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -11000,6 +11070,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -11173,6 +11244,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -11308,6 +11380,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -11443,6 +11516,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -11521,6 +11595,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -11599,6 +11674,7 @@ const char* UNPARSED_CONFIGS[] = { " \"parked-packet-limit\": 256,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" diff --git a/src/bin/dhcp4/tests/get_config_unittest.cc.skel b/src/bin/dhcp4/tests/get_config_unittest.cc.skel index cc4a64a349..a25a5abbbb 100644 --- a/src/bin/dhcp4/tests/get_config_unittest.cc.skel +++ b/src/bin/dhcp4/tests/get_config_unittest.cc.skel @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2020 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2017-2022 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this diff --git a/src/bin/dhcp6/dhcp6_lexer.ll b/src/bin/dhcp6/dhcp6_lexer.ll index afab3c5930..27c7786bbc 100644 --- a/src/bin/dhcp6/dhcp6_lexer.ll +++ b/src/bin/dhcp6/dhcp6_lexer.ll @@ -2092,6 +2092,15 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu] } } +\"reservations-lookup-first\" { + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::DHCP6: + return isc::dhcp::Dhcp6Parser::make_RESERVATIONS_LOOKUP_FIRST(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("reservations-lookup-first", driver.loc_); + } +} + \"compatibility\" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: diff --git a/src/bin/dhcp6/dhcp6_messages.cc b/src/bin/dhcp6/dhcp6_messages.cc index 9d203b96e1..cd2a55a691 100644 --- a/src/bin/dhcp6/dhcp6_messages.cc +++ b/src/bin/dhcp6/dhcp6_messages.cc @@ -140,6 +140,7 @@ extern const isc::log::MessageID DHCP6_RELEASE_PD_FAIL = "DHCP6_RELEASE_PD_FAIL" extern const isc::log::MessageID DHCP6_RELEASE_PD_FAIL_WRONG_DUID = "DHCP6_RELEASE_PD_FAIL_WRONG_DUID"; extern const isc::log::MessageID DHCP6_RELEASE_PD_FAIL_WRONG_IAID = "DHCP6_RELEASE_PD_FAIL_WRONG_IAID"; extern const isc::log::MessageID DHCP6_REQUIRED_OPTIONS_CHECK_FAIL = "DHCP6_REQUIRED_OPTIONS_CHECK_FAIL"; +extern const isc::log::MessageID DHCP6_RESERVATIONS_LOOKUP_FIRST_ENABLED = "DHCP6_RESERVATIONS_LOOKUP_FIRST_ENABLED"; extern const isc::log::MessageID DHCP6_RESPONSE_DATA = "DHCP6_RESPONSE_DATA"; extern const isc::log::MessageID DHCP6_SERVER_FAILED = "DHCP6_SERVER_FAILED"; extern const isc::log::MessageID DHCP6_SHUTDOWN = "DHCP6_SHUTDOWN"; @@ -298,6 +299,7 @@ const char* values[] = { "DHCP6_RELEASE_PD_FAIL_WRONG_DUID", "%1: client tried to release prefix %2/%3, but it belongs to another client (duid=%4)", "DHCP6_RELEASE_PD_FAIL_WRONG_IAID", "%1: client tried to release prefix %2/%3, but it used wrong IAID (expected %4, but got %5)", "DHCP6_REQUIRED_OPTIONS_CHECK_FAIL", "%1 message received from %2 failed the following check: %3", + "DHCP6_RESERVATIONS_LOOKUP_FIRST_ENABLED", "Multi-threading is enabled and host reservations lookup is always performed first.", "DHCP6_RESPONSE_DATA", "responding with packet type %1 data is %2", "DHCP6_SERVER_FAILED", "server failed: %1", "DHCP6_SHUTDOWN", "server shutdown", diff --git a/src/bin/dhcp6/dhcp6_messages.h b/src/bin/dhcp6/dhcp6_messages.h index 4325f1274a..29189dce11 100644 --- a/src/bin/dhcp6/dhcp6_messages.h +++ b/src/bin/dhcp6/dhcp6_messages.h @@ -141,6 +141,7 @@ extern const isc::log::MessageID DHCP6_RELEASE_PD_FAIL; extern const isc::log::MessageID DHCP6_RELEASE_PD_FAIL_WRONG_DUID; extern const isc::log::MessageID DHCP6_RELEASE_PD_FAIL_WRONG_IAID; extern const isc::log::MessageID DHCP6_REQUIRED_OPTIONS_CHECK_FAIL; +extern const isc::log::MessageID DHCP6_RESERVATIONS_LOOKUP_FIRST_ENABLED; extern const isc::log::MessageID DHCP6_RESPONSE_DATA; extern const isc::log::MessageID DHCP6_SERVER_FAILED; extern const isc::log::MessageID DHCP6_SHUTDOWN; diff --git a/src/bin/dhcp6/dhcp6_messages.mes b/src/bin/dhcp6/dhcp6_messages.mes index 07b8a0f22e..c65310b78a 100644 --- a/src/bin/dhcp6/dhcp6_messages.mes +++ b/src/bin/dhcp6/dhcp6_messages.mes @@ -532,6 +532,10 @@ IAID and validity lifetime. This is a message listing some information about the multi-threading parameters with which the server is running. +% DHCP6_RESERVATIONS_LOOKUP_FIRST_ENABLED Multi-threading is enabled and host reservations lookup is always performed first. +This is a message informing that host reservations lookup is performed before +lease lookup when multi-threading is enabled overwriting configured value. + % DHCP6_NOT_RUNNING IPv6 DHCP server is not running A warning message is issued when an attempt is made to shut down the IPv6 DHCP server but it is not running. diff --git a/src/bin/dhcp6/dhcp6_parser.yy b/src/bin/dhcp6/dhcp6_parser.yy index 4490915c6b..51567265c3 100644 --- a/src/bin/dhcp6/dhcp6_parser.yy +++ b/src/bin/dhcp6/dhcp6_parser.yy @@ -247,6 +247,7 @@ using namespace std; HOSTNAME_CHAR_SET "hostname-char-set" HOSTNAME_CHAR_REPLACEMENT "hostname-char-replacement" IP_RESERVATIONS_UNIQUE "ip-reservations-unique" + RESERVATIONS_LOOKUP_FIRST "reservations-lookup-first" LOGGERS "loggers" OUTPUT_OPTIONS "output_options" @@ -550,6 +551,7 @@ global_param: data_directory | statistic_default_sample_age | dhcp_multi_threading | ip_reservations_unique + | reservations_lookup_first | compatibility | parked_packet_limit | unknown_map_entry @@ -780,6 +782,12 @@ ip_reservations_unique: IP_RESERVATIONS_UNIQUE COLON BOOLEAN { ctx.stack_.back()->set("ip-reservations-unique", unique); }; +reservations_lookup_first: RESERVATIONS_LOOKUP_FIRST COLON BOOLEAN { + ctx.unique("reservations-lookup-first", ctx.loc2pos(@1)); + ElementPtr first(new BoolElement($3, ctx.loc2pos(@3))); + ctx.stack_.back()->set("reservations-lookup-first", first); +}; + interfaces_config: INTERFACES_CONFIG { ctx.unique("interfaces-config", ctx.loc2pos(@1)); ElementPtr i(new MapElement(ctx.loc2pos(@1))); diff --git a/src/bin/dhcp6/json_config_parser.cc b/src/bin/dhcp6/json_config_parser.cc index 35d271bd6a..b6156cbdb6 100644 --- a/src/bin/dhcp6/json_config_parser.cc +++ b/src/bin/dhcp6/json_config_parser.cc @@ -11,19 +11,15 @@ #include #include #include -#include #include #include #include +#include #include #include #include #include #include -#include -#include -#include -#include #include #include #include @@ -38,13 +34,17 @@ #include #include #include +#include +#include +#include #include #include #include #include - #include +#include #include +#include #include #include @@ -68,6 +68,7 @@ using namespace isc::asiolink; using namespace isc::hooks; using namespace isc::process; using namespace isc::config; +using namespace isc::util; namespace { @@ -176,7 +177,7 @@ public: /// /// @throw DhcpConfigError if parameters are missing or /// or having incorrect values. - void parse(const SrvConfigPtr& srv_config, const ConstElementPtr& global) { + void parse(const SrvConfigPtr& cfg, const ConstElementPtr& global) { // Set the data directory for server id file. if (global->contains("data-directory")) { @@ -187,21 +188,21 @@ public: // Set the probation period for decline handling. uint32_t probation_period = getUint32(global, "decline-probation-period"); - srv_config->setDeclinePeriod(probation_period); + cfg->setDeclinePeriod(probation_period); // Set the DHCPv4-over-DHCPv6 interserver port. uint16_t dhcp4o6_port = getUint16(global, "dhcp4o6-port"); - srv_config->setDhcp4o6Port(dhcp4o6_port); + cfg->setDhcp4o6Port(dhcp4o6_port); // Set the global user context. ConstElementPtr user_context = global->get("user-context"); if (user_context) { - srv_config->setContext(user_context); + cfg->setContext(user_context); } // Set the server's logical name std::string server_tag = getString(global, "server-tag"); - srv_config->setServerTag(server_tag); + cfg->setServerTag(server_tag); } /// @brief Sets global parameters before other parameters are parsed. @@ -547,6 +548,7 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, parser.parse(*srv_config, multi_threading); } + /// depends on "multi-threading" being enabled, so it must come after. ConstElementPtr queue_control = mutable_cfg->get("dhcp-queue-control"); if (queue_control) { parameter_name = "dhcp-queue-control"; @@ -554,6 +556,16 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, srv_config->setDHCPQueueControl(parser.parse(queue_control)); } + /// depends on "multi-threading" being enabled, so it must come after. + ConstElementPtr reservations_lookup_first = mutable_cfg->get("reservations-lookup-first"); + if (reservations_lookup_first) { + parameter_name = "reservations-lookup-first"; + if (MultiThreadingMgr::instance().getMode()) { + LOG_WARN(dhcp6_logger, DHCP6_RESERVATIONS_LOOKUP_FIRST_ENABLED); + } + srv_config->setReservationsLookupFirst(reservations_lookup_first->boolValue()); + } + ConstElementPtr hr_identifiers = mutable_cfg->get("host-reservation-identifiers"); if (hr_identifiers) { @@ -804,6 +816,7 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, (config_pair.first == "statistic-default-sample-count") || (config_pair.first == "statistic-default-sample-age") || (config_pair.first == "ip-reservations-unique") || + (config_pair.first == "reservations-lookup-first") || (config_pair.first == "parked-packet-limit")) { CfgMgr::instance().getStagingCfg()->addConfiguredGlobal(config_pair.first, config_pair.second); diff --git a/src/bin/dhcp6/tests/get_config_unittest.cc b/src/bin/dhcp6/tests/get_config_unittest.cc index 719717d545..aa0a7fd4fa 100644 --- a/src/bin/dhcp6/tests/get_config_unittest.cc +++ b/src/bin/dhcp6/tests/get_config_unittest.cc @@ -2111,6 +2111,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -2200,6 +2201,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -2315,6 +2317,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -2517,6 +2520,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -2719,6 +2723,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -2925,6 +2930,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3040,6 +3046,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3156,6 +3163,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3272,6 +3280,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3424,6 +3433,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3539,6 +3549,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3656,6 +3667,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3775,6 +3787,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -3909,6 +3922,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4034,6 +4048,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4127,6 +4142,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4229,6 +4245,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4322,6 +4339,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4415,6 +4433,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4517,6 +4536,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4632,6 +4652,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4791,6 +4812,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -4942,6 +4964,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5080,6 +5103,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5195,6 +5219,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5357,6 +5382,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5540,6 +5566,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5674,6 +5701,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5789,6 +5817,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5874,6 +5903,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -5959,6 +5989,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6074,6 +6105,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6189,6 +6221,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6394,6 +6427,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6524,6 +6558,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6662,6 +6697,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6777,6 +6813,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -6892,6 +6929,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7007,6 +7045,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7265,6 +7304,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7393,6 +7433,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7478,6 +7519,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7563,6 +7605,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -7868,6 +7911,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": true,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8015,6 +8059,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8098,6 +8143,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8181,6 +8227,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8264,6 +8311,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8347,6 +8395,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8446,6 +8495,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8561,6 +8611,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8676,6 +8727,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8792,6 +8844,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -8913,6 +8966,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9034,6 +9088,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9151,6 +9206,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9269,6 +9325,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9406,6 +9463,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9549,6 +9607,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9782,6 +9841,7 @@ const char* UNPARSED_CONFIGS[] = { " ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -9945,6 +10005,7 @@ const char* UNPARSED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -10028,6 +10089,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -10111,6 +10173,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" @@ -10210,6 +10273,7 @@ const char* UNPARSED_CONFIGS[] = { " \"relay-supplied-options\": [ \"65\" ],\n" " \"reservations-global\": false,\n" " \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" " \"reservations-out-of-pool\": false,\n" " \"sanity-checks\": {\n" " \"lease-checks\": \"warn\"\n" diff --git a/src/bin/dhcp6/tests/get_config_unittest.cc.skel b/src/bin/dhcp6/tests/get_config_unittest.cc.skel index a782648203..44f3f1e6c0 100644 --- a/src/bin/dhcp6/tests/get_config_unittest.cc.skel +++ b/src/bin/dhcp6/tests/get_config_unittest.cc.skel @@ -1,4 +1,4 @@ -// Copyright (C) 2017-2021 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2017-2022 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this diff --git a/src/lib/dhcpsrv/alloc_engine.cc b/src/lib/dhcpsrv/alloc_engine.cc index 3c0e870b1f..d04be22b6c 100644 --- a/src/lib/dhcpsrv/alloc_engine.cc +++ b/src/lib/dhcpsrv/alloc_engine.cc @@ -1021,6 +1021,11 @@ AllocEngine::allocateUnreservedLeases6(ClientContext6& ctx) { // the reservation. The default is to begin by the lease // if the multi-threading is disabled. bool check_reservation_first = MultiThreadingMgr::instance().getMode(); + // If multi-threading is disabled, honor the configured order for host + // reservations lookup. + if (!check_reservation_first) { + check_reservation_first = CfgMgr::instance().getCurrentCfg()->getReservationsLookupFirst(); + } uint64_t total_attempts = 0; diff --git a/src/lib/dhcpsrv/cfg_globals.cc b/src/lib/dhcpsrv/cfg_globals.cc index 4add30d303..7a2870004d 100644 --- a/src/lib/dhcpsrv/cfg_globals.cc +++ b/src/lib/dhcpsrv/cfg_globals.cc @@ -45,6 +45,7 @@ CfgGlobals::nameToIndex = { { "cache-threshold", CACHE_THRESHOLD }, { "cache-max-age", CACHE_MAX_AGE }, { "ip-reservations-unique", IP_RESERVATIONS_UNIQUE }, + { "reservations-lookup-first", RESERVATIONS_LOOKUP_FIRST }, { "ddns-update-on-renew", DDNS_UPDATE_ON_RENEW }, { "ddns-use-conflict-resolution", DDNS_USE_CONFLICT_RESOLUTION }, { "parked-packet-limit", PARKED_PACKET_LIMIT }, diff --git a/src/lib/dhcpsrv/cfg_globals.h b/src/lib/dhcpsrv/cfg_globals.h index 1d8ddc0ad8..6ea9aabc67 100644 --- a/src/lib/dhcpsrv/cfg_globals.h +++ b/src/lib/dhcpsrv/cfg_globals.h @@ -68,6 +68,7 @@ public: CACHE_THRESHOLD, CACHE_MAX_AGE, IP_RESERVATIONS_UNIQUE, + RESERVATIONS_LOOKUP_FIRST, DDNS_UPDATE_ON_RENEW, DDNS_USE_CONFLICT_RESOLUTION, PARKED_PACKET_LIMIT, diff --git a/src/lib/dhcpsrv/parsers/simple_parser4.cc b/src/lib/dhcpsrv/parsers/simple_parser4.cc index 31a849dd81..9ef5806394 100644 --- a/src/lib/dhcpsrv/parsers/simple_parser4.cc +++ b/src/lib/dhcpsrv/parsers/simple_parser4.cc @@ -93,6 +93,7 @@ const SimpleKeywords SimpleParser4::GLOBAL4_PARAMETERS = { { "cache-threshold", Element::real }, { "cache-max-age", Element::integer }, { "ip-reservations-unique", Element::boolean }, + { "reservations-lookup-first", Element::boolean }, { "ddns-update-on-renew", Element::boolean }, { "ddns-use-conflict-resolution", Element::boolean }, { "compatibility", Element::map }, @@ -133,6 +134,7 @@ const SimpleDefaults SimpleParser4::GLOBAL4_DEFAULTS = { { "statistic-default-sample-count", Element::integer, "20" }, { "statistic-default-sample-age", Element::integer, "0" }, { "ip-reservations-unique", Element::boolean, "true" }, + { "reservations-lookup-first", Element::boolean, "false" }, { "ddns-update-on-renew", Element::boolean, "false" }, { "ddns-use-conflict-resolution", Element::boolean, "true" }, { "parked-packet-limit", Element::integer, "256" }, diff --git a/src/lib/dhcpsrv/parsers/simple_parser6.cc b/src/lib/dhcpsrv/parsers/simple_parser6.cc index a4252af56e..e83208201f 100644 --- a/src/lib/dhcpsrv/parsers/simple_parser6.cc +++ b/src/lib/dhcpsrv/parsers/simple_parser6.cc @@ -94,6 +94,7 @@ const SimpleKeywords SimpleParser6::GLOBAL6_PARAMETERS = { { "cache-threshold", Element::real }, { "cache-max-age", Element::integer }, { "ip-reservations-unique", Element::boolean }, + { "reservations-lookup-first", Element::boolean }, { "ddns-update-on-renew", Element::boolean }, { "ddns-use-conflict-resolution", Element::boolean }, { "compatibility", Element::map }, @@ -129,6 +130,7 @@ const SimpleDefaults SimpleParser6::GLOBAL6_DEFAULTS = { { "statistic-default-sample-count", Element::integer, "20" }, { "statistic-default-sample-age", Element::integer, "0" }, { "ip-reservations-unique", Element::boolean, "true" }, + { "reservations-lookup-first", Element::boolean, "false" }, { "ddns-update-on-renew", Element::boolean, "false" }, { "ddns-use-conflict-resolution", Element::boolean, "true" }, { "parked-packet-limit", Element::integer, "256" } diff --git a/src/lib/dhcpsrv/srv_config.cc b/src/lib/dhcpsrv/srv_config.cc index 2836338e4f..44b4be5672 100644 --- a/src/lib/dhcpsrv/srv_config.cc +++ b/src/lib/dhcpsrv/srv_config.cc @@ -46,9 +46,8 @@ SrvConfig::SrvConfig() class_dictionary_(new ClientClassDictionary()), decline_timer_(0), echo_v4_client_id_(true), dhcp4o6_port_(0), d2_client_config_(new D2ClientConfig()), - configured_globals_(new CfgGlobals()), - cfg_consist_(new CfgConsistency()), - lenient_option_parsing_(false) { + configured_globals_(new CfgGlobals()), cfg_consist_(new CfgConsistency()), + lenient_option_parsing_(false), reservations_lookup_first_(false) { } SrvConfig::SrvConfig(const uint32_t sequence) @@ -65,9 +64,8 @@ SrvConfig::SrvConfig(const uint32_t sequence) class_dictionary_(new ClientClassDictionary()), decline_timer_(0), echo_v4_client_id_(true), dhcp4o6_port_(0), d2_client_config_(new D2ClientConfig()), - configured_globals_(new CfgGlobals()), - cfg_consist_(new CfgConsistency()), - lenient_option_parsing_(false) { + configured_globals_(new CfgGlobals()), cfg_consist_(new CfgConsistency()), + lenient_option_parsing_(false), reservations_lookup_first_(false) { } std::string @@ -266,6 +264,8 @@ SrvConfig::mergeGlobals(SrvConfig& other) { setServerTag(element->stringValue()); } else if (name == "ip-reservations-unique") { setIPReservationsUnique(element->boolValue()); + } else if (name == "reservations-lookup-first") { + setReservationsLookupFirst(element->boolValue()); } } catch(const std::exception& ex) { isc_throw (BadValue, "Invalid value:" << element->str() diff --git a/src/lib/dhcpsrv/srv_config.h b/src/lib/dhcpsrv/srv_config.h index 4e7fd41654..9049252153 100644 --- a/src/lib/dhcpsrv/srv_config.h +++ b/src/lib/dhcpsrv/srv_config.h @@ -795,7 +795,7 @@ public: /// @brief Sets DHCP4o6 IPC port /// - /// DHCPv4-over-DHCPv6 uses a UDP socket for interserver communication, + /// DHCPv4-over-DHCPv6 uses a UDP socket for inter-server communication, /// this socket is bound and connected to this port and port + 1 /// /// @param port port and port + 1 to use @@ -946,6 +946,24 @@ public: /// or disallowed to specify multiple hosts with the same IP reservation. void setIPReservationsUnique(const bool unique); + /// @brief Sets whether the server does host reservations lookup before lease + /// lookup. + /// + /// @param first Boolean value indicating if host reservations lookup should + /// be performed before lease lookup. + void setReservationsLookupFirst(const bool first) { + reservations_lookup_first_ = first; + } + + /// @brief Returns whether the server does host reservations lookup before + /// lease lookup. + /// + /// @return Boolean value indicating if host reservations lookup should be + /// performed before lease lookup. + bool getReservationsLookupFirst() const { + return (reservations_lookup_first_); + } + /// @brief Unparse a configuration object /// /// @return a pointer to unparsed configuration @@ -1131,6 +1149,13 @@ private: /// @{ bool lenient_option_parsing_; /// @} + + /// @brief Flag which indicates if the server should do host reservations + /// lookup before lease lookup. This parameter has effect only when + /// multi-threading is disabled. If multi-threading is enabled, host + /// reservations lookup is always performed first. + /// It default to false then multi-threading is disabled. + bool reservations_lookup_first_; }; /// @name Pointers to the @c SrvConfig object. diff --git a/src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc b/src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc index e6b52405fe..999d140dc6 100644 --- a/src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc +++ b/src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc @@ -3609,8 +3609,7 @@ TEST_F(AllocEngine4Test, updateExtendedInfo4) { lease->setContext(orig_context); if (!orig_context) { ASSERT_FALSE(lease->getContext()); - } - else { + } else { ASSERT_TRUE(lease->getContext()); ASSERT_TRUE(orig_context->equals(*(lease->getContext()))); } @@ -3636,8 +3635,7 @@ TEST_F(AllocEngine4Test, updateExtendedInfo4) { // Verify the lease has the expected user context content. if (!exp_context) { ASSERT_FALSE(lease->getContext()); - } - else { + } else { ASSERT_TRUE(lease->getContext()); ASSERT_TRUE(exp_context->equals(*(lease->getContext()))) << "expected: " << *(exp_context) << std::endl @@ -3747,8 +3745,7 @@ TEST_F(AllocEngine4Test, storeExtendedInfoEnabled4) { // Verify the lease has the expected user context content. if (!exp_context) { ASSERT_FALSE(lease->getContext()); - } - else { + } else { ASSERT_TRUE(lease->getContext()); ASSERT_TRUE(exp_context->equals(*(lease->getContext()))) << "expected: " << *(exp_context) << std::endl diff --git a/src/lib/dhcpsrv/tests/alloc_engine6_unittest.cc b/src/lib/dhcpsrv/tests/alloc_engine6_unittest.cc index f833c3a02b..746ecbcffb 100644 --- a/src/lib/dhcpsrv/tests/alloc_engine6_unittest.cc +++ b/src/lib/dhcpsrv/tests/alloc_engine6_unittest.cc @@ -4119,8 +4119,7 @@ TEST_F(AllocEngine6ExtendedInfoTest, updateExtendedInfo6) { lease->setContext(orig_context); if (!orig_context) { ASSERT_FALSE(lease->getContext()); - } - else { + } else { ASSERT_TRUE(lease->getContext()); ASSERT_TRUE(orig_context->equals(*(lease->getContext()))); } @@ -4136,8 +4135,7 @@ TEST_F(AllocEngine6ExtendedInfoTest, updateExtendedInfo6) { // Verify the lease has the expected user context content. if (!exp_context) { ASSERT_FALSE(lease->getContext()); - } - else { + } else { ASSERT_TRUE(lease->getContext()); ASSERT_TRUE(exp_context->equals(*(lease->getContext()))) << "expected: " << *(exp_context) << std::endl @@ -4233,8 +4231,7 @@ TEST_F(AllocEngine6ExtendedInfoTest, storeExtendedInfoEnabled6) { // Verify the lease has the expected user context content. if (!exp_context) { ASSERT_FALSE(lease->getContext()); - } - else { + } else { ASSERT_TRUE(lease->getContext()); ASSERT_TRUE(exp_context->equals(*(lease->getContext()))) << "expected: " << *(exp_context) << std::endl diff --git a/src/lib/dhcpsrv/tests/srv_config_unittest.cc b/src/lib/dhcpsrv/tests/srv_config_unittest.cc index 691ec7e11a..1e90ae916b 100644 --- a/src/lib/dhcpsrv/tests/srv_config_unittest.cc +++ b/src/lib/dhcpsrv/tests/srv_config_unittest.cc @@ -309,6 +309,26 @@ TEST_F(SrvConfigTest, echoClientId) { EXPECT_TRUE(conf1.getEchoClientId()); } +// This test verifies that host reservations lookup first flag can be configured. +TEST_F(SrvConfigTest, reservationsLookupFirst) { + SrvConfig conf; + + // Check that the default is false + EXPECT_FALSE(conf.getReservationsLookupFirst()); + + // Check that it can be modified to true + conf.setReservationsLookupFirst(true); + EXPECT_TRUE(conf.getReservationsLookupFirst()); + + // Check that the default value can be restored + conf.setReservationsLookupFirst(false); + EXPECT_FALSE(conf.getReservationsLookupFirst()); + + // Check the other constructor has the same default + SrvConfig conf1(1); + EXPECT_FALSE(conf1.getReservationsLookupFirst()); +} + // This test checks if entire configuration can be copied and that the sequence // number is not affected. TEST_F(SrvConfigTest, copy) { @@ -1029,6 +1049,7 @@ TEST_F(SrvConfigTest, mergeGlobals4) { cfg_from.setEchoClientId(true); cfg_from.setDhcp4o6Port(888); cfg_from.setServerTag("nor_this_server"); + cfg_from.setReservationsLookupFirst(true); // Add a configured global ip-reservations-unique. It should be populated // to the CfgDbAccess and CfgHosts. @@ -1037,6 +1058,7 @@ TEST_F(SrvConfigTest, mergeGlobals4) { // Add some configured globals: cfg_to.addConfiguredGlobal("dhcp4o6-port", Element::create(999)); cfg_to.addConfiguredGlobal("server-tag", Element::create("use_this_server")); + cfg_to.addConfiguredGlobal("reservations-lookup-first", Element::create(true)); // Now let's merge. ASSERT_NO_THROW(cfg_to.merge(cfg_from)); @@ -1055,6 +1077,9 @@ TEST_F(SrvConfigTest, mergeGlobals4) { // server-tag port should be the "from" configured value. EXPECT_EQ("use_this_server", cfg_to.getServerTag().get()); + // reservations-lookup-first should be the "from" configured value. + EXPECT_TRUE(cfg_to.getReservationsLookupFirst()); + // ip-reservations-unique EXPECT_FALSE(cfg_to.getCfgDbAccess()->getIPReservationsUnique()); @@ -1066,7 +1091,8 @@ TEST_F(SrvConfigTest, mergeGlobals4) { " \"decline-probation-period\": 300, \n" " \"dhcp4o6-port\": 999, \n" " \"ip-reservations-unique\": false, \n" - " \"server-tag\": \"use_this_server\" \n" + " \"server-tag\": \"use_this_server\", \n" + " \"reservations-lookup-first\": true" "} \n"; ConstElementPtr expected_globals; @@ -1105,6 +1131,7 @@ TEST_F(SrvConfigTest, mergeGlobals6) { cfg_from.setEchoClientId(true); cfg_from.setDhcp4o6Port(888); cfg_from.setServerTag("nor_this_server"); + cfg_from.setReservationsLookupFirst(true); // Add a configured global ip-reservations-unique. It should be populated // to the CfgDbAccess and CfgHosts. @@ -1113,6 +1140,7 @@ TEST_F(SrvConfigTest, mergeGlobals6) { // Add some configured globals: cfg_to.addConfiguredGlobal("dhcp4o6-port", Element::create(999)); cfg_to.addConfiguredGlobal("server-tag", Element::create("use_this_server")); + cfg_to.addConfiguredGlobal("reservations-lookup-first", Element::create(true)); // Now let's merge. ASSERT_NO_THROW(cfg_to.merge(cfg_from)); @@ -1128,6 +1156,9 @@ TEST_F(SrvConfigTest, mergeGlobals6) { // server-tag port should be the "from" configured value. EXPECT_EQ("use_this_server", cfg_to.getServerTag().get()); + // reservations-lookup-first should be the "from" configured value. + EXPECT_TRUE(cfg_to.getReservationsLookupFirst()); + // ip-reservations-unique EXPECT_FALSE(cfg_to.getCfgDbAccess()->getIPReservationsUnique()); @@ -1139,7 +1170,8 @@ TEST_F(SrvConfigTest, mergeGlobals6) { " \"decline-probation-period\": 300, \n" " \"dhcp4o6-port\": 999, \n" " \"ip-reservations-unique\": false, \n" - " \"server-tag\": \"use_this_server\" \n" + " \"server-tag\": \"use_this_server\", \n" + " \"reservations-lookup-first\": true" "} \n"; ConstElementPtr expected_globals; @@ -1148,7 +1180,6 @@ TEST_F(SrvConfigTest, mergeGlobals6) { EXPECT_TRUE(isEquivalent(expected_globals, cfg_to.getConfiguredGlobals()->toElement())); - } // This test verifies that new list of client classes replaces and old list -- GitLab From 47a0c82d2defc91a9fddf8f0a7bf25e6dc81ef52 Mon Sep 17 00:00:00 2001 From: Razvan Becheriu Date: Fri, 4 Feb 2022 16:37:18 +0200 Subject: [PATCH 2/5] [#2036] addressed comment --- src/lib/dhcpsrv/srv_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/dhcpsrv/srv_config.h b/src/lib/dhcpsrv/srv_config.h index 9049252153..7ad9a1b45d 100644 --- a/src/lib/dhcpsrv/srv_config.h +++ b/src/lib/dhcpsrv/srv_config.h @@ -1154,7 +1154,7 @@ private: /// lookup before lease lookup. This parameter has effect only when /// multi-threading is disabled. If multi-threading is enabled, host /// reservations lookup is always performed first. - /// It default to false then multi-threading is disabled. + /// It default to false when multi-threading is disabled. bool reservations_lookup_first_; }; -- GitLab From 0e1735003f6126cbbba8ab9463bc289cfbebff87 Mon Sep 17 00:00:00 2001 From: Razvan Becheriu Date: Fri, 4 Feb 2022 16:48:54 +0200 Subject: [PATCH 3/5] [#2036] fixed header guards --- src/bin/dhcp4/json_config_parser.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/bin/dhcp4/json_config_parser.h b/src/bin/dhcp4/json_config_parser.h index 73fae45ac1..66c0f08ee7 100644 --- a/src/bin/dhcp4/json_config_parser.h +++ b/src/bin/dhcp4/json_config_parser.h @@ -4,6 +4,9 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +#ifndef DHCP4_CONFIG_PARSER_H +#define DHCP4_CONFIG_PARSER_H + #include #include #include @@ -12,9 +15,6 @@ #include #include -#ifndef DHCP4_CONFIG_PARSER_H -#define DHCP4_CONFIG_PARSER_H - /// @todo: This header file and its .cc counterpart are very similar between /// DHCPv4 and DHCPv6. They should be merged. A ticket #2355. @@ -56,8 +56,7 @@ class Dhcpv4Srv; /// @param check_only whether this configuration is for testing only /// @return answer that contains result of reconfiguration isc::data::ConstElementPtr -configureDhcp4Server(Dhcpv4Srv&, - isc::data::ConstElementPtr config_set, +configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, bool check_only = false); } // namespace dhcp -- GitLab From 1e813c5d853132b4ece0425068c05c78aaf7a19a Mon Sep 17 00:00:00 2001 From: Razvan Becheriu Date: Fri, 4 Feb 2022 16:52:30 +0200 Subject: [PATCH 4/5] [#2036] added ChangeLog --- ChangeLog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ChangeLog b/ChangeLog index 7b57a3ed85..faa0868f04 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +1990. [func] razvan + Adden the ``reservations-lookup-first`` configuration parameter + which controls whether host reservations lookup should be performed + before lease lookup. This parameter has effect only when + multi-threading is disabled. When multi-threading is enabled, host + reservations lookup is always performed first. The + ``reservations-lookup-first`` parameter defaults to ``false`` when + multi-threading is disabled. + (Gitlab #2036) + Kea 2.1.2 (development) released on Jan 26, 2022 1989. [build] razvan -- GitLab From 34574b0116cbf7794dd10b2b4799b1342b9dd3ac Mon Sep 17 00:00:00 2001 From: Razvan Becheriu Date: Fri, 4 Feb 2022 17:18:49 +0200 Subject: [PATCH 5/5] [#2036] regenerated parser files --- ChangeLog | 12 +- src/bin/dhcp4/dhcp4_lexer.cc | 1334 +++++----- src/bin/dhcp4/dhcp4_parser.cc | 4115 +++++++++++++++---------------- src/bin/dhcp4/dhcp4_parser.h | 998 ++++---- src/bin/dhcp6/dhcp6_lexer.cc | 1330 +++++----- src/bin/dhcp6/dhcp6_parser.cc | 4306 +++++++++++++++++---------------- src/bin/dhcp6/dhcp6_parser.h | 1042 ++++---- 7 files changed, 6624 insertions(+), 6513 deletions(-) diff --git a/ChangeLog b/ChangeLog index faa0868f04..a35bfbd028 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,11 +1,11 @@ 1990. [func] razvan Adden the ``reservations-lookup-first`` configuration parameter - which controls whether host reservations lookup should be performed - before lease lookup. This parameter has effect only when - multi-threading is disabled. When multi-threading is enabled, host - reservations lookup is always performed first. The - ``reservations-lookup-first`` parameter defaults to ``false`` when - multi-threading is disabled. + which controls whether host reservations lookup should be + performed before lease lookup. This parameter has effect only + when multi-threading is disabled. When multi-threading is + enabled, host reservations lookup is always performed first. The + ``reservations-lookup-first`` parameter defaults to ``false`` + when multi-threading is disabled. (Gitlab #2036) Kea 2.1.2 (development) released on Jan 26, 2022 diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc index 079a83dd72..762f8e2e4c 100644 --- a/src/bin/dhcp4/dhcp4_lexer.cc +++ b/src/bin/dhcp4/dhcp4_lexer.cc @@ -328,6 +328,7 @@ typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; @@ -452,7 +453,7 @@ typedef size_t yy_size_t; #endif /* %if-not-reentrant */ -extern int yyleng; +extern yy_size_t yyleng; /* %endif */ /* %if-c-only */ @@ -505,7 +506,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -586,8 +587,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* %not-for-header */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = NULL; @@ -617,7 +618,7 @@ static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, yy_size_t len ); /* %endif */ @@ -685,14 +686,14 @@ static void yynoreturn yy_fatal_error ( const char* msg ); #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ - yyleng = (int) (yy_cp - yy_bp); \ + yyleng = (yy_size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 217 -#define YY_END_OF_BUFFER 218 +#define YY_NUM_RULES 218 +#define YY_END_OF_BUFFER 219 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -700,21 +701,21 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[2044] = +static const flex_int16_t yy_accept[2057] = { 0, - 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, - 218, 216, 10, 11, 216, 1, 210, 207, 210, 210, - 216, 209, 208, 216, 216, 216, 216, 216, 203, 204, - 216, 216, 216, 205, 206, 5, 5, 5, 216, 216, - 216, 10, 11, 0, 0, 198, 0, 0, 0, 0, + 211, 211, 0, 0, 0, 0, 0, 0, 0, 0, + 219, 217, 10, 11, 217, 1, 211, 208, 211, 211, + 217, 210, 209, 217, 217, 217, 217, 217, 204, 205, + 217, 217, 217, 206, 207, 5, 5, 5, 217, 217, + 217, 10, 11, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 210, 210, - 0, 209, 210, 3, 2, 6, 0, 210, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 9, 0, 199, + 0, 0, 0, 0, 0, 0, 0, 1, 211, 211, + 0, 210, 211, 3, 2, 6, 0, 211, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 9, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -724,7 +725,7 @@ static const flex_int16_t yy_accept[2044] = 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 202, 0, 0, 0, 0, + 0, 0, 0, 0, 201, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -736,7 +737,7 @@ static const flex_int16_t yy_accept[2044] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 215, 213, 0, 212, 211, 0, 0, 0, 0, 0, + 216, 214, 0, 213, 212, 0, 0, 0, 0, 0, 0, 0, 178, 0, 177, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, @@ -750,7 +751,7 @@ static const flex_int16_t yy_accept[2044] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, - 0, 0, 0, 214, 211, 0, 0, 0, 0, 0, + 0, 0, 0, 215, 212, 0, 0, 0, 0, 0, 0, 179, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, @@ -870,63 +871,64 @@ static const flex_int16_t yy_accept[2044] = 0, 0, 0, 65, 0, 0, 133, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 89, 0, 186, - 0, 0, 191, 0, 109, 0, 0, 0, 196, 0, + 0, 0, 191, 0, 109, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, - - 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, - 0, 0, 194, 0, 0, 119, 27, 0, 0, 0, - 54, 154, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 189, 0, 162, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 24, 0, - 0, 168, 0, 0, 0, 56, 0, 0, 0, 0, - 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, + + 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, + 0, 0, 0, 194, 0, 0, 119, 27, 0, 0, + 0, 54, 154, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 189, 0, 162, 0, 0, 0, + 0, 0, 0, 0, 0, 25, 0, 0, 0, 24, + 0, 0, 168, 0, 0, 0, 56, 0, 0, 0, + 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, - 108, 0, 0, 0, 42, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, + 0, 0, 108, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 139, 0, 0, 0, 26, 0, 0, 0, 190, - 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, - 0, 0, 20, 0, 0, 0, 193, 81, 0, 48, - 0, 0, 0, 187, 185, 0, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 0, 174, 0, 0, 0, 0, 0, 0, 0, - 0, 147, 0, 0, 0, 123, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, - - 0, 0, 49, 0, 0, 152, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 175, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 153, 0, 163, 0, + 0, 0, 0, 139, 0, 0, 0, 26, 0, 0, + 0, 190, 0, 0, 0, 0, 0, 150, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, + 0, 0, 0, 0, 0, 20, 0, 0, 0, 193, + 81, 0, 48, 0, 0, 0, 187, 185, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 0, 174, 0, 0, 0, 0, + 0, 0, 0, 0, 147, 0, 0, 0, 123, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, + + 0, 0, 0, 0, 0, 0, 49, 0, 0, 152, + 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 153, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, - 146, 0, 63, 62, 19, 0, 171, 0, 0, 0, - 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, - 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 145, 0, 0, 0, 0, 55, 0, - 68, 0, 46, 173, 0, 100, 0, 0, 0, 0, - 80, 0, 0, 0, 0, 0, 0, 0, 77, 0, + 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, + 0, 0, 0, 0, 0, 146, 0, 63, 62, 19, + 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 45, 0, 0, 0, 0, 105, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, + 0, 0, 0, 0, 55, 0, 68, 0, 46, 173, + 0, 100, 0, 0, 0, 0, 0, 80, 0, 0, + 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 0, 0, 0, 75, 0, 0, + 0, 50, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 0, 76, 0, 0, 0, 151, 0, 0, 0, 0, - 195, 197, 172, 0, 120, 101, 0, 0, 0, 0, - 72, 0, 0, 0, 0, 0, 0, 0, 143, 0, + 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, + 76, 0, 0, 0, 151, 0, 0, 0, 0, 195, + 198, 172, 0, 120, 101, 0, 0, 0, 0, 0, - 0, 148, 0, 74, 0, 66, 0, 0, 0, 0, - 102, 0, 0, 0, 142, 0, 0, 176, 0, 0, - 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, - 0, 0, 78, 0, 104, 70, 0, 0, 0, 0, - 69, 144, 0 + 72, 0, 0, 0, 0, 0, 0, 0, 143, 0, + 0, 0, 148, 0, 74, 0, 66, 0, 0, 0, + 0, 0, 102, 0, 0, 0, 142, 0, 0, 176, + 196, 0, 0, 0, 0, 0, 0, 0, 0, 73, + 0, 0, 0, 0, 0, 78, 0, 104, 70, 0, + 0, 0, 0, 69, 144, 0 } ; static const YY_CHAR yy_ec[256] = @@ -973,472 +975,474 @@ static const YY_CHAR yy_meta[74] = 1, 1, 1 } ; -static const flex_int16_t yy_base[2052] = +static const flex_int16_t yy_base[2065] = { 0, 0, 72, 21, 31, 43, 51, 54, 60, 91, 99, - 2432, 2433, 34, 2428, 145, 0, 207, 2433, 214, 221, - 13, 228, 2433, 2408, 118, 25, 2, 6, 2433, 2433, - 73, 11, 17, 2433, 2433, 2433, 104, 2416, 2369, 0, - 2406, 108, 2423, 24, 262, 2433, 2365, 67, 2371, 84, - 75, 88, 224, 91, 89, 290, 220, 2363, 206, 285, - 206, 204, 212, 60, 232, 2372, 247, 294, 315, 307, - 286, 2355, 230, 325, 354, 328, 2374, 0, 366, 382, - 397, 411, 404, 2433, 0, 2433, 419, 425, 216, 227, - 229, 319, 331, 329, 2433, 2371, 2412, 2433, 300, 2433, - - 438, 2399, 390, 2368, 414, 10, 407, 311, 409, 415, - 255, 2409, 0, 499, 410, 2351, 2348, 2352, 405, 2348, - 80, 2356, 406, 2352, 2341, 2342, 2347, 78, 2357, 2340, - 2349, 2349, 311, 2340, 402, 2341, 2339, 399, 2387, 2391, - 2331, 2384, 2324, 174, 2345, 2345, 2339, 336, 2332, 2330, - 2331, 2323, 2328, 2322, 421, 2333, 437, 2318, 2317, 2331, - 435, 2317, 409, 434, 2311, 495, 428, 469, 2332, 2329, - 2330, 431, 2328, 2363, 2362, 448, 2308, 2308, 441, 2309, - 458, 2301, 2318, 2310, 0, 457, 439, 468, 466, 477, - 483, 2309, 2433, 2354, 489, 2303, 475, 499, 510, 2357, - - 511, 2356, 508, 2355, 2433, 2433, 554, 2354, 528, 2313, - 2305, 2292, 2303, 2307, 2308, 2288, 2299, 2303, 2300, 2299, - 504, 524, 2342, 2336, 2300, 2281, 2278, 2286, 2281, 2295, - 2291, 2279, 2291, 2291, 2282, 2266, 2270, 2283, 2285, 2282, - 2274, 2264, 2282, 2433, 2277, 527, 533, 2262, 2271, 2313, - 2260, 2270, 2273, 542, 2269, 2308, 2253, 2255, 2266, 2304, - 2249, 2307, 2261, 2241, 2256, 552, 2246, 2252, 520, 2243, - 2241, 2241, 2247, 2238, 2237, 2244, 2234, 2293, 2249, 2248, - 2242, 527, 2249, 2244, 2236, 2226, 2241, 2240, 2235, 2239, - 531, 2237, 2223, 2229, 2236, 2218, 530, 2223, 2220, 2219, - - 341, 2214, 2228, 565, 2227, 2270, 2229, 544, 2220, 567, - 2433, 2433, 568, 2433, 2433, 2207, 532, 567, 2255, 583, - 2265, 576, 2433, 2264, 2433, 2258, 626, 2433, 575, 2198, - 2207, 2255, 2215, 2198, 2215, 2251, 2211, 2194, 2200, 2252, - 2207, 2210, 2201, 2204, 2199, 568, 2433, 2201, 2245, 2239, - 2197, 2194, 608, 2200, 2240, 2234, 2187, 2182, 2179, 2230, - 2187, 2176, 2192, 2226, 2172, 621, 2186, 2171, 2184, 2182, - 2180, 2169, 2179, 2178, 2173, 2180, 2175, 2171, 559, 2169, - 2172, 2167, 2153, 2165, 2161, 2211, 569, 2205, 2433, 2169, - 2203, 2153, 2152, 2151, 2144, 2146, 2158, 2149, 2156, 2137, - - 2154, 2149, 606, 2196, 2149, 2146, 2149, 2433, 2148, 2137, - 2137, 2149, 565, 2124, 2125, 2146, 584, 2128, 2179, 2124, - 2138, 2141, 2136, 2122, 2134, 2133, 2132, 2127, 2169, 2129, - 2128, 2127, 2126, 599, 2169, 2128, 2108, 2166, 2433, 2108, - 2107, 650, 2120, 2433, 2433, 2119, 2108, 2100, 599, 2159, - 2158, 2433, 2157, 2433, 625, 673, 600, 2156, 2098, 2109, - 2148, 2101, 2103, 2105, 2092, 2100, 2088, 2433, 2093, 2086, - 2098, 2101, 2084, 2099, 2086, 2085, 2433, 642, 2087, 2084, - 598, 2082, 2084, 2433, 2092, 2089, 2074, 2087, 2082, 660, - 2089, 2077, 2070, 2121, 2433, 2068, 2084, 2118, 2079, 2076, - - 2077, 2061, 2070, 2077, 2111, 2062, 2061, 2056, 2055, 2106, - 2050, 618, 2069, 2043, 2050, 2055, 2065, 2099, 2103, 2433, - 2048, 2044, 2042, 2051, 2050, 2044, 2051, 2035, 2035, 2045, - 2033, 2047, 2047, 2035, 2031, 2029, 2433, 2086, 2433, 2028, - 2039, 2078, 2023, 2028, 2037, 2031, 2025, 2034, 2076, 2070, - 2032, 2015, 2015, 2010, 2030, 2005, 2011, 2016, 654, 2018, - 2022, 2005, 2063, 2004, 2004, 2055, 2000, 2001, 2000, 2012, - 2001, 2433, 2011, 2048, 2433, 1999, 1997, 2433, 2008, 2044, - 2004, 1988, 2005, 2045, 2433, 2433, 2433, 649, 632, 701, - 2433, 1996, 1995, 345, 2002, 1982, 1992, 2034, 1979, 2032, - - 1977, 1987, 2029, 1974, 1973, 1972, 1979, 1972, 1984, 1966, - 1966, 1981, 1980, 649, 1979, 1978, 1978, 1960, 1965, 2006, - 1973, 1965, 2010, 1954, 1970, 1969, 2433, 1954, 1951, 2009, - 1964, 1956, 1962, 1953, 1961, 1946, 1962, 1944, 1956, 1948, - 1956, 644, 1938, 1937, 1931, 1936, 1951, 1948, 1949, 1928, - 1938, 1944, 1987, 1942, 1934, 1925, 2433, 1926, 1928, 1937, - 1929, 1934, 1973, 1972, 1923, 16, 1932, 1969, 1914, 1967, - 1914, 1917, 1910, 2433, 1924, 1903, 1907, 1921, 1913, 1958, - 1910, 1917, 1955, 2433, 1900, 1914, 1898, 1912, 1915, 1896, - 1948, 1947, 1946, 1893, 1944, 1889, 1942, 1941, 2433, 1886, - - 1900, 1899, 697, 1900, 1899, 1896, 1896, 1933, 1897, 1892, - 1875, 1880, 1882, 2433, 1888, 1878, 2433, 646, 596, 1872, - 1870, 1873, 207, 221, 224, 234, 400, 463, 518, 677, + 2445, 2446, 34, 2441, 145, 0, 207, 2446, 214, 221, + 13, 228, 2446, 2421, 118, 25, 2, 6, 2446, 2446, + 73, 11, 17, 2446, 2446, 2446, 104, 2429, 2382, 0, + 2419, 108, 2436, 24, 262, 2446, 2378, 67, 2384, 84, + 75, 88, 224, 91, 89, 290, 220, 2376, 206, 285, + 206, 204, 212, 60, 232, 2385, 247, 294, 315, 307, + 286, 2368, 230, 325, 354, 328, 2387, 0, 366, 382, + 397, 411, 404, 2446, 0, 2446, 419, 425, 216, 227, + 229, 319, 331, 329, 2446, 2384, 2425, 2446, 300, 2446, + + 438, 2412, 390, 2381, 414, 10, 407, 311, 409, 415, + 255, 2422, 0, 499, 410, 2364, 2361, 2365, 405, 2361, + 80, 2369, 406, 2365, 2354, 2355, 2360, 78, 2370, 2353, + 2362, 2362, 311, 2353, 402, 2354, 2352, 399, 2400, 2404, + 2344, 2397, 2337, 174, 2358, 2358, 2352, 336, 2345, 2343, + 2344, 2336, 2341, 2335, 421, 2346, 437, 2331, 2330, 2344, + 435, 2330, 409, 434, 2324, 495, 428, 469, 2345, 2342, + 2343, 431, 2341, 2376, 2375, 448, 2321, 2321, 441, 2322, + 458, 2314, 2331, 2323, 0, 457, 439, 468, 466, 477, + 483, 2322, 2446, 2367, 489, 2316, 475, 499, 510, 2370, + + 511, 2369, 508, 2368, 2446, 2446, 554, 2367, 528, 2326, + 2318, 2305, 2316, 2320, 2321, 2301, 2312, 2316, 2313, 2312, + 504, 524, 2355, 2349, 2313, 2294, 2291, 2299, 2294, 2308, + 2304, 2292, 2304, 2304, 2295, 2279, 2283, 2296, 2298, 2295, + 2287, 2277, 2295, 2446, 2290, 527, 533, 2275, 2284, 2326, + 2273, 2283, 2286, 542, 2282, 2321, 2266, 2268, 2279, 2317, + 2262, 2320, 2274, 2254, 2269, 552, 2259, 2265, 520, 2256, + 2254, 2254, 2260, 2251, 2250, 2257, 2247, 2306, 2262, 2261, + 2255, 527, 2262, 2257, 2249, 2239, 2254, 2253, 2248, 2252, + 531, 2250, 2236, 2242, 2249, 2231, 530, 2236, 2233, 2232, + + 341, 2227, 2241, 565, 2240, 2283, 2242, 544, 2233, 567, + 2446, 2446, 568, 2446, 2446, 2220, 532, 567, 2268, 583, + 2278, 576, 2446, 2277, 2446, 2271, 626, 2446, 575, 2211, + 2220, 2268, 2228, 2211, 2228, 2264, 2224, 2207, 2213, 2265, + 2220, 2223, 2214, 2217, 2212, 568, 2446, 2214, 2258, 2252, + 2210, 2207, 608, 2213, 2253, 2247, 2200, 2195, 2192, 2243, + 2200, 2189, 2205, 2239, 2185, 621, 2199, 2184, 2197, 2195, + 2193, 2182, 2192, 2191, 2186, 2193, 2188, 2184, 559, 2182, + 2185, 2180, 2166, 2178, 2174, 2224, 569, 2218, 2446, 2182, + 2216, 2166, 2165, 2164, 2157, 2159, 2171, 2162, 2169, 2150, + + 2167, 2162, 606, 2209, 2162, 2159, 2162, 2446, 2161, 2150, + 2150, 2162, 565, 2137, 2138, 2159, 584, 2141, 2192, 2137, + 2151, 2154, 2149, 2135, 2147, 2146, 2145, 2140, 2182, 2142, + 2141, 2140, 2139, 599, 2182, 2141, 2121, 2179, 2446, 2121, + 2120, 650, 2133, 2446, 2446, 2132, 2121, 2113, 599, 2172, + 2171, 2446, 2170, 2446, 625, 673, 600, 2169, 2111, 2122, + 2161, 2114, 2116, 2118, 2105, 2113, 2101, 2446, 2106, 2099, + 2111, 2114, 2097, 2112, 2099, 2098, 2446, 642, 2100, 2097, + 598, 2095, 2097, 2446, 2105, 2102, 2087, 2100, 2095, 660, + 2102, 2090, 2083, 2134, 2446, 2081, 2097, 2131, 2092, 2089, + + 2090, 2074, 2083, 2090, 2124, 2075, 2074, 2069, 2068, 2119, + 2063, 618, 2082, 2056, 2063, 2068, 2078, 2112, 2116, 2446, + 2061, 2057, 2055, 2064, 2063, 2057, 2064, 2048, 2048, 2058, + 2046, 2060, 2060, 2048, 2044, 2042, 2446, 2099, 2446, 2041, + 2052, 2091, 2036, 2041, 2050, 2044, 2038, 2047, 2089, 2083, + 2045, 2028, 2028, 2023, 2043, 2018, 2024, 2029, 654, 2031, + 2035, 2018, 2076, 2017, 2017, 2068, 2013, 2014, 2013, 2025, + 2014, 2446, 2024, 2061, 2446, 2012, 2010, 2446, 2021, 2057, + 2017, 2001, 2018, 2058, 2446, 2446, 2446, 649, 632, 701, + 2446, 2009, 2008, 345, 2015, 1995, 2005, 2047, 1992, 2045, + + 1990, 2000, 2042, 1987, 1986, 1985, 1992, 1985, 1997, 1979, + 1979, 1994, 1993, 649, 1992, 1991, 1991, 1973, 1978, 2019, + 1986, 1978, 2023, 1967, 1983, 1982, 2446, 1967, 1964, 2022, + 1977, 1969, 1975, 1966, 1974, 1959, 1975, 1957, 1969, 1961, + 1969, 644, 1951, 1950, 1944, 1949, 1964, 1961, 1962, 1941, + 1951, 1957, 2000, 1955, 1947, 1938, 2446, 1939, 1941, 1950, + 1942, 1947, 1986, 1985, 1936, 16, 1945, 1982, 1927, 1980, + 1927, 1930, 1923, 2446, 1937, 1916, 1920, 1934, 1926, 1971, + 1923, 1930, 1968, 2446, 1913, 1927, 1911, 1925, 1928, 1909, + 1961, 1960, 1959, 1906, 1957, 1902, 1955, 1954, 2446, 1899, + + 1913, 1912, 697, 1913, 1912, 1909, 1909, 1946, 1910, 1905, + 1888, 1893, 1895, 2446, 1901, 1891, 2446, 646, 596, 1885, + 1883, 1886, 207, 221, 224, 234, 400, 463, 518, 677, 558, 601, 667, 658, 629, 670, 715, 669, 669, 679, 684, 671, 674, 685, 685, 669, 726, 679, 689, 692, - 730, 693, 689, 686, 688, 735, 741, 699, 700, 2433, + 730, 693, 689, 686, 688, 735, 741, 699, 700, 2446, 703, 699, 690, 705, 710, 707, 710, 709, 697, 711, 712, 710, 718, 754, 716, 761, 762, 712, 704, 714, - 761, 719, 769, 2433, 770, 723, 725, 721, 715, 718, - 776, 772, 735, 724, 737, 2433, 727, 738, 727, 740, + 761, 719, 769, 2446, 770, 723, 725, 721, 715, 718, + 776, 772, 735, 724, 737, 2446, 727, 738, 727, 740, 730, 743, 787, 788, 731, 742, 727, 750, 729, 735, 790, 754, 738, 750, 794, 795, 796, 743, 798, 762, 757, 764, 763, 761, 746, 758, 760, 766, 756, 754, - 2433, 818, 777, 778, 768, 780, 770, 773, 784, 769, + 2446, 818, 777, 778, 768, 780, 770, 773, 784, 769, 776, 782, 774, 788, 828, 804, 791, 796, 793, 775, - 782, 796, 841, 798, 795, 796, 794, 803, 2433, 799, + 782, 796, 841, 798, 795, 796, 794, 803, 2446, 799, 794, 809, 806, 792, 799, 798, 796, 815, 812, 800, 807, 808, 817, 821, 858, 820, 810, 808, 807, 818, - 814, 870, 827, 812, 813, 819, 835, 825, 2433, 835, + 814, 870, 827, 812, 813, 819, 835, 825, 2446, 835, 835, 828, 839, 837, 882, 824, 826, 841, 828, 827, - 889, 890, 847, 833, 839, 837, 2433, 2433, 847, 852, - 857, 845, 855, 857, 2433, 2433, 858, 845, 863, 850, - 844, 2433, 849, 867, 854, 904, 855, 907, 853, 857, - 875, 916, 2433, 2433, 861, 865, 864, 861, 921, 874, + 889, 890, 847, 833, 839, 837, 2446, 2446, 847, 852, + 857, 845, 855, 857, 2446, 2446, 858, 845, 863, 850, + 844, 2446, 849, 867, 854, 904, 855, 907, 853, 857, + 875, 916, 2446, 2446, 861, 865, 864, 861, 921, 874, 864, 865, 861, 874, 885, 869, 887, 882, 883, 885, 878, 880, 881, 877, 883, 883, 885, 900, 941, 898, - 903, 880, 903, 889, 888, 2433, 895, 896, 910, 900, + 903, 880, 903, 889, 888, 2446, 895, 896, 910, 900, 898, 911, 949, 907, 897, 912, 913, 900, 932, 940, - 909, 904, 959, 960, 922, 962, 2433, 968, 911, 927, + 909, 904, 959, 960, 922, 962, 2446, 968, 911, 927, 931, 972, 922, 921, 916, 917, 929, 936, 925, 926, 922, 925, 926, 937, 946, 983, 930, 948, 940, 935, - 993, 950, 951, 942, 2433, 944, 947, 955, 957, 942, - 958, 952, 999, 965, 949, 950, 2433, 966, 969, 952, - 1011, 954, 973, 2433, 2433, 972, 975, 961, 956, 974, + 993, 950, 951, 942, 2446, 944, 947, 955, 957, 942, + 958, 952, 999, 965, 949, 950, 2446, 966, 969, 952, + 1011, 954, 973, 2446, 2446, 972, 975, 961, 956, 974, 1014, 972, 968, 965, 1018, 1019, 981, 967, 985, 984, 985, 971, 986, 978, 985, 975, 993, 992, 979, 996, - 2433, 988, 994, 997, 1042, 2433, 991, 996, 1040, 992, + 2446, 988, 994, 997, 1042, 2446, 991, 996, 1040, 992, 1004, 998, 1002, 1000, 998, 1000, 1010, 1055, 999, 1004, - 1001, 1001, 1060, 1004, 1016, 2433, 1004, 1012, 1010, 1061, + 1001, 1001, 1060, 1004, 1016, 2446, 1004, 1012, 1010, 1061, 1003, 1024, 1011, 1012, 1021, 1033, 1020, 1028, 1019, 1024, 1034, 1035, 1040, 1081, 1053, 1058, 1040, 1037, 1033, 1047, - 1030, 1030, 2433, 1031, 1091, 1034, 2433, 1045, 1035, 1055, + 1030, 1030, 2446, 1031, 1091, 1034, 2446, 1045, 1035, 1055, 1054, 1045, 1034, 1051, 1058, 1101, 1062, 1055, 1059, 1063, - 1046, 1063, 1054, 1109, 1058, 2433, 1108, 1055, 1058, 1057, + 1046, 1063, 1054, 1109, 1058, 2446, 1108, 1055, 1058, 1057, 1058, 1058, 1079, 1076, 1081, 1082, 1068, 1076, 1085, 1065, - 1080, 1087, 1129, 2433, 1130, 1131, 1073, 1083, 1093, 1077, + 1080, 1087, 1129, 2446, 1130, 1131, 1073, 1083, 1093, 1077, 1097, 1085, 1081, 1088, 1097, 1085, 1092, 1093, 1105, 1146, 1093, 1091, 1093, 1110, 1151, 1101, 1100, 1106, 1104, 1102, - 1097, 1158, 1109, 1160, 1156, 1162, 2433, 1119, 1112, 1103, - 1122, 1110, 1120, 1117, 1122, 1118, 1131, 1131, 2433, 1115, + 1097, 1158, 1109, 1160, 1156, 1162, 2446, 1119, 1112, 1103, + 1122, 1110, 1120, 1117, 1122, 1118, 1131, 1131, 2446, 1115, - 1118, 1113, 1119, 2433, 1120, 1180, 1119, 1138, 1139, 1141, + 1118, 1113, 1119, 2446, 1120, 1180, 1119, 1138, 1139, 1141, 1180, 1133, 1187, 1188, 1141, 1126, 1140, 1138, 1149, 1148, - 1132, 1137, 1155, 2433, 1177, 1168, 1200, 1140, 1162, 1157, - 1157, 1161, 1206, 2433, 1149, 1149, 1152, 1169, 1164, 1168, - 1213, 1161, 1165, 2433, 1157, 1174, 1154, 1175, 1165, 1217, - 1170, 2433, 1183, 1183, 1221, 1169, 1224, 1182, 1187, 1173, - 1233, 1176, 1187, 1179, 1185, 1181, 1199, 1200, 1201, 2433, - 2433, 1200, 2433, 1185, 1196, 1187, 1206, 1199, 1197, 1190, - 1202, 1246, 1210, 1199, 1206, 1207, 1213, 2433, 1206, 1258, - 1199, 1260, 2433, 1261, 1203, 1209, 1216, 1260, 1222, 2433, - - 1223, 2433, 1210, 2433, 1212, 1226, 1231, 1214, 1273, 1230, + 1132, 1137, 1155, 2446, 1177, 1168, 1200, 1140, 1162, 1157, + 1157, 1161, 1206, 2446, 1149, 1149, 1152, 1169, 1164, 1168, + 1213, 1161, 1165, 2446, 1157, 1174, 1154, 1175, 1165, 1217, + 1170, 2446, 1183, 1183, 1221, 1169, 1224, 1182, 1187, 1173, + 1233, 1176, 1187, 1179, 1185, 1181, 1199, 1200, 1201, 2446, + 2446, 1200, 2446, 1185, 1196, 1187, 1206, 1199, 1197, 1190, + 1202, 1246, 1210, 1199, 1206, 1207, 1213, 2446, 1206, 1258, + 1199, 1260, 2446, 1261, 1203, 1209, 1216, 1260, 1222, 2446, + + 1223, 2446, 1210, 2446, 1212, 1226, 1231, 1214, 1273, 1230, 1231, 1232, 1272, 1224, 1229, 1280, 1233, 1277, 1230, 1284, - 2433, 1231, 1286, 1287, 1244, 1245, 1247, 2433, 2433, 1230, + 2446, 1231, 1286, 1287, 1244, 1245, 1247, 2446, 2446, 1230, 1292, 1288, 1237, 1253, 1296, 1238, 1250, 1255, 1270, 1301, - 2433, 1258, 1251, 1260, 1251, 1262, 2433, 1307, 1244, 1255, - 1270, 1306, 1258, 2433, 1254, 1270, 1271, 1272, 1269, 1313, + 2446, 1258, 1251, 1260, 1251, 1262, 2446, 1307, 1244, 1255, + 1270, 1306, 1258, 2446, 1254, 1270, 1271, 1272, 1269, 1313, 1276, 1266, 1276, 1282, 1269, 1265, 1325, 1278, 1322, 1329, - 1287, 2433, 1288, 1281, 1290, 1291, 1288, 1278, 1281, 1281, + 1287, 2446, 1288, 1281, 1290, 1291, 1288, 1278, 1281, 1281, 1286, 1341, 1288, 1343, 1286, 1291, 1346, 1342, 1283, 1298, - 1291, 1295, 1308, 1309, 1307, 1356, 2433, 1310, 2433, 2433, + 1291, 1295, 1308, 1309, 1307, 1356, 2446, 1310, 2446, 2446, 1315, 1307, 1317, 1302, 1358, 1305, 1305, 1366, 1310, 1320, - 1369, 2433, 1317, 1317, 1319, 1321, 1374, 1315, 1318, 2433, - 1319, 1336, 1341, 2433, 1325, 2433, 2433, 1338, 1321, 1341, - 1342, 2433, 1329, 1388, 1338, 2433, 1390, 1339, 1392, 1372, - 2433, 1394, 1351, 1396, 1347, 1394, 2433, 1342, 1401, 1351, + 1369, 2446, 1317, 1317, 1319, 1321, 1374, 1315, 1318, 2446, + 1319, 1336, 1341, 2446, 1325, 2446, 2446, 1338, 1321, 1341, + 1342, 2446, 1329, 1388, 1338, 2446, 1390, 1339, 1392, 1372, + 2446, 1394, 1351, 1396, 1347, 1394, 2446, 1342, 1401, 1351, 1345, 1342, 1345, 1348, 1348, 1365, 1404, 1357, 1369, 1372, - 1360, 1363, 1356, 1364, 1354, 2433, 1376, 1361, 2433, 1363, - 1364, 1379, 1379, 1382, 1382, 1379, 1423, 1385, 1377, 2433, - 1378, 2433, 1388, 1380, 2433, 1386, 1391, 1392, 1389, 1433, - 1381, 1396, 1397, 1389, 2433, 1386, 1387, 1387, 1393, 1392, - - 1390, 1444, 1405, 2433, 1446, 1393, 2433, 1394, 1394, 1396, - 1402, 2433, 1411, 1405, 1460, 1402, 1408, 1400, 1412, 1416, - 1427, 1420, 1426, 1470, 1423, 2433, 1432, 2433, 1429, 2433, - 1426, 1449, 2433, 1476, 2433, 1434, 1419, 1479, 2433, 1480, - 1437, 1442, 1424, 1484, 1485, 1481, 1445, 1442, 1438, 1431, - 1486, 1444, 1445, 1435, 1440, 1496, 1450, 1499, 1495, 1458, - 1455, 1499, 1447, 1452, 1450, 1509, 1465, 1453, 1512, 1508, - 1471, 1515, 1476, 1465, 1459, 1519, 1461, 1462, 1476, 1479, - 1479, 1525, 1467, 1484, 1480, 1478, 1485, 1469, 1527, 1528, - 1475, 1530, 1493, 1486, 1485, 1479, 1497, 2433, 1497, 1489, - - 1495, 1500, 1487, 1486, 1488, 1543, 2433, 1484, 1502, 1551, - 1509, 1522, 2433, 1554, 1507, 2433, 2433, 1498, 1509, 1558, - 2433, 2433, 1504, 1509, 1507, 1557, 1515, 1520, 1508, 1524, - 1514, 1512, 1526, 2433, 1514, 2433, 1517, 1568, 1511, 1516, - 1576, 1524, 1534, 1535, 2433, 1580, 1534, 1578, 2433, 1529, - 1585, 2433, 1528, 1543, 1531, 2433, 1541, 1542, 1591, 1549, - 1553, 2433, 1589, 1555, 1531, 1549, 1550, 1559, 1541, 1548, - 1602, 1561, 1560, 1551, 1601, 1548, 1608, 1556, 1551, 1552, - 1612, 1613, 1563, 1615, 1568, 1573, 1566, 2433, 1619, 1620, - 2433, 1569, 1622, 1564, 2433, 1567, 1577, 1621, 1569, 1584, - - 1571, 1586, 1572, 1579, 1579, 1634, 1591, 1579, 1578, 1638, - 1591, 2433, 1635, 1586, 1583, 2433, 1597, 1584, 1605, 2433, - 1602, 1647, 1600, 1597, 1598, 2433, 1651, 1610, 1593, 1595, - 1611, 1604, 1594, 1610, 1611, 1620, 2433, 1610, 1662, 1622, - 1606, 1660, 2433, 1624, 1619, 1668, 2433, 2433, 1610, 2433, - 1617, 1671, 1667, 2433, 2433, 1629, 2433, 1669, 1631, 1632, - 1617, 1618, 1626, 1680, 1628, 1677, 1678, 1633, 2433, 1645, - 1632, 1639, 2433, 1636, 1641, 1639, 1691, 1692, 1640, 1637, - 1637, 2433, 1652, 1653, 1654, 2433, 1655, 1645, 1657, 1702, - 1655, 1704, 1646, 1654, 1655, 1668, 2433, 1669, 1650, 1657, - - 1648, 1660, 2433, 1709, 1670, 2433, 1674, 1659, 1659, 1674, - 1667, 1666, 1677, 1664, 2433, 1680, 1668, 1671, 1727, 1685, - 1687, 1678, 1687, 1689, 1693, 2433, 2433, 1686, 1677, 1736, - 1679, 1738, 1739, 1740, 1698, 1742, 2433, 1684, 2433, 1739, - 1701, 1702, 1689, 1697, 1708, 1705, 1751, 1692, 1695, 1700, - 1691, 1756, 1709, 1710, 1700, 1717, 1716, 1757, 1701, 1720, - 1721, 2433, 1718, 1723, 1724, 1769, 1726, 1729, 1716, 1725, - 2433, 1774, 2433, 2433, 2433, 1735, 2433, 1776, 1718, 1778, - 1779, 1722, 1781, 1729, 1778, 2433, 1740, 1745, 1786, 1745, - 2433, 1736, 1726, 1785, 1751, 1744, 1740, 1794, 1737, 1739, - - 1744, 1740, 1742, 2433, 1747, 1757, 1742, 1750, 2433, 1745, - 2433, 1757, 2433, 2433, 1762, 2433, 1763, 1753, 1809, 1758, - 2433, 1760, 1768, 1813, 1754, 1756, 1753, 1777, 2433, 1764, - 1771, 1774, 1763, 1817, 1764, 1772, 1781, 1780, 1783, 1776, - 1771, 1771, 1777, 2433, 1777, 1789, 1834, 2433, 1780, 1792, - 1837, 1786, 1788, 1786, 1841, 1794, 1781, 1796, 1801, 1846, - 1847, 1848, 1805, 1850, 1851, 1798, 1802, 1796, 2433, 1812, - 1856, 2433, 1813, 1798, 1816, 2433, 1807, 1821, 1817, 1810, - 2433, 2433, 2433, 1864, 2433, 2433, 1814, 1822, 1867, 1828, - 2433, 1869, 1811, 1871, 1826, 1825, 1826, 1816, 2433, 1876, - - 1872, 2433, 1819, 2433, 1831, 2433, 1880, 1822, 1838, 1883, - 2433, 1844, 1841, 1833, 2433, 1883, 1832, 2433, 1844, 1837, - 1892, 1840, 1835, 1837, 1852, 1837, 2433, 1898, 1851, 1900, - 1901, 1849, 2433, 1851, 2433, 2433, 1845, 1861, 1906, 1907, - 2433, 2433, 2433, 1913, 1916, 1919, 1920, 1922, 1925, 1928, - 1931 + 1360, 1363, 1356, 1364, 1354, 2446, 1376, 1361, 2446, 1363, + 1364, 1379, 1379, 1382, 1382, 1379, 1423, 1385, 1377, 2446, + 1378, 2446, 1388, 1380, 2446, 1386, 1391, 1392, 1389, 1433, + 1381, 1396, 1397, 1389, 2446, 1386, 1387, 1387, 1393, 1392, + + 1390, 1444, 1405, 2446, 1446, 1393, 2446, 1394, 1394, 1396, + 1402, 2446, 1411, 1405, 1460, 1402, 1409, 1401, 1414, 1417, + 1428, 1421, 1427, 1471, 1424, 2446, 1433, 2446, 1430, 2446, + 1427, 1450, 2446, 1477, 2446, 1435, 1420, 1480, 2446, 1481, + 1438, 1443, 1425, 1485, 1486, 1482, 1446, 1443, 1439, 1432, + 1487, 1445, 1446, 1436, 1441, 1497, 1451, 1500, 1496, 1459, + 1456, 1500, 1448, 1453, 1451, 1510, 1466, 1454, 1513, 1509, + 1472, 1516, 1477, 1466, 1460, 1520, 1462, 1463, 1477, 1480, + 1480, 1526, 1468, 1485, 1481, 1479, 1486, 1470, 1528, 1529, + 1476, 1531, 1494, 1487, 1486, 1486, 1481, 1499, 2446, 1499, + + 1491, 1497, 1502, 1489, 1488, 1490, 1545, 2446, 1486, 1504, + 1553, 1511, 1524, 2446, 1556, 1509, 2446, 2446, 1500, 1511, + 1560, 2446, 2446, 1506, 1511, 1509, 1559, 1517, 1522, 1510, + 1527, 1516, 1514, 1528, 2446, 1516, 2446, 1519, 1570, 1513, + 1518, 1578, 1526, 1536, 1537, 2446, 1582, 1536, 1580, 2446, + 1531, 1587, 2446, 1530, 1545, 1533, 2446, 1543, 1544, 1593, + 1551, 1555, 2446, 1591, 1557, 1533, 1551, 1552, 1561, 1543, + 1550, 1604, 1563, 1562, 1553, 1603, 1555, 1551, 1611, 1559, + 1554, 1555, 1615, 1616, 1566, 1618, 1571, 1576, 1569, 2446, + 1622, 1623, 2446, 1572, 1625, 1567, 2446, 1570, 1580, 1624, + + 1572, 1587, 1574, 1589, 1575, 1582, 1582, 1637, 1594, 1582, + 1581, 1641, 1594, 2446, 1638, 1589, 1586, 2446, 1600, 1587, + 1608, 2446, 1605, 1650, 1603, 1600, 1601, 2446, 1654, 1613, + 1596, 1598, 1614, 1607, 1597, 1613, 1614, 1623, 2446, 1613, + 1665, 1625, 1609, 1618, 1664, 2446, 1628, 1623, 1672, 2446, + 2446, 1614, 2446, 1621, 1675, 1671, 2446, 2446, 1633, 2446, + 1673, 1635, 1636, 1621, 1622, 1630, 1684, 1632, 1681, 1682, + 1637, 2446, 1649, 1636, 1643, 2446, 1640, 1645, 1643, 1695, + 1696, 1644, 1641, 1641, 2446, 1656, 1657, 1658, 2446, 1659, + 1649, 1661, 1706, 1659, 1708, 1650, 1658, 1659, 1672, 2446, + + 1673, 1654, 1655, 1662, 1653, 1665, 2446, 1714, 1675, 2446, + 1679, 1664, 1664, 1679, 1672, 1671, 1682, 1669, 2446, 1685, + 1673, 1676, 1732, 1690, 1692, 1683, 1692, 1694, 1698, 2446, + 2446, 1691, 1682, 1741, 1684, 1743, 1744, 1745, 1703, 1747, + 2446, 1689, 2446, 1744, 1706, 1707, 1694, 1702, 1713, 1700, + 1711, 1757, 1698, 1701, 1706, 1697, 1762, 1715, 1716, 1706, + 1723, 1722, 1763, 1707, 1726, 1727, 2446, 1724, 1729, 1730, + 1775, 1732, 1735, 1722, 1731, 2446, 1780, 2446, 2446, 2446, + 1741, 2446, 1782, 1724, 1784, 1785, 1728, 1787, 1735, 1784, + 1785, 2446, 1747, 1752, 1793, 1752, 2446, 1743, 1733, 1792, + + 1758, 1751, 1747, 1801, 1744, 1746, 1751, 1747, 1749, 2446, + 1754, 1764, 1749, 1757, 2446, 1752, 2446, 1764, 2446, 2446, + 1769, 2446, 1770, 1770, 1761, 1817, 1766, 2446, 1768, 1776, + 1821, 1762, 1764, 1761, 1785, 2446, 1772, 1779, 1782, 1771, + 1825, 1772, 1780, 1789, 1788, 1791, 1784, 1779, 1779, 1791, + 1786, 2446, 1786, 1798, 1843, 2446, 1789, 1801, 1846, 1795, + 1797, 1795, 1850, 1803, 1790, 1805, 1810, 1855, 1856, 1857, + 1814, 1859, 1860, 1804, 1808, 1812, 1806, 2446, 1822, 1866, + 2446, 1823, 1808, 1826, 2446, 1817, 1831, 1827, 1820, 2446, + 2446, 2446, 1874, 2446, 2446, 1817, 1825, 1833, 1878, 1839, + + 2446, 1880, 1822, 1882, 1837, 1836, 1837, 1827, 2446, 1828, + 1888, 1884, 2446, 1831, 2446, 1843, 2446, 1892, 1834, 1850, + 1895, 1896, 2446, 1857, 1854, 1846, 2446, 1896, 1845, 2446, + 2446, 1857, 1850, 1905, 1853, 1848, 1850, 1865, 1850, 2446, + 1911, 1864, 1913, 1914, 1862, 2446, 1864, 2446, 2446, 1858, + 1874, 1919, 1920, 2446, 2446, 2446, 1926, 1929, 1932, 1933, + 1935, 1938, 1941, 1944 } ; -static const flex_int16_t yy_def[2052] = +static const flex_int16_t yy_def[2065] = { 0, - 2044, 2044, 2045, 2045, 2044, 2044, 2044, 2044, 2044, 2044, - 2043, 2043, 2043, 2043, 2043, 2046, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2047, - 2043, 2043, 2043, 2048, 15, 2043, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2049, 45, 45, 45, 45, + 2057, 2057, 2058, 2058, 2057, 2057, 2057, 2057, 2057, 2057, + 2056, 2056, 2056, 2056, 2056, 2059, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2060, + 2056, 2056, 2056, 2061, 15, 2056, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2062, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2046, 2043, 2043, - 2043, 2043, 2043, 2043, 2050, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2047, 2043, 2048, 2043, + 45, 45, 45, 45, 45, 45, 45, 2059, 2056, 2056, + 2056, 2056, 2056, 2056, 2063, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2060, 2056, 2061, 2056, - 2043, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2051, 45, 2049, 45, 45, 45, 45, 45, 45, + 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2064, 45, 2062, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2050, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2063, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2051, 2043, 2043, 114, 45, 45, 45, + 45, 45, 45, 2064, 2056, 2056, 114, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2043, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 45, 45, 45, 45, - 45, 45, 2043, 45, 2043, 45, 114, 2043, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 45, 45, 45, 45, + 45, 45, 2056, 45, 2056, 45, 114, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2043, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2043, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2043, 45, - 45, 45, 45, 2043, 2043, 2043, 45, 45, 45, 45, - 45, 2043, 45, 2043, 45, 114, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2043, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 45, 45, - 45, 45, 45, 2043, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2043, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2056, 45, + 45, 45, 45, 2056, 2056, 2056, 45, 45, 45, 45, + 45, 2056, 45, 2056, 45, 114, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2056, 45, 45, + 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, + 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2043, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 2043, 45, + 45, 45, 45, 45, 45, 45, 2056, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2043, 45, 45, 2043, 45, 45, 2043, 45, 45, - 2043, 45, 45, 45, 2043, 2043, 2043, 45, 45, 45, - 2043, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2056, 45, 45, 2056, 45, 45, 2056, 45, 45, + 2056, 45, 45, 45, 2056, 2056, 2056, 45, 45, 45, + 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2043, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2043, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2043, 45, + 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2043, 45, 45, 2043, 45, 45, 45, + 45, 45, 45, 2056, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2043, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2043, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2043, 45, 45, 45, 45, + 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2043, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2043, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2043, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 2043, 45, 45, - 45, 45, 45, 45, 2043, 2043, 45, 45, 45, 45, - 45, 2043, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2043, 2043, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2056, 2056, 45, 45, + 45, 45, 45, 45, 2056, 2056, 45, 45, 45, 45, + 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2056, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2043, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2043, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 45, 45, - 45, 45, 45, 2043, 2043, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, + 45, 45, 45, 2056, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2043, 45, 45, 45, 45, 2043, 45, 45, 45, 45, + 2056, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2043, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2043, 45, 45, 45, 2043, 45, 45, 45, + 45, 45, 2056, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2043, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2043, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2043, 45, + 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2056, 45, - 45, 45, 45, 2043, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2043, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2043, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2043, 45, 45, 45, 45, 45, 45, - 45, 2043, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2043, - 2043, 45, 2043, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2043, 45, 45, - 45, 45, 2043, 45, 45, 45, 45, 45, 45, 2043, - - 45, 2043, 45, 2043, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, + 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2056, + 2056, 45, 2056, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2056, 45, 45, + 45, 45, 2056, 45, 45, 45, 45, 45, 45, 2056, + + 45, 2056, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2043, 45, 45, 45, 45, 45, 45, 2043, 2043, 45, + 2056, 45, 45, 45, 45, 45, 45, 2056, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2043, 45, 45, 45, 45, 45, 2043, 45, 45, 45, - 45, 45, 45, 2043, 45, 45, 45, 45, 45, 45, + 2056, 45, 45, 45, 45, 45, 2056, 45, 45, 45, + 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2043, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 2043, 2043, + 45, 45, 45, 45, 45, 45, 2056, 45, 2056, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2043, 45, 45, 45, 45, 45, 45, 45, 2043, - 45, 45, 45, 2043, 45, 2043, 2043, 45, 45, 45, - 45, 2043, 45, 45, 45, 2043, 45, 45, 45, 45, - 2043, 45, 45, 45, 45, 45, 2043, 45, 45, 45, + 45, 2056, 45, 45, 45, 45, 45, 45, 45, 2056, + 45, 45, 45, 2056, 45, 2056, 2056, 45, 45, 45, + 45, 2056, 45, 45, 45, 2056, 45, 45, 45, 45, + 2056, 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2043, 45, 45, 2043, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2043, - 45, 2043, 45, 45, 2043, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2043, 45, 45, 45, 45, 45, - - 45, 45, 45, 2043, 45, 45, 2043, 45, 45, 45, - 45, 2043, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2043, 45, 2043, 45, 2043, - 45, 45, 2043, 45, 2043, 45, 45, 45, 2043, 45, + 45, 45, 45, 45, 45, 2056, 45, 45, 2056, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2056, + 45, 2056, 45, 45, 2056, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, + + 45, 45, 45, 2056, 45, 45, 2056, 45, 45, 45, + 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2056, 45, 2056, 45, 2056, + 45, 45, 2056, 45, 2056, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2043, 45, 45, - - 45, 45, 45, 45, 45, 45, 2043, 45, 45, 45, - 45, 45, 2043, 45, 45, 2043, 2043, 45, 45, 45, - 2043, 2043, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2043, 45, 2043, 45, 45, 45, 45, - 45, 45, 45, 45, 2043, 45, 45, 45, 2043, 45, - 45, 2043, 45, 45, 45, 2043, 45, 45, 45, 45, - 45, 2043, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2056, 45, + + 45, 45, 45, 45, 45, 45, 45, 2056, 45, 45, + 45, 45, 45, 2056, 45, 45, 2056, 2056, 45, 45, + 45, 2056, 2056, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2056, 45, 2056, 45, 45, 45, + 45, 45, 45, 45, 45, 2056, 45, 45, 45, 2056, + 45, 45, 2056, 45, 45, 45, 2056, 45, 45, 45, + 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2043, 45, 45, - 2043, 45, 45, 45, 2043, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2056, + 45, 45, 2056, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2043, 45, 45, 45, 2043, 45, 45, 45, 2043, - 45, 45, 45, 45, 45, 2043, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 45, 45, - 45, 45, 2043, 45, 45, 45, 2043, 2043, 45, 2043, - 45, 45, 45, 2043, 2043, 45, 2043, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2043, 45, - 45, 45, 2043, 45, 45, 45, 45, 45, 45, 45, - 45, 2043, 45, 45, 45, 2043, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 45, 45, - - 45, 45, 2043, 45, 45, 2043, 45, 45, 45, 45, - 45, 45, 45, 45, 2043, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2043, 2043, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 2043, 45, + 45, 45, 45, 2056, 45, 45, 45, 2056, 45, 45, + 45, 2056, 45, 45, 45, 45, 45, 2056, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2056, 45, + 45, 45, 45, 45, 45, 2056, 45, 45, 45, 2056, + 2056, 45, 2056, 45, 45, 45, 2056, 2056, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2056, 45, 45, 45, 2056, 45, 45, 45, 45, + 45, 45, 45, 45, 2056, 45, 45, 45, 2056, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2056, + + 45, 45, 45, 45, 45, 45, 2056, 45, 45, 2056, + 45, 45, 45, 45, 45, 45, 45, 45, 2056, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2056, + 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2056, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2043, 45, 45, 45, 45, 45, 45, 45, 45, - 2043, 45, 2043, 2043, 2043, 45, 2043, 45, 45, 45, - 45, 45, 45, 45, 45, 2043, 45, 45, 45, 45, - 2043, 45, 45, 45, 45, 45, 45, 45, 45, 45, - - 45, 45, 45, 2043, 45, 45, 45, 45, 2043, 45, - 2043, 45, 2043, 2043, 45, 2043, 45, 45, 45, 45, - 2043, 45, 45, 45, 45, 45, 45, 45, 2043, 45, + 45, 45, 45, 45, 45, 45, 2056, 45, 45, 45, + 45, 45, 45, 45, 45, 2056, 45, 2056, 2056, 2056, + 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2056, 45, 45, 45, 45, 2056, 45, 45, 45, + + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2056, + 45, 45, 45, 45, 2056, 45, 2056, 45, 2056, 2056, + 45, 2056, 45, 45, 45, 45, 45, 2056, 45, 45, + 45, 45, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2043, 45, 45, 45, 2043, 45, 45, + 45, 2056, 45, 45, 45, 2056, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2043, 45, - 45, 2043, 45, 45, 45, 2043, 45, 45, 45, 45, - 2043, 2043, 2043, 45, 2043, 2043, 45, 45, 45, 45, - 2043, 45, 45, 45, 45, 45, 45, 45, 2043, 45, - - 45, 2043, 45, 2043, 45, 2043, 45, 45, 45, 45, - 2043, 45, 45, 45, 2043, 45, 45, 2043, 45, 45, - 45, 45, 45, 45, 45, 45, 2043, 45, 45, 45, - 45, 45, 2043, 45, 2043, 2043, 45, 45, 45, 45, - 2043, 2043, 0, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043 + 45, 45, 45, 45, 45, 45, 45, 2056, 45, 45, + 2056, 45, 45, 45, 2056, 45, 45, 45, 45, 2056, + 2056, 2056, 45, 2056, 2056, 45, 45, 45, 45, 45, + + 2056, 45, 45, 45, 45, 45, 45, 45, 2056, 45, + 45, 45, 2056, 45, 2056, 45, 2056, 45, 45, 45, + 45, 45, 2056, 45, 45, 45, 2056, 45, 45, 2056, + 2056, 45, 45, 45, 45, 45, 45, 45, 45, 2056, + 45, 45, 45, 45, 45, 2056, 45, 2056, 2056, 45, + 45, 45, 45, 2056, 2056, 0, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056 } ; -static const flex_int16_t yy_nxt[2507] = +static const flex_int16_t yy_nxt[2520] = { 0, - 2043, 13, 14, 13, 2043, 15, 16, 2043, 17, 18, + 2056, 13, 14, 13, 2056, 15, 16, 2056, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, 84, 796, 37, 14, 37, 85, 25, 26, 38, 100, - 2043, 27, 37, 14, 37, 42, 28, 42, 38, 90, + 2056, 27, 37, 14, 37, 42, 28, 42, 38, 90, 91, 29, 198, 30, 13, 14, 13, 89, 90, 25, 31, 91, 13, 14, 13, 13, 14, 13, 32, 40, 797, 13, 14, 13, 33, 40, 101, 90, 91, 198, @@ -1595,20 +1599,20 @@ static const flex_int16_t yy_nxt[2507] = 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, - 1592, 1593, 1594, 1597, 1595, 1598, 1599, 1600, 1601, 1602, - 1596, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, + 1592, 1593, 1594, 1598, 1595, 1599, 1600, 1596, 1601, 1602, + 1597, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, - 1622, 1623, 1624, 1626, 1627, 1628, 1629, 1630, 1631, 1632, + 1622, 1623, 1624, 1625, 1627, 1628, 1629, 1630, 1631, 1632, - 1633, 1634, 1635, 1625, 1636, 1637, 1638, 1612, 1639, 1640, - 1641, 1642, 1643, 1644, 1645, 1647, 1648, 1649, 1650, 1651, + 1633, 1634, 1635, 1636, 1626, 1637, 1638, 1639, 1613, 1640, + 1641, 1642, 1643, 1644, 1645, 1646, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, - 1702, 1703, 1646, 1704, 1705, 1706, 1707, 1708, 1709, 1710, - 1711, 1712, 1713, 1714, 1715, 1716, 1690, 1717, 1718, 1719, + 1702, 1703, 1704, 1647, 1705, 1706, 1707, 1708, 1709, 1710, + 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1692, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, @@ -1642,78 +1646,79 @@ static const flex_int16_t yy_nxt[2507] = 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, - 2021, 2020, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, - - 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, - 2040, 2041, 2042, 12, 12, 12, 36, 36, 36, 78, - 97, 78, 99, 99, 99, 112, 112, 112, 185, 849, - 185, 204, 204, 204, 848, 847, 844, 843, 842, 841, - 840, 839, 838, 837, 836, 835, 834, 833, 830, 829, - 828, 827, 826, 825, 824, 823, 822, 821, 820, 819, - 818, 817, 816, 815, 814, 813, 812, 811, 810, 809, - 808, 807, 806, 805, 804, 803, 802, 801, 800, 799, - 798, 795, 794, 793, 792, 791, 790, 789, 788, 787, - 786, 785, 784, 783, 782, 781, 780, 779, 778, 777, - - 776, 775, 774, 771, 770, 769, 768, 767, 766, 765, - 764, 763, 762, 761, 760, 759, 758, 757, 756, 755, - 754, 753, 752, 751, 750, 749, 748, 747, 746, 743, - 742, 741, 740, 739, 738, 737, 736, 735, 734, 733, - 732, 731, 730, 729, 728, 727, 726, 725, 722, 721, - 717, 716, 715, 714, 713, 712, 711, 710, 709, 708, - 707, 706, 705, 704, 703, 702, 701, 700, 699, 698, - 697, 696, 693, 692, 691, 690, 689, 688, 687, 686, - 685, 684, 683, 682, 681, 680, 679, 678, 677, 676, - 675, 674, 673, 672, 671, 670, 669, 668, 667, 666, - - 665, 664, 663, 662, 661, 660, 659, 658, 657, 656, - 655, 654, 653, 652, 651, 648, 647, 646, 645, 644, - 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, - 633, 632, 631, 630, 629, 626, 625, 624, 623, 622, - 621, 620, 616, 615, 608, 607, 606, 605, 604, 603, - 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, - 592, 591, 587, 586, 585, 583, 582, 581, 580, 577, - 576, 575, 574, 573, 572, 569, 568, 567, 566, 565, - 564, 563, 562, 561, 560, 559, 558, 557, 556, 555, - 554, 551, 550, 549, 546, 545, 544, 543, 542, 541, - - 540, 539, 536, 535, 534, 533, 532, 531, 530, 529, - 528, 527, 526, 525, 524, 523, 520, 519, 518, 517, - 516, 515, 514, 510, 509, 508, 507, 506, 505, 504, - 503, 502, 501, 500, 499, 494, 493, 492, 491, 490, - 489, 488, 487, 486, 485, 484, 483, 480, 479, 478, - 477, 476, 473, 472, 471, 470, 469, 468, 467, 466, - 465, 464, 463, 462, 461, 460, 459, 458, 455, 454, - 452, 450, 446, 443, 440, 439, 438, 436, 435, 433, - 432, 431, 428, 427, 426, 425, 424, 421, 420, 419, - 418, 417, 416, 415, 414, 411, 410, 409, 408, 407, - - 406, 405, 404, 403, 402, 401, 400, 397, 396, 392, - 391, 390, 389, 388, 387, 386, 385, 384, 383, 382, - 378, 377, 376, 375, 374, 373, 368, 367, 366, 365, - 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, - 354, 353, 352, 351, 350, 349, 348, 347, 340, 339, - 338, 337, 336, 335, 334, 333, 332, 331, 330, 328, - 205, 325, 323, 319, 317, 316, 309, 308, 307, 305, - 303, 302, 300, 299, 298, 295, 294, 293, 278, 272, - 267, 266, 265, 262, 260, 259, 258, 257, 256, 255, - 252, 251, 250, 247, 246, 245, 244, 243, 239, 238, - - 235, 232, 231, 230, 229, 226, 225, 224, 223, 219, - 216, 212, 211, 210, 205, 196, 194, 193, 192, 184, - 164, 143, 118, 104, 102, 43, 98, 96, 95, 86, - 43, 2043, 11, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - - 2043, 2043, 2043, 2043, 2043, 2043 + 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, + + 2030, 2031, 2032, 2034, 2033, 2035, 2036, 2037, 2038, 2039, + 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, + 2050, 2051, 2052, 2053, 2054, 2055, 12, 12, 12, 36, + 36, 36, 78, 97, 78, 99, 99, 99, 112, 112, + 112, 185, 849, 185, 204, 204, 204, 848, 847, 844, + 843, 842, 841, 840, 839, 838, 837, 836, 835, 834, + 833, 830, 829, 828, 827, 826, 825, 824, 823, 822, + 821, 820, 819, 818, 817, 816, 815, 814, 813, 812, + 811, 810, 809, 808, 807, 806, 805, 804, 803, 802, + 801, 800, 799, 798, 795, 794, 793, 792, 791, 790, + + 789, 788, 787, 786, 785, 784, 783, 782, 781, 780, + 779, 778, 777, 776, 775, 774, 771, 770, 769, 768, + 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, + 757, 756, 755, 754, 753, 752, 751, 750, 749, 748, + 747, 746, 743, 742, 741, 740, 739, 738, 737, 736, + 735, 734, 733, 732, 731, 730, 729, 728, 727, 726, + 725, 722, 721, 717, 716, 715, 714, 713, 712, 711, + 710, 709, 708, 707, 706, 705, 704, 703, 702, 701, + 700, 699, 698, 697, 696, 693, 692, 691, 690, 689, + 688, 687, 686, 685, 684, 683, 682, 681, 680, 679, + + 678, 677, 676, 675, 674, 673, 672, 671, 670, 669, + 668, 667, 666, 665, 664, 663, 662, 661, 660, 659, + 658, 657, 656, 655, 654, 653, 652, 651, 648, 647, + 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, + 636, 635, 634, 633, 632, 631, 630, 629, 626, 625, + 624, 623, 622, 621, 620, 616, 615, 608, 607, 606, + 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, + 595, 594, 593, 592, 591, 587, 586, 585, 583, 582, + 581, 580, 577, 576, 575, 574, 573, 572, 569, 568, + 567, 566, 565, 564, 563, 562, 561, 560, 559, 558, + + 557, 556, 555, 554, 551, 550, 549, 546, 545, 544, + 543, 542, 541, 540, 539, 536, 535, 534, 533, 532, + 531, 530, 529, 528, 527, 526, 525, 524, 523, 520, + 519, 518, 517, 516, 515, 514, 510, 509, 508, 507, + 506, 505, 504, 503, 502, 501, 500, 499, 494, 493, + 492, 491, 490, 489, 488, 487, 486, 485, 484, 483, + 480, 479, 478, 477, 476, 473, 472, 471, 470, 469, + 468, 467, 466, 465, 464, 463, 462, 461, 460, 459, + 458, 455, 454, 452, 450, 446, 443, 440, 439, 438, + 436, 435, 433, 432, 431, 428, 427, 426, 425, 424, + + 421, 420, 419, 418, 417, 416, 415, 414, 411, 410, + 409, 408, 407, 406, 405, 404, 403, 402, 401, 400, + 397, 396, 392, 391, 390, 389, 388, 387, 386, 385, + 384, 383, 382, 378, 377, 376, 375, 374, 373, 368, + 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, + 357, 356, 355, 354, 353, 352, 351, 350, 349, 348, + 347, 340, 339, 338, 337, 336, 335, 334, 333, 332, + 331, 330, 328, 205, 325, 323, 319, 317, 316, 309, + 308, 307, 305, 303, 302, 300, 299, 298, 295, 294, + 293, 278, 272, 267, 266, 265, 262, 260, 259, 258, + + 257, 256, 255, 252, 251, 250, 247, 246, 245, 244, + 243, 239, 238, 235, 232, 231, 230, 229, 226, 225, + 224, 223, 219, 216, 212, 211, 210, 205, 196, 194, + 193, 192, 184, 164, 143, 118, 104, 102, 43, 98, + 96, 95, 86, 43, 2056, 11, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056 } ; -static const flex_int16_t yy_chk[2507] = +static const flex_int16_t yy_chk[2520] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1875,122 +1880,123 @@ static const flex_int16_t yy_chk[2507] = 1474, 1475, 1476, 1477, 1478, 1479, 1481, 1483, 1484, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1505, 1506, 1508, 1509, - 1510, 1511, 1513, 1514, 1513, 1515, 1516, 1517, 1518, 1519, - 1513, 1520, 1521, 1522, 1523, 1524, 1525, 1527, 1529, 1531, - 1532, 1534, 1536, 1537, 1538, 1540, 1541, 1542, 1543, 1544, - 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, - - 1555, 1556, 1557, 1547, 1558, 1559, 1560, 1532, 1561, 1562, - 1563, 1564, 1565, 1565, 1566, 1567, 1568, 1569, 1570, 1571, - 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, - 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, - 1592, 1593, 1594, 1595, 1596, 1597, 1599, 1600, 1601, 1602, - 1603, 1604, 1605, 1606, 1608, 1609, 1610, 1611, 1612, 1614, - 1615, 1618, 1619, 1620, 1623, 1624, 1625, 1626, 1627, 1628, - 1629, 1630, 1566, 1631, 1632, 1633, 1635, 1637, 1638, 1639, - 1640, 1641, 1642, 1643, 1644, 1646, 1612, 1647, 1648, 1650, - 1651, 1653, 1654, 1655, 1657, 1658, 1659, 1660, 1661, 1663, - - 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, - 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, - 1684, 1685, 1686, 1687, 1689, 1690, 1692, 1693, 1694, 1696, - 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, - 1707, 1708, 1709, 1710, 1711, 1713, 1714, 1715, 1717, 1718, - 1719, 1721, 1722, 1723, 1724, 1725, 1727, 1728, 1729, 1730, - 1731, 1732, 1733, 1734, 1735, 1736, 1738, 1739, 1740, 1741, - 1742, 1744, 1745, 1746, 1749, 1751, 1752, 1753, 1756, 1758, - 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, - 1770, 1771, 1772, 1774, 1775, 1776, 1777, 1778, 1779, 1780, - - 1781, 1783, 1784, 1785, 1787, 1788, 1789, 1790, 1791, 1792, - 1793, 1794, 1795, 1796, 1798, 1799, 1800, 1801, 1802, 1804, - 1805, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1816, - 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1828, - 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1838, 1840, - 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, - 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, - 1861, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1872, - 1876, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1887, - 1888, 1889, 1890, 1892, 1893, 1894, 1895, 1896, 1897, 1898, - - 1899, 1900, 1901, 1902, 1903, 1905, 1906, 1907, 1908, 1910, - 1912, 1915, 1917, 1918, 1919, 1920, 1922, 1923, 1924, 1925, - 1926, 1927, 1928, 1930, 1931, 1932, 1933, 1934, 1935, 1936, - 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1945, 1946, 1947, - 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, - 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, - 1970, 1971, 1973, 1974, 1975, 1977, 1978, 1979, 1980, 1984, - 1987, 1988, 1989, 1990, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 2000, 2001, 2003, 2005, 2007, 2008, 2009, 2010, 2012, - 2013, 2012, 2014, 2016, 2017, 2019, 2020, 2021, 2022, 2023, - - 2024, 2025, 2026, 2028, 2029, 2030, 2031, 2032, 2034, 2037, - 2038, 2039, 2040, 2044, 2044, 2044, 2045, 2045, 2045, 2046, - 2047, 2046, 2048, 2048, 2048, 2049, 2049, 2049, 2050, 722, - 2050, 2051, 2051, 2051, 721, 720, 716, 715, 713, 712, - 711, 710, 709, 708, 707, 706, 705, 704, 702, 701, - 700, 698, 697, 696, 695, 694, 693, 692, 691, 690, - 689, 688, 687, 686, 685, 683, 682, 681, 680, 679, - 678, 677, 676, 675, 673, 672, 671, 670, 669, 668, - 667, 665, 664, 663, 662, 661, 660, 659, 658, 656, - 655, 654, 653, 652, 651, 650, 649, 648, 647, 646, - - 645, 644, 643, 641, 640, 639, 638, 637, 636, 635, - 634, 633, 632, 631, 630, 629, 628, 626, 625, 624, - 623, 622, 621, 620, 619, 618, 617, 616, 615, 613, - 612, 611, 610, 609, 608, 607, 606, 605, 604, 603, - 602, 601, 600, 599, 598, 597, 596, 595, 593, 592, - 584, 583, 582, 581, 580, 579, 577, 576, 574, 573, - 571, 570, 569, 568, 567, 566, 565, 564, 563, 562, - 561, 560, 558, 557, 556, 555, 554, 553, 552, 551, - 550, 549, 548, 547, 546, 545, 544, 543, 542, 541, - 540, 538, 536, 535, 534, 533, 532, 531, 530, 529, - - 528, 527, 526, 525, 524, 523, 522, 521, 519, 518, - 517, 516, 515, 514, 513, 511, 510, 509, 508, 507, - 506, 505, 504, 503, 502, 501, 500, 499, 498, 497, - 496, 494, 493, 492, 491, 489, 488, 487, 486, 485, - 483, 482, 480, 479, 476, 475, 474, 473, 472, 471, - 470, 469, 467, 466, 465, 464, 463, 462, 461, 460, - 459, 458, 453, 451, 450, 448, 447, 446, 443, 441, - 440, 438, 437, 436, 435, 433, 432, 431, 430, 429, - 428, 427, 426, 425, 424, 423, 422, 421, 420, 419, - 418, 416, 415, 414, 412, 411, 410, 409, 407, 406, - - 405, 404, 402, 401, 400, 399, 398, 397, 396, 395, - 394, 393, 392, 391, 390, 388, 386, 385, 384, 383, - 382, 381, 380, 378, 377, 376, 375, 374, 373, 372, - 371, 370, 369, 368, 367, 365, 364, 363, 362, 361, - 360, 359, 358, 357, 356, 355, 354, 352, 351, 350, - 349, 348, 345, 344, 343, 342, 341, 340, 339, 338, - 337, 336, 335, 334, 333, 332, 331, 330, 326, 324, - 321, 319, 316, 309, 307, 306, 305, 303, 302, 300, - 299, 298, 296, 295, 294, 293, 292, 290, 289, 288, - 287, 286, 285, 284, 283, 281, 280, 279, 278, 277, - - 276, 275, 274, 273, 272, 271, 270, 268, 267, 265, - 264, 263, 262, 261, 260, 259, 258, 257, 256, 255, - 253, 252, 251, 250, 249, 248, 245, 243, 242, 241, - 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, - 230, 229, 228, 227, 226, 225, 224, 223, 220, 219, - 218, 217, 216, 215, 214, 213, 212, 211, 210, 208, - 204, 202, 200, 196, 194, 192, 184, 183, 182, 180, - 178, 177, 175, 174, 173, 171, 170, 169, 165, 162, - 160, 159, 158, 156, 154, 153, 152, 151, 150, 149, - 147, 146, 145, 143, 142, 141, 140, 139, 137, 136, - - 134, 132, 131, 130, 129, 127, 126, 125, 124, 122, - 120, 118, 117, 116, 112, 104, 102, 97, 96, 77, - 72, 66, 58, 49, 47, 43, 41, 39, 38, 24, - 14, 11, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, - - 2043, 2043, 2043, 2043, 2043, 2043 + 1510, 1511, 1513, 1514, 1513, 1515, 1516, 1513, 1517, 1518, + 1513, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1527, 1529, + 1531, 1532, 1534, 1536, 1537, 1538, 1540, 1541, 1542, 1543, + 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, + + 1554, 1555, 1556, 1557, 1547, 1558, 1559, 1560, 1532, 1561, + 1562, 1563, 1564, 1565, 1565, 1566, 1567, 1568, 1569, 1570, + 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, + 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, + 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1600, 1601, + 1602, 1603, 1604, 1605, 1606, 1607, 1609, 1610, 1611, 1612, + 1613, 1615, 1616, 1619, 1620, 1621, 1624, 1625, 1626, 1627, + 1628, 1629, 1630, 1566, 1631, 1632, 1633, 1634, 1636, 1638, + 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1647, 1613, 1648, + 1649, 1651, 1652, 1654, 1655, 1656, 1658, 1659, 1660, 1661, + + 1662, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, + 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, + 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1691, 1692, 1694, + 1695, 1696, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, + 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1715, 1716, + 1717, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1729, + 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1740, + 1741, 1742, 1743, 1744, 1745, 1747, 1748, 1749, 1752, 1754, + 1755, 1756, 1759, 1761, 1762, 1763, 1764, 1765, 1766, 1767, + 1768, 1769, 1770, 1771, 1773, 1774, 1775, 1777, 1778, 1779, + + 1780, 1781, 1782, 1783, 1784, 1786, 1787, 1788, 1790, 1791, + 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1801, 1802, + 1803, 1804, 1805, 1806, 1808, 1809, 1811, 1812, 1813, 1814, + 1815, 1816, 1817, 1818, 1820, 1821, 1822, 1823, 1824, 1825, + 1826, 1827, 1828, 1829, 1832, 1833, 1834, 1835, 1836, 1837, + 1838, 1839, 1840, 1842, 1844, 1845, 1846, 1847, 1848, 1849, + 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, + 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1868, 1869, 1870, + 1871, 1872, 1873, 1874, 1875, 1877, 1881, 1883, 1884, 1885, + 1886, 1887, 1888, 1889, 1890, 1891, 1893, 1894, 1895, 1896, + + 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, + 1908, 1909, 1911, 1912, 1913, 1914, 1916, 1918, 1921, 1923, + 1924, 1925, 1926, 1927, 1929, 1930, 1931, 1932, 1933, 1934, + 1935, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, + 1946, 1947, 1948, 1949, 1950, 1951, 1953, 1954, 1955, 1957, + 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, + 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, + 1979, 1980, 1982, 1983, 1984, 1986, 1987, 1988, 1989, 1993, + 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2010, 2011, 2012, 2014, 2016, 2018, 2019, 2020, + + 2021, 2022, 2024, 2025, 2024, 2026, 2028, 2029, 2032, 2033, + 2034, 2035, 2036, 2037, 2038, 2039, 2041, 2042, 2043, 2044, + 2045, 2047, 2050, 2051, 2052, 2053, 2057, 2057, 2057, 2058, + 2058, 2058, 2059, 2060, 2059, 2061, 2061, 2061, 2062, 2062, + 2062, 2063, 722, 2063, 2064, 2064, 2064, 721, 720, 716, + 715, 713, 712, 711, 710, 709, 708, 707, 706, 705, + 704, 702, 701, 700, 698, 697, 696, 695, 694, 693, + 692, 691, 690, 689, 688, 687, 686, 685, 683, 682, + 681, 680, 679, 678, 677, 676, 675, 673, 672, 671, + 670, 669, 668, 667, 665, 664, 663, 662, 661, 660, + + 659, 658, 656, 655, 654, 653, 652, 651, 650, 649, + 648, 647, 646, 645, 644, 643, 641, 640, 639, 638, + 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, + 626, 625, 624, 623, 622, 621, 620, 619, 618, 617, + 616, 615, 613, 612, 611, 610, 609, 608, 607, 606, + 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, + 595, 593, 592, 584, 583, 582, 581, 580, 579, 577, + 576, 574, 573, 571, 570, 569, 568, 567, 566, 565, + 564, 563, 562, 561, 560, 558, 557, 556, 555, 554, + 553, 552, 551, 550, 549, 548, 547, 546, 545, 544, + + 543, 542, 541, 540, 538, 536, 535, 534, 533, 532, + 531, 530, 529, 528, 527, 526, 525, 524, 523, 522, + 521, 519, 518, 517, 516, 515, 514, 513, 511, 510, + 509, 508, 507, 506, 505, 504, 503, 502, 501, 500, + 499, 498, 497, 496, 494, 493, 492, 491, 489, 488, + 487, 486, 485, 483, 482, 480, 479, 476, 475, 474, + 473, 472, 471, 470, 469, 467, 466, 465, 464, 463, + 462, 461, 460, 459, 458, 453, 451, 450, 448, 447, + 446, 443, 441, 440, 438, 437, 436, 435, 433, 432, + 431, 430, 429, 428, 427, 426, 425, 424, 423, 422, + + 421, 420, 419, 418, 416, 415, 414, 412, 411, 410, + 409, 407, 406, 405, 404, 402, 401, 400, 399, 398, + 397, 396, 395, 394, 393, 392, 391, 390, 388, 386, + 385, 384, 383, 382, 381, 380, 378, 377, 376, 375, + 374, 373, 372, 371, 370, 369, 368, 367, 365, 364, + 363, 362, 361, 360, 359, 358, 357, 356, 355, 354, + 352, 351, 350, 349, 348, 345, 344, 343, 342, 341, + 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, + 330, 326, 324, 321, 319, 316, 309, 307, 306, 305, + 303, 302, 300, 299, 298, 296, 295, 294, 293, 292, + + 290, 289, 288, 287, 286, 285, 284, 283, 281, 280, + 279, 278, 277, 276, 275, 274, 273, 272, 271, 270, + 268, 267, 265, 264, 263, 262, 261, 260, 259, 258, + 257, 256, 255, 253, 252, 251, 250, 249, 248, 245, + 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, + 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, + 223, 220, 219, 218, 217, 216, 215, 214, 213, 212, + 211, 210, 208, 204, 202, 200, 196, 194, 192, 184, + 183, 182, 180, 178, 177, 175, 174, 173, 171, 170, + 169, 165, 162, 160, 159, 158, 156, 154, 153, 152, + + 151, 150, 149, 147, 146, 145, 143, 142, 141, 140, + 139, 137, 136, 134, 132, 131, 130, 129, 127, 126, + 125, 124, 122, 120, 118, 117, 116, 112, 104, 102, + 97, 96, 77, 72, 66, 58, 49, 47, 43, 41, + 39, 38, 24, 14, 11, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056 } ; static yy_state_type yy_last_accepting_state; @@ -1999,7 +2005,7 @@ static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[217] = +static const flex_int16_t yy_rule_linenum[218] = { 0, 146, 148, 150, 155, 156, 161, 162, 163, 175, 178, 183, 190, 199, 208, 217, 226, 235, 244, 254, 263, @@ -2021,10 +2027,10 @@ static const flex_int16_t yy_rule_linenum[217] = 1685, 1694, 1703, 1712, 1721, 1730, 1739, 1748, 1757, 1766, 1775, 1784, 1793, 1802, 1811, 1823, 1835, 1845, 1855, 1865, 1875, 1885, 1895, 1905, 1915, 1925, 1934, 1943, 1952, 1961, - 1972, 1983, 1996, 2009, 2022, 2031, 2040, 2049, 2150, 2166, + 1972, 1983, 1996, 2009, 2022, 2031, 2040, 2049, 2058, 2159, - 2215, 2223, 2238, 2239, 2240, 2241, 2242, 2243, 2245, 2263, - 2276, 2281, 2285, 2287, 2289, 2291 + 2175, 2224, 2232, 2247, 2248, 2249, 2250, 2251, 2252, 2254, + 2272, 2285, 2290, 2294, 2296, 2298, 2300 } ; /* The intent behind this definition is that it'll catch @@ -2078,7 +2084,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg) -#line 2081 "dhcp4_lexer.cc" +#line 2087 "dhcp4_lexer.cc" /* noyywrap disables automatic rewinding for the next file to parse. Since we always parse only a single string, there's no need to do any wraps. And using yywrap requires linking with -lfl, which provides the default yywrap @@ -2104,8 +2110,8 @@ using namespace isc::dhcp; by moving it ahead by yyleng bytes. yyleng specifies the length of the currently matched token. */ #define YY_USER_ACTION driver.loc_.columns(yyleng); -#line 2107 "dhcp4_lexer.cc" -#line 2108 "dhcp4_lexer.cc" +#line 2113 "dhcp4_lexer.cc" +#line 2114 "dhcp4_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2161,7 +2167,7 @@ FILE *yyget_out ( void ); void yyset_out ( FILE * _out_str ); - int yyget_leng ( void ); + yy_size_t yyget_leng ( void ); char *yyget_text ( void ); @@ -2248,7 +2254,7 @@ static int input ( void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + yy_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -2433,7 +2439,7 @@ YY_DECL } -#line 2436 "dhcp4_lexer.cc" +#line 2442 "dhcp4_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2462,13 +2468,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2044 ) + if ( yy_current_state >= 2057 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 2043 ); + while ( yy_current_state != 2056 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -2487,13 +2493,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 217 ) + else if ( yy_act < 218 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 217 ) + else if ( yy_act == 218 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 218 ) + else if ( yy_act == 219 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -4994,15 +5000,27 @@ YY_RULE_SETUP { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: - return isc::dhcp::Dhcp4Parser::make_COMPATIBILITY(driver.loc_); + return isc::dhcp::Dhcp4Parser::make_RESERVATIONS_LOOKUP_FIRST(driver.loc_); default: - return isc::dhcp::Dhcp4Parser::make_STRING("compatibility", driver.loc_); + return isc::dhcp::Dhcp4Parser::make_STRING("reservations-lookup-first", driver.loc_); } } YY_BREAK case 197: YY_RULE_SETUP #line 2040 "dhcp4_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::DHCP4: + return isc::dhcp::Dhcp4Parser::make_COMPATIBILITY(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("compatibility", driver.loc_); + } +} + YY_BREAK +case 198: +YY_RULE_SETUP +#line 2049 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::COMPATIBILITY: @@ -5012,9 +5030,9 @@ YY_RULE_SETUP } } YY_BREAK -case 198: +case 199: YY_RULE_SETUP -#line 2049 "dhcp4_lexer.ll" +#line 2058 "dhcp4_lexer.ll" { /* A string has been matched. It contains the actual string and single quotes. We need to get those quotes out of the way and just use its content, e.g. @@ -5116,10 +5134,10 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_); } YY_BREAK -case 199: -/* rule 199 can match eol */ +case 200: +/* rule 200 can match eol */ YY_RULE_SETUP -#line 2150 "dhcp4_lexer.ll" +#line 2159 "dhcp4_lexer.ll" { /* Bad string with a forbidden control character inside */ std::string raw(yytext+1); @@ -5136,10 +5154,10 @@ YY_RULE_SETUP pos + 1); } YY_BREAK -case 200: -/* rule 200 can match eol */ +case 201: +/* rule 201 can match eol */ YY_RULE_SETUP -#line 2166 "dhcp4_lexer.ll" +#line 2175 "dhcp4_lexer.ll" { /* Bad string with a bad escape inside */ std::string raw(yytext+1); @@ -5189,9 +5207,9 @@ YY_RULE_SETUP pos); } YY_BREAK -case 201: +case 202: YY_RULE_SETUP -#line 2215 "dhcp4_lexer.ll" +#line 2224 "dhcp4_lexer.ll" { /* Bad string with an open escape at the end */ std::string raw(yytext+1); @@ -5200,9 +5218,9 @@ YY_RULE_SETUP raw.size() + 1); } YY_BREAK -case 202: +case 203: YY_RULE_SETUP -#line 2223 "dhcp4_lexer.ll" +#line 2232 "dhcp4_lexer.ll" { /* Bad string with an open unicode escape at the end */ std::string raw(yytext+1); @@ -5218,39 +5236,39 @@ YY_RULE_SETUP pos + 1); } YY_BREAK -case 203: +case 204: YY_RULE_SETUP -#line 2238 "dhcp4_lexer.ll" +#line 2247 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 204: +case 205: YY_RULE_SETUP -#line 2239 "dhcp4_lexer.ll" +#line 2248 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 205: +case 206: YY_RULE_SETUP -#line 2240 "dhcp4_lexer.ll" +#line 2249 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); } YY_BREAK -case 206: +case 207: YY_RULE_SETUP -#line 2241 "dhcp4_lexer.ll" +#line 2250 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); } YY_BREAK -case 207: +case 208: YY_RULE_SETUP -#line 2242 "dhcp4_lexer.ll" +#line 2251 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); } YY_BREAK -case 208: +case 209: YY_RULE_SETUP -#line 2243 "dhcp4_lexer.ll" +#line 2252 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); } YY_BREAK -case 209: +case 210: YY_RULE_SETUP -#line 2245 "dhcp4_lexer.ll" +#line 2254 "dhcp4_lexer.ll" { /* An integer was found. */ std::string tmp(yytext); @@ -5269,9 +5287,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_); } YY_BREAK -case 210: +case 211: YY_RULE_SETUP -#line 2263 "dhcp4_lexer.ll" +#line 2272 "dhcp4_lexer.ll" { /* A floating point was found. */ std::string tmp(yytext); @@ -5285,43 +5303,43 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_); } YY_BREAK -case 211: +case 212: YY_RULE_SETUP -#line 2276 "dhcp4_lexer.ll" +#line 2285 "dhcp4_lexer.ll" { string tmp(yytext); return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK -case 212: +case 213: YY_RULE_SETUP -#line 2281 "dhcp4_lexer.ll" +#line 2290 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_); } YY_BREAK -case 213: +case 214: YY_RULE_SETUP -#line 2285 "dhcp4_lexer.ll" +#line 2294 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); YY_BREAK -case 214: +case 215: YY_RULE_SETUP -#line 2287 "dhcp4_lexer.ll" +#line 2296 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); YY_BREAK -case 215: +case 216: YY_RULE_SETUP -#line 2289 "dhcp4_lexer.ll" +#line 2298 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); YY_BREAK -case 216: +case 217: YY_RULE_SETUP -#line 2291 "dhcp4_lexer.ll" +#line 2300 "dhcp4_lexer.ll" driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 2293 "dhcp4_lexer.ll" +#line 2302 "dhcp4_lexer.ll" { if (driver.states_.empty()) { return isc::dhcp::Dhcp4Parser::make_END(driver.loc_); @@ -5345,12 +5363,12 @@ case YY_STATE_EOF(INITIAL): BEGIN(DIR_EXIT); } YY_BREAK -case 217: +case 218: YY_RULE_SETUP -#line 2316 "dhcp4_lexer.ll" +#line 2325 "dhcp4_lexer.ll" ECHO; YY_BREAK -#line 5353 "dhcp4_lexer.cc" +#line 5371 "dhcp4_lexer.cc" case YY_END_OF_BUFFER: { @@ -5552,7 +5570,7 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -5566,7 +5584,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -5624,7 +5642,7 @@ static int yy_get_next_buffer (void) if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) @@ -5669,7 +5687,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2044 ) + if ( yy_current_state >= 2057 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5702,11 +5720,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2044 ) + if ( yy_current_state >= 2057 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 2043); + yy_is_jam = (yy_current_state == 2056); return yy_is_jam ? 0 : yy_current_state; } @@ -5745,7 +5763,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -6188,12 +6206,12 @@ YY_BUFFER_STATE yy_scan_string (const char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); @@ -6240,7 +6258,7 @@ static void yynoreturn yy_fatal_error (const char* msg ) do \ { \ /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ + yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ @@ -6284,7 +6302,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t yyget_leng (void) { return yyleng; } @@ -6455,7 +6473,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 2316 "dhcp4_lexer.ll" +#line 2325 "dhcp4_lexer.ll" using namespace isc::dhcp; diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc index f1a8107b96..3c9a741736 100644 --- a/src/bin/dhcp4/dhcp4_parser.cc +++ b/src/bin/dhcp4/dhcp4_parser.cc @@ -402,79 +402,79 @@ namespace isc { namespace dhcp { switch (yykind) { case symbol_kind::S_STRING: // "constant string" -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < std::string > (); } #line 408 "dhcp4_parser.cc" break; case symbol_kind::S_INTEGER: // "integer" -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < int64_t > (); } #line 414 "dhcp4_parser.cc" break; case symbol_kind::S_FLOAT: // "floating point" -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < double > (); } #line 420 "dhcp4_parser.cc" break; case symbol_kind::S_BOOLEAN: // "boolean" -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < bool > (); } #line 426 "dhcp4_parser.cc" break; case symbol_kind::S_value: // value -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 432 "dhcp4_parser.cc" break; case symbol_kind::S_map_value: // map_value -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 438 "dhcp4_parser.cc" break; case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 444 "dhcp4_parser.cc" break; case symbol_kind::S_socket_type: // socket_type -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 450 "dhcp4_parser.cc" break; case symbol_kind::S_outbound_interface_value: // outbound_interface_value -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 456 "dhcp4_parser.cc" break; case symbol_kind::S_db_type: // db_type -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 462 "dhcp4_parser.cc" break; case symbol_kind::S_on_fail_mode: // on_fail_mode -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 468 "dhcp4_parser.cc" break; case symbol_kind::S_hr_mode: // hr_mode -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 474 "dhcp4_parser.cc" break; case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 480 "dhcp4_parser.cc" break; @@ -755,127 +755,127 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: // $@1: %empty -#line 298 "dhcp4_parser.yy" +#line 299 "dhcp4_parser.yy" { ctx.ctx_ = ctx.NO_KEYWORD; } #line 761 "dhcp4_parser.cc" break; case 4: // $@2: %empty -#line 299 "dhcp4_parser.yy" +#line 300 "dhcp4_parser.yy" { ctx.ctx_ = ctx.CONFIG; } #line 767 "dhcp4_parser.cc" break; case 6: // $@3: %empty -#line 300 "dhcp4_parser.yy" +#line 301 "dhcp4_parser.yy" { ctx.ctx_ = ctx.DHCP4; } #line 773 "dhcp4_parser.cc" break; case 8: // $@4: %empty -#line 301 "dhcp4_parser.yy" +#line 302 "dhcp4_parser.yy" { ctx.ctx_ = ctx.INTERFACES_CONFIG; } #line 779 "dhcp4_parser.cc" break; case 10: // $@5: %empty -#line 302 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { ctx.ctx_ = ctx.SUBNET4; } #line 785 "dhcp4_parser.cc" break; case 12: // $@6: %empty -#line 303 "dhcp4_parser.yy" +#line 304 "dhcp4_parser.yy" { ctx.ctx_ = ctx.POOLS; } #line 791 "dhcp4_parser.cc" break; case 14: // $@7: %empty -#line 304 "dhcp4_parser.yy" +#line 305 "dhcp4_parser.yy" { ctx.ctx_ = ctx.RESERVATIONS; } #line 797 "dhcp4_parser.cc" break; case 16: // $@8: %empty -#line 305 "dhcp4_parser.yy" +#line 306 "dhcp4_parser.yy" { ctx.ctx_ = ctx.DHCP4; } #line 803 "dhcp4_parser.cc" break; case 18: // $@9: %empty -#line 306 "dhcp4_parser.yy" +#line 307 "dhcp4_parser.yy" { ctx.ctx_ = ctx.OPTION_DEF; } #line 809 "dhcp4_parser.cc" break; case 20: // $@10: %empty -#line 307 "dhcp4_parser.yy" +#line 308 "dhcp4_parser.yy" { ctx.ctx_ = ctx.OPTION_DATA; } #line 815 "dhcp4_parser.cc" break; case 22: // $@11: %empty -#line 308 "dhcp4_parser.yy" +#line 309 "dhcp4_parser.yy" { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } #line 821 "dhcp4_parser.cc" break; case 24: // $@12: %empty -#line 309 "dhcp4_parser.yy" +#line 310 "dhcp4_parser.yy" { ctx.ctx_ = ctx.DHCP_DDNS; } #line 827 "dhcp4_parser.cc" break; case 26: // $@13: %empty -#line 310 "dhcp4_parser.yy" +#line 311 "dhcp4_parser.yy" { ctx.ctx_ = ctx.CONFIG_CONTROL; } #line 833 "dhcp4_parser.cc" break; case 28: // value: "integer" -#line 318 "dhcp4_parser.yy" +#line 319 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } #line 839 "dhcp4_parser.cc" break; case 29: // value: "floating point" -#line 319 "dhcp4_parser.yy" +#line 320 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } #line 845 "dhcp4_parser.cc" break; case 30: // value: "boolean" -#line 320 "dhcp4_parser.yy" +#line 321 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } #line 851 "dhcp4_parser.cc" break; case 31: // value: "constant string" -#line 321 "dhcp4_parser.yy" +#line 322 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } #line 857 "dhcp4_parser.cc" break; case 32: // value: "null" -#line 322 "dhcp4_parser.yy" +#line 323 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } #line 863 "dhcp4_parser.cc" break; case 33: // value: map2 -#line 323 "dhcp4_parser.yy" +#line 324 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 869 "dhcp4_parser.cc" break; case 34: // value: list_generic -#line 324 "dhcp4_parser.yy" +#line 325 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 875 "dhcp4_parser.cc" break; case 35: // sub_json: value -#line 327 "dhcp4_parser.yy" +#line 328 "dhcp4_parser.yy" { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); @@ -884,7 +884,7 @@ namespace isc { namespace dhcp { break; case 36: // $@14: %empty -#line 332 "dhcp4_parser.yy" +#line 333 "dhcp4_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -895,7 +895,7 @@ namespace isc { namespace dhcp { break; case 37: // map2: "{" $@14 map_content "}" -#line 337 "dhcp4_parser.yy" +#line 338 "dhcp4_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -905,13 +905,13 @@ namespace isc { namespace dhcp { break; case 38: // map_value: map2 -#line 343 "dhcp4_parser.yy" +#line 344 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 911 "dhcp4_parser.cc" break; case 41: // not_empty_map: "constant string" ":" value -#line 350 "dhcp4_parser.yy" +#line 351 "dhcp4_parser.yy" { // map containing a single entry ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); @@ -921,7 +921,7 @@ namespace isc { namespace dhcp { break; case 42: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 355 "dhcp4_parser.yy" +#line 356 "dhcp4_parser.yy" { // map consisting of a shorter map followed by // comma and string:value @@ -932,7 +932,7 @@ namespace isc { namespace dhcp { break; case 43: // not_empty_map: not_empty_map "," -#line 361 "dhcp4_parser.yy" +#line 362 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -940,7 +940,7 @@ namespace isc { namespace dhcp { break; case 44: // $@15: %empty -#line 366 "dhcp4_parser.yy" +#line 367 "dhcp4_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); @@ -949,7 +949,7 @@ namespace isc { namespace dhcp { break; case 45: // list_generic: "[" $@15 list_content "]" -#line 369 "dhcp4_parser.yy" +#line 370 "dhcp4_parser.yy" { // list parsing complete. Put any sanity checking here } @@ -957,7 +957,7 @@ namespace isc { namespace dhcp { break; case 48: // not_empty_list: value -#line 377 "dhcp4_parser.yy" +#line 378 "dhcp4_parser.yy" { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); @@ -966,7 +966,7 @@ namespace isc { namespace dhcp { break; case 49: // not_empty_list: not_empty_list "," value -#line 381 "dhcp4_parser.yy" +#line 382 "dhcp4_parser.yy" { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); @@ -975,7 +975,7 @@ namespace isc { namespace dhcp { break; case 50: // not_empty_list: not_empty_list "," -#line 385 "dhcp4_parser.yy" +#line 386 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -983,7 +983,7 @@ namespace isc { namespace dhcp { break; case 51: // $@16: %empty -#line 391 "dhcp4_parser.yy" +#line 392 "dhcp4_parser.yy" { // List parsing about to start } @@ -991,7 +991,7 @@ namespace isc { namespace dhcp { break; case 52: // list_strings: "[" $@16 list_strings_content "]" -#line 393 "dhcp4_parser.yy" +#line 394 "dhcp4_parser.yy" { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); @@ -1000,7 +1000,7 @@ namespace isc { namespace dhcp { break; case 55: // not_empty_list_strings: "constant string" -#line 402 "dhcp4_parser.yy" +#line 403 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -1009,7 +1009,7 @@ namespace isc { namespace dhcp { break; case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string" -#line 406 "dhcp4_parser.yy" +#line 407 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -1018,7 +1018,7 @@ namespace isc { namespace dhcp { break; case 57: // not_empty_list_strings: not_empty_list_strings "," -#line 410 "dhcp4_parser.yy" +#line 411 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1026,7 +1026,7 @@ namespace isc { namespace dhcp { break; case 58: // unknown_map_entry: "constant string" ":" -#line 420 "dhcp4_parser.yy" +#line 421 "dhcp4_parser.yy" { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as < std::string > (); @@ -1037,7 +1037,7 @@ namespace isc { namespace dhcp { break; case 59: // $@17: %empty -#line 429 "dhcp4_parser.yy" +#line 430 "dhcp4_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1048,7 +1048,7 @@ namespace isc { namespace dhcp { break; case 60: // syntax_map: "{" $@17 global_object "}" -#line 434 "dhcp4_parser.yy" +#line 435 "dhcp4_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -1061,7 +1061,7 @@ namespace isc { namespace dhcp { break; case 61: // $@18: %empty -#line 444 "dhcp4_parser.yy" +#line 445 "dhcp4_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1076,7 +1076,7 @@ namespace isc { namespace dhcp { break; case 62: // global_object: "Dhcp4" $@18 ":" "{" global_params "}" -#line 453 "dhcp4_parser.yy" +#line 454 "dhcp4_parser.yy" { // No global parameter is required ctx.stack_.pop_back(); @@ -1086,7 +1086,7 @@ namespace isc { namespace dhcp { break; case 64: // global_object_comma: global_object "," -#line 461 "dhcp4_parser.yy" +#line 462 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1094,7 +1094,7 @@ namespace isc { namespace dhcp { break; case 65: // $@19: %empty -#line 467 "dhcp4_parser.yy" +#line 468 "dhcp4_parser.yy" { // Parse the Dhcp4 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1104,7 +1104,7 @@ namespace isc { namespace dhcp { break; case 66: // sub_dhcp4: "{" $@19 global_params "}" -#line 471 "dhcp4_parser.yy" +#line 472 "dhcp4_parser.yy" { // No global parameter is required // parsing completed @@ -1113,15 +1113,15 @@ namespace isc { namespace dhcp { break; case 69: // global_params: global_params "," -#line 478 "dhcp4_parser.yy" +#line 479 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } #line 1121 "dhcp4_parser.cc" break; - case 132: // valid_lifetime: "valid-lifetime" ":" "integer" -#line 549 "dhcp4_parser.yy" + case 133: // valid_lifetime: "valid-lifetime" ":" "integer" +#line 551 "dhcp4_parser.yy" { ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1130,8 +1130,8 @@ namespace isc { namespace dhcp { #line 1131 "dhcp4_parser.cc" break; - case 133: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" -#line 555 "dhcp4_parser.yy" + case 134: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" +#line 557 "dhcp4_parser.yy" { ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1140,8 +1140,8 @@ namespace isc { namespace dhcp { #line 1141 "dhcp4_parser.cc" break; - case 134: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" -#line 561 "dhcp4_parser.yy" + case 135: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" +#line 563 "dhcp4_parser.yy" { ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1150,8 +1150,8 @@ namespace isc { namespace dhcp { #line 1151 "dhcp4_parser.cc" break; - case 135: // renew_timer: "renew-timer" ":" "integer" -#line 567 "dhcp4_parser.yy" + case 136: // renew_timer: "renew-timer" ":" "integer" +#line 569 "dhcp4_parser.yy" { ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1160,8 +1160,8 @@ namespace isc { namespace dhcp { #line 1161 "dhcp4_parser.cc" break; - case 136: // rebind_timer: "rebind-timer" ":" "integer" -#line 573 "dhcp4_parser.yy" + case 137: // rebind_timer: "rebind-timer" ":" "integer" +#line 575 "dhcp4_parser.yy" { ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1170,8 +1170,8 @@ namespace isc { namespace dhcp { #line 1171 "dhcp4_parser.cc" break; - case 137: // calculate_tee_times: "calculate-tee-times" ":" "boolean" -#line 579 "dhcp4_parser.yy" + case 138: // calculate_tee_times: "calculate-tee-times" ":" "boolean" +#line 581 "dhcp4_parser.yy" { ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location)); ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1180,8 +1180,8 @@ namespace isc { namespace dhcp { #line 1181 "dhcp4_parser.cc" break; - case 138: // t1_percent: "t1-percent" ":" "floating point" -#line 585 "dhcp4_parser.yy" + case 139: // t1_percent: "t1-percent" ":" "floating point" +#line 587 "dhcp4_parser.yy" { ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1190,8 +1190,8 @@ namespace isc { namespace dhcp { #line 1191 "dhcp4_parser.cc" break; - case 139: // t2_percent: "t2-percent" ":" "floating point" -#line 591 "dhcp4_parser.yy" + case 140: // t2_percent: "t2-percent" ":" "floating point" +#line 593 "dhcp4_parser.yy" { ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1200,8 +1200,8 @@ namespace isc { namespace dhcp { #line 1201 "dhcp4_parser.cc" break; - case 140: // cache_threshold: "cache-threshold" ":" "floating point" -#line 597 "dhcp4_parser.yy" + case 141: // cache_threshold: "cache-threshold" ":" "floating point" +#line 599 "dhcp4_parser.yy" { ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location)); ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1210,8 +1210,8 @@ namespace isc { namespace dhcp { #line 1211 "dhcp4_parser.cc" break; - case 141: // cache_max_age: "cache-max-age" ":" "integer" -#line 603 "dhcp4_parser.yy" + case 142: // cache_max_age: "cache-max-age" ":" "integer" +#line 605 "dhcp4_parser.yy" { ctx.unique("cache-max-age", ctx.loc2pos(yystack_[2].location)); ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1220,8 +1220,8 @@ namespace isc { namespace dhcp { #line 1221 "dhcp4_parser.cc" break; - case 142: // decline_probation_period: "decline-probation-period" ":" "integer" -#line 609 "dhcp4_parser.yy" + case 143: // decline_probation_period: "decline-probation-period" ":" "integer" +#line 611 "dhcp4_parser.yy" { ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location)); ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1230,8 +1230,8 @@ namespace isc { namespace dhcp { #line 1231 "dhcp4_parser.cc" break; - case 143: // $@20: %empty -#line 615 "dhcp4_parser.yy" + case 144: // $@20: %empty +#line 617 "dhcp4_parser.yy" { ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1239,8 +1239,8 @@ namespace isc { namespace dhcp { #line 1240 "dhcp4_parser.cc" break; - case 144: // server_tag: "server-tag" $@20 ":" "constant string" -#line 618 "dhcp4_parser.yy" + case 145: // server_tag: "server-tag" $@20 ":" "constant string" +#line 620 "dhcp4_parser.yy" { ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-tag", stag); @@ -1249,8 +1249,8 @@ namespace isc { namespace dhcp { #line 1250 "dhcp4_parser.cc" break; - case 145: // parked_packet_limit: "parked-packet-limit" ":" "integer" -#line 624 "dhcp4_parser.yy" + case 146: // parked_packet_limit: "parked-packet-limit" ":" "integer" +#line 626 "dhcp4_parser.yy" { ctx.unique("parked-packet-limit", ctx.loc2pos(yystack_[2].location)); ElementPtr ppl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1259,8 +1259,8 @@ namespace isc { namespace dhcp { #line 1260 "dhcp4_parser.cc" break; - case 146: // echo_client_id: "echo-client-id" ":" "boolean" -#line 630 "dhcp4_parser.yy" + case 147: // echo_client_id: "echo-client-id" ":" "boolean" +#line 632 "dhcp4_parser.yy" { ctx.unique("echo-client-id", ctx.loc2pos(yystack_[2].location)); ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1269,8 +1269,8 @@ namespace isc { namespace dhcp { #line 1270 "dhcp4_parser.cc" break; - case 147: // match_client_id: "match-client-id" ":" "boolean" -#line 636 "dhcp4_parser.yy" + case 148: // match_client_id: "match-client-id" ":" "boolean" +#line 638 "dhcp4_parser.yy" { ctx.unique("match-client-id", ctx.loc2pos(yystack_[2].location)); ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1279,8 +1279,8 @@ namespace isc { namespace dhcp { #line 1280 "dhcp4_parser.cc" break; - case 148: // authoritative: "authoritative" ":" "boolean" -#line 642 "dhcp4_parser.yy" + case 149: // authoritative: "authoritative" ":" "boolean" +#line 644 "dhcp4_parser.yy" { ctx.unique("authoritative", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1289,8 +1289,8 @@ namespace isc { namespace dhcp { #line 1290 "dhcp4_parser.cc" break; - case 149: // ddns_send_updates: "ddns-send-updates" ":" "boolean" -#line 648 "dhcp4_parser.yy" + case 150: // ddns_send_updates: "ddns-send-updates" ":" "boolean" +#line 650 "dhcp4_parser.yy" { ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1299,8 +1299,8 @@ namespace isc { namespace dhcp { #line 1300 "dhcp4_parser.cc" break; - case 150: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" -#line 654 "dhcp4_parser.yy" + case 151: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" +#line 656 "dhcp4_parser.yy" { ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1309,8 +1309,8 @@ namespace isc { namespace dhcp { #line 1310 "dhcp4_parser.cc" break; - case 151: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" -#line 660 "dhcp4_parser.yy" + case 152: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" +#line 662 "dhcp4_parser.yy" { ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1319,8 +1319,8 @@ namespace isc { namespace dhcp { #line 1320 "dhcp4_parser.cc" break; - case 152: // $@21: %empty -#line 666 "dhcp4_parser.yy" + case 153: // $@21: %empty +#line 668 "dhcp4_parser.yy" { ctx.enter(ctx.REPLACE_CLIENT_NAME); ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location)); @@ -1328,8 +1328,8 @@ namespace isc { namespace dhcp { #line 1329 "dhcp4_parser.cc" break; - case 153: // ddns_replace_client_name: "ddns-replace-client-name" $@21 ":" ddns_replace_client_name_value -#line 669 "dhcp4_parser.yy" + case 154: // ddns_replace_client_name: "ddns-replace-client-name" $@21 ":" ddns_replace_client_name_value +#line 671 "dhcp4_parser.yy" { ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); @@ -1337,40 +1337,40 @@ namespace isc { namespace dhcp { #line 1338 "dhcp4_parser.cc" break; - case 154: // ddns_replace_client_name_value: "when-present" -#line 675 "dhcp4_parser.yy" + case 155: // ddns_replace_client_name_value: "when-present" +#line 677 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } #line 1346 "dhcp4_parser.cc" break; - case 155: // ddns_replace_client_name_value: "never" -#line 678 "dhcp4_parser.yy" + case 156: // ddns_replace_client_name_value: "never" +#line 680 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } #line 1354 "dhcp4_parser.cc" break; - case 156: // ddns_replace_client_name_value: "always" -#line 681 "dhcp4_parser.yy" + case 157: // ddns_replace_client_name_value: "always" +#line 683 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } #line 1362 "dhcp4_parser.cc" break; - case 157: // ddns_replace_client_name_value: "when-not-present" -#line 684 "dhcp4_parser.yy" + case 158: // ddns_replace_client_name_value: "when-not-present" +#line 686 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } #line 1370 "dhcp4_parser.cc" break; - case 158: // ddns_replace_client_name_value: "boolean" -#line 687 "dhcp4_parser.yy" + case 159: // ddns_replace_client_name_value: "boolean" +#line 689 "dhcp4_parser.yy" { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); @@ -1378,8 +1378,8 @@ namespace isc { namespace dhcp { #line 1379 "dhcp4_parser.cc" break; - case 159: // $@22: %empty -#line 693 "dhcp4_parser.yy" + case 160: // $@22: %empty +#line 695 "dhcp4_parser.yy" { ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1387,8 +1387,8 @@ namespace isc { namespace dhcp { #line 1388 "dhcp4_parser.cc" break; - case 160: // ddns_generated_prefix: "ddns-generated-prefix" $@22 ":" "constant string" -#line 696 "dhcp4_parser.yy" + case 161: // ddns_generated_prefix: "ddns-generated-prefix" $@22 ":" "constant string" +#line 698 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-generated-prefix", s); @@ -1397,8 +1397,8 @@ namespace isc { namespace dhcp { #line 1398 "dhcp4_parser.cc" break; - case 161: // $@23: %empty -#line 702 "dhcp4_parser.yy" + case 162: // $@23: %empty +#line 704 "dhcp4_parser.yy" { ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1406,8 +1406,8 @@ namespace isc { namespace dhcp { #line 1407 "dhcp4_parser.cc" break; - case 162: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@23 ":" "constant string" -#line 705 "dhcp4_parser.yy" + case 163: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@23 ":" "constant string" +#line 707 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-qualifying-suffix", s); @@ -1416,8 +1416,8 @@ namespace isc { namespace dhcp { #line 1417 "dhcp4_parser.cc" break; - case 163: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" -#line 711 "dhcp4_parser.yy" + case 164: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" +#line 713 "dhcp4_parser.yy" { ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1426,8 +1426,8 @@ namespace isc { namespace dhcp { #line 1427 "dhcp4_parser.cc" break; - case 164: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean" -#line 717 "dhcp4_parser.yy" + case 165: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean" +#line 719 "dhcp4_parser.yy" { ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1436,8 +1436,8 @@ namespace isc { namespace dhcp { #line 1437 "dhcp4_parser.cc" break; - case 165: // $@24: %empty -#line 723 "dhcp4_parser.yy" + case 166: // $@24: %empty +#line 725 "dhcp4_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1445,8 +1445,8 @@ namespace isc { namespace dhcp { #line 1446 "dhcp4_parser.cc" break; - case 166: // hostname_char_set: "hostname-char-set" $@24 ":" "constant string" -#line 726 "dhcp4_parser.yy" + case 167: // hostname_char_set: "hostname-char-set" $@24 ":" "constant string" +#line 728 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); @@ -1455,8 +1455,8 @@ namespace isc { namespace dhcp { #line 1456 "dhcp4_parser.cc" break; - case 167: // $@25: %empty -#line 732 "dhcp4_parser.yy" + case 168: // $@25: %empty +#line 734 "dhcp4_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1464,8 +1464,8 @@ namespace isc { namespace dhcp { #line 1465 "dhcp4_parser.cc" break; - case 168: // hostname_char_replacement: "hostname-char-replacement" $@25 ":" "constant string" -#line 735 "dhcp4_parser.yy" + case 169: // hostname_char_replacement: "hostname-char-replacement" $@25 ":" "constant string" +#line 737 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); @@ -1474,8 +1474,8 @@ namespace isc { namespace dhcp { #line 1475 "dhcp4_parser.cc" break; - case 169: // store_extended_info: "store-extended-info" ":" "boolean" -#line 741 "dhcp4_parser.yy" + case 170: // store_extended_info: "store-extended-info" ":" "boolean" +#line 743 "dhcp4_parser.yy" { ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1484,8 +1484,8 @@ namespace isc { namespace dhcp { #line 1485 "dhcp4_parser.cc" break; - case 170: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" -#line 747 "dhcp4_parser.yy" + case 171: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" +#line 749 "dhcp4_parser.yy" { ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location)); ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1494,8 +1494,8 @@ namespace isc { namespace dhcp { #line 1495 "dhcp4_parser.cc" break; - case 171: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" -#line 753 "dhcp4_parser.yy" + case 172: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" +#line 755 "dhcp4_parser.yy" { ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location)); ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1504,8 +1504,8 @@ namespace isc { namespace dhcp { #line 1505 "dhcp4_parser.cc" break; - case 172: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" -#line 759 "dhcp4_parser.yy" + case 173: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" +#line 761 "dhcp4_parser.yy" { ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location)); ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1514,8 +1514,18 @@ namespace isc { namespace dhcp { #line 1515 "dhcp4_parser.cc" break; - case 173: // $@26: %empty -#line 765 "dhcp4_parser.yy" + case 174: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean" +#line 767 "dhcp4_parser.yy" + { + ctx.unique("reservations-lookup-first", ctx.loc2pos(yystack_[2].location)); + ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ctx.stack_.back()->set("reservations-lookup-first", first); +} +#line 1525 "dhcp4_parser.cc" + break; + + case 175: // $@26: %empty +#line 773 "dhcp4_parser.yy" { ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1523,48 +1533,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.INTERFACES_CONFIG); } -#line 1527 "dhcp4_parser.cc" +#line 1537 "dhcp4_parser.cc" break; - case 174: // interfaces_config: "interfaces-config" $@26 ":" "{" interfaces_config_params "}" -#line 771 "dhcp4_parser.yy" + case 176: // interfaces_config: "interfaces-config" $@26 ":" "{" interfaces_config_params "}" +#line 779 "dhcp4_parser.yy" { // No interfaces config param is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1537 "dhcp4_parser.cc" +#line 1547 "dhcp4_parser.cc" break; - case 177: // interfaces_config_params: interfaces_config_params "," -#line 779 "dhcp4_parser.yy" + case 179: // interfaces_config_params: interfaces_config_params "," +#line 787 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1545 "dhcp4_parser.cc" +#line 1555 "dhcp4_parser.cc" break; - case 185: // $@27: %empty -#line 793 "dhcp4_parser.yy" + case 187: // $@27: %empty +#line 801 "dhcp4_parser.yy" { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1555 "dhcp4_parser.cc" +#line 1565 "dhcp4_parser.cc" break; - case 186: // sub_interfaces4: "{" $@27 interfaces_config_params "}" -#line 797 "dhcp4_parser.yy" + case 188: // sub_interfaces4: "{" $@27 interfaces_config_params "}" +#line 805 "dhcp4_parser.yy" { // No interfaces config param is required // parsing completed } -#line 1564 "dhcp4_parser.cc" +#line 1574 "dhcp4_parser.cc" break; - case 187: // $@28: %empty -#line 802 "dhcp4_parser.yy" + case 189: // $@28: %empty +#line 810 "dhcp4_parser.yy" { ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1572,94 +1582,94 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 1576 "dhcp4_parser.cc" +#line 1586 "dhcp4_parser.cc" break; - case 188: // interfaces_list: "interfaces" $@28 ":" list_strings -#line 808 "dhcp4_parser.yy" + case 190: // interfaces_list: "interfaces" $@28 ":" list_strings +#line 816 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1585 "dhcp4_parser.cc" +#line 1595 "dhcp4_parser.cc" break; - case 189: // $@29: %empty -#line 813 "dhcp4_parser.yy" + case 191: // $@29: %empty +#line 821 "dhcp4_parser.yy" { ctx.unique("dhcp-socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DHCP_SOCKET_TYPE); } -#line 1594 "dhcp4_parser.cc" +#line 1604 "dhcp4_parser.cc" break; - case 190: // dhcp_socket_type: "dhcp-socket-type" $@29 ":" socket_type -#line 816 "dhcp4_parser.yy" + case 192: // dhcp_socket_type: "dhcp-socket-type" $@29 ":" socket_type +#line 824 "dhcp4_parser.yy" { ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1603 "dhcp4_parser.cc" +#line 1613 "dhcp4_parser.cc" break; - case 191: // socket_type: "raw" -#line 821 "dhcp4_parser.yy" + case 193: // socket_type: "raw" +#line 829 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); } -#line 1609 "dhcp4_parser.cc" +#line 1619 "dhcp4_parser.cc" break; - case 192: // socket_type: "udp" -#line 822 "dhcp4_parser.yy" + case 194: // socket_type: "udp" +#line 830 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); } -#line 1615 "dhcp4_parser.cc" +#line 1625 "dhcp4_parser.cc" break; - case 193: // $@30: %empty -#line 825 "dhcp4_parser.yy" + case 195: // $@30: %empty +#line 833 "dhcp4_parser.yy" { ctx.unique("outbound-interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.OUTBOUND_INTERFACE); } -#line 1624 "dhcp4_parser.cc" +#line 1634 "dhcp4_parser.cc" break; - case 194: // outbound_interface: "outbound-interface" $@30 ":" outbound_interface_value -#line 828 "dhcp4_parser.yy" + case 196: // outbound_interface: "outbound-interface" $@30 ":" outbound_interface_value +#line 836 "dhcp4_parser.yy" { ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1633 "dhcp4_parser.cc" +#line 1643 "dhcp4_parser.cc" break; - case 195: // outbound_interface_value: "same-as-inbound" -#line 833 "dhcp4_parser.yy" + case 197: // outbound_interface_value: "same-as-inbound" +#line 841 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location))); } -#line 1641 "dhcp4_parser.cc" +#line 1651 "dhcp4_parser.cc" break; - case 196: // outbound_interface_value: "use-routing" -#line 835 "dhcp4_parser.yy" + case 198: // outbound_interface_value: "use-routing" +#line 843 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location))); } -#line 1649 "dhcp4_parser.cc" +#line 1659 "dhcp4_parser.cc" break; - case 197: // re_detect: "re-detect" ":" "boolean" -#line 839 "dhcp4_parser.yy" + case 199: // re_detect: "re-detect" ":" "boolean" +#line 847 "dhcp4_parser.yy" { ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("re-detect", b); } -#line 1659 "dhcp4_parser.cc" +#line 1669 "dhcp4_parser.cc" break; - case 198: // $@31: %empty -#line 846 "dhcp4_parser.yy" + case 200: // $@31: %empty +#line 854 "dhcp4_parser.yy" { ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1667,22 +1677,22 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.LEASE_DATABASE); } -#line 1671 "dhcp4_parser.cc" +#line 1681 "dhcp4_parser.cc" break; - case 199: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}" -#line 852 "dhcp4_parser.yy" + case 201: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}" +#line 860 "dhcp4_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1682 "dhcp4_parser.cc" +#line 1692 "dhcp4_parser.cc" break; - case 200: // $@32: %empty -#line 859 "dhcp4_parser.yy" + case 202: // $@32: %empty +#line 867 "dhcp4_parser.yy" { ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1690,37 +1700,37 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.SANITY_CHECKS); } -#line 1694 "dhcp4_parser.cc" +#line 1704 "dhcp4_parser.cc" break; - case 201: // sanity_checks: "sanity-checks" $@32 ":" "{" sanity_checks_params "}" -#line 865 "dhcp4_parser.yy" + case 203: // sanity_checks: "sanity-checks" $@32 ":" "{" sanity_checks_params "}" +#line 873 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1703 "dhcp4_parser.cc" +#line 1713 "dhcp4_parser.cc" break; - case 204: // sanity_checks_params: sanity_checks_params "," -#line 872 "dhcp4_parser.yy" + case 206: // sanity_checks_params: sanity_checks_params "," +#line 880 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1711 "dhcp4_parser.cc" +#line 1721 "dhcp4_parser.cc" break; - case 206: // $@33: %empty -#line 879 "dhcp4_parser.yy" + case 208: // $@33: %empty +#line 887 "dhcp4_parser.yy" { ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1720 "dhcp4_parser.cc" +#line 1730 "dhcp4_parser.cc" break; - case 207: // lease_checks: "lease-checks" $@33 ":" "constant string" -#line 882 "dhcp4_parser.yy" + case 209: // lease_checks: "lease-checks" $@33 ":" "constant string" +#line 890 "dhcp4_parser.yy" { if ( (string(yystack_[0].value.as < std::string > ()) == "none") || @@ -1736,11 +1746,11 @@ namespace isc { namespace dhcp { ", supported values are: none, warn, fix, fix-del, del"); } } -#line 1740 "dhcp4_parser.cc" +#line 1750 "dhcp4_parser.cc" break; - case 208: // $@34: %empty -#line 898 "dhcp4_parser.yy" + case 210: // $@34: %empty +#line 906 "dhcp4_parser.yy" { ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1748,22 +1758,22 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1752 "dhcp4_parser.cc" +#line 1762 "dhcp4_parser.cc" break; - case 209: // hosts_database: "hosts-database" $@34 ":" "{" database_map_params "}" -#line 904 "dhcp4_parser.yy" + case 211: // hosts_database: "hosts-database" $@34 ":" "{" database_map_params "}" +#line 912 "dhcp4_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1763 "dhcp4_parser.cc" +#line 1773 "dhcp4_parser.cc" break; - case 210: // $@35: %empty -#line 911 "dhcp4_parser.yy" + case 212: // $@35: %empty +#line 919 "dhcp4_parser.yy" { ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1771,472 +1781,472 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1775 "dhcp4_parser.cc" +#line 1785 "dhcp4_parser.cc" break; - case 211: // hosts_databases: "hosts-databases" $@35 ":" "[" database_list "]" -#line 917 "dhcp4_parser.yy" + case 213: // hosts_databases: "hosts-databases" $@35 ":" "[" database_list "]" +#line 925 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1784 "dhcp4_parser.cc" +#line 1794 "dhcp4_parser.cc" break; - case 216: // not_empty_database_list: not_empty_database_list "," -#line 928 "dhcp4_parser.yy" + case 218: // not_empty_database_list: not_empty_database_list "," +#line 936 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1792 "dhcp4_parser.cc" +#line 1802 "dhcp4_parser.cc" break; - case 217: // $@36: %empty -#line 933 "dhcp4_parser.yy" + case 219: // $@36: %empty +#line 941 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1802 "dhcp4_parser.cc" +#line 1812 "dhcp4_parser.cc" break; - case 218: // database: "{" $@36 database_map_params "}" -#line 937 "dhcp4_parser.yy" + case 220: // database: "{" $@36 database_map_params "}" +#line 945 "dhcp4_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1812 "dhcp4_parser.cc" +#line 1822 "dhcp4_parser.cc" break; - case 221: // database_map_params: database_map_params "," -#line 945 "dhcp4_parser.yy" + case 223: // database_map_params: database_map_params "," +#line 953 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1820 "dhcp4_parser.cc" +#line 1830 "dhcp4_parser.cc" break; - case 248: // $@37: %empty -#line 978 "dhcp4_parser.yy" + case 250: // $@37: %empty +#line 986 "dhcp4_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_TYPE); } -#line 1829 "dhcp4_parser.cc" +#line 1839 "dhcp4_parser.cc" break; - case 249: // database_type: "type" $@37 ":" db_type -#line 981 "dhcp4_parser.yy" + case 251: // database_type: "type" $@37 ":" db_type +#line 989 "dhcp4_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1838 "dhcp4_parser.cc" +#line 1848 "dhcp4_parser.cc" break; - case 250: // db_type: "memfile" -#line 986 "dhcp4_parser.yy" + case 252: // db_type: "memfile" +#line 994 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } -#line 1844 "dhcp4_parser.cc" +#line 1854 "dhcp4_parser.cc" break; - case 251: // db_type: "mysql" -#line 987 "dhcp4_parser.yy" + case 253: // db_type: "mysql" +#line 995 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } -#line 1850 "dhcp4_parser.cc" +#line 1860 "dhcp4_parser.cc" break; - case 252: // db_type: "postgresql" -#line 988 "dhcp4_parser.yy" + case 254: // db_type: "postgresql" +#line 996 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } -#line 1856 "dhcp4_parser.cc" +#line 1866 "dhcp4_parser.cc" break; - case 253: // db_type: "cql" -#line 989 "dhcp4_parser.yy" + case 255: // db_type: "cql" +#line 997 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } -#line 1862 "dhcp4_parser.cc" +#line 1872 "dhcp4_parser.cc" break; - case 254: // $@38: %empty -#line 992 "dhcp4_parser.yy" + case 256: // $@38: %empty +#line 1000 "dhcp4_parser.yy" { ctx.unique("user", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1871 "dhcp4_parser.cc" +#line 1881 "dhcp4_parser.cc" break; - case 255: // user: "user" $@38 ":" "constant string" -#line 995 "dhcp4_parser.yy" + case 257: // user: "user" $@38 ":" "constant string" +#line 1003 "dhcp4_parser.yy" { ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); ctx.leave(); } -#line 1881 "dhcp4_parser.cc" +#line 1891 "dhcp4_parser.cc" break; - case 256: // $@39: %empty -#line 1001 "dhcp4_parser.yy" + case 258: // $@39: %empty +#line 1009 "dhcp4_parser.yy" { ctx.unique("password", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1890 "dhcp4_parser.cc" +#line 1900 "dhcp4_parser.cc" break; - case 257: // password: "password" $@39 ":" "constant string" -#line 1004 "dhcp4_parser.yy" + case 259: // password: "password" $@39 ":" "constant string" +#line 1012 "dhcp4_parser.yy" { ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); ctx.leave(); } -#line 1900 "dhcp4_parser.cc" +#line 1910 "dhcp4_parser.cc" break; - case 258: // $@40: %empty -#line 1010 "dhcp4_parser.yy" + case 260: // $@40: %empty +#line 1018 "dhcp4_parser.yy" { ctx.unique("host", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1909 "dhcp4_parser.cc" +#line 1919 "dhcp4_parser.cc" break; - case 259: // host: "host" $@40 ":" "constant string" -#line 1013 "dhcp4_parser.yy" + case 261: // host: "host" $@40 ":" "constant string" +#line 1021 "dhcp4_parser.yy" { ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); ctx.leave(); } -#line 1919 "dhcp4_parser.cc" +#line 1929 "dhcp4_parser.cc" break; - case 260: // port: "port" ":" "integer" -#line 1019 "dhcp4_parser.yy" + case 262: // port: "port" ":" "integer" +#line 1027 "dhcp4_parser.yy" { ctx.unique("port", ctx.loc2pos(yystack_[2].location)); ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", p); } -#line 1929 "dhcp4_parser.cc" +#line 1939 "dhcp4_parser.cc" break; - case 261: // $@41: %empty -#line 1025 "dhcp4_parser.yy" + case 263: // $@41: %empty +#line 1033 "dhcp4_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1938 "dhcp4_parser.cc" +#line 1948 "dhcp4_parser.cc" break; - case 262: // name: "name" $@41 ":" "constant string" -#line 1028 "dhcp4_parser.yy" + case 264: // name: "name" $@41 ":" "constant string" +#line 1036 "dhcp4_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1948 "dhcp4_parser.cc" +#line 1958 "dhcp4_parser.cc" break; - case 263: // persist: "persist" ":" "boolean" -#line 1034 "dhcp4_parser.yy" + case 265: // persist: "persist" ":" "boolean" +#line 1042 "dhcp4_parser.yy" { ctx.unique("persist", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("persist", n); } -#line 1958 "dhcp4_parser.cc" +#line 1968 "dhcp4_parser.cc" break; - case 264: // lfc_interval: "lfc-interval" ":" "integer" -#line 1040 "dhcp4_parser.yy" + case 266: // lfc_interval: "lfc-interval" ":" "integer" +#line 1048 "dhcp4_parser.yy" { ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lfc-interval", n); } -#line 1968 "dhcp4_parser.cc" +#line 1978 "dhcp4_parser.cc" break; - case 265: // readonly: "readonly" ":" "boolean" -#line 1046 "dhcp4_parser.yy" + case 267: // readonly: "readonly" ":" "boolean" +#line 1054 "dhcp4_parser.yy" { ctx.unique("readonly", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("readonly", n); } -#line 1978 "dhcp4_parser.cc" +#line 1988 "dhcp4_parser.cc" break; - case 266: // connect_timeout: "connect-timeout" ":" "integer" -#line 1052 "dhcp4_parser.yy" + case 268: // connect_timeout: "connect-timeout" ":" "integer" +#line 1060 "dhcp4_parser.yy" { ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("connect-timeout", n); } -#line 1988 "dhcp4_parser.cc" +#line 1998 "dhcp4_parser.cc" break; - case 267: // request_timeout: "request-timeout" ":" "integer" -#line 1058 "dhcp4_parser.yy" + case 269: // request_timeout: "request-timeout" ":" "integer" +#line 1066 "dhcp4_parser.yy" { ctx.unique("request-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("request-timeout", n); } -#line 1998 "dhcp4_parser.cc" +#line 2008 "dhcp4_parser.cc" break; - case 268: // tcp_keepalive: "tcp-keepalive" ":" "integer" -#line 1064 "dhcp4_parser.yy" + case 270: // tcp_keepalive: "tcp-keepalive" ":" "integer" +#line 1072 "dhcp4_parser.yy" { ctx.unique("tcp-keepalive", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-keepalive", n); } -#line 2008 "dhcp4_parser.cc" +#line 2018 "dhcp4_parser.cc" break; - case 269: // tcp_nodelay: "tcp-nodelay" ":" "boolean" -#line 1070 "dhcp4_parser.yy" + case 271: // tcp_nodelay: "tcp-nodelay" ":" "boolean" +#line 1078 "dhcp4_parser.yy" { ctx.unique("tcp-nodelay", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-nodelay", n); } -#line 2018 "dhcp4_parser.cc" +#line 2028 "dhcp4_parser.cc" break; - case 270: // $@42: %empty -#line 1076 "dhcp4_parser.yy" + case 272: // $@42: %empty +#line 1084 "dhcp4_parser.yy" { ctx.unique("contact-points", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2027 "dhcp4_parser.cc" +#line 2037 "dhcp4_parser.cc" break; - case 271: // contact_points: "contact-points" $@42 ":" "constant string" -#line 1079 "dhcp4_parser.yy" + case 273: // contact_points: "contact-points" $@42 ":" "constant string" +#line 1087 "dhcp4_parser.yy" { ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("contact-points", cp); ctx.leave(); } -#line 2037 "dhcp4_parser.cc" +#line 2047 "dhcp4_parser.cc" break; - case 272: // $@43: %empty -#line 1085 "dhcp4_parser.yy" + case 274: // $@43: %empty +#line 1093 "dhcp4_parser.yy" { ctx.unique("keyspace", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2046 "dhcp4_parser.cc" +#line 2056 "dhcp4_parser.cc" break; - case 273: // keyspace: "keyspace" $@43 ":" "constant string" -#line 1088 "dhcp4_parser.yy" + case 275: // keyspace: "keyspace" $@43 ":" "constant string" +#line 1096 "dhcp4_parser.yy" { ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("keyspace", ks); ctx.leave(); } -#line 2056 "dhcp4_parser.cc" +#line 2066 "dhcp4_parser.cc" break; - case 274: // $@44: %empty -#line 1094 "dhcp4_parser.yy" + case 276: // $@44: %empty +#line 1102 "dhcp4_parser.yy" { ctx.unique("consistency", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2065 "dhcp4_parser.cc" +#line 2075 "dhcp4_parser.cc" break; - case 275: // consistency: "consistency" $@44 ":" "constant string" -#line 1097 "dhcp4_parser.yy" + case 277: // consistency: "consistency" $@44 ":" "constant string" +#line 1105 "dhcp4_parser.yy" { ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("consistency", c); ctx.leave(); } -#line 2075 "dhcp4_parser.cc" +#line 2085 "dhcp4_parser.cc" break; - case 276: // $@45: %empty -#line 1103 "dhcp4_parser.yy" + case 278: // $@45: %empty +#line 1111 "dhcp4_parser.yy" { ctx.unique("serial-consistency", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2084 "dhcp4_parser.cc" +#line 2094 "dhcp4_parser.cc" break; - case 277: // serial_consistency: "serial-consistency" $@45 ":" "constant string" -#line 1106 "dhcp4_parser.yy" + case 279: // serial_consistency: "serial-consistency" $@45 ":" "constant string" +#line 1114 "dhcp4_parser.yy" { ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("serial-consistency", c); ctx.leave(); } -#line 2094 "dhcp4_parser.cc" +#line 2104 "dhcp4_parser.cc" break; - case 278: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" -#line 1112 "dhcp4_parser.yy" + case 280: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" +#line 1120 "dhcp4_parser.yy" { ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reconnect-tries", n); } -#line 2104 "dhcp4_parser.cc" +#line 2114 "dhcp4_parser.cc" break; - case 279: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" -#line 1118 "dhcp4_parser.yy" + case 281: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" +#line 1126 "dhcp4_parser.yy" { ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reconnect-wait-time", n); } -#line 2114 "dhcp4_parser.cc" +#line 2124 "dhcp4_parser.cc" break; - case 280: // $@46: %empty -#line 1124 "dhcp4_parser.yy" + case 282: // $@46: %empty +#line 1132 "dhcp4_parser.yy" { ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_ON_FAIL); } -#line 2123 "dhcp4_parser.cc" +#line 2133 "dhcp4_parser.cc" break; - case 281: // on_fail: "on-fail" $@46 ":" on_fail_mode -#line 1127 "dhcp4_parser.yy" + case 283: // on_fail: "on-fail" $@46 ":" on_fail_mode +#line 1135 "dhcp4_parser.yy" { ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2132 "dhcp4_parser.cc" +#line 2142 "dhcp4_parser.cc" break; - case 282: // on_fail_mode: "stop-retry-exit" -#line 1132 "dhcp4_parser.yy" + case 284: // on_fail_mode: "stop-retry-exit" +#line 1140 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 2138 "dhcp4_parser.cc" +#line 2148 "dhcp4_parser.cc" break; - case 283: // on_fail_mode: "serve-retry-exit" -#line 1133 "dhcp4_parser.yy" + case 285: // on_fail_mode: "serve-retry-exit" +#line 1141 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 2144 "dhcp4_parser.cc" +#line 2154 "dhcp4_parser.cc" break; - case 284: // on_fail_mode: "serve-retry-continue" -#line 1134 "dhcp4_parser.yy" + case 286: // on_fail_mode: "serve-retry-continue" +#line 1142 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); } -#line 2150 "dhcp4_parser.cc" +#line 2160 "dhcp4_parser.cc" break; - case 285: // max_row_errors: "max-row-errors" ":" "integer" -#line 1137 "dhcp4_parser.yy" + case 287: // max_row_errors: "max-row-errors" ":" "integer" +#line 1145 "dhcp4_parser.yy" { ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-row-errors", n); } -#line 2160 "dhcp4_parser.cc" +#line 2170 "dhcp4_parser.cc" break; - case 286: // $@47: %empty -#line 1143 "dhcp4_parser.yy" + case 288: // $@47: %empty +#line 1151 "dhcp4_parser.yy" { ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2169 "dhcp4_parser.cc" +#line 2179 "dhcp4_parser.cc" break; - case 287: // trust_anchor: "trust-anchor" $@47 ":" "constant string" -#line 1146 "dhcp4_parser.yy" + case 289: // trust_anchor: "trust-anchor" $@47 ":" "constant string" +#line 1154 "dhcp4_parser.yy" { ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("trust-anchor", ca); ctx.leave(); } -#line 2179 "dhcp4_parser.cc" +#line 2189 "dhcp4_parser.cc" break; - case 288: // $@48: %empty -#line 1152 "dhcp4_parser.yy" + case 290: // $@48: %empty +#line 1160 "dhcp4_parser.yy" { ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2188 "dhcp4_parser.cc" +#line 2198 "dhcp4_parser.cc" break; - case 289: // cert_file: "cert-file" $@48 ":" "constant string" -#line 1155 "dhcp4_parser.yy" + case 291: // cert_file: "cert-file" $@48 ":" "constant string" +#line 1163 "dhcp4_parser.yy" { ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cert-file", cert); ctx.leave(); } -#line 2198 "dhcp4_parser.cc" +#line 2208 "dhcp4_parser.cc" break; - case 290: // $@49: %empty -#line 1161 "dhcp4_parser.yy" + case 292: // $@49: %empty +#line 1169 "dhcp4_parser.yy" { ctx.unique("key-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2207 "dhcp4_parser.cc" +#line 2217 "dhcp4_parser.cc" break; - case 291: // key_file: "key-file" $@49 ":" "constant string" -#line 1164 "dhcp4_parser.yy" + case 293: // key_file: "key-file" $@49 ":" "constant string" +#line 1172 "dhcp4_parser.yy" { ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("key-file", key); ctx.leave(); } -#line 2217 "dhcp4_parser.cc" +#line 2227 "dhcp4_parser.cc" break; - case 292: // $@50: %empty -#line 1170 "dhcp4_parser.yy" + case 294: // $@50: %empty +#line 1178 "dhcp4_parser.yy" { ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2226 "dhcp4_parser.cc" +#line 2236 "dhcp4_parser.cc" break; - case 293: // cipher_list: "cipher-list" $@50 ":" "constant string" -#line 1173 "dhcp4_parser.yy" + case 295: // cipher_list: "cipher-list" $@50 ":" "constant string" +#line 1181 "dhcp4_parser.yy" { ElementPtr cl(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cipher-list", cl); ctx.leave(); } -#line 2236 "dhcp4_parser.cc" +#line 2246 "dhcp4_parser.cc" break; - case 294: // $@51: %empty -#line 1179 "dhcp4_parser.yy" + case 296: // $@51: %empty +#line 1187 "dhcp4_parser.yy" { ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2244,73 +2254,73 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS); } -#line 2248 "dhcp4_parser.cc" +#line 2258 "dhcp4_parser.cc" break; - case 295: // host_reservation_identifiers: "host-reservation-identifiers" $@51 ":" "[" host_reservation_identifiers_list "]" -#line 1185 "dhcp4_parser.yy" + case 297: // host_reservation_identifiers: "host-reservation-identifiers" $@51 ":" "[" host_reservation_identifiers_list "]" +#line 1193 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2257 "dhcp4_parser.cc" +#line 2267 "dhcp4_parser.cc" break; - case 298: // host_reservation_identifiers_list: host_reservation_identifiers_list "," -#line 1192 "dhcp4_parser.yy" + case 300: // host_reservation_identifiers_list: host_reservation_identifiers_list "," +#line 1200 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2265 "dhcp4_parser.cc" +#line 2275 "dhcp4_parser.cc" break; - case 304: // duid_id: "duid" -#line 1204 "dhcp4_parser.yy" + case 306: // duid_id: "duid" +#line 1212 "dhcp4_parser.yy" { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2274 "dhcp4_parser.cc" +#line 2284 "dhcp4_parser.cc" break; - case 305: // hw_address_id: "hw-address" -#line 1209 "dhcp4_parser.yy" + case 307: // hw_address_id: "hw-address" +#line 1217 "dhcp4_parser.yy" { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 2283 "dhcp4_parser.cc" +#line 2293 "dhcp4_parser.cc" break; - case 306: // circuit_id: "circuit-id" -#line 1214 "dhcp4_parser.yy" + case 308: // circuit_id: "circuit-id" +#line 1222 "dhcp4_parser.yy" { ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(circuit); } -#line 2292 "dhcp4_parser.cc" +#line 2302 "dhcp4_parser.cc" break; - case 307: // client_id: "client-id" -#line 1219 "dhcp4_parser.yy" + case 309: // client_id: "client-id" +#line 1227 "dhcp4_parser.yy" { ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(client); } -#line 2301 "dhcp4_parser.cc" +#line 2311 "dhcp4_parser.cc" break; - case 308: // flex_id: "flex-id" -#line 1224 "dhcp4_parser.yy" + case 310: // flex_id: "flex-id" +#line 1232 "dhcp4_parser.yy" { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 2310 "dhcp4_parser.cc" +#line 2320 "dhcp4_parser.cc" break; - case 309: // $@52: %empty -#line 1231 "dhcp4_parser.yy" + case 311: // $@52: %empty +#line 1239 "dhcp4_parser.yy" { ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location)); ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2318,60 +2328,60 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(mt); ctx.enter(ctx.DHCP_MULTI_THREADING); } -#line 2322 "dhcp4_parser.cc" +#line 2332 "dhcp4_parser.cc" break; - case 310: // dhcp_multi_threading: "multi-threading" $@52 ":" "{" multi_threading_params "}" -#line 1237 "dhcp4_parser.yy" + case 312: // dhcp_multi_threading: "multi-threading" $@52 ":" "{" multi_threading_params "}" +#line 1245 "dhcp4_parser.yy" { // The enable parameter is required. ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 2333 "dhcp4_parser.cc" +#line 2343 "dhcp4_parser.cc" break; - case 313: // multi_threading_params: multi_threading_params "," -#line 1246 "dhcp4_parser.yy" + case 315: // multi_threading_params: multi_threading_params "," +#line 1254 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2341 "dhcp4_parser.cc" +#line 2351 "dhcp4_parser.cc" break; - case 320: // enable_multi_threading: "enable-multi-threading" ":" "boolean" -#line 1259 "dhcp4_parser.yy" + case 322: // enable_multi_threading: "enable-multi-threading" ":" "boolean" +#line 1267 "dhcp4_parser.yy" { ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-multi-threading", b); } -#line 2351 "dhcp4_parser.cc" +#line 2361 "dhcp4_parser.cc" break; - case 321: // thread_pool_size: "thread-pool-size" ":" "integer" -#line 1265 "dhcp4_parser.yy" + case 323: // thread_pool_size: "thread-pool-size" ":" "integer" +#line 1273 "dhcp4_parser.yy" { ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("thread-pool-size", prf); } -#line 2361 "dhcp4_parser.cc" +#line 2371 "dhcp4_parser.cc" break; - case 322: // packet_queue_size: "packet-queue-size" ":" "integer" -#line 1271 "dhcp4_parser.yy" + case 324: // packet_queue_size: "packet-queue-size" ":" "integer" +#line 1279 "dhcp4_parser.yy" { ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("packet-queue-size", prf); } -#line 2371 "dhcp4_parser.cc" +#line 2381 "dhcp4_parser.cc" break; - case 323: // $@53: %empty -#line 1277 "dhcp4_parser.yy" + case 325: // $@53: %empty +#line 1285 "dhcp4_parser.yy" { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2379,113 +2389,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 2383 "dhcp4_parser.cc" +#line 2393 "dhcp4_parser.cc" break; - case 324: // hooks_libraries: "hooks-libraries" $@53 ":" "[" hooks_libraries_list "]" -#line 1283 "dhcp4_parser.yy" + case 326: // hooks_libraries: "hooks-libraries" $@53 ":" "[" hooks_libraries_list "]" +#line 1291 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2392 "dhcp4_parser.cc" +#line 2402 "dhcp4_parser.cc" break; - case 329: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," -#line 1294 "dhcp4_parser.yy" + case 331: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," +#line 1302 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2400 "dhcp4_parser.cc" +#line 2410 "dhcp4_parser.cc" break; - case 330: // $@54: %empty -#line 1299 "dhcp4_parser.yy" + case 332: // $@54: %empty +#line 1307 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2410 "dhcp4_parser.cc" +#line 2420 "dhcp4_parser.cc" break; - case 331: // hooks_library: "{" $@54 hooks_params "}" -#line 1303 "dhcp4_parser.yy" + case 333: // hooks_library: "{" $@54 hooks_params "}" +#line 1311 "dhcp4_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2420 "dhcp4_parser.cc" +#line 2430 "dhcp4_parser.cc" break; - case 332: // $@55: %empty -#line 1309 "dhcp4_parser.yy" + case 334: // $@55: %empty +#line 1317 "dhcp4_parser.yy" { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2430 "dhcp4_parser.cc" +#line 2440 "dhcp4_parser.cc" break; - case 333: // sub_hooks_library: "{" $@55 hooks_params "}" -#line 1313 "dhcp4_parser.yy" + case 335: // sub_hooks_library: "{" $@55 hooks_params "}" +#line 1321 "dhcp4_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2440 "dhcp4_parser.cc" +#line 2450 "dhcp4_parser.cc" break; - case 336: // hooks_params: hooks_params "," -#line 1321 "dhcp4_parser.yy" + case 338: // hooks_params: hooks_params "," +#line 1329 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2448 "dhcp4_parser.cc" +#line 2458 "dhcp4_parser.cc" break; - case 340: // $@56: %empty -#line 1331 "dhcp4_parser.yy" + case 342: // $@56: %empty +#line 1339 "dhcp4_parser.yy" { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2457 "dhcp4_parser.cc" +#line 2467 "dhcp4_parser.cc" break; - case 341: // library: "library" $@56 ":" "constant string" -#line 1334 "dhcp4_parser.yy" + case 343: // library: "library" $@56 ":" "constant string" +#line 1342 "dhcp4_parser.yy" { ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 2467 "dhcp4_parser.cc" +#line 2477 "dhcp4_parser.cc" break; - case 342: // $@57: %empty -#line 1340 "dhcp4_parser.yy" + case 344: // $@57: %empty +#line 1348 "dhcp4_parser.yy" { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2476 "dhcp4_parser.cc" +#line 2486 "dhcp4_parser.cc" break; - case 343: // parameters: "parameters" $@57 ":" map_value -#line 1343 "dhcp4_parser.yy" + case 345: // parameters: "parameters" $@57 ":" map_value +#line 1351 "dhcp4_parser.yy" { ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2485 "dhcp4_parser.cc" +#line 2495 "dhcp4_parser.cc" break; - case 344: // $@58: %empty -#line 1349 "dhcp4_parser.yy" + case 346: // $@58: %empty +#line 1357 "dhcp4_parser.yy" { ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2493,89 +2503,89 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.EXPIRED_LEASES_PROCESSING); } -#line 2497 "dhcp4_parser.cc" +#line 2507 "dhcp4_parser.cc" break; - case 345: // expired_leases_processing: "expired-leases-processing" $@58 ":" "{" expired_leases_params "}" -#line 1355 "dhcp4_parser.yy" + case 347: // expired_leases_processing: "expired-leases-processing" $@58 ":" "{" expired_leases_params "}" +#line 1363 "dhcp4_parser.yy" { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 2507 "dhcp4_parser.cc" +#line 2517 "dhcp4_parser.cc" break; - case 348: // expired_leases_params: expired_leases_params "," -#line 1363 "dhcp4_parser.yy" + case 350: // expired_leases_params: expired_leases_params "," +#line 1371 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2515 "dhcp4_parser.cc" +#line 2525 "dhcp4_parser.cc" break; - case 355: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" -#line 1376 "dhcp4_parser.yy" + case 357: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" +#line 1384 "dhcp4_parser.yy" { ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reclaim-timer-wait-time", value); } -#line 2525 "dhcp4_parser.cc" +#line 2535 "dhcp4_parser.cc" break; - case 356: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" -#line 1382 "dhcp4_parser.yy" + case 358: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" +#line 1390 "dhcp4_parser.yy" { ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value); } -#line 2535 "dhcp4_parser.cc" +#line 2545 "dhcp4_parser.cc" break; - case 357: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" -#line 1388 "dhcp4_parser.yy" + case 359: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" +#line 1396 "dhcp4_parser.yy" { ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hold-reclaimed-time", value); } -#line 2545 "dhcp4_parser.cc" +#line 2555 "dhcp4_parser.cc" break; - case 358: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" -#line 1394 "dhcp4_parser.yy" + case 360: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" +#line 1402 "dhcp4_parser.yy" { ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-leases", value); } -#line 2555 "dhcp4_parser.cc" +#line 2565 "dhcp4_parser.cc" break; - case 359: // max_reclaim_time: "max-reclaim-time" ":" "integer" -#line 1400 "dhcp4_parser.yy" + case 361: // max_reclaim_time: "max-reclaim-time" ":" "integer" +#line 1408 "dhcp4_parser.yy" { ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-time", value); } -#line 2565 "dhcp4_parser.cc" +#line 2575 "dhcp4_parser.cc" break; - case 360: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" -#line 1406 "dhcp4_parser.yy" + case 362: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" +#line 1414 "dhcp4_parser.yy" { ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("unwarned-reclaim-cycles", value); } -#line 2575 "dhcp4_parser.cc" +#line 2585 "dhcp4_parser.cc" break; - case 361: // $@59: %empty -#line 1415 "dhcp4_parser.yy" + case 363: // $@59: %empty +#line 1423 "dhcp4_parser.yy" { ctx.unique("subnet4", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2583,38 +2593,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SUBNET4); } -#line 2587 "dhcp4_parser.cc" +#line 2597 "dhcp4_parser.cc" break; - case 362: // subnet4_list: "subnet4" $@59 ":" "[" subnet4_list_content "]" -#line 1421 "dhcp4_parser.yy" + case 364: // subnet4_list: "subnet4" $@59 ":" "[" subnet4_list_content "]" +#line 1429 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2596 "dhcp4_parser.cc" +#line 2606 "dhcp4_parser.cc" break; - case 367: // not_empty_subnet4_list: not_empty_subnet4_list "," -#line 1435 "dhcp4_parser.yy" + case 369: // not_empty_subnet4_list: not_empty_subnet4_list "," +#line 1443 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2604 "dhcp4_parser.cc" +#line 2614 "dhcp4_parser.cc" break; - case 368: // $@60: %empty -#line 1444 "dhcp4_parser.yy" + case 370: // $@60: %empty +#line 1452 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2614 "dhcp4_parser.cc" +#line 2624 "dhcp4_parser.cc" break; - case 369: // subnet4: "{" $@60 subnet4_params "}" -#line 1448 "dhcp4_parser.yy" + case 371: // subnet4: "{" $@60 subnet4_params "}" +#line 1456 "dhcp4_parser.yy" { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. @@ -2636,153 +2646,153 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2640 "dhcp4_parser.cc" +#line 2650 "dhcp4_parser.cc" break; - case 370: // $@61: %empty -#line 1470 "dhcp4_parser.yy" + case 372: // $@61: %empty +#line 1478 "dhcp4_parser.yy" { // Parse the subnet4 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2650 "dhcp4_parser.cc" +#line 2660 "dhcp4_parser.cc" break; - case 371: // sub_subnet4: "{" $@61 subnet4_params "}" -#line 1474 "dhcp4_parser.yy" + case 373: // sub_subnet4: "{" $@61 subnet4_params "}" +#line 1482 "dhcp4_parser.yy" { // The subnet subnet4 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2660 "dhcp4_parser.cc" +#line 2670 "dhcp4_parser.cc" break; - case 374: // subnet4_params: subnet4_params "," -#line 1483 "dhcp4_parser.yy" + case 376: // subnet4_params: subnet4_params "," +#line 1491 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2668 "dhcp4_parser.cc" +#line 2678 "dhcp4_parser.cc" break; - case 420: // $@62: %empty -#line 1536 "dhcp4_parser.yy" + case 422: // $@62: %empty +#line 1544 "dhcp4_parser.yy" { ctx.unique("subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2677 "dhcp4_parser.cc" +#line 2687 "dhcp4_parser.cc" break; - case 421: // subnet: "subnet" $@62 ":" "constant string" -#line 1539 "dhcp4_parser.yy" + case 423: // subnet: "subnet" $@62 ":" "constant string" +#line 1547 "dhcp4_parser.yy" { ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet", subnet); ctx.leave(); } -#line 2687 "dhcp4_parser.cc" +#line 2697 "dhcp4_parser.cc" break; - case 422: // $@63: %empty -#line 1545 "dhcp4_parser.yy" + case 424: // $@63: %empty +#line 1553 "dhcp4_parser.yy" { ctx.unique("4o6-interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2696 "dhcp4_parser.cc" +#line 2706 "dhcp4_parser.cc" break; - case 423: // subnet_4o6_interface: "4o6-interface" $@63 ":" "constant string" -#line 1548 "dhcp4_parser.yy" + case 425: // subnet_4o6_interface: "4o6-interface" $@63 ":" "constant string" +#line 1556 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-interface", iface); ctx.leave(); } -#line 2706 "dhcp4_parser.cc" +#line 2716 "dhcp4_parser.cc" break; - case 424: // $@64: %empty -#line 1554 "dhcp4_parser.yy" + case 426: // $@64: %empty +#line 1562 "dhcp4_parser.yy" { ctx.unique("4o6-interface-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2715 "dhcp4_parser.cc" +#line 2725 "dhcp4_parser.cc" break; - case 425: // subnet_4o6_interface_id: "4o6-interface-id" $@64 ":" "constant string" -#line 1557 "dhcp4_parser.yy" + case 427: // subnet_4o6_interface_id: "4o6-interface-id" $@64 ":" "constant string" +#line 1565 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-interface-id", iface); ctx.leave(); } -#line 2725 "dhcp4_parser.cc" +#line 2735 "dhcp4_parser.cc" break; - case 426: // $@65: %empty -#line 1563 "dhcp4_parser.yy" + case 428: // $@65: %empty +#line 1571 "dhcp4_parser.yy" { ctx.unique("4o6-subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2734 "dhcp4_parser.cc" +#line 2744 "dhcp4_parser.cc" break; - case 427: // subnet_4o6_subnet: "4o6-subnet" $@65 ":" "constant string" -#line 1566 "dhcp4_parser.yy" + case 429: // subnet_4o6_subnet: "4o6-subnet" $@65 ":" "constant string" +#line 1574 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-subnet", iface); ctx.leave(); } -#line 2744 "dhcp4_parser.cc" +#line 2754 "dhcp4_parser.cc" break; - case 428: // $@66: %empty -#line 1572 "dhcp4_parser.yy" + case 430: // $@66: %empty +#line 1580 "dhcp4_parser.yy" { ctx.unique("interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2753 "dhcp4_parser.cc" +#line 2763 "dhcp4_parser.cc" break; - case 429: // interface: "interface" $@66 ":" "constant string" -#line 1575 "dhcp4_parser.yy" + case 431: // interface: "interface" $@66 ":" "constant string" +#line 1583 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface", iface); ctx.leave(); } -#line 2763 "dhcp4_parser.cc" +#line 2773 "dhcp4_parser.cc" break; - case 430: // $@67: %empty -#line 1581 "dhcp4_parser.yy" + case 432: // $@67: %empty +#line 1589 "dhcp4_parser.yy" { ctx.unique("client-class", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2772 "dhcp4_parser.cc" +#line 2782 "dhcp4_parser.cc" break; - case 431: // client_class: "client-class" $@67 ":" "constant string" -#line 1584 "dhcp4_parser.yy" + case 433: // client_class: "client-class" $@67 ":" "constant string" +#line 1592 "dhcp4_parser.yy" { ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-class", cls); ctx.leave(); } -#line 2782 "dhcp4_parser.cc" +#line 2792 "dhcp4_parser.cc" break; - case 432: // $@68: %empty -#line 1590 "dhcp4_parser.yy" + case 434: // $@68: %empty +#line 1598 "dhcp4_parser.yy" { ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2790,102 +2800,102 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2794 "dhcp4_parser.cc" +#line 2804 "dhcp4_parser.cc" break; - case 433: // require_client_classes: "require-client-classes" $@68 ":" list_strings -#line 1596 "dhcp4_parser.yy" + case 435: // require_client_classes: "require-client-classes" $@68 ":" list_strings +#line 1604 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2803 "dhcp4_parser.cc" +#line 2813 "dhcp4_parser.cc" break; - case 434: // reservations_global: "reservations-global" ":" "boolean" -#line 1601 "dhcp4_parser.yy" + case 436: // reservations_global: "reservations-global" ":" "boolean" +#line 1609 "dhcp4_parser.yy" { ctx.unique("reservations-global", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-global", b); } -#line 2813 "dhcp4_parser.cc" +#line 2823 "dhcp4_parser.cc" break; - case 435: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" -#line 1607 "dhcp4_parser.yy" + case 437: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" +#line 1615 "dhcp4_parser.yy" { ctx.unique("reservations-in-subnet", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-in-subnet", b); } -#line 2823 "dhcp4_parser.cc" +#line 2833 "dhcp4_parser.cc" break; - case 436: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" -#line 1613 "dhcp4_parser.yy" + case 438: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" +#line 1621 "dhcp4_parser.yy" { ctx.unique("reservations-out-of-pool", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-out-of-pool", b); } -#line 2833 "dhcp4_parser.cc" +#line 2843 "dhcp4_parser.cc" break; - case 437: // $@69: %empty -#line 1619 "dhcp4_parser.yy" + case 439: // $@69: %empty +#line 1627 "dhcp4_parser.yy" { ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.RESERVATION_MODE); } -#line 2842 "dhcp4_parser.cc" +#line 2852 "dhcp4_parser.cc" break; - case 438: // reservation_mode: "reservation-mode" $@69 ":" hr_mode -#line 1622 "dhcp4_parser.yy" + case 440: // reservation_mode: "reservation-mode" $@69 ":" hr_mode +#line 1630 "dhcp4_parser.yy" { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2851 "dhcp4_parser.cc" +#line 2861 "dhcp4_parser.cc" break; - case 439: // hr_mode: "disabled" -#line 1627 "dhcp4_parser.yy" + case 441: // hr_mode: "disabled" +#line 1635 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 2857 "dhcp4_parser.cc" +#line 2867 "dhcp4_parser.cc" break; - case 440: // hr_mode: "out-of-pool" -#line 1628 "dhcp4_parser.yy" + case 442: // hr_mode: "out-of-pool" +#line 1636 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 2863 "dhcp4_parser.cc" +#line 2873 "dhcp4_parser.cc" break; - case 441: // hr_mode: "global" -#line 1629 "dhcp4_parser.yy" + case 443: // hr_mode: "global" +#line 1637 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 2869 "dhcp4_parser.cc" +#line 2879 "dhcp4_parser.cc" break; - case 442: // hr_mode: "all" -#line 1630 "dhcp4_parser.yy" + case 444: // hr_mode: "all" +#line 1638 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 2875 "dhcp4_parser.cc" +#line 2885 "dhcp4_parser.cc" break; - case 443: // id: "id" ":" "integer" -#line 1633 "dhcp4_parser.yy" + case 445: // id: "id" ":" "integer" +#line 1641 "dhcp4_parser.yy" { ctx.unique("id", ctx.loc2pos(yystack_[2].location)); ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("id", id); } -#line 2885 "dhcp4_parser.cc" +#line 2895 "dhcp4_parser.cc" break; - case 444: // $@70: %empty -#line 1641 "dhcp4_parser.yy" + case 446: // $@70: %empty +#line 1649 "dhcp4_parser.yy" { ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2893,54 +2903,54 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SHARED_NETWORK); } -#line 2897 "dhcp4_parser.cc" +#line 2907 "dhcp4_parser.cc" break; - case 445: // shared_networks: "shared-networks" $@70 ":" "[" shared_networks_content "]" -#line 1647 "dhcp4_parser.yy" + case 447: // shared_networks: "shared-networks" $@70 ":" "[" shared_networks_content "]" +#line 1655 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2906 "dhcp4_parser.cc" +#line 2916 "dhcp4_parser.cc" break; - case 450: // shared_networks_list: shared_networks_list "," -#line 1660 "dhcp4_parser.yy" + case 452: // shared_networks_list: shared_networks_list "," +#line 1668 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2914 "dhcp4_parser.cc" +#line 2924 "dhcp4_parser.cc" break; - case 451: // $@71: %empty -#line 1665 "dhcp4_parser.yy" + case 453: // $@71: %empty +#line 1673 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2924 "dhcp4_parser.cc" +#line 2934 "dhcp4_parser.cc" break; - case 452: // shared_network: "{" $@71 shared_network_params "}" -#line 1669 "dhcp4_parser.yy" + case 454: // shared_network: "{" $@71 shared_network_params "}" +#line 1677 "dhcp4_parser.yy" { ctx.stack_.pop_back(); } -#line 2932 "dhcp4_parser.cc" +#line 2942 "dhcp4_parser.cc" break; - case 455: // shared_network_params: shared_network_params "," -#line 1675 "dhcp4_parser.yy" + case 457: // shared_network_params: shared_network_params "," +#line 1683 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2940 "dhcp4_parser.cc" +#line 2950 "dhcp4_parser.cc" break; - case 496: // $@72: %empty -#line 1726 "dhcp4_parser.yy" + case 498: // $@72: %empty +#line 1734 "dhcp4_parser.yy" { ctx.unique("option-def", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2948,55 +2958,55 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DEF); } -#line 2952 "dhcp4_parser.cc" +#line 2962 "dhcp4_parser.cc" break; - case 497: // option_def_list: "option-def" $@72 ":" "[" option_def_list_content "]" -#line 1732 "dhcp4_parser.yy" + case 499: // option_def_list: "option-def" $@72 ":" "[" option_def_list_content "]" +#line 1740 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2961 "dhcp4_parser.cc" +#line 2971 "dhcp4_parser.cc" break; - case 498: // $@73: %empty -#line 1740 "dhcp4_parser.yy" + case 500: // $@73: %empty +#line 1748 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2970 "dhcp4_parser.cc" +#line 2980 "dhcp4_parser.cc" break; - case 499: // sub_option_def_list: "{" $@73 option_def_list "}" -#line 1743 "dhcp4_parser.yy" + case 501: // sub_option_def_list: "{" $@73 option_def_list "}" +#line 1751 "dhcp4_parser.yy" { // parsing completed } -#line 2978 "dhcp4_parser.cc" +#line 2988 "dhcp4_parser.cc" break; - case 504: // not_empty_option_def_list: not_empty_option_def_list "," -#line 1755 "dhcp4_parser.yy" + case 506: // not_empty_option_def_list: not_empty_option_def_list "," +#line 1763 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2986 "dhcp4_parser.cc" +#line 2996 "dhcp4_parser.cc" break; - case 505: // $@74: %empty -#line 1762 "dhcp4_parser.yy" + case 507: // $@74: %empty +#line 1770 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2996 "dhcp4_parser.cc" +#line 3006 "dhcp4_parser.cc" break; - case 506: // option_def_entry: "{" $@74 option_def_params "}" -#line 1766 "dhcp4_parser.yy" + case 508: // option_def_entry: "{" $@74 option_def_params "}" +#line 1774 "dhcp4_parser.yy" { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3004,21 +3014,21 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3008 "dhcp4_parser.cc" +#line 3018 "dhcp4_parser.cc" break; - case 507: // $@75: %empty -#line 1777 "dhcp4_parser.yy" + case 509: // $@75: %empty +#line 1785 "dhcp4_parser.yy" { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3018 "dhcp4_parser.cc" +#line 3028 "dhcp4_parser.cc" break; - case 508: // sub_option_def: "{" $@75 option_def_params "}" -#line 1781 "dhcp4_parser.yy" + case 510: // sub_option_def: "{" $@75 option_def_params "}" +#line 1789 "dhcp4_parser.yy" { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3026,115 +3036,115 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3030 "dhcp4_parser.cc" +#line 3040 "dhcp4_parser.cc" break; - case 513: // not_empty_option_def_params: not_empty_option_def_params "," -#line 1797 "dhcp4_parser.yy" + case 515: // not_empty_option_def_params: not_empty_option_def_params "," +#line 1805 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3038 "dhcp4_parser.cc" +#line 3048 "dhcp4_parser.cc" break; - case 525: // code: "code" ":" "integer" -#line 1816 "dhcp4_parser.yy" + case 527: // code: "code" ":" "integer" +#line 1824 "dhcp4_parser.yy" { ctx.unique("code", ctx.loc2pos(yystack_[2].location)); ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("code", code); } -#line 3048 "dhcp4_parser.cc" +#line 3058 "dhcp4_parser.cc" break; - case 527: // $@76: %empty -#line 1824 "dhcp4_parser.yy" + case 529: // $@76: %empty +#line 1832 "dhcp4_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3057 "dhcp4_parser.cc" +#line 3067 "dhcp4_parser.cc" break; - case 528: // option_def_type: "type" $@76 ":" "constant string" -#line 1827 "dhcp4_parser.yy" + case 530: // option_def_type: "type" $@76 ":" "constant string" +#line 1835 "dhcp4_parser.yy" { ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", prf); ctx.leave(); } -#line 3067 "dhcp4_parser.cc" +#line 3077 "dhcp4_parser.cc" break; - case 529: // $@77: %empty -#line 1833 "dhcp4_parser.yy" + case 531: // $@77: %empty +#line 1841 "dhcp4_parser.yy" { ctx.unique("record-types", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3076 "dhcp4_parser.cc" +#line 3086 "dhcp4_parser.cc" break; - case 530: // option_def_record_types: "record-types" $@77 ":" "constant string" -#line 1836 "dhcp4_parser.yy" + case 532: // option_def_record_types: "record-types" $@77 ":" "constant string" +#line 1844 "dhcp4_parser.yy" { ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("record-types", rtypes); ctx.leave(); } -#line 3086 "dhcp4_parser.cc" +#line 3096 "dhcp4_parser.cc" break; - case 531: // $@78: %empty -#line 1842 "dhcp4_parser.yy" + case 533: // $@78: %empty +#line 1850 "dhcp4_parser.yy" { ctx.unique("space", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3095 "dhcp4_parser.cc" +#line 3105 "dhcp4_parser.cc" break; - case 532: // space: "space" $@78 ":" "constant string" -#line 1845 "dhcp4_parser.yy" + case 534: // space: "space" $@78 ":" "constant string" +#line 1853 "dhcp4_parser.yy" { ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("space", space); ctx.leave(); } -#line 3105 "dhcp4_parser.cc" +#line 3115 "dhcp4_parser.cc" break; - case 534: // $@79: %empty -#line 1853 "dhcp4_parser.yy" + case 536: // $@79: %empty +#line 1861 "dhcp4_parser.yy" { ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3114 "dhcp4_parser.cc" +#line 3124 "dhcp4_parser.cc" break; - case 535: // option_def_encapsulate: "encapsulate" $@79 ":" "constant string" -#line 1856 "dhcp4_parser.yy" + case 537: // option_def_encapsulate: "encapsulate" $@79 ":" "constant string" +#line 1864 "dhcp4_parser.yy" { ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("encapsulate", encap); ctx.leave(); } -#line 3124 "dhcp4_parser.cc" +#line 3134 "dhcp4_parser.cc" break; - case 536: // option_def_array: "array" ":" "boolean" -#line 1862 "dhcp4_parser.yy" + case 538: // option_def_array: "array" ":" "boolean" +#line 1870 "dhcp4_parser.yy" { ctx.unique("array", ctx.loc2pos(yystack_[2].location)); ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("array", array); } -#line 3134 "dhcp4_parser.cc" +#line 3144 "dhcp4_parser.cc" break; - case 537: // $@80: %empty -#line 1872 "dhcp4_parser.yy" + case 539: // $@80: %empty +#line 1880 "dhcp4_parser.yy" { ctx.unique("option-data", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3142,113 +3152,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DATA); } -#line 3146 "dhcp4_parser.cc" +#line 3156 "dhcp4_parser.cc" break; - case 538: // option_data_list: "option-data" $@80 ":" "[" option_data_list_content "]" -#line 1878 "dhcp4_parser.yy" + case 540: // option_data_list: "option-data" $@80 ":" "[" option_data_list_content "]" +#line 1886 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3155 "dhcp4_parser.cc" +#line 3165 "dhcp4_parser.cc" break; - case 543: // not_empty_option_data_list: not_empty_option_data_list "," -#line 1893 "dhcp4_parser.yy" + case 545: // not_empty_option_data_list: not_empty_option_data_list "," +#line 1901 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3163 "dhcp4_parser.cc" +#line 3173 "dhcp4_parser.cc" break; - case 544: // $@81: %empty -#line 1900 "dhcp4_parser.yy" + case 546: // $@81: %empty +#line 1908 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3173 "dhcp4_parser.cc" +#line 3183 "dhcp4_parser.cc" break; - case 545: // option_data_entry: "{" $@81 option_data_params "}" -#line 1904 "dhcp4_parser.yy" + case 547: // option_data_entry: "{" $@81 option_data_params "}" +#line 1912 "dhcp4_parser.yy" { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 3182 "dhcp4_parser.cc" +#line 3192 "dhcp4_parser.cc" break; - case 546: // $@82: %empty -#line 1912 "dhcp4_parser.yy" + case 548: // $@82: %empty +#line 1920 "dhcp4_parser.yy" { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3192 "dhcp4_parser.cc" +#line 3202 "dhcp4_parser.cc" break; - case 547: // sub_option_data: "{" $@82 option_data_params "}" -#line 1916 "dhcp4_parser.yy" + case 549: // sub_option_data: "{" $@82 option_data_params "}" +#line 1924 "dhcp4_parser.yy" { /// @todo: the code or name parameters are required. // parsing completed } -#line 3201 "dhcp4_parser.cc" +#line 3211 "dhcp4_parser.cc" break; - case 552: // not_empty_option_data_params: not_empty_option_data_params "," -#line 1932 "dhcp4_parser.yy" + case 554: // not_empty_option_data_params: not_empty_option_data_params "," +#line 1940 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3209 "dhcp4_parser.cc" +#line 3219 "dhcp4_parser.cc" break; - case 563: // $@83: %empty -#line 1952 "dhcp4_parser.yy" + case 565: // $@83: %empty +#line 1960 "dhcp4_parser.yy" { ctx.unique("data", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3218 "dhcp4_parser.cc" +#line 3228 "dhcp4_parser.cc" break; - case 564: // option_data_data: "data" $@83 ":" "constant string" -#line 1955 "dhcp4_parser.yy" + case 566: // option_data_data: "data" $@83 ":" "constant string" +#line 1963 "dhcp4_parser.yy" { ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data", data); ctx.leave(); } -#line 3228 "dhcp4_parser.cc" +#line 3238 "dhcp4_parser.cc" break; - case 567: // option_data_csv_format: "csv-format" ":" "boolean" -#line 1965 "dhcp4_parser.yy" + case 569: // option_data_csv_format: "csv-format" ":" "boolean" +#line 1973 "dhcp4_parser.yy" { ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location)); ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", space); } -#line 3238 "dhcp4_parser.cc" +#line 3248 "dhcp4_parser.cc" break; - case 568: // option_data_always_send: "always-send" ":" "boolean" -#line 1971 "dhcp4_parser.yy" + case 570: // option_data_always_send: "always-send" ":" "boolean" +#line 1979 "dhcp4_parser.yy" { ctx.unique("always-send", ctx.loc2pos(yystack_[2].location)); ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-send", persist); } -#line 3248 "dhcp4_parser.cc" +#line 3258 "dhcp4_parser.cc" break; - case 569: // $@84: %empty -#line 1980 "dhcp4_parser.yy" + case 571: // $@84: %empty +#line 1988 "dhcp4_parser.yy" { ctx.unique("pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3256,103 +3266,103 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.POOLS); } -#line 3260 "dhcp4_parser.cc" +#line 3270 "dhcp4_parser.cc" break; - case 570: // pools_list: "pools" $@84 ":" "[" pools_list_content "]" -#line 1986 "dhcp4_parser.yy" + case 572: // pools_list: "pools" $@84 ":" "[" pools_list_content "]" +#line 1994 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3269 "dhcp4_parser.cc" +#line 3279 "dhcp4_parser.cc" break; - case 575: // not_empty_pools_list: not_empty_pools_list "," -#line 1999 "dhcp4_parser.yy" + case 577: // not_empty_pools_list: not_empty_pools_list "," +#line 2007 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3277 "dhcp4_parser.cc" +#line 3287 "dhcp4_parser.cc" break; - case 576: // $@85: %empty -#line 2004 "dhcp4_parser.yy" + case 578: // $@85: %empty +#line 2012 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3287 "dhcp4_parser.cc" +#line 3297 "dhcp4_parser.cc" break; - case 577: // pool_list_entry: "{" $@85 pool_params "}" -#line 2008 "dhcp4_parser.yy" + case 579: // pool_list_entry: "{" $@85 pool_params "}" +#line 2016 "dhcp4_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3297 "dhcp4_parser.cc" +#line 3307 "dhcp4_parser.cc" break; - case 578: // $@86: %empty -#line 2014 "dhcp4_parser.yy" + case 580: // $@86: %empty +#line 2022 "dhcp4_parser.yy" { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3307 "dhcp4_parser.cc" +#line 3317 "dhcp4_parser.cc" break; - case 579: // sub_pool4: "{" $@86 pool_params "}" -#line 2018 "dhcp4_parser.yy" + case 581: // sub_pool4: "{" $@86 pool_params "}" +#line 2026 "dhcp4_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3317 "dhcp4_parser.cc" +#line 3327 "dhcp4_parser.cc" break; - case 582: // pool_params: pool_params "," -#line 2026 "dhcp4_parser.yy" + case 584: // pool_params: pool_params "," +#line 2034 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3325 "dhcp4_parser.cc" +#line 3335 "dhcp4_parser.cc" break; - case 590: // $@87: %empty -#line 2040 "dhcp4_parser.yy" + case 592: // $@87: %empty +#line 2048 "dhcp4_parser.yy" { ctx.unique("pool", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3334 "dhcp4_parser.cc" +#line 3344 "dhcp4_parser.cc" break; - case 591: // pool_entry: "pool" $@87 ":" "constant string" -#line 2043 "dhcp4_parser.yy" + case 593: // pool_entry: "pool" $@87 ":" "constant string" +#line 2051 "dhcp4_parser.yy" { ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool", pool); ctx.leave(); } -#line 3344 "dhcp4_parser.cc" +#line 3354 "dhcp4_parser.cc" break; - case 592: // $@88: %empty -#line 2049 "dhcp4_parser.yy" + case 594: // $@88: %empty +#line 2057 "dhcp4_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3352 "dhcp4_parser.cc" +#line 3362 "dhcp4_parser.cc" break; - case 593: // user_context: "user-context" $@88 ":" map_value -#line 2051 "dhcp4_parser.yy" + case 595: // user_context: "user-context" $@88 ":" map_value +#line 2059 "dhcp4_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); @@ -3375,19 +3385,19 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3379 "dhcp4_parser.cc" +#line 3389 "dhcp4_parser.cc" break; - case 594: // $@89: %empty -#line 2074 "dhcp4_parser.yy" + case 596: // $@89: %empty +#line 2082 "dhcp4_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3387 "dhcp4_parser.cc" +#line 3397 "dhcp4_parser.cc" break; - case 595: // comment: "comment" $@89 ":" "constant string" -#line 2076 "dhcp4_parser.yy" + case 597: // comment: "comment" $@89 ":" "constant string" +#line 2084 "dhcp4_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -3412,11 +3422,11 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3416 "dhcp4_parser.cc" +#line 3426 "dhcp4_parser.cc" break; - case 596: // $@90: %empty -#line 2104 "dhcp4_parser.yy" + case 598: // $@90: %empty +#line 2112 "dhcp4_parser.yy" { ctx.unique("reservations", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3424,150 +3434,150 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.RESERVATIONS); } -#line 3428 "dhcp4_parser.cc" +#line 3438 "dhcp4_parser.cc" break; - case 597: // reservations: "reservations" $@90 ":" "[" reservations_list "]" -#line 2110 "dhcp4_parser.yy" + case 599: // reservations: "reservations" $@90 ":" "[" reservations_list "]" +#line 2118 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3437 "dhcp4_parser.cc" +#line 3447 "dhcp4_parser.cc" break; - case 602: // not_empty_reservations_list: not_empty_reservations_list "," -#line 2121 "dhcp4_parser.yy" + case 604: // not_empty_reservations_list: not_empty_reservations_list "," +#line 2129 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3445 "dhcp4_parser.cc" +#line 3455 "dhcp4_parser.cc" break; - case 603: // $@91: %empty -#line 2126 "dhcp4_parser.yy" + case 605: // $@91: %empty +#line 2134 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3455 "dhcp4_parser.cc" +#line 3465 "dhcp4_parser.cc" break; - case 604: // reservation: "{" $@91 reservation_params "}" -#line 2130 "dhcp4_parser.yy" + case 606: // reservation: "{" $@91 reservation_params "}" +#line 2138 "dhcp4_parser.yy" { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 3464 "dhcp4_parser.cc" +#line 3474 "dhcp4_parser.cc" break; - case 605: // $@92: %empty -#line 2135 "dhcp4_parser.yy" + case 607: // $@92: %empty +#line 2143 "dhcp4_parser.yy" { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3474 "dhcp4_parser.cc" +#line 3484 "dhcp4_parser.cc" break; - case 606: // sub_reservation: "{" $@92 reservation_params "}" -#line 2139 "dhcp4_parser.yy" + case 608: // sub_reservation: "{" $@92 reservation_params "}" +#line 2147 "dhcp4_parser.yy" { /// @todo: an identifier parameter is required. // parsing completed } -#line 3483 "dhcp4_parser.cc" +#line 3493 "dhcp4_parser.cc" break; - case 611: // not_empty_reservation_params: not_empty_reservation_params "," -#line 2150 "dhcp4_parser.yy" + case 613: // not_empty_reservation_params: not_empty_reservation_params "," +#line 2158 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3491 "dhcp4_parser.cc" +#line 3501 "dhcp4_parser.cc" break; - case 627: // $@93: %empty -#line 2173 "dhcp4_parser.yy" + case 629: // $@93: %empty +#line 2181 "dhcp4_parser.yy" { ctx.unique("next-server", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3500 "dhcp4_parser.cc" +#line 3510 "dhcp4_parser.cc" break; - case 628: // next_server: "next-server" $@93 ":" "constant string" -#line 2176 "dhcp4_parser.yy" + case 630: // next_server: "next-server" $@93 ":" "constant string" +#line 2184 "dhcp4_parser.yy" { ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("next-server", next_server); ctx.leave(); } -#line 3510 "dhcp4_parser.cc" +#line 3520 "dhcp4_parser.cc" break; - case 629: // $@94: %empty -#line 2182 "dhcp4_parser.yy" + case 631: // $@94: %empty +#line 2190 "dhcp4_parser.yy" { ctx.unique("server-hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3519 "dhcp4_parser.cc" +#line 3529 "dhcp4_parser.cc" break; - case 630: // server_hostname: "server-hostname" $@94 ":" "constant string" -#line 2185 "dhcp4_parser.yy" + case 632: // server_hostname: "server-hostname" $@94 ":" "constant string" +#line 2193 "dhcp4_parser.yy" { ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-hostname", srv); ctx.leave(); } -#line 3529 "dhcp4_parser.cc" +#line 3539 "dhcp4_parser.cc" break; - case 631: // $@95: %empty -#line 2191 "dhcp4_parser.yy" + case 633: // $@95: %empty +#line 2199 "dhcp4_parser.yy" { ctx.unique("boot-file-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3538 "dhcp4_parser.cc" +#line 3548 "dhcp4_parser.cc" break; - case 632: // boot_file_name: "boot-file-name" $@95 ":" "constant string" -#line 2194 "dhcp4_parser.yy" + case 634: // boot_file_name: "boot-file-name" $@95 ":" "constant string" +#line 2202 "dhcp4_parser.yy" { ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("boot-file-name", bootfile); ctx.leave(); } -#line 3548 "dhcp4_parser.cc" +#line 3558 "dhcp4_parser.cc" break; - case 633: // $@96: %empty -#line 2200 "dhcp4_parser.yy" + case 635: // $@96: %empty +#line 2208 "dhcp4_parser.yy" { ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3557 "dhcp4_parser.cc" +#line 3567 "dhcp4_parser.cc" break; - case 634: // ip_address: "ip-address" $@96 ":" "constant string" -#line 2203 "dhcp4_parser.yy" + case 636: // ip_address: "ip-address" $@96 ":" "constant string" +#line 2211 "dhcp4_parser.yy" { ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", addr); ctx.leave(); } -#line 3567 "dhcp4_parser.cc" +#line 3577 "dhcp4_parser.cc" break; - case 635: // $@97: %empty -#line 2209 "dhcp4_parser.yy" + case 637: // $@97: %empty +#line 2217 "dhcp4_parser.yy" { ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3575,134 +3585,134 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3579 "dhcp4_parser.cc" +#line 3589 "dhcp4_parser.cc" break; - case 636: // ip_addresses: "ip-addresses" $@97 ":" list_strings -#line 2215 "dhcp4_parser.yy" + case 638: // ip_addresses: "ip-addresses" $@97 ":" list_strings +#line 2223 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3588 "dhcp4_parser.cc" +#line 3598 "dhcp4_parser.cc" break; - case 637: // $@98: %empty -#line 2220 "dhcp4_parser.yy" + case 639: // $@98: %empty +#line 2228 "dhcp4_parser.yy" { ctx.unique("duid", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3597 "dhcp4_parser.cc" +#line 3607 "dhcp4_parser.cc" break; - case 638: // duid: "duid" $@98 ":" "constant string" -#line 2223 "dhcp4_parser.yy" + case 640: // duid: "duid" $@98 ":" "constant string" +#line 2231 "dhcp4_parser.yy" { ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("duid", d); ctx.leave(); } -#line 3607 "dhcp4_parser.cc" +#line 3617 "dhcp4_parser.cc" break; - case 639: // $@99: %empty -#line 2229 "dhcp4_parser.yy" + case 641: // $@99: %empty +#line 2237 "dhcp4_parser.yy" { ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3616 "dhcp4_parser.cc" +#line 3626 "dhcp4_parser.cc" break; - case 640: // hw_address: "hw-address" $@99 ":" "constant string" -#line 2232 "dhcp4_parser.yy" + case 642: // hw_address: "hw-address" $@99 ":" "constant string" +#line 2240 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hw-address", hw); ctx.leave(); } -#line 3626 "dhcp4_parser.cc" +#line 3636 "dhcp4_parser.cc" break; - case 641: // $@100: %empty -#line 2238 "dhcp4_parser.yy" + case 643: // $@100: %empty +#line 2246 "dhcp4_parser.yy" { ctx.unique("client-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3635 "dhcp4_parser.cc" +#line 3645 "dhcp4_parser.cc" break; - case 642: // client_id_value: "client-id" $@100 ":" "constant string" -#line 2241 "dhcp4_parser.yy" + case 644: // client_id_value: "client-id" $@100 ":" "constant string" +#line 2249 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-id", hw); ctx.leave(); } -#line 3645 "dhcp4_parser.cc" +#line 3655 "dhcp4_parser.cc" break; - case 643: // $@101: %empty -#line 2247 "dhcp4_parser.yy" + case 645: // $@101: %empty +#line 2255 "dhcp4_parser.yy" { ctx.unique("circuit-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3654 "dhcp4_parser.cc" +#line 3664 "dhcp4_parser.cc" break; - case 644: // circuit_id_value: "circuit-id" $@101 ":" "constant string" -#line 2250 "dhcp4_parser.yy" + case 646: // circuit_id_value: "circuit-id" $@101 ":" "constant string" +#line 2258 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("circuit-id", hw); ctx.leave(); } -#line 3664 "dhcp4_parser.cc" +#line 3674 "dhcp4_parser.cc" break; - case 645: // $@102: %empty -#line 2256 "dhcp4_parser.yy" + case 647: // $@102: %empty +#line 2264 "dhcp4_parser.yy" { ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3673 "dhcp4_parser.cc" +#line 3683 "dhcp4_parser.cc" break; - case 646: // flex_id_value: "flex-id" $@102 ":" "constant string" -#line 2259 "dhcp4_parser.yy" + case 648: // flex_id_value: "flex-id" $@102 ":" "constant string" +#line 2267 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flex-id", hw); ctx.leave(); } -#line 3683 "dhcp4_parser.cc" +#line 3693 "dhcp4_parser.cc" break; - case 647: // $@103: %empty -#line 2265 "dhcp4_parser.yy" + case 649: // $@103: %empty +#line 2273 "dhcp4_parser.yy" { ctx.unique("hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3692 "dhcp4_parser.cc" +#line 3702 "dhcp4_parser.cc" break; - case 648: // hostname: "hostname" $@103 ":" "constant string" -#line 2268 "dhcp4_parser.yy" + case 650: // hostname: "hostname" $@103 ":" "constant string" +#line 2276 "dhcp4_parser.yy" { ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname", host); ctx.leave(); } -#line 3702 "dhcp4_parser.cc" +#line 3712 "dhcp4_parser.cc" break; - case 649: // $@104: %empty -#line 2274 "dhcp4_parser.yy" + case 651: // $@104: %empty +#line 2282 "dhcp4_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3710,20 +3720,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 3714 "dhcp4_parser.cc" +#line 3724 "dhcp4_parser.cc" break; - case 650: // reservation_client_classes: "client-classes" $@104 ":" list_strings -#line 2280 "dhcp4_parser.yy" + case 652: // reservation_client_classes: "client-classes" $@104 ":" list_strings +#line 2288 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3723 "dhcp4_parser.cc" +#line 3733 "dhcp4_parser.cc" break; - case 651: // $@105: %empty -#line 2288 "dhcp4_parser.yy" + case 653: // $@105: %empty +#line 2296 "dhcp4_parser.yy" { ctx.unique("relay", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3731,20 +3741,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.RELAY); } -#line 3735 "dhcp4_parser.cc" +#line 3745 "dhcp4_parser.cc" break; - case 652: // relay: "relay" $@105 ":" "{" relay_map "}" -#line 2294 "dhcp4_parser.yy" + case 654: // relay: "relay" $@105 ":" "{" relay_map "}" +#line 2302 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3744 "dhcp4_parser.cc" +#line 3754 "dhcp4_parser.cc" break; - case 655: // $@106: %empty -#line 2306 "dhcp4_parser.yy" + case 657: // $@106: %empty +#line 2314 "dhcp4_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3752,95 +3762,95 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CLIENT_CLASSES); } -#line 3756 "dhcp4_parser.cc" +#line 3766 "dhcp4_parser.cc" break; - case 656: // client_classes: "client-classes" $@106 ":" "[" client_classes_list "]" -#line 2312 "dhcp4_parser.yy" + case 658: // client_classes: "client-classes" $@106 ":" "[" client_classes_list "]" +#line 2320 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3765 "dhcp4_parser.cc" +#line 3775 "dhcp4_parser.cc" break; - case 659: // client_classes_list: client_classes_list "," -#line 2319 "dhcp4_parser.yy" + case 661: // client_classes_list: client_classes_list "," +#line 2327 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3773 "dhcp4_parser.cc" +#line 3783 "dhcp4_parser.cc" break; - case 660: // $@107: %empty -#line 2324 "dhcp4_parser.yy" + case 662: // $@107: %empty +#line 2332 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3783 "dhcp4_parser.cc" +#line 3793 "dhcp4_parser.cc" break; - case 661: // client_class_entry: "{" $@107 client_class_params "}" -#line 2328 "dhcp4_parser.yy" + case 663: // client_class_entry: "{" $@107 client_class_params "}" +#line 2336 "dhcp4_parser.yy" { // The name client class parameter is required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3793 "dhcp4_parser.cc" +#line 3803 "dhcp4_parser.cc" break; - case 666: // not_empty_client_class_params: not_empty_client_class_params "," -#line 2340 "dhcp4_parser.yy" + case 668: // not_empty_client_class_params: not_empty_client_class_params "," +#line 2348 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3801 "dhcp4_parser.cc" +#line 3811 "dhcp4_parser.cc" break; - case 682: // $@108: %empty -#line 2363 "dhcp4_parser.yy" + case 684: // $@108: %empty +#line 2371 "dhcp4_parser.yy" { ctx.unique("test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3810 "dhcp4_parser.cc" +#line 3820 "dhcp4_parser.cc" break; - case 683: // client_class_test: "test" $@108 ":" "constant string" -#line 2366 "dhcp4_parser.yy" + case 685: // client_class_test: "test" $@108 ":" "constant string" +#line 2374 "dhcp4_parser.yy" { ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("test", test); ctx.leave(); } -#line 3820 "dhcp4_parser.cc" +#line 3830 "dhcp4_parser.cc" break; - case 684: // only_if_required: "only-if-required" ":" "boolean" -#line 2372 "dhcp4_parser.yy" + case 686: // only_if_required: "only-if-required" ":" "boolean" +#line 2380 "dhcp4_parser.yy" { ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-if-required", b); } -#line 3830 "dhcp4_parser.cc" +#line 3840 "dhcp4_parser.cc" break; - case 685: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" -#line 2380 "dhcp4_parser.yy" + case 687: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" +#line 2388 "dhcp4_parser.yy" { ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location)); ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4o6-port", time); } -#line 3840 "dhcp4_parser.cc" +#line 3850 "dhcp4_parser.cc" break; - case 686: // $@109: %empty -#line 2388 "dhcp4_parser.yy" + case 688: // $@109: %empty +#line 2396 "dhcp4_parser.yy" { ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3848,66 +3858,66 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 3852 "dhcp4_parser.cc" +#line 3862 "dhcp4_parser.cc" break; - case 687: // control_socket: "control-socket" $@109 ":" "{" control_socket_params "}" -#line 2394 "dhcp4_parser.yy" + case 689: // control_socket: "control-socket" $@109 ":" "{" control_socket_params "}" +#line 2402 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3861 "dhcp4_parser.cc" +#line 3871 "dhcp4_parser.cc" break; - case 690: // control_socket_params: control_socket_params "," -#line 2401 "dhcp4_parser.yy" + case 692: // control_socket_params: control_socket_params "," +#line 2409 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3869 "dhcp4_parser.cc" +#line 3879 "dhcp4_parser.cc" break; - case 696: // $@110: %empty -#line 2413 "dhcp4_parser.yy" + case 698: // $@110: %empty +#line 2421 "dhcp4_parser.yy" { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3878 "dhcp4_parser.cc" +#line 3888 "dhcp4_parser.cc" break; - case 697: // control_socket_type: "socket-type" $@110 ":" "constant string" -#line 2416 "dhcp4_parser.yy" + case 699: // control_socket_type: "socket-type" $@110 ":" "constant string" +#line 2424 "dhcp4_parser.yy" { ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-type", stype); ctx.leave(); } -#line 3888 "dhcp4_parser.cc" +#line 3898 "dhcp4_parser.cc" break; - case 698: // $@111: %empty -#line 2422 "dhcp4_parser.yy" + case 700: // $@111: %empty +#line 2430 "dhcp4_parser.yy" { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3897 "dhcp4_parser.cc" +#line 3907 "dhcp4_parser.cc" break; - case 699: // control_socket_name: "socket-name" $@111 ":" "constant string" -#line 2425 "dhcp4_parser.yy" + case 701: // control_socket_name: "socket-name" $@111 ":" "constant string" +#line 2433 "dhcp4_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-name", name); ctx.leave(); } -#line 3907 "dhcp4_parser.cc" +#line 3917 "dhcp4_parser.cc" break; - case 700: // $@112: %empty -#line 2434 "dhcp4_parser.yy" + case 702: // $@112: %empty +#line 2442 "dhcp4_parser.yy" { ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location)); ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3915,87 +3925,87 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(qc); ctx.enter(ctx.DHCP_QUEUE_CONTROL); } -#line 3919 "dhcp4_parser.cc" +#line 3929 "dhcp4_parser.cc" break; - case 701: // dhcp_queue_control: "dhcp-queue-control" $@112 ":" "{" queue_control_params "}" -#line 2440 "dhcp4_parser.yy" + case 703: // dhcp_queue_control: "dhcp-queue-control" $@112 ":" "{" queue_control_params "}" +#line 2448 "dhcp4_parser.yy" { // The enable queue parameter is required. ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 3930 "dhcp4_parser.cc" +#line 3940 "dhcp4_parser.cc" break; - case 704: // queue_control_params: queue_control_params "," -#line 2449 "dhcp4_parser.yy" + case 706: // queue_control_params: queue_control_params "," +#line 2457 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3938 "dhcp4_parser.cc" +#line 3948 "dhcp4_parser.cc" break; - case 711: // enable_queue: "enable-queue" ":" "boolean" -#line 2462 "dhcp4_parser.yy" + case 713: // enable_queue: "enable-queue" ":" "boolean" +#line 2470 "dhcp4_parser.yy" { ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-queue", b); } -#line 3948 "dhcp4_parser.cc" +#line 3958 "dhcp4_parser.cc" break; - case 712: // $@113: %empty -#line 2468 "dhcp4_parser.yy" + case 714: // $@113: %empty +#line 2476 "dhcp4_parser.yy" { ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3957 "dhcp4_parser.cc" +#line 3967 "dhcp4_parser.cc" break; - case 713: // queue_type: "queue-type" $@113 ":" "constant string" -#line 2471 "dhcp4_parser.yy" + case 715: // queue_type: "queue-type" $@113 ":" "constant string" +#line 2479 "dhcp4_parser.yy" { ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("queue-type", qt); ctx.leave(); } -#line 3967 "dhcp4_parser.cc" +#line 3977 "dhcp4_parser.cc" break; - case 714: // capacity: "capacity" ":" "integer" -#line 2477 "dhcp4_parser.yy" + case 716: // capacity: "capacity" ":" "integer" +#line 2485 "dhcp4_parser.yy" { ctx.unique("capacity", ctx.loc2pos(yystack_[2].location)); ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("capacity", c); } -#line 3977 "dhcp4_parser.cc" +#line 3987 "dhcp4_parser.cc" break; - case 715: // $@114: %empty -#line 2483 "dhcp4_parser.yy" + case 717: // $@114: %empty +#line 2491 "dhcp4_parser.yy" { ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3986 "dhcp4_parser.cc" +#line 3996 "dhcp4_parser.cc" break; - case 716: // arbitrary_map_entry: "constant string" $@114 ":" value -#line 2486 "dhcp4_parser.yy" + case 718: // arbitrary_map_entry: "constant string" $@114 ":" value +#line 2494 "dhcp4_parser.yy" { ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 3995 "dhcp4_parser.cc" +#line 4005 "dhcp4_parser.cc" break; - case 717: // $@115: %empty -#line 2493 "dhcp4_parser.yy" + case 719: // $@115: %empty +#line 2501 "dhcp4_parser.yy" { ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4003,291 +4013,291 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP_DDNS); } -#line 4007 "dhcp4_parser.cc" +#line 4017 "dhcp4_parser.cc" break; - case 718: // dhcp_ddns: "dhcp-ddns" $@115 ":" "{" dhcp_ddns_params "}" -#line 2499 "dhcp4_parser.yy" + case 720: // dhcp_ddns: "dhcp-ddns" $@115 ":" "{" dhcp_ddns_params "}" +#line 2507 "dhcp4_parser.yy" { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 4018 "dhcp4_parser.cc" +#line 4028 "dhcp4_parser.cc" break; - case 719: // $@116: %empty -#line 2506 "dhcp4_parser.yy" + case 721: // $@116: %empty +#line 2514 "dhcp4_parser.yy" { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4028 "dhcp4_parser.cc" +#line 4038 "dhcp4_parser.cc" break; - case 720: // sub_dhcp_ddns: "{" $@116 dhcp_ddns_params "}" -#line 2510 "dhcp4_parser.yy" + case 722: // sub_dhcp_ddns: "{" $@116 dhcp_ddns_params "}" +#line 2518 "dhcp4_parser.yy" { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 4038 "dhcp4_parser.cc" +#line 4048 "dhcp4_parser.cc" break; - case 723: // dhcp_ddns_params: dhcp_ddns_params "," -#line 2518 "dhcp4_parser.yy" + case 725: // dhcp_ddns_params: dhcp_ddns_params "," +#line 2526 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4046 "dhcp4_parser.cc" +#line 4056 "dhcp4_parser.cc" break; - case 742: // enable_updates: "enable-updates" ":" "boolean" -#line 2543 "dhcp4_parser.yy" + case 744: // enable_updates: "enable-updates" ":" "boolean" +#line 2551 "dhcp4_parser.yy" { ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); } -#line 4056 "dhcp4_parser.cc" +#line 4066 "dhcp4_parser.cc" break; - case 743: // $@117: %empty -#line 2549 "dhcp4_parser.yy" + case 745: // $@117: %empty +#line 2557 "dhcp4_parser.yy" { ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4065 "dhcp4_parser.cc" +#line 4075 "dhcp4_parser.cc" break; - case 744: // server_ip: "server-ip" $@117 ":" "constant string" -#line 2552 "dhcp4_parser.yy" + case 746: // server_ip: "server-ip" $@117 ":" "constant string" +#line 2560 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-ip", s); ctx.leave(); } -#line 4075 "dhcp4_parser.cc" +#line 4085 "dhcp4_parser.cc" break; - case 745: // server_port: "server-port" ":" "integer" -#line 2558 "dhcp4_parser.yy" + case 747: // server_port: "server-port" ":" "integer" +#line 2566 "dhcp4_parser.yy" { ctx.unique("server-port", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); } -#line 4085 "dhcp4_parser.cc" +#line 4095 "dhcp4_parser.cc" break; - case 746: // $@118: %empty -#line 2564 "dhcp4_parser.yy" + case 748: // $@118: %empty +#line 2572 "dhcp4_parser.yy" { ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4094 "dhcp4_parser.cc" +#line 4104 "dhcp4_parser.cc" break; - case 747: // sender_ip: "sender-ip" $@118 ":" "constant string" -#line 2567 "dhcp4_parser.yy" + case 749: // sender_ip: "sender-ip" $@118 ":" "constant string" +#line 2575 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-ip", s); ctx.leave(); } -#line 4104 "dhcp4_parser.cc" +#line 4114 "dhcp4_parser.cc" break; - case 748: // sender_port: "sender-port" ":" "integer" -#line 2573 "dhcp4_parser.yy" + case 750: // sender_port: "sender-port" ":" "integer" +#line 2581 "dhcp4_parser.yy" { ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); } -#line 4114 "dhcp4_parser.cc" +#line 4124 "dhcp4_parser.cc" break; - case 749: // max_queue_size: "max-queue-size" ":" "integer" -#line 2579 "dhcp4_parser.yy" + case 751: // max_queue_size: "max-queue-size" ":" "integer" +#line 2587 "dhcp4_parser.yy" { ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-queue-size", i); } -#line 4124 "dhcp4_parser.cc" +#line 4134 "dhcp4_parser.cc" break; - case 750: // $@119: %empty -#line 2585 "dhcp4_parser.yy" + case 752: // $@119: %empty +#line 2593 "dhcp4_parser.yy" { ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_PROTOCOL); } -#line 4133 "dhcp4_parser.cc" +#line 4143 "dhcp4_parser.cc" break; - case 751: // ncr_protocol: "ncr-protocol" $@119 ":" ncr_protocol_value -#line 2588 "dhcp4_parser.yy" + case 753: // ncr_protocol: "ncr-protocol" $@119 ":" ncr_protocol_value +#line 2596 "dhcp4_parser.yy" { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4142 "dhcp4_parser.cc" +#line 4152 "dhcp4_parser.cc" break; - case 752: // ncr_protocol_value: "udp" -#line 2594 "dhcp4_parser.yy" + case 754: // ncr_protocol_value: "udp" +#line 2602 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 4148 "dhcp4_parser.cc" +#line 4158 "dhcp4_parser.cc" break; - case 753: // ncr_protocol_value: "tcp" -#line 2595 "dhcp4_parser.yy" + case 755: // ncr_protocol_value: "tcp" +#line 2603 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 4154 "dhcp4_parser.cc" +#line 4164 "dhcp4_parser.cc" break; - case 754: // $@120: %empty -#line 2598 "dhcp4_parser.yy" + case 756: // $@120: %empty +#line 2606 "dhcp4_parser.yy" { ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_FORMAT); } -#line 4163 "dhcp4_parser.cc" +#line 4173 "dhcp4_parser.cc" break; - case 755: // ncr_format: "ncr-format" $@120 ":" "JSON" -#line 2601 "dhcp4_parser.yy" + case 757: // ncr_format: "ncr-format" $@120 ":" "JSON" +#line 2609 "dhcp4_parser.yy" { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 4173 "dhcp4_parser.cc" +#line 4183 "dhcp4_parser.cc" break; - case 756: // $@121: %empty -#line 2608 "dhcp4_parser.yy" + case 758: // $@121: %empty +#line 2616 "dhcp4_parser.yy" { ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4182 "dhcp4_parser.cc" +#line 4192 "dhcp4_parser.cc" break; - case 757: // dep_qualifying_suffix: "qualifying-suffix" $@121 ":" "constant string" -#line 2611 "dhcp4_parser.yy" + case 759: // dep_qualifying_suffix: "qualifying-suffix" $@121 ":" "constant string" +#line 2619 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("qualifying-suffix", s); ctx.leave(); } -#line 4192 "dhcp4_parser.cc" +#line 4202 "dhcp4_parser.cc" break; - case 758: // dep_override_no_update: "override-no-update" ":" "boolean" -#line 2618 "dhcp4_parser.yy" + case 760: // dep_override_no_update: "override-no-update" ":" "boolean" +#line 2626 "dhcp4_parser.yy" { ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 4202 "dhcp4_parser.cc" +#line 4212 "dhcp4_parser.cc" break; - case 759: // dep_override_client_update: "override-client-update" ":" "boolean" -#line 2625 "dhcp4_parser.yy" + case 761: // dep_override_client_update: "override-client-update" ":" "boolean" +#line 2633 "dhcp4_parser.yy" { ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 4212 "dhcp4_parser.cc" +#line 4222 "dhcp4_parser.cc" break; - case 760: // $@122: %empty -#line 2632 "dhcp4_parser.yy" + case 762: // $@122: %empty +#line 2640 "dhcp4_parser.yy" { ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 4221 "dhcp4_parser.cc" +#line 4231 "dhcp4_parser.cc" break; - case 761: // dep_replace_client_name: "replace-client-name" $@122 ":" ddns_replace_client_name_value -#line 2635 "dhcp4_parser.yy" + case 763: // dep_replace_client_name: "replace-client-name" $@122 ":" ddns_replace_client_name_value +#line 2643 "dhcp4_parser.yy" { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4230 "dhcp4_parser.cc" +#line 4240 "dhcp4_parser.cc" break; - case 762: // $@123: %empty -#line 2641 "dhcp4_parser.yy" + case 764: // $@123: %empty +#line 2649 "dhcp4_parser.yy" { ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4239 "dhcp4_parser.cc" +#line 4249 "dhcp4_parser.cc" break; - case 763: // dep_generated_prefix: "generated-prefix" $@123 ":" "constant string" -#line 2644 "dhcp4_parser.yy" + case 765: // dep_generated_prefix: "generated-prefix" $@123 ":" "constant string" +#line 2652 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("generated-prefix", s); ctx.leave(); } -#line 4249 "dhcp4_parser.cc" +#line 4259 "dhcp4_parser.cc" break; - case 764: // $@124: %empty -#line 2651 "dhcp4_parser.yy" + case 766: // $@124: %empty +#line 2659 "dhcp4_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4258 "dhcp4_parser.cc" +#line 4268 "dhcp4_parser.cc" break; - case 765: // dep_hostname_char_set: "hostname-char-set" $@124 ":" "constant string" -#line 2654 "dhcp4_parser.yy" + case 767: // dep_hostname_char_set: "hostname-char-set" $@124 ":" "constant string" +#line 2662 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 4268 "dhcp4_parser.cc" +#line 4278 "dhcp4_parser.cc" break; - case 766: // $@125: %empty -#line 2661 "dhcp4_parser.yy" + case 768: // $@125: %empty +#line 2669 "dhcp4_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4277 "dhcp4_parser.cc" +#line 4287 "dhcp4_parser.cc" break; - case 767: // dep_hostname_char_replacement: "hostname-char-replacement" $@125 ":" "constant string" -#line 2664 "dhcp4_parser.yy" + case 769: // dep_hostname_char_replacement: "hostname-char-replacement" $@125 ":" "constant string" +#line 2672 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 4287 "dhcp4_parser.cc" +#line 4297 "dhcp4_parser.cc" break; - case 768: // $@126: %empty -#line 2673 "dhcp4_parser.yy" + case 770: // $@126: %empty +#line 2681 "dhcp4_parser.yy" { ctx.unique("config-control", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4295,48 +4305,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.CONFIG_CONTROL); } -#line 4299 "dhcp4_parser.cc" +#line 4309 "dhcp4_parser.cc" break; - case 769: // config_control: "config-control" $@126 ":" "{" config_control_params "}" -#line 2679 "dhcp4_parser.yy" + case 771: // config_control: "config-control" $@126 ":" "{" config_control_params "}" +#line 2687 "dhcp4_parser.yy" { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 4309 "dhcp4_parser.cc" +#line 4319 "dhcp4_parser.cc" break; - case 770: // $@127: %empty -#line 2685 "dhcp4_parser.yy" + case 772: // $@127: %empty +#line 2693 "dhcp4_parser.yy" { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4319 "dhcp4_parser.cc" +#line 4329 "dhcp4_parser.cc" break; - case 771: // sub_config_control: "{" $@127 config_control_params "}" -#line 2689 "dhcp4_parser.yy" + case 773: // sub_config_control: "{" $@127 config_control_params "}" +#line 2697 "dhcp4_parser.yy" { // No config_control params are required // parsing completed } -#line 4328 "dhcp4_parser.cc" +#line 4338 "dhcp4_parser.cc" break; - case 774: // config_control_params: config_control_params "," -#line 2697 "dhcp4_parser.yy" + case 776: // config_control_params: config_control_params "," +#line 2705 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4336 "dhcp4_parser.cc" +#line 4346 "dhcp4_parser.cc" break; - case 777: // $@128: %empty -#line 2707 "dhcp4_parser.yy" + case 779: // $@128: %empty +#line 2715 "dhcp4_parser.yy" { ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4344,30 +4354,30 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CONFIG_DATABASE); } -#line 4348 "dhcp4_parser.cc" +#line 4358 "dhcp4_parser.cc" break; - case 778: // config_databases: "config-databases" $@128 ":" "[" database_list "]" -#line 2713 "dhcp4_parser.yy" + case 780: // config_databases: "config-databases" $@128 ":" "[" database_list "]" +#line 2721 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4357 "dhcp4_parser.cc" +#line 4367 "dhcp4_parser.cc" break; - case 779: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" -#line 2718 "dhcp4_parser.yy" + case 781: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" +#line 2726 "dhcp4_parser.yy" { ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-fetch-wait-time", value); } -#line 4367 "dhcp4_parser.cc" +#line 4377 "dhcp4_parser.cc" break; - case 780: // $@129: %empty -#line 2726 "dhcp4_parser.yy" + case 782: // $@129: %empty +#line 2734 "dhcp4_parser.yy" { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4375,83 +4385,83 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 4379 "dhcp4_parser.cc" +#line 4389 "dhcp4_parser.cc" break; - case 781: // loggers: "loggers" $@129 ":" "[" loggers_entries "]" -#line 2732 "dhcp4_parser.yy" + case 783: // loggers: "loggers" $@129 ":" "[" loggers_entries "]" +#line 2740 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4388 "dhcp4_parser.cc" +#line 4398 "dhcp4_parser.cc" break; - case 784: // loggers_entries: loggers_entries "," -#line 2741 "dhcp4_parser.yy" + case 786: // loggers_entries: loggers_entries "," +#line 2749 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4396 "dhcp4_parser.cc" +#line 4406 "dhcp4_parser.cc" break; - case 785: // $@130: %empty -#line 2747 "dhcp4_parser.yy" + case 787: // $@130: %empty +#line 2755 "dhcp4_parser.yy" { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 4406 "dhcp4_parser.cc" +#line 4416 "dhcp4_parser.cc" break; - case 786: // logger_entry: "{" $@130 logger_params "}" -#line 2751 "dhcp4_parser.yy" + case 788: // logger_entry: "{" $@130 logger_params "}" +#line 2759 "dhcp4_parser.yy" { ctx.stack_.pop_back(); } -#line 4414 "dhcp4_parser.cc" +#line 4424 "dhcp4_parser.cc" break; - case 789: // logger_params: logger_params "," -#line 2757 "dhcp4_parser.yy" + case 791: // logger_params: logger_params "," +#line 2765 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4422 "dhcp4_parser.cc" +#line 4432 "dhcp4_parser.cc" break; - case 797: // debuglevel: "debuglevel" ":" "integer" -#line 2771 "dhcp4_parser.yy" + case 799: // debuglevel: "debuglevel" ":" "integer" +#line 2779 "dhcp4_parser.yy" { ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location)); ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 4432 "dhcp4_parser.cc" +#line 4442 "dhcp4_parser.cc" break; - case 798: // $@131: %empty -#line 2777 "dhcp4_parser.yy" + case 800: // $@131: %empty +#line 2785 "dhcp4_parser.yy" { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4441 "dhcp4_parser.cc" +#line 4451 "dhcp4_parser.cc" break; - case 799: // severity: "severity" $@131 ":" "constant string" -#line 2780 "dhcp4_parser.yy" + case 801: // severity: "severity" $@131 ":" "constant string" +#line 2788 "dhcp4_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 4451 "dhcp4_parser.cc" +#line 4461 "dhcp4_parser.cc" break; - case 800: // $@132: %empty -#line 2786 "dhcp4_parser.yy" + case 802: // $@132: %empty +#line 2794 "dhcp4_parser.yy" { ctx.unique("output_options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4459,122 +4469,122 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 4463 "dhcp4_parser.cc" +#line 4473 "dhcp4_parser.cc" break; - case 801: // output_options_list: "output_options" $@132 ":" "[" output_options_list_content "]" -#line 2792 "dhcp4_parser.yy" + case 803: // output_options_list: "output_options" $@132 ":" "[" output_options_list_content "]" +#line 2800 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4472 "dhcp4_parser.cc" +#line 4482 "dhcp4_parser.cc" break; - case 804: // output_options_list_content: output_options_list_content "," -#line 2799 "dhcp4_parser.yy" + case 806: // output_options_list_content: output_options_list_content "," +#line 2807 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4480 "dhcp4_parser.cc" +#line 4490 "dhcp4_parser.cc" break; - case 805: // $@133: %empty -#line 2804 "dhcp4_parser.yy" + case 807: // $@133: %empty +#line 2812 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4490 "dhcp4_parser.cc" +#line 4500 "dhcp4_parser.cc" break; - case 806: // output_entry: "{" $@133 output_params_list "}" -#line 2808 "dhcp4_parser.yy" + case 808: // output_entry: "{" $@133 output_params_list "}" +#line 2816 "dhcp4_parser.yy" { ctx.stack_.pop_back(); } -#line 4498 "dhcp4_parser.cc" +#line 4508 "dhcp4_parser.cc" break; - case 809: // output_params_list: output_params_list "," -#line 2814 "dhcp4_parser.yy" + case 811: // output_params_list: output_params_list "," +#line 2822 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4506 "dhcp4_parser.cc" +#line 4516 "dhcp4_parser.cc" break; - case 815: // $@134: %empty -#line 2826 "dhcp4_parser.yy" + case 817: // $@134: %empty +#line 2834 "dhcp4_parser.yy" { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4515 "dhcp4_parser.cc" +#line 4525 "dhcp4_parser.cc" break; - case 816: // output: "output" $@134 ":" "constant string" -#line 2829 "dhcp4_parser.yy" + case 818: // output: "output" $@134 ":" "constant string" +#line 2837 "dhcp4_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 4525 "dhcp4_parser.cc" +#line 4535 "dhcp4_parser.cc" break; - case 817: // flush: "flush" ":" "boolean" -#line 2835 "dhcp4_parser.yy" + case 819: // flush: "flush" ":" "boolean" +#line 2843 "dhcp4_parser.yy" { ctx.unique("flush", ctx.loc2pos(yystack_[2].location)); ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 4535 "dhcp4_parser.cc" +#line 4545 "dhcp4_parser.cc" break; - case 818: // maxsize: "maxsize" ":" "integer" -#line 2841 "dhcp4_parser.yy" + case 820: // maxsize: "maxsize" ":" "integer" +#line 2849 "dhcp4_parser.yy" { ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location)); ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 4545 "dhcp4_parser.cc" +#line 4555 "dhcp4_parser.cc" break; - case 819: // maxver: "maxver" ":" "integer" -#line 2847 "dhcp4_parser.yy" + case 821: // maxver: "maxver" ":" "integer" +#line 2855 "dhcp4_parser.yy" { ctx.unique("maxver", ctx.loc2pos(yystack_[2].location)); ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 4555 "dhcp4_parser.cc" +#line 4565 "dhcp4_parser.cc" break; - case 820: // $@135: %empty -#line 2853 "dhcp4_parser.yy" + case 822: // $@135: %empty +#line 2861 "dhcp4_parser.yy" { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4564 "dhcp4_parser.cc" +#line 4574 "dhcp4_parser.cc" break; - case 821: // pattern: "pattern" $@135 ":" "constant string" -#line 2856 "dhcp4_parser.yy" + case 823: // pattern: "pattern" $@135 ":" "constant string" +#line 2864 "dhcp4_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pattern", sev); ctx.leave(); } -#line 4574 "dhcp4_parser.cc" +#line 4584 "dhcp4_parser.cc" break; - case 822: // $@136: %empty -#line 2862 "dhcp4_parser.yy" + case 824: // $@136: %empty +#line 2870 "dhcp4_parser.yy" { ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4582,38 +4592,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.COMPATIBILITY); } -#line 4586 "dhcp4_parser.cc" +#line 4596 "dhcp4_parser.cc" break; - case 823: // compatibility: "compatibility" $@136 ":" "{" compatibility_params "}" -#line 2868 "dhcp4_parser.yy" + case 825: // compatibility: "compatibility" $@136 ":" "{" compatibility_params "}" +#line 2876 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4595 "dhcp4_parser.cc" +#line 4605 "dhcp4_parser.cc" break; - case 826: // compatibility_params: compatibility_params "," -#line 2875 "dhcp4_parser.yy" + case 828: // compatibility_params: compatibility_params "," +#line 2883 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4603 "dhcp4_parser.cc" +#line 4613 "dhcp4_parser.cc" break; - case 829: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" -#line 2884 "dhcp4_parser.yy" + case 831: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" +#line 2892 "dhcp4_parser.yy" { ctx.unique("lenient-option-parsing", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lenient-option-parsing", b); } -#line 4613 "dhcp4_parser.cc" +#line 4623 "dhcp4_parser.cc" break; -#line 4617 "dhcp4_parser.cc" +#line 4627 "dhcp4_parser.cc" default: break; @@ -4965,140 +4975,141 @@ namespace isc { namespace dhcp { } - const short Dhcp4Parser::yypact_ninf_ = -972; + const short Dhcp4Parser::yypact_ninf_ = -976; const signed char Dhcp4Parser::yytable_ninf_ = -1; const short Dhcp4Parser::yypact_[] = { - 553, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, 71, 44, 41, 60, 62, 82, - 86, 96, 114, 124, 167, 183, 201, 280, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, 44, -147, 89, 190, 28, 610, - 197, 48, 155, 95, -11, -100, 693, 112, -972, 111, - 251, 284, 281, 292, -972, 56, -972, -972, -972, -972, - 295, 309, 323, -972, -972, -972, -972, -972, -972, 324, - 326, 327, 348, 368, 369, 370, 371, 372, 373, 374, - -972, 375, 377, 378, 379, 380, -972, -972, -972, 381, - 382, 383, -972, -972, -972, 384, -972, -972, -972, -972, - 386, 387, 388, -972, -972, -972, -972, -972, 389, -972, - -972, -972, -972, -972, -972, 390, -972, -972, 392, -972, - 67, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, 393, -972, 92, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, 394, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - 98, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, 110, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, 331, 396, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, 395, - -972, -972, 397, -972, -972, -972, 400, -972, -972, 398, - 402, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, 403, 404, -972, -972, -972, -972, - 401, 407, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, 120, -972, -972, -972, 409, -972, - -972, 410, -972, 412, 413, -972, -972, 415, 416, -972, - -972, -972, -972, -972, -972, -972, 146, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, 417, 160, -972, -972, -972, -972, - 44, 44, -972, 195, 418, -972, -972, 419, 420, 421, - 203, 218, 219, 424, 425, 427, 428, 432, 433, 233, - 234, 235, 237, 239, 230, 241, 243, 244, 246, 249, - 443, 255, 258, 245, 259, 260, 462, 465, 467, 264, - 265, 270, 476, 477, 479, 285, 482, 483, 486, 490, - 289, 290, 291, 498, 500, 501, 502, 504, 303, 506, - 507, 508, 511, 512, 513, 313, 519, 520, -972, 190, - -972, 521, 523, 524, 321, 28, -972, 527, 529, 530, - 531, 532, 535, 340, 537, 541, 545, 610, -972, 547, - 197, -972, 548, 549, 552, 555, 559, 563, 564, 565, - -972, 48, -972, 567, 568, 351, 570, 571, 572, 385, - -972, 95, 573, 399, 406, -972, -11, 590, 591, -27, - -972, 408, 600, 601, 405, 602, 411, 414, 604, 605, - 422, 426, 606, 608, 614, 615, 693, -972, 617, 423, - 112, -972, -972, -972, 618, 616, 619, 620, 621, -972, - -972, -972, 430, 436, 437, 625, 636, 639, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, 440, - -972, -972, -972, -972, -972, -10, 441, 442, -972, -972, - -972, 643, 646, 648, -972, 649, 650, 450, 247, -972, - -972, -972, 653, 654, 655, 656, 657, -972, 662, 663, - 664, 665, 457, 458, -972, 668, 678, -972, 681, 133, - 179, -972, -972, 493, 497, 499, 682, 509, 518, -972, - 681, 525, 698, -972, 526, -972, 681, 528, 554, 556, - 557, 558, 560, 561, -972, 562, 566, -972, 569, 581, - 582, -972, -972, 597, -972, -972, -972, 598, 650, -972, - -972, 603, 607, -972, 609, -972, -972, 15, 451, -972, - -972, -10, 611, 612, 622, -972, 683, -972, -972, 44, - 190, 112, 28, 688, -972, -972, -972, 539, 539, 699, - -972, -972, -972, -972, -972, -972, -972, -972, -972, 700, - 706, 709, 717, -972, -972, -972, -972, -972, -972, -972, - -972, 100, 718, 719, 727, 17, 184, 0, 210, 693, - -972, -972, 735, -160, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, 751, -972, -972, -972, -972, - 72, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, 699, - -972, 178, 185, 206, -972, 228, -972, -972, -972, -972, - -972, -972, 756, 760, 764, 765, 766, -972, -972, -972, - -972, 768, 769, -972, 771, 802, 803, 805, -972, -972, - -972, -972, -972, 232, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - 236, -972, 804, 808, -972, -972, 807, 817, -972, -972, - 816, 821, -972, -972, 819, 823, -972, -972, 825, 829, - -972, -972, -972, -972, -972, -972, 36, -972, -972, -972, - -972, -972, -972, -972, 49, -972, -972, 828, 832, -972, - -972, 831, 835, -972, 836, 837, 838, 839, 841, 842, - 276, -972, -972, -972, -972, -972, -972, -972, 843, 844, - 845, -972, 277, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, 278, -972, -972, -972, 846, -972, - 847, -972, -972, -972, 298, -972, -972, -972, -972, -972, - 317, -972, 240, -972, 861, -972, 335, -972, -972, 634, - -972, 860, 864, -972, -972, -972, -972, 862, 863, -972, - -972, -972, 869, 688, -972, 870, 871, 872, 873, 672, - 660, 673, 674, 675, 876, 879, 880, 881, 680, 685, - 883, 686, 687, 689, 690, 884, 890, 891, 895, 539, - -972, -972, 539, -972, 699, 610, -972, 700, 95, -972, - 706, -11, -972, 709, 711, -972, 717, 100, -972, 118, - 718, -972, 48, -972, 719, -100, -972, 727, 694, 695, - 696, 697, 701, 703, 17, -972, 702, 707, 715, 184, - -972, 900, 901, 0, -972, 704, 902, 720, 911, 210, - -972, -972, 130, 735, -972, 723, -160, -972, -972, 917, - 929, 197, -972, 751, 943, -972, -972, 745, -972, 135, - 748, 770, 777, -972, -972, -972, -972, -972, 778, 781, - 785, 786, -972, -972, 26, -972, -972, -972, -972, 797, - 798, 811, 850, -972, 337, -972, 339, -972, 957, -972, - 1038, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, 343, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, 1046, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - 1043, 1053, -972, -972, -972, -972, -972, 1049, -972, 346, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, 853, 854, -972, -972, 855, -972, 44, -972, - -972, 1057, -972, -972, -972, -972, -972, 347, -972, -972, - -972, -972, -972, -972, -972, -972, 857, 350, -972, 681, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, 711, -972, 1059, 856, -972, - 118, -972, -972, -972, -972, -972, -972, 1061, 865, 1062, - 130, -972, -972, -972, -972, -972, 867, -972, -972, 1063, - -972, 868, -972, -972, 1060, -972, -972, 318, -972, -44, - 1060, -972, -972, 1065, 1066, 1070, -972, 356, -972, -972, - -972, -972, -972, -972, -972, 1071, 874, 875, 877, 1072, - -44, -972, 882, -972, -972, -972, 885, -972, -972, -972 + 193, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, 28, 42, 32, 41, 48, 60, + 73, 99, 118, 124, 128, 134, 138, 165, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, 42, -156, 59, 135, 62, 614, + 151, 201, -28, 77, 203, -85, 601, 142, -976, 91, + 114, 72, 174, 183, -976, 67, -976, -976, -976, -976, + 220, 222, 265, -976, -976, -976, -976, -976, -976, 284, + 291, 308, 320, 321, 323, 332, 333, 334, 360, 362, + -976, 364, 379, 395, 398, 399, -976, -976, -976, 400, + 401, 402, -976, -976, -976, 404, -976, -976, -976, -976, + 406, 407, 408, -976, -976, -976, -976, -976, 409, -976, + -976, -976, -976, -976, -976, 410, 412, -976, -976, 413, + -976, 87, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, 414, -976, + 100, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, 415, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, 110, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + 120, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, 225, 275, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, 272, -976, -976, 416, -976, -976, -976, 418, -976, + -976, 355, 420, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, 421, 422, -976, -976, + -976, -976, 419, 425, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, 121, -976, -976, -976, + 426, -976, -976, 427, -976, 428, 430, -976, -976, 431, + 435, -976, -976, -976, -976, -976, -976, -976, 136, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, 436, 140, -976, -976, + -976, -976, 42, 42, -976, -135, 437, -976, -976, 438, + 439, 440, 215, 237, 239, 446, 447, 449, 450, 451, + 452, 251, 260, 262, 263, 264, 255, 221, 266, 268, + 279, 286, 468, 287, 290, 280, 281, 292, 471, 477, + 480, 293, 296, 298, 496, 504, 505, 304, 508, 509, + 510, 511, 309, 310, 311, 520, 522, 523, 524, 526, + 324, 528, 530, 532, 533, 534, 535, 335, 339, 538, + 545, -976, 135, -976, 548, 550, 551, 350, 62, -976, + 552, 556, 558, 562, 563, 568, 367, 571, 587, 588, + 614, -976, 589, 151, -976, 598, 599, 600, 602, 603, + 604, 605, 606, -976, 201, -976, 607, 608, 411, 609, + 610, 611, 396, -976, 77, 612, 417, 423, -976, 203, + 616, 617, 125, -976, 424, 618, 619, 429, 620, 432, + 441, 621, 623, 442, 443, 624, 626, 630, 633, 601, + -976, 634, 448, 142, -976, -976, -976, 641, 639, 640, + 642, 643, -976, -976, -976, 453, 455, 456, 650, 651, + 658, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, 458, -976, -976, -976, -976, -976, 16, 459, + 460, -976, -976, -976, 662, 663, 668, -976, 669, 670, + 469, 259, -976, -976, -976, 671, 684, 685, 686, 695, + -976, 699, 703, 704, 709, 486, 512, -976, -976, 712, + 713, -976, 722, 274, 283, -976, -976, 529, 531, 536, + 723, 539, 540, -976, 722, 542, 727, -976, 543, -976, + 722, 544, 546, 547, 567, 569, 570, 572, -976, 575, + 576, -976, 577, 578, 579, -976, -976, 580, -976, -976, + -976, 581, 670, -976, -976, 582, 583, -976, 584, -976, + -976, 15, 557, -976, -976, 16, 585, 613, 615, -976, + 724, -976, -976, 42, 135, 142, 62, 714, -976, -976, + -976, 537, 537, 734, -976, -976, -976, -976, -976, -976, + -976, -976, -976, 737, 744, 747, 767, -976, -976, -976, + -976, -976, -976, -976, -976, 191, 770, 797, 798, 54, + -49, -64, -70, 601, -976, -976, 799, -161, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, 811, + -976, -976, -976, -976, -52, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, 734, -976, 173, 229, 232, -976, 238, + -976, -976, -976, -976, -976, -976, 820, 821, 822, 823, + 824, -976, -976, -976, -976, 825, 826, -976, 827, 828, + 829, 830, -976, -976, -976, -976, -976, 257, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, 267, -976, 832, 837, -976, -976, + 836, 840, -976, -976, 838, 842, -976, -976, 843, 847, + -976, -976, 846, 850, -976, -976, -976, -976, -976, -976, + 90, -976, -976, -976, -976, -976, -976, -976, 104, -976, + -976, 849, 853, -976, -976, 851, 855, -976, 831, 856, + 857, 859, 860, 861, 269, -976, -976, -976, -976, -976, + -976, -976, 862, 863, 864, -976, 276, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, 282, -976, + -976, -976, 865, -976, 866, -976, -976, -976, 331, -976, + -976, -976, -976, -976, 337, -976, 153, -976, 867, -976, + 343, -976, -976, 653, -976, 868, 869, -976, -976, -976, + -976, 870, 871, -976, -976, -976, 872, 714, -976, 875, + 876, 877, 878, 666, 674, 677, 676, 679, 883, 884, + 885, 886, 687, 688, 887, 689, 690, 683, 691, 889, + 895, 896, 897, 537, -976, -976, 537, -976, 734, 614, + -976, 737, 77, -976, 744, 203, -976, 747, 729, -976, + 767, 191, -976, 277, 770, -976, 201, -976, 797, -85, + -976, 798, 696, 697, 698, 702, 706, 707, 54, -976, + 693, 710, 718, -49, -976, 902, 906, -64, -976, 711, + 907, 720, 912, -70, -976, -976, 81, 799, -976, 721, + -161, -976, -976, 913, 933, 151, -976, 811, 947, -976, + -976, 748, -976, 341, 751, 763, 773, -976, -976, -976, + -976, -976, 780, 781, 784, 788, -976, -976, 326, -976, + -976, -976, -976, 789, 800, 801, 814, -976, 344, -976, + 345, -976, 1042, -976, 1046, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, 346, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, 1051, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, 1052, 1056, -976, -976, -976, -976, + -976, 1053, -976, 347, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, 858, 873, -976, -976, + 874, -976, 42, -976, -976, 1058, -976, -976, -976, -976, + -976, 353, -976, -976, -976, -976, -976, -976, -976, -976, + 879, 357, -976, 722, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, 729, + -976, 1059, 880, -976, 277, -976, -976, -976, -976, -976, + -976, 1061, 881, 1062, 81, -976, -976, -976, -976, -976, + 888, -976, -976, 1063, -976, 890, -976, -976, 1060, -976, + -976, 177, -976, -37, 1060, -976, -976, 1065, 1066, 1067, + -976, 359, -976, -976, -976, -976, -976, -976, -976, 1068, + 882, 891, 892, 1069, -37, -976, 894, -976, -976, -976, + 898, -976, -976, -976 }; const short @@ -5108,711 +5119,714 @@ namespace isc { namespace dhcp { 20, 22, 24, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 44, 36, 32, 31, 28, 29, 30, 35, 3, 33, 34, - 59, 5, 65, 7, 185, 9, 370, 11, 578, 13, - 605, 15, 498, 17, 507, 19, 546, 21, 332, 23, - 719, 25, 770, 27, 46, 39, 0, 0, 0, 0, - 0, 607, 0, 509, 548, 0, 0, 0, 48, 0, - 47, 0, 0, 40, 61, 0, 63, 768, 173, 200, - 0, 0, 0, 627, 629, 631, 198, 208, 210, 0, + 59, 5, 65, 7, 187, 9, 372, 11, 580, 13, + 607, 15, 500, 17, 509, 19, 548, 21, 334, 23, + 721, 25, 772, 27, 46, 39, 0, 0, 0, 0, + 0, 609, 0, 511, 550, 0, 0, 0, 48, 0, + 47, 0, 0, 40, 61, 0, 63, 770, 175, 202, + 0, 0, 0, 629, 631, 633, 200, 210, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 143, 0, 0, 0, 0, 0, 152, 159, 161, 0, - 0, 0, 361, 496, 537, 0, 444, 592, 594, 437, - 0, 0, 0, 294, 655, 596, 323, 344, 0, 309, - 686, 700, 717, 165, 167, 0, 780, 822, 0, 131, - 0, 67, 70, 71, 72, 73, 74, 108, 109, 110, - 111, 112, 75, 103, 130, 92, 93, 94, 116, 117, - 118, 119, 120, 121, 122, 123, 114, 115, 124, 125, - 126, 128, 78, 79, 100, 80, 81, 82, 127, 86, - 87, 76, 105, 106, 107, 104, 77, 84, 85, 98, - 99, 101, 95, 96, 97, 83, 88, 89, 90, 91, - 102, 113, 129, 187, 189, 193, 0, 184, 0, 175, - 178, 179, 180, 181, 182, 183, 422, 424, 426, 569, - 420, 428, 0, 432, 430, 651, 419, 375, 376, 377, - 378, 379, 403, 404, 405, 406, 407, 393, 394, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 0, 372, 382, 398, 399, 400, 383, 385, 386, 389, - 390, 391, 388, 384, 380, 381, 401, 402, 387, 395, - 396, 397, 392, 590, 589, 585, 586, 584, 0, 580, - 583, 587, 588, 649, 637, 639, 643, 641, 647, 645, - 633, 626, 620, 624, 625, 0, 608, 609, 621, 622, - 623, 617, 612, 618, 614, 615, 616, 619, 613, 0, - 527, 261, 0, 531, 529, 534, 0, 523, 524, 0, - 510, 511, 514, 526, 515, 516, 517, 533, 518, 519, - 520, 521, 522, 563, 0, 0, 561, 562, 565, 566, - 0, 549, 550, 553, 554, 555, 556, 557, 558, 559, - 560, 340, 342, 337, 0, 334, 338, 339, 0, 756, - 743, 0, 746, 0, 0, 750, 754, 0, 0, 760, - 762, 764, 766, 741, 739, 740, 0, 721, 724, 725, - 726, 727, 728, 729, 730, 731, 736, 732, 733, 734, - 735, 737, 738, 777, 0, 0, 772, 775, 776, 45, - 50, 0, 37, 43, 0, 64, 60, 0, 0, 0, + 144, 0, 0, 0, 0, 0, 153, 160, 162, 0, + 0, 0, 363, 498, 539, 0, 446, 594, 596, 439, + 0, 0, 0, 296, 657, 598, 325, 346, 0, 311, + 688, 702, 719, 166, 168, 0, 0, 782, 824, 0, + 132, 0, 67, 70, 71, 72, 73, 74, 108, 109, + 110, 111, 112, 75, 103, 131, 92, 93, 94, 116, + 117, 118, 119, 120, 121, 122, 123, 114, 115, 124, + 125, 126, 128, 129, 78, 79, 100, 80, 81, 82, + 127, 86, 87, 76, 105, 106, 107, 104, 77, 84, + 85, 98, 99, 101, 95, 96, 97, 83, 88, 89, + 90, 91, 102, 113, 130, 189, 191, 195, 0, 186, + 0, 177, 180, 181, 182, 183, 184, 185, 424, 426, + 428, 571, 422, 430, 0, 434, 432, 653, 421, 377, + 378, 379, 380, 381, 405, 406, 407, 408, 409, 395, + 396, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 0, 374, 384, 400, 401, 402, 385, 387, + 388, 391, 392, 393, 390, 386, 382, 383, 403, 404, + 389, 397, 398, 399, 394, 592, 591, 587, 588, 586, + 0, 582, 585, 589, 590, 651, 639, 641, 645, 643, + 649, 647, 635, 628, 622, 626, 627, 0, 610, 611, + 623, 624, 625, 619, 614, 620, 616, 617, 618, 621, + 615, 0, 529, 263, 0, 533, 531, 536, 0, 525, + 526, 0, 512, 513, 516, 528, 517, 518, 519, 535, + 520, 521, 522, 523, 524, 565, 0, 0, 563, 564, + 567, 568, 0, 551, 552, 555, 556, 557, 558, 559, + 560, 561, 562, 342, 344, 339, 0, 336, 340, 341, + 0, 758, 745, 0, 748, 0, 0, 752, 756, 0, + 0, 762, 764, 766, 768, 743, 741, 742, 0, 723, + 726, 727, 728, 729, 730, 731, 732, 733, 738, 734, + 735, 736, 737, 739, 740, 779, 0, 0, 774, 777, + 778, 45, 50, 0, 37, 43, 0, 64, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 58, 69, - 66, 0, 0, 0, 0, 177, 186, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 374, 371, 0, - 582, 579, 0, 0, 0, 0, 0, 0, 0, 0, - 606, 611, 499, 0, 0, 0, 0, 0, 0, 0, - 508, 513, 0, 0, 0, 547, 552, 0, 0, 336, - 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 723, 720, 0, 0, - 774, 771, 49, 41, 0, 0, 0, 0, 0, 146, - 147, 148, 0, 0, 0, 0, 0, 0, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 0, - 170, 171, 149, 150, 151, 0, 0, 0, 163, 164, - 169, 0, 0, 0, 145, 0, 0, 0, 0, 434, - 435, 436, 0, 0, 0, 0, 0, 685, 0, 0, - 0, 0, 0, 0, 172, 0, 0, 68, 0, 0, - 0, 197, 176, 0, 0, 0, 0, 0, 0, 443, - 0, 0, 0, 373, 0, 581, 0, 0, 0, 0, - 0, 0, 0, 0, 610, 0, 0, 525, 0, 0, - 0, 536, 512, 0, 567, 568, 551, 0, 0, 335, - 742, 0, 0, 745, 0, 748, 749, 0, 0, 758, - 759, 0, 0, 0, 0, 722, 0, 779, 773, 0, - 0, 0, 0, 0, 628, 630, 632, 0, 0, 212, - 144, 154, 155, 156, 157, 158, 153, 160, 162, 363, - 500, 539, 446, 38, 593, 595, 439, 440, 441, 442, - 438, 0, 0, 598, 325, 0, 0, 0, 0, 0, - 166, 168, 0, 0, 51, 188, 191, 192, 190, 195, - 196, 194, 423, 425, 427, 571, 421, 429, 433, 431, - 0, 591, 650, 638, 640, 644, 642, 648, 646, 634, - 528, 262, 532, 530, 535, 564, 341, 343, 757, 744, - 747, 752, 753, 751, 755, 761, 763, 765, 767, 212, - 42, 0, 0, 0, 206, 0, 202, 205, 248, 254, - 256, 258, 0, 0, 0, 0, 0, 270, 272, 274, - 276, 0, 0, 280, 0, 0, 0, 0, 286, 288, - 290, 292, 247, 0, 219, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 236, 237, 238, 232, 239, - 240, 241, 233, 234, 235, 242, 243, 244, 245, 246, - 0, 217, 0, 213, 214, 368, 0, 364, 365, 505, - 0, 501, 502, 544, 0, 540, 541, 451, 0, 447, - 448, 304, 305, 306, 307, 308, 0, 296, 299, 300, - 301, 302, 303, 660, 0, 657, 603, 0, 599, 600, - 330, 0, 326, 327, 0, 0, 0, 0, 0, 0, - 0, 346, 349, 350, 351, 352, 353, 354, 0, 0, - 0, 319, 0, 311, 314, 315, 316, 317, 318, 696, - 698, 695, 693, 694, 0, 688, 691, 692, 0, 712, - 0, 715, 708, 709, 0, 702, 705, 706, 707, 710, - 0, 785, 0, 782, 0, 828, 0, 824, 827, 53, - 576, 0, 572, 573, 635, 653, 654, 0, 0, 62, - 769, 174, 0, 204, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, - 199, 209, 0, 211, 216, 0, 362, 367, 509, 497, - 504, 548, 538, 543, 0, 445, 450, 298, 295, 662, - 659, 656, 607, 597, 602, 0, 324, 329, 0, 0, - 0, 0, 0, 0, 348, 345, 0, 0, 0, 313, - 310, 0, 0, 690, 687, 0, 0, 0, 0, 704, - 701, 718, 0, 784, 781, 0, 826, 823, 55, 0, - 54, 0, 570, 575, 0, 652, 778, 0, 203, 0, - 0, 0, 0, 260, 263, 264, 265, 266, 0, 0, - 0, 0, 278, 279, 0, 267, 268, 269, 285, 0, - 0, 0, 0, 220, 0, 215, 0, 366, 0, 503, - 0, 542, 495, 474, 475, 476, 459, 460, 479, 480, - 481, 482, 483, 462, 463, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 456, 457, 458, 472, - 473, 469, 470, 471, 468, 0, 453, 461, 477, 478, - 464, 465, 466, 467, 449, 297, 682, 0, 677, 678, - 679, 680, 681, 670, 671, 675, 676, 672, 673, 674, - 0, 663, 664, 667, 668, 669, 658, 0, 601, 0, - 328, 355, 356, 357, 358, 359, 360, 347, 320, 321, - 322, 312, 0, 0, 689, 711, 0, 714, 0, 703, - 800, 0, 798, 796, 790, 794, 795, 0, 787, 792, - 793, 791, 783, 829, 825, 52, 57, 0, 574, 0, - 207, 250, 251, 252, 253, 249, 255, 257, 259, 271, - 273, 275, 277, 282, 283, 284, 281, 287, 289, 291, - 293, 218, 369, 506, 545, 455, 452, 0, 0, 661, - 666, 604, 331, 697, 699, 713, 716, 0, 0, 0, - 789, 786, 56, 577, 636, 454, 0, 684, 665, 0, - 797, 0, 788, 683, 0, 799, 805, 0, 802, 0, - 804, 801, 815, 0, 0, 0, 820, 0, 807, 810, - 811, 812, 813, 814, 803, 0, 0, 0, 0, 0, - 809, 806, 0, 817, 818, 819, 0, 808, 816, 821 + 0, 58, 69, 66, 0, 0, 0, 0, 179, 188, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 376, 373, 0, 584, 581, 0, 0, 0, 0, 0, + 0, 0, 0, 608, 613, 501, 0, 0, 0, 0, + 0, 0, 0, 510, 515, 0, 0, 0, 549, 554, + 0, 0, 338, 335, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 725, + 722, 0, 0, 776, 773, 49, 41, 0, 0, 0, + 0, 0, 147, 148, 149, 0, 0, 0, 0, 0, + 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 0, 171, 172, 150, 151, 152, 0, 0, + 0, 164, 165, 170, 0, 0, 0, 146, 0, 0, + 0, 0, 436, 437, 438, 0, 0, 0, 0, 0, + 687, 0, 0, 0, 0, 0, 0, 173, 174, 0, + 0, 68, 0, 0, 0, 199, 178, 0, 0, 0, + 0, 0, 0, 445, 0, 0, 0, 375, 0, 583, + 0, 0, 0, 0, 0, 0, 0, 0, 612, 0, + 0, 527, 0, 0, 0, 538, 514, 0, 569, 570, + 553, 0, 0, 337, 744, 0, 0, 747, 0, 750, + 751, 0, 0, 760, 761, 0, 0, 0, 0, 724, + 0, 781, 775, 0, 0, 0, 0, 0, 630, 632, + 634, 0, 0, 214, 145, 155, 156, 157, 158, 159, + 154, 161, 163, 365, 502, 541, 448, 38, 595, 597, + 441, 442, 443, 444, 440, 0, 0, 600, 327, 0, + 0, 0, 0, 0, 167, 169, 0, 0, 51, 190, + 193, 194, 192, 197, 198, 196, 425, 427, 429, 573, + 423, 431, 435, 433, 0, 593, 652, 640, 642, 646, + 644, 650, 648, 636, 530, 264, 534, 532, 537, 566, + 343, 345, 759, 746, 749, 754, 755, 753, 757, 763, + 765, 767, 769, 214, 42, 0, 0, 0, 208, 0, + 204, 207, 250, 256, 258, 260, 0, 0, 0, 0, + 0, 272, 274, 276, 278, 0, 0, 282, 0, 0, + 0, 0, 288, 290, 292, 294, 249, 0, 221, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 238, + 239, 240, 234, 241, 242, 243, 235, 236, 237, 244, + 245, 246, 247, 248, 0, 219, 0, 215, 216, 370, + 0, 366, 367, 507, 0, 503, 504, 546, 0, 542, + 543, 453, 0, 449, 450, 306, 307, 308, 309, 310, + 0, 298, 301, 302, 303, 304, 305, 662, 0, 659, + 605, 0, 601, 602, 332, 0, 328, 329, 0, 0, + 0, 0, 0, 0, 0, 348, 351, 352, 353, 354, + 355, 356, 0, 0, 0, 321, 0, 313, 316, 317, + 318, 319, 320, 698, 700, 697, 695, 696, 0, 690, + 693, 694, 0, 714, 0, 717, 710, 711, 0, 704, + 707, 708, 709, 712, 0, 787, 0, 784, 0, 830, + 0, 826, 829, 53, 578, 0, 574, 575, 637, 655, + 656, 0, 0, 62, 771, 176, 0, 206, 203, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 223, 201, 211, 0, 213, 218, 0, + 364, 369, 511, 499, 506, 550, 540, 545, 0, 447, + 452, 300, 297, 664, 661, 658, 609, 599, 604, 0, + 326, 331, 0, 0, 0, 0, 0, 0, 350, 347, + 0, 0, 0, 315, 312, 0, 0, 692, 689, 0, + 0, 0, 0, 706, 703, 720, 0, 786, 783, 0, + 828, 825, 55, 0, 54, 0, 572, 577, 0, 654, + 780, 0, 205, 0, 0, 0, 0, 262, 265, 266, + 267, 268, 0, 0, 0, 0, 280, 281, 0, 269, + 270, 271, 287, 0, 0, 0, 0, 222, 0, 217, + 0, 368, 0, 505, 0, 544, 497, 476, 477, 478, + 461, 462, 481, 482, 483, 484, 485, 464, 465, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 458, 459, 460, 474, 475, 471, 472, 473, 470, 0, + 455, 463, 479, 480, 466, 467, 468, 469, 451, 299, + 684, 0, 679, 680, 681, 682, 683, 672, 673, 677, + 678, 674, 675, 676, 0, 665, 666, 669, 670, 671, + 660, 0, 603, 0, 330, 357, 358, 359, 360, 361, + 362, 349, 322, 323, 324, 314, 0, 0, 691, 713, + 0, 716, 0, 705, 802, 0, 800, 798, 792, 796, + 797, 0, 789, 794, 795, 793, 785, 831, 827, 52, + 57, 0, 576, 0, 209, 252, 253, 254, 255, 251, + 257, 259, 261, 273, 275, 277, 279, 284, 285, 286, + 283, 289, 291, 293, 295, 220, 371, 508, 547, 457, + 454, 0, 0, 663, 668, 606, 333, 699, 701, 715, + 718, 0, 0, 0, 791, 788, 56, 579, 638, 456, + 0, 686, 667, 0, 799, 0, 790, 685, 0, 801, + 807, 0, 804, 0, 806, 803, 817, 0, 0, 0, + 822, 0, 809, 812, 813, 814, 815, 816, 805, 0, + 0, 0, 0, 0, 811, 808, 0, 819, 820, 821, + 0, 810, 818, 823 }; const short Dhcp4Parser::yypgoto_[] = { - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -54, -972, -568, -972, 431, - -972, -972, -972, -972, -972, -972, -615, -972, -972, -972, - -67, -972, -972, -972, -972, -972, -972, -972, 429, 599, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -54, -976, -557, -976, 213, + -976, -976, -976, -976, -976, -976, -613, -976, -976, -976, + -67, -976, -976, -976, -976, -976, -976, -976, 390, 593, 4, 10, 23, -40, -23, -12, 22, 25, 29, 33, - -972, -972, -972, -972, -972, 35, 40, 43, 45, 46, - 47, -972, 434, 50, -972, 51, -972, 53, 57, 58, - -972, 61, -972, 63, -972, -972, -972, -972, -972, 435, - 592, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, 136, -972, -972, - -972, -972, -972, -972, 311, -972, 117, -972, -676, 115, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -33, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, 99, -972, -972, -972, -972, -972, - -972, -972, -972, 76, -972, -972, -972, -972, -972, -972, - -972, 91, -972, -972, -972, 97, 574, -972, -972, -972, - -972, -972, -972, -972, 90, -972, -972, -972, -972, -972, - -972, -971, -972, -972, -972, 116, -972, -972, -972, 121, - 613, -972, -972, -972, -972, -972, -972, -972, -972, -960, - -972, -65, -972, 70, -972, 64, 65, 68, 69, -972, - -972, -972, -972, -972, -972, -972, 109, -972, -972, -108, - -46, -972, -972, -972, -972, -972, 119, -972, -972, -972, - 122, -972, 577, -972, -63, -972, -972, -972, -972, -972, - -42, -972, -972, -972, -972, -972, -35, -972, -972, -972, - 123, -972, -972, -972, 126, -972, 576, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, 75, -972, - -972, -972, 80, 623, -972, -972, -51, -972, -8, -972, - -39, -972, -972, -972, 125, -972, -972, -972, 128, -972, - 624, -55, -972, -15, -972, 3, -972, 376, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -957, -972, -972, -972, -972, - -972, 131, -972, -972, -972, -98, -972, -972, -972, -972, - -972, -972, -972, -972, 101, -972, -972, -972, -972, -972, - -972, -972, 94, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, 438, 578, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, -972, -972, -972, -972, - -972, -972, -972, -972, 444, 579, -972, -972, -972, -972, - -972, -972, 103, -972, -972, -105, -972, -972, -972, -972, - -972, -972, -122, -972, -972, -138, -972, -972, -972, -972, - -972, -972, -972, -972, -972, -972, 102, -972 + -976, -976, -976, -976, -976, 35, 40, 43, 45, 46, + 47, -976, 403, 50, -976, 51, -976, 53, 57, 58, + -976, 61, -976, 63, -976, -976, -976, -976, -976, -976, + 391, 594, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, 129, -976, + -976, -976, -976, -976, -976, 313, -976, 103, -976, -680, + 111, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -33, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, 92, -976, -976, -976, -976, + -976, -976, -976, -976, 74, -976, -976, -976, -976, -976, + -976, -976, 89, -976, -976, -976, 93, 561, -976, -976, + -976, -976, -976, -976, -976, 94, -976, -976, -976, -976, + -976, -976, -975, -976, -976, -976, 116, -976, -976, -976, + 122, 595, -976, -976, -976, -976, -976, -976, -976, -976, + -973, -976, -65, -976, 70, -976, 64, 65, 68, 69, + -976, -976, -976, -976, -976, -976, -976, 113, -976, -976, + -103, -46, -976, -976, -976, -976, -976, 123, -976, -976, + -976, 127, -976, 586, -976, -63, -976, -976, -976, -976, + -976, -42, -976, -976, -976, -976, -976, -35, -976, -976, + -976, 126, -976, -976, -976, 130, -976, 590, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, 75, + -976, -976, -976, 76, 622, -976, -976, -51, -976, -8, + -976, -39, -976, -976, -976, 119, -976, -976, -976, 131, + -976, 625, -55, -976, -15, -976, 3, -976, 370, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -964, -976, -976, -976, + -976, -976, 132, -976, -976, -976, -98, -976, -976, -976, + -976, -976, -976, -976, -976, 101, -976, -976, -976, -976, + -976, -976, -976, 97, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, 405, 573, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, -976, -976, -976, + -976, -976, -976, -976, -976, 444, 592, -976, -976, -976, + -976, -976, -976, 96, -976, -976, -100, -976, -976, -976, + -976, -976, -976, -123, -976, -976, -134, -976, -976, -976, + -976, -976, -976, -976, -976, -976, -976, 102, -976 }; const short Dhcp4Parser::yydefgoto_[] = { 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 36, 37, 38, 65, 704, - 82, 83, 39, 64, 79, 80, 725, 929, 1029, 1030, - 802, 41, 66, 85, 414, 86, 43, 67, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 440, 164, 165, 166, 167, 168, 169, 170, - 171, 446, 696, 172, 447, 173, 448, 174, 175, 176, - 473, 177, 474, 178, 179, 180, 181, 182, 418, 218, - 219, 45, 68, 220, 481, 221, 482, 728, 222, 483, - 731, 223, 183, 426, 184, 419, 775, 776, 777, 942, - 185, 427, 186, 428, 832, 833, 834, 972, 803, 804, - 805, 945, 1185, 806, 946, 807, 947, 808, 948, 809, - 810, 514, 811, 812, 813, 814, 815, 816, 817, 818, - 954, 819, 955, 820, 956, 821, 957, 822, 823, 824, - 960, 1196, 825, 826, 965, 827, 966, 828, 967, 829, - 968, 187, 463, 856, 857, 858, 859, 860, 861, 862, - 188, 469, 892, 893, 894, 895, 896, 189, 466, 871, - 872, 873, 995, 59, 75, 364, 365, 366, 527, 367, - 528, 190, 467, 880, 881, 882, 883, 884, 885, 886, - 887, 191, 452, 836, 837, 838, 975, 47, 69, 260, - 261, 262, 491, 263, 487, 264, 488, 265, 489, 266, - 492, 267, 495, 268, 494, 192, 193, 194, 195, 459, - 710, 273, 196, 456, 848, 849, 850, 984, 1105, 1106, - 197, 453, 53, 72, 840, 841, 842, 978, 55, 73, - 329, 330, 331, 332, 333, 334, 335, 513, 336, 517, - 337, 516, 338, 339, 518, 340, 198, 454, 844, 845, - 846, 981, 57, 74, 350, 351, 352, 353, 354, 522, - 355, 356, 357, 358, 275, 490, 931, 932, 933, 1031, - 49, 70, 288, 289, 290, 499, 199, 457, 200, 458, - 201, 465, 867, 868, 869, 992, 51, 71, 305, 306, - 307, 202, 423, 203, 424, 204, 425, 311, 509, 936, - 1034, 312, 503, 313, 504, 314, 506, 315, 505, 316, - 508, 317, 507, 318, 502, 282, 496, 937, 205, 464, - 864, 865, 989, 1130, 1131, 1132, 1133, 1134, 1207, 1135, - 206, 207, 470, 904, 905, 906, 1011, 907, 1012, 208, - 471, 914, 915, 916, 917, 1016, 918, 919, 1018, 209, - 472, 61, 76, 386, 387, 388, 389, 533, 390, 391, - 535, 392, 393, 394, 538, 763, 395, 539, 396, 532, - 397, 398, 399, 542, 400, 543, 401, 544, 402, 545, - 210, 417, 63, 77, 405, 406, 407, 548, 408, 211, - 476, 922, 923, 1022, 1167, 1168, 1169, 1170, 1219, 1171, - 1217, 1237, 1238, 1239, 1247, 1248, 1249, 1255, 1250, 1251, - 1252, 1253, 1259, 212, 477, 926, 927, 928 + 23, 24, 25, 26, 27, 36, 37, 38, 65, 708, + 82, 83, 39, 64, 79, 80, 729, 933, 1033, 1034, + 806, 41, 66, 85, 416, 86, 43, 67, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 442, 165, 166, 167, 168, 169, 170, 171, + 172, 448, 700, 173, 449, 174, 450, 175, 176, 177, + 475, 178, 476, 179, 180, 181, 182, 183, 184, 420, + 220, 221, 45, 68, 222, 484, 223, 485, 732, 224, + 486, 735, 225, 185, 428, 186, 421, 779, 780, 781, + 946, 187, 429, 188, 430, 836, 837, 838, 976, 807, + 808, 809, 949, 1189, 810, 950, 811, 951, 812, 952, + 813, 814, 517, 815, 816, 817, 818, 819, 820, 821, + 822, 958, 823, 959, 824, 960, 825, 961, 826, 827, + 828, 964, 1200, 829, 830, 969, 831, 970, 832, 971, + 833, 972, 189, 465, 860, 861, 862, 863, 864, 865, + 866, 190, 471, 896, 897, 898, 899, 900, 191, 468, + 875, 876, 877, 999, 59, 75, 366, 367, 368, 530, + 369, 531, 192, 469, 884, 885, 886, 887, 888, 889, + 890, 891, 193, 454, 840, 841, 842, 979, 47, 69, + 262, 263, 264, 494, 265, 490, 266, 491, 267, 492, + 268, 495, 269, 498, 270, 497, 194, 195, 196, 197, + 461, 714, 275, 198, 458, 852, 853, 854, 988, 1109, + 1110, 199, 455, 53, 72, 844, 845, 846, 982, 55, + 73, 331, 332, 333, 334, 335, 336, 337, 516, 338, + 520, 339, 519, 340, 341, 521, 342, 200, 456, 848, + 849, 850, 985, 57, 74, 352, 353, 354, 355, 356, + 525, 357, 358, 359, 360, 277, 493, 935, 936, 937, + 1035, 49, 70, 290, 291, 292, 502, 201, 459, 202, + 460, 203, 467, 871, 872, 873, 996, 51, 71, 307, + 308, 309, 204, 425, 205, 426, 206, 427, 313, 512, + 940, 1038, 314, 506, 315, 507, 316, 509, 317, 508, + 318, 511, 319, 510, 320, 505, 284, 499, 941, 207, + 466, 868, 869, 993, 1134, 1135, 1136, 1137, 1138, 1211, + 1139, 208, 209, 472, 908, 909, 910, 1015, 911, 1016, + 210, 473, 918, 919, 920, 921, 1020, 922, 923, 1022, + 211, 474, 61, 76, 388, 389, 390, 391, 536, 392, + 393, 538, 394, 395, 396, 541, 767, 397, 542, 398, + 535, 399, 400, 401, 545, 402, 546, 403, 547, 404, + 548, 212, 419, 63, 77, 407, 408, 409, 551, 410, + 213, 479, 926, 927, 1026, 1171, 1172, 1173, 1174, 1223, + 1175, 1221, 1241, 1242, 1243, 1251, 1252, 1253, 1259, 1254, + 1255, 1256, 1257, 1263, 214, 480, 930, 931, 932 }; const short Dhcp4Parser::yytable_[] = { - 149, 217, 236, 284, 301, 285, 327, 346, 363, 383, - 78, 348, 830, 1097, 279, 738, 308, 224, 276, 291, - 303, 742, 341, 359, 1098, 384, 319, 1113, 703, 240, - 278, 924, 349, 761, 274, 287, 302, 361, 362, 987, - 328, 347, 988, 213, 214, 148, 241, 215, 40, 29, - 216, 30, 990, 31, 280, 991, 309, 242, 81, 415, - 225, 277, 292, 304, 416, 342, 360, 42, 385, 44, - 479, 28, 281, 237, 310, 480, 93, 94, 95, 238, - 1193, 1194, 1195, 321, 343, 322, 323, 344, 345, 46, - 703, 243, 239, 48, 244, 485, 127, 128, 245, 84, - 486, 497, 246, 50, 247, 148, 498, 127, 128, 248, - 361, 362, 249, 500, 250, 251, 252, 409, 501, 253, - 254, 52, 255, 529, 403, 404, 256, 257, 530, 320, - 258, 54, 259, 269, 270, 127, 128, 271, 272, 1242, - 286, 124, 1243, 1244, 1245, 1246, 93, 94, 95, 546, - 726, 727, 899, 900, 547, 127, 128, 874, 875, 876, - 877, 878, 879, 550, 691, 692, 693, 694, 551, 293, - 1181, 1182, 1183, 1184, 56, 294, 295, 296, 297, 298, - 299, 479, 300, 99, 100, 101, 939, 762, 550, 321, - 58, 322, 323, 940, 148, 324, 325, 326, 695, 729, - 730, 87, 127, 128, 88, 148, 300, 934, 60, 485, - 123, 124, 321, 89, 941, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 321, 127, 128, 851, 852, 853, - 854, 943, 855, 148, 1097, 969, 944, 127, 128, 969, - 970, 1116, 1117, 1023, 971, 1098, 1024, 123, 1113, 32, - 33, 34, 35, 148, 410, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 1004, - 1009, 1013, 123, 124, 1005, 1010, 1014, 62, 411, 412, - 124, 127, 128, 125, 126, 413, 1064, 127, 128, 420, - 148, 1019, 129, 283, 127, 128, 1020, 130, 131, 132, - 133, 134, 1160, 421, 1161, 1162, 135, 127, 128, 233, - 546, 1240, 234, 148, 1241, 1021, 136, 422, 429, 137, - 430, 431, 888, 889, 890, 148, 138, 139, 1026, 510, - 969, 140, 497, 1027, 141, 1201, 1205, 1202, 142, 529, - 1220, 1206, 432, 500, 1212, 1221, 552, 553, 1223, 1260, - 706, 707, 708, 709, 1261, 908, 909, 910, 143, 144, - 145, 146, 433, 434, 435, 436, 437, 438, 439, 441, - 147, 442, 443, 444, 445, 449, 450, 451, 455, 148, - 460, 461, 462, 468, 475, 148, 478, 484, 493, 511, - 554, 515, 148, 512, 519, 521, 520, 523, 524, 525, - 526, 559, 149, 531, 534, 911, 536, 537, 217, 540, - 541, 549, 555, 556, 557, 558, 560, 561, 562, 563, - 236, 564, 565, 284, 224, 285, 566, 567, 573, 568, - 569, 570, 279, 571, 301, 572, 276, 579, 574, 291, - 575, 576, 577, 582, 327, 578, 308, 240, 278, 346, - 303, 580, 274, 348, 581, 287, 585, 583, 584, 586, - 341, 587, 588, 589, 241, 359, 302, 225, 590, 383, - 591, 592, 280, 593, 349, 242, 595, 596, 328, 277, - 597, 594, 292, 347, 598, 384, 309, 599, 600, 601, - 281, 237, 602, 304, 603, 604, 605, 238, 606, 607, - 608, 609, 610, 342, 310, 611, 612, 613, 360, 243, - 239, 614, 244, 615, 616, 618, 245, 619, 620, 621, - 246, 623, 247, 624, 625, 626, 627, 248, 385, 628, - 249, 630, 250, 251, 252, 631, 629, 253, 254, 632, - 255, 634, 636, 637, 256, 257, 638, 647, 258, 639, - 259, 269, 270, 640, 1224, 271, 272, 641, 642, 643, - 286, 645, 646, 778, 648, 649, 650, 653, 779, 780, - 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, - 791, 792, 793, 651, 657, 658, 794, 795, 796, 797, - 798, 799, 800, 801, 661, 662, 664, 654, 667, 668, - 671, 663, 672, 149, 655, 217, 660, 665, 673, 674, - 666, 676, 679, 680, 764, 770, 681, 682, 683, 677, - 669, 224, 687, 321, 670, 684, 91, 92, 93, 94, - 95, 685, 686, 688, 689, 690, 697, 698, 699, 891, - 901, 700, 383, 701, 702, 705, 925, 30, 711, 712, - 713, 714, 720, 721, 715, 897, 902, 912, 384, 716, - 717, 718, 719, 722, 225, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 723, 724, 735, 769, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 732, 226, - 227, 228, 733, 124, 734, 740, 831, 835, 898, 903, - 913, 385, 774, 839, 736, 229, 843, 127, 128, 230, - 231, 232, 129, 737, 847, 863, 866, 130, 131, 132, - 739, 741, 233, 743, 870, 234, 135, 91, 92, 93, - 94, 95, 921, 235, 148, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 930, 744, - 949, 745, 746, 747, 950, 748, 749, 750, 951, 952, - 953, 751, 958, 959, 752, 961, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 753, 754, 143, 144, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 127, 128, 755, 756, 124, 321, 962, 963, 758, 964, - 973, 974, 759, 976, 760, 148, 766, 767, 127, 128, - 977, 231, 979, 129, 980, 982, 983, 768, 130, 131, - 132, 985, 986, 233, 993, 994, 234, 996, 997, 1028, - 998, 999, 1000, 1001, 235, 1002, 1003, 1006, 1007, 1008, - 1015, 1017, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 1025, 1032, 1033, 1044, 1036, - 1035, 381, 382, 1037, 1039, 1040, 1041, 1042, 1043, 1045, - 1048, 1047, 1046, 1049, 1050, 1051, 1052, 1054, 1059, 143, - 144, 1053, 1055, 1056, 1060, 1061, 1058, 1057, 148, 1062, - 1141, 1142, 1143, 1144, 1152, 1153, 1156, 1145, 236, 1146, - 1148, 327, 1155, 1149, 346, 1158, 148, 1072, 348, 1099, - 279, 1150, 1118, 1175, 276, 301, 1157, 341, 363, 1110, - 359, 1173, 1176, 1108, 1127, 240, 278, 308, 1125, 349, - 274, 303, 891, 1123, 1076, 328, 901, 1179, 347, 1107, - 1180, 1096, 241, 1186, 1124, 1163, 1122, 302, 897, 925, - 280, 1077, 902, 242, 284, 1203, 285, 277, 912, 1111, - 342, 1165, 1078, 360, 1128, 1187, 1109, 309, 281, 237, - 291, 1126, 1188, 1189, 304, 238, 1190, 1112, 1073, 1164, - 1191, 1192, 1129, 1119, 1074, 310, 287, 243, 239, 1120, - 244, 898, 1197, 1198, 245, 903, 1079, 1075, 246, 1080, - 247, 913, 1121, 1081, 1166, 248, 1199, 1082, 249, 1083, - 250, 251, 252, 292, 1084, 253, 254, 1085, 255, 1086, - 1087, 1088, 256, 257, 1089, 1090, 258, 1091, 259, 269, - 270, 1092, 1093, 271, 272, 1094, 1204, 1095, 1101, 1102, - 1208, 1209, 1103, 1104, 1100, 1200, 1210, 1211, 1213, 1214, - 1215, 1218, 1222, 1226, 1227, 1229, 1231, 1236, 1234, 1256, - 1257, 1230, 1233, 1235, 1258, 1262, 1266, 622, 617, 1038, - 938, 1264, 1263, 1265, 1063, 1151, 1115, 1268, 1140, 757, - 1269, 1065, 1139, 1067, 1147, 1114, 1066, 1225, 652, 1069, - 1068, 286, 656, 659, 1216, 765, 1071, 1070, 1178, 771, - 633, 1177, 1228, 1159, 1154, 1232, 935, 773, 1254, 1138, - 1137, 1136, 1267, 635, 675, 772, 1172, 0, 1174, 678, - 0, 0, 0, 0, 0, 644, 0, 0, 1072, 0, - 1099, 0, 0, 1118, 0, 0, 0, 0, 0, 0, - 1110, 0, 0, 1163, 1108, 1127, 0, 920, 0, 1125, - 0, 0, 0, 0, 1123, 1076, 0, 0, 0, 1165, - 1107, 0, 1096, 0, 0, 1124, 0, 1122, 0, 0, - 0, 0, 1077, 0, 0, 0, 0, 1164, 0, 0, - 1111, 0, 0, 1078, 0, 1128, 0, 1109, 0, 0, - 0, 0, 1126, 0, 0, 0, 0, 0, 1112, 1073, - 0, 0, 1166, 1129, 1119, 1074, 0, 0, 0, 0, - 1120, 0, 0, 0, 0, 0, 0, 1079, 1075, 0, - 1080, 0, 0, 1121, 1081, 0, 0, 0, 1082, 0, - 1083, 0, 0, 0, 0, 1084, 0, 0, 1085, 0, - 1086, 1087, 1088, 0, 0, 1089, 1090, 0, 1091, 0, - 0, 0, 1092, 1093, 0, 0, 1094, 0, 1095, 1101, - 1102, 0, 0, 1103, 1104, 1100 + 150, 219, 238, 286, 303, 287, 329, 348, 365, 385, + 78, 350, 834, 1101, 281, 1102, 310, 226, 278, 293, + 305, 742, 343, 361, 1117, 386, 321, 746, 28, 242, + 280, 928, 351, 765, 276, 289, 304, 127, 128, 40, + 330, 349, 707, 127, 128, 149, 243, 29, 42, 30, + 81, 31, 363, 364, 282, 44, 311, 244, 127, 128, + 227, 279, 294, 306, 123, 344, 362, 46, 387, 84, + 417, 557, 283, 239, 312, 418, 413, 215, 216, 240, + 48, 217, 302, 938, 218, 912, 913, 914, 903, 904, + 482, 245, 241, 991, 246, 483, 992, 411, 247, 892, + 893, 894, 248, 488, 249, 707, 50, 994, 489, 250, + 995, 322, 251, 500, 252, 253, 254, 412, 501, 255, + 256, 149, 257, 503, 532, 52, 258, 259, 504, 533, + 260, 54, 261, 271, 272, 56, 915, 273, 274, 549, + 288, 58, 149, 553, 550, 60, 87, 1246, 554, 88, + 1247, 1248, 1249, 1250, 405, 406, 1027, 149, 89, 1028, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 127, + 128, 323, 62, 324, 325, 323, 482, 326, 327, 328, + 1244, 943, 414, 1245, 127, 128, 415, 766, 127, 128, + 695, 696, 697, 698, 878, 879, 880, 881, 882, 883, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 422, 699, 423, 123, 124, 93, + 94, 95, 553, 513, 1101, 488, 1102, 944, 125, 126, + 945, 947, 127, 128, 124, 1117, 948, 129, 32, 33, + 34, 35, 130, 131, 132, 133, 134, 285, 127, 128, + 973, 135, 363, 364, 1164, 974, 1165, 1166, 149, 424, + 973, 136, 1008, 235, 137, 975, 236, 1009, 514, 1013, + 515, 138, 139, 149, 1014, 1017, 140, 149, 431, 141, + 1018, 730, 731, 142, 124, 432, 1068, 323, 345, 324, + 325, 346, 347, 733, 734, 93, 94, 95, 127, 128, + 127, 128, 433, 143, 144, 145, 146, 147, 855, 856, + 857, 858, 295, 859, 434, 435, 148, 436, 296, 297, + 298, 299, 300, 301, 1023, 302, 437, 438, 439, 1024, + 549, 149, 99, 100, 101, 1025, 1030, 973, 500, 1209, + 532, 1031, 1205, 1206, 1210, 1216, 1224, 149, 555, 556, + 503, 1225, 1264, 523, 440, 1227, 441, 1265, 443, 123, + 124, 323, 710, 711, 712, 713, 1185, 1186, 1187, 1188, + 1197, 1198, 1199, 444, 127, 128, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 445, + 1120, 1121, 446, 447, 451, 452, 453, 149, 457, 149, + 462, 463, 464, 470, 477, 150, 478, 481, 487, 496, + 518, 219, 522, 524, 562, 526, 527, 528, 529, 577, + 534, 537, 539, 238, 540, 543, 286, 226, 287, 544, + 552, 558, 559, 560, 561, 281, 563, 303, 564, 278, + 565, 566, 293, 567, 568, 569, 570, 329, 571, 310, + 242, 280, 348, 305, 576, 276, 350, 572, 289, 573, + 574, 575, 582, 343, 578, 588, 579, 243, 361, 304, + 227, 589, 385, 149, 590, 282, 580, 351, 244, 585, + 586, 330, 279, 581, 583, 294, 349, 584, 386, 311, + 594, 587, 591, 283, 239, 592, 306, 593, 595, 596, + 240, 597, 598, 599, 600, 601, 344, 312, 602, 603, + 604, 362, 245, 241, 605, 246, 606, 607, 608, 247, + 609, 610, 611, 248, 612, 249, 613, 614, 615, 616, + 250, 387, 619, 251, 617, 252, 253, 254, 618, 620, + 255, 256, 622, 257, 623, 624, 627, 258, 259, 625, + 628, 260, 629, 261, 271, 272, 630, 631, 273, 274, + 1228, 782, 632, 288, 633, 634, 783, 784, 785, 786, + 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, + 797, 635, 636, 638, 798, 799, 800, 801, 802, 803, + 804, 805, 640, 641, 642, 655, 643, 644, 645, 646, + 647, 649, 650, 652, 653, 654, 657, 150, 651, 219, + 661, 662, 665, 666, 668, 671, 658, 672, 675, 774, + 676, 323, 659, 664, 677, 226, 667, 678, 680, 669, + 91, 92, 93, 94, 95, 683, 684, 685, 670, 686, + 687, 673, 674, 895, 905, 681, 385, 691, 692, 688, + 929, 689, 690, 693, 694, 701, 702, 703, 704, 901, + 906, 916, 386, 705, 706, 709, 715, 30, 227, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 716, + 717, 718, 724, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 719, 228, 229, 230, 720, 124, 127, 128, + 721, 722, 902, 907, 917, 387, 723, 726, 725, 231, + 727, 127, 128, 232, 233, 234, 129, 728, 739, 773, + 768, 130, 131, 132, 744, 736, 235, 737, 778, 236, + 135, 835, 738, 149, 839, 740, 741, 237, 743, 745, + 747, 843, 748, 749, 847, 91, 92, 93, 94, 95, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 750, 851, 751, 752, 867, 753, 383, + 384, 754, 755, 756, 757, 758, 759, 760, 762, 763, + 764, 770, 143, 144, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 870, 874, 925, 149, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 934, 771, + 149, 772, 124, 323, 953, 954, 955, 956, 957, 962, + 963, 965, 966, 967, 968, 1002, 127, 128, 977, 233, + 978, 129, 980, 981, 983, 984, 130, 131, 132, 986, + 987, 235, 989, 990, 236, 997, 998, 1000, 1001, 1032, + 1003, 1004, 237, 1005, 1006, 1007, 1010, 1011, 1012, 1019, + 1021, 1029, 1037, 1047, 1036, 761, 1041, 1040, 1039, 1043, + 1044, 1045, 1046, 1048, 1049, 1050, 1051, 1052, 1053, 1054, + 1055, 1058, 1061, 1063, 1056, 1057, 1059, 1060, 1062, 1064, + 1065, 1066, 1152, 1145, 1146, 1147, 1156, 143, 144, 1148, + 1157, 1160, 238, 1149, 1150, 329, 1162, 1153, 348, 1179, + 1159, 1076, 350, 1103, 281, 1154, 1122, 1161, 278, 303, + 1177, 343, 365, 1114, 361, 149, 1180, 1112, 1131, 242, + 280, 310, 1129, 351, 276, 305, 895, 1127, 1080, 330, + 905, 1183, 349, 1111, 1184, 1100, 243, 1190, 1128, 1167, + 1126, 304, 901, 929, 282, 1081, 906, 244, 286, 1191, + 287, 279, 916, 1115, 344, 1169, 1082, 362, 1132, 1192, + 1113, 311, 283, 239, 293, 1130, 1193, 1194, 306, 240, + 1195, 1116, 1077, 1168, 1196, 1201, 1133, 1123, 1078, 312, + 289, 245, 241, 1124, 246, 902, 1202, 1203, 247, 907, + 1083, 1079, 248, 1084, 249, 917, 1125, 1085, 1170, 250, + 1204, 1086, 251, 1087, 252, 253, 254, 294, 1088, 255, + 256, 1089, 257, 1090, 1091, 1092, 258, 259, 1093, 1094, + 260, 1095, 261, 271, 272, 1096, 1097, 273, 274, 1098, + 1207, 1099, 1105, 1106, 1208, 1212, 1107, 1108, 1104, 1214, + 1213, 1215, 1222, 1230, 1217, 1233, 1235, 1240, 1238, 1260, + 1261, 1262, 1266, 1270, 775, 621, 1042, 777, 769, 1218, + 1219, 1069, 626, 1119, 1067, 1226, 942, 1155, 1234, 1231, + 1144, 1267, 1143, 663, 1237, 637, 1239, 1071, 1268, 1269, + 1272, 1070, 1151, 1118, 1273, 288, 1229, 1073, 1220, 1072, + 656, 1181, 1182, 1075, 939, 1074, 1232, 1142, 1158, 660, + 1163, 1258, 679, 1176, 1236, 639, 1140, 1141, 924, 776, + 1271, 0, 1178, 0, 0, 0, 0, 0, 0, 648, + 0, 0, 1076, 0, 1103, 682, 0, 1122, 0, 0, + 0, 0, 0, 0, 1114, 0, 0, 1167, 1112, 1131, + 0, 0, 0, 1129, 0, 0, 0, 0, 1127, 1080, + 0, 0, 0, 1169, 1111, 0, 1100, 0, 0, 1128, + 0, 1126, 0, 0, 0, 0, 1081, 0, 0, 0, + 0, 1168, 0, 0, 1115, 0, 0, 1082, 0, 1132, + 0, 1113, 0, 0, 0, 0, 1130, 0, 0, 0, + 0, 0, 1116, 1077, 0, 0, 1170, 1133, 1123, 1078, + 0, 0, 0, 0, 1124, 0, 0, 0, 0, 0, + 0, 1083, 1079, 0, 1084, 0, 0, 1125, 1085, 0, + 0, 0, 1086, 0, 1087, 0, 0, 0, 0, 1088, + 0, 0, 1089, 0, 1090, 1091, 1092, 0, 0, 1093, + 1094, 0, 1095, 0, 0, 0, 1096, 1097, 0, 0, + 1098, 0, 1099, 1105, 1106, 0, 0, 1107, 1108, 1104 }; const short Dhcp4Parser::yycheck_[] = { 67, 68, 69, 70, 71, 70, 73, 74, 75, 76, - 64, 74, 688, 984, 69, 630, 71, 68, 69, 70, - 71, 636, 73, 74, 984, 76, 72, 984, 596, 69, - 69, 191, 74, 18, 69, 70, 71, 137, 138, 3, - 73, 74, 6, 15, 16, 205, 69, 19, 7, 5, - 22, 7, 3, 9, 69, 6, 71, 69, 205, 3, - 68, 69, 70, 71, 8, 73, 74, 7, 76, 7, - 3, 0, 69, 69, 71, 8, 28, 29, 30, 69, - 54, 55, 56, 94, 95, 96, 97, 98, 99, 7, - 658, 69, 69, 7, 69, 3, 107, 108, 69, 10, - 8, 3, 69, 7, 69, 205, 8, 107, 108, 69, - 137, 138, 69, 3, 69, 69, 69, 6, 8, 69, - 69, 7, 69, 3, 12, 13, 69, 69, 8, 34, - 69, 7, 69, 69, 69, 107, 108, 69, 69, 183, - 70, 93, 186, 187, 188, 189, 28, 29, 30, 3, - 17, 18, 152, 153, 8, 107, 108, 140, 141, 142, - 143, 144, 145, 3, 174, 175, 176, 177, 8, 121, - 35, 36, 37, 38, 7, 127, 128, 129, 130, 131, - 132, 3, 134, 65, 66, 67, 8, 172, 3, 94, - 7, 96, 97, 8, 205, 100, 101, 102, 208, 20, - 21, 11, 107, 108, 14, 205, 134, 135, 7, 3, - 92, 93, 94, 23, 8, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 94, 107, 108, 127, 128, 129, - 130, 3, 132, 205, 1205, 3, 8, 107, 108, 3, - 8, 123, 124, 3, 8, 1205, 6, 92, 1205, 205, - 206, 207, 208, 205, 3, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 3, - 3, 3, 92, 93, 8, 8, 8, 7, 4, 8, - 93, 107, 108, 103, 104, 3, 972, 107, 108, 4, - 205, 3, 112, 106, 107, 108, 8, 117, 118, 119, - 120, 121, 182, 4, 184, 185, 126, 107, 108, 122, - 3, 3, 125, 205, 6, 8, 136, 4, 4, 139, - 4, 4, 148, 149, 150, 205, 146, 147, 3, 8, - 3, 151, 3, 8, 154, 8, 3, 8, 158, 3, - 3, 8, 4, 3, 8, 8, 410, 411, 8, 3, - 113, 114, 115, 116, 8, 155, 156, 157, 178, 179, - 180, 181, 4, 4, 4, 4, 4, 4, 4, 4, - 190, 4, 4, 4, 4, 4, 4, 4, 4, 205, - 4, 4, 4, 4, 4, 205, 4, 4, 4, 3, - 205, 4, 205, 8, 4, 3, 8, 4, 4, 8, - 3, 208, 479, 4, 4, 205, 4, 4, 485, 4, - 4, 4, 4, 4, 4, 4, 208, 208, 4, 4, - 497, 4, 4, 500, 485, 500, 4, 4, 208, 206, - 206, 206, 497, 206, 511, 206, 497, 4, 207, 500, - 207, 207, 206, 208, 521, 206, 511, 497, 497, 526, - 511, 206, 497, 526, 206, 500, 4, 208, 208, 4, - 521, 4, 208, 208, 497, 526, 511, 485, 208, 546, - 4, 4, 497, 4, 526, 497, 4, 4, 521, 497, - 4, 206, 500, 526, 4, 546, 511, 208, 208, 208, - 497, 497, 4, 511, 4, 4, 4, 497, 4, 206, - 4, 4, 4, 521, 511, 4, 4, 4, 526, 497, - 497, 208, 497, 4, 4, 4, 497, 4, 4, 208, - 497, 4, 497, 4, 4, 4, 4, 497, 546, 4, - 497, 4, 497, 497, 497, 4, 206, 497, 497, 4, - 497, 4, 4, 4, 497, 497, 4, 206, 497, 4, - 497, 497, 497, 4, 1179, 497, 497, 4, 4, 4, - 500, 4, 4, 34, 4, 4, 4, 4, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 208, 4, 4, 57, 58, 59, 60, - 61, 62, 63, 64, 4, 4, 4, 208, 4, 4, - 4, 206, 4, 680, 208, 682, 208, 206, 4, 4, - 206, 4, 4, 7, 173, 679, 7, 7, 7, 206, - 208, 682, 7, 94, 208, 205, 26, 27, 28, 29, - 30, 205, 205, 7, 5, 205, 205, 205, 5, 716, - 717, 5, 719, 5, 5, 205, 723, 7, 5, 5, - 5, 5, 205, 205, 7, 716, 717, 718, 719, 7, - 7, 7, 7, 5, 682, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 7, 5, 5, 5, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 205, 89, - 90, 91, 205, 93, 205, 7, 7, 7, 716, 717, - 718, 719, 24, 7, 205, 105, 7, 107, 108, 109, - 110, 111, 112, 205, 7, 7, 7, 117, 118, 119, - 205, 205, 122, 205, 7, 125, 126, 26, 27, 28, - 29, 30, 7, 133, 205, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 7, 205, - 4, 205, 205, 205, 4, 205, 205, 205, 4, 4, - 4, 205, 4, 4, 205, 4, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 205, 205, 178, 179, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 107, 108, 205, 205, 93, 94, 4, 4, 205, 4, - 6, 3, 205, 6, 205, 205, 205, 205, 107, 108, - 3, 110, 6, 112, 3, 6, 3, 205, 117, 118, - 119, 6, 3, 122, 6, 3, 125, 6, 3, 205, - 4, 4, 4, 4, 133, 4, 4, 4, 4, 4, - 4, 4, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 4, 6, 3, 208, 6, - 8, 178, 179, 4, 4, 4, 4, 4, 206, 206, - 4, 206, 208, 4, 4, 4, 206, 4, 4, 178, - 179, 206, 206, 206, 4, 4, 206, 208, 205, 4, - 206, 206, 206, 206, 4, 4, 4, 206, 975, 206, - 208, 978, 208, 206, 981, 4, 205, 984, 981, 984, - 975, 206, 989, 6, 975, 992, 206, 978, 995, 984, - 981, 208, 3, 984, 989, 975, 975, 992, 989, 981, - 975, 992, 1009, 989, 984, 978, 1013, 4, 981, 984, - 205, 984, 975, 205, 989, 1022, 989, 992, 1009, 1026, - 975, 984, 1013, 975, 1031, 8, 1031, 975, 1019, 984, - 978, 1022, 984, 981, 989, 205, 984, 992, 975, 975, - 1031, 989, 205, 205, 992, 975, 205, 984, 984, 1022, - 205, 205, 989, 989, 984, 992, 1031, 975, 975, 989, - 975, 1009, 205, 205, 975, 1013, 984, 984, 975, 984, - 975, 1019, 989, 984, 1022, 975, 205, 984, 975, 984, - 975, 975, 975, 1031, 984, 975, 975, 984, 975, 984, - 984, 984, 975, 975, 984, 984, 975, 984, 975, 975, - 975, 984, 984, 975, 975, 984, 8, 984, 984, 984, - 4, 8, 984, 984, 984, 205, 3, 8, 205, 205, - 205, 4, 205, 4, 208, 4, 4, 7, 5, 4, - 4, 206, 205, 205, 4, 4, 4, 485, 479, 943, - 769, 206, 208, 206, 969, 1009, 987, 205, 997, 658, - 205, 974, 995, 977, 1004, 986, 975, 1205, 521, 980, - 978, 1031, 526, 529, 1158, 671, 983, 981, 1033, 680, - 497, 1031, 1210, 1019, 1013, 1220, 740, 682, 1240, 994, - 992, 990, 1260, 500, 546, 681, 1023, -1, 1026, 550, - -1, -1, -1, -1, -1, 511, -1, -1, 1205, -1, - 1205, -1, -1, 1210, -1, -1, -1, -1, -1, -1, - 1205, -1, -1, 1220, 1205, 1210, -1, 719, -1, 1210, - -1, -1, -1, -1, 1210, 1205, -1, -1, -1, 1220, - 1205, -1, 1205, -1, -1, 1210, -1, 1210, -1, -1, - -1, -1, 1205, -1, -1, -1, -1, 1220, -1, -1, - 1205, -1, -1, 1205, -1, 1210, -1, 1205, -1, -1, - -1, -1, 1210, -1, -1, -1, -1, -1, 1205, 1205, - -1, -1, 1220, 1210, 1210, 1205, -1, -1, -1, -1, - 1210, -1, -1, -1, -1, -1, -1, 1205, 1205, -1, - 1205, -1, -1, 1210, 1205, -1, -1, -1, 1205, -1, - 1205, -1, -1, -1, -1, 1205, -1, -1, 1205, -1, - 1205, 1205, 1205, -1, -1, 1205, 1205, -1, 1205, -1, - -1, -1, 1205, 1205, -1, -1, 1205, -1, 1205, 1205, - 1205, -1, -1, 1205, 1205, 1205 + 64, 74, 692, 988, 69, 988, 71, 68, 69, 70, + 71, 634, 73, 74, 988, 76, 72, 640, 0, 69, + 69, 192, 74, 18, 69, 70, 71, 107, 108, 7, + 73, 74, 599, 107, 108, 206, 69, 5, 7, 7, + 206, 9, 137, 138, 69, 7, 71, 69, 107, 108, + 68, 69, 70, 71, 92, 73, 74, 7, 76, 10, + 3, 206, 69, 69, 71, 8, 4, 15, 16, 69, + 7, 19, 134, 135, 22, 155, 156, 157, 152, 153, + 3, 69, 69, 3, 69, 8, 6, 6, 69, 148, + 149, 150, 69, 3, 69, 662, 7, 3, 8, 69, + 6, 34, 69, 3, 69, 69, 69, 3, 8, 69, + 69, 206, 69, 3, 3, 7, 69, 69, 8, 8, + 69, 7, 69, 69, 69, 7, 206, 69, 69, 3, + 70, 7, 206, 3, 8, 7, 11, 184, 8, 14, + 187, 188, 189, 190, 12, 13, 3, 206, 23, 6, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 107, + 108, 94, 7, 96, 97, 94, 3, 100, 101, 102, + 3, 8, 8, 6, 107, 108, 3, 172, 107, 108, + 174, 175, 176, 177, 140, 141, 142, 143, 144, 145, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 4, 209, 4, 92, 93, 28, + 29, 30, 3, 8, 1209, 3, 1209, 8, 103, 104, + 8, 3, 107, 108, 93, 1209, 8, 112, 206, 207, + 208, 209, 117, 118, 119, 120, 121, 106, 107, 108, + 3, 126, 137, 138, 183, 8, 185, 186, 206, 4, + 3, 136, 3, 122, 139, 8, 125, 8, 3, 3, + 8, 146, 147, 206, 8, 3, 151, 206, 4, 154, + 8, 17, 18, 158, 93, 4, 976, 94, 95, 96, + 97, 98, 99, 20, 21, 28, 29, 30, 107, 108, + 107, 108, 4, 178, 179, 180, 181, 182, 127, 128, + 129, 130, 121, 132, 4, 4, 191, 4, 127, 128, + 129, 130, 131, 132, 3, 134, 4, 4, 4, 8, + 3, 206, 65, 66, 67, 8, 3, 3, 3, 3, + 3, 8, 8, 8, 8, 8, 3, 206, 412, 413, + 3, 8, 3, 8, 4, 8, 4, 8, 4, 92, + 93, 94, 113, 114, 115, 116, 35, 36, 37, 38, + 54, 55, 56, 4, 107, 108, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 4, + 123, 124, 4, 4, 4, 4, 4, 206, 4, 206, + 4, 4, 4, 4, 4, 482, 4, 4, 4, 4, + 4, 488, 4, 3, 209, 4, 4, 8, 3, 208, + 4, 4, 4, 500, 4, 4, 503, 488, 503, 4, + 4, 4, 4, 4, 4, 500, 209, 514, 209, 500, + 4, 4, 503, 4, 4, 4, 4, 524, 207, 514, + 500, 500, 529, 514, 209, 500, 529, 207, 503, 207, + 207, 207, 4, 524, 208, 4, 208, 500, 529, 514, + 488, 4, 549, 206, 4, 500, 207, 529, 500, 209, + 209, 524, 500, 207, 207, 503, 529, 207, 549, 514, + 4, 209, 209, 500, 500, 209, 514, 209, 4, 4, + 500, 207, 4, 4, 4, 4, 524, 514, 209, 209, + 209, 529, 500, 500, 4, 500, 4, 4, 4, 500, + 4, 207, 4, 500, 4, 500, 4, 4, 4, 4, + 500, 549, 4, 500, 209, 500, 500, 500, 209, 4, + 500, 500, 4, 500, 4, 4, 4, 500, 500, 209, + 4, 500, 4, 500, 500, 500, 4, 4, 500, 500, + 1183, 34, 4, 503, 207, 4, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 4, 4, 4, 57, 58, 59, 60, 61, 62, + 63, 64, 4, 4, 4, 209, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 684, 207, 686, + 4, 4, 4, 4, 4, 4, 209, 4, 4, 683, + 4, 94, 209, 209, 4, 686, 207, 4, 4, 207, + 26, 27, 28, 29, 30, 4, 7, 7, 207, 7, + 7, 209, 209, 720, 721, 207, 723, 7, 7, 206, + 727, 206, 206, 5, 206, 206, 206, 5, 5, 720, + 721, 722, 723, 5, 5, 206, 5, 7, 686, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 5, + 5, 5, 206, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 7, 89, 90, 91, 7, 93, 107, 108, + 7, 7, 720, 721, 722, 723, 7, 5, 206, 105, + 7, 107, 108, 109, 110, 111, 112, 5, 5, 5, + 173, 117, 118, 119, 7, 206, 122, 206, 24, 125, + 126, 7, 206, 206, 7, 206, 206, 133, 206, 206, + 206, 7, 206, 206, 7, 26, 27, 28, 29, 30, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 206, 7, 206, 206, 7, 206, 178, + 179, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 178, 179, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 7, 7, 7, 206, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 7, 206, + 206, 206, 93, 94, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 107, 108, 6, 110, + 3, 112, 6, 3, 6, 3, 117, 118, 119, 6, + 3, 122, 6, 3, 125, 6, 3, 6, 3, 206, + 4, 4, 133, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 3, 207, 6, 662, 4, 6, 8, 4, + 4, 4, 4, 209, 207, 209, 207, 4, 4, 4, + 4, 4, 209, 4, 207, 207, 207, 207, 207, 4, + 4, 4, 209, 207, 207, 207, 4, 178, 179, 207, + 4, 4, 979, 207, 207, 982, 4, 207, 985, 6, + 209, 988, 985, 988, 979, 207, 993, 207, 979, 996, + 209, 982, 999, 988, 985, 206, 3, 988, 993, 979, + 979, 996, 993, 985, 979, 996, 1013, 993, 988, 982, + 1017, 4, 985, 988, 206, 988, 979, 206, 993, 1026, + 993, 996, 1013, 1030, 979, 988, 1017, 979, 1035, 206, + 1035, 979, 1023, 988, 982, 1026, 988, 985, 993, 206, + 988, 996, 979, 979, 1035, 993, 206, 206, 996, 979, + 206, 988, 988, 1026, 206, 206, 993, 993, 988, 996, + 1035, 979, 979, 993, 979, 1013, 206, 206, 979, 1017, + 988, 988, 979, 988, 979, 1023, 993, 988, 1026, 979, + 206, 988, 979, 988, 979, 979, 979, 1035, 988, 979, + 979, 988, 979, 988, 988, 988, 979, 979, 988, 988, + 979, 988, 979, 979, 979, 988, 988, 979, 979, 988, + 8, 988, 988, 988, 8, 4, 988, 988, 988, 3, + 8, 8, 4, 4, 206, 4, 4, 7, 5, 4, + 4, 4, 4, 4, 684, 482, 947, 686, 675, 206, + 206, 978, 488, 991, 973, 206, 773, 1013, 207, 209, + 1001, 209, 999, 532, 206, 500, 206, 981, 207, 207, + 206, 979, 1008, 990, 206, 1035, 1209, 984, 1162, 982, + 524, 1035, 1037, 987, 744, 985, 1214, 998, 1017, 529, + 1023, 1244, 549, 1027, 1224, 503, 994, 996, 723, 685, + 1264, -1, 1030, -1, -1, -1, -1, -1, -1, 514, + -1, -1, 1209, -1, 1209, 553, -1, 1214, -1, -1, + -1, -1, -1, -1, 1209, -1, -1, 1224, 1209, 1214, + -1, -1, -1, 1214, -1, -1, -1, -1, 1214, 1209, + -1, -1, -1, 1224, 1209, -1, 1209, -1, -1, 1214, + -1, 1214, -1, -1, -1, -1, 1209, -1, -1, -1, + -1, 1224, -1, -1, 1209, -1, -1, 1209, -1, 1214, + -1, 1209, -1, -1, -1, -1, 1214, -1, -1, -1, + -1, -1, 1209, 1209, -1, -1, 1224, 1214, 1214, 1209, + -1, -1, -1, -1, 1214, -1, -1, -1, -1, -1, + -1, 1209, 1209, -1, 1209, -1, -1, 1214, 1209, -1, + -1, -1, 1209, -1, 1209, -1, -1, -1, -1, 1209, + -1, -1, 1209, -1, 1209, 1209, 1209, -1, -1, 1209, + 1209, -1, 1209, -1, -1, -1, 1209, 1209, -1, -1, + 1209, -1, 1209, 1209, 1209, -1, -1, 1209, 1209, 1209 }; const short Dhcp4Parser::yystos_[] = { - 0, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 0, 5, - 7, 9, 205, 206, 207, 208, 224, 225, 226, 231, - 7, 240, 7, 245, 7, 290, 7, 406, 7, 489, - 7, 505, 7, 441, 7, 447, 7, 471, 7, 382, - 7, 570, 7, 601, 232, 227, 241, 246, 291, 407, - 490, 506, 442, 448, 472, 383, 571, 602, 224, 233, - 234, 205, 229, 230, 10, 242, 244, 11, 14, 23, + 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 0, 5, + 7, 9, 206, 207, 208, 209, 225, 226, 227, 232, + 7, 241, 7, 246, 7, 292, 7, 408, 7, 491, + 7, 507, 7, 443, 7, 449, 7, 473, 7, 384, + 7, 572, 7, 603, 233, 228, 242, 247, 293, 409, + 492, 508, 444, 450, 474, 385, 573, 604, 225, 234, + 235, 206, 230, 231, 10, 243, 245, 11, 14, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 92, 93, 103, 104, 107, 108, 112, 117, 118, 119, 120, 121, 126, 136, 139, 146, 147, - 151, 154, 158, 178, 179, 180, 181, 190, 205, 239, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 262, 263, 264, 265, 266, 267, - 268, 269, 272, 274, 276, 277, 278, 280, 282, 283, - 284, 285, 286, 301, 303, 309, 311, 360, 369, 376, - 390, 400, 424, 425, 426, 427, 431, 439, 465, 495, - 497, 499, 510, 512, 514, 537, 549, 550, 558, 568, - 599, 608, 632, 15, 16, 19, 22, 239, 288, 289, - 292, 294, 297, 300, 495, 497, 89, 90, 91, 105, - 109, 110, 111, 122, 125, 133, 239, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 264, 265, 266, - 267, 268, 269, 272, 274, 276, 277, 278, 280, 282, - 408, 409, 410, 412, 414, 416, 418, 420, 422, 424, - 425, 426, 427, 430, 465, 483, 495, 497, 499, 510, - 512, 514, 534, 106, 239, 420, 422, 465, 491, 492, - 493, 495, 497, 121, 127, 128, 129, 130, 131, 132, - 134, 239, 465, 495, 497, 507, 508, 509, 510, 512, - 514, 516, 520, 522, 524, 526, 528, 530, 532, 439, - 34, 94, 96, 97, 100, 101, 102, 239, 329, 449, - 450, 451, 452, 453, 454, 455, 457, 459, 461, 462, - 464, 495, 497, 95, 98, 99, 239, 329, 453, 459, - 473, 474, 475, 476, 477, 479, 480, 481, 482, 495, - 497, 137, 138, 239, 384, 385, 386, 388, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 178, 179, 239, 495, 497, 572, 573, 574, 575, - 577, 578, 580, 581, 582, 585, 587, 589, 590, 591, - 593, 595, 597, 12, 13, 603, 604, 605, 607, 6, - 3, 4, 8, 3, 243, 3, 8, 600, 287, 304, - 4, 4, 4, 511, 513, 515, 302, 310, 312, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 261, 4, 4, 4, 4, 4, 270, 273, 275, 4, - 4, 4, 401, 440, 466, 4, 432, 496, 498, 428, - 4, 4, 4, 361, 538, 500, 377, 391, 4, 370, - 551, 559, 569, 279, 281, 4, 609, 633, 4, 3, - 8, 293, 295, 298, 4, 3, 8, 413, 415, 417, - 484, 411, 419, 4, 423, 421, 535, 3, 8, 494, - 3, 8, 533, 521, 523, 527, 525, 531, 529, 517, - 8, 3, 8, 456, 330, 4, 460, 458, 463, 4, - 8, 3, 478, 4, 4, 8, 3, 387, 389, 3, - 8, 4, 588, 576, 4, 579, 4, 4, 583, 586, - 4, 4, 592, 594, 596, 598, 3, 8, 606, 4, - 3, 8, 224, 224, 205, 4, 4, 4, 4, 208, - 208, 208, 4, 4, 4, 4, 4, 4, 206, 206, - 206, 206, 206, 208, 207, 207, 207, 206, 206, 4, - 206, 206, 208, 208, 208, 4, 4, 4, 208, 208, - 208, 4, 4, 4, 206, 4, 4, 4, 4, 208, - 208, 208, 4, 4, 4, 4, 4, 206, 4, 4, - 4, 4, 4, 4, 208, 4, 4, 248, 4, 4, - 4, 208, 289, 4, 4, 4, 4, 4, 4, 206, - 4, 4, 4, 409, 4, 492, 4, 4, 4, 4, - 4, 4, 4, 4, 509, 4, 4, 206, 4, 4, - 4, 208, 451, 4, 208, 208, 475, 4, 4, 385, - 208, 4, 4, 206, 4, 206, 206, 4, 4, 208, - 208, 4, 4, 4, 4, 573, 4, 206, 604, 4, - 7, 7, 7, 7, 205, 205, 205, 7, 7, 5, - 205, 174, 175, 176, 177, 208, 271, 205, 205, 5, - 5, 5, 5, 226, 228, 205, 113, 114, 115, 116, - 429, 5, 5, 5, 5, 7, 7, 7, 7, 7, - 205, 205, 5, 7, 5, 235, 17, 18, 296, 20, - 21, 299, 205, 205, 205, 5, 205, 205, 235, 205, - 7, 205, 235, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 228, 205, 205, - 205, 18, 172, 584, 173, 271, 205, 205, 205, 5, - 224, 247, 603, 288, 24, 305, 306, 307, 34, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 57, 58, 59, 60, 61, 62, - 63, 64, 239, 317, 318, 319, 322, 324, 326, 328, - 329, 331, 332, 333, 334, 335, 336, 337, 338, 340, - 342, 344, 346, 347, 348, 351, 352, 354, 356, 358, - 317, 7, 313, 314, 315, 7, 402, 403, 404, 7, - 443, 444, 445, 7, 467, 468, 469, 7, 433, 434, - 435, 127, 128, 129, 130, 132, 362, 363, 364, 365, - 366, 367, 368, 7, 539, 540, 7, 501, 502, 503, - 7, 378, 379, 380, 140, 141, 142, 143, 144, 145, - 392, 393, 394, 395, 396, 397, 398, 399, 148, 149, - 150, 239, 371, 372, 373, 374, 375, 495, 497, 152, - 153, 239, 495, 497, 552, 553, 554, 556, 155, 156, - 157, 205, 495, 497, 560, 561, 562, 563, 565, 566, - 572, 7, 610, 611, 191, 239, 634, 635, 636, 236, - 7, 485, 486, 487, 135, 516, 518, 536, 313, 8, - 8, 8, 308, 3, 8, 320, 323, 325, 327, 4, - 4, 4, 4, 4, 339, 341, 343, 345, 4, 4, - 349, 4, 4, 4, 4, 353, 355, 357, 359, 3, - 8, 8, 316, 6, 3, 405, 6, 3, 446, 6, - 3, 470, 6, 3, 436, 6, 3, 3, 6, 541, - 3, 6, 504, 6, 3, 381, 6, 3, 4, 4, - 4, 4, 4, 4, 3, 8, 4, 4, 4, 3, - 8, 555, 557, 3, 8, 4, 564, 4, 567, 3, - 8, 8, 612, 3, 6, 4, 3, 8, 205, 237, - 238, 488, 6, 3, 519, 8, 6, 4, 306, 4, - 4, 4, 4, 206, 208, 206, 208, 206, 4, 4, - 4, 4, 206, 206, 4, 206, 206, 208, 206, 4, - 4, 4, 4, 318, 317, 315, 408, 404, 449, 445, - 473, 469, 239, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 264, 265, 266, 267, 268, 269, 272, - 274, 276, 277, 278, 280, 282, 329, 400, 418, 420, - 422, 424, 425, 426, 427, 437, 438, 465, 495, 497, - 510, 512, 514, 534, 435, 363, 123, 124, 239, 249, - 250, 251, 329, 439, 465, 495, 497, 510, 512, 514, - 542, 543, 544, 545, 546, 548, 540, 507, 503, 384, - 380, 206, 206, 206, 206, 206, 206, 393, 208, 206, - 206, 372, 4, 4, 553, 208, 4, 206, 4, 561, - 182, 184, 185, 239, 329, 495, 497, 613, 614, 615, - 616, 618, 611, 208, 635, 6, 3, 491, 487, 4, - 205, 35, 36, 37, 38, 321, 205, 205, 205, 205, - 205, 205, 205, 54, 55, 56, 350, 205, 205, 205, - 205, 8, 8, 8, 8, 3, 8, 547, 4, 8, - 3, 8, 8, 205, 205, 205, 224, 619, 4, 617, - 3, 8, 205, 8, 235, 438, 4, 208, 544, 4, - 206, 4, 614, 205, 5, 205, 7, 620, 621, 622, - 3, 6, 183, 186, 187, 188, 189, 623, 624, 625, - 627, 628, 629, 630, 621, 626, 4, 4, 4, 631, - 3, 8, 4, 208, 206, 206, 4, 624, 205, 205 + 151, 154, 158, 178, 179, 180, 181, 182, 191, 206, + 240, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 263, 264, 265, 266, 267, + 268, 269, 270, 273, 275, 277, 278, 279, 281, 283, + 284, 285, 286, 287, 288, 303, 305, 311, 313, 362, + 371, 378, 392, 402, 426, 427, 428, 429, 433, 441, + 467, 497, 499, 501, 512, 514, 516, 539, 551, 552, + 560, 570, 601, 610, 634, 15, 16, 19, 22, 240, + 290, 291, 294, 296, 299, 302, 497, 499, 89, 90, + 91, 105, 109, 110, 111, 122, 125, 133, 240, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 265, + 266, 267, 268, 269, 270, 273, 275, 277, 278, 279, + 281, 283, 410, 411, 412, 414, 416, 418, 420, 422, + 424, 426, 427, 428, 429, 432, 467, 485, 497, 499, + 501, 512, 514, 516, 536, 106, 240, 422, 424, 467, + 493, 494, 495, 497, 499, 121, 127, 128, 129, 130, + 131, 132, 134, 240, 467, 497, 499, 509, 510, 511, + 512, 514, 516, 518, 522, 524, 526, 528, 530, 532, + 534, 441, 34, 94, 96, 97, 100, 101, 102, 240, + 331, 451, 452, 453, 454, 455, 456, 457, 459, 461, + 463, 464, 466, 497, 499, 95, 98, 99, 240, 331, + 455, 461, 475, 476, 477, 478, 479, 481, 482, 483, + 484, 497, 499, 137, 138, 240, 386, 387, 388, 390, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 178, 179, 240, 497, 499, 574, 575, + 576, 577, 579, 580, 582, 583, 584, 587, 589, 591, + 592, 593, 595, 597, 599, 12, 13, 605, 606, 607, + 609, 6, 3, 4, 8, 3, 244, 3, 8, 602, + 289, 306, 4, 4, 4, 513, 515, 517, 304, 312, + 314, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 262, 4, 4, 4, 4, 4, 271, 274, + 276, 4, 4, 4, 403, 442, 468, 4, 434, 498, + 500, 430, 4, 4, 4, 363, 540, 502, 379, 393, + 4, 372, 553, 561, 571, 280, 282, 4, 4, 611, + 635, 4, 3, 8, 295, 297, 300, 4, 3, 8, + 415, 417, 419, 486, 413, 421, 4, 425, 423, 537, + 3, 8, 496, 3, 8, 535, 523, 525, 529, 527, + 533, 531, 519, 8, 3, 8, 458, 332, 4, 462, + 460, 465, 4, 8, 3, 480, 4, 4, 8, 3, + 389, 391, 3, 8, 4, 590, 578, 4, 581, 4, + 4, 585, 588, 4, 4, 594, 596, 598, 600, 3, + 8, 608, 4, 3, 8, 225, 225, 206, 4, 4, + 4, 4, 209, 209, 209, 4, 4, 4, 4, 4, + 4, 207, 207, 207, 207, 207, 209, 208, 208, 208, + 207, 207, 4, 207, 207, 209, 209, 209, 4, 4, + 4, 209, 209, 209, 4, 4, 4, 207, 4, 4, + 4, 4, 209, 209, 209, 4, 4, 4, 4, 4, + 207, 4, 4, 4, 4, 4, 4, 209, 209, 4, + 4, 249, 4, 4, 4, 209, 291, 4, 4, 4, + 4, 4, 4, 207, 4, 4, 4, 411, 4, 494, + 4, 4, 4, 4, 4, 4, 4, 4, 511, 4, + 4, 207, 4, 4, 4, 209, 453, 4, 209, 209, + 477, 4, 4, 387, 209, 4, 4, 207, 4, 207, + 207, 4, 4, 209, 209, 4, 4, 4, 4, 575, + 4, 207, 606, 4, 7, 7, 7, 7, 206, 206, + 206, 7, 7, 5, 206, 174, 175, 176, 177, 209, + 272, 206, 206, 5, 5, 5, 5, 227, 229, 206, + 113, 114, 115, 116, 431, 5, 5, 5, 5, 7, + 7, 7, 7, 7, 206, 206, 5, 7, 5, 236, + 17, 18, 298, 20, 21, 301, 206, 206, 206, 5, + 206, 206, 236, 206, 7, 206, 236, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 229, 206, 206, 206, 18, 172, 586, 173, 272, + 206, 206, 206, 5, 225, 248, 605, 290, 24, 307, + 308, 309, 34, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 57, 58, + 59, 60, 61, 62, 63, 64, 240, 319, 320, 321, + 324, 326, 328, 330, 331, 333, 334, 335, 336, 337, + 338, 339, 340, 342, 344, 346, 348, 349, 350, 353, + 354, 356, 358, 360, 319, 7, 315, 316, 317, 7, + 404, 405, 406, 7, 445, 446, 447, 7, 469, 470, + 471, 7, 435, 436, 437, 127, 128, 129, 130, 132, + 364, 365, 366, 367, 368, 369, 370, 7, 541, 542, + 7, 503, 504, 505, 7, 380, 381, 382, 140, 141, + 142, 143, 144, 145, 394, 395, 396, 397, 398, 399, + 400, 401, 148, 149, 150, 240, 373, 374, 375, 376, + 377, 497, 499, 152, 153, 240, 497, 499, 554, 555, + 556, 558, 155, 156, 157, 206, 497, 499, 562, 563, + 564, 565, 567, 568, 574, 7, 612, 613, 192, 240, + 636, 637, 638, 237, 7, 487, 488, 489, 135, 518, + 520, 538, 315, 8, 8, 8, 310, 3, 8, 322, + 325, 327, 329, 4, 4, 4, 4, 4, 341, 343, + 345, 347, 4, 4, 351, 4, 4, 4, 4, 355, + 357, 359, 361, 3, 8, 8, 318, 6, 3, 407, + 6, 3, 448, 6, 3, 472, 6, 3, 438, 6, + 3, 3, 6, 543, 3, 6, 506, 6, 3, 383, + 6, 3, 4, 4, 4, 4, 4, 4, 3, 8, + 4, 4, 4, 3, 8, 557, 559, 3, 8, 4, + 566, 4, 569, 3, 8, 8, 614, 3, 6, 4, + 3, 8, 206, 238, 239, 490, 6, 3, 521, 8, + 6, 4, 308, 4, 4, 4, 4, 207, 209, 207, + 209, 207, 4, 4, 4, 4, 207, 207, 4, 207, + 207, 209, 207, 4, 4, 4, 4, 320, 319, 317, + 410, 406, 451, 447, 475, 471, 240, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 265, 266, 267, + 268, 269, 270, 273, 275, 277, 278, 279, 281, 283, + 331, 402, 420, 422, 424, 426, 427, 428, 429, 439, + 440, 467, 497, 499, 512, 514, 516, 536, 437, 365, + 123, 124, 240, 250, 251, 252, 331, 441, 467, 497, + 499, 512, 514, 516, 544, 545, 546, 547, 548, 550, + 542, 509, 505, 386, 382, 207, 207, 207, 207, 207, + 207, 395, 209, 207, 207, 374, 4, 4, 555, 209, + 4, 207, 4, 563, 183, 185, 186, 240, 331, 497, + 499, 615, 616, 617, 618, 620, 613, 209, 637, 6, + 3, 493, 489, 4, 206, 35, 36, 37, 38, 323, + 206, 206, 206, 206, 206, 206, 206, 54, 55, 56, + 352, 206, 206, 206, 206, 8, 8, 8, 8, 3, + 8, 549, 4, 8, 3, 8, 8, 206, 206, 206, + 225, 621, 4, 619, 3, 8, 206, 8, 236, 440, + 4, 209, 546, 4, 207, 4, 616, 206, 5, 206, + 7, 622, 623, 624, 3, 6, 184, 187, 188, 189, + 190, 625, 626, 627, 629, 630, 631, 632, 623, 628, + 4, 4, 4, 633, 3, 8, 4, 209, 207, 207, + 4, 626, 206, 206 }; const short Dhcp4Parser::yyr1_[] = { - 0, 209, 211, 210, 212, 210, 213, 210, 214, 210, - 215, 210, 216, 210, 217, 210, 218, 210, 219, 210, - 220, 210, 221, 210, 222, 210, 223, 210, 224, 224, - 224, 224, 224, 224, 224, 225, 227, 226, 228, 229, - 229, 230, 230, 230, 232, 231, 233, 233, 234, 234, - 234, 236, 235, 237, 237, 238, 238, 238, 239, 241, - 240, 243, 242, 242, 244, 246, 245, 247, 247, 247, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 261, 260, 262, 263, 264, 265, 266, - 267, 268, 270, 269, 271, 271, 271, 271, 271, 273, - 272, 275, 274, 276, 277, 279, 278, 281, 280, 282, - 283, 284, 285, 287, 286, 288, 288, 288, 289, 289, - 289, 289, 289, 289, 289, 291, 290, 293, 292, 295, - 294, 296, 296, 298, 297, 299, 299, 300, 302, 301, - 304, 303, 305, 305, 305, 306, 308, 307, 310, 309, - 312, 311, 313, 313, 314, 314, 314, 316, 315, 317, - 317, 317, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 320, 319, - 321, 321, 321, 321, 323, 322, 325, 324, 327, 326, - 328, 330, 329, 331, 332, 333, 334, 335, 336, 337, - 339, 338, 341, 340, 343, 342, 345, 344, 346, 347, - 349, 348, 350, 350, 350, 351, 353, 352, 355, 354, - 357, 356, 359, 358, 361, 360, 362, 362, 362, 363, - 363, 363, 363, 363, 364, 365, 366, 367, 368, 370, - 369, 371, 371, 371, 372, 372, 372, 372, 372, 372, - 373, 374, 375, 377, 376, 378, 378, 379, 379, 379, - 381, 380, 383, 382, 384, 384, 384, 384, 385, 385, - 387, 386, 389, 388, 391, 390, 392, 392, 392, 393, - 393, 393, 393, 393, 393, 394, 395, 396, 397, 398, - 399, 401, 400, 402, 402, 403, 403, 403, 405, 404, - 407, 406, 408, 408, 408, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, - 411, 410, 413, 412, 415, 414, 417, 416, 419, 418, - 421, 420, 423, 422, 424, 425, 426, 428, 427, 429, - 429, 429, 429, 430, 432, 431, 433, 433, 434, 434, - 434, 436, 435, 437, 437, 437, 438, 438, 438, 438, - 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, - 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, - 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, - 438, 438, 438, 438, 438, 438, 440, 439, 442, 441, - 443, 443, 444, 444, 444, 446, 445, 448, 447, 449, - 449, 450, 450, 450, 451, 451, 451, 451, 451, 451, - 451, 451, 451, 451, 452, 453, 454, 456, 455, 458, - 457, 460, 459, 461, 463, 462, 464, 466, 465, 467, - 467, 468, 468, 468, 470, 469, 472, 471, 473, 473, - 474, 474, 474, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 476, 478, 477, 479, 480, 481, 482, 484, - 483, 485, 485, 486, 486, 486, 488, 487, 490, 489, - 491, 491, 491, 492, 492, 492, 492, 492, 492, 492, - 494, 493, 496, 495, 498, 497, 500, 499, 501, 501, - 502, 502, 502, 504, 503, 506, 505, 507, 507, 508, - 508, 508, 509, 509, 509, 509, 509, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 511, 510, 513, + 0, 210, 212, 211, 213, 211, 214, 211, 215, 211, + 216, 211, 217, 211, 218, 211, 219, 211, 220, 211, + 221, 211, 222, 211, 223, 211, 224, 211, 225, 225, + 225, 225, 225, 225, 225, 226, 228, 227, 229, 230, + 230, 231, 231, 231, 233, 232, 234, 234, 235, 235, + 235, 237, 236, 238, 238, 239, 239, 239, 240, 242, + 241, 244, 243, 243, 245, 247, 246, 248, 248, 248, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 262, 261, 263, 264, 265, 266, + 267, 268, 269, 271, 270, 272, 272, 272, 272, 272, + 274, 273, 276, 275, 277, 278, 280, 279, 282, 281, + 283, 284, 285, 286, 287, 289, 288, 290, 290, 290, + 291, 291, 291, 291, 291, 291, 291, 293, 292, 295, + 294, 297, 296, 298, 298, 300, 299, 301, 301, 302, + 304, 303, 306, 305, 307, 307, 307, 308, 310, 309, + 312, 311, 314, 313, 315, 315, 316, 316, 316, 318, + 317, 319, 319, 319, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 322, 321, 323, 323, 323, 323, 325, 324, 327, 326, + 329, 328, 330, 332, 331, 333, 334, 335, 336, 337, + 338, 339, 341, 340, 343, 342, 345, 344, 347, 346, + 348, 349, 351, 350, 352, 352, 352, 353, 355, 354, + 357, 356, 359, 358, 361, 360, 363, 362, 364, 364, + 364, 365, 365, 365, 365, 365, 366, 367, 368, 369, + 370, 372, 371, 373, 373, 373, 374, 374, 374, 374, + 374, 374, 375, 376, 377, 379, 378, 380, 380, 381, + 381, 381, 383, 382, 385, 384, 386, 386, 386, 386, + 387, 387, 389, 388, 391, 390, 393, 392, 394, 394, + 394, 395, 395, 395, 395, 395, 395, 396, 397, 398, + 399, 400, 401, 403, 402, 404, 404, 405, 405, 405, + 407, 406, 409, 408, 410, 410, 410, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 413, 412, 415, 414, 417, 416, 419, 418, + 421, 420, 423, 422, 425, 424, 426, 427, 428, 430, + 429, 431, 431, 431, 431, 432, 434, 433, 435, 435, + 436, 436, 436, 438, 437, 439, 439, 439, 440, 440, + 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, + 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, + 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, + 440, 440, 440, 440, 440, 440, 440, 440, 442, 441, + 444, 443, 445, 445, 446, 446, 446, 448, 447, 450, + 449, 451, 451, 452, 452, 452, 453, 453, 453, 453, + 453, 453, 453, 453, 453, 453, 454, 455, 456, 458, + 457, 460, 459, 462, 461, 463, 465, 464, 466, 468, + 467, 469, 469, 470, 470, 470, 472, 471, 474, 473, + 475, 475, 476, 476, 476, 477, 477, 477, 477, 477, + 477, 477, 477, 477, 478, 480, 479, 481, 482, 483, + 484, 486, 485, 487, 487, 488, 488, 488, 490, 489, + 492, 491, 493, 493, 493, 494, 494, 494, 494, 494, + 494, 494, 496, 495, 498, 497, 500, 499, 502, 501, + 503, 503, 504, 504, 504, 506, 505, 508, 507, 509, + 509, 510, 510, 510, 511, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 513, 512, 515, 514, 517, 516, 519, 518, 521, 520, 523, 522, 525, 524, 527, 526, 529, 528, 531, 530, 533, - 532, 535, 534, 536, 536, 538, 537, 539, 539, 539, - 541, 540, 542, 542, 543, 543, 543, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 545, 547, 546, 548, 549, 551, 550, 552, 552, - 552, 553, 553, 553, 553, 553, 555, 554, 557, 556, - 559, 558, 560, 560, 560, 561, 561, 561, 561, 561, - 561, 562, 564, 563, 565, 567, 566, 569, 568, 571, - 570, 572, 572, 572, 573, 573, 573, 573, 573, 573, - 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, - 573, 573, 574, 576, 575, 577, 579, 578, 580, 581, - 583, 582, 584, 584, 586, 585, 588, 587, 589, 590, - 592, 591, 594, 593, 596, 595, 598, 597, 600, 599, - 602, 601, 603, 603, 603, 604, 604, 606, 605, 607, - 609, 608, 610, 610, 610, 612, 611, 613, 613, 613, - 614, 614, 614, 614, 614, 614, 614, 615, 617, 616, - 619, 618, 620, 620, 620, 622, 621, 623, 623, 623, - 624, 624, 624, 624, 624, 626, 625, 627, 628, 629, - 631, 630, 633, 632, 634, 634, 634, 635, 635, 636 + 532, 535, 534, 537, 536, 538, 538, 540, 539, 541, + 541, 541, 543, 542, 544, 544, 545, 545, 545, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 547, 549, 548, 550, 551, 553, 552, + 554, 554, 554, 555, 555, 555, 555, 555, 557, 556, + 559, 558, 561, 560, 562, 562, 562, 563, 563, 563, + 563, 563, 563, 564, 566, 565, 567, 569, 568, 571, + 570, 573, 572, 574, 574, 574, 575, 575, 575, 575, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, + 575, 575, 575, 575, 576, 578, 577, 579, 581, 580, + 582, 583, 585, 584, 586, 586, 588, 587, 590, 589, + 591, 592, 594, 593, 596, 595, 598, 597, 600, 599, + 602, 601, 604, 603, 605, 605, 605, 606, 606, 608, + 607, 609, 611, 610, 612, 612, 612, 614, 613, 615, + 615, 615, 616, 616, 616, 616, 616, 616, 616, 617, + 619, 618, 621, 620, 622, 622, 622, 624, 623, 625, + 625, 625, 626, 626, 626, 626, 626, 628, 627, 629, + 630, 631, 633, 632, 635, 634, 636, 636, 636, 637, + 637, 638 }; const signed char @@ -5831,76 +5845,77 @@ namespace isc { namespace dhcp { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 0, 4, 3, 3, 3, 3, 3, - 3, 3, 0, 4, 1, 1, 1, 1, 1, 0, - 4, 0, 4, 3, 3, 0, 4, 0, 4, 3, - 3, 3, 3, 0, 6, 1, 3, 2, 1, 1, - 1, 1, 1, 1, 1, 0, 4, 0, 4, 0, - 4, 1, 1, 0, 4, 1, 1, 3, 0, 6, - 0, 6, 1, 3, 2, 1, 0, 4, 0, 6, - 0, 6, 0, 1, 1, 3, 2, 0, 4, 1, - 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 0, 4, 3, 3, 3, 3, + 3, 3, 3, 0, 4, 1, 1, 1, 1, 1, + 0, 4, 0, 4, 3, 3, 0, 4, 0, 4, + 3, 3, 3, 3, 3, 0, 6, 1, 3, 2, + 1, 1, 1, 1, 1, 1, 1, 0, 4, 0, + 4, 0, 4, 1, 1, 0, 4, 1, 1, 3, + 0, 6, 0, 6, 1, 3, 2, 1, 0, 4, + 0, 6, 0, 6, 0, 1, 1, 3, 2, 0, + 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, - 1, 1, 1, 1, 0, 4, 0, 4, 0, 4, - 3, 0, 4, 3, 3, 3, 3, 3, 3, 3, - 0, 4, 0, 4, 0, 4, 0, 4, 3, 3, - 0, 4, 1, 1, 1, 3, 0, 4, 0, 4, - 0, 4, 0, 4, 0, 6, 1, 3, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 6, 1, 3, 2, 1, 1, 1, 1, 1, 1, + 0, 4, 1, 1, 1, 1, 0, 4, 0, 4, + 0, 4, 3, 0, 4, 3, 3, 3, 3, 3, + 3, 3, 0, 4, 0, 4, 0, 4, 0, 4, + 3, 3, 0, 4, 1, 1, 1, 3, 0, 4, + 0, 4, 0, 4, 0, 4, 0, 6, 1, 3, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 6, 1, 3, 2, 1, 1, 1, 1, + 1, 1, 3, 3, 3, 0, 6, 0, 1, 1, + 3, 2, 0, 4, 0, 4, 1, 3, 2, 1, + 1, 1, 0, 4, 0, 4, 0, 6, 1, 3, + 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 0, 6, 0, 1, 1, 3, 2, 0, 4, 0, 4, 1, 3, 2, 1, 1, 1, - 0, 4, 0, 4, 0, 6, 1, 3, 2, 1, - 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, - 3, 0, 6, 0, 1, 1, 3, 2, 0, 4, - 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, - 0, 4, 0, 4, 3, 3, 3, 0, 4, 1, - 1, 1, 1, 3, 0, 6, 0, 1, 1, 3, - 2, 0, 4, 1, 3, 2, 1, 1, 1, 1, + 1, 1, 0, 4, 0, 4, 0, 4, 0, 4, + 0, 4, 0, 4, 0, 4, 3, 3, 3, 0, + 4, 1, 1, 1, 1, 3, 0, 6, 0, 1, + 1, 3, 2, 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 6, 0, 4, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 6, + 0, 4, 0, 1, 1, 3, 2, 0, 4, 0, + 4, 0, 1, 1, 3, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 3, 1, 0, + 4, 0, 4, 0, 4, 1, 0, 4, 3, 0, + 6, 0, 1, 1, 3, 2, 0, 4, 0, 4, + 0, 1, 1, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 4, 1, 1, 3, + 3, 0, 6, 0, 1, 1, 3, 2, 0, 4, + 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 0, 4, 0, 4, 0, 4, 0, 6, 0, 1, 1, 3, 2, 0, 4, 0, 4, 0, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 0, 4, 0, - 4, 0, 4, 1, 0, 4, 3, 0, 6, 0, - 1, 1, 3, 2, 0, 4, 0, 4, 0, 1, - 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 1, 1, 3, 3, 0, - 6, 0, 1, 1, 3, 2, 0, 4, 0, 4, - 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, - 0, 4, 0, 4, 0, 4, 0, 6, 0, 1, - 1, 3, 2, 0, 4, 0, 4, 0, 1, 1, - 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 4, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, - 4, 0, 6, 1, 1, 0, 6, 1, 3, 2, - 0, 4, 0, 1, 1, 3, 2, 1, 1, 1, + 4, 0, 4, 0, 6, 1, 1, 0, 6, 1, + 3, 2, 0, 4, 0, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 4, 3, 3, 0, 6, 1, 3, - 2, 1, 1, 1, 1, 1, 0, 4, 0, 4, - 0, 6, 1, 3, 2, 1, 1, 1, 1, 1, - 1, 3, 0, 4, 3, 0, 4, 0, 6, 0, - 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 4, 3, 3, 0, 6, + 1, 3, 2, 1, 1, 1, 1, 1, 0, 4, + 0, 4, 0, 6, 1, 3, 2, 1, 1, 1, + 1, 1, 1, 3, 0, 4, 3, 0, 4, 0, + 6, 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 0, 4, 3, 0, 4, 3, 3, - 0, 4, 1, 1, 0, 4, 0, 4, 3, 3, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 6, - 0, 4, 1, 3, 2, 1, 1, 0, 6, 3, - 0, 6, 1, 3, 2, 0, 4, 1, 3, 2, - 1, 1, 1, 1, 1, 1, 1, 3, 0, 4, - 0, 6, 1, 3, 2, 0, 4, 1, 3, 2, - 1, 1, 1, 1, 1, 0, 4, 3, 3, 3, - 0, 4, 0, 6, 1, 3, 2, 1, 1, 3 + 1, 1, 1, 1, 3, 0, 4, 3, 0, 4, + 3, 3, 0, 4, 1, 1, 0, 4, 0, 4, + 3, 3, 0, 4, 0, 4, 0, 4, 0, 4, + 0, 6, 0, 4, 1, 3, 2, 1, 1, 0, + 6, 3, 0, 6, 1, 3, 2, 0, 4, 1, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 3, + 0, 4, 0, 6, 1, 3, 2, 0, 4, 1, + 3, 2, 1, 1, 1, 1, 1, 0, 4, 3, + 3, 3, 0, 4, 0, 6, 1, 3, 2, 1, + 1, 3 }; @@ -5968,12 +5983,12 @@ namespace isc { namespace dhcp { "\"replace-client-name\"", "\"generated-prefix\"", "\"tcp\"", "\"JSON\"", "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"", "\"hostname-char-set\"", "\"hostname-char-replacement\"", - "\"ip-reservations-unique\"", "\"loggers\"", "\"output_options\"", - "\"output\"", "\"debuglevel\"", "\"severity\"", "\"flush\"", - "\"maxsize\"", "\"maxver\"", "\"pattern\"", "\"compatibility\"", - "\"lenient-option-parsing\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP4", - "SUB_DHCP4", "SUB_INTERFACES4", "SUB_SUBNET4", "SUB_POOL4", - "SUB_RESERVATION", "SUB_OPTION_DEFS", "SUB_OPTION_DEF", + "\"ip-reservations-unique\"", "\"reservations-lookup-first\"", + "\"loggers\"", "\"output_options\"", "\"output\"", "\"debuglevel\"", + "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"pattern\"", + "\"compatibility\"", "\"lenient-option-parsing\"", "TOPLEVEL_JSON", + "TOPLEVEL_DHCP4", "SUB_DHCP4", "SUB_INTERFACES4", "SUB_SUBNET4", + "SUB_POOL4", "SUB_RESERVATION", "SUB_OPTION_DEFS", "SUB_OPTION_DEF", "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS", "SUB_CONFIG_CONTROL", "\"constant string\"", "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2", @@ -5995,19 +6010,20 @@ namespace isc { namespace dhcp { "ddns_use_conflict_resolution", "hostname_char_set", "$@24", "hostname_char_replacement", "$@25", "store_extended_info", "statistic_default_sample_count", "statistic_default_sample_age", - "ip_reservations_unique", "interfaces_config", "$@26", - "interfaces_config_params", "interfaces_config_param", "sub_interfaces4", - "$@27", "interfaces_list", "$@28", "dhcp_socket_type", "$@29", - "socket_type", "outbound_interface", "$@30", "outbound_interface_value", - "re_detect", "lease_database", "$@31", "sanity_checks", "$@32", - "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@33", - "hosts_database", "$@34", "hosts_databases", "$@35", "database_list", - "not_empty_database_list", "database", "$@36", "database_map_params", - "database_map_param", "database_type", "$@37", "db_type", "user", "$@38", - "password", "$@39", "host", "$@40", "port", "name", "$@41", "persist", - "lfc_interval", "readonly", "connect_timeout", "request_timeout", - "tcp_keepalive", "tcp_nodelay", "contact_points", "$@42", "keyspace", - "$@43", "consistency", "$@44", "serial_consistency", "$@45", + "ip_reservations_unique", "reservations_lookup_first", + "interfaces_config", "$@26", "interfaces_config_params", + "interfaces_config_param", "sub_interfaces4", "$@27", "interfaces_list", + "$@28", "dhcp_socket_type", "$@29", "socket_type", "outbound_interface", + "$@30", "outbound_interface_value", "re_detect", "lease_database", + "$@31", "sanity_checks", "$@32", "sanity_checks_params", + "sanity_checks_param", "lease_checks", "$@33", "hosts_database", "$@34", + "hosts_databases", "$@35", "database_list", "not_empty_database_list", + "database", "$@36", "database_map_params", "database_map_param", + "database_type", "$@37", "db_type", "user", "$@38", "password", "$@39", + "host", "$@40", "port", "name", "$@41", "persist", "lfc_interval", + "readonly", "connect_timeout", "request_timeout", "tcp_keepalive", + "tcp_nodelay", "contact_points", "$@42", "keyspace", "$@43", + "consistency", "$@44", "serial_consistency", "$@45", "max_reconnect_tries", "reconnect_wait_time", "on_fail", "$@46", "on_fail_mode", "max_row_errors", "trust_anchor", "$@47", "cert_file", "$@48", "key_file", "$@49", "cipher_list", "$@50", @@ -6090,89 +6106,90 @@ namespace isc { namespace dhcp { const short Dhcp4Parser::yyrline_[] = { - 0, 298, 298, 298, 299, 299, 300, 300, 301, 301, - 302, 302, 303, 303, 304, 304, 305, 305, 306, 306, - 307, 307, 308, 308, 309, 309, 310, 310, 318, 319, - 320, 321, 322, 323, 324, 327, 332, 332, 343, 346, - 347, 350, 355, 361, 366, 366, 373, 374, 377, 381, - 385, 391, 391, 398, 399, 402, 406, 410, 420, 429, - 429, 444, 444, 458, 461, 467, 467, 476, 477, 478, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 549, 555, 561, 567, 573, 579, 585, 591, - 597, 603, 609, 615, 615, 624, 630, 636, 642, 648, - 654, 660, 666, 666, 675, 678, 681, 684, 687, 693, - 693, 702, 702, 711, 717, 723, 723, 732, 732, 741, - 747, 753, 759, 765, 765, 777, 778, 779, 784, 785, - 786, 787, 788, 789, 790, 793, 793, 802, 802, 813, - 813, 821, 822, 825, 825, 833, 835, 839, 846, 846, - 859, 859, 870, 871, 872, 877, 879, 879, 898, 898, - 911, 911, 922, 923, 926, 927, 928, 933, 933, 943, - 944, 945, 950, 951, 952, 953, 954, 955, 956, 957, - 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, - 968, 969, 970, 971, 972, 973, 974, 975, 978, 978, - 986, 987, 988, 989, 992, 992, 1001, 1001, 1010, 1010, - 1019, 1025, 1025, 1034, 1040, 1046, 1052, 1058, 1064, 1070, - 1076, 1076, 1085, 1085, 1094, 1094, 1103, 1103, 1112, 1118, - 1124, 1124, 1132, 1133, 1134, 1137, 1143, 1143, 1152, 1152, - 1161, 1161, 1170, 1170, 1179, 1179, 1190, 1191, 1192, 1197, - 1198, 1199, 1200, 1201, 1204, 1209, 1214, 1219, 1224, 1231, - 1231, 1244, 1245, 1246, 1251, 1252, 1253, 1254, 1255, 1256, - 1259, 1265, 1271, 1277, 1277, 1288, 1289, 1292, 1293, 1294, - 1299, 1299, 1309, 1309, 1319, 1320, 1321, 1324, 1327, 1328, - 1331, 1331, 1340, 1340, 1349, 1349, 1361, 1362, 1363, 1368, - 1369, 1370, 1371, 1372, 1373, 1376, 1382, 1388, 1394, 1400, - 1406, 1415, 1415, 1429, 1430, 1433, 1434, 1435, 1444, 1444, - 1470, 1470, 1481, 1482, 1483, 1489, 1490, 1491, 1492, 1493, - 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, - 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, - 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, - 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, - 1536, 1536, 1545, 1545, 1554, 1554, 1563, 1563, 1572, 1572, - 1581, 1581, 1590, 1590, 1601, 1607, 1613, 1619, 1619, 1627, - 1628, 1629, 1630, 1633, 1641, 1641, 1653, 1654, 1658, 1659, - 1660, 1665, 1665, 1673, 1674, 1675, 1680, 1681, 1682, 1683, - 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, - 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, - 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, - 1714, 1715, 1716, 1717, 1718, 1719, 1726, 1726, 1740, 1740, - 1749, 1750, 1753, 1754, 1755, 1762, 1762, 1777, 1777, 1791, - 1792, 1795, 1796, 1797, 1802, 1803, 1804, 1805, 1806, 1807, - 1808, 1809, 1810, 1811, 1814, 1816, 1822, 1824, 1824, 1833, - 1833, 1842, 1842, 1851, 1853, 1853, 1862, 1872, 1872, 1885, - 1886, 1891, 1892, 1893, 1900, 1900, 1912, 1912, 1924, 1925, - 1930, 1931, 1932, 1939, 1940, 1941, 1942, 1943, 1944, 1945, - 1946, 1947, 1950, 1952, 1952, 1961, 1963, 1965, 1971, 1980, - 1980, 1993, 1994, 1997, 1998, 1999, 2004, 2004, 2014, 2014, - 2024, 2025, 2026, 2031, 2032, 2033, 2034, 2035, 2036, 2037, - 2040, 2040, 2049, 2049, 2074, 2074, 2104, 2104, 2115, 2116, - 2119, 2120, 2121, 2126, 2126, 2135, 2135, 2144, 2145, 2148, - 2149, 2150, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, - 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2173, 2173, 2182, - 2182, 2191, 2191, 2200, 2200, 2209, 2209, 2220, 2220, 2229, - 2229, 2238, 2238, 2247, 2247, 2256, 2256, 2265, 2265, 2274, - 2274, 2288, 2288, 2299, 2300, 2306, 2306, 2317, 2318, 2319, - 2324, 2324, 2334, 2335, 2338, 2339, 2340, 2345, 2346, 2347, - 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, - 2358, 2361, 2363, 2363, 2372, 2380, 2388, 2388, 2399, 2400, - 2401, 2406, 2407, 2408, 2409, 2410, 2413, 2413, 2422, 2422, - 2434, 2434, 2447, 2448, 2449, 2454, 2455, 2456, 2457, 2458, - 2459, 2462, 2468, 2468, 2477, 2483, 2483, 2493, 2493, 2506, - 2506, 2516, 2517, 2518, 2523, 2524, 2525, 2526, 2527, 2528, - 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, - 2539, 2540, 2543, 2549, 2549, 2558, 2564, 2564, 2573, 2579, - 2585, 2585, 2594, 2595, 2598, 2598, 2608, 2608, 2618, 2625, - 2632, 2632, 2641, 2641, 2651, 2651, 2661, 2661, 2673, 2673, - 2685, 2685, 2695, 2696, 2697, 2703, 2704, 2707, 2707, 2718, - 2726, 2726, 2739, 2740, 2741, 2747, 2747, 2755, 2756, 2757, - 2762, 2763, 2764, 2765, 2766, 2767, 2768, 2771, 2777, 2777, - 2786, 2786, 2797, 2798, 2799, 2804, 2804, 2812, 2813, 2814, - 2819, 2820, 2821, 2822, 2823, 2826, 2826, 2835, 2841, 2847, - 2853, 2853, 2862, 2862, 2873, 2874, 2875, 2880, 2881, 2884 + 0, 299, 299, 299, 300, 300, 301, 301, 302, 302, + 303, 303, 304, 304, 305, 305, 306, 306, 307, 307, + 308, 308, 309, 309, 310, 310, 311, 311, 319, 320, + 321, 322, 323, 324, 325, 328, 333, 333, 344, 347, + 348, 351, 356, 362, 367, 367, 374, 375, 378, 382, + 386, 392, 392, 399, 400, 403, 407, 411, 421, 430, + 430, 445, 445, 459, 462, 468, 468, 477, 478, 479, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 551, 557, 563, 569, 575, 581, 587, + 593, 599, 605, 611, 617, 617, 626, 632, 638, 644, + 650, 656, 662, 668, 668, 677, 680, 683, 686, 689, + 695, 695, 704, 704, 713, 719, 725, 725, 734, 734, + 743, 749, 755, 761, 767, 773, 773, 785, 786, 787, + 792, 793, 794, 795, 796, 797, 798, 801, 801, 810, + 810, 821, 821, 829, 830, 833, 833, 841, 843, 847, + 854, 854, 867, 867, 878, 879, 880, 885, 887, 887, + 906, 906, 919, 919, 930, 931, 934, 935, 936, 941, + 941, 951, 952, 953, 958, 959, 960, 961, 962, 963, + 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, + 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, + 986, 986, 994, 995, 996, 997, 1000, 1000, 1009, 1009, + 1018, 1018, 1027, 1033, 1033, 1042, 1048, 1054, 1060, 1066, + 1072, 1078, 1084, 1084, 1093, 1093, 1102, 1102, 1111, 1111, + 1120, 1126, 1132, 1132, 1140, 1141, 1142, 1145, 1151, 1151, + 1160, 1160, 1169, 1169, 1178, 1178, 1187, 1187, 1198, 1199, + 1200, 1205, 1206, 1207, 1208, 1209, 1212, 1217, 1222, 1227, + 1232, 1239, 1239, 1252, 1253, 1254, 1259, 1260, 1261, 1262, + 1263, 1264, 1267, 1273, 1279, 1285, 1285, 1296, 1297, 1300, + 1301, 1302, 1307, 1307, 1317, 1317, 1327, 1328, 1329, 1332, + 1335, 1336, 1339, 1339, 1348, 1348, 1357, 1357, 1369, 1370, + 1371, 1376, 1377, 1378, 1379, 1380, 1381, 1384, 1390, 1396, + 1402, 1408, 1414, 1423, 1423, 1437, 1438, 1441, 1442, 1443, + 1452, 1452, 1478, 1478, 1489, 1490, 1491, 1497, 1498, 1499, + 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, + 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, + 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, + 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, + 1540, 1541, 1544, 1544, 1553, 1553, 1562, 1562, 1571, 1571, + 1580, 1580, 1589, 1589, 1598, 1598, 1609, 1615, 1621, 1627, + 1627, 1635, 1636, 1637, 1638, 1641, 1649, 1649, 1661, 1662, + 1666, 1667, 1668, 1673, 1673, 1681, 1682, 1683, 1688, 1689, + 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, + 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, + 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, + 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1734, 1734, + 1748, 1748, 1757, 1758, 1761, 1762, 1763, 1770, 1770, 1785, + 1785, 1799, 1800, 1803, 1804, 1805, 1810, 1811, 1812, 1813, + 1814, 1815, 1816, 1817, 1818, 1819, 1822, 1824, 1830, 1832, + 1832, 1841, 1841, 1850, 1850, 1859, 1861, 1861, 1870, 1880, + 1880, 1893, 1894, 1899, 1900, 1901, 1908, 1908, 1920, 1920, + 1932, 1933, 1938, 1939, 1940, 1947, 1948, 1949, 1950, 1951, + 1952, 1953, 1954, 1955, 1958, 1960, 1960, 1969, 1971, 1973, + 1979, 1988, 1988, 2001, 2002, 2005, 2006, 2007, 2012, 2012, + 2022, 2022, 2032, 2033, 2034, 2039, 2040, 2041, 2042, 2043, + 2044, 2045, 2048, 2048, 2057, 2057, 2082, 2082, 2112, 2112, + 2123, 2124, 2127, 2128, 2129, 2134, 2134, 2143, 2143, 2152, + 2153, 2156, 2157, 2158, 2164, 2165, 2166, 2167, 2168, 2169, + 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2181, + 2181, 2190, 2190, 2199, 2199, 2208, 2208, 2217, 2217, 2228, + 2228, 2237, 2237, 2246, 2246, 2255, 2255, 2264, 2264, 2273, + 2273, 2282, 2282, 2296, 2296, 2307, 2308, 2314, 2314, 2325, + 2326, 2327, 2332, 2332, 2342, 2343, 2346, 2347, 2348, 2353, + 2354, 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, + 2364, 2365, 2366, 2369, 2371, 2371, 2380, 2388, 2396, 2396, + 2407, 2408, 2409, 2414, 2415, 2416, 2417, 2418, 2421, 2421, + 2430, 2430, 2442, 2442, 2455, 2456, 2457, 2462, 2463, 2464, + 2465, 2466, 2467, 2470, 2476, 2476, 2485, 2491, 2491, 2501, + 2501, 2514, 2514, 2524, 2525, 2526, 2531, 2532, 2533, 2534, + 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2544, + 2545, 2546, 2547, 2548, 2551, 2557, 2557, 2566, 2572, 2572, + 2581, 2587, 2593, 2593, 2602, 2603, 2606, 2606, 2616, 2616, + 2626, 2633, 2640, 2640, 2649, 2649, 2659, 2659, 2669, 2669, + 2681, 2681, 2693, 2693, 2703, 2704, 2705, 2711, 2712, 2715, + 2715, 2726, 2734, 2734, 2747, 2748, 2749, 2755, 2755, 2763, + 2764, 2765, 2770, 2771, 2772, 2773, 2774, 2775, 2776, 2779, + 2785, 2785, 2794, 2794, 2805, 2806, 2807, 2812, 2812, 2820, + 2821, 2822, 2827, 2828, 2829, 2830, 2831, 2834, 2834, 2843, + 2849, 2855, 2861, 2861, 2870, 2870, 2881, 2882, 2883, 2888, + 2889, 2892 }; void @@ -6205,9 +6222,9 @@ namespace isc { namespace dhcp { #line 14 "dhcp4_parser.yy" } } // isc::dhcp -#line 6209 "dhcp4_parser.cc" +#line 6226 "dhcp4_parser.cc" -#line 2890 "dhcp4_parser.yy" +#line 2898 "dhcp4_parser.yy" void diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h index 14f9777e0c..d865c54e77 100644 --- a/src/bin/dhcp4/dhcp4_parser.h +++ b/src/bin/dhcp4/dhcp4_parser.h @@ -677,34 +677,35 @@ namespace isc { namespace dhcp { TOKEN_HOSTNAME_CHAR_SET = 433, // "hostname-char-set" TOKEN_HOSTNAME_CHAR_REPLACEMENT = 434, // "hostname-char-replacement" TOKEN_IP_RESERVATIONS_UNIQUE = 435, // "ip-reservations-unique" - TOKEN_LOGGERS = 436, // "loggers" - TOKEN_OUTPUT_OPTIONS = 437, // "output_options" - TOKEN_OUTPUT = 438, // "output" - TOKEN_DEBUGLEVEL = 439, // "debuglevel" - TOKEN_SEVERITY = 440, // "severity" - TOKEN_FLUSH = 441, // "flush" - TOKEN_MAXSIZE = 442, // "maxsize" - TOKEN_MAXVER = 443, // "maxver" - TOKEN_PATTERN = 444, // "pattern" - TOKEN_COMPATIBILITY = 445, // "compatibility" - TOKEN_LENIENT_OPTION_PARSING = 446, // "lenient-option-parsing" - TOKEN_TOPLEVEL_JSON = 447, // TOPLEVEL_JSON - TOKEN_TOPLEVEL_DHCP4 = 448, // TOPLEVEL_DHCP4 - TOKEN_SUB_DHCP4 = 449, // SUB_DHCP4 - TOKEN_SUB_INTERFACES4 = 450, // SUB_INTERFACES4 - TOKEN_SUB_SUBNET4 = 451, // SUB_SUBNET4 - TOKEN_SUB_POOL4 = 452, // SUB_POOL4 - TOKEN_SUB_RESERVATION = 453, // SUB_RESERVATION - TOKEN_SUB_OPTION_DEFS = 454, // SUB_OPTION_DEFS - TOKEN_SUB_OPTION_DEF = 455, // SUB_OPTION_DEF - TOKEN_SUB_OPTION_DATA = 456, // SUB_OPTION_DATA - TOKEN_SUB_HOOKS_LIBRARY = 457, // SUB_HOOKS_LIBRARY - TOKEN_SUB_DHCP_DDNS = 458, // SUB_DHCP_DDNS - TOKEN_SUB_CONFIG_CONTROL = 459, // SUB_CONFIG_CONTROL - TOKEN_STRING = 460, // "constant string" - TOKEN_INTEGER = 461, // "integer" - TOKEN_FLOAT = 462, // "floating point" - TOKEN_BOOLEAN = 463 // "boolean" + TOKEN_RESERVATIONS_LOOKUP_FIRST = 436, // "reservations-lookup-first" + TOKEN_LOGGERS = 437, // "loggers" + TOKEN_OUTPUT_OPTIONS = 438, // "output_options" + TOKEN_OUTPUT = 439, // "output" + TOKEN_DEBUGLEVEL = 440, // "debuglevel" + TOKEN_SEVERITY = 441, // "severity" + TOKEN_FLUSH = 442, // "flush" + TOKEN_MAXSIZE = 443, // "maxsize" + TOKEN_MAXVER = 444, // "maxver" + TOKEN_PATTERN = 445, // "pattern" + TOKEN_COMPATIBILITY = 446, // "compatibility" + TOKEN_LENIENT_OPTION_PARSING = 447, // "lenient-option-parsing" + TOKEN_TOPLEVEL_JSON = 448, // TOPLEVEL_JSON + TOKEN_TOPLEVEL_DHCP4 = 449, // TOPLEVEL_DHCP4 + TOKEN_SUB_DHCP4 = 450, // SUB_DHCP4 + TOKEN_SUB_INTERFACES4 = 451, // SUB_INTERFACES4 + TOKEN_SUB_SUBNET4 = 452, // SUB_SUBNET4 + TOKEN_SUB_POOL4 = 453, // SUB_POOL4 + TOKEN_SUB_RESERVATION = 454, // SUB_RESERVATION + TOKEN_SUB_OPTION_DEFS = 455, // SUB_OPTION_DEFS + TOKEN_SUB_OPTION_DEF = 456, // SUB_OPTION_DEF + TOKEN_SUB_OPTION_DATA = 457, // SUB_OPTION_DATA + TOKEN_SUB_HOOKS_LIBRARY = 458, // SUB_HOOKS_LIBRARY + TOKEN_SUB_DHCP_DDNS = 459, // SUB_DHCP_DDNS + TOKEN_SUB_CONFIG_CONTROL = 460, // SUB_CONFIG_CONTROL + TOKEN_STRING = 461, // "constant string" + TOKEN_INTEGER = 462, // "integer" + TOKEN_FLOAT = 463, // "floating point" + TOKEN_BOOLEAN = 464 // "boolean" }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -721,7 +722,7 @@ namespace isc { namespace dhcp { { enum symbol_kind_type { - YYNTOKENS = 209, ///< Number of tokens. + YYNTOKENS = 210, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -904,462 +905,464 @@ namespace isc { namespace dhcp { S_HOSTNAME_CHAR_SET = 178, // "hostname-char-set" S_HOSTNAME_CHAR_REPLACEMENT = 179, // "hostname-char-replacement" S_IP_RESERVATIONS_UNIQUE = 180, // "ip-reservations-unique" - S_LOGGERS = 181, // "loggers" - S_OUTPUT_OPTIONS = 182, // "output_options" - S_OUTPUT = 183, // "output" - S_DEBUGLEVEL = 184, // "debuglevel" - S_SEVERITY = 185, // "severity" - S_FLUSH = 186, // "flush" - S_MAXSIZE = 187, // "maxsize" - S_MAXVER = 188, // "maxver" - S_PATTERN = 189, // "pattern" - S_COMPATIBILITY = 190, // "compatibility" - S_LENIENT_OPTION_PARSING = 191, // "lenient-option-parsing" - S_TOPLEVEL_JSON = 192, // TOPLEVEL_JSON - S_TOPLEVEL_DHCP4 = 193, // TOPLEVEL_DHCP4 - S_SUB_DHCP4 = 194, // SUB_DHCP4 - S_SUB_INTERFACES4 = 195, // SUB_INTERFACES4 - S_SUB_SUBNET4 = 196, // SUB_SUBNET4 - S_SUB_POOL4 = 197, // SUB_POOL4 - S_SUB_RESERVATION = 198, // SUB_RESERVATION - S_SUB_OPTION_DEFS = 199, // SUB_OPTION_DEFS - S_SUB_OPTION_DEF = 200, // SUB_OPTION_DEF - S_SUB_OPTION_DATA = 201, // SUB_OPTION_DATA - S_SUB_HOOKS_LIBRARY = 202, // SUB_HOOKS_LIBRARY - S_SUB_DHCP_DDNS = 203, // SUB_DHCP_DDNS - S_SUB_CONFIG_CONTROL = 204, // SUB_CONFIG_CONTROL - S_STRING = 205, // "constant string" - S_INTEGER = 206, // "integer" - S_FLOAT = 207, // "floating point" - S_BOOLEAN = 208, // "boolean" - S_YYACCEPT = 209, // $accept - S_start = 210, // start - S_211_1 = 211, // $@1 - S_212_2 = 212, // $@2 - S_213_3 = 213, // $@3 - S_214_4 = 214, // $@4 - S_215_5 = 215, // $@5 - S_216_6 = 216, // $@6 - S_217_7 = 217, // $@7 - S_218_8 = 218, // $@8 - S_219_9 = 219, // $@9 - S_220_10 = 220, // $@10 - S_221_11 = 221, // $@11 - S_222_12 = 222, // $@12 - S_223_13 = 223, // $@13 - S_value = 224, // value - S_sub_json = 225, // sub_json - S_map2 = 226, // map2 - S_227_14 = 227, // $@14 - S_map_value = 228, // map_value - S_map_content = 229, // map_content - S_not_empty_map = 230, // not_empty_map - S_list_generic = 231, // list_generic - S_232_15 = 232, // $@15 - S_list_content = 233, // list_content - S_not_empty_list = 234, // not_empty_list - S_list_strings = 235, // list_strings - S_236_16 = 236, // $@16 - S_list_strings_content = 237, // list_strings_content - S_not_empty_list_strings = 238, // not_empty_list_strings - S_unknown_map_entry = 239, // unknown_map_entry - S_syntax_map = 240, // syntax_map - S_241_17 = 241, // $@17 - S_global_object = 242, // global_object - S_243_18 = 243, // $@18 - S_global_object_comma = 244, // global_object_comma - S_sub_dhcp4 = 245, // sub_dhcp4 - S_246_19 = 246, // $@19 - S_global_params = 247, // global_params - S_global_param = 248, // global_param - S_valid_lifetime = 249, // valid_lifetime - S_min_valid_lifetime = 250, // min_valid_lifetime - S_max_valid_lifetime = 251, // max_valid_lifetime - S_renew_timer = 252, // renew_timer - S_rebind_timer = 253, // rebind_timer - S_calculate_tee_times = 254, // calculate_tee_times - S_t1_percent = 255, // t1_percent - S_t2_percent = 256, // t2_percent - S_cache_threshold = 257, // cache_threshold - S_cache_max_age = 258, // cache_max_age - S_decline_probation_period = 259, // decline_probation_period - S_server_tag = 260, // server_tag - S_261_20 = 261, // $@20 - S_parked_packet_limit = 262, // parked_packet_limit - S_echo_client_id = 263, // echo_client_id - S_match_client_id = 264, // match_client_id - S_authoritative = 265, // authoritative - S_ddns_send_updates = 266, // ddns_send_updates - S_ddns_override_no_update = 267, // ddns_override_no_update - S_ddns_override_client_update = 268, // ddns_override_client_update - S_ddns_replace_client_name = 269, // ddns_replace_client_name - S_270_21 = 270, // $@21 - S_ddns_replace_client_name_value = 271, // ddns_replace_client_name_value - S_ddns_generated_prefix = 272, // ddns_generated_prefix - S_273_22 = 273, // $@22 - S_ddns_qualifying_suffix = 274, // ddns_qualifying_suffix - S_275_23 = 275, // $@23 - S_ddns_update_on_renew = 276, // ddns_update_on_renew - S_ddns_use_conflict_resolution = 277, // ddns_use_conflict_resolution - S_hostname_char_set = 278, // hostname_char_set - S_279_24 = 279, // $@24 - S_hostname_char_replacement = 280, // hostname_char_replacement - S_281_25 = 281, // $@25 - S_store_extended_info = 282, // store_extended_info - S_statistic_default_sample_count = 283, // statistic_default_sample_count - S_statistic_default_sample_age = 284, // statistic_default_sample_age - S_ip_reservations_unique = 285, // ip_reservations_unique - S_interfaces_config = 286, // interfaces_config - S_287_26 = 287, // $@26 - S_interfaces_config_params = 288, // interfaces_config_params - S_interfaces_config_param = 289, // interfaces_config_param - S_sub_interfaces4 = 290, // sub_interfaces4 - S_291_27 = 291, // $@27 - S_interfaces_list = 292, // interfaces_list - S_293_28 = 293, // $@28 - S_dhcp_socket_type = 294, // dhcp_socket_type - S_295_29 = 295, // $@29 - S_socket_type = 296, // socket_type - S_outbound_interface = 297, // outbound_interface - S_298_30 = 298, // $@30 - S_outbound_interface_value = 299, // outbound_interface_value - S_re_detect = 300, // re_detect - S_lease_database = 301, // lease_database - S_302_31 = 302, // $@31 - S_sanity_checks = 303, // sanity_checks - S_304_32 = 304, // $@32 - S_sanity_checks_params = 305, // sanity_checks_params - S_sanity_checks_param = 306, // sanity_checks_param - S_lease_checks = 307, // lease_checks - S_308_33 = 308, // $@33 - S_hosts_database = 309, // hosts_database - S_310_34 = 310, // $@34 - S_hosts_databases = 311, // hosts_databases - S_312_35 = 312, // $@35 - S_database_list = 313, // database_list - S_not_empty_database_list = 314, // not_empty_database_list - S_database = 315, // database - S_316_36 = 316, // $@36 - S_database_map_params = 317, // database_map_params - S_database_map_param = 318, // database_map_param - S_database_type = 319, // database_type - S_320_37 = 320, // $@37 - S_db_type = 321, // db_type - S_user = 322, // user - S_323_38 = 323, // $@38 - S_password = 324, // password - S_325_39 = 325, // $@39 - S_host = 326, // host - S_327_40 = 327, // $@40 - S_port = 328, // port - S_name = 329, // name - S_330_41 = 330, // $@41 - S_persist = 331, // persist - S_lfc_interval = 332, // lfc_interval - S_readonly = 333, // readonly - S_connect_timeout = 334, // connect_timeout - S_request_timeout = 335, // request_timeout - S_tcp_keepalive = 336, // tcp_keepalive - S_tcp_nodelay = 337, // tcp_nodelay - S_contact_points = 338, // contact_points - S_339_42 = 339, // $@42 - S_keyspace = 340, // keyspace - S_341_43 = 341, // $@43 - S_consistency = 342, // consistency - S_343_44 = 343, // $@44 - S_serial_consistency = 344, // serial_consistency - S_345_45 = 345, // $@45 - S_max_reconnect_tries = 346, // max_reconnect_tries - S_reconnect_wait_time = 347, // reconnect_wait_time - S_on_fail = 348, // on_fail - S_349_46 = 349, // $@46 - S_on_fail_mode = 350, // on_fail_mode - S_max_row_errors = 351, // max_row_errors - S_trust_anchor = 352, // trust_anchor - S_353_47 = 353, // $@47 - S_cert_file = 354, // cert_file - S_355_48 = 355, // $@48 - S_key_file = 356, // key_file - S_357_49 = 357, // $@49 - S_cipher_list = 358, // cipher_list - S_359_50 = 359, // $@50 - S_host_reservation_identifiers = 360, // host_reservation_identifiers - S_361_51 = 361, // $@51 - S_host_reservation_identifiers_list = 362, // host_reservation_identifiers_list - S_host_reservation_identifier = 363, // host_reservation_identifier - S_duid_id = 364, // duid_id - S_hw_address_id = 365, // hw_address_id - S_circuit_id = 366, // circuit_id - S_client_id = 367, // client_id - S_flex_id = 368, // flex_id - S_dhcp_multi_threading = 369, // dhcp_multi_threading - S_370_52 = 370, // $@52 - S_multi_threading_params = 371, // multi_threading_params - S_multi_threading_param = 372, // multi_threading_param - S_enable_multi_threading = 373, // enable_multi_threading - S_thread_pool_size = 374, // thread_pool_size - S_packet_queue_size = 375, // packet_queue_size - S_hooks_libraries = 376, // hooks_libraries - S_377_53 = 377, // $@53 - S_hooks_libraries_list = 378, // hooks_libraries_list - S_not_empty_hooks_libraries_list = 379, // not_empty_hooks_libraries_list - S_hooks_library = 380, // hooks_library - S_381_54 = 381, // $@54 - S_sub_hooks_library = 382, // sub_hooks_library - S_383_55 = 383, // $@55 - S_hooks_params = 384, // hooks_params - S_hooks_param = 385, // hooks_param - S_library = 386, // library - S_387_56 = 387, // $@56 - S_parameters = 388, // parameters - S_389_57 = 389, // $@57 - S_expired_leases_processing = 390, // expired_leases_processing - S_391_58 = 391, // $@58 - S_expired_leases_params = 392, // expired_leases_params - S_expired_leases_param = 393, // expired_leases_param - S_reclaim_timer_wait_time = 394, // reclaim_timer_wait_time - S_flush_reclaimed_timer_wait_time = 395, // flush_reclaimed_timer_wait_time - S_hold_reclaimed_time = 396, // hold_reclaimed_time - S_max_reclaim_leases = 397, // max_reclaim_leases - S_max_reclaim_time = 398, // max_reclaim_time - S_unwarned_reclaim_cycles = 399, // unwarned_reclaim_cycles - S_subnet4_list = 400, // subnet4_list - S_401_59 = 401, // $@59 - S_subnet4_list_content = 402, // subnet4_list_content - S_not_empty_subnet4_list = 403, // not_empty_subnet4_list - S_subnet4 = 404, // subnet4 - S_405_60 = 405, // $@60 - S_sub_subnet4 = 406, // sub_subnet4 - S_407_61 = 407, // $@61 - S_subnet4_params = 408, // subnet4_params - S_subnet4_param = 409, // subnet4_param - S_subnet = 410, // subnet - S_411_62 = 411, // $@62 - S_subnet_4o6_interface = 412, // subnet_4o6_interface - S_413_63 = 413, // $@63 - S_subnet_4o6_interface_id = 414, // subnet_4o6_interface_id - S_415_64 = 415, // $@64 - S_subnet_4o6_subnet = 416, // subnet_4o6_subnet - S_417_65 = 417, // $@65 - S_interface = 418, // interface - S_419_66 = 419, // $@66 - S_client_class = 420, // client_class - S_421_67 = 421, // $@67 - S_require_client_classes = 422, // require_client_classes - S_423_68 = 423, // $@68 - S_reservations_global = 424, // reservations_global - S_reservations_in_subnet = 425, // reservations_in_subnet - S_reservations_out_of_pool = 426, // reservations_out_of_pool - S_reservation_mode = 427, // reservation_mode - S_428_69 = 428, // $@69 - S_hr_mode = 429, // hr_mode - S_id = 430, // id - S_shared_networks = 431, // shared_networks - S_432_70 = 432, // $@70 - S_shared_networks_content = 433, // shared_networks_content - S_shared_networks_list = 434, // shared_networks_list - S_shared_network = 435, // shared_network - S_436_71 = 436, // $@71 - S_shared_network_params = 437, // shared_network_params - S_shared_network_param = 438, // shared_network_param - S_option_def_list = 439, // option_def_list - S_440_72 = 440, // $@72 - S_sub_option_def_list = 441, // sub_option_def_list - S_442_73 = 442, // $@73 - S_option_def_list_content = 443, // option_def_list_content - S_not_empty_option_def_list = 444, // not_empty_option_def_list - S_option_def_entry = 445, // option_def_entry - S_446_74 = 446, // $@74 - S_sub_option_def = 447, // sub_option_def - S_448_75 = 448, // $@75 - S_option_def_params = 449, // option_def_params - S_not_empty_option_def_params = 450, // not_empty_option_def_params - S_option_def_param = 451, // option_def_param - S_option_def_name = 452, // option_def_name - S_code = 453, // code - S_option_def_code = 454, // option_def_code - S_option_def_type = 455, // option_def_type - S_456_76 = 456, // $@76 - S_option_def_record_types = 457, // option_def_record_types - S_458_77 = 458, // $@77 - S_space = 459, // space - S_460_78 = 460, // $@78 - S_option_def_space = 461, // option_def_space - S_option_def_encapsulate = 462, // option_def_encapsulate - S_463_79 = 463, // $@79 - S_option_def_array = 464, // option_def_array - S_option_data_list = 465, // option_data_list - S_466_80 = 466, // $@80 - S_option_data_list_content = 467, // option_data_list_content - S_not_empty_option_data_list = 468, // not_empty_option_data_list - S_option_data_entry = 469, // option_data_entry - S_470_81 = 470, // $@81 - S_sub_option_data = 471, // sub_option_data - S_472_82 = 472, // $@82 - S_option_data_params = 473, // option_data_params - S_not_empty_option_data_params = 474, // not_empty_option_data_params - S_option_data_param = 475, // option_data_param - S_option_data_name = 476, // option_data_name - S_option_data_data = 477, // option_data_data - S_478_83 = 478, // $@83 - S_option_data_code = 479, // option_data_code - S_option_data_space = 480, // option_data_space - S_option_data_csv_format = 481, // option_data_csv_format - S_option_data_always_send = 482, // option_data_always_send - S_pools_list = 483, // pools_list - S_484_84 = 484, // $@84 - S_pools_list_content = 485, // pools_list_content - S_not_empty_pools_list = 486, // not_empty_pools_list - S_pool_list_entry = 487, // pool_list_entry - S_488_85 = 488, // $@85 - S_sub_pool4 = 489, // sub_pool4 - S_490_86 = 490, // $@86 - S_pool_params = 491, // pool_params - S_pool_param = 492, // pool_param - S_pool_entry = 493, // pool_entry - S_494_87 = 494, // $@87 - S_user_context = 495, // user_context - S_496_88 = 496, // $@88 - S_comment = 497, // comment - S_498_89 = 498, // $@89 - S_reservations = 499, // reservations - S_500_90 = 500, // $@90 - S_reservations_list = 501, // reservations_list - S_not_empty_reservations_list = 502, // not_empty_reservations_list - S_reservation = 503, // reservation - S_504_91 = 504, // $@91 - S_sub_reservation = 505, // sub_reservation - S_506_92 = 506, // $@92 - S_reservation_params = 507, // reservation_params - S_not_empty_reservation_params = 508, // not_empty_reservation_params - S_reservation_param = 509, // reservation_param - S_next_server = 510, // next_server - S_511_93 = 511, // $@93 - S_server_hostname = 512, // server_hostname - S_513_94 = 513, // $@94 - S_boot_file_name = 514, // boot_file_name - S_515_95 = 515, // $@95 - S_ip_address = 516, // ip_address - S_517_96 = 517, // $@96 - S_ip_addresses = 518, // ip_addresses - S_519_97 = 519, // $@97 - S_duid = 520, // duid - S_521_98 = 521, // $@98 - S_hw_address = 522, // hw_address - S_523_99 = 523, // $@99 - S_client_id_value = 524, // client_id_value - S_525_100 = 525, // $@100 - S_circuit_id_value = 526, // circuit_id_value - S_527_101 = 527, // $@101 - S_flex_id_value = 528, // flex_id_value - S_529_102 = 529, // $@102 - S_hostname = 530, // hostname - S_531_103 = 531, // $@103 - S_reservation_client_classes = 532, // reservation_client_classes - S_533_104 = 533, // $@104 - S_relay = 534, // relay - S_535_105 = 535, // $@105 - S_relay_map = 536, // relay_map - S_client_classes = 537, // client_classes - S_538_106 = 538, // $@106 - S_client_classes_list = 539, // client_classes_list - S_client_class_entry = 540, // client_class_entry - S_541_107 = 541, // $@107 - S_client_class_params = 542, // client_class_params - S_not_empty_client_class_params = 543, // not_empty_client_class_params - S_client_class_param = 544, // client_class_param - S_client_class_name = 545, // client_class_name - S_client_class_test = 546, // client_class_test - S_547_108 = 547, // $@108 - S_only_if_required = 548, // only_if_required - S_dhcp4o6_port = 549, // dhcp4o6_port - S_control_socket = 550, // control_socket - S_551_109 = 551, // $@109 - S_control_socket_params = 552, // control_socket_params - S_control_socket_param = 553, // control_socket_param - S_control_socket_type = 554, // control_socket_type - S_555_110 = 555, // $@110 - S_control_socket_name = 556, // control_socket_name - S_557_111 = 557, // $@111 - S_dhcp_queue_control = 558, // dhcp_queue_control - S_559_112 = 559, // $@112 - S_queue_control_params = 560, // queue_control_params - S_queue_control_param = 561, // queue_control_param - S_enable_queue = 562, // enable_queue - S_queue_type = 563, // queue_type - S_564_113 = 564, // $@113 - S_capacity = 565, // capacity - S_arbitrary_map_entry = 566, // arbitrary_map_entry - S_567_114 = 567, // $@114 - S_dhcp_ddns = 568, // dhcp_ddns - S_569_115 = 569, // $@115 - S_sub_dhcp_ddns = 570, // sub_dhcp_ddns - S_571_116 = 571, // $@116 - S_dhcp_ddns_params = 572, // dhcp_ddns_params - S_dhcp_ddns_param = 573, // dhcp_ddns_param - S_enable_updates = 574, // enable_updates - S_server_ip = 575, // server_ip - S_576_117 = 576, // $@117 - S_server_port = 577, // server_port - S_sender_ip = 578, // sender_ip - S_579_118 = 579, // $@118 - S_sender_port = 580, // sender_port - S_max_queue_size = 581, // max_queue_size - S_ncr_protocol = 582, // ncr_protocol - S_583_119 = 583, // $@119 - S_ncr_protocol_value = 584, // ncr_protocol_value - S_ncr_format = 585, // ncr_format - S_586_120 = 586, // $@120 - S_dep_qualifying_suffix = 587, // dep_qualifying_suffix - S_588_121 = 588, // $@121 - S_dep_override_no_update = 589, // dep_override_no_update - S_dep_override_client_update = 590, // dep_override_client_update - S_dep_replace_client_name = 591, // dep_replace_client_name - S_592_122 = 592, // $@122 - S_dep_generated_prefix = 593, // dep_generated_prefix - S_594_123 = 594, // $@123 - S_dep_hostname_char_set = 595, // dep_hostname_char_set - S_596_124 = 596, // $@124 - S_dep_hostname_char_replacement = 597, // dep_hostname_char_replacement - S_598_125 = 598, // $@125 - S_config_control = 599, // config_control - S_600_126 = 600, // $@126 - S_sub_config_control = 601, // sub_config_control - S_602_127 = 602, // $@127 - S_config_control_params = 603, // config_control_params - S_config_control_param = 604, // config_control_param - S_config_databases = 605, // config_databases - S_606_128 = 606, // $@128 - S_config_fetch_wait_time = 607, // config_fetch_wait_time - S_loggers = 608, // loggers - S_609_129 = 609, // $@129 - S_loggers_entries = 610, // loggers_entries - S_logger_entry = 611, // logger_entry - S_612_130 = 612, // $@130 - S_logger_params = 613, // logger_params - S_logger_param = 614, // logger_param - S_debuglevel = 615, // debuglevel - S_severity = 616, // severity - S_617_131 = 617, // $@131 - S_output_options_list = 618, // output_options_list - S_619_132 = 619, // $@132 - S_output_options_list_content = 620, // output_options_list_content - S_output_entry = 621, // output_entry - S_622_133 = 622, // $@133 - S_output_params_list = 623, // output_params_list - S_output_params = 624, // output_params - S_output = 625, // output - S_626_134 = 626, // $@134 - S_flush = 627, // flush - S_maxsize = 628, // maxsize - S_maxver = 629, // maxver - S_pattern = 630, // pattern - S_631_135 = 631, // $@135 - S_compatibility = 632, // compatibility - S_633_136 = 633, // $@136 - S_compatibility_params = 634, // compatibility_params - S_compatibility_param = 635, // compatibility_param - S_lenient_option_parsing = 636 // lenient_option_parsing + S_RESERVATIONS_LOOKUP_FIRST = 181, // "reservations-lookup-first" + S_LOGGERS = 182, // "loggers" + S_OUTPUT_OPTIONS = 183, // "output_options" + S_OUTPUT = 184, // "output" + S_DEBUGLEVEL = 185, // "debuglevel" + S_SEVERITY = 186, // "severity" + S_FLUSH = 187, // "flush" + S_MAXSIZE = 188, // "maxsize" + S_MAXVER = 189, // "maxver" + S_PATTERN = 190, // "pattern" + S_COMPATIBILITY = 191, // "compatibility" + S_LENIENT_OPTION_PARSING = 192, // "lenient-option-parsing" + S_TOPLEVEL_JSON = 193, // TOPLEVEL_JSON + S_TOPLEVEL_DHCP4 = 194, // TOPLEVEL_DHCP4 + S_SUB_DHCP4 = 195, // SUB_DHCP4 + S_SUB_INTERFACES4 = 196, // SUB_INTERFACES4 + S_SUB_SUBNET4 = 197, // SUB_SUBNET4 + S_SUB_POOL4 = 198, // SUB_POOL4 + S_SUB_RESERVATION = 199, // SUB_RESERVATION + S_SUB_OPTION_DEFS = 200, // SUB_OPTION_DEFS + S_SUB_OPTION_DEF = 201, // SUB_OPTION_DEF + S_SUB_OPTION_DATA = 202, // SUB_OPTION_DATA + S_SUB_HOOKS_LIBRARY = 203, // SUB_HOOKS_LIBRARY + S_SUB_DHCP_DDNS = 204, // SUB_DHCP_DDNS + S_SUB_CONFIG_CONTROL = 205, // SUB_CONFIG_CONTROL + S_STRING = 206, // "constant string" + S_INTEGER = 207, // "integer" + S_FLOAT = 208, // "floating point" + S_BOOLEAN = 209, // "boolean" + S_YYACCEPT = 210, // $accept + S_start = 211, // start + S_212_1 = 212, // $@1 + S_213_2 = 213, // $@2 + S_214_3 = 214, // $@3 + S_215_4 = 215, // $@4 + S_216_5 = 216, // $@5 + S_217_6 = 217, // $@6 + S_218_7 = 218, // $@7 + S_219_8 = 219, // $@8 + S_220_9 = 220, // $@9 + S_221_10 = 221, // $@10 + S_222_11 = 222, // $@11 + S_223_12 = 223, // $@12 + S_224_13 = 224, // $@13 + S_value = 225, // value + S_sub_json = 226, // sub_json + S_map2 = 227, // map2 + S_228_14 = 228, // $@14 + S_map_value = 229, // map_value + S_map_content = 230, // map_content + S_not_empty_map = 231, // not_empty_map + S_list_generic = 232, // list_generic + S_233_15 = 233, // $@15 + S_list_content = 234, // list_content + S_not_empty_list = 235, // not_empty_list + S_list_strings = 236, // list_strings + S_237_16 = 237, // $@16 + S_list_strings_content = 238, // list_strings_content + S_not_empty_list_strings = 239, // not_empty_list_strings + S_unknown_map_entry = 240, // unknown_map_entry + S_syntax_map = 241, // syntax_map + S_242_17 = 242, // $@17 + S_global_object = 243, // global_object + S_244_18 = 244, // $@18 + S_global_object_comma = 245, // global_object_comma + S_sub_dhcp4 = 246, // sub_dhcp4 + S_247_19 = 247, // $@19 + S_global_params = 248, // global_params + S_global_param = 249, // global_param + S_valid_lifetime = 250, // valid_lifetime + S_min_valid_lifetime = 251, // min_valid_lifetime + S_max_valid_lifetime = 252, // max_valid_lifetime + S_renew_timer = 253, // renew_timer + S_rebind_timer = 254, // rebind_timer + S_calculate_tee_times = 255, // calculate_tee_times + S_t1_percent = 256, // t1_percent + S_t2_percent = 257, // t2_percent + S_cache_threshold = 258, // cache_threshold + S_cache_max_age = 259, // cache_max_age + S_decline_probation_period = 260, // decline_probation_period + S_server_tag = 261, // server_tag + S_262_20 = 262, // $@20 + S_parked_packet_limit = 263, // parked_packet_limit + S_echo_client_id = 264, // echo_client_id + S_match_client_id = 265, // match_client_id + S_authoritative = 266, // authoritative + S_ddns_send_updates = 267, // ddns_send_updates + S_ddns_override_no_update = 268, // ddns_override_no_update + S_ddns_override_client_update = 269, // ddns_override_client_update + S_ddns_replace_client_name = 270, // ddns_replace_client_name + S_271_21 = 271, // $@21 + S_ddns_replace_client_name_value = 272, // ddns_replace_client_name_value + S_ddns_generated_prefix = 273, // ddns_generated_prefix + S_274_22 = 274, // $@22 + S_ddns_qualifying_suffix = 275, // ddns_qualifying_suffix + S_276_23 = 276, // $@23 + S_ddns_update_on_renew = 277, // ddns_update_on_renew + S_ddns_use_conflict_resolution = 278, // ddns_use_conflict_resolution + S_hostname_char_set = 279, // hostname_char_set + S_280_24 = 280, // $@24 + S_hostname_char_replacement = 281, // hostname_char_replacement + S_282_25 = 282, // $@25 + S_store_extended_info = 283, // store_extended_info + S_statistic_default_sample_count = 284, // statistic_default_sample_count + S_statistic_default_sample_age = 285, // statistic_default_sample_age + S_ip_reservations_unique = 286, // ip_reservations_unique + S_reservations_lookup_first = 287, // reservations_lookup_first + S_interfaces_config = 288, // interfaces_config + S_289_26 = 289, // $@26 + S_interfaces_config_params = 290, // interfaces_config_params + S_interfaces_config_param = 291, // interfaces_config_param + S_sub_interfaces4 = 292, // sub_interfaces4 + S_293_27 = 293, // $@27 + S_interfaces_list = 294, // interfaces_list + S_295_28 = 295, // $@28 + S_dhcp_socket_type = 296, // dhcp_socket_type + S_297_29 = 297, // $@29 + S_socket_type = 298, // socket_type + S_outbound_interface = 299, // outbound_interface + S_300_30 = 300, // $@30 + S_outbound_interface_value = 301, // outbound_interface_value + S_re_detect = 302, // re_detect + S_lease_database = 303, // lease_database + S_304_31 = 304, // $@31 + S_sanity_checks = 305, // sanity_checks + S_306_32 = 306, // $@32 + S_sanity_checks_params = 307, // sanity_checks_params + S_sanity_checks_param = 308, // sanity_checks_param + S_lease_checks = 309, // lease_checks + S_310_33 = 310, // $@33 + S_hosts_database = 311, // hosts_database + S_312_34 = 312, // $@34 + S_hosts_databases = 313, // hosts_databases + S_314_35 = 314, // $@35 + S_database_list = 315, // database_list + S_not_empty_database_list = 316, // not_empty_database_list + S_database = 317, // database + S_318_36 = 318, // $@36 + S_database_map_params = 319, // database_map_params + S_database_map_param = 320, // database_map_param + S_database_type = 321, // database_type + S_322_37 = 322, // $@37 + S_db_type = 323, // db_type + S_user = 324, // user + S_325_38 = 325, // $@38 + S_password = 326, // password + S_327_39 = 327, // $@39 + S_host = 328, // host + S_329_40 = 329, // $@40 + S_port = 330, // port + S_name = 331, // name + S_332_41 = 332, // $@41 + S_persist = 333, // persist + S_lfc_interval = 334, // lfc_interval + S_readonly = 335, // readonly + S_connect_timeout = 336, // connect_timeout + S_request_timeout = 337, // request_timeout + S_tcp_keepalive = 338, // tcp_keepalive + S_tcp_nodelay = 339, // tcp_nodelay + S_contact_points = 340, // contact_points + S_341_42 = 341, // $@42 + S_keyspace = 342, // keyspace + S_343_43 = 343, // $@43 + S_consistency = 344, // consistency + S_345_44 = 345, // $@44 + S_serial_consistency = 346, // serial_consistency + S_347_45 = 347, // $@45 + S_max_reconnect_tries = 348, // max_reconnect_tries + S_reconnect_wait_time = 349, // reconnect_wait_time + S_on_fail = 350, // on_fail + S_351_46 = 351, // $@46 + S_on_fail_mode = 352, // on_fail_mode + S_max_row_errors = 353, // max_row_errors + S_trust_anchor = 354, // trust_anchor + S_355_47 = 355, // $@47 + S_cert_file = 356, // cert_file + S_357_48 = 357, // $@48 + S_key_file = 358, // key_file + S_359_49 = 359, // $@49 + S_cipher_list = 360, // cipher_list + S_361_50 = 361, // $@50 + S_host_reservation_identifiers = 362, // host_reservation_identifiers + S_363_51 = 363, // $@51 + S_host_reservation_identifiers_list = 364, // host_reservation_identifiers_list + S_host_reservation_identifier = 365, // host_reservation_identifier + S_duid_id = 366, // duid_id + S_hw_address_id = 367, // hw_address_id + S_circuit_id = 368, // circuit_id + S_client_id = 369, // client_id + S_flex_id = 370, // flex_id + S_dhcp_multi_threading = 371, // dhcp_multi_threading + S_372_52 = 372, // $@52 + S_multi_threading_params = 373, // multi_threading_params + S_multi_threading_param = 374, // multi_threading_param + S_enable_multi_threading = 375, // enable_multi_threading + S_thread_pool_size = 376, // thread_pool_size + S_packet_queue_size = 377, // packet_queue_size + S_hooks_libraries = 378, // hooks_libraries + S_379_53 = 379, // $@53 + S_hooks_libraries_list = 380, // hooks_libraries_list + S_not_empty_hooks_libraries_list = 381, // not_empty_hooks_libraries_list + S_hooks_library = 382, // hooks_library + S_383_54 = 383, // $@54 + S_sub_hooks_library = 384, // sub_hooks_library + S_385_55 = 385, // $@55 + S_hooks_params = 386, // hooks_params + S_hooks_param = 387, // hooks_param + S_library = 388, // library + S_389_56 = 389, // $@56 + S_parameters = 390, // parameters + S_391_57 = 391, // $@57 + S_expired_leases_processing = 392, // expired_leases_processing + S_393_58 = 393, // $@58 + S_expired_leases_params = 394, // expired_leases_params + S_expired_leases_param = 395, // expired_leases_param + S_reclaim_timer_wait_time = 396, // reclaim_timer_wait_time + S_flush_reclaimed_timer_wait_time = 397, // flush_reclaimed_timer_wait_time + S_hold_reclaimed_time = 398, // hold_reclaimed_time + S_max_reclaim_leases = 399, // max_reclaim_leases + S_max_reclaim_time = 400, // max_reclaim_time + S_unwarned_reclaim_cycles = 401, // unwarned_reclaim_cycles + S_subnet4_list = 402, // subnet4_list + S_403_59 = 403, // $@59 + S_subnet4_list_content = 404, // subnet4_list_content + S_not_empty_subnet4_list = 405, // not_empty_subnet4_list + S_subnet4 = 406, // subnet4 + S_407_60 = 407, // $@60 + S_sub_subnet4 = 408, // sub_subnet4 + S_409_61 = 409, // $@61 + S_subnet4_params = 410, // subnet4_params + S_subnet4_param = 411, // subnet4_param + S_subnet = 412, // subnet + S_413_62 = 413, // $@62 + S_subnet_4o6_interface = 414, // subnet_4o6_interface + S_415_63 = 415, // $@63 + S_subnet_4o6_interface_id = 416, // subnet_4o6_interface_id + S_417_64 = 417, // $@64 + S_subnet_4o6_subnet = 418, // subnet_4o6_subnet + S_419_65 = 419, // $@65 + S_interface = 420, // interface + S_421_66 = 421, // $@66 + S_client_class = 422, // client_class + S_423_67 = 423, // $@67 + S_require_client_classes = 424, // require_client_classes + S_425_68 = 425, // $@68 + S_reservations_global = 426, // reservations_global + S_reservations_in_subnet = 427, // reservations_in_subnet + S_reservations_out_of_pool = 428, // reservations_out_of_pool + S_reservation_mode = 429, // reservation_mode + S_430_69 = 430, // $@69 + S_hr_mode = 431, // hr_mode + S_id = 432, // id + S_shared_networks = 433, // shared_networks + S_434_70 = 434, // $@70 + S_shared_networks_content = 435, // shared_networks_content + S_shared_networks_list = 436, // shared_networks_list + S_shared_network = 437, // shared_network + S_438_71 = 438, // $@71 + S_shared_network_params = 439, // shared_network_params + S_shared_network_param = 440, // shared_network_param + S_option_def_list = 441, // option_def_list + S_442_72 = 442, // $@72 + S_sub_option_def_list = 443, // sub_option_def_list + S_444_73 = 444, // $@73 + S_option_def_list_content = 445, // option_def_list_content + S_not_empty_option_def_list = 446, // not_empty_option_def_list + S_option_def_entry = 447, // option_def_entry + S_448_74 = 448, // $@74 + S_sub_option_def = 449, // sub_option_def + S_450_75 = 450, // $@75 + S_option_def_params = 451, // option_def_params + S_not_empty_option_def_params = 452, // not_empty_option_def_params + S_option_def_param = 453, // option_def_param + S_option_def_name = 454, // option_def_name + S_code = 455, // code + S_option_def_code = 456, // option_def_code + S_option_def_type = 457, // option_def_type + S_458_76 = 458, // $@76 + S_option_def_record_types = 459, // option_def_record_types + S_460_77 = 460, // $@77 + S_space = 461, // space + S_462_78 = 462, // $@78 + S_option_def_space = 463, // option_def_space + S_option_def_encapsulate = 464, // option_def_encapsulate + S_465_79 = 465, // $@79 + S_option_def_array = 466, // option_def_array + S_option_data_list = 467, // option_data_list + S_468_80 = 468, // $@80 + S_option_data_list_content = 469, // option_data_list_content + S_not_empty_option_data_list = 470, // not_empty_option_data_list + S_option_data_entry = 471, // option_data_entry + S_472_81 = 472, // $@81 + S_sub_option_data = 473, // sub_option_data + S_474_82 = 474, // $@82 + S_option_data_params = 475, // option_data_params + S_not_empty_option_data_params = 476, // not_empty_option_data_params + S_option_data_param = 477, // option_data_param + S_option_data_name = 478, // option_data_name + S_option_data_data = 479, // option_data_data + S_480_83 = 480, // $@83 + S_option_data_code = 481, // option_data_code + S_option_data_space = 482, // option_data_space + S_option_data_csv_format = 483, // option_data_csv_format + S_option_data_always_send = 484, // option_data_always_send + S_pools_list = 485, // pools_list + S_486_84 = 486, // $@84 + S_pools_list_content = 487, // pools_list_content + S_not_empty_pools_list = 488, // not_empty_pools_list + S_pool_list_entry = 489, // pool_list_entry + S_490_85 = 490, // $@85 + S_sub_pool4 = 491, // sub_pool4 + S_492_86 = 492, // $@86 + S_pool_params = 493, // pool_params + S_pool_param = 494, // pool_param + S_pool_entry = 495, // pool_entry + S_496_87 = 496, // $@87 + S_user_context = 497, // user_context + S_498_88 = 498, // $@88 + S_comment = 499, // comment + S_500_89 = 500, // $@89 + S_reservations = 501, // reservations + S_502_90 = 502, // $@90 + S_reservations_list = 503, // reservations_list + S_not_empty_reservations_list = 504, // not_empty_reservations_list + S_reservation = 505, // reservation + S_506_91 = 506, // $@91 + S_sub_reservation = 507, // sub_reservation + S_508_92 = 508, // $@92 + S_reservation_params = 509, // reservation_params + S_not_empty_reservation_params = 510, // not_empty_reservation_params + S_reservation_param = 511, // reservation_param + S_next_server = 512, // next_server + S_513_93 = 513, // $@93 + S_server_hostname = 514, // server_hostname + S_515_94 = 515, // $@94 + S_boot_file_name = 516, // boot_file_name + S_517_95 = 517, // $@95 + S_ip_address = 518, // ip_address + S_519_96 = 519, // $@96 + S_ip_addresses = 520, // ip_addresses + S_521_97 = 521, // $@97 + S_duid = 522, // duid + S_523_98 = 523, // $@98 + S_hw_address = 524, // hw_address + S_525_99 = 525, // $@99 + S_client_id_value = 526, // client_id_value + S_527_100 = 527, // $@100 + S_circuit_id_value = 528, // circuit_id_value + S_529_101 = 529, // $@101 + S_flex_id_value = 530, // flex_id_value + S_531_102 = 531, // $@102 + S_hostname = 532, // hostname + S_533_103 = 533, // $@103 + S_reservation_client_classes = 534, // reservation_client_classes + S_535_104 = 535, // $@104 + S_relay = 536, // relay + S_537_105 = 537, // $@105 + S_relay_map = 538, // relay_map + S_client_classes = 539, // client_classes + S_540_106 = 540, // $@106 + S_client_classes_list = 541, // client_classes_list + S_client_class_entry = 542, // client_class_entry + S_543_107 = 543, // $@107 + S_client_class_params = 544, // client_class_params + S_not_empty_client_class_params = 545, // not_empty_client_class_params + S_client_class_param = 546, // client_class_param + S_client_class_name = 547, // client_class_name + S_client_class_test = 548, // client_class_test + S_549_108 = 549, // $@108 + S_only_if_required = 550, // only_if_required + S_dhcp4o6_port = 551, // dhcp4o6_port + S_control_socket = 552, // control_socket + S_553_109 = 553, // $@109 + S_control_socket_params = 554, // control_socket_params + S_control_socket_param = 555, // control_socket_param + S_control_socket_type = 556, // control_socket_type + S_557_110 = 557, // $@110 + S_control_socket_name = 558, // control_socket_name + S_559_111 = 559, // $@111 + S_dhcp_queue_control = 560, // dhcp_queue_control + S_561_112 = 561, // $@112 + S_queue_control_params = 562, // queue_control_params + S_queue_control_param = 563, // queue_control_param + S_enable_queue = 564, // enable_queue + S_queue_type = 565, // queue_type + S_566_113 = 566, // $@113 + S_capacity = 567, // capacity + S_arbitrary_map_entry = 568, // arbitrary_map_entry + S_569_114 = 569, // $@114 + S_dhcp_ddns = 570, // dhcp_ddns + S_571_115 = 571, // $@115 + S_sub_dhcp_ddns = 572, // sub_dhcp_ddns + S_573_116 = 573, // $@116 + S_dhcp_ddns_params = 574, // dhcp_ddns_params + S_dhcp_ddns_param = 575, // dhcp_ddns_param + S_enable_updates = 576, // enable_updates + S_server_ip = 577, // server_ip + S_578_117 = 578, // $@117 + S_server_port = 579, // server_port + S_sender_ip = 580, // sender_ip + S_581_118 = 581, // $@118 + S_sender_port = 582, // sender_port + S_max_queue_size = 583, // max_queue_size + S_ncr_protocol = 584, // ncr_protocol + S_585_119 = 585, // $@119 + S_ncr_protocol_value = 586, // ncr_protocol_value + S_ncr_format = 587, // ncr_format + S_588_120 = 588, // $@120 + S_dep_qualifying_suffix = 589, // dep_qualifying_suffix + S_590_121 = 590, // $@121 + S_dep_override_no_update = 591, // dep_override_no_update + S_dep_override_client_update = 592, // dep_override_client_update + S_dep_replace_client_name = 593, // dep_replace_client_name + S_594_122 = 594, // $@122 + S_dep_generated_prefix = 595, // dep_generated_prefix + S_596_123 = 596, // $@123 + S_dep_hostname_char_set = 597, // dep_hostname_char_set + S_598_124 = 598, // $@124 + S_dep_hostname_char_replacement = 599, // dep_hostname_char_replacement + S_600_125 = 600, // $@125 + S_config_control = 601, // config_control + S_602_126 = 602, // $@126 + S_sub_config_control = 603, // sub_config_control + S_604_127 = 604, // $@127 + S_config_control_params = 605, // config_control_params + S_config_control_param = 606, // config_control_param + S_config_databases = 607, // config_databases + S_608_128 = 608, // $@128 + S_config_fetch_wait_time = 609, // config_fetch_wait_time + S_loggers = 610, // loggers + S_611_129 = 611, // $@129 + S_loggers_entries = 612, // loggers_entries + S_logger_entry = 613, // logger_entry + S_614_130 = 614, // $@130 + S_logger_params = 615, // logger_params + S_logger_param = 616, // logger_param + S_debuglevel = 617, // debuglevel + S_severity = 618, // severity + S_619_131 = 619, // $@131 + S_output_options_list = 620, // output_options_list + S_621_132 = 621, // $@132 + S_output_options_list_content = 622, // output_options_list_content + S_output_entry = 623, // output_entry + S_624_133 = 624, // $@133 + S_output_params_list = 625, // output_params_list + S_output_params = 626, // output_params + S_output = 627, // output + S_628_134 = 628, // $@134 + S_flush = 629, // flush + S_maxsize = 630, // maxsize + S_maxver = 631, // maxver + S_pattern = 632, // pattern + S_633_135 = 633, // $@135 + S_compatibility = 634, // compatibility + S_635_136 = 635, // $@136 + S_compatibility_params = 636, // compatibility_params + S_compatibility_param = 637, // compatibility_param + S_lenient_option_parsing = 638 // lenient_option_parsing }; }; @@ -4481,6 +4484,21 @@ switch (yykind) return symbol_type (token::TOKEN_IP_RESERVATIONS_UNIQUE, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_RESERVATIONS_LOOKUP_FIRST (location_type l) + { + return symbol_type (token::TOKEN_RESERVATIONS_LOOKUP_FIRST, std::move (l)); + } +#else + static + symbol_type + make_RESERVATIONS_LOOKUP_FIRST (const location_type& l) + { + return symbol_type (token::TOKEN_RESERVATIONS_LOOKUP_FIRST, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -5231,8 +5249,8 @@ switch (yykind) /// Constants. enum { - yylast_ = 1275, ///< Last index in yytable_. - yynnts_ = 428, ///< Number of nonterminal symbols. + yylast_ = 1279, ///< Last index in yytable_. + yynnts_ = 429, ///< Number of nonterminal symbols. yyfinal_ = 28 ///< Termination state number. }; @@ -5298,10 +5316,10 @@ switch (yykind) 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208 + 205, 206, 207, 208, 209 }; // Last valid token kind. - const int code_max = 463; + const int code_max = 464; if (t <= 0) return symbol_kind::S_YYEOF; @@ -5474,7 +5492,7 @@ switch (yykind) #line 14 "dhcp4_parser.yy" } } // isc::dhcp -#line 5478 "dhcp4_parser.h" +#line 5496 "dhcp4_parser.h" diff --git a/src/bin/dhcp6/dhcp6_lexer.cc b/src/bin/dhcp6/dhcp6_lexer.cc index 1568f3a4bb..c037e0c774 100644 --- a/src/bin/dhcp6/dhcp6_lexer.cc +++ b/src/bin/dhcp6/dhcp6_lexer.cc @@ -328,6 +328,7 @@ typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; @@ -452,7 +453,7 @@ typedef size_t yy_size_t; #endif /* %if-not-reentrant */ -extern int yyleng; +extern yy_size_t yyleng; /* %endif */ /* %if-c-only */ @@ -505,7 +506,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -586,8 +587,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* %not-for-header */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = NULL; @@ -617,7 +618,7 @@ static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, yy_size_t len ); /* %endif */ @@ -685,14 +686,14 @@ static void yynoreturn yy_fatal_error ( const char* msg ); #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ - yyleng = (int) (yy_cp - yy_bp); \ + yyleng = (yy_size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 224 -#define YY_END_OF_BUFFER 225 +#define YY_NUM_RULES 225 +#define YY_END_OF_BUFFER 226 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -700,21 +701,21 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[2080] = +static const flex_int16_t yy_accept[2093] = { 0, - 217, 217, 0, 0, 0, 0, 0, 0, 0, 0, - 225, 223, 10, 11, 223, 1, 217, 214, 217, 217, - 223, 216, 215, 223, 223, 223, 223, 223, 210, 211, - 223, 223, 223, 212, 213, 5, 5, 5, 223, 223, - 223, 10, 11, 0, 0, 205, 0, 0, 0, 0, + 218, 218, 0, 0, 0, 0, 0, 0, 0, 0, + 226, 224, 10, 11, 224, 1, 218, 215, 218, 218, + 224, 217, 216, 224, 224, 224, 224, 224, 211, 212, + 224, 224, 224, 213, 214, 5, 5, 5, 224, 224, + 224, 10, 11, 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 217, 217, - 0, 216, 217, 3, 2, 6, 0, 217, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 9, 0, 206, + 0, 0, 0, 0, 0, 0, 0, 1, 218, 218, + 0, 217, 218, 3, 2, 6, 0, 218, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 9, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -724,7 +725,7 @@ static const flex_int16_t yy_accept[2080] = 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 176, 0, 0, 177, - 0, 0, 0, 0, 0, 0, 0, 207, 209, 0, + 0, 0, 0, 0, 0, 0, 0, 208, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -736,7 +737,7 @@ static const flex_int16_t yy_accept[2080] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 222, 220, 0, 219, 218, + 0, 0, 0, 0, 0, 223, 221, 0, 220, 219, 0, 0, 0, 0, 0, 175, 0, 28, 0, 27, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, @@ -750,7 +751,7 @@ static const flex_int16_t yy_accept[2080] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 221, 218, + 0, 0, 0, 0, 0, 0, 0, 0, 222, 219, 0, 0, 0, 0, 29, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, @@ -872,64 +873,67 @@ static const flex_int16_t yy_accept[2080] = 124, 88, 0, 0, 166, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 118, 0, 0, 142, 0, 0, - 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, - 0, 72, 0, 0, 0, 0, 0, 0, 152, 47, - 0, 0, 0, 74, 194, 38, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, - 0, 44, 0, 0, 18, 0, 0, 0, 76, 0, - 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 0, 0, 0, 0, 152, + 47, 0, 0, 0, 74, 194, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, + 0, 0, 44, 0, 0, 18, 0, 0, 0, 76, + 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 0, 141, 0, 0, 0, 62, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, - 0, 0, 0, 0, 171, 0, 0, 0, 46, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 0, 0, 84, 0, 141, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, - 104, 0, 68, 0, 0, 0, 36, 0, 48, 0, + 114, 0, 0, 0, 0, 0, 171, 0, 0, 0, + 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 104, 0, 68, 0, 0, 0, 36, + 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, + + 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, + 0, 69, 0, 0, 192, 0, 0, 0, 0, 0, + 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 25, 39, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 187, 0, 0, 0, 0, 156, + 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 186, 0, 86, 0, + 85, 0, 21, 0, 81, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 65, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 125, 0, 0, 0, 0, 0, 69, 0, 0, - 192, 0, 0, 0, 0, 0, 0, 0, 0, 94, + 115, 0, 0, 185, 0, 0, 0, 0, 0, 75, + 0, 0, 91, 0, 66, 0, 23, 0, 131, 0, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, + 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 25, 39, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 186, 0, 86, 0, 85, 0, 21, 0, 81, - - 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, - 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 115, 0, 0, 185, 0, 0, - 0, 0, 0, 75, 0, 0, 91, 0, 66, 0, - 23, 0, 131, 0, 0, 0, 0, 103, 0, 0, - 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 70, 0, 0, 0, 98, 0, 0, + 0, 70, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 0, 0, 99, 0, 0, 0, 191, 0, 0, + 0, 0, 202, 205, 83, 82, 22, 0, 136, 153, + 132, 0, 0, 0, 0, 0, 95, 0, 0, 0, + 0, 0, 0, 0, 183, 0, 0, 0, 188, 0, + 97, 0, 89, 0, 0, 0, 0, 0, 133, 0, + 0, 0, 182, 0, 0, 26, 203, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, + 0, 101, 0, 137, 93, 0, 0, 0, 0, 92, + 184, 0 - 0, 49, 0, 0, 99, 0, 0, 0, 191, 0, - 0, 0, 0, 202, 204, 83, 82, 22, 0, 136, - 153, 132, 0, 0, 0, 0, 95, 0, 0, 0, - 0, 0, 0, 0, 183, 0, 0, 188, 0, 97, - 0, 89, 0, 0, 0, 0, 133, 0, 0, 0, - 182, 0, 0, 26, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 0, 0, 0, 0, 0, 101, 0, - 137, 93, 0, 0, 0, 0, 92, 184, 0 } ; static const YY_CHAR yy_ec[256] = @@ -976,268 +980,270 @@ static const YY_CHAR yy_meta[74] = 1, 1, 1 } ; -static const flex_int16_t yy_base[2088] = +static const flex_int16_t yy_base[2101] = { 0, 0, 72, 21, 31, 43, 51, 54, 60, 91, 99, - 2469, 2470, 34, 2465, 145, 0, 207, 2470, 214, 221, - 13, 228, 2470, 2445, 118, 25, 2, 6, 2470, 2470, - 73, 11, 17, 2470, 2470, 2470, 104, 2453, 2406, 0, - 2443, 108, 2460, 24, 256, 2470, 67, 2409, 2429, 84, - 75, 2429, 88, 226, 91, 89, 284, 196, 206, 279, - 203, 235, 197, 60, 216, 2409, 286, 288, 253, 300, - 314, 2392, 223, 319, 366, 329, 2411, 0, 380, 388, - 417, 425, 394, 2470, 0, 2470, 431, 439, 219, 269, - 229, 299, 313, 310, 2470, 2408, 2449, 2470, 346, 2470, - - 445, 322, 2406, 2447, 326, 10, 362, 383, 352, 421, - 428, 433, 2446, 0, 506, 423, 2388, 413, 2387, 2388, - 2394, 418, 2390, 2379, 2380, 2385, 370, 2395, 2378, 2387, - 327, 172, 321, 2381, 2379, 408, 2368, 2426, 419, 2371, - 2424, 2364, 239, 2385, 2385, 2379, 416, 2372, 2370, 2371, - 2363, 2368, 2362, 427, 2373, 460, 2358, 2357, 2371, 434, - 2409, 2356, 442, 2368, 440, 2356, 502, 2357, 476, 2369, - 2366, 2367, 293, 2365, 2400, 2399, 439, 2345, 2345, 2349, - 441, 2345, 2337, 2354, 2346, 0, 445, 462, 451, 478, - 484, 468, 2345, 2470, 480, 2340, 2470, 480, 506, 2470, - - 2394, 501, 2393, 510, 2392, 508, 2391, 2470, 2470, 554, - 2390, 539, 2349, 2341, 2345, 2346, 2326, 2337, 2339, 2338, - 515, 524, 2381, 2375, 2339, 2320, 2317, 2325, 2331, 2319, - 2333, 2329, 2330, 2330, 2325, 2317, 2319, 2303, 2307, 2320, - 2322, 2319, 2311, 2301, 2304, 2318, 2470, 2304, 2312, 80, - 534, 2297, 2306, 2348, 2295, 2305, 2345, 547, 2304, 2343, - 2288, 2290, 2301, 2339, 547, 2343, 2297, 2277, 2292, 280, - 2282, 2288, 490, 2279, 2277, 2280, 2276, 2282, 2273, 2272, - 2285, 2278, 2268, 2279, 2283, 2282, 2276, 527, 2283, 2278, - 2270, 2260, 2275, 2270, 2274, 532, 2272, 2258, 2264, 2271, - - 2253, 464, 2258, 2255, 2254, 584, 2249, 2263, 2262, 565, - 2261, 2264, 2246, 2254, 566, 2470, 2470, 567, 2470, 2470, - 2241, 550, 2288, 569, 2299, 2470, 571, 2470, 2298, 2470, - 2292, 621, 2470, 571, 2232, 2251, 2234, 2251, 2287, 2247, - 2237, 2289, 2244, 2247, 2238, 2241, 2236, 561, 2470, 2238, - 602, 2277, 2235, 2232, 2233, 610, 2237, 2277, 2225, 2220, - 2217, 2213, 2215, 2266, 2223, 2212, 2228, 2262, 2208, 617, - 2221, 2221, 2204, 2205, 2218, 2216, 2214, 2203, 2213, 2212, - 2207, 2214, 2209, 2194, 589, 2203, 2206, 2201, 564, 2200, - 2196, 2246, 571, 591, 2470, 2205, 2239, 2189, 2188, 2181, - - 2183, 2195, 2186, 2193, 2174, 2191, 2180, 2185, 624, 2232, - 2185, 603, 2182, 2185, 2185, 2183, 2172, 2172, 2184, 596, - 2159, 2160, 2181, 608, 2163, 2160, 2174, 2177, 2172, 2158, - 2170, 2169, 2168, 2163, 2205, 2165, 2164, 2163, 2162, 584, - 2205, 2164, 2203, 2143, 2201, 2143, 654, 2156, 2470, 2470, - 2155, 597, 2197, 2196, 2470, 2195, 2470, 632, 680, 637, - 2194, 2188, 2141, 2143, 2145, 2132, 2129, 2470, 2134, 2127, - 2139, 2142, 2125, 2140, 2127, 2126, 2470, 2136, 623, 2127, - 2124, 2136, 628, 2121, 2123, 2470, 2129, 2114, 2116, 2127, - 2125, 2120, 668, 2127, 2115, 2108, 2159, 2470, 2106, 2122, - - 2156, 2160, 2116, 2110, 2112, 2113, 2097, 2106, 2113, 2147, - 2098, 2097, 2092, 2091, 2093, 2089, 2085, 632, 2104, 2078, - 2085, 2090, 2083, 2099, 2133, 2137, 2470, 2082, 2078, 2134, - 2085, 2084, 2078, 2085, 2070, 2080, 2068, 2082, 2082, 2070, - 2066, 2068, 2063, 2470, 2120, 2470, 2062, 2061, 2054, 2071, - 2110, 2109, 2054, 2059, 2068, 2062, 2056, 2065, 703, 2102, - 2064, 2047, 2047, 2042, 2038, 2044, 2049, 652, 2051, 2055, - 2038, 2096, 2037, 2037, 2088, 2033, 2034, 2033, 2045, 2034, - 2470, 2044, 2470, 2081, 2470, 2032, 2470, 2042, 2078, 2038, - 2081, 2470, 2470, 2470, 651, 675, 706, 2470, 655, 2040, - - 2020, 2030, 2072, 2071, 2016, 2026, 2068, 2013, 2012, 2011, - 2018, 2011, 2019, 2022, 2004, 2004, 2019, 2018, 638, 2017, - 2016, 2000, 2015, 1997, 2044, 2011, 2049, 1993, 1995, 2007, - 2007, 2006, 2470, 1991, 1988, 2046, 2001, 1993, 1999, 1990, - 1998, 2470, 1983, 1994, 1998, 1980, 1992, 1984, 1992, 375, - 1974, 1973, 1967, 1972, 1969, 1984, 1983, 1984, 1963, 1973, - 1979, 2022, 1977, 1976, 1968, 1959, 2470, 1960, 1962, 2470, - 1964, 1969, 2008, 2007, 16, 1968, 2005, 1950, 2003, 1950, - 1953, 1954, 1945, 2470, 1959, 1945, 710, 1937, 1941, 1957, - 1954, 1946, 1991, 1943, 1950, 1988, 2470, 1934, 1932, 1946, - - 1930, 1944, 1947, 1981, 1980, 1979, 1926, 1977, 1922, 1975, - 1974, 2470, 1919, 1933, 1932, 716, 1933, 1932, 1929, 1929, - 1966, 1930, 1925, 1914, 1916, 2470, 2470, 681, 673, 1908, - 1921, 88, 184, 414, 490, 552, 562, 612, 595, 684, + 2482, 2483, 34, 2478, 145, 0, 207, 2483, 214, 221, + 13, 228, 2483, 2458, 118, 25, 2, 6, 2483, 2483, + 73, 11, 17, 2483, 2483, 2483, 104, 2466, 2419, 0, + 2456, 108, 2473, 24, 256, 2483, 67, 2422, 2442, 84, + 75, 2442, 88, 226, 91, 89, 284, 196, 206, 279, + 203, 235, 197, 60, 216, 2422, 286, 288, 253, 300, + 314, 2405, 223, 319, 366, 329, 2424, 0, 380, 388, + 417, 425, 394, 2483, 0, 2483, 431, 439, 219, 269, + 229, 299, 313, 310, 2483, 2421, 2462, 2483, 346, 2483, + + 445, 322, 2419, 2460, 326, 10, 362, 383, 352, 421, + 428, 433, 2459, 0, 506, 423, 2401, 413, 2400, 2401, + 2407, 418, 2403, 2392, 2393, 2398, 370, 2408, 2391, 2400, + 327, 172, 321, 2394, 2392, 408, 2381, 2439, 419, 2384, + 2437, 2377, 239, 2398, 2398, 2392, 416, 2385, 2383, 2384, + 2376, 2381, 2375, 427, 2386, 460, 2371, 2370, 2384, 434, + 2422, 2369, 442, 2381, 440, 2369, 502, 2370, 476, 2382, + 2379, 2380, 293, 2378, 2413, 2412, 439, 2358, 2358, 2362, + 441, 2358, 2350, 2367, 2359, 0, 445, 462, 451, 478, + 484, 468, 2358, 2483, 480, 2353, 2483, 480, 506, 2483, + + 2407, 501, 2406, 510, 2405, 508, 2404, 2483, 2483, 554, + 2403, 539, 2362, 2354, 2358, 2359, 2339, 2350, 2352, 2351, + 515, 524, 2394, 2388, 2352, 2333, 2330, 2338, 2344, 2332, + 2346, 2342, 2343, 2343, 2338, 2330, 2332, 2316, 2320, 2333, + 2335, 2332, 2324, 2314, 2317, 2331, 2483, 2317, 2325, 80, + 534, 2310, 2319, 2361, 2308, 2318, 2358, 547, 2317, 2356, + 2301, 2303, 2314, 2352, 547, 2356, 2310, 2290, 2305, 280, + 2295, 2301, 490, 2292, 2290, 2293, 2289, 2295, 2286, 2285, + 2298, 2291, 2281, 2292, 2296, 2295, 2289, 527, 2296, 2291, + 2283, 2273, 2288, 2283, 2287, 532, 2285, 2271, 2277, 2284, + + 2266, 464, 2271, 2268, 2267, 584, 2262, 2276, 2275, 565, + 2274, 2277, 2259, 2267, 566, 2483, 2483, 567, 2483, 2483, + 2254, 550, 2301, 569, 2312, 2483, 571, 2483, 2311, 2483, + 2305, 621, 2483, 571, 2245, 2264, 2247, 2264, 2300, 2260, + 2250, 2302, 2257, 2260, 2251, 2254, 2249, 561, 2483, 2251, + 602, 2290, 2248, 2245, 2246, 610, 2250, 2290, 2238, 2233, + 2230, 2226, 2228, 2279, 2236, 2225, 2241, 2275, 2221, 617, + 2234, 2234, 2217, 2218, 2231, 2229, 2227, 2216, 2226, 2225, + 2220, 2227, 2222, 2207, 589, 2216, 2219, 2214, 564, 2213, + 2209, 2259, 571, 591, 2483, 2218, 2252, 2202, 2201, 2194, + + 2196, 2208, 2199, 2206, 2187, 2204, 2193, 2198, 624, 2245, + 2198, 603, 2195, 2198, 2198, 2196, 2185, 2185, 2197, 596, + 2172, 2173, 2194, 608, 2176, 2173, 2187, 2190, 2185, 2171, + 2183, 2182, 2181, 2176, 2218, 2178, 2177, 2176, 2175, 584, + 2218, 2177, 2216, 2156, 2214, 2156, 654, 2169, 2483, 2483, + 2168, 597, 2210, 2209, 2483, 2208, 2483, 632, 680, 637, + 2207, 2201, 2154, 2156, 2158, 2145, 2142, 2483, 2147, 2140, + 2152, 2155, 2138, 2153, 2140, 2139, 2483, 2149, 623, 2140, + 2137, 2149, 628, 2134, 2136, 2483, 2142, 2127, 2129, 2140, + 2138, 2133, 668, 2140, 2128, 2121, 2172, 2483, 2119, 2135, + + 2169, 2173, 2129, 2123, 2125, 2126, 2110, 2119, 2126, 2160, + 2111, 2110, 2105, 2104, 2106, 2102, 2098, 632, 2117, 2091, + 2098, 2103, 2096, 2112, 2146, 2150, 2483, 2095, 2091, 2147, + 2098, 2097, 2091, 2098, 2083, 2093, 2081, 2095, 2095, 2083, + 2079, 2081, 2076, 2483, 2133, 2483, 2075, 2074, 2067, 2084, + 2123, 2122, 2067, 2072, 2081, 2075, 2069, 2078, 703, 2115, + 2077, 2060, 2060, 2055, 2051, 2057, 2062, 652, 2064, 2068, + 2051, 2109, 2050, 2050, 2101, 2046, 2047, 2046, 2058, 2047, + 2483, 2057, 2483, 2094, 2483, 2045, 2483, 2055, 2091, 2051, + 2094, 2483, 2483, 2483, 651, 675, 706, 2483, 655, 2053, + + 2033, 2043, 2085, 2084, 2029, 2039, 2081, 2026, 2025, 2024, + 2031, 2024, 2032, 2035, 2017, 2017, 2032, 2031, 638, 2030, + 2029, 2013, 2028, 2010, 2057, 2024, 2062, 2006, 2008, 2020, + 2020, 2019, 2483, 2004, 2001, 2059, 2014, 2006, 2012, 2003, + 2011, 2483, 1996, 2007, 2011, 1993, 2005, 1997, 2005, 375, + 1987, 1986, 1980, 1985, 1982, 1997, 1996, 1997, 1976, 1986, + 1992, 2035, 1990, 1989, 1981, 1972, 2483, 1973, 1975, 2483, + 1977, 1982, 2021, 2020, 16, 1981, 2018, 1963, 2016, 1963, + 1966, 1967, 1958, 2483, 1972, 1958, 710, 1950, 1954, 1970, + 1967, 1959, 2004, 1956, 1963, 2001, 2483, 1947, 1945, 1959, + + 1943, 1957, 1960, 1994, 1993, 1992, 1939, 1990, 1935, 1988, + 1987, 2483, 1932, 1946, 1945, 716, 1946, 1945, 1942, 1942, + 1979, 1943, 1938, 1927, 1929, 2483, 2483, 681, 673, 1921, + 1934, 88, 184, 414, 490, 552, 562, 612, 595, 684, 667, 630, 708, 713, 667, 673, 678, 689, 694, 680, 683, 694, 694, 678, 736, 698, 690, 700, 740, 703, - 695, 697, 701, 707, 747, 753, 712, 713, 2470, 716, + 695, 697, 701, 707, 747, 753, 712, 713, 2483, 716, 711, 702, 717, 722, 719, 716, 723, 722, 710, 724, 725, 723, 731, 767, 729, 774, 775, 719, 732, 718, - 728, 775, 733, 783, 2470, 784, 740, 738, 740, 736, + 728, 775, 733, 783, 2483, 784, 740, 738, 740, 736, - 730, 790, 786, 749, 738, 2470, 740, 751, 740, 753, - 743, 756, 800, 743, 802, 745, 760, 2470, 754, 748, + 730, 790, 786, 749, 738, 2483, 740, 751, 740, 753, + 743, 756, 800, 743, 802, 745, 760, 2483, 754, 748, 759, 744, 755, 768, 747, 753, 808, 772, 756, 756, 769, 813, 814, 815, 762, 780, 775, 782, 781, 778, - 763, 775, 776, 783, 773, 771, 2470, 836, 794, 795, + 763, 775, 776, 783, 773, 771, 2483, 836, 794, 795, 785, 797, 787, 790, 801, 792, 798, 842, 818, 805, - 787, 794, 808, 853, 810, 807, 805, 2470, 809, 804, + 787, 794, 808, 853, 810, 807, 805, 2483, 809, 804, 819, 816, 802, 809, 808, 806, 825, 822, 823, 811, 818, 819, 828, 832, 868, 830, 820, 834, 820, 819, - 825, 881, 822, 823, 829, 845, 828, 882, 837, 2470, + 825, 881, 822, 823, 829, 845, 828, 882, 837, 2483, 847, 847, 840, 851, 849, 894, 836, 838, 853, 854, - 842, 840, 902, 903, 860, 846, 852, 850, 2470, 2470, - 866, 865, 866, 871, 859, 869, 871, 2470, 2470, 871, - 873, 860, 878, 865, 2470, 863, 881, 868, 868, 919, - 866, 870, 888, 929, 2470, 930, 2470, 875, 889, 889, + 842, 840, 902, 903, 860, 846, 852, 850, 2483, 2483, + 866, 865, 866, 871, 859, 869, 871, 2483, 2483, 871, + 873, 860, 878, 865, 2483, 863, 881, 868, 868, 919, + 866, 870, 888, 929, 2483, 930, 2483, 875, 889, 889, 934, 882, 881, 885, 879, 939, 892, 882, 883, 879, 889, 893, 904, 888, 906, 901, 903, 896, 898, 899, 895, 912, 902, 917, 958, 915, 920, 897, 920, 906, - 905, 2470, 912, 913, 928, 918, 916, 929, 967, 914, - 929, 947, 955, 924, 973, 935, 975, 2470, 981, 924, + 905, 2483, 912, 913, 928, 918, 916, 929, 967, 914, + 929, 947, 955, 924, 973, 935, 975, 2483, 981, 924, 943, 933, 932, 927, 928, 940, 947, 936, 937, 933, 951, 937, 938, 948, 957, 993, 941, 959, 952, 947, - 1000, 1006, 963, 954, 2470, 958, 966, 968, 953, 969, - 959, 971, 965, 1012, 978, 962, 963, 2470, 979, 982, - 965, 967, 1025, 968, 987, 2470, 2470, 986, 989, 976, + 1000, 1006, 963, 954, 2483, 958, 966, 968, 953, 969, + 959, 971, 965, 1012, 978, 962, 963, 2483, 979, 982, + 965, 967, 1025, 968, 987, 2483, 2483, 986, 989, 976, 971, 989, 977, 1030, 988, 984, 981, 1034, 983, 1036, 998, 984, 1002, 1001, 987, 1002, 994, 990, 1008, 1007, - 994, 1011, 2470, 2470, 1003, 1050, 1003, 2470, 1011, 1014, - 1007, 1060, 2470, 1010, 1015, 1059, 1010, 1011, 1023, 1017, + 994, 1011, 2483, 2483, 1003, 1050, 1003, 2483, 1011, 1014, + 1007, 1060, 2483, 1010, 1015, 1059, 1010, 1011, 1023, 1017, 1021, 1019, 1017, 1028, 1073, 1017, 1022, 1019, 1077, 1078, - 1022, 1034, 2470, 1022, 1030, 1029, 1080, 1022, 1043, 1029, + 1022, 1034, 2483, 1022, 1030, 1029, 1080, 1022, 1043, 1029, 1030, 1039, 1051, 1038, 1046, 1037, 1051, 1052, 1068, 1073, - 1055, 1060, 1043, 1043, 2470, 1044, 1046, 1057, 1047, 1067, + 1055, 1060, 1043, 1043, 2483, 1044, 1046, 1057, 1047, 1067, 1066, 1057, 1046, 1063, 1070, 1113, 1055, 1075, 1068, 1072, - 1076, 1059, 1076, 1067, 1122, 1069, 1073, 2470, 1122, 1071, + 1076, 1059, 1076, 1067, 1122, 1069, 1073, 2483, 1122, 1071, 1070, 1070, 1091, 1088, 1128, 1077, 1095, 1096, 1082, 1090, - 1099, 1079, 1094, 1101, 1143, 1144, 2470, 1097, 1146, 1147, + 1099, 1079, 1094, 1101, 1143, 1144, 2483, 1097, 1146, 1147, 1089, 1099, 1109, 1093, 1113, 1096, 1098, 1098, 1105, 1114, 1102, 1109, 1104, 1111, 1123, 1164, 1111, 1110, 1127, 1168, 1118, 1122, 1120, 1118, 1113, 1174, 1125, 1176, 1126, 1178, - 1174, 1180, 1133, 2470, 1138, 1131, 1122, 1141, 1135, 1130, - 1140, 1137, 1142, 1139, 1151, 2470, 1135, 1137, 1132, 2470, - 2470, 1138, 1198, 1137, 1156, 1157, 1159, 1198, 1151, 1205, + 1174, 1180, 1133, 2483, 1138, 1131, 1122, 1141, 1135, 1130, + 1140, 1137, 1142, 1139, 1151, 2483, 1135, 1137, 1132, 2483, + 2483, 1138, 1198, 1137, 1156, 1157, 1159, 1198, 1151, 1205, 1206, 1159, 1144, 1158, 1156, 1167, 1149, 1154, 1193, 1184, 1216, 1171, 1171, 1175, 1220, 1163, 1163, 1166, 1183, 1178, - 1182, 1227, 1175, 1179, 2470, 1176, 1172, 1189, 1169, 1190, - 1180, 1231, 1185, 2470, 1198, 1196, 1199, 1183, 1196, 1201, + 1182, 1227, 1175, 1179, 2483, 1176, 1172, 1189, 1169, 1190, + 1180, 1231, 1185, 2483, 1198, 1196, 1199, 1183, 1196, 1201, 1187, 1247, 1200, 1205, 1192, 1203, 1195, 1201, 1197, 1215, - 1216, 1217, 2470, 2470, 1215, 2470, 1217, 2470, 1202, 1213, + 1216, 1217, 2483, 2483, 1215, 2483, 1217, 2483, 1202, 1213, 1204, 1223, 1216, 1214, 1266, 1223, 1220, 1264, 1228, 1217, - 1224, 1229, 1226, 1232, 2470, 1225, 1217, 1278, 2470, 1279, - 1226, 1233, 1277, 1239, 2470, 1240, 2470, 1237, 2470, 1228, - 2470, 1228, 1231, 1245, 1250, 1233, 1244, 1293, 1250, 1251, - 1252, 1292, 1248, 1299, 1252, 1296, 1302, 2470, 1249, 1304, - 1305, 1262, 1263, 1265, 2470, 2470, 1248, 1310, 1306, 1255, - 1271, 1255, 1267, 1286, 1317, 2470, 1274, 1265, 1276, 2470, - 1321, 1258, 1269, 1284, 1320, 1272, 2470, 1268, 1284, 1272, + 1224, 1229, 1226, 1232, 2483, 1225, 1217, 1278, 2483, 1279, + 1226, 1233, 1277, 1239, 2483, 1240, 2483, 1237, 2483, 1228, + 2483, 1228, 1231, 1245, 1250, 1233, 1244, 1293, 1250, 1251, + 1252, 1292, 1248, 1299, 1252, 1296, 1302, 2483, 1249, 1304, + 1305, 1262, 1263, 1265, 2483, 2483, 1248, 1310, 1306, 1255, + 1271, 1255, 1267, 1286, 1317, 2483, 1274, 1265, 1276, 2483, + 1321, 1258, 1269, 1284, 1320, 1272, 2483, 1268, 1284, 1272, 1286, 1287, 1284, 1328, 1291, 1281, 1291, 1297, 1285, 1285, - 1340, 1336, 1342, 1299, 2470, 1302, 1301, 1303, 1296, 1305, + 1340, 1336, 1342, 1299, 2483, 1302, 1301, 1303, 1296, 1305, 1307, 1304, 1294, 1297, 1297, 1356, 1303, 1358, 1305, 1360, - 1303, 1308, 1363, 2470, 1321, 1301, 1316, 1309, 1312, 1325, - 1328, 1327, 1325, 1374, 1328, 2470, 2470, 1324, 1334, 1319, + 1303, 1308, 1363, 2483, 1321, 1301, 1316, 1309, 1312, 1325, + 1328, 1327, 1325, 1374, 1328, 2483, 2483, 1324, 1334, 1319, 1375, 1322, 1337, 1323, 1384, 1385, 1329, 1339, 1388, 1345, - 2470, 1337, 1337, 1339, 1341, 1394, 1337, 2470, 1338, 1356, - 2470, 1340, 2470, 2470, 1356, 1339, 1359, 1360, 2470, 1347, - 1406, 1356, 1408, 1357, 1389, 2470, 1411, 1361, 1408, 2470, + 2483, 1337, 1337, 1339, 1341, 1394, 1337, 2483, 1338, 1356, + 2483, 1340, 2483, 2483, 1356, 1339, 1359, 1360, 2483, 1347, + 1406, 1356, 1408, 1357, 1389, 2483, 1411, 1361, 1408, 2483, 1356, 1415, 1365, 1359, 1356, 1359, 1362, 1362, 1358, 1380, - 1419, 1372, 1384, 1387, 1375, 1378, 1371, 1431, 1379, 2470, - 1375, 2470, 1377, 1436, 1389, 1380, 1395, 1395, 1398, 1398, - 1395, 1439, 1401, 2470, 1393, 2470, 1394, 2470, 1404, 1396, - - 2470, 1445, 1407, 1408, 1405, 1449, 1397, 1412, 1452, 1414, - 1406, 2470, 1403, 1403, 1409, 1408, 1406, 1460, 1422, 1422, - 2470, 2470, 1463, 1410, 2470, 1427, 1412, 1412, 1414, 1420, - 2470, 1429, 1476, 1419, 1425, 1417, 1431, 1442, 1436, 1442, - 1486, 1439, 2470, 1448, 2470, 1445, 1464, 2470, 1448, 1433, - 1493, 2470, 1494, 1451, 1456, 1438, 1498, 1499, 1500, 1496, - 1460, 1457, 1453, 1446, 1501, 1459, 1460, 2470, 1450, 1463, - 1511, 2470, 1449, 1509, 1472, 1468, 1513, 1461, 1466, 1464, - 1523, 1479, 1467, 1526, 1522, 1477, 1529, 1490, 1479, 1473, - 1533, 1475, 1484, 1477, 1491, 1494, 1539, 1481, 1498, 1494, - - 1492, 1485, 1500, 1484, 1542, 1543, 1544, 1491, 1546, 1509, - 1502, 1501, 1495, 2470, 1512, 1504, 1510, 1501, 1500, 1502, - 1557, 2470, 1498, 1516, 1565, 1535, 1567, 1520, 2470, 2470, - 1511, 1522, 1571, 2470, 2470, 2470, 1517, 1522, 1520, 1570, - 1528, 1533, 1521, 1537, 1526, 1525, 1526, 2470, 1584, 1530, - 1581, 1524, 1529, 1590, 1538, 1548, 1549, 2470, 1595, 1548, - 1592, 2470, 1543, 1551, 2470, 1542, 1557, 1545, 2470, 1555, - 1556, 1557, 1606, 1564, 2470, 1603, 1569, 1545, 1563, 1564, - 1565, 1574, 1556, 1562, 1564, 1618, 1577, 1576, 1567, 1617, - 1564, 1571, 1566, 1567, 1627, 1577, 1629, 1582, 1587, 1580, - - 2470, 1633, 2470, 1582, 1635, 1577, 2470, 1580, 1590, 1634, - 1582, 1597, 1584, 1599, 1585, 1592, 1592, 1603, 2470, 1597, - 1592, 1591, 1651, 1604, 2470, 1648, 1599, 1596, 2470, 1610, - 1597, 1618, 1614, 1616, 1661, 1614, 1611, 1619, 1613, 2470, - 1666, 1607, 1609, 1625, 1618, 1619, 1609, 1625, 1626, 1620, - 1636, 2470, 1626, 1678, 1638, 1622, 1676, 1640, 1635, 1684, - 2470, 1626, 2470, 1633, 1687, 1683, 2470, 1645, 2470, 1685, - 1647, 1648, 1633, 1634, 1642, 1696, 1644, 1693, 1694, 1649, - 1661, 1658, 1649, 1656, 2470, 1653, 1658, 1656, 1708, 1709, - 1657, 1654, 1668, 1655, 2470, 1670, 1671, 1672, 1673, 2470, - - 1663, 1675, 1720, 1673, 1678, 1723, 1665, 1673, 1667, 1675, - 1688, 2470, 1689, 1670, 1677, 1668, 1680, 2470, 1729, 1690, - 2470, 1694, 1679, 1679, 1694, 1687, 1686, 1697, 1684, 2470, - 1700, 1688, 1691, 1747, 1705, 1696, 1708, 1699, 1708, 1710, - 1714, 2470, 2470, 1707, 1698, 1698, 1758, 1701, 1760, 1702, - 1762, 1720, 1764, 2470, 1706, 1766, 2470, 1762, 1724, 1721, - 1726, 1713, 1721, 1732, 1729, 1775, 1716, 1719, 1724, 1715, - 1780, 1733, 1734, 1724, 1741, 1740, 1781, 1725, 1744, 1745, - 2470, 1742, 1791, 1748, 1749, 1794, 1751, 1754, 1741, 1750, - 1751, 2470, 1800, 2470, 1753, 2470, 1762, 2470, 1803, 2470, - - 1745, 1805, 1752, 1807, 1750, 1809, 1757, 1806, 2470, 1768, - 1773, 1814, 1773, 2470, 1764, 1754, 1813, 1779, 1772, 1768, - 1822, 1765, 1767, 1772, 2470, 1768, 1770, 2470, 1775, 1785, - 1770, 1778, 1780, 2470, 1781, 1775, 2470, 1787, 2470, 1783, - 2470, 1793, 2470, 1794, 1784, 1840, 1789, 2470, 1791, 1799, - 1844, 1785, 1787, 1784, 1808, 2470, 1795, 1802, 1805, 1794, - 1848, 1795, 1803, 1812, 1811, 1814, 1815, 1816, 1809, 1804, - 1805, 1805, 1811, 2470, 1811, 1823, 1868, 2470, 1814, 1826, - 1871, 1820, 1822, 1820, 1875, 1828, 1815, 1830, 1835, 1880, - 1881, 1882, 1883, 1884, 1841, 1886, 1887, 1888, 1835, 1839, - - 1833, 2470, 1849, 1893, 2470, 1850, 1835, 1853, 2470, 1844, - 1858, 1854, 1847, 2470, 2470, 2470, 2470, 2470, 1901, 2470, - 2470, 2470, 1851, 1859, 1904, 1865, 2470, 1906, 1848, 1908, - 1863, 1862, 1863, 1853, 2470, 1913, 1909, 2470, 1856, 2470, - 1868, 2470, 1917, 1859, 1875, 1920, 2470, 1881, 1878, 1870, - 2470, 1920, 1869, 2470, 1881, 1874, 1929, 1877, 1872, 1874, - 1889, 1874, 2470, 1935, 1888, 1937, 1938, 1886, 2470, 1888, - 2470, 2470, 1882, 1898, 1943, 1944, 2470, 2470, 2470, 1950, - 1953, 1956, 1957, 1959, 1962, 1965, 1968 + 1419, 1372, 1384, 1387, 1375, 1378, 1371, 1431, 1379, 2483, + 1375, 2483, 1377, 1436, 1389, 1380, 1395, 1395, 1398, 1398, + 1395, 1439, 1401, 2483, 1393, 2483, 1394, 2483, 1404, 1396, + + 2483, 1445, 1407, 1408, 1405, 1449, 1397, 1412, 1452, 1414, + 1406, 2483, 1403, 1403, 1409, 1408, 1406, 1460, 1422, 1422, + 2483, 2483, 1463, 1410, 2483, 1427, 1412, 1412, 1414, 1420, + 2483, 1429, 1476, 1419, 1425, 1418, 1432, 1444, 1437, 1443, + 1487, 1440, 2483, 1449, 2483, 1446, 1465, 2483, 1449, 1434, + 1494, 2483, 1495, 1452, 1457, 1439, 1499, 1500, 1501, 1497, + 1461, 1458, 1454, 1447, 1502, 1460, 1461, 2483, 1451, 1464, + 1512, 2483, 1450, 1510, 1473, 1469, 1514, 1462, 1467, 1465, + 1524, 1480, 1468, 1527, 1523, 1478, 1530, 1491, 1480, 1474, + 1534, 1476, 1485, 1478, 1492, 1495, 1540, 1482, 1499, 1495, + + 1493, 1486, 1501, 1485, 1543, 1544, 1545, 1492, 1547, 1510, + 1503, 1502, 1502, 1497, 2483, 1514, 1506, 1512, 1503, 1502, + 1504, 1559, 2483, 1500, 1518, 1567, 1537, 1569, 1522, 2483, + 2483, 1513, 1524, 1573, 2483, 2483, 2483, 1519, 1524, 1522, + 1572, 1530, 1535, 1523, 1539, 1529, 1527, 1528, 2483, 1586, + 1532, 1583, 1526, 1531, 1592, 1540, 1550, 1551, 2483, 1597, + 1550, 1594, 2483, 1545, 1553, 2483, 1544, 1559, 1547, 2483, + 1557, 1558, 1559, 1608, 1566, 2483, 1605, 1571, 1547, 1565, + 1566, 1567, 1576, 1558, 1564, 1566, 1620, 1579, 1578, 1569, + 1619, 1571, 1567, 1574, 1569, 1570, 1630, 1580, 1632, 1585, + + 1590, 1583, 2483, 1636, 2483, 1585, 1638, 1580, 2483, 1583, + 1593, 1637, 1585, 1600, 1587, 1602, 1588, 1595, 1595, 1606, + 2483, 1600, 1595, 1594, 1654, 1607, 2483, 1651, 1602, 1599, + 2483, 1613, 1600, 1621, 1617, 1619, 1664, 1617, 1614, 1622, + 1616, 2483, 1669, 1610, 1612, 1628, 1621, 1622, 1612, 1628, + 1629, 1623, 1639, 2483, 1629, 1681, 1641, 1625, 1634, 1680, + 1644, 1639, 1688, 2483, 1630, 2483, 1637, 1691, 1687, 2483, + 1649, 2483, 1689, 1651, 1652, 1637, 1638, 1646, 1700, 1648, + 1697, 1698, 1653, 1665, 1662, 1653, 1660, 2483, 1657, 1662, + 1660, 1712, 1713, 1661, 1658, 1672, 1659, 2483, 1674, 1675, + + 1676, 1677, 2483, 1667, 1679, 1724, 1677, 1682, 1727, 1669, + 1677, 1671, 1679, 1692, 2483, 1693, 1674, 1675, 1682, 1673, + 1685, 2483, 1734, 1695, 2483, 1699, 1684, 1684, 1699, 1692, + 1691, 1702, 1689, 2483, 1705, 1693, 1696, 1752, 1710, 1701, + 1713, 1704, 1713, 1715, 1719, 2483, 2483, 1712, 1703, 1703, + 1763, 1706, 1765, 1707, 1767, 1725, 1769, 2483, 1711, 1771, + 2483, 1767, 1729, 1726, 1731, 1718, 1726, 1737, 1724, 1735, + 1781, 1722, 1725, 1730, 1721, 1786, 1739, 1740, 1730, 1747, + 1746, 1787, 1731, 1750, 1751, 2483, 1748, 1797, 1754, 1755, + 1800, 1757, 1760, 1747, 1756, 1757, 2483, 1806, 2483, 1759, + + 2483, 1768, 2483, 1809, 2483, 1751, 1811, 1758, 1813, 1756, + 1815, 1763, 1812, 1813, 2483, 1775, 1780, 1821, 1780, 2483, + 1771, 1761, 1820, 1786, 1779, 1775, 1829, 1772, 1774, 1779, + 2483, 1775, 1777, 2483, 1782, 1792, 1777, 1785, 1787, 2483, + 1788, 1782, 2483, 1794, 2483, 1790, 2483, 1800, 2483, 1801, + 1801, 1792, 1848, 1797, 2483, 1799, 1807, 1852, 1793, 1795, + 1792, 1816, 2483, 1803, 1810, 1813, 1802, 1856, 1803, 1811, + 1820, 1819, 1822, 1823, 1824, 1817, 1812, 1813, 1813, 1825, + 1820, 2483, 1820, 1832, 1877, 2483, 1823, 1835, 1880, 1829, + 1831, 1829, 1884, 1837, 1824, 1839, 1844, 1889, 1890, 1891, + + 1892, 1893, 1850, 1895, 1896, 1897, 1841, 1845, 1849, 1843, + 2483, 1859, 1903, 2483, 1860, 1845, 1863, 2483, 1854, 1868, + 1864, 1857, 2483, 2483, 2483, 2483, 2483, 1911, 2483, 2483, + 2483, 1854, 1862, 1870, 1915, 1876, 2483, 1917, 1859, 1919, + 1874, 1873, 1874, 1864, 2483, 1865, 1925, 1921, 2483, 1868, + 2483, 1880, 2483, 1929, 1871, 1887, 1932, 1933, 2483, 1894, + 1891, 1883, 2483, 1933, 1882, 2483, 2483, 1894, 1887, 1942, + 1890, 1885, 1887, 1902, 1887, 2483, 1948, 1901, 1950, 1951, + 1899, 2483, 1901, 2483, 2483, 1895, 1911, 1956, 1957, 2483, + 2483, 2483, 1963, 1966, 1969, 1970, 1972, 1975, 1978, 1981 + } ; -static const flex_int16_t yy_def[2088] = +static const flex_int16_t yy_def[2101] = { 0, - 2080, 2080, 2081, 2081, 2080, 2080, 2080, 2080, 2080, 2080, - 2079, 2079, 2079, 2079, 2079, 2082, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2083, - 2079, 2079, 2079, 2084, 15, 2079, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2085, 45, 45, 45, + 2093, 2093, 2094, 2094, 2093, 2093, 2093, 2093, 2093, 2093, + 2092, 2092, 2092, 2092, 2092, 2095, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2096, + 2092, 2092, 2092, 2097, 15, 2092, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2098, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2082, 2079, 2079, - 2079, 2079, 2079, 2079, 2086, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2083, 2079, 2084, 2079, + 45, 45, 45, 45, 45, 45, 45, 2095, 2092, 2092, + 2092, 2092, 2092, 2092, 2099, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2096, 2092, 2097, 2092, - 2079, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2087, 45, 2085, 45, 45, 45, 45, 45, + 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2100, 45, 2098, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2086, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 45, 45, 2079, 45, 45, 2079, + 45, 45, 45, 45, 45, 2099, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 45, 45, 2092, 45, 45, 2092, - 45, 45, 45, 45, 45, 45, 2087, 2079, 2079, 115, + 45, 45, 45, 45, 45, 45, 2100, 2092, 2092, 115, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2079, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, @@ -1245,209 +1251,211 @@ static const flex_int16_t yy_def[2088] = 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 45, 45, 45, 45, 2079, 45, 2079, 45, 2079, - 45, 115, 2079, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2079, 45, + 45, 45, 45, 45, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 45, 45, 45, 45, 2092, 45, 2092, 45, 2092, + 45, 115, 2092, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2079, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2079, 2079, - 2079, 45, 45, 45, 2079, 45, 2079, 45, 115, 45, - 45, 45, 45, 45, 45, 45, 45, 2079, 45, 45, - 45, 45, 45, 45, 45, 45, 2079, 45, 45, 45, - 45, 45, 45, 45, 45, 2079, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2079, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2092, 2092, + 2092, 45, 45, 45, 2092, 45, 2092, 45, 115, 45, + 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, + 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, + 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2079, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2079, 45, 2079, 45, 45, 45, 45, + 45, 45, 45, 2092, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2079, 45, 2079, 45, 2079, 45, 2079, 45, 45, 2079, - 45, 2079, 2079, 2079, 45, 45, 45, 2079, 45, 45, + 2092, 45, 2092, 45, 2092, 45, 2092, 45, 45, 2092, + 45, 2092, 2092, 2092, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2079, 45, 45, 45, 45, 45, 45, 45, - 45, 2079, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, + 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2079, 45, 45, 2079, + 45, 45, 45, 45, 45, 45, 2092, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2079, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2079, 45, 45, 45, + 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2079, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2079, 2079, 45, 45, 45, + 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2092, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2079, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2079, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2079, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2079, 45, 45, + 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2079, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2079, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2079, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2079, 2079, - 45, 45, 45, 45, 45, 45, 45, 2079, 2079, 45, - 45, 45, 45, 45, 2079, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2079, 45, 2079, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2092, 2092, + 45, 45, 45, 45, 45, 45, 45, 2092, 2092, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2092, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2079, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2079, 45, 45, + 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2079, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2079, 45, 45, - 45, 45, 45, 45, 45, 2079, 2079, 45, 45, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, + 45, 45, 45, 45, 45, 2092, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2079, 2079, 45, 45, 45, 2079, 45, 45, - 45, 45, 2079, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2092, 2092, 45, 45, 45, 2092, 45, 45, + 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2079, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2079, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2079, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2079, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2079, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2079, 45, 45, 45, 2079, - 2079, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2092, 45, 45, 45, 2092, + 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2079, 45, 45, 45, 45, 45, - 45, 45, 45, 2079, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, + 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2079, 2079, 45, 2079, 45, 2079, 45, 45, + 45, 45, 2092, 2092, 45, 2092, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2079, 45, 45, 45, 2079, 45, - 45, 45, 45, 45, 2079, 45, 2079, 45, 2079, 45, - 2079, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2079, 45, 45, - 45, 45, 45, 45, 2079, 2079, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2079, 45, 45, 45, 2079, - 45, 45, 45, 45, 45, 45, 2079, 45, 45, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 2092, 45, + 45, 45, 45, 45, 2092, 45, 2092, 45, 2092, 45, + 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, + 45, 45, 45, 45, 2092, 2092, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2092, 45, 45, 45, 2092, + 45, 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2079, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2079, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2079, 2079, 45, 45, 45, + 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2092, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2079, 45, 45, 45, 45, 45, 45, 2079, 45, 45, - 2079, 45, 2079, 2079, 45, 45, 45, 45, 2079, 45, - 45, 45, 45, 45, 45, 2079, 45, 45, 45, 2079, + 2092, 45, 45, 45, 45, 45, 45, 2092, 45, 45, + 2092, 45, 2092, 2092, 45, 45, 45, 45, 2092, 45, + 45, 45, 45, 45, 45, 2092, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2079, - 45, 2079, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2079, 45, 2079, 45, 2079, 45, 45, - - 2079, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2079, 45, 45, 45, 45, 45, 45, 45, 45, - 2079, 2079, 45, 45, 2079, 45, 45, 45, 45, 45, - 2079, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2079, 45, 2079, 45, 45, 2079, 45, 45, - 45, 2079, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2079, 45, 45, - 45, 2079, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2092, + 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2092, 45, 2092, 45, 2092, 45, 45, + + 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, + 2092, 2092, 45, 45, 2092, 45, 45, 45, 45, 45, + 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2092, 45, 2092, 45, 45, 2092, 45, 45, + 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, + 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2079, 45, 45, 45, 45, 45, 45, - 45, 2079, 45, 45, 45, 45, 45, 45, 2079, 2079, - 45, 45, 45, 2079, 2079, 2079, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2079, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2079, 45, 45, - 45, 2079, 45, 45, 2079, 45, 45, 45, 2079, 45, - 45, 45, 45, 45, 2079, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, + 45, 45, 2092, 45, 45, 45, 45, 45, 45, 2092, + 2092, 45, 45, 45, 2092, 2092, 2092, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2092, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2092, 45, + 45, 45, 2092, 45, 45, 2092, 45, 45, 45, 2092, + 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2079, 45, 2079, 45, 45, 45, 2079, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2079, 45, - 45, 45, 45, 45, 2079, 45, 45, 45, 2079, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2079, + 45, 45, 2092, 45, 2092, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2079, 45, 45, 45, 45, 45, 45, 45, 45, - 2079, 45, 2079, 45, 45, 45, 2079, 45, 2079, 45, + 2092, 45, 45, 45, 45, 45, 2092, 45, 45, 45, + 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2092, 45, 2092, 45, 45, 45, 2092, + 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, + + 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, + 45, 2092, 45, 45, 2092, 45, 45, 45, 45, 45, + 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2092, 2092, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2092, 45, 45, + 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2079, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2079, 45, 45, 45, 45, 2079, + 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2092, 45, 2092, 45, + 2092, 45, 2092, 45, 2092, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2079, 45, 45, 45, 45, 45, 2079, 45, 45, - 2079, 45, 45, 45, 45, 45, 45, 45, 45, 2079, + 2092, 45, 45, 2092, 45, 45, 45, 45, 45, 2092, + 45, 45, 2092, 45, 2092, 45, 2092, 45, 2092, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 45, 45, + 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2079, 2079, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2079, 45, 45, 2079, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2079, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2079, 45, 2079, 45, 2079, 45, 2079, 45, 2079, - - 45, 45, 45, 45, 45, 45, 45, 45, 2079, 45, - 45, 45, 45, 2079, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2079, 45, 45, 2079, 45, 45, - 45, 45, 45, 2079, 45, 45, 2079, 45, 2079, 45, - 2079, 45, 2079, 45, 45, 45, 45, 2079, 45, 45, - 45, 45, 45, 45, 45, 2079, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2079, 45, 45, 45, 2079, 45, 45, + 45, 2092, 45, 45, 45, 2092, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2092, 45, 45, 2092, 45, 45, 45, 2092, 45, 45, + 45, 45, 2092, 2092, 2092, 2092, 2092, 45, 2092, 2092, + 2092, 45, 45, 45, 45, 45, 2092, 45, 45, 45, + 45, 45, 45, 45, 2092, 45, 45, 45, 2092, 45, + 2092, 45, 2092, 45, 45, 45, 45, 45, 2092, 45, + 45, 45, 2092, 45, 45, 2092, 2092, 45, 45, 45, + 45, 45, 45, 45, 45, 2092, 45, 45, 45, 45, + 45, 2092, 45, 2092, 2092, 45, 45, 45, 45, 2092, + 2092, 0, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092 - 45, 2079, 45, 45, 2079, 45, 45, 45, 2079, 45, - 45, 45, 45, 2079, 2079, 2079, 2079, 2079, 45, 2079, - 2079, 2079, 45, 45, 45, 45, 2079, 45, 45, 45, - 45, 45, 45, 45, 2079, 45, 45, 2079, 45, 2079, - 45, 2079, 45, 45, 45, 45, 2079, 45, 45, 45, - 2079, 45, 45, 2079, 45, 45, 45, 45, 45, 45, - 45, 45, 2079, 45, 45, 45, 45, 45, 2079, 45, - 2079, 2079, 45, 45, 45, 45, 2079, 2079, 0, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079 } ; -static const flex_int16_t yy_nxt[2544] = +static const flex_int16_t yy_nxt[2557] = { 0, - 2079, 13, 14, 13, 2079, 15, 16, 2079, 17, 18, + 2092, 13, 14, 13, 2092, 15, 16, 2092, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, 84, 806, 37, 14, 37, 85, 25, 26, 38, 100, - 2079, 27, 37, 14, 37, 42, 28, 42, 38, 90, + 2092, 27, 37, 14, 37, 42, 28, 42, 38, 90, 91, 29, 199, 30, 13, 14, 13, 89, 90, 25, 31, 91, 13, 14, 13, 13, 14, 13, 32, 40, 807, 13, 14, 13, 33, 40, 101, 90, 91, 199, @@ -1606,21 +1614,21 @@ static const flex_int16_t yy_nxt[2544] = 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, - 1611, 1614, 1612, 1615, 1616, 1617, 1618, 1619, 1613, 1620, + 1611, 1615, 1612, 1616, 1617, 1613, 1618, 1619, 1614, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, - 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1640, 1641, - 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1639, 1650, - 1651, 1652, 1626, 1653, 1654, 1655, 1656, 1657, 1658, 1660, + 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1641, + 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1640, + 1651, 1652, 1653, 1627, 1654, 1655, 1656, 1657, 1658, 1659, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, - 1711, 1712, 1713, 1714, 1715, 1716, 1659, 1717, 1718, 1719, - 1721, 1722, 1723, 1724, 1720, 1725, 1726, 1727, 1728, 1702, + 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1660, 1718, 1719, + 1720, 1721, 1723, 1724, 1725, 1726, 1722, 1727, 1728, 1729, - 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, + 1730, 1704, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, @@ -1655,78 +1663,79 @@ static const flex_int16_t yy_nxt[2544] = 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, - 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2057, 2056, 2058, + 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, - 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, - 12, 12, 12, 36, 36, 36, 78, 97, 78, 99, - 99, 99, 113, 113, 113, 186, 861, 186, 207, 207, - 207, 860, 857, 856, 855, 854, 853, 852, 851, 850, - 849, 846, 845, 844, 843, 842, 841, 840, 839, 838, - 837, 836, 835, 834, 833, 832, 831, 830, 829, 828, - - 827, 826, 825, 824, 823, 822, 821, 817, 816, 815, - 814, 813, 812, 811, 810, 809, 808, 805, 804, 803, - 802, 801, 800, 799, 798, 797, 796, 795, 794, 793, - 792, 791, 790, 789, 788, 787, 786, 785, 784, 781, - 780, 779, 778, 777, 776, 775, 774, 773, 772, 771, - 770, 769, 768, 767, 766, 765, 764, 763, 762, 761, - 760, 759, 758, 757, 756, 755, 754, 751, 750, 749, - 748, 747, 746, 745, 744, 743, 742, 741, 740, 739, - 738, 737, 736, 735, 734, 733, 727, 726, 725, 724, - 723, 722, 721, 720, 719, 718, 717, 716, 715, 714, - - 713, 712, 711, 710, 709, 706, 705, 704, 703, 702, - 701, 700, 699, 696, 695, 694, 693, 692, 691, 690, - 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, - 679, 678, 677, 676, 675, 674, 673, 672, 671, 670, - 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, - 657, 656, 655, 654, 653, 652, 651, 650, 649, 648, - 647, 646, 645, 644, 643, 642, 641, 640, 639, 638, - 637, 636, 635, 632, 631, 630, 629, 628, 627, 626, - 625, 622, 621, 620, 613, 612, 611, 610, 609, 608, - 607, 606, 605, 604, 603, 602, 601, 600, 599, 598, - - 594, 593, 592, 590, 589, 586, 585, 584, 583, 582, - 581, 578, 577, 576, 575, 574, 573, 572, 571, 570, - 569, 568, 567, 566, 565, 564, 561, 560, 559, 556, - 555, 554, 553, 552, 551, 550, 547, 546, 543, 542, - 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, - 531, 527, 526, 525, 522, 521, 520, 515, 514, 513, - 512, 511, 510, 509, 508, 507, 506, 505, 504, 503, - 502, 497, 496, 495, 494, 493, 492, 491, 490, 489, - 488, 487, 486, 485, 482, 481, 480, 479, 476, 473, - 472, 471, 470, 469, 468, 467, 466, 465, 464, 463, - - 462, 461, 458, 457, 455, 453, 451, 448, 447, 446, - 445, 443, 442, 441, 439, 438, 437, 434, 433, 432, - 431, 430, 427, 426, 425, 424, 423, 422, 421, 418, - 417, 416, 415, 414, 413, 412, 411, 410, 409, 408, - 407, 406, 405, 402, 401, 398, 397, 396, 395, 393, - 392, 391, 390, 389, 388, 384, 383, 382, 381, 380, - 379, 374, 373, 372, 371, 370, 369, 368, 367, 366, - 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, - 355, 354, 353, 352, 351, 350, 349, 342, 341, 340, - 339, 338, 337, 336, 335, 333, 208, 330, 328, 326, - - 323, 321, 314, 313, 312, 311, 309, 308, 307, 305, - 304, 303, 300, 299, 298, 294, 284, 281, 277, 276, - 271, 270, 269, 266, 264, 263, 262, 261, 260, 259, - 256, 255, 254, 251, 250, 249, 246, 245, 241, 240, - 232, 231, 230, 226, 225, 224, 223, 219, 218, 217, - 213, 208, 197, 196, 194, 193, 185, 165, 142, 107, - 104, 103, 43, 98, 96, 95, 86, 43, 2079, 11, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079 + 2070, 2069, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, + 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, + 2089, 2090, 2091, 12, 12, 12, 36, 36, 36, 78, + 97, 78, 99, 99, 99, 113, 113, 113, 186, 861, + 186, 207, 207, 207, 860, 857, 856, 855, 854, 853, + 852, 851, 850, 849, 846, 845, 844, 843, 842, 841, + + 840, 839, 838, 837, 836, 835, 834, 833, 832, 831, + 830, 829, 828, 827, 826, 825, 824, 823, 822, 821, + 817, 816, 815, 814, 813, 812, 811, 810, 809, 808, + 805, 804, 803, 802, 801, 800, 799, 798, 797, 796, + 795, 794, 793, 792, 791, 790, 789, 788, 787, 786, + 785, 784, 781, 780, 779, 778, 777, 776, 775, 774, + 773, 772, 771, 770, 769, 768, 767, 766, 765, 764, + 763, 762, 761, 760, 759, 758, 757, 756, 755, 754, + 751, 750, 749, 748, 747, 746, 745, 744, 743, 742, + 741, 740, 739, 738, 737, 736, 735, 734, 733, 727, + + 726, 725, 724, 723, 722, 721, 720, 719, 718, 717, + 716, 715, 714, 713, 712, 711, 710, 709, 706, 705, + 704, 703, 702, 701, 700, 699, 696, 695, 694, 693, + 692, 691, 690, 689, 688, 687, 686, 685, 684, 683, + 682, 681, 680, 679, 678, 677, 676, 675, 674, 673, + 672, 671, 670, 669, 668, 667, 666, 665, 664, 663, + 662, 661, 660, 657, 656, 655, 654, 653, 652, 651, + 650, 649, 648, 647, 646, 645, 644, 643, 642, 641, + 640, 639, 638, 637, 636, 635, 632, 631, 630, 629, + 628, 627, 626, 625, 622, 621, 620, 613, 612, 611, + + 610, 609, 608, 607, 606, 605, 604, 603, 602, 601, + 600, 599, 598, 594, 593, 592, 590, 589, 586, 585, + 584, 583, 582, 581, 578, 577, 576, 575, 574, 573, + 572, 571, 570, 569, 568, 567, 566, 565, 564, 561, + 560, 559, 556, 555, 554, 553, 552, 551, 550, 547, + 546, 543, 542, 541, 540, 539, 538, 537, 536, 535, + 534, 533, 532, 531, 527, 526, 525, 522, 521, 520, + 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, + 505, 504, 503, 502, 497, 496, 495, 494, 493, 492, + 491, 490, 489, 488, 487, 486, 485, 482, 481, 480, + + 479, 476, 473, 472, 471, 470, 469, 468, 467, 466, + 465, 464, 463, 462, 461, 458, 457, 455, 453, 451, + 448, 447, 446, 445, 443, 442, 441, 439, 438, 437, + 434, 433, 432, 431, 430, 427, 426, 425, 424, 423, + 422, 421, 418, 417, 416, 415, 414, 413, 412, 411, + 410, 409, 408, 407, 406, 405, 402, 401, 398, 397, + 396, 395, 393, 392, 391, 390, 389, 388, 384, 383, + 382, 381, 380, 379, 374, 373, 372, 371, 370, 369, + 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, + 358, 357, 356, 355, 354, 353, 352, 351, 350, 349, + + 342, 341, 340, 339, 338, 337, 336, 335, 333, 208, + 330, 328, 326, 323, 321, 314, 313, 312, 311, 309, + 308, 307, 305, 304, 303, 300, 299, 298, 294, 284, + 281, 277, 276, 271, 270, 269, 266, 264, 263, 262, + 261, 260, 259, 256, 255, 254, 251, 250, 249, 246, + 245, 241, 240, 232, 231, 230, 226, 225, 224, 223, + 219, 218, 217, 213, 208, 197, 196, 194, 193, 185, + 165, 142, 107, 104, 103, 43, 98, 96, 95, 86, + 43, 2092, 11, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092 } ; -static const flex_int16_t yy_chk[2544] = +static const flex_int16_t yy_chk[2557] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1890,124 +1899,125 @@ static const flex_int16_t yy_chk[2544] = 1493, 1495, 1497, 1499, 1500, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1523, 1524, 1526, 1527, 1528, 1529, 1530, - 1532, 1533, 1532, 1534, 1535, 1536, 1537, 1538, 1532, 1539, - 1540, 1541, 1542, 1544, 1546, 1547, 1549, 1550, 1551, 1553, - - 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, - 1564, 1565, 1566, 1567, 1569, 1570, 1571, 1573, 1561, 1574, - 1575, 1576, 1547, 1577, 1578, 1579, 1580, 1580, 1581, 1582, - 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, - 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, - 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, - 1613, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1623, 1624, - 1625, 1626, 1627, 1628, 1631, 1632, 1633, 1637, 1638, 1639, - 1640, 1641, 1642, 1643, 1644, 1645, 1581, 1646, 1647, 1649, - 1650, 1651, 1652, 1653, 1649, 1654, 1655, 1656, 1657, 1626, - - 1659, 1660, 1661, 1663, 1664, 1666, 1667, 1668, 1670, 1671, - 1672, 1673, 1674, 1676, 1677, 1678, 1679, 1680, 1681, 1682, - 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, - 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1702, 1704, - 1705, 1706, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, - 1716, 1717, 1718, 1720, 1721, 1722, 1723, 1724, 1726, 1727, - 1728, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, - 1739, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, - 1750, 1751, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, - 1762, 1764, 1765, 1766, 1768, 1770, 1771, 1772, 1773, 1774, - - 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, - 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1796, - 1797, 1798, 1799, 1801, 1802, 1803, 1804, 1805, 1806, 1807, - 1808, 1809, 1810, 1811, 1813, 1814, 1815, 1816, 1817, 1819, - 1820, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1831, - 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, - 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, - 1855, 1856, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, - 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, - 1876, 1877, 1878, 1879, 1880, 1882, 1883, 1884, 1885, 1886, - - 1887, 1888, 1889, 1890, 1891, 1893, 1895, 1897, 1899, 1901, - 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1910, 1911, 1912, - 1913, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, - 1924, 1926, 1927, 1929, 1930, 1931, 1932, 1933, 1935, 1936, - 1938, 1940, 1942, 1944, 1945, 1946, 1947, 1949, 1950, 1951, - 1952, 1953, 1954, 1955, 1957, 1958, 1959, 1960, 1961, 1962, - 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, - 1973, 1975, 1976, 1977, 1979, 1980, 1981, 1982, 1983, 1984, - 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, - 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2006, - - 2007, 2008, 2010, 2011, 2012, 2013, 2019, 2023, 2024, 2025, - 2026, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2036, 2037, - 2039, 2041, 2043, 2044, 2045, 2046, 2048, 2049, 2048, 2050, - 2052, 2053, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, - 2064, 2065, 2066, 2067, 2068, 2070, 2073, 2074, 2075, 2076, - 2080, 2080, 2080, 2081, 2081, 2081, 2082, 2083, 2082, 2084, - 2084, 2084, 2085, 2085, 2085, 2086, 731, 2086, 2087, 2087, - 2087, 730, 725, 724, 723, 722, 721, 720, 719, 718, - 717, 715, 714, 713, 711, 710, 709, 708, 707, 706, - 705, 704, 703, 702, 701, 700, 699, 698, 696, 695, - - 694, 693, 692, 691, 690, 689, 688, 686, 685, 683, - 682, 681, 680, 679, 678, 677, 676, 674, 673, 672, - 671, 669, 668, 666, 665, 664, 663, 662, 661, 660, - 659, 658, 657, 656, 655, 654, 653, 652, 651, 649, - 648, 647, 646, 645, 644, 643, 641, 640, 639, 638, - 637, 636, 635, 634, 632, 631, 630, 629, 628, 627, - 626, 625, 624, 623, 622, 621, 620, 618, 617, 616, - 615, 614, 613, 612, 611, 610, 609, 608, 607, 606, - 605, 604, 603, 602, 601, 600, 591, 590, 589, 588, - 586, 584, 582, 580, 579, 578, 577, 576, 575, 574, - - 573, 572, 571, 570, 569, 567, 566, 565, 564, 563, - 562, 561, 560, 558, 557, 556, 555, 554, 553, 552, - 551, 550, 549, 548, 547, 545, 543, 542, 541, 540, - 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, - 529, 528, 526, 525, 524, 523, 522, 521, 520, 519, - 517, 516, 515, 514, 513, 512, 511, 510, 509, 508, - 507, 506, 505, 504, 503, 502, 501, 500, 499, 497, - 496, 495, 494, 492, 491, 490, 489, 488, 487, 485, - 484, 482, 481, 480, 478, 476, 475, 474, 473, 472, - 471, 470, 469, 467, 466, 465, 464, 463, 462, 461, - - 456, 454, 453, 451, 448, 446, 445, 444, 443, 442, - 441, 439, 438, 437, 436, 435, 434, 433, 432, 431, - 430, 429, 428, 427, 426, 425, 423, 422, 421, 419, - 418, 417, 416, 415, 414, 413, 411, 410, 408, 407, - 406, 405, 404, 403, 402, 401, 400, 399, 398, 397, - 396, 392, 391, 390, 388, 387, 386, 384, 383, 382, - 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, - 371, 369, 368, 367, 366, 365, 364, 363, 362, 361, - 360, 359, 358, 357, 355, 354, 353, 352, 350, 347, - 346, 345, 344, 343, 342, 341, 340, 339, 338, 337, - - 336, 335, 331, 329, 325, 323, 321, 314, 313, 312, - 311, 309, 308, 307, 305, 304, 303, 301, 300, 299, - 298, 297, 295, 294, 293, 292, 291, 290, 289, 287, - 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, - 276, 275, 274, 272, 271, 269, 268, 267, 266, 264, - 263, 262, 261, 260, 259, 257, 256, 255, 254, 253, - 252, 249, 248, 246, 245, 244, 243, 242, 241, 240, - 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, - 229, 228, 227, 226, 225, 224, 223, 220, 219, 218, - 217, 216, 215, 214, 213, 211, 207, 205, 203, 201, - - 196, 193, 185, 184, 183, 182, 180, 179, 178, 176, - 175, 174, 172, 171, 170, 168, 166, 164, 162, 161, - 159, 158, 157, 155, 153, 152, 151, 150, 149, 148, - 146, 145, 144, 142, 141, 140, 138, 137, 135, 134, - 130, 129, 128, 126, 125, 124, 123, 121, 120, 119, - 117, 113, 104, 103, 97, 96, 77, 72, 66, 52, - 49, 48, 43, 41, 39, 38, 24, 14, 11, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2079, 2079, 2079 + 1532, 1533, 1532, 1534, 1535, 1532, 1536, 1537, 1532, 1538, + 1539, 1540, 1541, 1542, 1544, 1546, 1547, 1549, 1550, 1551, + + 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, + 1563, 1564, 1565, 1566, 1567, 1569, 1570, 1571, 1573, 1561, + 1574, 1575, 1576, 1547, 1577, 1578, 1579, 1580, 1580, 1581, + 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, + 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, + 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, + 1612, 1613, 1614, 1616, 1617, 1618, 1619, 1620, 1621, 1622, + 1624, 1625, 1626, 1627, 1628, 1629, 1632, 1633, 1634, 1638, + 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1581, 1646, 1647, + 1648, 1650, 1651, 1652, 1653, 1654, 1650, 1655, 1656, 1657, + + 1658, 1627, 1660, 1661, 1662, 1664, 1665, 1667, 1668, 1669, + 1671, 1672, 1673, 1674, 1675, 1677, 1678, 1679, 1680, 1681, + 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, + 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, + 1702, 1704, 1706, 1707, 1708, 1710, 1711, 1712, 1713, 1714, + 1715, 1716, 1717, 1718, 1719, 1720, 1722, 1723, 1724, 1725, + 1726, 1728, 1729, 1730, 1732, 1733, 1734, 1735, 1736, 1737, + 1738, 1739, 1740, 1741, 1743, 1744, 1745, 1746, 1747, 1748, + 1749, 1750, 1751, 1752, 1753, 1755, 1756, 1757, 1758, 1759, + 1760, 1761, 1762, 1763, 1765, 1767, 1768, 1769, 1771, 1773, + + 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, + 1784, 1785, 1786, 1787, 1789, 1790, 1791, 1792, 1793, 1794, + 1795, 1796, 1797, 1799, 1800, 1801, 1802, 1804, 1805, 1806, + 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1816, 1817, + 1818, 1819, 1820, 1821, 1823, 1824, 1826, 1827, 1828, 1829, + 1830, 1831, 1832, 1833, 1835, 1836, 1837, 1838, 1839, 1840, + 1841, 1842, 1843, 1844, 1845, 1848, 1849, 1850, 1851, 1852, + 1853, 1854, 1855, 1856, 1857, 1859, 1860, 1862, 1863, 1864, + 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, + 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, + + 1885, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, + 1896, 1898, 1900, 1902, 1904, 1906, 1907, 1908, 1909, 1910, + 1911, 1912, 1913, 1914, 1916, 1917, 1918, 1919, 1921, 1922, + 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1932, 1933, + 1935, 1936, 1937, 1938, 1939, 1941, 1942, 1944, 1946, 1948, + 1950, 1951, 1952, 1953, 1954, 1956, 1957, 1958, 1959, 1960, + 1961, 1962, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, + 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, + 1983, 1984, 1985, 1987, 1988, 1989, 1990, 1991, 1992, 1993, + 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, + + 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2015, + 2016, 2017, 2019, 2020, 2021, 2022, 2028, 2032, 2033, 2034, + 2035, 2036, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2046, + 2047, 2048, 2050, 2052, 2054, 2055, 2056, 2057, 2058, 2060, + 2061, 2060, 2062, 2064, 2065, 2068, 2069, 2070, 2071, 2072, + 2073, 2074, 2075, 2077, 2078, 2079, 2080, 2081, 2083, 2086, + 2087, 2088, 2089, 2093, 2093, 2093, 2094, 2094, 2094, 2095, + 2096, 2095, 2097, 2097, 2097, 2098, 2098, 2098, 2099, 731, + 2099, 2100, 2100, 2100, 730, 725, 724, 723, 722, 721, + 720, 719, 718, 717, 715, 714, 713, 711, 710, 709, + + 708, 707, 706, 705, 704, 703, 702, 701, 700, 699, + 698, 696, 695, 694, 693, 692, 691, 690, 689, 688, + 686, 685, 683, 682, 681, 680, 679, 678, 677, 676, + 674, 673, 672, 671, 669, 668, 666, 665, 664, 663, + 662, 661, 660, 659, 658, 657, 656, 655, 654, 653, + 652, 651, 649, 648, 647, 646, 645, 644, 643, 641, + 640, 639, 638, 637, 636, 635, 634, 632, 631, 630, + 629, 628, 627, 626, 625, 624, 623, 622, 621, 620, + 618, 617, 616, 615, 614, 613, 612, 611, 610, 609, + 608, 607, 606, 605, 604, 603, 602, 601, 600, 591, + + 590, 589, 588, 586, 584, 582, 580, 579, 578, 577, + 576, 575, 574, 573, 572, 571, 570, 569, 567, 566, + 565, 564, 563, 562, 561, 560, 558, 557, 556, 555, + 554, 553, 552, 551, 550, 549, 548, 547, 545, 543, + 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, + 532, 531, 530, 529, 528, 526, 525, 524, 523, 522, + 521, 520, 519, 517, 516, 515, 514, 513, 512, 511, + 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, + 500, 499, 497, 496, 495, 494, 492, 491, 490, 489, + 488, 487, 485, 484, 482, 481, 480, 478, 476, 475, + + 474, 473, 472, 471, 470, 469, 467, 466, 465, 464, + 463, 462, 461, 456, 454, 453, 451, 448, 446, 445, + 444, 443, 442, 441, 439, 438, 437, 436, 435, 434, + 433, 432, 431, 430, 429, 428, 427, 426, 425, 423, + 422, 421, 419, 418, 417, 416, 415, 414, 413, 411, + 410, 408, 407, 406, 405, 404, 403, 402, 401, 400, + 399, 398, 397, 396, 392, 391, 390, 388, 387, 386, + 384, 383, 382, 381, 380, 379, 378, 377, 376, 375, + 374, 373, 372, 371, 369, 368, 367, 366, 365, 364, + 363, 362, 361, 360, 359, 358, 357, 355, 354, 353, + + 352, 350, 347, 346, 345, 344, 343, 342, 341, 340, + 339, 338, 337, 336, 335, 331, 329, 325, 323, 321, + 314, 313, 312, 311, 309, 308, 307, 305, 304, 303, + 301, 300, 299, 298, 297, 295, 294, 293, 292, 291, + 290, 289, 287, 286, 285, 284, 283, 282, 281, 280, + 279, 278, 277, 276, 275, 274, 272, 271, 269, 268, + 267, 266, 264, 263, 262, 261, 260, 259, 257, 256, + 255, 254, 253, 252, 249, 248, 246, 245, 244, 243, + 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, + 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, + + 220, 219, 218, 217, 216, 215, 214, 213, 211, 207, + 205, 203, 201, 196, 193, 185, 184, 183, 182, 180, + 179, 178, 176, 175, 174, 172, 171, 170, 168, 166, + 164, 162, 161, 159, 158, 157, 155, 153, 152, 151, + 150, 149, 148, 146, 145, 144, 142, 141, 140, 138, + 137, 135, 134, 130, 129, 128, 126, 125, 124, 123, + 121, 120, 119, 117, 113, 104, 103, 97, 96, 77, + 72, 66, 52, 49, 48, 43, 41, 39, 38, 24, + 14, 11, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092 } ; static yy_state_type yy_last_accepting_state; @@ -2016,7 +2026,7 @@ static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[224] = +static const flex_int16_t yy_rule_linenum[225] = { 0, 148, 150, 152, 157, 158, 163, 164, 165, 177, 180, 185, 192, 201, 210, 219, 228, 237, 246, 255, 264, @@ -2040,9 +2050,9 @@ static const flex_int16_t yy_rule_linenum[224] = 1898, 1907, 1916, 1925, 1934, 1943, 1952, 1961, 1970, 1979, 1988, 1997, 2006, 2015, 2024, 2033, 2042, 2051, 2060, 2069, - 2078, 2087, 2096, 2105, 2114, 2215, 2231, 2280, 2288, 2303, - 2304, 2305, 2306, 2307, 2308, 2310, 2328, 2341, 2346, 2350, - 2352, 2354, 2356 + 2078, 2087, 2096, 2105, 2114, 2123, 2224, 2240, 2289, 2297, + 2312, 2313, 2314, 2315, 2316, 2317, 2319, 2337, 2350, 2355, + 2359, 2361, 2363, 2365 } ; /* The intent behind this definition is that it'll catch @@ -2096,7 +2106,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg) -#line 2099 "dhcp6_lexer.cc" +#line 2109 "dhcp6_lexer.cc" /* noyywrap disables automatic rewinding for the next file to parse. Since we always parse only a single string, there's no need to do any wraps. And using yywrap requires linking with -lfl, which provides the default yywrap @@ -2122,8 +2132,8 @@ using namespace isc::dhcp; by moving it ahead by yyleng bytes. yyleng specifies the length of the currently matched token. */ #define YY_USER_ACTION driver.loc_.columns(yyleng); -#line 2125 "dhcp6_lexer.cc" -#line 2126 "dhcp6_lexer.cc" +#line 2135 "dhcp6_lexer.cc" +#line 2136 "dhcp6_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2179,7 +2189,7 @@ FILE *yyget_out ( void ); void yyset_out ( FILE * _out_str ); - int yyget_leng ( void ); + yy_size_t yyget_leng ( void ); char *yyget_text ( void ); @@ -2266,7 +2276,7 @@ static int input ( void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + yy_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -2453,7 +2463,7 @@ YY_DECL } -#line 2456 "dhcp6_lexer.cc" +#line 2466 "dhcp6_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2482,13 +2492,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2080 ) + if ( yy_current_state >= 2093 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 2079 ); + while ( yy_current_state != 2092 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -2507,13 +2517,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 224 ) + else if ( yy_act < 225 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 224 ) + else if ( yy_act == 225 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 225 ) + else if ( yy_act == 226 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -5099,15 +5109,27 @@ YY_RULE_SETUP { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: - return isc::dhcp::Dhcp6Parser::make_COMPATIBILITY(driver.loc_); + return isc::dhcp::Dhcp6Parser::make_RESERVATIONS_LOOKUP_FIRST(driver.loc_); default: - return isc::dhcp::Dhcp6Parser::make_STRING("compatibility", driver.loc_); + return isc::dhcp::Dhcp6Parser::make_STRING("reservations-lookup-first", driver.loc_); } } YY_BREAK case 204: YY_RULE_SETUP #line 2105 "dhcp6_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::DHCP6: + return isc::dhcp::Dhcp6Parser::make_COMPATIBILITY(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("compatibility", driver.loc_); + } +} + YY_BREAK +case 205: +YY_RULE_SETUP +#line 2114 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::COMPATIBILITY: @@ -5117,9 +5139,9 @@ YY_RULE_SETUP } } YY_BREAK -case 205: +case 206: YY_RULE_SETUP -#line 2114 "dhcp6_lexer.ll" +#line 2123 "dhcp6_lexer.ll" { /* A string has been matched. It contains the actual string and single quotes. We need to get those quotes out of the way and just use its content, e.g. @@ -5221,10 +5243,10 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_); } YY_BREAK -case 206: -/* rule 206 can match eol */ +case 207: +/* rule 207 can match eol */ YY_RULE_SETUP -#line 2215 "dhcp6_lexer.ll" +#line 2224 "dhcp6_lexer.ll" { /* Bad string with a forbidden control character inside */ std::string raw(yytext+1); @@ -5241,10 +5263,10 @@ YY_RULE_SETUP pos + 1); } YY_BREAK -case 207: -/* rule 207 can match eol */ +case 208: +/* rule 208 can match eol */ YY_RULE_SETUP -#line 2231 "dhcp6_lexer.ll" +#line 2240 "dhcp6_lexer.ll" { /* Bad string with a bad escape inside */ std::string raw(yytext+1); @@ -5294,9 +5316,9 @@ YY_RULE_SETUP pos); } YY_BREAK -case 208: +case 209: YY_RULE_SETUP -#line 2280 "dhcp6_lexer.ll" +#line 2289 "dhcp6_lexer.ll" { /* Bad string with an open escape at the end */ std::string raw(yytext+1); @@ -5305,9 +5327,9 @@ YY_RULE_SETUP raw.size() + 1); } YY_BREAK -case 209: +case 210: YY_RULE_SETUP -#line 2288 "dhcp6_lexer.ll" +#line 2297 "dhcp6_lexer.ll" { /* Bad string with an open unicode escape at the end */ std::string raw(yytext+1); @@ -5323,39 +5345,39 @@ YY_RULE_SETUP pos + 1); } YY_BREAK -case 210: +case 211: YY_RULE_SETUP -#line 2303 "dhcp6_lexer.ll" +#line 2312 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 211: +case 212: YY_RULE_SETUP -#line 2304 "dhcp6_lexer.ll" +#line 2313 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 212: +case 213: YY_RULE_SETUP -#line 2305 "dhcp6_lexer.ll" +#line 2314 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); } YY_BREAK -case 213: +case 214: YY_RULE_SETUP -#line 2306 "dhcp6_lexer.ll" +#line 2315 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); } YY_BREAK -case 214: +case 215: YY_RULE_SETUP -#line 2307 "dhcp6_lexer.ll" +#line 2316 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); } YY_BREAK -case 215: +case 216: YY_RULE_SETUP -#line 2308 "dhcp6_lexer.ll" +#line 2317 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); } YY_BREAK -case 216: +case 217: YY_RULE_SETUP -#line 2310 "dhcp6_lexer.ll" +#line 2319 "dhcp6_lexer.ll" { /* An integer was found. */ std::string tmp(yytext); @@ -5374,9 +5396,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_); } YY_BREAK -case 217: +case 218: YY_RULE_SETUP -#line 2328 "dhcp6_lexer.ll" +#line 2337 "dhcp6_lexer.ll" { /* A floating point was found. */ std::string tmp(yytext); @@ -5390,43 +5412,43 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_); } YY_BREAK -case 218: +case 219: YY_RULE_SETUP -#line 2341 "dhcp6_lexer.ll" +#line 2350 "dhcp6_lexer.ll" { string tmp(yytext); return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK -case 219: +case 220: YY_RULE_SETUP -#line 2346 "dhcp6_lexer.ll" +#line 2355 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_); } YY_BREAK -case 220: +case 221: YY_RULE_SETUP -#line 2350 "dhcp6_lexer.ll" +#line 2359 "dhcp6_lexer.ll" driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); YY_BREAK -case 221: +case 222: YY_RULE_SETUP -#line 2352 "dhcp6_lexer.ll" +#line 2361 "dhcp6_lexer.ll" driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); YY_BREAK -case 222: +case 223: YY_RULE_SETUP -#line 2354 "dhcp6_lexer.ll" +#line 2363 "dhcp6_lexer.ll" driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); YY_BREAK -case 223: +case 224: YY_RULE_SETUP -#line 2356 "dhcp6_lexer.ll" +#line 2365 "dhcp6_lexer.ll" driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 2358 "dhcp6_lexer.ll" +#line 2367 "dhcp6_lexer.ll" { if (driver.states_.empty()) { return isc::dhcp::Dhcp6Parser::make_END(driver.loc_); @@ -5450,12 +5472,12 @@ case YY_STATE_EOF(INITIAL): BEGIN(DIR_EXIT); } YY_BREAK -case 224: +case 225: YY_RULE_SETUP -#line 2381 "dhcp6_lexer.ll" +#line 2390 "dhcp6_lexer.ll" ECHO; YY_BREAK -#line 5458 "dhcp6_lexer.cc" +#line 5480 "dhcp6_lexer.cc" case YY_END_OF_BUFFER: { @@ -5657,7 +5679,7 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -5671,7 +5693,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -5729,7 +5751,7 @@ static int yy_get_next_buffer (void) if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) @@ -5774,7 +5796,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2080 ) + if ( yy_current_state >= 2093 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5807,11 +5829,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2080 ) + if ( yy_current_state >= 2093 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 2079); + yy_is_jam = (yy_current_state == 2092); return yy_is_jam ? 0 : yy_current_state; } @@ -5850,7 +5872,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -6293,12 +6315,12 @@ YY_BUFFER_STATE yy_scan_string (const char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); @@ -6345,7 +6367,7 @@ static void yynoreturn yy_fatal_error (const char* msg ) do \ { \ /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ + yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ @@ -6389,7 +6411,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t yyget_leng (void) { return yyleng; } @@ -6560,7 +6582,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 2381 "dhcp6_lexer.ll" +#line 2390 "dhcp6_lexer.ll" using namespace isc::dhcp; diff --git a/src/bin/dhcp6/dhcp6_parser.cc b/src/bin/dhcp6/dhcp6_parser.cc index 39c9bdc8c7..b0022b1e1e 100644 --- a/src/bin/dhcp6/dhcp6_parser.cc +++ b/src/bin/dhcp6/dhcp6_parser.cc @@ -398,73 +398,73 @@ namespace isc { namespace dhcp { switch (yykind) { case symbol_kind::S_STRING: // "constant string" -#line 296 "dhcp6_parser.yy" +#line 297 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < std::string > (); } #line 404 "dhcp6_parser.cc" break; case symbol_kind::S_INTEGER: // "integer" -#line 296 "dhcp6_parser.yy" +#line 297 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < int64_t > (); } #line 410 "dhcp6_parser.cc" break; case symbol_kind::S_FLOAT: // "floating point" -#line 296 "dhcp6_parser.yy" +#line 297 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < double > (); } #line 416 "dhcp6_parser.cc" break; case symbol_kind::S_BOOLEAN: // "boolean" -#line 296 "dhcp6_parser.yy" +#line 297 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < bool > (); } #line 422 "dhcp6_parser.cc" break; case symbol_kind::S_value: // value -#line 296 "dhcp6_parser.yy" +#line 297 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 428 "dhcp6_parser.cc" break; case symbol_kind::S_map_value: // map_value -#line 296 "dhcp6_parser.yy" +#line 297 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 434 "dhcp6_parser.cc" break; case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value -#line 296 "dhcp6_parser.yy" +#line 297 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 440 "dhcp6_parser.cc" break; case symbol_kind::S_db_type: // db_type -#line 296 "dhcp6_parser.yy" +#line 297 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 446 "dhcp6_parser.cc" break; case symbol_kind::S_on_fail_mode: // on_fail_mode -#line 296 "dhcp6_parser.yy" +#line 297 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 452 "dhcp6_parser.cc" break; case symbol_kind::S_hr_mode: // hr_mode -#line 296 "dhcp6_parser.yy" +#line 297 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 458 "dhcp6_parser.cc" break; case symbol_kind::S_duid_type: // duid_type -#line 296 "dhcp6_parser.yy" +#line 297 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 464 "dhcp6_parser.cc" break; case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value -#line 296 "dhcp6_parser.yy" +#line 297 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 470 "dhcp6_parser.cc" break; @@ -744,133 +744,133 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: // $@1: %empty -#line 305 "dhcp6_parser.yy" +#line 306 "dhcp6_parser.yy" { ctx.ctx_ = ctx.NO_KEYWORD; } #line 750 "dhcp6_parser.cc" break; case 4: // $@2: %empty -#line 306 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { ctx.ctx_ = ctx.CONFIG; } #line 756 "dhcp6_parser.cc" break; case 6: // $@3: %empty -#line 307 "dhcp6_parser.yy" +#line 308 "dhcp6_parser.yy" { ctx.ctx_ = ctx.DHCP6; } #line 762 "dhcp6_parser.cc" break; case 8: // $@4: %empty -#line 308 "dhcp6_parser.yy" +#line 309 "dhcp6_parser.yy" { ctx.ctx_ = ctx.INTERFACES_CONFIG; } #line 768 "dhcp6_parser.cc" break; case 10: // $@5: %empty -#line 309 "dhcp6_parser.yy" +#line 310 "dhcp6_parser.yy" { ctx.ctx_ = ctx.SUBNET6; } #line 774 "dhcp6_parser.cc" break; case 12: // $@6: %empty -#line 310 "dhcp6_parser.yy" +#line 311 "dhcp6_parser.yy" { ctx.ctx_ = ctx.POOLS; } #line 780 "dhcp6_parser.cc" break; case 14: // $@7: %empty -#line 311 "dhcp6_parser.yy" +#line 312 "dhcp6_parser.yy" { ctx.ctx_ = ctx.PD_POOLS; } #line 786 "dhcp6_parser.cc" break; case 16: // $@8: %empty -#line 312 "dhcp6_parser.yy" +#line 313 "dhcp6_parser.yy" { ctx.ctx_ = ctx.RESERVATIONS; } #line 792 "dhcp6_parser.cc" break; case 18: // $@9: %empty -#line 313 "dhcp6_parser.yy" +#line 314 "dhcp6_parser.yy" { ctx.ctx_ = ctx.DHCP6; } #line 798 "dhcp6_parser.cc" break; case 20: // $@10: %empty -#line 314 "dhcp6_parser.yy" +#line 315 "dhcp6_parser.yy" { ctx.ctx_ = ctx.OPTION_DEF; } #line 804 "dhcp6_parser.cc" break; case 22: // $@11: %empty -#line 315 "dhcp6_parser.yy" +#line 316 "dhcp6_parser.yy" { ctx.ctx_ = ctx.OPTION_DATA; } #line 810 "dhcp6_parser.cc" break; case 24: // $@12: %empty -#line 316 "dhcp6_parser.yy" +#line 317 "dhcp6_parser.yy" { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } #line 816 "dhcp6_parser.cc" break; case 26: // $@13: %empty -#line 317 "dhcp6_parser.yy" +#line 318 "dhcp6_parser.yy" { ctx.ctx_ = ctx.DHCP_DDNS; } #line 822 "dhcp6_parser.cc" break; case 28: // $@14: %empty -#line 318 "dhcp6_parser.yy" +#line 319 "dhcp6_parser.yy" { ctx.ctx_ = ctx.CONFIG_CONTROL; } #line 828 "dhcp6_parser.cc" break; case 30: // value: "integer" -#line 326 "dhcp6_parser.yy" +#line 327 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } #line 834 "dhcp6_parser.cc" break; case 31: // value: "floating point" -#line 327 "dhcp6_parser.yy" +#line 328 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } #line 840 "dhcp6_parser.cc" break; case 32: // value: "boolean" -#line 328 "dhcp6_parser.yy" +#line 329 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } #line 846 "dhcp6_parser.cc" break; case 33: // value: "constant string" -#line 329 "dhcp6_parser.yy" +#line 330 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } #line 852 "dhcp6_parser.cc" break; case 34: // value: "null" -#line 330 "dhcp6_parser.yy" +#line 331 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } #line 858 "dhcp6_parser.cc" break; case 35: // value: map2 -#line 331 "dhcp6_parser.yy" +#line 332 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 864 "dhcp6_parser.cc" break; case 36: // value: list_generic -#line 332 "dhcp6_parser.yy" +#line 333 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 870 "dhcp6_parser.cc" break; case 37: // sub_json: value -#line 335 "dhcp6_parser.yy" +#line 336 "dhcp6_parser.yy" { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); @@ -879,7 +879,7 @@ namespace isc { namespace dhcp { break; case 38: // $@15: %empty -#line 340 "dhcp6_parser.yy" +#line 341 "dhcp6_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -890,7 +890,7 @@ namespace isc { namespace dhcp { break; case 39: // map2: "{" $@15 map_content "}" -#line 345 "dhcp6_parser.yy" +#line 346 "dhcp6_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -900,13 +900,13 @@ namespace isc { namespace dhcp { break; case 40: // map_value: map2 -#line 351 "dhcp6_parser.yy" +#line 352 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 906 "dhcp6_parser.cc" break; case 43: // not_empty_map: "constant string" ":" value -#line 358 "dhcp6_parser.yy" +#line 359 "dhcp6_parser.yy" { // map containing a single entry ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); @@ -916,7 +916,7 @@ namespace isc { namespace dhcp { break; case 44: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 363 "dhcp6_parser.yy" +#line 364 "dhcp6_parser.yy" { // map consisting of a shorter map followed by // comma and string:value @@ -927,7 +927,7 @@ namespace isc { namespace dhcp { break; case 45: // not_empty_map: not_empty_map "," -#line 369 "dhcp6_parser.yy" +#line 370 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -935,7 +935,7 @@ namespace isc { namespace dhcp { break; case 46: // $@16: %empty -#line 374 "dhcp6_parser.yy" +#line 375 "dhcp6_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); @@ -944,7 +944,7 @@ namespace isc { namespace dhcp { break; case 47: // list_generic: "[" $@16 list_content "]" -#line 377 "dhcp6_parser.yy" +#line 378 "dhcp6_parser.yy" { // list parsing complete. Put any sanity checking here } @@ -952,7 +952,7 @@ namespace isc { namespace dhcp { break; case 50: // not_empty_list: value -#line 385 "dhcp6_parser.yy" +#line 386 "dhcp6_parser.yy" { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); @@ -961,7 +961,7 @@ namespace isc { namespace dhcp { break; case 51: // not_empty_list: not_empty_list "," value -#line 389 "dhcp6_parser.yy" +#line 390 "dhcp6_parser.yy" { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); @@ -970,7 +970,7 @@ namespace isc { namespace dhcp { break; case 52: // not_empty_list: not_empty_list "," -#line 393 "dhcp6_parser.yy" +#line 394 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -978,7 +978,7 @@ namespace isc { namespace dhcp { break; case 53: // $@17: %empty -#line 399 "dhcp6_parser.yy" +#line 400 "dhcp6_parser.yy" { // List parsing about to start } @@ -986,7 +986,7 @@ namespace isc { namespace dhcp { break; case 54: // list_strings: "[" $@17 list_strings_content "]" -#line 401 "dhcp6_parser.yy" +#line 402 "dhcp6_parser.yy" { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); @@ -995,7 +995,7 @@ namespace isc { namespace dhcp { break; case 57: // not_empty_list_strings: "constant string" -#line 410 "dhcp6_parser.yy" +#line 411 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -1004,7 +1004,7 @@ namespace isc { namespace dhcp { break; case 58: // not_empty_list_strings: not_empty_list_strings "," "constant string" -#line 414 "dhcp6_parser.yy" +#line 415 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -1013,7 +1013,7 @@ namespace isc { namespace dhcp { break; case 59: // not_empty_list_strings: not_empty_list_strings "," -#line 418 "dhcp6_parser.yy" +#line 419 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1021,7 +1021,7 @@ namespace isc { namespace dhcp { break; case 60: // unknown_map_entry: "constant string" ":" -#line 428 "dhcp6_parser.yy" +#line 429 "dhcp6_parser.yy" { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as < std::string > (); @@ -1032,7 +1032,7 @@ namespace isc { namespace dhcp { break; case 61: // $@18: %empty -#line 437 "dhcp6_parser.yy" +#line 438 "dhcp6_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1043,7 +1043,7 @@ namespace isc { namespace dhcp { break; case 62: // syntax_map: "{" $@18 global_object "}" -#line 442 "dhcp6_parser.yy" +#line 443 "dhcp6_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -1056,7 +1056,7 @@ namespace isc { namespace dhcp { break; case 63: // $@19: %empty -#line 452 "dhcp6_parser.yy" +#line 453 "dhcp6_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1071,7 +1071,7 @@ namespace isc { namespace dhcp { break; case 64: // global_object: "Dhcp6" $@19 ":" "{" global_params "}" -#line 461 "dhcp6_parser.yy" +#line 462 "dhcp6_parser.yy" { // No global parameter is required ctx.stack_.pop_back(); @@ -1081,7 +1081,7 @@ namespace isc { namespace dhcp { break; case 66: // global_object_comma: global_object "," -#line 469 "dhcp6_parser.yy" +#line 470 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1089,7 +1089,7 @@ namespace isc { namespace dhcp { break; case 67: // $@20: %empty -#line 475 "dhcp6_parser.yy" +#line 476 "dhcp6_parser.yy" { // Parse the Dhcp6 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1099,7 +1099,7 @@ namespace isc { namespace dhcp { break; case 68: // sub_dhcp6: "{" $@20 global_params "}" -#line 479 "dhcp6_parser.yy" +#line 480 "dhcp6_parser.yy" { // No global parameter is required // parsing completed @@ -1108,15 +1108,15 @@ namespace isc { namespace dhcp { break; case 71: // global_params: global_params "," -#line 486 "dhcp6_parser.yy" +#line 487 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } #line 1116 "dhcp6_parser.cc" break; - case 135: // $@21: %empty -#line 558 "dhcp6_parser.yy" + case 136: // $@21: %empty +#line 560 "dhcp6_parser.yy" { ctx.unique("data-directory", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1124,8 +1124,8 @@ namespace isc { namespace dhcp { #line 1125 "dhcp6_parser.cc" break; - case 136: // data_directory: "data-directory" $@21 ":" "constant string" -#line 561 "dhcp6_parser.yy" + case 137: // data_directory: "data-directory" $@21 ":" "constant string" +#line 563 "dhcp6_parser.yy" { ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data-directory", datadir); @@ -1134,8 +1134,8 @@ namespace isc { namespace dhcp { #line 1135 "dhcp6_parser.cc" break; - case 137: // preferred_lifetime: "preferred-lifetime" ":" "integer" -#line 567 "dhcp6_parser.yy" + case 138: // preferred_lifetime: "preferred-lifetime" ":" "integer" +#line 569 "dhcp6_parser.yy" { ctx.unique("preferred-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1144,8 +1144,8 @@ namespace isc { namespace dhcp { #line 1145 "dhcp6_parser.cc" break; - case 138: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer" -#line 573 "dhcp6_parser.yy" + case 139: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer" +#line 575 "dhcp6_parser.yy" { ctx.unique("min-preferred-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1154,8 +1154,8 @@ namespace isc { namespace dhcp { #line 1155 "dhcp6_parser.cc" break; - case 139: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer" -#line 579 "dhcp6_parser.yy" + case 140: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer" +#line 581 "dhcp6_parser.yy" { ctx.unique("max-preferred-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1164,8 +1164,8 @@ namespace isc { namespace dhcp { #line 1165 "dhcp6_parser.cc" break; - case 140: // valid_lifetime: "valid-lifetime" ":" "integer" -#line 585 "dhcp6_parser.yy" + case 141: // valid_lifetime: "valid-lifetime" ":" "integer" +#line 587 "dhcp6_parser.yy" { ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1174,8 +1174,8 @@ namespace isc { namespace dhcp { #line 1175 "dhcp6_parser.cc" break; - case 141: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" -#line 591 "dhcp6_parser.yy" + case 142: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" +#line 593 "dhcp6_parser.yy" { ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1184,8 +1184,8 @@ namespace isc { namespace dhcp { #line 1185 "dhcp6_parser.cc" break; - case 142: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" -#line 597 "dhcp6_parser.yy" + case 143: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" +#line 599 "dhcp6_parser.yy" { ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1194,8 +1194,8 @@ namespace isc { namespace dhcp { #line 1195 "dhcp6_parser.cc" break; - case 143: // renew_timer: "renew-timer" ":" "integer" -#line 603 "dhcp6_parser.yy" + case 144: // renew_timer: "renew-timer" ":" "integer" +#line 605 "dhcp6_parser.yy" { ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1204,8 +1204,8 @@ namespace isc { namespace dhcp { #line 1205 "dhcp6_parser.cc" break; - case 144: // rebind_timer: "rebind-timer" ":" "integer" -#line 609 "dhcp6_parser.yy" + case 145: // rebind_timer: "rebind-timer" ":" "integer" +#line 611 "dhcp6_parser.yy" { ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1214,8 +1214,8 @@ namespace isc { namespace dhcp { #line 1215 "dhcp6_parser.cc" break; - case 145: // calculate_tee_times: "calculate-tee-times" ":" "boolean" -#line 615 "dhcp6_parser.yy" + case 146: // calculate_tee_times: "calculate-tee-times" ":" "boolean" +#line 617 "dhcp6_parser.yy" { ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location)); ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1224,8 +1224,8 @@ namespace isc { namespace dhcp { #line 1225 "dhcp6_parser.cc" break; - case 146: // t1_percent: "t1-percent" ":" "floating point" -#line 621 "dhcp6_parser.yy" + case 147: // t1_percent: "t1-percent" ":" "floating point" +#line 623 "dhcp6_parser.yy" { ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1234,8 +1234,8 @@ namespace isc { namespace dhcp { #line 1235 "dhcp6_parser.cc" break; - case 147: // t2_percent: "t2-percent" ":" "floating point" -#line 627 "dhcp6_parser.yy" + case 148: // t2_percent: "t2-percent" ":" "floating point" +#line 629 "dhcp6_parser.yy" { ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1244,8 +1244,8 @@ namespace isc { namespace dhcp { #line 1245 "dhcp6_parser.cc" break; - case 148: // cache_threshold: "cache-threshold" ":" "floating point" -#line 633 "dhcp6_parser.yy" + case 149: // cache_threshold: "cache-threshold" ":" "floating point" +#line 635 "dhcp6_parser.yy" { ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location)); ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1254,8 +1254,8 @@ namespace isc { namespace dhcp { #line 1255 "dhcp6_parser.cc" break; - case 149: // cache_max_age: "cache-max-age" ":" "integer" -#line 639 "dhcp6_parser.yy" + case 150: // cache_max_age: "cache-max-age" ":" "integer" +#line 641 "dhcp6_parser.yy" { ctx.unique("cache-max-age", ctx.loc2pos(yystack_[2].location)); ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1264,8 +1264,8 @@ namespace isc { namespace dhcp { #line 1265 "dhcp6_parser.cc" break; - case 150: // decline_probation_period: "decline-probation-period" ":" "integer" -#line 645 "dhcp6_parser.yy" + case 151: // decline_probation_period: "decline-probation-period" ":" "integer" +#line 647 "dhcp6_parser.yy" { ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location)); ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1274,8 +1274,8 @@ namespace isc { namespace dhcp { #line 1275 "dhcp6_parser.cc" break; - case 151: // ddns_send_updates: "ddns-send-updates" ":" "boolean" -#line 651 "dhcp6_parser.yy" + case 152: // ddns_send_updates: "ddns-send-updates" ":" "boolean" +#line 653 "dhcp6_parser.yy" { ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1284,8 +1284,8 @@ namespace isc { namespace dhcp { #line 1285 "dhcp6_parser.cc" break; - case 152: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" -#line 657 "dhcp6_parser.yy" + case 153: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" +#line 659 "dhcp6_parser.yy" { ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1294,8 +1294,8 @@ namespace isc { namespace dhcp { #line 1295 "dhcp6_parser.cc" break; - case 153: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" -#line 663 "dhcp6_parser.yy" + case 154: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" +#line 665 "dhcp6_parser.yy" { ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1304,8 +1304,8 @@ namespace isc { namespace dhcp { #line 1305 "dhcp6_parser.cc" break; - case 154: // $@22: %empty -#line 669 "dhcp6_parser.yy" + case 155: // $@22: %empty +#line 671 "dhcp6_parser.yy" { ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); @@ -1313,8 +1313,8 @@ namespace isc { namespace dhcp { #line 1314 "dhcp6_parser.cc" break; - case 155: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value -#line 672 "dhcp6_parser.yy" + case 156: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value +#line 674 "dhcp6_parser.yy" { ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); @@ -1322,40 +1322,40 @@ namespace isc { namespace dhcp { #line 1323 "dhcp6_parser.cc" break; - case 156: // ddns_replace_client_name_value: "when-present" -#line 678 "dhcp6_parser.yy" + case 157: // ddns_replace_client_name_value: "when-present" +#line 680 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } #line 1331 "dhcp6_parser.cc" break; - case 157: // ddns_replace_client_name_value: "never" -#line 681 "dhcp6_parser.yy" + case 158: // ddns_replace_client_name_value: "never" +#line 683 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } #line 1339 "dhcp6_parser.cc" break; - case 158: // ddns_replace_client_name_value: "always" -#line 684 "dhcp6_parser.yy" + case 159: // ddns_replace_client_name_value: "always" +#line 686 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } #line 1347 "dhcp6_parser.cc" break; - case 159: // ddns_replace_client_name_value: "when-not-present" -#line 687 "dhcp6_parser.yy" + case 160: // ddns_replace_client_name_value: "when-not-present" +#line 689 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } #line 1355 "dhcp6_parser.cc" break; - case 160: // ddns_replace_client_name_value: "boolean" -#line 690 "dhcp6_parser.yy" + case 161: // ddns_replace_client_name_value: "boolean" +#line 692 "dhcp6_parser.yy" { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); @@ -1363,8 +1363,8 @@ namespace isc { namespace dhcp { #line 1364 "dhcp6_parser.cc" break; - case 161: // $@23: %empty -#line 696 "dhcp6_parser.yy" + case 162: // $@23: %empty +#line 698 "dhcp6_parser.yy" { ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1372,8 +1372,8 @@ namespace isc { namespace dhcp { #line 1373 "dhcp6_parser.cc" break; - case 162: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string" -#line 699 "dhcp6_parser.yy" + case 163: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string" +#line 701 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-generated-prefix", s); @@ -1382,8 +1382,8 @@ namespace isc { namespace dhcp { #line 1383 "dhcp6_parser.cc" break; - case 163: // $@24: %empty -#line 705 "dhcp6_parser.yy" + case 164: // $@24: %empty +#line 707 "dhcp6_parser.yy" { ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1391,8 +1391,8 @@ namespace isc { namespace dhcp { #line 1392 "dhcp6_parser.cc" break; - case 164: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string" -#line 708 "dhcp6_parser.yy" + case 165: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string" +#line 710 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-qualifying-suffix", s); @@ -1401,8 +1401,8 @@ namespace isc { namespace dhcp { #line 1402 "dhcp6_parser.cc" break; - case 165: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" -#line 714 "dhcp6_parser.yy" + case 166: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" +#line 716 "dhcp6_parser.yy" { ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1411,8 +1411,8 @@ namespace isc { namespace dhcp { #line 1412 "dhcp6_parser.cc" break; - case 166: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean" -#line 720 "dhcp6_parser.yy" + case 167: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean" +#line 722 "dhcp6_parser.yy" { ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1421,8 +1421,8 @@ namespace isc { namespace dhcp { #line 1422 "dhcp6_parser.cc" break; - case 167: // $@25: %empty -#line 726 "dhcp6_parser.yy" + case 168: // $@25: %empty +#line 728 "dhcp6_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1430,8 +1430,8 @@ namespace isc { namespace dhcp { #line 1431 "dhcp6_parser.cc" break; - case 168: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string" -#line 729 "dhcp6_parser.yy" + case 169: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string" +#line 731 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); @@ -1440,8 +1440,8 @@ namespace isc { namespace dhcp { #line 1441 "dhcp6_parser.cc" break; - case 169: // $@26: %empty -#line 735 "dhcp6_parser.yy" + case 170: // $@26: %empty +#line 737 "dhcp6_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1449,8 +1449,8 @@ namespace isc { namespace dhcp { #line 1450 "dhcp6_parser.cc" break; - case 170: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string" -#line 738 "dhcp6_parser.yy" + case 171: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string" +#line 740 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); @@ -1459,8 +1459,8 @@ namespace isc { namespace dhcp { #line 1460 "dhcp6_parser.cc" break; - case 171: // store_extended_info: "store-extended-info" ":" "boolean" -#line 744 "dhcp6_parser.yy" + case 172: // store_extended_info: "store-extended-info" ":" "boolean" +#line 746 "dhcp6_parser.yy" { ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1469,8 +1469,8 @@ namespace isc { namespace dhcp { #line 1470 "dhcp6_parser.cc" break; - case 172: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" -#line 750 "dhcp6_parser.yy" + case 173: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" +#line 752 "dhcp6_parser.yy" { ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location)); ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1479,8 +1479,8 @@ namespace isc { namespace dhcp { #line 1480 "dhcp6_parser.cc" break; - case 173: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" -#line 756 "dhcp6_parser.yy" + case 174: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" +#line 758 "dhcp6_parser.yy" { ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location)); ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1489,8 +1489,8 @@ namespace isc { namespace dhcp { #line 1490 "dhcp6_parser.cc" break; - case 174: // $@27: %empty -#line 762 "dhcp6_parser.yy" + case 175: // $@27: %empty +#line 764 "dhcp6_parser.yy" { ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1498,8 +1498,8 @@ namespace isc { namespace dhcp { #line 1499 "dhcp6_parser.cc" break; - case 175: // server_tag: "server-tag" $@27 ":" "constant string" -#line 765 "dhcp6_parser.yy" + case 176: // server_tag: "server-tag" $@27 ":" "constant string" +#line 767 "dhcp6_parser.yy" { ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-tag", stag); @@ -1508,8 +1508,8 @@ namespace isc { namespace dhcp { #line 1509 "dhcp6_parser.cc" break; - case 176: // parked_packet_limit: "parked-packet-limit" ":" "integer" -#line 771 "dhcp6_parser.yy" + case 177: // parked_packet_limit: "parked-packet-limit" ":" "integer" +#line 773 "dhcp6_parser.yy" { ctx.unique("parked-packet-limit", ctx.loc2pos(yystack_[2].location)); ElementPtr ppl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1518,8 +1518,8 @@ namespace isc { namespace dhcp { #line 1519 "dhcp6_parser.cc" break; - case 177: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" -#line 777 "dhcp6_parser.yy" + case 178: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" +#line 779 "dhcp6_parser.yy" { ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location)); ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1528,8 +1528,18 @@ namespace isc { namespace dhcp { #line 1529 "dhcp6_parser.cc" break; - case 178: // $@28: %empty -#line 783 "dhcp6_parser.yy" + case 179: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean" +#line 785 "dhcp6_parser.yy" + { + ctx.unique("reservations-lookup-first", ctx.loc2pos(yystack_[2].location)); + ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ctx.stack_.back()->set("reservations-lookup-first", first); +} +#line 1539 "dhcp6_parser.cc" + break; + + case 180: // $@28: %empty +#line 791 "dhcp6_parser.yy" { ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1537,48 +1547,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.INTERFACES_CONFIG); } -#line 1541 "dhcp6_parser.cc" +#line 1551 "dhcp6_parser.cc" break; - case 179: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}" -#line 789 "dhcp6_parser.yy" + case 181: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}" +#line 797 "dhcp6_parser.yy" { // No interfaces config param is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1551 "dhcp6_parser.cc" +#line 1561 "dhcp6_parser.cc" break; - case 180: // $@29: %empty -#line 795 "dhcp6_parser.yy" + case 182: // $@29: %empty +#line 803 "dhcp6_parser.yy" { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1561 "dhcp6_parser.cc" +#line 1571 "dhcp6_parser.cc" break; - case 181: // sub_interfaces6: "{" $@29 interfaces_config_params "}" -#line 799 "dhcp6_parser.yy" + case 183: // sub_interfaces6: "{" $@29 interfaces_config_params "}" +#line 807 "dhcp6_parser.yy" { // No interfaces config param is required // parsing completed } -#line 1570 "dhcp6_parser.cc" +#line 1580 "dhcp6_parser.cc" break; - case 184: // interfaces_config_params: interfaces_config_params "," -#line 806 "dhcp6_parser.yy" + case 186: // interfaces_config_params: interfaces_config_params "," +#line 814 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1578 "dhcp6_parser.cc" +#line 1588 "dhcp6_parser.cc" break; - case 190: // $@30: %empty -#line 818 "dhcp6_parser.yy" + case 192: // $@30: %empty +#line 826 "dhcp6_parser.yy" { ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1586,30 +1596,30 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 1590 "dhcp6_parser.cc" +#line 1600 "dhcp6_parser.cc" break; - case 191: // interfaces_list: "interfaces" $@30 ":" list_strings -#line 824 "dhcp6_parser.yy" + case 193: // interfaces_list: "interfaces" $@30 ":" list_strings +#line 832 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1599 "dhcp6_parser.cc" +#line 1609 "dhcp6_parser.cc" break; - case 192: // re_detect: "re-detect" ":" "boolean" -#line 829 "dhcp6_parser.yy" + case 194: // re_detect: "re-detect" ":" "boolean" +#line 837 "dhcp6_parser.yy" { ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("re-detect", b); } -#line 1609 "dhcp6_parser.cc" +#line 1619 "dhcp6_parser.cc" break; - case 193: // $@31: %empty -#line 835 "dhcp6_parser.yy" + case 195: // $@31: %empty +#line 843 "dhcp6_parser.yy" { ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1617,22 +1627,22 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.LEASE_DATABASE); } -#line 1621 "dhcp6_parser.cc" +#line 1631 "dhcp6_parser.cc" break; - case 194: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}" -#line 841 "dhcp6_parser.yy" + case 196: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}" +#line 849 "dhcp6_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1632 "dhcp6_parser.cc" +#line 1642 "dhcp6_parser.cc" break; - case 195: // $@32: %empty -#line 848 "dhcp6_parser.yy" + case 197: // $@32: %empty +#line 856 "dhcp6_parser.yy" { ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1640,22 +1650,22 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1644 "dhcp6_parser.cc" +#line 1654 "dhcp6_parser.cc" break; - case 196: // hosts_database: "hosts-database" $@32 ":" "{" database_map_params "}" -#line 854 "dhcp6_parser.yy" + case 198: // hosts_database: "hosts-database" $@32 ":" "{" database_map_params "}" +#line 862 "dhcp6_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1655 "dhcp6_parser.cc" +#line 1665 "dhcp6_parser.cc" break; - case 197: // $@33: %empty -#line 861 "dhcp6_parser.yy" + case 199: // $@33: %empty +#line 869 "dhcp6_parser.yy" { ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1663,472 +1673,472 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1667 "dhcp6_parser.cc" +#line 1677 "dhcp6_parser.cc" break; - case 198: // hosts_databases: "hosts-databases" $@33 ":" "[" database_list "]" -#line 867 "dhcp6_parser.yy" + case 200: // hosts_databases: "hosts-databases" $@33 ":" "[" database_list "]" +#line 875 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1676 "dhcp6_parser.cc" +#line 1686 "dhcp6_parser.cc" break; - case 203: // not_empty_database_list: not_empty_database_list "," -#line 878 "dhcp6_parser.yy" + case 205: // not_empty_database_list: not_empty_database_list "," +#line 886 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1684 "dhcp6_parser.cc" +#line 1694 "dhcp6_parser.cc" break; - case 204: // $@34: %empty -#line 883 "dhcp6_parser.yy" + case 206: // $@34: %empty +#line 891 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1694 "dhcp6_parser.cc" +#line 1704 "dhcp6_parser.cc" break; - case 205: // database: "{" $@34 database_map_params "}" -#line 887 "dhcp6_parser.yy" + case 207: // database: "{" $@34 database_map_params "}" +#line 895 "dhcp6_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1704 "dhcp6_parser.cc" +#line 1714 "dhcp6_parser.cc" break; - case 208: // database_map_params: database_map_params "," -#line 895 "dhcp6_parser.yy" + case 210: // database_map_params: database_map_params "," +#line 903 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1712 "dhcp6_parser.cc" +#line 1722 "dhcp6_parser.cc" break; - case 235: // $@35: %empty -#line 928 "dhcp6_parser.yy" + case 237: // $@35: %empty +#line 936 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_TYPE); } -#line 1721 "dhcp6_parser.cc" +#line 1731 "dhcp6_parser.cc" break; - case 236: // database_type: "type" $@35 ":" db_type -#line 931 "dhcp6_parser.yy" + case 238: // database_type: "type" $@35 ":" db_type +#line 939 "dhcp6_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1730 "dhcp6_parser.cc" +#line 1740 "dhcp6_parser.cc" break; - case 237: // db_type: "memfile" -#line 936 "dhcp6_parser.yy" + case 239: // db_type: "memfile" +#line 944 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } -#line 1736 "dhcp6_parser.cc" +#line 1746 "dhcp6_parser.cc" break; - case 238: // db_type: "mysql" -#line 937 "dhcp6_parser.yy" + case 240: // db_type: "mysql" +#line 945 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } -#line 1742 "dhcp6_parser.cc" +#line 1752 "dhcp6_parser.cc" break; - case 239: // db_type: "postgresql" -#line 938 "dhcp6_parser.yy" + case 241: // db_type: "postgresql" +#line 946 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } -#line 1748 "dhcp6_parser.cc" +#line 1758 "dhcp6_parser.cc" break; - case 240: // db_type: "cql" -#line 939 "dhcp6_parser.yy" + case 242: // db_type: "cql" +#line 947 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } -#line 1754 "dhcp6_parser.cc" +#line 1764 "dhcp6_parser.cc" break; - case 241: // $@36: %empty -#line 942 "dhcp6_parser.yy" + case 243: // $@36: %empty +#line 950 "dhcp6_parser.yy" { ctx.unique("user", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1763 "dhcp6_parser.cc" +#line 1773 "dhcp6_parser.cc" break; - case 242: // user: "user" $@36 ":" "constant string" -#line 945 "dhcp6_parser.yy" + case 244: // user: "user" $@36 ":" "constant string" +#line 953 "dhcp6_parser.yy" { ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); ctx.leave(); } -#line 1773 "dhcp6_parser.cc" +#line 1783 "dhcp6_parser.cc" break; - case 243: // $@37: %empty -#line 951 "dhcp6_parser.yy" + case 245: // $@37: %empty +#line 959 "dhcp6_parser.yy" { ctx.unique("password", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1782 "dhcp6_parser.cc" +#line 1792 "dhcp6_parser.cc" break; - case 244: // password: "password" $@37 ":" "constant string" -#line 954 "dhcp6_parser.yy" + case 246: // password: "password" $@37 ":" "constant string" +#line 962 "dhcp6_parser.yy" { ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); ctx.leave(); } -#line 1792 "dhcp6_parser.cc" +#line 1802 "dhcp6_parser.cc" break; - case 245: // $@38: %empty -#line 960 "dhcp6_parser.yy" + case 247: // $@38: %empty +#line 968 "dhcp6_parser.yy" { ctx.unique("host", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1801 "dhcp6_parser.cc" +#line 1811 "dhcp6_parser.cc" break; - case 246: // host: "host" $@38 ":" "constant string" -#line 963 "dhcp6_parser.yy" + case 248: // host: "host" $@38 ":" "constant string" +#line 971 "dhcp6_parser.yy" { ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); ctx.leave(); } -#line 1811 "dhcp6_parser.cc" +#line 1821 "dhcp6_parser.cc" break; - case 247: // port: "port" ":" "integer" -#line 969 "dhcp6_parser.yy" + case 249: // port: "port" ":" "integer" +#line 977 "dhcp6_parser.yy" { ctx.unique("port", ctx.loc2pos(yystack_[2].location)); ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", p); } -#line 1821 "dhcp6_parser.cc" +#line 1831 "dhcp6_parser.cc" break; - case 248: // $@39: %empty -#line 975 "dhcp6_parser.yy" + case 250: // $@39: %empty +#line 983 "dhcp6_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1830 "dhcp6_parser.cc" +#line 1840 "dhcp6_parser.cc" break; - case 249: // name: "name" $@39 ":" "constant string" -#line 978 "dhcp6_parser.yy" + case 251: // name: "name" $@39 ":" "constant string" +#line 986 "dhcp6_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1840 "dhcp6_parser.cc" +#line 1850 "dhcp6_parser.cc" break; - case 250: // persist: "persist" ":" "boolean" -#line 984 "dhcp6_parser.yy" + case 252: // persist: "persist" ":" "boolean" +#line 992 "dhcp6_parser.yy" { ctx.unique("persist", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("persist", n); } -#line 1850 "dhcp6_parser.cc" +#line 1860 "dhcp6_parser.cc" break; - case 251: // lfc_interval: "lfc-interval" ":" "integer" -#line 990 "dhcp6_parser.yy" + case 253: // lfc_interval: "lfc-interval" ":" "integer" +#line 998 "dhcp6_parser.yy" { ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lfc-interval", n); } -#line 1860 "dhcp6_parser.cc" +#line 1870 "dhcp6_parser.cc" break; - case 252: // readonly: "readonly" ":" "boolean" -#line 996 "dhcp6_parser.yy" + case 254: // readonly: "readonly" ":" "boolean" +#line 1004 "dhcp6_parser.yy" { ctx.unique("readonly", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("readonly", n); } -#line 1870 "dhcp6_parser.cc" +#line 1880 "dhcp6_parser.cc" break; - case 253: // connect_timeout: "connect-timeout" ":" "integer" -#line 1002 "dhcp6_parser.yy" + case 255: // connect_timeout: "connect-timeout" ":" "integer" +#line 1010 "dhcp6_parser.yy" { ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("connect-timeout", n); } -#line 1880 "dhcp6_parser.cc" +#line 1890 "dhcp6_parser.cc" break; - case 254: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" -#line 1008 "dhcp6_parser.yy" + case 256: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" +#line 1016 "dhcp6_parser.yy" { ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reconnect-wait-time", n); } -#line 1890 "dhcp6_parser.cc" +#line 1900 "dhcp6_parser.cc" break; - case 255: // $@40: %empty -#line 1014 "dhcp6_parser.yy" + case 257: // $@40: %empty +#line 1022 "dhcp6_parser.yy" { ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_ON_FAIL); } -#line 1899 "dhcp6_parser.cc" +#line 1909 "dhcp6_parser.cc" break; - case 256: // on_fail: "on-fail" $@40 ":" on_fail_mode -#line 1017 "dhcp6_parser.yy" + case 258: // on_fail: "on-fail" $@40 ":" on_fail_mode +#line 1025 "dhcp6_parser.yy" { ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1908 "dhcp6_parser.cc" +#line 1918 "dhcp6_parser.cc" break; - case 257: // on_fail_mode: "stop-retry-exit" -#line 1022 "dhcp6_parser.yy" + case 259: // on_fail_mode: "stop-retry-exit" +#line 1030 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 1914 "dhcp6_parser.cc" +#line 1924 "dhcp6_parser.cc" break; - case 258: // on_fail_mode: "serve-retry-exit" -#line 1023 "dhcp6_parser.yy" + case 260: // on_fail_mode: "serve-retry-exit" +#line 1031 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 1920 "dhcp6_parser.cc" +#line 1930 "dhcp6_parser.cc" break; - case 259: // on_fail_mode: "serve-retry-continue" -#line 1024 "dhcp6_parser.yy" + case 261: // on_fail_mode: "serve-retry-continue" +#line 1032 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); } -#line 1926 "dhcp6_parser.cc" +#line 1936 "dhcp6_parser.cc" break; - case 260: // max_row_errors: "max-row-errors" ":" "integer" -#line 1027 "dhcp6_parser.yy" + case 262: // max_row_errors: "max-row-errors" ":" "integer" +#line 1035 "dhcp6_parser.yy" { ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-row-errors", n); } -#line 1936 "dhcp6_parser.cc" +#line 1946 "dhcp6_parser.cc" break; - case 261: // request_timeout: "request-timeout" ":" "integer" -#line 1033 "dhcp6_parser.yy" + case 263: // request_timeout: "request-timeout" ":" "integer" +#line 1041 "dhcp6_parser.yy" { ctx.unique("request-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("request-timeout", n); } -#line 1946 "dhcp6_parser.cc" +#line 1956 "dhcp6_parser.cc" break; - case 262: // tcp_keepalive: "tcp-keepalive" ":" "integer" -#line 1039 "dhcp6_parser.yy" + case 264: // tcp_keepalive: "tcp-keepalive" ":" "integer" +#line 1047 "dhcp6_parser.yy" { ctx.unique("tcp-keepalive", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-keepalive", n); } -#line 1956 "dhcp6_parser.cc" +#line 1966 "dhcp6_parser.cc" break; - case 263: // tcp_nodelay: "tcp-nodelay" ":" "boolean" -#line 1045 "dhcp6_parser.yy" + case 265: // tcp_nodelay: "tcp-nodelay" ":" "boolean" +#line 1053 "dhcp6_parser.yy" { ctx.unique("tcp-nodelay", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-nodelay", n); } -#line 1966 "dhcp6_parser.cc" +#line 1976 "dhcp6_parser.cc" break; - case 264: // $@41: %empty -#line 1051 "dhcp6_parser.yy" + case 266: // $@41: %empty +#line 1059 "dhcp6_parser.yy" { ctx.unique("contact-points", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1975 "dhcp6_parser.cc" +#line 1985 "dhcp6_parser.cc" break; - case 265: // contact_points: "contact-points" $@41 ":" "constant string" -#line 1054 "dhcp6_parser.yy" + case 267: // contact_points: "contact-points" $@41 ":" "constant string" +#line 1062 "dhcp6_parser.yy" { ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("contact-points", cp); ctx.leave(); } -#line 1985 "dhcp6_parser.cc" +#line 1995 "dhcp6_parser.cc" break; - case 266: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" -#line 1060 "dhcp6_parser.yy" + case 268: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" +#line 1068 "dhcp6_parser.yy" { ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reconnect-tries", n); } -#line 1995 "dhcp6_parser.cc" +#line 2005 "dhcp6_parser.cc" break; - case 267: // $@42: %empty -#line 1066 "dhcp6_parser.yy" + case 269: // $@42: %empty +#line 1074 "dhcp6_parser.yy" { ctx.unique("keyspace", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2004 "dhcp6_parser.cc" +#line 2014 "dhcp6_parser.cc" break; - case 268: // keyspace: "keyspace" $@42 ":" "constant string" -#line 1069 "dhcp6_parser.yy" + case 270: // keyspace: "keyspace" $@42 ":" "constant string" +#line 1077 "dhcp6_parser.yy" { ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("keyspace", ks); ctx.leave(); } -#line 2014 "dhcp6_parser.cc" +#line 2024 "dhcp6_parser.cc" break; - case 269: // $@43: %empty -#line 1075 "dhcp6_parser.yy" + case 271: // $@43: %empty +#line 1083 "dhcp6_parser.yy" { ctx.unique("consistency", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2023 "dhcp6_parser.cc" +#line 2033 "dhcp6_parser.cc" break; - case 270: // consistency: "consistency" $@43 ":" "constant string" -#line 1078 "dhcp6_parser.yy" + case 272: // consistency: "consistency" $@43 ":" "constant string" +#line 1086 "dhcp6_parser.yy" { ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("consistency", c); ctx.leave(); } -#line 2033 "dhcp6_parser.cc" +#line 2043 "dhcp6_parser.cc" break; - case 271: // $@44: %empty -#line 1084 "dhcp6_parser.yy" + case 273: // $@44: %empty +#line 1092 "dhcp6_parser.yy" { ctx.unique("serial-consistency", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2042 "dhcp6_parser.cc" +#line 2052 "dhcp6_parser.cc" break; - case 272: // serial_consistency: "serial-consistency" $@44 ":" "constant string" -#line 1087 "dhcp6_parser.yy" + case 274: // serial_consistency: "serial-consistency" $@44 ":" "constant string" +#line 1095 "dhcp6_parser.yy" { ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("serial-consistency", c); ctx.leave(); } -#line 2052 "dhcp6_parser.cc" +#line 2062 "dhcp6_parser.cc" break; - case 273: // $@45: %empty -#line 1093 "dhcp6_parser.yy" + case 275: // $@45: %empty +#line 1101 "dhcp6_parser.yy" { ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2061 "dhcp6_parser.cc" +#line 2071 "dhcp6_parser.cc" break; - case 274: // trust_anchor: "trust-anchor" $@45 ":" "constant string" -#line 1096 "dhcp6_parser.yy" + case 276: // trust_anchor: "trust-anchor" $@45 ":" "constant string" +#line 1104 "dhcp6_parser.yy" { ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("trust-anchor", ca); ctx.leave(); } -#line 2071 "dhcp6_parser.cc" +#line 2081 "dhcp6_parser.cc" break; - case 275: // $@46: %empty -#line 1102 "dhcp6_parser.yy" + case 277: // $@46: %empty +#line 1110 "dhcp6_parser.yy" { ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2080 "dhcp6_parser.cc" +#line 2090 "dhcp6_parser.cc" break; - case 276: // cert_file: "cert-file" $@46 ":" "constant string" -#line 1105 "dhcp6_parser.yy" + case 278: // cert_file: "cert-file" $@46 ":" "constant string" +#line 1113 "dhcp6_parser.yy" { ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cert-file", cert); ctx.leave(); } -#line 2090 "dhcp6_parser.cc" +#line 2100 "dhcp6_parser.cc" break; - case 277: // $@47: %empty -#line 1111 "dhcp6_parser.yy" + case 279: // $@47: %empty +#line 1119 "dhcp6_parser.yy" { ctx.unique("key-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2099 "dhcp6_parser.cc" +#line 2109 "dhcp6_parser.cc" break; - case 278: // key_file: "key-file" $@47 ":" "constant string" -#line 1114 "dhcp6_parser.yy" + case 280: // key_file: "key-file" $@47 ":" "constant string" +#line 1122 "dhcp6_parser.yy" { ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("key-file", key); ctx.leave(); } -#line 2109 "dhcp6_parser.cc" +#line 2119 "dhcp6_parser.cc" break; - case 279: // $@48: %empty -#line 1120 "dhcp6_parser.yy" + case 281: // $@48: %empty +#line 1128 "dhcp6_parser.yy" { ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2118 "dhcp6_parser.cc" +#line 2128 "dhcp6_parser.cc" break; - case 280: // cipher_list: "cipher-list" $@48 ":" "constant string" -#line 1123 "dhcp6_parser.yy" + case 282: // cipher_list: "cipher-list" $@48 ":" "constant string" +#line 1131 "dhcp6_parser.yy" { ElementPtr cl(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cipher-list", cl); ctx.leave(); } -#line 2128 "dhcp6_parser.cc" +#line 2138 "dhcp6_parser.cc" break; - case 281: // $@49: %empty -#line 1129 "dhcp6_parser.yy" + case 283: // $@49: %empty +#line 1137 "dhcp6_parser.yy" { ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2136,37 +2146,37 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.SANITY_CHECKS); } -#line 2140 "dhcp6_parser.cc" +#line 2150 "dhcp6_parser.cc" break; - case 282: // sanity_checks: "sanity-checks" $@49 ":" "{" sanity_checks_params "}" -#line 1135 "dhcp6_parser.yy" + case 284: // sanity_checks: "sanity-checks" $@49 ":" "{" sanity_checks_params "}" +#line 1143 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2149 "dhcp6_parser.cc" +#line 2159 "dhcp6_parser.cc" break; - case 285: // sanity_checks_params: sanity_checks_params "," -#line 1142 "dhcp6_parser.yy" + case 287: // sanity_checks_params: sanity_checks_params "," +#line 1150 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2157 "dhcp6_parser.cc" +#line 2167 "dhcp6_parser.cc" break; - case 287: // $@50: %empty -#line 1149 "dhcp6_parser.yy" + case 289: // $@50: %empty +#line 1157 "dhcp6_parser.yy" { ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2166 "dhcp6_parser.cc" +#line 2176 "dhcp6_parser.cc" break; - case 288: // lease_checks: "lease-checks" $@50 ":" "constant string" -#line 1152 "dhcp6_parser.yy" + case 290: // lease_checks: "lease-checks" $@50 ":" "constant string" +#line 1160 "dhcp6_parser.yy" { if ( (string(yystack_[0].value.as < std::string > ()) == "none") || @@ -2182,11 +2192,11 @@ namespace isc { namespace dhcp { ", supported values are: none, warn, fix, fix-del, del"); } } -#line 2186 "dhcp6_parser.cc" +#line 2196 "dhcp6_parser.cc" break; - case 289: // $@51: %empty -#line 1168 "dhcp6_parser.yy" + case 291: // $@51: %empty +#line 1176 "dhcp6_parser.yy" { ctx.unique("mac-sources", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2194,46 +2204,46 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.MAC_SOURCES); } -#line 2198 "dhcp6_parser.cc" +#line 2208 "dhcp6_parser.cc" break; - case 290: // mac_sources: "mac-sources" $@51 ":" "[" mac_sources_list "]" -#line 1174 "dhcp6_parser.yy" + case 292: // mac_sources: "mac-sources" $@51 ":" "[" mac_sources_list "]" +#line 1182 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2207 "dhcp6_parser.cc" +#line 2217 "dhcp6_parser.cc" break; - case 293: // mac_sources_list: mac_sources_list "," -#line 1181 "dhcp6_parser.yy" + case 295: // mac_sources_list: mac_sources_list "," +#line 1189 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2215 "dhcp6_parser.cc" +#line 2225 "dhcp6_parser.cc" break; - case 296: // duid_id: "duid" -#line 1190 "dhcp6_parser.yy" + case 298: // duid_id: "duid" +#line 1198 "dhcp6_parser.yy" { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2224 "dhcp6_parser.cc" +#line 2234 "dhcp6_parser.cc" break; - case 297: // string_id: "constant string" -#line 1195 "dhcp6_parser.yy" + case 299: // string_id: "constant string" +#line 1203 "dhcp6_parser.yy" { ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2233 "dhcp6_parser.cc" +#line 2243 "dhcp6_parser.cc" break; - case 298: // $@52: %empty -#line 1200 "dhcp6_parser.yy" + case 300: // $@52: %empty +#line 1208 "dhcp6_parser.yy" { ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2241,46 +2251,46 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS); } -#line 2245 "dhcp6_parser.cc" +#line 2255 "dhcp6_parser.cc" break; - case 299: // host_reservation_identifiers: "host-reservation-identifiers" $@52 ":" "[" host_reservation_identifiers_list "]" -#line 1206 "dhcp6_parser.yy" + case 301: // host_reservation_identifiers: "host-reservation-identifiers" $@52 ":" "[" host_reservation_identifiers_list "]" +#line 1214 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2254 "dhcp6_parser.cc" +#line 2264 "dhcp6_parser.cc" break; - case 302: // host_reservation_identifiers_list: host_reservation_identifiers_list "," -#line 1213 "dhcp6_parser.yy" + case 304: // host_reservation_identifiers_list: host_reservation_identifiers_list "," +#line 1221 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2262 "dhcp6_parser.cc" +#line 2272 "dhcp6_parser.cc" break; - case 306: // hw_address_id: "hw-address" -#line 1223 "dhcp6_parser.yy" + case 308: // hw_address_id: "hw-address" +#line 1231 "dhcp6_parser.yy" { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 2271 "dhcp6_parser.cc" +#line 2281 "dhcp6_parser.cc" break; - case 307: // flex_id: "flex-id" -#line 1228 "dhcp6_parser.yy" + case 309: // flex_id: "flex-id" +#line 1236 "dhcp6_parser.yy" { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 2280 "dhcp6_parser.cc" +#line 2290 "dhcp6_parser.cc" break; - case 308: // $@53: %empty -#line 1235 "dhcp6_parser.yy" + case 310: // $@53: %empty +#line 1243 "dhcp6_parser.yy" { ctx.unique("relay-supplied-options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2288,20 +2298,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 2292 "dhcp6_parser.cc" +#line 2302 "dhcp6_parser.cc" break; - case 309: // relay_supplied_options: "relay-supplied-options" $@53 ":" "[" list_content "]" -#line 1241 "dhcp6_parser.yy" + case 311: // relay_supplied_options: "relay-supplied-options" $@53 ":" "[" list_content "]" +#line 1249 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2301 "dhcp6_parser.cc" +#line 2311 "dhcp6_parser.cc" break; - case 310: // $@54: %empty -#line 1248 "dhcp6_parser.yy" + case 312: // $@54: %empty +#line 1256 "dhcp6_parser.yy" { ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location)); ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2309,60 +2319,60 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(mt); ctx.enter(ctx.DHCP_MULTI_THREADING); } -#line 2313 "dhcp6_parser.cc" +#line 2323 "dhcp6_parser.cc" break; - case 311: // dhcp_multi_threading: "multi-threading" $@54 ":" "{" multi_threading_params "}" -#line 1254 "dhcp6_parser.yy" + case 313: // dhcp_multi_threading: "multi-threading" $@54 ":" "{" multi_threading_params "}" +#line 1262 "dhcp6_parser.yy" { // The enable parameter is required. ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 2324 "dhcp6_parser.cc" +#line 2334 "dhcp6_parser.cc" break; - case 314: // multi_threading_params: multi_threading_params "," -#line 1263 "dhcp6_parser.yy" + case 316: // multi_threading_params: multi_threading_params "," +#line 1271 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2332 "dhcp6_parser.cc" +#line 2342 "dhcp6_parser.cc" break; - case 321: // enable_multi_threading: "enable-multi-threading" ":" "boolean" -#line 1276 "dhcp6_parser.yy" + case 323: // enable_multi_threading: "enable-multi-threading" ":" "boolean" +#line 1284 "dhcp6_parser.yy" { ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-multi-threading", b); } -#line 2342 "dhcp6_parser.cc" +#line 2352 "dhcp6_parser.cc" break; - case 322: // thread_pool_size: "thread-pool-size" ":" "integer" -#line 1282 "dhcp6_parser.yy" + case 324: // thread_pool_size: "thread-pool-size" ":" "integer" +#line 1290 "dhcp6_parser.yy" { ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("thread-pool-size", prf); } -#line 2352 "dhcp6_parser.cc" +#line 2362 "dhcp6_parser.cc" break; - case 323: // packet_queue_size: "packet-queue-size" ":" "integer" -#line 1288 "dhcp6_parser.yy" + case 325: // packet_queue_size: "packet-queue-size" ":" "integer" +#line 1296 "dhcp6_parser.yy" { ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("packet-queue-size", prf); } -#line 2362 "dhcp6_parser.cc" +#line 2372 "dhcp6_parser.cc" break; - case 324: // $@55: %empty -#line 1294 "dhcp6_parser.yy" + case 326: // $@55: %empty +#line 1302 "dhcp6_parser.yy" { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2370,113 +2380,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 2374 "dhcp6_parser.cc" +#line 2384 "dhcp6_parser.cc" break; - case 325: // hooks_libraries: "hooks-libraries" $@55 ":" "[" hooks_libraries_list "]" -#line 1300 "dhcp6_parser.yy" + case 327: // hooks_libraries: "hooks-libraries" $@55 ":" "[" hooks_libraries_list "]" +#line 1308 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2383 "dhcp6_parser.cc" +#line 2393 "dhcp6_parser.cc" break; - case 330: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," -#line 1311 "dhcp6_parser.yy" + case 332: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," +#line 1319 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2391 "dhcp6_parser.cc" +#line 2401 "dhcp6_parser.cc" break; - case 331: // $@56: %empty -#line 1316 "dhcp6_parser.yy" + case 333: // $@56: %empty +#line 1324 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2401 "dhcp6_parser.cc" +#line 2411 "dhcp6_parser.cc" break; - case 332: // hooks_library: "{" $@56 hooks_params "}" -#line 1320 "dhcp6_parser.yy" + case 334: // hooks_library: "{" $@56 hooks_params "}" +#line 1328 "dhcp6_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2411 "dhcp6_parser.cc" +#line 2421 "dhcp6_parser.cc" break; - case 333: // $@57: %empty -#line 1326 "dhcp6_parser.yy" + case 335: // $@57: %empty +#line 1334 "dhcp6_parser.yy" { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2421 "dhcp6_parser.cc" +#line 2431 "dhcp6_parser.cc" break; - case 334: // sub_hooks_library: "{" $@57 hooks_params "}" -#line 1330 "dhcp6_parser.yy" + case 336: // sub_hooks_library: "{" $@57 hooks_params "}" +#line 1338 "dhcp6_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2431 "dhcp6_parser.cc" +#line 2441 "dhcp6_parser.cc" break; - case 337: // hooks_params: hooks_params "," -#line 1338 "dhcp6_parser.yy" + case 339: // hooks_params: hooks_params "," +#line 1346 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2439 "dhcp6_parser.cc" +#line 2449 "dhcp6_parser.cc" break; - case 341: // $@58: %empty -#line 1348 "dhcp6_parser.yy" + case 343: // $@58: %empty +#line 1356 "dhcp6_parser.yy" { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2448 "dhcp6_parser.cc" +#line 2458 "dhcp6_parser.cc" break; - case 342: // library: "library" $@58 ":" "constant string" -#line 1351 "dhcp6_parser.yy" + case 344: // library: "library" $@58 ":" "constant string" +#line 1359 "dhcp6_parser.yy" { ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 2458 "dhcp6_parser.cc" +#line 2468 "dhcp6_parser.cc" break; - case 343: // $@59: %empty -#line 1357 "dhcp6_parser.yy" + case 345: // $@59: %empty +#line 1365 "dhcp6_parser.yy" { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2467 "dhcp6_parser.cc" +#line 2477 "dhcp6_parser.cc" break; - case 344: // parameters: "parameters" $@59 ":" map_value -#line 1360 "dhcp6_parser.yy" + case 346: // parameters: "parameters" $@59 ":" map_value +#line 1368 "dhcp6_parser.yy" { ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2476 "dhcp6_parser.cc" +#line 2486 "dhcp6_parser.cc" break; - case 345: // $@60: %empty -#line 1366 "dhcp6_parser.yy" + case 347: // $@60: %empty +#line 1374 "dhcp6_parser.yy" { ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2484,89 +2494,89 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.EXPIRED_LEASES_PROCESSING); } -#line 2488 "dhcp6_parser.cc" +#line 2498 "dhcp6_parser.cc" break; - case 346: // expired_leases_processing: "expired-leases-processing" $@60 ":" "{" expired_leases_params "}" -#line 1372 "dhcp6_parser.yy" + case 348: // expired_leases_processing: "expired-leases-processing" $@60 ":" "{" expired_leases_params "}" +#line 1380 "dhcp6_parser.yy" { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 2498 "dhcp6_parser.cc" +#line 2508 "dhcp6_parser.cc" break; - case 349: // expired_leases_params: expired_leases_params "," -#line 1380 "dhcp6_parser.yy" + case 351: // expired_leases_params: expired_leases_params "," +#line 1388 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2506 "dhcp6_parser.cc" +#line 2516 "dhcp6_parser.cc" break; - case 356: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" -#line 1393 "dhcp6_parser.yy" + case 358: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" +#line 1401 "dhcp6_parser.yy" { ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reclaim-timer-wait-time", value); } -#line 2516 "dhcp6_parser.cc" +#line 2526 "dhcp6_parser.cc" break; - case 357: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" -#line 1399 "dhcp6_parser.yy" + case 359: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" +#line 1407 "dhcp6_parser.yy" { ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value); } -#line 2526 "dhcp6_parser.cc" +#line 2536 "dhcp6_parser.cc" break; - case 358: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" -#line 1405 "dhcp6_parser.yy" + case 360: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" +#line 1413 "dhcp6_parser.yy" { ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hold-reclaimed-time", value); } -#line 2536 "dhcp6_parser.cc" +#line 2546 "dhcp6_parser.cc" break; - case 359: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" -#line 1411 "dhcp6_parser.yy" + case 361: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" +#line 1419 "dhcp6_parser.yy" { ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-leases", value); } -#line 2546 "dhcp6_parser.cc" +#line 2556 "dhcp6_parser.cc" break; - case 360: // max_reclaim_time: "max-reclaim-time" ":" "integer" -#line 1417 "dhcp6_parser.yy" + case 362: // max_reclaim_time: "max-reclaim-time" ":" "integer" +#line 1425 "dhcp6_parser.yy" { ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-time", value); } -#line 2556 "dhcp6_parser.cc" +#line 2566 "dhcp6_parser.cc" break; - case 361: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" -#line 1423 "dhcp6_parser.yy" + case 363: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" +#line 1431 "dhcp6_parser.yy" { ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("unwarned-reclaim-cycles", value); } -#line 2566 "dhcp6_parser.cc" +#line 2576 "dhcp6_parser.cc" break; - case 362: // $@61: %empty -#line 1432 "dhcp6_parser.yy" + case 364: // $@61: %empty +#line 1440 "dhcp6_parser.yy" { ctx.unique("subnet6", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2574,38 +2584,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SUBNET6); } -#line 2578 "dhcp6_parser.cc" +#line 2588 "dhcp6_parser.cc" break; - case 363: // subnet6_list: "subnet6" $@61 ":" "[" subnet6_list_content "]" -#line 1438 "dhcp6_parser.yy" + case 365: // subnet6_list: "subnet6" $@61 ":" "[" subnet6_list_content "]" +#line 1446 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2587 "dhcp6_parser.cc" +#line 2597 "dhcp6_parser.cc" break; - case 368: // not_empty_subnet6_list: not_empty_subnet6_list "," -#line 1452 "dhcp6_parser.yy" + case 370: // not_empty_subnet6_list: not_empty_subnet6_list "," +#line 1460 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2595 "dhcp6_parser.cc" +#line 2605 "dhcp6_parser.cc" break; - case 369: // $@62: %empty -#line 1461 "dhcp6_parser.yy" + case 371: // $@62: %empty +#line 1469 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2605 "dhcp6_parser.cc" +#line 2615 "dhcp6_parser.cc" break; - case 370: // subnet6: "{" $@62 subnet6_params "}" -#line 1465 "dhcp6_parser.yy" + case 372: // subnet6: "{" $@62 subnet6_params "}" +#line 1473 "dhcp6_parser.yy" { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. @@ -2627,115 +2637,115 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2631 "dhcp6_parser.cc" +#line 2641 "dhcp6_parser.cc" break; - case 371: // $@63: %empty -#line 1487 "dhcp6_parser.yy" + case 373: // $@63: %empty +#line 1495 "dhcp6_parser.yy" { // Parse the subnet6 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2641 "dhcp6_parser.cc" +#line 2651 "dhcp6_parser.cc" break; - case 372: // sub_subnet6: "{" $@63 subnet6_params "}" -#line 1491 "dhcp6_parser.yy" + case 374: // sub_subnet6: "{" $@63 subnet6_params "}" +#line 1499 "dhcp6_parser.yy" { // The subnet subnet6 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2651 "dhcp6_parser.cc" +#line 2661 "dhcp6_parser.cc" break; - case 375: // subnet6_params: subnet6_params "," -#line 1500 "dhcp6_parser.yy" + case 377: // subnet6_params: subnet6_params "," +#line 1508 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2659 "dhcp6_parser.cc" +#line 2669 "dhcp6_parser.cc" break; - case 419: // $@64: %empty -#line 1551 "dhcp6_parser.yy" + case 421: // $@64: %empty +#line 1559 "dhcp6_parser.yy" { ctx.unique("subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2668 "dhcp6_parser.cc" +#line 2678 "dhcp6_parser.cc" break; - case 420: // subnet: "subnet" $@64 ":" "constant string" -#line 1554 "dhcp6_parser.yy" + case 422: // subnet: "subnet" $@64 ":" "constant string" +#line 1562 "dhcp6_parser.yy" { ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet", subnet); ctx.leave(); } -#line 2678 "dhcp6_parser.cc" +#line 2688 "dhcp6_parser.cc" break; - case 421: // $@65: %empty -#line 1560 "dhcp6_parser.yy" + case 423: // $@65: %empty +#line 1568 "dhcp6_parser.yy" { ctx.unique("interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2687 "dhcp6_parser.cc" +#line 2697 "dhcp6_parser.cc" break; - case 422: // interface: "interface" $@65 ":" "constant string" -#line 1563 "dhcp6_parser.yy" + case 424: // interface: "interface" $@65 ":" "constant string" +#line 1571 "dhcp6_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface", iface); ctx.leave(); } -#line 2697 "dhcp6_parser.cc" +#line 2707 "dhcp6_parser.cc" break; - case 423: // $@66: %empty -#line 1569 "dhcp6_parser.yy" + case 425: // $@66: %empty +#line 1577 "dhcp6_parser.yy" { ctx.unique("interface-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2706 "dhcp6_parser.cc" +#line 2716 "dhcp6_parser.cc" break; - case 424: // interface_id: "interface-id" $@66 ":" "constant string" -#line 1572 "dhcp6_parser.yy" + case 426: // interface_id: "interface-id" $@66 ":" "constant string" +#line 1580 "dhcp6_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface-id", iface); ctx.leave(); } -#line 2716 "dhcp6_parser.cc" +#line 2726 "dhcp6_parser.cc" break; - case 425: // $@67: %empty -#line 1578 "dhcp6_parser.yy" + case 427: // $@67: %empty +#line 1586 "dhcp6_parser.yy" { ctx.unique("client-class", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2725 "dhcp6_parser.cc" +#line 2735 "dhcp6_parser.cc" break; - case 426: // client_class: "client-class" $@67 ":" "constant string" -#line 1581 "dhcp6_parser.yy" + case 428: // client_class: "client-class" $@67 ":" "constant string" +#line 1589 "dhcp6_parser.yy" { ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-class", cls); ctx.leave(); } -#line 2735 "dhcp6_parser.cc" +#line 2745 "dhcp6_parser.cc" break; - case 427: // $@68: %empty -#line 1587 "dhcp6_parser.yy" + case 429: // $@68: %empty +#line 1595 "dhcp6_parser.yy" { ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2743,112 +2753,112 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2747 "dhcp6_parser.cc" +#line 2757 "dhcp6_parser.cc" break; - case 428: // require_client_classes: "require-client-classes" $@68 ":" list_strings -#line 1593 "dhcp6_parser.yy" + case 430: // require_client_classes: "require-client-classes" $@68 ":" list_strings +#line 1601 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2756 "dhcp6_parser.cc" +#line 2766 "dhcp6_parser.cc" break; - case 429: // reservations_global: "reservations-global" ":" "boolean" -#line 1598 "dhcp6_parser.yy" + case 431: // reservations_global: "reservations-global" ":" "boolean" +#line 1606 "dhcp6_parser.yy" { ctx.unique("reservations-global", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-global", b); } -#line 2766 "dhcp6_parser.cc" +#line 2776 "dhcp6_parser.cc" break; - case 430: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" -#line 1604 "dhcp6_parser.yy" + case 432: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" +#line 1612 "dhcp6_parser.yy" { ctx.unique("reservations-in-subnet", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-in-subnet", b); } -#line 2776 "dhcp6_parser.cc" +#line 2786 "dhcp6_parser.cc" break; - case 431: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" -#line 1610 "dhcp6_parser.yy" + case 433: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" +#line 1618 "dhcp6_parser.yy" { ctx.unique("reservations-out-of-pool", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-out-of-pool", b); } -#line 2786 "dhcp6_parser.cc" +#line 2796 "dhcp6_parser.cc" break; - case 432: // $@69: %empty -#line 1616 "dhcp6_parser.yy" + case 434: // $@69: %empty +#line 1624 "dhcp6_parser.yy" { ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.RESERVATION_MODE); } -#line 2795 "dhcp6_parser.cc" +#line 2805 "dhcp6_parser.cc" break; - case 433: // reservation_mode: "reservation-mode" $@69 ":" hr_mode -#line 1619 "dhcp6_parser.yy" + case 435: // reservation_mode: "reservation-mode" $@69 ":" hr_mode +#line 1627 "dhcp6_parser.yy" { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2804 "dhcp6_parser.cc" +#line 2814 "dhcp6_parser.cc" break; - case 434: // hr_mode: "disabled" -#line 1624 "dhcp6_parser.yy" + case 436: // hr_mode: "disabled" +#line 1632 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 2810 "dhcp6_parser.cc" +#line 2820 "dhcp6_parser.cc" break; - case 435: // hr_mode: "out-of-pool" -#line 1625 "dhcp6_parser.yy" + case 437: // hr_mode: "out-of-pool" +#line 1633 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 2816 "dhcp6_parser.cc" +#line 2826 "dhcp6_parser.cc" break; - case 436: // hr_mode: "global" -#line 1626 "dhcp6_parser.yy" + case 438: // hr_mode: "global" +#line 1634 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 2822 "dhcp6_parser.cc" +#line 2832 "dhcp6_parser.cc" break; - case 437: // hr_mode: "all" -#line 1627 "dhcp6_parser.yy" + case 439: // hr_mode: "all" +#line 1635 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 2828 "dhcp6_parser.cc" +#line 2838 "dhcp6_parser.cc" break; - case 438: // id: "id" ":" "integer" -#line 1630 "dhcp6_parser.yy" + case 440: // id: "id" ":" "integer" +#line 1638 "dhcp6_parser.yy" { ctx.unique("id", ctx.loc2pos(yystack_[2].location)); ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("id", id); } -#line 2838 "dhcp6_parser.cc" +#line 2848 "dhcp6_parser.cc" break; - case 439: // rapid_commit: "rapid-commit" ":" "boolean" -#line 1636 "dhcp6_parser.yy" + case 441: // rapid_commit: "rapid-commit" ":" "boolean" +#line 1644 "dhcp6_parser.yy" { ctx.unique("rapid-commit", ctx.loc2pos(yystack_[2].location)); ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rapid-commit", rc); } -#line 2848 "dhcp6_parser.cc" +#line 2858 "dhcp6_parser.cc" break; - case 440: // $@70: %empty -#line 1644 "dhcp6_parser.yy" + case 442: // $@70: %empty +#line 1652 "dhcp6_parser.yy" { ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2856,54 +2866,54 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SHARED_NETWORK); } -#line 2860 "dhcp6_parser.cc" +#line 2870 "dhcp6_parser.cc" break; - case 441: // shared_networks: "shared-networks" $@70 ":" "[" shared_networks_content "]" -#line 1650 "dhcp6_parser.yy" + case 443: // shared_networks: "shared-networks" $@70 ":" "[" shared_networks_content "]" +#line 1658 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2869 "dhcp6_parser.cc" +#line 2879 "dhcp6_parser.cc" break; - case 446: // shared_networks_list: shared_networks_list "," -#line 1663 "dhcp6_parser.yy" + case 448: // shared_networks_list: shared_networks_list "," +#line 1671 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2877 "dhcp6_parser.cc" +#line 2887 "dhcp6_parser.cc" break; - case 447: // $@71: %empty -#line 1668 "dhcp6_parser.yy" + case 449: // $@71: %empty +#line 1676 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2887 "dhcp6_parser.cc" +#line 2897 "dhcp6_parser.cc" break; - case 448: // shared_network: "{" $@71 shared_network_params "}" -#line 1672 "dhcp6_parser.yy" + case 450: // shared_network: "{" $@71 shared_network_params "}" +#line 1680 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 2895 "dhcp6_parser.cc" +#line 2905 "dhcp6_parser.cc" break; - case 451: // shared_network_params: shared_network_params "," -#line 1678 "dhcp6_parser.yy" + case 453: // shared_network_params: shared_network_params "," +#line 1686 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2903 "dhcp6_parser.cc" +#line 2913 "dhcp6_parser.cc" break; - case 492: // $@72: %empty -#line 1729 "dhcp6_parser.yy" + case 494: // $@72: %empty +#line 1737 "dhcp6_parser.yy" { ctx.unique("option-def", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2911,55 +2921,55 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DEF); } -#line 2915 "dhcp6_parser.cc" +#line 2925 "dhcp6_parser.cc" break; - case 493: // option_def_list: "option-def" $@72 ":" "[" option_def_list_content "]" -#line 1735 "dhcp6_parser.yy" + case 495: // option_def_list: "option-def" $@72 ":" "[" option_def_list_content "]" +#line 1743 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2924 "dhcp6_parser.cc" +#line 2934 "dhcp6_parser.cc" break; - case 494: // $@73: %empty -#line 1743 "dhcp6_parser.yy" + case 496: // $@73: %empty +#line 1751 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2933 "dhcp6_parser.cc" +#line 2943 "dhcp6_parser.cc" break; - case 495: // sub_option_def_list: "{" $@73 option_def_list "}" -#line 1746 "dhcp6_parser.yy" + case 497: // sub_option_def_list: "{" $@73 option_def_list "}" +#line 1754 "dhcp6_parser.yy" { // parsing completed } -#line 2941 "dhcp6_parser.cc" +#line 2951 "dhcp6_parser.cc" break; - case 500: // not_empty_option_def_list: not_empty_option_def_list "," -#line 1758 "dhcp6_parser.yy" + case 502: // not_empty_option_def_list: not_empty_option_def_list "," +#line 1766 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2949 "dhcp6_parser.cc" +#line 2959 "dhcp6_parser.cc" break; - case 501: // $@74: %empty -#line 1765 "dhcp6_parser.yy" + case 503: // $@74: %empty +#line 1773 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2959 "dhcp6_parser.cc" +#line 2969 "dhcp6_parser.cc" break; - case 502: // option_def_entry: "{" $@74 option_def_params "}" -#line 1769 "dhcp6_parser.yy" + case 504: // option_def_entry: "{" $@74 option_def_params "}" +#line 1777 "dhcp6_parser.yy" { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2967,21 +2977,21 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2971 "dhcp6_parser.cc" +#line 2981 "dhcp6_parser.cc" break; - case 503: // $@75: %empty -#line 1780 "dhcp6_parser.yy" + case 505: // $@75: %empty +#line 1788 "dhcp6_parser.yy" { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2981 "dhcp6_parser.cc" +#line 2991 "dhcp6_parser.cc" break; - case 504: // sub_option_def: "{" $@75 option_def_params "}" -#line 1784 "dhcp6_parser.yy" + case 506: // sub_option_def: "{" $@75 option_def_params "}" +#line 1792 "dhcp6_parser.yy" { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2989,115 +2999,115 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2993 "dhcp6_parser.cc" +#line 3003 "dhcp6_parser.cc" break; - case 509: // not_empty_option_def_params: not_empty_option_def_params "," -#line 1800 "dhcp6_parser.yy" + case 511: // not_empty_option_def_params: not_empty_option_def_params "," +#line 1808 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3001 "dhcp6_parser.cc" +#line 3011 "dhcp6_parser.cc" break; - case 521: // code: "code" ":" "integer" -#line 1819 "dhcp6_parser.yy" + case 523: // code: "code" ":" "integer" +#line 1827 "dhcp6_parser.yy" { ctx.unique("code", ctx.loc2pos(yystack_[2].location)); ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("code", code); } -#line 3011 "dhcp6_parser.cc" +#line 3021 "dhcp6_parser.cc" break; - case 523: // $@76: %empty -#line 1827 "dhcp6_parser.yy" + case 525: // $@76: %empty +#line 1835 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3020 "dhcp6_parser.cc" +#line 3030 "dhcp6_parser.cc" break; - case 524: // option_def_type: "type" $@76 ":" "constant string" -#line 1830 "dhcp6_parser.yy" + case 526: // option_def_type: "type" $@76 ":" "constant string" +#line 1838 "dhcp6_parser.yy" { ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", prf); ctx.leave(); } -#line 3030 "dhcp6_parser.cc" +#line 3040 "dhcp6_parser.cc" break; - case 525: // $@77: %empty -#line 1836 "dhcp6_parser.yy" + case 527: // $@77: %empty +#line 1844 "dhcp6_parser.yy" { ctx.unique("record-types", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3039 "dhcp6_parser.cc" +#line 3049 "dhcp6_parser.cc" break; - case 526: // option_def_record_types: "record-types" $@77 ":" "constant string" -#line 1839 "dhcp6_parser.yy" + case 528: // option_def_record_types: "record-types" $@77 ":" "constant string" +#line 1847 "dhcp6_parser.yy" { ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("record-types", rtypes); ctx.leave(); } -#line 3049 "dhcp6_parser.cc" +#line 3059 "dhcp6_parser.cc" break; - case 527: // $@78: %empty -#line 1845 "dhcp6_parser.yy" + case 529: // $@78: %empty +#line 1853 "dhcp6_parser.yy" { ctx.unique("space", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3058 "dhcp6_parser.cc" +#line 3068 "dhcp6_parser.cc" break; - case 528: // space: "space" $@78 ":" "constant string" -#line 1848 "dhcp6_parser.yy" + case 530: // space: "space" $@78 ":" "constant string" +#line 1856 "dhcp6_parser.yy" { ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("space", space); ctx.leave(); } -#line 3068 "dhcp6_parser.cc" +#line 3078 "dhcp6_parser.cc" break; - case 530: // $@79: %empty -#line 1856 "dhcp6_parser.yy" + case 532: // $@79: %empty +#line 1864 "dhcp6_parser.yy" { ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3077 "dhcp6_parser.cc" +#line 3087 "dhcp6_parser.cc" break; - case 531: // option_def_encapsulate: "encapsulate" $@79 ":" "constant string" -#line 1859 "dhcp6_parser.yy" + case 533: // option_def_encapsulate: "encapsulate" $@79 ":" "constant string" +#line 1867 "dhcp6_parser.yy" { ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("encapsulate", encap); ctx.leave(); } -#line 3087 "dhcp6_parser.cc" +#line 3097 "dhcp6_parser.cc" break; - case 532: // option_def_array: "array" ":" "boolean" -#line 1865 "dhcp6_parser.yy" + case 534: // option_def_array: "array" ":" "boolean" +#line 1873 "dhcp6_parser.yy" { ctx.unique("array", ctx.loc2pos(yystack_[2].location)); ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("array", array); } -#line 3097 "dhcp6_parser.cc" +#line 3107 "dhcp6_parser.cc" break; - case 533: // $@80: %empty -#line 1875 "dhcp6_parser.yy" + case 535: // $@80: %empty +#line 1883 "dhcp6_parser.yy" { ctx.unique("option-data", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3105,113 +3115,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DATA); } -#line 3109 "dhcp6_parser.cc" +#line 3119 "dhcp6_parser.cc" break; - case 534: // option_data_list: "option-data" $@80 ":" "[" option_data_list_content "]" -#line 1881 "dhcp6_parser.yy" + case 536: // option_data_list: "option-data" $@80 ":" "[" option_data_list_content "]" +#line 1889 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3118 "dhcp6_parser.cc" +#line 3128 "dhcp6_parser.cc" break; - case 539: // not_empty_option_data_list: not_empty_option_data_list "," -#line 1896 "dhcp6_parser.yy" + case 541: // not_empty_option_data_list: not_empty_option_data_list "," +#line 1904 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3126 "dhcp6_parser.cc" +#line 3136 "dhcp6_parser.cc" break; - case 540: // $@81: %empty -#line 1903 "dhcp6_parser.yy" + case 542: // $@81: %empty +#line 1911 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3136 "dhcp6_parser.cc" +#line 3146 "dhcp6_parser.cc" break; - case 541: // option_data_entry: "{" $@81 option_data_params "}" -#line 1907 "dhcp6_parser.yy" + case 543: // option_data_entry: "{" $@81 option_data_params "}" +#line 1915 "dhcp6_parser.yy" { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 3145 "dhcp6_parser.cc" +#line 3155 "dhcp6_parser.cc" break; - case 542: // $@82: %empty -#line 1915 "dhcp6_parser.yy" + case 544: // $@82: %empty +#line 1923 "dhcp6_parser.yy" { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3155 "dhcp6_parser.cc" +#line 3165 "dhcp6_parser.cc" break; - case 543: // sub_option_data: "{" $@82 option_data_params "}" -#line 1919 "dhcp6_parser.yy" + case 545: // sub_option_data: "{" $@82 option_data_params "}" +#line 1927 "dhcp6_parser.yy" { /// @todo: the code or name parameters are required. // parsing completed } -#line 3164 "dhcp6_parser.cc" +#line 3174 "dhcp6_parser.cc" break; - case 548: // not_empty_option_data_params: not_empty_option_data_params "," -#line 1935 "dhcp6_parser.yy" + case 550: // not_empty_option_data_params: not_empty_option_data_params "," +#line 1943 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3172 "dhcp6_parser.cc" +#line 3182 "dhcp6_parser.cc" break; - case 559: // $@83: %empty -#line 1955 "dhcp6_parser.yy" + case 561: // $@83: %empty +#line 1963 "dhcp6_parser.yy" { ctx.unique("data", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3181 "dhcp6_parser.cc" +#line 3191 "dhcp6_parser.cc" break; - case 560: // option_data_data: "data" $@83 ":" "constant string" -#line 1958 "dhcp6_parser.yy" + case 562: // option_data_data: "data" $@83 ":" "constant string" +#line 1966 "dhcp6_parser.yy" { ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data", data); ctx.leave(); } -#line 3191 "dhcp6_parser.cc" +#line 3201 "dhcp6_parser.cc" break; - case 563: // option_data_csv_format: "csv-format" ":" "boolean" -#line 1968 "dhcp6_parser.yy" + case 565: // option_data_csv_format: "csv-format" ":" "boolean" +#line 1976 "dhcp6_parser.yy" { ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location)); ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", space); } -#line 3201 "dhcp6_parser.cc" +#line 3211 "dhcp6_parser.cc" break; - case 564: // option_data_always_send: "always-send" ":" "boolean" -#line 1974 "dhcp6_parser.yy" + case 566: // option_data_always_send: "always-send" ":" "boolean" +#line 1982 "dhcp6_parser.yy" { ctx.unique("always-send", ctx.loc2pos(yystack_[2].location)); ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-send", persist); } -#line 3211 "dhcp6_parser.cc" +#line 3221 "dhcp6_parser.cc" break; - case 565: // $@84: %empty -#line 1983 "dhcp6_parser.yy" + case 567: // $@84: %empty +#line 1991 "dhcp6_parser.yy" { ctx.unique("pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3219,103 +3229,103 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.POOLS); } -#line 3223 "dhcp6_parser.cc" +#line 3233 "dhcp6_parser.cc" break; - case 566: // pools_list: "pools" $@84 ":" "[" pools_list_content "]" -#line 1989 "dhcp6_parser.yy" + case 568: // pools_list: "pools" $@84 ":" "[" pools_list_content "]" +#line 1997 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3232 "dhcp6_parser.cc" +#line 3242 "dhcp6_parser.cc" break; - case 571: // not_empty_pools_list: not_empty_pools_list "," -#line 2002 "dhcp6_parser.yy" + case 573: // not_empty_pools_list: not_empty_pools_list "," +#line 2010 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3240 "dhcp6_parser.cc" +#line 3250 "dhcp6_parser.cc" break; - case 572: // $@85: %empty -#line 2007 "dhcp6_parser.yy" + case 574: // $@85: %empty +#line 2015 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3250 "dhcp6_parser.cc" +#line 3260 "dhcp6_parser.cc" break; - case 573: // pool_list_entry: "{" $@85 pool_params "}" -#line 2011 "dhcp6_parser.yy" + case 575: // pool_list_entry: "{" $@85 pool_params "}" +#line 2019 "dhcp6_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3260 "dhcp6_parser.cc" +#line 3270 "dhcp6_parser.cc" break; - case 574: // $@86: %empty -#line 2017 "dhcp6_parser.yy" + case 576: // $@86: %empty +#line 2025 "dhcp6_parser.yy" { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3270 "dhcp6_parser.cc" +#line 3280 "dhcp6_parser.cc" break; - case 575: // sub_pool6: "{" $@86 pool_params "}" -#line 2021 "dhcp6_parser.yy" + case 577: // sub_pool6: "{" $@86 pool_params "}" +#line 2029 "dhcp6_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3280 "dhcp6_parser.cc" +#line 3290 "dhcp6_parser.cc" break; - case 578: // pool_params: pool_params "," -#line 2029 "dhcp6_parser.yy" + case 580: // pool_params: pool_params "," +#line 2037 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3288 "dhcp6_parser.cc" +#line 3298 "dhcp6_parser.cc" break; - case 586: // $@87: %empty -#line 2043 "dhcp6_parser.yy" + case 588: // $@87: %empty +#line 2051 "dhcp6_parser.yy" { ctx.unique("pool", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3297 "dhcp6_parser.cc" +#line 3307 "dhcp6_parser.cc" break; - case 587: // pool_entry: "pool" $@87 ":" "constant string" -#line 2046 "dhcp6_parser.yy" + case 589: // pool_entry: "pool" $@87 ":" "constant string" +#line 2054 "dhcp6_parser.yy" { ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool", pool); ctx.leave(); } -#line 3307 "dhcp6_parser.cc" +#line 3317 "dhcp6_parser.cc" break; - case 588: // $@88: %empty -#line 2052 "dhcp6_parser.yy" + case 590: // $@88: %empty +#line 2060 "dhcp6_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3315 "dhcp6_parser.cc" +#line 3325 "dhcp6_parser.cc" break; - case 589: // user_context: "user-context" $@88 ":" map_value -#line 2054 "dhcp6_parser.yy" + case 591: // user_context: "user-context" $@88 ":" map_value +#line 2062 "dhcp6_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); @@ -3338,19 +3348,19 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3342 "dhcp6_parser.cc" +#line 3352 "dhcp6_parser.cc" break; - case 590: // $@89: %empty -#line 2077 "dhcp6_parser.yy" + case 592: // $@89: %empty +#line 2085 "dhcp6_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3350 "dhcp6_parser.cc" +#line 3360 "dhcp6_parser.cc" break; - case 591: // comment: "comment" $@89 ":" "constant string" -#line 2079 "dhcp6_parser.yy" + case 593: // comment: "comment" $@89 ":" "constant string" +#line 2087 "dhcp6_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -3375,11 +3385,11 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3379 "dhcp6_parser.cc" +#line 3389 "dhcp6_parser.cc" break; - case 592: // $@90: %empty -#line 2107 "dhcp6_parser.yy" + case 594: // $@90: %empty +#line 2115 "dhcp6_parser.yy" { ctx.unique("pd-pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3387,38 +3397,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.PD_POOLS); } -#line 3391 "dhcp6_parser.cc" +#line 3401 "dhcp6_parser.cc" break; - case 593: // pd_pools_list: "pd-pools" $@90 ":" "[" pd_pools_list_content "]" -#line 2113 "dhcp6_parser.yy" + case 595: // pd_pools_list: "pd-pools" $@90 ":" "[" pd_pools_list_content "]" +#line 2121 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3400 "dhcp6_parser.cc" +#line 3410 "dhcp6_parser.cc" break; - case 598: // not_empty_pd_pools_list: not_empty_pd_pools_list "," -#line 2126 "dhcp6_parser.yy" + case 600: // not_empty_pd_pools_list: not_empty_pd_pools_list "," +#line 2134 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3408 "dhcp6_parser.cc" +#line 3418 "dhcp6_parser.cc" break; - case 599: // $@91: %empty -#line 2131 "dhcp6_parser.yy" + case 601: // $@91: %empty +#line 2139 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3418 "dhcp6_parser.cc" +#line 3428 "dhcp6_parser.cc" break; - case 600: // pd_pool_entry: "{" $@91 pd_pool_params "}" -#line 2135 "dhcp6_parser.yy" + case 602: // pd_pool_entry: "{" $@91 pd_pool_params "}" +#line 2143 "dhcp6_parser.yy" { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3426,21 +3436,21 @@ namespace isc { namespace dhcp { ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3430 "dhcp6_parser.cc" +#line 3440 "dhcp6_parser.cc" break; - case 601: // $@92: %empty -#line 2143 "dhcp6_parser.yy" + case 603: // $@92: %empty +#line 2151 "dhcp6_parser.yy" { // Parse the pd-pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3440 "dhcp6_parser.cc" +#line 3450 "dhcp6_parser.cc" break; - case 602: // sub_pd_pool: "{" $@92 pd_pool_params "}" -#line 2147 "dhcp6_parser.yy" + case 604: // sub_pd_pool: "{" $@92 pd_pool_params "}" +#line 2155 "dhcp6_parser.yy" { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3448,87 +3458,87 @@ namespace isc { namespace dhcp { ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3452 "dhcp6_parser.cc" +#line 3462 "dhcp6_parser.cc" break; - case 605: // pd_pool_params: pd_pool_params "," -#line 2157 "dhcp6_parser.yy" + case 607: // pd_pool_params: pd_pool_params "," +#line 2165 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3460 "dhcp6_parser.cc" +#line 3470 "dhcp6_parser.cc" break; - case 617: // $@93: %empty -#line 2175 "dhcp6_parser.yy" + case 619: // $@93: %empty +#line 2183 "dhcp6_parser.yy" { ctx.unique("prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3469 "dhcp6_parser.cc" +#line 3479 "dhcp6_parser.cc" break; - case 618: // pd_prefix: "prefix" $@93 ":" "constant string" -#line 2178 "dhcp6_parser.yy" + case 620: // pd_prefix: "prefix" $@93 ":" "constant string" +#line 2186 "dhcp6_parser.yy" { ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix", prf); ctx.leave(); } -#line 3479 "dhcp6_parser.cc" +#line 3489 "dhcp6_parser.cc" break; - case 619: // pd_prefix_len: "prefix-len" ":" "integer" -#line 2184 "dhcp6_parser.yy" + case 621: // pd_prefix_len: "prefix-len" ":" "integer" +#line 2192 "dhcp6_parser.yy" { ctx.unique("prefix-len", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix-len", prf); } -#line 3489 "dhcp6_parser.cc" +#line 3499 "dhcp6_parser.cc" break; - case 620: // $@94: %empty -#line 2190 "dhcp6_parser.yy" + case 622: // $@94: %empty +#line 2198 "dhcp6_parser.yy" { ctx.unique("excluded-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3498 "dhcp6_parser.cc" +#line 3508 "dhcp6_parser.cc" break; - case 621: // excluded_prefix: "excluded-prefix" $@94 ":" "constant string" -#line 2193 "dhcp6_parser.yy" + case 623: // excluded_prefix: "excluded-prefix" $@94 ":" "constant string" +#line 2201 "dhcp6_parser.yy" { ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("excluded-prefix", prf); ctx.leave(); } -#line 3508 "dhcp6_parser.cc" +#line 3518 "dhcp6_parser.cc" break; - case 622: // excluded_prefix_len: "excluded-prefix-len" ":" "integer" -#line 2199 "dhcp6_parser.yy" + case 624: // excluded_prefix_len: "excluded-prefix-len" ":" "integer" +#line 2207 "dhcp6_parser.yy" { ctx.unique("excluded-prefix-len", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("excluded-prefix-len", prf); } -#line 3518 "dhcp6_parser.cc" +#line 3528 "dhcp6_parser.cc" break; - case 623: // pd_delegated_len: "delegated-len" ":" "integer" -#line 2205 "dhcp6_parser.yy" + case 625: // pd_delegated_len: "delegated-len" ":" "integer" +#line 2213 "dhcp6_parser.yy" { ctx.unique("delegated-len", ctx.loc2pos(yystack_[2].location)); ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("delegated-len", deleg); } -#line 3528 "dhcp6_parser.cc" +#line 3538 "dhcp6_parser.cc" break; - case 624: // $@95: %empty -#line 2214 "dhcp6_parser.yy" + case 626: // $@95: %empty +#line 2222 "dhcp6_parser.yy" { ctx.unique("reservations", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3536,74 +3546,74 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.RESERVATIONS); } -#line 3540 "dhcp6_parser.cc" +#line 3550 "dhcp6_parser.cc" break; - case 625: // reservations: "reservations" $@95 ":" "[" reservations_list "]" -#line 2220 "dhcp6_parser.yy" + case 627: // reservations: "reservations" $@95 ":" "[" reservations_list "]" +#line 2228 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3549 "dhcp6_parser.cc" +#line 3559 "dhcp6_parser.cc" break; - case 630: // not_empty_reservations_list: not_empty_reservations_list "," -#line 2231 "dhcp6_parser.yy" + case 632: // not_empty_reservations_list: not_empty_reservations_list "," +#line 2239 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3557 "dhcp6_parser.cc" +#line 3567 "dhcp6_parser.cc" break; - case 631: // $@96: %empty -#line 2236 "dhcp6_parser.yy" + case 633: // $@96: %empty +#line 2244 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3567 "dhcp6_parser.cc" +#line 3577 "dhcp6_parser.cc" break; - case 632: // reservation: "{" $@96 reservation_params "}" -#line 2240 "dhcp6_parser.yy" + case 634: // reservation: "{" $@96 reservation_params "}" +#line 2248 "dhcp6_parser.yy" { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 3576 "dhcp6_parser.cc" +#line 3586 "dhcp6_parser.cc" break; - case 633: // $@97: %empty -#line 2245 "dhcp6_parser.yy" + case 635: // $@97: %empty +#line 2253 "dhcp6_parser.yy" { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3586 "dhcp6_parser.cc" +#line 3596 "dhcp6_parser.cc" break; - case 634: // sub_reservation: "{" $@97 reservation_params "}" -#line 2249 "dhcp6_parser.yy" + case 636: // sub_reservation: "{" $@97 reservation_params "}" +#line 2257 "dhcp6_parser.yy" { /// @todo: an identifier parameter is required. // parsing completed } -#line 3595 "dhcp6_parser.cc" +#line 3605 "dhcp6_parser.cc" break; - case 639: // not_empty_reservation_params: not_empty_reservation_params "," -#line 2260 "dhcp6_parser.yy" + case 641: // not_empty_reservation_params: not_empty_reservation_params "," +#line 2268 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3603 "dhcp6_parser.cc" +#line 3613 "dhcp6_parser.cc" break; - case 651: // $@98: %empty -#line 2279 "dhcp6_parser.yy" + case 653: // $@98: %empty +#line 2287 "dhcp6_parser.yy" { ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3611,20 +3621,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3615 "dhcp6_parser.cc" +#line 3625 "dhcp6_parser.cc" break; - case 652: // ip_addresses: "ip-addresses" $@98 ":" list_strings -#line 2285 "dhcp6_parser.yy" + case 654: // ip_addresses: "ip-addresses" $@98 ":" list_strings +#line 2293 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3624 "dhcp6_parser.cc" +#line 3634 "dhcp6_parser.cc" break; - case 653: // $@99: %empty -#line 2290 "dhcp6_parser.yy" + case 655: // $@99: %empty +#line 2298 "dhcp6_parser.yy" { ctx.unique("prefixes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3632,96 +3642,96 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3636 "dhcp6_parser.cc" +#line 3646 "dhcp6_parser.cc" break; - case 654: // prefixes: "prefixes" $@99 ":" list_strings -#line 2296 "dhcp6_parser.yy" + case 656: // prefixes: "prefixes" $@99 ":" list_strings +#line 2304 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3645 "dhcp6_parser.cc" +#line 3655 "dhcp6_parser.cc" break; - case 655: // $@100: %empty -#line 2301 "dhcp6_parser.yy" + case 657: // $@100: %empty +#line 2309 "dhcp6_parser.yy" { ctx.unique("duid", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3654 "dhcp6_parser.cc" +#line 3664 "dhcp6_parser.cc" break; - case 656: // duid: "duid" $@100 ":" "constant string" -#line 2304 "dhcp6_parser.yy" + case 658: // duid: "duid" $@100 ":" "constant string" +#line 2312 "dhcp6_parser.yy" { ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("duid", d); ctx.leave(); } -#line 3664 "dhcp6_parser.cc" +#line 3674 "dhcp6_parser.cc" break; - case 657: // $@101: %empty -#line 2310 "dhcp6_parser.yy" + case 659: // $@101: %empty +#line 2318 "dhcp6_parser.yy" { ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3673 "dhcp6_parser.cc" +#line 3683 "dhcp6_parser.cc" break; - case 658: // hw_address: "hw-address" $@101 ":" "constant string" -#line 2313 "dhcp6_parser.yy" + case 660: // hw_address: "hw-address" $@101 ":" "constant string" +#line 2321 "dhcp6_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hw-address", hw); ctx.leave(); } -#line 3683 "dhcp6_parser.cc" +#line 3693 "dhcp6_parser.cc" break; - case 659: // $@102: %empty -#line 2319 "dhcp6_parser.yy" + case 661: // $@102: %empty +#line 2327 "dhcp6_parser.yy" { ctx.unique("hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3692 "dhcp6_parser.cc" +#line 3702 "dhcp6_parser.cc" break; - case 660: // hostname: "hostname" $@102 ":" "constant string" -#line 2322 "dhcp6_parser.yy" + case 662: // hostname: "hostname" $@102 ":" "constant string" +#line 2330 "dhcp6_parser.yy" { ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname", host); ctx.leave(); } -#line 3702 "dhcp6_parser.cc" +#line 3712 "dhcp6_parser.cc" break; - case 661: // $@103: %empty -#line 2328 "dhcp6_parser.yy" + case 663: // $@103: %empty +#line 2336 "dhcp6_parser.yy" { ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3711 "dhcp6_parser.cc" +#line 3721 "dhcp6_parser.cc" break; - case 662: // flex_id_value: "flex-id" $@103 ":" "constant string" -#line 2331 "dhcp6_parser.yy" + case 664: // flex_id_value: "flex-id" $@103 ":" "constant string" +#line 2339 "dhcp6_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flex-id", hw); ctx.leave(); } -#line 3721 "dhcp6_parser.cc" +#line 3731 "dhcp6_parser.cc" break; - case 663: // $@104: %empty -#line 2337 "dhcp6_parser.yy" + case 665: // $@104: %empty +#line 2345 "dhcp6_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3729,20 +3739,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 3733 "dhcp6_parser.cc" +#line 3743 "dhcp6_parser.cc" break; - case 664: // reservation_client_classes: "client-classes" $@104 ":" list_strings -#line 2343 "dhcp6_parser.yy" + case 666: // reservation_client_classes: "client-classes" $@104 ":" list_strings +#line 2351 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3742 "dhcp6_parser.cc" +#line 3752 "dhcp6_parser.cc" break; - case 665: // $@105: %empty -#line 2351 "dhcp6_parser.yy" + case 667: // $@105: %empty +#line 2359 "dhcp6_parser.yy" { ctx.unique("relay", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3750,39 +3760,39 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.RELAY); } -#line 3754 "dhcp6_parser.cc" +#line 3764 "dhcp6_parser.cc" break; - case 666: // relay: "relay" $@105 ":" "{" relay_map "}" -#line 2357 "dhcp6_parser.yy" + case 668: // relay: "relay" $@105 ":" "{" relay_map "}" +#line 2365 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3763 "dhcp6_parser.cc" +#line 3773 "dhcp6_parser.cc" break; - case 669: // $@106: %empty -#line 2366 "dhcp6_parser.yy" + case 671: // $@106: %empty +#line 2374 "dhcp6_parser.yy" { ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3772 "dhcp6_parser.cc" +#line 3782 "dhcp6_parser.cc" break; - case 670: // ip_address: "ip-address" $@106 ":" "constant string" -#line 2369 "dhcp6_parser.yy" + case 672: // ip_address: "ip-address" $@106 ":" "constant string" +#line 2377 "dhcp6_parser.yy" { ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", addr); ctx.leave(); } -#line 3782 "dhcp6_parser.cc" +#line 3792 "dhcp6_parser.cc" break; - case 671: // $@107: %empty -#line 2378 "dhcp6_parser.yy" + case 673: // $@107: %empty +#line 2386 "dhcp6_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3790,85 +3800,85 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CLIENT_CLASSES); } -#line 3794 "dhcp6_parser.cc" +#line 3804 "dhcp6_parser.cc" break; - case 672: // client_classes: "client-classes" $@107 ":" "[" client_classes_list "]" -#line 2384 "dhcp6_parser.yy" + case 674: // client_classes: "client-classes" $@107 ":" "[" client_classes_list "]" +#line 2392 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3803 "dhcp6_parser.cc" +#line 3813 "dhcp6_parser.cc" break; - case 675: // client_classes_list: client_classes_list "," -#line 2391 "dhcp6_parser.yy" + case 677: // client_classes_list: client_classes_list "," +#line 2399 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3811 "dhcp6_parser.cc" +#line 3821 "dhcp6_parser.cc" break; - case 676: // $@108: %empty -#line 2396 "dhcp6_parser.yy" + case 678: // $@108: %empty +#line 2404 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3821 "dhcp6_parser.cc" +#line 3831 "dhcp6_parser.cc" break; - case 677: // client_class_entry: "{" $@108 client_class_params "}" -#line 2400 "dhcp6_parser.yy" + case 679: // client_class_entry: "{" $@108 client_class_params "}" +#line 2408 "dhcp6_parser.yy" { // The name client class parameter is required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3831 "dhcp6_parser.cc" +#line 3841 "dhcp6_parser.cc" break; - case 682: // not_empty_client_class_params: not_empty_client_class_params "," -#line 2412 "dhcp6_parser.yy" + case 684: // not_empty_client_class_params: not_empty_client_class_params "," +#line 2420 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3839 "dhcp6_parser.cc" +#line 3849 "dhcp6_parser.cc" break; - case 697: // $@109: %empty -#line 2434 "dhcp6_parser.yy" + case 699: // $@109: %empty +#line 2442 "dhcp6_parser.yy" { ctx.unique("test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3848 "dhcp6_parser.cc" +#line 3858 "dhcp6_parser.cc" break; - case 698: // client_class_test: "test" $@109 ":" "constant string" -#line 2437 "dhcp6_parser.yy" + case 700: // client_class_test: "test" $@109 ":" "constant string" +#line 2445 "dhcp6_parser.yy" { ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("test", test); ctx.leave(); } -#line 3858 "dhcp6_parser.cc" +#line 3868 "dhcp6_parser.cc" break; - case 699: // only_if_required: "only-if-required" ":" "boolean" -#line 2443 "dhcp6_parser.yy" + case 701: // only_if_required: "only-if-required" ":" "boolean" +#line 2451 "dhcp6_parser.yy" { ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-if-required", b); } -#line 3868 "dhcp6_parser.cc" +#line 3878 "dhcp6_parser.cc" break; - case 700: // $@110: %empty -#line 2452 "dhcp6_parser.yy" + case 702: // $@110: %empty +#line 2460 "dhcp6_parser.yy" { ctx.unique("server-id", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3876,125 +3886,125 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.SERVER_ID); } -#line 3880 "dhcp6_parser.cc" +#line 3890 "dhcp6_parser.cc" break; - case 701: // server_id: "server-id" $@110 ":" "{" server_id_params "}" -#line 2458 "dhcp6_parser.yy" + case 703: // server_id: "server-id" $@110 ":" "{" server_id_params "}" +#line 2466 "dhcp6_parser.yy" { // The type parameter is required. ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 3891 "dhcp6_parser.cc" +#line 3901 "dhcp6_parser.cc" break; - case 704: // server_id_params: server_id_params "," -#line 2467 "dhcp6_parser.yy" + case 706: // server_id_params: server_id_params "," +#line 2475 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3899 "dhcp6_parser.cc" +#line 3909 "dhcp6_parser.cc" break; - case 714: // $@111: %empty -#line 2483 "dhcp6_parser.yy" + case 716: // $@111: %empty +#line 2491 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DUID_TYPE); } -#line 3908 "dhcp6_parser.cc" +#line 3918 "dhcp6_parser.cc" break; - case 715: // server_id_type: "type" $@111 ":" duid_type -#line 2486 "dhcp6_parser.yy" + case 717: // server_id_type: "type" $@111 ":" duid_type +#line 2494 "dhcp6_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 3917 "dhcp6_parser.cc" +#line 3927 "dhcp6_parser.cc" break; - case 716: // duid_type: "LLT" -#line 2491 "dhcp6_parser.yy" + case 718: // duid_type: "LLT" +#line 2499 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); } -#line 3923 "dhcp6_parser.cc" +#line 3933 "dhcp6_parser.cc" break; - case 717: // duid_type: "EN" -#line 2492 "dhcp6_parser.yy" + case 719: // duid_type: "EN" +#line 2500 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); } -#line 3929 "dhcp6_parser.cc" +#line 3939 "dhcp6_parser.cc" break; - case 718: // duid_type: "LL" -#line 2493 "dhcp6_parser.yy" + case 720: // duid_type: "LL" +#line 2501 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); } -#line 3935 "dhcp6_parser.cc" +#line 3945 "dhcp6_parser.cc" break; - case 719: // htype: "htype" ":" "integer" -#line 2496 "dhcp6_parser.yy" + case 721: // htype: "htype" ":" "integer" +#line 2504 "dhcp6_parser.yy" { ctx.unique("htype", ctx.loc2pos(yystack_[2].location)); ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("htype", htype); } -#line 3945 "dhcp6_parser.cc" +#line 3955 "dhcp6_parser.cc" break; - case 720: // $@112: %empty -#line 2502 "dhcp6_parser.yy" + case 722: // $@112: %empty +#line 2510 "dhcp6_parser.yy" { ctx.unique("identifier", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3954 "dhcp6_parser.cc" +#line 3964 "dhcp6_parser.cc" break; - case 721: // identifier: "identifier" $@112 ":" "constant string" -#line 2505 "dhcp6_parser.yy" + case 723: // identifier: "identifier" $@112 ":" "constant string" +#line 2513 "dhcp6_parser.yy" { ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("identifier", id); ctx.leave(); } -#line 3964 "dhcp6_parser.cc" +#line 3974 "dhcp6_parser.cc" break; - case 722: // time: "time" ":" "integer" -#line 2511 "dhcp6_parser.yy" + case 724: // time: "time" ":" "integer" +#line 2519 "dhcp6_parser.yy" { ctx.unique("time", ctx.loc2pos(yystack_[2].location)); ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("time", time); } -#line 3974 "dhcp6_parser.cc" +#line 3984 "dhcp6_parser.cc" break; - case 723: // enterprise_id: "enterprise-id" ":" "integer" -#line 2517 "dhcp6_parser.yy" + case 725: // enterprise_id: "enterprise-id" ":" "integer" +#line 2525 "dhcp6_parser.yy" { ctx.unique("enterprise-id", ctx.loc2pos(yystack_[2].location)); ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enterprise-id", time); } -#line 3984 "dhcp6_parser.cc" +#line 3994 "dhcp6_parser.cc" break; - case 724: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" -#line 2525 "dhcp6_parser.yy" + case 726: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" +#line 2533 "dhcp6_parser.yy" { ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location)); ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4o6-port", time); } -#line 3994 "dhcp6_parser.cc" +#line 4004 "dhcp6_parser.cc" break; - case 725: // $@113: %empty -#line 2533 "dhcp6_parser.yy" + case 727: // $@113: %empty +#line 2541 "dhcp6_parser.yy" { ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4002,66 +4012,66 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 4006 "dhcp6_parser.cc" +#line 4016 "dhcp6_parser.cc" break; - case 726: // control_socket: "control-socket" $@113 ":" "{" control_socket_params "}" -#line 2539 "dhcp6_parser.yy" + case 728: // control_socket: "control-socket" $@113 ":" "{" control_socket_params "}" +#line 2547 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4015 "dhcp6_parser.cc" +#line 4025 "dhcp6_parser.cc" break; - case 729: // control_socket_params: control_socket_params "," -#line 2546 "dhcp6_parser.yy" + case 731: // control_socket_params: control_socket_params "," +#line 2554 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4023 "dhcp6_parser.cc" +#line 4033 "dhcp6_parser.cc" break; - case 735: // $@114: %empty -#line 2558 "dhcp6_parser.yy" + case 737: // $@114: %empty +#line 2566 "dhcp6_parser.yy" { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4032 "dhcp6_parser.cc" +#line 4042 "dhcp6_parser.cc" break; - case 736: // socket_type: "socket-type" $@114 ":" "constant string" -#line 2561 "dhcp6_parser.yy" + case 738: // socket_type: "socket-type" $@114 ":" "constant string" +#line 2569 "dhcp6_parser.yy" { ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-type", stype); ctx.leave(); } -#line 4042 "dhcp6_parser.cc" +#line 4052 "dhcp6_parser.cc" break; - case 737: // $@115: %empty -#line 2567 "dhcp6_parser.yy" + case 739: // $@115: %empty +#line 2575 "dhcp6_parser.yy" { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4051 "dhcp6_parser.cc" +#line 4061 "dhcp6_parser.cc" break; - case 738: // socket_name: "socket-name" $@115 ":" "constant string" -#line 2570 "dhcp6_parser.yy" + case 740: // socket_name: "socket-name" $@115 ":" "constant string" +#line 2578 "dhcp6_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-name", name); ctx.leave(); } -#line 4061 "dhcp6_parser.cc" +#line 4071 "dhcp6_parser.cc" break; - case 739: // $@116: %empty -#line 2579 "dhcp6_parser.yy" + case 741: // $@116: %empty +#line 2587 "dhcp6_parser.yy" { ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location)); ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4069,87 +4079,87 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(qc); ctx.enter(ctx.DHCP_QUEUE_CONTROL); } -#line 4073 "dhcp6_parser.cc" +#line 4083 "dhcp6_parser.cc" break; - case 740: // dhcp_queue_control: "dhcp-queue-control" $@116 ":" "{" queue_control_params "}" -#line 2585 "dhcp6_parser.yy" + case 742: // dhcp_queue_control: "dhcp-queue-control" $@116 ":" "{" queue_control_params "}" +#line 2593 "dhcp6_parser.yy" { // The enable queue parameter is required. ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 4084 "dhcp6_parser.cc" +#line 4094 "dhcp6_parser.cc" break; - case 743: // queue_control_params: queue_control_params "," -#line 2594 "dhcp6_parser.yy" + case 745: // queue_control_params: queue_control_params "," +#line 2602 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4092 "dhcp6_parser.cc" +#line 4102 "dhcp6_parser.cc" break; - case 750: // enable_queue: "enable-queue" ":" "boolean" -#line 2607 "dhcp6_parser.yy" + case 752: // enable_queue: "enable-queue" ":" "boolean" +#line 2615 "dhcp6_parser.yy" { ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-queue", b); } -#line 4102 "dhcp6_parser.cc" +#line 4112 "dhcp6_parser.cc" break; - case 751: // $@117: %empty -#line 2613 "dhcp6_parser.yy" + case 753: // $@117: %empty +#line 2621 "dhcp6_parser.yy" { ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4111 "dhcp6_parser.cc" +#line 4121 "dhcp6_parser.cc" break; - case 752: // queue_type: "queue-type" $@117 ":" "constant string" -#line 2616 "dhcp6_parser.yy" + case 754: // queue_type: "queue-type" $@117 ":" "constant string" +#line 2624 "dhcp6_parser.yy" { ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("queue-type", qt); ctx.leave(); } -#line 4121 "dhcp6_parser.cc" +#line 4131 "dhcp6_parser.cc" break; - case 753: // capacity: "capacity" ":" "integer" -#line 2622 "dhcp6_parser.yy" + case 755: // capacity: "capacity" ":" "integer" +#line 2630 "dhcp6_parser.yy" { ctx.unique("capacity", ctx.loc2pos(yystack_[2].location)); ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("capacity", c); } -#line 4131 "dhcp6_parser.cc" +#line 4141 "dhcp6_parser.cc" break; - case 754: // $@118: %empty -#line 2628 "dhcp6_parser.yy" + case 756: // $@118: %empty +#line 2636 "dhcp6_parser.yy" { ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4140 "dhcp6_parser.cc" +#line 4150 "dhcp6_parser.cc" break; - case 755: // arbitrary_map_entry: "constant string" $@118 ":" value -#line 2631 "dhcp6_parser.yy" + case 757: // arbitrary_map_entry: "constant string" $@118 ":" value +#line 2639 "dhcp6_parser.yy" { ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4149 "dhcp6_parser.cc" +#line 4159 "dhcp6_parser.cc" break; - case 756: // $@119: %empty -#line 2638 "dhcp6_parser.yy" + case 758: // $@119: %empty +#line 2646 "dhcp6_parser.yy" { ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4157,291 +4167,291 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP_DDNS); } -#line 4161 "dhcp6_parser.cc" +#line 4171 "dhcp6_parser.cc" break; - case 757: // dhcp_ddns: "dhcp-ddns" $@119 ":" "{" dhcp_ddns_params "}" -#line 2644 "dhcp6_parser.yy" + case 759: // dhcp_ddns: "dhcp-ddns" $@119 ":" "{" dhcp_ddns_params "}" +#line 2652 "dhcp6_parser.yy" { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 4172 "dhcp6_parser.cc" +#line 4182 "dhcp6_parser.cc" break; - case 758: // $@120: %empty -#line 2651 "dhcp6_parser.yy" + case 760: // $@120: %empty +#line 2659 "dhcp6_parser.yy" { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4182 "dhcp6_parser.cc" +#line 4192 "dhcp6_parser.cc" break; - case 759: // sub_dhcp_ddns: "{" $@120 dhcp_ddns_params "}" -#line 2655 "dhcp6_parser.yy" + case 761: // sub_dhcp_ddns: "{" $@120 dhcp_ddns_params "}" +#line 2663 "dhcp6_parser.yy" { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 4192 "dhcp6_parser.cc" +#line 4202 "dhcp6_parser.cc" break; - case 762: // dhcp_ddns_params: dhcp_ddns_params "," -#line 2663 "dhcp6_parser.yy" + case 764: // dhcp_ddns_params: dhcp_ddns_params "," +#line 2671 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4200 "dhcp6_parser.cc" +#line 4210 "dhcp6_parser.cc" break; - case 781: // enable_updates: "enable-updates" ":" "boolean" -#line 2688 "dhcp6_parser.yy" + case 783: // enable_updates: "enable-updates" ":" "boolean" +#line 2696 "dhcp6_parser.yy" { ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); } -#line 4210 "dhcp6_parser.cc" +#line 4220 "dhcp6_parser.cc" break; - case 782: // $@121: %empty -#line 2695 "dhcp6_parser.yy" + case 784: // $@121: %empty +#line 2703 "dhcp6_parser.yy" { ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4219 "dhcp6_parser.cc" +#line 4229 "dhcp6_parser.cc" break; - case 783: // dep_qualifying_suffix: "qualifying-suffix" $@121 ":" "constant string" -#line 2698 "dhcp6_parser.yy" + case 785: // dep_qualifying_suffix: "qualifying-suffix" $@121 ":" "constant string" +#line 2706 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("qualifying-suffix", s); ctx.leave(); } -#line 4229 "dhcp6_parser.cc" +#line 4239 "dhcp6_parser.cc" break; - case 784: // $@122: %empty -#line 2704 "dhcp6_parser.yy" + case 786: // $@122: %empty +#line 2712 "dhcp6_parser.yy" { ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4238 "dhcp6_parser.cc" +#line 4248 "dhcp6_parser.cc" break; - case 785: // server_ip: "server-ip" $@122 ":" "constant string" -#line 2707 "dhcp6_parser.yy" + case 787: // server_ip: "server-ip" $@122 ":" "constant string" +#line 2715 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-ip", s); ctx.leave(); } -#line 4248 "dhcp6_parser.cc" +#line 4258 "dhcp6_parser.cc" break; - case 786: // server_port: "server-port" ":" "integer" -#line 2713 "dhcp6_parser.yy" + case 788: // server_port: "server-port" ":" "integer" +#line 2721 "dhcp6_parser.yy" { ctx.unique("server-port", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); } -#line 4258 "dhcp6_parser.cc" +#line 4268 "dhcp6_parser.cc" break; - case 787: // $@123: %empty -#line 2719 "dhcp6_parser.yy" + case 789: // $@123: %empty +#line 2727 "dhcp6_parser.yy" { ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4267 "dhcp6_parser.cc" +#line 4277 "dhcp6_parser.cc" break; - case 788: // sender_ip: "sender-ip" $@123 ":" "constant string" -#line 2722 "dhcp6_parser.yy" + case 790: // sender_ip: "sender-ip" $@123 ":" "constant string" +#line 2730 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-ip", s); ctx.leave(); } -#line 4277 "dhcp6_parser.cc" +#line 4287 "dhcp6_parser.cc" break; - case 789: // sender_port: "sender-port" ":" "integer" -#line 2728 "dhcp6_parser.yy" + case 791: // sender_port: "sender-port" ":" "integer" +#line 2736 "dhcp6_parser.yy" { ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); } -#line 4287 "dhcp6_parser.cc" +#line 4297 "dhcp6_parser.cc" break; - case 790: // max_queue_size: "max-queue-size" ":" "integer" -#line 2734 "dhcp6_parser.yy" + case 792: // max_queue_size: "max-queue-size" ":" "integer" +#line 2742 "dhcp6_parser.yy" { ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-queue-size", i); } -#line 4297 "dhcp6_parser.cc" +#line 4307 "dhcp6_parser.cc" break; - case 791: // $@124: %empty -#line 2740 "dhcp6_parser.yy" + case 793: // $@124: %empty +#line 2748 "dhcp6_parser.yy" { ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_PROTOCOL); } -#line 4306 "dhcp6_parser.cc" +#line 4316 "dhcp6_parser.cc" break; - case 792: // ncr_protocol: "ncr-protocol" $@124 ":" ncr_protocol_value -#line 2743 "dhcp6_parser.yy" + case 794: // ncr_protocol: "ncr-protocol" $@124 ":" ncr_protocol_value +#line 2751 "dhcp6_parser.yy" { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4315 "dhcp6_parser.cc" +#line 4325 "dhcp6_parser.cc" break; - case 793: // ncr_protocol_value: "UDP" -#line 2749 "dhcp6_parser.yy" + case 795: // ncr_protocol_value: "UDP" +#line 2757 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 4321 "dhcp6_parser.cc" +#line 4331 "dhcp6_parser.cc" break; - case 794: // ncr_protocol_value: "TCP" -#line 2750 "dhcp6_parser.yy" + case 796: // ncr_protocol_value: "TCP" +#line 2758 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 4327 "dhcp6_parser.cc" +#line 4337 "dhcp6_parser.cc" break; - case 795: // $@125: %empty -#line 2753 "dhcp6_parser.yy" + case 797: // $@125: %empty +#line 2761 "dhcp6_parser.yy" { ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_FORMAT); } -#line 4336 "dhcp6_parser.cc" +#line 4346 "dhcp6_parser.cc" break; - case 796: // ncr_format: "ncr-format" $@125 ":" "JSON" -#line 2756 "dhcp6_parser.yy" + case 798: // ncr_format: "ncr-format" $@125 ":" "JSON" +#line 2764 "dhcp6_parser.yy" { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 4346 "dhcp6_parser.cc" +#line 4356 "dhcp6_parser.cc" break; - case 797: // dep_override_no_update: "override-no-update" ":" "boolean" -#line 2763 "dhcp6_parser.yy" + case 799: // dep_override_no_update: "override-no-update" ":" "boolean" +#line 2771 "dhcp6_parser.yy" { ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 4356 "dhcp6_parser.cc" +#line 4366 "dhcp6_parser.cc" break; - case 798: // dep_override_client_update: "override-client-update" ":" "boolean" -#line 2770 "dhcp6_parser.yy" + case 800: // dep_override_client_update: "override-client-update" ":" "boolean" +#line 2778 "dhcp6_parser.yy" { ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 4366 "dhcp6_parser.cc" +#line 4376 "dhcp6_parser.cc" break; - case 799: // $@126: %empty -#line 2777 "dhcp6_parser.yy" + case 801: // $@126: %empty +#line 2785 "dhcp6_parser.yy" { ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 4375 "dhcp6_parser.cc" +#line 4385 "dhcp6_parser.cc" break; - case 800: // dep_replace_client_name: "replace-client-name" $@126 ":" ddns_replace_client_name_value -#line 2780 "dhcp6_parser.yy" + case 802: // dep_replace_client_name: "replace-client-name" $@126 ":" ddns_replace_client_name_value +#line 2788 "dhcp6_parser.yy" { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4384 "dhcp6_parser.cc" +#line 4394 "dhcp6_parser.cc" break; - case 801: // $@127: %empty -#line 2786 "dhcp6_parser.yy" + case 803: // $@127: %empty +#line 2794 "dhcp6_parser.yy" { ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4393 "dhcp6_parser.cc" +#line 4403 "dhcp6_parser.cc" break; - case 802: // dep_generated_prefix: "generated-prefix" $@127 ":" "constant string" -#line 2789 "dhcp6_parser.yy" + case 804: // dep_generated_prefix: "generated-prefix" $@127 ":" "constant string" +#line 2797 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("generated-prefix", s); ctx.leave(); } -#line 4403 "dhcp6_parser.cc" +#line 4413 "dhcp6_parser.cc" break; - case 803: // $@128: %empty -#line 2796 "dhcp6_parser.yy" + case 805: // $@128: %empty +#line 2804 "dhcp6_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4412 "dhcp6_parser.cc" +#line 4422 "dhcp6_parser.cc" break; - case 804: // dep_hostname_char_set: "hostname-char-set" $@128 ":" "constant string" -#line 2799 "dhcp6_parser.yy" + case 806: // dep_hostname_char_set: "hostname-char-set" $@128 ":" "constant string" +#line 2807 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 4422 "dhcp6_parser.cc" +#line 4432 "dhcp6_parser.cc" break; - case 805: // $@129: %empty -#line 2806 "dhcp6_parser.yy" + case 807: // $@129: %empty +#line 2814 "dhcp6_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4431 "dhcp6_parser.cc" +#line 4441 "dhcp6_parser.cc" break; - case 806: // dep_hostname_char_replacement: "hostname-char-replacement" $@129 ":" "constant string" -#line 2809 "dhcp6_parser.yy" + case 808: // dep_hostname_char_replacement: "hostname-char-replacement" $@129 ":" "constant string" +#line 2817 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 4441 "dhcp6_parser.cc" +#line 4451 "dhcp6_parser.cc" break; - case 807: // $@130: %empty -#line 2818 "dhcp6_parser.yy" + case 809: // $@130: %empty +#line 2826 "dhcp6_parser.yy" { ctx.unique("config-control", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4449,48 +4459,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.CONFIG_CONTROL); } -#line 4453 "dhcp6_parser.cc" +#line 4463 "dhcp6_parser.cc" break; - case 808: // config_control: "config-control" $@130 ":" "{" config_control_params "}" -#line 2824 "dhcp6_parser.yy" + case 810: // config_control: "config-control" $@130 ":" "{" config_control_params "}" +#line 2832 "dhcp6_parser.yy" { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 4463 "dhcp6_parser.cc" +#line 4473 "dhcp6_parser.cc" break; - case 809: // $@131: %empty -#line 2830 "dhcp6_parser.yy" + case 811: // $@131: %empty +#line 2838 "dhcp6_parser.yy" { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4473 "dhcp6_parser.cc" +#line 4483 "dhcp6_parser.cc" break; - case 810: // sub_config_control: "{" $@131 config_control_params "}" -#line 2834 "dhcp6_parser.yy" + case 812: // sub_config_control: "{" $@131 config_control_params "}" +#line 2842 "dhcp6_parser.yy" { // No config_control params are required // parsing completed } -#line 4482 "dhcp6_parser.cc" +#line 4492 "dhcp6_parser.cc" break; - case 813: // config_control_params: config_control_params "," -#line 2842 "dhcp6_parser.yy" + case 815: // config_control_params: config_control_params "," +#line 2850 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4490 "dhcp6_parser.cc" +#line 4500 "dhcp6_parser.cc" break; - case 816: // $@132: %empty -#line 2852 "dhcp6_parser.yy" + case 818: // $@132: %empty +#line 2860 "dhcp6_parser.yy" { ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4498,30 +4508,30 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CONFIG_DATABASE); } -#line 4502 "dhcp6_parser.cc" +#line 4512 "dhcp6_parser.cc" break; - case 817: // config_databases: "config-databases" $@132 ":" "[" database_list "]" -#line 2858 "dhcp6_parser.yy" + case 819: // config_databases: "config-databases" $@132 ":" "[" database_list "]" +#line 2866 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4511 "dhcp6_parser.cc" +#line 4521 "dhcp6_parser.cc" break; - case 818: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" -#line 2863 "dhcp6_parser.yy" + case 820: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" +#line 2871 "dhcp6_parser.yy" { ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-fetch-wait-time", value); } -#line 4521 "dhcp6_parser.cc" +#line 4531 "dhcp6_parser.cc" break; - case 819: // $@133: %empty -#line 2871 "dhcp6_parser.yy" + case 821: // $@133: %empty +#line 2879 "dhcp6_parser.yy" { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4529,83 +4539,83 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 4533 "dhcp6_parser.cc" +#line 4543 "dhcp6_parser.cc" break; - case 820: // loggers: "loggers" $@133 ":" "[" loggers_entries "]" -#line 2877 "dhcp6_parser.yy" + case 822: // loggers: "loggers" $@133 ":" "[" loggers_entries "]" +#line 2885 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4542 "dhcp6_parser.cc" +#line 4552 "dhcp6_parser.cc" break; - case 823: // loggers_entries: loggers_entries "," -#line 2886 "dhcp6_parser.yy" + case 825: // loggers_entries: loggers_entries "," +#line 2894 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4550 "dhcp6_parser.cc" +#line 4560 "dhcp6_parser.cc" break; - case 824: // $@134: %empty -#line 2892 "dhcp6_parser.yy" + case 826: // $@134: %empty +#line 2900 "dhcp6_parser.yy" { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 4560 "dhcp6_parser.cc" +#line 4570 "dhcp6_parser.cc" break; - case 825: // logger_entry: "{" $@134 logger_params "}" -#line 2896 "dhcp6_parser.yy" + case 827: // logger_entry: "{" $@134 logger_params "}" +#line 2904 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 4568 "dhcp6_parser.cc" +#line 4578 "dhcp6_parser.cc" break; - case 828: // logger_params: logger_params "," -#line 2902 "dhcp6_parser.yy" + case 830: // logger_params: logger_params "," +#line 2910 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4576 "dhcp6_parser.cc" +#line 4586 "dhcp6_parser.cc" break; - case 836: // debuglevel: "debuglevel" ":" "integer" -#line 2916 "dhcp6_parser.yy" + case 838: // debuglevel: "debuglevel" ":" "integer" +#line 2924 "dhcp6_parser.yy" { ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location)); ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 4586 "dhcp6_parser.cc" +#line 4596 "dhcp6_parser.cc" break; - case 837: // $@135: %empty -#line 2922 "dhcp6_parser.yy" + case 839: // $@135: %empty +#line 2930 "dhcp6_parser.yy" { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4595 "dhcp6_parser.cc" +#line 4605 "dhcp6_parser.cc" break; - case 838: // severity: "severity" $@135 ":" "constant string" -#line 2925 "dhcp6_parser.yy" + case 840: // severity: "severity" $@135 ":" "constant string" +#line 2933 "dhcp6_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 4605 "dhcp6_parser.cc" +#line 4615 "dhcp6_parser.cc" break; - case 839: // $@136: %empty -#line 2931 "dhcp6_parser.yy" + case 841: // $@136: %empty +#line 2939 "dhcp6_parser.yy" { ctx.unique("output_options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4613,122 +4623,122 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 4617 "dhcp6_parser.cc" +#line 4627 "dhcp6_parser.cc" break; - case 840: // output_options_list: "output_options" $@136 ":" "[" output_options_list_content "]" -#line 2937 "dhcp6_parser.yy" + case 842: // output_options_list: "output_options" $@136 ":" "[" output_options_list_content "]" +#line 2945 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4626 "dhcp6_parser.cc" +#line 4636 "dhcp6_parser.cc" break; - case 843: // output_options_list_content: output_options_list_content "," -#line 2944 "dhcp6_parser.yy" + case 845: // output_options_list_content: output_options_list_content "," +#line 2952 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4634 "dhcp6_parser.cc" +#line 4644 "dhcp6_parser.cc" break; - case 844: // $@137: %empty -#line 2949 "dhcp6_parser.yy" + case 846: // $@137: %empty +#line 2957 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4644 "dhcp6_parser.cc" +#line 4654 "dhcp6_parser.cc" break; - case 845: // output_entry: "{" $@137 output_params_list "}" -#line 2953 "dhcp6_parser.yy" + case 847: // output_entry: "{" $@137 output_params_list "}" +#line 2961 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 4652 "dhcp6_parser.cc" +#line 4662 "dhcp6_parser.cc" break; - case 848: // output_params_list: output_params_list "," -#line 2959 "dhcp6_parser.yy" + case 850: // output_params_list: output_params_list "," +#line 2967 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4660 "dhcp6_parser.cc" +#line 4670 "dhcp6_parser.cc" break; - case 854: // $@138: %empty -#line 2971 "dhcp6_parser.yy" + case 856: // $@138: %empty +#line 2979 "dhcp6_parser.yy" { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4669 "dhcp6_parser.cc" +#line 4679 "dhcp6_parser.cc" break; - case 855: // output: "output" $@138 ":" "constant string" -#line 2974 "dhcp6_parser.yy" + case 857: // output: "output" $@138 ":" "constant string" +#line 2982 "dhcp6_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 4679 "dhcp6_parser.cc" +#line 4689 "dhcp6_parser.cc" break; - case 856: // flush: "flush" ":" "boolean" -#line 2980 "dhcp6_parser.yy" + case 858: // flush: "flush" ":" "boolean" +#line 2988 "dhcp6_parser.yy" { ctx.unique("flush", ctx.loc2pos(yystack_[2].location)); ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 4689 "dhcp6_parser.cc" +#line 4699 "dhcp6_parser.cc" break; - case 857: // maxsize: "maxsize" ":" "integer" -#line 2986 "dhcp6_parser.yy" + case 859: // maxsize: "maxsize" ":" "integer" +#line 2994 "dhcp6_parser.yy" { ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location)); ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 4699 "dhcp6_parser.cc" +#line 4709 "dhcp6_parser.cc" break; - case 858: // maxver: "maxver" ":" "integer" -#line 2992 "dhcp6_parser.yy" + case 860: // maxver: "maxver" ":" "integer" +#line 3000 "dhcp6_parser.yy" { ctx.unique("maxver", ctx.loc2pos(yystack_[2].location)); ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 4709 "dhcp6_parser.cc" +#line 4719 "dhcp6_parser.cc" break; - case 859: // $@139: %empty -#line 2998 "dhcp6_parser.yy" + case 861: // $@139: %empty +#line 3006 "dhcp6_parser.yy" { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4718 "dhcp6_parser.cc" +#line 4728 "dhcp6_parser.cc" break; - case 860: // pattern: "pattern" $@139 ":" "constant string" -#line 3001 "dhcp6_parser.yy" + case 862: // pattern: "pattern" $@139 ":" "constant string" +#line 3009 "dhcp6_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pattern", sev); ctx.leave(); } -#line 4728 "dhcp6_parser.cc" +#line 4738 "dhcp6_parser.cc" break; - case 861: // $@140: %empty -#line 3007 "dhcp6_parser.yy" + case 863: // $@140: %empty +#line 3015 "dhcp6_parser.yy" { ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4736,38 +4746,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.COMPATIBILITY); } -#line 4740 "dhcp6_parser.cc" +#line 4750 "dhcp6_parser.cc" break; - case 862: // compatibility: "compatibility" $@140 ":" "{" compatibility_params "}" -#line 3013 "dhcp6_parser.yy" + case 864: // compatibility: "compatibility" $@140 ":" "{" compatibility_params "}" +#line 3021 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4749 "dhcp6_parser.cc" +#line 4759 "dhcp6_parser.cc" break; - case 865: // compatibility_params: compatibility_params "," -#line 3020 "dhcp6_parser.yy" + case 867: // compatibility_params: compatibility_params "," +#line 3028 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4757 "dhcp6_parser.cc" +#line 4767 "dhcp6_parser.cc" break; - case 868: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" -#line 3029 "dhcp6_parser.yy" + case 870: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" +#line 3037 "dhcp6_parser.yy" { ctx.unique("lenient-option-parsing", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lenient-option-parsing", b); } -#line 4767 "dhcp6_parser.cc" +#line 4777 "dhcp6_parser.cc" break; -#line 4771 "dhcp6_parser.cc" +#line 4781 "dhcp6_parser.cc" default: break; @@ -5119,147 +5129,148 @@ namespace isc { namespace dhcp { } - const short Dhcp6Parser::yypact_ninf_ = -997; + const short Dhcp6Parser::yypact_ninf_ = -1001; const signed char Dhcp6Parser::yytable_ninf_ = -1; const short Dhcp6Parser::yypact_[] = { - 419, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, 32, 30, 47, 90, 98, - 105, 123, 131, 137, 139, 175, 176, 177, 232, 243, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, 30, -172, - 84, 276, 36, 643, 40, 162, 278, 136, 15, 218, - -87, 431, 61, -997, 235, 251, 263, 258, 265, -997, - 65, -997, -997, -997, -997, -997, -997, -997, 280, 286, - 309, 310, 321, 358, 359, 380, 391, 398, 399, 414, - 418, 428, -997, 430, 433, 434, 437, 444, -997, -997, - -997, 448, 449, 450, -997, -997, -997, 452, -997, -997, - -997, -997, 453, 456, 462, -997, -997, -997, -997, -997, - -997, -997, -997, -997, 464, -997, -997, -997, -997, -997, - -997, 466, -997, -997, 467, -997, 68, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, 468, -997, 83, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, 472, 473, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, 87, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, 150, - -997, -997, -997, -997, -997, 483, -997, 484, 488, -997, - -997, -997, -997, -997, -997, 154, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, 274, 320, -997, -997, -997, -997, -997, - -997, -997, -997, 353, -997, -997, 489, -997, -997, -997, - 493, -997, -997, 427, 423, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, 495, 498, - -997, -997, -997, -997, 496, 500, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, 213, -997, - -997, -997, 501, -997, -997, 502, -997, 503, 505, -997, - -997, 507, 508, -997, -997, -997, -997, -997, -997, -997, - 219, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, 509, 244, - -997, -997, -997, -997, 30, 30, -997, 306, 511, -997, - -997, 512, 516, 517, 519, 521, 523, 322, 323, 324, - 325, 326, 327, 328, 331, 330, 334, 335, 337, 340, - 341, 531, 342, 343, 344, 345, 347, 554, 563, 564, - 354, 355, 361, 569, 570, 571, 364, 577, 579, 580, - 581, 371, 373, 374, 587, 588, 590, 605, 606, 607, - 608, 609, 610, 401, 629, 630, 632, 633, 634, 635, - 424, 637, 638, -997, 276, -997, 639, 429, 36, -997, - 642, 644, 645, 646, 648, 439, 438, 651, 652, 653, - 643, -997, 654, 40, -997, 655, 446, 657, 451, 457, - 162, -997, 658, 659, 660, 662, 663, 669, 670, -997, - 278, -997, 671, 673, 465, 674, 676, 677, 474, -997, - 15, 678, 475, 477, -997, 218, 679, 685, -48, -997, - 492, 705, 706, 497, 717, 510, 518, 718, 721, 520, - 522, 722, 729, 735, 736, 431, -997, 737, 528, 61, - -997, -997, -997, 747, 640, 539, 727, 746, 751, 752, - 749, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, 547, -997, -997, -997, -997, - -997, 22, 548, 549, -997, -997, -997, 758, 760, 761, - -997, 764, 763, 558, 336, -997, -997, -997, 767, 768, - 769, 770, 771, 773, 774, 788, 789, -997, 790, 791, - 802, 805, 567, 568, -997, 808, 807, -997, 810, -997, - -997, 811, 812, 611, 612, 613, -997, -997, 810, 614, - 813, -997, 619, -997, 622, -997, 625, -997, -997, -997, - 810, 810, 810, 626, 627, 628, 636, -997, 647, 650, - -997, 656, 661, 664, -997, -997, 665, -997, -997, -997, - 666, 763, -997, -997, 667, 668, -997, 672, -997, -997, - -19, 641, -997, -997, 22, 675, 680, 681, -997, 814, - -997, -997, 30, 276, -997, 61, 36, 144, 144, 815, - -997, -997, -997, -997, -997, -997, -997, -997, -997, 816, - 838, 839, 840, -997, -997, -997, -997, -997, -997, -997, - -997, -90, 30, 95, 699, 841, 843, 845, 91, 51, - 0, -50, -44, 431, -997, -997, 846, -158, -997, -997, - 848, 850, -997, -997, -997, -997, -997, -68, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, 815, -997, 262, - 271, 273, -997, -997, -997, -997, 854, 855, 857, 860, - 861, -997, 862, 863, -997, -997, -997, -997, 864, 866, - 867, 868, -997, -997, -997, -997, -997, 277, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, 289, -997, 869, 870, -997, -997, - 876, 873, -997, -997, 877, 881, -997, -997, 880, 884, - -997, -997, 883, 887, -997, -997, -997, 118, -997, -997, - -997, 885, -997, -997, -997, 128, -997, -997, -997, -997, - 290, -997, -997, -997, 234, -997, -997, 886, 892, -997, - -997, 890, 894, -997, 895, 896, 897, 898, 899, 900, - 302, -997, -997, -997, -997, -997, -997, -997, -997, -997, - 901, 902, 903, -997, -997, -997, -997, 303, -997, -997, - -997, -997, -997, -997, 904, 905, 906, -997, 304, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - 312, -997, -997, -997, 907, -997, 908, -997, -997, -997, - 319, -997, -997, -997, -997, -997, 356, -997, 245, -997, - 909, -997, 357, -997, -997, 701, -997, 911, 915, -997, - -997, 913, 917, -997, -997, -997, 914, -997, 918, -997, - -997, -997, 919, 921, 922, 923, 684, 712, 707, 713, - 716, 927, 719, 720, 928, 931, 932, 933, 724, 725, - 726, 731, 936, 942, 944, 945, 144, -997, -997, 144, - -997, 815, 643, -997, 816, 15, -997, 838, 218, -997, - 839, 730, -997, 840, -90, -997, -997, 95, -997, 951, - 699, -997, 155, 841, -997, 278, -997, 843, -87, -997, - 845, 742, 744, 745, 754, 757, 765, 91, -997, 961, - 968, 782, 783, 797, 51, -997, 759, 798, 801, 0, - -997, 970, 998, -50, -997, 803, 1017, 820, 1018, -44, - -997, -997, 208, 846, -997, 819, -158, -997, -997, 1024, - 1035, 40, -997, 848, 162, -997, 850, 1039, -997, -997, - 348, 879, 882, 888, -997, -997, -997, -997, -997, 889, - -997, -997, 158, 891, 893, 910, -997, -997, -997, -997, - 912, 916, 920, 924, -997, 366, -997, 377, -997, 1048, - -997, 1055, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, 378, - -997, -997, -997, -997, -997, -997, -997, -997, 925, -997, - -997, 1075, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, 1078, 1086, -997, -997, -997, -997, -997, - 1089, -997, 379, -997, -997, -997, -997, -997, -997, -997, - -997, 21, 926, -997, -997, -997, -997, -997, -997, -997, - -997, 929, 930, -997, -997, 934, -997, 30, -997, -997, - 1094, -997, -997, -997, -997, -997, 408, -997, -997, -997, - -997, -997, -997, -997, -997, 935, 409, -997, 416, -997, - 937, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, 730, -997, -997, 1095, 939, - -997, 155, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, 1096, 938, 1099, 208, -997, -997, -997, - -997, -997, -997, 940, -997, -997, 1100, -997, 947, -997, - -997, 1101, -997, -997, 318, -997, 24, 1101, -997, -997, - 1103, 1105, 1106, -997, 422, -997, -997, -997, -997, -997, - -997, -997, 1107, 946, 949, 950, 1108, 24, -997, 948, - -997, -997, -997, 952, -997, -997, -997 + 456, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, 65, 30, 31, 61, 80, + 94, 98, 116, 117, 123, 131, 133, 137, 148, 165, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, 30, -101, + 213, 142, 36, 647, 184, 288, 51, 145, 15, 83, + -95, 438, 35, -1001, 234, 238, 244, 266, 275, -1001, + 78, -1001, -1001, -1001, -1001, -1001, -1001, -1001, 276, 287, + 292, 296, 303, 328, 332, 350, 351, 376, 389, 427, + 437, 446, -1001, 447, 451, 452, 453, 455, -1001, -1001, + -1001, 459, 460, 461, -1001, -1001, -1001, 462, -1001, -1001, + -1001, -1001, 463, 465, 467, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, 469, -1001, -1001, -1001, -1001, -1001, + -1001, 470, 471, -1001, -1001, 472, -1001, 92, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, 475, -1001, 118, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, 476, 486, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, 138, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, 155, -1001, -1001, -1001, -1001, -1001, 487, -1001, 488, + 490, -1001, -1001, -1001, -1001, -1001, -1001, 222, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, 311, 319, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, 317, -1001, -1001, 491, -1001, + -1001, -1001, 492, -1001, -1001, 327, 401, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + 496, 501, -1001, -1001, -1001, -1001, 384, 404, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + 223, -1001, -1001, -1001, 502, -1001, -1001, 503, -1001, 504, + 505, -1001, -1001, 506, 508, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, 231, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + 510, 258, -1001, -1001, -1001, -1001, 30, 30, -1001, 246, + 511, -1001, -1001, 512, 514, 515, 518, 519, 520, 313, + 325, 326, 329, 333, 334, 337, 338, 309, 339, 341, + 342, 344, 345, 530, 346, 348, 347, 349, 353, 538, + 539, 541, 354, 356, 357, 572, 573, 574, 365, 577, + 580, 582, 583, 371, 373, 375, 589, 590, 591, 593, + 595, 596, 597, 598, 612, 402, 614, 615, 616, 617, + 618, 621, 409, 410, 624, 625, -1001, 142, -1001, 626, + 414, 36, -1001, 628, 629, 630, 631, 633, 423, 426, + 636, 637, 638, 647, -1001, 640, 184, -1001, 641, 431, + 643, 433, 434, 288, -1001, 646, 649, 650, 666, 667, + 671, 673, -1001, 51, -1001, 674, 675, 436, 677, 678, + 679, 468, -1001, 15, 680, 477, 478, -1001, 83, 682, + 683, 50, -1001, 480, 689, 708, 498, 710, 500, 513, + 721, 722, 521, 523, 725, 726, 732, 733, 438, -1001, + 738, 528, 35, -1001, -1001, -1001, 740, 739, 531, 748, + 749, 750, 751, 757, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, 549, -1001, + -1001, -1001, -1001, -1001, -127, 550, 551, -1001, -1001, -1001, + 761, 762, 764, -1001, 765, 766, 560, 261, -1001, -1001, + -1001, 770, 771, 772, 773, 776, 777, 778, 779, 793, + -1001, 794, 795, 796, 807, 564, 570, -1001, -1001, 780, + 810, -1001, 813, -1001, -1001, 814, 815, 607, 608, 609, + -1001, -1001, 813, 610, 818, -1001, 613, -1001, 620, -1001, + 623, -1001, -1001, -1001, 813, 813, 813, 632, 639, 644, + 648, -1001, 651, 652, -1001, 654, 655, 656, -1001, -1001, + 657, -1001, -1001, -1001, 658, 766, -1001, -1001, 659, 660, + -1001, 661, -1001, -1001, 14, 663, -1001, -1001, -127, 662, + 664, 665, -1001, 821, -1001, -1001, 30, 142, -1001, 35, + 36, 316, 316, 822, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, 823, 824, 833, 837, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -96, 30, -57, 709, 838, + 843, 844, 171, 87, 127, -25, 90, 438, -1001, -1001, + 845, -141, -1001, -1001, 847, 848, -1001, -1001, -1001, -1001, + -1001, -82, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, 822, -1001, 260, 284, 285, -1001, -1001, -1001, -1001, + 853, 856, 859, 860, 873, -1001, 876, 877, -1001, -1001, + -1001, -1001, 878, 879, 880, 881, -1001, -1001, -1001, -1001, + -1001, 295, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, 312, -1001, + 882, 883, -1001, -1001, 884, 886, -1001, -1001, 885, 889, + -1001, -1001, 887, 891, -1001, -1001, 890, 892, -1001, -1001, + -1001, 85, -1001, -1001, -1001, 893, -1001, -1001, -1001, 91, + -1001, -1001, -1001, -1001, 315, -1001, -1001, -1001, 106, -1001, + -1001, 894, 895, -1001, -1001, 896, 898, -1001, 899, 900, + 901, 902, 903, 904, 330, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, 905, 906, 907, -1001, -1001, -1001, + -1001, 331, -1001, -1001, -1001, -1001, -1001, -1001, 908, 909, + 910, -1001, 387, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, 388, -1001, -1001, -1001, 911, -1001, + 912, -1001, -1001, -1001, 391, -1001, -1001, -1001, -1001, -1001, + 397, -1001, 153, -1001, 913, -1001, 403, -1001, -1001, 704, + -1001, 916, 920, -1001, -1001, 918, 922, -1001, -1001, -1001, + 919, -1001, 923, -1001, -1001, -1001, 915, 924, 926, 927, + 672, 715, 711, 716, 719, 931, 723, 724, 932, 933, + 936, 937, 727, 728, 729, 737, 940, 943, 946, 949, + 316, -1001, -1001, 316, -1001, 822, 647, -1001, 823, 15, + -1001, 824, 83, -1001, 833, 735, -1001, 837, -96, -1001, + -1001, -57, -1001, 955, 709, -1001, 321, 838, -1001, 51, + -1001, 843, -95, -1001, 844, 745, 747, 754, 760, 763, + 768, 171, -1001, 959, 968, 785, 786, 791, 87, -1001, + 759, 800, 801, 127, -1001, 975, 1015, -25, -1001, 806, + 1021, 811, 1030, 90, -1001, -1001, 189, 845, -1001, 825, + -141, -1001, -1001, 1032, 1036, 184, -1001, 847, 288, -1001, + 848, 1043, -1001, -1001, 412, 846, 869, 888, -1001, -1001, + -1001, -1001, -1001, 897, -1001, -1001, 400, 914, 917, 921, + -1001, -1001, -1001, -1001, 925, 928, 929, 930, -1001, 405, + -1001, 407, -1001, 1059, -1001, 1082, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, 411, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, 934, -1001, -1001, 1089, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, 1088, 1096, -1001, + -1001, -1001, -1001, -1001, 1093, -1001, 415, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, 302, 935, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, 938, 939, -1001, -1001, 941, + -1001, 30, -1001, -1001, 1099, -1001, -1001, -1001, -1001, -1001, + 417, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, 942, + 421, -1001, 424, -1001, 945, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, 735, + -1001, -1001, 1100, 947, -1001, 321, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, 1101, 950, 1102, + 189, -1001, -1001, -1001, -1001, -1001, -1001, 948, -1001, -1001, + 1103, -1001, 952, -1001, -1001, 1105, -1001, -1001, 318, -1001, + -21, 1105, -1001, -1001, 1106, 1109, 1110, -1001, 425, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, 1111, 951, 954, 956, + 1112, -21, -1001, 953, -1001, -1001, -1001, 958, -1001, -1001, + -1001 }; const short @@ -5269,186 +5280,187 @@ namespace isc { namespace dhcp { 20, 22, 24, 26, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 46, 38, 34, 33, 30, 31, 32, 37, 3, - 35, 36, 61, 5, 67, 7, 180, 9, 371, 11, - 574, 13, 601, 15, 633, 17, 494, 19, 503, 21, - 542, 23, 333, 25, 758, 27, 809, 29, 48, 41, - 0, 0, 0, 0, 0, 0, 635, 0, 505, 544, + 35, 36, 61, 5, 67, 7, 182, 9, 373, 11, + 576, 13, 603, 15, 635, 17, 496, 19, 505, 21, + 544, 23, 335, 25, 760, 27, 811, 29, 48, 41, + 0, 0, 0, 0, 0, 0, 637, 0, 507, 546, 0, 0, 0, 50, 0, 49, 0, 0, 42, 63, - 0, 65, 135, 807, 178, 193, 195, 197, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 174, 0, 0, 0, 0, 0, 154, 161, - 163, 0, 0, 0, 362, 492, 533, 0, 440, 588, - 590, 432, 0, 0, 0, 289, 308, 298, 281, 671, - 624, 324, 345, 700, 0, 310, 725, 739, 756, 167, - 169, 0, 819, 861, 0, 134, 0, 69, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 111, 112, 113, - 114, 115, 81, 119, 120, 121, 122, 123, 124, 125, - 126, 117, 118, 127, 128, 129, 106, 133, 131, 84, - 85, 86, 87, 103, 88, 90, 89, 130, 94, 95, - 82, 108, 109, 110, 107, 83, 92, 93, 101, 102, - 104, 91, 96, 97, 98, 99, 100, 105, 116, 132, - 190, 0, 189, 0, 182, 185, 186, 187, 188, 565, - 592, 419, 421, 423, 0, 0, 427, 425, 665, 418, - 376, 377, 378, 379, 380, 381, 382, 383, 402, 403, - 404, 405, 406, 409, 410, 411, 412, 413, 414, 415, - 416, 407, 408, 417, 0, 373, 387, 388, 389, 392, - 393, 396, 397, 398, 395, 390, 391, 384, 385, 400, - 401, 386, 394, 399, 586, 585, 581, 582, 580, 0, - 576, 579, 583, 584, 617, 0, 620, 0, 0, 616, - 610, 611, 609, 614, 615, 0, 603, 606, 607, 612, - 613, 608, 663, 651, 653, 655, 657, 659, 661, 650, - 647, 648, 649, 0, 636, 637, 642, 643, 640, 644, - 645, 646, 641, 0, 523, 248, 0, 527, 525, 530, - 0, 519, 520, 0, 506, 507, 510, 522, 511, 512, - 513, 529, 514, 515, 516, 517, 518, 559, 0, 0, - 557, 558, 561, 562, 0, 545, 546, 549, 550, 551, - 552, 553, 554, 555, 556, 341, 343, 338, 0, 335, - 339, 340, 0, 782, 784, 0, 787, 0, 0, 791, - 795, 0, 0, 799, 801, 803, 805, 780, 778, 779, - 0, 760, 763, 775, 764, 765, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 776, 777, 816, 0, 0, - 811, 814, 815, 47, 52, 0, 39, 45, 0, 66, - 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 65, 136, 809, 180, 195, 197, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 175, 0, 0, 0, 0, 0, 155, 162, + 164, 0, 0, 0, 364, 494, 535, 0, 442, 590, + 592, 434, 0, 0, 0, 291, 310, 300, 283, 673, + 626, 326, 347, 702, 0, 312, 727, 741, 758, 168, + 170, 0, 0, 821, 863, 0, 135, 0, 69, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 111, 112, + 113, 114, 115, 81, 119, 120, 121, 122, 123, 124, + 125, 126, 117, 118, 127, 128, 129, 106, 134, 131, + 132, 84, 85, 86, 87, 103, 88, 90, 89, 130, + 94, 95, 82, 108, 109, 110, 107, 83, 92, 93, + 101, 102, 104, 91, 96, 97, 98, 99, 100, 105, + 116, 133, 192, 0, 191, 0, 184, 187, 188, 189, + 190, 567, 594, 421, 423, 425, 0, 0, 429, 427, + 667, 420, 378, 379, 380, 381, 382, 383, 384, 385, + 404, 405, 406, 407, 408, 411, 412, 413, 414, 415, + 416, 417, 418, 409, 410, 419, 0, 375, 389, 390, + 391, 394, 395, 398, 399, 400, 397, 392, 393, 386, + 387, 402, 403, 388, 396, 401, 588, 587, 583, 584, + 582, 0, 578, 581, 585, 586, 619, 0, 622, 0, + 0, 618, 612, 613, 611, 616, 617, 0, 605, 608, + 609, 614, 615, 610, 665, 653, 655, 657, 659, 661, + 663, 652, 649, 650, 651, 0, 638, 639, 644, 645, + 642, 646, 647, 648, 643, 0, 525, 250, 0, 529, + 527, 532, 0, 521, 522, 0, 508, 509, 512, 524, + 513, 514, 515, 531, 516, 517, 518, 519, 520, 561, + 0, 0, 559, 560, 563, 564, 0, 547, 548, 551, + 552, 553, 554, 555, 556, 557, 558, 343, 345, 340, + 0, 337, 341, 342, 0, 784, 786, 0, 789, 0, + 0, 793, 797, 0, 0, 801, 803, 805, 807, 782, + 780, 781, 0, 762, 765, 777, 766, 767, 768, 769, + 770, 771, 772, 773, 774, 775, 776, 778, 779, 818, + 0, 0, 813, 816, 817, 47, 52, 0, 39, 45, + 0, 66, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 60, 71, 68, 0, 0, 184, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 375, 372, 0, 578, 575, 0, 0, 0, 0, 0, - 605, 602, 0, 0, 0, 0, 0, 0, 0, 634, - 639, 495, 0, 0, 0, 0, 0, 0, 0, 504, - 509, 0, 0, 0, 543, 548, 0, 0, 337, 334, + 0, 0, 0, 0, 0, 0, 60, 71, 68, 0, + 0, 186, 183, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 377, 374, 0, 580, 577, 0, 0, + 0, 0, 0, 607, 604, 0, 0, 0, 0, 0, + 0, 0, 636, 641, 497, 0, 0, 0, 0, 0, + 0, 0, 506, 511, 0, 0, 0, 545, 550, 0, + 0, 339, 336, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 764, 761, + 0, 0, 815, 812, 51, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 0, 173, + 174, 152, 153, 154, 0, 0, 0, 166, 167, 172, + 0, 0, 0, 177, 0, 0, 0, 0, 431, 432, + 433, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 726, 0, 0, 0, 0, 0, 0, 178, 179, 0, + 0, 70, 0, 194, 185, 0, 0, 0, 0, 0, + 440, 441, 0, 0, 0, 376, 0, 579, 0, 621, + 0, 624, 625, 606, 0, 0, 0, 0, 0, 0, + 0, 640, 0, 0, 523, 0, 0, 0, 534, 510, + 0, 565, 566, 549, 0, 0, 338, 783, 0, 0, + 788, 0, 791, 792, 0, 0, 799, 800, 0, 0, + 0, 0, 763, 0, 820, 814, 0, 0, 137, 0, + 0, 0, 0, 201, 176, 157, 158, 159, 160, 161, + 156, 163, 165, 366, 498, 537, 444, 40, 591, 593, + 436, 437, 438, 439, 435, 0, 48, 0, 0, 0, + 628, 328, 0, 0, 0, 0, 0, 0, 169, 171, + 0, 0, 53, 193, 569, 596, 422, 424, 426, 430, + 428, 0, 589, 620, 623, 666, 654, 656, 658, 660, + 662, 664, 526, 251, 530, 528, 533, 562, 344, 346, + 785, 787, 790, 795, 796, 794, 798, 802, 804, 806, + 808, 201, 44, 0, 0, 0, 237, 243, 245, 247, + 0, 0, 0, 0, 0, 266, 0, 0, 257, 269, + 271, 273, 0, 0, 0, 0, 275, 277, 279, 281, + 236, 0, 208, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 223, 224, 231, 225, 226, 227, 221, + 222, 228, 229, 230, 232, 233, 234, 235, 0, 206, + 0, 202, 203, 371, 0, 367, 368, 503, 0, 499, + 500, 542, 0, 538, 539, 449, 0, 445, 446, 298, + 299, 0, 293, 296, 297, 0, 308, 309, 305, 0, + 302, 306, 307, 289, 0, 285, 288, 678, 0, 675, + 633, 0, 629, 630, 333, 0, 329, 330, 0, 0, + 0, 0, 0, 0, 0, 349, 352, 353, 354, 355, + 356, 357, 716, 722, 0, 0, 0, 715, 712, 713, + 714, 0, 704, 707, 710, 708, 709, 711, 0, 0, + 0, 322, 0, 314, 317, 318, 319, 320, 321, 737, + 739, 736, 734, 735, 0, 729, 732, 733, 0, 753, + 0, 756, 749, 750, 0, 743, 746, 747, 748, 751, + 0, 826, 0, 823, 0, 869, 0, 865, 868, 55, + 574, 0, 570, 571, 601, 0, 597, 598, 671, 670, + 0, 669, 0, 64, 810, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 762, 759, 0, 0, 813, - 810, 51, 43, 0, 0, 0, 0, 0, 0, 0, - 0, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 0, 172, 173, 151, 152, - 153, 0, 0, 0, 165, 166, 171, 0, 0, 0, - 176, 0, 0, 0, 0, 429, 430, 431, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 724, 0, 0, - 0, 0, 0, 0, 177, 0, 0, 70, 0, 192, - 183, 0, 0, 0, 0, 0, 438, 439, 0, 0, - 0, 374, 0, 577, 0, 619, 0, 622, 623, 604, - 0, 0, 0, 0, 0, 0, 0, 638, 0, 0, - 521, 0, 0, 0, 532, 508, 0, 563, 564, 547, - 0, 0, 336, 781, 0, 0, 786, 0, 789, 790, - 0, 0, 797, 798, 0, 0, 0, 0, 761, 0, - 818, 812, 0, 0, 136, 0, 0, 0, 0, 199, - 175, 156, 157, 158, 159, 160, 155, 162, 164, 364, - 496, 535, 442, 40, 589, 591, 434, 435, 436, 437, - 433, 0, 48, 0, 0, 0, 626, 326, 0, 0, - 0, 0, 0, 0, 168, 170, 0, 0, 53, 191, - 567, 594, 420, 422, 424, 428, 426, 0, 587, 618, - 621, 664, 652, 654, 656, 658, 660, 662, 524, 249, - 528, 526, 531, 560, 342, 344, 783, 785, 788, 793, - 794, 792, 796, 800, 802, 804, 806, 199, 44, 0, - 0, 0, 235, 241, 243, 245, 0, 0, 0, 0, - 0, 264, 0, 0, 255, 267, 269, 271, 0, 0, - 0, 0, 273, 275, 277, 279, 234, 0, 206, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 221, - 222, 229, 223, 224, 225, 219, 220, 226, 227, 228, - 230, 231, 232, 233, 0, 204, 0, 200, 201, 369, - 0, 365, 366, 501, 0, 497, 498, 540, 0, 536, - 537, 447, 0, 443, 444, 296, 297, 0, 291, 294, - 295, 0, 306, 307, 303, 0, 300, 304, 305, 287, - 0, 283, 286, 676, 0, 673, 631, 0, 627, 628, - 331, 0, 327, 328, 0, 0, 0, 0, 0, 0, - 0, 347, 350, 351, 352, 353, 354, 355, 714, 720, - 0, 0, 0, 713, 710, 711, 712, 0, 702, 705, - 708, 706, 707, 709, 0, 0, 0, 320, 0, 312, - 315, 316, 317, 318, 319, 735, 737, 734, 732, 733, - 0, 727, 730, 731, 0, 751, 0, 754, 747, 748, - 0, 741, 744, 745, 746, 749, 0, 824, 0, 821, - 0, 867, 0, 863, 866, 55, 572, 0, 568, 569, - 599, 0, 595, 596, 669, 668, 0, 667, 0, 64, - 808, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 208, 194, 196, 0, - 198, 203, 0, 363, 368, 505, 493, 500, 544, 534, - 539, 0, 441, 446, 293, 290, 309, 302, 299, 0, - 285, 282, 678, 675, 672, 635, 625, 630, 0, 325, - 330, 0, 0, 0, 0, 0, 0, 349, 346, 0, - 0, 0, 0, 0, 704, 701, 0, 0, 0, 314, - 311, 0, 0, 729, 726, 0, 0, 0, 0, 743, - 740, 757, 0, 823, 820, 0, 865, 862, 57, 0, - 56, 0, 566, 571, 0, 593, 598, 0, 666, 817, - 0, 0, 0, 0, 247, 250, 251, 252, 253, 0, - 266, 254, 0, 0, 0, 0, 261, 262, 263, 260, - 0, 0, 0, 0, 207, 0, 202, 0, 367, 0, - 499, 0, 538, 491, 466, 467, 468, 470, 471, 472, - 456, 457, 475, 476, 477, 478, 479, 482, 483, 484, - 485, 486, 487, 488, 489, 480, 481, 490, 452, 453, - 454, 455, 464, 465, 461, 462, 463, 460, 469, 0, - 449, 458, 473, 474, 459, 445, 292, 301, 0, 284, - 697, 0, 695, 689, 690, 691, 692, 693, 694, 696, - 686, 687, 688, 0, 679, 680, 683, 684, 685, 674, - 0, 629, 0, 329, 356, 357, 358, 359, 360, 361, - 348, 0, 0, 719, 722, 723, 703, 321, 322, 323, - 313, 0, 0, 728, 750, 0, 753, 0, 742, 839, - 0, 837, 835, 829, 833, 834, 0, 826, 831, 832, - 830, 822, 868, 864, 54, 59, 0, 570, 0, 597, - 0, 237, 238, 239, 240, 236, 242, 244, 246, 265, - 257, 258, 259, 256, 268, 270, 272, 274, 276, 278, - 280, 205, 370, 502, 541, 451, 448, 288, 0, 0, - 677, 682, 632, 332, 716, 717, 718, 715, 721, 736, - 738, 752, 755, 0, 0, 0, 828, 825, 58, 573, - 600, 670, 450, 0, 699, 681, 0, 836, 0, 827, - 698, 0, 838, 844, 0, 841, 0, 843, 840, 854, - 0, 0, 0, 859, 0, 846, 849, 850, 851, 852, - 853, 842, 0, 0, 0, 0, 0, 848, 845, 0, - 856, 857, 858, 0, 847, 855, 860 + 210, 196, 198, 0, 200, 205, 0, 365, 370, 507, + 495, 502, 546, 536, 541, 0, 443, 448, 295, 292, + 311, 304, 301, 0, 287, 284, 680, 677, 674, 637, + 627, 632, 0, 327, 332, 0, 0, 0, 0, 0, + 0, 351, 348, 0, 0, 0, 0, 0, 706, 703, + 0, 0, 0, 316, 313, 0, 0, 731, 728, 0, + 0, 0, 0, 745, 742, 759, 0, 825, 822, 0, + 867, 864, 57, 0, 56, 0, 568, 573, 0, 595, + 600, 0, 668, 819, 0, 0, 0, 0, 249, 252, + 253, 254, 255, 0, 268, 256, 0, 0, 0, 0, + 263, 264, 265, 262, 0, 0, 0, 0, 209, 0, + 204, 0, 369, 0, 501, 0, 540, 493, 468, 469, + 470, 472, 473, 474, 458, 459, 477, 478, 479, 480, + 481, 484, 485, 486, 487, 488, 489, 490, 491, 482, + 483, 492, 454, 455, 456, 457, 466, 467, 463, 464, + 465, 462, 471, 0, 451, 460, 475, 476, 461, 447, + 294, 303, 0, 286, 699, 0, 697, 691, 692, 693, + 694, 695, 696, 698, 688, 689, 690, 0, 681, 682, + 685, 686, 687, 676, 0, 631, 0, 331, 358, 359, + 360, 361, 362, 363, 350, 0, 0, 721, 724, 725, + 705, 323, 324, 325, 315, 0, 0, 730, 752, 0, + 755, 0, 744, 841, 0, 839, 837, 831, 835, 836, + 0, 828, 833, 834, 832, 824, 870, 866, 54, 59, + 0, 572, 0, 599, 0, 239, 240, 241, 242, 238, + 244, 246, 248, 267, 259, 260, 261, 258, 270, 272, + 274, 276, 278, 280, 282, 207, 372, 504, 543, 453, + 450, 290, 0, 0, 679, 684, 634, 334, 718, 719, + 720, 717, 723, 738, 740, 754, 757, 0, 0, 0, + 830, 827, 58, 575, 602, 672, 452, 0, 701, 683, + 0, 838, 0, 829, 700, 0, 840, 846, 0, 843, + 0, 845, 842, 856, 0, 0, 0, 861, 0, 848, + 851, 852, 853, 854, 855, 844, 0, 0, 0, 0, + 0, 850, 847, 0, 858, 859, 860, 0, 849, 857, + 862 }; const short Dhcp6Parser::yypgoto_[] = { - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -10, -997, -568, -997, - 432, -997, -997, -997, -997, 382, -997, -578, -997, -997, - -997, -71, -997, -997, -997, -997, -997, -997, -997, 412, - 623, -997, -997, -43, -14, 12, 16, 20, 33, -59, - -31, -30, -28, -27, -26, 19, -997, 34, 37, 38, - 41, -997, 425, 49, -997, 52, -997, 54, 55, 56, - -997, 59, -997, 62, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, 410, 620, -997, -997, -997, -997, - -997, -997, -997, -997, -997, 333, -997, 110, -997, -692, - 116, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -45, -997, -728, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, 94, -997, -997, -997, -997, - -997, 102, -711, -997, -997, -997, -997, 100, -997, -997, - -997, -997, -997, -997, -997, 71, -997, -997, -997, -997, - -997, -997, -997, 88, -997, -997, -997, 93, 584, -997, - -997, -997, -997, -997, -997, -997, 89, -997, -997, -997, - -997, -997, -997, -996, -997, -997, -997, 120, -997, -997, - -997, 129, 682, -997, -997, -994, -997, -993, -997, 73, - -997, 75, -997, 66, 69, 70, 72, -997, -997, -997, - -992, -997, -997, -997, -997, 112, -997, -997, -125, 1067, - -997, -997, -997, -997, -997, 132, -997, -997, -997, 130, - -997, 618, -997, -67, -997, -997, -997, -997, -997, -64, - -997, -997, -997, -997, -997, 4, -997, -997, -997, 126, - -997, -997, -997, 133, -997, 621, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, 85, -997, -997, - -997, 86, 683, -997, -997, -55, -997, -12, -997, -997, - -997, -997, -997, 92, -997, -997, -997, 96, 649, -997, - -997, -997, -997, -997, -997, -997, -60, -997, -997, -997, - 134, -997, -997, -997, 135, -997, 687, 415, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -990, -997, -997, -997, -997, -997, -997, -997, 140, - -997, -997, -997, -97, -997, -997, -997, -997, -997, -997, - -997, 121, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, 113, -997, -997, -997, -997, -997, - -997, -997, 108, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, 436, 616, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, -997, -997, -997, -997, - -997, -997, -997, -997, 478, 615, -997, -997, -997, -997, - -997, -997, 109, -997, -997, -101, -997, -997, -997, -997, - -997, -997, -121, -997, -997, -140, -997, -997, -997, -997, - -997, -997, -997, -997, -997, -997, 114, -997 + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -10, -1001, -565, -1001, + 212, -1001, -1001, -1001, -1001, 381, -1001, -582, -1001, -1001, + -1001, -71, -1001, -1001, -1001, -1001, -1001, -1001, -1001, 413, + 622, -1001, -1001, -43, -14, 12, 16, 20, 33, -59, + -31, -30, -28, -27, -26, 19, -1001, 34, 37, 38, + 41, -1001, 420, 49, -1001, 52, -1001, 54, 55, 56, + -1001, 59, -1001, 62, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, 399, 606, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, 335, -1001, 107, -1001, + -696, 111, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -45, -1001, -732, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, 89, -1001, -1001, -1001, + -1001, -1001, 96, -715, -1001, -1001, -1001, -1001, 99, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, 64, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, 81, -1001, -1001, -1001, 95, 578, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, 82, -1001, -1001, + -1001, -1001, -1001, -1001, -1000, -1001, -1001, -1001, 114, -1001, + -1001, -1001, 120, 627, -1001, -1001, -998, -1001, -997, -1001, + 73, -1001, 75, -1001, 66, 69, 70, 72, -1001, -1001, + -1001, -996, -1001, -1001, -1001, -1001, 119, -1001, -1001, -135, + 1061, -1001, -1001, -1001, -1001, -1001, 124, -1001, -1001, -1001, + 122, -1001, 604, -1001, -67, -1001, -1001, -1001, -1001, -1001, + -64, -1001, -1001, -1001, -1001, -1001, 4, -1001, -1001, -1001, + 126, -1001, -1001, -1001, 129, -1001, 634, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, 67, -1001, + -1001, -1001, 88, 668, -1001, -1001, -55, -1001, -12, -1001, + -1001, -1001, -1001, -1001, 84, -1001, -1001, -1001, 93, 653, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -60, -1001, -1001, + -1001, 134, -1001, -1001, -1001, 139, -1001, 669, 396, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -994, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + 140, -1001, -1001, -1001, -105, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, 121, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, 113, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, 110, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, 439, 619, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, 479, 635, -1001, -1001, -1001, + -1001, -1001, -1001, 108, -1001, -1001, -100, -1001, -1001, -1001, + -1001, -1001, -1001, -122, -1001, -1001, -140, -1001, -1001, -1001, + -1001, -1001, -1001, -1001, -1001, -1001, -1001, 112, -1001 }; const short @@ -5456,560 +5468,562 @@ namespace isc { namespace dhcp { { 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 83, 39, 40, 69, - 724, 87, 88, 41, 68, 84, 85, 749, 965, 1079, - 1080, 816, 43, 70, 90, 428, 91, 45, 71, 156, - 157, 158, 431, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 457, 716, 177, 458, 178, 459, 179, 180, 181, - 488, 182, 489, 183, 184, 185, 186, 451, 187, 188, - 189, 433, 47, 72, 223, 224, 225, 496, 226, 190, - 434, 191, 435, 192, 436, 846, 847, 848, 1009, 817, - 818, 819, 982, 1245, 820, 983, 821, 984, 822, 985, - 823, 824, 533, 825, 826, 827, 828, 829, 830, 994, - 1253, 831, 832, 833, 834, 835, 991, 836, 837, 995, - 838, 996, 839, 997, 840, 1002, 841, 1003, 842, 1004, - 843, 1005, 193, 477, 880, 881, 882, 1029, 194, 474, - 867, 868, 869, 870, 195, 476, 875, 876, 877, 878, - 196, 475, 197, 484, 928, 929, 930, 931, 932, 198, - 480, 891, 892, 893, 1038, 63, 80, 378, 379, 380, - 546, 381, 547, 199, 481, 900, 901, 902, 903, 904, - 905, 906, 907, 200, 463, 850, 851, 852, 1012, 49, - 73, 264, 265, 266, 502, 267, 503, 268, 504, 269, - 508, 270, 507, 201, 202, 203, 204, 470, 730, 275, - 276, 205, 467, 862, 863, 864, 1021, 1159, 1160, 206, - 464, 57, 77, 854, 855, 856, 1015, 59, 78, 343, - 344, 345, 346, 347, 348, 349, 532, 350, 536, 351, - 535, 352, 353, 537, 354, 207, 465, 858, 859, 860, - 1018, 61, 79, 364, 365, 366, 367, 368, 541, 369, - 370, 371, 372, 278, 500, 967, 968, 969, 1081, 51, - 74, 289, 290, 291, 512, 208, 468, 209, 469, 281, - 501, 971, 972, 973, 1084, 53, 75, 305, 306, 307, - 515, 308, 309, 517, 310, 311, 210, 479, 887, 888, - 889, 1035, 55, 76, 323, 324, 325, 326, 523, 327, - 524, 328, 525, 329, 526, 330, 527, 331, 528, 332, - 522, 283, 509, 976, 977, 1087, 211, 478, 884, 885, - 1032, 1183, 1184, 1185, 1186, 1187, 1268, 1188, 212, 482, - 917, 918, 919, 1049, 1277, 920, 921, 1050, 922, 923, - 213, 214, 485, 940, 941, 942, 1061, 943, 1062, 215, - 486, 950, 951, 952, 953, 1066, 954, 955, 1068, 216, - 487, 65, 81, 400, 401, 402, 403, 551, 404, 552, - 405, 406, 554, 407, 408, 409, 557, 781, 410, 558, - 411, 412, 413, 561, 414, 562, 415, 563, 416, 564, - 217, 432, 67, 82, 419, 420, 421, 567, 422, 218, - 491, 958, 959, 1072, 1226, 1227, 1228, 1229, 1285, 1230, - 1283, 1304, 1305, 1306, 1314, 1315, 1316, 1322, 1317, 1318, - 1319, 1320, 1326, 219, 492, 962, 963, 964 + 728, 87, 88, 41, 68, 84, 85, 753, 969, 1083, + 1084, 820, 43, 70, 90, 430, 91, 45, 71, 157, + 158, 159, 433, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 459, 720, 178, 460, 179, 461, 180, 181, 182, + 490, 183, 491, 184, 185, 186, 187, 453, 188, 189, + 190, 191, 435, 47, 72, 225, 226, 227, 499, 228, + 192, 436, 193, 437, 194, 438, 850, 851, 852, 1013, + 821, 822, 823, 986, 1249, 824, 987, 825, 988, 826, + 989, 827, 828, 536, 829, 830, 831, 832, 833, 834, + 998, 1257, 835, 836, 837, 838, 839, 995, 840, 841, + 999, 842, 1000, 843, 1001, 844, 1006, 845, 1007, 846, + 1008, 847, 1009, 195, 479, 884, 885, 886, 1033, 196, + 476, 871, 872, 873, 874, 197, 478, 879, 880, 881, + 882, 198, 477, 199, 486, 932, 933, 934, 935, 936, + 200, 482, 895, 896, 897, 1042, 63, 80, 380, 381, + 382, 549, 383, 550, 201, 483, 904, 905, 906, 907, + 908, 909, 910, 911, 202, 465, 854, 855, 856, 1016, + 49, 73, 266, 267, 268, 505, 269, 506, 270, 507, + 271, 511, 272, 510, 203, 204, 205, 206, 472, 734, + 277, 278, 207, 469, 866, 867, 868, 1025, 1163, 1164, + 208, 466, 57, 77, 858, 859, 860, 1019, 59, 78, + 345, 346, 347, 348, 349, 350, 351, 535, 352, 539, + 353, 538, 354, 355, 540, 356, 209, 467, 862, 863, + 864, 1022, 61, 79, 366, 367, 368, 369, 370, 544, + 371, 372, 373, 374, 280, 503, 971, 972, 973, 1085, + 51, 74, 291, 292, 293, 515, 210, 470, 211, 471, + 283, 504, 975, 976, 977, 1088, 53, 75, 307, 308, + 309, 518, 310, 311, 520, 312, 313, 212, 481, 891, + 892, 893, 1039, 55, 76, 325, 326, 327, 328, 526, + 329, 527, 330, 528, 331, 529, 332, 530, 333, 531, + 334, 525, 285, 512, 980, 981, 1091, 213, 480, 888, + 889, 1036, 1187, 1188, 1189, 1190, 1191, 1272, 1192, 214, + 484, 921, 922, 923, 1053, 1281, 924, 925, 1054, 926, + 927, 215, 216, 487, 944, 945, 946, 1065, 947, 1066, + 217, 488, 954, 955, 956, 957, 1070, 958, 959, 1072, + 218, 489, 65, 81, 402, 403, 404, 405, 554, 406, + 555, 407, 408, 557, 409, 410, 411, 560, 785, 412, + 561, 413, 414, 415, 564, 416, 565, 417, 566, 418, + 567, 219, 434, 67, 82, 421, 422, 423, 570, 424, + 220, 494, 962, 963, 1076, 1230, 1231, 1232, 1233, 1289, + 1234, 1287, 1308, 1309, 1310, 1318, 1319, 1320, 1326, 1321, + 1322, 1323, 1324, 1330, 221, 495, 966, 967, 968 }; const short Dhcp6Parser::yytable_[] = { - 155, 222, 239, 285, 299, 319, 38, 341, 360, 377, - 397, 914, 362, 282, 246, 363, 844, 227, 279, 292, - 303, 321, 874, 355, 373, 1149, 398, 1150, 1151, 1158, - 240, 1164, 30, 342, 361, 31, 334, 32, 865, 33, - 960, 86, 247, 248, 723, 249, 250, 251, 375, 376, - 129, 130, 220, 221, 42, 154, 129, 130, 313, 241, - 228, 280, 293, 304, 322, 974, 356, 374, 429, 399, - 755, 494, 908, 430, 417, 418, 495, 277, 288, 302, - 320, 797, 761, 762, 763, 242, 498, 375, 376, 243, - 510, 499, 252, 244, 89, 511, 335, 44, 336, 337, - 129, 130, 338, 339, 340, 46, 245, 253, 935, 936, - 254, 255, 48, 723, 256, 129, 130, 944, 945, 946, - 126, 1024, 257, 866, 1025, 258, 154, 259, 260, 261, - 50, 1027, 262, 284, 1028, 263, 129, 130, 52, 271, - 129, 130, 272, 273, 54, 274, 56, 286, 300, 287, - 301, 129, 130, 513, 924, 925, 926, 520, 514, 779, - 780, 236, 521, 154, 237, 792, 1274, 1275, 1276, 947, - 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, - 803, 804, 58, 60, 62, 805, 806, 807, 808, 809, - 810, 811, 812, 813, 814, 815, 1250, 1251, 1252, 909, - 910, 911, 912, 711, 712, 713, 714, 98, 99, 100, - 101, 102, 103, 154, 1309, 125, 548, 1310, 1311, 1312, - 1313, 549, 565, 865, 872, 335, 873, 566, 154, 894, - 895, 896, 897, 898, 899, 126, 335, 1033, 715, 64, - 1034, 423, 126, 34, 35, 36, 37, 569, 1073, 154, - 66, 1074, 570, 154, 424, 129, 130, 294, 295, 296, - 297, 298, 129, 130, 154, 494, 426, 425, 427, 1149, - 979, 1150, 1151, 1158, 569, 1164, 498, 1170, 1171, 980, - 1006, 981, 529, 236, 437, 1007, 237, 92, 93, 335, - 438, 94, 1006, 1030, 95, 96, 97, 1008, 1031, 335, - 357, 336, 337, 358, 359, 1047, 1054, 1059, 129, 130, - 1048, 1055, 1060, 439, 440, 1063, 874, 1115, 129, 130, - 1064, 1307, 1069, 530, 1308, 441, 914, 1070, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 154, 126, 565, - 1076, 531, 442, 443, 1071, 1077, 127, 128, 154, 1006, - 1241, 1242, 1243, 1244, 1261, 154, 129, 130, 129, 130, - 510, 1265, 548, 131, 444, 1262, 1266, 1273, 132, 133, - 134, 135, 136, 137, 138, 445, 139, 1219, 312, 1220, - 1221, 140, 446, 447, 313, 314, 315, 316, 317, 318, - 141, 1286, 513, 142, 571, 572, 1287, 1289, 448, 520, - 143, 154, 449, 155, 1290, 1327, 540, 222, 144, 145, - 1328, 154, 450, 146, 452, 539, 147, 453, 454, 239, - 148, 455, 285, 227, 726, 727, 728, 729, 456, 299, - 282, 246, 460, 461, 462, 279, 466, 471, 292, 319, - 472, 149, 150, 151, 152, 303, 473, 240, 483, 341, - 490, 493, 497, 153, 360, 321, 505, 506, 362, 247, - 248, 363, 249, 250, 251, 355, 228, 516, 518, 154, - 373, 154, 519, 534, 397, 342, 241, 538, 280, 542, - 361, 293, 543, 545, 544, 550, 553, 555, 304, 556, - 398, 559, 560, 568, 277, 574, 575, 288, 322, 573, - 576, 577, 242, 578, 302, 579, 243, 580, 356, 252, - 244, 129, 130, 374, 320, 595, 581, 582, 583, 584, - 585, 586, 587, 245, 253, 588, 589, 254, 255, 590, - 591, 256, 592, 399, 593, 594, 596, 597, 601, 257, - 598, 599, 258, 600, 259, 260, 261, 602, 603, 262, - 604, 605, 263, 607, 608, 609, 271, 606, 610, 272, - 273, 611, 274, 612, 613, 614, 286, 615, 287, 616, - 617, 618, 619, 300, 620, 301, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 621, - 622, 623, 624, 625, 626, 627, 395, 396, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 155, 628, 629, 222, 630, 631, 632, 633, - 634, 635, 636, 638, 154, 639, 641, 703, 642, 643, - 644, 227, 645, 646, 647, 648, 649, 650, 652, 654, - 655, 656, 660, 661, 662, 657, 663, 664, 913, 927, - 937, 658, 397, 665, 666, 668, 961, 669, 671, 670, - 672, 673, 676, 680, 915, 933, 938, 948, 398, 681, - 674, 677, 788, 678, 228, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 683, 684, - 685, 686, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 687, 690, 126, 688, 691, 694, 916, 934, 939, - 949, 399, 689, 695, 705, 229, 692, 230, 693, 696, - 697, 699, 700, 129, 130, 231, 232, 233, 234, 235, - 131, 702, 704, 706, 709, 132, 133, 134, 707, 708, - 710, 717, 718, 719, 236, 720, 721, 237, 140, 722, - 32, 725, 731, 732, 733, 238, 735, 734, 736, 737, - 744, 745, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 738, 739, 740, 741, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 742, - 126, 335, 743, 746, 747, 748, 750, 751, 879, 787, - 757, 782, 845, 849, 752, 753, 754, 756, 149, 150, - 129, 130, 758, 232, 233, 759, 235, 131, 760, 764, - 765, 766, 132, 133, 134, 853, 857, 861, 883, 767, - 886, 236, 890, 957, 237, 966, 154, 970, 986, 987, - 768, 988, 238, 769, 989, 990, 992, 993, 998, 770, - 999, 1000, 1001, 1011, 771, 1010, 1014, 772, 773, 774, - 776, 777, 1013, 1016, 1017, 778, 1019, 1020, 784, 1022, - 1023, 1026, 1036, 785, 786, 1037, 1039, 1040, 1094, 1041, - 1042, 1043, 1044, 1045, 1046, 1051, 1052, 1053, 1056, 1057, - 1058, 1065, 1067, 1075, 1078, 149, 150, 1082, 1083, 1085, - 1086, 1096, 1088, 1090, 1089, 1091, 1092, 1093, 1095, 1097, - 1098, 1099, 1102, 1100, 1101, 1103, 1104, 1105, 1106, 1107, - 1110, 239, 1108, 154, 341, 1109, 1111, 360, 1112, 1113, - 1123, 362, 282, 246, 363, 1168, 1194, 279, 1195, 1196, - 355, 1172, 1130, 373, 319, 1201, 1162, 377, 1197, 240, - 342, 1198, 1202, 361, 1211, 1207, 1148, 1181, 1124, 1199, - 321, 247, 248, 913, 249, 250, 251, 1179, 927, 1173, - 1131, 1132, 937, 1133, 1134, 1135, 1203, 1204, 241, 915, - 280, 1222, 1212, 356, 933, 961, 374, 1125, 938, 1163, - 285, 1205, 1208, 299, 948, 1209, 277, 1224, 1174, 1214, - 1182, 1215, 1217, 322, 242, 1161, 292, 1223, 243, 303, - 1234, 252, 244, 1126, 1216, 1232, 1180, 1127, 1235, 320, - 1136, 1128, 916, 1240, 1175, 245, 253, 934, 1176, 254, - 255, 939, 1177, 256, 1129, 1137, 1263, 949, 1138, 1139, - 1225, 257, 1140, 1264, 258, 1178, 259, 260, 261, 293, - 1141, 262, 304, 1142, 263, 1143, 1144, 1145, 271, 1269, - 1146, 272, 273, 1147, 274, 288, 1270, 1154, 302, 1271, - 1155, 1156, 1246, 1157, 1152, 1247, 1153, 1272, 1284, 1293, - 1296, 1248, 1249, 1298, 1254, 1301, 1255, 1323, 1303, 1324, - 1325, 1329, 1333, 775, 871, 789, 791, 637, 640, 783, - 978, 1116, 1114, 1256, 1169, 1257, 1166, 1167, 1193, 1258, - 1210, 1192, 682, 1259, 1118, 1165, 1200, 1260, 1267, 1278, - 1292, 1117, 1279, 1280, 333, 1119, 1122, 1281, 1288, 1120, - 1291, 1121, 1297, 1300, 286, 1294, 287, 300, 675, 301, - 1302, 1335, 1330, 1331, 1332, 1336, 679, 1236, 1237, 659, - 1190, 1191, 975, 1189, 1295, 1206, 1213, 1218, 1239, 956, - 1238, 698, 1231, 790, 701, 1299, 1321, 1334, 0, 0, - 1233, 0, 651, 0, 1123, 0, 653, 0, 0, 0, - 1172, 0, 0, 0, 0, 0, 1130, 1282, 0, 0, - 1162, 0, 0, 0, 0, 1222, 1181, 667, 0, 0, - 1148, 0, 1124, 0, 0, 0, 1179, 0, 1173, 0, - 0, 1224, 0, 0, 1131, 1132, 0, 1133, 1134, 1135, - 0, 1223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1125, 0, 1163, 0, 0, 0, 1174, 0, 1182, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1161, - 0, 0, 0, 0, 1225, 1180, 0, 1126, 0, 0, - 0, 1127, 0, 1175, 1136, 1128, 0, 1176, 0, 0, - 0, 1177, 0, 0, 0, 0, 0, 0, 1129, 1137, - 0, 0, 1138, 1139, 1178, 0, 1140, 0, 0, 0, - 0, 0, 0, 0, 1141, 0, 0, 1142, 0, 1143, - 1144, 1145, 0, 0, 1146, 0, 0, 1147, 0, 0, - 0, 1154, 0, 0, 1155, 1156, 0, 1157, 1152, 0, - 1153 + 156, 224, 241, 287, 301, 321, 38, 343, 362, 379, + 399, 918, 364, 284, 248, 365, 848, 229, 281, 294, + 305, 323, 878, 357, 375, 1153, 400, 1154, 1155, 1162, + 242, 1168, 869, 344, 363, 31, 336, 32, 42, 33, + 377, 378, 249, 250, 315, 251, 252, 253, 419, 420, + 727, 978, 222, 223, 715, 716, 717, 718, 964, 243, + 230, 282, 295, 306, 324, 30, 358, 376, 44, 401, + 759, 869, 876, 155, 877, 129, 130, 279, 290, 304, + 322, 431, 765, 766, 767, 244, 432, 46, 1028, 245, + 719, 1029, 254, 246, 1031, 497, 337, 1032, 338, 339, + 498, 48, 340, 341, 342, 50, 247, 255, 912, 1037, + 256, 257, 1038, 86, 258, 129, 130, 801, 870, 155, + 727, 501, 259, 52, 54, 260, 502, 261, 262, 263, + 56, 126, 264, 939, 940, 265, 129, 130, 58, 273, + 60, 513, 274, 275, 62, 276, 514, 288, 302, 289, + 303, 129, 130, 92, 93, 64, 1077, 94, 516, 1078, + 95, 96, 97, 517, 337, 359, 338, 339, 360, 361, + 1313, 314, 66, 1314, 1315, 1316, 1317, 315, 316, 317, + 318, 319, 320, 129, 130, 377, 378, 129, 130, 155, + 129, 130, 783, 784, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 89, 125, 523, 551, 129, 130, 155, + 524, 552, 127, 128, 568, 913, 914, 915, 916, 569, + 425, 426, 129, 130, 34, 35, 36, 37, 427, 131, + 155, 948, 949, 950, 132, 133, 134, 135, 136, 137, + 138, 572, 139, 497, 126, 155, 573, 140, 983, 1153, + 337, 1154, 1155, 1162, 428, 1168, 141, 286, 429, 142, + 439, 928, 929, 930, 129, 130, 143, 572, 501, 129, + 130, 440, 984, 985, 144, 145, 441, 155, 1010, 146, + 442, 155, 147, 1011, 951, 238, 148, 443, 239, 898, + 899, 900, 901, 902, 903, 1010, 878, 1119, 1034, 532, + 1012, 1311, 533, 1035, 1312, 534, 918, 149, 150, 151, + 152, 153, 444, 1051, 1058, 542, 445, 796, 1052, 1059, + 154, 155, 797, 798, 799, 800, 801, 802, 803, 804, + 805, 806, 807, 808, 446, 447, 155, 809, 810, 811, + 812, 813, 814, 815, 816, 817, 818, 819, 126, 730, + 731, 732, 733, 98, 99, 100, 101, 102, 103, 1223, + 448, 1224, 1225, 296, 297, 298, 299, 300, 129, 130, + 1063, 1067, 547, 449, 1073, 1064, 1068, 337, 155, 1074, + 568, 126, 337, 155, 543, 1075, 1080, 548, 1010, 238, + 513, 1081, 239, 1265, 1269, 1266, 574, 575, 551, 1270, + 1290, 129, 130, 1277, 516, 1291, 156, 523, 1331, 1293, + 224, 450, 1294, 1332, 1245, 1246, 1247, 1248, 1254, 1255, + 1256, 451, 241, 1174, 1175, 287, 229, 1278, 1279, 1280, + 452, 454, 301, 284, 248, 455, 456, 457, 281, 458, + 576, 294, 321, 462, 463, 464, 468, 473, 305, 474, + 242, 475, 343, 485, 492, 493, 496, 362, 323, 500, + 508, 364, 249, 250, 365, 251, 252, 253, 357, 230, + 509, 519, 521, 375, 522, 537, 541, 399, 344, 243, + 545, 282, 155, 363, 295, 546, 553, 556, 558, 559, + 562, 306, 563, 400, 571, 577, 578, 279, 579, 580, + 290, 324, 581, 582, 583, 244, 592, 304, 584, 245, + 155, 358, 254, 246, 598, 155, 376, 322, 129, 130, + 585, 586, 604, 605, 587, 606, 247, 255, 588, 589, + 256, 257, 590, 591, 258, 593, 401, 594, 595, 596, + 597, 599, 259, 600, 601, 260, 602, 261, 262, 263, + 603, 607, 264, 608, 609, 265, 610, 611, 612, 273, + 613, 614, 274, 275, 615, 276, 616, 617, 618, 288, + 619, 289, 620, 621, 622, 623, 302, 624, 303, 625, + 626, 627, 628, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 629, 630, 631, 632, + 633, 634, 635, 397, 398, 636, 637, 638, 639, 640, + 642, 643, 645, 646, 647, 648, 156, 649, 650, 224, + 652, 653, 654, 651, 656, 658, 659, 660, 661, 662, + 664, 674, 155, 665, 666, 229, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 667, 668, 917, 931, 941, 669, 399, 670, 672, 673, + 965, 675, 676, 677, 680, 678, 684, 685, 919, 937, + 942, 952, 400, 688, 681, 682, 792, 687, 230, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 689, 690, 691, 692, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 694, 695, 126, 693, 698, + 699, 920, 938, 943, 953, 401, 700, 701, 696, 231, + 697, 232, 703, 704, 706, 708, 707, 129, 130, 233, + 234, 235, 236, 237, 131, 709, 710, 711, 712, 132, + 133, 134, 713, 714, 721, 722, 723, 724, 238, 725, + 726, 239, 140, 32, 729, 735, 736, 737, 748, 240, + 738, 739, 740, 741, 749, 750, 742, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 743, 744, 745, 746, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 747, 126, 337, 751, 752, 754, + 755, 756, 757, 758, 760, 761, 791, 762, 883, 849, + 853, 857, 149, 150, 763, 129, 130, 764, 234, 235, + 861, 237, 131, 786, 865, 887, 768, 132, 133, 134, + 890, 894, 961, 769, 970, 974, 238, 990, 770, 239, + 991, 155, 771, 992, 993, 772, 773, 240, 774, 775, + 776, 777, 778, 780, 781, 782, 788, 994, 789, 790, + 996, 997, 1002, 1003, 1004, 1005, 1015, 1098, 1014, 1018, + 1017, 1020, 1021, 1023, 1024, 1027, 1026, 779, 1041, 1030, + 1040, 1044, 1043, 1045, 1046, 1047, 1048, 1049, 1050, 1055, + 1056, 1057, 1060, 1061, 1062, 1069, 1071, 1079, 1082, 1094, + 149, 150, 1086, 1087, 1089, 1090, 1100, 1092, 1095, 1093, + 1096, 1097, 1099, 1101, 1102, 1103, 1106, 1107, 1104, 1105, + 1108, 1109, 1110, 1111, 1114, 241, 1112, 1115, 343, 155, + 1116, 362, 1113, 1117, 1127, 364, 284, 248, 365, 1172, + 1198, 281, 1199, 1205, 357, 1176, 1134, 375, 321, 1200, + 1166, 379, 1206, 242, 344, 1201, 1211, 363, 1202, 1215, + 1152, 1185, 1128, 1203, 323, 249, 250, 917, 251, 252, + 253, 1183, 931, 1177, 1135, 1136, 941, 1137, 1138, 1139, + 1207, 1208, 243, 919, 282, 1226, 1209, 358, 937, 965, + 376, 1129, 942, 1167, 287, 1212, 1213, 301, 952, 1216, + 279, 1228, 1178, 1218, 1186, 1219, 1220, 324, 244, 1165, + 294, 1227, 245, 305, 1221, 254, 246, 1130, 1238, 1239, + 1184, 1131, 1236, 322, 1140, 1132, 920, 1244, 1179, 247, + 255, 938, 1180, 256, 257, 943, 1181, 258, 1133, 1141, + 1250, 953, 1142, 1143, 1229, 259, 1144, 1267, 260, 1182, + 261, 262, 263, 295, 1145, 264, 306, 1146, 265, 1147, + 1148, 1149, 273, 1251, 1150, 274, 275, 1151, 276, 290, + 1268, 1158, 304, 1273, 1159, 1160, 1274, 1161, 1156, 1275, + 1157, 1276, 1252, 1288, 1297, 1300, 1302, 644, 1305, 795, + 1327, 1253, 1307, 1328, 1329, 1333, 1337, 875, 787, 641, + 793, 1118, 1120, 1173, 1170, 1197, 982, 1214, 1258, 686, + 1171, 1259, 1122, 1204, 1296, 1260, 1121, 1196, 335, 1261, + 655, 1123, 1262, 1263, 1264, 1124, 1169, 679, 1271, 1282, + 1126, 1125, 1283, 1284, 1241, 1285, 1292, 979, 288, 1295, + 289, 302, 1304, 303, 1298, 1301, 1306, 1339, 1334, 1335, + 1299, 1336, 1340, 1240, 1243, 1195, 663, 1193, 1194, 1210, + 1217, 1242, 683, 1222, 657, 1235, 960, 702, 794, 1325, + 1303, 1338, 1237, 0, 0, 0, 0, 0, 1127, 0, + 0, 0, 671, 0, 1176, 0, 0, 705, 0, 0, + 1134, 1286, 0, 0, 1166, 0, 0, 0, 0, 1226, + 1185, 0, 0, 0, 1152, 0, 1128, 0, 0, 0, + 1183, 0, 1177, 0, 0, 1228, 0, 0, 1135, 1136, + 0, 1137, 1138, 1139, 0, 1227, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1129, 0, 1167, 0, 0, + 0, 1178, 0, 1186, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1165, 0, 0, 0, 0, 1229, 1184, + 0, 1130, 0, 0, 0, 1131, 0, 1179, 1140, 1132, + 0, 1180, 0, 0, 0, 1181, 0, 0, 0, 0, + 0, 0, 1133, 1141, 0, 0, 1142, 1143, 1182, 0, + 1144, 0, 0, 0, 0, 0, 0, 0, 1145, 0, + 0, 1146, 0, 1147, 1148, 1149, 0, 0, 1150, 0, + 0, 1151, 0, 0, 0, 1158, 0, 0, 1159, 1160, + 0, 1161, 1156, 0, 1157 }; const short Dhcp6Parser::yycheck_[] = { 71, 72, 73, 74, 75, 76, 16, 78, 79, 80, - 81, 739, 79, 73, 73, 79, 708, 72, 73, 74, - 75, 76, 733, 78, 79, 1021, 81, 1021, 1021, 1021, - 73, 1021, 0, 78, 79, 5, 21, 7, 128, 9, - 198, 213, 73, 73, 612, 73, 73, 73, 135, 136, - 100, 101, 16, 17, 7, 213, 100, 101, 126, 73, - 72, 73, 74, 75, 76, 133, 78, 79, 3, 81, - 648, 3, 21, 8, 13, 14, 8, 73, 74, 75, - 76, 30, 660, 661, 662, 73, 3, 135, 136, 73, - 3, 8, 73, 73, 10, 8, 81, 7, 83, 84, - 100, 101, 87, 88, 89, 7, 73, 73, 158, 159, - 73, 73, 7, 681, 73, 100, 101, 161, 162, 163, - 80, 3, 73, 213, 6, 73, 213, 73, 73, 73, - 7, 3, 73, 93, 6, 73, 100, 101, 7, 73, - 100, 101, 73, 73, 7, 73, 7, 74, 75, 74, - 75, 100, 101, 3, 154, 155, 156, 3, 8, 178, - 179, 121, 8, 213, 124, 21, 145, 146, 147, 213, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 7, 7, 7, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 38, 39, 40, 148, - 149, 150, 151, 181, 182, 183, 184, 52, 53, 54, - 55, 56, 57, 213, 190, 79, 3, 193, 194, 195, - 196, 8, 3, 128, 129, 81, 131, 8, 213, 138, - 139, 140, 141, 142, 143, 80, 81, 3, 216, 7, - 6, 6, 80, 213, 214, 215, 216, 3, 3, 213, - 7, 6, 8, 213, 3, 100, 101, 95, 96, 97, - 98, 99, 100, 101, 213, 3, 8, 4, 3, 1265, - 8, 1265, 1265, 1265, 3, 1265, 3, 122, 123, 8, - 3, 8, 8, 121, 4, 8, 124, 11, 12, 81, - 4, 15, 3, 3, 18, 19, 20, 8, 8, 81, - 82, 83, 84, 85, 86, 3, 3, 3, 100, 101, - 8, 8, 8, 4, 4, 3, 1027, 1009, 100, 101, - 8, 3, 3, 3, 6, 4, 1054, 8, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 213, 80, 3, - 3, 8, 4, 4, 8, 8, 90, 91, 213, 3, - 22, 23, 24, 25, 8, 213, 100, 101, 100, 101, - 3, 3, 3, 107, 4, 8, 8, 8, 112, 113, - 114, 115, 116, 117, 118, 4, 120, 189, 120, 191, - 192, 125, 4, 4, 126, 127, 128, 129, 130, 131, - 134, 3, 3, 137, 424, 425, 8, 8, 4, 3, - 144, 213, 4, 494, 8, 3, 3, 498, 152, 153, - 8, 213, 4, 157, 4, 8, 160, 4, 4, 510, - 164, 4, 513, 498, 108, 109, 110, 111, 4, 520, - 510, 510, 4, 4, 4, 510, 4, 4, 513, 530, - 4, 185, 186, 187, 188, 520, 4, 510, 4, 540, - 4, 4, 4, 197, 545, 530, 4, 4, 545, 510, - 510, 545, 510, 510, 510, 540, 498, 4, 4, 213, - 545, 213, 4, 4, 565, 540, 510, 4, 510, 4, - 545, 513, 4, 3, 8, 4, 4, 4, 520, 4, - 565, 4, 4, 4, 510, 4, 4, 513, 530, 213, - 4, 4, 510, 4, 520, 4, 510, 4, 540, 510, - 510, 100, 101, 545, 530, 4, 214, 214, 214, 214, - 214, 214, 214, 510, 510, 214, 216, 510, 510, 215, - 215, 510, 215, 565, 214, 214, 214, 214, 4, 510, - 216, 216, 510, 216, 510, 510, 510, 4, 4, 510, - 216, 216, 510, 4, 4, 4, 510, 216, 214, 510, - 510, 4, 510, 4, 4, 4, 513, 216, 513, 216, - 216, 4, 4, 520, 4, 520, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 4, - 4, 4, 4, 4, 4, 214, 185, 186, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 703, 4, 4, 706, 4, 4, 4, 4, - 216, 4, 4, 4, 213, 216, 4, 7, 4, 4, - 4, 706, 4, 214, 216, 4, 4, 4, 4, 4, - 214, 4, 4, 4, 4, 214, 4, 4, 739, 740, - 741, 214, 743, 4, 4, 4, 747, 4, 4, 214, - 4, 4, 4, 4, 739, 740, 741, 742, 743, 4, - 216, 216, 702, 216, 706, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 216, 4, - 4, 214, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 4, 4, 80, 214, 4, 4, 739, 740, 741, - 742, 743, 214, 4, 7, 92, 216, 94, 216, 4, - 4, 4, 214, 100, 101, 102, 103, 104, 105, 106, - 107, 4, 213, 7, 5, 112, 113, 114, 7, 7, - 213, 213, 213, 5, 121, 5, 5, 124, 125, 5, - 7, 213, 5, 5, 5, 132, 5, 7, 5, 5, - 213, 213, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 7, 7, 7, 7, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 7, - 80, 81, 7, 5, 7, 5, 5, 5, 119, 5, - 7, 180, 7, 7, 213, 213, 213, 213, 185, 186, - 100, 101, 213, 103, 104, 213, 106, 107, 213, 213, - 213, 213, 112, 113, 114, 7, 7, 7, 7, 213, - 7, 121, 7, 7, 124, 7, 213, 7, 4, 4, - 213, 4, 132, 213, 4, 4, 4, 4, 4, 213, - 4, 4, 4, 3, 213, 6, 3, 213, 213, 213, - 213, 213, 6, 6, 3, 213, 6, 3, 213, 6, - 3, 6, 6, 213, 213, 3, 6, 3, 214, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 213, 185, 186, 6, 3, 6, - 3, 214, 8, 4, 6, 4, 4, 4, 216, 216, - 214, 4, 4, 214, 214, 4, 4, 4, 214, 214, - 4, 1012, 216, 213, 1015, 214, 4, 1018, 4, 4, - 1021, 1018, 1012, 1012, 1018, 4, 214, 1012, 214, 214, - 1015, 1032, 1021, 1018, 1035, 4, 1021, 1038, 214, 1012, - 1015, 214, 4, 1018, 4, 216, 1021, 1032, 1021, 214, - 1035, 1012, 1012, 1054, 1012, 1012, 1012, 1032, 1059, 1032, - 1021, 1021, 1063, 1021, 1021, 1021, 214, 214, 1012, 1054, - 1012, 1072, 4, 1015, 1059, 1076, 1018, 1021, 1063, 1021, - 1081, 214, 214, 1084, 1069, 214, 1012, 1072, 1032, 216, - 1032, 4, 4, 1035, 1012, 1021, 1081, 1072, 1012, 1084, - 6, 1012, 1012, 1021, 214, 216, 1032, 1021, 3, 1035, - 1021, 1021, 1054, 4, 1032, 1012, 1012, 1059, 1032, 1012, - 1012, 1063, 1032, 1012, 1021, 1021, 8, 1069, 1021, 1021, - 1072, 1012, 1021, 8, 1012, 1032, 1012, 1012, 1012, 1081, - 1021, 1012, 1084, 1021, 1012, 1021, 1021, 1021, 1012, 4, - 1021, 1012, 1012, 1021, 1012, 1081, 8, 1021, 1084, 3, - 1021, 1021, 213, 1021, 1021, 213, 1021, 8, 4, 4, - 4, 213, 213, 4, 213, 5, 213, 4, 7, 4, - 4, 4, 4, 681, 732, 703, 706, 494, 498, 694, - 787, 1011, 1006, 213, 1030, 213, 1024, 1027, 1040, 213, - 1059, 1038, 548, 213, 1014, 1023, 1047, 213, 213, 213, - 1265, 1012, 213, 213, 77, 1015, 1020, 213, 213, 1017, - 213, 1018, 214, 213, 1081, 216, 1081, 1084, 540, 1084, - 213, 213, 216, 214, 214, 213, 545, 1081, 1083, 520, - 1035, 1037, 757, 1033, 1271, 1054, 1063, 1069, 1086, 743, - 1084, 565, 1073, 705, 569, 1286, 1307, 1327, -1, -1, - 1076, -1, 510, -1, 1265, -1, 513, -1, -1, -1, - 1271, -1, -1, -1, -1, -1, 1265, 1217, -1, -1, - 1265, -1, -1, -1, -1, 1286, 1271, 530, -1, -1, - 1265, -1, 1265, -1, -1, -1, 1271, -1, 1271, -1, - -1, 1286, -1, -1, 1265, 1265, -1, 1265, 1265, 1265, - -1, 1286, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1265, -1, 1265, -1, -1, -1, 1271, -1, 1271, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1265, - -1, -1, -1, -1, 1286, 1271, -1, 1265, -1, -1, - -1, 1265, -1, 1271, 1265, 1265, -1, 1271, -1, -1, - -1, 1271, -1, -1, -1, -1, -1, -1, 1265, 1265, - -1, -1, 1265, 1265, 1271, -1, 1265, -1, -1, -1, - -1, -1, -1, -1, 1265, -1, -1, 1265, -1, 1265, - 1265, 1265, -1, -1, 1265, -1, -1, 1265, -1, -1, - -1, 1265, -1, -1, 1265, 1265, -1, 1265, 1265, -1, - 1265 + 81, 743, 79, 73, 73, 79, 712, 72, 73, 74, + 75, 76, 737, 78, 79, 1025, 81, 1025, 1025, 1025, + 73, 1025, 128, 78, 79, 5, 21, 7, 7, 9, + 135, 136, 73, 73, 126, 73, 73, 73, 13, 14, + 615, 133, 16, 17, 181, 182, 183, 184, 199, 73, + 72, 73, 74, 75, 76, 0, 78, 79, 7, 81, + 652, 128, 129, 214, 131, 100, 101, 73, 74, 75, + 76, 3, 664, 665, 666, 73, 8, 7, 3, 73, + 217, 6, 73, 73, 3, 3, 81, 6, 83, 84, + 8, 7, 87, 88, 89, 7, 73, 73, 21, 3, + 73, 73, 6, 214, 73, 100, 101, 30, 214, 214, + 685, 3, 73, 7, 7, 73, 8, 73, 73, 73, + 7, 80, 73, 158, 159, 73, 100, 101, 7, 73, + 7, 3, 73, 73, 7, 73, 8, 74, 75, 74, + 75, 100, 101, 11, 12, 7, 3, 15, 3, 6, + 18, 19, 20, 8, 81, 82, 83, 84, 85, 86, + 191, 120, 7, 194, 195, 196, 197, 126, 127, 128, + 129, 130, 131, 100, 101, 135, 136, 100, 101, 214, + 100, 101, 178, 179, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 10, 79, 3, 3, 100, 101, 214, + 8, 8, 90, 91, 3, 148, 149, 150, 151, 8, + 6, 3, 100, 101, 214, 215, 216, 217, 4, 107, + 214, 161, 162, 163, 112, 113, 114, 115, 116, 117, + 118, 3, 120, 3, 80, 214, 8, 125, 8, 1269, + 81, 1269, 1269, 1269, 8, 1269, 134, 93, 3, 137, + 4, 154, 155, 156, 100, 101, 144, 3, 3, 100, + 101, 4, 8, 8, 152, 153, 4, 214, 3, 157, + 4, 214, 160, 8, 214, 121, 164, 4, 124, 138, + 139, 140, 141, 142, 143, 3, 1031, 1013, 3, 8, + 8, 3, 3, 8, 6, 8, 1058, 185, 186, 187, + 188, 189, 4, 3, 3, 8, 4, 21, 8, 8, + 198, 214, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 4, 4, 214, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 80, 108, + 109, 110, 111, 52, 53, 54, 55, 56, 57, 190, + 4, 192, 193, 95, 96, 97, 98, 99, 100, 101, + 3, 3, 8, 4, 3, 8, 8, 81, 214, 8, + 3, 80, 81, 214, 3, 8, 3, 3, 3, 121, + 3, 8, 124, 8, 3, 8, 426, 427, 3, 8, + 3, 100, 101, 8, 3, 8, 497, 3, 3, 8, + 501, 4, 8, 8, 22, 23, 24, 25, 38, 39, + 40, 4, 513, 122, 123, 516, 501, 145, 146, 147, + 4, 4, 523, 513, 513, 4, 4, 4, 513, 4, + 214, 516, 533, 4, 4, 4, 4, 4, 523, 4, + 513, 4, 543, 4, 4, 4, 4, 548, 533, 4, + 4, 548, 513, 513, 548, 513, 513, 513, 543, 501, + 4, 4, 4, 548, 4, 4, 4, 568, 543, 513, + 4, 513, 214, 548, 516, 4, 4, 4, 4, 4, + 4, 523, 4, 568, 4, 4, 4, 513, 4, 4, + 516, 533, 4, 4, 4, 513, 217, 523, 215, 513, + 214, 543, 513, 513, 4, 214, 548, 533, 100, 101, + 215, 215, 4, 4, 215, 4, 513, 513, 215, 215, + 513, 513, 215, 215, 513, 216, 568, 216, 216, 215, + 215, 215, 513, 215, 217, 513, 217, 513, 513, 513, + 217, 217, 513, 217, 217, 513, 4, 4, 4, 513, + 215, 4, 513, 513, 4, 513, 4, 4, 217, 516, + 217, 516, 217, 4, 4, 4, 523, 4, 523, 4, + 4, 4, 4, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 4, 215, 4, 4, + 4, 4, 4, 185, 186, 4, 217, 217, 4, 4, + 4, 217, 4, 4, 4, 4, 707, 4, 215, 710, + 4, 4, 4, 217, 4, 4, 215, 4, 215, 215, + 4, 215, 214, 4, 4, 710, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 4, 4, 743, 744, 745, 4, 747, 4, 4, 4, + 751, 4, 4, 4, 4, 217, 4, 4, 743, 744, + 745, 746, 747, 4, 217, 217, 706, 217, 710, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 4, 215, 4, 215, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 4, 4, 80, 215, 4, + 4, 743, 744, 745, 746, 747, 4, 4, 217, 92, + 217, 94, 4, 215, 4, 214, 7, 100, 101, 102, + 103, 104, 105, 106, 107, 7, 7, 7, 7, 112, + 113, 114, 5, 214, 214, 214, 5, 5, 121, 5, + 5, 124, 125, 7, 214, 5, 5, 5, 214, 132, + 7, 5, 5, 5, 214, 5, 7, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 7, 7, 7, 7, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 7, 80, 81, 7, 5, 5, + 5, 214, 214, 214, 214, 7, 5, 214, 119, 7, + 7, 7, 185, 186, 214, 100, 101, 214, 103, 104, + 7, 106, 107, 180, 7, 7, 214, 112, 113, 114, + 7, 7, 7, 214, 7, 7, 121, 4, 214, 124, + 4, 214, 214, 4, 4, 214, 214, 132, 214, 214, + 214, 214, 214, 214, 214, 214, 214, 4, 214, 214, + 4, 4, 4, 4, 4, 4, 3, 215, 6, 3, + 6, 6, 3, 6, 3, 3, 6, 685, 3, 6, + 6, 3, 6, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 214, 4, + 185, 186, 6, 3, 6, 3, 215, 8, 4, 6, + 4, 4, 217, 217, 215, 4, 4, 4, 215, 215, + 4, 4, 215, 215, 4, 1016, 217, 4, 1019, 214, + 4, 1022, 215, 4, 1025, 1022, 1016, 1016, 1022, 4, + 215, 1016, 215, 4, 1019, 1036, 1025, 1022, 1039, 215, + 1025, 1042, 4, 1016, 1019, 215, 217, 1022, 215, 4, + 1025, 1036, 1025, 215, 1039, 1016, 1016, 1058, 1016, 1016, + 1016, 1036, 1063, 1036, 1025, 1025, 1067, 1025, 1025, 1025, + 215, 215, 1016, 1058, 1016, 1076, 215, 1019, 1063, 1080, + 1022, 1025, 1067, 1025, 1085, 215, 215, 1088, 1073, 4, + 1016, 1076, 1036, 217, 1036, 4, 215, 1039, 1016, 1025, + 1085, 1076, 1016, 1088, 4, 1016, 1016, 1025, 6, 3, + 1036, 1025, 217, 1039, 1025, 1025, 1058, 4, 1036, 1016, + 1016, 1063, 1036, 1016, 1016, 1067, 1036, 1016, 1025, 1025, + 214, 1073, 1025, 1025, 1076, 1016, 1025, 8, 1016, 1036, + 1016, 1016, 1016, 1085, 1025, 1016, 1088, 1025, 1016, 1025, + 1025, 1025, 1016, 214, 1025, 1016, 1016, 1025, 1016, 1085, + 8, 1025, 1088, 4, 1025, 1025, 8, 1025, 1025, 3, + 1025, 8, 214, 4, 4, 4, 4, 501, 5, 710, + 4, 214, 7, 4, 4, 4, 4, 736, 698, 497, + 707, 1010, 1015, 1034, 1028, 1044, 791, 1063, 214, 551, + 1031, 214, 1018, 1051, 1269, 214, 1016, 1042, 77, 214, + 513, 1019, 214, 214, 214, 1021, 1027, 543, 214, 214, + 1024, 1022, 214, 214, 1087, 214, 214, 761, 1085, 214, + 1085, 1088, 214, 1088, 217, 215, 214, 214, 217, 215, + 1275, 215, 214, 1085, 1090, 1041, 523, 1037, 1039, 1058, + 1067, 1088, 548, 1073, 516, 1077, 747, 568, 709, 1311, + 1290, 1331, 1080, -1, -1, -1, -1, -1, 1269, -1, + -1, -1, 533, -1, 1275, -1, -1, 572, -1, -1, + 1269, 1221, -1, -1, 1269, -1, -1, -1, -1, 1290, + 1275, -1, -1, -1, 1269, -1, 1269, -1, -1, -1, + 1275, -1, 1275, -1, -1, 1290, -1, -1, 1269, 1269, + -1, 1269, 1269, 1269, -1, 1290, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1269, -1, 1269, -1, -1, + -1, 1275, -1, 1275, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1269, -1, -1, -1, -1, 1290, 1275, + -1, 1269, -1, -1, -1, 1269, -1, 1275, 1269, 1269, + -1, 1275, -1, -1, -1, 1275, -1, -1, -1, -1, + -1, -1, 1269, 1269, -1, -1, 1269, 1269, 1275, -1, + 1269, -1, -1, -1, -1, -1, -1, -1, 1269, -1, + -1, 1269, -1, 1269, 1269, 1269, -1, -1, 1269, -1, + -1, 1269, -1, -1, -1, 1269, -1, -1, 1269, 1269, + -1, 1269, 1269, -1, 1269 }; const short Dhcp6Parser::yystos_[] = { - 0, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 0, 5, 7, 9, 213, 214, 215, 216, 233, 234, - 235, 240, 7, 249, 7, 254, 7, 299, 7, 416, - 7, 496, 7, 512, 7, 529, 7, 448, 7, 454, - 7, 478, 7, 392, 7, 598, 7, 629, 241, 236, - 250, 255, 300, 417, 497, 513, 530, 449, 455, 479, - 393, 599, 630, 233, 242, 243, 213, 238, 239, 10, - 251, 253, 11, 12, 15, 18, 19, 20, 52, 53, + 0, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 0, 5, 7, 9, 214, 215, 216, 217, 234, 235, + 236, 241, 7, 250, 7, 255, 7, 301, 7, 418, + 7, 498, 7, 514, 7, 531, 7, 450, 7, 456, + 7, 480, 7, 394, 7, 600, 7, 631, 242, 237, + 251, 256, 302, 419, 499, 515, 532, 451, 457, 481, + 395, 601, 632, 234, 243, 244, 214, 239, 240, 10, + 252, 254, 11, 12, 15, 18, 19, 20, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 90, 91, 100, 101, 107, 112, 113, 114, 115, 116, 117, 118, 120, 125, 134, 137, 144, 152, 153, 157, 160, 164, 185, - 186, 187, 188, 197, 213, 248, 256, 257, 258, 260, + 186, 187, 188, 189, 198, 214, 249, 257, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 280, 282, 284, - 285, 286, 288, 290, 291, 292, 293, 295, 296, 297, - 306, 308, 310, 359, 365, 371, 377, 379, 386, 400, - 410, 430, 431, 432, 433, 438, 446, 472, 502, 504, - 523, 553, 565, 577, 578, 586, 596, 627, 636, 660, - 16, 17, 248, 301, 302, 303, 305, 502, 504, 92, - 94, 102, 103, 104, 105, 106, 121, 124, 132, 248, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 274, 275, 276, 277, 280, 282, 284, - 285, 286, 288, 290, 418, 419, 420, 422, 424, 426, - 428, 430, 431, 432, 433, 436, 437, 472, 490, 502, - 504, 506, 523, 548, 93, 248, 426, 428, 472, 498, - 499, 500, 502, 504, 95, 96, 97, 98, 99, 248, - 426, 428, 472, 502, 504, 514, 515, 516, 518, 519, - 521, 522, 120, 126, 127, 128, 129, 130, 131, 248, - 472, 502, 504, 531, 532, 533, 534, 536, 538, 540, - 542, 544, 546, 446, 21, 81, 83, 84, 87, 88, - 89, 248, 328, 456, 457, 458, 459, 460, 461, 462, - 464, 466, 468, 469, 471, 502, 504, 82, 85, 86, - 248, 328, 460, 466, 480, 481, 482, 483, 484, 486, - 487, 488, 489, 502, 504, 135, 136, 248, 394, 395, - 396, 398, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 185, 186, 248, 502, 504, - 600, 601, 602, 603, 605, 607, 608, 610, 611, 612, - 615, 617, 618, 619, 621, 623, 625, 13, 14, 631, - 632, 633, 635, 6, 3, 4, 8, 3, 252, 3, - 8, 259, 628, 298, 307, 309, 311, 4, 4, 4, + 271, 272, 273, 274, 275, 276, 277, 278, 281, 283, + 285, 286, 287, 289, 291, 292, 293, 294, 296, 297, + 298, 299, 308, 310, 312, 361, 367, 373, 379, 381, + 388, 402, 412, 432, 433, 434, 435, 440, 448, 474, + 504, 506, 525, 555, 567, 579, 580, 588, 598, 629, + 638, 662, 16, 17, 249, 303, 304, 305, 307, 504, + 506, 92, 94, 102, 103, 104, 105, 106, 121, 124, + 132, 249, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 275, 276, 277, 278, 281, + 283, 285, 286, 287, 289, 291, 420, 421, 422, 424, + 426, 428, 430, 432, 433, 434, 435, 438, 439, 474, + 492, 504, 506, 508, 525, 550, 93, 249, 428, 430, + 474, 500, 501, 502, 504, 506, 95, 96, 97, 98, + 99, 249, 428, 430, 474, 504, 506, 516, 517, 518, + 520, 521, 523, 524, 120, 126, 127, 128, 129, 130, + 131, 249, 474, 504, 506, 533, 534, 535, 536, 538, + 540, 542, 544, 546, 548, 448, 21, 81, 83, 84, + 87, 88, 89, 249, 330, 458, 459, 460, 461, 462, + 463, 464, 466, 468, 470, 471, 473, 504, 506, 82, + 85, 86, 249, 330, 462, 468, 482, 483, 484, 485, + 486, 488, 489, 490, 491, 504, 506, 135, 136, 249, + 396, 397, 398, 400, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 185, 186, 249, + 504, 506, 602, 603, 604, 605, 607, 609, 610, 612, + 613, 614, 617, 619, 620, 621, 623, 625, 627, 13, + 14, 633, 634, 635, 637, 6, 3, 4, 8, 3, + 253, 3, 8, 260, 630, 300, 309, 311, 313, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 294, 4, 4, 4, 4, 4, 278, 281, 283, - 4, 4, 4, 411, 447, 473, 4, 439, 503, 505, - 434, 4, 4, 4, 366, 378, 372, 360, 554, 524, - 387, 401, 566, 4, 380, 579, 587, 597, 287, 289, - 4, 637, 661, 4, 3, 8, 304, 4, 3, 8, - 491, 507, 421, 423, 425, 4, 4, 429, 427, 549, - 3, 8, 501, 3, 8, 517, 4, 520, 4, 4, - 3, 8, 547, 535, 537, 539, 541, 543, 545, 8, - 3, 8, 463, 329, 4, 467, 465, 470, 4, 8, - 3, 485, 4, 4, 8, 3, 397, 399, 3, 8, - 4, 604, 606, 4, 609, 4, 4, 613, 616, 4, - 4, 620, 622, 624, 626, 3, 8, 634, 4, 3, - 8, 233, 233, 213, 4, 4, 4, 4, 4, 4, - 4, 214, 214, 214, 214, 214, 214, 214, 214, 216, - 215, 215, 215, 214, 214, 4, 214, 214, 216, 216, - 216, 4, 4, 4, 216, 216, 216, 4, 4, 4, - 214, 4, 4, 4, 4, 216, 216, 216, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 214, 4, 4, - 4, 4, 4, 4, 216, 4, 4, 257, 4, 216, - 302, 4, 4, 4, 4, 4, 214, 216, 4, 4, - 4, 419, 4, 499, 4, 214, 4, 214, 214, 515, - 4, 4, 4, 4, 4, 4, 4, 533, 4, 4, - 214, 4, 4, 4, 216, 458, 4, 216, 216, 482, - 4, 4, 395, 216, 4, 4, 214, 4, 214, 214, - 4, 4, 216, 216, 4, 4, 4, 4, 601, 4, - 214, 632, 4, 7, 213, 7, 7, 7, 7, 5, - 213, 181, 182, 183, 184, 216, 279, 213, 213, 5, - 5, 5, 5, 235, 237, 213, 108, 109, 110, 111, - 435, 5, 5, 5, 7, 5, 5, 5, 7, 7, - 7, 7, 7, 7, 213, 213, 5, 7, 5, 244, - 5, 5, 213, 213, 213, 244, 213, 7, 213, 213, - 213, 244, 244, 244, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 237, 213, 213, 213, 178, - 179, 614, 180, 279, 213, 213, 213, 5, 233, 256, - 631, 301, 21, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 248, 316, 317, 318, - 321, 323, 325, 327, 328, 330, 331, 332, 333, 334, - 335, 338, 339, 340, 341, 342, 344, 345, 347, 349, - 351, 353, 355, 357, 316, 7, 312, 313, 314, 7, - 412, 413, 414, 7, 450, 451, 452, 7, 474, 475, - 476, 7, 440, 441, 442, 128, 213, 367, 368, 369, - 370, 242, 129, 131, 369, 373, 374, 375, 376, 119, - 361, 362, 363, 7, 555, 556, 7, 525, 526, 527, - 7, 388, 389, 390, 138, 139, 140, 141, 142, 143, - 402, 403, 404, 405, 406, 407, 408, 409, 21, 148, - 149, 150, 151, 248, 330, 502, 504, 567, 568, 569, - 572, 573, 575, 576, 154, 155, 156, 248, 381, 382, - 383, 384, 385, 502, 504, 158, 159, 248, 502, 504, - 580, 581, 582, 584, 161, 162, 163, 213, 502, 504, - 588, 589, 590, 591, 593, 594, 600, 7, 638, 639, - 198, 248, 662, 663, 664, 245, 7, 492, 493, 494, - 7, 508, 509, 510, 133, 534, 550, 551, 312, 8, - 8, 8, 319, 322, 324, 326, 4, 4, 4, 4, - 4, 343, 4, 4, 336, 346, 348, 350, 4, 4, - 4, 4, 352, 354, 356, 358, 3, 8, 8, 315, - 6, 3, 415, 6, 3, 453, 6, 3, 477, 6, - 3, 443, 6, 3, 3, 6, 6, 3, 6, 364, - 3, 8, 557, 3, 6, 528, 6, 3, 391, 6, - 3, 4, 4, 4, 4, 4, 4, 3, 8, 570, - 574, 4, 4, 4, 3, 8, 4, 4, 4, 3, - 8, 583, 585, 3, 8, 4, 592, 4, 595, 3, - 8, 8, 640, 3, 6, 4, 3, 8, 213, 246, - 247, 495, 6, 3, 511, 6, 3, 552, 8, 6, - 4, 4, 4, 4, 214, 216, 214, 216, 214, 4, - 214, 214, 4, 4, 4, 4, 214, 214, 216, 214, - 4, 4, 4, 4, 317, 316, 314, 418, 414, 456, - 452, 480, 476, 248, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 274, 275, 276, - 277, 280, 282, 284, 285, 286, 288, 290, 328, 410, - 422, 424, 426, 428, 430, 431, 432, 433, 437, 444, - 445, 472, 502, 504, 548, 442, 368, 374, 4, 362, - 122, 123, 248, 260, 261, 262, 263, 264, 265, 328, - 472, 502, 504, 558, 559, 560, 561, 562, 564, 556, - 531, 527, 394, 390, 214, 214, 214, 214, 214, 214, - 403, 4, 4, 214, 214, 214, 568, 216, 214, 214, - 382, 4, 4, 581, 216, 4, 214, 4, 589, 189, - 191, 192, 248, 328, 502, 504, 641, 642, 643, 644, - 646, 639, 216, 663, 6, 3, 498, 494, 514, 510, - 4, 22, 23, 24, 25, 320, 213, 213, 213, 213, - 38, 39, 40, 337, 213, 213, 213, 213, 213, 213, - 213, 8, 8, 8, 8, 3, 8, 213, 563, 4, - 8, 3, 8, 8, 145, 146, 147, 571, 213, 213, - 213, 213, 233, 647, 4, 645, 3, 8, 213, 8, - 8, 213, 445, 4, 216, 560, 4, 214, 4, 642, - 213, 5, 213, 7, 648, 649, 650, 3, 6, 190, - 193, 194, 195, 196, 651, 652, 653, 655, 656, 657, - 658, 649, 654, 4, 4, 4, 659, 3, 8, 4, - 216, 214, 214, 4, 652, 213, 213 + 4, 4, 4, 295, 4, 4, 4, 4, 4, 279, + 282, 284, 4, 4, 4, 413, 449, 475, 4, 441, + 505, 507, 436, 4, 4, 4, 368, 380, 374, 362, + 556, 526, 389, 403, 568, 4, 382, 581, 589, 599, + 288, 290, 4, 4, 639, 663, 4, 3, 8, 306, + 4, 3, 8, 493, 509, 423, 425, 427, 4, 4, + 431, 429, 551, 3, 8, 503, 3, 8, 519, 4, + 522, 4, 4, 3, 8, 549, 537, 539, 541, 543, + 545, 547, 8, 3, 8, 465, 331, 4, 469, 467, + 472, 4, 8, 3, 487, 4, 4, 8, 3, 399, + 401, 3, 8, 4, 606, 608, 4, 611, 4, 4, + 615, 618, 4, 4, 622, 624, 626, 628, 3, 8, + 636, 4, 3, 8, 234, 234, 214, 4, 4, 4, + 4, 4, 4, 4, 215, 215, 215, 215, 215, 215, + 215, 215, 217, 216, 216, 216, 215, 215, 4, 215, + 215, 217, 217, 217, 4, 4, 4, 217, 217, 217, + 4, 4, 4, 215, 4, 4, 4, 4, 217, 217, + 217, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 215, 4, 4, 4, 4, 4, 4, 217, 217, 4, + 4, 258, 4, 217, 304, 4, 4, 4, 4, 4, + 215, 217, 4, 4, 4, 421, 4, 501, 4, 215, + 4, 215, 215, 517, 4, 4, 4, 4, 4, 4, + 4, 535, 4, 4, 215, 4, 4, 4, 217, 460, + 4, 217, 217, 484, 4, 4, 397, 217, 4, 4, + 215, 4, 215, 215, 4, 4, 217, 217, 4, 4, + 4, 4, 603, 4, 215, 634, 4, 7, 214, 7, + 7, 7, 7, 5, 214, 181, 182, 183, 184, 217, + 280, 214, 214, 5, 5, 5, 5, 236, 238, 214, + 108, 109, 110, 111, 437, 5, 5, 5, 7, 5, + 5, 5, 7, 7, 7, 7, 7, 7, 214, 214, + 5, 7, 5, 245, 5, 5, 214, 214, 214, 245, + 214, 7, 214, 214, 214, 245, 245, 245, 214, 214, + 214, 214, 214, 214, 214, 214, 214, 214, 214, 238, + 214, 214, 214, 178, 179, 616, 180, 280, 214, 214, + 214, 5, 234, 257, 633, 303, 21, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 249, 318, 319, 320, 323, 325, 327, 329, 330, 332, + 333, 334, 335, 336, 337, 340, 341, 342, 343, 344, + 346, 347, 349, 351, 353, 355, 357, 359, 318, 7, + 314, 315, 316, 7, 414, 415, 416, 7, 452, 453, + 454, 7, 476, 477, 478, 7, 442, 443, 444, 128, + 214, 369, 370, 371, 372, 243, 129, 131, 371, 375, + 376, 377, 378, 119, 363, 364, 365, 7, 557, 558, + 7, 527, 528, 529, 7, 390, 391, 392, 138, 139, + 140, 141, 142, 143, 404, 405, 406, 407, 408, 409, + 410, 411, 21, 148, 149, 150, 151, 249, 332, 504, + 506, 569, 570, 571, 574, 575, 577, 578, 154, 155, + 156, 249, 383, 384, 385, 386, 387, 504, 506, 158, + 159, 249, 504, 506, 582, 583, 584, 586, 161, 162, + 163, 214, 504, 506, 590, 591, 592, 593, 595, 596, + 602, 7, 640, 641, 199, 249, 664, 665, 666, 246, + 7, 494, 495, 496, 7, 510, 511, 512, 133, 536, + 552, 553, 314, 8, 8, 8, 321, 324, 326, 328, + 4, 4, 4, 4, 4, 345, 4, 4, 338, 348, + 350, 352, 4, 4, 4, 4, 354, 356, 358, 360, + 3, 8, 8, 317, 6, 3, 417, 6, 3, 455, + 6, 3, 479, 6, 3, 445, 6, 3, 3, 6, + 6, 3, 6, 366, 3, 8, 559, 3, 6, 530, + 6, 3, 393, 6, 3, 4, 4, 4, 4, 4, + 4, 3, 8, 572, 576, 4, 4, 4, 3, 8, + 4, 4, 4, 3, 8, 585, 587, 3, 8, 4, + 594, 4, 597, 3, 8, 8, 642, 3, 6, 4, + 3, 8, 214, 247, 248, 497, 6, 3, 513, 6, + 3, 554, 8, 6, 4, 4, 4, 4, 215, 217, + 215, 217, 215, 4, 215, 215, 4, 4, 4, 4, + 215, 215, 217, 215, 4, 4, 4, 4, 319, 318, + 316, 420, 416, 458, 454, 482, 478, 249, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 275, 276, 277, 278, 281, 283, 285, 286, 287, + 289, 291, 330, 412, 424, 426, 428, 430, 432, 433, + 434, 435, 439, 446, 447, 474, 504, 506, 550, 444, + 370, 376, 4, 364, 122, 123, 249, 261, 262, 263, + 264, 265, 266, 330, 474, 504, 506, 560, 561, 562, + 563, 564, 566, 558, 533, 529, 396, 392, 215, 215, + 215, 215, 215, 215, 405, 4, 4, 215, 215, 215, + 570, 217, 215, 215, 384, 4, 4, 583, 217, 4, + 215, 4, 591, 190, 192, 193, 249, 330, 504, 506, + 643, 644, 645, 646, 648, 641, 217, 665, 6, 3, + 500, 496, 516, 512, 4, 22, 23, 24, 25, 322, + 214, 214, 214, 214, 38, 39, 40, 339, 214, 214, + 214, 214, 214, 214, 214, 8, 8, 8, 8, 3, + 8, 214, 565, 4, 8, 3, 8, 8, 145, 146, + 147, 573, 214, 214, 214, 214, 234, 649, 4, 647, + 3, 8, 214, 8, 8, 214, 447, 4, 217, 562, + 4, 215, 4, 644, 214, 5, 214, 7, 650, 651, + 652, 3, 6, 191, 194, 195, 196, 197, 653, 654, + 655, 657, 658, 659, 660, 651, 656, 4, 4, 4, + 661, 3, 8, 4, 217, 215, 215, 4, 654, 214, + 214 }; const short Dhcp6Parser::yyr1_[] = { - 0, 217, 219, 218, 220, 218, 221, 218, 222, 218, - 223, 218, 224, 218, 225, 218, 226, 218, 227, 218, - 228, 218, 229, 218, 230, 218, 231, 218, 232, 218, - 233, 233, 233, 233, 233, 233, 233, 234, 236, 235, - 237, 238, 238, 239, 239, 239, 241, 240, 242, 242, - 243, 243, 243, 245, 244, 246, 246, 247, 247, 247, - 248, 250, 249, 252, 251, 251, 253, 255, 254, 256, - 256, 256, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 259, 258, 260, 261, 262, + 0, 218, 220, 219, 221, 219, 222, 219, 223, 219, + 224, 219, 225, 219, 226, 219, 227, 219, 228, 219, + 229, 219, 230, 219, 231, 219, 232, 219, 233, 219, + 234, 234, 234, 234, 234, 234, 234, 235, 237, 236, + 238, 239, 239, 240, 240, 240, 242, 241, 243, 243, + 244, 244, 244, 246, 245, 247, 247, 248, 248, 248, + 249, 251, 250, 253, 252, 252, 254, 256, 255, 257, + 257, 257, 258, 258, 258, 258, 258, 258, 258, 258, + 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, + 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, + 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, + 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, + 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, + 258, 258, 258, 258, 258, 258, 260, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 278, 277, 279, 279, 279, 279, - 279, 281, 280, 283, 282, 284, 285, 287, 286, 289, - 288, 290, 291, 292, 294, 293, 295, 296, 298, 297, - 300, 299, 301, 301, 301, 302, 302, 302, 302, 302, - 304, 303, 305, 307, 306, 309, 308, 311, 310, 312, - 312, 313, 313, 313, 315, 314, 316, 316, 316, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 319, 318, 320, 320, 320, - 320, 322, 321, 324, 323, 326, 325, 327, 329, 328, - 330, 331, 332, 333, 334, 336, 335, 337, 337, 337, - 338, 339, 340, 341, 343, 342, 344, 346, 345, 348, + 273, 274, 275, 276, 277, 279, 278, 280, 280, 280, + 280, 280, 282, 281, 284, 283, 285, 286, 288, 287, + 290, 289, 291, 292, 293, 295, 294, 296, 297, 298, + 300, 299, 302, 301, 303, 303, 303, 304, 304, 304, + 304, 304, 306, 305, 307, 309, 308, 311, 310, 313, + 312, 314, 314, 315, 315, 315, 317, 316, 318, 318, + 318, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 321, 320, 322, + 322, 322, 322, 324, 323, 326, 325, 328, 327, 329, + 331, 330, 332, 333, 334, 335, 336, 338, 337, 339, + 339, 339, 340, 341, 342, 343, 345, 344, 346, 348, 347, 350, 349, 352, 351, 354, 353, 356, 355, 358, - 357, 360, 359, 361, 361, 361, 362, 364, 363, 366, - 365, 367, 367, 367, 368, 368, 369, 370, 372, 371, - 373, 373, 373, 374, 374, 374, 375, 376, 378, 377, - 380, 379, 381, 381, 381, 382, 382, 382, 382, 382, - 382, 383, 384, 385, 387, 386, 388, 388, 389, 389, - 389, 391, 390, 393, 392, 394, 394, 394, 394, 395, - 395, 397, 396, 399, 398, 401, 400, 402, 402, 402, - 403, 403, 403, 403, 403, 403, 404, 405, 406, 407, - 408, 409, 411, 410, 412, 412, 413, 413, 413, 415, - 414, 417, 416, 418, 418, 418, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 421, - 420, 423, 422, 425, 424, 427, 426, 429, 428, 430, - 431, 432, 434, 433, 435, 435, 435, 435, 436, 437, - 439, 438, 440, 440, 441, 441, 441, 443, 442, 444, - 444, 444, 445, 445, 445, 445, 445, 445, 445, 445, - 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, - 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, - 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, - 445, 445, 447, 446, 449, 448, 450, 450, 451, 451, - 451, 453, 452, 455, 454, 456, 456, 457, 457, 457, - 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, - 459, 460, 461, 463, 462, 465, 464, 467, 466, 468, - 470, 469, 471, 473, 472, 474, 474, 475, 475, 475, - 477, 476, 479, 478, 480, 480, 481, 481, 481, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 483, 485, - 484, 486, 487, 488, 489, 491, 490, 492, 492, 493, - 493, 493, 495, 494, 497, 496, 498, 498, 498, 499, - 499, 499, 499, 499, 499, 499, 501, 500, 503, 502, - 505, 504, 507, 506, 508, 508, 509, 509, 509, 511, - 510, 513, 512, 514, 514, 514, 515, 515, 515, 515, - 515, 515, 515, 515, 515, 515, 515, 517, 516, 518, - 520, 519, 521, 522, 524, 523, 525, 525, 526, 526, - 526, 528, 527, 530, 529, 531, 531, 532, 532, 532, - 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, - 533, 535, 534, 537, 536, 539, 538, 541, 540, 543, - 542, 545, 544, 547, 546, 549, 548, 550, 550, 552, - 551, 554, 553, 555, 555, 555, 557, 556, 558, 558, - 559, 559, 559, 560, 560, 560, 560, 560, 560, 560, - 560, 560, 560, 560, 560, 560, 561, 563, 562, 564, - 566, 565, 567, 567, 567, 568, 568, 568, 568, 568, - 568, 568, 568, 568, 570, 569, 571, 571, 571, 572, - 574, 573, 575, 576, 577, 579, 578, 580, 580, 580, - 581, 581, 581, 581, 581, 583, 582, 585, 584, 587, - 586, 588, 588, 588, 589, 589, 589, 589, 589, 589, - 590, 592, 591, 593, 595, 594, 597, 596, 599, 598, - 600, 600, 600, 601, 601, 601, 601, 601, 601, 601, - 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, - 601, 602, 604, 603, 606, 605, 607, 609, 608, 610, - 611, 613, 612, 614, 614, 616, 615, 617, 618, 620, - 619, 622, 621, 624, 623, 626, 625, 628, 627, 630, - 629, 631, 631, 631, 632, 632, 634, 633, 635, 637, - 636, 638, 638, 638, 640, 639, 641, 641, 641, 642, - 642, 642, 642, 642, 642, 642, 643, 645, 644, 647, - 646, 648, 648, 648, 650, 649, 651, 651, 651, 652, - 652, 652, 652, 652, 654, 653, 655, 656, 657, 659, - 658, 661, 660, 662, 662, 662, 663, 663, 664 + 357, 360, 359, 362, 361, 363, 363, 363, 364, 366, + 365, 368, 367, 369, 369, 369, 370, 370, 371, 372, + 374, 373, 375, 375, 375, 376, 376, 376, 377, 378, + 380, 379, 382, 381, 383, 383, 383, 384, 384, 384, + 384, 384, 384, 385, 386, 387, 389, 388, 390, 390, + 391, 391, 391, 393, 392, 395, 394, 396, 396, 396, + 396, 397, 397, 399, 398, 401, 400, 403, 402, 404, + 404, 404, 405, 405, 405, 405, 405, 405, 406, 407, + 408, 409, 410, 411, 413, 412, 414, 414, 415, 415, + 415, 417, 416, 419, 418, 420, 420, 420, 421, 421, + 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, + 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, + 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, + 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, + 421, 423, 422, 425, 424, 427, 426, 429, 428, 431, + 430, 432, 433, 434, 436, 435, 437, 437, 437, 437, + 438, 439, 441, 440, 442, 442, 443, 443, 443, 445, + 444, 446, 446, 446, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 449, 448, 451, 450, 452, 452, + 453, 453, 453, 455, 454, 457, 456, 458, 458, 459, + 459, 459, 460, 460, 460, 460, 460, 460, 460, 460, + 460, 460, 461, 462, 463, 465, 464, 467, 466, 469, + 468, 470, 472, 471, 473, 475, 474, 476, 476, 477, + 477, 477, 479, 478, 481, 480, 482, 482, 483, 483, + 483, 484, 484, 484, 484, 484, 484, 484, 484, 484, + 485, 487, 486, 488, 489, 490, 491, 493, 492, 494, + 494, 495, 495, 495, 497, 496, 499, 498, 500, 500, + 500, 501, 501, 501, 501, 501, 501, 501, 503, 502, + 505, 504, 507, 506, 509, 508, 510, 510, 511, 511, + 511, 513, 512, 515, 514, 516, 516, 516, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 519, + 518, 520, 522, 521, 523, 524, 526, 525, 527, 527, + 528, 528, 528, 530, 529, 532, 531, 533, 533, 534, + 534, 534, 535, 535, 535, 535, 535, 535, 535, 535, + 535, 535, 535, 537, 536, 539, 538, 541, 540, 543, + 542, 545, 544, 547, 546, 549, 548, 551, 550, 552, + 552, 554, 553, 556, 555, 557, 557, 557, 559, 558, + 560, 560, 561, 561, 561, 562, 562, 562, 562, 562, + 562, 562, 562, 562, 562, 562, 562, 562, 563, 565, + 564, 566, 568, 567, 569, 569, 569, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 572, 571, 573, 573, + 573, 574, 576, 575, 577, 578, 579, 581, 580, 582, + 582, 582, 583, 583, 583, 583, 583, 585, 584, 587, + 586, 589, 588, 590, 590, 590, 591, 591, 591, 591, + 591, 591, 592, 594, 593, 595, 597, 596, 599, 598, + 601, 600, 602, 602, 602, 603, 603, 603, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 603, 603, 604, 606, 605, 608, 607, 609, 611, + 610, 612, 613, 615, 614, 616, 616, 618, 617, 619, + 620, 622, 621, 624, 623, 626, 625, 628, 627, 630, + 629, 632, 631, 633, 633, 633, 634, 634, 636, 635, + 637, 639, 638, 640, 640, 640, 642, 641, 643, 643, + 643, 644, 644, 644, 644, 644, 644, 644, 645, 647, + 646, 649, 648, 650, 650, 650, 652, 651, 653, 653, + 653, 654, 654, 654, 654, 654, 656, 655, 657, 658, + 659, 661, 660, 663, 662, 664, 664, 664, 665, 665, + 666 }; const signed char @@ -6028,80 +6042,81 @@ namespace isc { namespace dhcp { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 4, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 0, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 0, 4, 1, 1, 1, 1, - 1, 0, 4, 0, 4, 3, 3, 0, 4, 0, - 4, 3, 3, 3, 0, 4, 3, 3, 0, 6, - 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, - 0, 4, 3, 0, 6, 0, 6, 0, 6, 0, - 1, 1, 3, 2, 0, 4, 1, 3, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 4, 1, 1, 1, - 1, 0, 4, 0, 4, 0, 4, 3, 0, 4, 3, 3, 3, 3, 3, 0, 4, 1, 1, 1, - 3, 3, 3, 3, 0, 4, 3, 0, 4, 0, + 1, 1, 0, 4, 0, 4, 3, 3, 0, 4, + 0, 4, 3, 3, 3, 0, 4, 3, 3, 3, + 0, 6, 0, 4, 1, 3, 2, 1, 1, 1, + 1, 1, 0, 4, 3, 0, 6, 0, 6, 0, + 6, 0, 1, 1, 3, 2, 0, 4, 1, 3, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 4, 1, + 1, 1, 1, 0, 4, 0, 4, 0, 4, 3, + 0, 4, 3, 3, 3, 3, 3, 0, 4, 1, + 1, 1, 3, 3, 3, 3, 0, 4, 3, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, - 4, 0, 6, 1, 3, 2, 1, 0, 4, 0, - 6, 1, 3, 2, 1, 1, 1, 1, 0, 6, - 1, 3, 2, 1, 1, 1, 1, 1, 0, 6, + 4, 0, 4, 0, 6, 1, 3, 2, 1, 0, + 4, 0, 6, 1, 3, 2, 1, 1, 1, 1, 0, 6, 1, 3, 2, 1, 1, 1, 1, 1, - 1, 3, 3, 3, 0, 6, 0, 1, 1, 3, + 0, 6, 0, 6, 1, 3, 2, 1, 1, 1, + 1, 1, 1, 3, 3, 3, 0, 6, 0, 1, + 1, 3, 2, 0, 4, 0, 4, 1, 3, 2, + 1, 1, 1, 0, 4, 0, 4, 0, 6, 1, + 3, 2, 1, 1, 1, 1, 1, 1, 3, 3, + 3, 3, 3, 3, 0, 6, 0, 1, 1, 3, 2, 0, 4, 0, 4, 1, 3, 2, 1, 1, - 1, 0, 4, 0, 4, 0, 6, 1, 3, 2, - 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, - 3, 3, 0, 6, 0, 1, 1, 3, 2, 0, - 4, 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 4, 0, 4, 0, 4, 0, 4, 0, 4, 3, - 3, 3, 0, 4, 1, 1, 1, 1, 3, 3, - 0, 6, 0, 1, 1, 3, 2, 0, 4, 1, - 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 4, 0, 4, 0, 4, 0, 4, 0, + 4, 3, 3, 3, 0, 4, 1, 1, 1, 1, + 3, 3, 0, 6, 0, 1, 1, 3, 2, 0, + 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 6, 0, 4, 0, 1, 1, 3, - 2, 0, 4, 0, 4, 0, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 0, 4, 0, 4, 0, 4, 1, - 0, 4, 3, 0, 6, 0, 1, 1, 3, 2, - 0, 4, 0, 4, 0, 1, 1, 3, 2, 1, + 1, 1, 1, 1, 0, 6, 0, 4, 0, 1, + 1, 3, 2, 0, 4, 0, 4, 0, 1, 1, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 0, 4, 0, 4, 0, + 4, 1, 0, 4, 3, 0, 6, 0, 1, 1, + 3, 2, 0, 4, 0, 4, 0, 1, 1, 3, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 4, 1, 1, 3, 3, 0, 6, 0, + 1, 1, 3, 2, 0, 4, 0, 4, 1, 3, + 2, 1, 1, 1, 1, 1, 1, 1, 0, 4, + 0, 4, 0, 4, 0, 6, 0, 1, 1, 3, + 2, 0, 4, 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 4, 1, 1, 3, 3, 0, 6, 0, 1, 1, - 3, 2, 0, 4, 0, 4, 1, 3, 2, 1, - 1, 1, 1, 1, 1, 1, 0, 4, 0, 4, - 0, 4, 0, 6, 0, 1, 1, 3, 2, 0, - 4, 0, 4, 1, 3, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 4, 3, - 0, 4, 3, 3, 0, 6, 0, 1, 1, 3, - 2, 0, 4, 0, 4, 0, 1, 1, 3, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 4, 0, 4, 0, 4, 0, 4, 0, - 4, 0, 4, 0, 4, 0, 6, 1, 1, 0, - 4, 0, 6, 1, 3, 2, 0, 4, 0, 1, - 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 4, 3, - 0, 6, 1, 3, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 4, 1, 1, 1, 3, - 0, 4, 3, 3, 3, 0, 6, 1, 3, 2, - 1, 1, 1, 1, 1, 0, 4, 0, 4, 0, - 6, 1, 3, 2, 1, 1, 1, 1, 1, 1, - 3, 0, 4, 3, 0, 4, 0, 6, 0, 4, - 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, + 4, 3, 0, 4, 3, 3, 0, 6, 0, 1, + 1, 3, 2, 0, 4, 0, 4, 0, 1, 1, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 4, 0, 4, 0, 4, 0, + 4, 0, 4, 0, 4, 0, 4, 0, 6, 1, + 1, 0, 4, 0, 6, 1, 3, 2, 0, 4, + 0, 1, 1, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 4, 3, 0, 6, 1, 3, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 4, 1, 1, + 1, 3, 0, 4, 3, 3, 3, 0, 6, 1, + 3, 2, 1, 1, 1, 1, 1, 0, 4, 0, + 4, 0, 6, 1, 3, 2, 1, 1, 1, 1, + 1, 1, 3, 0, 4, 3, 0, 4, 0, 6, + 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 0, 4, 0, 4, 3, 0, 4, 3, - 3, 0, 4, 1, 1, 0, 4, 3, 3, 0, - 4, 0, 4, 0, 4, 0, 4, 0, 6, 0, - 4, 1, 3, 2, 1, 1, 0, 6, 3, 0, - 6, 1, 3, 2, 0, 4, 1, 3, 2, 1, - 1, 1, 1, 1, 1, 1, 3, 0, 4, 0, - 6, 1, 3, 2, 0, 4, 1, 3, 2, 1, - 1, 1, 1, 1, 0, 4, 3, 3, 3, 0, - 4, 0, 6, 1, 3, 2, 1, 1, 3 + 1, 1, 1, 3, 0, 4, 0, 4, 3, 0, + 4, 3, 3, 0, 4, 1, 1, 0, 4, 3, + 3, 0, 4, 0, 4, 0, 4, 0, 4, 0, + 6, 0, 4, 1, 3, 2, 1, 1, 0, 6, + 3, 0, 6, 1, 3, 2, 0, 4, 1, 3, + 2, 1, 1, 1, 1, 1, 1, 1, 3, 0, + 4, 0, 6, 1, 3, 2, 0, 4, 1, 3, + 2, 1, 1, 1, 1, 1, 0, 4, 3, 3, + 3, 0, 4, 0, 6, 1, 3, 2, 1, 1, + 3 }; @@ -6171,26 +6186,27 @@ namespace isc { namespace dhcp { "\"JSON\"", "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"", "\"hostname-char-set\"", "\"hostname-char-replacement\"", "\"ip-reservations-unique\"", - "\"loggers\"", "\"output_options\"", "\"output\"", "\"debuglevel\"", - "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"pattern\"", - "\"compatibility\"", "\"lenient-option-parsing\"", "TOPLEVEL_JSON", - "TOPLEVEL_DHCP6", "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6", - "SUB_POOL6", "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEFS", - "SUB_OPTION_DEF", "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", - "SUB_DHCP_DDNS", "SUB_CONFIG_CONTROL", "\"constant string\"", - "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start", - "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", - "$@11", "$@12", "$@13", "$@14", "value", "sub_json", "map2", "$@15", - "map_value", "map_content", "not_empty_map", "list_generic", "$@16", - "list_content", "not_empty_list", "list_strings", "$@17", - "list_strings_content", "not_empty_list_strings", "unknown_map_entry", - "syntax_map", "$@18", "global_object", "$@19", "global_object_comma", - "sub_dhcp6", "$@20", "global_params", "global_param", "data_directory", - "$@21", "preferred_lifetime", "min_preferred_lifetime", - "max_preferred_lifetime", "valid_lifetime", "min_valid_lifetime", - "max_valid_lifetime", "renew_timer", "rebind_timer", - "calculate_tee_times", "t1_percent", "t2_percent", "cache_threshold", - "cache_max_age", "decline_probation_period", "ddns_send_updates", + "\"reservations-lookup-first\"", "\"loggers\"", "\"output_options\"", + "\"output\"", "\"debuglevel\"", "\"severity\"", "\"flush\"", + "\"maxsize\"", "\"maxver\"", "\"pattern\"", "\"compatibility\"", + "\"lenient-option-parsing\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP6", + "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6", "SUB_POOL6", + "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEFS", "SUB_OPTION_DEF", + "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS", + "SUB_CONFIG_CONTROL", "\"constant string\"", "\"integer\"", + "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2", + "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12", + "$@13", "$@14", "value", "sub_json", "map2", "$@15", "map_value", + "map_content", "not_empty_map", "list_generic", "$@16", "list_content", + "not_empty_list", "list_strings", "$@17", "list_strings_content", + "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@18", + "global_object", "$@19", "global_object_comma", "sub_dhcp6", "$@20", + "global_params", "global_param", "data_directory", "$@21", + "preferred_lifetime", "min_preferred_lifetime", "max_preferred_lifetime", + "valid_lifetime", "min_valid_lifetime", "max_valid_lifetime", + "renew_timer", "rebind_timer", "calculate_tee_times", "t1_percent", + "t2_percent", "cache_threshold", "cache_max_age", + "decline_probation_period", "ddns_send_updates", "ddns_override_no_update", "ddns_override_client_update", "ddns_replace_client_name", "$@22", "ddns_replace_client_name_value", "ddns_generated_prefix", "$@23", "ddns_qualifying_suffix", "$@24", @@ -6198,8 +6214,9 @@ namespace isc { namespace dhcp { "hostname_char_set", "$@25", "hostname_char_replacement", "$@26", "store_extended_info", "statistic_default_sample_count", "statistic_default_sample_age", "server_tag", "$@27", - "parked_packet_limit", "ip_reservations_unique", "interfaces_config", - "$@28", "sub_interfaces6", "$@29", "interfaces_config_params", + "parked_packet_limit", "ip_reservations_unique", + "reservations_lookup_first", "interfaces_config", "$@28", + "sub_interfaces6", "$@29", "interfaces_config_params", "interfaces_config_param", "interfaces_list", "$@30", "re_detect", "lease_database", "$@31", "hosts_database", "$@32", "hosts_databases", "$@33", "database_list", "not_empty_database_list", "database", "$@34", @@ -6297,93 +6314,94 @@ namespace isc { namespace dhcp { const short Dhcp6Parser::yyrline_[] = { - 0, 305, 305, 305, 306, 306, 307, 307, 308, 308, - 309, 309, 310, 310, 311, 311, 312, 312, 313, 313, - 314, 314, 315, 315, 316, 316, 317, 317, 318, 318, - 326, 327, 328, 329, 330, 331, 332, 335, 340, 340, - 351, 354, 355, 358, 363, 369, 374, 374, 381, 382, - 385, 389, 393, 399, 399, 406, 407, 410, 414, 418, - 428, 437, 437, 452, 452, 466, 469, 475, 475, 484, - 485, 486, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 558, 558, 567, 573, 579, - 585, 591, 597, 603, 609, 615, 621, 627, 633, 639, - 645, 651, 657, 663, 669, 669, 678, 681, 684, 687, - 690, 696, 696, 705, 705, 714, 720, 726, 726, 735, - 735, 744, 750, 756, 762, 762, 771, 777, 783, 783, - 795, 795, 804, 805, 806, 811, 812, 813, 814, 815, - 818, 818, 829, 835, 835, 848, 848, 861, 861, 872, - 873, 876, 877, 878, 883, 883, 893, 894, 895, 900, - 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, - 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, - 921, 922, 923, 924, 925, 928, 928, 936, 937, 938, - 939, 942, 942, 951, 951, 960, 960, 969, 975, 975, - 984, 990, 996, 1002, 1008, 1014, 1014, 1022, 1023, 1024, - 1027, 1033, 1039, 1045, 1051, 1051, 1060, 1066, 1066, 1075, - 1075, 1084, 1084, 1093, 1093, 1102, 1102, 1111, 1111, 1120, - 1120, 1129, 1129, 1140, 1141, 1142, 1147, 1149, 1149, 1168, - 1168, 1179, 1180, 1181, 1186, 1187, 1190, 1195, 1200, 1200, - 1211, 1212, 1213, 1218, 1219, 1220, 1223, 1228, 1235, 1235, - 1248, 1248, 1261, 1262, 1263, 1268, 1269, 1270, 1271, 1272, - 1273, 1276, 1282, 1288, 1294, 1294, 1305, 1306, 1309, 1310, - 1311, 1316, 1316, 1326, 1326, 1336, 1337, 1338, 1341, 1344, - 1345, 1348, 1348, 1357, 1357, 1366, 1366, 1378, 1379, 1380, - 1385, 1386, 1387, 1388, 1389, 1390, 1393, 1399, 1405, 1411, - 1417, 1423, 1432, 1432, 1446, 1447, 1450, 1451, 1452, 1461, - 1461, 1487, 1487, 1498, 1499, 1500, 1506, 1507, 1508, 1509, - 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, - 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, - 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, - 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1551, - 1551, 1560, 1560, 1569, 1569, 1578, 1578, 1587, 1587, 1598, - 1604, 1610, 1616, 1616, 1624, 1625, 1626, 1627, 1630, 1636, - 1644, 1644, 1656, 1657, 1661, 1662, 1663, 1668, 1668, 1676, - 1677, 1678, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, - 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, - 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, - 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, - 1721, 1722, 1729, 1729, 1743, 1743, 1752, 1753, 1756, 1757, - 1758, 1765, 1765, 1780, 1780, 1794, 1795, 1798, 1799, 1800, - 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, - 1817, 1819, 1825, 1827, 1827, 1836, 1836, 1845, 1845, 1854, - 1856, 1856, 1865, 1875, 1875, 1888, 1889, 1894, 1895, 1896, - 1903, 1903, 1915, 1915, 1927, 1928, 1933, 1934, 1935, 1942, - 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1953, 1955, - 1955, 1964, 1966, 1968, 1974, 1983, 1983, 1996, 1997, 2000, - 2001, 2002, 2007, 2007, 2017, 2017, 2027, 2028, 2029, 2034, - 2035, 2036, 2037, 2038, 2039, 2040, 2043, 2043, 2052, 2052, - 2077, 2077, 2107, 2107, 2120, 2121, 2124, 2125, 2126, 2131, - 2131, 2143, 2143, 2155, 2156, 2157, 2162, 2163, 2164, 2165, - 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2175, 2175, 2184, - 2190, 2190, 2199, 2205, 2214, 2214, 2225, 2226, 2229, 2230, - 2231, 2236, 2236, 2245, 2245, 2254, 2255, 2258, 2259, 2260, - 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, - 2276, 2279, 2279, 2290, 2290, 2301, 2301, 2310, 2310, 2319, - 2319, 2328, 2328, 2337, 2337, 2351, 2351, 2362, 2363, 2366, - 2366, 2378, 2378, 2389, 2390, 2391, 2396, 2396, 2406, 2407, - 2410, 2411, 2412, 2417, 2418, 2419, 2420, 2421, 2422, 2423, - 2424, 2425, 2426, 2427, 2428, 2429, 2432, 2434, 2434, 2443, - 2452, 2452, 2465, 2466, 2467, 2472, 2473, 2474, 2475, 2476, - 2477, 2478, 2479, 2480, 2483, 2483, 2491, 2492, 2493, 2496, - 2502, 2502, 2511, 2517, 2525, 2533, 2533, 2544, 2545, 2546, - 2551, 2552, 2553, 2554, 2555, 2558, 2558, 2567, 2567, 2579, - 2579, 2592, 2593, 2594, 2599, 2600, 2601, 2602, 2603, 2604, - 2607, 2613, 2613, 2622, 2628, 2628, 2638, 2638, 2651, 2651, - 2661, 2662, 2663, 2668, 2669, 2670, 2671, 2672, 2673, 2674, - 2675, 2676, 2677, 2678, 2679, 2680, 2681, 2682, 2683, 2684, - 2685, 2688, 2695, 2695, 2704, 2704, 2713, 2719, 2719, 2728, - 2734, 2740, 2740, 2749, 2750, 2753, 2753, 2763, 2770, 2777, - 2777, 2786, 2786, 2796, 2796, 2806, 2806, 2818, 2818, 2830, - 2830, 2840, 2841, 2842, 2848, 2849, 2852, 2852, 2863, 2871, - 2871, 2884, 2885, 2886, 2892, 2892, 2900, 2901, 2902, 2907, - 2908, 2909, 2910, 2911, 2912, 2913, 2916, 2922, 2922, 2931, - 2931, 2942, 2943, 2944, 2949, 2949, 2957, 2958, 2959, 2964, - 2965, 2966, 2967, 2968, 2971, 2971, 2980, 2986, 2992, 2998, - 2998, 3007, 3007, 3018, 3019, 3020, 3025, 3026, 3029 + 0, 306, 306, 306, 307, 307, 308, 308, 309, 309, + 310, 310, 311, 311, 312, 312, 313, 313, 314, 314, + 315, 315, 316, 316, 317, 317, 318, 318, 319, 319, + 327, 328, 329, 330, 331, 332, 333, 336, 341, 341, + 352, 355, 356, 359, 364, 370, 375, 375, 382, 383, + 386, 390, 394, 400, 400, 407, 408, 411, 415, 419, + 429, 438, 438, 453, 453, 467, 470, 476, 476, 485, + 486, 487, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 560, 560, 569, 575, + 581, 587, 593, 599, 605, 611, 617, 623, 629, 635, + 641, 647, 653, 659, 665, 671, 671, 680, 683, 686, + 689, 692, 698, 698, 707, 707, 716, 722, 728, 728, + 737, 737, 746, 752, 758, 764, 764, 773, 779, 785, + 791, 791, 803, 803, 812, 813, 814, 819, 820, 821, + 822, 823, 826, 826, 837, 843, 843, 856, 856, 869, + 869, 880, 881, 884, 885, 886, 891, 891, 901, 902, + 903, 908, 909, 910, 911, 912, 913, 914, 915, 916, + 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, + 927, 928, 929, 930, 931, 932, 933, 936, 936, 944, + 945, 946, 947, 950, 950, 959, 959, 968, 968, 977, + 983, 983, 992, 998, 1004, 1010, 1016, 1022, 1022, 1030, + 1031, 1032, 1035, 1041, 1047, 1053, 1059, 1059, 1068, 1074, + 1074, 1083, 1083, 1092, 1092, 1101, 1101, 1110, 1110, 1119, + 1119, 1128, 1128, 1137, 1137, 1148, 1149, 1150, 1155, 1157, + 1157, 1176, 1176, 1187, 1188, 1189, 1194, 1195, 1198, 1203, + 1208, 1208, 1219, 1220, 1221, 1226, 1227, 1228, 1231, 1236, + 1243, 1243, 1256, 1256, 1269, 1270, 1271, 1276, 1277, 1278, + 1279, 1280, 1281, 1284, 1290, 1296, 1302, 1302, 1313, 1314, + 1317, 1318, 1319, 1324, 1324, 1334, 1334, 1344, 1345, 1346, + 1349, 1352, 1353, 1356, 1356, 1365, 1365, 1374, 1374, 1386, + 1387, 1388, 1393, 1394, 1395, 1396, 1397, 1398, 1401, 1407, + 1413, 1419, 1425, 1431, 1440, 1440, 1454, 1455, 1458, 1459, + 1460, 1469, 1469, 1495, 1495, 1506, 1507, 1508, 1514, 1515, + 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, + 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, + 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, + 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, + 1556, 1559, 1559, 1568, 1568, 1577, 1577, 1586, 1586, 1595, + 1595, 1606, 1612, 1618, 1624, 1624, 1632, 1633, 1634, 1635, + 1638, 1644, 1652, 1652, 1664, 1665, 1669, 1670, 1671, 1676, + 1676, 1684, 1685, 1686, 1691, 1692, 1693, 1694, 1695, 1696, + 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, + 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, + 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, + 1727, 1728, 1729, 1730, 1737, 1737, 1751, 1751, 1760, 1761, + 1764, 1765, 1766, 1773, 1773, 1788, 1788, 1802, 1803, 1806, + 1807, 1808, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, + 1821, 1822, 1825, 1827, 1833, 1835, 1835, 1844, 1844, 1853, + 1853, 1862, 1864, 1864, 1873, 1883, 1883, 1896, 1897, 1902, + 1903, 1904, 1911, 1911, 1923, 1923, 1935, 1936, 1941, 1942, + 1943, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, + 1961, 1963, 1963, 1972, 1974, 1976, 1982, 1991, 1991, 2004, + 2005, 2008, 2009, 2010, 2015, 2015, 2025, 2025, 2035, 2036, + 2037, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2051, 2051, + 2060, 2060, 2085, 2085, 2115, 2115, 2128, 2129, 2132, 2133, + 2134, 2139, 2139, 2151, 2151, 2163, 2164, 2165, 2170, 2171, + 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2183, + 2183, 2192, 2198, 2198, 2207, 2213, 2222, 2222, 2233, 2234, + 2237, 2238, 2239, 2244, 2244, 2253, 2253, 2262, 2263, 2266, + 2267, 2268, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, + 2282, 2283, 2284, 2287, 2287, 2298, 2298, 2309, 2309, 2318, + 2318, 2327, 2327, 2336, 2336, 2345, 2345, 2359, 2359, 2370, + 2371, 2374, 2374, 2386, 2386, 2397, 2398, 2399, 2404, 2404, + 2414, 2415, 2418, 2419, 2420, 2425, 2426, 2427, 2428, 2429, + 2430, 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2440, 2442, + 2442, 2451, 2460, 2460, 2473, 2474, 2475, 2480, 2481, 2482, + 2483, 2484, 2485, 2486, 2487, 2488, 2491, 2491, 2499, 2500, + 2501, 2504, 2510, 2510, 2519, 2525, 2533, 2541, 2541, 2552, + 2553, 2554, 2559, 2560, 2561, 2562, 2563, 2566, 2566, 2575, + 2575, 2587, 2587, 2600, 2601, 2602, 2607, 2608, 2609, 2610, + 2611, 2612, 2615, 2621, 2621, 2630, 2636, 2636, 2646, 2646, + 2659, 2659, 2669, 2670, 2671, 2676, 2677, 2678, 2679, 2680, + 2681, 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2689, 2690, + 2691, 2692, 2693, 2696, 2703, 2703, 2712, 2712, 2721, 2727, + 2727, 2736, 2742, 2748, 2748, 2757, 2758, 2761, 2761, 2771, + 2778, 2785, 2785, 2794, 2794, 2804, 2804, 2814, 2814, 2826, + 2826, 2838, 2838, 2848, 2849, 2850, 2856, 2857, 2860, 2860, + 2871, 2879, 2879, 2892, 2893, 2894, 2900, 2900, 2908, 2909, + 2910, 2915, 2916, 2917, 2918, 2919, 2920, 2921, 2924, 2930, + 2930, 2939, 2939, 2950, 2951, 2952, 2957, 2957, 2965, 2966, + 2967, 2972, 2973, 2974, 2975, 2976, 2979, 2979, 2988, 2994, + 3000, 3006, 3006, 3015, 3015, 3026, 3027, 3028, 3033, 3034, + 3037 }; void @@ -6416,9 +6434,9 @@ namespace isc { namespace dhcp { #line 14 "dhcp6_parser.yy" } } // isc::dhcp -#line 6420 "dhcp6_parser.cc" +#line 6438 "dhcp6_parser.cc" -#line 3035 "dhcp6_parser.yy" +#line 3043 "dhcp6_parser.yy" void diff --git a/src/bin/dhcp6/dhcp6_parser.h b/src/bin/dhcp6/dhcp6_parser.h index 34cc8a1594..9e517fe19e 100644 --- a/src/bin/dhcp6/dhcp6_parser.h +++ b/src/bin/dhcp6/dhcp6_parser.h @@ -683,35 +683,36 @@ namespace isc { namespace dhcp { TOKEN_HOSTNAME_CHAR_SET = 440, // "hostname-char-set" TOKEN_HOSTNAME_CHAR_REPLACEMENT = 441, // "hostname-char-replacement" TOKEN_IP_RESERVATIONS_UNIQUE = 442, // "ip-reservations-unique" - TOKEN_LOGGERS = 443, // "loggers" - TOKEN_OUTPUT_OPTIONS = 444, // "output_options" - TOKEN_OUTPUT = 445, // "output" - TOKEN_DEBUGLEVEL = 446, // "debuglevel" - TOKEN_SEVERITY = 447, // "severity" - TOKEN_FLUSH = 448, // "flush" - TOKEN_MAXSIZE = 449, // "maxsize" - TOKEN_MAXVER = 450, // "maxver" - TOKEN_PATTERN = 451, // "pattern" - TOKEN_COMPATIBILITY = 452, // "compatibility" - TOKEN_LENIENT_OPTION_PARSING = 453, // "lenient-option-parsing" - TOKEN_TOPLEVEL_JSON = 454, // TOPLEVEL_JSON - TOKEN_TOPLEVEL_DHCP6 = 455, // TOPLEVEL_DHCP6 - TOKEN_SUB_DHCP6 = 456, // SUB_DHCP6 - TOKEN_SUB_INTERFACES6 = 457, // SUB_INTERFACES6 - TOKEN_SUB_SUBNET6 = 458, // SUB_SUBNET6 - TOKEN_SUB_POOL6 = 459, // SUB_POOL6 - TOKEN_SUB_PD_POOL = 460, // SUB_PD_POOL - TOKEN_SUB_RESERVATION = 461, // SUB_RESERVATION - TOKEN_SUB_OPTION_DEFS = 462, // SUB_OPTION_DEFS - TOKEN_SUB_OPTION_DEF = 463, // SUB_OPTION_DEF - TOKEN_SUB_OPTION_DATA = 464, // SUB_OPTION_DATA - TOKEN_SUB_HOOKS_LIBRARY = 465, // SUB_HOOKS_LIBRARY - TOKEN_SUB_DHCP_DDNS = 466, // SUB_DHCP_DDNS - TOKEN_SUB_CONFIG_CONTROL = 467, // SUB_CONFIG_CONTROL - TOKEN_STRING = 468, // "constant string" - TOKEN_INTEGER = 469, // "integer" - TOKEN_FLOAT = 470, // "floating point" - TOKEN_BOOLEAN = 471 // "boolean" + TOKEN_RESERVATIONS_LOOKUP_FIRST = 443, // "reservations-lookup-first" + TOKEN_LOGGERS = 444, // "loggers" + TOKEN_OUTPUT_OPTIONS = 445, // "output_options" + TOKEN_OUTPUT = 446, // "output" + TOKEN_DEBUGLEVEL = 447, // "debuglevel" + TOKEN_SEVERITY = 448, // "severity" + TOKEN_FLUSH = 449, // "flush" + TOKEN_MAXSIZE = 450, // "maxsize" + TOKEN_MAXVER = 451, // "maxver" + TOKEN_PATTERN = 452, // "pattern" + TOKEN_COMPATIBILITY = 453, // "compatibility" + TOKEN_LENIENT_OPTION_PARSING = 454, // "lenient-option-parsing" + TOKEN_TOPLEVEL_JSON = 455, // TOPLEVEL_JSON + TOKEN_TOPLEVEL_DHCP6 = 456, // TOPLEVEL_DHCP6 + TOKEN_SUB_DHCP6 = 457, // SUB_DHCP6 + TOKEN_SUB_INTERFACES6 = 458, // SUB_INTERFACES6 + TOKEN_SUB_SUBNET6 = 459, // SUB_SUBNET6 + TOKEN_SUB_POOL6 = 460, // SUB_POOL6 + TOKEN_SUB_PD_POOL = 461, // SUB_PD_POOL + TOKEN_SUB_RESERVATION = 462, // SUB_RESERVATION + TOKEN_SUB_OPTION_DEFS = 463, // SUB_OPTION_DEFS + TOKEN_SUB_OPTION_DEF = 464, // SUB_OPTION_DEF + TOKEN_SUB_OPTION_DATA = 465, // SUB_OPTION_DATA + TOKEN_SUB_HOOKS_LIBRARY = 466, // SUB_HOOKS_LIBRARY + TOKEN_SUB_DHCP_DDNS = 467, // SUB_DHCP_DDNS + TOKEN_SUB_CONFIG_CONTROL = 468, // SUB_CONFIG_CONTROL + TOKEN_STRING = 469, // "constant string" + TOKEN_INTEGER = 470, // "integer" + TOKEN_FLOAT = 471, // "floating point" + TOKEN_BOOLEAN = 472 // "boolean" }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; @@ -728,7 +729,7 @@ namespace isc { namespace dhcp { { enum symbol_kind_type { - YYNTOKENS = 217, ///< Number of tokens. + YYNTOKENS = 218, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -918,483 +919,485 @@ namespace isc { namespace dhcp { S_HOSTNAME_CHAR_SET = 185, // "hostname-char-set" S_HOSTNAME_CHAR_REPLACEMENT = 186, // "hostname-char-replacement" S_IP_RESERVATIONS_UNIQUE = 187, // "ip-reservations-unique" - S_LOGGERS = 188, // "loggers" - S_OUTPUT_OPTIONS = 189, // "output_options" - S_OUTPUT = 190, // "output" - S_DEBUGLEVEL = 191, // "debuglevel" - S_SEVERITY = 192, // "severity" - S_FLUSH = 193, // "flush" - S_MAXSIZE = 194, // "maxsize" - S_MAXVER = 195, // "maxver" - S_PATTERN = 196, // "pattern" - S_COMPATIBILITY = 197, // "compatibility" - S_LENIENT_OPTION_PARSING = 198, // "lenient-option-parsing" - S_TOPLEVEL_JSON = 199, // TOPLEVEL_JSON - S_TOPLEVEL_DHCP6 = 200, // TOPLEVEL_DHCP6 - S_SUB_DHCP6 = 201, // SUB_DHCP6 - S_SUB_INTERFACES6 = 202, // SUB_INTERFACES6 - S_SUB_SUBNET6 = 203, // SUB_SUBNET6 - S_SUB_POOL6 = 204, // SUB_POOL6 - S_SUB_PD_POOL = 205, // SUB_PD_POOL - S_SUB_RESERVATION = 206, // SUB_RESERVATION - S_SUB_OPTION_DEFS = 207, // SUB_OPTION_DEFS - S_SUB_OPTION_DEF = 208, // SUB_OPTION_DEF - S_SUB_OPTION_DATA = 209, // SUB_OPTION_DATA - S_SUB_HOOKS_LIBRARY = 210, // SUB_HOOKS_LIBRARY - S_SUB_DHCP_DDNS = 211, // SUB_DHCP_DDNS - S_SUB_CONFIG_CONTROL = 212, // SUB_CONFIG_CONTROL - S_STRING = 213, // "constant string" - S_INTEGER = 214, // "integer" - S_FLOAT = 215, // "floating point" - S_BOOLEAN = 216, // "boolean" - S_YYACCEPT = 217, // $accept - S_start = 218, // start - S_219_1 = 219, // $@1 - S_220_2 = 220, // $@2 - S_221_3 = 221, // $@3 - S_222_4 = 222, // $@4 - S_223_5 = 223, // $@5 - S_224_6 = 224, // $@6 - S_225_7 = 225, // $@7 - S_226_8 = 226, // $@8 - S_227_9 = 227, // $@9 - S_228_10 = 228, // $@10 - S_229_11 = 229, // $@11 - S_230_12 = 230, // $@12 - S_231_13 = 231, // $@13 - S_232_14 = 232, // $@14 - S_value = 233, // value - S_sub_json = 234, // sub_json - S_map2 = 235, // map2 - S_236_15 = 236, // $@15 - S_map_value = 237, // map_value - S_map_content = 238, // map_content - S_not_empty_map = 239, // not_empty_map - S_list_generic = 240, // list_generic - S_241_16 = 241, // $@16 - S_list_content = 242, // list_content - S_not_empty_list = 243, // not_empty_list - S_list_strings = 244, // list_strings - S_245_17 = 245, // $@17 - S_list_strings_content = 246, // list_strings_content - S_not_empty_list_strings = 247, // not_empty_list_strings - S_unknown_map_entry = 248, // unknown_map_entry - S_syntax_map = 249, // syntax_map - S_250_18 = 250, // $@18 - S_global_object = 251, // global_object - S_252_19 = 252, // $@19 - S_global_object_comma = 253, // global_object_comma - S_sub_dhcp6 = 254, // sub_dhcp6 - S_255_20 = 255, // $@20 - S_global_params = 256, // global_params - S_global_param = 257, // global_param - S_data_directory = 258, // data_directory - S_259_21 = 259, // $@21 - S_preferred_lifetime = 260, // preferred_lifetime - S_min_preferred_lifetime = 261, // min_preferred_lifetime - S_max_preferred_lifetime = 262, // max_preferred_lifetime - S_valid_lifetime = 263, // valid_lifetime - S_min_valid_lifetime = 264, // min_valid_lifetime - S_max_valid_lifetime = 265, // max_valid_lifetime - S_renew_timer = 266, // renew_timer - S_rebind_timer = 267, // rebind_timer - S_calculate_tee_times = 268, // calculate_tee_times - S_t1_percent = 269, // t1_percent - S_t2_percent = 270, // t2_percent - S_cache_threshold = 271, // cache_threshold - S_cache_max_age = 272, // cache_max_age - S_decline_probation_period = 273, // decline_probation_period - S_ddns_send_updates = 274, // ddns_send_updates - S_ddns_override_no_update = 275, // ddns_override_no_update - S_ddns_override_client_update = 276, // ddns_override_client_update - S_ddns_replace_client_name = 277, // ddns_replace_client_name - S_278_22 = 278, // $@22 - S_ddns_replace_client_name_value = 279, // ddns_replace_client_name_value - S_ddns_generated_prefix = 280, // ddns_generated_prefix - S_281_23 = 281, // $@23 - S_ddns_qualifying_suffix = 282, // ddns_qualifying_suffix - S_283_24 = 283, // $@24 - S_ddns_update_on_renew = 284, // ddns_update_on_renew - S_ddns_use_conflict_resolution = 285, // ddns_use_conflict_resolution - S_hostname_char_set = 286, // hostname_char_set - S_287_25 = 287, // $@25 - S_hostname_char_replacement = 288, // hostname_char_replacement - S_289_26 = 289, // $@26 - S_store_extended_info = 290, // store_extended_info - S_statistic_default_sample_count = 291, // statistic_default_sample_count - S_statistic_default_sample_age = 292, // statistic_default_sample_age - S_server_tag = 293, // server_tag - S_294_27 = 294, // $@27 - S_parked_packet_limit = 295, // parked_packet_limit - S_ip_reservations_unique = 296, // ip_reservations_unique - S_interfaces_config = 297, // interfaces_config - S_298_28 = 298, // $@28 - S_sub_interfaces6 = 299, // sub_interfaces6 - S_300_29 = 300, // $@29 - S_interfaces_config_params = 301, // interfaces_config_params - S_interfaces_config_param = 302, // interfaces_config_param - S_interfaces_list = 303, // interfaces_list - S_304_30 = 304, // $@30 - S_re_detect = 305, // re_detect - S_lease_database = 306, // lease_database - S_307_31 = 307, // $@31 - S_hosts_database = 308, // hosts_database - S_309_32 = 309, // $@32 - S_hosts_databases = 310, // hosts_databases - S_311_33 = 311, // $@33 - S_database_list = 312, // database_list - S_not_empty_database_list = 313, // not_empty_database_list - S_database = 314, // database - S_315_34 = 315, // $@34 - S_database_map_params = 316, // database_map_params - S_database_map_param = 317, // database_map_param - S_database_type = 318, // database_type - S_319_35 = 319, // $@35 - S_db_type = 320, // db_type - S_user = 321, // user - S_322_36 = 322, // $@36 - S_password = 323, // password - S_324_37 = 324, // $@37 - S_host = 325, // host - S_326_38 = 326, // $@38 - S_port = 327, // port - S_name = 328, // name - S_329_39 = 329, // $@39 - S_persist = 330, // persist - S_lfc_interval = 331, // lfc_interval - S_readonly = 332, // readonly - S_connect_timeout = 333, // connect_timeout - S_reconnect_wait_time = 334, // reconnect_wait_time - S_on_fail = 335, // on_fail - S_336_40 = 336, // $@40 - S_on_fail_mode = 337, // on_fail_mode - S_max_row_errors = 338, // max_row_errors - S_request_timeout = 339, // request_timeout - S_tcp_keepalive = 340, // tcp_keepalive - S_tcp_nodelay = 341, // tcp_nodelay - S_contact_points = 342, // contact_points - S_343_41 = 343, // $@41 - S_max_reconnect_tries = 344, // max_reconnect_tries - S_keyspace = 345, // keyspace - S_346_42 = 346, // $@42 - S_consistency = 347, // consistency - S_348_43 = 348, // $@43 - S_serial_consistency = 349, // serial_consistency - S_350_44 = 350, // $@44 - S_trust_anchor = 351, // trust_anchor - S_352_45 = 352, // $@45 - S_cert_file = 353, // cert_file - S_354_46 = 354, // $@46 - S_key_file = 355, // key_file - S_356_47 = 356, // $@47 - S_cipher_list = 357, // cipher_list - S_358_48 = 358, // $@48 - S_sanity_checks = 359, // sanity_checks - S_360_49 = 360, // $@49 - S_sanity_checks_params = 361, // sanity_checks_params - S_sanity_checks_param = 362, // sanity_checks_param - S_lease_checks = 363, // lease_checks - S_364_50 = 364, // $@50 - S_mac_sources = 365, // mac_sources - S_366_51 = 366, // $@51 - S_mac_sources_list = 367, // mac_sources_list - S_mac_sources_value = 368, // mac_sources_value - S_duid_id = 369, // duid_id - S_string_id = 370, // string_id - S_host_reservation_identifiers = 371, // host_reservation_identifiers - S_372_52 = 372, // $@52 - S_host_reservation_identifiers_list = 373, // host_reservation_identifiers_list - S_host_reservation_identifier = 374, // host_reservation_identifier - S_hw_address_id = 375, // hw_address_id - S_flex_id = 376, // flex_id - S_relay_supplied_options = 377, // relay_supplied_options - S_378_53 = 378, // $@53 - S_dhcp_multi_threading = 379, // dhcp_multi_threading - S_380_54 = 380, // $@54 - S_multi_threading_params = 381, // multi_threading_params - S_multi_threading_param = 382, // multi_threading_param - S_enable_multi_threading = 383, // enable_multi_threading - S_thread_pool_size = 384, // thread_pool_size - S_packet_queue_size = 385, // packet_queue_size - S_hooks_libraries = 386, // hooks_libraries - S_387_55 = 387, // $@55 - S_hooks_libraries_list = 388, // hooks_libraries_list - S_not_empty_hooks_libraries_list = 389, // not_empty_hooks_libraries_list - S_hooks_library = 390, // hooks_library - S_391_56 = 391, // $@56 - S_sub_hooks_library = 392, // sub_hooks_library - S_393_57 = 393, // $@57 - S_hooks_params = 394, // hooks_params - S_hooks_param = 395, // hooks_param - S_library = 396, // library - S_397_58 = 397, // $@58 - S_parameters = 398, // parameters - S_399_59 = 399, // $@59 - S_expired_leases_processing = 400, // expired_leases_processing - S_401_60 = 401, // $@60 - S_expired_leases_params = 402, // expired_leases_params - S_expired_leases_param = 403, // expired_leases_param - S_reclaim_timer_wait_time = 404, // reclaim_timer_wait_time - S_flush_reclaimed_timer_wait_time = 405, // flush_reclaimed_timer_wait_time - S_hold_reclaimed_time = 406, // hold_reclaimed_time - S_max_reclaim_leases = 407, // max_reclaim_leases - S_max_reclaim_time = 408, // max_reclaim_time - S_unwarned_reclaim_cycles = 409, // unwarned_reclaim_cycles - S_subnet6_list = 410, // subnet6_list - S_411_61 = 411, // $@61 - S_subnet6_list_content = 412, // subnet6_list_content - S_not_empty_subnet6_list = 413, // not_empty_subnet6_list - S_subnet6 = 414, // subnet6 - S_415_62 = 415, // $@62 - S_sub_subnet6 = 416, // sub_subnet6 - S_417_63 = 417, // $@63 - S_subnet6_params = 418, // subnet6_params - S_subnet6_param = 419, // subnet6_param - S_subnet = 420, // subnet - S_421_64 = 421, // $@64 - S_interface = 422, // interface - S_423_65 = 423, // $@65 - S_interface_id = 424, // interface_id - S_425_66 = 425, // $@66 - S_client_class = 426, // client_class - S_427_67 = 427, // $@67 - S_require_client_classes = 428, // require_client_classes - S_429_68 = 429, // $@68 - S_reservations_global = 430, // reservations_global - S_reservations_in_subnet = 431, // reservations_in_subnet - S_reservations_out_of_pool = 432, // reservations_out_of_pool - S_reservation_mode = 433, // reservation_mode - S_434_69 = 434, // $@69 - S_hr_mode = 435, // hr_mode - S_id = 436, // id - S_rapid_commit = 437, // rapid_commit - S_shared_networks = 438, // shared_networks - S_439_70 = 439, // $@70 - S_shared_networks_content = 440, // shared_networks_content - S_shared_networks_list = 441, // shared_networks_list - S_shared_network = 442, // shared_network - S_443_71 = 443, // $@71 - S_shared_network_params = 444, // shared_network_params - S_shared_network_param = 445, // shared_network_param - S_option_def_list = 446, // option_def_list - S_447_72 = 447, // $@72 - S_sub_option_def_list = 448, // sub_option_def_list - S_449_73 = 449, // $@73 - S_option_def_list_content = 450, // option_def_list_content - S_not_empty_option_def_list = 451, // not_empty_option_def_list - S_option_def_entry = 452, // option_def_entry - S_453_74 = 453, // $@74 - S_sub_option_def = 454, // sub_option_def - S_455_75 = 455, // $@75 - S_option_def_params = 456, // option_def_params - S_not_empty_option_def_params = 457, // not_empty_option_def_params - S_option_def_param = 458, // option_def_param - S_option_def_name = 459, // option_def_name - S_code = 460, // code - S_option_def_code = 461, // option_def_code - S_option_def_type = 462, // option_def_type - S_463_76 = 463, // $@76 - S_option_def_record_types = 464, // option_def_record_types - S_465_77 = 465, // $@77 - S_space = 466, // space - S_467_78 = 467, // $@78 - S_option_def_space = 468, // option_def_space - S_option_def_encapsulate = 469, // option_def_encapsulate - S_470_79 = 470, // $@79 - S_option_def_array = 471, // option_def_array - S_option_data_list = 472, // option_data_list - S_473_80 = 473, // $@80 - S_option_data_list_content = 474, // option_data_list_content - S_not_empty_option_data_list = 475, // not_empty_option_data_list - S_option_data_entry = 476, // option_data_entry - S_477_81 = 477, // $@81 - S_sub_option_data = 478, // sub_option_data - S_479_82 = 479, // $@82 - S_option