diff --git a/doc/examples/kea6/all-keys-current.json b/doc/examples/kea6/all-keys-current.json index 489807a5a7..07dea2e142 100644 --- a/doc/examples/kea6/all-keys-current.json +++ b/doc/examples/kea6/all-keys-current.json @@ -699,7 +699,10 @@ // Type of the database, e.g. "mysql", "postgresql", "cql". "type": "mysql" } - ] + ], + // Intervals between attempts to fetch configuration updates + // via the configuration backends used. + "config-fetch-wait-time": 30 }, // Server tag. diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.cc b/src/bin/dhcp6/ctrl_dhcp6_srv.cc index 93c89a58f4..3e009bb67f 100644 --- a/src/bin/dhcp6/ctrl_dhcp6_srv.cc +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.cc @@ -695,6 +695,34 @@ ControlledDhcpv6Srv::processConfig(isc::data::ConstElementPtr config) { return (isc::config::createAnswer(1, err.str())); } + // Setup config backend polling, if configured for it. + auto ctl_info = CfgMgr::instance().getStagingCfg()->getConfigControlInfo(); + if (ctl_info) { + long fetch_time = static_cast(ctl_info->getConfigFetchWaitTime()); + // Only schedule the CB fetch timer if the fetch wait time is greater + // than 0. + if (fetch_time > 0) { + // When we run unit tests, we want to use milliseconds unit for the + // specified interval. Otherwise, we use seconds. Note that using + // milliseconds as a unit in unit tests prevents us from waiting 1 + // second on more before the timer goes off. Instead, we wait one + // millisecond which significantly reduces the test time. + if (!server_->inTestMode()) { + fetch_time = 1000 * fetch_time; + } + + boost::shared_ptr failure_count(new unsigned(0)); + TimerMgr::instance()-> + registerTimer("Dhcp6CBFetchTimer", + boost::bind(&ControlledDhcpv6Srv::cbFetchUpdates, + server_, CfgMgr::instance().getStagingCfg(), + failure_count), + fetch_time, + asiolink::IntervalTimer::ONE_SHOT); + TimerMgr::instance()->setup("Dhcp6CBFetchTimer"); + } + } + // Finally, we can commit runtime option definitions in libdhcp++. This is // exception free. LibDHCP::commitRuntimeOptionDefs(); @@ -962,5 +990,36 @@ ControlledDhcpv6Srv::dbLostCallback(ReconnectCtlPtr db_reconnect_ctl) { return(true); } +void +ControlledDhcpv6Srv::cbFetchUpdates(const SrvConfigPtr& srv_cfg, + boost::shared_ptr failure_count) { + try { + // The true value indicates that the server should not reconnect + // to the configuration backends and should take into account + // audit entries stored in the database since last fetch. + server_->getCBControl()->databaseConfigFetch(srv_cfg, + CBControlDHCPv6::FetchMode::FETCH_UPDATE); + (*failure_count) = 0; + + } catch (const std::exception& ex) { + LOG_ERROR(dhcp6_logger, DHCP6_CB_FETCH_UPDATES_FAIL) + .arg(ex.what()); + + // We allow at most 10 consecutive failures after which we stop + // making further attempts to fetch the configuration updates. + // Let's return without re-scheduling the timer. + if (++(*failure_count) > 10) { + LOG_ERROR(dhcp6_logger, DHCP6_CB_FETCH_UPDATES_RETRIES_EXHAUSTED); + return; + } + } + + // Reschedule the timer to fetch new updates or re-try if + // the previous attempt resulted in an error. + if (TimerMgr::instance()->isTimerRegistered("Dhcp6CBFetchTimer")) { + TimerMgr::instance()->setup("Dhcp6CBFetchTimer"); + } +} + }; // end of isc::dhcp namespace }; // end of isc namespace diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.h b/src/bin/dhcp6/ctrl_dhcp6_srv.h index ee81c36a53..ef776c83a8 100644 --- a/src/bin/dhcp6/ctrl_dhcp6_srv.h +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.h @@ -1,4 +1,4 @@ -// Copyright (C) 2012-2018 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2012-2019 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 @@ -357,6 +357,20 @@ private: /// configured reconnect parameters bool dbLostCallback(db::ReconnectCtlPtr db_reconnect_ctl); + /// @brief Callback invoked periodically to fetch configuration updates + /// from the Config Backends. + /// + /// This method calls @c CBControlDHCPv6::databaseConfigFetch and then + /// reschedules the timer. + /// + /// @param srv_cfg Server configuration holding the database credentials + /// and server tag. + /// @param failure_count pointer to failure counter which causes this + /// callback to stop scheduling the timer after 10 consecutive failures + /// to fetch the updates. + void cbFetchUpdates(const SrvConfigPtr& srv_cfg, + boost::shared_ptr failure_count); + /// @brief Static pointer to the sole instance of the DHCP server. /// /// This is required for config and command handlers to gain access to diff --git a/src/bin/dhcp6/dhcp6_lexer.cc b/src/bin/dhcp6/dhcp6_lexer.cc index c18c9b4ff1..f247a88cdb 100644 --- a/src/bin/dhcp6/dhcp6_lexer.cc +++ b/src/bin/dhcp6/dhcp6_lexer.cc @@ -1,6 +1,6 @@ -#line 1 "dhcp6_lexer.cc" +#line 2 "dhcp6_lexer.cc" -#line 3 "dhcp6_lexer.cc" +#line 4 "dhcp6_lexer.cc" #define YY_INT_ALIGNED short int @@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); /* %% [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 182 -#define YY_END_OF_BUFFER 183 +#define YY_NUM_RULES 183 +#define YY_END_OF_BUFFER 184 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -700,21 +700,21 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1489] = +static const flex_int16_t yy_accept[1505] = { 0, - 175, 175, 0, 0, 0, 0, 0, 0, 0, 0, - 183, 181, 10, 11, 181, 1, 175, 172, 175, 175, - 181, 174, 173, 181, 181, 181, 181, 181, 168, 169, - 181, 181, 181, 170, 171, 5, 5, 5, 181, 181, - 181, 10, 11, 0, 0, 164, 0, 0, 0, 0, + 176, 176, 0, 0, 0, 0, 0, 0, 0, 0, + 184, 182, 10, 11, 182, 1, 176, 173, 176, 176, + 182, 175, 174, 182, 182, 182, 182, 182, 169, 170, + 182, 182, 182, 171, 172, 5, 5, 5, 182, 182, + 182, 10, 11, 0, 0, 165, 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, 1, 175, - 175, 0, 174, 175, 3, 2, 6, 0, 175, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 176, + 176, 0, 175, 176, 3, 2, 6, 0, 176, 0, 0, 0, 0, 0, 0, 4, 0, 0, 9, 0, - 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, + 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 168, 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, @@ -722,149 +722,152 @@ static const flex_int16_t yy_accept[1489] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, - 142, 0, 0, 143, 0, 0, 0, 0, 0, 0, + 143, 0, 0, 144, 0, 0, 0, 0, 0, 0, - 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 167, 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, 97, 0, 0, 0, 0, 0, + 0, 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, 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, - 180, 178, 0, 177, 176, 0, 0, 0, 0, 0, + 181, 179, 0, 178, 177, 0, 0, 0, 0, 0, - 0, 0, 141, 0, 0, 28, 0, 27, 0, 0, - 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 142, 0, 0, 28, 0, 27, 0, 0, + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 55, 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, - 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 102, 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, 179, 176, 0, 0, 0, 0, 0, 0, + 0, 0, 180, 177, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 31, 0, 0, 0, 0, - 0, 105, 0, 0, 0, 0, 0, 0, 0, 82, - 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, + 0, 106, 0, 0, 0, 0, 0, 0, 0, 83, + 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 91, 0, 58, 0, 0, 0, 0, + 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 92, 0, 59, 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, 121, 146, 50, 0, 55, 0, - 0, 0, 0, 0, 0, 161, 37, 0, 34, 0, - 33, 0, 0, 0, 134, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 122, 147, 51, 0, 56, 0, + 0, 0, 0, 0, 0, 162, 37, 0, 34, 0, + 33, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, - 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 52, 0, 0, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, + 0, 0, 53, 0, 0, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 130, 0, 0, 0, 0, 0, 0, 7, 35, + 0, 131, 0, 0, 0, 0, 0, 0, 7, 35, 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, - 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 115, 0, 0, 0, 0, 0, 0, 112, 0, 0, - 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, + 116, 0, 0, 0, 0, 0, 0, 113, 0, 0, + 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 94, 0, 0, 0, 0, 0, 0, 0, 0, 109, - 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, + 95, 0, 0, 0, 0, 0, 0, 0, 0, 110, + 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 139, 110, 0, 0, 0, 0, 114, 51, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, + 0, 0, 140, 111, 0, 0, 0, 0, 115, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 77, - 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, - 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, + 78, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 85, 0, 0, 0, 125, 0, 0, 0, 49, + 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, + 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 95, 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, 41, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 0, 140, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 57, 86, 0, 0, 0, 126, 0, 0, + 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 131, 0, 116, 0, 0, 0, + 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 127, 144, 0, 40, 0, 136, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, - 0, 79, 0, 0, 0, 0, 138, 53, 0, 87, + 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 96, 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, 41, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 141, 14, 0, 0, 0, 0, - 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, - 0, 0, 0, 0, 0, 80, 102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, - 0, 0, 0, 0, 0, 17, 0, 15, 0, 158, - 157, 0, 68, 0, 0, 0, 0, 0, 30, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 0, 124, 43, 0, 60, 0, 0, - 0, 0, 19, 0, 0, 0, 0, 0, 0, 98, + 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, + 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 128, 145, 0, + 40, 0, 137, 0, 0, 0, 0, 0, 0, 0, + 0, 20, 0, 0, 0, 80, 0, 0, 0, 0, + 139, 54, 0, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 0, 0, 0, 0, 0, 64, 0, - 74, 0, 0, 132, 0, 0, 0, 0, 0, 123, - 0, 0, 0, 0, 0, 92, 0, 163, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, - 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, - 0, 0, 67, 0, 0, 0, 118, 47, 0, 0, - 69, 156, 38, 0, 0, 12, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 45, 0, 0, 44, 18, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, + 81, 103, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, + 17, 0, 15, 0, 159, 158, 0, 69, 0, 0, + 0, 0, 0, 30, 121, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, + 125, 43, 0, 61, 0, 0, 0, 0, 19, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, - 0, 0, 61, 0, 0, 88, 0, 0, 0, 0, - 0, 137, 0, 0, 0, 46, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, - 0, 0, 0, 78, 0, 36, 48, 0, 0, 0, - 0, 0, 24, 0, 0, 0, 0, 0, 0, 153, - 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 25, 39, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, + 0, 0, 0, 0, 0, 99, 75, 0, 0, 133, + 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, + 0, 93, 0, 164, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 91, 0, 0, 148, 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, 68, + 0, 0, 0, 119, 47, 0, 0, 0, 70, 157, + 38, 0, 0, 12, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 45, 0, 0, 44, 18, 0, 0, - 0, 0, 0, 0, 0, 152, 0, 0, 21, 71, - 0, 0, 0, 0, 0, 64, 0, 0, 89, 0, - 0, 151, 0, 0, 70, 0, 0, 65, 0, 23, + 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, + 0, 62, 0, 0, 89, 0, 0, 0, 0, 0, + 138, 0, 0, 0, 46, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, + 0, 0, 79, 0, 36, 48, 0, 0, 0, 0, + 0, 0, 24, 0, 0, 0, 0, 0, 0, 154, + 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 25, 39, 0, 0, 0, 0, 0, + + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 160, 0, 0, 0, 0, 0, 0, 153, 0, 0, + 21, 72, 0, 0, 0, 0, 0, 65, 0, 0, + 0, 90, 0, 0, 152, 0, 0, 71, 0, 0, + 66, 0, 23, 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, 22, 0, 107, - 119, 0, 0, 0, 0, 0, 0, 149, 154, 75, - 0, 0, 0, 0, 148, 0, 0, 26, 0, 0, - 0, 0, 0, 108, 0, 0, 150, 0 + 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, + 0, 0, 0, 22, 0, 108, 120, 0, 0, 0, + 0, 0, 0, 150, 155, 76, 0, 0, 0, 0, + 149, 0, 0, 26, 0, 0, 0, 0, 0, 109, + + 0, 0, 151, 0 } ; static const YY_CHAR yy_ec[256] = @@ -911,352 +914,356 @@ static const YY_CHAR yy_meta[72] = 3 } ; -static const flex_int16_t yy_base[1501] = +static const flex_int16_t yy_base[1517] = { 0, 0, 70, 19, 29, 41, 49, 52, 58, 87, 95, - 1852, 1853, 32, 1848, 141, 0, 201, 1853, 206, 88, - 11, 213, 1853, 1830, 114, 25, 2, 6, 1853, 1853, - 73, 11, 17, 1853, 1853, 1853, 104, 1836, 1791, 0, - 1828, 107, 1843, 217, 241, 1853, 185, 1787, 1793, 1813, + 1868, 1869, 32, 1864, 141, 0, 201, 1869, 206, 88, + 11, 213, 1869, 1846, 114, 25, 2, 6, 1869, 1869, + 73, 11, 17, 1869, 1869, 1869, 104, 1852, 1807, 0, + 1844, 107, 1859, 217, 241, 1869, 185, 1803, 1809, 1829, 93, 58, 190, 91, 211, 200, 14, 267, 213, 175, - 269, 64, 231, 184, 187, 75, 1794, 274, 215, 290, - 278, 297, 1777, 207, 302, 316, 316, 1796, 0, 355, - 360, 372, 377, 380, 1853, 0, 1853, 295, 383, 227, - 296, 283, 327, 361, 293, 1853, 1793, 1832, 1853, 237, + 269, 64, 231, 184, 187, 75, 1810, 274, 215, 290, + 278, 297, 1793, 207, 302, 316, 316, 1812, 0, 355, + 360, 372, 377, 380, 1869, 0, 1869, 295, 383, 227, + 296, 283, 327, 361, 293, 1869, 1809, 1848, 1869, 237, - 1853, 394, 363, 1780, 1790, 1829, 375, 321, 403, 1784, - 369, 378, 376, 382, 388, 1827, 0, 445, 407, 1771, - 1779, 364, 1775, 1764, 1765, 372, 1781, 1764, 1773, 387, - 308, 378, 1767, 1765, 391, 1754, 1810, 416, 1757, 1808, - 1750, 1773, 1770, 1770, 1764, 214, 1757, 1750, 1755, 1749, - 382, 1760, 1753, 1744, 1743, 1757, 362, 1793, 1742, 414, - 1754, 1757, 1741, 441, 1742, 417, 1754, 1751, 1752, 1750, - 422, 1732, 1737, 1733, 1725, 1742, 1734, 0, 422, 450, - 440, 446, 454, 470, 1733, 1853, 0, 476, 1724, 1727, - 1853, 465, 447, 1853, 1779, 1734, 477, 1777, 481, 1776, + 1869, 394, 363, 1796, 1806, 1845, 375, 321, 403, 1800, + 369, 378, 376, 382, 388, 1843, 0, 445, 407, 1787, + 1795, 364, 1791, 1780, 1781, 372, 1797, 1780, 1789, 387, + 308, 378, 1783, 1781, 391, 1770, 1826, 416, 1773, 1824, + 1766, 1789, 1786, 1786, 1780, 214, 1773, 1766, 1771, 1765, + 382, 1776, 1769, 1760, 1759, 1773, 362, 1809, 1758, 414, + 1770, 1773, 1757, 441, 1758, 417, 1770, 1767, 1768, 1766, + 422, 1748, 1753, 1749, 1741, 1758, 1750, 0, 422, 450, + 440, 446, 454, 470, 1749, 1869, 0, 476, 1740, 1743, + 1869, 465, 447, 1869, 1795, 1750, 477, 1793, 481, 1792, - 477, 1775, 1853, 521, 1774, 489, 1735, 1730, 1729, 1720, - 491, 1769, 1763, 1729, 1708, 1716, 1722, 1710, 1724, 1720, - 1721, 1721, 1716, 1708, 1710, 1694, 1698, 1711, 1713, 1710, - 1702, 1692, 1695, 1709, 1853, 1695, 1703, 1706, 1687, 1686, - 1736, 1685, 1695, 1733, 452, 1694, 1682, 1693, 1729, 490, - 1733, 1670, 1685, 9, 1675, 1691, 1672, 1674, 1670, 1676, - 1667, 1666, 1679, 1672, 1674, 1678, 1677, 1671, 80, 1678, - 1673, 1665, 1655, 1670, 1665, 1669, 459, 1667, 1653, 1659, - 1666, 1654, 230, 1647, 1661, 1660, 1663, 1645, 1653, 491, - 1853, 1853, 501, 1853, 1853, 1640, 0, 376, 1642, 497, + 477, 1791, 1869, 521, 1790, 489, 1751, 1746, 1745, 1736, + 491, 1785, 1779, 1745, 1724, 1732, 1738, 1726, 1740, 1736, + 1737, 1737, 1732, 1724, 1726, 1710, 1714, 1727, 1729, 1726, + 1718, 1708, 1711, 1725, 1869, 1711, 1719, 1722, 1703, 1702, + 1752, 1701, 1711, 1749, 452, 1710, 1698, 1709, 1745, 490, + 1749, 1686, 1701, 9, 1691, 1707, 1688, 1690, 1686, 1692, + 1683, 1682, 1695, 1688, 1690, 1694, 1693, 1687, 80, 1694, + 1689, 1681, 1671, 1686, 1681, 1685, 459, 1683, 1669, 1675, + 1682, 1670, 230, 1663, 1677, 1676, 1679, 1661, 1669, 491, + 1869, 1869, 501, 1869, 1869, 1656, 0, 376, 1658, 497, - 503, 1696, 1853, 1649, 489, 1853, 1694, 1853, 1688, 557, - 1853, 484, 1630, 1640, 1690, 1647, 1642, 1645, 1640, 304, - 1853, 1642, 549, 1640, 1637, 1638, 303, 1642, 1680, 1630, - 1625, 1622, 1618, 1620, 1669, 1628, 1617, 1633, 1665, 1613, - 550, 1626, 1626, 1609, 1610, 1623, 1610, 1620, 1615, 1622, - 1617, 1602, 470, 1611, 1614, 1609, 1605, 1653, 515, 524, - 1853, 1647, 1599, 1598, 1591, 1593, 1597, 1586, 1593, 1598, - 513, 1643, 1598, 510, 1595, 1599, 1597, 1586, 1586, 1598, - 502, 1573, 1574, 1595, 536, 1577, 1574, 1588, 1591, 1586, - 1572, 1584, 1583, 1582, 1581, 532, 1622, 1621, 1620, 1564, + 503, 1712, 1869, 1665, 489, 1869, 1710, 1869, 1704, 557, + 1869, 484, 1646, 1656, 1706, 1663, 1658, 1661, 1656, 304, + 1869, 1658, 549, 1656, 1653, 1654, 303, 1658, 1696, 1646, + 1641, 1638, 1634, 1636, 1685, 1644, 1633, 1649, 1681, 1629, + 550, 1642, 1642, 1625, 1626, 1639, 1626, 1636, 1631, 1638, + 1633, 1618, 470, 1627, 1630, 1625, 1621, 1669, 515, 524, + 1869, 1663, 1615, 1614, 1607, 1609, 1613, 1602, 1609, 1614, + 513, 1659, 1614, 510, 1611, 1615, 1613, 1602, 1602, 1614, + 502, 1589, 1590, 1611, 536, 1593, 1590, 1604, 1607, 1602, + 1588, 1600, 1599, 1598, 1597, 532, 1638, 1637, 1636, 1580, - 581, 1577, 1853, 1853, 1576, 0, 556, 1564, 1615, 1614, - 1572, 1612, 1853, 1560, 1610, 1853, 563, 609, 557, 1609, - 1551, 1853, 1556, 1562, 1565, 1548, 1563, 1550, 1549, 1853, - 1559, 1550, 1547, 1559, 549, 1544, 1546, 1853, 1552, 1537, - 1539, 1550, 1548, 1543, 588, 1550, 1538, 1531, 1580, 1853, - 1529, 1545, 1577, 1581, 1539, 1533, 1535, 1536, 1538, 1570, - 1523, 1518, 1517, 1519, 1512, 1527, 1505, 1512, 1517, 1565, - 1853, 1512, 1508, 1562, 1515, 1509, 1516, 1501, 1511, 1514, - 1503, 1502, 1497, 1853, 1552, 1853, 1496, 1495, 1488, 1505, - 1542, 1489, 1494, 1503, 1497, 1491, 1500, 602, 1535, 1499, + 581, 1593, 1869, 1869, 1592, 0, 556, 1580, 1631, 1630, + 1588, 1628, 1869, 1576, 1626, 1869, 563, 609, 557, 1625, + 1567, 1869, 1572, 1578, 1581, 1564, 1579, 1566, 1565, 1869, + 1575, 1566, 1563, 1575, 549, 1560, 1562, 1869, 1568, 1553, + 1555, 1566, 1564, 1559, 588, 1566, 1554, 1547, 1596, 1869, + 1545, 1561, 1593, 1597, 1555, 1549, 1551, 1552, 1554, 1586, + 1539, 1534, 1533, 1535, 1528, 1543, 1521, 1528, 1533, 1581, + 1869, 1528, 1524, 1578, 1531, 1525, 1532, 1517, 1527, 1530, + 1519, 1518, 1513, 1869, 1568, 1869, 1512, 1511, 1504, 1521, + 1558, 1505, 1510, 1519, 1513, 1507, 1516, 602, 1551, 1515, - 1482, 1482, 1477, 1473, 1479, 1484, 1477, 1485, 1489, 1472, - 1528, 1470, 1484, 1473, 1853, 1853, 1853, 1473, 1853, 1483, - 1517, 1479, 0, 1520, 1470, 1853, 1853, 1467, 1853, 1473, - 1853, 569, 565, 604, 1853, 1511, 1458, 1509, 1456, 1455, - 1454, 1461, 1454, 1462, 1465, 1464, 1448, 1463, 1445, 1492, - 1459, 1495, 1441, 1443, 1455, 1455, 1454, 1853, 1439, 1436, - 1492, 1449, 1441, 1447, 1438, 1446, 1853, 1431, 1442, 1446, - 1428, 1442, 530, 1424, 1418, 1423, 1420, 1435, 1436, 1433, - 1474, 1431, 1853, 1417, 1419, 1853, 1427, 1464, 1463, 605, - 1426, 1409, 1410, 1415, 1406, 1853, 1420, 1406, 630, 1398, + 1498, 1498, 1493, 1489, 1495, 1500, 1493, 1501, 1505, 1488, + 1544, 1486, 1500, 1489, 1869, 1869, 1869, 1489, 1869, 1499, + 1533, 1495, 0, 1536, 1486, 1869, 1869, 1483, 1869, 1489, + 1869, 569, 565, 604, 1869, 1527, 1474, 1525, 1472, 1471, + 1470, 1477, 1470, 1478, 1481, 1480, 1464, 1479, 1461, 1508, + 1475, 1511, 1457, 1459, 1471, 1471, 1470, 1869, 1455, 1452, + 1508, 1465, 1457, 1463, 1454, 1462, 1869, 1447, 1458, 1462, + 1444, 1458, 530, 1440, 1434, 1439, 1436, 1451, 1452, 1449, + 1490, 1447, 1869, 1433, 1435, 1869, 1443, 1480, 1479, 605, + 1442, 1425, 1426, 1431, 1422, 1869, 1436, 1422, 630, 1414, - 1419, 1416, 1408, 1451, 1405, 1412, 1448, 1853, 1396, 1394, - 1408, 1392, 1406, 1409, 1441, 1440, 1439, 1438, 1385, 1436, - 1435, 1853, 622, 1397, 1397, 1395, 1384, 1386, 1853, 1853, - 1429, 1377, 1432, 579, 591, 1375, 1390, 1429, 597, 1423, - 1385, 1421, 1420, 1374, 1368, 1363, 1416, 1378, 1368, 1376, - 1412, 1375, 1357, 1365, 1367, 1371, 1406, 1410, 1367, 1366, - 1853, 1367, 1360, 1349, 1362, 1365, 1360, 1355, 1360, 1357, - 1356, 1352, 1358, 1353, 1394, 1393, 1337, 1333, 582, 1390, - 1853, 1389, 1338, 1330, 1381, 1344, 1331, 1853, 1331, 1340, - 1339, 1339, 1323, 1378, 1321, 1334, 1853, 1326, 1318, 1327, + 1435, 1432, 1424, 1467, 1421, 1428, 1464, 1869, 1412, 1410, + 1424, 1408, 1422, 1425, 1457, 1456, 1455, 1454, 1401, 1452, + 1451, 1869, 622, 1413, 1413, 1411, 1400, 1402, 1869, 1869, + 1445, 1393, 1448, 579, 591, 1391, 1406, 1445, 597, 1439, + 1401, 1437, 1436, 1390, 1384, 1379, 1432, 1394, 1384, 1392, + 1428, 1391, 1373, 1381, 1383, 1387, 1422, 1426, 1383, 1382, + 1869, 1383, 1376, 1365, 1378, 1381, 1376, 1371, 1376, 1373, + 1372, 1368, 1374, 1369, 1410, 1409, 1353, 1349, 582, 1406, + 1869, 1405, 1354, 1346, 1397, 1360, 1347, 1869, 1347, 1356, + 1355, 1355, 1339, 1394, 1337, 1350, 1869, 1342, 1334, 1343, - 1320, 1331, 1308, 1312, 1363, 1327, 1309, 1307, 1318, 1358, - 1357, 1356, 1303, 1319, 593, 1318, 607, 1295, 1305, 604, - 1853, 1355, 1301, 1311, 1311, 1300, 1304, 1311, 1348, 1853, - 17, 587, 11, 69, 1853, 68, 202, 221, 302, 373, - 386, 488, 493, 549, 558, 582, 584, 583, 591, 645, - 601, 618, 601, 653, 610, 1853, 622, 622, 616, 627, - 625, 668, 612, 614, 629, 632, 619, 676, 635, 621, - 624, 1853, 1853, 640, 639, 644, 632, 1853, 1853, 646, - 633, 631, 649, 636, 636, 685, 637, 693, 694, 1853, - 641, 655, 655, 698, 648, 650, 644, 702, 657, 647, + 1336, 1347, 1324, 1328, 1379, 1343, 1325, 1323, 1334, 1374, + 1373, 1372, 1319, 1335, 593, 1334, 607, 1311, 1321, 604, + 1869, 1371, 1317, 1327, 1327, 1316, 1320, 1327, 1364, 1869, + 17, 587, 11, 69, 1869, 68, 202, 236, 296, 375, + 389, 470, 497, 549, 569, 570, 600, 588, 587, 601, + 656, 604, 620, 603, 657, 614, 1869, 625, 625, 618, + 629, 627, 670, 614, 617, 632, 634, 621, 678, 637, + 623, 626, 1869, 1869, 642, 641, 646, 634, 1869, 1869, + 648, 635, 633, 651, 638, 638, 687, 639, 695, 696, + 1869, 643, 657, 657, 700, 650, 652, 646, 704, 659, - 648, 644, 654, 658, 669, 653, 671, 666, 668, 661, - 663, 664, 676, 666, 681, 720, 679, 684, 661, 1853, - 686, 676, 721, 670, 685, 686, 1853, 705, 713, 682, - 696, 684, 679, 691, 698, 687, 688, 684, 702, 694, - 689, 740, 746, 705, 696, 1853, 708, 693, 709, 699, - 711, 705, 751, 719, 704, 705, 1853, 721, 724, 707, - 709, 765, 710, 1853, 727, 730, 710, 729, 767, 727, - 723, 718, 736, 735, 721, 736, 728, 724, 742, 727, - 1853, 1853, 735, 780, 735, 1853, 743, 738, 789, 1853, - 740, 745, 787, 741, 742, 754, 748, 752, 750, 748, + 649, 650, 646, 656, 660, 671, 655, 673, 668, 670, + 663, 665, 666, 678, 668, 683, 722, 681, 686, 663, + 1869, 688, 678, 723, 672, 687, 688, 1869, 707, 715, + 684, 698, 686, 681, 682, 694, 701, 690, 691, 687, + 705, 697, 692, 743, 749, 708, 699, 1869, 711, 696, + 712, 702, 714, 709, 754, 723, 707, 708, 1869, 724, + 727, 710, 712, 768, 713, 1869, 730, 733, 713, 732, + 770, 730, 726, 721, 739, 738, 724, 739, 731, 727, + 745, 730, 1869, 1869, 738, 783, 738, 1869, 746, 741, + 792, 1869, 743, 748, 790, 744, 745, 757, 751, 755, - 759, 802, 748, 753, 805, 806, 752, 764, 1853, 752, - 760, 758, 763, 775, 759, 773, 774, 775, 791, 796, - 778, 766, 766, 786, 775, 764, 781, 788, 829, 773, - 831, 780, 784, 1853, 829, 780, 798, 795, 833, 784, - 802, 803, 789, 797, 806, 786, 803, 810, 850, 851, - 1853, 806, 853, 854, 807, 817, 819, 803, 804, 811, - 820, 863, 812, 811, 828, 867, 819, 823, 821, 819, - 872, 873, 825, 875, 871, 831, 1853, 836, 829, 820, - 839, 833, 828, 838, 835, 840, 836, 848, 1853, 832, - 834, 1853, 1853, 834, 892, 833, 852, 853, 851, 836, + 753, 751, 762, 805, 751, 756, 808, 809, 755, 767, + 1869, 755, 763, 761, 766, 778, 762, 776, 777, 778, + 794, 799, 781, 769, 769, 789, 788, 779, 768, 785, + 792, 833, 777, 835, 784, 788, 1869, 833, 784, 802, + 799, 837, 788, 806, 807, 793, 801, 810, 792, 807, + 814, 854, 855, 1869, 810, 857, 858, 811, 821, 823, + 807, 808, 815, 824, 867, 816, 815, 832, 871, 823, + 827, 825, 823, 876, 877, 829, 879, 875, 835, 1869, + 840, 833, 824, 843, 837, 832, 842, 839, 844, 840, + 852, 1869, 836, 838, 1869, 1869, 838, 896, 837, 856, - 857, 839, 844, 851, 884, 875, 905, 850, 852, 869, - 867, 910, 860, 864, 1853, 861, 1853, 875, 873, 876, - 860, 861, 919, 874, 879, 866, 877, 869, 875, 872, - 890, 891, 892, 1853, 1853, 890, 1853, 893, 1853, 878, - 879, 898, 888, 938, 893, 935, 901, 1853, 893, 885, - 944, 1853, 945, 894, 901, 943, 1853, 1853, 903, 1853, - 894, 894, 897, 911, 916, 899, 910, 957, 916, 917, - 918, 956, 914, 963, 918, 965, 1853, 914, 967, 968, - 910, 970, 931, 915, 927, 917, 947, 976, 1853, 977, - 926, 941, 928, 1853, 924, 940, 928, 946, 934, 934, + 857, 855, 840, 861, 843, 848, 855, 888, 879, 909, + 854, 856, 873, 868, 872, 915, 865, 869, 1869, 866, + 1869, 880, 878, 881, 865, 866, 924, 879, 884, 871, + 882, 874, 881, 877, 895, 896, 897, 1869, 1869, 896, + 1869, 898, 1869, 883, 884, 903, 893, 943, 898, 940, + 906, 1869, 898, 890, 949, 1869, 950, 899, 906, 948, + 1869, 1869, 908, 1869, 899, 899, 902, 916, 921, 904, + 915, 962, 921, 922, 923, 961, 919, 968, 923, 970, + 1869, 919, 972, 973, 915, 975, 936, 920, 932, 922, + 952, 981, 1869, 982, 931, 946, 980, 934, 1869, 930, - 987, 946, 1853, 948, 947, 949, 942, 951, 952, 949, - 939, 942, 942, 999, 948, 1001, 1002, 948, 1005, 1853, - 943, 958, 951, 1009, 964, 1853, 1853, 960, 971, 956, - 973, 959, 1018, 1020, 966, 976, 1023, 982, 1853, 974, - 974, 976, 978, 1029, 974, 1853, 975, 1853, 977, 1853, - 1853, 991, 1853, 985, 1035, 986, 1037, 1019, 1853, 1853, - 983, 991, 985, 984, 987, 987, 983, 989, 1047, 997, - 1853, 993, 1050, 1005, 996, 1011, 1011, 1014, 1014, 1011, - 1053, 1017, 1853, 1009, 1853, 1853, 1020, 1853, 1021, 1022, - 1019, 1061, 1853, 1012, 1012, 1018, 1017, 1029, 1029, 1853, + 946, 934, 952, 940, 940, 993, 952, 1869, 954, 953, + 955, 948, 957, 958, 955, 945, 948, 948, 1005, 954, + 1007, 1009, 954, 1011, 1869, 949, 964, 957, 1015, 970, + 1869, 1869, 967, 977, 962, 979, 965, 1025, 1026, 972, + 982, 1029, 988, 1869, 980, 980, 982, 984, 1035, 980, + 1869, 981, 1869, 983, 1869, 1869, 997, 1869, 991, 1041, + 992, 1043, 1025, 1869, 1869, 989, 997, 991, 988, 991, + 994, 994, 990, 996, 1054, 1004, 1869, 1000, 1057, 1012, + 1003, 1018, 1018, 1021, 1021, 1018, 1060, 1024, 1869, 1017, + 1869, 1869, 1027, 1869, 1028, 1029, 1026, 1068, 1869, 1019, - 1853, 1068, 1017, 1853, 1034, 1019, 1019, 1021, 1027, 1853, - 1080, 1024, 1034, 1083, 1046, 1853, 1043, 1853, 1062, 1087, - 1088, 1047, 1033, 1091, 1092, 1093, 1048, 1853, 1038, 1096, - 1853, 1036, 1093, 1058, 1054, 1096, 1046, 1051, 1049, 1106, - 1064, 1108, 1109, 1072, 1061, 1055, 1072, 1115, 1059, 1076, - 1061, 1076, 1060, 1116, 1117, 1118, 1067, 1120, 1085, 1853, - 1085, 1072, 1853, 1083, 1130, 1102, 1853, 1853, 1076, 1133, - 1853, 1853, 1853, 1082, 1080, 1853, 1136, 1084, 1133, 1078, - 1083, 1142, 1092, 1102, 1103, 1853, 1146, 1101, 1853, 1853, - 1092, 1107, 1095, 1110, 1853, 1147, 1115, 1108, 1109, 1118, + 1019, 1025, 1024, 1036, 1036, 1869, 1869, 1075, 1024, 1869, + 1041, 1026, 1026, 1028, 1034, 1869, 1087, 1031, 1041, 1090, + 1053, 1869, 1050, 1869, 1069, 1094, 1095, 1054, 1059, 1041, + 1099, 1100, 1101, 1056, 1869, 1046, 1104, 1869, 1044, 1101, + 1066, 1062, 1104, 1054, 1059, 1057, 1114, 1072, 1116, 1117, + 1080, 1069, 1064, 1080, 1123, 1067, 1084, 1069, 1084, 1068, + 1124, 1125, 1126, 1075, 1128, 1093, 1869, 1093, 1080, 1869, + 1091, 1138, 1110, 1869, 1869, 1084, 1095, 1142, 1869, 1869, + 1869, 1091, 1089, 1869, 1145, 1093, 1142, 1087, 1092, 1151, + 1101, 1111, 1112, 1869, 1155, 1110, 1869, 1869, 1101, 1116, - 1100, 1106, 1109, 1161, 1123, 1122, 1114, 1166, 1117, 1853, - 1168, 1169, 1853, 1119, 1119, 1853, 1123, 1118, 1117, 1175, - 1130, 1853, 1172, 1125, 1122, 1853, 1136, 1139, 1182, 1137, - 1184, 1127, 1129, 1137, 1127, 1143, 1144, 1138, 1154, 1853, - 1144, 1194, 1155, 1853, 1191, 1853, 1853, 1192, 1149, 1157, - 1148, 1155, 1853, 1152, 1157, 1155, 1205, 1206, 1151, 1853, - 1166, 1853, 1156, 1168, 1169, 1212, 1156, 1164, 1158, 1166, - 1179, 1853, 1156, 1179, 1167, 1221, 1171, 1183, 1174, 1183, - 1185, 1189, 1853, 1853, 1228, 1173, 1189, 1231, 1232, 1853, - 1228, 1192, 1189, 1194, 1181, 1238, 1177, 1198, 1853, 1241, + 1104, 1119, 1869, 1156, 1124, 1117, 1118, 1127, 1109, 1116, + 1118, 1171, 1132, 1131, 1123, 1175, 1126, 1869, 1177, 1178, + 1122, 1869, 1129, 1129, 1869, 1133, 1128, 1127, 1185, 1140, + 1869, 1182, 1135, 1132, 1869, 1146, 1149, 1192, 1147, 1194, + 1137, 1139, 1147, 1137, 1153, 1154, 1148, 1164, 1869, 1154, + 1204, 1165, 1869, 1201, 1869, 1869, 1202, 1203, 1160, 1168, + 1159, 1166, 1869, 1163, 1168, 1166, 1216, 1217, 1162, 1869, + 1177, 1869, 1167, 1179, 1180, 1223, 1167, 1175, 1169, 1177, + 1190, 1869, 1167, 1190, 1174, 1179, 1233, 1183, 1195, 1186, + 1195, 1197, 1201, 1869, 1869, 1240, 1185, 1201, 1243, 1244, - 1200, 1201, 1244, 1203, 1206, 1853, 1247, 1210, 1853, 1853, - 1192, 1250, 1199, 1252, 1197, 1853, 1214, 1200, 1853, 1200, - 1202, 1853, 1207, 1217, 1853, 1203, 1215, 1853, 1211, 1853, - 1221, 1215, 1219, 1210, 1262, 1211, 1219, 1228, 1221, 1216, - 1217, 1232, 1223, 1230, 1217, 1232, 1237, 1280, 1239, 1282, - 1283, 1228, 1244, 1235, 1249, 1245, 1238, 1853, 1290, 1853, - 1853, 1291, 1292, 1249, 1248, 1249, 1239, 1853, 1853, 1853, - 1297, 1241, 1257, 1300, 1853, 1296, 1247, 1853, 1246, 1248, - 1259, 1306, 1257, 1853, 1266, 1309, 1853, 1853, 1315, 1320, - 1325, 1330, 1335, 1340, 1345, 1348, 1322, 1327, 1329, 1342 + 1869, 1240, 1204, 1201, 1206, 1193, 1250, 1189, 1206, 1211, + 1869, 1254, 1213, 1214, 1257, 1216, 1219, 1869, 1260, 1223, + 1869, 1869, 1205, 1263, 1212, 1265, 1210, 1869, 1227, 1218, + 1214, 1869, 1214, 1216, 1869, 1221, 1231, 1869, 1217, 1229, + 1869, 1225, 1869, 1235, 1229, 1237, 1234, 1225, 1277, 1226, + 1234, 1243, 1236, 1231, 1232, 1247, 1290, 1239, 1246, 1233, + 1248, 1253, 1296, 1255, 1298, 1299, 1244, 1869, 1260, 1251, + 1265, 1261, 1254, 1869, 1306, 1869, 1869, 1307, 1308, 1265, + 1264, 1265, 1255, 1869, 1869, 1869, 1313, 1257, 1273, 1316, + 1869, 1312, 1263, 1869, 1262, 1264, 1275, 1322, 1273, 1869, + 1282, 1325, 1869, 1869, 1331, 1336, 1341, 1346, 1351, 1356, + 1361, 1364, 1338, 1343, 1345, 1358 } ; -static const flex_int16_t yy_def[1501] = +static const flex_int16_t yy_def[1517] = { 0, - 1489, 1489, 1490, 1490, 1489, 1489, 1489, 1489, 1489, 1489, - 1488, 1488, 1488, 1488, 1488, 1491, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1492, - 1488, 1488, 1488, 1493, 15, 1488, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1494, 45, 45, + 1505, 1505, 1506, 1506, 1505, 1505, 1505, 1505, 1505, 1505, + 1504, 1504, 1504, 1504, 1504, 1507, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1508, + 1504, 1504, 1504, 1509, 15, 1504, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1510, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1491, 1488, - 1488, 1488, 1488, 1488, 1488, 1495, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1492, 1488, 1493, + 45, 45, 45, 45, 45, 45, 45, 45, 1507, 1504, + 1504, 1504, 1504, 1504, 1504, 1511, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1508, 1504, 1509, - 1488, 1488, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1496, 45, 1494, 45, 45, + 1504, 1504, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1512, 45, 1510, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1495, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1497, 45, 45, 45, - 1488, 45, 45, 1488, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1511, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1513, 45, 45, 45, + 1504, 45, 45, 1504, 45, 45, 45, 45, 45, 45, - 45, 1496, 1488, 1494, 45, 45, 45, 45, 45, 45, + 45, 1512, 1504, 1510, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1488, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1498, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1514, 45, 45, 45, - 45, 45, 1488, 45, 45, 1488, 45, 1488, 45, 1494, - 1488, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1488, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1504, 45, 45, 1504, 45, 1504, 45, 1510, + 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1488, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1488, 1488, 1488, 1499, 45, 45, 45, 45, - 45, 45, 1488, 45, 45, 1488, 45, 1494, 45, 45, - 45, 1488, 45, 45, 45, 45, 45, 45, 45, 1488, - 45, 45, 45, 45, 45, 45, 45, 1488, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1488, + 45, 45, 1504, 1504, 1504, 1515, 45, 45, 45, 45, + 45, 45, 1504, 45, 45, 1504, 45, 1510, 45, 45, + 45, 1504, 45, 45, 45, 45, 45, 45, 45, 1504, + 45, 45, 45, 45, 45, 45, 45, 1504, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1488, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1488, 45, 1488, 45, 45, 45, 45, + 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1504, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1488, 1488, 1488, 45, 1488, 45, - 45, 1488, 1500, 45, 45, 1488, 1488, 45, 1488, 45, - 1488, 45, 45, 45, 1488, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1504, 1504, 1504, 45, 1504, 45, + 45, 1504, 1516, 45, 45, 1504, 1504, 45, 1504, 45, + 1504, 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1488, 45, 45, - 45, 45, 45, 45, 45, 45, 1488, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1504, 45, 45, + 45, 45, 45, 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1488, 45, 45, 1488, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1488, 45, 45, 45, 45, + 45, 45, 1504, 45, 45, 1504, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1504, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1488, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1488, 45, 45, 45, 45, 45, 45, 1488, 1488, + 45, 1504, 45, 45, 45, 45, 45, 45, 1504, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1488, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1488, 45, 45, 45, 45, 45, 45, 1488, 45, 45, - 45, 45, 45, 45, 45, 45, 1488, 45, 45, 45, + 1504, 45, 45, 45, 45, 45, 45, 1504, 45, 45, + 45, 45, 45, 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1488, 45, 45, 45, 45, 45, 45, 45, 45, 1488, - 45, 45, 45, 45, 1488, 45, 45, 45, 45, 45, + 1504, 45, 45, 45, 45, 45, 45, 45, 45, 1504, + 45, 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1488, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1488, 1488, 45, 45, 45, 45, 1488, 1488, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1488, + 45, 45, 1504, 1504, 45, 45, 45, 45, 1504, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1488, - 45, 45, 45, 45, 45, 45, 1488, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1488, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1488, 45, 45, 45, - 45, 45, 45, 1488, 45, 45, 45, 45, 45, 45, + 1504, 45, 45, 45, 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1488, 1488, 45, 45, 45, 1488, 45, 45, 45, 1488, + 45, 45, 45, 45, 45, 45, 45, 1504, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1504, 45, + 45, 45, 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - - 45, 45, 45, 45, 45, 45, 45, 45, 1488, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1488, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1488, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1488, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1488, 45, - 45, 1488, 1488, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1504, 1504, 45, 45, 45, 1504, 45, 45, + 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1488, 45, 1488, 45, 45, 45, + 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1488, 1488, 45, 1488, 45, 1488, 45, - 45, 45, 45, 45, 45, 45, 45, 1488, 45, 45, - 45, 1488, 45, 45, 45, 45, 1488, 1488, 45, 1488, + 45, 45, 45, 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1488, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1488, 45, - 45, 45, 45, 1488, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1504, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1504, 45, 45, 1504, 1504, 45, 45, 45, 45, - 45, 45, 1488, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1488, - 45, 45, 45, 45, 45, 1488, 1488, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1488, 45, - 45, 45, 45, 45, 45, 1488, 45, 1488, 45, 1488, - 1488, 45, 1488, 45, 45, 45, 45, 45, 1488, 1488, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1488, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1488, 45, 1488, 1488, 45, 1488, 45, 45, - 45, 45, 1488, 45, 45, 45, 45, 45, 45, 1488, - - 1488, 45, 45, 1488, 45, 45, 45, 45, 45, 1488, - 45, 45, 45, 45, 45, 1488, 45, 1488, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1488, 45, 45, - 1488, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1504, 45, + 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1504, 1504, 45, + 1504, 45, 1504, 45, 45, 45, 45, 45, 45, 45, + 45, 1504, 45, 45, 45, 1504, 45, 45, 45, 45, + 1504, 1504, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1488, - 45, 45, 1488, 45, 45, 45, 1488, 1488, 45, 45, - 1488, 1488, 1488, 45, 45, 1488, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1488, 45, 45, 1488, 1488, - 45, 45, 45, 45, 1488, 45, 45, 45, 45, 45, + 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1504, 45, 45, 45, 45, 45, 1504, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1488, - 45, 45, 1488, 45, 45, 1488, 45, 45, 45, 45, - 45, 1488, 45, 45, 45, 1488, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1488, - 45, 45, 45, 1488, 45, 1488, 1488, 45, 45, 45, - 45, 45, 1488, 45, 45, 45, 45, 45, 45, 1488, - 45, 1488, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1488, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1488, 1488, 45, 45, 45, 45, 45, 1488, - 45, 45, 45, 45, 45, 45, 45, 45, 1488, 45, + 45, 45, 45, 45, 45, 45, 45, 1504, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1504, 45, 45, 45, 45, 45, + 1504, 1504, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1504, 45, 45, 45, 45, 45, 45, + 1504, 45, 1504, 45, 1504, 1504, 45, 1504, 45, 45, + 45, 45, 45, 1504, 1504, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1504, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1504, 45, + 1504, 1504, 45, 1504, 45, 45, 45, 45, 1504, 45, - 45, 45, 45, 45, 45, 1488, 45, 45, 1488, 1488, - 45, 45, 45, 45, 45, 1488, 45, 45, 1488, 45, - 45, 1488, 45, 45, 1488, 45, 45, 1488, 45, 1488, + 45, 45, 45, 45, 45, 1504, 1504, 45, 45, 1504, + 45, 45, 45, 45, 45, 1504, 45, 45, 45, 45, + 45, 1504, 45, 1504, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1504, 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1488, 45, 1488, - 1488, 45, 45, 45, 45, 45, 45, 1488, 1488, 1488, - 45, 45, 45, 45, 1488, 45, 45, 1488, 45, 45, - 45, 45, 45, 1488, 45, 45, 1488, 0, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488 + 45, 45, 45, 45, 45, 45, 1504, 45, 45, 1504, + 45, 45, 45, 1504, 1504, 45, 45, 45, 1504, 1504, + 1504, 45, 45, 1504, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1504, 45, 45, 1504, 1504, 45, 45, + 45, 45, 1504, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1504, 45, 45, + 45, 1504, 45, 45, 1504, 45, 45, 45, 45, 45, + 1504, 45, 45, 45, 1504, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1504, 45, + 45, 45, 1504, 45, 1504, 1504, 45, 45, 45, 45, + 45, 45, 1504, 45, 45, 45, 45, 45, 45, 1504, + 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1504, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1504, 1504, 45, 45, 45, 45, 45, + + 1504, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1504, 45, 45, 45, 45, 45, 45, 1504, 45, 45, + 1504, 1504, 45, 45, 45, 45, 45, 1504, 45, 45, + 45, 1504, 45, 45, 1504, 45, 45, 1504, 45, 45, + 1504, 45, 1504, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1504, 45, 45, + 45, 45, 45, 1504, 45, 1504, 1504, 45, 45, 45, + 45, 45, 45, 1504, 1504, 1504, 45, 45, 45, 45, + 1504, 45, 45, 1504, 45, 45, 45, 45, 45, 1504, + + 45, 45, 1504, 0, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504 } ; -static const flex_int16_t yy_nxt[1925] = +static const flex_int16_t yy_nxt[1941] = { 0, - 1488, 13, 14, 13, 1488, 15, 16, 1488, 17, 18, + 1504, 13, 14, 13, 1504, 15, 16, 1504, 17, 18, 19, 20, 21, 22, 22, 22, 23, 24, 85, 364, - 37, 14, 37, 86, 25, 26, 38, 828, 1488, 27, + 37, 14, 37, 86, 25, 26, 38, 829, 1504, 27, 37, 14, 37, 42, 28, 42, 38, 91, 92, 29, 115, 30, 13, 14, 13, 90, 91, 25, 31, 92, - 13, 14, 13, 13, 14, 13, 32, 40, 830, 13, + 13, 14, 13, 13, 14, 13, 32, 40, 831, 13, 14, 13, 33, 40, 115, 91, 92, 365, 90, 34, 35, 13, 14, 13, 94, 15, 16, 95, 17, 18, 19, 20, 21, 22, 22, 22, 23, 24, 13, 14, @@ -1264,7 +1271,7 @@ static const flex_int16_t yy_nxt[1925] = 39, 84, 84, 84, 28, 42, 41, 42, 42, 29, 42, 30, 82, 107, 41, 111, 93, 25, 31, 108, - 130, 138, 88, 831, 88, 832, 32, 89, 89, 89, + 130, 138, 88, 832, 88, 833, 32, 89, 89, 89, 131, 139, 33, 140, 380, 82, 107, 381, 111, 34, 35, 44, 44, 44, 45, 45, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, @@ -1277,11 +1284,11 @@ static const flex_int16_t yy_nxt[1925] = 45, 45, 80, 103, 81, 81, 81, 80, 109, 83, 83, 83, 101, 114, 80, 82, 83, 83, 83, 121, 82, 133, 122, 112, 123, 306, 124, 82, 134, 103, - 396, 103, 101, 113, 135, 833, 114, 110, 82, 136, + 396, 103, 101, 113, 135, 834, 114, 110, 82, 136, 163, 107, 137, 82, 164, 179, 112, 102, 146, 244, 82, 45, 147, 45, 45, 45, 45, 119, 45, 45, 45, 113, 117, 120, 107, 45, 45, 102, 45, 45, - 245, 179, 148, 834, 45, 132, 45, 45, 45, 45, + 245, 179, 148, 835, 45, 132, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 89, 89, @@ -1289,7 +1296,7 @@ static const flex_int16_t yy_nxt[1925] = 128, 142, 143, 45, 180, 144, 152, 45, 181, 45, 118, 145, 129, 149, 153, 150, 154, 151, 112, 114, 157, 155, 156, 158, 159, 165, 181, 427, 113, 166, - 180, 193, 167, 224, 160, 179, 184, 161, 835, 168, + 180, 193, 167, 224, 160, 179, 184, 161, 836, 168, 169, 171, 114, 172, 428, 170, 225, 173, 84, 84, 84, 80, 175, 81, 81, 81, 113, 176, 193, 82, 88, 182, 88, 174, 82, 89, 89, 89, 80, 180, @@ -1298,8 +1305,8 @@ static const flex_int16_t yy_nxt[1925] = 188, 82, 82, 192, 82, 197, 100, 82, 194, 198, 209, 199, 201, 200, 407, 183, 215, 216, 197, 210, 211, 235, 256, 257, 82, 226, 217, 82, 188, 192, - 221, 836, 222, 197, 100, 201, 198, 195, 100, 199, - 200, 227, 100, 407, 188, 230, 250, 837, 231, 223, + 221, 837, 222, 197, 100, 201, 198, 195, 100, 199, + 200, 227, 100, 407, 188, 230, 250, 838, 231, 223, 100, 266, 232, 198, 100, 290, 100, 187, 204, 204, 204, 205, 353, 236, 292, 204, 204, 204, 204, 204, 204, 260, 206, 276, 261, 262, 302, 277, 291, 290, @@ -1309,77 +1316,77 @@ static const flex_int16_t yy_nxt[1925] = 273, 305, 274, 302, 291, 307, 309, 293, 294, 298, 389, 409, 410, 354, 305, 403, 355, 295, 484, 298, 411, 415, 407, 390, 305, 403, 301, 412, 307, 465, - 466, 838, 312, 309, 310, 310, 310, 360, 403, 317, - 839, 310, 310, 310, 310, 310, 310, 318, 404, 415, + 466, 839, 312, 309, 310, 310, 310, 360, 403, 317, + 840, 310, 310, 310, 310, 310, 310, 318, 404, 415, 412, 419, 319, 320, 430, 450, 415, 488, 496, 431, 451, 489, 497, 472, 310, 310, 310, 310, 310, 310, 418, 418, 418, 473, 485, 672, 673, 418, 418, 418, 418, 418, 418, 501, 474, 513, 519, 502, 514, 524, - 524, 520, 532, 558, 533, 548, 840, 635, 559, 634, + 524, 520, 532, 558, 533, 548, 841, 635, 559, 634, 418, 418, 418, 418, 418, 418, 452, 608, 549, 630, - 688, 453, 609, 731, 636, 732, 841, 524, 534, 532, - 829, 533, 45, 45, 45, 635, 634, 721, 842, 45, - 45, 45, 45, 45, 45, 697, 776, 722, 732, 777, - 698, 731, 736, 737, 810, 843, 844, 689, 829, 845, - 846, 811, 45, 45, 45, 45, 45, 45, 813, 847, - 818, 848, 849, 850, 851, 814, 819, 852, 853, 815, - 854, 855, 856, 857, 859, 860, 861, 699, 858, 862, - 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, - 873, 874, 875, 877, 878, 879, 876, 880, 881, 882, + 688, 453, 609, 731, 636, 732, 842, 524, 534, 532, + 830, 533, 45, 45, 45, 635, 634, 721, 843, 45, + 45, 45, 45, 45, 45, 697, 777, 722, 732, 778, + 698, 731, 736, 737, 811, 738, 844, 689, 830, 845, + 846, 812, 45, 45, 45, 45, 45, 45, 814, 847, + 819, 848, 849, 850, 851, 815, 820, 852, 853, 816, + 854, 855, 856, 857, 858, 859, 861, 699, 862, 863, + 860, 864, 865, 866, 867, 868, 869, 870, 871, 872, + 873, 874, 875, 876, 877, 879, 880, 881, 878, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, - 903, 904, 905, 907, 908, 909, 910, 911, 912, 913, - 914, 915, 916, 917, 906, 918, 919, 920, 921, 922, + 903, 904, 905, 906, 907, 909, 910, 911, 912, 913, + 914, 915, 916, 917, 918, 919, 908, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, - 920, 943, 944, 919, 945, 946, 947, 948, 949, 950, - 951, 954, 955, 956, 957, 952, 958, 959, 960, 961, - 962, 963, 964, 965, 966, 967, 968, 969, 971, 972, - 973, 974, 975, 976, 977, 978, 979, 980, 970, 981, + 943, 944, 922, 945, 946, 921, 947, 948, 949, 950, + 951, 952, 953, 954, 957, 958, 959, 960, 955, 961, + 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, + 972, 974, 975, 976, 977, 978, 979, 980, 981, 982, - 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, + 983, 973, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, - 1002, 1003, 1004, 1005, 1007, 1006, 953, 1008, 1009, 1010, + 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1010, 1009, 956, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 1031, 1005, 1006, 1032, 1033, 1034, 1035, 1036, 1037, 1039, - 1041, 1042, 1043, 1038, 1044, 1045, 1046, 1047, 1048, 1049, + 1031, 1032, 1033, 1034, 1008, 1009, 1035, 1036, 1037, 1038, + 1039, 1040, 1041, 1043, 1045, 1046, 1047, 1042, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, - 1080, 1040, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, + 1080, 1081, 1082, 1083, 1084, 1044, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, - 1109, 1087, 1110, 1111, 1112, 1113, 1114, 1088, 1115, 1116, - 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, + 1109, 1110, 1111, 1112, 1113, 1091, 1114, 1115, 1116, 1117, + 1118, 1092, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, - 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1145, 1146, 1147, - 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, - 1158, 1159, 1160, 1162, 1163, 1164, 1165, 1166, 1167, 1168, + 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, + 1147, 1148, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, + 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, - 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1158, 1187, - 1188, 1189, 1190, 1192, 1193, 1194, 1195, 1144, 1196, 1197, - 1191, 1198, 1199, 1200, 1161, 1201, 1202, 1203, 1204, 1205, + 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, + 1189, 1190, 1191, 1163, 1192, 1193, 1194, 1195, 1196, 1198, + 1199, 1200, 1149, 1201, 1202, 1203, 1197, 1204, 1205, 1166, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, - 1236, 1237, 1238, 1239, 1240, 1241, 1219, 1242, 1243, 1244, - 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, + 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, + 1246, 1247, 1225, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, - 1285, 1286, 1288, 1289, 1290, 1291, 1292, 1293, 1266, 1294, - 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, + 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, + 1296, 1297, 1298, 1299, 1300, 1273, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, - 1315, 1316, 1318, 1319, 1320, 1321, 1317, 1322, 1323, 1324, - 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, - 1335, 1336, 1337, 1338, 1311, 1339, 1340, 1287, 1341, 1342, - 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, + 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, + 1325, 1327, 1328, 1329, 1330, 1326, 1331, 1332, 1333, 1334, + 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, + 1345, 1346, 1319, 1347, 1348, 1295, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, @@ -1395,77 +1402,78 @@ static const flex_int16_t yy_nxt[1925] = 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, - 1483, 1484, 1485, 1486, 1487, 12, 12, 12, 12, 12, - 36, 36, 36, 36, 36, 79, 297, 79, 79, 79, - 98, 406, 98, 523, 98, 100, 100, 100, 100, 100, - 116, 116, 116, 116, 116, 178, 100, 178, 178, 178, - 202, 202, 202, 827, 826, 825, 824, 823, 822, 821, - 820, 817, 816, 812, 809, 808, 807, 806, 805, 804, - 803, 802, 801, 800, 799, 798, 797, 796, 795, 794, - 793, 792, 791, 790, 789, 788, 787, 786, 785, 784, - 783, 782, 781, 780, 779, 778, 775, 774, 773, 772, + 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, + 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, + 1503, 12, 12, 12, 12, 12, 36, 36, 36, 36, + 36, 79, 297, 79, 79, 79, 98, 406, 98, 523, + 98, 100, 100, 100, 100, 100, 116, 116, 116, 116, + 116, 178, 100, 178, 178, 178, 202, 202, 202, 828, + 827, 826, 825, 824, 823, 822, 821, 818, 817, 813, + 810, 809, 808, 807, 806, 805, 804, 803, 802, 801, + 800, 799, 798, 797, 796, 795, 794, 793, 792, 791, - 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, 745, 744, 743, 742, - 741, 740, 739, 738, 735, 734, 733, 730, 729, 728, - 727, 726, 725, 724, 723, 720, 719, 718, 717, 716, - 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, - 705, 704, 703, 702, 701, 700, 696, 695, 694, 693, - 692, 691, 690, 687, 686, 685, 684, 683, 682, 681, - 680, 679, 678, 677, 676, 675, 674, 671, 670, 669, - 668, 667, 666, 665, 664, 663, 662, 661, 660, 659, + 790, 789, 788, 787, 786, 785, 784, 783, 782, 781, + 780, 779, 776, 775, 774, 773, 772, 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, 745, 744, 743, 742, 741, 740, 739, + 735, 734, 733, 730, 729, 728, 727, 726, 725, 724, + 723, 720, 719, 718, 717, 716, 715, 714, 713, 712, + 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, + 701, 700, 696, 695, 694, 693, 692, 691, 690, 687, + 686, 685, 684, 683, 682, 681, 680, 679, 678, 677, - 658, 657, 656, 655, 654, 653, 652, 651, 650, 649, - 648, 647, 646, 645, 644, 643, 642, 641, 640, 639, - 638, 637, 633, 632, 631, 630, 629, 628, 627, 626, - 625, 624, 623, 622, 621, 620, 619, 618, 617, 616, - 615, 614, 613, 612, 611, 610, 607, 606, 605, 604, - 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, - 593, 592, 591, 590, 589, 588, 587, 586, 585, 584, - 583, 582, 581, 580, 579, 578, 577, 576, 575, 574, - 573, 572, 571, 570, 569, 568, 567, 566, 565, 564, - 563, 562, 561, 560, 557, 556, 555, 554, 553, 552, + 676, 675, 674, 671, 670, 669, 668, 667, 666, 665, + 664, 663, 662, 661, 660, 659, 658, 657, 656, 655, + 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, + 644, 643, 642, 641, 640, 639, 638, 637, 633, 632, + 631, 630, 629, 628, 627, 626, 625, 624, 623, 622, + 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, + 611, 610, 607, 606, 605, 604, 603, 602, 601, 600, + 599, 598, 597, 596, 595, 594, 593, 592, 591, 590, + 589, 588, 587, 586, 585, 584, 583, 582, 581, 580, + 579, 578, 577, 576, 575, 574, 573, 572, 571, 570, - 551, 550, 547, 546, 545, 544, 543, 542, 541, 540, - 539, 538, 537, 536, 535, 531, 530, 529, 528, 527, - 526, 525, 522, 521, 518, 517, 516, 515, 512, 511, - 510, 509, 508, 507, 506, 505, 504, 503, 500, 499, - 498, 495, 494, 493, 492, 491, 490, 487, 486, 483, - 482, 481, 480, 479, 478, 477, 476, 475, 471, 470, - 469, 468, 467, 464, 463, 462, 461, 460, 459, 458, - 457, 456, 455, 454, 449, 448, 447, 446, 445, 444, - 443, 442, 441, 440, 439, 438, 437, 434, 433, 432, - 429, 426, 425, 424, 423, 422, 421, 420, 417, 416, + 569, 568, 567, 566, 565, 564, 563, 562, 561, 560, + 557, 556, 555, 554, 553, 552, 551, 550, 547, 546, + 545, 544, 543, 542, 541, 540, 539, 538, 537, 536, + 535, 531, 530, 529, 528, 527, 526, 525, 522, 521, + 518, 517, 516, 515, 512, 511, 510, 509, 508, 507, + 506, 505, 504, 503, 500, 499, 498, 495, 494, 493, + 492, 491, 490, 487, 486, 483, 482, 481, 480, 479, + 478, 477, 476, 475, 471, 470, 469, 468, 467, 464, + 463, 462, 461, 460, 459, 458, 457, 456, 455, 454, + 449, 448, 447, 446, 445, 444, 443, 442, 441, 440, - 414, 413, 408, 405, 402, 401, 400, 399, 398, 397, - 395, 394, 393, 392, 391, 388, 387, 386, 385, 384, - 383, 382, 379, 378, 377, 376, 375, 374, 373, 372, - 371, 370, 369, 368, 367, 366, 363, 362, 361, 359, - 358, 357, 356, 352, 351, 350, 349, 348, 347, 346, - 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, - 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, - 325, 324, 323, 322, 321, 316, 315, 314, 313, 311, - 203, 308, 306, 304, 303, 300, 299, 296, 289, 288, - 287, 286, 285, 284, 282, 281, 280, 279, 275, 265, + 439, 438, 437, 434, 433, 432, 429, 426, 425, 424, + 423, 422, 421, 420, 417, 416, 414, 413, 408, 405, + 402, 401, 400, 399, 398, 397, 395, 394, 393, 392, + 391, 388, 387, 386, 385, 384, 383, 382, 379, 378, + 377, 376, 375, 374, 373, 372, 371, 370, 369, 368, + 367, 366, 363, 362, 361, 359, 358, 357, 356, 352, + 351, 350, 349, 348, 347, 346, 345, 344, 343, 342, + 341, 340, 339, 338, 337, 336, 335, 334, 333, 332, + 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, + 321, 316, 315, 314, 313, 311, 203, 308, 306, 304, - 264, 263, 259, 258, 255, 254, 253, 252, 251, 249, - 248, 247, 246, 243, 242, 241, 240, 239, 238, 237, - 234, 233, 229, 228, 220, 219, 218, 214, 213, 212, - 208, 207, 203, 196, 191, 190, 189, 186, 185, 177, - 162, 141, 106, 105, 104, 43, 99, 97, 96, 87, - 43, 1488, 11, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, + 303, 300, 299, 296, 289, 288, 287, 286, 285, 284, + 282, 281, 280, 279, 275, 265, 264, 263, 259, 258, + 255, 254, 253, 252, 251, 249, 248, 247, 246, 243, + 242, 241, 240, 239, 238, 237, 234, 233, 229, 228, + 220, 219, 218, 214, 213, 212, 208, 207, 203, 196, + 191, 190, 189, 186, 185, 177, 162, 141, 106, 105, + 104, 43, 99, 97, 96, 87, 43, 1504, 11, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488 + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504 } ; -static const flex_int16_t yy_chk[1925] = +static const flex_int16_t yy_chk[1941] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 254, @@ -1537,148 +1545,149 @@ static const flex_int16_t yy_chk[1925] = 590, 341, 498, 634, 534, 635, 745, 407, 419, 417, 732, 417, 418, 418, 418, 533, 532, 623, 746, 418, 418, 418, 418, 418, 418, 599, 679, 623, 635, 679, - 599, 634, 639, 639, 715, 747, 748, 590, 732, 749, - 750, 715, 418, 418, 418, 418, 418, 418, 717, 751, - 720, 752, 753, 754, 755, 717, 720, 757, 758, 717, - 759, 760, 761, 762, 763, 764, 765, 599, 762, 766, - 767, 768, 769, 770, 771, 774, 775, 776, 777, 780, - 781, 782, 783, 784, 785, 786, 783, 787, 788, 789, + 599, 634, 639, 639, 715, 639, 747, 590, 732, 748, + 749, 715, 418, 418, 418, 418, 418, 418, 717, 750, + 720, 751, 752, 753, 754, 717, 720, 755, 756, 717, + 758, 759, 760, 761, 762, 763, 764, 599, 765, 766, + 763, 767, 768, 769, 770, 771, 772, 775, 776, 777, + 778, 781, 782, 783, 784, 785, 786, 787, 784, 788, - 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, - 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 821, - 822, 823, 824, 825, 813, 826, 828, 829, 830, 831, - 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, - 842, 843, 844, 845, 847, 848, 849, 850, 851, 852, - 829, 853, 854, 828, 855, 856, 858, 859, 860, 861, - 862, 863, 865, 866, 867, 862, 868, 869, 870, 871, - 872, 873, 874, 875, 876, 877, 878, 879, 880, 883, - 884, 885, 887, 888, 889, 891, 892, 893, 879, 894, + 789, 790, 792, 793, 794, 795, 796, 797, 798, 799, + 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, + 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, + 820, 822, 823, 824, 825, 826, 814, 827, 829, 830, + 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, + 841, 842, 843, 844, 845, 846, 847, 849, 850, 851, + 852, 853, 830, 854, 855, 829, 856, 857, 858, 860, + 861, 862, 863, 864, 865, 867, 868, 869, 864, 870, + 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, + 881, 882, 885, 886, 887, 889, 890, 891, 893, 894, - 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, - 905, 906, 907, 908, 910, 911, 912, 913, 914, 915, - 916, 917, 918, 919, 921, 920, 862, 922, 923, 924, - 925, 926, 927, 928, 929, 930, 931, 932, 933, 935, - 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, - 946, 919, 920, 947, 948, 949, 950, 952, 953, 954, - 955, 956, 957, 953, 958, 959, 960, 961, 962, 963, - 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, - 974, 975, 976, 978, 979, 980, 981, 982, 983, 984, - 985, 986, 987, 988, 990, 991, 994, 995, 996, 997, + 895, 881, 896, 897, 898, 899, 900, 901, 902, 903, + 904, 905, 906, 907, 908, 909, 910, 912, 913, 914, + 915, 916, 917, 918, 919, 920, 921, 923, 922, 864, + 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, + 934, 935, 936, 938, 939, 940, 941, 942, 943, 944, + 945, 946, 947, 948, 921, 922, 949, 950, 951, 952, + 953, 955, 956, 957, 958, 959, 960, 956, 961, 962, + 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, + 973, 974, 975, 976, 977, 978, 979, 981, 982, 983, + 984, 985, 986, 987, 988, 989, 990, 991, 993, 994, - 998, 954, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, - 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1016, 1018, - 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, - 1029, 1005, 1030, 1031, 1032, 1033, 1036, 1006, 1038, 1040, - 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1049, 1050, 1051, - 1053, 1054, 1055, 1056, 1059, 1061, 1062, 1063, 1064, 1065, - 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, - 1076, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, - 1087, 1088, 1090, 1091, 1092, 1093, 1095, 1096, 1097, 1098, - 1099, 1100, 1101, 1102, 1104, 1105, 1106, 1107, 1108, 1109, + 997, 998, 999, 1000, 1001, 957, 1002, 1003, 1004, 1005, + 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, + 1016, 1017, 1018, 1020, 1022, 1023, 1024, 1025, 1026, 1027, + 1028, 1029, 1030, 1031, 1032, 1008, 1033, 1034, 1035, 1036, + 1037, 1009, 1040, 1042, 1044, 1045, 1046, 1047, 1048, 1049, + 1050, 1051, 1053, 1054, 1055, 1057, 1058, 1059, 1060, 1063, + 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, + 1075, 1076, 1077, 1078, 1079, 1080, 1082, 1083, 1084, 1085, + 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1094, 1095, 1096, + 1097, 1098, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, - 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1087, 1118, - 1119, 1121, 1122, 1123, 1124, 1125, 1128, 1072, 1129, 1130, - 1122, 1131, 1132, 1133, 1090, 1134, 1135, 1136, 1137, 1138, - 1140, 1141, 1142, 1143, 1144, 1145, 1147, 1149, 1152, 1154, - 1155, 1156, 1157, 1158, 1161, 1162, 1163, 1164, 1165, 1166, - 1167, 1168, 1169, 1170, 1172, 1173, 1174, 1175, 1176, 1177, - 1178, 1179, 1180, 1181, 1182, 1184, 1158, 1187, 1189, 1190, - 1191, 1192, 1194, 1195, 1196, 1197, 1198, 1199, 1202, 1203, - 1205, 1206, 1207, 1208, 1209, 1211, 1212, 1213, 1214, 1215, - 1217, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, + 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, + 1119, 1120, 1121, 1091, 1122, 1123, 1124, 1126, 1127, 1128, + 1129, 1130, 1076, 1133, 1134, 1135, 1127, 1136, 1137, 1094, + 1138, 1139, 1140, 1141, 1142, 1143, 1145, 1146, 1147, 1148, + 1149, 1150, 1152, 1154, 1157, 1159, 1160, 1161, 1162, 1163, + 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, + 1176, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, + 1187, 1188, 1163, 1190, 1193, 1195, 1196, 1197, 1198, 1200, + 1201, 1202, 1203, 1204, 1205, 1208, 1209, 1211, 1212, 1213, + 1214, 1215, 1217, 1218, 1219, 1220, 1221, 1223, 1225, 1226, - 1229, 1230, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, - 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1219, 1247, - 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, - 1258, 1259, 1261, 1262, 1264, 1265, 1266, 1269, 1270, 1274, - 1275, 1277, 1278, 1279, 1280, 1281, 1277, 1282, 1283, 1284, - 1285, 1287, 1288, 1291, 1292, 1293, 1294, 1296, 1297, 1298, - 1299, 1300, 1301, 1302, 1266, 1303, 1304, 1240, 1305, 1306, - 1307, 1308, 1309, 1311, 1312, 1314, 1315, 1317, 1318, 1319, - 1320, 1321, 1323, 1324, 1325, 1327, 1328, 1329, 1330, 1331, - 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1341, 1342, + 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1236, 1237, + 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1246, 1247, + 1248, 1249, 1250, 1251, 1252, 1225, 1253, 1254, 1255, 1256, + 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, + 1268, 1269, 1271, 1272, 1273, 1276, 1277, 1278, 1282, 1283, + 1285, 1286, 1287, 1288, 1289, 1285, 1290, 1291, 1292, 1293, + 1295, 1296, 1299, 1300, 1301, 1302, 1304, 1305, 1306, 1307, + 1308, 1309, 1273, 1310, 1311, 1247, 1312, 1313, 1314, 1315, + 1316, 1317, 1319, 1320, 1321, 1323, 1324, 1326, 1327, 1328, + 1329, 1330, 1332, 1333, 1334, 1336, 1337, 1338, 1339, 1340, - 1343, 1345, 1348, 1349, 1350, 1351, 1352, 1354, 1355, 1356, - 1357, 1358, 1359, 1361, 1363, 1364, 1365, 1366, 1367, 1368, - 1369, 1370, 1371, 1373, 1374, 1375, 1376, 1377, 1378, 1379, - 1380, 1381, 1382, 1385, 1386, 1387, 1388, 1389, 1391, 1392, - 1393, 1394, 1395, 1396, 1397, 1398, 1400, 1401, 1402, 1403, - 1404, 1405, 1407, 1408, 1411, 1412, 1413, 1414, 1415, 1417, - 1418, 1420, 1421, 1423, 1424, 1426, 1427, 1429, 1431, 1432, - 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, - 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, - 1453, 1454, 1455, 1456, 1457, 1459, 1462, 1463, 1464, 1465, + 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1350, 1351, + 1352, 1354, 1357, 1358, 1359, 1360, 1361, 1362, 1364, 1365, + 1366, 1367, 1368, 1369, 1371, 1373, 1374, 1375, 1376, 1377, + 1378, 1379, 1380, 1381, 1383, 1384, 1385, 1386, 1387, 1388, + 1389, 1390, 1391, 1392, 1393, 1396, 1397, 1398, 1399, 1400, + 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1412, + 1413, 1414, 1415, 1416, 1417, 1419, 1420, 1423, 1424, 1425, + 1426, 1427, 1429, 1430, 1431, 1433, 1434, 1436, 1437, 1439, + 1440, 1442, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, + 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, - 1466, 1467, 1471, 1472, 1473, 1474, 1476, 1477, 1479, 1480, - 1481, 1482, 1483, 1485, 1486, 1489, 1489, 1489, 1489, 1489, - 1490, 1490, 1490, 1490, 1490, 1491, 1497, 1491, 1491, 1491, - 1492, 1498, 1492, 1499, 1492, 1493, 1493, 1493, 1493, 1493, - 1494, 1494, 1494, 1494, 1494, 1495, 1500, 1495, 1495, 1495, - 1496, 1496, 1496, 729, 728, 727, 726, 725, 724, 723, - 722, 719, 718, 716, 714, 713, 712, 711, 710, 709, - 708, 707, 706, 705, 704, 703, 702, 701, 700, 699, - 698, 696, 695, 694, 693, 692, 691, 690, 689, 687, - 686, 685, 684, 683, 682, 680, 678, 677, 676, 675, + 1462, 1463, 1464, 1465, 1466, 1467, 1469, 1470, 1471, 1472, + 1473, 1475, 1478, 1479, 1480, 1481, 1482, 1483, 1487, 1488, + 1489, 1490, 1492, 1493, 1495, 1496, 1497, 1498, 1499, 1501, + 1502, 1505, 1505, 1505, 1505, 1505, 1506, 1506, 1506, 1506, + 1506, 1507, 1513, 1507, 1507, 1507, 1508, 1514, 1508, 1515, + 1508, 1509, 1509, 1509, 1509, 1509, 1510, 1510, 1510, 1510, + 1510, 1511, 1516, 1511, 1511, 1511, 1512, 1512, 1512, 729, + 728, 727, 726, 725, 724, 723, 722, 719, 718, 716, + 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, + 704, 703, 702, 701, 700, 699, 698, 696, 695, 694, - 674, 673, 672, 671, 670, 669, 668, 667, 666, 665, - 664, 663, 662, 660, 659, 658, 657, 656, 655, 654, - 653, 652, 651, 650, 649, 648, 647, 646, 645, 644, - 643, 642, 641, 640, 638, 637, 636, 633, 632, 631, - 628, 627, 626, 625, 624, 621, 620, 619, 618, 617, - 616, 615, 614, 613, 612, 611, 610, 609, 607, 606, - 605, 604, 603, 602, 601, 600, 598, 597, 595, 594, - 593, 592, 591, 589, 588, 587, 585, 584, 582, 581, - 580, 579, 578, 577, 576, 575, 574, 572, 571, 570, - 569, 568, 566, 565, 564, 563, 562, 561, 560, 559, + 693, 692, 691, 690, 689, 687, 686, 685, 684, 683, + 682, 680, 678, 677, 676, 675, 674, 673, 672, 671, + 670, 669, 668, 667, 666, 665, 664, 663, 662, 660, + 659, 658, 657, 656, 655, 654, 653, 652, 651, 650, + 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, + 638, 637, 636, 633, 632, 631, 628, 627, 626, 625, + 624, 621, 620, 619, 618, 617, 616, 615, 614, 613, + 612, 611, 610, 609, 607, 606, 605, 604, 603, 602, + 601, 600, 598, 597, 595, 594, 593, 592, 591, 589, + 588, 587, 585, 584, 582, 581, 580, 579, 578, 577, - 557, 556, 555, 554, 553, 552, 551, 550, 549, 548, - 547, 546, 545, 544, 543, 542, 541, 540, 539, 538, - 537, 536, 530, 528, 525, 524, 522, 521, 520, 518, - 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, - 504, 503, 502, 501, 500, 499, 497, 496, 495, 494, - 493, 492, 491, 490, 489, 488, 487, 485, 483, 482, - 481, 480, 479, 478, 477, 476, 475, 474, 473, 472, - 470, 469, 468, 467, 466, 465, 464, 463, 462, 461, - 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, - 449, 448, 447, 446, 444, 443, 442, 441, 440, 439, + 576, 575, 574, 572, 571, 570, 569, 568, 566, 565, + 564, 563, 562, 561, 560, 559, 557, 556, 555, 554, + 553, 552, 551, 550, 549, 548, 547, 546, 545, 544, + 543, 542, 541, 540, 539, 538, 537, 536, 530, 528, + 525, 524, 522, 521, 520, 518, 514, 513, 512, 511, + 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, + 500, 499, 497, 496, 495, 494, 493, 492, 491, 490, + 489, 488, 487, 485, 483, 482, 481, 480, 479, 478, + 477, 476, 475, 474, 473, 472, 470, 469, 468, 467, + 466, 465, 464, 463, 462, 461, 460, 459, 458, 457, - 437, 436, 434, 433, 432, 431, 429, 428, 427, 426, - 425, 424, 423, 421, 420, 415, 414, 412, 411, 410, - 409, 408, 405, 402, 400, 399, 398, 397, 395, 394, - 393, 392, 391, 390, 389, 388, 387, 386, 384, 383, - 382, 380, 379, 378, 377, 376, 375, 373, 372, 370, - 369, 368, 367, 366, 365, 364, 363, 362, 358, 357, - 356, 355, 354, 352, 351, 350, 349, 348, 347, 346, - 345, 344, 343, 342, 340, 339, 338, 337, 336, 335, - 334, 333, 332, 331, 330, 329, 328, 326, 325, 324, - 322, 319, 318, 317, 316, 315, 314, 313, 309, 307, + 456, 455, 454, 453, 452, 451, 449, 448, 447, 446, + 444, 443, 442, 441, 440, 439, 437, 436, 434, 433, + 432, 431, 429, 428, 427, 426, 425, 424, 423, 421, + 420, 415, 414, 412, 411, 410, 409, 408, 405, 402, + 400, 399, 398, 397, 395, 394, 393, 392, 391, 390, + 389, 388, 387, 386, 384, 383, 382, 380, 379, 378, + 377, 376, 375, 373, 372, 370, 369, 368, 367, 366, + 365, 364, 363, 362, 358, 357, 356, 355, 354, 352, + 351, 350, 349, 348, 347, 346, 345, 344, 343, 342, + 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, - 304, 302, 299, 296, 289, 288, 287, 286, 285, 284, - 282, 281, 280, 279, 278, 276, 275, 274, 273, 272, - 271, 270, 268, 267, 266, 265, 264, 263, 262, 261, - 260, 259, 258, 257, 256, 255, 253, 252, 251, 249, - 248, 247, 246, 244, 243, 242, 241, 240, 239, 238, - 237, 236, 234, 233, 232, 231, 230, 229, 228, 227, - 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, - 216, 215, 214, 213, 212, 210, 209, 208, 207, 205, - 202, 200, 198, 196, 195, 190, 189, 185, 177, 176, - 175, 174, 173, 172, 170, 169, 168, 167, 165, 163, + 330, 329, 328, 326, 325, 324, 322, 319, 318, 317, + 316, 315, 314, 313, 309, 307, 304, 302, 299, 296, + 289, 288, 287, 286, 285, 284, 282, 281, 280, 279, + 278, 276, 275, 274, 273, 272, 271, 270, 268, 267, + 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, + 256, 255, 253, 252, 251, 249, 248, 247, 246, 244, + 243, 242, 241, 240, 239, 238, 237, 236, 234, 233, + 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, + 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, + 212, 210, 209, 208, 207, 205, 202, 200, 198, 196, - 162, 161, 159, 158, 156, 155, 154, 153, 152, 150, - 149, 148, 147, 145, 144, 143, 142, 141, 140, 139, - 137, 136, 134, 133, 129, 128, 127, 125, 124, 123, - 121, 120, 116, 110, 106, 105, 104, 98, 97, 78, - 73, 67, 50, 49, 48, 43, 41, 39, 38, 24, - 14, 11, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, + 195, 190, 189, 185, 177, 176, 175, 174, 173, 172, + 170, 169, 168, 167, 165, 163, 162, 161, 159, 158, + 156, 155, 154, 153, 152, 150, 149, 148, 147, 145, + 144, 143, 142, 141, 140, 139, 137, 136, 134, 133, + 129, 128, 127, 125, 124, 123, 121, 120, 116, 110, + 106, 105, 104, 98, 97, 78, 73, 67, 50, 49, + 48, 43, 41, 39, 38, 24, 14, 11, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, - 1488, 1488, 1488, 1488 + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504 } ; static yy_state_type yy_last_accepting_state; @@ -1687,28 +1696,28 @@ static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[182] = +static const flex_int16_t yy_rule_linenum[183] = { 0, 149, 151, 153, 158, 159, 164, 165, 166, 178, 181, 186, 193, 202, 211, 220, 229, 238, 247, 256, 265, 274, 283, 292, 301, 310, 319, 328, 338, 348, 358, 368, 378, 387, 397, 407, 417, 427, 436, 445, 454, - 463, 472, 481, 490, 499, 508, 517, 526, 536, 545, - 558, 567, 576, 585, 594, 605, 616, 627, 638, 650, - 661, 672, 683, 694, 705, 716, 727, 738, 749, 760, - 771, 782, 793, 804, 815, 824, 833, 843, 852, 861, - 876, 892, 901, 910, 919, 928, 937, 946, 955, 964, - 973, 982, 1004, 1026, 1035, 1045, 1055, 1064, 1074, 1085, + 463, 472, 481, 490, 499, 508, 517, 526, 535, 544, + 553, 566, 575, 584, 593, 602, 613, 624, 635, 646, + 658, 669, 680, 691, 702, 713, 724, 735, 746, 757, + 768, 779, 790, 801, 812, 823, 832, 841, 851, 860, + 869, 884, 900, 909, 918, 927, 936, 945, 954, 963, + 972, 981, 990, 1012, 1034, 1043, 1053, 1063, 1072, 1082, - 1094, 1103, 1112, 1121, 1130, 1140, 1149, 1158, 1167, 1176, - 1185, 1194, 1203, 1212, 1221, 1231, 1240, 1249, 1259, 1271, - 1284, 1293, 1302, 1312, 1322, 1331, 1342, 1352, 1361, 1371, - 1381, 1390, 1399, 1408, 1417, 1427, 1436, 1446, 1455, 1464, - 1473, 1482, 1491, 1500, 1509, 1518, 1527, 1536, 1545, 1554, - 1563, 1572, 1581, 1590, 1599, 1608, 1617, 1626, 1635, 1644, - 1653, 1662, 1671, 1681, 1780, 1785, 1790, 1795, 1796, 1797, - 1798, 1799, 1800, 1802, 1820, 1833, 1838, 1842, 1844, 1846, - 1848 + 1093, 1102, 1111, 1120, 1129, 1138, 1148, 1157, 1166, 1175, + 1184, 1193, 1202, 1211, 1220, 1229, 1239, 1248, 1257, 1267, + 1279, 1292, 1301, 1310, 1320, 1330, 1339, 1350, 1360, 1369, + 1379, 1389, 1398, 1407, 1416, 1425, 1435, 1444, 1454, 1463, + 1472, 1481, 1490, 1499, 1508, 1517, 1526, 1535, 1544, 1553, + 1562, 1571, 1580, 1589, 1598, 1607, 1616, 1625, 1634, 1643, + 1652, 1661, 1670, 1679, 1689, 1788, 1793, 1798, 1803, 1804, + 1805, 1806, 1807, 1808, 1810, 1828, 1841, 1846, 1850, 1852, + 1854, 1856 } ; /* The intent behind this definition is that it'll catch @@ -1761,7 +1770,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg) -#line 1764 "dhcp6_lexer.cc" +#line 1774 "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 @@ -1787,8 +1796,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 1790 "dhcp6_lexer.cc" -#line 1791 "dhcp6_lexer.cc" +#line 1800 "dhcp6_lexer.cc" +#line 1801 "dhcp6_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2120,7 +2129,7 @@ YY_DECL } -#line 2123 "dhcp6_lexer.cc" +#line 2133 "dhcp6_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2149,13 +2158,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 >= 1489 ) + if ( yy_current_state >= 1505 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1488 ); + while ( yy_current_state != 1504 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -2174,13 +2183,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 < 182 ) + else if ( yy_act < 183 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 182 ) + else if ( yy_act == 183 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 183 ) + else if ( yy_act == 184 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -2739,7 +2748,19 @@ YY_RULE_SETUP YY_BREAK case 49: YY_RULE_SETUP -#line 536 "dhcp6_lexer.ll" +#line 535 "dhcp6_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::CONFIG_CONTROL: + return isc::dhcp::Dhcp6Parser::make_CONFIG_FETCH_WAIT_TIME(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("config-fetch-wait-time", driver.loc_); + } +} + YY_BREAK +case 50: +YY_RULE_SETUP +#line 544 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOSTS_DATABASE: @@ -2749,9 +2770,9 @@ YY_RULE_SETUP } } YY_BREAK -case 50: +case 51: YY_RULE_SETUP -#line 545 "dhcp6_lexer.ll" +#line 553 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2765,9 +2786,9 @@ YY_RULE_SETUP } } YY_BREAK -case 51: +case 52: YY_RULE_SETUP -#line 558 "dhcp6_lexer.ll" +#line 566 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DATABASE_TYPE: @@ -2777,9 +2798,9 @@ YY_RULE_SETUP } } YY_BREAK -case 52: +case 53: YY_RULE_SETUP -#line 567 "dhcp6_lexer.ll" +#line 575 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DATABASE_TYPE: @@ -2789,9 +2810,9 @@ YY_RULE_SETUP } } YY_BREAK -case 53: +case 54: YY_RULE_SETUP -#line 576 "dhcp6_lexer.ll" +#line 584 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DATABASE_TYPE: @@ -2801,9 +2822,9 @@ YY_RULE_SETUP } } YY_BREAK -case 54: +case 55: YY_RULE_SETUP -#line 585 "dhcp6_lexer.ll" +#line 593 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DATABASE_TYPE: @@ -2813,9 +2834,9 @@ YY_RULE_SETUP } } YY_BREAK -case 55: +case 56: YY_RULE_SETUP -#line 594 "dhcp6_lexer.ll" +#line 602 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2827,9 +2848,9 @@ YY_RULE_SETUP } } YY_BREAK -case 56: +case 57: YY_RULE_SETUP -#line 605 "dhcp6_lexer.ll" +#line 613 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2841,9 +2862,9 @@ YY_RULE_SETUP } } YY_BREAK -case 57: +case 58: YY_RULE_SETUP -#line 616 "dhcp6_lexer.ll" +#line 624 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2855,9 +2876,9 @@ YY_RULE_SETUP } } YY_BREAK -case 58: +case 59: YY_RULE_SETUP -#line 627 "dhcp6_lexer.ll" +#line 635 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2869,9 +2890,9 @@ YY_RULE_SETUP } } YY_BREAK -case 59: +case 60: YY_RULE_SETUP -#line 638 "dhcp6_lexer.ll" +#line 646 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2884,9 +2905,9 @@ YY_RULE_SETUP } } YY_BREAK -case 60: +case 61: YY_RULE_SETUP -#line 650 "dhcp6_lexer.ll" +#line 658 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2898,9 +2919,9 @@ YY_RULE_SETUP } } YY_BREAK -case 61: +case 62: YY_RULE_SETUP -#line 661 "dhcp6_lexer.ll" +#line 669 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2912,9 +2933,9 @@ YY_RULE_SETUP } } YY_BREAK -case 62: +case 63: YY_RULE_SETUP -#line 672 "dhcp6_lexer.ll" +#line 680 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2926,9 +2947,9 @@ YY_RULE_SETUP } } YY_BREAK -case 63: +case 64: YY_RULE_SETUP -#line 683 "dhcp6_lexer.ll" +#line 691 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2940,9 +2961,9 @@ YY_RULE_SETUP } } YY_BREAK -case 64: +case 65: YY_RULE_SETUP -#line 694 "dhcp6_lexer.ll" +#line 702 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2954,9 +2975,9 @@ YY_RULE_SETUP } } YY_BREAK -case 65: +case 66: YY_RULE_SETUP -#line 705 "dhcp6_lexer.ll" +#line 713 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2968,9 +2989,9 @@ YY_RULE_SETUP } } YY_BREAK -case 66: +case 67: YY_RULE_SETUP -#line 716 "dhcp6_lexer.ll" +#line 724 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2982,9 +3003,9 @@ YY_RULE_SETUP } } YY_BREAK -case 67: +case 68: YY_RULE_SETUP -#line 727 "dhcp6_lexer.ll" +#line 735 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2996,9 +3017,9 @@ YY_RULE_SETUP } } YY_BREAK -case 68: +case 69: YY_RULE_SETUP -#line 738 "dhcp6_lexer.ll" +#line 746 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3010,9 +3031,9 @@ YY_RULE_SETUP } } YY_BREAK -case 69: +case 70: YY_RULE_SETUP -#line 749 "dhcp6_lexer.ll" +#line 757 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3024,9 +3045,9 @@ YY_RULE_SETUP } } YY_BREAK -case 70: +case 71: YY_RULE_SETUP -#line 760 "dhcp6_lexer.ll" +#line 768 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3038,9 +3059,9 @@ YY_RULE_SETUP } } YY_BREAK -case 71: +case 72: YY_RULE_SETUP -#line 771 "dhcp6_lexer.ll" +#line 779 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3052,9 +3073,9 @@ YY_RULE_SETUP } } YY_BREAK -case 72: +case 73: YY_RULE_SETUP -#line 782 "dhcp6_lexer.ll" +#line 790 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3066,9 +3087,9 @@ YY_RULE_SETUP } } YY_BREAK -case 73: +case 74: YY_RULE_SETUP -#line 793 "dhcp6_lexer.ll" +#line 801 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3080,9 +3101,9 @@ YY_RULE_SETUP } } YY_BREAK -case 74: +case 75: YY_RULE_SETUP -#line 804 "dhcp6_lexer.ll" +#line 812 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3094,9 +3115,9 @@ YY_RULE_SETUP } } YY_BREAK -case 75: +case 76: YY_RULE_SETUP -#line 815 "dhcp6_lexer.ll" +#line 823 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3106,9 +3127,9 @@ YY_RULE_SETUP } } YY_BREAK -case 76: +case 77: YY_RULE_SETUP -#line 824 "dhcp6_lexer.ll" +#line 832 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3118,9 +3139,9 @@ YY_RULE_SETUP } } YY_BREAK -case 77: +case 78: YY_RULE_SETUP -#line 833 "dhcp6_lexer.ll" +#line 841 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3131,9 +3152,9 @@ YY_RULE_SETUP } } YY_BREAK -case 78: +case 79: YY_RULE_SETUP -#line 843 "dhcp6_lexer.ll" +#line 851 "dhcp6_lexer.ll" { switch (driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3143,9 +3164,9 @@ YY_RULE_SETUP } } YY_BREAK -case 79: +case 80: YY_RULE_SETUP -#line 852 "dhcp6_lexer.ll" +#line 860 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3155,9 +3176,9 @@ YY_RULE_SETUP } } YY_BREAK -case 80: +case 81: YY_RULE_SETUP -#line 861 "dhcp6_lexer.ll" +#line 869 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3173,9 +3194,9 @@ YY_RULE_SETUP } } YY_BREAK -case 81: +case 82: YY_RULE_SETUP -#line 876 "dhcp6_lexer.ll" +#line 884 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3192,9 +3213,9 @@ YY_RULE_SETUP } } YY_BREAK -case 82: +case 83: YY_RULE_SETUP -#line 892 "dhcp6_lexer.ll" +#line 900 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DATA: @@ -3204,9 +3225,9 @@ YY_RULE_SETUP } } YY_BREAK -case 83: +case 84: YY_RULE_SETUP -#line 901 "dhcp6_lexer.ll" +#line 909 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DATA: @@ -3216,9 +3237,9 @@ YY_RULE_SETUP } } YY_BREAK -case 84: +case 85: YY_RULE_SETUP -#line 910 "dhcp6_lexer.ll" +#line 918 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3228,9 +3249,9 @@ YY_RULE_SETUP } } YY_BREAK -case 85: +case 86: YY_RULE_SETUP -#line 919 "dhcp6_lexer.ll" +#line 927 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3240,9 +3261,9 @@ YY_RULE_SETUP } } YY_BREAK -case 86: +case 87: YY_RULE_SETUP -#line 928 "dhcp6_lexer.ll" +#line 936 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3252,9 +3273,9 @@ YY_RULE_SETUP } } YY_BREAK -case 87: +case 88: YY_RULE_SETUP -#line 937 "dhcp6_lexer.ll" +#line 945 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3264,9 +3285,9 @@ YY_RULE_SETUP } } YY_BREAK -case 88: +case 89: YY_RULE_SETUP -#line 946 "dhcp6_lexer.ll" +#line 954 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3276,9 +3297,9 @@ YY_RULE_SETUP } } YY_BREAK -case 89: +case 90: YY_RULE_SETUP -#line 955 "dhcp6_lexer.ll" +#line 963 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3288,9 +3309,9 @@ YY_RULE_SETUP } } YY_BREAK -case 90: +case 91: YY_RULE_SETUP -#line 964 "dhcp6_lexer.ll" +#line 972 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3300,9 +3321,9 @@ YY_RULE_SETUP } } YY_BREAK -case 91: +case 92: YY_RULE_SETUP -#line 973 "dhcp6_lexer.ll" +#line 981 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::POOLS: @@ -3312,9 +3333,9 @@ YY_RULE_SETUP } } YY_BREAK -case 92: +case 93: YY_RULE_SETUP -#line 982 "dhcp6_lexer.ll" +#line 990 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3337,9 +3358,9 @@ YY_RULE_SETUP } } YY_BREAK -case 93: +case 94: YY_RULE_SETUP -#line 1004 "dhcp6_lexer.ll" +#line 1012 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3362,9 +3383,9 @@ YY_RULE_SETUP } } YY_BREAK -case 94: +case 95: YY_RULE_SETUP -#line 1026 "dhcp6_lexer.ll" +#line 1034 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3374,9 +3395,9 @@ YY_RULE_SETUP } } YY_BREAK -case 95: +case 96: YY_RULE_SETUP -#line 1035 "dhcp6_lexer.ll" +#line 1043 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3387,9 +3408,9 @@ YY_RULE_SETUP } } YY_BREAK -case 96: +case 97: YY_RULE_SETUP -#line 1045 "dhcp6_lexer.ll" +#line 1053 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3400,9 +3421,9 @@ YY_RULE_SETUP } } YY_BREAK -case 97: +case 98: YY_RULE_SETUP -#line 1055 "dhcp6_lexer.ll" +#line 1063 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3412,9 +3433,9 @@ YY_RULE_SETUP } } YY_BREAK -case 98: +case 99: YY_RULE_SETUP -#line 1064 "dhcp6_lexer.ll" +#line 1072 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3425,9 +3446,9 @@ YY_RULE_SETUP } } YY_BREAK -case 99: +case 100: YY_RULE_SETUP -#line 1074 "dhcp6_lexer.ll" +#line 1082 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3439,9 +3460,9 @@ YY_RULE_SETUP } } YY_BREAK -case 100: +case 101: YY_RULE_SETUP -#line 1085 "dhcp6_lexer.ll" +#line 1093 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3451,9 +3472,9 @@ YY_RULE_SETUP } } YY_BREAK -case 101: +case 102: YY_RULE_SETUP -#line 1094 "dhcp6_lexer.ll" +#line 1102 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3463,9 +3484,9 @@ YY_RULE_SETUP } } YY_BREAK -case 102: +case 103: YY_RULE_SETUP -#line 1103 "dhcp6_lexer.ll" +#line 1111 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3475,9 +3496,9 @@ YY_RULE_SETUP } } YY_BREAK -case 103: +case 104: YY_RULE_SETUP -#line 1112 "dhcp6_lexer.ll" +#line 1120 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3487,9 +3508,9 @@ YY_RULE_SETUP } } YY_BREAK -case 104: +case 105: YY_RULE_SETUP -#line 1121 "dhcp6_lexer.ll" +#line 1129 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3499,9 +3520,9 @@ YY_RULE_SETUP } } YY_BREAK -case 105: +case 106: YY_RULE_SETUP -#line 1130 "dhcp6_lexer.ll" +#line 1138 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -3512,9 +3533,9 @@ YY_RULE_SETUP } } YY_BREAK -case 106: +case 107: YY_RULE_SETUP -#line 1140 "dhcp6_lexer.ll" +#line 1148 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3524,9 +3545,9 @@ YY_RULE_SETUP } } YY_BREAK -case 107: +case 108: YY_RULE_SETUP -#line 1149 "dhcp6_lexer.ll" +#line 1157 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3536,9 +3557,9 @@ YY_RULE_SETUP } } YY_BREAK -case 108: +case 109: YY_RULE_SETUP -#line 1158 "dhcp6_lexer.ll" +#line 1166 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3548,9 +3569,9 @@ YY_RULE_SETUP } } YY_BREAK -case 109: +case 110: YY_RULE_SETUP -#line 1167 "dhcp6_lexer.ll" +#line 1175 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CONFIG: @@ -3560,9 +3581,9 @@ YY_RULE_SETUP } } YY_BREAK -case 110: +case 111: YY_RULE_SETUP -#line 1176 "dhcp6_lexer.ll" +#line 1184 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGING: @@ -3572,9 +3593,9 @@ YY_RULE_SETUP } } YY_BREAK -case 111: +case 112: YY_RULE_SETUP -#line 1185 "dhcp6_lexer.ll" +#line 1193 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGERS: @@ -3584,9 +3605,9 @@ YY_RULE_SETUP } } YY_BREAK -case 112: +case 113: YY_RULE_SETUP -#line 1194 "dhcp6_lexer.ll" +#line 1202 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -3596,9 +3617,9 @@ YY_RULE_SETUP } } YY_BREAK -case 113: +case 114: YY_RULE_SETUP -#line 1203 "dhcp6_lexer.ll" +#line 1211 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -3608,9 +3629,9 @@ YY_RULE_SETUP } } YY_BREAK -case 114: +case 115: YY_RULE_SETUP -#line 1212 "dhcp6_lexer.ll" +#line 1220 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -3620,9 +3641,9 @@ YY_RULE_SETUP } } YY_BREAK -case 115: +case 116: YY_RULE_SETUP -#line 1221 "dhcp6_lexer.ll" +#line 1229 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -3632,9 +3653,9 @@ YY_RULE_SETUP } } YY_BREAK -case 116: +case 117: YY_RULE_SETUP -#line 1231 "dhcp6_lexer.ll" +#line 1239 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGERS: @@ -3644,9 +3665,9 @@ YY_RULE_SETUP } } YY_BREAK -case 117: +case 118: YY_RULE_SETUP -#line 1240 "dhcp6_lexer.ll" +#line 1248 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGERS: @@ -3656,9 +3677,9 @@ YY_RULE_SETUP } } YY_BREAK -case 118: +case 119: YY_RULE_SETUP -#line 1249 "dhcp6_lexer.ll" +#line 1257 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3669,9 +3690,9 @@ YY_RULE_SETUP } } YY_BREAK -case 119: +case 120: YY_RULE_SETUP -#line 1259 "dhcp6_lexer.ll" +#line 1267 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3684,9 +3705,9 @@ YY_RULE_SETUP } } YY_BREAK -case 120: +case 121: YY_RULE_SETUP -#line 1271 "dhcp6_lexer.ll" +#line 1279 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3700,9 +3721,9 @@ YY_RULE_SETUP } } YY_BREAK -case 121: +case 122: YY_RULE_SETUP -#line 1284 "dhcp6_lexer.ll" +#line 1292 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CLIENT_CLASSES: @@ -3712,9 +3733,9 @@ YY_RULE_SETUP } } YY_BREAK -case 122: +case 123: YY_RULE_SETUP -#line 1293 "dhcp6_lexer.ll" +#line 1301 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CLIENT_CLASSES: @@ -3724,9 +3745,9 @@ YY_RULE_SETUP } } YY_BREAK -case 123: +case 124: YY_RULE_SETUP -#line 1302 "dhcp6_lexer.ll" +#line 1310 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3737,9 +3758,9 @@ YY_RULE_SETUP } } YY_BREAK -case 124: +case 125: YY_RULE_SETUP -#line 1312 "dhcp6_lexer.ll" +#line 1320 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATIONS: @@ -3750,9 +3771,9 @@ YY_RULE_SETUP } } YY_BREAK -case 125: +case 126: YY_RULE_SETUP -#line 1322 "dhcp6_lexer.ll" +#line 1330 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATIONS: @@ -3762,9 +3783,9 @@ YY_RULE_SETUP } } YY_BREAK -case 126: +case 127: YY_RULE_SETUP -#line 1331 "dhcp6_lexer.ll" +#line 1339 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::MAC_SOURCES: @@ -3776,9 +3797,9 @@ YY_RULE_SETUP } } YY_BREAK -case 127: +case 128: YY_RULE_SETUP -#line 1342 "dhcp6_lexer.ll" +#line 1350 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS: @@ -3789,9 +3810,9 @@ YY_RULE_SETUP } } YY_BREAK -case 128: +case 129: YY_RULE_SETUP -#line 1352 "dhcp6_lexer.ll" +#line 1360 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATIONS: @@ -3801,9 +3822,9 @@ YY_RULE_SETUP } } YY_BREAK -case 129: +case 130: YY_RULE_SETUP -#line 1361 "dhcp6_lexer.ll" +#line 1369 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS: @@ -3814,9 +3835,9 @@ YY_RULE_SETUP } } YY_BREAK -case 130: +case 131: YY_RULE_SETUP -#line 1371 "dhcp6_lexer.ll" +#line 1379 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -3827,9 +3848,9 @@ YY_RULE_SETUP } } YY_BREAK -case 131: +case 132: YY_RULE_SETUP -#line 1381 "dhcp6_lexer.ll" +#line 1389 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DATA: @@ -3839,9 +3860,9 @@ YY_RULE_SETUP } } YY_BREAK -case 132: +case 133: YY_RULE_SETUP -#line 1390 "dhcp6_lexer.ll" +#line 1398 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -3851,9 +3872,9 @@ YY_RULE_SETUP } } YY_BREAK -case 133: +case 134: YY_RULE_SETUP -#line 1399 "dhcp6_lexer.ll" +#line 1407 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -3863,9 +3884,9 @@ YY_RULE_SETUP } } YY_BREAK -case 134: +case 135: YY_RULE_SETUP -#line 1408 "dhcp6_lexer.ll" +#line 1416 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -3875,9 +3896,9 @@ YY_RULE_SETUP } } YY_BREAK -case 135: +case 136: YY_RULE_SETUP -#line 1417 "dhcp6_lexer.ll" +#line 1425 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3888,9 +3909,9 @@ YY_RULE_SETUP } } YY_BREAK -case 136: +case 137: YY_RULE_SETUP -#line 1427 "dhcp6_lexer.ll" +#line 1435 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RELAY: @@ -3900,9 +3921,9 @@ YY_RULE_SETUP } } YY_BREAK -case 137: +case 138: YY_RULE_SETUP -#line 1436 "dhcp6_lexer.ll" +#line 1444 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3912,9 +3933,9 @@ YY_RULE_SETUP } } YY_BREAK -case 138: +case 139: YY_RULE_SETUP -#line 1446 "dhcp6_lexer.ll" +#line 1454 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOOKS_LIBRARIES: @@ -3924,9 +3945,9 @@ YY_RULE_SETUP } } YY_BREAK -case 139: +case 140: YY_RULE_SETUP -#line 1455 "dhcp6_lexer.ll" +#line 1463 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOOKS_LIBRARIES: @@ -3936,9 +3957,9 @@ YY_RULE_SETUP } } YY_BREAK -case 140: +case 141: YY_RULE_SETUP -#line 1464 "dhcp6_lexer.ll" +#line 1472 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3948,9 +3969,9 @@ YY_RULE_SETUP } } YY_BREAK -case 141: +case 142: YY_RULE_SETUP -#line 1473 "dhcp6_lexer.ll" +#line 1481 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DUID_TYPE: @@ -3960,9 +3981,9 @@ YY_RULE_SETUP } } YY_BREAK -case 142: +case 143: YY_RULE_SETUP -#line 1482 "dhcp6_lexer.ll" +#line 1490 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DUID_TYPE: @@ -3972,9 +3993,9 @@ YY_RULE_SETUP } } YY_BREAK -case 143: +case 144: YY_RULE_SETUP -#line 1491 "dhcp6_lexer.ll" +#line 1499 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DUID_TYPE: @@ -3984,9 +4005,9 @@ YY_RULE_SETUP } } YY_BREAK -case 144: +case 145: YY_RULE_SETUP -#line 1500 "dhcp6_lexer.ll" +#line 1508 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SERVER_ID: @@ -3996,9 +4017,9 @@ YY_RULE_SETUP } } YY_BREAK -case 145: +case 146: YY_RULE_SETUP -#line 1509 "dhcp6_lexer.ll" +#line 1517 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SERVER_ID: @@ -4008,9 +4029,9 @@ YY_RULE_SETUP } } YY_BREAK -case 146: +case 147: YY_RULE_SETUP -#line 1518 "dhcp6_lexer.ll" +#line 1526 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SERVER_ID: @@ -4020,9 +4041,9 @@ YY_RULE_SETUP } } YY_BREAK -case 147: +case 148: YY_RULE_SETUP -#line 1527 "dhcp6_lexer.ll" +#line 1535 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SERVER_ID: @@ -4032,9 +4053,9 @@ YY_RULE_SETUP } } YY_BREAK -case 148: +case 149: YY_RULE_SETUP -#line 1536 "dhcp6_lexer.ll" +#line 1544 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4044,9 +4065,9 @@ YY_RULE_SETUP } } YY_BREAK -case 149: +case 150: YY_RULE_SETUP -#line 1545 "dhcp6_lexer.ll" +#line 1553 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4056,9 +4077,9 @@ YY_RULE_SETUP } } YY_BREAK -case 150: +case 151: YY_RULE_SETUP -#line 1554 "dhcp6_lexer.ll" +#line 1562 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4068,9 +4089,9 @@ YY_RULE_SETUP } } YY_BREAK -case 151: +case 152: YY_RULE_SETUP -#line 1563 "dhcp6_lexer.ll" +#line 1571 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4080,9 +4101,9 @@ YY_RULE_SETUP } } YY_BREAK -case 152: +case 153: YY_RULE_SETUP -#line 1572 "dhcp6_lexer.ll" +#line 1580 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4092,9 +4113,9 @@ YY_RULE_SETUP } } YY_BREAK -case 153: +case 154: YY_RULE_SETUP -#line 1581 "dhcp6_lexer.ll" +#line 1589 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4104,9 +4125,9 @@ YY_RULE_SETUP } } YY_BREAK -case 154: +case 155: YY_RULE_SETUP -#line 1590 "dhcp6_lexer.ll" +#line 1598 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING: @@ -4116,9 +4137,9 @@ YY_RULE_SETUP } } YY_BREAK -case 155: +case 156: YY_RULE_SETUP -#line 1599 "dhcp6_lexer.ll" +#line 1607 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4128,9 +4149,9 @@ YY_RULE_SETUP } } YY_BREAK -case 156: +case 157: YY_RULE_SETUP -#line 1608 "dhcp6_lexer.ll" +#line 1616 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4140,9 +4161,9 @@ YY_RULE_SETUP } } YY_BREAK -case 157: +case 158: YY_RULE_SETUP -#line 1617 "dhcp6_lexer.ll" +#line 1625 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CONTROL_SOCKET: @@ -4152,9 +4173,9 @@ YY_RULE_SETUP } } YY_BREAK -case 158: +case 159: YY_RULE_SETUP -#line 1626 "dhcp6_lexer.ll" +#line 1634 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CONTROL_SOCKET: @@ -4164,9 +4185,9 @@ YY_RULE_SETUP } } YY_BREAK -case 159: +case 160: YY_RULE_SETUP -#line 1635 "dhcp6_lexer.ll" +#line 1643 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4176,9 +4197,9 @@ YY_RULE_SETUP } } YY_BREAK -case 160: +case 161: YY_RULE_SETUP -#line 1644 "dhcp6_lexer.ll" +#line 1652 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -4188,9 +4209,9 @@ YY_RULE_SETUP } } YY_BREAK -case 161: +case 162: YY_RULE_SETUP -#line 1653 "dhcp6_lexer.ll" +#line 1661 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CONFIG: @@ -4200,9 +4221,9 @@ YY_RULE_SETUP } } YY_BREAK -case 162: +case 163: YY_RULE_SETUP -#line 1662 "dhcp6_lexer.ll" +#line 1670 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CONFIG: @@ -4212,9 +4233,9 @@ YY_RULE_SETUP } } YY_BREAK -case 163: +case 164: YY_RULE_SETUP -#line 1671 "dhcp6_lexer.ll" +#line 1679 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CONFIG: @@ -4224,9 +4245,9 @@ YY_RULE_SETUP } } YY_BREAK -case 164: +case 165: YY_RULE_SETUP -#line 1681 "dhcp6_lexer.ll" +#line 1689 "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. @@ -4326,65 +4347,65 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_); } YY_BREAK -case 165: -/* rule 165 can match eol */ +case 166: +/* rule 166 can match eol */ YY_RULE_SETUP -#line 1780 "dhcp6_lexer.ll" +#line 1788 "dhcp6_lexer.ll" { /* Bad string with a forbidden control character inside */ driver.error(driver.loc_, "Invalid control in " + std::string(yytext)); } YY_BREAK -case 166: -/* rule 166 can match eol */ +case 167: +/* rule 167 can match eol */ YY_RULE_SETUP -#line 1785 "dhcp6_lexer.ll" +#line 1793 "dhcp6_lexer.ll" { /* Bad string with a bad escape inside */ driver.error(driver.loc_, "Bad escape in " + std::string(yytext)); } YY_BREAK -case 167: +case 168: YY_RULE_SETUP -#line 1790 "dhcp6_lexer.ll" +#line 1798 "dhcp6_lexer.ll" { /* Bad string with an open escape at the end */ driver.error(driver.loc_, "Overflow escape in " + std::string(yytext)); } YY_BREAK -case 168: -YY_RULE_SETUP -#line 1795 "dhcp6_lexer.ll" -{ return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); } - YY_BREAK case 169: YY_RULE_SETUP -#line 1796 "dhcp6_lexer.ll" -{ return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); } +#line 1803 "dhcp6_lexer.ll" +{ return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); } YY_BREAK case 170: YY_RULE_SETUP -#line 1797 "dhcp6_lexer.ll" -{ return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); } +#line 1804 "dhcp6_lexer.ll" +{ return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); } YY_BREAK case 171: YY_RULE_SETUP -#line 1798 "dhcp6_lexer.ll" -{ return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); } +#line 1805 "dhcp6_lexer.ll" +{ return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); } YY_BREAK case 172: YY_RULE_SETUP -#line 1799 "dhcp6_lexer.ll" -{ return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); } +#line 1806 "dhcp6_lexer.ll" +{ return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); } YY_BREAK case 173: YY_RULE_SETUP -#line 1800 "dhcp6_lexer.ll" -{ return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); } +#line 1807 "dhcp6_lexer.ll" +{ return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); } YY_BREAK case 174: YY_RULE_SETUP -#line 1802 "dhcp6_lexer.ll" +#line 1808 "dhcp6_lexer.ll" +{ return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); } + YY_BREAK +case 175: +YY_RULE_SETUP +#line 1810 "dhcp6_lexer.ll" { /* An integer was found. */ std::string tmp(yytext); @@ -4403,9 +4424,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_); } YY_BREAK -case 175: +case 176: YY_RULE_SETUP -#line 1820 "dhcp6_lexer.ll" +#line 1828 "dhcp6_lexer.ll" { /* A floating point was found. */ std::string tmp(yytext); @@ -4419,43 +4440,43 @@ YY_RULE_SETUP return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_); } YY_BREAK -case 176: +case 177: YY_RULE_SETUP -#line 1833 "dhcp6_lexer.ll" +#line 1841 "dhcp6_lexer.ll" { string tmp(yytext); return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK -case 177: +case 178: YY_RULE_SETUP -#line 1838 "dhcp6_lexer.ll" +#line 1846 "dhcp6_lexer.ll" { return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_); } YY_BREAK -case 178: -YY_RULE_SETUP -#line 1842 "dhcp6_lexer.ll" -driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); - YY_BREAK case 179: YY_RULE_SETUP -#line 1844 "dhcp6_lexer.ll" -driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); +#line 1850 "dhcp6_lexer.ll" +driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); YY_BREAK case 180: YY_RULE_SETUP -#line 1846 "dhcp6_lexer.ll" -driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); +#line 1852 "dhcp6_lexer.ll" +driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); YY_BREAK case 181: YY_RULE_SETUP -#line 1848 "dhcp6_lexer.ll" +#line 1854 "dhcp6_lexer.ll" +driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); + YY_BREAK +case 182: +YY_RULE_SETUP +#line 1856 "dhcp6_lexer.ll" driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 1850 "dhcp6_lexer.ll" +#line 1858 "dhcp6_lexer.ll" { if (driver.states_.empty()) { return isc::dhcp::Dhcp6Parser::make_END(driver.loc_); @@ -4479,12 +4500,12 @@ case YY_STATE_EOF(INITIAL): BEGIN(DIR_EXIT); } YY_BREAK -case 182: +case 183: YY_RULE_SETUP -#line 1873 "dhcp6_lexer.ll" +#line 1881 "dhcp6_lexer.ll" ECHO; YY_BREAK -#line 4487 "dhcp6_lexer.cc" +#line 4509 "dhcp6_lexer.cc" case YY_END_OF_BUFFER: { @@ -4803,7 +4824,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 >= 1489 ) + if ( yy_current_state >= 1505 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -4836,11 +4857,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 >= 1489 ) + if ( yy_current_state >= 1505 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1488); + yy_is_jam = (yy_current_state == 1504); return yy_is_jam ? 0 : yy_current_state; } @@ -5589,7 +5610,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 1873 "dhcp6_lexer.ll" +#line 1881 "dhcp6_lexer.ll" using namespace isc::dhcp; diff --git a/src/bin/dhcp6/dhcp6_lexer.ll b/src/bin/dhcp6/dhcp6_lexer.ll index f463ef3d50..3a2f461158 100644 --- a/src/bin/dhcp6/dhcp6_lexer.ll +++ b/src/bin/dhcp6/dhcp6_lexer.ll @@ -531,6 +531,14 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } } +\"config-fetch-wait-time\" { + switch(driver.ctx_) { + case isc::dhcp::Parser6Context::CONFIG_CONTROL: + return isc::dhcp::Dhcp6Parser::make_CONFIG_FETCH_WAIT_TIME(driver.loc_); + default: + return isc::dhcp::Dhcp6Parser::make_STRING("config-fetch-wait-time", driver.loc_); + } +} \"readonly\" { switch(driver.ctx_) { diff --git a/src/bin/dhcp6/dhcp6_messages.cc b/src/bin/dhcp6/dhcp6_messages.cc index 84f65315f8..1bd1c73272 100644 --- a/src/bin/dhcp6/dhcp6_messages.cc +++ b/src/bin/dhcp6/dhcp6_messages.cc @@ -1,4 +1,4 @@ -// File created from ../../../src/bin/dhcp6/dhcp6_messages.mes on Fri Feb 08 2019 20:33 +// File created from ../../../src/bin/dhcp6/dhcp6_messages.mes on Tue Mar 26 2019 13:41 #include #include @@ -14,6 +14,8 @@ extern const isc::log::MessageID DHCP6_ALREADY_RUNNING = "DHCP6_ALREADY_RUNNING" extern const isc::log::MessageID DHCP6_BUFFER_RECEIVED = "DHCP6_BUFFER_RECEIVED"; extern const isc::log::MessageID DHCP6_BUFFER_UNPACK = "DHCP6_BUFFER_UNPACK"; extern const isc::log::MessageID DHCP6_BUFFER_WAIT_SIGNAL = "DHCP6_BUFFER_WAIT_SIGNAL"; +extern const isc::log::MessageID DHCP6_CB_FETCH_UPDATES_FAIL = "DHCP6_CB_FETCH_UPDATES_FAIL"; +extern const isc::log::MessageID DHCP6_CB_FETCH_UPDATES_RETRIES_EXHAUSTED = "DHCP6_CB_FETCH_UPDATES_RETRIES_EXHAUSTED"; extern const isc::log::MessageID DHCP6_CLASS_ASSIGNED = "DHCP6_CLASS_ASSIGNED"; extern const isc::log::MessageID DHCP6_CLASS_UNCONFIGURED = "DHCP6_CLASS_UNCONFIGURED"; extern const isc::log::MessageID DHCP6_CLASS_UNDEFINED = "DHCP6_CLASS_UNDEFINED"; @@ -152,6 +154,8 @@ const char* values[] = { "DHCP6_BUFFER_RECEIVED", "received buffer from %1:%2 to %3:%4 over interface %5", "DHCP6_BUFFER_UNPACK", "parsing buffer received from %1 to %2 over interface %3", "DHCP6_BUFFER_WAIT_SIGNAL", "signal received while waiting for next packet, next waiting signal is %1", + "DHCP6_CB_FETCH_UPDATES_FAIL", "error on attempt to fetch configuration updates from the configuration backend(s): %1", + "DHCP6_CB_FETCH_UPDATES_RETRIES_EXHAUSTED", "maximum number of configuration fetch attempts: 10, has been exhausted without success", "DHCP6_CLASS_ASSIGNED", "%1: client packet has been assigned to the following class(es): %2", "DHCP6_CLASS_UNCONFIGURED", "%1: client packet belongs to an unconfigured class: %2", "DHCP6_CLASS_UNDEFINED", "required class %1 has no definition", diff --git a/src/bin/dhcp6/dhcp6_messages.h b/src/bin/dhcp6/dhcp6_messages.h index e814d610f5..19f22199fc 100644 --- a/src/bin/dhcp6/dhcp6_messages.h +++ b/src/bin/dhcp6/dhcp6_messages.h @@ -1,4 +1,4 @@ -// File created from ../../../src/bin/dhcp6/dhcp6_messages.mes on Fri Feb 08 2019 20:33 +// File created from ../../../src/bin/dhcp6/dhcp6_messages.mes on Tue Mar 26 2019 13:41 #ifndef DHCP6_MESSAGES_H #define DHCP6_MESSAGES_H @@ -15,6 +15,8 @@ extern const isc::log::MessageID DHCP6_ALREADY_RUNNING; extern const isc::log::MessageID DHCP6_BUFFER_RECEIVED; extern const isc::log::MessageID DHCP6_BUFFER_UNPACK; extern const isc::log::MessageID DHCP6_BUFFER_WAIT_SIGNAL; +extern const isc::log::MessageID DHCP6_CB_FETCH_UPDATES_FAIL; +extern const isc::log::MessageID DHCP6_CB_FETCH_UPDATES_RETRIES_EXHAUSTED; extern const isc::log::MessageID DHCP6_CLASS_ASSIGNED; extern const isc::log::MessageID DHCP6_CLASS_UNCONFIGURED; extern const isc::log::MessageID DHCP6_CLASS_UNDEFINED; diff --git a/src/bin/dhcp6/dhcp6_messages.mes b/src/bin/dhcp6/dhcp6_messages.mes index 9079efb09e..964f4bfff4 100644 --- a/src/bin/dhcp6/dhcp6_messages.mes +++ b/src/bin/dhcp6/dhcp6_messages.mes @@ -74,6 +74,20 @@ has no definition. This debug message informs that a class was listed for required evaluation but its definition does not include a test expression to evaluate. +% DHCP6_CB_FETCH_UPDATES_FAIL error on attempt to fetch configuration updates from the configuration backend(s): %1 +This error message is issued when the server attempted to fetch +configuration updates from the database and this attempt failed. +The server will re-try according to the configured value of the +config-fetch-wait-time parameter. The sole argument contains the +reason for failure. + +% DHCP6_CB_FETCH_UPDATES_RETRIES_EXHAUSTED maximum number of configuration fetch attempts: 10, has been exhausted without success +This error indicates that the server has made a number of unsuccessful +attempts to fetch configuration updates from a configuration backend. +The server will continue to operate but won't make any further attempts +to fetch configuration updates. The administrator must fix the configuration +in the database and reload (or restart) the server. + % DHCP6_COMMAND_RECEIVED received command %1, arguments: %2 A debug message listing the command (and possible arguments) received from the Kea control system by the IPv6 DHCP server. diff --git a/src/bin/dhcp6/dhcp6_parser.cc b/src/bin/dhcp6/dhcp6_parser.cc index 5a0f7ace10..4b9143ad97 100644 --- a/src/bin/dhcp6/dhcp6_parser.cc +++ b/src/bin/dhcp6/dhcp6_parser.cc @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.3.2. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton implementation for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -43,11 +43,11 @@ // Unqualified %code blocks. -#line 34 "dhcp6_parser.yy" // lalr1.cc:435 +#line 34 "dhcp6_parser.yy" // lalr1.cc:438 #include -#line 51 "dhcp6_parser.cc" // lalr1.cc:435 +#line 51 "dhcp6_parser.cc" // lalr1.cc:438 #ifndef YY_ @@ -88,7 +88,7 @@ { \ (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \ } \ - while (false) + while (/*CONSTCOND*/ false) # endif @@ -140,9 +140,9 @@ #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus_) -#line 14 "dhcp6_parser.yy" // lalr1.cc:510 +#line 14 "dhcp6_parser.yy" // lalr1.cc:513 namespace isc { namespace dhcp { -#line 146 "dhcp6_parser.cc" // lalr1.cc:510 +#line 146 "dhcp6_parser.cc" // lalr1.cc:513 /* Return YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is @@ -154,7 +154,7 @@ namespace isc { namespace dhcp { { if (*yystr == '"') { - std::string yyr; + std::string yyr = ""; char const *yyp = yystr; for (;;) @@ -167,10 +167,7 @@ namespace isc { namespace dhcp { case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - else - goto append; - - append: + // Fall through. default: yyr += *yyp; break; @@ -198,8 +195,6 @@ namespace isc { namespace dhcp { Dhcp6Parser::~Dhcp6Parser () {} - Dhcp6Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW - {} /*---------------. | Symbol types. | @@ -208,16 +203,16 @@ namespace isc { namespace dhcp { // by_state. - Dhcp6Parser::by_state::by_state () YY_NOEXCEPT + Dhcp6Parser::by_state::by_state () : state (empty_state) {} - Dhcp6Parser::by_state::by_state (const by_state& that) YY_NOEXCEPT - : state (that.state) + Dhcp6Parser::by_state::by_state (const by_state& other) + : state (other.state) {} void - Dhcp6Parser::by_state::clear () YY_NOEXCEPT + Dhcp6Parser::by_state::clear () { state = empty_state; } @@ -229,12 +224,12 @@ namespace isc { namespace dhcp { that.clear (); } - Dhcp6Parser::by_state::by_state (state_type s) YY_NOEXCEPT + Dhcp6Parser::by_state::by_state (state_type s) : state (s) {} Dhcp6Parser::symbol_number_type - Dhcp6Parser::by_state::type_get () const YY_NOEXCEPT + Dhcp6Parser::by_state::type_get () const { if (state == empty_state) return empty_symbol; @@ -250,29 +245,29 @@ namespace isc { namespace dhcp { { switch (that.type_get ()) { - case 194: // value - case 198: // map_value - case 252: // db_type - case 345: // hr_mode - case 481: // duid_type - case 516: // ncr_protocol_value - case 523: // replace_client_name_value + case 195: // value + case 199: // map_value + case 253: // db_type + case 346: // hr_mode + case 482: // duid_type + case 517: // ncr_protocol_value + case 524: // replace_client_name_value value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value)); break; - case 176: // "boolean" + case 177: // "boolean" value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value)); break; - case 175: // "floating point" + case 176: // "floating point" value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value)); break; - case 174: // "integer" + case 175: // "integer" value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value)); break; - case 173: // "constant string" + case 174: // "constant string" value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); break; @@ -280,7 +275,7 @@ namespace isc { namespace dhcp { break; } -#if 201103L <= YY_CPLUSPLUS +#if defined __cplusplus && 201103L <= __cplusplus // that is emptied. that.state = empty_state; #endif @@ -291,29 +286,29 @@ namespace isc { namespace dhcp { { switch (that.type_get ()) { - case 194: // value - case 198: // map_value - case 252: // db_type - case 345: // hr_mode - case 481: // duid_type - case 516: // ncr_protocol_value - case 523: // replace_client_name_value + case 195: // value + case 199: // map_value + case 253: // db_type + case 346: // hr_mode + case 482: // duid_type + case 517: // ncr_protocol_value + case 524: // replace_client_name_value value.move< ElementPtr > (YY_MOVE (that.value)); break; - case 176: // "boolean" + case 177: // "boolean" value.move< bool > (YY_MOVE (that.value)); break; - case 175: // "floating point" + case 176: // "floating point" value.move< double > (YY_MOVE (that.value)); break; - case 174: // "integer" + case 175: // "integer" value.move< int64_t > (YY_MOVE (that.value)); break; - case 173: // "constant string" + case 174: // "constant string" value.move< std::string > (YY_MOVE (that.value)); break; @@ -325,36 +320,36 @@ namespace isc { namespace dhcp { that.type = empty_symbol; } -#if YY_CPLUSPLUS < 201103L +#if !defined __cplusplus || __cplusplus < 201103L Dhcp6Parser::stack_symbol_type& Dhcp6Parser::stack_symbol_type::operator= (stack_symbol_type& that) { state = that.state; switch (that.type_get ()) { - case 194: // value - case 198: // map_value - case 252: // db_type - case 345: // hr_mode - case 481: // duid_type - case 516: // ncr_protocol_value - case 523: // replace_client_name_value + case 195: // value + case 199: // map_value + case 253: // db_type + case 346: // hr_mode + case 482: // duid_type + case 517: // ncr_protocol_value + case 524: // replace_client_name_value value.move< ElementPtr > (that.value); break; - case 176: // "boolean" + case 177: // "boolean" value.move< bool > (that.value); break; - case 175: // "floating point" + case 176: // "floating point" value.move< double > (that.value); break; - case 174: // "integer" + case 175: // "integer" value.move< int64_t > (that.value); break; - case 173: // "constant string" + case 174: // "constant string" value.move< std::string > (that.value); break; @@ -386,83 +381,93 @@ namespace isc { namespace dhcp { std::ostream& yyoutput = yyo; YYUSE (yyoutput); symbol_number_type yytype = yysym.type_get (); -#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408 // Avoid a (spurious) G++ 4.8 warning about "array subscript is // below array bounds". if (yysym.empty ()) std::abort (); -#endif yyo << (yytype < yyntokens_ ? "token" : "nterm") << ' ' << yytname_[yytype] << " (" << yysym.location << ": "; switch (yytype) { - case 173: // "constant string" -#line 251 "dhcp6_parser.yy" // lalr1.cc:676 - { yyoutput << yysym.value.template as < std::string > (); } -#line 404 "dhcp6_parser.cc" // lalr1.cc:676 + case 174: // "constant string" + +#line 253 "dhcp6_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< std::string > (); } +#line 398 "dhcp6_parser.cc" // lalr1.cc:672 break; - case 174: // "integer" -#line 251 "dhcp6_parser.yy" // lalr1.cc:676 - { yyoutput << yysym.value.template as < int64_t > (); } -#line 410 "dhcp6_parser.cc" // lalr1.cc:676 + case 175: // "integer" + +#line 253 "dhcp6_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< int64_t > (); } +#line 405 "dhcp6_parser.cc" // lalr1.cc:672 break; - case 175: // "floating point" -#line 251 "dhcp6_parser.yy" // lalr1.cc:676 - { yyoutput << yysym.value.template as < double > (); } -#line 416 "dhcp6_parser.cc" // lalr1.cc:676 + case 176: // "floating point" + +#line 253 "dhcp6_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< double > (); } +#line 412 "dhcp6_parser.cc" // lalr1.cc:672 break; - case 176: // "boolean" -#line 251 "dhcp6_parser.yy" // lalr1.cc:676 - { yyoutput << yysym.value.template as < bool > (); } -#line 422 "dhcp6_parser.cc" // lalr1.cc:676 + case 177: // "boolean" + +#line 253 "dhcp6_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< bool > (); } +#line 419 "dhcp6_parser.cc" // lalr1.cc:672 break; - case 194: // value -#line 251 "dhcp6_parser.yy" // lalr1.cc:676 - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 428 "dhcp6_parser.cc" // lalr1.cc:676 + case 195: // value + +#line 253 "dhcp6_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 426 "dhcp6_parser.cc" // lalr1.cc:672 break; - case 198: // map_value -#line 251 "dhcp6_parser.yy" // lalr1.cc:676 - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 434 "dhcp6_parser.cc" // lalr1.cc:676 + case 199: // map_value + +#line 253 "dhcp6_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 433 "dhcp6_parser.cc" // lalr1.cc:672 break; - case 252: // db_type -#line 251 "dhcp6_parser.yy" // lalr1.cc:676 - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 440 "dhcp6_parser.cc" // lalr1.cc:676 + case 253: // db_type + +#line 253 "dhcp6_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 440 "dhcp6_parser.cc" // lalr1.cc:672 break; - case 345: // hr_mode -#line 251 "dhcp6_parser.yy" // lalr1.cc:676 - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 446 "dhcp6_parser.cc" // lalr1.cc:676 + case 346: // hr_mode + +#line 253 "dhcp6_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 447 "dhcp6_parser.cc" // lalr1.cc:672 break; - case 481: // duid_type -#line 251 "dhcp6_parser.yy" // lalr1.cc:676 - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 452 "dhcp6_parser.cc" // lalr1.cc:676 + case 482: // duid_type + +#line 253 "dhcp6_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 454 "dhcp6_parser.cc" // lalr1.cc:672 break; - case 516: // ncr_protocol_value -#line 251 "dhcp6_parser.yy" // lalr1.cc:676 - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 458 "dhcp6_parser.cc" // lalr1.cc:676 + case 517: // ncr_protocol_value + +#line 253 "dhcp6_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 461 "dhcp6_parser.cc" // lalr1.cc:672 break; - case 523: // replace_client_name_value -#line 251 "dhcp6_parser.yy" // lalr1.cc:676 - { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 464 "dhcp6_parser.cc" // lalr1.cc:676 + case 524: // replace_client_name_value + +#line 253 "dhcp6_parser.yy" // lalr1.cc:672 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 468 "dhcp6_parser.cc" // lalr1.cc:672 break; + default: break; } @@ -481,7 +486,7 @@ namespace isc { namespace dhcp { void Dhcp6Parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym) { -#if 201103L <= YY_CPLUSPLUS +#if defined __cplusplus && 201103L <= __cplusplus yypush_ (m, stack_symbol_type (s, std::move (sym))); #else stack_symbol_type ss (s, sym); @@ -585,22 +590,17 @@ namespace isc { namespace dhcp { yystack_.clear (); yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla)); - /*-----------------------------------------------. - | yynewstate -- push a new symbol on the stack. | - `-----------------------------------------------*/ + // A new symbol was pushed on the stack. yynewstate: YYCDEBUG << "Entering state " << yystack_[0].state << '\n'; // Accept? if (yystack_[0].state == yyfinal_) - YYACCEPT; + goto yyacceptlab; goto yybackup; - - /*-----------. - | yybackup. | - `-----------*/ + // Backup. yybackup: // Try to take a decision without lookahead. yyn = yypact_[yystack_[0].state]; @@ -621,7 +621,6 @@ namespace isc { namespace dhcp { #if YY_EXCEPTIONS catch (const syntax_error& yyexc) { - YYCDEBUG << "Caught exception: " << yyexc.what() << '\n'; error (yyexc); goto yyerrlab1; } @@ -653,7 +652,6 @@ namespace isc { namespace dhcp { yypush_ ("Shifting", yyn, YY_MOVE (yyla)); goto yynewstate; - /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ @@ -663,9 +661,8 @@ namespace isc { namespace dhcp { goto yyerrlab; goto yyreduce; - /*-----------------------------. - | yyreduce -- do a reduction. | + | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: yylen = yyr2_[yyn]; @@ -677,29 +674,29 @@ namespace isc { namespace dhcp { when using variants. */ switch (yyr1_[yyn]) { - case 194: // value - case 198: // map_value - case 252: // db_type - case 345: // hr_mode - case 481: // duid_type - case 516: // ncr_protocol_value - case 523: // replace_client_name_value + case 195: // value + case 199: // map_value + case 253: // db_type + case 346: // hr_mode + case 482: // duid_type + case 517: // ncr_protocol_value + case 524: // replace_client_name_value yylhs.value.emplace< ElementPtr > (); break; - case 176: // "boolean" + case 177: // "boolean" yylhs.value.emplace< bool > (); break; - case 175: // "floating point" + case 176: // "floating point" yylhs.value.emplace< double > (); break; - case 174: // "integer" + case 175: // "integer" yylhs.value.emplace< int64_t > (); break; - case 173: // "constant string" + case 174: // "constant string" yylhs.value.emplace< std::string > (); break; @@ -710,8 +707,8 @@ namespace isc { namespace dhcp { // Default location. { - stack_type::slice range (yystack_, yylen); - YYLLOC_DEFAULT (yylhs.location, range, yylen); + slice slice (yystack_, yylen); + YYLLOC_DEFAULT (yylhs.location, slice, yylen); yyerror_range[1].location = yylhs.location; } @@ -724,286 +721,286 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: -#line 260 "dhcp6_parser.yy" // lalr1.cc:919 +#line 262 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.NO_KEYWORD; } -#line 730 "dhcp6_parser.cc" // lalr1.cc:919 +#line 727 "dhcp6_parser.cc" // lalr1.cc:907 break; case 4: -#line 261 "dhcp6_parser.yy" // lalr1.cc:919 +#line 263 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.CONFIG; } -#line 736 "dhcp6_parser.cc" // lalr1.cc:919 +#line 733 "dhcp6_parser.cc" // lalr1.cc:907 break; case 6: -#line 262 "dhcp6_parser.yy" // lalr1.cc:919 +#line 264 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.DHCP6; } -#line 742 "dhcp6_parser.cc" // lalr1.cc:919 +#line 739 "dhcp6_parser.cc" // lalr1.cc:907 break; case 8: -#line 263 "dhcp6_parser.yy" // lalr1.cc:919 +#line 265 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.INTERFACES_CONFIG; } -#line 748 "dhcp6_parser.cc" // lalr1.cc:919 +#line 745 "dhcp6_parser.cc" // lalr1.cc:907 break; case 10: -#line 264 "dhcp6_parser.yy" // lalr1.cc:919 +#line 266 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.SUBNET6; } -#line 754 "dhcp6_parser.cc" // lalr1.cc:919 +#line 751 "dhcp6_parser.cc" // lalr1.cc:907 break; case 12: -#line 265 "dhcp6_parser.yy" // lalr1.cc:919 +#line 267 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.POOLS; } -#line 760 "dhcp6_parser.cc" // lalr1.cc:919 +#line 757 "dhcp6_parser.cc" // lalr1.cc:907 break; case 14: -#line 266 "dhcp6_parser.yy" // lalr1.cc:919 +#line 268 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.PD_POOLS; } -#line 766 "dhcp6_parser.cc" // lalr1.cc:919 +#line 763 "dhcp6_parser.cc" // lalr1.cc:907 break; case 16: -#line 267 "dhcp6_parser.yy" // lalr1.cc:919 +#line 269 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.RESERVATIONS; } -#line 772 "dhcp6_parser.cc" // lalr1.cc:919 +#line 769 "dhcp6_parser.cc" // lalr1.cc:907 break; case 18: -#line 268 "dhcp6_parser.yy" // lalr1.cc:919 +#line 270 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.DHCP6; } -#line 778 "dhcp6_parser.cc" // lalr1.cc:919 +#line 775 "dhcp6_parser.cc" // lalr1.cc:907 break; case 20: -#line 269 "dhcp6_parser.yy" // lalr1.cc:919 +#line 271 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.OPTION_DEF; } -#line 784 "dhcp6_parser.cc" // lalr1.cc:919 +#line 781 "dhcp6_parser.cc" // lalr1.cc:907 break; case 22: -#line 270 "dhcp6_parser.yy" // lalr1.cc:919 +#line 272 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.OPTION_DATA; } -#line 790 "dhcp6_parser.cc" // lalr1.cc:919 +#line 787 "dhcp6_parser.cc" // lalr1.cc:907 break; case 24: -#line 271 "dhcp6_parser.yy" // lalr1.cc:919 +#line 273 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } -#line 796 "dhcp6_parser.cc" // lalr1.cc:919 +#line 793 "dhcp6_parser.cc" // lalr1.cc:907 break; case 26: -#line 272 "dhcp6_parser.yy" // lalr1.cc:919 +#line 274 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.DHCP_DDNS; } -#line 802 "dhcp6_parser.cc" // lalr1.cc:919 +#line 799 "dhcp6_parser.cc" // lalr1.cc:907 break; case 28: -#line 273 "dhcp6_parser.yy" // lalr1.cc:919 +#line 275 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.LOGGING; } -#line 808 "dhcp6_parser.cc" // lalr1.cc:919 +#line 805 "dhcp6_parser.cc" // lalr1.cc:907 break; case 30: -#line 274 "dhcp6_parser.yy" // lalr1.cc:919 +#line 276 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.ctx_ = ctx.CONFIG_CONTROL; } -#line 814 "dhcp6_parser.cc" // lalr1.cc:919 +#line 811 "dhcp6_parser.cc" // lalr1.cc:907 break; case 32: -#line 282 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } -#line 820 "dhcp6_parser.cc" // lalr1.cc:919 +#line 284 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); } +#line 817 "dhcp6_parser.cc" // lalr1.cc:907 break; case 33: -#line 283 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } -#line 826 "dhcp6_parser.cc" // lalr1.cc:919 +#line 285 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); } +#line 823 "dhcp6_parser.cc" // lalr1.cc:907 break; case 34: -#line 284 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } -#line 832 "dhcp6_parser.cc" // lalr1.cc:919 +#line 286 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); } +#line 829 "dhcp6_parser.cc" // lalr1.cc:907 break; case 35: -#line 285 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } -#line 838 "dhcp6_parser.cc" // lalr1.cc:919 +#line 287 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); } +#line 835 "dhcp6_parser.cc" // lalr1.cc:907 break; case 36: -#line 286 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 844 "dhcp6_parser.cc" // lalr1.cc:919 +#line 288 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } +#line 841 "dhcp6_parser.cc" // lalr1.cc:907 break; case 37: -#line 287 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 850 "dhcp6_parser.cc" // lalr1.cc:919 +#line 289 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } +#line 847 "dhcp6_parser.cc" // lalr1.cc:907 break; case 38: -#line 288 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 856 "dhcp6_parser.cc" // lalr1.cc:919 +#line 290 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } +#line 853 "dhcp6_parser.cc" // lalr1.cc:907 break; case 39: -#line 291 "dhcp6_parser.yy" // lalr1.cc:919 +#line 293 "dhcp6_parser.yy" // lalr1.cc:907 { // Push back the JSON value on the stack - ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ()); } -#line 865 "dhcp6_parser.cc" // lalr1.cc:919 +#line 862 "dhcp6_parser.cc" // lalr1.cc:907 break; case 40: -#line 296 "dhcp6_parser.yy" // lalr1.cc:919 +#line 298 "dhcp6_parser.yy" // lalr1.cc:907 { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 876 "dhcp6_parser.cc" // lalr1.cc:919 +#line 873 "dhcp6_parser.cc" // lalr1.cc:907 break; case 41: -#line 301 "dhcp6_parser.yy" // lalr1.cc:919 +#line 303 "dhcp6_parser.yy" // lalr1.cc:907 { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 886 "dhcp6_parser.cc" // lalr1.cc:919 +#line 883 "dhcp6_parser.cc" // lalr1.cc:907 break; case 42: -#line 307 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 892 "dhcp6_parser.cc" // lalr1.cc:919 +#line 309 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } +#line 889 "dhcp6_parser.cc" // lalr1.cc:907 break; case 45: -#line 314 "dhcp6_parser.yy" // lalr1.cc:919 +#line 316 "dhcp6_parser.yy" // lalr1.cc:907 { // map containing a single entry - ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); } -#line 901 "dhcp6_parser.cc" // lalr1.cc:919 +#line 898 "dhcp6_parser.cc" // lalr1.cc:907 break; case 46: -#line 318 "dhcp6_parser.yy" // lalr1.cc:919 +#line 320 "dhcp6_parser.yy" // lalr1.cc:907 { // map consisting of a shorter map followed by // comma and string:value - ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); } -#line 911 "dhcp6_parser.cc" // lalr1.cc:919 +#line 908 "dhcp6_parser.cc" // lalr1.cc:907 break; case 47: -#line 325 "dhcp6_parser.yy" // lalr1.cc:919 +#line 327 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 920 "dhcp6_parser.cc" // lalr1.cc:919 +#line 917 "dhcp6_parser.cc" // lalr1.cc:907 break; case 48: -#line 328 "dhcp6_parser.yy" // lalr1.cc:919 +#line 330 "dhcp6_parser.yy" // lalr1.cc:907 { // list parsing complete. Put any sanity checking here } -#line 928 "dhcp6_parser.cc" // lalr1.cc:919 +#line 925 "dhcp6_parser.cc" // lalr1.cc:907 break; case 51: -#line 336 "dhcp6_parser.yy" // lalr1.cc:919 +#line 338 "dhcp6_parser.yy" // lalr1.cc:907 { // List consisting of a single element. - ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 937 "dhcp6_parser.cc" // lalr1.cc:919 +#line 934 "dhcp6_parser.cc" // lalr1.cc:907 break; case 52: -#line 340 "dhcp6_parser.yy" // lalr1.cc:919 +#line 342 "dhcp6_parser.yy" // lalr1.cc:907 { // List ending with , and a value. - ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 946 "dhcp6_parser.cc" // lalr1.cc:919 +#line 943 "dhcp6_parser.cc" // lalr1.cc:907 break; case 53: -#line 347 "dhcp6_parser.yy" // lalr1.cc:919 +#line 349 "dhcp6_parser.yy" // lalr1.cc:907 { // List parsing about to start } -#line 954 "dhcp6_parser.cc" // lalr1.cc:919 +#line 951 "dhcp6_parser.cc" // lalr1.cc:907 break; case 54: -#line 349 "dhcp6_parser.yy" // lalr1.cc:919 +#line 351 "dhcp6_parser.yy" // lalr1.cc:907 { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); } -#line 963 "dhcp6_parser.cc" // lalr1.cc:919 +#line 960 "dhcp6_parser.cc" // lalr1.cc:907 break; case 57: -#line 358 "dhcp6_parser.yy" // lalr1.cc:919 +#line 360 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); } -#line 972 "dhcp6_parser.cc" // lalr1.cc:919 +#line 969 "dhcp6_parser.cc" // lalr1.cc:907 break; case 58: -#line 362 "dhcp6_parser.yy" // lalr1.cc:919 +#line 364 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); } -#line 981 "dhcp6_parser.cc" // lalr1.cc:919 +#line 978 "dhcp6_parser.cc" // lalr1.cc:907 break; case 59: -#line 373 "dhcp6_parser.yy" // lalr1.cc:919 +#line 375 "dhcp6_parser.yy" // lalr1.cc:907 { const std::string& where = ctx.contextName(); - const std::string& keyword = yystack_[1].value.as < std::string > (); + const std::string& keyword = yystack_[1].value.as< std::string > (); error(yystack_[1].location, "got unexpected keyword \"" + keyword + "\" in " + where + " map."); } -#line 992 "dhcp6_parser.cc" // lalr1.cc:919 +#line 989 "dhcp6_parser.cc" // lalr1.cc:907 break; case 60: -#line 383 "dhcp6_parser.yy" // lalr1.cc:919 +#line 385 "dhcp6_parser.yy" // lalr1.cc:907 { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1003 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1000 "dhcp6_parser.cc" // lalr1.cc:907 break; case 61: -#line 388 "dhcp6_parser.yy" // lalr1.cc:919 +#line 390 "dhcp6_parser.yy" // lalr1.cc:907 { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -1012,11 +1009,11 @@ namespace isc { namespace dhcp { // Dhcp6 is required ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); } -#line 1016 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1013 "dhcp6_parser.cc" // lalr1.cc:907 break; case 70: -#line 411 "dhcp6_parser.yy" // lalr1.cc:919 +#line 413 "dhcp6_parser.yy" // lalr1.cc:907 { // This code is executed when we're about to start parsing // the content of the map @@ -1025,893 +1022,893 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP6); } -#line 1029 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1026 "dhcp6_parser.cc" // lalr1.cc:907 break; case 71: -#line 418 "dhcp6_parser.yy" // lalr1.cc:919 +#line 420 "dhcp6_parser.yy" // lalr1.cc:907 { // No global parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1039 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1036 "dhcp6_parser.cc" // lalr1.cc:907 break; case 72: -#line 426 "dhcp6_parser.yy" // lalr1.cc:919 +#line 428 "dhcp6_parser.yy" // lalr1.cc:907 { // Parse the Dhcp6 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1049 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1046 "dhcp6_parser.cc" // lalr1.cc:907 break; case 73: -#line 430 "dhcp6_parser.yy" // lalr1.cc:919 +#line 432 "dhcp6_parser.yy" // lalr1.cc:907 { // No global parameter is required // parsing completed } -#line 1058 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1055 "dhcp6_parser.cc" // lalr1.cc:907 break; case 109: -#line 476 "dhcp6_parser.yy" // lalr1.cc:919 +#line 478 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1066 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1063 "dhcp6_parser.cc" // lalr1.cc:907 break; case 110: -#line 478 "dhcp6_parser.yy" // lalr1.cc:919 +#line 480 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr datadir(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data-directory", datadir); ctx.leave(); } -#line 1076 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1073 "dhcp6_parser.cc" // lalr1.cc:907 break; case 111: -#line 484 "dhcp6_parser.yy" // lalr1.cc:919 +#line 486 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("preferred-lifetime", prf); } -#line 1085 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1082 "dhcp6_parser.cc" // lalr1.cc:907 break; case 112: -#line 489 "dhcp6_parser.yy" // lalr1.cc:919 +#line 491 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("valid-lifetime", prf); } -#line 1094 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1091 "dhcp6_parser.cc" // lalr1.cc:907 break; case 113: -#line 494 "dhcp6_parser.yy" // lalr1.cc:919 +#line 496 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("renew-timer", prf); } -#line 1103 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1100 "dhcp6_parser.cc" // lalr1.cc:907 break; case 114: -#line 499 "dhcp6_parser.yy" // lalr1.cc:919 +#line 501 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rebind-timer", prf); } -#line 1112 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1109 "dhcp6_parser.cc" // lalr1.cc:907 break; case 115: -#line 504 "dhcp6_parser.yy" // lalr1.cc:919 +#line 506 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("decline-probation-period", dpp); } -#line 1121 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1118 "dhcp6_parser.cc" // lalr1.cc:907 break; case 116: -#line 509 "dhcp6_parser.yy" // lalr1.cc:919 +#line 511 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1129 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1126 "dhcp6_parser.cc" // lalr1.cc:907 break; case 117: -#line 511 "dhcp6_parser.yy" // lalr1.cc:919 +#line 513 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr stag(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-tag", stag); ctx.leave(); } -#line 1139 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1136 "dhcp6_parser.cc" // lalr1.cc:907 break; case 118: -#line 517 "dhcp6_parser.yy" // lalr1.cc:919 +#line 519 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces-config", i); ctx.stack_.push_back(i); ctx.enter(ctx.INTERFACES_CONFIG); } -#line 1150 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1147 "dhcp6_parser.cc" // lalr1.cc:907 break; case 119: -#line 522 "dhcp6_parser.yy" // lalr1.cc:919 +#line 524 "dhcp6_parser.yy" // lalr1.cc:907 { // No interfaces config param is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1160 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1157 "dhcp6_parser.cc" // lalr1.cc:907 break; case 120: -#line 528 "dhcp6_parser.yy" // lalr1.cc:919 +#line 530 "dhcp6_parser.yy" // lalr1.cc:907 { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1170 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1167 "dhcp6_parser.cc" // lalr1.cc:907 break; case 121: -#line 532 "dhcp6_parser.yy" // lalr1.cc:919 +#line 534 "dhcp6_parser.yy" // lalr1.cc:907 { // No interfaces config param is required // parsing completed } -#line 1179 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1176 "dhcp6_parser.cc" // lalr1.cc:907 break; case 129: -#line 548 "dhcp6_parser.yy" // lalr1.cc:919 +#line 550 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces", l); ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 1190 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1187 "dhcp6_parser.cc" // lalr1.cc:907 break; case 130: -#line 553 "dhcp6_parser.yy" // lalr1.cc:919 +#line 555 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1199 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1196 "dhcp6_parser.cc" // lalr1.cc:907 break; case 131: -#line 558 "dhcp6_parser.yy" // lalr1.cc:919 +#line 560 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("re-detect", b); } -#line 1208 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1205 "dhcp6_parser.cc" // lalr1.cc:907 break; case 132: -#line 564 "dhcp6_parser.yy" // lalr1.cc:919 +#line 566 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lease-database", i); ctx.stack_.push_back(i); ctx.enter(ctx.LEASE_DATABASE); } -#line 1219 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1216 "dhcp6_parser.cc" // lalr1.cc:907 break; case 133: -#line 569 "dhcp6_parser.yy" // lalr1.cc:919 +#line 571 "dhcp6_parser.yy" // lalr1.cc:907 { // 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 1230 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1227 "dhcp6_parser.cc" // lalr1.cc:907 break; case 134: -#line 576 "dhcp6_parser.yy" // lalr1.cc:919 +#line 578 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hosts-database", i); ctx.stack_.push_back(i); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1241 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1238 "dhcp6_parser.cc" // lalr1.cc:907 break; case 135: -#line 581 "dhcp6_parser.yy" // lalr1.cc:919 +#line 583 "dhcp6_parser.yy" // lalr1.cc:907 { // 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 1252 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1249 "dhcp6_parser.cc" // lalr1.cc:907 break; case 136: -#line 588 "dhcp6_parser.yy" // lalr1.cc:919 +#line 590 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hosts-databases", l); ctx.stack_.push_back(l); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1263 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1260 "dhcp6_parser.cc" // lalr1.cc:907 break; case 137: -#line 593 "dhcp6_parser.yy" // lalr1.cc:919 +#line 595 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1272 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1269 "dhcp6_parser.cc" // lalr1.cc:907 break; case 142: -#line 606 "dhcp6_parser.yy" // lalr1.cc:919 +#line 608 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1282 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1279 "dhcp6_parser.cc" // lalr1.cc:907 break; case 143: -#line 610 "dhcp6_parser.yy" // lalr1.cc:919 +#line 612 "dhcp6_parser.yy" // lalr1.cc:907 { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1292 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1289 "dhcp6_parser.cc" // lalr1.cc:907 break; case 166: -#line 642 "dhcp6_parser.yy" // lalr1.cc:919 +#line 644 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.DATABASE_TYPE); } -#line 1300 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1297 "dhcp6_parser.cc" // lalr1.cc:907 break; case 167: -#line 644 "dhcp6_parser.yy" // lalr1.cc:919 +#line 646 "dhcp6_parser.yy" // lalr1.cc:907 { - ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1309 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1306 "dhcp6_parser.cc" // lalr1.cc:907 break; case 168: -#line 649 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } -#line 1315 "dhcp6_parser.cc" // lalr1.cc:919 +#line 651 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } +#line 1312 "dhcp6_parser.cc" // lalr1.cc:907 break; case 169: -#line 650 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } -#line 1321 "dhcp6_parser.cc" // lalr1.cc:919 +#line 652 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } +#line 1318 "dhcp6_parser.cc" // lalr1.cc:907 break; case 170: -#line 651 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } -#line 1327 "dhcp6_parser.cc" // lalr1.cc:919 +#line 653 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } +#line 1324 "dhcp6_parser.cc" // lalr1.cc:907 break; case 171: -#line 652 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } -#line 1333 "dhcp6_parser.cc" // lalr1.cc:919 +#line 654 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } +#line 1330 "dhcp6_parser.cc" // lalr1.cc:907 break; case 172: -#line 655 "dhcp6_parser.yy" // lalr1.cc:919 +#line 657 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1341 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1338 "dhcp6_parser.cc" // lalr1.cc:907 break; case 173: -#line 657 "dhcp6_parser.yy" // lalr1.cc:919 +#line 659 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); ctx.leave(); } -#line 1351 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1348 "dhcp6_parser.cc" // lalr1.cc:907 break; case 174: -#line 663 "dhcp6_parser.yy" // lalr1.cc:919 +#line 665 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1359 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1356 "dhcp6_parser.cc" // lalr1.cc:907 break; case 175: -#line 665 "dhcp6_parser.yy" // lalr1.cc:919 +#line 667 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); ctx.leave(); } -#line 1369 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1366 "dhcp6_parser.cc" // lalr1.cc:907 break; case 176: -#line 671 "dhcp6_parser.yy" // lalr1.cc:919 +#line 673 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1377 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1374 "dhcp6_parser.cc" // lalr1.cc:907 break; case 177: -#line 673 "dhcp6_parser.yy" // lalr1.cc:919 +#line 675 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); ctx.leave(); } -#line 1387 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1384 "dhcp6_parser.cc" // lalr1.cc:907 break; case 178: -#line 679 "dhcp6_parser.yy" // lalr1.cc:919 +#line 681 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", p); } -#line 1396 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1393 "dhcp6_parser.cc" // lalr1.cc:907 break; case 179: -#line 684 "dhcp6_parser.yy" // lalr1.cc:919 +#line 686 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1404 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1401 "dhcp6_parser.cc" // lalr1.cc:907 break; case 180: -#line 686 "dhcp6_parser.yy" // lalr1.cc:919 +#line 688 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1414 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1411 "dhcp6_parser.cc" // lalr1.cc:907 break; case 181: -#line 692 "dhcp6_parser.yy" // lalr1.cc:919 +#line 694 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("persist", n); } -#line 1423 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1420 "dhcp6_parser.cc" // lalr1.cc:907 break; case 182: -#line 697 "dhcp6_parser.yy" // lalr1.cc:919 +#line 699 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lfc-interval", n); } -#line 1432 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1429 "dhcp6_parser.cc" // lalr1.cc:907 break; case 183: -#line 702 "dhcp6_parser.yy" // lalr1.cc:919 +#line 704 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("readonly", n); } -#line 1441 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1438 "dhcp6_parser.cc" // lalr1.cc:907 break; case 184: -#line 707 "dhcp6_parser.yy" // lalr1.cc:919 +#line 709 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("connect-timeout", n); } -#line 1450 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1447 "dhcp6_parser.cc" // lalr1.cc:907 break; case 185: -#line 712 "dhcp6_parser.yy" // lalr1.cc:919 +#line 714 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].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 1459 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1456 "dhcp6_parser.cc" // lalr1.cc:907 break; case 186: -#line 717 "dhcp6_parser.yy" // lalr1.cc:919 +#line 719 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("request-timeout", n); } -#line 1468 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1465 "dhcp6_parser.cc" // lalr1.cc:907 break; case 187: -#line 722 "dhcp6_parser.yy" // lalr1.cc:919 +#line 724 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-keepalive", n); } -#line 1477 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1474 "dhcp6_parser.cc" // lalr1.cc:907 break; case 188: -#line 727 "dhcp6_parser.yy" // lalr1.cc:919 +#line 729 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-nodelay", n); } -#line 1486 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1483 "dhcp6_parser.cc" // lalr1.cc:907 break; case 189: -#line 732 "dhcp6_parser.yy" // lalr1.cc:919 +#line 734 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1494 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1491 "dhcp6_parser.cc" // lalr1.cc:907 break; case 190: -#line 734 "dhcp6_parser.yy" // lalr1.cc:919 +#line 736 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 1504 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1501 "dhcp6_parser.cc" // lalr1.cc:907 break; case 191: -#line 740 "dhcp6_parser.yy" // lalr1.cc:919 +#line 742 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].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 1513 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1510 "dhcp6_parser.cc" // lalr1.cc:907 break; case 192: -#line 745 "dhcp6_parser.yy" // lalr1.cc:919 +#line 747 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1521 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1518 "dhcp6_parser.cc" // lalr1.cc:907 break; case 193: -#line 747 "dhcp6_parser.yy" // lalr1.cc:919 +#line 749 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("keyspace", ks); ctx.leave(); } -#line 1531 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1528 "dhcp6_parser.cc" // lalr1.cc:907 break; case 194: -#line 753 "dhcp6_parser.yy" // lalr1.cc:919 +#line 755 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1539 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1536 "dhcp6_parser.cc" // lalr1.cc:907 break; case 195: -#line 755 "dhcp6_parser.yy" // lalr1.cc:919 +#line 757 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr c(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("consistency", c); ctx.leave(); } -#line 1549 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1546 "dhcp6_parser.cc" // lalr1.cc:907 break; case 196: -#line 761 "dhcp6_parser.yy" // lalr1.cc:919 +#line 763 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1557 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1554 "dhcp6_parser.cc" // lalr1.cc:907 break; case 197: -#line 763 "dhcp6_parser.yy" // lalr1.cc:919 +#line 765 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 1567 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1564 "dhcp6_parser.cc" // lalr1.cc:907 break; case 198: -#line 769 "dhcp6_parser.yy" // lalr1.cc:919 +#line 771 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sanity-checks", m); ctx.stack_.push_back(m); ctx.enter(ctx.SANITY_CHECKS); } -#line 1578 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1575 "dhcp6_parser.cc" // lalr1.cc:907 break; case 199: -#line 774 "dhcp6_parser.yy" // lalr1.cc:919 +#line 776 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1587 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1584 "dhcp6_parser.cc" // lalr1.cc:907 break; case 203: -#line 784 "dhcp6_parser.yy" // lalr1.cc:919 +#line 786 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1595 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1592 "dhcp6_parser.cc" // lalr1.cc:907 break; case 204: -#line 786 "dhcp6_parser.yy" // lalr1.cc:919 +#line 788 "dhcp6_parser.yy" // lalr1.cc:907 { - if ( (string(yystack_[0].value.as < std::string > ()) == "none") || - (string(yystack_[0].value.as < std::string > ()) == "warn") || - (string(yystack_[0].value.as < std::string > ()) == "fix") || - (string(yystack_[0].value.as < std::string > ()) == "fix-del") || - (string(yystack_[0].value.as < std::string > ()) == "del")) { - ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + if ( (string(yystack_[0].value.as< std::string > ()) == "none") || + (string(yystack_[0].value.as< std::string > ()) == "warn") || + (string(yystack_[0].value.as< std::string > ()) == "fix") || + (string(yystack_[0].value.as< std::string > ()) == "fix-del") || + (string(yystack_[0].value.as< std::string > ()) == "del")) { + ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lease-checks", user); ctx.leave(); } else { - error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as < std::string > ()) + + error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as< std::string > ()) + ", supported values are: none, warn, fix, fix-del, del"); } } -#line 1615 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1612 "dhcp6_parser.cc" // lalr1.cc:907 break; case 205: -#line 802 "dhcp6_parser.yy" // lalr1.cc:919 +#line 804 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("mac-sources", l); ctx.stack_.push_back(l); ctx.enter(ctx.MAC_SOURCES); } -#line 1626 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1623 "dhcp6_parser.cc" // lalr1.cc:907 break; case 206: -#line 807 "dhcp6_parser.yy" // lalr1.cc:919 +#line 809 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1635 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1632 "dhcp6_parser.cc" // lalr1.cc:907 break; case 211: -#line 820 "dhcp6_parser.yy" // lalr1.cc:919 +#line 822 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 1644 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1641 "dhcp6_parser.cc" // lalr1.cc:907 break; case 212: -#line 825 "dhcp6_parser.yy" // lalr1.cc:919 +#line 827 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 1653 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1650 "dhcp6_parser.cc" // lalr1.cc:907 break; case 213: -#line 830 "dhcp6_parser.yy" // lalr1.cc:919 +#line 832 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host-reservation-identifiers", l); ctx.stack_.push_back(l); ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS); } -#line 1664 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1661 "dhcp6_parser.cc" // lalr1.cc:907 break; case 214: -#line 835 "dhcp6_parser.yy" // lalr1.cc:919 +#line 837 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1673 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1670 "dhcp6_parser.cc" // lalr1.cc:907 break; case 220: -#line 849 "dhcp6_parser.yy" // lalr1.cc:919 +#line 851 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 1682 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1679 "dhcp6_parser.cc" // lalr1.cc:907 break; case 221: -#line 854 "dhcp6_parser.yy" // lalr1.cc:919 +#line 856 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 1691 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1688 "dhcp6_parser.cc" // lalr1.cc:907 break; case 222: -#line 861 "dhcp6_parser.yy" // lalr1.cc:919 +#line 863 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("relay-supplied-options", l); ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 1702 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1699 "dhcp6_parser.cc" // lalr1.cc:907 break; case 223: -#line 866 "dhcp6_parser.yy" // lalr1.cc:919 +#line 868 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1711 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1708 "dhcp6_parser.cc" // lalr1.cc:907 break; case 224: -#line 871 "dhcp6_parser.yy" // lalr1.cc:919 +#line 873 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hooks-libraries", l); ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 1722 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1719 "dhcp6_parser.cc" // lalr1.cc:907 break; case 225: -#line 876 "dhcp6_parser.yy" // lalr1.cc:919 +#line 878 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1731 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1728 "dhcp6_parser.cc" // lalr1.cc:907 break; case 230: -#line 889 "dhcp6_parser.yy" // lalr1.cc:919 +#line 891 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1741 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1738 "dhcp6_parser.cc" // lalr1.cc:907 break; case 231: -#line 893 "dhcp6_parser.yy" // lalr1.cc:919 +#line 895 "dhcp6_parser.yy" // lalr1.cc:907 { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1751 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1748 "dhcp6_parser.cc" // lalr1.cc:907 break; case 232: -#line 899 "dhcp6_parser.yy" // lalr1.cc:919 +#line 901 "dhcp6_parser.yy" // lalr1.cc:907 { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1761 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1758 "dhcp6_parser.cc" // lalr1.cc:907 break; case 233: -#line 903 "dhcp6_parser.yy" // lalr1.cc:919 +#line 905 "dhcp6_parser.yy" // lalr1.cc:907 { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 1771 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1768 "dhcp6_parser.cc" // lalr1.cc:907 break; case 239: -#line 918 "dhcp6_parser.yy" // lalr1.cc:919 +#line 920 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1779 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1776 "dhcp6_parser.cc" // lalr1.cc:907 break; case 240: -#line 920 "dhcp6_parser.yy" // lalr1.cc:919 +#line 922 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 1789 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1786 "dhcp6_parser.cc" // lalr1.cc:907 break; case 241: -#line 926 "dhcp6_parser.yy" // lalr1.cc:919 +#line 928 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1797 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1794 "dhcp6_parser.cc" // lalr1.cc:907 break; case 242: -#line 928 "dhcp6_parser.yy" // lalr1.cc:919 +#line 930 "dhcp6_parser.yy" // lalr1.cc:907 { - ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 1806 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1803 "dhcp6_parser.cc" // lalr1.cc:907 break; case 243: -#line 934 "dhcp6_parser.yy" // lalr1.cc:919 +#line 936 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("expired-leases-processing", m); ctx.stack_.push_back(m); ctx.enter(ctx.EXPIRED_LEASES_PROCESSING); } -#line 1817 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1814 "dhcp6_parser.cc" // lalr1.cc:907 break; case 244: -#line 939 "dhcp6_parser.yy" // lalr1.cc:919 +#line 941 "dhcp6_parser.yy" // lalr1.cc:907 { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1827 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1824 "dhcp6_parser.cc" // lalr1.cc:907 break; case 253: -#line 957 "dhcp6_parser.yy" // lalr1.cc:919 +#line 959 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].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 1836 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1833 "dhcp6_parser.cc" // lalr1.cc:907 break; case 254: -#line 962 "dhcp6_parser.yy" // lalr1.cc:919 +#line 964 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].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 1845 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1842 "dhcp6_parser.cc" // lalr1.cc:907 break; case 255: -#line 967 "dhcp6_parser.yy" // lalr1.cc:919 +#line 969 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].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 1854 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1851 "dhcp6_parser.cc" // lalr1.cc:907 break; case 256: -#line 972 "dhcp6_parser.yy" // lalr1.cc:919 +#line 974 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].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 1863 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1860 "dhcp6_parser.cc" // lalr1.cc:907 break; case 257: -#line 977 "dhcp6_parser.yy" // lalr1.cc:919 +#line 979 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].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 1872 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1869 "dhcp6_parser.cc" // lalr1.cc:907 break; case 258: -#line 982 "dhcp6_parser.yy" // lalr1.cc:919 +#line 984 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].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 1881 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1878 "dhcp6_parser.cc" // lalr1.cc:907 break; case 259: -#line 990 "dhcp6_parser.yy" // lalr1.cc:919 +#line 992 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet6", l); ctx.stack_.push_back(l); ctx.enter(ctx.SUBNET6); } -#line 1892 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1889 "dhcp6_parser.cc" // lalr1.cc:907 break; case 260: -#line 995 "dhcp6_parser.yy" // lalr1.cc:919 +#line 997 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1901 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1898 "dhcp6_parser.cc" // lalr1.cc:907 break; case 265: -#line 1015 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1017 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1911 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1908 "dhcp6_parser.cc" // lalr1.cc:907 break; case 266: -#line 1019 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1021 "dhcp6_parser.yy" // lalr1.cc:907 { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. @@ -1933,267 +1930,267 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1937 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1934 "dhcp6_parser.cc" // lalr1.cc:907 break; case 267: -#line 1041 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1043 "dhcp6_parser.yy" // lalr1.cc:907 { // Parse the subnet6 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1947 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1944 "dhcp6_parser.cc" // lalr1.cc:907 break; case 268: -#line 1045 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1047 "dhcp6_parser.yy" // lalr1.cc:907 { // The subnet subnet6 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 1957 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1954 "dhcp6_parser.cc" // lalr1.cc:907 break; case 291: -#line 1079 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1081 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1965 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1962 "dhcp6_parser.cc" // lalr1.cc:907 break; case 292: -#line 1081 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1083 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet", subnet); ctx.leave(); } -#line 1975 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1972 "dhcp6_parser.cc" // lalr1.cc:907 break; case 293: -#line 1087 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1089 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 1983 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1980 "dhcp6_parser.cc" // lalr1.cc:907 break; case 294: -#line 1089 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1091 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface", iface); ctx.leave(); } -#line 1993 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1990 "dhcp6_parser.cc" // lalr1.cc:907 break; case 295: -#line 1095 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1097 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2001 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1998 "dhcp6_parser.cc" // lalr1.cc:907 break; case 296: -#line 1097 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1099 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 2011 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2008 "dhcp6_parser.cc" // lalr1.cc:907 break; case 297: -#line 1103 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1105 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2019 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2016 "dhcp6_parser.cc" // lalr1.cc:907 break; case 298: -#line 1105 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1107 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 2029 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2026 "dhcp6_parser.cc" // lalr1.cc:907 break; case 299: -#line 1111 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1113 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("require-client-classes", c); ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2040 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2037 "dhcp6_parser.cc" // lalr1.cc:907 break; case 300: -#line 1116 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1118 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2049 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2046 "dhcp6_parser.cc" // lalr1.cc:907 break; case 301: -#line 1121 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1123 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.RESERVATION_MODE); } -#line 2057 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2054 "dhcp6_parser.cc" // lalr1.cc:907 break; case 302: -#line 1123 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1125 "dhcp6_parser.yy" // lalr1.cc:907 { - ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 2066 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2063 "dhcp6_parser.cc" // lalr1.cc:907 break; case 303: -#line 1128 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 2072 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1130 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } +#line 2069 "dhcp6_parser.cc" // lalr1.cc:907 break; case 304: -#line 1129 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 2078 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1131 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } +#line 2075 "dhcp6_parser.cc" // lalr1.cc:907 break; case 305: -#line 1130 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 2084 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1132 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } +#line 2081 "dhcp6_parser.cc" // lalr1.cc:907 break; case 306: -#line 1131 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 2090 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1133 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } +#line 2087 "dhcp6_parser.cc" // lalr1.cc:907 break; case 307: -#line 1134 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1136 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("id", id); } -#line 2099 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2096 "dhcp6_parser.cc" // lalr1.cc:907 break; case 308: -#line 1139 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1141 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rapid-commit", rc); } -#line 2108 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2105 "dhcp6_parser.cc" // lalr1.cc:907 break; case 309: -#line 1147 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1149 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("shared-networks", l); ctx.stack_.push_back(l); ctx.enter(ctx.SHARED_NETWORK); } -#line 2119 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2116 "dhcp6_parser.cc" // lalr1.cc:907 break; case 310: -#line 1152 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1154 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2128 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2125 "dhcp6_parser.cc" // lalr1.cc:907 break; case 315: -#line 1167 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1169 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2138 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2135 "dhcp6_parser.cc" // lalr1.cc:907 break; case 316: -#line 1171 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1173 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); } -#line 2146 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2143 "dhcp6_parser.cc" // lalr1.cc:907 break; case 336: -#line 1202 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1204 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("option-def", l); ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DEF); } -#line 2157 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2154 "dhcp6_parser.cc" // lalr1.cc:907 break; case 337: -#line 1207 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1209 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2166 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2163 "dhcp6_parser.cc" // lalr1.cc:907 break; case 338: -#line 1215 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1217 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2175 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2172 "dhcp6_parser.cc" // lalr1.cc:907 break; case 339: -#line 1218 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1220 "dhcp6_parser.yy" // lalr1.cc:907 { // parsing completed } -#line 2183 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2180 "dhcp6_parser.cc" // lalr1.cc:907 break; case 344: -#line 1234 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1236 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2193 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2190 "dhcp6_parser.cc" // lalr1.cc:907 break; case 345: -#line 1238 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1240 "dhcp6_parser.yy" // lalr1.cc:907 { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2201,21 +2198,21 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2205 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2202 "dhcp6_parser.cc" // lalr1.cc:907 break; case 346: -#line 1249 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1251 "dhcp6_parser.yy" // lalr1.cc:907 { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2215 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2212 "dhcp6_parser.cc" // lalr1.cc:907 break; case 347: -#line 1253 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1255 "dhcp6_parser.yy" // lalr1.cc:907 { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2223,283 +2220,283 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2227 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2224 "dhcp6_parser.cc" // lalr1.cc:907 break; case 363: -#line 1285 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1287 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("code", code); } -#line 2236 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2233 "dhcp6_parser.cc" // lalr1.cc:907 break; case 365: -#line 1292 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1294 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2244 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2241 "dhcp6_parser.cc" // lalr1.cc:907 break; case 366: -#line 1294 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1296 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", prf); ctx.leave(); } -#line 2254 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2251 "dhcp6_parser.cc" // lalr1.cc:907 break; case 367: -#line 1300 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1302 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2262 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2259 "dhcp6_parser.cc" // lalr1.cc:907 break; case 368: -#line 1302 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1304 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 2272 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2269 "dhcp6_parser.cc" // lalr1.cc:907 break; case 369: -#line 1308 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1310 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2280 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2277 "dhcp6_parser.cc" // lalr1.cc:907 break; case 370: -#line 1310 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1312 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("space", space); ctx.leave(); } -#line 2290 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2287 "dhcp6_parser.cc" // lalr1.cc:907 break; case 372: -#line 1318 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1320 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2298 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2295 "dhcp6_parser.cc" // lalr1.cc:907 break; case 373: -#line 1320 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1322 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("encapsulate", encap); ctx.leave(); } -#line 2308 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2305 "dhcp6_parser.cc" // lalr1.cc:907 break; case 374: -#line 1326 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1328 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("array", array); } -#line 2317 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2314 "dhcp6_parser.cc" // lalr1.cc:907 break; case 375: -#line 1335 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1337 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("option-data", l); ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DATA); } -#line 2328 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2325 "dhcp6_parser.cc" // lalr1.cc:907 break; case 376: -#line 1340 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1342 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2337 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2334 "dhcp6_parser.cc" // lalr1.cc:907 break; case 381: -#line 1359 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1361 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2347 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2344 "dhcp6_parser.cc" // lalr1.cc:907 break; case 382: -#line 1363 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1365 "dhcp6_parser.yy" // lalr1.cc:907 { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 2356 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2353 "dhcp6_parser.cc" // lalr1.cc:907 break; case 383: -#line 1371 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1373 "dhcp6_parser.yy" // lalr1.cc:907 { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2366 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2363 "dhcp6_parser.cc" // lalr1.cc:907 break; case 384: -#line 1375 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1377 "dhcp6_parser.yy" // lalr1.cc:907 { /// @todo: the code or name parameters are required. // parsing completed } -#line 2375 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2372 "dhcp6_parser.cc" // lalr1.cc:907 break; case 399: -#line 1408 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1410 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2383 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2380 "dhcp6_parser.cc" // lalr1.cc:907 break; case 400: -#line 1410 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1412 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data", data); ctx.leave(); } -#line 2393 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2390 "dhcp6_parser.cc" // lalr1.cc:907 break; case 403: -#line 1420 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1422 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", space); } -#line 2402 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2399 "dhcp6_parser.cc" // lalr1.cc:907 break; case 404: -#line 1425 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1427 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-send", persist); } -#line 2411 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2408 "dhcp6_parser.cc" // lalr1.cc:907 break; case 405: -#line 1433 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1435 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pools", l); ctx.stack_.push_back(l); ctx.enter(ctx.POOLS); } -#line 2422 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2419 "dhcp6_parser.cc" // lalr1.cc:907 break; case 406: -#line 1438 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1440 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2431 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2428 "dhcp6_parser.cc" // lalr1.cc:907 break; case 411: -#line 1453 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1455 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2441 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2438 "dhcp6_parser.cc" // lalr1.cc:907 break; case 412: -#line 1457 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1459 "dhcp6_parser.yy" // lalr1.cc:907 { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2451 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2448 "dhcp6_parser.cc" // lalr1.cc:907 break; case 413: -#line 1463 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1465 "dhcp6_parser.yy" // lalr1.cc:907 { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2461 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2458 "dhcp6_parser.cc" // lalr1.cc:907 break; case 414: -#line 1467 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1469 "dhcp6_parser.yy" // lalr1.cc:907 { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); } -#line 2470 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2467 "dhcp6_parser.cc" // lalr1.cc:907 break; case 424: -#line 1485 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1487 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2478 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2475 "dhcp6_parser.cc" // lalr1.cc:907 break; case 425: -#line 1487 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1489 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool", pool); ctx.leave(); } -#line 2488 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2485 "dhcp6_parser.cc" // lalr1.cc:907 break; case 426: -#line 1493 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1495 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2496 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2493 "dhcp6_parser.cc" // lalr1.cc:907 break; case 427: -#line 1495 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1497 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr parent = ctx.stack_.back(); - ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); + ElementPtr user_context = yystack_[0].value.as< ElementPtr > (); ConstElementPtr old = parent->get("user-context"); // Handle already existing user context @@ -2519,23 +2516,23 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 2523 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2520 "dhcp6_parser.cc" // lalr1.cc:907 break; case 428: -#line 1518 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1520 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2531 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2528 "dhcp6_parser.cc" // lalr1.cc:907 break; case 429: -#line 1520 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1522 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); - ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr comment(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); user_context->set("comment", comment); // Handle already existing user context @@ -2556,41 +2553,41 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 2560 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2557 "dhcp6_parser.cc" // lalr1.cc:907 break; case 430: -#line 1548 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1550 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pd-pools", l); ctx.stack_.push_back(l); ctx.enter(ctx.PD_POOLS); } -#line 2571 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2568 "dhcp6_parser.cc" // lalr1.cc:907 break; case 431: -#line 1553 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1555 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2580 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2577 "dhcp6_parser.cc" // lalr1.cc:907 break; case 436: -#line 1568 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1570 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2590 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2587 "dhcp6_parser.cc" // lalr1.cc:907 break; case 437: -#line 1572 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1574 "dhcp6_parser.yy" // lalr1.cc:907 { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2598,21 +2595,21 @@ namespace isc { namespace dhcp { ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2602 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2599 "dhcp6_parser.cc" // lalr1.cc:907 break; case 438: -#line 1580 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1582 "dhcp6_parser.yy" // lalr1.cc:907 { // Parse the pd-pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2612 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2609 "dhcp6_parser.cc" // lalr1.cc:907 break; case 439: -#line 1584 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1586 "dhcp6_parser.yy" // lalr1.cc:907 { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2620,546 +2617,546 @@ namespace isc { namespace dhcp { ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2624 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2621 "dhcp6_parser.cc" // lalr1.cc:907 break; case 453: -#line 1609 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1611 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2632 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2629 "dhcp6_parser.cc" // lalr1.cc:907 break; case 454: -#line 1611 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1613 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix", prf); ctx.leave(); } -#line 2642 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2639 "dhcp6_parser.cc" // lalr1.cc:907 break; case 455: -#line 1617 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1619 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix-len", prf); } -#line 2651 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2648 "dhcp6_parser.cc" // lalr1.cc:907 break; case 456: -#line 1622 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1624 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2659 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2656 "dhcp6_parser.cc" // lalr1.cc:907 break; case 457: -#line 1624 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1626 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 2669 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2666 "dhcp6_parser.cc" // lalr1.cc:907 break; case 458: -#line 1630 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1632 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].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 2678 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2675 "dhcp6_parser.cc" // lalr1.cc:907 break; case 459: -#line 1635 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1637 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("delegated-len", deleg); } -#line 2687 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2684 "dhcp6_parser.cc" // lalr1.cc:907 break; case 460: -#line 1643 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1645 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations", l); ctx.stack_.push_back(l); ctx.enter(ctx.RESERVATIONS); } -#line 2698 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2695 "dhcp6_parser.cc" // lalr1.cc:907 break; case 461: -#line 1648 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1650 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2707 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2704 "dhcp6_parser.cc" // lalr1.cc:907 break; case 466: -#line 1661 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1663 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2717 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2714 "dhcp6_parser.cc" // lalr1.cc:907 break; case 467: -#line 1665 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1667 "dhcp6_parser.yy" // lalr1.cc:907 { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 2726 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2723 "dhcp6_parser.cc" // lalr1.cc:907 break; case 468: -#line 1670 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1672 "dhcp6_parser.yy" // lalr1.cc:907 { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2736 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2733 "dhcp6_parser.cc" // lalr1.cc:907 break; case 469: -#line 1674 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1676 "dhcp6_parser.yy" // lalr1.cc:907 { /// @todo: an identifier parameter is required. // parsing completed } -#line 2745 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2742 "dhcp6_parser.cc" // lalr1.cc:907 break; case 485: -#line 1701 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1703 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-addresses", l); ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 2756 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2753 "dhcp6_parser.cc" // lalr1.cc:907 break; case 486: -#line 1706 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1708 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2765 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2762 "dhcp6_parser.cc" // lalr1.cc:907 break; case 487: -#line 1711 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1713 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefixes", l); ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 2776 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2773 "dhcp6_parser.cc" // lalr1.cc:907 break; case 488: -#line 1716 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1718 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2785 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2782 "dhcp6_parser.cc" // lalr1.cc:907 break; case 489: -#line 1721 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1723 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2793 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2790 "dhcp6_parser.cc" // lalr1.cc:907 break; case 490: -#line 1723 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1725 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("duid", d); ctx.leave(); } -#line 2803 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2800 "dhcp6_parser.cc" // lalr1.cc:907 break; case 491: -#line 1729 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1731 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2811 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2808 "dhcp6_parser.cc" // lalr1.cc:907 break; case 492: -#line 1731 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1733 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 2821 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2818 "dhcp6_parser.cc" // lalr1.cc:907 break; case 493: -#line 1737 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1739 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2829 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2826 "dhcp6_parser.cc" // lalr1.cc:907 break; case 494: -#line 1739 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1741 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname", host); ctx.leave(); } -#line 2839 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2836 "dhcp6_parser.cc" // lalr1.cc:907 break; case 495: -#line 1745 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1747 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2847 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2844 "dhcp6_parser.cc" // lalr1.cc:907 break; case 496: -#line 1747 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1749 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 2857 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2854 "dhcp6_parser.cc" // lalr1.cc:907 break; case 497: -#line 1753 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1755 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-classes", c); ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2868 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2865 "dhcp6_parser.cc" // lalr1.cc:907 break; case 498: -#line 1758 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1760 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2877 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2874 "dhcp6_parser.cc" // lalr1.cc:907 break; case 499: -#line 1766 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1768 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("relay", m); ctx.stack_.push_back(m); ctx.enter(ctx.RELAY); } -#line 2888 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2885 "dhcp6_parser.cc" // lalr1.cc:907 break; case 500: -#line 1771 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1773 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2897 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2894 "dhcp6_parser.cc" // lalr1.cc:907 break; case 503: -#line 1780 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1782 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2905 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2902 "dhcp6_parser.cc" // lalr1.cc:907 break; case 504: -#line 1782 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1784 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 2915 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2912 "dhcp6_parser.cc" // lalr1.cc:907 break; case 505: -#line 1791 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1793 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-classes", l); ctx.stack_.push_back(l); ctx.enter(ctx.CLIENT_CLASSES); } -#line 2926 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2923 "dhcp6_parser.cc" // lalr1.cc:907 break; case 506: -#line 1796 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1798 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2935 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2932 "dhcp6_parser.cc" // lalr1.cc:907 break; case 509: -#line 1805 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1807 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2945 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2942 "dhcp6_parser.cc" // lalr1.cc:907 break; case 510: -#line 1809 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1811 "dhcp6_parser.yy" // lalr1.cc:907 { // 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 2955 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2952 "dhcp6_parser.cc" // lalr1.cc:907 break; case 523: -#line 1834 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1836 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 2963 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2960 "dhcp6_parser.cc" // lalr1.cc:907 break; case 524: -#line 1836 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1838 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("test", test); ctx.leave(); } -#line 2973 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2970 "dhcp6_parser.cc" // lalr1.cc:907 break; case 525: -#line 1842 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1844 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-if-required", b); } -#line 2982 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2979 "dhcp6_parser.cc" // lalr1.cc:907 break; case 526: -#line 1850 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1852 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-id", m); ctx.stack_.push_back(m); ctx.enter(ctx.SERVER_ID); } -#line 2993 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2990 "dhcp6_parser.cc" // lalr1.cc:907 break; case 527: -#line 1855 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1857 "dhcp6_parser.yy" // lalr1.cc:907 { // 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 3004 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3001 "dhcp6_parser.cc" // lalr1.cc:907 break; case 539: -#line 1877 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1879 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.DUID_TYPE); } -#line 3012 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3009 "dhcp6_parser.cc" // lalr1.cc:907 break; case 540: -#line 1879 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1881 "dhcp6_parser.yy" // lalr1.cc:907 { - ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3021 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3018 "dhcp6_parser.cc" // lalr1.cc:907 break; case 541: -#line 1884 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); } -#line 3027 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1886 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); } +#line 3024 "dhcp6_parser.cc" // lalr1.cc:907 break; case 542: -#line 1885 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); } -#line 3033 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1887 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); } +#line 3030 "dhcp6_parser.cc" // lalr1.cc:907 break; case 543: -#line 1886 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); } -#line 3039 "dhcp6_parser.cc" // lalr1.cc:919 +#line 1888 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); } +#line 3036 "dhcp6_parser.cc" // lalr1.cc:907 break; case 544: -#line 1889 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1891 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("htype", htype); } -#line 3048 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3045 "dhcp6_parser.cc" // lalr1.cc:907 break; case 545: -#line 1894 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1896 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3056 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3053 "dhcp6_parser.cc" // lalr1.cc:907 break; case 546: -#line 1896 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1898 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("identifier", id); ctx.leave(); } -#line 3066 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3063 "dhcp6_parser.cc" // lalr1.cc:907 break; case 547: -#line 1902 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1904 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("time", time); } -#line 3075 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3072 "dhcp6_parser.cc" // lalr1.cc:907 break; case 548: -#line 1907 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1909 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enterprise-id", time); } -#line 3084 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3081 "dhcp6_parser.cc" // lalr1.cc:907 break; case 549: -#line 1914 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1916 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4o6-port", time); } -#line 3093 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3090 "dhcp6_parser.cc" // lalr1.cc:907 break; case 550: -#line 1921 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1923 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("control-socket", m); ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 3104 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3101 "dhcp6_parser.cc" // lalr1.cc:907 break; case 551: -#line 1926 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1928 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3113 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3110 "dhcp6_parser.cc" // lalr1.cc:907 break; case 559: -#line 1942 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1944 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3121 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3118 "dhcp6_parser.cc" // lalr1.cc:907 break; case 560: -#line 1944 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1946 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 3131 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3128 "dhcp6_parser.cc" // lalr1.cc:907 break; case 561: -#line 1950 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1952 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3139 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3136 "dhcp6_parser.cc" // lalr1.cc:907 break; case 562: -#line 1952 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1954 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 3149 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3146 "dhcp6_parser.cc" // lalr1.cc:907 break; case 563: -#line 1960 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1962 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3157 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3154 "dhcp6_parser.cc" // lalr1.cc:907 break; case 564: -#line 1962 "dhcp6_parser.yy" // lalr1.cc:919 +#line 1964 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr qc = yystack_[0].value.as < ElementPtr > (); + ElementPtr qc = yystack_[0].value.as< ElementPtr > (); ctx.stack_.back()->set("dhcp-queue-control", qc); // Doing this manually, because dhcp-queue-control @@ -3193,617 +3190,626 @@ namespace isc { namespace dhcp { ctx.leave(); } -#line 3197 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3194 "dhcp6_parser.cc" // lalr1.cc:907 break; case 565: -#line 2000 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2002 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp-ddns", m); ctx.stack_.push_back(m); ctx.enter(ctx.DHCP_DDNS); } -#line 3208 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3205 "dhcp6_parser.cc" // lalr1.cc:907 break; case 566: -#line 2005 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2007 "dhcp6_parser.yy" // lalr1.cc:907 { // 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 3219 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3216 "dhcp6_parser.cc" // lalr1.cc:907 break; case 567: -#line 2012 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2014 "dhcp6_parser.yy" // lalr1.cc:907 { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3229 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3226 "dhcp6_parser.cc" // lalr1.cc:907 break; case 568: -#line 2016 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2018 "dhcp6_parser.yy" // lalr1.cc:907 { // 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 3239 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3236 "dhcp6_parser.cc" // lalr1.cc:907 break; case 589: -#line 2046 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2048 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); } -#line 3248 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3245 "dhcp6_parser.cc" // lalr1.cc:907 break; case 590: -#line 2051 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2053 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3256 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3253 "dhcp6_parser.cc" // lalr1.cc:907 break; case 591: -#line 2053 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2055 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 3266 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3263 "dhcp6_parser.cc" // lalr1.cc:907 break; case 592: -#line 2059 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2061 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3274 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3271 "dhcp6_parser.cc" // lalr1.cc:907 break; case 593: -#line 2061 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2063 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 3284 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3281 "dhcp6_parser.cc" // lalr1.cc:907 break; case 594: -#line 2067 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2069 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); } -#line 3293 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3290 "dhcp6_parser.cc" // lalr1.cc:907 break; case 595: -#line 2072 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2074 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3301 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3298 "dhcp6_parser.cc" // lalr1.cc:907 break; case 596: -#line 2074 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2076 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 3311 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3308 "dhcp6_parser.cc" // lalr1.cc:907 break; case 597: -#line 2080 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2082 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); } -#line 3320 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3317 "dhcp6_parser.cc" // lalr1.cc:907 break; case 598: -#line 2085 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2087 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].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 3329 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3326 "dhcp6_parser.cc" // lalr1.cc:907 break; case 599: -#line 2090 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2092 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NCR_PROTOCOL); } -#line 3337 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3334 "dhcp6_parser.cc" // lalr1.cc:907 break; case 600: -#line 2092 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2094 "dhcp6_parser.yy" // lalr1.cc:907 { - ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3346 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3343 "dhcp6_parser.cc" // lalr1.cc:907 break; case 601: -#line 2098 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 3352 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2100 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } +#line 3349 "dhcp6_parser.cc" // lalr1.cc:907 break; case 602: -#line 2099 "dhcp6_parser.yy" // lalr1.cc:919 - { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 3358 "dhcp6_parser.cc" // lalr1.cc:919 +#line 2101 "dhcp6_parser.yy" // lalr1.cc:907 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } +#line 3355 "dhcp6_parser.cc" // lalr1.cc:907 break; case 603: -#line 2102 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2104 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NCR_FORMAT); } -#line 3366 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3363 "dhcp6_parser.cc" // lalr1.cc:907 break; case 604: -#line 2104 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2106 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 3376 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3373 "dhcp6_parser.cc" // lalr1.cc:907 break; case 605: -#line 2110 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2112 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 3385 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3382 "dhcp6_parser.cc" // lalr1.cc:907 break; case 606: -#line 2115 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2117 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 3394 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3391 "dhcp6_parser.cc" // lalr1.cc:907 break; case 607: -#line 2120 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2122 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 3402 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3399 "dhcp6_parser.cc" // lalr1.cc:907 break; case 608: -#line 2122 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2124 "dhcp6_parser.yy" // lalr1.cc:907 { - ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3411 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3408 "dhcp6_parser.cc" // lalr1.cc:907 break; case 609: -#line 2128 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2130 "dhcp6_parser.yy" // lalr1.cc:907 { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } -#line 3419 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3416 "dhcp6_parser.cc" // lalr1.cc:907 break; case 610: -#line 2131 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2133 "dhcp6_parser.yy" // lalr1.cc:907 { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } -#line 3427 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3424 "dhcp6_parser.cc" // lalr1.cc:907 break; case 611: -#line 2134 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2136 "dhcp6_parser.yy" // lalr1.cc:907 { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } -#line 3435 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3432 "dhcp6_parser.cc" // lalr1.cc:907 break; case 612: -#line 2137 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2139 "dhcp6_parser.yy" // lalr1.cc:907 { - yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); + yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } -#line 3443 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3440 "dhcp6_parser.cc" // lalr1.cc:907 break; case 613: -#line 2140 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2142 "dhcp6_parser.yy" // lalr1.cc:907 { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); } -#line 3452 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3449 "dhcp6_parser.cc" // lalr1.cc:907 break; case 614: -#line 2146 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2148 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3460 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3457 "dhcp6_parser.cc" // lalr1.cc:907 break; case 615: -#line 2148 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2150 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 3470 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3467 "dhcp6_parser.cc" // lalr1.cc:907 break; case 616: -#line 2154 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2156 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3478 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3475 "dhcp6_parser.cc" // lalr1.cc:907 break; case 617: -#line 2156 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2158 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 3488 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3485 "dhcp6_parser.cc" // lalr1.cc:907 break; case 618: -#line 2162 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2164 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3496 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3493 "dhcp6_parser.cc" // lalr1.cc:907 break; case 619: -#line 2164 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2166 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + 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 3506 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3503 "dhcp6_parser.cc" // lalr1.cc:907 break; case 620: -#line 2172 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2174 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3514 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3511 "dhcp6_parser.cc" // lalr1.cc:907 break; case 621: -#line 2174 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2176 "dhcp6_parser.yy" // lalr1.cc:907 { - ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3523 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3520 "dhcp6_parser.cc" // lalr1.cc:907 break; case 622: -#line 2179 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2181 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3531 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3528 "dhcp6_parser.cc" // lalr1.cc:907 break; case 623: -#line 2181 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2183 "dhcp6_parser.yy" // lalr1.cc:907 { - ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3540 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3537 "dhcp6_parser.cc" // lalr1.cc:907 break; case 624: -#line 2186 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2188 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.enter(ctx.NO_KEYWORD); } -#line 3548 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3545 "dhcp6_parser.cc" // lalr1.cc:907 break; case 625: -#line 2188 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2190 "dhcp6_parser.yy" // lalr1.cc:907 { - ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ()); + ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3557 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3554 "dhcp6_parser.cc" // lalr1.cc:907 break; case 626: -#line 2195 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2197 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-control", i); ctx.stack_.push_back(i); ctx.enter(ctx.CONFIG_CONTROL); } -#line 3568 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3565 "dhcp6_parser.cc" // lalr1.cc:907 break; case 627: -#line 2200 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2202 "dhcp6_parser.yy" // lalr1.cc:907 { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 3578 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3575 "dhcp6_parser.cc" // lalr1.cc:907 break; case 628: -#line 2206 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2208 "dhcp6_parser.yy" // lalr1.cc:907 { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3588 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3585 "dhcp6_parser.cc" // lalr1.cc:907 break; case 629: -#line 2210 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2212 "dhcp6_parser.yy" // lalr1.cc:907 { // No config_control params are required // parsing completed } -#line 3597 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3594 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 633: -#line 2224 "dhcp6_parser.yy" // lalr1.cc:919 + case 634: +#line 2227 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-databases", l); ctx.stack_.push_back(l); ctx.enter(ctx.CONFIG_DATABASE); } -#line 3608 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3605 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 634: -#line 2229 "dhcp6_parser.yy" // lalr1.cc:919 + case 635: +#line 2232 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3617 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3614 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 635: -#line 2239 "dhcp6_parser.yy" // lalr1.cc:919 + case 636: +#line 2237 "dhcp6_parser.yy" // lalr1.cc:907 + { + 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 3623 "dhcp6_parser.cc" // lalr1.cc:907 + break; + + case 637: +#line 2247 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("Logging", m); ctx.stack_.push_back(m); ctx.enter(ctx.LOGGING); } -#line 3628 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3634 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 636: -#line 2244 "dhcp6_parser.yy" // lalr1.cc:919 + case 638: +#line 2252 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3637 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3643 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 637: -#line 2249 "dhcp6_parser.yy" // lalr1.cc:919 + case 639: +#line 2257 "dhcp6_parser.yy" // lalr1.cc:907 { // Parse the Logging map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3647 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3653 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 638: -#line 2253 "dhcp6_parser.yy" // lalr1.cc:919 + case 640: +#line 2261 "dhcp6_parser.yy" // lalr1.cc:907 { // parsing completed } -#line 3655 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3661 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 642: -#line 2269 "dhcp6_parser.yy" // lalr1.cc:919 + case 644: +#line 2277 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("loggers", l); ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 3666 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3672 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 643: -#line 2274 "dhcp6_parser.yy" // lalr1.cc:919 + case 645: +#line 2282 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3675 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3681 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 646: -#line 2286 "dhcp6_parser.yy" // lalr1.cc:919 + case 648: +#line 2294 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 3685 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3691 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 647: -#line 2290 "dhcp6_parser.yy" // lalr1.cc:919 + case 649: +#line 2298 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); } -#line 3693 "dhcp6_parser.cc" // lalr1.cc:919 - break; - - case 657: -#line 2307 "dhcp6_parser.yy" // lalr1.cc:919 - { - ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); - ctx.stack_.back()->set("debuglevel", dl); -} -#line 3702 "dhcp6_parser.cc" // lalr1.cc:919 - break; - - case 658: -#line 2312 "dhcp6_parser.yy" // lalr1.cc:919 - { - ctx.enter(ctx.NO_KEYWORD); -} -#line 3710 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3699 "dhcp6_parser.cc" // lalr1.cc:907 break; case 659: -#line 2314 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2315 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); - ctx.stack_.back()->set("severity", sev); - ctx.leave(); + ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); + ctx.stack_.back()->set("debuglevel", dl); } -#line 3720 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3708 "dhcp6_parser.cc" // lalr1.cc:907 break; case 660: -#line 2320 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2320 "dhcp6_parser.yy" // lalr1.cc:907 + { + ctx.enter(ctx.NO_KEYWORD); +} +#line 3716 "dhcp6_parser.cc" // lalr1.cc:907 + break; + + case 661: +#line 2322 "dhcp6_parser.yy" // lalr1.cc:907 + { + ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); + ctx.stack_.back()->set("severity", sev); + ctx.leave(); +} +#line 3726 "dhcp6_parser.cc" // lalr1.cc:907 + break; + + case 662: +#line 2328 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output_options", l); ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 3731 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3737 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 661: -#line 2325 "dhcp6_parser.yy" // lalr1.cc:919 + case 663: +#line 2333 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3740 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3746 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 664: -#line 2334 "dhcp6_parser.yy" // lalr1.cc:919 + case 666: +#line 2342 "dhcp6_parser.yy" // lalr1.cc:907 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3750 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3756 "dhcp6_parser.cc" // lalr1.cc:907 break; - case 665: -#line 2338 "dhcp6_parser.yy" // lalr1.cc:919 + case 667: +#line 2346 "dhcp6_parser.yy" // lalr1.cc:907 { ctx.stack_.pop_back(); } -#line 3758 "dhcp6_parser.cc" // lalr1.cc:919 - break; - - case 672: -#line 2352 "dhcp6_parser.yy" // lalr1.cc:919 - { - ctx.enter(ctx.NO_KEYWORD); -} -#line 3766 "dhcp6_parser.cc" // lalr1.cc:919 - break; - - case 673: -#line 2354 "dhcp6_parser.yy" // lalr1.cc:919 - { - ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); - ctx.stack_.back()->set("output", sev); - ctx.leave(); -} -#line 3776 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3764 "dhcp6_parser.cc" // lalr1.cc:907 break; case 674: -#line 2360 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2360 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); - ctx.stack_.back()->set("flush", flush); + ctx.enter(ctx.NO_KEYWORD); } -#line 3785 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3772 "dhcp6_parser.cc" // lalr1.cc:907 break; case 675: -#line 2365 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2362 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); - ctx.stack_.back()->set("maxsize", maxsize); + ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); + ctx.stack_.back()->set("output", sev); + ctx.leave(); } -#line 3794 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3782 "dhcp6_parser.cc" // lalr1.cc:907 break; case 676: -#line 2370 "dhcp6_parser.yy" // lalr1.cc:919 +#line 2368 "dhcp6_parser.yy" // lalr1.cc:907 { - ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); + ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); + ctx.stack_.back()->set("flush", flush); +} +#line 3791 "dhcp6_parser.cc" // lalr1.cc:907 + break; + + case 677: +#line 2373 "dhcp6_parser.yy" // lalr1.cc:907 + { + ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); + ctx.stack_.back()->set("maxsize", maxsize); +} +#line 3800 "dhcp6_parser.cc" // lalr1.cc:907 + break; + + case 678: +#line 2378 "dhcp6_parser.yy" // lalr1.cc:907 + { + ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 3803 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3809 "dhcp6_parser.cc" // lalr1.cc:907 break; -#line 3807 "dhcp6_parser.cc" // lalr1.cc:919 +#line 3813 "dhcp6_parser.cc" // lalr1.cc:907 default: break; } @@ -3811,7 +3817,6 @@ namespace isc { namespace dhcp { #if YY_EXCEPTIONS catch (const syntax_error& yyexc) { - YYCDEBUG << "Caught exception: " << yyexc.what() << '\n'; error (yyexc); YYERROR; } @@ -3826,7 +3831,6 @@ namespace isc { namespace dhcp { } goto yynewstate; - /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ @@ -3863,18 +3867,18 @@ namespace isc { namespace dhcp { | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and - the label yyerrorlab therefore never appears in user code. */ - if (false) - YYERROR; + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (false) + goto yyerrorlab; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ yypop_ (yylen); yylen = 0; goto yyerrlab1; - /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ @@ -3915,26 +3919,16 @@ namespace isc { namespace dhcp { } goto yynewstate; - - /*-------------------------------------. - | yyacceptlab -- YYACCEPT comes here. | - `-------------------------------------*/ + // Accept. yyacceptlab: yyresult = 0; goto yyreturn; - - /*-----------------------------------. - | yyabortlab -- YYABORT comes here. | - `-----------------------------------*/ + // Abort. yyabortlab: yyresult = 1; goto yyreturn; - - /*-----------------------------------------------------. - | yyreturn -- parsing is finished, return the result. | - `-----------------------------------------------------*/ yyreturn: if (!yyla.empty ()) yy_destroy_ ("Cleanup: discarding lookahead", yyla); @@ -4073,124 +4067,124 @@ namespace isc { namespace dhcp { } - const short Dhcp6Parser::yypact_ninf_ = -833; + const short Dhcp6Parser::yypact_ninf_ = -837; const signed char Dhcp6Parser::yytable_ninf_ = -1; const short Dhcp6Parser::yypact_[] = { - 415, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, 71, 65, 68, 82, - 83, 90, 98, 99, 116, 151, 163, 200, 230, 236, - 238, 251, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, 65, 94, 27, 69, 23, 227, 107, 35, - 167, 233, 73, 268, -52, 366, 138, 266, -833, 285, - 302, 312, 298, 324, -833, -833, -833, -833, -833, 335, - -833, 37, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, 339, 345, 347, 351, 355, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, 357, -833, -833, -833, - -833, 54, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, 361, -833, 70, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, 364, - 365, -833, -833, -833, -833, -833, -833, -833, -833, 76, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, 131, -833, -833, -833, -833, -833, 367, -833, 383, - 387, -833, -833, -833, -833, -833, -833, 132, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, 334, 350, -833, -833, -833, - -833, -833, -833, -833, -833, 397, -833, -833, 405, -833, - -833, -833, 408, -833, -833, 411, 419, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - 422, 436, -833, -833, -833, -833, 435, 441, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - 159, -833, -833, -833, 442, -833, -833, 443, -833, 444, - 446, -833, -833, 447, 448, -833, -833, -833, -833, -833, - -833, -833, 177, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - 187, -833, -833, -833, 244, -833, -833, -833, 65, 65, - -833, 280, 450, 451, 454, 457, 460, -833, 27, -833, - 461, 462, 463, 464, 465, 466, 271, 297, 299, 300, - 303, 468, 472, 475, 476, 477, 478, 479, 480, 481, - 483, 484, 485, 499, 500, 501, 502, 503, 340, 504, - 505, 508, 69, -833, 509, 341, 23, -833, 512, 514, - 515, 516, 517, 352, 348, 519, 521, 523, 227, -833, - 524, 107, -833, 528, 360, 529, 362, 363, 35, -833, - 531, 536, 537, 538, 539, 540, 541, -833, 167, -833, - 542, 545, 377, 548, 549, 550, 379, -833, 73, 552, - 381, 382, -833, 268, 555, 556, -37, -833, 386, 561, - 563, 394, 565, 396, 414, 567, 585, 416, 418, 586, - 587, 589, 591, 366, -833, 592, 138, -833, 595, 266, - -833, -833, -833, 597, 596, 598, 65, 65, 65, -833, - 429, 599, 600, 601, 603, 606, -833, -833, -833, -833, - -833, 431, 607, 608, 609, 610, 445, 178, 611, 614, - 615, 616, 617, 618, 620, 621, 622, 623, -833, 625, - 610, 626, -833, 629, -833, -833, 630, 631, 449, 455, - 467, -833, -833, 629, 469, 632, -833, 470, -833, 471, - -833, 473, -833, -833, -833, 629, 629, 629, 474, 482, - 486, 487, -833, 488, 489, -833, 490, 491, 492, -833, - -833, 493, -833, -833, -833, 494, 65, -833, -833, 495, - 496, -833, 497, -833, -833, 40, 498, -833, -833, -33, - 506, 507, 510, -833, 633, -833, 636, -833, 65, 69, - 138, -833, -833, -833, -833, 266, 23, 193, 193, 638, - -833, 641, 642, 643, -833, -833, -833, -833, -833, -833, - -833, -833, 644, -53, 65, 104, 530, 645, 646, 647, - 204, 134, 8, -833, 366, -833, -833, 649, 650, -833, - -833, -833, -833, -833, -48, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, 651, - 638, -833, 265, 278, 323, 326, -833, -833, -833, -833, - 667, 668, 669, 670, 671, -833, 672, 673, -833, -833, - -833, 674, 677, 678, -833, 327, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, 330, -833, 679, 624, - -833, -833, 680, 681, -833, -833, 682, 684, -833, -833, - 683, 687, -833, -833, 685, 689, -833, -833, -833, 130, - -833, -833, -833, 688, -833, -833, -833, 153, -833, -833, - -833, -833, 338, -833, -833, -833, 168, -833, -833, 690, - 692, -833, -833, 691, 695, -833, 696, 697, 698, 699, - 700, 701, 342, -833, -833, -833, -833, -833, -833, -833, - -833, -833, 702, 703, 704, -833, -833, -833, -833, 349, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, 359, -833, -833, -833, 378, 520, -833, 693, 706, - -833, -833, 705, 707, -833, -833, -833, 708, -833, -833, - 183, -833, 709, -833, -833, -833, -833, 710, 713, 714, - 715, 546, 547, 551, 553, 554, 717, 557, 558, 718, - 720, 722, 559, 560, 562, 193, -833, -833, 193, -833, - 638, 227, -833, 641, 73, -833, 642, 268, -833, 643, - 388, -833, 644, -53, -833, -833, 104, -833, 723, 530, - -833, 215, 645, -833, 167, -833, 646, -52, -833, 647, - 566, 568, 569, 570, 571, 572, 204, -833, 726, 731, - 573, 574, 575, 134, -833, 732, 733, 8, -833, -833, - -833, 735, 736, 107, -833, 649, 35, -833, 650, 746, - -833, 142, 651, -833, -833, 124, 578, 579, 580, -833, - -833, -833, -833, -833, 581, -833, -833, 582, 583, 584, - -833, -833, -833, -833, 390, -833, 400, -833, 750, -833, - 751, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, 403, -833, -833, -833, -833, - -833, -833, -833, -833, 588, -833, -833, 756, -833, -833, - -833, -833, -833, 754, 760, -833, -833, -833, -833, -833, - 757, -833, 410, -833, -833, -833, -833, -833, -833, -833, - -833, 103, 593, -833, -833, -833, -833, 594, 602, -833, - -833, 605, 413, -833, 417, -833, 612, -833, 764, -833, - -833, -833, -833, -833, 420, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, 388, -833, -833, 765, - 619, -833, 215, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, 766, 590, 767, 142, - -833, -833, 634, -833, -833, 768, -833, 637, -833, -833, - 769, -833, -833, 272, -833, 12, 769, -833, -833, 770, - 775, 778, 434, -833, -833, -833, -833, -833, -833, 788, - 628, 648, 652, 12, -833, 639, -833, -833, -833, -833, - -833 + 418, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, 57, 65, 64, 66, + 68, 87, 91, 126, 133, 148, 164, 184, 195, 203, + 229, 230, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, 65, -95, 27, 69, 22, 234, 72, 39, + 196, 188, 41, 262, -53, 375, 96, 144, -837, 242, + 249, 269, 263, 281, -837, -837, -837, -837, -837, 307, + -837, 94, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, 309, 316, 317, 323, 341, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, 347, -837, -837, -837, + -837, 123, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, 353, -837, 140, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, 357, + 367, -837, -837, -837, -837, -837, -837, -837, -837, 141, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, 178, -837, -837, -837, -837, -837, 369, -837, 385, + 410, -837, -837, -837, -837, -837, -837, 187, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, 416, 352, -837, -837, -837, + -837, -837, -837, -837, -837, 417, -837, -837, 423, -837, + -837, -837, 424, -837, -837, 422, 390, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + 433, 435, -837, -837, -837, -837, 434, 440, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + 191, -837, -837, -837, 442, -837, -837, 443, -837, 444, + 445, -837, -837, 446, 448, -837, -837, -837, -837, -837, + -837, -837, 260, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + 261, -837, -837, -837, 449, 264, -837, -837, -837, -837, + 65, 65, -837, 280, 451, 452, 453, 456, 459, -837, + 27, -837, 462, 463, 464, 465, 466, 467, 297, 298, + 299, 300, 301, 474, 475, 477, 478, 479, 480, 481, + 482, 483, 485, 486, 487, 488, 489, 490, 491, 492, + 322, 494, 495, 509, 69, -837, 510, 338, 22, -837, + 512, 513, 514, 518, 519, 349, 348, 523, 524, 525, + 234, -837, 526, 72, -837, 527, 362, 531, 363, 364, + 39, -837, 532, 536, 537, 539, 540, 541, 542, -837, + 196, -837, 543, 544, 378, 546, 551, 552, 381, -837, + 41, 553, 382, 383, -837, 262, 557, 558, -17, -837, + 388, 560, 562, 394, 567, 400, 419, 568, 569, 415, + 420, 570, 589, 591, 592, 375, -837, 594, 96, -837, + 595, 425, 144, -837, -837, -837, 599, 598, 600, 65, + 65, 65, -837, 432, 601, 602, 603, 604, 608, -837, + -837, -837, -837, -837, 441, 609, 611, 612, 613, 447, + 221, 614, 617, 618, 619, 620, 621, 623, 624, 625, + 626, -837, 627, 613, 629, -837, 632, -837, -837, 633, + 634, 457, 468, 469, -837, -837, 632, 470, 638, -837, + 472, -837, 473, -837, 476, -837, -837, -837, 632, 632, + 632, 484, 493, 496, 497, -837, 498, 499, -837, 500, + 501, 502, -837, -837, 503, -837, -837, -837, 504, 65, + -837, -837, 505, 506, -837, 507, -837, -837, -98, 508, + -837, -837, 34, 511, 515, 516, -837, 635, -837, 636, + -837, -837, 65, 69, 96, -837, -837, -837, -837, 144, + 22, 193, 193, 642, -837, 644, 645, 646, -837, -837, + -837, -837, -837, -837, -837, -837, 647, -50, 65, 315, + 571, 648, 649, 652, 152, 138, 128, -837, 375, -837, + -837, 653, 654, -837, -837, -837, -837, -837, -49, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, 655, 642, -837, 267, 278, 279, 320, + -837, -837, -837, -837, 659, 660, 661, 662, 664, -837, + 665, 678, -837, -837, -837, 679, 680, 682, -837, 321, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + 332, -837, 681, 615, -837, -837, 685, 622, -837, -837, + 686, 690, -837, -837, 688, 692, -837, -837, 691, 693, + -837, -837, -837, 119, -837, -837, -837, 694, -837, -837, + -837, 166, -837, -837, -837, -837, 333, -837, -837, -837, + 176, -837, -837, 695, 696, -837, -837, 697, 699, -837, + 684, 700, 701, 702, 703, 704, 334, -837, -837, -837, + -837, -837, -837, -837, -837, -837, 705, 706, 707, -837, + -837, -837, -837, 335, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, 336, -837, -837, -837, 344, + 538, -837, 708, 710, -837, -837, 709, 713, -837, -837, + -837, 711, -837, -837, 197, -837, 712, -837, -837, -837, + -837, 716, 717, 718, 719, 455, 521, 549, 548, 554, + 722, 555, 556, 723, 724, 728, 559, 561, 563, 193, + -837, -837, 193, -837, 642, 234, -837, 644, 41, -837, + 645, 262, -837, 646, 389, -837, 647, -50, -837, -837, + 315, -837, 729, 571, -837, 77, 648, -837, 196, -837, + 649, -53, -837, 652, 564, 566, 572, 573, 574, 575, + 152, -837, 731, 733, 576, 577, 578, 138, -837, 734, + 738, 128, -837, -837, -837, 737, 714, 72, -837, 653, + 39, -837, 654, 740, -837, 13, 655, -837, -837, 398, + 580, 581, 582, -837, -837, -837, -837, -837, 583, -837, + -837, 584, 585, 586, -837, -837, -837, -837, 345, -837, + 351, -837, 753, -837, 754, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, 360, + -837, -837, -837, -837, -837, -837, -837, -837, 590, -837, + -837, 741, -837, -837, -837, -837, -837, 755, 743, -837, + -837, -837, -837, -837, 757, -837, 361, -837, -837, -837, + -837, -837, -837, -837, -837, 104, 593, -837, -837, -837, + -837, 596, 597, -837, -837, 605, 380, -837, 387, -837, + 606, -837, 762, -837, -837, -837, -837, -837, 397, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + 389, -837, -837, 764, 631, -837, 77, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + 765, 607, 768, 13, -837, -837, 637, -837, -837, 769, + -837, 640, -837, -837, 766, -837, -837, 412, -837, -18, + 766, -837, -837, 771, 772, 773, 399, -837, -837, -837, + -837, -837, -837, 774, 639, 650, 651, -18, -837, 641, + -837, -837, -837, -837, -837 }; const unsigned short @@ -4202,10 +4196,10 @@ namespace isc { namespace dhcp { 0, 0, 1, 47, 40, 36, 35, 32, 33, 34, 39, 3, 37, 38, 60, 5, 72, 7, 120, 9, 267, 11, 413, 13, 438, 15, 468, 17, 338, 19, - 346, 21, 383, 23, 232, 25, 567, 27, 637, 29, + 346, 21, 383, 23, 232, 25, 567, 27, 639, 29, 628, 31, 49, 43, 0, 0, 0, 0, 0, 0, 470, 0, 348, 385, 0, 0, 0, 0, 51, 0, - 50, 0, 0, 44, 70, 635, 620, 622, 624, 0, + 50, 0, 0, 44, 70, 637, 620, 622, 624, 0, 69, 0, 62, 64, 66, 67, 68, 65, 109, 626, 118, 132, 134, 136, 0, 0, 0, 0, 0, 116, 259, 336, 375, 426, 428, 301, 309, 205, 222, 213, @@ -4230,128 +4224,128 @@ namespace isc { namespace dhcp { 0, 234, 237, 238, 0, 590, 592, 0, 595, 0, 0, 599, 603, 0, 0, 607, 614, 616, 618, 588, 586, 587, 0, 569, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 583, 584, 585, 642, - 0, 639, 641, 633, 0, 630, 632, 48, 0, 0, - 41, 0, 0, 0, 0, 0, 0, 59, 0, 61, + 577, 578, 579, 580, 581, 582, 583, 584, 585, 644, + 0, 641, 643, 634, 0, 0, 630, 632, 633, 48, + 0, 0, 41, 0, 0, 0, 0, 0, 0, 59, + 0, 61, 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, 73, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 73, 0, 0, 0, 121, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, - 0, 0, 414, 0, 0, 0, 0, 0, 0, 439, - 0, 0, 0, 0, 0, 0, 0, 469, 0, 339, - 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, - 0, 0, 384, 0, 0, 0, 0, 233, 0, 0, + 0, 268, 0, 0, 414, 0, 0, 0, 0, 0, + 0, 439, 0, 0, 0, 0, 0, 0, 0, 469, + 0, 339, 0, 0, 0, 0, 0, 0, 0, 347, + 0, 0, 0, 0, 384, 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 568, 0, 0, 638, 0, 0, - 629, 52, 45, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 111, 112, 113, 114, - 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 549, 0, - 0, 0, 75, 0, 131, 123, 0, 0, 0, 0, - 0, 307, 308, 0, 0, 0, 270, 0, 416, 0, - 455, 0, 458, 459, 441, 0, 0, 0, 0, 0, - 0, 0, 473, 0, 0, 363, 0, 0, 0, 374, - 351, 0, 403, 404, 388, 0, 0, 235, 589, 0, - 0, 594, 0, 597, 598, 0, 0, 605, 606, 0, - 0, 0, 0, 570, 0, 640, 0, 631, 0, 0, - 0, 621, 623, 625, 110, 0, 0, 0, 0, 138, - 117, 261, 340, 377, 42, 427, 429, 303, 304, 305, - 306, 302, 311, 0, 49, 0, 0, 0, 462, 226, - 0, 0, 0, 564, 0, 53, 130, 407, 432, 292, - 294, 296, 300, 298, 0, 425, 454, 457, 498, 486, - 488, 490, 492, 494, 496, 366, 180, 370, 368, 373, - 400, 240, 242, 591, 593, 596, 601, 602, 600, 604, - 609, 610, 611, 612, 613, 608, 615, 617, 619, 0, - 138, 46, 0, 0, 0, 0, 166, 172, 174, 176, - 0, 0, 0, 0, 0, 189, 0, 0, 192, 194, - 196, 0, 0, 0, 165, 0, 144, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 158, 159, 160, - 161, 156, 157, 162, 163, 164, 0, 142, 0, 139, - 140, 265, 0, 262, 263, 344, 0, 341, 342, 381, - 0, 378, 379, 315, 0, 312, 313, 211, 212, 0, - 207, 209, 210, 0, 220, 221, 217, 0, 215, 218, - 219, 203, 0, 200, 202, 509, 0, 507, 466, 0, - 463, 464, 230, 0, 227, 228, 0, 0, 0, 0, - 0, 0, 0, 245, 247, 248, 249, 250, 251, 252, - 539, 545, 0, 0, 0, 538, 535, 536, 537, 0, - 528, 530, 533, 531, 532, 534, 559, 561, 558, 556, - 557, 0, 552, 554, 555, 0, 55, 411, 0, 408, - 409, 436, 0, 433, 434, 503, 502, 0, 501, 646, - 0, 644, 0, 71, 636, 627, 119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 568, 0, 0, 640, + 0, 0, 0, 629, 52, 45, 0, 0, 0, 0, + 0, 0, 63, 0, 0, 0, 0, 0, 0, 111, + 112, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 133, 135, 0, 137, - 0, 0, 260, 0, 348, 337, 0, 385, 376, 0, - 0, 310, 0, 0, 206, 223, 0, 214, 0, 0, - 199, 511, 0, 506, 470, 461, 0, 0, 225, 0, - 0, 0, 0, 0, 0, 0, 0, 244, 0, 0, - 0, 0, 0, 0, 527, 0, 0, 0, 551, 566, - 57, 0, 56, 0, 406, 0, 0, 431, 0, 0, - 500, 0, 0, 643, 634, 0, 0, 0, 0, 178, - 181, 182, 183, 184, 0, 191, 185, 0, 0, 0, - 186, 187, 188, 145, 0, 141, 0, 264, 0, 343, - 0, 380, 335, 330, 332, 323, 324, 319, 320, 321, - 322, 328, 329, 327, 331, 0, 317, 325, 333, 334, - 326, 314, 208, 216, 0, 201, 523, 0, 521, 522, - 518, 519, 520, 0, 512, 513, 515, 516, 517, 508, - 0, 465, 0, 229, 253, 254, 255, 256, 257, 258, - 246, 0, 0, 544, 547, 548, 529, 0, 0, 553, - 54, 0, 0, 410, 0, 435, 0, 660, 0, 658, - 656, 650, 654, 655, 0, 648, 652, 653, 651, 645, - 168, 169, 170, 171, 167, 173, 175, 177, 190, 193, - 195, 197, 143, 266, 345, 382, 0, 316, 204, 0, - 0, 510, 0, 467, 231, 541, 542, 543, 540, 546, - 560, 562, 58, 412, 437, 504, 0, 0, 0, 0, - 647, 318, 0, 525, 514, 0, 657, 0, 649, 524, - 0, 659, 664, 0, 662, 0, 0, 661, 672, 0, - 0, 0, 0, 666, 668, 669, 670, 671, 663, 0, - 0, 0, 0, 0, 665, 0, 674, 675, 676, 667, - 673 + 0, 549, 0, 0, 0, 75, 0, 131, 123, 0, + 0, 0, 0, 0, 307, 308, 0, 0, 0, 270, + 0, 416, 0, 455, 0, 458, 459, 441, 0, 0, + 0, 0, 0, 0, 0, 473, 0, 0, 363, 0, + 0, 0, 374, 351, 0, 403, 404, 388, 0, 0, + 235, 589, 0, 0, 594, 0, 597, 598, 0, 0, + 605, 606, 0, 0, 0, 0, 570, 0, 642, 0, + 636, 631, 0, 0, 0, 621, 623, 625, 110, 0, + 0, 0, 0, 138, 117, 261, 340, 377, 42, 427, + 429, 303, 304, 305, 306, 302, 311, 0, 49, 0, + 0, 0, 462, 226, 0, 0, 0, 564, 0, 53, + 130, 407, 432, 292, 294, 296, 300, 298, 0, 425, + 454, 457, 498, 486, 488, 490, 492, 494, 496, 366, + 180, 370, 368, 373, 400, 240, 242, 591, 593, 596, + 601, 602, 600, 604, 609, 610, 611, 612, 613, 608, + 615, 617, 619, 0, 138, 46, 0, 0, 0, 0, + 166, 172, 174, 176, 0, 0, 0, 0, 0, 189, + 0, 0, 192, 194, 196, 0, 0, 0, 165, 0, + 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 158, 159, 160, 161, 156, 157, 162, 163, 164, + 0, 142, 0, 139, 140, 265, 0, 262, 263, 344, + 0, 341, 342, 381, 0, 378, 379, 315, 0, 312, + 313, 211, 212, 0, 207, 209, 210, 0, 220, 221, + 217, 0, 215, 218, 219, 203, 0, 200, 202, 509, + 0, 507, 466, 0, 463, 464, 230, 0, 227, 228, + 0, 0, 0, 0, 0, 0, 0, 245, 247, 248, + 249, 250, 251, 252, 539, 545, 0, 0, 0, 538, + 535, 536, 537, 0, 528, 530, 533, 531, 532, 534, + 559, 561, 558, 556, 557, 0, 552, 554, 555, 0, + 55, 411, 0, 408, 409, 436, 0, 433, 434, 503, + 502, 0, 501, 648, 0, 646, 0, 71, 638, 627, + 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 133, 135, 0, 137, 0, 0, 260, 0, 348, 337, + 0, 385, 376, 0, 0, 310, 0, 0, 206, 223, + 0, 214, 0, 0, 199, 511, 0, 506, 470, 461, + 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, + 0, 244, 0, 0, 0, 0, 0, 0, 527, 0, + 0, 0, 551, 566, 57, 0, 56, 0, 406, 0, + 0, 431, 0, 0, 500, 0, 0, 645, 635, 0, + 0, 0, 0, 178, 181, 182, 183, 184, 0, 191, + 185, 0, 0, 0, 186, 187, 188, 145, 0, 141, + 0, 264, 0, 343, 0, 380, 335, 330, 332, 323, + 324, 319, 320, 321, 322, 328, 329, 327, 331, 0, + 317, 325, 333, 334, 326, 314, 208, 216, 0, 201, + 523, 0, 521, 522, 518, 519, 520, 0, 512, 513, + 515, 516, 517, 508, 0, 465, 0, 229, 253, 254, + 255, 256, 257, 258, 246, 0, 0, 544, 547, 548, + 529, 0, 0, 553, 54, 0, 0, 410, 0, 435, + 0, 662, 0, 660, 658, 652, 656, 657, 0, 650, + 654, 655, 653, 647, 168, 169, 170, 171, 167, 173, + 175, 177, 190, 193, 195, 197, 143, 266, 345, 382, + 0, 316, 204, 0, 0, 510, 0, 467, 231, 541, + 542, 543, 540, 546, 560, 562, 58, 412, 437, 504, + 0, 0, 0, 0, 649, 318, 0, 525, 514, 0, + 659, 0, 651, 524, 0, 661, 666, 0, 664, 0, + 0, 663, 674, 0, 0, 0, 0, 668, 670, 671, + 672, 673, 665, 0, 0, 0, 0, 0, 667, 0, + 676, 677, 678, 669, 675 }; const short Dhcp6Parser::yypgoto_[] = { - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, 43, -833, -457, - -833, 192, -833, -833, -833, -833, 158, -833, -451, -833, - -833, -833, -74, -833, -833, -833, 426, -833, -833, -833, - -833, 222, 311, -833, -833, -62, -46, -45, -43, -833, - -833, -833, -833, -833, -833, -833, 224, 425, -833, -833, - -833, -833, -833, -833, -833, -833, -833, 155, -833, -29, - -833, -572, -7, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -70, -833, -605, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -35, -833, -833, -833, -833, - -833, -21, -592, -833, -833, -833, -833, -23, -833, -833, - -833, -833, -833, -833, -833, -833, -28, -833, -833, -833, - -31, 398, -833, -833, -833, -833, -833, -833, -833, -34, - -833, -833, -833, -833, -833, -833, -832, -833, -833, -833, - -9, -833, -833, -833, 4, 438, -833, -833, -831, -833, - -830, -833, -36, -833, -32, -833, -42, -833, -833, -833, - -827, -833, -833, -833, -833, -5, -833, -833, -178, 780, - -833, -833, -833, -833, -833, 3, -833, -833, -833, 10, - -833, 424, -833, -76, -833, -833, -833, -833, -833, -69, - -833, -833, -833, -833, -833, -11, -833, -833, -833, 6, - -833, -833, -833, 5, -833, 423, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -39, -833, -833, - -833, -26, 459, -833, -833, -58, -833, -24, -833, -833, - -833, -833, -833, -40, -833, -833, -833, -25, 456, -833, - -833, -833, -833, -833, -833, -833, -60, -833, -833, -833, - -1, -833, -833, -833, 9, -833, 440, 252, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -824, -833, -833, -833, -833, -833, -833, -833, 13, - -833, -833, -833, -154, -833, -833, -833, -833, -833, -833, - -833, -4, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -6, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, 269, 421, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, 295, 427, -833, -833, -833, -833, -833, - -833, 306, 428, -833, -833, -833, -15, -833, -833, -161, - -833, -833, -833, -833, -833, -833, -177, -833, -833, -193, - -833, -833, -833, -833, -833 + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, 43, -837, -460, + -837, 266, -837, -837, -837, -837, 165, -837, -472, -837, + -837, -837, -74, -837, -837, -837, 426, -837, -837, -837, + -837, 205, 395, -837, -837, -62, -46, -45, -43, -837, + -837, -837, -837, -837, -837, -837, 186, 421, -837, -837, + -837, -837, -837, -837, -837, -837, -837, 150, -837, -19, + -837, -576, -7, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -70, -837, -609, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -35, -837, -837, -837, -837, + -837, -37, -596, -837, -837, -837, -837, -23, -837, -837, + -837, -837, -837, -837, -837, -837, -33, -837, -837, -837, + -26, 401, -837, -837, -837, -837, -837, -837, -837, -44, + -837, -837, -837, -837, -837, -837, -836, -837, -837, -837, + -9, -837, -837, -837, 1, 438, -837, -837, -835, -837, + -834, -837, -36, -837, -32, -837, -42, -837, -837, -837, + -831, -837, -837, -837, -837, -6, -837, -837, -179, 781, + -837, -837, -837, -837, -837, 3, -837, -837, -837, 7, + -837, 429, -837, -76, -837, -837, -837, -837, -837, -69, + -837, -837, -837, -837, -837, -11, -837, -837, -837, 5, + -837, -837, -837, 8, -837, 411, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -39, -837, -837, + -837, -31, 458, -837, -837, -58, -837, -24, -837, -837, + -837, -837, -837, -40, -837, -837, -837, -30, 454, -837, + -837, -837, -837, -837, -837, -837, -60, -837, -837, -837, + 2, -837, -837, -837, 9, -837, 450, 247, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -828, -837, -837, -837, -837, -837, -837, -837, 12, + -837, -837, -837, -157, -837, -837, -837, -837, -837, -837, + -837, -5, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -8, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, 270, 427, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, -837, -837, -837, -837, -837, -837, -837, + -837, -837, -837, 295, 413, -837, -837, -837, -837, -837, + -837, -837, 303, 428, -837, -837, -837, -16, -837, -837, + -162, -837, -837, -837, -837, -837, -837, -177, -837, -837, + -193, -837, -837, -837, -837, -837 }; const short @@ -4359,451 +4353,451 @@ namespace isc { namespace dhcp { { -1, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 88, 41, 42, - 73, 605, 92, 93, 43, 72, 89, 90, 626, 806, - 901, 902, 694, 45, 74, 101, 102, 103, 362, 47, - 75, 141, 142, 143, 370, 144, 145, 146, 147, 148, - 149, 381, 150, 372, 49, 76, 178, 179, 180, 404, - 181, 151, 373, 152, 374, 153, 375, 718, 719, 720, - 848, 695, 696, 697, 827, 1024, 698, 828, 699, 829, - 700, 830, 701, 702, 441, 703, 704, 705, 706, 707, - 708, 709, 710, 711, 836, 712, 713, 839, 714, 840, - 715, 841, 154, 392, 752, 753, 754, 868, 155, 389, - 739, 740, 741, 742, 156, 391, 747, 748, 749, 750, - 157, 390, 158, 395, 763, 764, 765, 877, 65, 84, - 310, 311, 312, 454, 313, 455, 159, 396, 772, 773, - 774, 775, 776, 777, 778, 779, 160, 382, 722, 723, - 724, 851, 51, 77, 199, 200, 201, 410, 202, 411, - 203, 412, 204, 416, 205, 415, 161, 387, 611, 207, - 208, 162, 388, 734, 735, 736, 860, 955, 956, 163, - 383, 59, 81, 726, 727, 728, 854, 61, 82, 275, - 276, 277, 278, 279, 280, 281, 440, 282, 444, 283, - 443, 284, 285, 445, 286, 164, 384, 730, 731, 732, - 857, 63, 83, 296, 297, 298, 299, 300, 449, 301, - 302, 303, 304, 210, 408, 808, 809, 810, 903, 53, - 78, 221, 222, 223, 420, 165, 385, 166, 386, 213, - 409, 812, 813, 814, 906, 55, 79, 237, 238, 239, - 423, 240, 241, 425, 242, 243, 167, 394, 759, 760, - 761, 874, 57, 80, 255, 256, 257, 258, 431, 259, - 432, 260, 433, 261, 434, 262, 435, 263, 436, 264, - 430, 215, 417, 817, 818, 909, 168, 393, 756, 757, - 871, 973, 974, 975, 976, 977, 1039, 978, 169, 397, - 789, 790, 791, 888, 1048, 792, 793, 889, 794, 795, - 170, 171, 399, 801, 802, 803, 895, 804, 896, 172, - 400, 173, 401, 67, 85, 332, 333, 334, 335, 459, - 336, 460, 337, 338, 462, 339, 340, 341, 465, 658, - 342, 466, 343, 344, 345, 469, 665, 346, 470, 347, - 471, 348, 472, 104, 364, 105, 365, 106, 366, 174, - 371, 71, 87, 354, 355, 356, 478, 107, 363, 69, - 86, 350, 351, 352, 475, 820, 821, 911, 1014, 1015, - 1016, 1017, 1058, 1018, 1056, 1073, 1074, 1075, 1082, 1083, - 1084, 1089, 1085, 1086, 1087 + 73, 609, 92, 93, 43, 72, 89, 90, 630, 810, + 905, 906, 698, 45, 74, 101, 102, 103, 364, 47, + 75, 141, 142, 143, 372, 144, 145, 146, 147, 148, + 149, 383, 150, 374, 49, 76, 178, 179, 180, 406, + 181, 151, 375, 152, 376, 153, 377, 722, 723, 724, + 852, 699, 700, 701, 831, 1028, 702, 832, 703, 833, + 704, 834, 705, 706, 443, 707, 708, 709, 710, 711, + 712, 713, 714, 715, 840, 716, 717, 843, 718, 844, + 719, 845, 154, 394, 756, 757, 758, 872, 155, 391, + 743, 744, 745, 746, 156, 393, 751, 752, 753, 754, + 157, 392, 158, 397, 767, 768, 769, 881, 65, 84, + 310, 311, 312, 456, 313, 457, 159, 398, 776, 777, + 778, 779, 780, 781, 782, 783, 160, 384, 726, 727, + 728, 855, 51, 77, 199, 200, 201, 412, 202, 413, + 203, 414, 204, 418, 205, 417, 161, 389, 615, 207, + 208, 162, 390, 738, 739, 740, 864, 959, 960, 163, + 385, 59, 81, 730, 731, 732, 858, 61, 82, 275, + 276, 277, 278, 279, 280, 281, 442, 282, 446, 283, + 445, 284, 285, 447, 286, 164, 386, 734, 735, 736, + 861, 63, 83, 296, 297, 298, 299, 300, 451, 301, + 302, 303, 304, 210, 410, 812, 813, 814, 907, 53, + 78, 221, 222, 223, 422, 165, 387, 166, 388, 213, + 411, 816, 817, 818, 910, 55, 79, 237, 238, 239, + 425, 240, 241, 427, 242, 243, 167, 396, 763, 764, + 765, 878, 57, 80, 255, 256, 257, 258, 433, 259, + 434, 260, 435, 261, 436, 262, 437, 263, 438, 264, + 432, 215, 419, 821, 822, 913, 168, 395, 760, 761, + 875, 977, 978, 979, 980, 981, 1043, 982, 169, 399, + 793, 794, 795, 892, 1052, 796, 797, 893, 798, 799, + 170, 171, 401, 805, 806, 807, 899, 808, 900, 172, + 402, 173, 403, 67, 85, 332, 333, 334, 335, 461, + 336, 462, 337, 338, 464, 339, 340, 341, 467, 662, + 342, 468, 343, 344, 345, 471, 669, 346, 472, 347, + 473, 348, 474, 104, 366, 105, 367, 106, 368, 174, + 373, 71, 87, 355, 356, 357, 480, 358, 107, 365, + 69, 86, 350, 351, 352, 477, 824, 825, 915, 1018, + 1019, 1020, 1021, 1062, 1022, 1060, 1077, 1078, 1079, 1086, + 1087, 1088, 1093, 1089, 1090, 1091 }; const unsigned short Dhcp6Parser::yytable_[] = { 100, 140, 177, 194, 217, 231, 251, 294, 273, 292, - 309, 329, 274, 293, 295, 195, 786, 214, 182, 211, - 224, 235, 253, 746, 287, 305, 716, 330, 948, 949, - 950, 196, 197, 954, 198, 206, 960, 94, 175, 176, - 368, 737, 218, 232, 245, 369, 219, 233, 604, 307, - 308, 815, 183, 212, 225, 236, 254, 402, 288, 306, - 40, 331, 403, 604, 307, 308, 209, 220, 234, 252, - 33, 32, 34, 406, 35, 44, 123, 124, 407, 418, - 108, 109, 632, 110, 419, 122, 111, 112, 113, 46, - 48, 123, 124, 266, 638, 639, 640, 50, 226, 227, - 228, 229, 230, 123, 124, 52, 54, 660, 661, 662, - 663, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 738, 99, 191, 56, 267, 192, 268, 269, 796, 797, - 270, 271, 272, 863, 421, 428, 864, 123, 124, 422, - 429, 123, 124, 664, 125, 1020, 1021, 1022, 1023, 126, - 127, 128, 129, 130, 780, 131, 866, 122, 58, 867, - 132, 1078, 456, 681, 1079, 1080, 1081, 457, 216, 133, - 60, 872, 134, 95, 873, 123, 124, 656, 657, 135, - 473, 99, 96, 97, 98, 474, 912, 136, 137, 913, - 476, 138, 139, 267, 191, 477, 99, 192, 737, 744, - 99, 745, 123, 124, 948, 949, 950, 62, 99, 954, - 123, 124, 960, 676, 1045, 1046, 1047, 122, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, - 689, 690, 691, 692, 693, 123, 124, 64, 36, 37, - 38, 39, 99, 66, 267, 68, 99, 479, 781, 782, - 783, 784, 480, 244, 607, 608, 609, 610, 70, 245, - 246, 247, 248, 249, 250, 122, 267, 91, 402, 114, - 115, 116, 117, 823, 746, 1076, 934, 122, 1077, 353, - 99, 476, 121, 123, 124, 349, 824, 184, 786, 185, - 1007, 357, 1008, 1009, 100, 123, 124, 186, 187, 188, - 189, 190, 125, 966, 967, 358, 360, 99, 766, 767, - 768, 769, 770, 771, 191, 99, 359, 192, 132, 267, - 289, 268, 269, 290, 291, 193, 479, 361, 140, 406, - 845, 825, 177, 845, 826, 846, 123, 124, 847, 367, - 99, 869, 437, 376, 194, 886, 870, 217, 182, 377, - 887, 378, 893, 438, 231, 379, 195, 894, 214, 380, - 211, 398, 897, 224, 251, 405, 99, 898, 413, 414, - 235, 424, 196, 197, 273, 198, 206, 294, 274, 292, - 253, 473, 183, 293, 295, 218, 899, 426, 99, 219, - 287, 427, 232, 845, 212, 305, 233, 225, 1032, 329, - 99, 481, 482, 418, 236, 439, 1036, 209, 1033, 442, - 220, 1037, 446, 456, 254, 330, 421, 234, 1044, 447, - 428, 1053, 448, 1059, 288, 1054, 450, 252, 1060, 306, - 114, 115, 116, 117, 123, 124, 120, 1093, 122, 267, - 451, 99, 1094, 452, 453, 496, 458, 461, 463, 331, - 464, 467, 468, 483, 484, 485, 123, 124, 486, 187, - 188, 487, 190, 125, 488, 490, 491, 492, 493, 494, - 495, 497, 501, 498, 499, 191, 502, 500, 192, 503, - 504, 505, 506, 507, 508, 509, 193, 510, 511, 512, + 309, 329, 274, 293, 295, 195, 790, 214, 182, 211, + 224, 235, 253, 750, 287, 305, 720, 330, 952, 953, + 954, 196, 197, 958, 198, 206, 964, 94, 175, 176, + 660, 661, 218, 232, 245, 741, 219, 233, 608, 307, + 308, 819, 183, 212, 225, 236, 254, 32, 288, 306, + 40, 331, 266, 608, 636, 267, 209, 220, 234, 252, + 33, 44, 34, 46, 35, 48, 642, 643, 644, 91, + 108, 109, 123, 124, 110, 307, 308, 111, 112, 113, + 122, 123, 124, 267, 50, 268, 269, 370, 52, 270, + 271, 272, 371, 226, 227, 228, 229, 230, 123, 124, + 123, 124, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 99, 867, 122, 742, 868, 404, 191, 122, 267, + 192, 405, 1082, 54, 216, 1083, 1084, 1085, 123, 124, + 56, 123, 124, 408, 420, 125, 123, 124, 409, 421, + 126, 127, 128, 129, 130, 58, 131, 353, 354, 784, + 191, 132, 1011, 192, 1012, 1013, 970, 971, 685, 870, + 133, 60, 871, 134, 95, 664, 665, 666, 667, 876, + 135, 423, 877, 96, 97, 98, 424, 99, 136, 137, + 430, 62, 138, 139, 458, 431, 99, 123, 124, 459, + 916, 99, 64, 917, 952, 953, 954, 123, 124, 958, + 66, 668, 964, 99, 680, 99, 1049, 1050, 1051, 681, + 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, + 692, 693, 694, 695, 696, 697, 68, 70, 121, 36, + 37, 38, 39, 99, 349, 267, 99, 122, 359, 800, + 801, 99, 360, 785, 786, 787, 788, 770, 771, 772, + 773, 774, 775, 475, 478, 123, 124, 482, 476, 479, + 404, 362, 483, 361, 750, 827, 938, 114, 115, 116, + 117, 478, 482, 244, 363, 122, 828, 829, 790, 245, + 246, 247, 248, 249, 250, 184, 100, 185, 611, 612, + 613, 614, 99, 123, 124, 186, 187, 188, 189, 190, + 125, 369, 99, 378, 267, 289, 268, 269, 290, 291, + 379, 380, 191, 408, 849, 192, 132, 381, 830, 850, + 140, 123, 124, 193, 177, 849, 873, 890, 897, 901, + 851, 874, 891, 898, 902, 382, 194, 475, 849, 217, + 182, 400, 903, 1036, 420, 440, 231, 407, 195, 1037, + 214, 415, 211, 1040, 458, 224, 251, 99, 1041, 1048, + 99, 416, 235, 426, 196, 197, 273, 198, 206, 294, + 274, 292, 253, 423, 183, 293, 295, 218, 1057, 428, + 430, 219, 287, 450, 232, 1058, 212, 305, 233, 225, + 1063, 329, 1097, 484, 485, 1064, 236, 1098, 99, 209, + 741, 748, 220, 749, 429, 1080, 254, 330, 1081, 234, + 1024, 1025, 1026, 1027, 439, 441, 288, 444, 448, 252, + 449, 306, 114, 115, 116, 117, 99, 452, 120, 453, + 122, 267, 454, 455, 123, 124, 460, 463, 465, 466, + 469, 331, 470, 481, 486, 487, 488, 489, 123, 124, + 490, 187, 188, 491, 190, 125, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 191, 504, 505, + 192, 506, 507, 508, 509, 510, 511, 512, 193, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 513, 514, 515, 516, 517, 519, 520, - 327, 328, 521, 523, 518, 140, 526, 524, 527, 528, - 529, 530, 177, 533, 532, 534, 531, 535, 537, 591, - 592, 593, 539, 541, 540, 545, 542, 543, 182, 99, - 546, 547, 548, 549, 550, 551, 553, 785, 798, 554, - 329, 555, 556, 557, 558, 559, 561, 562, 563, 565, - 566, 99, 568, 787, 799, 569, 330, 570, 571, 572, - 573, 575, 183, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 574, 576, - 579, 580, 577, 581, 578, 582, 584, 788, 800, 586, - 331, 588, 594, 589, 600, 590, 595, 596, 597, 652, - 598, 599, 601, 602, 603, 751, 612, 34, 606, 613, - 614, 615, 629, 617, 616, 618, 619, 850, 630, 620, - 621, 671, 622, 624, 625, 627, 628, 659, 669, 634, - 631, 670, 633, 635, 636, 717, 637, 641, 721, 725, - 729, 733, 755, 758, 762, 642, 807, 811, 819, 643, - 644, 645, 646, 647, 648, 649, 650, 651, 653, 654, - 655, 831, 832, 833, 834, 835, 837, 838, 842, 666, - 667, 843, 844, 668, 853, 849, 852, 856, 855, 858, - 859, 861, 862, 900, 865, 876, 875, 878, 879, 904, - 880, 881, 882, 883, 884, 885, 890, 891, 892, 905, - 908, 907, 623, 522, 915, 914, 910, 916, 917, 918, - 919, 924, 927, 920, 928, 921, 929, 964, 923, 922, - 991, 925, 926, 930, 931, 992, 997, 998, 932, 1001, - 984, 1000, 985, 986, 987, 988, 989, 993, 994, 995, - 1006, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1035, - 1040, 1038, 1041, 1042, 1066, 1043, 1049, 1050, 1057, 1062, - 1065, 1067, 743, 1070, 1090, 1051, 1072, 194, 1052, 1091, - 273, 294, 1092, 292, 274, 1055, 942, 293, 295, 195, - 947, 214, 1095, 211, 489, 1063, 287, 968, 943, 305, - 251, 969, 958, 309, 1096, 196, 197, 1069, 198, 206, - 1071, 672, 1100, 971, 944, 945, 253, 946, 953, 785, - 675, 935, 1097, 798, 951, 822, 1098, 212, 952, 217, - 288, 525, 231, 306, 965, 787, 959, 1010, 933, 799, - 209, 1011, 962, 963, 937, 224, 982, 972, 235, 957, - 254, 983, 990, 1012, 567, 936, 536, 961, 1061, 939, - 970, 265, 940, 252, 938, 941, 1003, 218, 1005, 788, - 232, 219, 560, 800, 233, 981, 564, 1002, 552, 225, - 538, 1004, 236, 980, 544, 979, 816, 1013, 1064, 996, - 674, 999, 220, 805, 583, 234, 673, 1019, 1068, 1088, - 1099, 0, 0, 0, 585, 0, 587, 0, 0, 0, + 324, 325, 326, 524, 526, 527, 529, 530, 531, 140, + 327, 328, 532, 533, 534, 535, 177, 536, 537, 538, + 540, 542, 595, 596, 597, 544, 548, 543, 545, 546, + 549, 550, 182, 551, 552, 553, 554, 556, 557, 99, + 559, 789, 802, 558, 329, 560, 561, 564, 562, 565, + 566, 568, 569, 99, 572, 571, 573, 791, 803, 574, + 330, 575, 578, 579, 582, 576, 183, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 580, 583, 577, 584, 585, 581, 587, 589, + 590, 792, 804, 592, 331, 593, 598, 594, 599, 600, + 601, 602, 656, 603, 605, 604, 606, 607, 854, 616, + 34, 610, 617, 618, 619, 857, 621, 620, 622, 623, + 923, 633, 624, 625, 626, 675, 628, 629, 631, 632, + 673, 674, 634, 635, 637, 638, 639, 640, 663, 721, + 641, 725, 729, 733, 737, 759, 762, 755, 645, 766, + 811, 815, 823, 835, 836, 837, 838, 646, 839, 841, + 647, 648, 649, 650, 651, 652, 653, 654, 655, 657, + 658, 659, 842, 846, 847, 670, 848, 853, 884, 671, + 672, 856, 859, 860, 862, 863, 866, 865, 924, 880, + 869, 879, 883, 882, 885, 886, 887, 888, 889, 894, + 895, 896, 904, 909, 908, 911, 912, 1005, 918, 914, + 919, 920, 921, 922, 925, 926, 928, 931, 932, 927, + 929, 930, 933, 968, 934, 995, 935, 996, 1001, 988, + 936, 989, 1002, 1004, 1010, 1044, 1046, 990, 991, 992, + 993, 997, 998, 999, 1029, 1030, 1031, 1032, 1033, 1034, + 1035, 1038, 1039, 1045, 1042, 1047, 1061, 1053, 1066, 1069, + 1054, 1055, 1071, 1076, 1074, 1094, 1095, 1096, 1099, 1056, + 1059, 194, 1070, 747, 273, 294, 679, 292, 274, 627, + 946, 293, 295, 195, 951, 214, 492, 211, 676, 525, + 287, 972, 947, 305, 251, 973, 962, 309, 1067, 196, + 197, 1073, 198, 206, 1075, 1104, 1100, 975, 948, 949, + 253, 950, 957, 789, 826, 1101, 1102, 802, 955, 528, + 966, 212, 956, 217, 288, 939, 231, 306, 969, 791, + 963, 1014, 937, 803, 209, 1015, 994, 967, 941, 224, + 987, 976, 235, 961, 254, 986, 940, 1016, 539, 570, + 965, 1065, 265, 943, 974, 942, 567, 252, 945, 944, + 1007, 218, 1009, 792, 232, 219, 1006, 804, 233, 563, + 1008, 541, 985, 225, 547, 820, 236, 984, 983, 1068, + 555, 1017, 1000, 1003, 678, 591, 220, 677, 809, 234, + 1023, 1072, 586, 1092, 1103, 0, 588, 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, 942, 0, 0, 0, 947, 0, 968, 0, - 0, 0, 969, 0, 943, 0, 0, 0, 958, 0, - 0, 0, 0, 0, 971, 1010, 0, 0, 0, 1011, - 944, 945, 0, 946, 953, 0, 0, 0, 0, 0, - 951, 1012, 0, 0, 952, 0, 0, 0, 0, 0, - 0, 0, 959, 0, 0, 0, 0, 0, 972, 0, - 0, 0, 0, 0, 0, 957, 0, 0, 0, 0, - 0, 970, 0, 0, 0, 1013 + 0, 0, 0, 0, 0, 0, 946, 0, 0, 0, + 951, 0, 972, 0, 0, 0, 973, 0, 947, 0, + 0, 0, 962, 0, 0, 0, 0, 0, 975, 1014, + 0, 0, 0, 1015, 948, 949, 0, 950, 957, 0, + 0, 0, 0, 0, 955, 1016, 0, 0, 956, 0, + 0, 0, 0, 0, 0, 0, 963, 0, 0, 0, + 0, 0, 976, 0, 0, 0, 0, 0, 0, 961, + 0, 0, 0, 0, 0, 974, 0, 0, 0, 1017 }; const short Dhcp6Parser::yycheck_[] = { 74, 75, 76, 77, 78, 79, 80, 83, 82, 83, - 84, 85, 82, 83, 83, 77, 621, 77, 76, 77, - 78, 79, 80, 615, 82, 83, 598, 85, 860, 860, - 860, 77, 77, 860, 77, 77, 860, 10, 15, 16, - 3, 94, 78, 79, 92, 8, 78, 79, 505, 101, - 102, 99, 76, 77, 78, 79, 80, 3, 82, 83, - 17, 85, 8, 520, 101, 102, 77, 78, 79, 80, - 5, 0, 7, 3, 9, 7, 68, 69, 8, 3, - 11, 12, 533, 14, 8, 50, 17, 18, 19, 7, - 7, 68, 69, 20, 545, 546, 547, 7, 63, 64, - 65, 66, 67, 68, 69, 7, 7, 140, 141, 142, - 143, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 173, 173, 87, 7, 51, 90, 53, 54, 120, 121, - 57, 58, 59, 3, 3, 3, 6, 68, 69, 8, - 8, 68, 69, 176, 75, 21, 22, 23, 24, 80, - 81, 82, 83, 84, 20, 86, 3, 50, 7, 6, - 91, 149, 3, 29, 152, 153, 154, 8, 61, 100, - 7, 3, 103, 146, 6, 68, 69, 137, 138, 110, - 3, 173, 155, 156, 157, 8, 3, 118, 119, 6, - 3, 122, 123, 51, 87, 8, 173, 90, 94, 95, - 173, 97, 68, 69, 1036, 1036, 1036, 7, 173, 1036, - 68, 69, 1036, 20, 111, 112, 113, 50, 25, 26, + 84, 85, 82, 83, 83, 77, 625, 77, 76, 77, + 78, 79, 80, 619, 82, 83, 602, 85, 864, 864, + 864, 77, 77, 864, 77, 77, 864, 10, 16, 17, + 138, 139, 78, 79, 93, 95, 78, 79, 508, 102, + 103, 100, 76, 77, 78, 79, 80, 0, 82, 83, + 17, 85, 21, 523, 536, 52, 77, 78, 79, 80, + 5, 7, 7, 7, 9, 7, 548, 549, 550, 174, + 11, 12, 69, 70, 15, 102, 103, 18, 19, 20, + 51, 69, 70, 52, 7, 54, 55, 3, 7, 58, + 59, 60, 8, 64, 65, 66, 67, 68, 69, 70, + 69, 70, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 174, 3, 51, 174, 6, 3, 88, 51, 52, + 91, 8, 150, 7, 62, 153, 154, 155, 69, 70, + 7, 69, 70, 3, 3, 76, 69, 70, 8, 8, + 81, 82, 83, 84, 85, 7, 87, 13, 14, 21, + 88, 92, 149, 91, 151, 152, 89, 90, 30, 3, + 101, 7, 6, 104, 147, 141, 142, 143, 144, 3, + 111, 3, 6, 156, 157, 158, 8, 174, 119, 120, + 3, 7, 123, 124, 3, 8, 174, 69, 70, 8, + 3, 174, 7, 6, 1040, 1040, 1040, 69, 70, 1040, + 7, 177, 1040, 174, 21, 174, 112, 113, 114, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 68, 69, 7, 173, 174, - 175, 176, 173, 7, 51, 7, 173, 3, 114, 115, - 116, 117, 8, 86, 76, 77, 78, 79, 7, 92, - 93, 94, 95, 96, 97, 50, 51, 173, 3, 42, - 43, 44, 45, 8, 866, 3, 848, 50, 6, 13, - 173, 3, 49, 68, 69, 147, 8, 60, 893, 62, - 148, 6, 150, 151, 368, 68, 69, 70, 71, 72, - 73, 74, 75, 88, 89, 3, 8, 173, 104, 105, - 106, 107, 108, 109, 87, 173, 4, 90, 91, 51, - 52, 53, 54, 55, 56, 98, 3, 3, 402, 3, - 3, 8, 406, 3, 8, 8, 68, 69, 8, 4, - 173, 3, 8, 4, 418, 3, 8, 421, 406, 4, - 8, 4, 3, 3, 428, 4, 418, 8, 418, 4, - 418, 4, 3, 421, 438, 4, 173, 8, 4, 4, - 428, 4, 418, 418, 448, 418, 418, 453, 448, 453, - 438, 3, 406, 453, 453, 421, 8, 4, 173, 421, - 448, 4, 428, 3, 418, 453, 428, 421, 8, 473, - 173, 358, 359, 3, 428, 8, 3, 418, 8, 4, - 421, 8, 4, 3, 438, 473, 3, 428, 8, 8, - 3, 8, 3, 3, 448, 8, 4, 438, 8, 453, - 42, 43, 44, 45, 68, 69, 48, 3, 50, 51, - 4, 173, 8, 8, 3, 174, 4, 4, 4, 473, - 4, 4, 4, 173, 4, 4, 68, 69, 4, 71, - 72, 4, 74, 75, 4, 4, 4, 4, 4, 4, - 4, 174, 4, 174, 174, 87, 4, 174, 90, 4, - 4, 4, 4, 4, 4, 4, 98, 4, 4, 4, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 4, 4, 4, 4, 4, 4, 4, - 144, 145, 4, 4, 174, 589, 4, 176, 4, 4, - 4, 4, 596, 4, 176, 4, 174, 4, 4, 486, - 487, 488, 4, 4, 174, 4, 174, 174, 596, 173, - 4, 4, 4, 4, 4, 4, 4, 621, 622, 4, - 624, 174, 4, 4, 4, 176, 4, 176, 176, 4, - 4, 173, 176, 621, 622, 4, 624, 4, 174, 4, - 174, 4, 596, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 174, 4, - 4, 4, 176, 4, 176, 4, 4, 621, 622, 4, - 624, 4, 173, 7, 173, 7, 7, 7, 7, 566, - 7, 5, 5, 5, 5, 85, 5, 7, 173, 5, - 5, 5, 173, 5, 7, 5, 5, 3, 173, 7, - 7, 588, 7, 7, 5, 5, 5, 139, 5, 7, - 173, 5, 173, 173, 173, 7, 173, 173, 7, 7, - 7, 7, 7, 7, 7, 173, 7, 7, 7, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 4, 4, 4, 4, 4, 4, 4, 4, 173, - 173, 4, 4, 173, 3, 6, 6, 3, 6, 6, - 3, 6, 3, 173, 6, 3, 6, 6, 3, 6, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, - 3, 6, 520, 402, 4, 6, 8, 4, 4, 4, - 174, 4, 4, 176, 4, 174, 4, 4, 174, 176, - 4, 174, 174, 174, 174, 4, 4, 4, 176, 3, - 174, 6, 174, 174, 174, 174, 174, 174, 174, 174, - 4, 173, 173, 173, 173, 173, 173, 173, 8, 8, - 4, 173, 8, 3, 174, 8, 173, 173, 4, 4, - 4, 4, 614, 5, 4, 173, 7, 851, 173, 4, - 854, 857, 4, 857, 854, 173, 860, 857, 857, 851, - 860, 851, 4, 851, 368, 176, 854, 871, 860, 857, - 874, 871, 860, 877, 176, 851, 851, 173, 851, 851, - 173, 589, 173, 871, 860, 860, 874, 860, 860, 893, - 596, 850, 174, 897, 860, 670, 174, 851, 860, 903, - 854, 406, 906, 857, 869, 893, 860, 911, 845, 897, - 851, 911, 863, 866, 853, 903, 877, 871, 906, 860, - 874, 879, 886, 911, 456, 851, 418, 862, 1036, 856, - 871, 81, 857, 874, 854, 859, 905, 903, 908, 893, - 906, 903, 448, 897, 906, 876, 453, 903, 438, 903, - 421, 906, 906, 874, 428, 872, 634, 911, 1042, 893, - 595, 897, 903, 624, 473, 906, 590, 912, 1059, 1076, - 1093, -1, -1, -1, 476, -1, 479, -1, -1, -1, + 37, 38, 39, 40, 41, 42, 7, 7, 50, 174, + 175, 176, 177, 174, 148, 52, 174, 51, 6, 121, + 122, 174, 3, 115, 116, 117, 118, 105, 106, 107, + 108, 109, 110, 3, 3, 69, 70, 3, 8, 8, + 3, 8, 8, 4, 870, 8, 852, 43, 44, 45, + 46, 3, 3, 87, 3, 51, 8, 8, 897, 93, + 94, 95, 96, 97, 98, 61, 370, 63, 77, 78, + 79, 80, 174, 69, 70, 71, 72, 73, 74, 75, + 76, 4, 174, 4, 52, 53, 54, 55, 56, 57, + 4, 4, 88, 3, 3, 91, 92, 4, 8, 8, + 404, 69, 70, 99, 408, 3, 3, 3, 3, 3, + 8, 8, 8, 8, 8, 4, 420, 3, 3, 423, + 408, 4, 8, 8, 3, 3, 430, 4, 420, 8, + 420, 4, 420, 3, 3, 423, 440, 174, 8, 8, + 174, 4, 430, 4, 420, 420, 450, 420, 420, 455, + 450, 455, 440, 3, 408, 455, 455, 423, 8, 4, + 3, 423, 450, 3, 430, 8, 420, 455, 430, 423, + 3, 475, 3, 360, 361, 8, 430, 8, 174, 420, + 95, 96, 423, 98, 4, 3, 440, 475, 6, 430, + 22, 23, 24, 25, 8, 8, 450, 4, 4, 440, + 8, 455, 43, 44, 45, 46, 174, 4, 49, 4, + 51, 52, 8, 3, 69, 70, 4, 4, 4, 4, + 4, 475, 4, 4, 174, 4, 4, 4, 69, 70, + 4, 72, 73, 4, 75, 76, 4, 4, 4, 4, + 4, 4, 175, 175, 175, 175, 175, 88, 4, 4, + 91, 4, 4, 4, 4, 4, 4, 4, 99, 4, + 4, 4, 4, 4, 4, 4, 4, 175, 4, 4, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 4, 4, 177, 4, 4, 4, 593, + 145, 146, 4, 4, 175, 177, 600, 4, 4, 4, + 4, 4, 489, 490, 491, 4, 4, 175, 175, 175, + 4, 4, 600, 4, 4, 4, 4, 4, 4, 174, + 4, 625, 626, 175, 628, 4, 4, 4, 177, 177, + 177, 4, 4, 174, 4, 177, 4, 625, 626, 175, + 628, 4, 4, 4, 4, 175, 600, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 177, 4, 175, 4, 4, 177, 4, 4, + 175, 625, 626, 4, 628, 7, 174, 7, 7, 7, + 7, 7, 569, 5, 5, 174, 5, 5, 3, 5, + 7, 174, 5, 5, 5, 3, 5, 7, 5, 5, + 175, 174, 7, 7, 7, 592, 7, 5, 5, 5, + 5, 5, 174, 174, 174, 7, 174, 174, 140, 7, + 174, 7, 7, 7, 7, 7, 7, 86, 174, 7, + 7, 7, 7, 4, 4, 4, 4, 174, 4, 4, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 4, 4, 4, 174, 4, 6, 4, 174, + 174, 6, 6, 3, 6, 3, 3, 6, 177, 3, + 6, 6, 3, 6, 4, 4, 4, 4, 4, 4, + 4, 4, 174, 3, 6, 6, 3, 3, 6, 8, + 4, 4, 4, 4, 175, 177, 4, 4, 4, 175, + 175, 175, 4, 4, 175, 4, 175, 4, 4, 175, + 177, 175, 4, 6, 4, 4, 3, 175, 175, 175, + 175, 175, 175, 175, 174, 174, 174, 174, 174, 174, + 174, 8, 8, 8, 174, 8, 4, 174, 4, 4, + 174, 174, 4, 7, 5, 4, 4, 4, 4, 174, + 174, 855, 175, 618, 858, 861, 600, 861, 858, 523, + 864, 861, 861, 855, 864, 855, 370, 855, 593, 404, + 858, 875, 864, 861, 878, 875, 864, 881, 177, 855, + 855, 174, 855, 855, 174, 174, 177, 875, 864, 864, + 878, 864, 864, 897, 674, 175, 175, 901, 864, 408, + 867, 855, 864, 907, 858, 854, 910, 861, 873, 897, + 864, 915, 849, 901, 855, 915, 890, 870, 857, 907, + 883, 875, 910, 864, 878, 881, 855, 915, 420, 458, + 866, 1040, 81, 860, 875, 858, 455, 878, 863, 861, + 909, 907, 912, 897, 910, 907, 907, 901, 910, 450, + 910, 423, 880, 907, 430, 638, 910, 878, 876, 1046, + 440, 915, 897, 901, 599, 482, 907, 594, 628, 910, + 916, 1063, 475, 1080, 1097, -1, 478, -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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1036, -1, -1, -1, 1036, -1, 1042, -1, - -1, -1, 1042, -1, 1036, -1, -1, -1, 1036, -1, - -1, -1, -1, -1, 1042, 1059, -1, -1, -1, 1059, - 1036, 1036, -1, 1036, 1036, -1, -1, -1, -1, -1, - 1036, 1059, -1, -1, 1036, -1, -1, -1, -1, -1, - -1, -1, 1036, -1, -1, -1, -1, -1, 1042, -1, - -1, -1, -1, -1, -1, 1036, -1, -1, -1, -1, - -1, 1042, -1, -1, -1, 1059 + -1, -1, -1, -1, -1, -1, 1040, -1, -1, -1, + 1040, -1, 1046, -1, -1, -1, 1046, -1, 1040, -1, + -1, -1, 1040, -1, -1, -1, -1, -1, 1046, 1063, + -1, -1, -1, 1063, 1040, 1040, -1, 1040, 1040, -1, + -1, -1, -1, -1, 1040, 1063, -1, -1, 1040, -1, + -1, -1, -1, -1, -1, -1, 1040, -1, -1, -1, + -1, -1, 1046, -1, -1, -1, -1, -1, -1, 1040, + -1, -1, -1, -1, -1, 1046, -1, -1, -1, 1063 }; const unsigned short Dhcp6Parser::yystos_[] = { - 0, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 0, 5, 7, 9, 173, 174, 175, 176, - 194, 195, 196, 201, 7, 210, 7, 216, 7, 231, - 7, 329, 7, 406, 7, 422, 7, 439, 7, 358, - 7, 364, 7, 388, 7, 305, 7, 500, 7, 546, - 7, 538, 202, 197, 211, 217, 232, 330, 407, 423, - 440, 359, 365, 389, 306, 501, 547, 539, 194, 203, - 204, 173, 199, 200, 10, 146, 155, 156, 157, 173, - 209, 212, 213, 214, 530, 532, 534, 544, 11, 12, - 14, 17, 18, 19, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 68, 69, 75, 80, 81, 82, 83, - 84, 86, 91, 100, 103, 110, 118, 119, 122, 123, - 209, 218, 219, 220, 222, 223, 224, 225, 226, 227, - 229, 238, 240, 242, 279, 285, 291, 297, 299, 313, - 323, 343, 348, 356, 382, 412, 414, 433, 463, 475, - 487, 488, 496, 498, 536, 15, 16, 209, 233, 234, - 235, 237, 412, 414, 60, 62, 70, 71, 72, 73, - 74, 87, 90, 98, 209, 222, 223, 224, 225, 331, - 332, 333, 335, 337, 339, 341, 343, 346, 347, 382, - 400, 412, 414, 416, 433, 458, 61, 209, 339, 341, - 382, 408, 409, 410, 412, 414, 63, 64, 65, 66, - 67, 209, 339, 341, 382, 412, 414, 424, 425, 426, - 428, 429, 431, 432, 86, 92, 93, 94, 95, 96, - 97, 209, 382, 412, 414, 441, 442, 443, 444, 446, - 448, 450, 452, 454, 456, 356, 20, 51, 53, 54, - 57, 58, 59, 209, 260, 366, 367, 368, 369, 370, - 371, 372, 374, 376, 378, 379, 381, 412, 414, 52, - 55, 56, 209, 260, 370, 376, 390, 391, 392, 393, - 394, 396, 397, 398, 399, 412, 414, 101, 102, 209, - 307, 308, 309, 311, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 144, 145, 209, - 412, 414, 502, 503, 504, 505, 507, 509, 510, 512, - 513, 514, 517, 519, 520, 521, 524, 526, 528, 147, - 548, 549, 550, 13, 540, 541, 542, 6, 3, 4, - 8, 3, 215, 545, 531, 533, 535, 4, 3, 8, - 221, 537, 230, 239, 241, 243, 4, 4, 4, 4, - 4, 228, 324, 357, 383, 413, 415, 344, 349, 286, - 298, 292, 280, 464, 434, 300, 314, 476, 4, 489, - 497, 499, 3, 8, 236, 4, 3, 8, 401, 417, - 334, 336, 338, 4, 4, 342, 340, 459, 3, 8, - 411, 3, 8, 427, 4, 430, 4, 4, 3, 8, - 457, 445, 447, 449, 451, 453, 455, 8, 3, 8, - 373, 261, 4, 377, 375, 380, 4, 8, 3, 395, - 4, 4, 8, 3, 310, 312, 3, 8, 4, 506, - 508, 4, 511, 4, 4, 515, 518, 4, 4, 522, - 525, 527, 529, 3, 8, 551, 3, 8, 543, 3, - 8, 194, 194, 173, 4, 4, 4, 4, 4, 213, - 4, 4, 4, 4, 4, 4, 174, 174, 174, 174, - 174, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 174, 4, - 4, 4, 219, 4, 176, 234, 4, 4, 4, 4, - 4, 174, 176, 4, 4, 4, 332, 4, 409, 4, - 174, 4, 174, 174, 425, 4, 4, 4, 4, 4, - 4, 4, 443, 4, 4, 174, 4, 4, 4, 176, - 368, 4, 176, 176, 392, 4, 4, 308, 176, 4, - 4, 174, 4, 174, 174, 4, 4, 176, 176, 4, - 4, 4, 4, 503, 4, 549, 4, 541, 4, 7, - 7, 194, 194, 194, 173, 7, 7, 7, 7, 5, - 173, 5, 5, 5, 196, 198, 173, 76, 77, 78, - 79, 345, 5, 5, 5, 5, 7, 5, 5, 5, - 7, 7, 7, 198, 7, 5, 205, 5, 5, 173, - 173, 173, 205, 173, 7, 173, 173, 173, 205, 205, - 205, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 194, 173, 173, 173, 137, 138, 516, 139, - 140, 141, 142, 143, 176, 523, 173, 173, 173, 5, - 5, 194, 218, 548, 540, 233, 20, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 209, 248, 249, 250, 253, 255, - 257, 259, 260, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 272, 273, 275, 277, 248, 7, 244, 245, - 246, 7, 325, 326, 327, 7, 360, 361, 362, 7, - 384, 385, 386, 7, 350, 351, 352, 94, 173, 287, - 288, 289, 290, 203, 95, 97, 289, 293, 294, 295, - 296, 85, 281, 282, 283, 7, 465, 466, 7, 435, - 436, 437, 7, 301, 302, 303, 104, 105, 106, 107, - 108, 109, 315, 316, 317, 318, 319, 320, 321, 322, - 20, 114, 115, 116, 117, 209, 262, 412, 414, 477, - 478, 479, 482, 483, 485, 486, 120, 121, 209, 412, - 414, 490, 491, 492, 494, 502, 206, 7, 402, 403, - 404, 7, 418, 419, 420, 99, 444, 460, 461, 7, - 552, 553, 244, 8, 8, 8, 8, 251, 254, 256, - 258, 4, 4, 4, 4, 4, 271, 4, 4, 274, - 276, 278, 4, 4, 4, 3, 8, 8, 247, 6, - 3, 328, 6, 3, 363, 6, 3, 387, 6, 3, - 353, 6, 3, 3, 6, 6, 3, 6, 284, 3, - 8, 467, 3, 6, 438, 6, 3, 304, 6, 3, - 4, 4, 4, 4, 4, 4, 3, 8, 480, 484, - 4, 4, 4, 3, 8, 493, 495, 3, 8, 8, - 173, 207, 208, 405, 6, 3, 421, 6, 3, 462, - 8, 554, 3, 6, 6, 4, 4, 4, 4, 174, - 176, 174, 176, 174, 4, 174, 174, 4, 4, 4, - 174, 174, 176, 249, 248, 246, 331, 327, 366, 362, - 390, 386, 209, 222, 223, 224, 225, 260, 323, 335, - 337, 339, 341, 343, 347, 354, 355, 382, 412, 414, - 458, 352, 288, 294, 4, 282, 88, 89, 209, 260, - 382, 412, 414, 468, 469, 470, 471, 472, 474, 466, - 441, 437, 307, 303, 174, 174, 174, 174, 174, 174, - 316, 4, 4, 174, 174, 174, 478, 4, 4, 491, - 6, 3, 408, 404, 424, 420, 4, 148, 150, 151, - 209, 260, 412, 414, 555, 556, 557, 558, 560, 553, - 21, 22, 23, 24, 252, 173, 173, 173, 173, 173, - 173, 173, 8, 8, 8, 8, 3, 8, 173, 473, - 4, 8, 3, 8, 8, 111, 112, 113, 481, 173, - 173, 173, 173, 8, 8, 173, 561, 4, 559, 3, - 8, 355, 4, 176, 470, 4, 174, 4, 556, 173, - 5, 173, 7, 562, 563, 564, 3, 6, 149, 152, - 153, 154, 565, 566, 567, 569, 570, 571, 563, 568, - 4, 4, 4, 3, 8, 4, 176, 174, 174, 566, - 173 + 0, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 0, 5, 7, 9, 174, 175, 176, 177, + 195, 196, 197, 202, 7, 211, 7, 217, 7, 232, + 7, 330, 7, 407, 7, 423, 7, 440, 7, 359, + 7, 365, 7, 389, 7, 306, 7, 501, 7, 548, + 7, 539, 203, 198, 212, 218, 233, 331, 408, 424, + 441, 360, 366, 390, 307, 502, 549, 540, 195, 204, + 205, 174, 200, 201, 10, 147, 156, 157, 158, 174, + 210, 213, 214, 215, 531, 533, 535, 546, 11, 12, + 15, 18, 19, 20, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 69, 70, 76, 81, 82, 83, 84, + 85, 87, 92, 101, 104, 111, 119, 120, 123, 124, + 210, 219, 220, 221, 223, 224, 225, 226, 227, 228, + 230, 239, 241, 243, 280, 286, 292, 298, 300, 314, + 324, 344, 349, 357, 383, 413, 415, 434, 464, 476, + 488, 489, 497, 499, 537, 16, 17, 210, 234, 235, + 236, 238, 413, 415, 61, 63, 71, 72, 73, 74, + 75, 88, 91, 99, 210, 223, 224, 225, 226, 332, + 333, 334, 336, 338, 340, 342, 344, 347, 348, 383, + 401, 413, 415, 417, 434, 459, 62, 210, 340, 342, + 383, 409, 410, 411, 413, 415, 64, 65, 66, 67, + 68, 210, 340, 342, 383, 413, 415, 425, 426, 427, + 429, 430, 432, 433, 87, 93, 94, 95, 96, 97, + 98, 210, 383, 413, 415, 442, 443, 444, 445, 447, + 449, 451, 453, 455, 457, 357, 21, 52, 54, 55, + 58, 59, 60, 210, 261, 367, 368, 369, 370, 371, + 372, 373, 375, 377, 379, 380, 382, 413, 415, 53, + 56, 57, 210, 261, 371, 377, 391, 392, 393, 394, + 395, 397, 398, 399, 400, 413, 415, 102, 103, 210, + 308, 309, 310, 312, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 145, 146, 210, + 413, 415, 503, 504, 505, 506, 508, 510, 511, 513, + 514, 515, 518, 520, 521, 522, 525, 527, 529, 148, + 550, 551, 552, 13, 14, 541, 542, 543, 545, 6, + 3, 4, 8, 3, 216, 547, 532, 534, 536, 4, + 3, 8, 222, 538, 231, 240, 242, 244, 4, 4, + 4, 4, 4, 229, 325, 358, 384, 414, 416, 345, + 350, 287, 299, 293, 281, 465, 435, 301, 315, 477, + 4, 490, 498, 500, 3, 8, 237, 4, 3, 8, + 402, 418, 335, 337, 339, 4, 4, 343, 341, 460, + 3, 8, 412, 3, 8, 428, 4, 431, 4, 4, + 3, 8, 458, 446, 448, 450, 452, 454, 456, 8, + 3, 8, 374, 262, 4, 378, 376, 381, 4, 8, + 3, 396, 4, 4, 8, 3, 311, 313, 3, 8, + 4, 507, 509, 4, 512, 4, 4, 516, 519, 4, + 4, 523, 526, 528, 530, 3, 8, 553, 3, 8, + 544, 4, 3, 8, 195, 195, 174, 4, 4, 4, + 4, 4, 214, 4, 4, 4, 4, 4, 4, 175, + 175, 175, 175, 175, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 175, 4, 4, 4, 220, 4, 177, 235, 4, + 4, 4, 4, 4, 175, 177, 4, 4, 4, 333, + 4, 410, 4, 175, 4, 175, 175, 426, 4, 4, + 4, 4, 4, 4, 4, 444, 4, 4, 175, 4, + 4, 4, 177, 369, 4, 177, 177, 393, 4, 4, + 309, 177, 4, 4, 175, 4, 175, 175, 4, 4, + 177, 177, 4, 4, 4, 4, 504, 4, 551, 4, + 175, 542, 4, 7, 7, 195, 195, 195, 174, 7, + 7, 7, 7, 5, 174, 5, 5, 5, 197, 199, + 174, 77, 78, 79, 80, 346, 5, 5, 5, 5, + 7, 5, 5, 5, 7, 7, 7, 199, 7, 5, + 206, 5, 5, 174, 174, 174, 206, 174, 7, 174, + 174, 174, 206, 206, 206, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 195, 174, 174, 174, + 138, 139, 517, 140, 141, 142, 143, 144, 177, 524, + 174, 174, 174, 5, 5, 195, 219, 550, 541, 234, + 21, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 210, 249, + 250, 251, 254, 256, 258, 260, 261, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 273, 274, 276, 278, + 249, 7, 245, 246, 247, 7, 326, 327, 328, 7, + 361, 362, 363, 7, 385, 386, 387, 7, 351, 352, + 353, 95, 174, 288, 289, 290, 291, 204, 96, 98, + 290, 294, 295, 296, 297, 86, 282, 283, 284, 7, + 466, 467, 7, 436, 437, 438, 7, 302, 303, 304, + 105, 106, 107, 108, 109, 110, 316, 317, 318, 319, + 320, 321, 322, 323, 21, 115, 116, 117, 118, 210, + 263, 413, 415, 478, 479, 480, 483, 484, 486, 487, + 121, 122, 210, 413, 415, 491, 492, 493, 495, 503, + 207, 7, 403, 404, 405, 7, 419, 420, 421, 100, + 445, 461, 462, 7, 554, 555, 245, 8, 8, 8, + 8, 252, 255, 257, 259, 4, 4, 4, 4, 4, + 272, 4, 4, 275, 277, 279, 4, 4, 4, 3, + 8, 8, 248, 6, 3, 329, 6, 3, 364, 6, + 3, 388, 6, 3, 354, 6, 3, 3, 6, 6, + 3, 6, 285, 3, 8, 468, 3, 6, 439, 6, + 3, 305, 6, 3, 4, 4, 4, 4, 4, 4, + 3, 8, 481, 485, 4, 4, 4, 3, 8, 494, + 496, 3, 8, 8, 174, 208, 209, 406, 6, 3, + 422, 6, 3, 463, 8, 556, 3, 6, 6, 4, + 4, 4, 4, 175, 177, 175, 177, 175, 4, 175, + 175, 4, 4, 4, 175, 175, 177, 250, 249, 247, + 332, 328, 367, 363, 391, 387, 210, 223, 224, 225, + 226, 261, 324, 336, 338, 340, 342, 344, 348, 355, + 356, 383, 413, 415, 459, 353, 289, 295, 4, 283, + 89, 90, 210, 261, 383, 413, 415, 469, 470, 471, + 472, 473, 475, 467, 442, 438, 308, 304, 175, 175, + 175, 175, 175, 175, 317, 4, 4, 175, 175, 175, + 479, 4, 4, 492, 6, 3, 409, 405, 425, 421, + 4, 149, 151, 152, 210, 261, 413, 415, 557, 558, + 559, 560, 562, 555, 22, 23, 24, 25, 253, 174, + 174, 174, 174, 174, 174, 174, 8, 8, 8, 8, + 3, 8, 174, 474, 4, 8, 3, 8, 8, 112, + 113, 114, 482, 174, 174, 174, 174, 8, 8, 174, + 563, 4, 561, 3, 8, 356, 4, 177, 471, 4, + 175, 4, 558, 174, 5, 174, 7, 564, 565, 566, + 3, 6, 150, 153, 154, 155, 567, 568, 569, 571, + 572, 573, 565, 570, 4, 4, 4, 3, 8, 4, + 177, 175, 175, 568, 174 }; const unsigned short Dhcp6Parser::yyr1_[] = { - 0, 177, 179, 178, 180, 178, 181, 178, 182, 178, - 183, 178, 184, 178, 185, 178, 186, 178, 187, 178, - 188, 178, 189, 178, 190, 178, 191, 178, 192, 178, - 193, 178, 194, 194, 194, 194, 194, 194, 194, 195, - 197, 196, 198, 199, 199, 200, 200, 202, 201, 203, - 203, 204, 204, 206, 205, 207, 207, 208, 208, 209, - 211, 210, 212, 212, 213, 213, 213, 213, 213, 213, - 215, 214, 217, 216, 218, 218, 219, 219, 219, 219, - 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, - 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, - 219, 219, 219, 219, 219, 219, 219, 219, 219, 221, - 220, 222, 223, 224, 225, 226, 228, 227, 230, 229, - 232, 231, 233, 233, 234, 234, 234, 234, 234, 236, - 235, 237, 239, 238, 241, 240, 243, 242, 244, 244, - 245, 245, 247, 246, 248, 248, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 251, 250, 252, 252, - 252, 252, 254, 253, 256, 255, 258, 257, 259, 261, - 260, 262, 263, 264, 265, 266, 267, 268, 269, 271, - 270, 272, 274, 273, 276, 275, 278, 277, 280, 279, - 281, 281, 282, 284, 283, 286, 285, 287, 287, 288, - 288, 289, 290, 292, 291, 293, 293, 294, 294, 294, - 295, 296, 298, 297, 300, 299, 301, 301, 302, 302, - 304, 303, 306, 305, 307, 307, 307, 308, 308, 310, - 309, 312, 311, 314, 313, 315, 315, 316, 316, 316, - 316, 316, 316, 317, 318, 319, 320, 321, 322, 324, - 323, 325, 325, 326, 326, 328, 327, 330, 329, 331, - 331, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 334, 333, 336, 335, 338, 337, 340, 339, 342, - 341, 344, 343, 345, 345, 345, 345, 346, 347, 349, - 348, 350, 350, 351, 351, 353, 352, 354, 354, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 357, 356, 359, 358, - 360, 360, 361, 361, 363, 362, 365, 364, 366, 366, - 367, 367, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 369, 370, 371, 373, 372, 375, 374, 377, - 376, 378, 380, 379, 381, 383, 382, 384, 384, 385, - 385, 387, 386, 389, 388, 390, 390, 391, 391, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 393, 395, - 394, 396, 397, 398, 399, 401, 400, 402, 402, 403, - 403, 405, 404, 407, 406, 408, 408, 409, 409, 409, - 409, 409, 409, 409, 411, 410, 413, 412, 415, 414, - 417, 416, 418, 418, 419, 419, 421, 420, 423, 422, - 424, 424, 425, 425, 425, 425, 425, 425, 425, 425, - 425, 425, 425, 427, 426, 428, 430, 429, 431, 432, - 434, 433, 435, 435, 436, 436, 438, 437, 440, 439, - 441, 441, 442, 442, 443, 443, 443, 443, 443, 443, - 443, 443, 443, 443, 443, 445, 444, 447, 446, 449, - 448, 451, 450, 453, 452, 455, 454, 457, 456, 459, - 458, 460, 460, 462, 461, 464, 463, 465, 465, 467, - 466, 468, 468, 469, 469, 470, 470, 470, 470, 470, - 470, 470, 471, 473, 472, 474, 476, 475, 477, 477, - 478, 478, 478, 478, 478, 478, 478, 478, 478, 480, - 479, 481, 481, 481, 482, 484, 483, 485, 486, 487, - 489, 488, 490, 490, 491, 491, 491, 491, 491, 493, - 492, 495, 494, 497, 496, 499, 498, 501, 500, 502, - 502, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 504, - 506, 505, 508, 507, 509, 511, 510, 512, 513, 515, - 514, 516, 516, 518, 517, 519, 520, 522, 521, 523, - 523, 523, 523, 523, 525, 524, 527, 526, 529, 528, - 531, 530, 533, 532, 535, 534, 537, 536, 539, 538, - 540, 540, 541, 543, 542, 545, 544, 547, 546, 548, - 548, 549, 551, 550, 552, 552, 554, 553, 555, 555, - 556, 556, 556, 556, 556, 556, 556, 557, 559, 558, - 561, 560, 562, 562, 564, 563, 565, 565, 566, 566, - 566, 566, 568, 567, 569, 570, 571 + 0, 178, 180, 179, 181, 179, 182, 179, 183, 179, + 184, 179, 185, 179, 186, 179, 187, 179, 188, 179, + 189, 179, 190, 179, 191, 179, 192, 179, 193, 179, + 194, 179, 195, 195, 195, 195, 195, 195, 195, 196, + 198, 197, 199, 200, 200, 201, 201, 203, 202, 204, + 204, 205, 205, 207, 206, 208, 208, 209, 209, 210, + 212, 211, 213, 213, 214, 214, 214, 214, 214, 214, + 216, 215, 218, 217, 219, 219, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 222, + 221, 223, 224, 225, 226, 227, 229, 228, 231, 230, + 233, 232, 234, 234, 235, 235, 235, 235, 235, 237, + 236, 238, 240, 239, 242, 241, 244, 243, 245, 245, + 246, 246, 248, 247, 249, 249, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 252, 251, 253, 253, + 253, 253, 255, 254, 257, 256, 259, 258, 260, 262, + 261, 263, 264, 265, 266, 267, 268, 269, 270, 272, + 271, 273, 275, 274, 277, 276, 279, 278, 281, 280, + 282, 282, 283, 285, 284, 287, 286, 288, 288, 289, + 289, 290, 291, 293, 292, 294, 294, 295, 295, 295, + 296, 297, 299, 298, 301, 300, 302, 302, 303, 303, + 305, 304, 307, 306, 308, 308, 308, 309, 309, 311, + 310, 313, 312, 315, 314, 316, 316, 317, 317, 317, + 317, 317, 317, 318, 319, 320, 321, 322, 323, 325, + 324, 326, 326, 327, 327, 329, 328, 331, 330, 332, + 332, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 335, 334, 337, 336, 339, 338, 341, 340, 343, + 342, 345, 344, 346, 346, 346, 346, 347, 348, 350, + 349, 351, 351, 352, 352, 354, 353, 355, 355, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 358, 357, 360, 359, + 361, 361, 362, 362, 364, 363, 366, 365, 367, 367, + 368, 368, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 370, 371, 372, 374, 373, 376, 375, 378, + 377, 379, 381, 380, 382, 384, 383, 385, 385, 386, + 386, 388, 387, 390, 389, 391, 391, 392, 392, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 394, 396, + 395, 397, 398, 399, 400, 402, 401, 403, 403, 404, + 404, 406, 405, 408, 407, 409, 409, 410, 410, 410, + 410, 410, 410, 410, 412, 411, 414, 413, 416, 415, + 418, 417, 419, 419, 420, 420, 422, 421, 424, 423, + 425, 425, 426, 426, 426, 426, 426, 426, 426, 426, + 426, 426, 426, 428, 427, 429, 431, 430, 432, 433, + 435, 434, 436, 436, 437, 437, 439, 438, 441, 440, + 442, 442, 443, 443, 444, 444, 444, 444, 444, 444, + 444, 444, 444, 444, 444, 446, 445, 448, 447, 450, + 449, 452, 451, 454, 453, 456, 455, 458, 457, 460, + 459, 461, 461, 463, 462, 465, 464, 466, 466, 468, + 467, 469, 469, 470, 470, 471, 471, 471, 471, 471, + 471, 471, 472, 474, 473, 475, 477, 476, 478, 478, + 479, 479, 479, 479, 479, 479, 479, 479, 479, 481, + 480, 482, 482, 482, 483, 485, 484, 486, 487, 488, + 490, 489, 491, 491, 492, 492, 492, 492, 492, 494, + 493, 496, 495, 498, 497, 500, 499, 502, 501, 503, + 503, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 505, + 507, 506, 509, 508, 510, 512, 511, 513, 514, 516, + 515, 517, 517, 519, 518, 520, 521, 523, 522, 524, + 524, 524, 524, 524, 526, 525, 528, 527, 530, 529, + 532, 531, 534, 533, 536, 535, 538, 537, 540, 539, + 541, 541, 542, 542, 544, 543, 545, 547, 546, 549, + 548, 550, 550, 551, 553, 552, 554, 554, 556, 555, + 557, 557, 558, 558, 558, 558, 558, 558, 558, 559, + 561, 560, 563, 562, 564, 564, 566, 565, 567, 567, + 568, 568, 568, 568, 570, 569, 571, 572, 573 }; const unsigned char @@ -4872,11 +4866,11 @@ namespace isc { namespace dhcp { 4, 1, 1, 0, 4, 3, 3, 0, 4, 1, 1, 1, 1, 1, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 6, 0, 4, - 1, 3, 1, 0, 6, 0, 6, 0, 4, 1, - 3, 1, 0, 6, 1, 3, 0, 4, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 3, 0, 4, - 0, 6, 1, 3, 0, 4, 1, 3, 1, 1, - 1, 1, 0, 4, 3, 3, 3 + 1, 3, 1, 1, 0, 6, 3, 0, 6, 0, + 4, 1, 3, 1, 0, 6, 1, 3, 0, 4, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, + 0, 4, 0, 6, 1, 3, 0, 4, 1, 3, + 1, 1, 1, 1, 0, 4, 3, 3, 3 }; @@ -4888,26 +4882,26 @@ namespace isc { namespace dhcp { { "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"", "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"", "\"data-directory\"", - "\"config-control\"", "\"config-databases\"", "\"interfaces-config\"", - "\"interfaces\"", "\"re-detect\"", "\"lease-database\"", - "\"hosts-database\"", "\"hosts-databases\"", "\"type\"", "\"memfile\"", - "\"mysql\"", "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"", - "\"host\"", "\"port\"", "\"persist\"", "\"lfc-interval\"", - "\"readonly\"", "\"connect-timeout\"", "\"contact-points\"", - "\"max-reconnect-tries\"", "\"reconnect-wait-time\"", "\"keyspace\"", - "\"consistency\"", "\"serial-consistency\"", "\"request-timeout\"", - "\"tcp-keepalive\"", "\"tcp-nodelay\"", "\"preferred-lifetime\"", - "\"valid-lifetime\"", "\"renew-timer\"", "\"rebind-timer\"", - "\"decline-probation-period\"", "\"server-tag\"", "\"subnet6\"", - "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", - "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"", - "\"encapsulate\"", "\"array\"", "\"pools\"", "\"pool\"", "\"pd-pools\"", - "\"prefix\"", "\"prefix-len\"", "\"excluded-prefix\"", - "\"excluded-prefix-len\"", "\"delegated-len\"", "\"user-context\"", - "\"comment\"", "\"subnet\"", "\"interface\"", "\"interface-id\"", - "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"", "\"disabled\"", - "\"out-of-pool\"", "\"global\"", "\"all\"", "\"shared-networks\"", - "\"mac-sources\"", "\"relay-supplied-options\"", + "\"config-control\"", "\"config-databases\"", + "\"config-fetch-wait-time\"", "\"interfaces-config\"", "\"interfaces\"", + "\"re-detect\"", "\"lease-database\"", "\"hosts-database\"", + "\"hosts-databases\"", "\"type\"", "\"memfile\"", "\"mysql\"", + "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"", "\"host\"", + "\"port\"", "\"persist\"", "\"lfc-interval\"", "\"readonly\"", + "\"connect-timeout\"", "\"contact-points\"", "\"max-reconnect-tries\"", + "\"reconnect-wait-time\"", "\"keyspace\"", "\"consistency\"", + "\"serial-consistency\"", "\"request-timeout\"", "\"tcp-keepalive\"", + "\"tcp-nodelay\"", "\"preferred-lifetime\"", "\"valid-lifetime\"", + "\"renew-timer\"", "\"rebind-timer\"", "\"decline-probation-period\"", + "\"server-tag\"", "\"subnet6\"", "\"option-def\"", "\"option-data\"", + "\"name\"", "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"", + "\"always-send\"", "\"record-types\"", "\"encapsulate\"", "\"array\"", + "\"pools\"", "\"pool\"", "\"pd-pools\"", "\"prefix\"", "\"prefix-len\"", + "\"excluded-prefix\"", "\"excluded-prefix-len\"", "\"delegated-len\"", + "\"user-context\"", "\"comment\"", "\"subnet\"", "\"interface\"", + "\"interface-id\"", "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"", + "\"disabled\"", "\"out-of-pool\"", "\"global\"", "\"all\"", + "\"shared-networks\"", "\"mac-sources\"", "\"relay-supplied-options\"", "\"host-reservation-identifiers\"", "\"sanity-checks\"", "\"lease-checks\"", "\"client-classes\"", "\"require-client-classes\"", "\"test\"", "\"only-if-required\"", "\"client-class\"", @@ -5021,87 +5015,88 @@ namespace isc { namespace dhcp { "dhcp4_json_object", "$@118", "dhcpddns_json_object", "$@119", "control_agent_json_object", "$@120", "config_control", "$@121", "sub_config_control", "$@122", "config_control_params", - "config_control_param", "config_databases", "$@123", "logging_object", - "$@124", "sub_logging", "$@125", "logging_params", "logging_param", - "loggers", "$@126", "loggers_entries", "logger_entry", "$@127", - "logger_params", "logger_param", "debuglevel", "severity", "$@128", - "output_options_list", "$@129", "output_options_list_content", - "output_entry", "$@130", "output_params_list", "output_params", "output", - "$@131", "flush", "maxsize", "maxver", YY_NULLPTR + "config_control_param", "config_databases", "$@123", + "config_fetch_wait_time", "logging_object", "$@124", "sub_logging", + "$@125", "logging_params", "logging_param", "loggers", "$@126", + "loggers_entries", "logger_entry", "$@127", "logger_params", + "logger_param", "debuglevel", "severity", "$@128", "output_options_list", + "$@129", "output_options_list_content", "output_entry", "$@130", + "output_params_list", "output_params", "output", "$@131", "flush", + "maxsize", "maxver", YY_NULLPTR }; #if PARSER6_DEBUG const unsigned short Dhcp6Parser::yyrline_[] = { - 0, 260, 260, 260, 261, 261, 262, 262, 263, 263, - 264, 264, 265, 265, 266, 266, 267, 267, 268, 268, - 269, 269, 270, 270, 271, 271, 272, 272, 273, 273, - 274, 274, 282, 283, 284, 285, 286, 287, 288, 291, - 296, 296, 307, 310, 311, 314, 318, 325, 325, 332, - 333, 336, 340, 347, 347, 354, 355, 358, 362, 373, - 383, 383, 398, 399, 403, 404, 405, 406, 407, 408, - 411, 411, 426, 426, 435, 436, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 476, - 476, 484, 489, 494, 499, 504, 509, 509, 517, 517, - 528, 528, 537, 538, 541, 542, 543, 544, 545, 548, - 548, 558, 564, 564, 576, 576, 588, 588, 598, 599, - 602, 603, 606, 606, 616, 617, 620, 621, 622, 623, - 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 639, 642, 642, 649, 650, - 651, 652, 655, 655, 663, 663, 671, 671, 679, 684, - 684, 692, 697, 702, 707, 712, 717, 722, 727, 732, - 732, 740, 745, 745, 753, 753, 761, 761, 769, 769, - 779, 780, 782, 784, 784, 802, 802, 812, 813, 816, - 817, 820, 825, 830, 830, 840, 841, 844, 845, 846, - 849, 854, 861, 861, 871, 871, 881, 882, 885, 886, - 889, 889, 899, 899, 909, 910, 911, 914, 915, 918, - 918, 926, 926, 934, 934, 945, 946, 949, 950, 951, - 952, 953, 954, 957, 962, 967, 972, 977, 982, 990, - 990, 1003, 1004, 1007, 1008, 1015, 1015, 1041, 1041, 1052, - 1053, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, - 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, - 1076, 1079, 1079, 1087, 1087, 1095, 1095, 1103, 1103, 1111, - 1111, 1121, 1121, 1128, 1129, 1130, 1131, 1134, 1139, 1147, - 1147, 1158, 1159, 1163, 1164, 1167, 1167, 1175, 1176, 1179, - 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, - 1190, 1191, 1192, 1193, 1194, 1195, 1202, 1202, 1215, 1215, - 1224, 1225, 1228, 1229, 1234, 1234, 1249, 1249, 1263, 1264, - 1267, 1268, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, - 1279, 1280, 1283, 1285, 1290, 1292, 1292, 1300, 1300, 1308, - 1308, 1316, 1318, 1318, 1326, 1335, 1335, 1347, 1348, 1353, - 1354, 1359, 1359, 1371, 1371, 1383, 1384, 1389, 1390, 1395, - 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1406, 1408, - 1408, 1416, 1418, 1420, 1425, 1433, 1433, 1445, 1446, 1449, - 1450, 1453, 1453, 1463, 1463, 1472, 1473, 1476, 1477, 1478, - 1479, 1480, 1481, 1482, 1485, 1485, 1493, 1493, 1518, 1518, - 1548, 1548, 1560, 1561, 1564, 1565, 1568, 1568, 1580, 1580, - 1592, 1593, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, - 1604, 1605, 1606, 1609, 1609, 1617, 1622, 1622, 1630, 1635, - 1643, 1643, 1653, 1654, 1657, 1658, 1661, 1661, 1670, 1670, - 1679, 1680, 1683, 1684, 1688, 1689, 1690, 1691, 1692, 1693, - 1694, 1695, 1696, 1697, 1698, 1701, 1701, 1711, 1711, 1721, - 1721, 1729, 1729, 1737, 1737, 1745, 1745, 1753, 1753, 1766, - 1766, 1776, 1777, 1780, 1780, 1791, 1791, 1801, 1802, 1805, - 1805, 1815, 1816, 1819, 1820, 1823, 1824, 1825, 1826, 1827, - 1828, 1829, 1832, 1834, 1834, 1842, 1850, 1850, 1862, 1863, - 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1877, - 1877, 1884, 1885, 1886, 1889, 1894, 1894, 1902, 1907, 1914, - 1921, 1921, 1931, 1932, 1935, 1936, 1937, 1938, 1939, 1942, - 1942, 1950, 1950, 1960, 1960, 2000, 2000, 2012, 2012, 2022, - 2023, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, - 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2046, - 2051, 2051, 2059, 2059, 2067, 2072, 2072, 2080, 2085, 2090, - 2090, 2098, 2099, 2102, 2102, 2110, 2115, 2120, 2120, 2128, - 2131, 2134, 2137, 2140, 2146, 2146, 2154, 2154, 2162, 2162, - 2172, 2172, 2179, 2179, 2186, 2186, 2195, 2195, 2206, 2206, - 2216, 2217, 2221, 2224, 2224, 2239, 2239, 2249, 2249, 2260, - 2261, 2265, 2269, 2269, 2281, 2282, 2286, 2286, 2294, 2295, - 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2307, 2312, 2312, - 2320, 2320, 2330, 2331, 2334, 2334, 2342, 2343, 2346, 2347, - 2348, 2349, 2352, 2352, 2360, 2365, 2370 + 0, 262, 262, 262, 263, 263, 264, 264, 265, 265, + 266, 266, 267, 267, 268, 268, 269, 269, 270, 270, + 271, 271, 272, 272, 273, 273, 274, 274, 275, 275, + 276, 276, 284, 285, 286, 287, 288, 289, 290, 293, + 298, 298, 309, 312, 313, 316, 320, 327, 327, 334, + 335, 338, 342, 349, 349, 356, 357, 360, 364, 375, + 385, 385, 400, 401, 405, 406, 407, 408, 409, 410, + 413, 413, 428, 428, 437, 438, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 478, + 478, 486, 491, 496, 501, 506, 511, 511, 519, 519, + 530, 530, 539, 540, 543, 544, 545, 546, 547, 550, + 550, 560, 566, 566, 578, 578, 590, 590, 600, 601, + 604, 605, 608, 608, 618, 619, 622, 623, 624, 625, + 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 640, 641, 644, 644, 651, 652, + 653, 654, 657, 657, 665, 665, 673, 673, 681, 686, + 686, 694, 699, 704, 709, 714, 719, 724, 729, 734, + 734, 742, 747, 747, 755, 755, 763, 763, 771, 771, + 781, 782, 784, 786, 786, 804, 804, 814, 815, 818, + 819, 822, 827, 832, 832, 842, 843, 846, 847, 848, + 851, 856, 863, 863, 873, 873, 883, 884, 887, 888, + 891, 891, 901, 901, 911, 912, 913, 916, 917, 920, + 920, 928, 928, 936, 936, 947, 948, 951, 952, 953, + 954, 955, 956, 959, 964, 969, 974, 979, 984, 992, + 992, 1005, 1006, 1009, 1010, 1017, 1017, 1043, 1043, 1054, + 1055, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, + 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, + 1078, 1081, 1081, 1089, 1089, 1097, 1097, 1105, 1105, 1113, + 1113, 1123, 1123, 1130, 1131, 1132, 1133, 1136, 1141, 1149, + 1149, 1160, 1161, 1165, 1166, 1169, 1169, 1177, 1178, 1181, + 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, + 1192, 1193, 1194, 1195, 1196, 1197, 1204, 1204, 1217, 1217, + 1226, 1227, 1230, 1231, 1236, 1236, 1251, 1251, 1265, 1266, + 1269, 1270, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, + 1281, 1282, 1285, 1287, 1292, 1294, 1294, 1302, 1302, 1310, + 1310, 1318, 1320, 1320, 1328, 1337, 1337, 1349, 1350, 1355, + 1356, 1361, 1361, 1373, 1373, 1385, 1386, 1391, 1392, 1397, + 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1408, 1410, + 1410, 1418, 1420, 1422, 1427, 1435, 1435, 1447, 1448, 1451, + 1452, 1455, 1455, 1465, 1465, 1474, 1475, 1478, 1479, 1480, + 1481, 1482, 1483, 1484, 1487, 1487, 1495, 1495, 1520, 1520, + 1550, 1550, 1562, 1563, 1566, 1567, 1570, 1570, 1582, 1582, + 1594, 1595, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, + 1606, 1607, 1608, 1611, 1611, 1619, 1624, 1624, 1632, 1637, + 1645, 1645, 1655, 1656, 1659, 1660, 1663, 1663, 1672, 1672, + 1681, 1682, 1685, 1686, 1690, 1691, 1692, 1693, 1694, 1695, + 1696, 1697, 1698, 1699, 1700, 1703, 1703, 1713, 1713, 1723, + 1723, 1731, 1731, 1739, 1739, 1747, 1747, 1755, 1755, 1768, + 1768, 1778, 1779, 1782, 1782, 1793, 1793, 1803, 1804, 1807, + 1807, 1817, 1818, 1821, 1822, 1825, 1826, 1827, 1828, 1829, + 1830, 1831, 1834, 1836, 1836, 1844, 1852, 1852, 1864, 1865, + 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1879, + 1879, 1886, 1887, 1888, 1891, 1896, 1896, 1904, 1909, 1916, + 1923, 1923, 1933, 1934, 1937, 1938, 1939, 1940, 1941, 1944, + 1944, 1952, 1952, 1962, 1962, 2002, 2002, 2014, 2014, 2024, + 2025, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, + 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2048, + 2053, 2053, 2061, 2061, 2069, 2074, 2074, 2082, 2087, 2092, + 2092, 2100, 2101, 2104, 2104, 2112, 2117, 2122, 2122, 2130, + 2133, 2136, 2139, 2142, 2148, 2148, 2156, 2156, 2164, 2164, + 2174, 2174, 2181, 2181, 2188, 2188, 2197, 2197, 2208, 2208, + 2218, 2219, 2223, 2224, 2227, 2227, 2237, 2247, 2247, 2257, + 2257, 2268, 2269, 2273, 2277, 2277, 2289, 2290, 2294, 2294, + 2302, 2303, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2315, + 2320, 2320, 2328, 2328, 2338, 2339, 2342, 2342, 2350, 2351, + 2354, 2355, 2356, 2357, 2360, 2360, 2368, 2373, 2378 }; // Print the state stack on the debug stream. @@ -5134,10 +5129,10 @@ namespace isc { namespace dhcp { #endif // PARSER6_DEBUG -#line 14 "dhcp6_parser.yy" // lalr1.cc:1242 +#line 14 "dhcp6_parser.yy" // lalr1.cc:1218 } } // isc::dhcp -#line 5140 "dhcp6_parser.cc" // lalr1.cc:1242 -#line 2375 "dhcp6_parser.yy" // lalr1.cc:1243 +#line 5135 "dhcp6_parser.cc" // lalr1.cc:1218 +#line 2383 "dhcp6_parser.yy" // lalr1.cc:1219 void diff --git a/src/bin/dhcp6/dhcp6_parser.h b/src/bin/dhcp6/dhcp6_parser.h index b6bf2fc1db..eff48a6015 100644 --- a/src/bin/dhcp6/dhcp6_parser.h +++ b/src/bin/dhcp6/dhcp6_parser.h @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.3.2. +// A Bison parser, made by GNU Bison 3.2.1. // Skeleton interface for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED # define YY_PARSER6_DHCP6_PARSER_H_INCLUDED // // "%code requires" blocks. -#line 17 "dhcp6_parser.yy" // lalr1.cc:401 +#line 17 "dhcp6_parser.yy" // lalr1.cc:404 #include #include @@ -56,7 +56,7 @@ using namespace isc::dhcp; using namespace isc::data; using namespace std; -#line 60 "dhcp6_parser.h" // lalr1.cc:401 +#line 60 "dhcp6_parser.h" // lalr1.cc:404 # include # include // std::abort @@ -65,14 +65,8 @@ using namespace std; # include # include -#if defined __cplusplus -# define YY_CPLUSPLUS __cplusplus -#else -# define YY_CPLUSPLUS 199711L -#endif - // Support move semantics when possible. -#if 201103L <= YY_CPLUSPLUS +#if defined __cplusplus && 201103L <= __cplusplus # define YY_MOVE std::move # define YY_MOVE_OR_COPY move # define YY_MOVE_REF(Type) Type&& @@ -85,22 +79,6 @@ using namespace std; # define YY_RVREF(Type) const Type& # define YY_COPY(Type) const Type& #endif - -// Support noexcept when possible. -#if 201103L <= YY_CPLUSPLUS -# define YY_NOEXCEPT noexcept -# define YY_NOTHROW -#else -# define YY_NOEXCEPT -# define YY_NOTHROW throw () -#endif - -// Support constexpr when possible. -#if 201703 <= YY_CPLUSPLUS -# define YY_CONSTEXPR constexpr -#else -# define YY_CONSTEXPR -#endif # include "location.hh" #include #ifndef YYASSERT @@ -178,79 +156,193 @@ using namespace std; # endif /* ! defined YYDEBUG */ #endif /* ! defined PARSER6_DEBUG */ -#line 14 "dhcp6_parser.yy" // lalr1.cc:401 +#line 14 "dhcp6_parser.yy" // lalr1.cc:404 namespace isc { namespace dhcp { -#line 184 "dhcp6_parser.h" // lalr1.cc:401 +#line 162 "dhcp6_parser.h" // lalr1.cc:404 - - - /// A Bison parser. - class Dhcp6Parser + /// A stack with random access from its top. + template > + class stack { public: -#ifndef PARSER6_STYPE - /// A buffer to store and retrieve objects. + // Hide our reversed order. + typedef typename S::reverse_iterator iterator; + typedef typename S::const_reverse_iterator const_iterator; + typedef typename S::size_type size_type; + + stack (size_type n = 200) + : seq_ (n) + {} + + /// Random access. + /// + /// Index 0 returns the topmost element. + T& + operator[] (size_type i) + { + return seq_[size () - 1 - i]; + } + + /// Random access. + /// + /// Index 0 returns the topmost element. + T& + operator[] (int i) + { + return operator[] (size_type (i)); + } + + /// Random access. + /// + /// Index 0 returns the topmost element. + const T& + operator[] (size_type i) const + { + return seq_[size () - 1 - i]; + } + + /// Random access. + /// + /// Index 0 returns the topmost element. + const T& + operator[] (int i) const + { + return operator[] (size_type (i)); + } + + /// Steal the contents of \a t. + /// + /// Close to move-semantics. + void + push (YY_MOVE_REF (T) t) + { + seq_.push_back (T ()); + operator[](0).move (t); + } + + void + pop (int n = 1) + { + for (; 0 < n; --n) + seq_.pop_back (); + } + + void + clear () + { + seq_.clear (); + } + + size_type + size () const + { + return seq_.size (); + } + + const_iterator + begin () const + { + return seq_.rbegin (); + } + + const_iterator + end () const + { + return seq_.rend (); + } + + private: + stack (const stack&); + stack& operator= (const stack&); + /// The wrapped container. + S seq_; + }; + + /// Present a slice of the top of a stack. + template > + class slice + { + public: + slice (const S& stack, int range) + : stack_ (stack) + , range_ (range) + {} + + const T& + operator[] (int i) const + { + return stack_[range_ - i]; + } + + private: + const S& stack_; + int range_; + }; + + + + /// A char[S] buffer to store and retrieve objects. /// /// Sort of a variant, but does not keep track of the nature /// of the stored data, since that knowledge is available - /// via the current parser state. - class semantic_type + /// via the current state. + template + struct variant { - public: /// Type of *this. - typedef semantic_type self_type; + typedef variant self_type; /// Empty construction. - semantic_type () YY_NOEXCEPT + variant () : yybuffer_ () , yytypeid_ (YY_NULLPTR) {} /// Construct and fill. template - semantic_type (YY_RVREF (T) t) + variant (YY_RVREF (T) t) : yytypeid_ (&typeid (T)) { - YYASSERT (sizeof (T) <= size); + YYASSERT (sizeof (T) <= S); new (yyas_ ()) T (YY_MOVE (t)); } /// Destruction, allowed only if empty. - ~semantic_type () YY_NOEXCEPT + ~variant () { YYASSERT (!yytypeid_); } -# if 201103L <= YY_CPLUSPLUS - /// Instantiate a \a T in here from \a t. - template - T& - emplace (U&&... u) - { - YYASSERT (!yytypeid_); - YYASSERT (sizeof (T) <= size); - yytypeid_ = & typeid (T); - return *new (yyas_ ()) T (std::forward (u)...); - } -# else /// Instantiate an empty \a T in here. template T& emplace () { YYASSERT (!yytypeid_); - YYASSERT (sizeof (T) <= size); + YYASSERT (sizeof (T) <= S); yytypeid_ = & typeid (T); return *new (yyas_ ()) T (); } +# if defined __cplusplus && 201103L <= __cplusplus + /// Instantiate a \a T in here from \a t. + template + T& + emplace (U&& u) + { + YYASSERT (!yytypeid_); + YYASSERT (sizeof (T) <= S); + yytypeid_ = & typeid (T); + return *new (yyas_ ()) T (std::forward (u)); + } +# else /// Instantiate a \a T in here from \a t. template T& emplace (const T& t) { YYASSERT (!yytypeid_); - YYASSERT (sizeof (T) <= size); + YYASSERT (sizeof (T) <= S); yytypeid_ = & typeid (T); return *new (yyas_ ()) T (t); } @@ -277,75 +369,75 @@ namespace isc { namespace dhcp { /// Accessor to a built \a T. template T& - as () YY_NOEXCEPT + as () { YYASSERT (yytypeid_); YYASSERT (*yytypeid_ == typeid (T)); - YYASSERT (sizeof (T) <= size); + YYASSERT (sizeof (T) <= S); return *yyas_ (); } /// Const accessor to a built \a T (for %printer). template const T& - as () const YY_NOEXCEPT + as () const { YYASSERT (yytypeid_); YYASSERT (*yytypeid_ == typeid (T)); - YYASSERT (sizeof (T) <= size); + YYASSERT (sizeof (T) <= S); return *yyas_ (); } - /// Swap the content with \a that, of same type. + /// Swap the content with \a other, of same type. /// /// Both variants must be built beforehand, because swapping the actual /// data requires reading it (with as()), and this is not possible on /// unconstructed variants: it would require some dynamic testing, which /// should not be the variant's responsibility. /// Swapping between built and (possibly) non-built is done with - /// self_type::move (). + /// variant::move (). template void - swap (self_type& that) YY_NOEXCEPT + swap (self_type& other) { YYASSERT (yytypeid_); - YYASSERT (*yytypeid_ == *that.yytypeid_); - std::swap (as (), that.as ()); + YYASSERT (*yytypeid_ == *other.yytypeid_); + std::swap (as (), other.as ()); } - /// Move the content of \a that to this. + /// Move the content of \a other to this. /// - /// Destroys \a that. + /// Destroys \a other. template void - move (self_type& that) + move (self_type& other) { -# if 201103L <= YY_CPLUSPLUS - emplace (std::move (that.as ())); +# if defined __cplusplus && 201103L <= __cplusplus + emplace (std::move (other.as ())); # else emplace (); - swap (that); + swap (other); # endif - that.destroy (); + other.destroy (); } -# if 201103L <= YY_CPLUSPLUS - /// Move the content of \a that to this. +# if defined __cplusplus && 201103L <= __cplusplus + /// Move the content of \a other to this. template void - move (self_type&& that) + move (self_type&& other) { - emplace (std::move (that.as ())); - that.destroy (); + emplace (std::move (other.as ())); + other.destroy (); } #endif - /// Copy the content of \a that to this. + /// Copy the content of \a other to this. template void - copy (const self_type& that) + copy (const self_type& other) { - emplace (that.as ()); + emplace (other.as ()); } /// Destroy the stored \a T. @@ -360,12 +452,12 @@ namespace isc { namespace dhcp { private: /// Prohibit blind copies. self_type& operator= (const self_type&); - semantic_type (const self_type&); + variant (const self_type&); /// Accessor to raw memory as \a T. template T* - yyas_ () YY_NOEXCEPT + yyas_ () { void *yyp = yybuffer_.yyraw; return static_cast (yyp); @@ -374,12 +466,30 @@ namespace isc { namespace dhcp { /// Const accessor to raw memory as \a T. template const T* - yyas_ () const YY_NOEXCEPT + yyas_ () const { const void *yyp = yybuffer_.yyraw; return static_cast (yyp); } + union + { + /// Strongest alignment constraints. + long double yyalign_me; + /// A buffer large enough to store any of the semantic values. + char yyraw[S]; + } yybuffer_; + + /// Whether the content is built: if defined, the name of the stored type. + const std::type_info *yytypeid_; + }; + + + /// A Bison parser. + class Dhcp6Parser + { + public: +#ifndef PARSER6_STYPE /// An auxiliary type to compute the largest semantic type. union union_type { @@ -403,24 +513,10 @@ namespace isc { namespace dhcp { // "constant string" char dummy5[sizeof (std::string)]; - }; - - /// The size of the largest semantic type. - enum { size = sizeof (union_type) }; - - /// A buffer to store semantic values. - union - { - /// Strongest alignment constraints. - long double yyalign_me; - /// A buffer large enough to store any of the semantic values. - char yyraw[size]; - } yybuffer_; - - /// Whether the content is built: if defined, the name of the stored type. - const std::type_info *yytypeid_; - }; +}; + /// Symbol semantic values. + typedef variant semantic_type; #else typedef PARSER6_STYPE semantic_type; #endif @@ -430,18 +526,7 @@ namespace isc { namespace dhcp { /// Syntax errors thrown from user actions. struct syntax_error : std::runtime_error { - syntax_error (const location_type& l, const std::string& m) - : std::runtime_error (m) - , location (l) - {} - - syntax_error (const syntax_error& s) - : std::runtime_error (s.what ()) - , location (s.location) - {} - - ~syntax_error () YY_NOEXCEPT YY_NOTHROW; - + syntax_error (const location_type& l, const std::string& m); location_type location; }; @@ -462,169 +547,170 @@ namespace isc { namespace dhcp { TOKEN_DATA_DIRECTORY = 266, TOKEN_CONFIG_CONTROL = 267, TOKEN_CONFIG_DATABASES = 268, - TOKEN_INTERFACES_CONFIG = 269, - TOKEN_INTERFACES = 270, - TOKEN_RE_DETECT = 271, - TOKEN_LEASE_DATABASE = 272, - TOKEN_HOSTS_DATABASE = 273, - TOKEN_HOSTS_DATABASES = 274, - TOKEN_TYPE = 275, - TOKEN_MEMFILE = 276, - TOKEN_MYSQL = 277, - TOKEN_POSTGRESQL = 278, - TOKEN_CQL = 279, - TOKEN_USER = 280, - TOKEN_PASSWORD = 281, - TOKEN_HOST = 282, - TOKEN_PORT = 283, - TOKEN_PERSIST = 284, - TOKEN_LFC_INTERVAL = 285, - TOKEN_READONLY = 286, - TOKEN_CONNECT_TIMEOUT = 287, - TOKEN_CONTACT_POINTS = 288, - TOKEN_MAX_RECONNECT_TRIES = 289, - TOKEN_RECONNECT_WAIT_TIME = 290, - TOKEN_KEYSPACE = 291, - TOKEN_CONSISTENCY = 292, - TOKEN_SERIAL_CONSISTENCY = 293, - TOKEN_REQUEST_TIMEOUT = 294, - TOKEN_TCP_KEEPALIVE = 295, - TOKEN_TCP_NODELAY = 296, - TOKEN_PREFERRED_LIFETIME = 297, - TOKEN_VALID_LIFETIME = 298, - TOKEN_RENEW_TIMER = 299, - TOKEN_REBIND_TIMER = 300, - TOKEN_DECLINE_PROBATION_PERIOD = 301, - TOKEN_SERVER_TAG = 302, - TOKEN_SUBNET6 = 303, - TOKEN_OPTION_DEF = 304, - TOKEN_OPTION_DATA = 305, - TOKEN_NAME = 306, - TOKEN_DATA = 307, - TOKEN_CODE = 308, - TOKEN_SPACE = 309, - TOKEN_CSV_FORMAT = 310, - TOKEN_ALWAYS_SEND = 311, - TOKEN_RECORD_TYPES = 312, - TOKEN_ENCAPSULATE = 313, - TOKEN_ARRAY = 314, - TOKEN_POOLS = 315, - TOKEN_POOL = 316, - TOKEN_PD_POOLS = 317, - TOKEN_PREFIX = 318, - TOKEN_PREFIX_LEN = 319, - TOKEN_EXCLUDED_PREFIX = 320, - TOKEN_EXCLUDED_PREFIX_LEN = 321, - TOKEN_DELEGATED_LEN = 322, - TOKEN_USER_CONTEXT = 323, - TOKEN_COMMENT = 324, - TOKEN_SUBNET = 325, - TOKEN_INTERFACE = 326, - TOKEN_INTERFACE_ID = 327, - TOKEN_ID = 328, - TOKEN_RAPID_COMMIT = 329, - TOKEN_RESERVATION_MODE = 330, - TOKEN_DISABLED = 331, - TOKEN_OUT_OF_POOL = 332, - TOKEN_GLOBAL = 333, - TOKEN_ALL = 334, - TOKEN_SHARED_NETWORKS = 335, - TOKEN_MAC_SOURCES = 336, - TOKEN_RELAY_SUPPLIED_OPTIONS = 337, - TOKEN_HOST_RESERVATION_IDENTIFIERS = 338, - TOKEN_SANITY_CHECKS = 339, - TOKEN_LEASE_CHECKS = 340, - TOKEN_CLIENT_CLASSES = 341, - TOKEN_REQUIRE_CLIENT_CLASSES = 342, - TOKEN_TEST = 343, - TOKEN_ONLY_IF_REQUIRED = 344, - TOKEN_CLIENT_CLASS = 345, - TOKEN_RESERVATIONS = 346, - TOKEN_IP_ADDRESSES = 347, - TOKEN_PREFIXES = 348, - TOKEN_DUID = 349, - TOKEN_HW_ADDRESS = 350, - TOKEN_HOSTNAME = 351, - TOKEN_FLEX_ID = 352, - TOKEN_RELAY = 353, - TOKEN_IP_ADDRESS = 354, - TOKEN_HOOKS_LIBRARIES = 355, - TOKEN_LIBRARY = 356, - TOKEN_PARAMETERS = 357, - TOKEN_EXPIRED_LEASES_PROCESSING = 358, - TOKEN_RECLAIM_TIMER_WAIT_TIME = 359, - TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 360, - TOKEN_HOLD_RECLAIMED_TIME = 361, - TOKEN_MAX_RECLAIM_LEASES = 362, - TOKEN_MAX_RECLAIM_TIME = 363, - TOKEN_UNWARNED_RECLAIM_CYCLES = 364, - TOKEN_SERVER_ID = 365, - TOKEN_LLT = 366, - TOKEN_EN = 367, - TOKEN_LL = 368, - TOKEN_IDENTIFIER = 369, - TOKEN_HTYPE = 370, - TOKEN_TIME = 371, - TOKEN_ENTERPRISE_ID = 372, - TOKEN_DHCP4O6_PORT = 373, - TOKEN_CONTROL_SOCKET = 374, - TOKEN_SOCKET_TYPE = 375, - TOKEN_SOCKET_NAME = 376, - TOKEN_DHCP_QUEUE_CONTROL = 377, - TOKEN_DHCP_DDNS = 378, - TOKEN_ENABLE_UPDATES = 379, - TOKEN_QUALIFYING_SUFFIX = 380, - TOKEN_SERVER_IP = 381, - TOKEN_SERVER_PORT = 382, - TOKEN_SENDER_IP = 383, - TOKEN_SENDER_PORT = 384, - TOKEN_MAX_QUEUE_SIZE = 385, - TOKEN_NCR_PROTOCOL = 386, - TOKEN_NCR_FORMAT = 387, - TOKEN_OVERRIDE_NO_UPDATE = 388, - TOKEN_OVERRIDE_CLIENT_UPDATE = 389, - TOKEN_REPLACE_CLIENT_NAME = 390, - TOKEN_GENERATED_PREFIX = 391, - TOKEN_UDP = 392, - TOKEN_TCP = 393, - TOKEN_JSON = 394, - TOKEN_WHEN_PRESENT = 395, - TOKEN_NEVER = 396, - TOKEN_ALWAYS = 397, - TOKEN_WHEN_NOT_PRESENT = 398, - TOKEN_HOSTNAME_CHAR_SET = 399, - TOKEN_HOSTNAME_CHAR_REPLACEMENT = 400, - TOKEN_LOGGING = 401, - TOKEN_LOGGERS = 402, - TOKEN_OUTPUT_OPTIONS = 403, - TOKEN_OUTPUT = 404, - TOKEN_DEBUGLEVEL = 405, - TOKEN_SEVERITY = 406, - TOKEN_FLUSH = 407, - TOKEN_MAXSIZE = 408, - TOKEN_MAXVER = 409, - TOKEN_DHCP4 = 410, - TOKEN_DHCPDDNS = 411, - TOKEN_CONTROL_AGENT = 412, - TOKEN_TOPLEVEL_JSON = 413, - TOKEN_TOPLEVEL_DHCP6 = 414, - TOKEN_SUB_DHCP6 = 415, - TOKEN_SUB_INTERFACES6 = 416, - TOKEN_SUB_SUBNET6 = 417, - TOKEN_SUB_POOL6 = 418, - TOKEN_SUB_PD_POOL = 419, - TOKEN_SUB_RESERVATION = 420, - TOKEN_SUB_OPTION_DEFS = 421, - TOKEN_SUB_OPTION_DEF = 422, - TOKEN_SUB_OPTION_DATA = 423, - TOKEN_SUB_HOOKS_LIBRARY = 424, - TOKEN_SUB_DHCP_DDNS = 425, - TOKEN_SUB_LOGGING = 426, - TOKEN_SUB_CONFIG_CONTROL = 427, - TOKEN_STRING = 428, - TOKEN_INTEGER = 429, - TOKEN_FLOAT = 430, - TOKEN_BOOLEAN = 431 + TOKEN_CONFIG_FETCH_WAIT_TIME = 269, + TOKEN_INTERFACES_CONFIG = 270, + TOKEN_INTERFACES = 271, + TOKEN_RE_DETECT = 272, + TOKEN_LEASE_DATABASE = 273, + TOKEN_HOSTS_DATABASE = 274, + TOKEN_HOSTS_DATABASES = 275, + TOKEN_TYPE = 276, + TOKEN_MEMFILE = 277, + TOKEN_MYSQL = 278, + TOKEN_POSTGRESQL = 279, + TOKEN_CQL = 280, + TOKEN_USER = 281, + TOKEN_PASSWORD = 282, + TOKEN_HOST = 283, + TOKEN_PORT = 284, + TOKEN_PERSIST = 285, + TOKEN_LFC_INTERVAL = 286, + TOKEN_READONLY = 287, + TOKEN_CONNECT_TIMEOUT = 288, + TOKEN_CONTACT_POINTS = 289, + TOKEN_MAX_RECONNECT_TRIES = 290, + TOKEN_RECONNECT_WAIT_TIME = 291, + TOKEN_KEYSPACE = 292, + TOKEN_CONSISTENCY = 293, + TOKEN_SERIAL_CONSISTENCY = 294, + TOKEN_REQUEST_TIMEOUT = 295, + TOKEN_TCP_KEEPALIVE = 296, + TOKEN_TCP_NODELAY = 297, + TOKEN_PREFERRED_LIFETIME = 298, + TOKEN_VALID_LIFETIME = 299, + TOKEN_RENEW_TIMER = 300, + TOKEN_REBIND_TIMER = 301, + TOKEN_DECLINE_PROBATION_PERIOD = 302, + TOKEN_SERVER_TAG = 303, + TOKEN_SUBNET6 = 304, + TOKEN_OPTION_DEF = 305, + TOKEN_OPTION_DATA = 306, + TOKEN_NAME = 307, + TOKEN_DATA = 308, + TOKEN_CODE = 309, + TOKEN_SPACE = 310, + TOKEN_CSV_FORMAT = 311, + TOKEN_ALWAYS_SEND = 312, + TOKEN_RECORD_TYPES = 313, + TOKEN_ENCAPSULATE = 314, + TOKEN_ARRAY = 315, + TOKEN_POOLS = 316, + TOKEN_POOL = 317, + TOKEN_PD_POOLS = 318, + TOKEN_PREFIX = 319, + TOKEN_PREFIX_LEN = 320, + TOKEN_EXCLUDED_PREFIX = 321, + TOKEN_EXCLUDED_PREFIX_LEN = 322, + TOKEN_DELEGATED_LEN = 323, + TOKEN_USER_CONTEXT = 324, + TOKEN_COMMENT = 325, + TOKEN_SUBNET = 326, + TOKEN_INTERFACE = 327, + TOKEN_INTERFACE_ID = 328, + TOKEN_ID = 329, + TOKEN_RAPID_COMMIT = 330, + TOKEN_RESERVATION_MODE = 331, + TOKEN_DISABLED = 332, + TOKEN_OUT_OF_POOL = 333, + TOKEN_GLOBAL = 334, + TOKEN_ALL = 335, + TOKEN_SHARED_NETWORKS = 336, + TOKEN_MAC_SOURCES = 337, + TOKEN_RELAY_SUPPLIED_OPTIONS = 338, + TOKEN_HOST_RESERVATION_IDENTIFIERS = 339, + TOKEN_SANITY_CHECKS = 340, + TOKEN_LEASE_CHECKS = 341, + TOKEN_CLIENT_CLASSES = 342, + TOKEN_REQUIRE_CLIENT_CLASSES = 343, + TOKEN_TEST = 344, + TOKEN_ONLY_IF_REQUIRED = 345, + TOKEN_CLIENT_CLASS = 346, + TOKEN_RESERVATIONS = 347, + TOKEN_IP_ADDRESSES = 348, + TOKEN_PREFIXES = 349, + TOKEN_DUID = 350, + TOKEN_HW_ADDRESS = 351, + TOKEN_HOSTNAME = 352, + TOKEN_FLEX_ID = 353, + TOKEN_RELAY = 354, + TOKEN_IP_ADDRESS = 355, + TOKEN_HOOKS_LIBRARIES = 356, + TOKEN_LIBRARY = 357, + TOKEN_PARAMETERS = 358, + TOKEN_EXPIRED_LEASES_PROCESSING = 359, + TOKEN_RECLAIM_TIMER_WAIT_TIME = 360, + TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 361, + TOKEN_HOLD_RECLAIMED_TIME = 362, + TOKEN_MAX_RECLAIM_LEASES = 363, + TOKEN_MAX_RECLAIM_TIME = 364, + TOKEN_UNWARNED_RECLAIM_CYCLES = 365, + TOKEN_SERVER_ID = 366, + TOKEN_LLT = 367, + TOKEN_EN = 368, + TOKEN_LL = 369, + TOKEN_IDENTIFIER = 370, + TOKEN_HTYPE = 371, + TOKEN_TIME = 372, + TOKEN_ENTERPRISE_ID = 373, + TOKEN_DHCP4O6_PORT = 374, + TOKEN_CONTROL_SOCKET = 375, + TOKEN_SOCKET_TYPE = 376, + TOKEN_SOCKET_NAME = 377, + TOKEN_DHCP_QUEUE_CONTROL = 378, + TOKEN_DHCP_DDNS = 379, + TOKEN_ENABLE_UPDATES = 380, + TOKEN_QUALIFYING_SUFFIX = 381, + TOKEN_SERVER_IP = 382, + TOKEN_SERVER_PORT = 383, + TOKEN_SENDER_IP = 384, + TOKEN_SENDER_PORT = 385, + TOKEN_MAX_QUEUE_SIZE = 386, + TOKEN_NCR_PROTOCOL = 387, + TOKEN_NCR_FORMAT = 388, + TOKEN_OVERRIDE_NO_UPDATE = 389, + TOKEN_OVERRIDE_CLIENT_UPDATE = 390, + TOKEN_REPLACE_CLIENT_NAME = 391, + TOKEN_GENERATED_PREFIX = 392, + TOKEN_UDP = 393, + TOKEN_TCP = 394, + TOKEN_JSON = 395, + TOKEN_WHEN_PRESENT = 396, + TOKEN_NEVER = 397, + TOKEN_ALWAYS = 398, + TOKEN_WHEN_NOT_PRESENT = 399, + TOKEN_HOSTNAME_CHAR_SET = 400, + TOKEN_HOSTNAME_CHAR_REPLACEMENT = 401, + TOKEN_LOGGING = 402, + TOKEN_LOGGERS = 403, + TOKEN_OUTPUT_OPTIONS = 404, + TOKEN_OUTPUT = 405, + TOKEN_DEBUGLEVEL = 406, + TOKEN_SEVERITY = 407, + TOKEN_FLUSH = 408, + TOKEN_MAXSIZE = 409, + TOKEN_MAXVER = 410, + TOKEN_DHCP4 = 411, + TOKEN_DHCPDDNS = 412, + TOKEN_CONTROL_AGENT = 413, + TOKEN_TOPLEVEL_JSON = 414, + TOKEN_TOPLEVEL_DHCP6 = 415, + TOKEN_SUB_DHCP6 = 416, + TOKEN_SUB_INTERFACES6 = 417, + TOKEN_SUB_SUBNET6 = 418, + TOKEN_SUB_POOL6 = 419, + TOKEN_SUB_PD_POOL = 420, + TOKEN_SUB_RESERVATION = 421, + TOKEN_SUB_OPTION_DEFS = 422, + TOKEN_SUB_OPTION_DEF = 423, + TOKEN_SUB_OPTION_DATA = 424, + TOKEN_SUB_HOOKS_LIBRARY = 425, + TOKEN_SUB_DHCP_DDNS = 426, + TOKEN_SUB_LOGGING = 427, + TOKEN_SUB_CONFIG_CONTROL = 428, + TOKEN_STRING = 429, + TOKEN_INTEGER = 430, + TOKEN_FLOAT = 431, + TOKEN_BOOLEAN = 432 }; }; @@ -653,154 +739,29 @@ namespace isc { namespace dhcp { typedef Base super_type; /// Default constructor. - basic_symbol () - : value () - , location () - {} + basic_symbol (); -#if 201103L <= YY_CPLUSPLUS - /// Move constructor. - basic_symbol (basic_symbol&& that); -#endif + /// Move or copy constructor. + basic_symbol (YY_RVREF (basic_symbol) other); - /// Copy constructor. - basic_symbol (const basic_symbol& that); /// Constructor for valueless symbols, and symbols from each type. -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, location_type&& l) - : Base (t) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const location_type& l) - : Base (t) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, double&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const double& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif -#if 201103L <= YY_CPLUSPLUS - basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l) - : Base (t) - , value (std::move (v)) - , location (std::move (l)) - {} -#else - basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l) - : Base (t) - , value (v) - , location (l) - {} -#endif + basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (ElementPtr) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (bool) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (double) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (int64_t) v, YY_RVREF (location_type) l); + basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l); + /// Destroy the symbol. - ~basic_symbol () - { - clear (); - } + ~basic_symbol (); /// Destroy contents, and record that is empty. - void clear () - { - // User destructor. - symbol_number_type yytype = this->type_get (); - basic_symbol& yysym = *this; - (void) yysym; - switch (yytype) - { - default: - break; - } - - // Type destructor. -switch (yytype) - { - case 194: // value - case 198: // map_value - case 252: // db_type - case 345: // hr_mode - case 481: // duid_type - case 516: // ncr_protocol_value - case 523: // replace_client_name_value - value.template destroy< ElementPtr > (); - break; - - case 176: // "boolean" - value.template destroy< bool > (); - break; - - case 175: // "floating point" - value.template destroy< double > (); - break; - - case 174: // "integer" - value.template destroy< int64_t > (); - break; - - case 173: // "constant string" - value.template destroy< std::string > (); - break; - - default: - break; - } - - Base::clear (); - } + void clear (); /// Whether empty. - bool empty () const YY_NOEXCEPT; + bool empty () const; /// Destructive move, \a s is emptied into this. void move (basic_symbol& s); @@ -812,9 +773,9 @@ switch (yytype) location_type location; private: -#if YY_CPLUSPLUS < 201103L +#if !defined __cplusplus || __cplusplus < 201103L /// Assignment operator. - basic_symbol& operator= (const basic_symbol& that); + basic_symbol& operator= (const basic_symbol& other); #endif }; @@ -824,13 +785,8 @@ switch (yytype) /// Default constructor. by_type (); -#if 201103L <= YY_CPLUSPLUS - /// Move constructor. - by_type (by_type&& that); -#endif - /// Copy constructor. - by_type (const by_type& that); + by_type (const by_type& other); /// The symbol type as needed by the constructor. typedef token_type kind_type; @@ -846,10 +802,10 @@ switch (yytype) /// The (internal) type number (corresponding to \a type). /// \a empty when empty. - symbol_number_type type_get () const YY_NOEXCEPT; + symbol_number_type type_get () const; /// The token. - token_type token () const YY_NOEXCEPT; + token_type token () const; /// The symbol type. /// \a empty_symbol when empty. @@ -858,81 +814,7 @@ switch (yytype) }; /// "External" symbols: returned by the scanner. - struct symbol_type : basic_symbol - { - /// Superclass. - typedef basic_symbol super_type; - - /// Empty symbol. - symbol_type () {} - - /// Constructor for valueless symbols, and symbols from each type. -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, location_type l) - : super_type(token_type (tok), std::move (l)) - { - YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL); - } -#else - symbol_type (int tok, const location_type& l) - : super_type(token_type (tok), l) - { - YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL); - } -#endif -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, bool v, location_type l) - : super_type(token_type (tok), std::move (v), std::move (l)) - { - YYASSERT (tok == token::TOKEN_BOOLEAN); - } -#else - symbol_type (int tok, const bool& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YYASSERT (tok == token::TOKEN_BOOLEAN); - } -#endif -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, double v, location_type l) - : super_type(token_type (tok), std::move (v), std::move (l)) - { - YYASSERT (tok == token::TOKEN_FLOAT); - } -#else - symbol_type (int tok, const double& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YYASSERT (tok == token::TOKEN_FLOAT); - } -#endif -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, int64_t v, location_type l) - : super_type(token_type (tok), std::move (v), std::move (l)) - { - YYASSERT (tok == token::TOKEN_INTEGER); - } -#else - symbol_type (int tok, const int64_t& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YYASSERT (tok == token::TOKEN_INTEGER); - } -#endif -#if 201103L <= YY_CPLUSPLUS - symbol_type (int tok, std::string v, location_type l) - : super_type(token_type (tok), std::move (v), std::move (l)) - { - YYASSERT (tok == token::TOKEN_STRING); - } -#else - symbol_type (int tok, const std::string& v, const location_type& l) - : super_type(token_type (tok), v, l) - { - YYASSERT (tok == token::TOKEN_STRING); - } -#endif - }; + typedef basic_symbol symbol_type; /// Build a parser object. Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg); @@ -968,2632 +850,711 @@ switch (yytype) /// Report a syntax error. void error (const syntax_error& err); - // Implementation of make_symbol for each symbol type. -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_END (location_type l) - { - return symbol_type (token::TOKEN_END, std::move (l)); - } -#else - static - symbol_type - make_END (const location_type& l) - { - return symbol_type (token::TOKEN_END, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_COMMA (location_type l) - { - return symbol_type (token::TOKEN_COMMA, std::move (l)); - } -#else - static - symbol_type - make_COMMA (const location_type& l) - { - return symbol_type (token::TOKEN_COMMA, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_COLON (location_type l) - { - return symbol_type (token::TOKEN_COLON, std::move (l)); - } -#else - static - symbol_type - make_COLON (const location_type& l) - { - return symbol_type (token::TOKEN_COLON, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LSQUARE_BRACKET (location_type l) - { - return symbol_type (token::TOKEN_LSQUARE_BRACKET, std::move (l)); - } -#else - static - symbol_type - make_LSQUARE_BRACKET (const location_type& l) - { - return symbol_type (token::TOKEN_LSQUARE_BRACKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RSQUARE_BRACKET (location_type l) - { - return symbol_type (token::TOKEN_RSQUARE_BRACKET, std::move (l)); - } -#else - static - symbol_type - make_RSQUARE_BRACKET (const location_type& l) - { - return symbol_type (token::TOKEN_RSQUARE_BRACKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LCURLY_BRACKET (location_type l) - { - return symbol_type (token::TOKEN_LCURLY_BRACKET, std::move (l)); - } -#else - static - symbol_type - make_LCURLY_BRACKET (const location_type& l) - { - return symbol_type (token::TOKEN_LCURLY_BRACKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RCURLY_BRACKET (location_type l) - { - return symbol_type (token::TOKEN_RCURLY_BRACKET, std::move (l)); - } -#else - static - symbol_type - make_RCURLY_BRACKET (const location_type& l) - { - return symbol_type (token::TOKEN_RCURLY_BRACKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NULL_TYPE (location_type l) - { - return symbol_type (token::TOKEN_NULL_TYPE, std::move (l)); - } -#else - static - symbol_type - make_NULL_TYPE (const location_type& l) - { - return symbol_type (token::TOKEN_NULL_TYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP6 (location_type l) - { - return symbol_type (token::TOKEN_DHCP6, std::move (l)); - } -#else - static - symbol_type - make_DHCP6 (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DATA_DIRECTORY (location_type l) - { - return symbol_type (token::TOKEN_DATA_DIRECTORY, std::move (l)); - } -#else - static - symbol_type - make_DATA_DIRECTORY (const location_type& l) - { - return symbol_type (token::TOKEN_DATA_DIRECTORY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONFIG_CONTROL (location_type l) - { - return symbol_type (token::TOKEN_CONFIG_CONTROL, std::move (l)); - } -#else - static - symbol_type - make_CONFIG_CONTROL (const location_type& l) - { - return symbol_type (token::TOKEN_CONFIG_CONTROL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONFIG_DATABASES (location_type l) - { - return symbol_type (token::TOKEN_CONFIG_DATABASES, std::move (l)); - } -#else - static - symbol_type - make_CONFIG_DATABASES (const location_type& l) - { - return symbol_type (token::TOKEN_CONFIG_DATABASES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTERFACES_CONFIG (location_type l) - { - return symbol_type (token::TOKEN_INTERFACES_CONFIG, std::move (l)); - } -#else - static - symbol_type - make_INTERFACES_CONFIG (const location_type& l) - { - return symbol_type (token::TOKEN_INTERFACES_CONFIG, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTERFACES (location_type l) - { - return symbol_type (token::TOKEN_INTERFACES, std::move (l)); - } -#else - static - symbol_type - make_INTERFACES (const location_type& l) - { - return symbol_type (token::TOKEN_INTERFACES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RE_DETECT (location_type l) - { - return symbol_type (token::TOKEN_RE_DETECT, std::move (l)); - } -#else - static - symbol_type - make_RE_DETECT (const location_type& l) - { - return symbol_type (token::TOKEN_RE_DETECT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LEASE_DATABASE (location_type l) - { - return symbol_type (token::TOKEN_LEASE_DATABASE, std::move (l)); - } -#else - static - symbol_type - make_LEASE_DATABASE (const location_type& l) - { - return symbol_type (token::TOKEN_LEASE_DATABASE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTS_DATABASE (location_type l) - { - return symbol_type (token::TOKEN_HOSTS_DATABASE, std::move (l)); - } -#else - static - symbol_type - make_HOSTS_DATABASE (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTS_DATABASE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTS_DATABASES (location_type l) - { - return symbol_type (token::TOKEN_HOSTS_DATABASES, std::move (l)); - } -#else - static - symbol_type - make_HOSTS_DATABASES (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTS_DATABASES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TYPE (location_type l) - { - return symbol_type (token::TOKEN_TYPE, std::move (l)); - } -#else - static - symbol_type - make_TYPE (const location_type& l) - { - return symbol_type (token::TOKEN_TYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MEMFILE (location_type l) - { - return symbol_type (token::TOKEN_MEMFILE, std::move (l)); - } -#else - static - symbol_type - make_MEMFILE (const location_type& l) - { - return symbol_type (token::TOKEN_MEMFILE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MYSQL (location_type l) - { - return symbol_type (token::TOKEN_MYSQL, std::move (l)); - } -#else - static - symbol_type - make_MYSQL (const location_type& l) - { - return symbol_type (token::TOKEN_MYSQL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_POSTGRESQL (location_type l) - { - return symbol_type (token::TOKEN_POSTGRESQL, std::move (l)); - } -#else - static - symbol_type - make_POSTGRESQL (const location_type& l) - { - return symbol_type (token::TOKEN_POSTGRESQL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CQL (location_type l) - { - return symbol_type (token::TOKEN_CQL, std::move (l)); - } -#else - static - symbol_type - make_CQL (const location_type& l) - { - return symbol_type (token::TOKEN_CQL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_USER (location_type l) - { - return symbol_type (token::TOKEN_USER, std::move (l)); - } -#else - static - symbol_type - make_USER (const location_type& l) - { - return symbol_type (token::TOKEN_USER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PASSWORD (location_type l) - { - return symbol_type (token::TOKEN_PASSWORD, std::move (l)); - } -#else - static - symbol_type - make_PASSWORD (const location_type& l) - { - return symbol_type (token::TOKEN_PASSWORD, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOST (location_type l) - { - return symbol_type (token::TOKEN_HOST, std::move (l)); - } -#else - static - symbol_type - make_HOST (const location_type& l) - { - return symbol_type (token::TOKEN_HOST, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PORT (location_type l) - { - return symbol_type (token::TOKEN_PORT, std::move (l)); - } -#else - static - symbol_type - make_PORT (const location_type& l) - { - return symbol_type (token::TOKEN_PORT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PERSIST (location_type l) - { - return symbol_type (token::TOKEN_PERSIST, std::move (l)); - } -#else - static - symbol_type - make_PERSIST (const location_type& l) - { - return symbol_type (token::TOKEN_PERSIST, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LFC_INTERVAL (location_type l) - { - return symbol_type (token::TOKEN_LFC_INTERVAL, std::move (l)); - } -#else - static - symbol_type - make_LFC_INTERVAL (const location_type& l) - { - return symbol_type (token::TOKEN_LFC_INTERVAL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_READONLY (location_type l) - { - return symbol_type (token::TOKEN_READONLY, std::move (l)); - } -#else - static - symbol_type - make_READONLY (const location_type& l) - { - return symbol_type (token::TOKEN_READONLY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONNECT_TIMEOUT (location_type l) - { - return symbol_type (token::TOKEN_CONNECT_TIMEOUT, std::move (l)); - } -#else - static - symbol_type - make_CONNECT_TIMEOUT (const location_type& l) - { - return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONTACT_POINTS (location_type l) - { - return symbol_type (token::TOKEN_CONTACT_POINTS, std::move (l)); - } -#else - static - symbol_type - make_CONTACT_POINTS (const location_type& l) - { - return symbol_type (token::TOKEN_CONTACT_POINTS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_RECONNECT_TRIES (location_type l) - { - return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, std::move (l)); - } -#else - static - symbol_type - make_MAX_RECONNECT_TRIES (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RECONNECT_WAIT_TIME (location_type l) - { - return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, std::move (l)); - } -#else - static - symbol_type - make_RECONNECT_WAIT_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_KEYSPACE (location_type l) - { - return symbol_type (token::TOKEN_KEYSPACE, std::move (l)); - } -#else - static - symbol_type - make_KEYSPACE (const location_type& l) - { - return symbol_type (token::TOKEN_KEYSPACE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONSISTENCY (location_type l) - { - return symbol_type (token::TOKEN_CONSISTENCY, std::move (l)); - } -#else - static - symbol_type - make_CONSISTENCY (const location_type& l) - { - return symbol_type (token::TOKEN_CONSISTENCY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERIAL_CONSISTENCY (location_type l) - { - return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, std::move (l)); - } -#else - static - symbol_type - make_SERIAL_CONSISTENCY (const location_type& l) - { - return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_REQUEST_TIMEOUT (location_type l) - { - return symbol_type (token::TOKEN_REQUEST_TIMEOUT, std::move (l)); - } -#else - static - symbol_type - make_REQUEST_TIMEOUT (const location_type& l) - { - return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TCP_KEEPALIVE (location_type l) - { - return symbol_type (token::TOKEN_TCP_KEEPALIVE, std::move (l)); - } -#else - static - symbol_type - make_TCP_KEEPALIVE (const location_type& l) - { - return symbol_type (token::TOKEN_TCP_KEEPALIVE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TCP_NODELAY (location_type l) - { - return symbol_type (token::TOKEN_TCP_NODELAY, std::move (l)); - } -#else - static - symbol_type - make_TCP_NODELAY (const location_type& l) - { - return symbol_type (token::TOKEN_TCP_NODELAY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PREFERRED_LIFETIME (location_type l) - { - return symbol_type (token::TOKEN_PREFERRED_LIFETIME, std::move (l)); - } -#else - static - symbol_type - make_PREFERRED_LIFETIME (const location_type& l) - { - return symbol_type (token::TOKEN_PREFERRED_LIFETIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_VALID_LIFETIME (location_type l) - { - return symbol_type (token::TOKEN_VALID_LIFETIME, std::move (l)); - } -#else - static - symbol_type - make_VALID_LIFETIME (const location_type& l) - { - return symbol_type (token::TOKEN_VALID_LIFETIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RENEW_TIMER (location_type l) - { - return symbol_type (token::TOKEN_RENEW_TIMER, std::move (l)); - } -#else - static - symbol_type - make_RENEW_TIMER (const location_type& l) - { - return symbol_type (token::TOKEN_RENEW_TIMER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_REBIND_TIMER (location_type l) - { - return symbol_type (token::TOKEN_REBIND_TIMER, std::move (l)); - } -#else - static - symbol_type - make_REBIND_TIMER (const location_type& l) - { - return symbol_type (token::TOKEN_REBIND_TIMER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DECLINE_PROBATION_PERIOD (location_type l) - { - return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, std::move (l)); - } -#else - static - symbol_type - make_DECLINE_PROBATION_PERIOD (const location_type& l) - { - return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERVER_TAG (location_type l) - { - return symbol_type (token::TOKEN_SERVER_TAG, std::move (l)); - } -#else - static - symbol_type - make_SERVER_TAG (const location_type& l) - { - return symbol_type (token::TOKEN_SERVER_TAG, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUBNET6 (location_type l) - { - return symbol_type (token::TOKEN_SUBNET6, std::move (l)); - } -#else - static - symbol_type - make_SUBNET6 (const location_type& l) - { - return symbol_type (token::TOKEN_SUBNET6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OPTION_DEF (location_type l) - { - return symbol_type (token::TOKEN_OPTION_DEF, std::move (l)); - } -#else - static - symbol_type - make_OPTION_DEF (const location_type& l) - { - return symbol_type (token::TOKEN_OPTION_DEF, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OPTION_DATA (location_type l) - { - return symbol_type (token::TOKEN_OPTION_DATA, std::move (l)); - } -#else - static - symbol_type - make_OPTION_DATA (const location_type& l) - { - return symbol_type (token::TOKEN_OPTION_DATA, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NAME (location_type l) - { - return symbol_type (token::TOKEN_NAME, std::move (l)); - } -#else - static - symbol_type - make_NAME (const location_type& l) - { - return symbol_type (token::TOKEN_NAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DATA (location_type l) - { - return symbol_type (token::TOKEN_DATA, std::move (l)); - } -#else - static - symbol_type - make_DATA (const location_type& l) - { - return symbol_type (token::TOKEN_DATA, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CODE (location_type l) - { - return symbol_type (token::TOKEN_CODE, std::move (l)); - } -#else - static - symbol_type - make_CODE (const location_type& l) - { - return symbol_type (token::TOKEN_CODE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SPACE (location_type l) - { - return symbol_type (token::TOKEN_SPACE, std::move (l)); - } -#else - static - symbol_type - make_SPACE (const location_type& l) - { - return symbol_type (token::TOKEN_SPACE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CSV_FORMAT (location_type l) - { - return symbol_type (token::TOKEN_CSV_FORMAT, std::move (l)); - } -#else - static - symbol_type - make_CSV_FORMAT (const location_type& l) - { - return symbol_type (token::TOKEN_CSV_FORMAT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ALWAYS_SEND (location_type l) - { - return symbol_type (token::TOKEN_ALWAYS_SEND, std::move (l)); - } -#else - static - symbol_type - make_ALWAYS_SEND (const location_type& l) - { - return symbol_type (token::TOKEN_ALWAYS_SEND, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RECORD_TYPES (location_type l) - { - return symbol_type (token::TOKEN_RECORD_TYPES, std::move (l)); - } -#else - static - symbol_type - make_RECORD_TYPES (const location_type& l) - { - return symbol_type (token::TOKEN_RECORD_TYPES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ENCAPSULATE (location_type l) - { - return symbol_type (token::TOKEN_ENCAPSULATE, std::move (l)); - } -#else - static - symbol_type - make_ENCAPSULATE (const location_type& l) - { - return symbol_type (token::TOKEN_ENCAPSULATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ARRAY (location_type l) - { - return symbol_type (token::TOKEN_ARRAY, std::move (l)); - } -#else - static - symbol_type - make_ARRAY (const location_type& l) - { - return symbol_type (token::TOKEN_ARRAY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_POOLS (location_type l) - { - return symbol_type (token::TOKEN_POOLS, std::move (l)); - } -#else - static - symbol_type - make_POOLS (const location_type& l) - { - return symbol_type (token::TOKEN_POOLS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_POOL (location_type l) - { - return symbol_type (token::TOKEN_POOL, std::move (l)); - } -#else - static - symbol_type - make_POOL (const location_type& l) - { - return symbol_type (token::TOKEN_POOL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PD_POOLS (location_type l) - { - return symbol_type (token::TOKEN_PD_POOLS, std::move (l)); - } -#else - static - symbol_type - make_PD_POOLS (const location_type& l) - { - return symbol_type (token::TOKEN_PD_POOLS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PREFIX (location_type l) - { - return symbol_type (token::TOKEN_PREFIX, std::move (l)); - } -#else - static - symbol_type - make_PREFIX (const location_type& l) - { - return symbol_type (token::TOKEN_PREFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PREFIX_LEN (location_type l) - { - return symbol_type (token::TOKEN_PREFIX_LEN, std::move (l)); - } -#else - static - symbol_type - make_PREFIX_LEN (const location_type& l) - { - return symbol_type (token::TOKEN_PREFIX_LEN, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_EXCLUDED_PREFIX (location_type l) - { - return symbol_type (token::TOKEN_EXCLUDED_PREFIX, std::move (l)); - } -#else - static - symbol_type - make_EXCLUDED_PREFIX (const location_type& l) - { - return symbol_type (token::TOKEN_EXCLUDED_PREFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_EXCLUDED_PREFIX_LEN (location_type l) - { - return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, std::move (l)); - } -#else - static - symbol_type - make_EXCLUDED_PREFIX_LEN (const location_type& l) - { - return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DELEGATED_LEN (location_type l) - { - return symbol_type (token::TOKEN_DELEGATED_LEN, std::move (l)); - } -#else - static - symbol_type - make_DELEGATED_LEN (const location_type& l) - { - return symbol_type (token::TOKEN_DELEGATED_LEN, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_USER_CONTEXT (location_type l) - { - return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l)); - } -#else - static - symbol_type - make_USER_CONTEXT (const location_type& l) - { - return symbol_type (token::TOKEN_USER_CONTEXT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_COMMENT (location_type l) - { - return symbol_type (token::TOKEN_COMMENT, std::move (l)); - } -#else - static - symbol_type - make_COMMENT (const location_type& l) - { - return symbol_type (token::TOKEN_COMMENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUBNET (location_type l) - { - return symbol_type (token::TOKEN_SUBNET, std::move (l)); - } -#else - static - symbol_type - make_SUBNET (const location_type& l) - { - return symbol_type (token::TOKEN_SUBNET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTERFACE (location_type l) - { - return symbol_type (token::TOKEN_INTERFACE, std::move (l)); - } -#else - static - symbol_type - make_INTERFACE (const location_type& l) - { - return symbol_type (token::TOKEN_INTERFACE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTERFACE_ID (location_type l) - { - return symbol_type (token::TOKEN_INTERFACE_ID, std::move (l)); - } -#else - static - symbol_type - make_INTERFACE_ID (const location_type& l) - { - return symbol_type (token::TOKEN_INTERFACE_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ID (location_type l) - { - return symbol_type (token::TOKEN_ID, std::move (l)); - } -#else - static - symbol_type - make_ID (const location_type& l) - { - return symbol_type (token::TOKEN_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RAPID_COMMIT (location_type l) - { - return symbol_type (token::TOKEN_RAPID_COMMIT, std::move (l)); - } -#else - static - symbol_type - make_RAPID_COMMIT (const location_type& l) - { - return symbol_type (token::TOKEN_RAPID_COMMIT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RESERVATION_MODE (location_type l) - { - return symbol_type (token::TOKEN_RESERVATION_MODE, std::move (l)); - } -#else - static - symbol_type - make_RESERVATION_MODE (const location_type& l) - { - return symbol_type (token::TOKEN_RESERVATION_MODE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DISABLED (location_type l) - { - return symbol_type (token::TOKEN_DISABLED, std::move (l)); - } -#else - static - symbol_type - make_DISABLED (const location_type& l) - { - return symbol_type (token::TOKEN_DISABLED, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OUT_OF_POOL (location_type l) - { - return symbol_type (token::TOKEN_OUT_OF_POOL, std::move (l)); - } -#else - static - symbol_type - make_OUT_OF_POOL (const location_type& l) - { - return symbol_type (token::TOKEN_OUT_OF_POOL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_GLOBAL (location_type l) - { - return symbol_type (token::TOKEN_GLOBAL, std::move (l)); - } -#else - static - symbol_type - make_GLOBAL (const location_type& l) - { - return symbol_type (token::TOKEN_GLOBAL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ALL (location_type l) - { - return symbol_type (token::TOKEN_ALL, std::move (l)); - } -#else - static - symbol_type - make_ALL (const location_type& l) - { - return symbol_type (token::TOKEN_ALL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SHARED_NETWORKS (location_type l) - { - return symbol_type (token::TOKEN_SHARED_NETWORKS, std::move (l)); - } -#else - static - symbol_type - make_SHARED_NETWORKS (const location_type& l) - { - return symbol_type (token::TOKEN_SHARED_NETWORKS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAC_SOURCES (location_type l) - { - return symbol_type (token::TOKEN_MAC_SOURCES, std::move (l)); - } -#else - static - symbol_type - make_MAC_SOURCES (const location_type& l) - { - return symbol_type (token::TOKEN_MAC_SOURCES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RELAY_SUPPLIED_OPTIONS (location_type l) - { - return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, std::move (l)); - } -#else - static - symbol_type - make_RELAY_SUPPLIED_OPTIONS (const location_type& l) - { - return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOST_RESERVATION_IDENTIFIERS (location_type l) - { - return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, std::move (l)); - } -#else - static - symbol_type - make_HOST_RESERVATION_IDENTIFIERS (const location_type& l) - { - return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SANITY_CHECKS (location_type l) - { - return symbol_type (token::TOKEN_SANITY_CHECKS, std::move (l)); - } -#else - static - symbol_type - make_SANITY_CHECKS (const location_type& l) - { - return symbol_type (token::TOKEN_SANITY_CHECKS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LEASE_CHECKS (location_type l) - { - return symbol_type (token::TOKEN_LEASE_CHECKS, std::move (l)); - } -#else - static - symbol_type - make_LEASE_CHECKS (const location_type& l) - { - return symbol_type (token::TOKEN_LEASE_CHECKS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CLIENT_CLASSES (location_type l) - { - return symbol_type (token::TOKEN_CLIENT_CLASSES, std::move (l)); - } -#else - static - symbol_type - make_CLIENT_CLASSES (const location_type& l) - { - return symbol_type (token::TOKEN_CLIENT_CLASSES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_REQUIRE_CLIENT_CLASSES (location_type l) - { - return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, std::move (l)); - } -#else - static - symbol_type - make_REQUIRE_CLIENT_CLASSES (const location_type& l) - { - return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TEST (location_type l) - { - return symbol_type (token::TOKEN_TEST, std::move (l)); - } -#else - static - symbol_type - make_TEST (const location_type& l) - { - return symbol_type (token::TOKEN_TEST, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ONLY_IF_REQUIRED (location_type l) - { - return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, std::move (l)); - } -#else - static - symbol_type - make_ONLY_IF_REQUIRED (const location_type& l) - { - return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CLIENT_CLASS (location_type l) - { - return symbol_type (token::TOKEN_CLIENT_CLASS, std::move (l)); - } -#else - static - symbol_type - make_CLIENT_CLASS (const location_type& l) - { - return symbol_type (token::TOKEN_CLIENT_CLASS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RESERVATIONS (location_type l) - { - return symbol_type (token::TOKEN_RESERVATIONS, std::move (l)); - } -#else - static - symbol_type - make_RESERVATIONS (const location_type& l) - { - return symbol_type (token::TOKEN_RESERVATIONS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_IP_ADDRESSES (location_type l) - { - return symbol_type (token::TOKEN_IP_ADDRESSES, std::move (l)); - } -#else - static - symbol_type - make_IP_ADDRESSES (const location_type& l) - { - return symbol_type (token::TOKEN_IP_ADDRESSES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PREFIXES (location_type l) - { - return symbol_type (token::TOKEN_PREFIXES, std::move (l)); - } -#else - static - symbol_type - make_PREFIXES (const location_type& l) - { - return symbol_type (token::TOKEN_PREFIXES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DUID (location_type l) - { - return symbol_type (token::TOKEN_DUID, std::move (l)); - } -#else - static - symbol_type - make_DUID (const location_type& l) - { - return symbol_type (token::TOKEN_DUID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HW_ADDRESS (location_type l) - { - return symbol_type (token::TOKEN_HW_ADDRESS, std::move (l)); - } -#else - static - symbol_type - make_HW_ADDRESS (const location_type& l) - { - return symbol_type (token::TOKEN_HW_ADDRESS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTNAME (location_type l) - { - return symbol_type (token::TOKEN_HOSTNAME, std::move (l)); - } -#else - static - symbol_type - make_HOSTNAME (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTNAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FLEX_ID (location_type l) - { - return symbol_type (token::TOKEN_FLEX_ID, std::move (l)); - } -#else - static - symbol_type - make_FLEX_ID (const location_type& l) - { - return symbol_type (token::TOKEN_FLEX_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RELAY (location_type l) - { - return symbol_type (token::TOKEN_RELAY, std::move (l)); - } -#else - static - symbol_type - make_RELAY (const location_type& l) - { - return symbol_type (token::TOKEN_RELAY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_IP_ADDRESS (location_type l) - { - return symbol_type (token::TOKEN_IP_ADDRESS, std::move (l)); - } -#else - static - symbol_type - make_IP_ADDRESS (const location_type& l) - { - return symbol_type (token::TOKEN_IP_ADDRESS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOOKS_LIBRARIES (location_type l) - { - return symbol_type (token::TOKEN_HOOKS_LIBRARIES, std::move (l)); - } -#else - static - symbol_type - make_HOOKS_LIBRARIES (const location_type& l) - { - return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LIBRARY (location_type l) - { - return symbol_type (token::TOKEN_LIBRARY, std::move (l)); - } -#else - static - symbol_type - make_LIBRARY (const location_type& l) - { - return symbol_type (token::TOKEN_LIBRARY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_PARAMETERS (location_type l) - { - return symbol_type (token::TOKEN_PARAMETERS, std::move (l)); - } -#else - static - symbol_type - make_PARAMETERS (const location_type& l) - { - return symbol_type (token::TOKEN_PARAMETERS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_EXPIRED_LEASES_PROCESSING (location_type l) - { - return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, std::move (l)); - } -#else - static - symbol_type - make_EXPIRED_LEASES_PROCESSING (const location_type& l) - { - return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_RECLAIM_TIMER_WAIT_TIME (location_type l) - { - return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, std::move (l)); - } -#else - static - symbol_type - make_RECLAIM_TIMER_WAIT_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (location_type l) - { - return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, std::move (l)); - } -#else - static - symbol_type - make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOLD_RECLAIMED_TIME (location_type l) - { - return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, std::move (l)); - } -#else - static - symbol_type - make_HOLD_RECLAIMED_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_RECLAIM_LEASES (location_type l) - { - return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, std::move (l)); - } -#else - static - symbol_type - make_MAX_RECLAIM_LEASES (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_RECLAIM_TIME (location_type l) - { - return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, std::move (l)); - } -#else - static - symbol_type - make_MAX_RECLAIM_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_UNWARNED_RECLAIM_CYCLES (location_type l) - { - return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, std::move (l)); - } -#else - static - symbol_type - make_UNWARNED_RECLAIM_CYCLES (const location_type& l) - { - return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERVER_ID (location_type l) - { - return symbol_type (token::TOKEN_SERVER_ID, std::move (l)); - } -#else - static - symbol_type - make_SERVER_ID (const location_type& l) - { - return symbol_type (token::TOKEN_SERVER_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LLT (location_type l) - { - return symbol_type (token::TOKEN_LLT, std::move (l)); - } -#else - static - symbol_type - make_LLT (const location_type& l) - { - return symbol_type (token::TOKEN_LLT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_EN (location_type l) - { - return symbol_type (token::TOKEN_EN, std::move (l)); - } -#else - static - symbol_type - make_EN (const location_type& l) - { - return symbol_type (token::TOKEN_EN, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LL (location_type l) - { - return symbol_type (token::TOKEN_LL, std::move (l)); - } -#else - static - symbol_type - make_LL (const location_type& l) - { - return symbol_type (token::TOKEN_LL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_IDENTIFIER (location_type l) - { - return symbol_type (token::TOKEN_IDENTIFIER, std::move (l)); - } -#else - static - symbol_type - make_IDENTIFIER (const location_type& l) - { - return symbol_type (token::TOKEN_IDENTIFIER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HTYPE (location_type l) - { - return symbol_type (token::TOKEN_HTYPE, std::move (l)); - } -#else - static - symbol_type - make_HTYPE (const location_type& l) - { - return symbol_type (token::TOKEN_HTYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TIME (location_type l) - { - return symbol_type (token::TOKEN_TIME, std::move (l)); - } -#else - static - symbol_type - make_TIME (const location_type& l) - { - return symbol_type (token::TOKEN_TIME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ENTERPRISE_ID (location_type l) - { - return symbol_type (token::TOKEN_ENTERPRISE_ID, std::move (l)); - } -#else - static - symbol_type - make_ENTERPRISE_ID (const location_type& l) - { - return symbol_type (token::TOKEN_ENTERPRISE_ID, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP4O6_PORT (location_type l) - { - return symbol_type (token::TOKEN_DHCP4O6_PORT, std::move (l)); - } -#else - static - symbol_type - make_DHCP4O6_PORT (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP4O6_PORT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONTROL_SOCKET (location_type l) - { - return symbol_type (token::TOKEN_CONTROL_SOCKET, std::move (l)); - } -#else - static - symbol_type - make_CONTROL_SOCKET (const location_type& l) - { - return symbol_type (token::TOKEN_CONTROL_SOCKET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SOCKET_TYPE (location_type l) - { - return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l)); - } -#else - static - symbol_type - make_SOCKET_TYPE (const location_type& l) - { - return symbol_type (token::TOKEN_SOCKET_TYPE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SOCKET_NAME (location_type l) - { - return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l)); - } -#else - static - symbol_type - make_SOCKET_NAME (const location_type& l) - { - return symbol_type (token::TOKEN_SOCKET_NAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP_QUEUE_CONTROL (location_type l) - { - return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, std::move (l)); - } -#else - static - symbol_type - make_DHCP_QUEUE_CONTROL (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP_DDNS (location_type l) - { - return symbol_type (token::TOKEN_DHCP_DDNS, std::move (l)); - } -#else - static - symbol_type - make_DHCP_DDNS (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP_DDNS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ENABLE_UPDATES (location_type l) - { - return symbol_type (token::TOKEN_ENABLE_UPDATES, std::move (l)); - } -#else - static - symbol_type - make_ENABLE_UPDATES (const location_type& l) - { - return symbol_type (token::TOKEN_ENABLE_UPDATES, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_QUALIFYING_SUFFIX (location_type l) - { - return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, std::move (l)); - } -#else - static - symbol_type - make_QUALIFYING_SUFFIX (const location_type& l) - { - return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERVER_IP (location_type l) - { - return symbol_type (token::TOKEN_SERVER_IP, std::move (l)); - } -#else - static - symbol_type - make_SERVER_IP (const location_type& l) - { - return symbol_type (token::TOKEN_SERVER_IP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SERVER_PORT (location_type l) - { - return symbol_type (token::TOKEN_SERVER_PORT, std::move (l)); - } -#else - static - symbol_type - make_SERVER_PORT (const location_type& l) - { - return symbol_type (token::TOKEN_SERVER_PORT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SENDER_IP (location_type l) - { - return symbol_type (token::TOKEN_SENDER_IP, std::move (l)); - } -#else - static - symbol_type - make_SENDER_IP (const location_type& l) - { - return symbol_type (token::TOKEN_SENDER_IP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SENDER_PORT (location_type l) - { - return symbol_type (token::TOKEN_SENDER_PORT, std::move (l)); - } -#else - static - symbol_type - make_SENDER_PORT (const location_type& l) - { - return symbol_type (token::TOKEN_SENDER_PORT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAX_QUEUE_SIZE (location_type l) - { - return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, std::move (l)); - } -#else - static - symbol_type - make_MAX_QUEUE_SIZE (const location_type& l) - { - return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NCR_PROTOCOL (location_type l) - { - return symbol_type (token::TOKEN_NCR_PROTOCOL, std::move (l)); - } -#else - static - symbol_type - make_NCR_PROTOCOL (const location_type& l) - { - return symbol_type (token::TOKEN_NCR_PROTOCOL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NCR_FORMAT (location_type l) - { - return symbol_type (token::TOKEN_NCR_FORMAT, std::move (l)); - } -#else - static - symbol_type - make_NCR_FORMAT (const location_type& l) - { - return symbol_type (token::TOKEN_NCR_FORMAT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OVERRIDE_NO_UPDATE (location_type l) - { - return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, std::move (l)); - } -#else - static - symbol_type - make_OVERRIDE_NO_UPDATE (const location_type& l) - { - return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OVERRIDE_CLIENT_UPDATE (location_type l) - { - return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, std::move (l)); - } -#else - static - symbol_type - make_OVERRIDE_CLIENT_UPDATE (const location_type& l) - { - return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_REPLACE_CLIENT_NAME (location_type l) - { - return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, std::move (l)); - } -#else - static - symbol_type - make_REPLACE_CLIENT_NAME (const location_type& l) - { - return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_GENERATED_PREFIX (location_type l) - { - return symbol_type (token::TOKEN_GENERATED_PREFIX, std::move (l)); - } -#else - static - symbol_type - make_GENERATED_PREFIX (const location_type& l) - { - return symbol_type (token::TOKEN_GENERATED_PREFIX, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_UDP (location_type l) - { - return symbol_type (token::TOKEN_UDP, std::move (l)); - } -#else - static - symbol_type - make_UDP (const location_type& l) - { - return symbol_type (token::TOKEN_UDP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TCP (location_type l) - { - return symbol_type (token::TOKEN_TCP, std::move (l)); - } -#else - static - symbol_type - make_TCP (const location_type& l) - { - return symbol_type (token::TOKEN_TCP, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_JSON (location_type l) - { - return symbol_type (token::TOKEN_JSON, std::move (l)); - } -#else - static - symbol_type - make_JSON (const location_type& l) - { - return symbol_type (token::TOKEN_JSON, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_WHEN_PRESENT (location_type l) - { - return symbol_type (token::TOKEN_WHEN_PRESENT, std::move (l)); - } -#else - static - symbol_type - make_WHEN_PRESENT (const location_type& l) - { - return symbol_type (token::TOKEN_WHEN_PRESENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_NEVER (location_type l) - { - return symbol_type (token::TOKEN_NEVER, std::move (l)); - } -#else - static - symbol_type - make_NEVER (const location_type& l) - { - return symbol_type (token::TOKEN_NEVER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_ALWAYS (location_type l) - { - return symbol_type (token::TOKEN_ALWAYS, std::move (l)); - } -#else - static - symbol_type - make_ALWAYS (const location_type& l) - { - return symbol_type (token::TOKEN_ALWAYS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_WHEN_NOT_PRESENT (location_type l) - { - return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, std::move (l)); - } -#else - static - symbol_type - make_WHEN_NOT_PRESENT (const location_type& l) - { - return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTNAME_CHAR_SET (location_type l) - { - return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, std::move (l)); - } -#else - static - symbol_type - make_HOSTNAME_CHAR_SET (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_HOSTNAME_CHAR_REPLACEMENT (location_type l) - { - return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, std::move (l)); - } -#else - static - symbol_type - make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l) - { - return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LOGGING (location_type l) - { - return symbol_type (token::TOKEN_LOGGING, std::move (l)); - } -#else - static - symbol_type - make_LOGGING (const location_type& l) - { - return symbol_type (token::TOKEN_LOGGING, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_LOGGERS (location_type l) - { - return symbol_type (token::TOKEN_LOGGERS, std::move (l)); - } -#else - static - symbol_type - make_LOGGERS (const location_type& l) - { - return symbol_type (token::TOKEN_LOGGERS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OUTPUT_OPTIONS (location_type l) - { - return symbol_type (token::TOKEN_OUTPUT_OPTIONS, std::move (l)); - } -#else - static - symbol_type - make_OUTPUT_OPTIONS (const location_type& l) - { - return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_OUTPUT (location_type l) - { - return symbol_type (token::TOKEN_OUTPUT, std::move (l)); - } -#else - static - symbol_type - make_OUTPUT (const location_type& l) - { - return symbol_type (token::TOKEN_OUTPUT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DEBUGLEVEL (location_type l) - { - return symbol_type (token::TOKEN_DEBUGLEVEL, std::move (l)); - } -#else - static - symbol_type - make_DEBUGLEVEL (const location_type& l) - { - return symbol_type (token::TOKEN_DEBUGLEVEL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SEVERITY (location_type l) - { - return symbol_type (token::TOKEN_SEVERITY, std::move (l)); - } -#else - static - symbol_type - make_SEVERITY (const location_type& l) - { - return symbol_type (token::TOKEN_SEVERITY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FLUSH (location_type l) - { - return symbol_type (token::TOKEN_FLUSH, std::move (l)); - } -#else - static - symbol_type - make_FLUSH (const location_type& l) - { - return symbol_type (token::TOKEN_FLUSH, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAXSIZE (location_type l) - { - return symbol_type (token::TOKEN_MAXSIZE, std::move (l)); - } -#else - static - symbol_type - make_MAXSIZE (const location_type& l) - { - return symbol_type (token::TOKEN_MAXSIZE, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_MAXVER (location_type l) - { - return symbol_type (token::TOKEN_MAXVER, std::move (l)); - } -#else - static - symbol_type - make_MAXVER (const location_type& l) - { - return symbol_type (token::TOKEN_MAXVER, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCP4 (location_type l) - { - return symbol_type (token::TOKEN_DHCP4, std::move (l)); - } -#else - static - symbol_type - make_DHCP4 (const location_type& l) - { - return symbol_type (token::TOKEN_DHCP4, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_DHCPDDNS (location_type l) - { - return symbol_type (token::TOKEN_DHCPDDNS, std::move (l)); - } -#else - static - symbol_type - make_DHCPDDNS (const location_type& l) - { - return symbol_type (token::TOKEN_DHCPDDNS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_CONTROL_AGENT (location_type l) - { - return symbol_type (token::TOKEN_CONTROL_AGENT, std::move (l)); - } -#else - static - symbol_type - make_CONTROL_AGENT (const location_type& l) - { - return symbol_type (token::TOKEN_CONTROL_AGENT, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TOPLEVEL_JSON (location_type l) - { - return symbol_type (token::TOKEN_TOPLEVEL_JSON, std::move (l)); - } -#else - static - symbol_type - make_TOPLEVEL_JSON (const location_type& l) - { - return symbol_type (token::TOKEN_TOPLEVEL_JSON, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_TOPLEVEL_DHCP6 (location_type l) - { - return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, std::move (l)); - } -#else - static - symbol_type - make_TOPLEVEL_DHCP6 (const location_type& l) - { - return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_DHCP6 (location_type l) - { - return symbol_type (token::TOKEN_SUB_DHCP6, std::move (l)); - } -#else - static - symbol_type - make_SUB_DHCP6 (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_DHCP6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_INTERFACES6 (location_type l) - { - return symbol_type (token::TOKEN_SUB_INTERFACES6, std::move (l)); - } -#else - static - symbol_type - make_SUB_INTERFACES6 (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_INTERFACES6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_SUBNET6 (location_type l) - { - return symbol_type (token::TOKEN_SUB_SUBNET6, std::move (l)); - } -#else - static - symbol_type - make_SUB_SUBNET6 (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_SUBNET6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_POOL6 (location_type l) - { - return symbol_type (token::TOKEN_SUB_POOL6, std::move (l)); - } -#else - static - symbol_type - make_SUB_POOL6 (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_POOL6, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_PD_POOL (location_type l) - { - return symbol_type (token::TOKEN_SUB_PD_POOL, std::move (l)); - } -#else - static - symbol_type - make_SUB_PD_POOL (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_PD_POOL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_RESERVATION (location_type l) - { - return symbol_type (token::TOKEN_SUB_RESERVATION, std::move (l)); - } -#else - static - symbol_type - make_SUB_RESERVATION (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_RESERVATION, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_OPTION_DEFS (location_type l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DEFS, std::move (l)); - } -#else - static - symbol_type - make_SUB_OPTION_DEFS (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_OPTION_DEF (location_type l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DEF, std::move (l)); - } -#else - static - symbol_type - make_SUB_OPTION_DEF (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DEF, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_OPTION_DATA (location_type l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DATA, std::move (l)); - } -#else - static - symbol_type - make_SUB_OPTION_DATA (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_OPTION_DATA, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_HOOKS_LIBRARY (location_type l) - { - return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, std::move (l)); - } -#else - static - symbol_type - make_SUB_HOOKS_LIBRARY (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_DHCP_DDNS (location_type l) - { - return symbol_type (token::TOKEN_SUB_DHCP_DDNS, std::move (l)); - } -#else - static - symbol_type - make_SUB_DHCP_DDNS (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_LOGGING (location_type l) - { - return symbol_type (token::TOKEN_SUB_LOGGING, std::move (l)); - } -#else - static - symbol_type - make_SUB_LOGGING (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_LOGGING, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_SUB_CONFIG_CONTROL (location_type l) - { - return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, std::move (l)); - } -#else - static - symbol_type - make_SUB_CONFIG_CONTROL (const location_type& l) - { - return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_STRING (std::string v, location_type l) - { - return symbol_type (token::TOKEN_STRING, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_STRING (const std::string& v, const location_type& l) - { - return symbol_type (token::TOKEN_STRING, v, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_INTEGER (int64_t v, location_type l) - { - return symbol_type (token::TOKEN_INTEGER, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_INTEGER (const int64_t& v, const location_type& l) - { - return symbol_type (token::TOKEN_INTEGER, v, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_FLOAT (double v, location_type l) - { - return symbol_type (token::TOKEN_FLOAT, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_FLOAT (const double& v, const location_type& l) - { - return symbol_type (token::TOKEN_FLOAT, v, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_BOOLEAN (bool v, location_type l) - { - return symbol_type (token::TOKEN_BOOLEAN, std::move (v), std::move (l)); - } -#else - static - symbol_type - make_BOOLEAN (const bool& v, const location_type& l) - { - return symbol_type (token::TOKEN_BOOLEAN, v, l); - } -#endif + // Symbol constructors declarations. + static + symbol_type + make_END (YY_COPY (location_type) l); + + static + symbol_type + make_COMMA (YY_COPY (location_type) l); + + static + symbol_type + make_COLON (YY_COPY (location_type) l); + + static + symbol_type + make_LSQUARE_BRACKET (YY_COPY (location_type) l); + + static + symbol_type + make_RSQUARE_BRACKET (YY_COPY (location_type) l); + + static + symbol_type + make_LCURLY_BRACKET (YY_COPY (location_type) l); + + static + symbol_type + make_RCURLY_BRACKET (YY_COPY (location_type) l); + + static + symbol_type + make_NULL_TYPE (YY_COPY (location_type) l); + + static + symbol_type + make_DHCP6 (YY_COPY (location_type) l); + + static + symbol_type + make_DATA_DIRECTORY (YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_CONTROL (YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_DATABASES (YY_COPY (location_type) l); + + static + symbol_type + make_CONFIG_FETCH_WAIT_TIME (YY_COPY (location_type) l); + + static + symbol_type + make_INTERFACES_CONFIG (YY_COPY (location_type) l); + + static + symbol_type + make_INTERFACES (YY_COPY (location_type) l); + + static + symbol_type + make_RE_DETECT (YY_COPY (location_type) l); + + static + symbol_type + make_LEASE_DATABASE (YY_COPY (location_type) l); + + static + symbol_type + make_HOSTS_DATABASE (YY_COPY (location_type) l); + + static + symbol_type + make_HOSTS_DATABASES (YY_COPY (location_type) l); + + static + symbol_type + make_TYPE (YY_COPY (location_type) l); + + static + symbol_type + make_MEMFILE (YY_COPY (location_type) l); + + static + symbol_type + make_MYSQL (YY_COPY (location_type) l); + + static + symbol_type + make_POSTGRESQL (YY_COPY (location_type) l); + + static + symbol_type + make_CQL (YY_COPY (location_type) l); + + static + symbol_type + make_USER (YY_COPY (location_type) l); + + static + symbol_type + make_PASSWORD (YY_COPY (location_type) l); + + static + symbol_type + make_HOST (YY_COPY (location_type) l); + + static + symbol_type + make_PORT (YY_COPY (location_type) l); + + static + symbol_type + make_PERSIST (YY_COPY (location_type) l); + + static + symbol_type + make_LFC_INTERVAL (YY_COPY (location_type) l); + + static + symbol_type + make_READONLY (YY_COPY (location_type) l); + + static + symbol_type + make_CONNECT_TIMEOUT (YY_COPY (location_type) l); + + static + symbol_type + make_CONTACT_POINTS (YY_COPY (location_type) l); + + static + symbol_type + make_MAX_RECONNECT_TRIES (YY_COPY (location_type) l); + + static + symbol_type + make_RECONNECT_WAIT_TIME (YY_COPY (location_type) l); + + static + symbol_type + make_KEYSPACE (YY_COPY (location_type) l); + + static + symbol_type + make_CONSISTENCY (YY_COPY (location_type) l); + + static + symbol_type + make_SERIAL_CONSISTENCY (YY_COPY (location_type) l); + + static + symbol_type + make_REQUEST_TIMEOUT (YY_COPY (location_type) l); + + static + symbol_type + make_TCP_KEEPALIVE (YY_COPY (location_type) l); + + static + symbol_type + make_TCP_NODELAY (YY_COPY (location_type) l); + + static + symbol_type + make_PREFERRED_LIFETIME (YY_COPY (location_type) l); + + static + symbol_type + make_VALID_LIFETIME (YY_COPY (location_type) l); + + static + symbol_type + make_RENEW_TIMER (YY_COPY (location_type) l); + + static + symbol_type + make_REBIND_TIMER (YY_COPY (location_type) l); + + static + symbol_type + make_DECLINE_PROBATION_PERIOD (YY_COPY (location_type) l); + + static + symbol_type + make_SERVER_TAG (YY_COPY (location_type) l); + + static + symbol_type + make_SUBNET6 (YY_COPY (location_type) l); + + static + symbol_type + make_OPTION_DEF (YY_COPY (location_type) l); + + static + symbol_type + make_OPTION_DATA (YY_COPY (location_type) l); + + static + symbol_type + make_NAME (YY_COPY (location_type) l); + + static + symbol_type + make_DATA (YY_COPY (location_type) l); + + static + symbol_type + make_CODE (YY_COPY (location_type) l); + + static + symbol_type + make_SPACE (YY_COPY (location_type) l); + + static + symbol_type + make_CSV_FORMAT (YY_COPY (location_type) l); + + static + symbol_type + make_ALWAYS_SEND (YY_COPY (location_type) l); + + static + symbol_type + make_RECORD_TYPES (YY_COPY (location_type) l); + + static + symbol_type + make_ENCAPSULATE (YY_COPY (location_type) l); + + static + symbol_type + make_ARRAY (YY_COPY (location_type) l); + + static + symbol_type + make_POOLS (YY_COPY (location_type) l); + + static + symbol_type + make_POOL (YY_COPY (location_type) l); + + static + symbol_type + make_PD_POOLS (YY_COPY (location_type) l); + + static + symbol_type + make_PREFIX (YY_COPY (location_type) l); + + static + symbol_type + make_PREFIX_LEN (YY_COPY (location_type) l); + + static + symbol_type + make_EXCLUDED_PREFIX (YY_COPY (location_type) l); + + static + symbol_type + make_EXCLUDED_PREFIX_LEN (YY_COPY (location_type) l); + + static + symbol_type + make_DELEGATED_LEN (YY_COPY (location_type) l); + + static + symbol_type + make_USER_CONTEXT (YY_COPY (location_type) l); + + static + symbol_type + make_COMMENT (YY_COPY (location_type) l); + + static + symbol_type + make_SUBNET (YY_COPY (location_type) l); + + static + symbol_type + make_INTERFACE (YY_COPY (location_type) l); + + static + symbol_type + make_INTERFACE_ID (YY_COPY (location_type) l); + + static + symbol_type + make_ID (YY_COPY (location_type) l); + + static + symbol_type + make_RAPID_COMMIT (YY_COPY (location_type) l); + + static + symbol_type + make_RESERVATION_MODE (YY_COPY (location_type) l); + + static + symbol_type + make_DISABLED (YY_COPY (location_type) l); + + static + symbol_type + make_OUT_OF_POOL (YY_COPY (location_type) l); + + static + symbol_type + make_GLOBAL (YY_COPY (location_type) l); + + static + symbol_type + make_ALL (YY_COPY (location_type) l); + + static + symbol_type + make_SHARED_NETWORKS (YY_COPY (location_type) l); + + static + symbol_type + make_MAC_SOURCES (YY_COPY (location_type) l); + + static + symbol_type + make_RELAY_SUPPLIED_OPTIONS (YY_COPY (location_type) l); + + static + symbol_type + make_HOST_RESERVATION_IDENTIFIERS (YY_COPY (location_type) l); + + static + symbol_type + make_SANITY_CHECKS (YY_COPY (location_type) l); + + static + symbol_type + make_LEASE_CHECKS (YY_COPY (location_type) l); + + static + symbol_type + make_CLIENT_CLASSES (YY_COPY (location_type) l); + + static + symbol_type + make_REQUIRE_CLIENT_CLASSES (YY_COPY (location_type) l); + + static + symbol_type + make_TEST (YY_COPY (location_type) l); + + static + symbol_type + make_ONLY_IF_REQUIRED (YY_COPY (location_type) l); + + static + symbol_type + make_CLIENT_CLASS (YY_COPY (location_type) l); + + static + symbol_type + make_RESERVATIONS (YY_COPY (location_type) l); + + static + symbol_type + make_IP_ADDRESSES (YY_COPY (location_type) l); + + static + symbol_type + make_PREFIXES (YY_COPY (location_type) l); + + static + symbol_type + make_DUID (YY_COPY (location_type) l); + + static + symbol_type + make_HW_ADDRESS (YY_COPY (location_type) l); + + static + symbol_type + make_HOSTNAME (YY_COPY (location_type) l); + + static + symbol_type + make_FLEX_ID (YY_COPY (location_type) l); + + static + symbol_type + make_RELAY (YY_COPY (location_type) l); + + static + symbol_type + make_IP_ADDRESS (YY_COPY (location_type) l); + + static + symbol_type + make_HOOKS_LIBRARIES (YY_COPY (location_type) l); + + static + symbol_type + make_LIBRARY (YY_COPY (location_type) l); + + static + symbol_type + make_PARAMETERS (YY_COPY (location_type) l); + + static + symbol_type + make_EXPIRED_LEASES_PROCESSING (YY_COPY (location_type) l); + + static + symbol_type + make_RECLAIM_TIMER_WAIT_TIME (YY_COPY (location_type) l); + + static + symbol_type + make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (YY_COPY (location_type) l); + + static + symbol_type + make_HOLD_RECLAIMED_TIME (YY_COPY (location_type) l); + + static + symbol_type + make_MAX_RECLAIM_LEASES (YY_COPY (location_type) l); + + static + symbol_type + make_MAX_RECLAIM_TIME (YY_COPY (location_type) l); + + static + symbol_type + make_UNWARNED_RECLAIM_CYCLES (YY_COPY (location_type) l); + + static + symbol_type + make_SERVER_ID (YY_COPY (location_type) l); + + static + symbol_type + make_LLT (YY_COPY (location_type) l); + + static + symbol_type + make_EN (YY_COPY (location_type) l); + + static + symbol_type + make_LL (YY_COPY (location_type) l); + + static + symbol_type + make_IDENTIFIER (YY_COPY (location_type) l); + + static + symbol_type + make_HTYPE (YY_COPY (location_type) l); + + static + symbol_type + make_TIME (YY_COPY (location_type) l); + + static + symbol_type + make_ENTERPRISE_ID (YY_COPY (location_type) l); + + static + symbol_type + make_DHCP4O6_PORT (YY_COPY (location_type) l); + + static + symbol_type + make_CONTROL_SOCKET (YY_COPY (location_type) l); + + static + symbol_type + make_SOCKET_TYPE (YY_COPY (location_type) l); + + static + symbol_type + make_SOCKET_NAME (YY_COPY (location_type) l); + + static + symbol_type + make_DHCP_QUEUE_CONTROL (YY_COPY (location_type) l); + + static + symbol_type + make_DHCP_DDNS (YY_COPY (location_type) l); + + static + symbol_type + make_ENABLE_UPDATES (YY_COPY (location_type) l); + + static + symbol_type + make_QUALIFYING_SUFFIX (YY_COPY (location_type) l); + + static + symbol_type + make_SERVER_IP (YY_COPY (location_type) l); + + static + symbol_type + make_SERVER_PORT (YY_COPY (location_type) l); + + static + symbol_type + make_SENDER_IP (YY_COPY (location_type) l); + + static + symbol_type + make_SENDER_PORT (YY_COPY (location_type) l); + + static + symbol_type + make_MAX_QUEUE_SIZE (YY_COPY (location_type) l); + + static + symbol_type + make_NCR_PROTOCOL (YY_COPY (location_type) l); + + static + symbol_type + make_NCR_FORMAT (YY_COPY (location_type) l); + + static + symbol_type + make_OVERRIDE_NO_UPDATE (YY_COPY (location_type) l); + + static + symbol_type + make_OVERRIDE_CLIENT_UPDATE (YY_COPY (location_type) l); + + static + symbol_type + make_REPLACE_CLIENT_NAME (YY_COPY (location_type) l); + + static + symbol_type + make_GENERATED_PREFIX (YY_COPY (location_type) l); + + static + symbol_type + make_UDP (YY_COPY (location_type) l); + + static + symbol_type + make_TCP (YY_COPY (location_type) l); + + static + symbol_type + make_JSON (YY_COPY (location_type) l); + + static + symbol_type + make_WHEN_PRESENT (YY_COPY (location_type) l); + + static + symbol_type + make_NEVER (YY_COPY (location_type) l); + + static + symbol_type + make_ALWAYS (YY_COPY (location_type) l); + + static + symbol_type + make_WHEN_NOT_PRESENT (YY_COPY (location_type) l); + + static + symbol_type + make_HOSTNAME_CHAR_SET (YY_COPY (location_type) l); + + static + symbol_type + make_HOSTNAME_CHAR_REPLACEMENT (YY_COPY (location_type) l); + + static + symbol_type + make_LOGGING (YY_COPY (location_type) l); + + static + symbol_type + make_LOGGERS (YY_COPY (location_type) l); + + static + symbol_type + make_OUTPUT_OPTIONS (YY_COPY (location_type) l); + + static + symbol_type + make_OUTPUT (YY_COPY (location_type) l); + + static + symbol_type + make_DEBUGLEVEL (YY_COPY (location_type) l); + + static + symbol_type + make_SEVERITY (YY_COPY (location_type) l); + + static + symbol_type + make_FLUSH (YY_COPY (location_type) l); + + static + symbol_type + make_MAXSIZE (YY_COPY (location_type) l); + + static + symbol_type + make_MAXVER (YY_COPY (location_type) l); + + static + symbol_type + make_DHCP4 (YY_COPY (location_type) l); + + static + symbol_type + make_DHCPDDNS (YY_COPY (location_type) l); + + static + symbol_type + make_CONTROL_AGENT (YY_COPY (location_type) l); + + static + symbol_type + make_TOPLEVEL_JSON (YY_COPY (location_type) l); + + static + symbol_type + make_TOPLEVEL_DHCP6 (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_DHCP6 (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_INTERFACES6 (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_SUBNET6 (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_POOL6 (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_PD_POOL (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_RESERVATION (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_OPTION_DEFS (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_OPTION_DEF (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_OPTION_DATA (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_HOOKS_LIBRARY (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_DHCP_DDNS (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_LOGGING (YY_COPY (location_type) l); + + static + symbol_type + make_SUB_CONFIG_CONTROL (YY_COPY (location_type) l); + + static + symbol_type + make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l); + + static + symbol_type + make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l); + + static + symbol_type + make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l); + + static + symbol_type + make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l); + private: @@ -3701,26 +1662,26 @@ switch (yytype) struct by_state { /// Default constructor. - by_state () YY_NOEXCEPT; + by_state (); /// The symbol type as needed by the constructor. typedef state_type kind_type; /// Constructor. - by_state (kind_type s) YY_NOEXCEPT; + by_state (kind_type s); /// Copy constructor. - by_state (const by_state& that) YY_NOEXCEPT; + by_state (const by_state& other); /// Record that this symbol is empty. - void clear () YY_NOEXCEPT; + void clear (); /// Steal the symbol type from \a that. void move (by_state& that); /// The (internal) type number (corresponding to \a state). /// \a empty_symbol when empty. - symbol_number_type type_get () const YY_NOEXCEPT; + symbol_number_type type_get () const; /// The state number used to denote an empty symbol. enum { empty_state = -1 }; @@ -3741,137 +1702,13 @@ switch (yytype) stack_symbol_type (YY_RVREF (stack_symbol_type) that); /// Steal the contents from \a sym to build this. stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym); -#if YY_CPLUSPLUS < 201103L +#if !defined __cplusplus || __cplusplus < 201103L /// Assignment, needed by push_back by some old implementations. /// Moves the contents of that. stack_symbol_type& operator= (stack_symbol_type& that); #endif }; - /// A stack with random access from its top. - template > - class stack - { - public: - // Hide our reversed order. - typedef typename S::reverse_iterator iterator; - typedef typename S::const_reverse_iterator const_iterator; - typedef typename S::size_type size_type; - - stack (size_type n = 200) - : seq_ (n) - {} - - /// Random access. - /// - /// Index 0 returns the topmost element. - T& - operator[] (size_type i) - { - return seq_[size () - 1 - i]; - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - T& - operator[] (int i) - { - return operator[] (size_type (i)); - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - const T& - operator[] (size_type i) const - { - return seq_[size () - 1 - i]; - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - const T& - operator[] (int i) const - { - return operator[] (size_type (i)); - } - - /// Steal the contents of \a t. - /// - /// Close to move-semantics. - void - push (YY_MOVE_REF (T) t) - { - seq_.push_back (T ()); - operator[] (0).move (t); - } - - /// Pop elements from the stack. - void - pop (int n = 1) YY_NOEXCEPT - { - for (; 0 < n; --n) - seq_.pop_back (); - } - - /// Pop all elements from the stack. - void - clear () YY_NOEXCEPT - { - seq_.clear (); - } - - /// Number of elements on the stack. - size_type - size () const YY_NOEXCEPT - { - return seq_.size (); - } - - /// Iterator on top of the stack (going downwards). - const_iterator - begin () const YY_NOEXCEPT - { - return seq_.rbegin (); - } - - /// Bottom of the stack. - const_iterator - end () const YY_NOEXCEPT - { - return seq_.rend (); - } - - /// Present a slice of the top of a stack. - class slice - { - public: - slice (const stack& stack, int range) - : stack_ (stack) - , range_ (range) - {} - - const T& - operator[] (int i) const - { - return stack_[range_ - i]; - } - - private: - const stack& stack_; - int range_; - }; - - private: - stack (const stack&); - stack& operator= (const stack&); - /// The wrapped container. - S seq_; - }; - - /// Stack type. typedef stack stack_type; @@ -3900,12 +1737,12 @@ switch (yytype) enum { yyeof_ = 0, - yylast_ = 1035, ///< Last index in yytable_. - yynnts_ = 395, ///< Number of nonterminal symbols. + yylast_ = 1039, ///< Last index in yytable_. + yynnts_ = 396, ///< Number of nonterminal symbols. yyfinal_ = 32, ///< Termination state number. yyterror_ = 1, yyerrcode_ = 256, - yyntokens_ = 177 ///< Number of tokens. + yyntokens_ = 178 ///< Number of tokens. }; @@ -3913,17 +1750,16 @@ switch (yytype) isc::dhcp::Parser6Context& ctx; }; + // Symbol number corresponding to token number t. inline Dhcp6Parser::token_number_type Dhcp6Parser::yytranslate_ (token_type t) { - // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to - // TOKEN-NUM as returned by yylex. static const token_number_type translate_table[] = { - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -3966,9 +1802,9 @@ switch (yytype) 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176 + 175, 176, 177 }; - const unsigned user_token_number_max_ = 431; + const unsigned user_token_number_max_ = 432; const token_number_type undef_token_ = 2; if (static_cast (t) <= yyeof_) @@ -3979,81 +1815,51 @@ switch (yytype) return undef_token_; } + inline + Dhcp6Parser::syntax_error::syntax_error (const location_type& l, const std::string& m) + : std::runtime_error (m) + , location (l) + {} + // basic_symbol. -#if 201103L <= YY_CPLUSPLUS template - Dhcp6Parser::basic_symbol::basic_symbol (basic_symbol&& that) - : Base (std::move (that)) - , value () - , location (std::move (that.location)) - { - switch (this->type_get ()) - { - case 194: // value - case 198: // map_value - case 252: // db_type - case 345: // hr_mode - case 481: // duid_type - case 516: // ncr_protocol_value - case 523: // replace_client_name_value - value.move< ElementPtr > (std::move (that.value)); - break; - - case 176: // "boolean" - value.move< bool > (std::move (that.value)); - break; - - case 175: // "floating point" - value.move< double > (std::move (that.value)); - break; - - case 174: // "integer" - value.move< int64_t > (std::move (that.value)); - break; - - case 173: // "constant string" - value.move< std::string > (std::move (that.value)); - break; - - default: - break; - } - - } -#endif + Dhcp6Parser::basic_symbol::basic_symbol () + : value () + , location () + {} template - Dhcp6Parser::basic_symbol::basic_symbol (const basic_symbol& that) - : Base (that) + Dhcp6Parser::basic_symbol::basic_symbol (YY_RVREF (basic_symbol) other) + : Base (YY_MOVE (other)) , value () - , location (that.location) + , location (YY_MOVE (other.location)) { - switch (this->type_get ()) + switch (other.type_get ()) { - case 194: // value - case 198: // map_value - case 252: // db_type - case 345: // hr_mode - case 481: // duid_type - case 516: // ncr_protocol_value - case 523: // replace_client_name_value - value.copy< ElementPtr > (YY_MOVE (that.value)); + case 195: // value + case 199: // map_value + case 253: // db_type + case 346: // hr_mode + case 482: // duid_type + case 517: // ncr_protocol_value + case 524: // replace_client_name_value + value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (other.value)); break; - case 176: // "boolean" - value.copy< bool > (YY_MOVE (that.value)); + case 177: // "boolean" + value.YY_MOVE_OR_COPY< bool > (YY_MOVE (other.value)); break; - case 175: // "floating point" - value.copy< double > (YY_MOVE (that.value)); + case 176: // "floating point" + value.YY_MOVE_OR_COPY< double > (YY_MOVE (other.value)); break; - case 174: // "integer" - value.copy< int64_t > (YY_MOVE (that.value)); + case 175: // "integer" + value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (other.value)); break; - case 173: // "constant string" - value.copy< std::string > (YY_MOVE (that.value)); + case 174: // "constant string" + value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value)); break; default: @@ -4063,10 +1869,109 @@ switch (yytype) } + // Implementation of basic_symbol constructor for each type. + template + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (location_type) l) + : Base (t) + , location (YY_MOVE (l)) + {} + + template + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (ElementPtr) v, YY_RVREF (location_type) l) + : Base (t) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) + {} + + template + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (bool) v, YY_RVREF (location_type) l) + : Base (t) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) + {} + + template + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (double) v, YY_RVREF (location_type) l) + : Base (t) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) + {} + + template + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (int64_t) v, YY_RVREF (location_type) l) + : Base (t) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) + {} + + template + Dhcp6Parser::basic_symbol::basic_symbol (typename Base::kind_type t, YY_RVREF (std::string) v, YY_RVREF (location_type) l) + : Base (t) + , value (YY_MOVE (v)) + , location (YY_MOVE (l)) + {} + + + + template + Dhcp6Parser::basic_symbol::~basic_symbol () + { + clear (); + } + + template + void + Dhcp6Parser::basic_symbol::clear () + { + // User destructor. + symbol_number_type yytype = this->type_get (); + basic_symbol& yysym = *this; + (void) yysym; + switch (yytype) + { + default: + break; + } + + // Type destructor. + switch (yytype) + { + case 195: // value + case 199: // map_value + case 253: // db_type + case 346: // hr_mode + case 482: // duid_type + case 517: // ncr_protocol_value + case 524: // replace_client_name_value + value.template destroy< ElementPtr > (); + break; + + case 177: // "boolean" + value.template destroy< bool > (); + break; + + case 176: // "floating point" + value.template destroy< double > (); + break; + + case 175: // "integer" + value.template destroy< int64_t > (); + break; + + case 174: // "constant string" + value.template destroy< std::string > (); + break; + + default: + break; + } + + Base::clear (); + } template bool - Dhcp6Parser::basic_symbol::empty () const YY_NOEXCEPT + Dhcp6Parser::basic_symbol::empty () const { return Base::type_get () == empty_symbol; } @@ -4078,29 +1983,29 @@ switch (yytype) super_type::move (s); switch (this->type_get ()) { - case 194: // value - case 198: // map_value - case 252: // db_type - case 345: // hr_mode - case 481: // duid_type - case 516: // ncr_protocol_value - case 523: // replace_client_name_value + case 195: // value + case 199: // map_value + case 253: // db_type + case 346: // hr_mode + case 482: // duid_type + case 517: // ncr_protocol_value + case 524: // replace_client_name_value value.move< ElementPtr > (YY_MOVE (s.value)); break; - case 176: // "boolean" + case 177: // "boolean" value.move< bool > (YY_MOVE (s.value)); break; - case 175: // "floating point" + case 176: // "floating point" value.move< double > (YY_MOVE (s.value)); break; - case 174: // "integer" + case 175: // "integer" value.move< int64_t > (YY_MOVE (s.value)); break; - case 173: // "constant string" + case 174: // "constant string" value.move< std::string > (YY_MOVE (s.value)); break; @@ -4117,18 +2022,9 @@ switch (yytype) : type (empty_symbol) {} -#if 201103L <= YY_CPLUSPLUS inline - Dhcp6Parser::by_type::by_type (by_type&& that) - : type (that.type) - { - that.clear (); - } -#endif - - inline - Dhcp6Parser::by_type::by_type (const by_type& that) - : type (that.type) + Dhcp6Parser::by_type::by_type (const by_type& other) + : type (other.type) {} inline @@ -4153,14 +2049,14 @@ switch (yytype) inline int - Dhcp6Parser::by_type::type_get () const YY_NOEXCEPT + Dhcp6Parser::by_type::type_get () const { return type; } inline Dhcp6Parser::token_type - Dhcp6Parser::by_type::token () const YY_NOEXCEPT + Dhcp6Parser::by_type::token () const { // YYTOKNUM[NUM] -- (External) token number corresponding to the // (internal) symbol number NUM (which must be that of a token). */ @@ -4185,14 +2081,1248 @@ switch (yytype) 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431 + 425, 426, 427, 428, 429, 430, 431, 432 }; - return token_type (yytoken_number_[type]); + return static_cast (yytoken_number_[type]); } -#line 14 "dhcp6_parser.yy" // lalr1.cc:401 + // Implementation of make_symbol for each symbol type. + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_END (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_END, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_COMMA (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_COMMA, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_COLON (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_COLON, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LSQUARE_BRACKET (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LSQUARE_BRACKET, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RSQUARE_BRACKET (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RSQUARE_BRACKET, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LCURLY_BRACKET (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LCURLY_BRACKET, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RCURLY_BRACKET (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RCURLY_BRACKET, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_NULL_TYPE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_NULL_TYPE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DHCP6 (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DHCP6, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DATA_DIRECTORY (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DATA_DIRECTORY, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONFIG_CONTROL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CONFIG_CONTROL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONFIG_DATABASES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CONFIG_DATABASES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONFIG_FETCH_WAIT_TIME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CONFIG_FETCH_WAIT_TIME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_INTERFACES_CONFIG (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_INTERFACES_CONFIG, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_INTERFACES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_INTERFACES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RE_DETECT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RE_DETECT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LEASE_DATABASE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LEASE_DATABASE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOSTS_DATABASE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HOSTS_DATABASE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOSTS_DATABASES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HOSTS_DATABASES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TYPE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_TYPE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MEMFILE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MEMFILE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MYSQL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MYSQL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_POSTGRESQL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_POSTGRESQL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CQL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CQL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_USER (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_USER, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PASSWORD (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_PASSWORD, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOST (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HOST, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PORT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_PORT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PERSIST (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_PERSIST, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LFC_INTERVAL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LFC_INTERVAL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_READONLY (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_READONLY, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONNECT_TIMEOUT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CONNECT_TIMEOUT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONTACT_POINTS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CONTACT_POINTS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAX_RECONNECT_TRIES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RECONNECT_WAIT_TIME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_KEYSPACE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_KEYSPACE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONSISTENCY (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CONSISTENCY, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SERIAL_CONSISTENCY (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SERIAL_CONSISTENCY, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_REQUEST_TIMEOUT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_REQUEST_TIMEOUT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TCP_KEEPALIVE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_TCP_KEEPALIVE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TCP_NODELAY (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_TCP_NODELAY, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PREFERRED_LIFETIME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_PREFERRED_LIFETIME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_VALID_LIFETIME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_VALID_LIFETIME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RENEW_TIMER (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RENEW_TIMER, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_REBIND_TIMER (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_REBIND_TIMER, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DECLINE_PROBATION_PERIOD (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SERVER_TAG (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SERVER_TAG, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUBNET6 (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUBNET6, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OPTION_DEF (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_OPTION_DEF, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OPTION_DATA (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_OPTION_DATA, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_NAME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_NAME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DATA (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DATA, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CODE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CODE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SPACE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SPACE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CSV_FORMAT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CSV_FORMAT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ALWAYS_SEND (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_ALWAYS_SEND, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RECORD_TYPES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RECORD_TYPES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ENCAPSULATE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_ENCAPSULATE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ARRAY (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_ARRAY, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_POOLS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_POOLS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_POOL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_POOL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PD_POOLS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_PD_POOLS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PREFIX (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_PREFIX, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PREFIX_LEN (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_PREFIX_LEN, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_EXCLUDED_PREFIX (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_EXCLUDED_PREFIX, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_EXCLUDED_PREFIX_LEN (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_EXCLUDED_PREFIX_LEN, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DELEGATED_LEN (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DELEGATED_LEN, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_USER_CONTEXT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_USER_CONTEXT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_COMMENT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_COMMENT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUBNET (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUBNET, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_INTERFACE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_INTERFACE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_INTERFACE_ID (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_INTERFACE_ID, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ID (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_ID, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RAPID_COMMIT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RAPID_COMMIT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RESERVATION_MODE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RESERVATION_MODE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DISABLED (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DISABLED, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OUT_OF_POOL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_OUT_OF_POOL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_GLOBAL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_GLOBAL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ALL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_ALL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SHARED_NETWORKS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SHARED_NETWORKS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAC_SOURCES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MAC_SOURCES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RELAY_SUPPLIED_OPTIONS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RELAY_SUPPLIED_OPTIONS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOST_RESERVATION_IDENTIFIERS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SANITY_CHECKS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SANITY_CHECKS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LEASE_CHECKS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LEASE_CHECKS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CLIENT_CLASSES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CLIENT_CLASSES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_REQUIRE_CLIENT_CLASSES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TEST (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_TEST, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ONLY_IF_REQUIRED (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CLIENT_CLASS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CLIENT_CLASS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RESERVATIONS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RESERVATIONS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_IP_ADDRESSES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_IP_ADDRESSES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PREFIXES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_PREFIXES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DUID (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DUID, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HW_ADDRESS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HW_ADDRESS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOSTNAME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HOSTNAME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_FLEX_ID (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_FLEX_ID, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RELAY (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RELAY, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_IP_ADDRESS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_IP_ADDRESS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOOKS_LIBRARIES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HOOKS_LIBRARIES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LIBRARY (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LIBRARY, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_PARAMETERS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_PARAMETERS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_EXPIRED_LEASES_PROCESSING (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_RECLAIM_TIMER_WAIT_TIME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOLD_RECLAIMED_TIME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAX_RECLAIM_LEASES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAX_RECLAIM_TIME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_UNWARNED_RECLAIM_CYCLES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SERVER_ID (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SERVER_ID, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LLT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LLT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_EN (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_EN, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_IDENTIFIER (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_IDENTIFIER, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HTYPE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HTYPE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TIME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_TIME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ENTERPRISE_ID (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_ENTERPRISE_ID, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DHCP4O6_PORT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DHCP4O6_PORT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONTROL_SOCKET (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CONTROL_SOCKET, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SOCKET_TYPE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SOCKET_TYPE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SOCKET_NAME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SOCKET_NAME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DHCP_QUEUE_CONTROL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DHCP_DDNS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DHCP_DDNS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ENABLE_UPDATES (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_ENABLE_UPDATES, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_QUALIFYING_SUFFIX (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SERVER_IP (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SERVER_IP, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SERVER_PORT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SERVER_PORT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SENDER_IP (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SENDER_IP, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SENDER_PORT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SENDER_PORT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAX_QUEUE_SIZE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_NCR_PROTOCOL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_NCR_PROTOCOL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_NCR_FORMAT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_NCR_FORMAT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OVERRIDE_NO_UPDATE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OVERRIDE_CLIENT_UPDATE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_REPLACE_CLIENT_NAME (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_GENERATED_PREFIX (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_GENERATED_PREFIX, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_UDP (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_UDP, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TCP (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_TCP, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_JSON (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_JSON, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_WHEN_PRESENT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_WHEN_PRESENT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_NEVER (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_NEVER, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_ALWAYS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_ALWAYS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_WHEN_NOT_PRESENT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOSTNAME_CHAR_SET (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_HOSTNAME_CHAR_REPLACEMENT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LOGGING (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LOGGING, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_LOGGERS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_LOGGERS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OUTPUT_OPTIONS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_OUTPUT_OPTIONS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_OUTPUT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_OUTPUT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DEBUGLEVEL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DEBUGLEVEL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SEVERITY (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SEVERITY, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_FLUSH (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_FLUSH, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAXSIZE (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MAXSIZE, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_MAXVER (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_MAXVER, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DHCP4 (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DHCP4, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_DHCPDDNS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_DHCPDDNS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_CONTROL_AGENT (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_CONTROL_AGENT, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TOPLEVEL_JSON (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_TOPLEVEL_JSON, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_TOPLEVEL_DHCP6 (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_TOPLEVEL_DHCP6, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_DHCP6 (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_DHCP6, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_INTERFACES6 (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_INTERFACES6, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_SUBNET6 (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_SUBNET6, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_POOL6 (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_POOL6, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_PD_POOL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_PD_POOL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_RESERVATION (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_RESERVATION, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_OPTION_DEFS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_OPTION_DEFS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_OPTION_DEF (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_OPTION_DEF, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_OPTION_DATA (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_OPTION_DATA, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_HOOKS_LIBRARY (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_DHCP_DDNS (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_DHCP_DDNS, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_LOGGING (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_LOGGING, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_SUB_CONFIG_CONTROL (YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_STRING, YY_MOVE (v), YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_INTEGER, YY_MOVE (v), YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_FLOAT, YY_MOVE (v), YY_MOVE (l)); + } + + inline + Dhcp6Parser::symbol_type + Dhcp6Parser::make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l) + { + return symbol_type (token::TOKEN_BOOLEAN, YY_MOVE (v), YY_MOVE (l)); + } + + +#line 14 "dhcp6_parser.yy" // lalr1.cc:404 } } // isc::dhcp -#line 4196 "dhcp6_parser.h" // lalr1.cc:401 +#line 3326 "dhcp6_parser.h" // lalr1.cc:404 diff --git a/src/bin/dhcp6/dhcp6_parser.yy b/src/bin/dhcp6/dhcp6_parser.yy index e1aabb6d49..bd321f3d99 100644 --- a/src/bin/dhcp6/dhcp6_parser.yy +++ b/src/bin/dhcp6/dhcp6_parser.yy @@ -53,6 +53,8 @@ using namespace std; DATA_DIRECTORY "data-directory" CONFIG_CONTROL "config-control" CONFIG_DATABASES "config-databases" + CONFIG_FETCH_WAIT_TIME "config-fetch-wait-time" + INTERFACES_CONFIG "interfaces-config" INTERFACES "interfaces" RE_DETECT "re-detect" @@ -2219,6 +2221,7 @@ config_control_params: config_control_param // This defines a list of allowed parameters for each subnet. config_control_param: config_databases + | config_fetch_wait_time ; config_databases: CONFIG_DATABASES { @@ -2231,6 +2234,11 @@ config_databases: CONFIG_DATABASES { ctx.leave(); }; +config_fetch_wait_time: CONFIG_FETCH_WAIT_TIME COLON INTEGER { + ElementPtr value(new IntElement($3, ctx.loc2pos(@3))); + ctx.stack_.back()->set("config-fetch-wait-time", value); +}; + // --- logging entry ----------------------------------------- // This defines the top level "Logging" object. It parses diff --git a/src/bin/dhcp6/dhcp6_srv.cc b/src/bin/dhcp6/dhcp6_srv.cc index f2b6f72391..fba6cfbbe5 100644 --- a/src/bin/dhcp6/dhcp6_srv.cc +++ b/src/bin/dhcp6/dhcp6_srv.cc @@ -183,9 +183,8 @@ Dhcpv6Srv::Dhcpv6Srv(uint16_t server_port, uint16_t client_port) : io_service_(new IOService()), server_port_(server_port), client_port_(client_port), serverid_(), shutdown_(true), alloc_engine_(), name_change_reqs_(), - network_state_(new NetworkState(NetworkState::DHCPv6)) -{ - + network_state_(new NetworkState(NetworkState::DHCPv6)), + cb_control_(new CBControlDHCPv6()) { LOG_DEBUG(dhcp6_logger, DBG_DHCP6_START, DHCP6_OPEN_SOCKET) .arg(server_port); diff --git a/src/bin/dhcp6/dhcp6_srv.h b/src/bin/dhcp6/dhcp6_srv.h index 36b54ee8c4..1e0670cc6e 100644 --- a/src/bin/dhcp6/dhcp6_srv.h +++ b/src/bin/dhcp6/dhcp6_srv.h @@ -1,4 +1,4 @@ -// Copyright (C) 2011-2018 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2011-2019 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 @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -88,6 +89,14 @@ public: /// @brief Destructor. Used during DHCPv6 service shutdown. virtual ~Dhcpv6Srv(); + /// @brief Checks if the server is running in unit test mode. + /// + /// @return true if the server is running in unit test mode, + /// false otherwise. + bool inTestMode() const { + return (server_port_ == 0); + } + /// @brief Returns pointer to the IO service used by the server. asiolink::IOServicePtr& getIOService() { return (io_service_); @@ -98,6 +107,15 @@ public: return (network_state_); } + /// @brief Returns an object which controls access to the configuration + /// backends. + /// + /// @return Pointer to the instance of the object which controls + /// access to the configuration backends. + CBControlDHCPv6Ptr getCBControl() const { + return (cb_control_); + } + /// @brief returns Kea version on stdout and exit. /// redeclaration/redefinition. @ref isc::process::Daemon::getVersion() static std::string getVersion(bool extended); @@ -998,6 +1016,8 @@ protected: /// disabled subnet/network scopes. NetworkStatePtr network_state_; + /// @brief Controls access to the configuration backends. + CBControlDHCPv6Ptr cb_control_; }; }; // namespace isc::dhcp diff --git a/src/bin/dhcp6/json_config_parser.cc b/src/bin/dhcp6/json_config_parser.cc index d714a15212..eb35959201 100644 --- a/src/bin/dhcp6/json_config_parser.cc +++ b/src/bin/dhcp6/json_config_parser.cc @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -419,6 +420,7 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, if (!check_only) { TimerMgr::instance()->unregisterTimers(); server.discardPackets(); + server.getCBControl()->reset(); } // Revert any runtime option definitions configured so far and not committed. @@ -444,9 +446,10 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, // the parsers. It is declared outside the loop so in case of error, the // name of the failing parser can be retrieved within the "catch" clause. ConfigPair config_pair; + SrvConfigPtr srv_config; try { - - SrvConfigPtr srv_config = CfgMgr::instance().getStagingCfg(); + // Get the staging configuration. + srv_config = CfgMgr::instance().getStagingCfg(); // Preserve all scalar global parameters srv_config->extractConfiguredGlobals(config_set); @@ -739,6 +742,10 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, const HooksConfig& libraries = CfgMgr::instance().getStagingCfg()->getHooksConfig(); libraries.loadLibraries(); + + // If there are config backends, fetch and merge into staging config + server.getCBControl()->databaseConfigFetch(srv_config, + CBControlDHCPv6::FetchMode::FETCH_ALL); } catch (const isc::Exception& ex) { LOG_ERROR(dhcp6_logger, DHCP6_PARSER_COMMIT_FAIL).arg(ex.what()); diff --git a/src/bin/dhcp6/location.hh b/src/bin/dhcp6/location.hh index b080712231..94d877060d 100644 --- a/src/bin/dhcp6/location.hh +++ b/src/bin/dhcp6/location.hh @@ -1,9 +1,8 @@ -// Generated 201903231444 -// A Bison parser, made by GNU Bison 3.3.2. +// A Bison parser, made by GNU Bison 3.2.1. // Locations for Bison parsers in C++ -// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by diff --git a/src/bin/dhcp6/position.hh b/src/bin/dhcp6/position.hh index bc115ead3e..22ef35f744 100644 --- a/src/bin/dhcp6/position.hh +++ b/src/bin/dhcp6/position.hh @@ -1,5 +1,4 @@ -// Generated 201903231444 -// A Bison parser, made by GNU Bison 3.3.2. +// A Bison parser, made by GNU Bison 3.2.1. // Starting with Bison 3.2, this file is useless: the structure it // used to define is now defined in "location.hh". diff --git a/src/bin/dhcp6/stack.hh b/src/bin/dhcp6/stack.hh index 6701827115..81e152d836 100644 --- a/src/bin/dhcp6/stack.hh +++ b/src/bin/dhcp6/stack.hh @@ -1,5 +1,4 @@ -// Generated 201903231444 -// A Bison parser, made by GNU Bison 3.3.2. +// A Bison parser, made by GNU Bison 3.2.1. // Starting with Bison 3.2, this file is useless: the structure it // used to define is now defined with the parser itself. diff --git a/src/bin/dhcp6/tests/config_backend_unittest.cc b/src/bin/dhcp6/tests/config_backend_unittest.cc new file mode 100644 index 0000000000..3875818184 --- /dev/null +++ b/src/bin/dhcp6/tests/config_backend_unittest.cc @@ -0,0 +1,510 @@ +// Copyright (C) 2019 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 +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dhcp6_test_utils.h" +#include "get_config_unittest.h" + +#include +#include + +#include +#include +#include +#include + +using namespace isc::asiolink; +using namespace isc::config; +using namespace isc::data; +using namespace isc::dhcp; +using namespace isc::dhcp::test; +using namespace isc::db; +using namespace std; + +namespace { + +/// @brief Test fixture for testing external configuration merging +class Dhcp6CBTest : public GenericBackendTest { +protected: + /// @brief Pre test set up + /// Called prior to each test. It creates two configuration backends + /// that differ by host name ("db1" and "db2"). It then registers + /// a backend factory that will return them rather than create + /// new instances. The backends need to pre-exist so they can be + /// populated prior to calling server configure. It uses + /// TestConfigBackend instances but with a type of "memfile" to pass + /// parsing. Doing it all here allows us to use ASSERTs if we feel like + /// it. + virtual void SetUp() { + DatabaseConnection::ParameterMap params; + params[std::string("type")] = std::string("memfile"); + params[std::string("host")] = std::string("db1"); + db1_.reset(new TestConfigBackendDHCPv6(params)); + + params[std::string("host")] = std::string("db2"); + db2_.reset(new TestConfigBackendDHCPv6(params)); + + ConfigBackendDHCPv6Mgr::instance().registerBackendFactory("memfile", + [this](const DatabaseConnection::ParameterMap& params) + -> ConfigBackendDHCPv6Ptr { + auto host = params.find("host"); + if (host != params.end()) { + if (host->second == "db1") { + return (db1_); + } else if (host->second == "db2") { + return (db2_); + } + } + + // Apparently we're looking for one that does not prexist. + return (TestConfigBackendDHCPv6Ptr(new TestConfigBackendDHCPv6(params))); + }); + } + + /// @brief Clean up after each test + virtual void TearDown() { + // Unregister the factory to be tidy. + ConfigBackendDHCPv6Mgr::instance().unregisterBackendFactory("memfile"); + } + +public: + + /// Constructor + Dhcp6CBTest() + : rcode_(-1), db1_selector("db1"), db2_selector("db1") { + // Open port 0 means to not do anything at all. We don't want to + // deal with sockets here, just check if configuration handling + // is sane. + srv_.reset(new ControlledDhcpv6Srv(0)); + + // Create fresh context. + resetConfiguration(); + } + + /// Destructor + virtual ~Dhcp6CBTest() { + resetConfiguration(); + }; + + /// @brief Reset configuration singletons. + void resetConfiguration() { + CfgMgr::instance().clear(); + ConfigBackendDHCPv6Mgr::destroy(); + } + + /// @brief Convenience method for running configuration + /// + /// This method does not throw, but signals errors using gtest macros. + /// + /// @param config text to be parsed as JSON + /// @param expected_code expected code (see cc/command_interpreter.h) + /// @param exp_error expected text error (check skipped if empty) + void configure(std::string config, int expected_code, + std::string exp_error = "") { + ConstElementPtr json; + try { + json = parseDHCP6(config, true); + } catch(const std::exception& ex) { + ADD_FAILURE() << "parseDHCP6 failed: " << ex.what(); + } + + ConstElementPtr status; + ASSERT_NO_THROW(status = configureDhcp6Server(*srv_, json)); + ASSERT_TRUE(status); + + int rcode; + ConstElementPtr comment = parseAnswer(rcode, status); + ASSERT_EQ(expected_code, rcode) << " comment: " + << comment->stringValue(); + + string text; + ASSERT_NO_THROW(text = comment->stringValue()); + + if (expected_code != rcode) { + std::cout << "Reported status: " << text << std::endl; + } + + if ((rcode != 0)) { + if (!exp_error.empty()) { + ASSERT_EQ(exp_error, text); + } + } + } + + boost::scoped_ptr srv_; ///< DHCP6 server under test + int rcode_; ///< Return code from element parsing + ConstElementPtr comment_; ///< Reason for parse fail + + BackendSelector db1_selector; ///< BackendSelector by host for first config backend + BackendSelector db2_selector; ///< BackendSelector by host for second config backend + + TestConfigBackendDHCPv6Ptr db1_; ///< First configuration backend instance + TestConfigBackendDHCPv6Ptr db2_; ///< Second configuration backend instance +}; + +// This test verifies that externally configured globals are +// merged correctly into staging configuration. +TEST_F(Dhcp6CBTest, mergeGlobals) { + string base_config = + "{ \n" + " \"interfaces-config\": { \n" + " \"interfaces\": [\"*\" ] \n" + " }, \n" + " \"echo-client-id\": false, \n" + " \"decline-probation-period\": 7000, \n" + " \"valid-lifetime\": 1000, \n" + " \"rebind-timer\": 800, \n" + " \"server-hostname\": \"overwrite.me.com\", \n" + " \"config-control\": { \n" + " \"config-databases\": [ { \n" + " \"type\": \"memfile\", \n" + " \"host\": \"db1\" \n" + " },{ \n" + " \"type\": \"memfile\", \n" + " \"host\": \"db2\" \n" + " } \n" + " ] \n" + " } \n" + "} \n"; + + extractConfig(base_config); + + // Make some globals: + StampedValuePtr server_hostname(new StampedValue("server-hostname", "isc.example.org")); + StampedValuePtr decline_period(new StampedValue("decline-probation-period", Element::create(86400))); + StampedValuePtr calc_tee_times(new StampedValue("calculate-tee-times", Element::create(bool(false)))); + StampedValuePtr t2_percent(new StampedValue("t2-percent", Element::create(0.75))); + StampedValuePtr renew_timer(new StampedValue("renew-timer", Element::create(500))); + + // Let's add all of the globals to the second backend. This will verify + // we find them there. + db2_->createUpdateGlobalParameter6(ServerSelector::ALL(), server_hostname); + db2_->createUpdateGlobalParameter6(ServerSelector::ALL(), decline_period); + db2_->createUpdateGlobalParameter6(ServerSelector::ALL(), calc_tee_times); + db2_->createUpdateGlobalParameter6(ServerSelector::ALL(), t2_percent); + db2_->createUpdateGlobalParameter6(ServerSelector::ALL(), renew_timer); + + // Should parse and merge without error. + ASSERT_NO_FATAL_FAILURE(configure(base_config, CONTROL_RESULT_SUCCESS, "")); + + // Verify the composite staging is correct. (Remember that + // CfgMgr::instance().commit() hasn't been called) + SrvConfigPtr staging_cfg = CfgMgr::instance().getStagingCfg(); + + // echo-client-id is set explicitly in the original config, meanwhile + // the backend config does not set it, so the explicit value wins. + EXPECT_FALSE(staging_cfg->getEchoClientId()); + + // decline-probation-period is an explicit member that should come + // from the backend. + EXPECT_EQ(86400, staging_cfg->getDeclinePeriod()); + + // Verify that the implicit globals from JSON are there. + ASSERT_NO_FATAL_FAILURE(checkConfiguredGlobal(staging_cfg, "valid-lifetime", + Element::create(1000))); + ASSERT_NO_FATAL_FAILURE(checkConfiguredGlobal(staging_cfg, "rebind-timer", + Element::create(800))); + + // Verify that the implicit globals from the backend are there. + ASSERT_NO_FATAL_FAILURE(checkConfiguredGlobal(staging_cfg, server_hostname)); + ASSERT_NO_FATAL_FAILURE(checkConfiguredGlobal(staging_cfg, calc_tee_times)); + ASSERT_NO_FATAL_FAILURE(checkConfiguredGlobal(staging_cfg, t2_percent)); + ASSERT_NO_FATAL_FAILURE(checkConfiguredGlobal(staging_cfg, renew_timer)); +} + +#if 0 +// This test verifies that externally configured option definitions +// merged correctly into staging configuration. +TEST_F(Dhcp6CBTest, mergeOptionDefs) { + string base_config = + "{ \n" + " \"option-def\": [ { \n" + " \"name\": \"one\", \n" + " \"code\": 1, \n" + " \"type\": \"ipv6-address\", \n" + " \"space\": \"isc\" \n" + " }, \n" + " { \n" + " \"name\": \"two\", \n" + " \"code\": 2, \n" + " \"type\": \"string\", \n" + " \"space\": \"isc\" \n" + " } \n" + " ], \n" + " \"config-control\": { \n" + " \"config-databases\": [ { \n" + " \"type\": \"memfile\", \n" + " \"host\": \"db1\" \n" + " },{ \n" + " \"type\": \"memfile\", \n" + " \"host\": \"db2\" \n" + " } \n" + " ] \n" + " } \n" + "} \n"; + + extractConfig(base_config); + + // Create option one replacement and add it to first backend. + OptionDefinitionPtr def; + def.reset(new OptionDefinition("one", 101, "uint16")); + def->setOptionSpaceName("isc"); + db1_->createUpdateOptionDef6(ServerSelector::ALL(), def); + + // Create option three and add it to first backend. + def.reset(new OptionDefinition("three", 3, "string")); + def->setOptionSpaceName("isc"); + db1_->createUpdateOptionDef6(ServerSelector::ALL(), def); + + // Create option four and add it to second backend. + def.reset(new OptionDefinition("four", 4, "string")); + def->setOptionSpaceName("isc"); + db2_->createUpdateOptionDef6(ServerSelector::ALL(), def); + + // Should parse and merge without error. + ASSERT_NO_FATAL_FAILURE(configure(base_config, CONTROL_RESULT_SUCCESS, "")); + + // Verify the composite staging is correct. + SrvConfigPtr staging_cfg = CfgMgr::instance().getStagingCfg(); + ConstCfgOptionDefPtr option_defs = staging_cfg->getCfgOptionDef(); + + // Definition "one" from first backend should be there. + OptionDefinitionPtr found_def = option_defs->get("isc", "one"); + ASSERT_TRUE(found_def); + EXPECT_EQ(101, found_def->getCode()); + EXPECT_EQ(OptionDataType::OPT_UINT16_TYPE, found_def->getType()); + + // Definition "two" from JSON config should be there. + found_def = option_defs->get("isc", "two"); + ASSERT_TRUE(found_def); + EXPECT_EQ(2, found_def->getCode()); + + // Definition "three" from first backend should be there. + found_def = option_defs->get("isc", "three"); + ASSERT_TRUE(found_def); + EXPECT_EQ(3, found_def->getCode()); + + // Definition "four" from first backend should not be there. + found_def = option_defs->get("isc", "four"); + ASSERT_FALSE(found_def); +} + +// This test verifies that externally configured options +// merged correctly into staging configuration. +TEST_F(Dhcp6CBTest, mergeOptions) { + string base_config = + "{ \n" + " \"option-data\": [ { \n" + " \"name\": \"dhcp-message\", \n" + " \"data\": \"0A0B0C0D\", \n" + " \"csv-format\": false \n" + " },{ \n" + " \"name\": \"host-name\", \n" + " \"data\": \"old.example.com\", \n" + " \"csv-format\": true \n" + " } \n" + " ], \n" + " \"config-control\": { \n" + " \"config-databases\": [ { \n" + " \"type\": \"memfile\", \n" + " \"host\": \"db1\" \n" + " },{ \n" + " \"type\": \"memfile\", \n" + " \"host\": \"db2\" \n" + " } \n" + " ] \n" + " } \n" + "} \n"; + + extractConfig(base_config); + + OptionDescriptorPtr opt; + + // Add host-name to the first backend. + opt.reset(new OptionDescriptor( + createOption(Option::V6, DHO_HOST_NAME, + true, false, "new.example.com"))); + opt->space_name_ = DHCP6_OPTION_SPACE; + db1_->createUpdateOption6(ServerSelector::ALL(), opt); + + // Add boot-file-name to the first backend. + opt.reset(new OptionDescriptor( + createOption(Option::V6, DHO_BOOT_FILE_NAME, + true, false, "my-boot-file"))); + opt->space_name_ = DHCP6_OPTION_SPACE; + db1_->createUpdateOption6(ServerSelector::ALL(), opt); + + // Add boot-file-name to the second backend. + opt.reset(new OptionDescriptor( + createOption(Option::V6, DHO_BOOT_FILE_NAME, + true, false, "your-boot-file"))); + opt->space_name_ = DHCP6_OPTION_SPACE; + db2_->createUpdateOption6(ServerSelector::ALL(), opt); + + // Should parse and merge without error. + ASSERT_NO_FATAL_FAILURE(configure(base_config, CONTROL_RESULT_SUCCESS, "")); + + // Verify the composite staging is correct. + SrvConfigPtr staging_cfg = CfgMgr::instance().getStagingCfg(); + + // Option definition from JSON should be there. + CfgOptionPtr options = staging_cfg->getCfgOption(); + + // dhcp-message should come from the original config. + OptionDescriptor found_opt = options->get("dhcp6", DHO_DHCP_MESSAGE); + ASSERT_TRUE(found_opt.option_); + EXPECT_EQ("0x0A0B0C0D", found_opt.option_->toHexString()); + + // host-name should come from the first back end, + // (overwriting the original). + found_opt = options->get("dhcp6", DHO_HOST_NAME); + ASSERT_TRUE(found_opt.option_); + EXPECT_EQ("new.example.com", found_opt.option_->toString()); + + // booth-file-name should come from the first back end. + found_opt = options->get("dhcp6", DHO_BOOT_FILE_NAME); + ASSERT_TRUE(found_opt.option_); + EXPECT_EQ("my-boot-file", found_opt.option_->toString()); +} + +// This test verifies that externally configured shared-networks are +// merged correctly into staging configuration. +TEST_F(Dhcp6CBTest, mergeSharedNetworks) { + string base_config = + "{ \n" + " \"interfaces-config\": { \n" + " \"interfaces\": [\"*\" ] \n" + " }, \n" + " \"valid-lifetime\": 4000, \n" + " \"config-control\": { \n" + " \"config-databases\": [ { \n" + " \"type\": \"memfile\", \n" + " \"host\": \"db1\" \n" + " },{ \n" + " \"type\": \"memfile\", \n" + " \"host\": \"db2\" \n" + " } \n" + " ] \n" + " }, \n" + " \"shared-networks\": [ { \n" + " \"name\": \"two\" \n" + " }] \n" + "} \n"; + + extractConfig(base_config); + + // Make a few networks + SharedNetwork6Ptr network1(new SharedNetwork6("one")); + SharedNetwork6Ptr network3(new SharedNetwork6("three")); + + // Add network1 to db1 and network3 to db2 + db1_->createUpdateSharedNetwork6(ServerSelector::ALL(), network1); + db2_->createUpdateSharedNetwork6(ServerSelector::ALL(), network3); + + // Should parse and merge without error. + ASSERT_NO_FATAL_FAILURE(configure(base_config, CONTROL_RESULT_SUCCESS, "")); + + // Verify the composite staging is correct. (Remember that + // CfgMgr::instance().commit() hasn't been called) + SrvConfigPtr staging_cfg = CfgMgr::instance().getStagingCfg(); + + CfgSharedNetworks4Ptr networks = staging_cfg->getCfgSharedNetworks4(); + SharedNetwork6Ptr staged_network; + + // SharedNetwork One should have been added from db1 config + staged_network = networks->getByName("one"); + ASSERT_TRUE(staged_network); + + // Subnet2 should have come from the json config + staged_network = networks->getByName("two"); + ASSERT_TRUE(staged_network); + + // Subnet3, which is in db2 should not have been merged. + // We queried db1 first and the query returned data. In + // other words, we iterate over the backends, asking for + // data. We use the first data, we find. + staged_network = networks->getByName("three"); + ASSERT_FALSE(staged_network); +} + +// This test verifies that externally configured subnets are +// merged correctly into staging configuration. +TEST_F(Dhcp6CBTest, mergeSubnets) { + string base_config = + "{ \n" + " \"interfaces-config\": { \n" + " \"interfaces\": [\"*\" ] \n" + " }, \n" + " \"valid-lifetime\": 4000, \n" + " \"config-control\": { \n" + " \"config-databases\": [ { \n" + " \"type\": \"memfile\", \n" + " \"host\": \"db1\" \n" + " },{ \n" + " \"type\": \"memfile\", \n" + " \"host\": \"db2\" \n" + " } \n" + " ] \n" + " }, \n" + " \"subnet6\": [ \n" + " { \n" + " \"id\": 2,\n" + " \"subnet\": \"192.0.3.0/24\" \n" + " } ]\n" + "} \n"; + + extractConfig(base_config); + + // Make a few subnets + Subnet6Ptr subnet1(new Subnet6(IOAddress("192.0.2.0"), 26, 1, 2, 3, SubnetID(1))); + Subnet6Ptr subnet3(new Subnet6(IOAddress("192.0.4.0"), 26, 1, 2, 3, SubnetID(3))); + + // Add subnet1 to db1 and subnet3 to db2 + db1_->createUpdateSubnet6(ServerSelector::ALL(), subnet1); + db2_->createUpdateSubnet6(ServerSelector::ALL(), subnet3); + + // Should parse and merge without error. + configure(base_config, CONTROL_RESULT_SUCCESS, ""); + + // Verify the composite staging is correct. (Remember that + // CfgMgr::instance().commit() hasn't been called) + + SrvConfigPtr staging_cfg = CfgMgr::instance().getStagingCfg(); + + CfgSubnets6Ptr subnets = staging_cfg->getCfgSubnets6(); + Subnet6Ptr staged_subnet; + + // Subnet1 should have been added from db1 config + staged_subnet = subnets->getSubnet(1); + ASSERT_TRUE(staged_subnet); + + // Subnet2 should have come from the json config + staged_subnet = subnets->getSubnet(2); + ASSERT_TRUE(staged_subnet); + + // Subnet3, which is in db2 should not have been merged, since it is + // first found, first used? + staged_subnet = subnets->getSubnet(3); + ASSERT_FALSE(staged_subnet); +} +#endif + +} diff --git a/src/bin/dhcp6/tests/config_parser_unittest.cc b/src/bin/dhcp6/tests/config_parser_unittest.cc index 733ad794be..e8a0d46319 100644 --- a/src/bin/dhcp6/tests/config_parser_unittest.cc +++ b/src/bin/dhcp6/tests/config_parser_unittest.cc @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -242,6 +243,7 @@ const char* PARSER_CONFIGS[] = { " \"rebind-timer\": 2000, \n" " \"renew-timer\": 1000, \n" " \"config-control\": { \n" + " \"config-fetch-wait-time\": 10, \n" " \"config-databases\": [ { \n" " \"type\": \"mysql\", \n" " \"name\": \"keatest1\", \n" @@ -6990,7 +6992,12 @@ TEST_F(Dhcp6ParserTest, globalReservations) { // This test verifies that configuration control info gets populated. TEST_F(Dhcp6ParserTest, configControlInfo) { string config = PARSER_CONFIGS[8]; - extractConfig(config); + + // Should be able to register a backend factory for "mysql". + ASSERT_TRUE(TestConfigBackendDHCPv6:: + registerBackendType(ConfigBackendDHCPv6Mgr::instance(), + "mysql")); + configure(config, CONTROL_RESULT_SUCCESS, ""); // Make sure the config control info is there. @@ -7009,6 +7016,10 @@ TEST_F(Dhcp6ParserTest, configControlInfo) { dblist.front().getAccessString()); EXPECT_EQ("name=keatest2 password=keatest type=mysql user=keatest", dblist.back().getAccessString()); + + // Verify that the config-fetch-wait-time is correct. + EXPECT_FALSE(info->getConfigFetchWaitTime().unspecified()); + EXPECT_EQ(10, info->getConfigFetchWaitTime().get()); } // Check whether it is possible to configure server-tag diff --git a/src/bin/dhcp6/tests/get_config_unittest.cc b/src/bin/dhcp6/tests/get_config_unittest.cc index abb8f461b4..8d45fd2d96 100644 --- a/src/bin/dhcp6/tests/get_config_unittest.cc +++ b/src/bin/dhcp6/tests/get_config_unittest.cc @@ -1829,32 +1829,6 @@ const char* EXTRACTED_CONFIGS[] = { " }\n" " ],\n" " \"valid-lifetime\": 4000\n" -" }\n", - // CONFIGURATION 58 -"{\n" -" \"config-control\": {\n" -" \"config-databases\": [\n" -" {\n" -" \"name\": \"keatest1\",\n" -" \"password\": \"keatest\",\n" -" \"type\": \"mysql\",\n" -" \"user\": \"keatest\"\n" -" },\n" -" {\n" -" \"name\": \"keatest2\",\n" -" \"password\": \"keatest\",\n" -" \"type\": \"mysql\",\n" -" \"user\": \"keatest\"\n" -" }\n" -" ]\n" -" },\n" -" \"interfaces-config\": {\n" -" \"interfaces\": [ \"*\" ],\n" -" \"re-detect\": false\n" -" },\n" -" \"rebind-timer\": 2000,\n" -" \"renew-timer\": 1000,\n" -" \"valid-lifetime\": 4000\n" " }\n" }; @@ -7717,86 +7691,6 @@ const char* UNPARSED_CONFIGS[] = { " }\n" " ],\n" " \"valid-lifetime\": 4000\n" -" }\n", - // CONFIGURATION 58 -"{\n" -" \"config-control\": {\n" -" \"config-databases\": [\n" -" {\n" -" \"name\": \"keatest1\",\n" -" \"password\": \"keatest\",\n" -" \"type\": \"mysql\",\n" -" \"user\": \"keatest\"\n" -" },\n" -" {\n" -" \"name\": \"keatest2\",\n" -" \"password\": \"keatest\",\n" -" \"type\": \"mysql\",\n" -" \"user\": \"keatest\"\n" -" }\n" -" ]\n" -" },\n" -" \"decline-probation-period\": 86400,\n" -" \"dhcp-ddns\": {\n" -" \"enable-updates\": false,\n" -" \"generated-prefix\": \"myhost\",\n" -" \"hostname-char-replacement\": \"\",\n" -" \"hostname-char-set\": \"\",\n" -" \"max-queue-size\": 1024,\n" -" \"ncr-format\": \"JSON\",\n" -" \"ncr-protocol\": \"UDP\",\n" -" \"override-client-update\": false,\n" -" \"override-no-update\": false,\n" -" \"qualifying-suffix\": \"\",\n" -" \"replace-client-name\": \"never\",\n" -" \"sender-ip\": \"0.0.0.0\",\n" -" \"sender-port\": 0,\n" -" \"server-ip\": \"127.0.0.1\",\n" -" \"server-port\": 53001\n" -" },\n" -" \"dhcp-queue-control\": {\n" -" \"capacity\": 500,\n" -" \"enable-queue\": false,\n" -" \"queue-type\": \"kea-ring6\"\n" -" },\n" -" \"dhcp4o6-port\": 0,\n" -" \"expired-leases-processing\": {\n" -" \"flush-reclaimed-timer-wait-time\": 25,\n" -" \"hold-reclaimed-time\": 3600,\n" -" \"max-reclaim-leases\": 100,\n" -" \"max-reclaim-time\": 250,\n" -" \"reclaim-timer-wait-time\": 10,\n" -" \"unwarned-reclaim-cycles\": 5\n" -" },\n" -" \"hooks-libraries\": [ ],\n" -" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\" ],\n" -" \"interfaces-config\": {\n" -" \"interfaces\": [ \"*\" ],\n" -" \"re-detect\": false\n" -" },\n" -" \"lease-database\": {\n" -" \"type\": \"memfile\"\n" -" },\n" -" \"mac-sources\": [ \"any\" ],\n" -" \"option-data\": [ ],\n" -" \"option-def\": [ ],\n" -" \"rebind-timer\": 2000,\n" -" \"relay-supplied-options\": [ \"65\" ],\n" -" \"renew-timer\": 1000,\n" -" \"sanity-checks\": {\n" -" \"lease-checks\": \"warn\"\n" -" },\n" -" \"server-id\": {\n" -" \"enterprise-id\": 0,\n" -" \"htype\": 0,\n" -" \"identifier\": \"\",\n" -" \"persist\": true,\n" -" \"time\": 0,\n" -" \"type\": \"LLT\"\n" -" },\n" -" \"shared-networks\": [ ],\n" -" \"subnet6\": [ ],\n" -" \"valid-lifetime\": 4000\n" " }\n" }; diff --git a/src/bin/dhcp6/tests/kea_controller_unittest.cc b/src/bin/dhcp6/tests/kea_controller_unittest.cc index ff7bbba5ce..d13c1ea03a 100644 --- a/src/bin/dhcp6/tests/kea_controller_unittest.cc +++ b/src/bin/dhcp6/tests/kea_controller_unittest.cc @@ -14,9 +14,11 @@ #include #include #include +#include #include #include #include +#include #ifdef HAVE_MYSQL #include @@ -25,9 +27,11 @@ #include #include +#include #include #include +#include #include #include #include @@ -51,10 +55,100 @@ using namespace isc::hooks; namespace { -class NakedControlledDhcpv6Srv: public ControlledDhcpv6Srv { - // "Naked" DHCPv6 server, exposes internal fields +/// @brief Test implementation of the @c CBControlDHCPv6. +/// +/// This implementation is installed on the test server instance. It +/// overrides the implementation of the @c databaseConfigFetch function +/// to verify arguments passed to this function and throw an exception +/// when desired in the negative test scenarios. It doesn't do the +/// actual configuration fetch as this is tested elswhere and would +/// require setting up a database configuration backend. +class TestCBControlDHCPv6 : public CBControlDHCPv6 { public: - NakedControlledDhcpv6Srv():ControlledDhcpv6Srv(0) { } + + /// @brief Constructor. + TestCBControlDHCPv6() + : CBControlDHCPv6(), db_config_fetch_calls_(0), + enable_check_fetch_mode_(false), enable_throw_(false) { + } + + /// @brief Stub implementation of the "fetch" function. + /// + /// It checks if the @c fetch_updates_only is set to true when it + /// is a later than first invocation of the function. It also + /// throws an exception when desired by a test, to verify that the + /// server gracefully handles such exception. + /// + /// @param fetch_mode value indicating if the method is called upon the + /// server start up or it is called to fetch configuration updates. + /// + /// @throw Unexpected when configured to do so. + virtual void databaseConfigFetch(const process::ConfigPtr&, + const FetchMode& fetch_mode) { + ++db_config_fetch_calls_; + + if (enable_check_fetch_mode_) { + if ((db_config_fetch_calls_ <= 1) && (fetch_mode == FetchMode::FETCH_UPDATE)) { + ADD_FAILURE() << "databaseConfigFetch was called with the value " + "of fetch_mode=FetchMode::FETCH_UPDATE upon the server configuration"; + + } else if ((db_config_fetch_calls_ > 1) && (fetch_mode == FetchMode::FETCH_ALL)) { + ADD_FAILURE() << "databaseConfigFetch was called with the value " + "of fetch_mode=FetchMode::FETCH_ALL during fetching the updates"; + } + } + + if (enable_throw_) { + isc_throw(Unexpected, "testing if exceptions are corectly handled"); + } + } + + /// @brief Returns number of invocations of the @c databaseConfigFetch. + size_t getDatabaseConfigFetchCalls() const { + return (db_config_fetch_calls_); + } + + /// @brief Enables checking of the @c fetch_mode value. + void enableCheckFetchMode() { + enable_check_fetch_mode_ = true; + } + + /// @brief Enables the object to throw from @c databaseConfigFetch. + void enableThrow() { + enable_throw_ = true; + } + +private: + + /// @brief Counter holding number of invocations of the @c databaseConfigFetch. + size_t db_config_fetch_calls_; + + /// @brief Boolean flag indicated if the value of the @c fetch_mode + /// should be verified. + bool enable_check_fetch_mode_; + + /// @brief Boolean flag indicating if the @c databaseConfigFetch should + /// throw. + bool enable_throw_; +}; + +/// @brief Shared pointer to the @c TestCBControlDHCPv6. +typedef boost::shared_ptr TestCBControlDHCPv6Ptr; + +/// @brief "Naked" DHCPv6 server. +/// +/// Exposes internal fields and installs stub implementation of the +/// @c CBControlDHCPv6 object. +class NakedControlledDhcpv6Srv: public ControlledDhcpv6Srv { +public: + /// @brief Constructor. + NakedControlledDhcpv6Srv() + : ControlledDhcpv6Srv(0) { + // We're replacing the @c CBControlDHCPv6 instance with our + // stub implementation used in tests. + cb_control_.reset(new TestCBControlDHCPv6()); + } + using ControlledDhcpv6Srv::signal_handler_; }; @@ -85,15 +179,105 @@ public: /// /// @param io_service Pointer to the IO service to be ran. /// @param timeout_ms Amount of time after which the method returns. - void runTimersWithTimeout(const IOServicePtr& io_service, const long timeout_ms) { + /// @param cond Pointer to the function which if returns true it + /// stops the IO service and causes the function to return. + void runTimersWithTimeout(const IOServicePtr& io_service, const long timeout_ms, + std::function cond = std::function()) { IntervalTimer timer(*io_service); - timer.setup([&io_service]() { + bool stopped = false; + timer.setup([&io_service, &stopped]() { io_service->stop(); + stopped = true; }, timeout_ms, IntervalTimer::ONE_SHOT); - io_service->run(); + + // Run as long as the timeout hasn't occurred and the interrupting + // condition is not specified or not met. + while (!stopped && (!cond || !cond())) { + io_service->run_one(); + } io_service->get_io_service().reset(); } + /// @brief This test verifies that the timer used to fetch the configuration + /// updates from the database works as expected. + void testConfigBackendTimer(const int config_wait_fetch_time, + const bool throw_during_fetch = false) { + std::ostringstream config; + config << + "{ \"Dhcp6\": {" + "\"interfaces-config\": {" + " \"interfaces\": [ ]" + "}," + "\"lease-database\": {" + " \"type\": \"memfile\"," + " \"persist\": false" + "}," + "\"config-control\": {" + " \"config-fetch-wait-time\": " << config_wait_fetch_time << + "}," + "\"rebind-timer\": 2000, " + "\"renew-timer\": 1000, \n" + "\"subnet6\": [ ]," + "\"valid-lifetime\": 4000 }" + "}"; + writeFile(TEST_FILE, config.str()); + + // Create an instance of the server and initialize it. + boost::scoped_ptr srv; + ASSERT_NO_THROW(srv.reset(new NakedControlledDhcpv6Srv())); + ASSERT_NO_THROW(srv->init(TEST_FILE)); + + // Get the CBControlDHCPv6 object belonging to this server. + auto cb_control = boost::dynamic_pointer_cast(srv->getCBControl()); + + // Verify that the parameter passed to the databaseConfigFetch has an + // expected value. + cb_control->enableCheckFetchMode(); + + // Instruct our stub implementation of the CBControlDHCPv6 to throw as a + // result of fetch if desired. + if (throw_during_fetch) { + cb_control->enableThrow(); + } + + // So far there should be exactly one attempt to fetch the configuration + // from the backend. That's the attempt made upon startup. + EXPECT_EQ(1, cb_control->getDatabaseConfigFetchCalls()); + + + if ((config_wait_fetch_time > 0) && (!throw_during_fetch)) { + // If we're configured to run the timer, we expect that it was + // invoked at least 3 times. This is sufficient to verify that + // the timer was scheduled and that the timer continued to run + // even when an exception occurred during fetch (that's why it + // is 3 not 2). + ASSERT_NO_THROW(runTimersWithTimeout(srv->getIOService(), 500, + [cb_control]() { + // Interrupt the timers poll if we have recorded at + // least 3 attempts to fetch the updates. + return (cb_control->getDatabaseConfigFetchCalls() >= 3); + })); + EXPECT_GE(cb_control->getDatabaseConfigFetchCalls(), 3); + + } else { + ASSERT_NO_THROW(runTimersWithTimeout(srv->getIOService(), 500)); + + if (throw_during_fetch) { + // If we're simulating the failure condition the number + // of consecutive failures should not exceed 10. Therefore + // the number of recorded fetches should be 12. One at + // startup, 10 failures and one that causes the timer + // to stop. + EXPECT_EQ(12, cb_control->getDatabaseConfigFetchCalls()); + + } else { + // If the server is not configured to schedule the timer, + // we should still have one fetch attempt recorded. + EXPECT_EQ(1, cb_control->getDatabaseConfigFetchCalls()); + } + } + } + static const char* TEST_FILE; static const char* TEST_INCLUDE; }; @@ -635,6 +819,29 @@ TEST_F(JSONFileBackendTest, defaultLeaseDbBackend) { EXPECT_NO_THROW(static_cast(LeaseMgrFactory::instance())); } + +// This test verifies that the timer triggering configuration updates +// is invoked according to the configured value of the +// config-fetch-wait-time. +TEST_F(JSONFileBackendTest, configBackendTimer) { + testConfigBackendTimer(1); +} + +// This test verifies that the timer for triggering configuration updates +// is not invoked when the value of the config-fetch-wait-time is set +// to 0. +TEST_F(JSONFileBackendTest, configBackendTimerDisabled) { + testConfigBackendTimer(0); +} + +// This test verifies that the server will gracefully handle exceptions +// thrown from the CBControlDHCPv6::databaseConfigFetch, i.e. will +// reschedule the timer. +TEST_F(JSONFileBackendTest, configBackendTimerWithThrow) { + // The true value instructs the test to throw during the fetch. + testConfigBackendTimer(1, true); +} + // Starting tests which require MySQL backend availability. Those tests // will not be executed if Kea has been compiled without the // --with-mysql. diff --git a/src/lib/dhcpsrv/Makefile.am b/src/lib/dhcpsrv/Makefile.am index 4c862958ff..ab5b800333 100644 --- a/src/lib/dhcpsrv/Makefile.am +++ b/src/lib/dhcpsrv/Makefile.am @@ -68,6 +68,7 @@ libkea_dhcpsrv_la_SOURCES += cache_host_data_source.h libkea_dhcpsrv_la_SOURCES += callout_handle_store.h libkea_dhcpsrv_la_SOURCES += cb_ctl_dhcp.h libkea_dhcpsrv_la_SOURCES += cb_ctl_dhcp4.cc cb_ctl_dhcp4.h +libkea_dhcpsrv_la_SOURCES += cb_ctl_dhcp6.cc cb_ctl_dhcp6.h libkea_dhcpsrv_la_SOURCES += cfg_4o6.cc cfg_4o6.h libkea_dhcpsrv_la_SOURCES += cfg_consistency.cc cfg_consistency.h libkea_dhcpsrv_la_SOURCES += cfg_db_access.cc cfg_db_access.h diff --git a/src/lib/dhcpsrv/cb_ctl_dhcp6.cc b/src/lib/dhcpsrv/cb_ctl_dhcp6.cc new file mode 100644 index 0000000000..b379e80e18 --- /dev/null +++ b/src/lib/dhcpsrv/cb_ctl_dhcp6.cc @@ -0,0 +1,85 @@ +// Copyright (C) 2019 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 +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#include +#include +#include +#include + +using namespace isc::data; +using namespace isc::process; + +namespace isc { +namespace dhcp { + +void +CBControlDHCPv6::databaseConfigApply(const db::BackendSelector& backend_selector, + const db::ServerSelector& server_selector, + const boost::posix_time::ptime& lb_modification_time, + const db::AuditEntryCollection& audit_entries) { + // Create the external config into which we'll fetch backend config data. + SrvConfigPtr external_cfg = CfgMgr::instance().createExternalCfg(); + + // First let's fetch the globals and add them to external config. + if (fetchConfigElement(audit_entries, "dhcp6_global_parameter")) { + data::StampedValueCollection globals; + globals = getMgr().getPool()->getModifiedGlobalParameters6(backend_selector, server_selector, + lb_modification_time); + addGlobalsToConfig(external_cfg, globals); + } + + // Now we fetch the option definitions and add them. + if (fetchConfigElement(audit_entries, "dhcp6_option_def")) { + OptionDefContainer option_defs = + getMgr().getPool()->getModifiedOptionDefs6(backend_selector, server_selector, + lb_modification_time); + for (auto option_def = option_defs.begin(); option_def != option_defs.end(); ++option_def) { + external_cfg->getCfgOptionDef()->add((*option_def), (*option_def)->getOptionSpaceName()); + } + } + + // Next fetch the options. They are returned as a container of OptionDescriptors. + if (fetchConfigElement(audit_entries, "dhcp6_options")) { + OptionContainer options = getMgr().getPool()->getModifiedOptions6(backend_selector, + server_selector, + lb_modification_time); + for (auto option = options.begin(); option != options.end(); ++option) { + external_cfg->getCfgOption()->add((*option), (*option).space_name_); + } + } + + // Now fetch the shared networks. + if (fetchConfigElement(audit_entries, "dhcp6_shared_network")) { + SharedNetwork6Collection networks = + getMgr().getPool()->getModifiedSharedNetworks6(backend_selector, server_selector, + lb_modification_time); + for (auto network = networks.begin(); network != networks.end(); ++network) { + external_cfg->getCfgSharedNetworks6()->add((*network)); + } + } + + // Next we fetch subnets. + if (fetchConfigElement(audit_entries, "dhcp6_subnet")) { + Subnet6Collection subnets = getMgr().getPool()->getModifiedSubnets6(backend_selector, + server_selector, + lb_modification_time); + for (auto subnet = subnets.begin(); subnet != subnets.end(); ++subnet) { + external_cfg->getCfgSubnets6()->add((*subnet)); + } + } + + if (audit_entries.empty()) { + CfgMgr::instance().mergeIntoStagingCfg(external_cfg->getSequence()); + + } else { + CfgMgr::instance().mergeIntoCurrentCfg(external_cfg->getSequence()); + } + LOG_INFO(dhcpsrv_logger, DHCPSRV_CFGMGR_CONFIG6_MERGED); +} + + +} // end of namespace isc::dhcp +} // end of namespace isc diff --git a/src/lib/dhcpsrv/cb_ctl_dhcp6.h b/src/lib/dhcpsrv/cb_ctl_dhcp6.h new file mode 100644 index 0000000000..4817556540 --- /dev/null +++ b/src/lib/dhcpsrv/cb_ctl_dhcp6.h @@ -0,0 +1,50 @@ +// Copyright (C) 2019 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 +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef CB_CTL_DHCP6_H +#define CB_CTL_DHCP6_H + +#include +#include +#include + +namespace isc { +namespace dhcp { + +/// @brief Implementation of the mechanisms to control the use of +/// the Configuration Backends by the DHCPv6 server. +/// +/// It implements fetching and merging DHCPv6 server configuration from +/// the database into the staging or current configuration. +/// +/// @tparam ConfigBackendMgrType Type of the Config Backend Manager used +/// by the server implementing this class. For example, for the DHCPv6 +/// server it will be @c ConfigBackendDHCPv6Mgr. +class CBControlDHCPv6 : public CBControlDHCP { +protected: + + /// @brief DHCPv6 server specific method to fetch and apply back end + /// configuration into the local configuration. + /// + /// @param backend_selector Backend selector. + /// @param server_selector Server selector. + /// @param lb_modification_time Lower bound modification time for the + /// configuration elements to be fetched. + /// @param audit_entries Audit entries fetched from the database since + /// the last configuration update. This collection is empty if there + /// were no updates. + virtual void databaseConfigApply(const db::BackendSelector& backend_selector, + const db::ServerSelector& server_selector, + const boost::posix_time::ptime& lb_modification_time, + const db::AuditEntryCollection& audit_entries); +}; + +typedef boost::shared_ptr CBControlDHCPv6Ptr; + +} // end of namespace isc::dhcp +} // end of namespace isc + +#endif // CB_CTL_DHCP6_H diff --git a/src/lib/dhcpsrv/dhcpsrv_messages.cc b/src/lib/dhcpsrv/dhcpsrv_messages.cc index 0b33bf120e..a45a3b988e 100644 --- a/src/lib/dhcpsrv/dhcpsrv_messages.cc +++ b/src/lib/dhcpsrv/dhcpsrv_messages.cc @@ -1,4 +1,4 @@ -// File created from ../../../src/lib/dhcpsrv/dhcpsrv_messages.mes on Tue Mar 19 2019 10:19 +// File created from ../../../src/lib/dhcpsrv/dhcpsrv_messages.mes on Tue Mar 26 2019 13:08 #include #include @@ -14,6 +14,7 @@ extern const isc::log::MessageID DHCPSRV_CFGMGR_ALL_IFACES_ACTIVE = "DHCPSRV_CFG extern const isc::log::MessageID DHCPSRV_CFGMGR_CFG_DHCP_DDNS = "DHCPSRV_CFGMGR_CFG_DHCP_DDNS"; extern const isc::log::MessageID DHCPSRV_CFGMGR_CLEAR_ACTIVE_IFACES = "DHCPSRV_CFGMGR_CLEAR_ACTIVE_IFACES"; extern const isc::log::MessageID DHCPSRV_CFGMGR_CONFIG4_MERGED = "DHCPSRV_CFGMGR_CONFIG4_MERGED"; +extern const isc::log::MessageID DHCPSRV_CFGMGR_CONFIG6_MERGED = "DHCPSRV_CFGMGR_CONFIG6_MERGED"; extern const isc::log::MessageID DHCPSRV_CFGMGR_CONFIGURE_SERVERID = "DHCPSRV_CFGMGR_CONFIGURE_SERVERID"; extern const isc::log::MessageID DHCPSRV_CFGMGR_DEL_SUBNET4 = "DHCPSRV_CFGMGR_DEL_SUBNET4"; extern const isc::log::MessageID DHCPSRV_CFGMGR_DEL_SUBNET6 = "DHCPSRV_CFGMGR_DEL_SUBNET6"; @@ -245,6 +246,7 @@ const char* values[] = { "DHCPSRV_CFGMGR_CFG_DHCP_DDNS", "Setting DHCP-DDNS configuration to: %1", "DHCPSRV_CFGMGR_CLEAR_ACTIVE_IFACES", "stop listening on all interfaces", "DHCPSRV_CFGMGR_CONFIG4_MERGED", "Configuration backend data has been merged.", + "DHCPSRV_CFGMGR_CONFIG6_MERGED", "Configuration backend data has been merged.", "DHCPSRV_CFGMGR_CONFIGURE_SERVERID", "server configuration includes specification of a server identifier", "DHCPSRV_CFGMGR_DEL_SUBNET4", "IPv4 subnet %1 removed", "DHCPSRV_CFGMGR_DEL_SUBNET6", "IPv6 subnet %1 removed", diff --git a/src/lib/dhcpsrv/dhcpsrv_messages.h b/src/lib/dhcpsrv/dhcpsrv_messages.h index b9bc955029..3a421e3dd1 100644 --- a/src/lib/dhcpsrv/dhcpsrv_messages.h +++ b/src/lib/dhcpsrv/dhcpsrv_messages.h @@ -1,4 +1,4 @@ -// File created from ../../../src/lib/dhcpsrv/dhcpsrv_messages.mes on Tue Mar 19 2019 10:19 +// File created from ../../../src/lib/dhcpsrv/dhcpsrv_messages.mes on Tue Mar 26 2019 13:08 #ifndef DHCPSRV_MESSAGES_H #define DHCPSRV_MESSAGES_H @@ -15,6 +15,7 @@ extern const isc::log::MessageID DHCPSRV_CFGMGR_ALL_IFACES_ACTIVE; extern const isc::log::MessageID DHCPSRV_CFGMGR_CFG_DHCP_DDNS; extern const isc::log::MessageID DHCPSRV_CFGMGR_CLEAR_ACTIVE_IFACES; extern const isc::log::MessageID DHCPSRV_CFGMGR_CONFIG4_MERGED; +extern const isc::log::MessageID DHCPSRV_CFGMGR_CONFIG6_MERGED; extern const isc::log::MessageID DHCPSRV_CFGMGR_CONFIGURE_SERVERID; extern const isc::log::MessageID DHCPSRV_CFGMGR_DEL_SUBNET4; extern const isc::log::MessageID DHCPSRV_CFGMGR_DEL_SUBNET6; diff --git a/src/lib/dhcpsrv/dhcpsrv_messages.mes b/src/lib/dhcpsrv/dhcpsrv_messages.mes index 56a500a5a7..810d695f21 100644 --- a/src/lib/dhcpsrv/dhcpsrv_messages.mes +++ b/src/lib/dhcpsrv/dhcpsrv_messages.mes @@ -36,6 +36,11 @@ This is an informational message emitted when the DHCPv4 server has successfully merged configuration data retrieved from its configuration backends into the current configuration. +% DHCPSRV_CFGMGR_CONFIG6_MERGED Configuration backend data has been merged. +This is an informational message emitted when the DHCPv6 server has +successfully merged configuration data retrieved from its configuration +backends into the current configuration. + % DHCPSRV_CFGMGR_CONFIGURE_SERVERID server configuration includes specification of a server identifier This warning message is issued when the server specified configuration of a server identifier. If this new configuration overrides an existing