<!--
- - Copyright (C) 2014-2018 Internet Systems Consortium, Inc. ("ISC")
+ - Copyright (C) 2014-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
server are valid. If nothing changes, a client that got an address is allowed to
use it for 4000 seconds. (Note that integer numbers are specified as is,
without any quotes around them.) <command>renew-timer</command> and
-<command>rebind-timer</command> are values (also in seconds) that
-define T1 and T2 timers that govern when the client will begin the renewal and
-rebind procedures. <note> Both <command>renew-timer</command> and
-<command>rebind-timer</command> are optional. The server will only send
-rebind-timer to the client, via DHPv4 option code 59, if it is less than
-valid-lifetime; and it will only send renew-timer, via DHCPv4 option code 58,
-if it is less than rebind-timer (or valid-lifetime if rebind-timer was not
-specified). In their absence, the client should select values for T1 and T2
-timers according to the <link xmlns:xlink="http://www.w3.org/1999/xlink"
-xlink:href="http://tools.ietf.org/html/rfc2131">RFC 2131</link>.</note></para>
+<command>rebind-timer</command> are values (also in seconds) that may be
+used to define T1 and T2 timers that govern when the client will begin the renewal
+and rebind procedures. Please see this section:<xref linkend="dhcp4-std-options-list"/>
+for more details on generating T1 and T2.
+</para>
<para>The <command>interfaces-config</command> map specifies the server
configuration concerning the network interfaces, on which the server should
address) and the last (typically broadcast address) address from that pool.
In the aforementioned example of pool 192.0.3.0/24, both 192.0.3.0 and
192.0.3.255 addresses may be assigned as well. This may be invalid in some
- network configurations. If you want to avoid this, please use the "min-max" notation.
+ network configurations. If you want to avoid this, please use the "min-max"
+ notation.
</para>
</section>
-
+ <section xml:id="dhcp4-t1-t2-times">
+ <title>Sending T1 (Option 58) and T2 (Option 59)</title>
+ According to <link xmlns:xlink="http://www.w3.org/1999/xlink"
+ xlink:href="http://tools.ietf.org/html/rfc2131">RFC 2131</link>,
+ servers should send values for T1 and T2 that are 50% and 87.5%
+ of the lease life time, repsectively. By default, kea-dhcp4 does
+ not send either value. It can be configured to send values that
+ are specified explicitly or that are calculated as percentages of
+ the lease time. The server's behavior is governed by combination of
+ configuration parameters, two of which have already been mentioned.
+ <para>
+ To send specific, fixed values use the following two parameters:
+ <itemizedlist>
+ <listitem>
+ <simpara><command>renew-timer</command> - specifies the value of T1 in
+ seconds.
+ </simpara>
+ </listitem>
+ <listitem>
+ <simpara><command>rebind-timer</command> - specifies the value of T2 in
+ seconds.
+ </simpara>
+ </listitem>
+ </itemizedlist>
+ The server will only send T2 if it is less than valid lease time. T1 will
+ only be sent if a: T2 is being sent and T1 is less than T2 or b: T2 is not being
+ sent and T1 is less than the valid lease time.
+ </para>
+ <para>
+ Calculating the values is controlled by the following three parameters.
+ <itemizedlist>
+ <listitem>
+ <simpara>
+ <command>calculate-tee-times</command> - when true, T1 and T2 will be
+ calculated as percentages of the valid lease time. It defaults to false.
+ </simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ <command>t1-percent</command> - the percentage of the valid lease time to
+ use for T1. It is expressed as a real number between 0.0 and 1.0 and must
+ be less than t2-percent. The default value is 0.50 per RFC 2131.
+ </simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ <command>t2-percent</command> - the percentage of the valid lease time to
+ use for T2. It is expressed as a real number between 0.0 and 1.0 and must
+ be greater than t1-percent. The default value is .875 per RFC 2131.
+ </simpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <note>
+ In the event that both explicit values are specified and calculate-tee-times
+ is true, the server will use the explicit values. If you plan on having a
+ mixture where some subnets or share-networks will use explicit values and some
+ will use calculated values you must not define the explicit values at any level
+ higher than where they will be used. Inheriting them from too high of a scope,
+ such as global, will cause them to have values at every level underneath (shared-
+ networks and subnets), effectively disabling calculated values.
+ </note>
+ </section>
<section xml:id="dhcp4-std-options">
<title>Standard DHCPv4 Options</title>
<para>
-#line 1 "d2_lexer.cc"
+#line 2 "d2_lexer.cc"
-#line 3 "d2_lexer.cc"
+#line 4 "d2_lexer.cc"
#define YY_INT_ALIGNED short int
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::d2::D2ParserContext::fatal(msg)
-#line 1149 "d2_lexer.cc"
+#line 1150 "d2_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
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 1175 "d2_lexer.cc"
#line 1176 "d2_lexer.cc"
+#line 1177 "d2_lexer.cc"
#define INITIAL 0
#define COMMENT 1
}
-#line 1494 "d2_lexer.cc"
+#line 1495 "d2_lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
#line 738 "d2_lexer.ll"
ECHO;
YY_BREAK
-#line 2396 "d2_lexer.cc"
+#line 2397 "d2_lexer.cc"
case YY_END_OF_BUFFER:
{
-#line 1 "dhcp4_lexer.cc"
+#line 2 "dhcp4_lexer.cc"
-#line 3 "dhcp4_lexer.cc"
+#line 4 "dhcp4_lexer.cc"
#define YY_INT_ALIGNED short int
/* %% [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 175
-#define YY_END_OF_BUFFER 176
+#define YY_NUM_RULES 178
+#define YY_END_OF_BUFFER 179
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[1468] =
+static const flex_int16_t yy_accept[1507] =
{ 0,
- 168, 168, 0, 0, 0, 0, 0, 0, 0, 0,
- 176, 174, 10, 11, 174, 1, 168, 165, 168, 168,
- 174, 167, 166, 174, 174, 174, 174, 174, 161, 162,
- 174, 174, 174, 163, 164, 5, 5, 5, 174, 174,
- 174, 10, 11, 0, 0, 157, 0, 0, 0, 0,
+ 171, 171, 0, 0, 0, 0, 0, 0, 0, 0,
+ 179, 177, 10, 11, 177, 1, 171, 168, 171, 171,
+ 177, 170, 169, 177, 177, 177, 177, 177, 164, 165,
+ 177, 177, 177, 166, 167, 5, 5, 5, 177, 177,
+ 177, 10, 11, 0, 0, 160, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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,
- 168, 168, 0, 167, 168, 3, 2, 6, 0, 168,
+ 171, 171, 0, 170, 171, 3, 2, 6, 0, 171,
0, 0, 0, 0, 0, 0, 4, 0, 0, 9,
- 0, 158, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 160, 0, 0, 0,
+ 0, 161, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 163, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0, 0, 8,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 159, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 67, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 67, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 173, 171, 0,
- 170, 169, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 176, 174, 0, 173, 172, 0, 0,
- 0, 0, 137, 0, 136, 0, 0, 73, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
+ 0, 0, 0, 0, 0, 0, 0, 0, 140, 0,
+ 139, 0, 0, 73, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 70, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 17,
+ 0, 0, 70, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 18, 0, 0, 0, 0, 172, 169, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 138,
- 0, 0, 140, 0, 0, 0, 0, 0, 0, 0,
+ 0, 18, 0, 0, 0, 0, 175, 172, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 141, 0,
+ 0, 143, 0, 0, 0, 0, 0, 0, 0, 0,
0, 74, 0, 0, 0, 0, 0, 0, 59, 0,
- 0, 0, 0, 0, 91, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 94, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 37, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 58, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 62, 0, 38,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 88, 30, 0, 0, 35,
- 0, 0, 0, 0, 0, 0, 0, 0, 12, 145,
- 0, 142, 0, 141, 0, 0, 0, 101, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 91, 30, 0,
+ 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+ 12, 148, 0, 145, 0, 144, 0, 0, 0, 104,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 32, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 61, 0, 0, 0,
- 0, 0, 0, 0, 0, 102, 0, 0, 0, 0,
-
- 0, 0, 0, 0, 0, 0, 0, 0, 97, 0,
- 0, 0, 0, 0, 0, 0, 7, 0, 0, 143,
+ 0, 0, 0, 84, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 105, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 100, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 7, 0, 0, 146, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,
- 0, 0, 0, 0, 0, 0, 0, 0, 79, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 72, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 86, 0, 0, 0, 0,
+ 0, 0, 0, 0, 82, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 65, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
- 0, 0, 0, 0, 0, 64, 0, 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, 107, 77,
- 0, 0, 0, 0, 82, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 39, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 79, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 98, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 110, 80, 0,
+ 0, 0, 0, 85, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 39, 0, 0, 0,
- 0, 0, 0, 54, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 146, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 69, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 96, 0, 0, 0, 0, 0,
- 42, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 84, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 54, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 149, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 69, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 99, 0, 0, 0,
+ 0, 0, 42, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 36, 0, 0, 0, 29, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 93, 0, 0, 0, 0, 0, 0, 0, 0,
- 120, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 66, 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, 96, 0, 0, 0,
+ 0, 0, 0, 0, 0, 123, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 125, 0, 0, 123, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 150, 0,
- 0, 0, 0, 0, 0, 94, 0, 0, 0, 0,
-
- 0, 0, 98, 80, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,
- 22, 0, 103, 0, 0, 0, 0, 0, 0, 0,
- 0, 129, 0, 0, 0, 0, 56, 0, 0, 0,
- 0, 0, 106, 33, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 53,
+ 0, 66, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 128, 0, 0,
+
+ 126, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 153, 0, 0, 0, 0,
+ 0, 0, 0, 97, 0, 0, 0, 0, 0, 0,
+ 101, 83, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 95, 22, 0,
+ 106, 0, 0, 0, 0, 0, 0, 0, 0, 132,
+ 0, 0, 0, 0, 56, 0, 0, 0, 0, 0,
+ 109, 33, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 53, 0, 0,
+ 0, 77, 78, 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, 100, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 103,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 157, 0,
+ 57, 71, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 50, 0, 0, 0, 0, 0, 0, 0, 129,
+ 0, 127, 0, 121, 120, 0, 46, 0, 21, 0,
+ 0, 0, 0, 0, 142, 0, 0, 0, 90, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 118, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 154, 0, 57,
- 71, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 50, 0, 0, 0, 0, 0, 0, 0, 126, 0,
- 124, 0, 118, 117, 0, 46, 0, 21, 0, 0,
- 0, 0, 0, 139, 0, 0, 87, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 115, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 104, 15,
- 0, 40, 0, 0, 0, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 51, 0, 0, 99, 0, 0,
- 0, 0, 90, 0, 0, 0, 0, 0, 0, 63,
-
- 0, 148, 0, 147, 0, 153, 0, 0, 0, 0,
+ 107, 15, 0, 40, 0, 0, 0, 0, 0, 131,
+ 0, 0, 0, 0, 0, 0, 51, 0, 0, 102,
+ 0, 0, 0, 0, 93, 0, 0, 0, 0, 0,
+ 0, 63, 0, 151, 0, 150, 0, 156, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 14, 0, 0, 45,
- 0, 0, 0, 0, 156, 85, 27, 0, 0, 47,
- 116, 0, 0, 0, 151, 121, 0, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 24, 0, 127,
- 0, 0, 0, 0, 0, 78, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
-
- 0, 0, 0, 41, 0, 0, 0, 0, 0, 0,
- 0, 105, 0, 0, 0, 26, 0, 152, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,
- 0, 0, 20, 155, 55, 0, 149, 144, 28, 0,
- 0, 16, 0, 0, 133, 0, 0, 0, 0, 0,
- 0, 113, 0, 89, 0, 0, 0, 0, 0, 0,
- 0, 0, 68, 0, 0, 0, 0, 0, 0, 0,
- 0, 134, 13, 0, 0, 0, 0, 0, 122, 0,
- 0, 0, 0, 0, 0, 119, 0, 0, 0, 0,
- 0, 112, 0, 19, 0, 130, 0, 0, 0, 0,
-
- 0, 0, 0, 0, 111, 0, 0, 48, 0, 0,
- 43, 132, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
+ 0, 0, 45, 0, 0, 0, 0, 159, 0, 88,
+ 27, 0, 0, 47, 119, 0, 0, 0, 154, 124,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 25, 0,
+ 0, 24, 0, 130, 0, 0, 0, 0, 0, 81,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 49, 0, 0, 0, 0, 41, 0,
+ 0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
+ 26, 0, 155, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 44, 0, 0, 20, 158, 55,
+ 0, 152, 147, 0, 28, 0, 0, 16, 0, 0,
+ 136, 0, 0, 0, 0, 0, 0, 116, 0, 92,
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 137, 13,
+ 0, 0, 0, 0, 0, 125, 0, 0, 0, 0,
+ 0, 0, 0, 122, 0, 0, 0, 0, 0, 115,
+ 0, 19, 0, 133, 0, 0, 0, 0, 0, 76,
+ 0, 0, 0, 114, 0, 0, 48, 0, 0, 43,
+ 135, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 131, 0, 86,
- 0, 0, 0, 0, 0, 0, 109, 114, 52, 0,
- 0, 0, 0, 108, 0, 0, 135, 0, 0, 0,
- 0, 0, 75, 0, 0, 110, 0
+ 0, 0, 0, 0, 0, 0, 134, 0, 89, 0,
+ 0, 0, 0, 0, 0, 112, 117, 52, 0, 0,
+ 0, 0, 111, 0, 0, 138, 0, 0, 0, 0,
+
+ 0, 75, 0, 0, 113, 0
} ;
static const YY_CHAR yy_ec[256] =
1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 4, 5, 6, 7, 5, 5, 5, 5, 5,
- 5, 8, 9, 10, 11, 12, 13, 14, 14, 14,
- 14, 15, 14, 16, 14, 14, 14, 17, 5, 18,
- 5, 19, 20, 5, 21, 22, 23, 24, 25, 26,
- 5, 27, 5, 28, 5, 29, 5, 30, 31, 32,
- 5, 33, 34, 35, 36, 37, 38, 5, 39, 5,
- 40, 41, 42, 5, 43, 5, 44, 45, 46, 47,
-
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 5, 71, 5, 5, 5, 5, 5,
+ 5, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 14, 17, 14, 18, 14, 14, 14, 19, 5, 20,
+ 5, 21, 22, 5, 23, 24, 25, 26, 27, 28,
+ 5, 29, 5, 30, 5, 31, 5, 32, 33, 34,
+ 5, 35, 36, 37, 38, 39, 40, 5, 41, 5,
+ 42, 43, 44, 5, 45, 5, 46, 47, 48, 49,
+
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 5, 73, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5
} ;
-static const YY_CHAR yy_meta[72] =
+static const YY_CHAR yy_meta[74] =
{ 0,
1, 1, 2, 3, 3, 4, 3, 3, 3, 3,
- 3, 3, 3, 5, 5, 5, 3, 3, 3, 3,
- 5, 5, 5, 5, 5, 5, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 5, 5, 5, 5, 5, 5, 3,
+ 3, 3, 3, 5, 5, 5, 5, 5, 3, 3,
+ 3, 3, 5, 5, 5, 5, 5, 5, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 5, 5, 5, 5, 5,
+ 5, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3
+ 3, 3, 3
} ;
-static const flex_int16_t yy_base[1480] =
+static const flex_int16_t yy_base[1519] =
{ 0,
- 0, 70, 19, 29, 41, 49, 52, 58, 87, 95,
- 1830, 1831, 32, 1826, 141, 0, 201, 1831, 206, 88,
- 11, 213, 1831, 1808, 114, 25, 2, 6, 1831, 1831,
- 73, 11, 17, 1831, 1831, 1831, 104, 1814, 1769, 0,
- 1806, 107, 1821, 217, 247, 1831, 1765, 185, 1764, 1770,
- 93, 58, 1762, 91, 211, 195, 14, 273, 195, 1761,
- 181, 275, 207, 211, 76, 68, 188, 1770, 232, 219,
- 296, 284, 280, 1753, 204, 302, 322, 305, 1772, 0,
- 349, 357, 370, 377, 362, 1831, 0, 1831, 301, 342,
- 296, 325, 201, 346, 359, 224, 1831, 1769, 1808, 1831,
-
- 353, 1831, 390, 1797, 357, 1755, 1765, 369, 220, 1760,
- 362, 288, 364, 374, 221, 1803, 0, 441, 366, 1747,
- 1744, 1748, 1744, 1752, 360, 1748, 1737, 1738, 76, 1754,
- 1737, 1746, 1746, 365, 1737, 365, 1738, 1736, 357, 1782,
- 1786, 1728, 1779, 1721, 1744, 1741, 1741, 1735, 268, 1728,
- 1721, 1726, 1720, 371, 1731, 1724, 1715, 1714, 1728, 379,
- 1714, 384, 1730, 1707, 415, 387, 419, 1728, 1725, 1726,
- 1724, 390, 1706, 1708, 420, 1700, 1717, 1709, 0, 386,
- 439, 425, 396, 440, 453, 1708, 1831, 0, 1751, 460,
- 1698, 1701, 437, 452, 1709, 458, 1752, 466, 1751, 462,
-
- 1750, 1831, 506, 1749, 472, 1710, 1702, 1689, 1705, 1702,
- 1701, 1692, 448, 1741, 1735, 1701, 1680, 1688, 1683, 1697,
- 1693, 1681, 1693, 1693, 1684, 1668, 1672, 1685, 1687, 1684,
- 1676, 1666, 1684, 1831, 1679, 1682, 1663, 1662, 1712, 1661,
- 1671, 1674, 496, 1670, 1658, 1669, 1705, 1652, 1708, 1645,
- 1660, 489, 1650, 1666, 1647, 1646, 1652, 1643, 1642, 1649,
- 1697, 1655, 1654, 1648, 77, 1655, 1650, 1642, 1632, 1647,
- 1646, 1641, 1645, 1626, 1642, 1628, 1634, 1641, 1629, 492,
- 1622, 1636, 1677, 1638, 485, 1629, 477, 1831, 1831, 485,
- 1831, 1831, 1616, 0, 456, 473, 1618, 520, 490, 1672,
-
- 1625, 484, 1831, 1670, 1831, 1664, 548, 1831, 474, 1606,
- 1615, 1661, 1607, 1613, 1663, 1620, 1615, 1618, 479, 1831,
- 1616, 1658, 1613, 1610, 528, 1616, 1654, 1648, 1603, 1598,
- 1595, 1644, 1603, 1592, 1608, 1640, 1588, 554, 1602, 1587,
- 1600, 1587, 1597, 1592, 1599, 1594, 1590, 496, 1588, 1591,
- 1586, 1582, 1630, 488, 1624, 1831, 1623, 1575, 1574, 1573,
- 1566, 1568, 1572, 1561, 1574, 518, 1619, 1574, 1571, 1831,
- 1574, 1563, 1563, 1575, 518, 1550, 1551, 1572, 529, 1554,
- 1603, 1550, 1564, 1563, 1549, 1561, 1560, 1559, 1558, 380,
- 1599, 1598, 1831, 1542, 1541, 572, 1554, 1831, 1831, 1553,
-
- 0, 1542, 1534, 525, 1539, 1590, 1589, 1547, 1587, 1831,
- 1535, 1585, 1831, 556, 603, 542, 1584, 1528, 1539, 1535,
- 1523, 1831, 1528, 1534, 1537, 1536, 1523, 1522, 1831, 1524,
- 1521, 538, 1519, 1521, 1831, 1529, 1526, 1511, 1524, 1519,
- 578, 1526, 1514, 1507, 1556, 1831, 1505, 1521, 1553, 1516,
- 1513, 1514, 1516, 1548, 1501, 1496, 1495, 1544, 1490, 1505,
- 1483, 1490, 1495, 1543, 1831, 1490, 1486, 1484, 1493, 1487,
- 1494, 1478, 1478, 1488, 1491, 1480, 1475, 1831, 1530, 1831,
- 1474, 1485, 1470, 1475, 1484, 1478, 1472, 1481, 1521, 1515,
- 1479, 1462, 1462, 1457, 1477, 1452, 1458, 1457, 1465, 1469,
-
- 1452, 1508, 1450, 1464, 1453, 1831, 1831, 1453, 1451, 1831,
- 1462, 1496, 1458, 0, 1442, 1459, 1497, 1447, 1831, 1831,
- 1444, 1831, 1450, 1831, 551, 569, 595, 1831, 1447, 1446,
- 1434, 1485, 1432, 1483, 1430, 1429, 1436, 1429, 1441, 1440,
- 1440, 1422, 1427, 1468, 1435, 1427, 1470, 1416, 1432, 1431,
- 1831, 1416, 1413, 1469, 1426, 1418, 1424, 1415, 1423, 1408,
- 1424, 1406, 1420, 520, 1402, 1396, 1401, 1416, 1413, 1414,
- 1411, 1452, 1409, 1831, 1395, 1397, 1406, 1404, 1441, 1440,
- 1393, 562, 1402, 1385, 1386, 1383, 1831, 1397, 1376, 1395,
- 1387, 1430, 1384, 1391, 1427, 1831, 1374, 1388, 1372, 1386,
-
- 1389, 1370, 1420, 1419, 1418, 1365, 1416, 1415, 1831, 14,
- 1377, 1377, 1375, 1358, 1363, 1365, 1831, 1371, 1361, 1831,
- 1406, 1354, 1409, 568, 501, 1352, 1350, 1357, 1400, 562,
- 1404, 544, 1398, 1397, 1396, 1350, 1340, 1393, 1346, 1354,
- 1355, 1389, 1352, 1346, 1333, 1341, 1384, 1388, 1345, 1344,
- 1831, 1345, 1338, 1327, 1340, 1343, 1338, 1339, 1336, 1335,
- 1331, 1337, 1332, 1373, 1372, 1322, 1312, 552, 1369, 1831,
- 1368, 1317, 1309, 1310, 1359, 1322, 1309, 1320, 1831, 1308,
- 1317, 1316, 1316, 1356, 1299, 1308, 1313, 1290, 1294, 1345,
- 1309, 1291, 1301, 1341, 1340, 1339, 1286, 1337, 1301, 580,
-
- 582, 1278, 1288, 579, 1831, 1338, 1284, 1294, 1294, 1277,
- 1282, 1286, 1276, 1288, 1291, 1328, 1831, 1322, 578, 1284,
- 15, 20, 86, 175, 242, 1831, 274, 374, 536, 561,
- 559, 578, 575, 576, 575, 574, 589, 585, 640, 605,
- 595, 611, 601, 1831, 611, 611, 604, 615, 613, 656,
- 600, 602, 617, 604, 662, 621, 607, 610, 1831, 1831,
- 620, 625, 630, 618, 1831, 1831, 632, 619, 613, 618,
- 636, 623, 671, 624, 674, 625, 681, 1831, 628, 632,
- 627, 685, 640, 630, 631, 627, 640, 651, 635, 653,
- 648, 649, 651, 644, 646, 647, 647, 649, 664, 703,
-
- 662, 667, 644, 1831, 669, 659, 704, 664, 654, 669,
- 670, 657, 671, 1831, 690, 698, 667, 662, 715, 680,
- 684, 723, 673, 668, 680, 675, 676, 672, 681, 676,
- 732, 691, 692, 683, 1831, 685, 696, 681, 697, 692,
- 737, 706, 690, 691, 1831, 707, 710, 693, 750, 695,
- 1831, 712, 715, 695, 713, 751, 711, 707, 702, 720,
- 719, 720, 706, 721, 713, 720, 710, 728, 713, 1831,
- 721, 727, 772, 1831, 723, 728, 770, 723, 735, 729,
- 734, 732, 730, 732, 742, 785, 731, 731, 788, 734,
- 746, 1831, 734, 742, 740, 745, 757, 741, 746, 756,
-
- 757, 762, 801, 760, 776, 781, 763, 761, 757, 809,
- 754, 1831, 754, 774, 763, 768, 775, 816, 817, 766,
- 1831, 814, 763, 766, 765, 785, 782, 787, 788, 774,
- 782, 791, 771, 788, 795, 835, 1831, 836, 837, 790,
- 800, 802, 791, 787, 794, 803, 846, 795, 793, 795,
- 812, 851, 803, 802, 808, 806, 804, 857, 858, 854,
- 1831, 818, 811, 802, 821, 809, 819, 816, 821, 817,
- 830, 830, 1831, 814, 815, 1831, 816, 874, 815, 834,
- 835, 832, 818, 839, 838, 822, 827, 845, 1831, 835,
- 868, 859, 889, 831, 853, 1831, 836, 838, 855, 853,
-
- 845, 849, 1831, 1831, 859, 859, 895, 844, 897, 846,
- 904, 849, 860, 852, 858, 854, 873, 874, 875, 1831,
- 1831, 874, 1831, 859, 861, 880, 870, 863, 875, 917,
- 883, 1831, 875, 925, 868, 927, 1831, 928, 872, 878,
- 885, 927, 1831, 1831, 877, 879, 893, 898, 881, 938,
- 897, 898, 899, 937, 891, 896, 945, 895, 947, 1831,
- 896, 949, 950, 892, 952, 913, 954, 898, 910, 915,
- 901, 931, 960, 1831, 919, 912, 963, 912, 927, 914,
- 910, 926, 931, 918, 914, 972, 927, 932, 1831, 933,
- 926, 935, 936, 933, 923, 926, 926, 931, 984, 985,
-
- 930, 988, 984, 927, 942, 935, 994, 1831, 949, 1831,
- 1831, 954, 946, 956, 942, 943, 1002, 948, 958, 1006,
- 1831, 956, 956, 958, 960, 1011, 954, 957, 1831, 976,
- 1831, 960, 1831, 1831, 974, 1831, 968, 1831, 1018, 969,
- 1020, 1021, 1003, 1831, 1023, 982, 1831, 970, 978, 972,
- 971, 974, 974, 975, 982, 972, 1831, 994, 980, 981,
- 996, 996, 999, 999, 996, 1038, 1002, 995, 1831, 1831,
- 1005, 1831, 1002, 1007, 1008, 1005, 1047, 1831, 998, 999,
- 999, 1005, 1004, 1015, 1831, 1054, 1003, 1831, 1004, 1004,
- 1006, 1012, 1831, 1014, 1066, 1017, 1020, 1069, 1032, 1831,
-
- 1029, 1831, 1026, 1831, 1049, 1831, 1074, 1075, 1076, 1035,
- 1021, 1079, 1080, 1035, 1025, 1030, 1084, 1085, 1081, 1046,
- 1042, 1084, 1034, 1039, 1037, 1094, 1052, 1096, 1056, 1098,
- 1061, 1051, 1045, 1061, 1061, 1105, 1049, 1066, 1065, 1049,
- 1105, 1106, 1055, 1108, 1073, 1074, 1831, 1074, 1061, 1831,
- 1072, 1119, 1079, 1092, 1831, 1831, 1831, 1066, 1123, 1831,
- 1831, 1072, 1070, 1084, 1831, 1831, 1074, 1123, 1068, 1073,
- 1131, 1081, 1091, 1092, 1831, 1135, 1090, 1831, 1137, 1831,
- 1082, 1097, 1085, 1100, 1104, 1831, 1138, 1106, 1099, 1108,
- 1090, 1097, 1151, 1112, 1111, 1154, 1155, 1156, 1107, 1831,
-
- 1158, 1159, 1160, 1831, 1110, 1110, 1163, 1109, 1108, 1166,
- 1121, 1831, 1163, 1116, 1113, 1831, 1127, 1831, 1130, 1173,
- 1128, 1175, 1136, 1119, 1121, 1118, 1134, 1135, 1144, 1831,
- 1134, 1184, 1831, 1831, 1831, 1180, 1831, 1831, 1831, 1181,
- 1138, 1831, 1136, 1143, 1831, 1140, 1145, 1143, 1193, 1194,
- 1139, 1831, 1154, 1831, 1155, 1145, 1157, 1200, 1144, 1152,
- 1153, 1166, 1831, 1165, 1153, 1207, 1168, 1159, 1168, 1170,
- 1174, 1831, 1831, 1213, 1158, 1215, 1175, 1217, 1831, 1213,
- 1177, 1178, 1165, 1160, 1181, 1831, 1182, 1183, 1226, 1185,
- 1188, 1831, 1229, 1831, 1192, 1831, 1174, 1232, 1233, 1178,
-
- 1195, 1181, 1181, 1183, 1831, 1188, 1198, 1831, 1184, 1196,
- 1831, 1831, 1201, 1195, 1199, 1190, 1242, 1191, 1199, 1208,
- 1201, 1196, 1211, 1202, 1209, 1196, 1211, 1216, 1259, 1218,
- 1261, 1206, 1222, 1213, 1227, 1223, 1216, 1831, 1268, 1831,
- 1269, 1270, 1227, 1226, 1227, 1217, 1831, 1831, 1831, 1275,
- 1219, 1235, 1278, 1831, 1274, 1225, 1831, 1224, 1226, 1237,
- 1284, 1235, 1831, 1244, 1287, 1831, 1831, 1293, 1298, 1303,
- 1308, 1313, 1318, 1323, 1326, 1300, 1305, 1307, 1320
+ 0, 72, 21, 31, 43, 51, 54, 60, 91, 99,
+ 1907, 1908, 34, 1903, 145, 0, 207, 1908, 214, 221,
+ 13, 228, 1908, 1883, 118, 25, 2, 6, 1908, 1908,
+ 73, 11, 17, 1908, 1908, 1908, 104, 1891, 1844, 0,
+ 1881, 108, 1898, 24, 262, 1908, 1840, 67, 1839, 1845,
+ 84, 75, 1837, 88, 226, 91, 89, 290, 196, 1836,
+ 206, 285, 206, 210, 219, 60, 223, 1845, 247, 290,
+ 315, 303, 231, 1828, 297, 321, 343, 324, 1847, 0,
+ 380, 387, 401, 408, 424, 1908, 0, 1908, 429, 438,
+ 216, 249, 220, 315, 335, 266, 1908, 1844, 1885, 1908,
+
+ 342, 1908, 421, 1872, 312, 1830, 1840, 400, 10, 1835,
+ 361, 323, 370, 387, 359, 1880, 0, 474, 392, 1822,
+ 1819, 1823, 1825, 1818, 1826, 412, 1822, 1811, 1812, 78,
+ 1828, 1811, 1820, 1820, 95, 1811, 400, 1812, 1810, 405,
+ 1858, 1862, 1802, 1855, 1795, 1818, 1815, 1815, 1809, 310,
+ 1802, 1795, 1800, 1794, 436, 1805, 1798, 1789, 1788, 1802,
+ 186, 1788, 413, 1804, 1781, 470, 286, 400, 1802, 1799,
+ 1800, 1798, 1833, 1832, 445, 1778, 1780, 448, 1772, 1789,
+ 1781, 0, 447, 447, 458, 471, 462, 483, 1780, 1908,
+ 0, 1825, 490, 1770, 1773, 476, 482, 1781, 488, 1826,
+
+ 499, 1825, 496, 1824, 1908, 542, 1823, 507, 1782, 1774,
+ 1761, 1777, 1776, 1773, 1772, 1763, 486, 1814, 1808, 1772,
+ 1751, 1759, 1754, 1768, 1764, 1752, 1764, 1764, 1755, 1739,
+ 1743, 1756, 1758, 1755, 1747, 1737, 1755, 1908, 1750, 1753,
+ 1734, 1733, 1785, 1732, 1742, 1745, 483, 1741, 1729, 1740,
+ 1778, 1723, 1781, 1716, 1731, 533, 1721, 1737, 1718, 1717,
+ 1723, 1714, 1713, 1720, 1770, 1726, 1725, 1719, 482, 1726,
+ 1721, 1713, 1703, 1718, 1717, 1712, 1716, 1697, 1713, 1699,
+ 1705, 1712, 1700, 1697, 1696, 537, 1691, 1705, 1748, 1707,
+ 366, 1698, 525, 1908, 1908, 527, 1908, 1908, 1685, 0,
+
+ 241, 530, 1687, 546, 534, 1743, 1694, 511, 1908, 1741,
+ 1908, 1735, 587, 1908, 537, 1675, 1684, 1732, 1676, 1675,
+ 1681, 1733, 1688, 1683, 1686, 516, 1908, 1684, 1728, 1681,
+ 1678, 565, 1684, 1724, 1718, 1671, 1666, 1663, 1714, 1671,
+ 1660, 1676, 1710, 1656, 610, 1670, 1655, 1668, 1655, 1665,
+ 1660, 1667, 1662, 1658, 327, 1656, 1659, 1654, 1650, 1700,
+ 522, 1694, 1908, 1693, 1643, 1642, 1641, 1634, 1636, 1640,
+ 1629, 1642, 575, 1689, 1642, 1639, 1908, 1642, 1631, 1631,
+ 1643, 536, 1618, 1619, 1640, 568, 1622, 1673, 1618, 1632,
+ 1631, 1617, 1629, 1628, 1627, 1626, 1625, 1624, 550, 1667,
+
+ 1666, 1908, 1608, 1607, 613, 1620, 1908, 1908, 1619, 0,
+ 1608, 1600, 561, 1605, 1658, 1657, 1613, 1655, 1908, 1601,
+ 1653, 1908, 594, 661, 581, 1652, 1594, 1605, 1598, 1600,
+ 1588, 1908, 1593, 1599, 1602, 1601, 1588, 1587, 1908, 1589,
+ 1586, 578, 1584, 1586, 1908, 1594, 1591, 1576, 1589, 1584,
+ 635, 1591, 1579, 1572, 1623, 1908, 1570, 1586, 1620, 1581,
+ 1578, 1579, 1581, 1615, 1566, 1561, 1560, 1611, 1555, 1570,
+ 1548, 1555, 1560, 1610, 1908, 1555, 1551, 1549, 1558, 1552,
+ 1559, 1543, 1543, 1553, 1556, 1545, 1540, 1908, 1597, 1908,
+ 1539, 1550, 1535, 1540, 1549, 1543, 1537, 1546, 1588, 1582,
+
+ 1544, 1527, 1527, 1522, 1542, 1517, 1523, 1522, 1530, 1534,
+ 1517, 1575, 1515, 1516, 1515, 1527, 1516, 1908, 1908, 1516,
+ 1514, 1908, 1525, 1561, 1521, 0, 1505, 1522, 1562, 1510,
+ 1908, 1908, 1507, 1908, 1513, 1908, 563, 585, 638, 1908,
+ 1510, 1509, 1516, 1496, 1549, 1494, 1547, 1492, 1491, 1498,
+ 1491, 1503, 1502, 1502, 1484, 1489, 1530, 1497, 1489, 1534,
+ 1478, 1494, 1493, 1908, 1478, 1475, 1533, 1488, 1480, 1486,
+ 1477, 1485, 1470, 1486, 1468, 1482, 447, 1464, 1458, 1463,
+ 1478, 1475, 1476, 1473, 1516, 1471, 1908, 1457, 1459, 1468,
+ 1466, 1505, 1504, 1455, 16, 1464, 1447, 1448, 1445, 1908,
+
+ 1459, 1438, 1457, 1449, 1494, 1446, 1453, 1491, 1908, 1436,
+ 1450, 1434, 1448, 1451, 1432, 1484, 1483, 1482, 1427, 1480,
+ 1479, 1908, 581, 1441, 1440, 1437, 1437, 1435, 1418, 1423,
+ 1425, 1908, 1431, 1421, 1908, 1468, 1414, 1471, 592, 558,
+ 1412, 1410, 1417, 1408, 1461, 602, 1465, 582, 1459, 1458,
+ 1457, 1409, 1399, 1454, 1405, 1413, 1414, 1450, 1411, 1405,
+ 1392, 1400, 1445, 1449, 1404, 1403, 1908, 1404, 1397, 1386,
+ 1399, 1402, 1397, 1398, 1395, 1394, 1390, 1396, 1391, 1434,
+ 1433, 1381, 1371, 594, 1430, 1908, 1429, 1376, 1368, 1369,
+ 1420, 1381, 1368, 1379, 1908, 1367, 1376, 1375, 1375, 1417,
+
+ 1358, 1367, 1372, 1349, 1353, 1406, 1368, 1350, 1360, 1402,
+ 1401, 1400, 1345, 1398, 172, 598, 607, 213, 275, 599,
+ 1908, 370, 361, 383, 525, 582, 594, 582, 603, 609,
+ 602, 616, 621, 664, 1908, 660, 637, 630, 635, 632,
+ 633, 636, 634, 643, 1908, 633, 648, 630, 635, 633,
+ 652, 649, 639, 638, 637, 648, 644, 700, 663, 653,
+ 669, 659, 1908, 669, 669, 662, 673, 671, 716, 658,
+ 660, 675, 662, 722, 679, 665, 668, 1908, 1908, 678,
+ 683, 688, 676, 1908, 1908, 690, 677, 671, 676, 694,
+ 681, 731, 682, 734, 683, 741, 1908, 686, 690, 685,
+
+ 745, 698, 688, 689, 685, 698, 709, 693, 711, 706,
+ 707, 709, 702, 704, 705, 705, 707, 722, 763, 720,
+ 725, 702, 1908, 714, 715, 729, 719, 766, 724, 714,
+ 729, 730, 717, 731, 1908, 750, 758, 727, 722, 777,
+ 778, 741, 745, 786, 734, 729, 741, 736, 737, 733,
+ 742, 737, 795, 752, 753, 744, 1908, 746, 757, 742,
+ 759, 753, 801, 767, 751, 752, 1908, 768, 771, 754,
+ 813, 756, 1908, 773, 776, 756, 774, 814, 772, 768,
+ 763, 781, 780, 781, 767, 782, 774, 781, 771, 789,
+ 774, 1908, 782, 788, 835, 1908, 784, 789, 833, 784,
+
+ 796, 790, 795, 793, 791, 793, 803, 848, 792, 792,
+ 851, 795, 807, 1908, 795, 803, 801, 798, 799, 808,
+ 820, 804, 809, 819, 820, 825, 866, 823, 839, 844,
+ 826, 824, 820, 815, 875, 818, 1908, 818, 838, 827,
+ 832, 839, 882, 883, 830, 1908, 880, 827, 830, 829,
+ 849, 846, 851, 852, 838, 846, 855, 837, 852, 859,
+ 901, 1908, 902, 903, 854, 864, 866, 855, 851, 858,
+ 867, 912, 859, 857, 859, 876, 917, 867, 866, 872,
+ 870, 868, 923, 924, 920, 1908, 882, 875, 866, 885,
+ 873, 883, 880, 885, 881, 894, 894, 1908, 878, 879,
+
+ 1908, 880, 940, 879, 898, 899, 944, 945, 898, 884,
+ 905, 904, 888, 893, 911, 1908, 901, 934, 925, 957,
+ 897, 919, 916, 1908, 903, 905, 922, 920, 912, 916,
+ 1908, 1908, 926, 926, 964, 911, 966, 913, 973, 916,
+ 927, 919, 925, 922, 940, 941, 942, 1908, 1908, 941,
+ 1908, 927, 928, 947, 937, 930, 942, 986, 950, 1908,
+ 942, 994, 935, 996, 1908, 997, 939, 945, 952, 996,
+ 1908, 1908, 944, 946, 960, 965, 948, 1007, 964, 965,
+ 966, 1006, 958, 963, 1014, 962, 1016, 1908, 963, 1018,
+ 1019, 1908, 1908, 959, 1021, 980, 1023, 965, 977, 982,
+
+ 968, 998, 1029, 1908, 986, 979, 988, 1033, 980, 995,
+ 982, 978, 994, 999, 986, 982, 1042, 995, 1000, 1908,
+ 1001, 994, 1003, 1004, 1001, 991, 994, 994, 999, 1054,
+ 1055, 999, 1058, 1054, 995, 1010, 1003, 1063, 1908, 1017,
+ 1908, 1908, 1022, 1014, 1024, 1010, 1011, 1072, 1016, 1026,
+ 1075, 1908, 1023, 1024, 1026, 1028, 1081, 1022, 1025, 1908,
+ 1044, 1908, 1028, 1908, 1908, 1042, 1908, 1036, 1908, 1088,
+ 1037, 1090, 1091, 1071, 1908, 1093, 1050, 1091, 1908, 1039,
+ 1047, 1041, 1040, 1043, 1043, 1044, 1051, 1041, 1908, 1063,
+ 1049, 1050, 1065, 1065, 1068, 1068, 1065, 1109, 1072, 1064,
+
+ 1908, 1908, 1074, 1908, 1071, 1076, 1077, 1074, 1118, 1908,
+ 1067, 1068, 1068, 1074, 1073, 1084, 1908, 1125, 1072, 1908,
+ 1073, 1073, 1075, 1081, 1908, 1083, 1137, 1086, 1089, 1140,
+ 1101, 1908, 1098, 1908, 1095, 1908, 1118, 1908, 1145, 1087,
+ 1147, 1148, 1105, 1091, 1151, 1152, 1105, 1095, 1100, 1156,
+ 1157, 1153, 1116, 1112, 1156, 1104, 1109, 1107, 1166, 1122,
+ 1168, 1126, 1170, 1132, 1121, 1115, 1131, 1131, 1177, 1119,
+ 1136, 1135, 1119, 1177, 1178, 1125, 1180, 1143, 1144, 1908,
+ 1144, 1131, 1908, 1142, 1191, 1149, 1162, 1908, 1146, 1908,
+ 1908, 1137, 1196, 1908, 1908, 1143, 1141, 1155, 1908, 1908,
+
+ 1145, 1196, 1139, 1144, 1204, 1152, 1162, 1163, 1908, 1208,
+ 1161, 1908, 1210, 1908, 1153, 1168, 1156, 1171, 1175, 1908,
+ 1211, 1177, 1170, 1179, 1161, 1169, 1223, 1183, 1182, 1227,
+ 1228, 1229, 1178, 1908, 1231, 1232, 1181, 1234, 1908, 1182,
+ 1182, 1237, 1181, 1180, 1240, 1193, 1908, 1237, 1188, 1185,
+ 1908, 1199, 1908, 1202, 1247, 1200, 1249, 1208, 1191, 1193,
+ 1190, 1206, 1207, 1216, 1908, 1206, 1258, 1908, 1908, 1908,
+ 1254, 1908, 1908, 1216, 1908, 1256, 1211, 1908, 1209, 1216,
+ 1908, 1213, 1218, 1216, 1268, 1269, 1212, 1908, 1227, 1908,
+ 1228, 1218, 1230, 1275, 1217, 1225, 1226, 1239, 1908, 1238,
+
+ 1223, 1227, 1283, 1242, 1233, 1242, 1244, 1248, 1908, 1908,
+ 1289, 1232, 1291, 1249, 1293, 1908, 1289, 1251, 1252, 1239,
+ 1234, 1299, 1256, 1908, 1257, 1258, 1303, 1260, 1263, 1908,
+ 1306, 1908, 1267, 1908, 1249, 1309, 1310, 1253, 1270, 1908,
+ 1256, 1256, 1258, 1908, 1263, 1273, 1908, 1259, 1271, 1908,
+ 1908, 1276, 1270, 1274, 1265, 1319, 1266, 1274, 1283, 1276,
+ 1271, 1286, 1277, 1284, 1271, 1286, 1291, 1336, 1293, 1338,
+ 1281, 1297, 1288, 1302, 1298, 1291, 1908, 1345, 1908, 1346,
+ 1347, 1302, 1301, 1302, 1292, 1908, 1908, 1908, 1352, 1294,
+ 1310, 1355, 1908, 1351, 1300, 1908, 1299, 1301, 1312, 1361,
+
+ 1310, 1908, 1319, 1364, 1908, 1908, 1370, 1375, 1380, 1385,
+ 1390, 1395, 1400, 1403, 1377, 1382, 1384, 1397
} ;
-static const flex_int16_t yy_def[1480] =
+static const flex_int16_t yy_def[1519] =
{ 0,
- 1468, 1468, 1469, 1469, 1468, 1468, 1468, 1468, 1468, 1468,
- 1467, 1467, 1467, 1467, 1467, 1470, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1471,
- 1467, 1467, 1467, 1472, 15, 1467, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1473, 45, 45,
+ 1507, 1507, 1508, 1508, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1506, 1506, 1506, 1506, 1506, 1509, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1510,
+ 1506, 1506, 1506, 1511, 15, 1506, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1512, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1470,
- 1467, 1467, 1467, 1467, 1467, 1467, 1474, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1471, 1467,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1509,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1513, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1510, 1506,
- 1472, 1467, 1467, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1475, 45, 1473, 45, 45,
+ 1511, 1506, 1506, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1514, 45, 1512, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1474, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1476, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1513, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1515, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1475, 1467, 1473, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1514, 1506, 1512, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1506, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1477, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1516,
- 45, 45, 1467, 45, 1467, 45, 1473, 1467, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1506, 45,
+ 1506, 45, 1512, 1506, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1506, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
+ 45, 45, 1506, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1506, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1467, 45, 45, 45, 45, 1467, 1467, 1467,
- 1478, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
- 45, 45, 1467, 45, 1473, 45, 45, 45, 45, 45,
- 45, 1467, 45, 45, 45, 45, 45, 45, 1467, 45,
- 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1467, 45, 1467,
+ 45, 1506, 45, 45, 45, 45, 1506, 1506, 1506, 1517,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1506, 45,
+ 45, 1506, 45, 1512, 45, 45, 45, 45, 45, 45,
+ 45, 1506, 45, 45, 45, 45, 45, 45, 1506, 45,
+ 45, 45, 45, 45, 1506, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1506, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1506, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1506, 45, 1506,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1467, 1467, 45, 45, 1467,
- 45, 45, 1467, 1479, 45, 45, 45, 45, 1467, 1467,
- 45, 1467, 45, 1467, 45, 45, 45, 1467, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1506, 1506, 45,
+ 45, 1506, 45, 45, 1506, 1518, 45, 45, 45, 45,
+ 1506, 1506, 45, 1506, 45, 1506, 45, 45, 45, 1506,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45,
- 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
-
- 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
- 45, 45, 45, 45, 45, 45, 1467, 45, 45, 1467,
+ 45, 45, 45, 1506, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1506, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1506,
+
+ 45, 45, 45, 45, 45, 45, 45, 45, 1506, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1506, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1506, 45, 45, 1506, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
- 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1506, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1506, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1506, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45,
- 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1467, 1467,
- 45, 45, 45, 45, 1467, 1467, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 1506, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1506, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1506, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1506, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1506, 1506, 45,
+ 45, 45, 45, 1506, 1506, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1506, 45, 45, 45,
- 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45,
- 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
- 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1506, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1506, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1506, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1506, 45, 45, 45,
+ 45, 45, 1506, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1506, 45, 45, 45, 1506, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45,
- 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45,
+ 45, 45, 45, 1506, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1506, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1506, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1467, 45, 45, 1467, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
- 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
-
- 45, 45, 1467, 1467, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
- 1467, 45, 1467, 45, 45, 45, 45, 45, 45, 45,
- 45, 1467, 45, 45, 45, 45, 1467, 45, 45, 45,
- 45, 45, 1467, 1467, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
+ 45, 1506, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
+ 45, 45, 45, 45, 45, 1506, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1506, 45, 45,
+
+ 1506, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1506, 45, 45, 45, 45,
+ 45, 45, 45, 1506, 45, 45, 45, 45, 45, 45,
+ 1506, 1506, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1506, 1506, 45,
+ 1506, 45, 45, 45, 45, 45, 45, 45, 45, 1506,
+ 45, 45, 45, 45, 1506, 45, 45, 45, 45, 45,
+ 1506, 1506, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1506, 45, 45,
+ 45, 1506, 1506, 45, 45, 45, 45, 45, 45, 45,
+
+ 45, 45, 45, 1506, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1506,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1506, 45,
+ 1506, 1506, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1506, 45, 45, 45, 45, 45, 45, 45, 1506,
+ 45, 1506, 45, 1506, 1506, 45, 1506, 45, 1506, 45,
+ 45, 45, 45, 45, 1506, 45, 45, 45, 1506, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1506, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1467, 45, 1467,
- 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1467, 45, 45, 45, 45, 45, 45, 45, 1467, 45,
- 1467, 45, 1467, 1467, 45, 1467, 45, 1467, 45, 45,
- 45, 45, 45, 1467, 45, 45, 1467, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1467, 1467,
- 45, 1467, 45, 45, 45, 45, 45, 1467, 45, 45,
- 45, 45, 45, 45, 1467, 45, 45, 1467, 45, 45,
- 45, 45, 1467, 45, 45, 45, 45, 45, 45, 1467,
-
- 45, 1467, 45, 1467, 45, 1467, 45, 45, 45, 45,
+ 1506, 1506, 45, 1506, 45, 45, 45, 45, 45, 1506,
+ 45, 45, 45, 45, 45, 45, 1506, 45, 45, 1506,
+ 45, 45, 45, 45, 1506, 45, 45, 45, 45, 45,
+ 45, 1506, 45, 1506, 45, 1506, 45, 1506, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1506,
+ 45, 45, 1506, 45, 45, 45, 45, 1506, 45, 1506,
+ 1506, 45, 45, 1506, 1506, 45, 45, 45, 1506, 1506,
+
+ 45, 45, 45, 45, 45, 45, 45, 45, 1506, 45,
+ 45, 1506, 45, 1506, 45, 45, 45, 45, 45, 1506,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1467, 45, 45, 1467,
- 45, 45, 45, 45, 1467, 1467, 1467, 45, 45, 1467,
- 1467, 45, 45, 45, 1467, 1467, 45, 45, 45, 45,
- 45, 45, 45, 45, 1467, 45, 45, 1467, 45, 1467,
- 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
-
- 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45,
- 45, 1467, 45, 45, 45, 1467, 45, 1467, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467,
- 45, 45, 1467, 1467, 1467, 45, 1467, 1467, 1467, 45,
- 45, 1467, 45, 45, 1467, 45, 45, 45, 45, 45,
- 45, 1467, 45, 1467, 45, 45, 45, 45, 45, 45,
- 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45,
- 45, 1467, 1467, 45, 45, 45, 45, 45, 1467, 45,
- 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45,
- 45, 1467, 45, 1467, 45, 1467, 45, 45, 45, 45,
-
- 45, 45, 45, 45, 1467, 45, 45, 1467, 45, 45,
- 1467, 1467, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1506, 45, 45, 45, 45, 1506, 45,
+ 45, 45, 45, 45, 45, 45, 1506, 45, 45, 45,
+ 1506, 45, 1506, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1506, 45, 45, 1506, 1506, 1506,
+ 45, 1506, 1506, 45, 1506, 45, 45, 1506, 45, 45,
+ 1506, 45, 45, 45, 45, 45, 45, 1506, 45, 1506,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1506, 45,
+
+ 45, 45, 45, 45, 45, 45, 45, 45, 1506, 1506,
+ 45, 45, 45, 45, 45, 1506, 45, 45, 45, 45,
+ 45, 45, 45, 1506, 45, 45, 45, 45, 45, 1506,
+ 45, 1506, 45, 1506, 45, 45, 45, 45, 45, 1506,
+ 45, 45, 45, 1506, 45, 45, 1506, 45, 45, 1506,
+ 1506, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1467, 45, 1467,
- 45, 45, 45, 45, 45, 45, 1467, 1467, 1467, 45,
- 45, 45, 45, 1467, 45, 45, 1467, 45, 45, 45,
- 45, 45, 1467, 45, 45, 1467, 0, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467
+ 45, 45, 45, 45, 45, 45, 1506, 45, 1506, 45,
+ 45, 45, 45, 45, 45, 1506, 1506, 1506, 45, 45,
+ 45, 45, 1506, 45, 45, 1506, 45, 45, 45, 45,
+
+ 45, 1506, 45, 45, 1506, 0, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506
} ;
-static const flex_int16_t yy_nxt[1903] =
+static const flex_int16_t yy_nxt[1982] =
{ 0,
- 1467, 13, 14, 13, 1467, 15, 16, 1467, 17, 18,
- 19, 20, 21, 22, 22, 22, 23, 24, 86, 705,
- 37, 14, 37, 87, 25, 26, 38, 1467, 706, 27,
- 37, 14, 37, 42, 28, 42, 38, 92, 93, 29,
- 115, 30, 13, 14, 13, 91, 92, 25, 31, 93,
- 13, 14, 13, 13, 14, 13, 32, 40, 818, 13,
- 14, 13, 33, 40, 115, 92, 93, 819, 91, 34,
- 35, 13, 14, 13, 95, 15, 16, 96, 17, 18,
- 19, 20, 21, 22, 22, 22, 23, 24, 13, 14,
- 13, 109, 39, 91, 25, 26, 13, 14, 13, 27,
-
- 39, 85, 85, 85, 28, 42, 41, 42, 42, 29,
- 42, 30, 83, 108, 41, 111, 94, 25, 31, 109,
- 217, 218, 89, 137, 89, 139, 32, 90, 90, 90,
- 138, 374, 33, 140, 375, 83, 108, 820, 111, 34,
- 35, 44, 44, 44, 45, 45, 46, 45, 45, 45,
- 45, 45, 45, 45, 45, 47, 45, 45, 45, 45,
- 45, 48, 45, 49, 50, 45, 51, 45, 52, 53,
- 54, 45, 45, 45, 45, 55, 56, 45, 57, 45,
- 45, 58, 45, 45, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 52, 68, 69, 70, 71, 72, 73,
-
- 74, 75, 76, 77, 78, 79, 57, 45, 45, 45,
- 45, 45, 81, 105, 82, 82, 82, 81, 114, 84,
- 84, 84, 102, 105, 81, 83, 84, 84, 84, 821,
- 83, 108, 123, 112, 141, 124, 182, 83, 125, 105,
- 126, 114, 127, 113, 142, 200, 143, 164, 83, 119,
- 194, 165, 133, 83, 108, 120, 112, 103, 121, 182,
- 83, 45, 149, 134, 182, 136, 150, 45, 200, 45,
- 45, 113, 45, 135, 45, 45, 45, 194, 117, 145,
- 146, 45, 45, 147, 45, 45, 151, 185, 822, 148,
+ 1506, 13, 14, 13, 1506, 15, 16, 1506, 17, 18,
+ 19, 20, 21, 22, 22, 22, 22, 22, 23, 24,
+ 86, 695, 37, 14, 37, 87, 25, 26, 38, 102,
+ 1506, 27, 37, 14, 37, 42, 28, 42, 38, 92,
+ 93, 29, 197, 30, 13, 14, 13, 91, 92, 25,
+ 31, 93, 13, 14, 13, 13, 14, 13, 32, 40,
+ 696, 13, 14, 13, 33, 40, 103, 92, 93, 197,
+ 91, 34, 35, 13, 14, 13, 95, 15, 16, 96,
+ 17, 18, 19, 20, 21, 22, 22, 22, 22, 22,
+ 23, 24, 13, 14, 13, 91, 39, 105, 25, 26,
+
+ 13, 14, 13, 27, 39, 42, 108, 42, 28, 42,
+ 109, 42, 41, 29, 111, 30, 114, 115, 94, 140,
+ 41, 25, 31, 105, 221, 222, 89, 141, 89, 108,
+ 32, 90, 90, 90, 90, 90, 33, 111, 109, 114,
+ 227, 115, 228, 34, 35, 44, 44, 44, 45, 45,
+ 46, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 47, 45, 45, 45, 45, 45, 48, 45, 49,
+ 50, 45, 51, 45, 52, 53, 54, 45, 45, 45,
+ 45, 55, 56, 45, 57, 45, 45, 58, 45, 45,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 52,
+
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 57, 45, 45, 45, 45, 45, 81, 812,
+ 82, 82, 82, 82, 82, 81, 105, 84, 84, 84,
+ 84, 84, 108, 83, 85, 85, 85, 85, 85, 81,
+ 83, 84, 84, 84, 84, 84, 183, 83, 258, 259,
+ 112, 123, 119, 134, 83, 108, 83, 185, 120, 124,
+ 113, 121, 125, 83, 135, 126, 137, 127, 138, 128,
+ 83, 142, 183, 112, 136, 139, 161, 83, 45, 184,
+ 162, 143, 819, 144, 45, 185, 45, 45, 113, 45,
+ 163, 45, 45, 45, 411, 117, 146, 147, 45, 45,
+
+ 148, 45, 45, 185, 412, 184, 149, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
-
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 90, 90, 90, 45, 128, 197,
- 111, 45, 129, 160, 180, 130, 131, 161, 114, 45,
- 242, 823, 155, 45, 243, 45, 118, 162, 132, 152,
- 156, 153, 157, 154, 112, 166, 197, 158, 159, 167,
- 180, 175, 168, 181, 113, 90, 90, 90, 102, 169,
- 170, 176, 85, 85, 85, 171, 177, 172, 81, 173,
- 82, 82, 82, 83, 180, 85, 85, 85, 89, 181,
- 89, 83, 113, 90, 90, 90, 83, 181, 81, 174,
- 84, 84, 84, 103, 190, 101, 83, 193, 196, 198,
-
- 183, 83, 101, 190, 83, 199, 211, 196, 223, 83,
- 224, 230, 226, 184, 231, 212, 213, 824, 232, 287,
- 204, 197, 190, 193, 83, 262, 196, 198, 227, 287,
- 101, 205, 199, 504, 101, 196, 505, 248, 101, 254,
- 255, 257, 271, 272, 258, 259, 101, 287, 280, 289,
- 101, 199, 101, 188, 203, 203, 203, 290, 263, 264,
- 265, 203, 203, 203, 203, 203, 203, 288, 288, 266,
- 299, 267, 289, 268, 269, 273, 270, 289, 283, 274,
- 296, 300, 302, 275, 203, 203, 203, 203, 203, 203,
- 304, 306, 296, 288, 291, 395, 317, 303, 299, 359,
-
- 292, 398, 390, 296, 318, 302, 348, 402, 300, 398,
- 319, 404, 404, 304, 409, 309, 412, 403, 306, 307,
- 307, 307, 426, 478, 398, 719, 307, 307, 307, 307,
- 307, 307, 399, 360, 406, 407, 466, 409, 432, 427,
- 404, 416, 433, 408, 412, 396, 467, 361, 719, 307,
- 307, 307, 307, 307, 307, 459, 460, 349, 517, 446,
- 350, 415, 415, 415, 447, 661, 662, 679, 415, 415,
- 415, 415, 415, 415, 487, 517, 492, 510, 488, 479,
- 493, 624, 511, 551, 541, 525, 517, 526, 552, 727,
- 728, 415, 415, 415, 415, 415, 415, 542, 825, 543,
-
- 620, 625, 718, 527, 680, 626, 763, 724, 624, 764,
- 448, 816, 525, 725, 526, 449, 45, 45, 45, 826,
- 827, 828, 829, 45, 45, 45, 45, 45, 45, 625,
- 718, 794, 796, 797, 830, 802, 831, 832, 795, 816,
- 798, 803, 833, 834, 799, 835, 45, 45, 45, 45,
- 45, 45, 836, 837, 838, 839, 840, 841, 842, 843,
- 844, 845, 847, 848, 849, 850, 846, 851, 852, 853,
- 854, 855, 856, 857, 858, 859, 860, 861, 862, 863,
- 865, 866, 867, 864, 868, 869, 870, 871, 872, 873,
- 874, 875, 876, 877, 878, 879, 880, 881, 882, 883,
-
- 884, 885, 886, 887, 888, 889, 890, 891, 892, 893,
- 894, 895, 896, 897, 898, 899, 900, 901, 902, 903,
- 904, 905, 906, 907, 908, 909, 910, 911, 912, 913,
- 914, 915, 916, 917, 918, 919, 920, 921, 922, 923,
- 924, 925, 926, 927, 928, 906, 929, 930, 905, 931,
- 932, 933, 934, 935, 936, 937, 939, 940, 941, 942,
- 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,
- 953, 954, 955, 956, 958, 959, 960, 961, 962, 963,
- 964, 965, 966, 967, 957, 968, 969, 970, 971, 972,
- 973, 974, 975, 976, 977, 978, 979, 980, 981, 982,
-
- 983, 984, 985, 986, 987, 988, 989, 990, 991, 993,
- 992, 938, 994, 995, 996, 997, 998, 999, 1000, 1001,
- 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
- 1012, 1013, 1014, 1015, 1016, 1017, 991, 992, 1018, 1019,
- 1020, 1021, 1023, 1025, 1026, 1027, 1022, 1028, 1029, 1030,
- 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040,
- 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050,
- 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
- 1061, 1062, 1063, 1064, 1024, 1065, 1066, 1067, 1068, 1069,
- 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079,
-
- 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089,
- 1090, 1091, 1092, 1093, 1094, 1072, 1095, 1096, 1097, 1098,
- 1099, 1073, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107,
- 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117,
- 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1127, 1128,
- 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138,
- 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1149,
- 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159,
- 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169,
- 1170, 1171, 1143, 1172, 1173, 1174, 1175, 1177, 1126, 1178,
-
- 1179, 1180, 1181, 1182, 1176, 1183, 1184, 1185, 1186, 1187,
- 1148, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196,
- 1197, 1198, 1199, 1200, 1201, 1202, 1204, 1205, 1206, 1207,
- 1203, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216,
- 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226,
- 1205, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235,
- 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245,
- 1246, 1247, 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,
-
- 1277, 1278, 1279, 1280, 1281, 1254, 1282, 1283, 1284, 1285,
- 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295,
- 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305,
- 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315,
- 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325,
- 1326, 1327, 1328, 1329, 1302, 1276, 1330, 1331, 1332, 1333,
- 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
- 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353,
- 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363,
- 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373,
-
- 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383,
- 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393,
- 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403,
- 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413,
- 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423,
- 1424, 1425, 1426, 1427, 1428, 1429, 1430, 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, 1458, 1459, 1460, 1461, 1462, 1463,
- 1464, 1465, 1466, 12, 12, 12, 12, 12, 36, 36,
-
- 36, 36, 36, 80, 294, 80, 80, 80, 99, 401,
- 99, 514, 99, 101, 101, 101, 101, 101, 116, 116,
- 116, 116, 116, 179, 101, 179, 179, 179, 201, 201,
- 201, 817, 815, 814, 813, 812, 811, 810, 809, 808,
- 807, 806, 805, 804, 801, 800, 793, 792, 791, 790,
- 789, 788, 787, 786, 785, 784, 783, 782, 781, 780,
- 779, 778, 777, 776, 775, 774, 773, 772, 771, 770,
- 769, 768, 767, 766, 765, 762, 761, 760, 759, 758,
+ 129, 188, 45, 820, 130, 150, 45, 131, 132, 151,
+ 45, 111, 165, 275, 276, 183, 166, 102, 45, 114,
+ 133, 193, 45, 156, 45, 118, 200, 173, 174, 152,
+ 153, 157, 154, 158, 155, 184, 167, 112, 159, 160,
+ 168, 186, 178, 169, 246, 823, 404, 113, 247, 193,
+ 170, 171, 179, 200, 103, 203, 172, 180, 469, 470,
+ 175, 187, 176, 85, 85, 85, 85, 85, 81, 199,
+
+ 82, 82, 82, 82, 82, 113, 83, 201, 203, 89,
+ 824, 89, 177, 83, 90, 90, 90, 90, 90, 81,
+ 202, 84, 84, 84, 84, 84, 101, 199, 405, 83,
+ 196, 193, 825, 101, 83, 201, 83, 85, 85, 85,
+ 85, 85, 90, 90, 90, 90, 90, 202, 207, 230,
+ 83, 90, 90, 90, 90, 90, 196, 83, 277, 208,
+ 215, 234, 278, 101, 235, 231, 279, 101, 236, 216,
+ 217, 101, 261, 83, 199, 262, 263, 294, 200, 101,
+ 266, 202, 293, 101, 295, 101, 191, 206, 206, 206,
+ 206, 206, 294, 355, 677, 678, 206, 206, 206, 206,
+
+ 206, 206, 199, 294, 252, 286, 293, 295, 289, 295,
+ 293, 305, 302, 306, 308, 267, 268, 269, 297, 206,
+ 206, 206, 206, 206, 206, 310, 270, 312, 271, 302,
+ 272, 273, 298, 274, 296, 302, 324, 308, 381, 305,
+ 306, 382, 309, 366, 325, 421, 356, 399, 310, 357,
+ 326, 407, 315, 407, 312, 313, 313, 313, 313, 313,
+ 418, 436, 415, 416, 313, 313, 313, 313, 313, 313,
+ 413, 417, 476, 421, 407, 442, 408, 413, 437, 367,
+ 488, 443, 477, 418, 737, 826, 721, 313, 313, 313,
+ 313, 313, 313, 368, 497, 639, 529, 722, 498, 413,
+
+ 424, 424, 424, 424, 424, 516, 425, 737, 517, 424,
+ 424, 424, 424, 424, 424, 456, 529, 502, 522, 640,
+ 457, 503, 639, 523, 529, 537, 554, 538, 736, 746,
+ 747, 827, 424, 424, 424, 424, 424, 424, 489, 555,
+ 564, 556, 828, 635, 539, 565, 829, 640, 641, 743,
+ 782, 813, 537, 783, 538, 744, 736, 821, 814, 815,
+ 816, 830, 831, 822, 832, 833, 834, 817, 458, 835,
+ 836, 818, 837, 459, 45, 45, 45, 45, 45, 838,
+ 839, 840, 841, 45, 45, 45, 45, 45, 45, 842,
+ 843, 844, 845, 846, 847, 848, 849, 850, 851, 852,
+
+ 837, 853, 854, 855, 856, 857, 45, 45, 45, 45,
+ 45, 45, 858, 859, 860, 861, 862, 863, 864, 865,
+ 866, 867, 869, 870, 871, 872, 868, 873, 874, 875,
+ 876, 877, 878, 879, 880, 881, 882, 883, 884, 885,
+ 887, 888, 889, 886, 890, 891, 892, 893, 894, 895,
+ 896, 897, 898, 899, 900, 901, 902, 903, 904, 905,
+ 906, 907, 908, 909, 910, 911, 912, 913, 914, 915,
+ 916, 917, 918, 919, 920, 921, 922, 923, 924, 925,
+ 926, 927, 928, 929, 930, 931, 932, 933, 934, 935,
+ 936, 937, 938, 939, 940, 941, 942, 943, 944, 945,
+
+ 946, 947, 948, 949, 950, 951, 952, 930, 953, 954,
+ 929, 955, 956, 957, 958, 959, 960, 961, 962, 964,
+ 965, 966, 967, 968, 969, 970, 971, 972, 973, 974,
+ 975, 976, 977, 978, 979, 980, 981, 983, 984, 985,
+ 986, 987, 988, 989, 990, 991, 992, 982, 993, 994,
+ 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004,
+ 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014,
+ 1015, 1016, 1017, 1018, 1020, 1019, 963, 1021, 1022, 1023,
+ 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033,
+ 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
+
+ 1044, 1018, 1019, 1045, 1046, 1047, 1048, 1049, 1051, 1053,
+ 1054, 1055, 1050, 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, 1081, 1082,
+ 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
+ 1093, 1094, 1052, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
+ 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
+ 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
+ 1122, 1123, 1124, 1102, 1125, 1126, 1127, 1128, 1129, 1103,
+ 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139,
+
+ 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149,
+ 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1158, 1159, 1160,
+ 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170,
+ 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1181,
+ 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191,
+ 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201,
+ 1202, 1174, 1203, 1204, 1205, 1206, 1207, 1209, 1210, 1157,
+ 1211, 1212, 1213, 1214, 1208, 1215, 1216, 1217, 1218, 1219,
+ 1220, 1221, 1180, 1222, 1223, 1224, 1225, 1226, 1227, 1228,
+ 1229, 1230, 1231, 1232, 1233, 1234, 1236, 1237, 1238, 1239,
+
+ 1235, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248,
+ 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258,
+ 1237, 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, 1287,
+ 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297,
+ 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307,
+ 1308, 1309, 1311, 1312, 1313, 1314, 1287, 1315, 1316, 1317,
+ 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327,
+ 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337,
+
+ 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347,
+ 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357,
+ 1358, 1359, 1360, 1361, 1362, 1363, 1336, 1364, 1365, 1310,
+ 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375,
+ 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385,
+ 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395,
+ 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
+ 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415,
+ 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425,
+ 1426, 1427, 1428, 1429, 1430, 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, 1458, 1459, 1460, 1461, 1462, 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, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495,
+ 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505,
+ 12, 12, 12, 12, 12, 36, 36, 36, 36, 36,
+ 80, 300, 80, 80, 80, 99, 410, 99, 526, 99,
+ 101, 101, 101, 101, 101, 116, 116, 116, 116, 116,
+
+ 182, 101, 182, 182, 182, 204, 204, 204, 811, 810,
+ 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, 781, 780, 779, 778,
+ 777, 776, 775, 774, 773, 772, 771, 770, 769, 768,
+ 767, 766, 765, 764, 763, 762, 761, 760, 759, 758,
757, 756, 755, 754, 753, 752, 751, 750, 749, 748,
- 747, 746, 745, 744, 743, 742, 741, 740, 739, 738,
-
- 737, 736, 735, 734, 733, 732, 731, 730, 729, 726,
- 723, 722, 721, 720, 717, 716, 715, 714, 713, 712,
- 711, 710, 709, 708, 707, 704, 703, 702, 701, 700,
- 699, 698, 697, 696, 695, 694, 693, 692, 691, 690,
- 689, 688, 687, 686, 685, 684, 683, 682, 681, 678,
- 677, 676, 675, 674, 673, 672, 671, 670, 669, 668,
- 667, 666, 665, 664, 663, 660, 659, 658, 657, 656,
+ 745, 742, 741, 740, 739, 738, 735, 734, 733, 732,
+ 731, 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,
+ 699, 698, 697, 694, 693, 692, 691, 690, 689, 688,
+ 687, 686, 685, 684, 683, 682, 681, 680, 679, 676,
+ 675, 674, 673, 672, 671, 670, 669, 668, 667, 666,
+ 665, 664, 663, 662, 661, 660, 659, 658, 657, 656,
655, 654, 653, 652, 651, 650, 649, 648, 647, 646,
- 645, 644, 643, 642, 641, 640, 639, 638, 637, 636,
- 635, 634, 633, 632, 631, 630, 629, 628, 627, 623,
-
+ 645, 644, 643, 642, 638, 637, 636, 635, 634, 633,
+ 632, 631, 630, 629, 628, 627, 626, 625, 624, 623,
622, 621, 620, 619, 618, 617, 616, 615, 614, 613,
612, 611, 610, 609, 608, 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, 559, 558, 557, 556, 555, 554, 553,
- 550, 549, 548, 547, 546, 545, 544, 540, 539, 538,
- 537, 536, 535, 534, 533, 532, 531, 530, 529, 528,
- 524, 523, 522, 521, 520, 519, 518, 516, 515, 513,
-
- 512, 509, 508, 507, 506, 503, 502, 501, 500, 499,
- 498, 497, 496, 495, 494, 491, 490, 489, 486, 485,
- 484, 483, 482, 481, 480, 477, 476, 475, 474, 473,
- 472, 471, 470, 469, 468, 465, 464, 463, 462, 461,
- 458, 457, 456, 455, 454, 453, 452, 451, 450, 445,
- 444, 443, 442, 441, 440, 439, 438, 437, 436, 435,
- 434, 431, 430, 429, 428, 425, 424, 423, 422, 421,
- 420, 419, 418, 417, 414, 413, 411, 410, 405, 400,
- 397, 394, 393, 392, 391, 389, 388, 387, 386, 385,
- 384, 383, 382, 381, 380, 379, 378, 377, 376, 373,
-
- 372, 371, 370, 369, 368, 367, 366, 365, 364, 363,
- 362, 358, 357, 356, 355, 354, 353, 352, 351, 347,
+ 572, 571, 570, 569, 568, 567, 566, 563, 562, 561,
+ 560, 559, 558, 557, 553, 552, 551, 550, 549, 548,
+ 547, 546, 545, 544, 543, 542, 541, 540, 536, 535,
+ 534, 533, 532, 531, 530, 528, 527, 525, 524, 521,
+ 520, 519, 518, 515, 514, 513, 512, 511, 510, 509,
+ 508, 507, 506, 505, 504, 501, 500, 499, 496, 495,
+ 494, 493, 492, 491, 490, 487, 486, 485, 484, 483,
+
+ 482, 481, 480, 479, 478, 475, 474, 473, 472, 471,
+ 468, 467, 466, 465, 464, 463, 462, 461, 460, 455,
+ 454, 453, 452, 451, 450, 449, 448, 447, 446, 445,
+ 444, 441, 440, 439, 438, 435, 434, 433, 432, 431,
+ 430, 429, 428, 427, 426, 423, 422, 420, 419, 414,
+ 409, 406, 403, 402, 401, 400, 398, 397, 396, 395,
+ 394, 393, 392, 391, 390, 389, 388, 387, 386, 385,
+ 384, 383, 380, 379, 378, 377, 376, 375, 374, 373,
+ 372, 371, 370, 369, 365, 364, 363, 362, 361, 360,
+ 359, 358, 354, 353, 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, 320, 316, 315, 314,
- 313, 312, 311, 310, 308, 202, 305, 303, 301, 298,
- 297, 295, 293, 286, 285, 284, 282, 281, 279, 278,
- 277, 276, 261, 260, 256, 253, 252, 251, 250, 249,
- 247, 246, 245, 244, 241, 240, 239, 238, 237, 236,
- 235, 234, 233, 229, 228, 225, 222, 221, 220, 219,
-
- 216, 215, 214, 210, 209, 208, 207, 206, 202, 195,
- 192, 191, 189, 187, 186, 178, 163, 144, 122, 110,
- 107, 106, 104, 43, 100, 98, 97, 88, 43, 1467,
- 11, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
-
- 1467, 1467
+ 323, 322, 321, 320, 319, 318, 317, 316, 314, 205,
+ 311, 309, 307, 304, 303, 301, 299, 292, 291, 290,
+ 288, 287, 285, 284, 283, 282, 281, 280, 265, 264,
+ 260, 257, 256, 255, 254, 253, 251, 250, 249, 248,
+ 245, 244, 243, 242, 241, 240, 239, 238, 237, 233,
+ 232, 229, 226, 225, 224, 223, 220, 219, 218, 214,
+ 213, 212, 211, 210, 209, 205, 198, 195, 194, 192,
+ 190, 189, 181, 164, 145, 122, 110, 107, 106, 104,
+
+ 43, 100, 98, 97, 88, 43, 1506, 11, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506
} ;
-static const flex_int16_t yy_chk[1903] =
+static const flex_int16_t yy_chk[1982] =
{ 0,
0, 1, 1, 1, 0, 1, 1, 0, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 21, 610,
- 3, 3, 3, 21, 1, 1, 3, 0, 610, 1,
- 4, 4, 4, 13, 1, 13, 4, 27, 28, 1,
- 57, 1, 5, 5, 5, 26, 32, 1, 1, 33,
- 6, 6, 6, 7, 7, 7, 1, 7, 721, 8,
- 8, 8, 1, 8, 57, 27, 28, 722, 26, 1,
- 1, 2, 2, 2, 32, 2, 2, 33, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 9, 9,
- 9, 52, 5, 31, 2, 2, 10, 10, 10, 2,
-
- 6, 20, 20, 20, 2, 37, 9, 37, 42, 2,
- 42, 2, 20, 51, 10, 54, 31, 2, 2, 52,
- 129, 129, 25, 65, 25, 66, 2, 25, 25, 25,
- 65, 265, 2, 66, 265, 20, 51, 723, 54, 2,
- 2, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 21, 595, 3, 3, 3, 21, 1, 1, 3, 44,
+ 0, 1, 4, 4, 4, 13, 1, 13, 4, 27,
+ 28, 1, 109, 1, 5, 5, 5, 26, 32, 1,
+ 1, 33, 6, 6, 6, 7, 7, 7, 1, 7,
+ 595, 8, 8, 8, 1, 8, 44, 27, 28, 109,
+ 26, 1, 1, 2, 2, 2, 32, 2, 2, 33,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 9, 9, 9, 31, 5, 48, 2, 2,
+
+ 10, 10, 10, 2, 6, 37, 51, 37, 2, 42,
+ 52, 42, 9, 2, 54, 2, 56, 57, 31, 66,
+ 10, 2, 2, 48, 130, 130, 25, 66, 25, 51,
+ 2, 25, 25, 25, 25, 25, 2, 54, 52, 56,
+ 135, 57, 135, 2, 2, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
- 15, 15, 17, 48, 17, 17, 17, 19, 56, 19,
- 19, 19, 44, 59, 22, 17, 22, 22, 22, 724,
- 19, 64, 61, 55, 67, 61, 93, 22, 61, 48,
- 61, 56, 61, 55, 67, 115, 67, 75, 17, 59,
- 109, 75, 63, 19, 64, 59, 55, 44, 59, 96,
- 22, 45, 70, 63, 93, 64, 70, 45, 115, 45,
- 45, 55, 45, 63, 45, 45, 45, 109, 58, 69,
- 69, 45, 45, 69, 45, 58, 70, 96, 725, 69,
+ 15, 15, 15, 15, 15, 15, 15, 15, 17, 715,
+ 17, 17, 17, 17, 17, 19, 59, 19, 19, 19,
+ 19, 19, 64, 17, 20, 20, 20, 20, 20, 22,
+ 19, 22, 22, 22, 22, 22, 91, 20, 161, 161,
+ 55, 61, 59, 63, 22, 64, 17, 93, 59, 61,
+ 55, 59, 61, 19, 63, 61, 64, 61, 65, 61,
+ 20, 67, 91, 55, 63, 65, 73, 22, 45, 92,
+ 73, 67, 718, 67, 45, 93, 45, 45, 55, 45,
+ 73, 45, 45, 45, 301, 58, 69, 69, 45, 45,
+
+ 69, 45, 58, 96, 301, 92, 69, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
-
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 58, 89, 89, 89, 58, 62, 112,
- 71, 58, 62, 73, 91, 62, 62, 73, 78, 58,
- 149, 727, 72, 58, 149, 58, 58, 73, 62, 71,
- 72, 71, 72, 71, 77, 76, 112, 72, 72, 76,
- 91, 78, 76, 92, 77, 90, 90, 90, 101, 76,
- 76, 78, 81, 81, 81, 76, 78, 77, 82, 77,
- 82, 82, 82, 81, 94, 85, 85, 85, 83, 92,
- 83, 82, 77, 83, 83, 83, 85, 95, 84, 77,
- 84, 84, 84, 101, 105, 103, 81, 108, 111, 113,
-
- 94, 84, 103, 119, 82, 114, 125, 154, 134, 85,
- 134, 139, 136, 95, 139, 125, 125, 728, 139, 180,
- 119, 172, 105, 108, 84, 165, 111, 113, 136, 183,
- 103, 119, 114, 390, 103, 154, 390, 154, 103, 160,
- 160, 162, 166, 166, 162, 162, 103, 180, 172, 182,
- 103, 175, 103, 103, 118, 118, 118, 183, 165, 165,
- 165, 118, 118, 118, 118, 118, 118, 181, 184, 165,
- 193, 165, 182, 165, 165, 167, 165, 185, 175, 167,
- 190, 194, 196, 167, 118, 118, 118, 118, 118, 118,
- 198, 200, 205, 181, 184, 285, 213, 280, 193, 252,
-
- 185, 287, 280, 190, 213, 196, 243, 295, 194, 290,
- 213, 296, 309, 198, 299, 205, 302, 295, 200, 203,
- 203, 203, 319, 366, 287, 625, 203, 203, 203, 203,
- 203, 203, 290, 252, 298, 298, 354, 299, 325, 319,
- 296, 309, 325, 298, 302, 285, 354, 252, 625, 203,
- 203, 203, 203, 203, 203, 348, 348, 243, 404, 338,
- 243, 307, 307, 307, 338, 564, 564, 582, 307, 307,
- 307, 307, 307, 307, 375, 416, 379, 396, 375, 366,
- 379, 525, 396, 441, 432, 414, 404, 414, 441, 632,
- 632, 307, 307, 307, 307, 307, 307, 432, 729, 432,
-
- 527, 526, 624, 416, 582, 527, 668, 630, 525, 668,
- 338, 719, 414, 630, 414, 338, 415, 415, 415, 730,
- 731, 732, 733, 415, 415, 415, 415, 415, 415, 526,
- 624, 700, 701, 701, 734, 704, 735, 736, 700, 719,
- 701, 704, 737, 738, 701, 739, 415, 415, 415, 415,
- 415, 415, 740, 741, 742, 743, 745, 746, 747, 748,
- 749, 750, 751, 752, 753, 754, 750, 755, 756, 757,
- 758, 761, 762, 763, 764, 767, 768, 769, 770, 771,
- 772, 773, 774, 771, 775, 776, 777, 779, 780, 781,
- 782, 783, 784, 785, 786, 787, 788, 789, 790, 791,
-
- 792, 793, 794, 795, 796, 797, 798, 799, 800, 801,
- 802, 803, 805, 806, 807, 808, 809, 810, 811, 812,
- 813, 815, 816, 817, 818, 819, 820, 821, 822, 823,
- 824, 825, 826, 827, 828, 829, 830, 831, 832, 833,
- 834, 836, 837, 838, 839, 816, 840, 841, 815, 842,
- 843, 844, 846, 847, 848, 849, 850, 852, 853, 854,
- 855, 856, 857, 858, 859, 860, 861, 862, 863, 864,
- 865, 866, 867, 868, 869, 871, 872, 873, 875, 876,
- 877, 878, 879, 880, 868, 881, 882, 883, 884, 885,
- 886, 887, 888, 889, 890, 891, 893, 894, 895, 896,
-
- 897, 898, 899, 900, 901, 902, 903, 904, 905, 907,
- 906, 849, 908, 909, 910, 911, 913, 914, 915, 916,
- 917, 918, 919, 920, 922, 923, 924, 925, 926, 927,
- 928, 929, 930, 931, 932, 933, 905, 906, 934, 935,
- 936, 938, 939, 940, 941, 942, 938, 943, 944, 945,
- 946, 947, 948, 949, 950, 951, 952, 953, 954, 955,
- 956, 957, 958, 959, 960, 962, 963, 964, 965, 966,
- 967, 968, 969, 970, 971, 972, 974, 975, 977, 978,
- 979, 980, 981, 982, 939, 983, 984, 985, 986, 987,
- 988, 990, 991, 992, 993, 994, 995, 997, 998, 999,
-
- 1000, 1001, 1002, 1005, 1006, 1007, 1008, 1009, 1010, 1011,
- 1012, 1013, 1014, 1015, 1016, 991, 1017, 1018, 1019, 1022,
- 1024, 992, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1033,
- 1034, 1035, 1036, 1038, 1039, 1040, 1041, 1042, 1045, 1046,
- 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,
- 1057, 1058, 1059, 1061, 1062, 1063, 1064, 1065, 1066, 1067,
- 1068, 1069, 1070, 1071, 1072, 1073, 1075, 1076, 1077, 1078,
- 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088,
- 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099,
- 1100, 1101, 1072, 1102, 1103, 1104, 1105, 1106, 1054, 1107,
-
- 1109, 1112, 1113, 1114, 1105, 1115, 1116, 1117, 1118, 1119,
- 1077, 1120, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1130,
- 1132, 1135, 1137, 1139, 1140, 1141, 1142, 1143, 1145, 1146,
- 1141, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156,
- 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
- 1143, 1168, 1171, 1173, 1174, 1175, 1176, 1177, 1179, 1180,
- 1181, 1182, 1183, 1184, 1186, 1187, 1189, 1190, 1191, 1192,
- 1194, 1195, 1196, 1197, 1198, 1199, 1201, 1203, 1205, 1207,
- 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217,
- 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1225, 1226,
-
- 1227, 1228, 1229, 1230, 1231, 1205, 1232, 1233, 1234, 1235,
- 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245,
- 1246, 1248, 1249, 1251, 1252, 1253, 1254, 1258, 1259, 1262,
- 1263, 1264, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274,
- 1276, 1277, 1279, 1281, 1282, 1283, 1284, 1285, 1287, 1288,
- 1289, 1290, 1291, 1292, 1254, 1226, 1293, 1294, 1295, 1296,
- 1297, 1298, 1299, 1301, 1302, 1303, 1305, 1306, 1307, 1308,
- 1309, 1310, 1311, 1313, 1314, 1315, 1317, 1319, 1320, 1321,
- 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1331, 1332,
- 1336, 1340, 1341, 1343, 1344, 1346, 1347, 1348, 1349, 1350,
-
- 1351, 1353, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
- 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1374, 1375,
- 1376, 1377, 1378, 1380, 1381, 1382, 1383, 1384, 1385, 1387,
- 1388, 1389, 1390, 1391, 1393, 1395, 1397, 1398, 1399, 1400,
- 1401, 1402, 1403, 1404, 1406, 1407, 1409, 1410, 1413, 1414,
- 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424,
- 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434,
- 1435, 1436, 1437, 1439, 1441, 1442, 1443, 1444, 1445, 1446,
- 1450, 1451, 1452, 1453, 1455, 1456, 1458, 1459, 1460, 1461,
- 1462, 1464, 1465, 1468, 1468, 1468, 1468, 1468, 1469, 1469,
-
- 1469, 1469, 1469, 1470, 1476, 1470, 1470, 1470, 1471, 1477,
- 1471, 1478, 1471, 1472, 1472, 1472, 1472, 1472, 1473, 1473,
- 1473, 1473, 1473, 1474, 1479, 1474, 1474, 1474, 1475, 1475,
- 1475, 720, 718, 716, 715, 714, 713, 712, 711, 710,
- 709, 708, 707, 706, 703, 702, 699, 698, 697, 696,
- 695, 694, 693, 692, 691, 690, 689, 688, 687, 686,
- 685, 684, 683, 682, 681, 680, 678, 677, 676, 675,
- 674, 673, 672, 671, 669, 667, 666, 665, 664, 663,
- 662, 661, 660, 659, 658, 657, 656, 655, 654, 653,
- 652, 650, 649, 648, 647, 646, 645, 644, 643, 642,
-
- 641, 640, 639, 638, 637, 636, 635, 634, 633, 631,
- 629, 628, 627, 626, 623, 622, 621, 619, 618, 616,
- 615, 614, 613, 612, 611, 608, 607, 606, 605, 604,
- 603, 602, 601, 600, 599, 598, 597, 595, 594, 593,
- 592, 591, 590, 589, 588, 586, 585, 584, 583, 581,
- 580, 579, 578, 577, 576, 575, 573, 572, 571, 570,
- 569, 568, 567, 566, 565, 563, 562, 561, 560, 559,
- 558, 557, 556, 555, 554, 553, 552, 550, 549, 548,
- 547, 546, 545, 544, 543, 542, 541, 540, 539, 538,
- 537, 536, 535, 534, 533, 532, 531, 530, 529, 523,
-
- 521, 518, 517, 516, 515, 513, 512, 511, 509, 508,
- 505, 504, 503, 502, 501, 500, 499, 498, 497, 496,
- 495, 494, 493, 492, 491, 490, 489, 488, 487, 486,
- 485, 484, 483, 482, 481, 479, 477, 476, 475, 474,
- 473, 472, 471, 470, 469, 468, 467, 466, 464, 463,
- 462, 461, 460, 459, 458, 457, 456, 455, 454, 453,
- 452, 451, 450, 449, 448, 447, 445, 444, 443, 442,
- 440, 439, 438, 437, 436, 434, 433, 431, 430, 428,
- 427, 426, 425, 424, 423, 421, 420, 419, 418, 417,
- 412, 411, 409, 408, 407, 406, 405, 403, 402, 400,
-
- 397, 395, 394, 392, 391, 389, 388, 387, 386, 385,
- 384, 383, 382, 381, 380, 378, 377, 376, 374, 373,
- 372, 371, 369, 368, 367, 365, 364, 363, 362, 361,
- 360, 359, 358, 357, 355, 353, 352, 351, 350, 349,
- 347, 346, 345, 344, 343, 342, 341, 340, 339, 337,
- 336, 335, 334, 333, 332, 331, 330, 329, 328, 327,
- 326, 324, 323, 322, 321, 318, 317, 316, 315, 314,
- 313, 312, 311, 310, 306, 304, 301, 300, 297, 293,
- 286, 284, 283, 282, 281, 279, 278, 277, 276, 275,
- 274, 273, 272, 271, 270, 269, 268, 267, 266, 264,
-
- 263, 262, 261, 260, 259, 258, 257, 256, 255, 254,
- 253, 251, 250, 249, 248, 247, 246, 245, 244, 242,
- 241, 240, 239, 238, 237, 236, 235, 233, 232, 231,
- 230, 229, 228, 227, 226, 225, 224, 223, 222, 221,
- 220, 219, 218, 217, 216, 215, 214, 212, 211, 210,
- 209, 208, 207, 206, 204, 201, 199, 197, 195, 192,
- 191, 189, 186, 178, 177, 176, 174, 173, 171, 170,
- 169, 168, 164, 163, 161, 159, 158, 157, 156, 155,
- 153, 152, 151, 150, 148, 147, 146, 145, 144, 143,
- 142, 141, 140, 138, 137, 135, 133, 132, 131, 130,
-
- 128, 127, 126, 124, 123, 122, 121, 120, 116, 110,
- 107, 106, 104, 99, 98, 79, 74, 68, 60, 53,
- 50, 49, 47, 43, 41, 39, 38, 24, 14, 11,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
- 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467,
-
- 1467, 1467
+ 62, 96, 58, 719, 62, 70, 58, 62, 62, 70,
+ 58, 71, 75, 167, 167, 94, 75, 101, 58, 78,
+ 62, 105, 58, 72, 58, 58, 112, 77, 77, 70,
+ 71, 72, 71, 72, 71, 95, 76, 77, 72, 72,
+ 76, 94, 78, 76, 150, 722, 291, 77, 150, 105,
+ 76, 76, 78, 112, 101, 115, 76, 78, 355, 355,
+ 77, 95, 77, 81, 81, 81, 81, 81, 82, 111,
+
+ 82, 82, 82, 82, 82, 77, 81, 113, 115, 83,
+ 723, 83, 77, 82, 83, 83, 83, 83, 83, 84,
+ 114, 84, 84, 84, 84, 84, 103, 111, 291, 81,
+ 108, 119, 724, 103, 84, 113, 82, 85, 85, 85,
+ 85, 85, 89, 89, 89, 89, 89, 114, 119, 137,
+ 85, 90, 90, 90, 90, 90, 108, 84, 168, 119,
+ 126, 140, 168, 103, 140, 137, 168, 103, 140, 126,
+ 126, 103, 163, 85, 155, 163, 163, 184, 175, 103,
+ 166, 178, 183, 103, 185, 103, 103, 118, 118, 118,
+ 118, 118, 187, 247, 577, 577, 118, 118, 118, 118,
+
+ 118, 118, 155, 184, 155, 175, 186, 185, 178, 188,
+ 183, 196, 193, 197, 199, 166, 166, 166, 187, 118,
+ 118, 118, 118, 118, 118, 201, 166, 203, 166, 208,
+ 166, 166, 188, 166, 186, 193, 217, 199, 269, 196,
+ 197, 269, 286, 256, 217, 308, 247, 286, 201, 247,
+ 217, 293, 208, 296, 203, 206, 206, 206, 206, 206,
+ 305, 326, 304, 304, 206, 206, 206, 206, 206, 206,
+ 302, 304, 361, 308, 293, 332, 296, 315, 326, 256,
+ 373, 332, 361, 305, 640, 725, 623, 206, 206, 206,
+ 206, 206, 206, 256, 382, 537, 413, 623, 382, 302,
+
+ 313, 313, 313, 313, 313, 399, 315, 640, 399, 313,
+ 313, 313, 313, 313, 313, 345, 425, 386, 405, 538,
+ 345, 386, 537, 405, 413, 423, 442, 423, 639, 648,
+ 648, 726, 313, 313, 313, 313, 313, 313, 373, 442,
+ 451, 442, 727, 539, 425, 451, 728, 538, 539, 646,
+ 684, 716, 423, 684, 423, 646, 639, 720, 716, 717,
+ 717, 729, 730, 720, 731, 732, 733, 717, 345, 734,
+ 736, 717, 737, 345, 424, 424, 424, 424, 424, 738,
+ 739, 740, 741, 424, 424, 424, 424, 424, 424, 742,
+ 743, 744, 746, 747, 748, 749, 750, 751, 752, 753,
+
+ 737, 754, 755, 756, 757, 758, 424, 424, 424, 424,
+ 424, 424, 759, 760, 761, 762, 764, 765, 766, 767,
+ 768, 769, 770, 771, 772, 773, 769, 774, 775, 776,
+ 777, 780, 781, 782, 783, 786, 787, 788, 789, 790,
+ 791, 792, 793, 790, 794, 795, 796, 798, 799, 800,
+ 801, 802, 803, 804, 805, 806, 807, 808, 809, 810,
+ 811, 812, 813, 814, 815, 816, 817, 818, 819, 820,
+ 821, 822, 824, 825, 826, 827, 828, 829, 830, 831,
+ 832, 833, 834, 836, 837, 838, 839, 840, 841, 842,
+ 843, 844, 845, 846, 847, 848, 849, 850, 851, 852,
+
+ 853, 854, 855, 856, 858, 859, 860, 837, 861, 862,
+ 836, 863, 864, 865, 866, 868, 869, 870, 871, 872,
+ 874, 875, 876, 877, 878, 879, 880, 881, 882, 883,
+ 884, 885, 886, 887, 888, 889, 890, 891, 893, 894,
+ 895, 897, 898, 899, 900, 901, 902, 890, 903, 904,
+ 905, 906, 907, 908, 909, 910, 911, 912, 913, 915,
+ 916, 917, 918, 919, 920, 921, 922, 923, 924, 925,
+ 926, 927, 928, 929, 931, 930, 871, 932, 933, 934,
+ 935, 936, 938, 939, 940, 941, 942, 943, 944, 945,
+ 947, 948, 949, 950, 951, 952, 953, 954, 955, 956,
+
+ 957, 929, 930, 958, 959, 960, 961, 963, 964, 965,
+ 966, 967, 963, 968, 969, 970, 971, 972, 973, 974,
+ 975, 976, 977, 978, 979, 980, 981, 982, 983, 984,
+ 985, 987, 988, 989, 990, 991, 992, 993, 994, 995,
+ 996, 997, 999, 1000, 1002, 1003, 1004, 1005, 1006, 1007,
+ 1008, 1009, 964, 1010, 1011, 1012, 1013, 1014, 1015, 1017,
+ 1018, 1019, 1020, 1021, 1022, 1023, 1025, 1026, 1027, 1028,
+ 1029, 1030, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040,
+ 1041, 1042, 1043, 1018, 1044, 1045, 1046, 1047, 1050, 1019,
+ 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1061, 1062,
+
+ 1063, 1064, 1066, 1067, 1068, 1069, 1070, 1073, 1074, 1075,
+ 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085,
+ 1086, 1087, 1089, 1090, 1091, 1094, 1095, 1096, 1097, 1098,
+ 1099, 1100, 1101, 1102, 1103, 1105, 1106, 1107, 1108, 1109,
+ 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119,
+ 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130,
+ 1131, 1102, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1082,
+ 1140, 1143, 1144, 1145, 1136, 1146, 1147, 1148, 1149, 1150,
+ 1151, 1153, 1108, 1154, 1155, 1156, 1157, 1158, 1159, 1161,
+ 1163, 1166, 1168, 1170, 1171, 1172, 1173, 1174, 1176, 1177,
+
+ 1172, 1178, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187,
+ 1188, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198,
+ 1174, 1199, 1200, 1203, 1205, 1206, 1207, 1208, 1209, 1211,
+ 1212, 1213, 1214, 1215, 1216, 1218, 1219, 1221, 1222, 1223,
+ 1224, 1226, 1227, 1228, 1229, 1230, 1231, 1233, 1235, 1237,
+ 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248,
+ 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258,
+ 1258, 1259, 1260, 1261, 1262, 1263, 1237, 1264, 1265, 1266,
+ 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276,
+ 1277, 1278, 1279, 1281, 1282, 1284, 1285, 1286, 1287, 1289,
+
+ 1292, 1293, 1296, 1297, 1298, 1301, 1302, 1303, 1304, 1305,
+ 1306, 1307, 1308, 1310, 1311, 1313, 1315, 1316, 1317, 1318,
+ 1319, 1321, 1322, 1323, 1324, 1325, 1287, 1326, 1327, 1259,
+ 1328, 1329, 1330, 1331, 1332, 1333, 1335, 1336, 1337, 1338,
+ 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1348, 1349, 1350,
+ 1352, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
+ 1363, 1364, 1366, 1367, 1371, 1374, 1376, 1377, 1379, 1380,
+ 1382, 1383, 1384, 1385, 1386, 1387, 1389, 1391, 1392, 1393,
+ 1394, 1395, 1396, 1397, 1398, 1400, 1401, 1402, 1403, 1404,
+ 1405, 1406, 1407, 1408, 1411, 1412, 1413, 1414, 1415, 1417,
+
+ 1418, 1419, 1420, 1421, 1422, 1423, 1425, 1426, 1427, 1428,
+ 1429, 1431, 1433, 1435, 1436, 1437, 1438, 1439, 1441, 1442,
+ 1443, 1445, 1446, 1448, 1449, 1452, 1453, 1454, 1455, 1456,
+ 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466,
+ 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476,
+ 1478, 1480, 1481, 1482, 1483, 1484, 1485, 1489, 1490, 1491,
+ 1492, 1494, 1495, 1497, 1498, 1499, 1500, 1501, 1503, 1504,
+ 1507, 1507, 1507, 1507, 1507, 1508, 1508, 1508, 1508, 1508,
+ 1509, 1515, 1509, 1509, 1509, 1510, 1516, 1510, 1517, 1510,
+ 1511, 1511, 1511, 1511, 1511, 1512, 1512, 1512, 1512, 1512,
+
+ 1513, 1518, 1513, 1513, 1513, 1514, 1514, 1514, 714, 713,
+ 712, 711, 710, 709, 708, 707, 706, 705, 704, 703,
+ 702, 701, 700, 699, 698, 697, 696, 694, 693, 692,
+ 691, 690, 689, 688, 687, 685, 683, 682, 681, 680,
+ 679, 678, 677, 676, 675, 674, 673, 672, 671, 670,
+ 669, 668, 666, 665, 664, 663, 662, 661, 660, 659,
+ 658, 657, 656, 655, 654, 653, 652, 651, 650, 649,
+ 647, 645, 644, 643, 642, 641, 638, 637, 636, 634,
+ 633, 631, 630, 629, 628, 627, 626, 625, 624, 621,
+ 620, 619, 618, 617, 616, 615, 614, 613, 612, 611,
+
+ 610, 608, 607, 606, 605, 604, 603, 602, 601, 599,
+ 598, 597, 596, 594, 593, 592, 591, 590, 589, 588,
+ 586, 585, 584, 583, 582, 581, 580, 579, 578, 576,
+ 575, 574, 573, 572, 571, 570, 569, 568, 567, 566,
+ 565, 563, 562, 561, 560, 559, 558, 557, 556, 555,
+ 554, 553, 552, 551, 550, 549, 548, 547, 546, 545,
+ 544, 543, 542, 541, 535, 533, 530, 529, 528, 527,
+ 525, 524, 523, 521, 520, 517, 516, 515, 514, 513,
+ 512, 511, 510, 509, 508, 507, 506, 505, 504, 503,
+ 502, 501, 500, 499, 498, 497, 496, 495, 494, 493,
+
+ 492, 491, 489, 487, 486, 485, 484, 483, 482, 481,
+ 480, 479, 478, 477, 476, 474, 473, 472, 471, 470,
+ 469, 468, 467, 466, 465, 464, 463, 462, 461, 460,
+ 459, 458, 457, 455, 454, 453, 452, 450, 449, 448,
+ 447, 446, 444, 443, 441, 440, 438, 437, 436, 435,
+ 434, 433, 431, 430, 429, 428, 427, 426, 421, 420,
+ 418, 417, 416, 415, 414, 412, 411, 409, 406, 404,
+ 403, 401, 400, 398, 397, 396, 395, 394, 393, 392,
+ 391, 390, 389, 388, 387, 385, 384, 383, 381, 380,
+ 379, 378, 376, 375, 374, 372, 371, 370, 369, 368,
+
+ 367, 366, 365, 364, 362, 360, 359, 358, 357, 356,
+ 354, 353, 352, 351, 350, 349, 348, 347, 346, 344,
+ 343, 342, 341, 340, 339, 338, 337, 336, 335, 334,
+ 333, 331, 330, 329, 328, 325, 324, 323, 322, 321,
+ 320, 319, 318, 317, 316, 312, 310, 307, 306, 303,
+ 299, 292, 290, 289, 288, 287, 285, 284, 283, 282,
+ 281, 280, 279, 278, 277, 276, 275, 274, 273, 272,
+ 271, 270, 268, 267, 266, 265, 264, 263, 262, 261,
+ 260, 259, 258, 257, 255, 254, 253, 252, 251, 250,
+ 249, 248, 246, 245, 244, 243, 242, 241, 240, 239,
+
+ 237, 236, 235, 234, 233, 232, 231, 230, 229, 228,
+ 227, 226, 225, 224, 223, 222, 221, 220, 219, 218,
+ 216, 215, 214, 213, 212, 211, 210, 209, 207, 204,
+ 202, 200, 198, 195, 194, 192, 189, 181, 180, 179,
+ 177, 176, 174, 173, 172, 171, 170, 169, 165, 164,
+ 162, 160, 159, 158, 157, 156, 154, 153, 152, 151,
+ 149, 148, 147, 146, 145, 144, 143, 142, 141, 139,
+ 138, 136, 134, 133, 132, 131, 129, 128, 127, 125,
+ 124, 123, 122, 121, 120, 116, 110, 107, 106, 104,
+ 99, 98, 79, 74, 68, 60, 53, 50, 49, 47,
+
+ 43, 41, 39, 38, 24, 14, 11, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506
} ;
static yy_state_type yy_last_accepting_state;
extern int yy_flex_debug;
int yy_flex_debug = 1;
-static const flex_int16_t yy_rule_linenum[175] =
+static const flex_int16_t yy_rule_linenum[178] =
{ 0,
147, 149, 151, 156, 157, 162, 163, 164, 176, 179,
184, 191, 200, 209, 218, 227, 236, 245, 255, 264,
466, 477, 488, 499, 510, 521, 532, 543, 554, 565,
576, 587, 596, 605, 615, 624, 634, 648, 664, 673,
682, 691, 700, 721, 742, 751, 761, 770, 781, 790,
- 799, 808, 817, 826, 836, 845, 854, 863, 872, 881,
- 890, 899, 908, 917, 926, 936, 947, 959, 968, 977,
- 987, 997, 1007, 1017, 1027, 1037, 1046, 1056, 1065, 1074,
-
- 1083, 1092, 1102, 1112, 1121, 1131, 1140, 1149, 1158, 1167,
- 1176, 1185, 1194, 1203, 1212, 1221, 1230, 1239, 1248, 1257,
- 1266, 1275, 1284, 1293, 1302, 1311, 1320, 1329, 1338, 1347,
- 1356, 1365, 1374, 1383, 1392, 1401, 1411, 1421, 1431, 1441,
- 1451, 1461, 1471, 1481, 1491, 1500, 1509, 1518, 1527, 1536,
- 1545, 1554, 1565, 1576, 1589, 1602, 1617, 1716, 1721, 1726,
- 1731, 1732, 1733, 1734, 1735, 1736, 1738, 1756, 1769, 1774,
- 1778, 1780, 1782, 1784
+ 799, 808, 817, 826, 836, 845, 856, 867, 879, 888,
+ 897, 906, 915, 924, 933, 942, 951, 960, 970, 981,
+ 993, 1002, 1011, 1021, 1031, 1041, 1051, 1061, 1071, 1080,
+
+ 1090, 1099, 1108, 1117, 1126, 1136, 1146, 1155, 1165, 1174,
+ 1183, 1192, 1201, 1210, 1219, 1228, 1237, 1246, 1255, 1264,
+ 1273, 1282, 1291, 1300, 1309, 1318, 1327, 1336, 1345, 1354,
+ 1363, 1372, 1381, 1390, 1399, 1408, 1417, 1426, 1435, 1445,
+ 1455, 1465, 1475, 1485, 1495, 1505, 1515, 1525, 1534, 1543,
+ 1552, 1561, 1570, 1579, 1588, 1599, 1610, 1623, 1636, 1651,
+ 1750, 1755, 1760, 1765, 1766, 1767, 1768, 1769, 1770, 1772,
+ 1790, 1803, 1808, 1812, 1814, 1816, 1818
} ;
/* The intent behind this definition is that it'll catch
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1751 "dhcp4_lexer.cc"
+#line 1783 "dhcp4_lexer.cc"
/* noyywrap disables automatic rewinding for the next file to parse. Since we
always parse only a single string, there's no need to do any wraps. And
using yywrap requires linking with -lfl, which provides the default yywrap
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 1777 "dhcp4_lexer.cc"
-#line 1778 "dhcp4_lexer.cc"
+#line 1809 "dhcp4_lexer.cc"
+#line 1810 "dhcp4_lexer.cc"
#define INITIAL 0
#define COMMENT 1
}
-#line 2108 "dhcp4_lexer.cc"
+#line 2140 "dhcp4_lexer.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
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 >= 1468 )
+ if ( yy_current_state >= 1507 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 1467 );
+ while ( yy_current_state != 1506 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
{
if ( yy_act == 0 )
fprintf( stderr, "--scanner backing up\n" );
- else if ( yy_act < 175 )
+ else if ( yy_act < 178 )
fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
(long)yy_rule_linenum[yy_act], yytext );
- else if ( yy_act == 175 )
+ else if ( yy_act == 178 )
fprintf( stderr, "--accepting default rule (\"%s\")\n",
yytext );
- else if ( yy_act == 176 )
+ else if ( yy_act == 179 )
fprintf( stderr, "--(end of buffer or a NUL)\n" );
else
fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
case 76:
YY_RULE_SETUP
#line 845 "dhcp4_lexer.ll"
+{
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::DHCP4:
+ case isc::dhcp::Parser4Context::SUBNET4:
+ case isc::dhcp::Parser4Context::SHARED_NETWORK:
+ return isc::dhcp::Dhcp4Parser::make_CALCULATE_TEE_TIMES(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("calculate-tee-times", driver.loc_);
+ }
+}
+ YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 856 "dhcp4_lexer.ll"
+{
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::DHCP4:
+ case isc::dhcp::Parser4Context::SUBNET4:
+ case isc::dhcp::Parser4Context::SHARED_NETWORK:
+ return isc::dhcp::Dhcp4Parser::make_T1_PERCENT(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("t1-percent", driver.loc_);
+ }
+}
+ YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 867 "dhcp4_lexer.ll"
+{
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::DHCP4:
+ case isc::dhcp::Parser4Context::SUBNET4:
+ case isc::dhcp::Parser4Context::SHARED_NETWORK:
+ return isc::dhcp::Dhcp4Parser::make_T2_PERCENT(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("t2-percent", driver.loc_);
+ }
+}
+ YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 879 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
}
}
YY_BREAK
-case 77:
+case 80:
YY_RULE_SETUP
-#line 854 "dhcp4_lexer.ll"
+#line 888 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGING:
}
}
YY_BREAK
-case 78:
+case 81:
YY_RULE_SETUP
-#line 863 "dhcp4_lexer.ll"
+#line 897 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
}
}
YY_BREAK
-case 79:
+case 82:
YY_RULE_SETUP
-#line 872 "dhcp4_lexer.ll"
+#line 906 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
}
}
YY_BREAK
-case 80:
+case 83:
YY_RULE_SETUP
-#line 881 "dhcp4_lexer.ll"
+#line 915 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
}
}
YY_BREAK
-case 81:
+case 84:
YY_RULE_SETUP
-#line 890 "dhcp4_lexer.ll"
+#line 924 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
}
}
YY_BREAK
-case 82:
+case 85:
YY_RULE_SETUP
-#line 899 "dhcp4_lexer.ll"
+#line 933 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
}
}
YY_BREAK
-case 83:
+case 86:
YY_RULE_SETUP
-#line 908 "dhcp4_lexer.ll"
+#line 942 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
}
}
YY_BREAK
-case 84:
+case 87:
YY_RULE_SETUP
-#line 917 "dhcp4_lexer.ll"
+#line 951 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LOGGERS:
}
}
YY_BREAK
-case 85:
+case 88:
YY_RULE_SETUP
-#line 926 "dhcp4_lexer.ll"
+#line 960 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 86:
+case 89:
YY_RULE_SETUP
-#line 936 "dhcp4_lexer.ll"
+#line 970 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
}
}
YY_BREAK
-case 87:
+case 90:
YY_RULE_SETUP
-#line 947 "dhcp4_lexer.ll"
+#line 981 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
}
}
YY_BREAK
-case 88:
+case 91:
YY_RULE_SETUP
-#line 959 "dhcp4_lexer.ll"
+#line 993 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
}
}
YY_BREAK
-case 89:
+case 92:
YY_RULE_SETUP
-#line 968 "dhcp4_lexer.ll"
+#line 1002 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
}
}
YY_BREAK
-case 90:
+case 93:
YY_RULE_SETUP
-#line 977 "dhcp4_lexer.ll"
+#line 1011 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 91:
+case 94:
YY_RULE_SETUP
-#line 987 "dhcp4_lexer.ll"
+#line 1021 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
}
}
YY_BREAK
-case 92:
+case 95:
YY_RULE_SETUP
-#line 997 "dhcp4_lexer.ll"
+#line 1031 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
}
}
YY_BREAK
-case 93:
+case 96:
YY_RULE_SETUP
-#line 1007 "dhcp4_lexer.ll"
+#line 1041 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
}
}
YY_BREAK
-case 94:
+case 97:
YY_RULE_SETUP
-#line 1017 "dhcp4_lexer.ll"
+#line 1051 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
}
}
YY_BREAK
-case 95:
+case 98:
YY_RULE_SETUP
-#line 1027 "dhcp4_lexer.ll"
+#line 1061 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
}
}
YY_BREAK
-case 96:
+case 99:
YY_RULE_SETUP
-#line 1037 "dhcp4_lexer.ll"
+#line 1071 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATIONS:
}
}
YY_BREAK
-case 97:
+case 100:
YY_RULE_SETUP
-#line 1046 "dhcp4_lexer.ll"
+#line 1080 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
}
}
YY_BREAK
-case 98:
+case 101:
YY_RULE_SETUP
-#line 1056 "dhcp4_lexer.ll"
+#line 1090 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
}
}
YY_BREAK
-case 99:
+case 102:
YY_RULE_SETUP
-#line 1065 "dhcp4_lexer.ll"
+#line 1099 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
}
}
YY_BREAK
-case 100:
+case 103:
YY_RULE_SETUP
-#line 1074 "dhcp4_lexer.ll"
+#line 1108 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
}
}
YY_BREAK
-case 101:
+case 104:
YY_RULE_SETUP
-#line 1083 "dhcp4_lexer.ll"
+#line 1117 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
}
}
YY_BREAK
-case 102:
+case 105:
YY_RULE_SETUP
-#line 1092 "dhcp4_lexer.ll"
+#line 1126 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
}
}
YY_BREAK
-case 103:
+case 106:
YY_RULE_SETUP
-#line 1102 "dhcp4_lexer.ll"
+#line 1136 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RELAY:
}
}
YY_BREAK
-case 104:
+case 107:
YY_RULE_SETUP
-#line 1112 "dhcp4_lexer.ll"
+#line 1146 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RELAY:
}
}
YY_BREAK
-case 105:
+case 108:
YY_RULE_SETUP
-#line 1121 "dhcp4_lexer.ll"
+#line 1155 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 106:
+case 109:
YY_RULE_SETUP
-#line 1131 "dhcp4_lexer.ll"
+#line 1165 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
}
}
YY_BREAK
-case 107:
+case 110:
YY_RULE_SETUP
-#line 1140 "dhcp4_lexer.ll"
+#line 1174 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
}
}
YY_BREAK
-case 108:
+case 111:
YY_RULE_SETUP
-#line 1149 "dhcp4_lexer.ll"
+#line 1183 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 109:
+case 112:
YY_RULE_SETUP
-#line 1158 "dhcp4_lexer.ll"
+#line 1192 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
}
}
YY_BREAK
-case 110:
+case 113:
YY_RULE_SETUP
-#line 1167 "dhcp4_lexer.ll"
+#line 1201 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
}
}
YY_BREAK
-case 111:
+case 114:
YY_RULE_SETUP
-#line 1176 "dhcp4_lexer.ll"
+#line 1210 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
}
}
YY_BREAK
-case 112:
+case 115:
YY_RULE_SETUP
-#line 1185 "dhcp4_lexer.ll"
+#line 1219 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
}
}
YY_BREAK
-case 113:
+case 116:
YY_RULE_SETUP
-#line 1194 "dhcp4_lexer.ll"
+#line 1228 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
}
}
YY_BREAK
-case 114:
+case 117:
YY_RULE_SETUP
-#line 1203 "dhcp4_lexer.ll"
+#line 1237 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
}
}
YY_BREAK
-case 115:
+case 118:
YY_RULE_SETUP
-#line 1212 "dhcp4_lexer.ll"
+#line 1246 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 116:
+case 119:
YY_RULE_SETUP
-#line 1221 "dhcp4_lexer.ll"
+#line 1255 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 117:
+case 120:
YY_RULE_SETUP
-#line 1230 "dhcp4_lexer.ll"
+#line 1264 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
}
}
YY_BREAK
-case 118:
+case 121:
YY_RULE_SETUP
-#line 1239 "dhcp4_lexer.ll"
+#line 1273 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
}
}
YY_BREAK
-case 119:
+case 122:
YY_RULE_SETUP
-#line 1248 "dhcp4_lexer.ll"
+#line 1282 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 120:
+case 123:
YY_RULE_SETUP
-#line 1257 "dhcp4_lexer.ll"
+#line 1291 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 121:
+case 124:
YY_RULE_SETUP
-#line 1266 "dhcp4_lexer.ll"
+#line 1300 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 122:
+case 125:
YY_RULE_SETUP
-#line 1275 "dhcp4_lexer.ll"
+#line 1309 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 123:
+case 126:
YY_RULE_SETUP
-#line 1284 "dhcp4_lexer.ll"
+#line 1318 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 124:
+case 127:
YY_RULE_SETUP
-#line 1293 "dhcp4_lexer.ll"
+#line 1327 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 125:
+case 128:
YY_RULE_SETUP
-#line 1302 "dhcp4_lexer.ll"
+#line 1336 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 126:
+case 129:
YY_RULE_SETUP
-#line 1311 "dhcp4_lexer.ll"
+#line 1345 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 127:
+case 130:
YY_RULE_SETUP
-#line 1320 "dhcp4_lexer.ll"
+#line 1354 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 128:
+case 131:
YY_RULE_SETUP
-#line 1329 "dhcp4_lexer.ll"
+#line 1363 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 129:
+case 132:
YY_RULE_SETUP
-#line 1338 "dhcp4_lexer.ll"
+#line 1372 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 130:
+case 133:
YY_RULE_SETUP
-#line 1347 "dhcp4_lexer.ll"
+#line 1381 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 131:
+case 134:
YY_RULE_SETUP
-#line 1356 "dhcp4_lexer.ll"
+#line 1390 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 132:
+case 135:
YY_RULE_SETUP
-#line 1365 "dhcp4_lexer.ll"
+#line 1399 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 133:
+case 136:
YY_RULE_SETUP
-#line 1374 "dhcp4_lexer.ll"
+#line 1408 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 134:
+case 137:
YY_RULE_SETUP
-#line 1383 "dhcp4_lexer.ll"
+#line 1417 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 135:
+case 138:
YY_RULE_SETUP
-#line 1392 "dhcp4_lexer.ll"
+#line 1426 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
}
}
YY_BREAK
-case 136:
+case 139:
YY_RULE_SETUP
-#line 1401 "dhcp4_lexer.ll"
+#line 1435 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
-case 137:
+case 140:
YY_RULE_SETUP
-#line 1411 "dhcp4_lexer.ll"
+#line 1445 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
-case 138:
+case 141:
YY_RULE_SETUP
-#line 1421 "dhcp4_lexer.ll"
+#line 1455 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
-case 139:
+case 142:
YY_RULE_SETUP
-#line 1431 "dhcp4_lexer.ll"
+#line 1465 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
-case 140:
+case 143:
YY_RULE_SETUP
-#line 1441 "dhcp4_lexer.ll"
+#line 1475 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
-case 141:
+case 144:
YY_RULE_SETUP
-#line 1451 "dhcp4_lexer.ll"
+#line 1485 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
-case 142:
+case 145:
YY_RULE_SETUP
-#line 1461 "dhcp4_lexer.ll"
+#line 1495 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
-case 143:
+case 146:
YY_RULE_SETUP
-#line 1471 "dhcp4_lexer.ll"
+#line 1505 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
-case 144:
+case 147:
YY_RULE_SETUP
-#line 1481 "dhcp4_lexer.ll"
+#line 1515 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
}
YY_BREAK
-case 145:
+case 148:
YY_RULE_SETUP
-#line 1491 "dhcp4_lexer.ll"
+#line 1525 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
}
}
YY_BREAK
-case 146:
+case 149:
YY_RULE_SETUP
-#line 1500 "dhcp4_lexer.ll"
+#line 1534 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
}
}
YY_BREAK
-case 147:
+case 150:
YY_RULE_SETUP
-#line 1509 "dhcp4_lexer.ll"
+#line 1543 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
}
}
YY_BREAK
-case 148:
+case 151:
YY_RULE_SETUP
-#line 1518 "dhcp4_lexer.ll"
+#line 1552 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
}
}
YY_BREAK
-case 149:
+case 152:
YY_RULE_SETUP
-#line 1527 "dhcp4_lexer.ll"
+#line 1561 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
}
}
YY_BREAK
-case 150:
+case 153:
YY_RULE_SETUP
-#line 1536 "dhcp4_lexer.ll"
+#line 1570 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
}
}
YY_BREAK
-case 151:
+case 154:
YY_RULE_SETUP
-#line 1545 "dhcp4_lexer.ll"
+#line 1579 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 152:
+case 155:
YY_RULE_SETUP
-#line 1554 "dhcp4_lexer.ll"
+#line 1588 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 153:
+case 156:
YY_RULE_SETUP
-#line 1565 "dhcp4_lexer.ll"
+#line 1599 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 154:
+case 157:
YY_RULE_SETUP
-#line 1576 "dhcp4_lexer.ll"
+#line 1610 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 155:
+case 158:
YY_RULE_SETUP
-#line 1589 "dhcp4_lexer.ll"
+#line 1623 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 156:
+case 159:
YY_RULE_SETUP
-#line 1602 "dhcp4_lexer.ll"
+#line 1636 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
}
}
YY_BREAK
-case 157:
+case 160:
YY_RULE_SETUP
-#line 1617 "dhcp4_lexer.ll"
+#line 1651 "dhcp4_lexer.ll"
{
/* A string has been matched. It contains the actual string and single quotes.
We need to get those quotes out of the way and just use its content, e.g.
return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
}
YY_BREAK
-case 158:
-/* rule 158 can match eol */
+case 161:
+/* rule 161 can match eol */
YY_RULE_SETUP
-#line 1716 "dhcp4_lexer.ll"
+#line 1750 "dhcp4_lexer.ll"
{
/* Bad string with a forbidden control character inside */
driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
}
YY_BREAK
-case 159:
-/* rule 159 can match eol */
+case 162:
+/* rule 162 can match eol */
YY_RULE_SETUP
-#line 1721 "dhcp4_lexer.ll"
+#line 1755 "dhcp4_lexer.ll"
{
/* Bad string with a bad escape inside */
driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
}
YY_BREAK
-case 160:
+case 163:
YY_RULE_SETUP
-#line 1726 "dhcp4_lexer.ll"
+#line 1760 "dhcp4_lexer.ll"
{
/* Bad string with an open escape at the end */
driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
}
YY_BREAK
-case 161:
+case 164:
YY_RULE_SETUP
-#line 1731 "dhcp4_lexer.ll"
+#line 1765 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
YY_BREAK
-case 162:
+case 165:
YY_RULE_SETUP
-#line 1732 "dhcp4_lexer.ll"
+#line 1766 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
YY_BREAK
-case 163:
+case 166:
YY_RULE_SETUP
-#line 1733 "dhcp4_lexer.ll"
+#line 1767 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
YY_BREAK
-case 164:
+case 167:
YY_RULE_SETUP
-#line 1734 "dhcp4_lexer.ll"
+#line 1768 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
YY_BREAK
-case 165:
+case 168:
YY_RULE_SETUP
-#line 1735 "dhcp4_lexer.ll"
+#line 1769 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
YY_BREAK
-case 166:
+case 169:
YY_RULE_SETUP
-#line 1736 "dhcp4_lexer.ll"
+#line 1770 "dhcp4_lexer.ll"
{ return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
YY_BREAK
-case 167:
+case 170:
YY_RULE_SETUP
-#line 1738 "dhcp4_lexer.ll"
+#line 1772 "dhcp4_lexer.ll"
{
/* An integer was found. */
std::string tmp(yytext);
return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
}
YY_BREAK
-case 168:
+case 171:
YY_RULE_SETUP
-#line 1756 "dhcp4_lexer.ll"
+#line 1790 "dhcp4_lexer.ll"
{
/* A floating point was found. */
std::string tmp(yytext);
return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
}
YY_BREAK
-case 169:
+case 172:
YY_RULE_SETUP
-#line 1769 "dhcp4_lexer.ll"
+#line 1803 "dhcp4_lexer.ll"
{
string tmp(yytext);
return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
}
YY_BREAK
-case 170:
+case 173:
YY_RULE_SETUP
-#line 1774 "dhcp4_lexer.ll"
+#line 1808 "dhcp4_lexer.ll"
{
return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
}
YY_BREAK
-case 171:
+case 174:
YY_RULE_SETUP
-#line 1778 "dhcp4_lexer.ll"
+#line 1812 "dhcp4_lexer.ll"
driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
YY_BREAK
-case 172:
+case 175:
YY_RULE_SETUP
-#line 1780 "dhcp4_lexer.ll"
+#line 1814 "dhcp4_lexer.ll"
driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
YY_BREAK
-case 173:
+case 176:
YY_RULE_SETUP
-#line 1782 "dhcp4_lexer.ll"
+#line 1816 "dhcp4_lexer.ll"
driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
YY_BREAK
-case 174:
+case 177:
YY_RULE_SETUP
-#line 1784 "dhcp4_lexer.ll"
+#line 1818 "dhcp4_lexer.ll"
driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 1786 "dhcp4_lexer.ll"
+#line 1820 "dhcp4_lexer.ll"
{
if (driver.states_.empty()) {
return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
BEGIN(DIR_EXIT);
}
YY_BREAK
-case 175:
+case 178:
YY_RULE_SETUP
-#line 1809 "dhcp4_lexer.ll"
+#line 1843 "dhcp4_lexer.ll"
ECHO;
YY_BREAK
-#line 4390 "dhcp4_lexer.cc"
+#line 4464 "dhcp4_lexer.cc"
case YY_END_OF_BUFFER:
{
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 >= 1468 )
+ if ( yy_current_state >= 1507 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
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 >= 1468 )
+ if ( yy_current_state >= 1507 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 1467);
+ yy_is_jam = (yy_current_state == 1506);
return yy_is_jam ? 0 : yy_current_state;
}
/* %ok-for-header */
-#line 1809 "dhcp4_lexer.ll"
+#line 1843 "dhcp4_lexer.ll"
using namespace isc::dhcp;
-/* Copyright (C) 2016-2018 Internet Systems Consortium, Inc. ("ISC")
+/* Copyright (C) 2016-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
}
}
+\"calculate-tee-times\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::DHCP4:
+ case isc::dhcp::Parser4Context::SUBNET4:
+ case isc::dhcp::Parser4Context::SHARED_NETWORK:
+ return isc::dhcp::Dhcp4Parser::make_CALCULATE_TEE_TIMES(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("calculate-tee-times", driver.loc_);
+ }
+}
+
+\"t1-percent\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::DHCP4:
+ case isc::dhcp::Parser4Context::SUBNET4:
+ case isc::dhcp::Parser4Context::SHARED_NETWORK:
+ return isc::dhcp::Dhcp4Parser::make_T1_PERCENT(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("t1-percent", driver.loc_);
+ }
+}
+
+\"t2-percent\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::DHCP4:
+ case isc::dhcp::Parser4Context::SUBNET4:
+ case isc::dhcp::Parser4Context::SHARED_NETWORK:
+ return isc::dhcp::Dhcp4Parser::make_T2_PERCENT(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("t2-percent", driver.loc_);
+ }
+}
+
+
\"Logging\" {
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.0.4.
// Skeleton implementation for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 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
// This special exception was added by the Free Software Foundation in
// version 2.2 of Bison.
-// Undocumented macros, especially those whose name start with YY_,
-// are private implementation details. Do not rely on them.
-
-
// Take the name prefix into account.
#define yylex parser4_lex
+// First part of user declarations.
+
+#line 39 "dhcp4_parser.cc" // lalr1.cc:404
+# ifndef YY_NULLPTR
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# endif
#include "dhcp4_parser.h"
+// User implementation prologue.
+#line 53 "dhcp4_parser.cc" // lalr1.cc:412
// Unqualified %code blocks.
-#line 34 "dhcp4_parser.yy" // lalr1.cc:438
+#line 34 "dhcp4_parser.yy" // lalr1.cc:413
#include <dhcp4/parser_context.h>
-#line 51 "dhcp4_parser.cc" // lalr1.cc:438
+#line 59 "dhcp4_parser.cc" // lalr1.cc:413
#ifndef YY_
# endif
#endif
-// Whether we are compiled with exception support.
-#ifndef YY_EXCEPTIONS
-# if defined __GNUC__ && !defined __EXCEPTIONS
-# define YY_EXCEPTIONS 0
-# else
-# define YY_EXCEPTIONS 1
-# endif
-#endif
-
#define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
If N is 0, then set CURRENT to the empty location which ends
{ \
*yycdebug_ << Title << ' '; \
yy_print_ (*yycdebug_, Symbol); \
- *yycdebug_ << '\n'; \
+ *yycdebug_ << std::endl; \
} \
} while (false)
#else // !PARSER4_DEBUG
# define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol)
-# define YY_REDUCE_PRINT(Rule) static_cast<void> (0)
-# define YY_STACK_PRINT() static_cast<void> (0)
+# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol)
+# define YY_REDUCE_PRINT(Rule) static_cast<void>(0)
+# define YY_STACK_PRINT() static_cast<void>(0)
#endif // !PARSER4_DEBUG
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-#line 14 "dhcp4_parser.yy" // lalr1.cc:513
+#line 14 "dhcp4_parser.yy" // lalr1.cc:479
namespace isc { namespace dhcp {
-#line 146 "dhcp4_parser.cc" // lalr1.cc:513
+#line 145 "dhcp4_parser.cc" // lalr1.cc:479
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
// by_state.
+ inline
Dhcp4Parser::by_state::by_state ()
: state (empty_state)
{}
+ inline
Dhcp4Parser::by_state::by_state (const by_state& other)
: state (other.state)
{}
+ inline
void
Dhcp4Parser::by_state::clear ()
{
state = empty_state;
}
+ inline
void
Dhcp4Parser::by_state::move (by_state& that)
{
that.clear ();
}
+ inline
Dhcp4Parser::by_state::by_state (state_type s)
: state (s)
{}
+ inline
Dhcp4Parser::symbol_number_type
Dhcp4Parser::by_state::type_get () const
{
return yystos_[state];
}
+ inline
Dhcp4Parser::stack_symbol_type::stack_symbol_type ()
{}
- Dhcp4Parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that)
- : super_type (YY_MOVE (that.state), YY_MOVE (that.location))
- {
- switch (that.type_get ())
- {
- case 185: // value
- case 189: // map_value
- case 230: // socket_type
- case 233: // outbound_interface_value
- case 255: // db_type
- case 337: // hr_mode
- case 486: // ncr_protocol_value
- case 493: // replace_client_name_value
- value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
- break;
-
- case 168: // "boolean"
- value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
- break;
-
- case 167: // "floating point"
- value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
- break;
-
- case 166: // "integer"
- value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
- break;
-
- case 165: // "constant string"
- value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
- break;
-
- default:
- break;
- }
-
-#if 201103L <= YY_CPLUSPLUS
- // that is emptied.
- that.state = empty_state;
-#endif
- }
- Dhcp4Parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that)
- : super_type (s, YY_MOVE (that.location))
+ inline
+ Dhcp4Parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
+ : super_type (s, that.location)
{
- switch (that.type_get ())
- {
- case 185: // value
- case 189: // map_value
- case 230: // socket_type
- case 233: // outbound_interface_value
- case 255: // db_type
- case 337: // hr_mode
- case 486: // ncr_protocol_value
- case 493: // replace_client_name_value
- value.move< ElementPtr > (YY_MOVE (that.value));
+ switch (that.type_get ())
+ {
+ case 188: // value
+ case 192: // map_value
+ case 236: // socket_type
+ case 239: // outbound_interface_value
+ case 261: // db_type
+ case 343: // hr_mode
+ case 492: // ncr_protocol_value
+ case 499: // replace_client_name_value
+ value.move< ElementPtr > (that.value);
break;
- case 168: // "boolean"
- value.move< bool > (YY_MOVE (that.value));
+ case 171: // "boolean"
+ value.move< bool > (that.value);
break;
- case 167: // "floating point"
- value.move< double > (YY_MOVE (that.value));
+ case 170: // "floating point"
+ value.move< double > (that.value);
break;
- case 166: // "integer"
- value.move< int64_t > (YY_MOVE (that.value));
+ case 169: // "integer"
+ value.move< int64_t > (that.value);
break;
- case 165: // "constant string"
- value.move< std::string > (YY_MOVE (that.value));
+ case 168: // "constant string"
+ value.move< std::string > (that.value);
break;
default:
that.type = empty_symbol;
}
-#if YY_CPLUSPLUS < 201103L
+ inline
Dhcp4Parser::stack_symbol_type&
- Dhcp4Parser::stack_symbol_type::operator= (stack_symbol_type& that)
+ Dhcp4Parser::stack_symbol_type::operator= (const stack_symbol_type& that)
{
state = that.state;
- switch (that.type_get ())
- {
- case 185: // value
- case 189: // map_value
- case 230: // socket_type
- case 233: // outbound_interface_value
- case 255: // db_type
- case 337: // hr_mode
- case 486: // ncr_protocol_value
- case 493: // replace_client_name_value
- value.move< ElementPtr > (that.value);
+ switch (that.type_get ())
+ {
+ case 188: // value
+ case 192: // map_value
+ case 236: // socket_type
+ case 239: // outbound_interface_value
+ case 261: // db_type
+ case 343: // hr_mode
+ case 492: // ncr_protocol_value
+ case 499: // replace_client_name_value
+ value.copy< ElementPtr > (that.value);
break;
- case 168: // "boolean"
- value.move< bool > (that.value);
+ case 171: // "boolean"
+ value.copy< bool > (that.value);
break;
- case 167: // "floating point"
- value.move< double > (that.value);
+ case 170: // "floating point"
+ value.copy< double > (that.value);
break;
- case 166: // "integer"
- value.move< int64_t > (that.value);
+ case 169: // "integer"
+ value.copy< int64_t > (that.value);
break;
- case 165: // "constant string"
- value.move< std::string > (that.value);
+ case 168: // "constant string"
+ value.copy< std::string > (that.value);
break;
default:
}
location = that.location;
- // that is emptied.
- that.state = empty_state;
return *this;
}
-#endif
+
template <typename Base>
+ inline
void
Dhcp4Parser::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
{
<< yysym.location << ": ";
switch (yytype)
{
- case 165: // "constant string"
+ case 168: // "constant string"
-#line 245 "dhcp4_parser.yy" // lalr1.cc:672
+#line 248 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< std::string > (); }
-#line 401 "dhcp4_parser.cc" // lalr1.cc:672
+#line 366 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 166: // "integer"
+ case 169: // "integer"
-#line 245 "dhcp4_parser.yy" // lalr1.cc:672
+#line 248 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< int64_t > (); }
-#line 408 "dhcp4_parser.cc" // lalr1.cc:672
+#line 373 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 167: // "floating point"
+ case 170: // "floating point"
-#line 245 "dhcp4_parser.yy" // lalr1.cc:672
+#line 248 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< double > (); }
-#line 415 "dhcp4_parser.cc" // lalr1.cc:672
+#line 380 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 168: // "boolean"
+ case 171: // "boolean"
-#line 245 "dhcp4_parser.yy" // lalr1.cc:672
+#line 248 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< bool > (); }
-#line 422 "dhcp4_parser.cc" // lalr1.cc:672
+#line 387 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 185: // value
+ case 188: // value
-#line 245 "dhcp4_parser.yy" // lalr1.cc:672
+#line 248 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 429 "dhcp4_parser.cc" // lalr1.cc:672
+#line 394 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 189: // map_value
+ case 192: // map_value
-#line 245 "dhcp4_parser.yy" // lalr1.cc:672
+#line 248 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 436 "dhcp4_parser.cc" // lalr1.cc:672
+#line 401 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 230: // socket_type
+ case 236: // socket_type
-#line 245 "dhcp4_parser.yy" // lalr1.cc:672
+#line 248 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 443 "dhcp4_parser.cc" // lalr1.cc:672
+#line 408 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 233: // outbound_interface_value
+ case 239: // outbound_interface_value
-#line 245 "dhcp4_parser.yy" // lalr1.cc:672
+#line 248 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 450 "dhcp4_parser.cc" // lalr1.cc:672
+#line 415 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 255: // db_type
+ case 261: // db_type
-#line 245 "dhcp4_parser.yy" // lalr1.cc:672
+#line 248 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 457 "dhcp4_parser.cc" // lalr1.cc:672
+#line 422 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 337: // hr_mode
+ case 343: // hr_mode
-#line 245 "dhcp4_parser.yy" // lalr1.cc:672
+#line 248 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 464 "dhcp4_parser.cc" // lalr1.cc:672
+#line 429 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 486: // ncr_protocol_value
+ case 492: // ncr_protocol_value
-#line 245 "dhcp4_parser.yy" // lalr1.cc:672
+#line 248 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 471 "dhcp4_parser.cc" // lalr1.cc:672
+#line 436 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 493: // replace_client_name_value
+ case 499: // replace_client_name_value
-#line 245 "dhcp4_parser.yy" // lalr1.cc:672
+#line 248 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 478 "dhcp4_parser.cc" // lalr1.cc:672
+#line 443 "dhcp4_parser.cc" // lalr1.cc:636
break;
}
#endif
+ inline
void
- Dhcp4Parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym)
+ Dhcp4Parser::yypush_ (const char* m, state_type s, symbol_type& sym)
{
- if (m)
- YY_SYMBOL_PRINT (m, sym);
- yystack_.push (YY_MOVE (sym));
+ stack_symbol_type t (s, sym);
+ yypush_ (m, t);
}
+ inline
void
- Dhcp4Parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
+ Dhcp4Parser::yypush_ (const char* m, stack_symbol_type& s)
{
-#if 201103L <= YY_CPLUSPLUS
- yypush_ (m, stack_symbol_type (s, std::move (sym)));
-#else
- stack_symbol_type ss (s, sym);
- yypush_ (m, ss);
-#endif
+ if (m)
+ YY_SYMBOL_PRINT (m, s);
+ yystack_.push (s);
}
+ inline
void
- Dhcp4Parser::yypop_ (int n)
+ Dhcp4Parser::yypop_ (unsigned int n)
{
yystack_.pop (n);
}
}
#endif // PARSER4_DEBUG
- Dhcp4Parser::state_type
+ inline Dhcp4Parser::state_type
Dhcp4Parser::yy_lr_goto_state_ (state_type yystate, int yysym)
{
int yyr = yypgoto_[yysym - yyntokens_] + yystate;
return yydefgoto_[yysym - yyntokens_];
}
- bool
+ inline bool
Dhcp4Parser::yy_pact_value_is_default_ (int yyvalue)
{
return yyvalue == yypact_ninf_;
}
- bool
+ inline bool
Dhcp4Parser::yy_table_value_is_error_ (int yyvalue)
{
return yyvalue == yytable_ninf_;
}
- int
- Dhcp4Parser::operator() ()
- {
- return parse ();
- }
-
int
Dhcp4Parser::parse ()
{
/// The return value of parse ().
int yyresult;
-#if YY_EXCEPTIONS
+ // FIXME: This shoud be completely indented. It is not yet to
+ // avoid gratuitous conflicts when merging into the master branch.
try
-#endif // YY_EXCEPTIONS
{
- YYCDEBUG << "Starting parse\n";
+ YYCDEBUG << "Starting parse" << std::endl;
/* Initialize the stack. The initial state will be set in
location values to have been already stored, initialize these
stacks with a primary value. */
yystack_.clear ();
- yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
+ yypush_ (YY_NULLPTR, 0, yyla);
// A new symbol was pushed on the stack.
yynewstate:
- YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
+ YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
// Accept?
if (yystack_[0].state == yyfinal_)
// Backup.
yybackup:
+
// Try to take a decision without lookahead.
yyn = yypact_[yystack_[0].state];
if (yy_pact_value_is_default_ (yyn))
if (yyla.empty ())
{
YYCDEBUG << "Reading a token: ";
-#if YY_EXCEPTIONS
try
-#endif // YY_EXCEPTIONS
{
symbol_type yylookahead (yylex (ctx));
yyla.move (yylookahead);
}
-#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
error (yyexc);
goto yyerrlab1;
}
-#endif // YY_EXCEPTIONS
}
YY_SYMBOL_PRINT ("Next token is", yyla);
--yyerrstatus_;
// Shift the lookahead token.
- yypush_ ("Shifting", yyn, YY_MOVE (yyla));
+ yypush_ ("Shifting", yyn, yyla);
goto yynewstate;
/*-----------------------------------------------------------.
yylen = yyr2_[yyn];
{
stack_symbol_type yylhs;
- yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
+ yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);
/* Variants are always initialized to an empty instance of the
correct type. The default '$$ = $1' action is NOT applied
when using variants. */
- switch (yyr1_[yyn])
- {
- case 185: // value
- case 189: // map_value
- case 230: // socket_type
- case 233: // outbound_interface_value
- case 255: // db_type
- case 337: // hr_mode
- case 486: // ncr_protocol_value
- case 493: // replace_client_name_value
- yylhs.value.emplace< ElementPtr > ();
+ switch (yyr1_[yyn])
+ {
+ case 188: // value
+ case 192: // map_value
+ case 236: // socket_type
+ case 239: // outbound_interface_value
+ case 261: // db_type
+ case 343: // hr_mode
+ case 492: // ncr_protocol_value
+ case 499: // replace_client_name_value
+ yylhs.value.build< ElementPtr > ();
break;
- case 168: // "boolean"
- yylhs.value.emplace< bool > ();
+ case 171: // "boolean"
+ yylhs.value.build< bool > ();
break;
- case 167: // "floating point"
- yylhs.value.emplace< double > ();
+ case 170: // "floating point"
+ yylhs.value.build< double > ();
break;
- case 166: // "integer"
- yylhs.value.emplace< int64_t > ();
+ case 169: // "integer"
+ yylhs.value.build< int64_t > ();
break;
- case 165: // "constant string"
- yylhs.value.emplace< std::string > ();
+ case 168: // "constant string"
+ yylhs.value.build< std::string > ();
break;
default:
}
- // Default location.
+ // Compute the default @$.
{
slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
YYLLOC_DEFAULT (yylhs.location, slice, yylen);
- yyerror_range[1].location = yylhs.location;
}
// Perform the reduction.
YY_REDUCE_PRINT (yyn);
-#if YY_EXCEPTIONS
try
-#endif // YY_EXCEPTIONS
{
switch (yyn)
{
case 2:
-#line 254 "dhcp4_parser.yy" // lalr1.cc:907
+#line 257 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 738 "dhcp4_parser.cc" // lalr1.cc:907
+#line 690 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 4:
-#line 255 "dhcp4_parser.yy" // lalr1.cc:907
+#line 258 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.CONFIG; }
-#line 744 "dhcp4_parser.cc" // lalr1.cc:907
+#line 696 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 6:
-#line 256 "dhcp4_parser.yy" // lalr1.cc:907
+#line 259 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.DHCP4; }
-#line 750 "dhcp4_parser.cc" // lalr1.cc:907
+#line 702 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 8:
-#line 257 "dhcp4_parser.yy" // lalr1.cc:907
+#line 260 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 756 "dhcp4_parser.cc" // lalr1.cc:907
+#line 708 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 10:
-#line 258 "dhcp4_parser.yy" // lalr1.cc:907
+#line 261 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.SUBNET4; }
-#line 762 "dhcp4_parser.cc" // lalr1.cc:907
+#line 714 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 12:
-#line 259 "dhcp4_parser.yy" // lalr1.cc:907
+#line 262 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.POOLS; }
-#line 768 "dhcp4_parser.cc" // lalr1.cc:907
+#line 720 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 14:
-#line 260 "dhcp4_parser.yy" // lalr1.cc:907
+#line 263 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.RESERVATIONS; }
-#line 774 "dhcp4_parser.cc" // lalr1.cc:907
+#line 726 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 16:
-#line 261 "dhcp4_parser.yy" // lalr1.cc:907
+#line 264 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.DHCP4; }
-#line 780 "dhcp4_parser.cc" // lalr1.cc:907
+#line 732 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 18:
-#line 262 "dhcp4_parser.yy" // lalr1.cc:907
+#line 265 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.OPTION_DEF; }
-#line 786 "dhcp4_parser.cc" // lalr1.cc:907
+#line 738 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 20:
-#line 263 "dhcp4_parser.yy" // lalr1.cc:907
+#line 266 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.OPTION_DATA; }
-#line 792 "dhcp4_parser.cc" // lalr1.cc:907
+#line 744 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 22:
-#line 264 "dhcp4_parser.yy" // lalr1.cc:907
+#line 267 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 798 "dhcp4_parser.cc" // lalr1.cc:907
+#line 750 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 24:
-#line 265 "dhcp4_parser.yy" // lalr1.cc:907
+#line 268 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.DHCP_DDNS; }
-#line 804 "dhcp4_parser.cc" // lalr1.cc:907
+#line 756 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 26:
-#line 266 "dhcp4_parser.yy" // lalr1.cc:907
+#line 269 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.LOGGING; }
-#line 810 "dhcp4_parser.cc" // lalr1.cc:907
+#line 762 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 28:
-#line 267 "dhcp4_parser.yy" // lalr1.cc:907
+#line 270 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.CONFIG_CONTROL; }
-#line 816 "dhcp4_parser.cc" // lalr1.cc:907
+#line 768 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 30:
-#line 275 "dhcp4_parser.yy" // lalr1.cc:907
+#line 278 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 822 "dhcp4_parser.cc" // lalr1.cc:907
+#line 774 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 31:
-#line 276 "dhcp4_parser.yy" // lalr1.cc:907
+#line 279 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 828 "dhcp4_parser.cc" // lalr1.cc:907
+#line 780 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 32:
-#line 277 "dhcp4_parser.yy" // lalr1.cc:907
+#line 280 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 834 "dhcp4_parser.cc" // lalr1.cc:907
+#line 786 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 33:
-#line 278 "dhcp4_parser.yy" // lalr1.cc:907
+#line 281 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 840 "dhcp4_parser.cc" // lalr1.cc:907
+#line 792 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 34:
-#line 279 "dhcp4_parser.yy" // lalr1.cc:907
+#line 282 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 846 "dhcp4_parser.cc" // lalr1.cc:907
+#line 798 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 35:
-#line 280 "dhcp4_parser.yy" // lalr1.cc:907
+#line 283 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 852 "dhcp4_parser.cc" // lalr1.cc:907
+#line 804 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 36:
-#line 281 "dhcp4_parser.yy" // lalr1.cc:907
+#line 284 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 858 "dhcp4_parser.cc" // lalr1.cc:907
+#line 810 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 37:
-#line 284 "dhcp4_parser.yy" // lalr1.cc:907
+#line 287 "dhcp4_parser.yy" // lalr1.cc:859
{
// Push back the JSON value on the stack
ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
}
-#line 867 "dhcp4_parser.cc" // lalr1.cc:907
+#line 819 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 38:
-#line 289 "dhcp4_parser.yy" // lalr1.cc:907
+#line 292 "dhcp4_parser.yy" // lalr1.cc:859
{
// 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 878 "dhcp4_parser.cc" // lalr1.cc:907
+#line 830 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 39:
-#line 294 "dhcp4_parser.yy" // lalr1.cc:907
+#line 297 "dhcp4_parser.yy" // lalr1.cc:859
{
// 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 888 "dhcp4_parser.cc" // lalr1.cc:907
+#line 840 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 40:
-#line 300 "dhcp4_parser.yy" // lalr1.cc:907
+#line 303 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 894 "dhcp4_parser.cc" // lalr1.cc:907
+#line 846 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 43:
-#line 307 "dhcp4_parser.yy" // lalr1.cc:907
+#line 310 "dhcp4_parser.yy" // lalr1.cc:859
{
// map containing a single entry
ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
}
-#line 903 "dhcp4_parser.cc" // lalr1.cc:907
+#line 855 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 44:
-#line 311 "dhcp4_parser.yy" // lalr1.cc:907
+#line 314 "dhcp4_parser.yy" // lalr1.cc:859
{
// 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 > ());
}
-#line 913 "dhcp4_parser.cc" // lalr1.cc:907
+#line 865 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 45:
-#line 318 "dhcp4_parser.yy" // lalr1.cc:907
+#line 321 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
}
-#line 922 "dhcp4_parser.cc" // lalr1.cc:907
+#line 874 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 46:
-#line 321 "dhcp4_parser.yy" // lalr1.cc:907
+#line 324 "dhcp4_parser.yy" // lalr1.cc:859
{
// list parsing complete. Put any sanity checking here
}
-#line 930 "dhcp4_parser.cc" // lalr1.cc:907
+#line 882 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 49:
-#line 329 "dhcp4_parser.yy" // lalr1.cc:907
+#line 332 "dhcp4_parser.yy" // lalr1.cc:859
{
// List consisting of a single element.
ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
}
-#line 939 "dhcp4_parser.cc" // lalr1.cc:907
+#line 891 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 50:
-#line 333 "dhcp4_parser.yy" // lalr1.cc:907
+#line 336 "dhcp4_parser.yy" // lalr1.cc:859
{
// List ending with , and a value.
ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
}
-#line 948 "dhcp4_parser.cc" // lalr1.cc:907
+#line 900 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 51:
-#line 340 "dhcp4_parser.yy" // lalr1.cc:907
+#line 343 "dhcp4_parser.yy" // lalr1.cc:859
{
// List parsing about to start
}
-#line 956 "dhcp4_parser.cc" // lalr1.cc:907
+#line 908 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 52:
-#line 342 "dhcp4_parser.yy" // lalr1.cc:907
+#line 345 "dhcp4_parser.yy" // lalr1.cc:859
{
// list parsing complete. Put any sanity checking here
//ctx.stack_.pop_back();
}
-#line 965 "dhcp4_parser.cc" // lalr1.cc:907
+#line 917 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 55:
-#line 351 "dhcp4_parser.yy" // lalr1.cc:907
+#line 354 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(s);
}
-#line 974 "dhcp4_parser.cc" // lalr1.cc:907
+#line 926 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 56:
-#line 355 "dhcp4_parser.yy" // lalr1.cc:907
+#line 358 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(s);
}
-#line 983 "dhcp4_parser.cc" // lalr1.cc:907
+#line 935 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 57:
-#line 366 "dhcp4_parser.yy" // lalr1.cc:907
+#line 369 "dhcp4_parser.yy" // lalr1.cc:859
{
const std::string& where = ctx.contextName();
const std::string& keyword = yystack_[1].value.as< std::string > ();
error(yystack_[1].location,
"got unexpected keyword \"" + keyword + "\" in " + where + " map.");
}
-#line 994 "dhcp4_parser.cc" // lalr1.cc:907
+#line 946 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 58:
-#line 376 "dhcp4_parser.yy" // lalr1.cc:907
+#line 379 "dhcp4_parser.yy" // lalr1.cc:859
{
// 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 1005 "dhcp4_parser.cc" // lalr1.cc:907
+#line 957 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 59:
-#line 381 "dhcp4_parser.yy" // lalr1.cc:907
+#line 384 "dhcp4_parser.yy" // lalr1.cc:859
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
// Dhcp4 is required
ctx.require("Dhcp4", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
}
-#line 1018 "dhcp4_parser.cc" // lalr1.cc:907
+#line 970 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 68:
-#line 405 "dhcp4_parser.yy" // lalr1.cc:907
+#line 408 "dhcp4_parser.yy" // lalr1.cc:859
{
// This code is executed when we're about to start parsing
// the content of the map
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP4);
}
-#line 1031 "dhcp4_parser.cc" // lalr1.cc:907
+#line 983 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 69:
-#line 412 "dhcp4_parser.yy" // lalr1.cc:907
+#line 415 "dhcp4_parser.yy" // lalr1.cc:859
{
// No global parameter is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1041 "dhcp4_parser.cc" // lalr1.cc:907
+#line 993 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 70:
-#line 420 "dhcp4_parser.yy" // lalr1.cc:907
+#line 423 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the Dhcp4 map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1051 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1003 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 71:
-#line 424 "dhcp4_parser.yy" // lalr1.cc:907
+#line 427 "dhcp4_parser.yy" // lalr1.cc:859
{
// No global parameter is required
// parsing completed
}
-#line 1060 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1012 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 108:
-#line 471 "dhcp4_parser.yy" // lalr1.cc:907
+ case 111:
+#line 477 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("valid-lifetime", prf);
}
-#line 1069 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1021 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 109:
-#line 476 "dhcp4_parser.yy" // lalr1.cc:907
+ case 112:
+#line 482 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("renew-timer", prf);
}
-#line 1078 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1030 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 110:
-#line 481 "dhcp4_parser.yy" // lalr1.cc:907
+ case 113:
+#line 487 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("rebind-timer", prf);
}
-#line 1087 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1039 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 111:
-#line 486 "dhcp4_parser.yy" // lalr1.cc:907
+ case 114:
+#line 492 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ElementPtr ctt(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("calculate-tee-times", ctt);
+}
+#line 1048 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 115:
+#line 497 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ElementPtr t1(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("t1-percent", t1);
+}
+#line 1057 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 116:
+#line 502 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ElementPtr t2(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("t2-percent", t2);
+}
+#line 1066 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 117:
+#line 507 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("decline-probation-period", dpp);
}
-#line 1096 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1075 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 112:
-#line 491 "dhcp4_parser.yy" // lalr1.cc:907
+ case 118:
+#line 512 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1104 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1083 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 113:
-#line 493 "dhcp4_parser.yy" // lalr1.cc:907
+ case 119:
+#line 514 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1114 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1093 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 114:
-#line 499 "dhcp4_parser.yy" // lalr1.cc:907
+ case 120:
+#line 520 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("echo-client-id", echo);
}
-#line 1123 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1102 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 115:
-#line 504 "dhcp4_parser.yy" // lalr1.cc:907
+ case 121:
+#line 525 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("match-client-id", match);
}
-#line 1132 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1111 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 116:
-#line 509 "dhcp4_parser.yy" // lalr1.cc:907
+ case 122:
+#line 530 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("authoritative", prf);
}
-#line 1141 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1120 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 117:
-#line 515 "dhcp4_parser.yy" // lalr1.cc:907
+ case 123:
+#line 536 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1152 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1131 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 118:
-#line 520 "dhcp4_parser.yy" // lalr1.cc:907
+ case 124:
+#line 541 "dhcp4_parser.yy" // lalr1.cc:859
{
// No interfaces config param is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1162 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1141 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 128:
-#line 539 "dhcp4_parser.yy" // lalr1.cc:907
+ case 134:
+#line 560 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the interfaces-config map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1172 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1151 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 129:
-#line 543 "dhcp4_parser.yy" // lalr1.cc:907
+ case 135:
+#line 564 "dhcp4_parser.yy" // lalr1.cc:859
{
// No interfaces config param is required
// parsing completed
}
-#line 1181 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1160 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 130:
-#line 548 "dhcp4_parser.yy" // lalr1.cc:907
+ case 136:
+#line 569 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1192 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1171 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 131:
-#line 553 "dhcp4_parser.yy" // lalr1.cc:907
+ case 137:
+#line 574 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1201 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1180 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 132:
-#line 558 "dhcp4_parser.yy" // lalr1.cc:907
+ case 138:
+#line 579 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.DHCP_SOCKET_TYPE);
}
-#line 1209 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1188 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 133:
-#line 560 "dhcp4_parser.yy" // lalr1.cc:907
+ case 139:
+#line 581 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 1218 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1197 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 134:
-#line 565 "dhcp4_parser.yy" // lalr1.cc:907
+ case 140:
+#line 586 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
-#line 1224 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1203 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 135:
-#line 566 "dhcp4_parser.yy" // lalr1.cc:907
+ case 141:
+#line 587 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
-#line 1230 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1209 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 136:
-#line 569 "dhcp4_parser.yy" // lalr1.cc:907
+ case 142:
+#line 590 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.OUTBOUND_INTERFACE);
}
-#line 1238 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1217 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 137:
-#line 571 "dhcp4_parser.yy" // lalr1.cc:907
+ case 143:
+#line 592 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 1247 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1226 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 138:
-#line 576 "dhcp4_parser.yy" // lalr1.cc:907
+ case 144:
+#line 597 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
}
-#line 1255 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1234 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 139:
-#line 578 "dhcp4_parser.yy" // lalr1.cc:907
+ case 145:
+#line 599 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
}
-#line 1263 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1242 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 140:
-#line 582 "dhcp4_parser.yy" // lalr1.cc:907
+ case 146:
+#line 603 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("re-detect", b);
}
-#line 1272 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1251 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 141:
-#line 588 "dhcp4_parser.yy" // lalr1.cc:907
+ case 147:
+#line 609 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1283 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1262 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 142:
-#line 593 "dhcp4_parser.yy" // lalr1.cc:907
+ case 148:
+#line 614 "dhcp4_parser.yy" // lalr1.cc:859
{
// 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 1294 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1273 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 143:
-#line 600 "dhcp4_parser.yy" // lalr1.cc:907
+ case 149:
+#line 621 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1305 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1284 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 144:
-#line 605 "dhcp4_parser.yy" // lalr1.cc:907
+ case 150:
+#line 626 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1314 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1293 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 148:
-#line 615 "dhcp4_parser.yy" // lalr1.cc:907
+ case 154:
+#line 636 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1322 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1301 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 149:
-#line 617 "dhcp4_parser.yy" // lalr1.cc:907
+ case 155:
+#line 638 "dhcp4_parser.yy" // lalr1.cc:859
{
if ( (string(yystack_[0].value.as< std::string > ()) == "none") ||
", supported values are: none, warn, fix, fix-del, del");
}
}
-#line 1342 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1321 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 150:
-#line 633 "dhcp4_parser.yy" // lalr1.cc:907
+ case 156:
+#line 654 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1353 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1332 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 151:
-#line 638 "dhcp4_parser.yy" // lalr1.cc:907
+ case 157:
+#line 659 "dhcp4_parser.yy" // lalr1.cc:859
{
// 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 1364 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1343 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 152:
-#line 645 "dhcp4_parser.yy" // lalr1.cc:907
+ case 158:
+#line 666 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1375 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1354 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 153:
-#line 650 "dhcp4_parser.yy" // lalr1.cc:907
+ case 159:
+#line 671 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1384 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1363 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 158:
-#line 663 "dhcp4_parser.yy" // lalr1.cc:907
+ case 164:
+#line 684 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1394 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1373 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 159:
-#line 667 "dhcp4_parser.yy" // lalr1.cc:907
+ case 165:
+#line 688 "dhcp4_parser.yy" // lalr1.cc:859
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1404 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1383 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 180:
-#line 697 "dhcp4_parser.yy" // lalr1.cc:907
+ case 186:
+#line 718 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.DATABASE_TYPE);
}
-#line 1412 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1391 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 181:
-#line 699 "dhcp4_parser.yy" // lalr1.cc:907
+ case 187:
+#line 720 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 1421 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1400 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 182:
-#line 704 "dhcp4_parser.yy" // lalr1.cc:907
+ case 188:
+#line 725 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1427 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1406 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 183:
-#line 705 "dhcp4_parser.yy" // lalr1.cc:907
+ case 189:
+#line 726 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1433 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1412 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 184:
-#line 706 "dhcp4_parser.yy" // lalr1.cc:907
+ case 190:
+#line 727 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1439 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1418 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 185:
-#line 707 "dhcp4_parser.yy" // lalr1.cc:907
+ case 191:
+#line 728 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1445 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1424 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 186:
-#line 710 "dhcp4_parser.yy" // lalr1.cc:907
+ case 192:
+#line 731 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1453 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1432 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 187:
-#line 712 "dhcp4_parser.yy" // lalr1.cc:907
+ case 193:
+#line 733 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("user", user);
ctx.leave();
}
-#line 1463 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1442 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 188:
-#line 718 "dhcp4_parser.yy" // lalr1.cc:907
+ case 194:
+#line 739 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1471 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1450 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 189:
-#line 720 "dhcp4_parser.yy" // lalr1.cc:907
+ case 195:
+#line 741 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("password", pwd);
ctx.leave();
}
-#line 1481 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1460 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 190:
-#line 726 "dhcp4_parser.yy" // lalr1.cc:907
+ case 196:
+#line 747 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1489 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1468 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 191:
-#line 728 "dhcp4_parser.yy" // lalr1.cc:907
+ case 197:
+#line 749 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("host", h);
ctx.leave();
}
-#line 1499 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1478 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 192:
-#line 734 "dhcp4_parser.yy" // lalr1.cc:907
+ case 198:
+#line 755 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("port", p);
}
-#line 1508 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1487 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 193:
-#line 739 "dhcp4_parser.yy" // lalr1.cc:907
+ case 199:
+#line 760 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1516 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1495 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 194:
-#line 741 "dhcp4_parser.yy" // lalr1.cc:907
+ case 200:
+#line 762 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1526 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1505 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 195:
-#line 747 "dhcp4_parser.yy" // lalr1.cc:907
+ case 201:
+#line 768 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("persist", n);
}
-#line 1535 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1514 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 196:
-#line 752 "dhcp4_parser.yy" // lalr1.cc:907
+ case 202:
+#line 773 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lfc-interval", n);
}
-#line 1544 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1523 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 197:
-#line 757 "dhcp4_parser.yy" // lalr1.cc:907
+ case 203:
+#line 778 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("readonly", n);
}
-#line 1553 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1532 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 198:
-#line 762 "dhcp4_parser.yy" // lalr1.cc:907
+ case 204:
+#line 783 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("connect-timeout", n);
}
-#line 1562 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1541 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 199:
-#line 767 "dhcp4_parser.yy" // lalr1.cc:907
+ case 205:
+#line 788 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("request-timeout", n);
}
-#line 1571 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1550 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 200:
-#line 772 "dhcp4_parser.yy" // lalr1.cc:907
+ case 206:
+#line 793 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tcp-keepalive", n);
}
-#line 1580 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1559 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 201:
-#line 777 "dhcp4_parser.yy" // lalr1.cc:907
+ case 207:
+#line 798 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tcp-nodelay", n);
}
-#line 1589 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1568 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 202:
-#line 782 "dhcp4_parser.yy" // lalr1.cc:907
+ case 208:
+#line 803 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1597 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1576 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 203:
-#line 784 "dhcp4_parser.yy" // lalr1.cc:907
+ case 209:
+#line 805 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1607 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1586 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 204:
-#line 790 "dhcp4_parser.yy" // lalr1.cc:907
+ case 210:
+#line 811 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1615 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1594 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 205:
-#line 792 "dhcp4_parser.yy" // lalr1.cc:907
+ case 211:
+#line 813 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("keyspace", ks);
ctx.leave();
}
-#line 1625 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1604 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 206:
-#line 798 "dhcp4_parser.yy" // lalr1.cc:907
+ case 212:
+#line 819 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reconnect-tries", n);
}
-#line 1634 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1613 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 207:
-#line 803 "dhcp4_parser.yy" // lalr1.cc:907
+ case 213:
+#line 824 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reconnect-wait-time", n);
}
-#line 1643 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1622 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 208:
-#line 808 "dhcp4_parser.yy" // lalr1.cc:907
+ case 214:
+#line 829 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1654 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1633 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 209:
-#line 813 "dhcp4_parser.yy" // lalr1.cc:907
+ case 215:
+#line 834 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1663 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1642 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 217:
-#line 829 "dhcp4_parser.yy" // lalr1.cc:907
+ case 223:
+#line 850 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(duid);
}
-#line 1672 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1651 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 218:
-#line 834 "dhcp4_parser.yy" // lalr1.cc:907
+ case 224:
+#line 855 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(hwaddr);
}
-#line 1681 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1660 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 219:
-#line 839 "dhcp4_parser.yy" // lalr1.cc:907
+ case 225:
+#line 860 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(circuit);
}
-#line 1690 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1669 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 220:
-#line 844 "dhcp4_parser.yy" // lalr1.cc:907
+ case 226:
+#line 865 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(client);
}
-#line 1699 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1678 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 221:
-#line 849 "dhcp4_parser.yy" // lalr1.cc:907
+ case 227:
+#line 870 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(flex_id);
}
-#line 1708 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1687 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 222:
-#line 854 "dhcp4_parser.yy" // lalr1.cc:907
+ case 228:
+#line 875 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1719 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1698 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 223:
-#line 859 "dhcp4_parser.yy" // lalr1.cc:907
+ case 229:
+#line 880 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1728 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1707 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 228:
-#line 872 "dhcp4_parser.yy" // lalr1.cc:907
+ case 234:
+#line 893 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1738 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1717 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 229:
-#line 876 "dhcp4_parser.yy" // lalr1.cc:907
+ case 235:
+#line 897 "dhcp4_parser.yy" // lalr1.cc:859
{
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1748 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1727 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 230:
-#line 882 "dhcp4_parser.yy" // lalr1.cc:907
+ case 236:
+#line 903 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the hooks-libraries list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1758 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1737 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 231:
-#line 886 "dhcp4_parser.yy" // lalr1.cc:907
+ case 237:
+#line 907 "dhcp4_parser.yy" // lalr1.cc:859
{
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 1768 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1747 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 237:
-#line 901 "dhcp4_parser.yy" // lalr1.cc:907
+ case 243:
+#line 922 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1776 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1755 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 238:
-#line 903 "dhcp4_parser.yy" // lalr1.cc:907
+ case 244:
+#line 924 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("library", lib);
ctx.leave();
}
-#line 1786 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1765 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 239:
-#line 909 "dhcp4_parser.yy" // lalr1.cc:907
+ case 245:
+#line 930 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1794 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1773 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 240:
-#line 911 "dhcp4_parser.yy" // lalr1.cc:907
+ case 246:
+#line 932 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 1803 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1782 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 241:
-#line 917 "dhcp4_parser.yy" // lalr1.cc:907
+ case 247:
+#line 938 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1814 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1793 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 242:
-#line 922 "dhcp4_parser.yy" // lalr1.cc:907
+ case 248:
+#line 943 "dhcp4_parser.yy" // lalr1.cc:859
{
// No expired lease parameter is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1824 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1803 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 251:
-#line 940 "dhcp4_parser.yy" // lalr1.cc:907
+ case 257:
+#line 961 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1833 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1812 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 252:
-#line 945 "dhcp4_parser.yy" // lalr1.cc:907
+ case 258:
+#line 966 "dhcp4_parser.yy" // lalr1.cc:859
{
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 1842 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1821 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 253:
-#line 950 "dhcp4_parser.yy" // lalr1.cc:907
+ case 259:
+#line 971 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hold-reclaimed-time", value);
}
-#line 1851 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1830 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 254:
-#line 955 "dhcp4_parser.yy" // lalr1.cc:907
+ case 260:
+#line 976 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-leases", value);
}
-#line 1860 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1839 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 255:
-#line 960 "dhcp4_parser.yy" // lalr1.cc:907
+ case 261:
+#line 981 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-time", value);
}
-#line 1869 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1848 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 256:
-#line 965 "dhcp4_parser.yy" // lalr1.cc:907
+ case 262:
+#line 986 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
}
-#line 1878 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1857 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 257:
-#line 973 "dhcp4_parser.yy" // lalr1.cc:907
+ case 263:
+#line 994 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet4", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.SUBNET4);
}
-#line 1889 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1868 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 258:
-#line 978 "dhcp4_parser.yy" // lalr1.cc:907
+ case 264:
+#line 999 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1898 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1877 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 263:
-#line 998 "dhcp4_parser.yy" // lalr1.cc:907
+ case 269:
+#line 1019 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1908 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1887 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 264:
-#line 1002 "dhcp4_parser.yy" // lalr1.cc:907
+ case 270:
+#line 1023 "dhcp4_parser.yy" // lalr1.cc:859
{
// Once we reached this place, the subnet parsing is now complete.
// If we want to, we can implement default values here.
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1934 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1913 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 265:
-#line 1024 "dhcp4_parser.yy" // lalr1.cc:907
+ case 271:
+#line 1045 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the subnet4 list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1944 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1923 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 266:
-#line 1028 "dhcp4_parser.yy" // lalr1.cc:907
+ case 272:
+#line 1049 "dhcp4_parser.yy" // lalr1.cc:859
{
// The subnet subnet4 parameter is required
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 1954 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1933 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 293:
-#line 1066 "dhcp4_parser.yy" // lalr1.cc:907
+ case 302:
+#line 1090 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1962 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1941 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 294:
-#line 1068 "dhcp4_parser.yy" // lalr1.cc:907
+ case 303:
+#line 1092 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet", subnet);
ctx.leave();
}
-#line 1972 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1951 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 295:
-#line 1074 "dhcp4_parser.yy" // lalr1.cc:907
+ case 304:
+#line 1098 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1980 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1959 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 296:
-#line 1076 "dhcp4_parser.yy" // lalr1.cc:907
+ case 305:
+#line 1100 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-interface", iface);
ctx.leave();
}
-#line 1990 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1969 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 297:
-#line 1082 "dhcp4_parser.yy" // lalr1.cc:907
+ case 306:
+#line 1106 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1998 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1977 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 298:
-#line 1084 "dhcp4_parser.yy" // lalr1.cc:907
+ case 307:
+#line 1108 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-interface-id", iface);
ctx.leave();
}
-#line 2008 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1987 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 299:
-#line 1090 "dhcp4_parser.yy" // lalr1.cc:907
+ case 308:
+#line 1114 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2016 "dhcp4_parser.cc" // lalr1.cc:907
+#line 1995 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 300:
-#line 1092 "dhcp4_parser.yy" // lalr1.cc:907
+ case 309:
+#line 1116 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-subnet", iface);
ctx.leave();
}
-#line 2026 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2005 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 301:
-#line 1098 "dhcp4_parser.yy" // lalr1.cc:907
+ case 310:
+#line 1122 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2034 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2013 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 302:
-#line 1100 "dhcp4_parser.yy" // lalr1.cc:907
+ case 311:
+#line 1124 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface", iface);
ctx.leave();
}
-#line 2044 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2023 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 303:
-#line 1106 "dhcp4_parser.yy" // lalr1.cc:907
+ case 312:
+#line 1130 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2052 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2031 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 304:
-#line 1108 "dhcp4_parser.yy" // lalr1.cc:907
+ case 313:
+#line 1132 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2062 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2041 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 305:
-#line 1114 "dhcp4_parser.yy" // lalr1.cc:907
+ case 314:
+#line 1138 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2073 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2052 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 306:
-#line 1119 "dhcp4_parser.yy" // lalr1.cc:907
+ case 315:
+#line 1143 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2082 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2061 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 307:
-#line 1124 "dhcp4_parser.yy" // lalr1.cc:907
+ case 316:
+#line 1148 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.RESERVATION_MODE);
}
-#line 2090 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2069 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 308:
-#line 1126 "dhcp4_parser.yy" // lalr1.cc:907
+ case 317:
+#line 1150 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2099 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2078 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 309:
-#line 1131 "dhcp4_parser.yy" // lalr1.cc:907
+ case 318:
+#line 1155 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2105 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2084 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 310:
-#line 1132 "dhcp4_parser.yy" // lalr1.cc:907
+ case 319:
+#line 1156 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2111 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2090 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 311:
-#line 1133 "dhcp4_parser.yy" // lalr1.cc:907
+ case 320:
+#line 1157 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2117 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2096 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 312:
-#line 1134 "dhcp4_parser.yy" // lalr1.cc:907
+ case 321:
+#line 1158 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2123 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2102 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 313:
-#line 1137 "dhcp4_parser.yy" // lalr1.cc:907
+ case 322:
+#line 1161 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("id", id);
}
-#line 2132 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2111 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 314:
-#line 1144 "dhcp4_parser.yy" // lalr1.cc:907
+ case 323:
+#line 1168 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2143 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2122 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 315:
-#line 1149 "dhcp4_parser.yy" // lalr1.cc:907
+ case 324:
+#line 1173 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2152 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2131 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 320:
-#line 1164 "dhcp4_parser.yy" // lalr1.cc:907
+ case 329:
+#line 1188 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2162 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2141 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 321:
-#line 1168 "dhcp4_parser.yy" // lalr1.cc:907
+ case 330:
+#line 1192 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
-#line 2170 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2149 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 343:
-#line 1201 "dhcp4_parser.yy" // lalr1.cc:907
+ case 355:
+#line 1228 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2181 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2160 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 344:
-#line 1206 "dhcp4_parser.yy" // lalr1.cc:907
+ case 356:
+#line 1233 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2190 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2169 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 345:
-#line 1214 "dhcp4_parser.yy" // lalr1.cc:907
+ case 357:
+#line 1241 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2199 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2178 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 346:
-#line 1217 "dhcp4_parser.yy" // lalr1.cc:907
+ case 358:
+#line 1244 "dhcp4_parser.yy" // lalr1.cc:859
{
// parsing completed
}
-#line 2207 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2186 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 351:
-#line 1233 "dhcp4_parser.yy" // lalr1.cc:907
+ case 363:
+#line 1260 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2217 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2196 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 352:
-#line 1237 "dhcp4_parser.yy" // lalr1.cc:907
+ case 364:
+#line 1264 "dhcp4_parser.yy" // lalr1.cc:859
{
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2229 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2208 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 353:
-#line 1248 "dhcp4_parser.yy" // lalr1.cc:907
+ case 365:
+#line 1275 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the option-def list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2239 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2218 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 354:
-#line 1252 "dhcp4_parser.yy" // lalr1.cc:907
+ case 366:
+#line 1279 "dhcp4_parser.yy" // lalr1.cc:859
{
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2251 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2230 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 370:
-#line 1284 "dhcp4_parser.yy" // lalr1.cc:907
+ case 382:
+#line 1311 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("code", code);
}
-#line 2260 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2239 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 372:
-#line 1291 "dhcp4_parser.yy" // lalr1.cc:907
+ case 384:
+#line 1318 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2268 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2247 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 373:
-#line 1293 "dhcp4_parser.yy" // lalr1.cc:907
+ case 385:
+#line 1320 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("type", prf);
ctx.leave();
}
-#line 2278 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2257 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 374:
-#line 1299 "dhcp4_parser.yy" // lalr1.cc:907
+ case 386:
+#line 1326 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2286 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2265 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 375:
-#line 1301 "dhcp4_parser.yy" // lalr1.cc:907
+ case 387:
+#line 1328 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2296 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2275 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 376:
-#line 1307 "dhcp4_parser.yy" // lalr1.cc:907
+ case 388:
+#line 1334 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2304 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2283 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 377:
-#line 1309 "dhcp4_parser.yy" // lalr1.cc:907
+ case 389:
+#line 1336 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("space", space);
ctx.leave();
}
-#line 2314 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2293 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 379:
-#line 1317 "dhcp4_parser.yy" // lalr1.cc:907
+ case 391:
+#line 1344 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2322 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2301 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 380:
-#line 1319 "dhcp4_parser.yy" // lalr1.cc:907
+ case 392:
+#line 1346 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("encapsulate", encap);
ctx.leave();
}
-#line 2332 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2311 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 381:
-#line 1325 "dhcp4_parser.yy" // lalr1.cc:907
+ case 393:
+#line 1352 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("array", array);
}
-#line 2341 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2320 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 382:
-#line 1334 "dhcp4_parser.yy" // lalr1.cc:907
+ case 394:
+#line 1361 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2352 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2331 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 383:
-#line 1339 "dhcp4_parser.yy" // lalr1.cc:907
+ case 395:
+#line 1366 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2361 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2340 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 388:
-#line 1358 "dhcp4_parser.yy" // lalr1.cc:907
+ case 400:
+#line 1385 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2371 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2350 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 389:
-#line 1362 "dhcp4_parser.yy" // lalr1.cc:907
+ case 401:
+#line 1389 "dhcp4_parser.yy" // lalr1.cc:859
{
/// @todo: the code or name parameters are required.
ctx.stack_.pop_back();
}
-#line 2380 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2359 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 390:
-#line 1370 "dhcp4_parser.yy" // lalr1.cc:907
+ case 402:
+#line 1397 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the option-data list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2390 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2369 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 391:
-#line 1374 "dhcp4_parser.yy" // lalr1.cc:907
+ case 403:
+#line 1401 "dhcp4_parser.yy" // lalr1.cc:859
{
/// @todo: the code or name parameters are required.
// parsing completed
}
-#line 2399 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2378 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 406:
-#line 1407 "dhcp4_parser.yy" // lalr1.cc:907
+ case 418:
+#line 1434 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2407 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2386 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 407:
-#line 1409 "dhcp4_parser.yy" // lalr1.cc:907
+ case 419:
+#line 1436 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("data", data);
ctx.leave();
}
-#line 2417 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2396 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 410:
-#line 1419 "dhcp4_parser.yy" // lalr1.cc:907
+ case 422:
+#line 1446 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("csv-format", space);
}
-#line 2426 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2405 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 411:
-#line 1424 "dhcp4_parser.yy" // lalr1.cc:907
+ case 423:
+#line 1451 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-send", persist);
}
-#line 2435 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2414 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 412:
-#line 1432 "dhcp4_parser.yy" // lalr1.cc:907
+ case 424:
+#line 1459 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2446 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2425 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 413:
-#line 1437 "dhcp4_parser.yy" // lalr1.cc:907
+ case 425:
+#line 1464 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2455 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2434 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 418:
-#line 1452 "dhcp4_parser.yy" // lalr1.cc:907
+ case 430:
+#line 1479 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2465 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2444 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 419:
-#line 1456 "dhcp4_parser.yy" // lalr1.cc:907
+ case 431:
+#line 1483 "dhcp4_parser.yy" // lalr1.cc:859
{
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2475 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2454 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 420:
-#line 1462 "dhcp4_parser.yy" // lalr1.cc:907
+ case 432:
+#line 1489 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2485 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2464 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 421:
-#line 1466 "dhcp4_parser.yy" // lalr1.cc:907
+ case 433:
+#line 1493 "dhcp4_parser.yy" // lalr1.cc:859
{
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2495 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2474 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 431:
-#line 1485 "dhcp4_parser.yy" // lalr1.cc:907
+ case 443:
+#line 1512 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2503 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2482 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 432:
-#line 1487 "dhcp4_parser.yy" // lalr1.cc:907
+ case 444:
+#line 1514 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pool", pool);
ctx.leave();
}
-#line 2513 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2492 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 433:
-#line 1493 "dhcp4_parser.yy" // lalr1.cc:907
+ case 445:
+#line 1520 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2521 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2500 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 434:
-#line 1495 "dhcp4_parser.yy" // lalr1.cc:907
+ case 446:
+#line 1522 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
parent->set("user-context", user_context);
ctx.leave();
}
-#line 2548 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2527 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 435:
-#line 1518 "dhcp4_parser.yy" // lalr1.cc:907
+ case 447:
+#line 1545 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2556 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2535 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 436:
-#line 1520 "dhcp4_parser.yy" // lalr1.cc:907
+ case 448:
+#line 1547 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
parent->set("user-context", user_context);
ctx.leave();
}
-#line 2585 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2564 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 437:
-#line 1548 "dhcp4_parser.yy" // lalr1.cc:907
+ case 449:
+#line 1575 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2596 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2575 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 438:
-#line 1553 "dhcp4_parser.yy" // lalr1.cc:907
+ case 450:
+#line 1580 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2605 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2584 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 443:
-#line 1566 "dhcp4_parser.yy" // lalr1.cc:907
+ case 455:
+#line 1593 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2615 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2594 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 444:
-#line 1570 "dhcp4_parser.yy" // lalr1.cc:907
+ case 456:
+#line 1597 "dhcp4_parser.yy" // lalr1.cc:859
{
/// @todo: an identifier parameter is required.
ctx.stack_.pop_back();
}
-#line 2624 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2603 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 445:
-#line 1575 "dhcp4_parser.yy" // lalr1.cc:907
+ case 457:
+#line 1602 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the reservations list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2634 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2613 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 446:
-#line 1579 "dhcp4_parser.yy" // lalr1.cc:907
+ case 458:
+#line 1606 "dhcp4_parser.yy" // lalr1.cc:859
{
/// @todo: an identifier parameter is required.
// parsing completed
}
-#line 2643 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2622 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 466:
-#line 1610 "dhcp4_parser.yy" // lalr1.cc:907
+ case 478:
+#line 1637 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2651 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2630 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 467:
-#line 1612 "dhcp4_parser.yy" // lalr1.cc:907
+ case 479:
+#line 1639 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("next-server", next_server);
ctx.leave();
}
-#line 2661 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2640 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 468:
-#line 1618 "dhcp4_parser.yy" // lalr1.cc:907
+ case 480:
+#line 1645 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2669 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2648 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 469:
-#line 1620 "dhcp4_parser.yy" // lalr1.cc:907
+ case 481:
+#line 1647 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-hostname", srv);
ctx.leave();
}
-#line 2679 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2658 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 470:
-#line 1626 "dhcp4_parser.yy" // lalr1.cc:907
+ case 482:
+#line 1653 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2687 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2666 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 471:
-#line 1628 "dhcp4_parser.yy" // lalr1.cc:907
+ case 483:
+#line 1655 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("boot-file-name", bootfile);
ctx.leave();
}
-#line 2697 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2676 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 472:
-#line 1634 "dhcp4_parser.yy" // lalr1.cc:907
+ case 484:
+#line 1661 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2705 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2684 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 473:
-#line 1636 "dhcp4_parser.yy" // lalr1.cc:907
+ case 485:
+#line 1663 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2715 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2694 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 474:
-#line 1642 "dhcp4_parser.yy" // lalr1.cc:907
+ case 486:
+#line 1669 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2726 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2705 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 475:
-#line 1647 "dhcp4_parser.yy" // lalr1.cc:907
+ case 487:
+#line 1674 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2735 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2714 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 476:
-#line 1652 "dhcp4_parser.yy" // lalr1.cc:907
+ case 488:
+#line 1679 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2743 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2722 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 477:
-#line 1654 "dhcp4_parser.yy" // lalr1.cc:907
+ case 489:
+#line 1681 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("duid", d);
ctx.leave();
}
-#line 2753 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2732 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 478:
-#line 1660 "dhcp4_parser.yy" // lalr1.cc:907
+ case 490:
+#line 1687 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2761 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2740 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 479:
-#line 1662 "dhcp4_parser.yy" // lalr1.cc:907
+ case 491:
+#line 1689 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2771 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2750 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 480:
-#line 1668 "dhcp4_parser.yy" // lalr1.cc:907
+ case 492:
+#line 1695 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2779 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2758 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 481:
-#line 1670 "dhcp4_parser.yy" // lalr1.cc:907
+ case 493:
+#line 1697 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-id", hw);
ctx.leave();
}
-#line 2789 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2768 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 482:
-#line 1676 "dhcp4_parser.yy" // lalr1.cc:907
+ case 494:
+#line 1703 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2797 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2776 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 483:
-#line 1678 "dhcp4_parser.yy" // lalr1.cc:907
+ case 495:
+#line 1705 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("circuit-id", hw);
ctx.leave();
}
-#line 2807 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2786 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 484:
-#line 1684 "dhcp4_parser.yy" // lalr1.cc:907
+ case 496:
+#line 1711 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2815 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2794 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 485:
-#line 1686 "dhcp4_parser.yy" // lalr1.cc:907
+ case 497:
+#line 1713 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2825 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2804 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 486:
-#line 1692 "dhcp4_parser.yy" // lalr1.cc:907
+ case 498:
+#line 1719 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2833 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2812 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 487:
-#line 1694 "dhcp4_parser.yy" // lalr1.cc:907
+ case 499:
+#line 1721 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname", host);
ctx.leave();
}
-#line 2843 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2822 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 488:
-#line 1700 "dhcp4_parser.yy" // lalr1.cc:907
+ case 500:
+#line 1727 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2854 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2833 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 489:
-#line 1705 "dhcp4_parser.yy" // lalr1.cc:907
+ case 501:
+#line 1732 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2863 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2842 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 490:
-#line 1713 "dhcp4_parser.yy" // lalr1.cc:907
+ case 502:
+#line 1740 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2874 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2853 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 491:
-#line 1718 "dhcp4_parser.yy" // lalr1.cc:907
+ case 503:
+#line 1745 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2883 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2862 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 494:
-#line 1730 "dhcp4_parser.yy" // lalr1.cc:907
+ case 506:
+#line 1757 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2894 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2873 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 495:
-#line 1735 "dhcp4_parser.yy" // lalr1.cc:907
+ case 507:
+#line 1762 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2903 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2882 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 498:
-#line 1744 "dhcp4_parser.yy" // lalr1.cc:907
+ case 510:
+#line 1771 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2913 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2892 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 499:
-#line 1748 "dhcp4_parser.yy" // lalr1.cc:907
+ case 511:
+#line 1775 "dhcp4_parser.yy" // lalr1.cc:859
{
// 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 2923 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2902 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 516:
-#line 1777 "dhcp4_parser.yy" // lalr1.cc:907
+ case 528:
+#line 1804 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2931 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2910 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 517:
-#line 1779 "dhcp4_parser.yy" // lalr1.cc:907
+ case 529:
+#line 1806 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("test", test);
ctx.leave();
}
-#line 2941 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2920 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 518:
-#line 1785 "dhcp4_parser.yy" // lalr1.cc:907
+ case 530:
+#line 1812 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("only-if-required", b);
}
-#line 2950 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2929 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 519:
-#line 1794 "dhcp4_parser.yy" // lalr1.cc:907
+ case 531:
+#line 1821 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4o6-port", time);
}
-#line 2959 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2938 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 520:
-#line 1801 "dhcp4_parser.yy" // lalr1.cc:907
+ case 532:
+#line 1828 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2970 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2949 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 521:
-#line 1806 "dhcp4_parser.yy" // lalr1.cc:907
+ case 533:
+#line 1833 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2979 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2958 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 529:
-#line 1822 "dhcp4_parser.yy" // lalr1.cc:907
+ case 541:
+#line 1849 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2987 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2966 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 530:
-#line 1824 "dhcp4_parser.yy" // lalr1.cc:907
+ case 542:
+#line 1851 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2997 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2976 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 531:
-#line 1830 "dhcp4_parser.yy" // lalr1.cc:907
+ case 543:
+#line 1857 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3005 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2984 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 532:
-#line 1832 "dhcp4_parser.yy" // lalr1.cc:907
+ case 544:
+#line 1859 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3015 "dhcp4_parser.cc" // lalr1.cc:907
+#line 2994 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 533:
-#line 1841 "dhcp4_parser.yy" // lalr1.cc:907
+ case 545:
+#line 1868 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3023 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3002 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 534:
-#line 1843 "dhcp4_parser.yy" // lalr1.cc:907
+ case 546:
+#line 1870 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr qc = yystack_[0].value.as< ElementPtr > ();
ctx.stack_.back()->set("dhcp-queue-control", qc);
ctx.leave();
}
-#line 3061 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3040 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 535:
-#line 1879 "dhcp4_parser.yy" // lalr1.cc:907
+ case 547:
+#line 1906 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3072 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3051 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 536:
-#line 1884 "dhcp4_parser.yy" // lalr1.cc:907
+ case 548:
+#line 1911 "dhcp4_parser.yy" // lalr1.cc:859
{
// 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 3083 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3062 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 537:
-#line 1891 "dhcp4_parser.yy" // lalr1.cc:907
+ case 549:
+#line 1918 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the dhcp-ddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3093 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3072 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 538:
-#line 1895 "dhcp4_parser.yy" // lalr1.cc:907
+ case 550:
+#line 1922 "dhcp4_parser.yy" // lalr1.cc:859
{
// 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 3103 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3082 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 559:
-#line 1925 "dhcp4_parser.yy" // lalr1.cc:907
+ case 571:
+#line 1952 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-updates", b);
}
-#line 3112 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3091 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 560:
-#line 1930 "dhcp4_parser.yy" // lalr1.cc:907
+ case 572:
+#line 1957 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3120 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3099 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 561:
-#line 1932 "dhcp4_parser.yy" // lalr1.cc:907
+ case 573:
+#line 1959 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3130 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3109 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 562:
-#line 1938 "dhcp4_parser.yy" // lalr1.cc:907
+ case 574:
+#line 1965 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3138 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3117 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 563:
-#line 1940 "dhcp4_parser.yy" // lalr1.cc:907
+ case 575:
+#line 1967 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3148 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3127 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 564:
-#line 1946 "dhcp4_parser.yy" // lalr1.cc:907
+ case 576:
+#line 1973 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-port", i);
}
-#line 3157 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3136 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 565:
-#line 1951 "dhcp4_parser.yy" // lalr1.cc:907
+ case 577:
+#line 1978 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3165 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3144 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 566:
-#line 1953 "dhcp4_parser.yy" // lalr1.cc:907
+ case 578:
+#line 1980 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3175 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3154 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 567:
-#line 1959 "dhcp4_parser.yy" // lalr1.cc:907
+ case 579:
+#line 1986 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-port", i);
}
-#line 3184 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3163 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 568:
-#line 1964 "dhcp4_parser.yy" // lalr1.cc:907
+ case 580:
+#line 1991 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-queue-size", i);
}
-#line 3193 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3172 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 569:
-#line 1969 "dhcp4_parser.yy" // lalr1.cc:907
+ case 581:
+#line 1996 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NCR_PROTOCOL);
}
-#line 3201 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3180 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 570:
-#line 1971 "dhcp4_parser.yy" // lalr1.cc:907
+ case 582:
+#line 1998 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 3210 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3189 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 571:
-#line 1977 "dhcp4_parser.yy" // lalr1.cc:907
+ case 583:
+#line 2004 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3216 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3195 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 572:
-#line 1978 "dhcp4_parser.yy" // lalr1.cc:907
+ case 584:
+#line 2005 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3222 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3201 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 573:
-#line 1981 "dhcp4_parser.yy" // lalr1.cc:907
+ case 585:
+#line 2008 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NCR_FORMAT);
}
-#line 3230 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3209 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 574:
-#line 1983 "dhcp4_parser.yy" // lalr1.cc:907
+ case 586:
+#line 2010 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
ctx.leave();
}
-#line 3240 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3219 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 575:
-#line 1989 "dhcp4_parser.yy" // lalr1.cc:907
+ case 587:
+#line 2016 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-no-update", b);
}
-#line 3249 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3228 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 576:
-#line 1994 "dhcp4_parser.yy" // lalr1.cc:907
+ case 588:
+#line 2021 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-client-update", b);
}
-#line 3258 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3237 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 577:
-#line 1999 "dhcp4_parser.yy" // lalr1.cc:907
+ case 589:
+#line 2026 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
-#line 3266 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3245 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 578:
-#line 2001 "dhcp4_parser.yy" // lalr1.cc:907
+ case 590:
+#line 2028 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 3275 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3254 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 579:
-#line 2007 "dhcp4_parser.yy" // lalr1.cc:907
+ case 591:
+#line 2034 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 3283 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3262 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 580:
-#line 2010 "dhcp4_parser.yy" // lalr1.cc:907
+ case 592:
+#line 2037 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
}
-#line 3291 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3270 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 581:
-#line 2013 "dhcp4_parser.yy" // lalr1.cc:907
+ case 593:
+#line 2040 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
}
-#line 3299 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3278 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 582:
-#line 2016 "dhcp4_parser.yy" // lalr1.cc:907
+ case 594:
+#line 2043 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 3307 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3286 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 583:
-#line 2019 "dhcp4_parser.yy" // lalr1.cc:907
+ case 595:
+#line 2046 "dhcp4_parser.yy" // lalr1.cc:859
{
error(yystack_[0].location, "boolean values for the replace-client-name are "
"no longer supported");
}
-#line 3316 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3295 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 584:
-#line 2025 "dhcp4_parser.yy" // lalr1.cc:907
+ case 596:
+#line 2052 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3324 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3303 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 585:
-#line 2027 "dhcp4_parser.yy" // lalr1.cc:907
+ case 597:
+#line 2054 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3334 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3313 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 586:
-#line 2033 "dhcp4_parser.yy" // lalr1.cc:907
+ case 598:
+#line 2060 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3342 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3321 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 587:
-#line 2035 "dhcp4_parser.yy" // lalr1.cc:907
+ case 599:
+#line 2062 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3352 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3331 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 588:
-#line 2041 "dhcp4_parser.yy" // lalr1.cc:907
+ case 600:
+#line 2068 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3360 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3339 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 589:
-#line 2043 "dhcp4_parser.yy" // lalr1.cc:907
+ case 601:
+#line 2070 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3370 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3349 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 590:
-#line 2052 "dhcp4_parser.yy" // lalr1.cc:907
+ case 602:
+#line 2079 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3378 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3357 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 591:
-#line 2054 "dhcp4_parser.yy" // lalr1.cc:907
+ case 603:
+#line 2081 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 3387 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3366 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 592:
-#line 2059 "dhcp4_parser.yy" // lalr1.cc:907
+ case 604:
+#line 2086 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3395 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3374 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 593:
-#line 2061 "dhcp4_parser.yy" // lalr1.cc:907
+ case 605:
+#line 2088 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 3404 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3383 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 594:
-#line 2066 "dhcp4_parser.yy" // lalr1.cc:907
+ case 606:
+#line 2093 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3412 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3391 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 595:
-#line 2068 "dhcp4_parser.yy" // lalr1.cc:907
+ case 607:
+#line 2095 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 3421 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3400 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 596:
-#line 2073 "dhcp4_parser.yy" // lalr1.cc:907
+ case 608:
+#line 2100 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3432 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3411 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 597:
-#line 2078 "dhcp4_parser.yy" // lalr1.cc:907
+ case 609:
+#line 2105 "dhcp4_parser.yy" // lalr1.cc:859
{
// No config control params are required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3442 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3421 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 598:
-#line 2084 "dhcp4_parser.yy" // lalr1.cc:907
+ case 610:
+#line 2111 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the config-control map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3452 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3431 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 599:
-#line 2088 "dhcp4_parser.yy" // lalr1.cc:907
+ case 611:
+#line 2115 "dhcp4_parser.yy" // lalr1.cc:859
{
// No config_control params are required
// parsing completed
}
-#line 3461 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3440 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 603:
-#line 2102 "dhcp4_parser.yy" // lalr1.cc:907
+ case 615:
+#line 2129 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3472 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3451 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 604:
-#line 2107 "dhcp4_parser.yy" // lalr1.cc:907
+ case 616:
+#line 2134 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3481 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3460 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 605:
-#line 2117 "dhcp4_parser.yy" // lalr1.cc:907
+ case 617:
+#line 2144 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3492 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3471 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 606:
-#line 2122 "dhcp4_parser.yy" // lalr1.cc:907
+ case 618:
+#line 2149 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3501 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3480 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 607:
-#line 2127 "dhcp4_parser.yy" // lalr1.cc:907
+ case 619:
+#line 2154 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the Logging map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3511 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3490 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 608:
-#line 2131 "dhcp4_parser.yy" // lalr1.cc:907
+ case 620:
+#line 2158 "dhcp4_parser.yy" // lalr1.cc:859
{
// parsing completed
}
-#line 3519 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3498 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 612:
-#line 2147 "dhcp4_parser.yy" // lalr1.cc:907
+ case 624:
+#line 2174 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3530 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3509 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 613:
-#line 2152 "dhcp4_parser.yy" // lalr1.cc:907
+ case 625:
+#line 2179 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3539 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3518 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 616:
-#line 2164 "dhcp4_parser.yy" // lalr1.cc:907
+ case 628:
+#line 2191 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 3549 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3528 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 617:
-#line 2168 "dhcp4_parser.yy" // lalr1.cc:907
+ case 629:
+#line 2195 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
-#line 3557 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3536 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 627:
-#line 2185 "dhcp4_parser.yy" // lalr1.cc:907
+ case 639:
+#line 2212 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 3566 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3545 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 628:
-#line 2190 "dhcp4_parser.yy" // lalr1.cc:907
+ case 640:
+#line 2217 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3574 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3553 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 629:
-#line 2192 "dhcp4_parser.yy" // lalr1.cc:907
+ case 641:
+#line 2219 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 3584 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3563 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 630:
-#line 2198 "dhcp4_parser.yy" // lalr1.cc:907
+ case 642:
+#line 2225 "dhcp4_parser.yy" // lalr1.cc:859
{
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 3595 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3574 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 631:
-#line 2203 "dhcp4_parser.yy" // lalr1.cc:907
+ case 643:
+#line 2230 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3604 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3583 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 634:
-#line 2212 "dhcp4_parser.yy" // lalr1.cc:907
+ case 646:
+#line 2239 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3614 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3593 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 635:
-#line 2216 "dhcp4_parser.yy" // lalr1.cc:907
+ case 647:
+#line 2243 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
-#line 3622 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3601 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 642:
-#line 2230 "dhcp4_parser.yy" // lalr1.cc:907
+ case 654:
+#line 2257 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3630 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3609 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 643:
-#line 2232 "dhcp4_parser.yy" // lalr1.cc:907
+ case 655:
+#line 2259 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 3640 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3619 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 644:
-#line 2238 "dhcp4_parser.yy" // lalr1.cc:907
+ case 656:
+#line 2265 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 3649 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3628 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 645:
-#line 2243 "dhcp4_parser.yy" // lalr1.cc:907
+ case 657:
+#line 2270 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 3658 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3637 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 646:
-#line 2248 "dhcp4_parser.yy" // lalr1.cc:907
+ case 658:
+#line 2275 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 3667 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3646 "dhcp4_parser.cc" // lalr1.cc:859
break;
-#line 3671 "dhcp4_parser.cc" // lalr1.cc:907
+#line 3650 "dhcp4_parser.cc" // lalr1.cc:859
default:
break;
}
}
-#if YY_EXCEPTIONS
catch (const syntax_error& yyexc)
{
error (yyexc);
YYERROR;
}
-#endif // YY_EXCEPTIONS
YY_SYMBOL_PRINT ("-> $$ =", yylhs);
yypop_ (yylen);
yylen = 0;
YY_STACK_PRINT ();
// Shift the result of the reduction.
- yypush_ (YY_NULLPTR, YY_MOVE (yylhs));
+ yypush_ (YY_NULLPTR, yylhs);
}
goto yynewstate;
code. */
if (false)
goto yyerrorlab;
+ yyerror_range[1].location = yystack_[yylen - 1].location;
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
yypop_ (yylen);
// Shift the error token.
error_token.state = yyn;
- yypush_ ("Shifting", YY_MOVE (error_token));
+ yypush_ ("Shifting", error_token);
}
goto yynewstate;
return yyresult;
}
-#if YY_EXCEPTIONS
catch (...)
{
- YYCDEBUG << "Exception caught: cleaning lookahead and stack\n";
+ YYCDEBUG << "Exception caught: cleaning lookahead and stack"
+ << std::endl;
// Do not try to display the values of the reclaimed symbols,
- // as their printers might throw an exception.
+ // as their printer might throw an exception.
if (!yyla.empty ())
yy_destroy_ (YY_NULLPTR, yyla);
}
throw;
}
-#endif // YY_EXCEPTIONS
}
void
Dhcp4Parser::error (const syntax_error& yyexc)
{
- error (yyexc.location, yyexc.what ());
+ error (yyexc.location, yyexc.what());
}
// Generate an error message.
case N: \
yyformat = S; \
break
- default: // Avoid compiler warnings.
- YYCASE_ (0, YY_("syntax error"));
- YYCASE_ (1, YY_("syntax error, unexpected %s"));
- YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
#undef YYCASE_
}
}
- const short Dhcp4Parser::yypact_ninf_ = -797;
+ const short int Dhcp4Parser::yypact_ninf_ = -812;
const signed char Dhcp4Parser::yytable_ninf_ = -1;
- const short
+ const short int
Dhcp4Parser::yypact_[] =
{
- 403, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, 43, 35, 38, 50, 58,
- 60, 64, 103, 110, 142, 148, 161, 163, 185, 189,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, 35, -20,
- 17, 71, 32, 152, -15, 239, 146, 242, 54, -25,
- 361, 76, 206, -797, 219, 224, 233, 237, 244, -797,
- -797, -797, -797, -797, 287, -797, 55, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, 295, 297, 299, -797,
- -797, -797, -797, -797, -797, 303, 326, 354, 364, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, 367, -797, -797, -797, -797, 61, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, 369, -797, 72, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, 371, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, 86, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, 135, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, 273, 286, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, 342, -797, -797,
- 375, -797, -797, -797, 382, -797, -797, 345, 362, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, 383, 385, -797, -797, -797, -797, 387, 388,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, 138, -797, -797, -797, 386, -797, -797, 389,
- -797, 392, 396, -797, -797, 397, 398, -797, -797, -797,
- -797, -797, -797, -797, 166, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, 186, -797, -797, -797, 187, -797, -797, -797,
- 35, 35, -797, 77, 405, 408, 409, 410, 411, -797,
- 17, -797, 415, 418, 422, 250, 259, 265, 430, 432,
- 435, 436, 437, 438, 278, 279, 280, 282, 439, 445,
- 446, 463, 464, 465, 466, 467, 468, 469, 470, 471,
- 472, 311, 488, 489, 490, 71, -797, 491, 492, 493,
- 332, 32, -797, 497, 498, 499, 500, 501, 504, 343,
- 506, 507, 509, 152, -797, 510, -15, -797, 511, 512,
- 513, 514, 515, 516, 517, 518, -797, 239, -797, 519,
- 520, 365, 523, 524, 526, 366, -797, 242, 528, 368,
- 373, -797, 54, 529, 531, -13, -797, 374, 533, 535,
- 378, 541, 380, 381, 544, 545, 384, 400, 546, 566,
- 568, 569, 361, -797, 570, 76, -797, 571, 206, -797,
- -797, -797, 572, 573, 574, 35, 35, 35, -797, 575,
- 576, 577, -797, -797, -797, 412, 413, 420, 579, 580,
- 583, -797, -797, -797, -797, 424, 585, 586, 587, 588,
- 589, 429, 172, 590, 592, 593, 594, 595, -797, 596,
- 589, 597, -797, 600, 304, 309, -797, -797, 441, 442,
- 443, 604, 447, 448, -797, 600, 449, 603, -797, 450,
- -797, 600, 451, 452, 453, 454, 455, 456, 457, -797,
- 458, 459, -797, 460, 461, 462, -797, -797, 473, -797,
- -797, -797, 474, 35, -797, -797, 475, 476, -797, 477,
- -797, -797, 11, 479, -797, -797, -29, 478, 480, 481,
- -797, 623, -797, 624, -797, 35, 71, 76, -797, -797,
- -797, 206, 32, 578, -797, -797, -797, 414, 414, 625,
- -797, 626, 627, 628, 629, -797, -797, -797, -797, -797,
- -797, -797, -797, 66, 630, 637, 640, 5, 95, -797,
- 361, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, 641, -797, -797, -797, -797, 263, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, 642, 625, -797, 190, 196, 231, 238, -797, 261,
- -797, -797, -797, -797, -797, -797, 646, 647, 648, 649,
- 650, -797, -797, 651, 652, 653, 654, 655, -797, 262,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, 270, -797,
- 656, 657, -797, -797, 658, 660, -797, -797, 659, 663,
- -797, -797, 661, 665, -797, -797, 664, 666, -797, -797,
- -797, -797, -797, -797, 211, -797, -797, -797, -797, -797,
- -797, -797, 232, -797, -797, 667, 668, -797, -797, 669,
- 671, -797, 672, 673, 674, 675, 676, 677, 274, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, 276, -797, -797, -797, 277, 496, -797, 678, 679,
- -797, -797, -797, -797, 622, -797, 335, -797, 680, -797,
- -797, -797, -797, 681, 578, -797, 683, 684, 685, 686,
- 434, 525, 530, 527, 532, 687, 688, 534, 536, 537,
- 538, 539, 414, -797, -797, 414, -797, 625, 152, -797,
- 626, 242, -797, 627, 54, -797, 628, 195, -797, 629,
- 66, -797, 234, 630, -797, 239, -797, 637, -25, -797,
- 640, 540, 542, 543, 547, 548, 549, 5, -797, 690,
- 693, 95, -797, -797, -797, 695, 696, -15, -797, 641,
- 701, -797, 10, 642, -797, -797, 551, -797, 347, 552,
- 553, 554, -797, -797, -797, -797, -797, 555, 556, -797,
- -797, -797, -797, -797, -797, 284, -797, 285, -797, 702,
- -797, 703, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, 292, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, 708, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, 714, 720, -797,
- -797, -797, -797, -797, 716, -797, 319, -797, -797, -797,
- -797, -797, -797, -797, -797, 560, 561, -797, -797, 562,
- 337, -797, 600, -797, 724, -797, -797, -797, -797, -797,
- 339, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, 195, -797, 725, 563, -797, 234, -797, -797, -797,
- -797, -797, -797, -797, 726, 567, 728, 10, -797, -797,
- 581, -797, -797, 729, -797, 582, -797, -797, 730, -797,
- -797, 349, -797, -10, 730, -797, -797, 731, 732, 734,
- 346, -797, -797, -797, -797, -797, -797, 735, 584, 607,
- 610, -10, -797, 598, -797, -797, -797, -797, -797
+ 437, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, 28, 35, 58, 60, 62,
+ 64, 75, 94, 96, 108, 110, 143, 160, 169, 177,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, 35, -78,
+ 17, 82, 43, 154, 181, 397, 32, 54, 399, -27,
+ 449, -11, 152, -812, 190, 196, 206, 204, 227, -812,
+ -812, -812, -812, -812, 228, -812, 81, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, 247, 253, 263, -812,
+ -812, -812, -812, -812, -812, 281, 282, 292, 337, -812,
+ -812, -812, -812, 338, 344, 346, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, 347, -812, -812, -812, -812,
+ 83, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, 348, -812, 139, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, 349, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ 146, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, 157, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, 235, 323, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, 326, -812, -812, 350,
+ -812, -812, -812, 353, -812, -812, 328, 358, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, 360, 361, -812, -812, -812, -812, 354, 363, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, 170, -812, -812, -812, 366, -812, -812, 368, -812,
+ 371, 372, -812, -812, 373, 376, -812, -812, -812, -812,
+ -812, -812, -812, 183, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, 192, -812, -812, -812, 213, -812, -812, -812, 35,
+ 35, -812, 199, 379, 381, 383, 387, 389, -812, 17,
+ -812, 390, 391, 392, 230, 231, 232, 394, 395, 403,
+ 404, 407, 408, 244, 245, 250, 252, 412, 423, 426,
+ 427, 267, 264, 269, 441, 442, 445, 446, 451, 452,
+ 453, 454, 455, 284, 457, 458, 465, 82, -812, 467,
+ 468, 469, 299, 43, -812, 470, 471, 476, 477, 478,
+ 479, 316, 480, 482, 484, 154, -812, 485, 181, -812,
+ 486, 487, 488, 497, 498, 499, 515, 516, -812, 397,
+ -812, 519, 520, 356, 522, 527, 528, 362, -812, 54,
+ 530, 364, 365, -812, 399, 533, 534, 46, -812, 370,
+ 535, 538, 374, 541, 377, 378, 544, 545, 380, 385,
+ 546, 548, 550, 553, 449, -812, 555, -11, -812, 556,
+ 152, -812, -812, -812, 557, 562, 576, 35, 35, 35,
+ -812, 578, 580, 581, -812, -812, -812, 396, 438, 439,
+ 598, 601, 558, -812, -812, -812, -812, 443, 604, 605,
+ 607, -812, -812, -812, 608, 609, 447, 220, 613, 614,
+ 615, 616, 617, -812, 618, 609, 619, -812, 622, 158,
+ 173, -812, -812, 460, 461, 462, 626, 464, 472, -812,
+ 622, 473, 628, -812, 474, -812, 622, 475, 481, 483,
+ 489, 490, 491, 492, -812, 493, 494, -812, 495, 496,
+ 500, -812, -812, 501, -812, -812, -812, 502, 35, -812,
+ -812, 503, 504, -812, 505, -812, -812, 29, 509, -812,
+ -812, 87, 506, 507, 508, -812, 631, -812, 632, -812,
+ 35, 82, -11, -812, -812, -812, 152, 43, 539, -812,
+ -812, -812, 466, 466, 638, -812, 639, 640, 641, 643,
+ -812, -812, -812, -812, -812, -812, -812, -812, -23, 645,
+ 646, 647, 167, -20, -812, 449, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, 648, -812, -812,
+ -812, -812, 136, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, 649, 638, -812, 238,
+ 239, 265, 266, -812, 279, -812, -812, -812, -812, -812,
+ -812, 610, 629, 634, 635, 661, -812, -812, 662, 663,
+ 673, 674, 675, -812, 285, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, 286, -812, 676, 620, -812, -812, 677,
+ 678, -812, -812, 679, 681, -812, -812, 680, 684, -812,
+ -812, 682, 686, -812, -812, -812, -812, -812, -812, 99,
+ -812, -812, -812, -812, -812, -812, -812, 113, -812, -812,
+ 685, 687, -812, -812, 688, 689, -812, 691, 692, 693,
+ 694, 695, 696, 294, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, 295, -812, -812, -812,
+ 301, 512, -812, 697, 690, -812, -812, -812, -812, 698,
+ -812, 125, -812, 699, -812, -812, -812, -812, 700, 539,
+ -812, 703, 704, 705, 706, 532, 531, 542, 543, 547,
+ 708, 709, 549, 551, 552, 554, 559, 466, -812, -812,
+ 466, -812, 638, 154, -812, 639, 54, -812, 640, 399,
+ -812, 641, 237, -812, 643, -23, -812, 191, 645, -812,
+ 397, -812, 646, -27, -812, 647, 560, 563, 564, 565,
+ 566, 567, 167, -812, 711, 713, -20, -812, -812, -812,
+ 716, 721, 181, -812, 648, 715, -812, -17, 649, -812,
+ -812, 569, -812, 310, 570, 571, 572, -812, -812, -812,
+ -812, -812, 573, 574, -812, -812, -812, -812, -812, -812,
+ 312, -812, 315, -812, 717, -812, 718, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, 321, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, 723, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, 720, 728, -812, -812, -812,
+ -812, -812, 735, -812, 322, -812, -812, -812, -812, -812,
+ -812, -812, -812, 577, 579, -812, -812, 582, 324, -812,
+ 622, -812, 740, -812, -812, -812, -812, -812, 330, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, 237,
+ -812, 742, 583, -812, 191, -812, -812, -812, -812, -812,
+ -812, -812, 744, 584, 745, -17, -812, -812, 587, -812,
+ -812, 746, -812, 588, -812, -812, 750, -812, -812, 140,
+ -812, -100, 750, -812, -812, 748, 754, 755, 332, -812,
+ -812, -812, -812, -812, -812, 756, 590, 593, 595, -100,
+ -812, 597, -812, -812, -812, -812, -812
};
- const unsigned short
+ const unsigned short int
Dhcp4Parser::yydefact_[] =
{
0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
20, 22, 24, 26, 28, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 45, 38, 34, 33, 30, 31, 32, 37, 3,
- 35, 36, 58, 5, 70, 7, 128, 9, 265, 11,
- 420, 13, 445, 15, 345, 17, 353, 19, 390, 21,
- 230, 23, 537, 25, 607, 27, 598, 29, 47, 41,
- 0, 0, 0, 0, 0, 447, 0, 355, 392, 0,
+ 35, 36, 58, 5, 70, 7, 134, 9, 271, 11,
+ 432, 13, 457, 15, 357, 17, 365, 19, 402, 21,
+ 236, 23, 549, 25, 619, 27, 610, 29, 47, 41,
+ 0, 0, 0, 0, 0, 459, 0, 367, 404, 0,
0, 0, 0, 49, 0, 48, 0, 0, 42, 68,
- 605, 590, 592, 594, 0, 67, 0, 60, 62, 64,
- 65, 66, 63, 596, 117, 143, 0, 0, 0, 466,
- 468, 470, 141, 150, 152, 0, 0, 0, 0, 112,
- 257, 343, 382, 314, 433, 435, 307, 208, 494, 437,
- 222, 241, 0, 520, 533, 535, 107, 0, 72, 74,
- 75, 76, 77, 105, 94, 95, 96, 80, 81, 102,
- 82, 83, 84, 88, 89, 78, 106, 79, 86, 87,
- 100, 101, 103, 97, 98, 99, 85, 90, 91, 92,
- 93, 104, 130, 132, 136, 0, 127, 0, 119, 121,
- 122, 123, 124, 125, 126, 295, 297, 299, 412, 293,
- 301, 0, 305, 303, 490, 292, 269, 270, 271, 282,
- 283, 0, 267, 274, 287, 288, 289, 275, 277, 278,
- 280, 276, 272, 273, 290, 291, 279, 284, 285, 286,
- 281, 431, 430, 426, 427, 425, 0, 422, 424, 428,
- 429, 488, 476, 478, 482, 480, 486, 484, 472, 465,
- 459, 463, 464, 0, 448, 449, 460, 461, 462, 456,
- 451, 457, 453, 454, 455, 458, 452, 0, 372, 193,
- 0, 376, 374, 379, 0, 368, 369, 0, 356, 357,
- 359, 371, 360, 361, 362, 378, 363, 364, 365, 366,
- 367, 406, 0, 0, 404, 405, 408, 409, 0, 393,
- 394, 396, 397, 398, 399, 400, 401, 402, 403, 237,
- 239, 234, 0, 232, 235, 236, 0, 560, 562, 0,
- 565, 0, 0, 569, 573, 0, 0, 577, 584, 586,
- 588, 558, 556, 557, 0, 539, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 612, 0, 609, 611, 603, 0, 600, 602, 46,
- 0, 0, 39, 0, 0, 0, 0, 0, 0, 57,
- 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
+ 617, 602, 604, 606, 0, 67, 0, 60, 62, 64,
+ 65, 66, 63, 608, 123, 149, 0, 0, 0, 478,
+ 480, 482, 147, 156, 158, 0, 0, 0, 0, 118,
+ 263, 355, 394, 0, 0, 0, 323, 445, 447, 316,
+ 214, 506, 449, 228, 247, 0, 532, 545, 547, 110,
+ 0, 72, 74, 75, 76, 107, 108, 109, 77, 105,
+ 94, 95, 96, 80, 81, 102, 82, 83, 84, 88,
+ 89, 78, 106, 79, 86, 87, 100, 101, 103, 97,
+ 98, 99, 85, 90, 91, 92, 93, 104, 136, 138,
+ 142, 0, 133, 0, 125, 127, 128, 129, 130, 131,
+ 132, 304, 306, 308, 424, 302, 310, 0, 314, 312,
+ 502, 301, 275, 276, 277, 298, 299, 300, 288, 289,
+ 0, 273, 280, 293, 294, 295, 281, 283, 284, 286,
+ 282, 278, 279, 296, 297, 285, 290, 291, 292, 287,
+ 443, 442, 438, 439, 437, 0, 434, 436, 440, 441,
+ 500, 488, 490, 494, 492, 498, 496, 484, 477, 471,
+ 475, 476, 0, 460, 461, 472, 473, 474, 468, 463,
+ 469, 465, 466, 467, 470, 464, 0, 384, 199, 0,
+ 388, 386, 391, 0, 380, 381, 0, 368, 369, 371,
+ 383, 372, 373, 374, 390, 375, 376, 377, 378, 379,
+ 418, 0, 0, 416, 417, 420, 421, 0, 405, 406,
+ 408, 409, 410, 411, 412, 413, 414, 415, 243, 245,
+ 240, 0, 238, 241, 242, 0, 572, 574, 0, 577,
+ 0, 0, 581, 585, 0, 0, 589, 596, 598, 600,
+ 570, 568, 569, 0, 551, 553, 554, 555, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
+ 624, 0, 621, 623, 615, 0, 612, 614, 46, 0,
+ 0, 39, 0, 0, 0, 0, 0, 0, 57, 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, 0,
- 0, 0, 0, 0, 0, 0, 71, 0, 0, 0,
- 0, 0, 129, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 266, 0, 0, 421, 0, 0,
- 0, 0, 0, 0, 0, 0, 446, 0, 346, 0,
- 0, 0, 0, 0, 0, 0, 354, 0, 0, 0,
- 0, 391, 0, 0, 0, 0, 231, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 71, 0,
+ 0, 0, 0, 0, 135, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 272, 0, 0, 433,
+ 0, 0, 0, 0, 0, 0, 0, 0, 458, 0,
+ 358, 0, 0, 0, 0, 0, 0, 0, 366, 0,
+ 0, 0, 0, 403, 0, 0, 0, 0, 237, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 538, 0, 0, 608, 0, 0, 599,
- 50, 43, 0, 0, 0, 0, 0, 0, 61, 0,
- 0, 0, 114, 115, 116, 0, 0, 0, 0, 0,
- 0, 108, 109, 110, 111, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 519, 0,
- 0, 0, 73, 0, 0, 0, 140, 120, 0, 0,
- 0, 0, 0, 0, 313, 0, 0, 0, 268, 0,
- 423, 0, 0, 0, 0, 0, 0, 0, 0, 450,
- 0, 0, 370, 0, 0, 0, 381, 358, 0, 410,
- 411, 395, 0, 0, 233, 559, 0, 0, 564, 0,
- 567, 568, 0, 0, 575, 576, 0, 0, 0, 0,
- 540, 0, 610, 0, 601, 0, 0, 0, 591, 593,
- 595, 0, 0, 0, 467, 469, 471, 0, 0, 154,
- 113, 259, 347, 384, 316, 40, 434, 436, 309, 310,
- 311, 312, 308, 0, 0, 439, 224, 0, 0, 534,
- 0, 51, 131, 134, 135, 133, 138, 139, 137, 296,
- 298, 300, 414, 294, 302, 306, 304, 0, 432, 489,
- 477, 479, 483, 481, 487, 485, 473, 373, 194, 377,
- 375, 380, 407, 238, 240, 561, 563, 566, 571, 572,
- 570, 574, 579, 580, 581, 582, 583, 578, 585, 587,
- 589, 0, 154, 44, 0, 0, 0, 0, 148, 0,
- 145, 147, 180, 186, 188, 190, 0, 0, 0, 0,
- 0, 202, 204, 0, 0, 0, 0, 0, 179, 0,
- 160, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 175, 176, 177, 172, 178, 173, 174, 0, 158,
- 0, 155, 156, 263, 0, 260, 261, 351, 0, 348,
- 349, 388, 0, 385, 386, 320, 0, 317, 318, 217,
- 218, 219, 220, 221, 0, 210, 212, 213, 214, 215,
- 216, 498, 0, 496, 443, 0, 440, 441, 228, 0,
- 225, 226, 0, 0, 0, 0, 0, 0, 0, 243,
- 245, 246, 247, 248, 249, 250, 529, 531, 528, 526,
- 527, 0, 522, 524, 525, 0, 53, 418, 0, 415,
- 416, 474, 492, 493, 0, 616, 0, 614, 0, 69,
- 606, 597, 118, 0, 0, 144, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 142, 151, 0, 153, 0, 0, 258,
- 0, 355, 344, 0, 392, 383, 0, 0, 315, 0,
- 0, 209, 500, 0, 495, 447, 438, 0, 0, 223,
- 0, 0, 0, 0, 0, 0, 0, 0, 242, 0,
- 0, 0, 521, 536, 55, 0, 54, 0, 413, 0,
- 0, 491, 0, 0, 613, 604, 0, 146, 0, 0,
- 0, 0, 192, 195, 196, 197, 198, 0, 0, 206,
- 207, 199, 200, 201, 161, 0, 157, 0, 262, 0,
- 350, 0, 387, 342, 339, 327, 328, 330, 331, 324,
- 325, 326, 337, 338, 336, 0, 322, 329, 340, 341,
- 332, 333, 334, 335, 319, 211, 516, 0, 514, 515,
- 507, 508, 512, 513, 509, 510, 511, 0, 501, 502,
- 504, 505, 506, 497, 0, 442, 0, 227, 251, 252,
- 253, 254, 255, 256, 244, 0, 0, 523, 52, 0,
- 0, 417, 0, 630, 0, 628, 626, 620, 624, 625,
- 0, 618, 622, 623, 621, 615, 149, 182, 183, 184,
- 185, 181, 187, 189, 191, 203, 205, 159, 264, 352,
- 389, 0, 321, 0, 0, 499, 0, 444, 229, 530,
- 532, 56, 419, 475, 0, 0, 0, 0, 617, 323,
- 0, 518, 503, 0, 627, 0, 619, 517, 0, 629,
- 634, 0, 632, 0, 0, 631, 642, 0, 0, 0,
- 0, 636, 638, 639, 640, 641, 633, 0, 0, 0,
- 0, 0, 635, 0, 644, 645, 646, 637, 643
+ 0, 0, 0, 0, 0, 550, 0, 0, 620, 0,
+ 0, 611, 50, 43, 0, 0, 0, 0, 0, 0,
+ 61, 0, 0, 0, 120, 121, 122, 0, 0, 0,
+ 0, 0, 0, 111, 112, 113, 117, 0, 0, 0,
+ 0, 114, 115, 116, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 531, 0, 0, 0, 73, 0, 0,
+ 0, 146, 126, 0, 0, 0, 0, 0, 0, 322,
+ 0, 0, 0, 274, 0, 435, 0, 0, 0, 0,
+ 0, 0, 0, 0, 462, 0, 0, 382, 0, 0,
+ 0, 393, 370, 0, 422, 423, 407, 0, 0, 239,
+ 571, 0, 0, 576, 0, 579, 580, 0, 0, 587,
+ 588, 0, 0, 0, 0, 552, 0, 622, 0, 613,
+ 0, 0, 0, 603, 605, 607, 0, 0, 0, 479,
+ 481, 483, 0, 0, 160, 119, 265, 359, 396, 325,
+ 40, 446, 448, 318, 319, 320, 321, 317, 0, 0,
+ 451, 230, 0, 0, 546, 0, 51, 137, 140, 141,
+ 139, 144, 145, 143, 305, 307, 309, 426, 303, 311,
+ 315, 313, 0, 444, 501, 489, 491, 495, 493, 499,
+ 497, 485, 385, 200, 389, 387, 392, 419, 244, 246,
+ 573, 575, 578, 583, 584, 582, 586, 591, 592, 593,
+ 594, 595, 590, 597, 599, 601, 0, 160, 44, 0,
+ 0, 0, 0, 154, 0, 151, 153, 186, 192, 194,
+ 196, 0, 0, 0, 0, 0, 208, 210, 0, 0,
+ 0, 0, 0, 185, 0, 166, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 181, 182, 183, 178,
+ 184, 179, 180, 0, 164, 0, 161, 162, 269, 0,
+ 266, 267, 363, 0, 360, 361, 400, 0, 397, 398,
+ 329, 0, 326, 327, 223, 224, 225, 226, 227, 0,
+ 216, 218, 219, 220, 221, 222, 510, 0, 508, 455,
+ 0, 452, 453, 234, 0, 231, 232, 0, 0, 0,
+ 0, 0, 0, 0, 249, 251, 252, 253, 254, 255,
+ 256, 541, 543, 540, 538, 539, 0, 534, 536, 537,
+ 0, 53, 430, 0, 427, 428, 486, 504, 505, 0,
+ 628, 0, 626, 0, 69, 618, 609, 124, 0, 0,
+ 150, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 148, 157,
+ 0, 159, 0, 0, 264, 0, 367, 356, 0, 404,
+ 395, 0, 0, 324, 0, 0, 215, 512, 0, 507,
+ 459, 450, 0, 0, 229, 0, 0, 0, 0, 0,
+ 0, 0, 0, 248, 0, 0, 0, 533, 548, 55,
+ 0, 54, 0, 425, 0, 0, 503, 0, 0, 625,
+ 616, 0, 152, 0, 0, 0, 0, 198, 201, 202,
+ 203, 204, 0, 0, 212, 213, 205, 206, 207, 167,
+ 0, 163, 0, 268, 0, 362, 0, 399, 354, 348,
+ 336, 337, 351, 352, 353, 339, 340, 333, 334, 335,
+ 346, 347, 345, 0, 331, 338, 349, 350, 341, 342,
+ 343, 344, 328, 217, 528, 0, 526, 527, 519, 520,
+ 524, 525, 521, 522, 523, 0, 513, 514, 516, 517,
+ 518, 509, 0, 454, 0, 233, 257, 258, 259, 260,
+ 261, 262, 250, 0, 0, 535, 52, 0, 0, 429,
+ 0, 642, 0, 640, 638, 632, 636, 637, 0, 630,
+ 634, 635, 633, 627, 155, 188, 189, 190, 191, 187,
+ 193, 195, 197, 209, 211, 165, 270, 364, 401, 0,
+ 330, 0, 0, 511, 0, 456, 235, 542, 544, 56,
+ 431, 487, 0, 0, 0, 0, 629, 332, 0, 530,
+ 515, 0, 639, 0, 631, 529, 0, 641, 646, 0,
+ 644, 0, 0, 643, 654, 0, 0, 0, 0, 648,
+ 650, 651, 652, 653, 645, 0, 0, 0, 0, 0,
+ 647, 0, 656, 657, 658, 649, 655
};
- const short
+ const short int
Dhcp4Parser::yypgoto_[] =
{
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -46, -797, -451, -797,
- 121, -797, -797, -797, -797, -797, -797, -501, -797, -797,
- -797, -70, -797, -797, -797, 312, -797, -797, -797, -797,
- 107, 348, -47, -44, 4, -797, -797, -797, -797, 12,
- 15, -797, -797, 158, 340, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -52, -797, -797, -797, -797, -797, -797, 82, -797,
- -72, -797, -563, -59, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -26, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -81, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -90, -797, -797, -797, -83, 321, -797, -797,
- -797, -797, -797, -797, -797, -61, -797, -797, -797, -797,
- -797, -797, -796, -797, -797, -797, -43, -797, -797, -797,
- -34, 377, -797, -797, -797, -797, -797, -797, -797, -797,
- -795, -797, -68, -797, -55, -797, 19, -797, -797, -797,
- -797, -797, -797, -797, -38, -797, -797, -184, -63, -797,
- -797, -797, -797, -797, -16, -797, -797, -797, -18, -797,
- 372, -797, -66, -797, -797, -797, -797, -797, -64, -797,
- -797, -797, -797, -797, -19, -797, -797, -797, -22, -797,
- -797, -797, -14, -797, 379, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -45, -797, -797, -797,
- -40, 425, -797, -797, -57, -797, -39, -797, -62, -797,
- -797, -797, 7, -797, -797, -797, -8, -797, 407, -7,
- -797, -3, -797, 8, -797, 192, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -790, -797, -797, -797, -797, -797, 14,
- -797, -797, -797, -141, -797, -797, -797, -797, -797, -797,
- -797, -797, -2, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, 240, 390, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
- -797, 267, 391, -797, -797, -797, -797, -797, -797, 281,
- 395, -797, -797, -797, -12, -797, -797, -144, -797, -797,
- -797, -797, -797, -797, -160, -797, -797, -176, -797, -797,
- -797, -797, -797
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -46, -812, -472, -812,
+ 97, -812, -812, -812, -812, -812, -812, -516, -812, -812,
+ -812, -70, -812, -812, -812, 398, -812, -812, -812, -812,
+ 179, 384, -47, -44, 4, 12, 15, 19, -812, -812,
+ -812, -812, 23, 26, -812, -812, 171, 375, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -31, -812, -812, -812, -812, -812,
+ -812, 104, -812, -40, -812, -578, -28, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -26, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -33, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -54, -812, -812, -812, -48,
+ 367, -812, -812, -812, -812, -812, -812, -812, -56, -812,
+ -812, -812, -812, -812, -812, -811, -812, -812, -812, -16,
+ -812, -812, -812, -15, 400, -812, -812, -812, -812, -812,
+ -812, -812, -812, -810, -812, -68, -812, -55, -812, 27,
+ -812, -812, -812, -812, -812, -812, -812, -22, -812, -812,
+ -170, -63, -812, -812, -812, -812, -812, -6, -812, -812,
+ -812, -2, -812, 393, -812, -66, -812, -812, -812, -812,
+ -812, -64, -812, -812, -812, -812, -812, -19, -812, -812,
+ -812, -5, -812, -812, -812, 10, -812, 409, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -12,
+ -812, -812, -812, -8, 444, -812, -812, -57, -812, -39,
+ -812, -62, -812, -812, -812, 14, -812, -812, -812, 20,
+ -812, 428, -7, -812, -3, -812, 8, -812, 229, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -805, -812, -812, -812,
+ -812, -812, 25, -812, -812, -812, -130, -812, -812, -812,
+ -812, -812, -812, -812, -812, 9, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, 251, 405, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
+ -812, -812, -812, -812, 287, 401, -812, -812, -812, -812,
+ -812, -812, 288, 410, -812, -812, -812, -1, -812, -812,
+ -137, -812, -812, -812, -812, -812, -812, -150, -812, -812,
+ -165, -812, -812, -812, -812, -812
};
- const short
+ const short int
Dhcp4Parser::yydefgoto_[] =
{
-1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 38, 39, 40, 69,
- 596, 87, 88, 41, 68, 84, 85, 612, 776, 855,
- 856, 688, 43, 70, 96, 97, 98, 354, 45, 71,
- 137, 138, 139, 140, 141, 142, 143, 378, 144, 145,
- 146, 147, 363, 177, 178, 47, 72, 179, 397, 180,
- 398, 615, 181, 399, 618, 182, 148, 371, 149, 364,
- 669, 670, 671, 793, 150, 372, 151, 373, 710, 711,
- 712, 815, 689, 690, 691, 796, 971, 692, 797, 693,
- 798, 694, 799, 695, 696, 430, 697, 698, 699, 700,
- 701, 702, 703, 704, 805, 705, 806, 706, 707, 152,
- 386, 734, 735, 736, 737, 738, 739, 740, 153, 389,
- 749, 750, 751, 838, 61, 79, 302, 303, 304, 443,
- 305, 444, 154, 390, 758, 759, 760, 761, 762, 763,
- 764, 765, 155, 379, 714, 715, 716, 818, 49, 73,
- 201, 202, 203, 407, 204, 403, 205, 404, 206, 405,
- 207, 408, 208, 411, 209, 410, 156, 385, 602, 211,
- 157, 382, 726, 727, 728, 827, 905, 906, 158, 380,
- 55, 76, 718, 719, 720, 821, 57, 77, 267, 268,
- 269, 270, 271, 272, 273, 429, 274, 433, 275, 432,
- 276, 277, 434, 278, 159, 381, 722, 723, 724, 824,
- 59, 78, 288, 289, 290, 291, 292, 438, 293, 294,
- 295, 296, 213, 406, 778, 779, 780, 857, 51, 74,
- 226, 227, 228, 415, 160, 383, 161, 384, 162, 388,
- 745, 746, 747, 835, 53, 75, 243, 244, 245, 163,
- 368, 164, 369, 165, 370, 249, 425, 783, 860, 250,
- 419, 251, 420, 252, 422, 253, 421, 254, 424, 255,
- 423, 256, 418, 220, 412, 784, 166, 387, 742, 743,
- 832, 927, 928, 929, 930, 931, 983, 932, 167, 168,
- 392, 771, 772, 773, 849, 774, 850, 169, 393, 170,
- 394, 63, 80, 324, 325, 326, 327, 448, 328, 449,
- 329, 330, 451, 331, 332, 333, 454, 650, 334, 455,
- 335, 336, 337, 458, 657, 338, 459, 339, 460, 340,
- 461, 99, 356, 100, 357, 101, 358, 171, 362, 67,
- 82, 346, 347, 348, 467, 102, 355, 65, 81, 342,
- 343, 344, 464, 786, 787, 862, 960, 961, 962, 963,
- 996, 964, 994, 1011, 1012, 1013, 1020, 1021, 1022, 1027,
- 1023, 1024, 1025
+ 611, 87, 88, 41, 68, 84, 85, 627, 791, 870,
+ 871, 703, 43, 70, 96, 97, 98, 363, 45, 71,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 387, 150, 151, 152, 153, 372, 183, 184, 47, 72,
+ 185, 409, 186, 410, 630, 187, 411, 633, 188, 154,
+ 380, 155, 373, 684, 685, 686, 808, 156, 381, 157,
+ 382, 725, 726, 727, 830, 704, 705, 706, 811, 989,
+ 707, 812, 708, 813, 709, 814, 710, 711, 442, 712,
+ 713, 714, 715, 716, 717, 718, 719, 820, 720, 821,
+ 721, 722, 158, 398, 749, 750, 751, 752, 753, 754,
+ 755, 159, 401, 764, 765, 766, 853, 61, 79, 311,
+ 312, 313, 455, 314, 456, 160, 402, 773, 774, 775,
+ 776, 777, 778, 779, 780, 161, 388, 729, 730, 731,
+ 833, 49, 73, 210, 211, 212, 419, 213, 415, 214,
+ 416, 215, 417, 216, 420, 217, 423, 218, 422, 162,
+ 397, 617, 220, 163, 394, 741, 742, 743, 842, 923,
+ 924, 164, 389, 55, 76, 733, 734, 735, 836, 57,
+ 77, 276, 277, 278, 279, 280, 281, 282, 441, 283,
+ 445, 284, 444, 285, 286, 446, 287, 165, 390, 737,
+ 738, 739, 839, 59, 78, 297, 298, 299, 300, 301,
+ 450, 302, 303, 304, 305, 222, 418, 793, 794, 795,
+ 872, 51, 74, 235, 236, 237, 427, 166, 395, 167,
+ 396, 168, 400, 760, 761, 762, 850, 53, 75, 252,
+ 253, 254, 169, 377, 170, 378, 171, 379, 258, 437,
+ 798, 875, 259, 431, 260, 432, 261, 434, 262, 433,
+ 263, 436, 264, 435, 265, 430, 229, 424, 799, 172,
+ 399, 757, 758, 847, 945, 946, 947, 948, 949, 1001,
+ 950, 173, 174, 404, 786, 787, 788, 864, 789, 865,
+ 175, 405, 176, 406, 63, 80, 333, 334, 335, 336,
+ 460, 337, 461, 338, 339, 463, 340, 341, 342, 466,
+ 665, 343, 467, 344, 345, 346, 470, 672, 347, 471,
+ 348, 472, 349, 473, 99, 365, 100, 366, 101, 367,
+ 177, 371, 67, 82, 355, 356, 357, 479, 102, 364,
+ 65, 81, 351, 352, 353, 476, 801, 802, 877, 978,
+ 979, 980, 981, 1014, 982, 1012, 1029, 1030, 1031, 1038,
+ 1039, 1040, 1045, 1041, 1042, 1043
};
- const unsigned short
+ const unsigned short int
Dhcp4Parser::yytable_[] =
{
- 95, 136, 176, 195, 222, 239, 223, 265, 284, 301,
- 321, 216, 286, 257, 287, 183, 214, 229, 241, 224,
- 279, 297, 83, 322, 625, 708, 196, 89, 648, 197,
- 629, 900, 901, 184, 215, 230, 242, 913, 280, 298,
- 31, 323, 32, 30, 33, 42, 172, 173, 122, 595,
- 174, 266, 285, 175, 212, 225, 240, 44, 360, 595,
- 221, 124, 125, 361, 395, 46, 217, 48, 246, 396,
- 218, 50, 247, 192, 259, 401, 193, 198, 299, 300,
- 402, 219, 103, 248, 104, 199, 124, 125, 200, 413,
- 299, 300, 210, 105, 414, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 652, 653, 654, 655, 124, 125,
- 52, 752, 753, 754, 755, 756, 757, 54, 259, 281,
- 260, 261, 282, 283, 115, 116, 117, 118, 119, 120,
- 124, 125, 1016, 121, 122, 1017, 1018, 1019, 416, 656,
- 94, 445, 649, 417, 123, 86, 446, 124, 125, 56,
- 94, 953, 126, 954, 955, 58, 90, 127, 128, 729,
- 730, 731, 732, 129, 733, 91, 92, 93, 60, 462,
- 62, 124, 125, 130, 463, 94, 131, 107, 108, 109,
- 110, 111, 94, 132, 133, 900, 901, 134, 135, 465,
- 468, 913, 64, 395, 466, 469, 66, 94, 789, 465,
- 34, 35, 36, 37, 790, 115, 116, 117, 121, 766,
- 767, 185, 186, 187, 830, 122, 341, 831, 345, 94,
- 107, 108, 109, 110, 111, 349, 188, 350, 124, 125,
- 189, 190, 191, 126, 468, 833, 94, 351, 834, 791,
- 192, 401, 472, 193, 129, 352, 792, 353, 115, 116,
- 117, 194, 885, 120, 598, 599, 600, 601, 122, 259,
- 94, 109, 110, 111, 794, 812, 109, 110, 111, 795,
- 813, 124, 125, 812, 190, 258, 126, 847, 814, 851,
- 462, 426, 848, 192, 852, 853, 193, 812, 413, 427,
- 95, 359, 977, 978, 194, 981, 121, 122, 259, 365,
- 982, 366, 122, 367, 470, 471, 259, 374, 260, 261,
- 124, 125, 262, 263, 264, 124, 125, 94, 124, 125,
- 613, 614, 445, 916, 917, 136, 231, 988, 616, 617,
- 375, 176, 232, 233, 234, 235, 236, 237, 863, 238,
- 416, 864, 997, 195, 183, 992, 222, 998, 223, 1031,
- 428, 216, 1014, 436, 1032, 1015, 214, 239, 376, 229,
- 94, 224, 184, 238, 781, 437, 196, 265, 377, 197,
- 241, 391, 284, 400, 215, 409, 286, 230, 287, 431,
- 279, 967, 968, 969, 970, 297, 435, 439, 242, 440,
- 447, 442, 321, 450, 212, 441, 452, 225, 280, 94,
- 453, 456, 457, 298, 94, 322, 217, 94, 240, 473,
- 218, 266, 474, 475, 476, 477, 285, 198, 482, 479,
- 246, 219, 480, 323, 247, 199, 481, 483, 200, 578,
- 579, 580, 210, 484, 485, 248, 486, 124, 125, 487,
- 488, 489, 490, 495, 491, 492, 493, 672, 494, 496,
- 497, 993, 673, 674, 675, 676, 677, 678, 679, 680,
- 681, 682, 683, 684, 685, 686, 687, 498, 499, 500,
- 501, 502, 503, 504, 505, 506, 507, 508, 259, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, 509, 510, 511, 513, 514, 515, 319, 320,
- 516, 518, 519, 520, 521, 522, 136, 644, 523, 524,
- 525, 526, 176, 527, 529, 531, 532, 533, 534, 535,
- 536, 537, 538, 540, 541, 183, 94, 543, 544, 663,
- 545, 542, 548, 552, 546, 553, 549, 556, 768, 557,
- 321, 550, 555, 184, 558, 559, 560, 561, 562, 563,
- 566, 769, 564, 322, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 565, 770,
- 567, 323, 568, 569, 571, 573, 575, 584, 585, 94,
- 576, 577, 581, 582, 583, 586, 587, 588, 589, 590,
- 591, 592, 593, 594, 597, 603, 32, 604, 605, 606,
- 872, 668, 607, 608, 610, 611, 619, 620, 621, 622,
- 627, 651, 623, 624, 626, 628, 630, 631, 632, 633,
- 634, 635, 636, 637, 638, 639, 640, 641, 661, 662,
- 861, 609, 709, 713, 717, 721, 725, 741, 642, 643,
- 645, 646, 647, 658, 744, 659, 660, 748, 777, 785,
- 800, 801, 802, 803, 804, 807, 808, 809, 810, 811,
- 817, 854, 816, 820, 819, 822, 823, 825, 826, 829,
- 828, 837, 478, 836, 840, 839, 841, 842, 843, 844,
- 845, 846, 859, 664, 858, 866, 865, 868, 869, 870,
- 871, 877, 878, 873, 945, 875, 874, 946, 876, 949,
- 879, 948, 880, 881, 882, 952, 938, 883, 939, 940,
- 979, 980, 984, 941, 942, 943, 966, 972, 973, 974,
- 975, 976, 985, 986, 987, 989, 990, 991, 995, 1000,
- 1003, 1001, 1005, 1004, 1008, 1028, 1029, 1010, 1030, 1033,
- 667, 517, 867, 512, 788, 886, 1007, 1009, 195, 915,
- 937, 265, 1034, 884, 284, 936, 216, 893, 286, 902,
- 287, 214, 918, 1038, 279, 239, 554, 297, 301, 920,
- 908, 196, 903, 1035, 197, 922, 1036, 888, 241, 215,
- 894, 768, 280, 895, 887, 298, 944, 222, 909, 223,
- 528, 914, 956, 923, 769, 266, 242, 999, 285, 212,
- 229, 899, 224, 889, 892, 958, 919, 890, 907, 547,
- 891, 217, 770, 921, 951, 218, 240, 950, 230, 782,
- 910, 551, 198, 959, 911, 924, 219, 934, 246, 925,
- 199, 896, 247, 200, 539, 912, 957, 210, 225, 897,
- 926, 530, 898, 248, 935, 1002, 904, 933, 666, 947,
- 775, 965, 570, 1006, 1026, 1037, 0, 0, 665, 574,
- 572, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 95, 139, 182, 201, 231, 248, 232, 274, 293, 310,
+ 330, 225, 295, 266, 296, 189, 223, 238, 250, 233,
+ 288, 306, 83, 331, 640, 723, 202, 89, 30, 203,
+ 644, 918, 919, 190, 224, 239, 251, 931, 289, 307,
+ 31, 332, 32, 610, 33, 1034, 663, 268, 1035, 1036,
+ 1037, 275, 294, 610, 221, 234, 249, 178, 179, 127,
+ 128, 180, 127, 128, 181, 42, 226, 44, 255, 46,
+ 227, 48, 256, 744, 745, 746, 747, 204, 748, 308,
+ 309, 228, 50, 257, 369, 205, 407, 267, 206, 370,
+ 86, 408, 207, 103, 121, 104, 208, 781, 782, 209,
+ 219, 52, 845, 54, 105, 846, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 56, 848, 58, 268, 849,
+ 269, 270, 127, 128, 271, 272, 273, 971, 878, 972,
+ 973, 879, 350, 127, 128, 115, 116, 117, 118, 119,
+ 120, 94, 413, 1032, 121, 122, 1033, 414, 94, 425,
+ 60, 94, 308, 309, 426, 123, 124, 125, 126, 90,
+ 428, 127, 128, 664, 354, 429, 129, 62, 91, 92,
+ 93, 130, 131, 457, 628, 629, 64, 132, 458, 107,
+ 108, 109, 110, 111, 66, 94, 474, 133, 918, 919,
+ 134, 475, 631, 632, 931, 477, 358, 135, 136, 359,
+ 478, 137, 138, 34, 35, 36, 37, 115, 116, 117,
+ 360, 94, 361, 191, 192, 193, 480, 122, 109, 110,
+ 111, 481, 94, 667, 668, 669, 670, 123, 124, 125,
+ 362, 194, 368, 127, 128, 195, 196, 197, 129, 247,
+ 796, 407, 477, 438, 122, 198, 804, 805, 199, 132,
+ 94, 374, 900, 121, 122, 268, 200, 375, 671, 230,
+ 127, 128, 107, 108, 109, 110, 111, 376, 480, 413,
+ 127, 128, 198, 806, 807, 199, 767, 768, 769, 770,
+ 771, 772, 809, 934, 935, 383, 384, 810, 827, 827,
+ 115, 116, 117, 828, 829, 120, 385, 862, 866, 95,
+ 122, 268, 863, 867, 474, 613, 614, 615, 616, 868,
+ 123, 124, 125, 482, 483, 827, 127, 128, 425, 196,
+ 995, 129, 94, 996, 999, 457, 439, 428, 198, 1000,
+ 1006, 199, 1010, 1015, 440, 1049, 448, 139, 1016, 200,
+ 1050, 386, 391, 182, 985, 986, 987, 988, 392, 94,
+ 393, 403, 412, 421, 443, 201, 189, 447, 231, 94,
+ 232, 449, 453, 225, 451, 452, 454, 484, 223, 248,
+ 459, 238, 462, 233, 190, 464, 465, 468, 202, 274,
+ 469, 203, 250, 485, 293, 486, 224, 487, 295, 239,
+ 296, 488, 288, 489, 491, 492, 493, 306, 497, 498,
+ 251, 494, 495, 496, 330, 94, 221, 499, 500, 234,
+ 289, 501, 502, 503, 504, 307, 507, 331, 226, 505,
+ 249, 506, 227, 275, 109, 110, 111, 508, 294, 204,
+ 509, 510, 255, 228, 512, 332, 256, 205, 511, 513,
+ 206, 593, 594, 595, 207, 514, 515, 257, 208, 516,
+ 517, 209, 219, 523, 1011, 518, 519, 520, 521, 522,
+ 122, 524, 525, 268, 290, 269, 270, 291, 292, 526,
+ 531, 528, 529, 530, 533, 534, 127, 128, 127, 128,
+ 535, 536, 537, 538, 540, 539, 541, 240, 542, 544,
+ 546, 547, 548, 241, 242, 243, 244, 245, 246, 687,
+ 247, 549, 550, 551, 688, 689, 690, 691, 692, 693,
+ 694, 695, 696, 697, 698, 699, 700, 701, 702, 552,
+ 553, 139, 659, 555, 556, 557, 558, 182, 127, 128,
+ 268, 559, 560, 561, 563, 564, 565, 567, 568, 571,
+ 189, 570, 572, 573, 678, 574, 575, 576, 577, 578,
+ 581, 579, 582, 783, 583, 330, 580, 584, 190, 586,
+ 588, 590, 683, 604, 599, 94, 784, 94, 331, 591,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 592, 785, 596, 332, 597, 598, 328,
+ 329, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 602, 600, 601, 603, 606,
+ 607, 605, 608, 609, 815, 612, 32, 94, 618, 619,
+ 620, 621, 624, 832, 622, 623, 625, 626, 634, 635,
+ 636, 637, 638, 816, 94, 642, 676, 677, 817, 818,
+ 639, 641, 643, 645, 666, 724, 728, 732, 736, 646,
+ 740, 647, 756, 759, 763, 792, 800, 648, 649, 650,
+ 651, 652, 653, 654, 655, 819, 822, 823, 656, 657,
+ 658, 660, 661, 662, 673, 674, 675, 824, 825, 826,
+ 869, 835, 831, 834, 838, 837, 840, 841, 843, 844,
+ 852, 851, 855, 874, 854, 856, 857, 858, 859, 860,
+ 861, 887, 888, 873, 881, 880, 876, 883, 884, 885,
+ 886, 889, 892, 893, 890, 963, 891, 964, 894, 970,
+ 895, 896, 966, 897, 967, 997, 998, 1002, 1003, 956,
+ 898, 1004, 957, 958, 959, 960, 961, 984, 990, 991,
+ 992, 993, 994, 1005, 1013, 1007, 1018, 1008, 1021, 1023,
+ 1009, 1026, 1046, 1022, 1019, 1025, 1027, 1028, 1047, 1048,
+ 1051, 1052, 1053, 201, 1054, 1056, 274, 490, 682, 293,
+ 679, 225, 908, 295, 920, 296, 223, 936, 882, 288,
+ 248, 803, 306, 310, 938, 926, 202, 921, 532, 203,
+ 940, 527, 901, 250, 224, 909, 783, 289, 910, 899,
+ 307, 955, 231, 927, 232, 954, 962, 974, 941, 784,
+ 275, 251, 933, 294, 221, 238, 917, 233, 902, 903,
+ 976, 937, 932, 925, 569, 543, 226, 785, 939, 1017,
+ 227, 249, 905, 239, 904, 928, 907, 204, 977, 929,
+ 942, 228, 562, 255, 943, 205, 911, 256, 206, 906,
+ 930, 975, 207, 234, 912, 944, 208, 913, 257, 209,
+ 219, 914, 969, 566, 968, 915, 953, 554, 916, 922,
+ 952, 797, 545, 951, 1020, 965, 790, 983, 1024, 585,
+ 680, 589, 1044, 681, 1055, 0, 0, 587, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 893, 0, 902, 0, 0, 918, 0, 0, 0,
- 0, 0, 0, 920, 908, 0, 903, 956, 0, 922,
- 0, 0, 0, 0, 894, 0, 0, 895, 0, 0,
- 958, 0, 909, 0, 0, 0, 0, 923, 0, 0,
- 0, 0, 0, 0, 0, 899, 0, 0, 959, 0,
- 919, 0, 907, 0, 0, 0, 0, 921, 0, 0,
- 0, 957, 0, 0, 910, 0, 0, 0, 911, 924,
- 0, 0, 0, 925, 0, 896, 0, 0, 0, 912,
- 0, 0, 0, 897, 926, 0, 898, 0, 0, 0,
- 904
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 908,
+ 0, 920, 0, 0, 936, 0, 0, 0, 0, 0,
+ 0, 938, 926, 0, 921, 974, 0, 940, 0, 0,
+ 0, 0, 909, 0, 0, 910, 0, 0, 976, 0,
+ 927, 0, 0, 0, 0, 941, 0, 0, 0, 0,
+ 0, 0, 0, 917, 0, 0, 977, 0, 937, 0,
+ 925, 0, 0, 0, 0, 939, 0, 0, 0, 975,
+ 0, 0, 928, 0, 0, 0, 929, 942, 0, 0,
+ 0, 943, 0, 911, 0, 0, 0, 930, 0, 0,
+ 0, 912, 944, 0, 913, 0, 0, 0, 914, 0,
+ 0, 0, 915, 0, 0, 916, 922
};
- const short
+ const short int
Dhcp4Parser::yycheck_[] =
{
70, 71, 72, 73, 74, 75, 74, 77, 78, 79,
80, 73, 78, 76, 78, 72, 73, 74, 75, 74,
- 77, 78, 68, 80, 525, 588, 73, 10, 17, 73,
- 531, 827, 827, 72, 73, 74, 75, 827, 77, 78,
- 5, 80, 7, 0, 9, 7, 14, 15, 63, 500,
- 18, 77, 78, 21, 73, 74, 75, 7, 3, 510,
- 75, 76, 77, 8, 3, 7, 73, 7, 75, 8,
- 73, 7, 75, 88, 64, 3, 91, 73, 103, 104,
- 8, 73, 11, 75, 13, 73, 76, 77, 73, 3,
- 103, 104, 73, 22, 8, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 133, 134, 135, 136, 76, 77,
- 7, 106, 107, 108, 109, 110, 111, 7, 64, 65,
- 66, 67, 68, 69, 53, 54, 55, 56, 57, 58,
- 76, 77, 142, 62, 63, 145, 146, 147, 3, 168,
- 165, 3, 131, 8, 73, 165, 8, 76, 77, 7,
- 165, 141, 81, 143, 144, 7, 139, 86, 87, 93,
- 94, 95, 96, 92, 98, 148, 149, 150, 7, 3,
- 7, 76, 77, 102, 8, 165, 105, 25, 26, 27,
- 28, 29, 165, 112, 113, 981, 981, 116, 117, 3,
- 3, 981, 7, 3, 8, 8, 7, 165, 8, 3,
- 165, 166, 167, 168, 8, 53, 54, 55, 62, 114,
- 115, 59, 60, 61, 3, 63, 140, 6, 12, 165,
- 25, 26, 27, 28, 29, 6, 74, 3, 76, 77,
- 78, 79, 80, 81, 3, 3, 165, 4, 6, 8,
- 88, 3, 165, 91, 92, 8, 8, 3, 53, 54,
- 55, 99, 815, 58, 82, 83, 84, 85, 63, 64,
- 165, 27, 28, 29, 3, 3, 27, 28, 29, 8,
- 8, 76, 77, 3, 79, 33, 81, 3, 8, 3,
- 3, 8, 8, 88, 8, 8, 91, 3, 3, 3,
- 360, 4, 8, 8, 99, 3, 62, 63, 64, 4,
- 8, 4, 63, 4, 350, 351, 64, 4, 66, 67,
- 76, 77, 70, 71, 72, 76, 77, 165, 76, 77,
- 16, 17, 3, 89, 90, 395, 87, 8, 19, 20,
- 4, 401, 93, 94, 95, 96, 97, 98, 3, 100,
- 3, 6, 3, 413, 401, 8, 416, 8, 416, 3,
- 8, 413, 3, 8, 8, 6, 413, 427, 4, 416,
- 165, 416, 401, 100, 101, 3, 413, 437, 4, 413,
- 427, 4, 442, 4, 413, 4, 442, 416, 442, 4,
- 437, 34, 35, 36, 37, 442, 4, 4, 427, 4,
- 4, 3, 462, 4, 413, 8, 4, 416, 437, 165,
- 4, 4, 4, 442, 165, 462, 413, 165, 427, 4,
- 413, 437, 4, 4, 4, 4, 442, 413, 168, 4,
- 427, 413, 4, 462, 427, 413, 4, 168, 413, 475,
- 476, 477, 413, 168, 4, 427, 4, 76, 77, 4,
- 4, 4, 4, 4, 166, 166, 166, 33, 166, 4,
- 4, 952, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 166, 64, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 4, 4, 4, 4, 4, 4, 137, 138,
- 168, 4, 4, 4, 4, 4, 576, 553, 4, 166,
- 4, 4, 582, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 582, 165, 4, 4, 575,
- 4, 166, 4, 4, 168, 4, 168, 4, 608, 4,
- 610, 168, 168, 582, 166, 4, 166, 166, 4, 4,
- 4, 608, 168, 610, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 168, 608,
- 4, 610, 4, 4, 4, 4, 4, 165, 165, 165,
- 7, 7, 7, 7, 7, 165, 7, 7, 5, 165,
- 5, 5, 5, 5, 165, 5, 7, 5, 5, 5,
- 166, 23, 7, 7, 7, 5, 165, 165, 165, 5,
- 7, 132, 165, 165, 165, 165, 165, 165, 165, 165,
- 165, 165, 165, 165, 165, 165, 165, 165, 5, 5,
- 8, 510, 7, 7, 7, 7, 7, 7, 165, 165,
- 165, 165, 165, 165, 7, 165, 165, 7, 7, 7,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 3, 165, 6, 3, 6, 6, 3, 6, 3, 3,
- 6, 3, 360, 6, 3, 6, 4, 4, 4, 4,
- 4, 4, 3, 576, 6, 4, 6, 4, 4, 4,
- 4, 4, 4, 168, 4, 168, 166, 4, 166, 3,
- 166, 6, 166, 166, 166, 4, 166, 168, 166, 166,
- 8, 8, 4, 166, 166, 166, 165, 165, 165, 165,
- 165, 165, 8, 3, 8, 165, 165, 165, 4, 4,
- 4, 168, 4, 166, 5, 4, 4, 7, 4, 4,
- 582, 401, 794, 395, 662, 817, 165, 165, 818, 830,
- 840, 821, 168, 812, 824, 838, 818, 827, 824, 827,
- 824, 818, 832, 165, 821, 835, 445, 824, 838, 832,
- 827, 818, 827, 166, 818, 832, 166, 820, 835, 818,
- 827, 851, 821, 827, 818, 824, 847, 857, 827, 857,
- 413, 829, 862, 832, 851, 821, 835, 981, 824, 818,
- 857, 827, 857, 821, 826, 862, 832, 823, 827, 437,
- 824, 818, 851, 832, 859, 818, 835, 857, 857, 627,
- 827, 442, 818, 862, 827, 832, 818, 835, 835, 832,
- 818, 827, 835, 818, 427, 827, 862, 818, 857, 827,
- 832, 416, 827, 835, 837, 986, 827, 833, 581, 851,
- 610, 863, 462, 997, 1014, 1031, -1, -1, 577, 468,
- 465, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 77, 78, 68, 80, 540, 603, 73, 10, 0, 73,
+ 546, 842, 842, 72, 73, 74, 75, 842, 77, 78,
+ 5, 80, 7, 515, 9, 145, 17, 64, 148, 149,
+ 150, 77, 78, 525, 73, 74, 75, 14, 15, 79,
+ 80, 18, 79, 80, 21, 7, 73, 7, 75, 7,
+ 73, 7, 75, 96, 97, 98, 99, 73, 101, 106,
+ 107, 73, 7, 75, 3, 73, 3, 33, 73, 8,
+ 168, 8, 73, 11, 62, 13, 73, 117, 118, 73,
+ 73, 7, 3, 7, 22, 6, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 7, 3, 7, 64, 6,
+ 66, 67, 79, 80, 70, 71, 72, 144, 3, 146,
+ 147, 6, 143, 79, 80, 53, 54, 55, 56, 57,
+ 58, 168, 3, 3, 62, 63, 6, 8, 168, 3,
+ 7, 168, 106, 107, 8, 73, 74, 75, 76, 142,
+ 3, 79, 80, 134, 12, 8, 84, 7, 151, 152,
+ 153, 89, 90, 3, 16, 17, 7, 95, 8, 25,
+ 26, 27, 28, 29, 7, 168, 3, 105, 999, 999,
+ 108, 8, 19, 20, 999, 3, 6, 115, 116, 3,
+ 8, 119, 120, 168, 169, 170, 171, 53, 54, 55,
+ 4, 168, 8, 59, 60, 61, 3, 63, 27, 28,
+ 29, 8, 168, 136, 137, 138, 139, 73, 74, 75,
+ 3, 77, 4, 79, 80, 81, 82, 83, 84, 103,
+ 104, 3, 3, 8, 63, 91, 8, 8, 94, 95,
+ 168, 4, 830, 62, 63, 64, 102, 4, 171, 78,
+ 79, 80, 25, 26, 27, 28, 29, 4, 3, 3,
+ 79, 80, 91, 8, 8, 94, 109, 110, 111, 112,
+ 113, 114, 3, 92, 93, 4, 4, 8, 3, 3,
+ 53, 54, 55, 8, 8, 58, 4, 3, 3, 369,
+ 63, 64, 8, 8, 3, 85, 86, 87, 88, 8,
+ 73, 74, 75, 359, 360, 3, 79, 80, 3, 82,
+ 8, 84, 168, 8, 3, 3, 3, 3, 91, 8,
+ 8, 94, 8, 3, 8, 3, 8, 407, 8, 102,
+ 8, 4, 4, 413, 34, 35, 36, 37, 4, 168,
+ 4, 4, 4, 4, 4, 425, 413, 4, 428, 168,
+ 428, 3, 8, 425, 4, 4, 3, 168, 425, 439,
+ 4, 428, 4, 428, 413, 4, 4, 4, 425, 449,
+ 4, 425, 439, 4, 454, 4, 425, 4, 454, 428,
+ 454, 4, 449, 4, 4, 4, 4, 454, 4, 4,
+ 439, 171, 171, 171, 474, 168, 425, 4, 4, 428,
+ 449, 4, 4, 169, 169, 454, 4, 474, 425, 169,
+ 439, 169, 425, 449, 27, 28, 29, 4, 454, 425,
+ 4, 4, 439, 425, 170, 474, 439, 425, 171, 170,
+ 425, 487, 488, 489, 425, 4, 4, 439, 425, 4,
+ 4, 425, 425, 169, 970, 4, 4, 4, 4, 4,
+ 63, 4, 4, 64, 65, 66, 67, 68, 69, 4,
+ 171, 4, 4, 4, 4, 4, 79, 80, 79, 80,
+ 4, 4, 4, 4, 4, 169, 4, 90, 4, 4,
+ 4, 4, 4, 96, 97, 98, 99, 100, 101, 33,
+ 103, 4, 4, 4, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 4,
+ 4, 591, 568, 4, 4, 169, 4, 597, 79, 80,
+ 64, 4, 4, 171, 4, 171, 171, 4, 4, 4,
+ 597, 171, 4, 169, 590, 4, 169, 169, 4, 4,
+ 4, 171, 4, 623, 4, 625, 171, 4, 597, 4,
+ 4, 4, 23, 5, 168, 168, 623, 168, 625, 7,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 7, 623, 7, 625, 7, 7, 140,
+ 141, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 7, 168, 168, 7, 5,
+ 5, 168, 5, 5, 4, 168, 7, 168, 5, 5,
+ 5, 5, 525, 3, 7, 7, 7, 5, 168, 168,
+ 168, 5, 168, 4, 168, 7, 5, 5, 4, 4,
+ 168, 168, 168, 168, 135, 7, 7, 7, 7, 168,
+ 7, 168, 7, 7, 7, 7, 7, 168, 168, 168,
+ 168, 168, 168, 168, 168, 4, 4, 4, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 4, 4, 4,
+ 168, 3, 6, 6, 3, 6, 6, 3, 6, 3,
+ 3, 6, 3, 3, 6, 4, 4, 4, 4, 4,
+ 4, 169, 171, 6, 4, 6, 8, 4, 4, 4,
+ 4, 169, 4, 4, 171, 4, 169, 4, 169, 4,
+ 169, 169, 6, 169, 3, 8, 8, 4, 8, 169,
+ 171, 3, 169, 169, 169, 169, 169, 168, 168, 168,
+ 168, 168, 168, 8, 4, 168, 4, 168, 4, 4,
+ 168, 5, 4, 169, 171, 168, 168, 7, 4, 4,
+ 4, 171, 169, 833, 169, 168, 836, 369, 597, 839,
+ 591, 833, 842, 839, 842, 839, 833, 847, 809, 836,
+ 850, 677, 839, 853, 847, 842, 833, 842, 413, 833,
+ 847, 407, 832, 850, 833, 842, 866, 836, 842, 827,
+ 839, 855, 872, 842, 872, 853, 862, 877, 847, 866,
+ 836, 850, 845, 839, 833, 872, 842, 872, 833, 835,
+ 877, 847, 844, 842, 457, 425, 833, 866, 847, 999,
+ 833, 850, 838, 872, 836, 842, 841, 833, 877, 842,
+ 847, 833, 449, 850, 847, 833, 842, 850, 833, 839,
+ 842, 877, 833, 872, 842, 847, 833, 842, 850, 833,
+ 833, 842, 874, 454, 872, 842, 852, 439, 842, 842,
+ 850, 642, 428, 848, 1004, 866, 625, 878, 1015, 474,
+ 592, 480, 1032, 596, 1049, -1, -1, 477, -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, 981, -1, 981, -1, -1, 986, -1, -1, -1,
- -1, -1, -1, 986, 981, -1, 981, 997, -1, 986,
- -1, -1, -1, -1, 981, -1, -1, 981, -1, -1,
- 997, -1, 981, -1, -1, -1, -1, 986, -1, -1,
- -1, -1, -1, -1, -1, 981, -1, -1, 997, -1,
- 986, -1, 981, -1, -1, -1, -1, 986, -1, -1,
- -1, 997, -1, -1, 981, -1, -1, -1, 981, 986,
- -1, -1, -1, 986, -1, 981, -1, -1, -1, 981,
- -1, -1, -1, 981, 986, -1, 981, -1, -1, -1,
- 981
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 999,
+ -1, 999, -1, -1, 1004, -1, -1, -1, -1, -1,
+ -1, 1004, 999, -1, 999, 1015, -1, 1004, -1, -1,
+ -1, -1, 999, -1, -1, 999, -1, -1, 1015, -1,
+ 999, -1, -1, -1, -1, 1004, -1, -1, -1, -1,
+ -1, -1, -1, 999, -1, -1, 1015, -1, 1004, -1,
+ 999, -1, -1, -1, -1, 1004, -1, -1, -1, 1015,
+ -1, -1, 999, -1, -1, -1, 999, 1004, -1, -1,
+ -1, 1004, -1, 999, -1, -1, -1, 999, -1, -1,
+ -1, 999, 1004, -1, 999, -1, -1, -1, 999, -1,
+ -1, -1, 999, -1, -1, 999, 999
};
- const unsigned short
+ const unsigned short int
Dhcp4Parser::yystos_[] =
{
- 0, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 0, 5, 7, 9, 165, 166, 167, 168, 185, 186,
- 187, 192, 7, 201, 7, 207, 7, 224, 7, 317,
- 7, 397, 7, 413, 7, 349, 7, 355, 7, 379,
- 7, 293, 7, 470, 7, 516, 7, 508, 193, 188,
- 202, 208, 225, 318, 398, 414, 350, 356, 380, 294,
- 471, 517, 509, 185, 194, 195, 165, 190, 191, 10,
- 139, 148, 149, 150, 165, 200, 203, 204, 205, 500,
- 502, 504, 514, 11, 13, 22, 24, 25, 26, 27,
+ 0, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 0, 5, 7, 9, 168, 169, 170, 171, 188, 189,
+ 190, 195, 7, 204, 7, 210, 7, 230, 7, 323,
+ 7, 403, 7, 419, 7, 355, 7, 361, 7, 385,
+ 7, 299, 7, 476, 7, 522, 7, 514, 196, 191,
+ 205, 211, 231, 324, 404, 420, 356, 362, 386, 300,
+ 477, 523, 515, 188, 197, 198, 168, 193, 194, 10,
+ 142, 151, 152, 153, 168, 203, 206, 207, 208, 506,
+ 508, 510, 520, 11, 13, 22, 24, 25, 26, 27,
28, 29, 30, 31, 32, 53, 54, 55, 56, 57,
- 58, 62, 63, 73, 76, 77, 81, 86, 87, 92,
- 102, 105, 112, 113, 116, 117, 200, 209, 210, 211,
- 212, 213, 214, 215, 217, 218, 219, 220, 235, 237,
- 243, 245, 278, 287, 301, 311, 335, 339, 347, 373,
- 403, 405, 407, 418, 420, 422, 445, 457, 458, 466,
- 468, 506, 14, 15, 18, 21, 200, 222, 223, 226,
- 228, 231, 234, 403, 405, 59, 60, 61, 74, 78,
- 79, 80, 88, 91, 99, 200, 211, 212, 213, 218,
- 219, 319, 320, 321, 323, 325, 327, 329, 331, 333,
- 335, 338, 373, 391, 403, 405, 407, 418, 420, 422,
- 442, 75, 200, 331, 333, 373, 399, 400, 401, 403,
- 405, 87, 93, 94, 95, 96, 97, 98, 100, 200,
- 373, 403, 405, 415, 416, 417, 418, 420, 422, 424,
- 428, 430, 432, 434, 436, 438, 440, 347, 33, 64,
- 66, 67, 70, 71, 72, 200, 263, 357, 358, 359,
- 360, 361, 362, 363, 365, 367, 369, 370, 372, 403,
- 405, 65, 68, 69, 200, 263, 361, 367, 381, 382,
- 383, 384, 385, 387, 388, 389, 390, 403, 405, 103,
- 104, 200, 295, 296, 297, 299, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 137,
- 138, 200, 403, 405, 472, 473, 474, 475, 477, 479,
- 480, 482, 483, 484, 487, 489, 490, 491, 494, 496,
- 498, 140, 518, 519, 520, 12, 510, 511, 512, 6,
- 3, 4, 8, 3, 206, 515, 501, 503, 505, 4,
- 3, 8, 507, 221, 238, 4, 4, 4, 419, 421,
- 423, 236, 244, 246, 4, 4, 4, 4, 216, 312,
- 348, 374, 340, 404, 406, 336, 279, 446, 408, 288,
- 302, 4, 459, 467, 469, 3, 8, 227, 229, 232,
- 4, 3, 8, 324, 326, 328, 392, 322, 330, 4,
- 334, 332, 443, 3, 8, 402, 3, 8, 441, 429,
- 431, 435, 433, 439, 437, 425, 8, 3, 8, 364,
- 264, 4, 368, 366, 371, 4, 8, 3, 386, 4,
- 4, 8, 3, 298, 300, 3, 8, 4, 476, 478,
- 4, 481, 4, 4, 485, 488, 4, 4, 492, 495,
- 497, 499, 3, 8, 521, 3, 8, 513, 3, 8,
- 185, 185, 165, 4, 4, 4, 4, 4, 204, 4,
- 4, 4, 168, 168, 168, 4, 4, 4, 4, 4,
- 4, 166, 166, 166, 166, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 166, 4,
- 4, 4, 210, 4, 4, 4, 168, 223, 4, 4,
- 4, 4, 4, 4, 166, 4, 4, 4, 320, 4,
- 400, 4, 4, 4, 4, 4, 4, 4, 4, 417,
- 4, 4, 166, 4, 4, 4, 168, 359, 4, 168,
- 168, 383, 4, 4, 296, 168, 4, 4, 166, 4,
- 166, 166, 4, 4, 168, 168, 4, 4, 4, 4,
- 473, 4, 519, 4, 511, 4, 7, 7, 185, 185,
- 185, 7, 7, 7, 165, 165, 165, 7, 7, 5,
- 165, 5, 5, 5, 5, 187, 189, 165, 82, 83,
- 84, 85, 337, 5, 5, 5, 5, 7, 7, 189,
- 7, 5, 196, 16, 17, 230, 19, 20, 233, 165,
- 165, 165, 5, 165, 165, 196, 165, 7, 165, 196,
- 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
- 165, 165, 165, 165, 185, 165, 165, 165, 17, 131,
- 486, 132, 133, 134, 135, 136, 168, 493, 165, 165,
- 165, 5, 5, 185, 209, 518, 510, 222, 23, 239,
- 240, 241, 33, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 200, 251,
- 252, 253, 256, 258, 260, 262, 263, 265, 266, 267,
- 268, 269, 270, 271, 272, 274, 276, 277, 251, 7,
- 247, 248, 249, 7, 313, 314, 315, 7, 351, 352,
- 353, 7, 375, 376, 377, 7, 341, 342, 343, 93,
- 94, 95, 96, 98, 280, 281, 282, 283, 284, 285,
- 286, 7, 447, 448, 7, 409, 410, 411, 7, 289,
- 290, 291, 106, 107, 108, 109, 110, 111, 303, 304,
- 305, 306, 307, 308, 309, 310, 114, 115, 200, 403,
- 405, 460, 461, 462, 464, 472, 197, 7, 393, 394,
- 395, 101, 424, 426, 444, 7, 522, 523, 247, 8,
- 8, 8, 8, 242, 3, 8, 254, 257, 259, 261,
- 4, 4, 4, 4, 4, 273, 275, 4, 4, 4,
- 4, 4, 3, 8, 8, 250, 6, 3, 316, 6,
- 3, 354, 6, 3, 378, 6, 3, 344, 6, 3,
- 3, 6, 449, 3, 6, 412, 6, 3, 292, 6,
- 3, 4, 4, 4, 4, 4, 4, 3, 8, 463,
- 465, 3, 8, 8, 165, 198, 199, 396, 6, 3,
- 427, 8, 524, 3, 6, 6, 4, 240, 4, 4,
- 4, 4, 166, 168, 166, 168, 166, 4, 4, 166,
- 166, 166, 166, 168, 252, 251, 249, 319, 315, 357,
- 353, 381, 377, 200, 211, 212, 213, 218, 219, 263,
- 311, 329, 331, 333, 335, 345, 346, 373, 403, 405,
- 418, 420, 422, 442, 343, 281, 89, 90, 200, 263,
- 347, 373, 403, 405, 418, 420, 422, 450, 451, 452,
- 453, 454, 456, 448, 415, 411, 295, 291, 166, 166,
- 166, 166, 166, 166, 304, 4, 4, 461, 6, 3,
- 399, 395, 4, 141, 143, 144, 200, 263, 403, 405,
- 525, 526, 527, 528, 530, 523, 165, 34, 35, 36,
- 37, 255, 165, 165, 165, 165, 165, 8, 8, 8,
- 8, 3, 8, 455, 4, 8, 3, 8, 8, 165,
- 165, 165, 8, 196, 531, 4, 529, 3, 8, 346,
- 4, 168, 452, 4, 166, 4, 526, 165, 5, 165,
- 7, 532, 533, 534, 3, 6, 142, 145, 146, 147,
- 535, 536, 537, 539, 540, 541, 533, 538, 4, 4,
- 4, 3, 8, 4, 168, 166, 166, 536, 165
+ 58, 62, 63, 73, 74, 75, 76, 79, 80, 84,
+ 89, 90, 95, 105, 108, 115, 116, 119, 120, 203,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 223, 224, 225, 226, 241, 243, 249, 251, 284, 293,
+ 307, 317, 341, 345, 353, 379, 409, 411, 413, 424,
+ 426, 428, 451, 463, 464, 472, 474, 512, 14, 15,
+ 18, 21, 203, 228, 229, 232, 234, 237, 240, 409,
+ 411, 59, 60, 61, 77, 81, 82, 83, 91, 94,
+ 102, 203, 214, 215, 216, 217, 218, 219, 224, 225,
+ 325, 326, 327, 329, 331, 333, 335, 337, 339, 341,
+ 344, 379, 397, 409, 411, 413, 424, 426, 428, 448,
+ 78, 203, 337, 339, 379, 405, 406, 407, 409, 411,
+ 90, 96, 97, 98, 99, 100, 101, 103, 203, 379,
+ 409, 411, 421, 422, 423, 424, 426, 428, 430, 434,
+ 436, 438, 440, 442, 444, 446, 353, 33, 64, 66,
+ 67, 70, 71, 72, 203, 269, 363, 364, 365, 366,
+ 367, 368, 369, 371, 373, 375, 376, 378, 409, 411,
+ 65, 68, 69, 203, 269, 367, 373, 387, 388, 389,
+ 390, 391, 393, 394, 395, 396, 409, 411, 106, 107,
+ 203, 301, 302, 303, 305, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 140, 141,
+ 203, 409, 411, 478, 479, 480, 481, 483, 485, 486,
+ 488, 489, 490, 493, 495, 496, 497, 500, 502, 504,
+ 143, 524, 525, 526, 12, 516, 517, 518, 6, 3,
+ 4, 8, 3, 209, 521, 507, 509, 511, 4, 3,
+ 8, 513, 227, 244, 4, 4, 4, 425, 427, 429,
+ 242, 250, 252, 4, 4, 4, 4, 222, 318, 354,
+ 380, 4, 4, 4, 346, 410, 412, 342, 285, 452,
+ 414, 294, 308, 4, 465, 473, 475, 3, 8, 233,
+ 235, 238, 4, 3, 8, 330, 332, 334, 398, 328,
+ 336, 4, 340, 338, 449, 3, 8, 408, 3, 8,
+ 447, 435, 437, 441, 439, 445, 443, 431, 8, 3,
+ 8, 370, 270, 4, 374, 372, 377, 4, 8, 3,
+ 392, 4, 4, 8, 3, 304, 306, 3, 8, 4,
+ 482, 484, 4, 487, 4, 4, 491, 494, 4, 4,
+ 498, 501, 503, 505, 3, 8, 527, 3, 8, 519,
+ 3, 8, 188, 188, 168, 4, 4, 4, 4, 4,
+ 207, 4, 4, 4, 171, 171, 171, 4, 4, 4,
+ 4, 4, 4, 169, 169, 169, 169, 4, 4, 4,
+ 4, 171, 170, 170, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 169, 4, 4, 4, 213, 4, 4,
+ 4, 171, 229, 4, 4, 4, 4, 4, 4, 169,
+ 4, 4, 4, 326, 4, 406, 4, 4, 4, 4,
+ 4, 4, 4, 4, 423, 4, 4, 169, 4, 4,
+ 4, 171, 365, 4, 171, 171, 389, 4, 4, 302,
+ 171, 4, 4, 169, 4, 169, 169, 4, 4, 171,
+ 171, 4, 4, 4, 4, 479, 4, 525, 4, 517,
+ 4, 7, 7, 188, 188, 188, 7, 7, 7, 168,
+ 168, 168, 7, 7, 5, 168, 5, 5, 5, 5,
+ 190, 192, 168, 85, 86, 87, 88, 343, 5, 5,
+ 5, 5, 7, 7, 192, 7, 5, 199, 16, 17,
+ 236, 19, 20, 239, 168, 168, 168, 5, 168, 168,
+ 199, 168, 7, 168, 199, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 188,
+ 168, 168, 168, 17, 134, 492, 135, 136, 137, 138,
+ 139, 171, 499, 168, 168, 168, 5, 5, 188, 212,
+ 524, 516, 228, 23, 245, 246, 247, 33, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 203, 257, 258, 259, 262, 264, 266,
+ 268, 269, 271, 272, 273, 274, 275, 276, 277, 278,
+ 280, 282, 283, 257, 7, 253, 254, 255, 7, 319,
+ 320, 321, 7, 357, 358, 359, 7, 381, 382, 383,
+ 7, 347, 348, 349, 96, 97, 98, 99, 101, 286,
+ 287, 288, 289, 290, 291, 292, 7, 453, 454, 7,
+ 415, 416, 417, 7, 295, 296, 297, 109, 110, 111,
+ 112, 113, 114, 309, 310, 311, 312, 313, 314, 315,
+ 316, 117, 118, 203, 409, 411, 466, 467, 468, 470,
+ 478, 200, 7, 399, 400, 401, 104, 430, 432, 450,
+ 7, 528, 529, 253, 8, 8, 8, 8, 248, 3,
+ 8, 260, 263, 265, 267, 4, 4, 4, 4, 4,
+ 279, 281, 4, 4, 4, 4, 4, 3, 8, 8,
+ 256, 6, 3, 322, 6, 3, 360, 6, 3, 384,
+ 6, 3, 350, 6, 3, 3, 6, 455, 3, 6,
+ 418, 6, 3, 298, 6, 3, 4, 4, 4, 4,
+ 4, 4, 3, 8, 469, 471, 3, 8, 8, 168,
+ 201, 202, 402, 6, 3, 433, 8, 530, 3, 6,
+ 6, 4, 246, 4, 4, 4, 4, 169, 171, 169,
+ 171, 169, 4, 4, 169, 169, 169, 169, 171, 258,
+ 257, 255, 325, 321, 363, 359, 387, 383, 203, 214,
+ 215, 216, 217, 218, 219, 224, 225, 269, 317, 335,
+ 337, 339, 341, 351, 352, 379, 409, 411, 424, 426,
+ 428, 448, 349, 287, 92, 93, 203, 269, 353, 379,
+ 409, 411, 424, 426, 428, 456, 457, 458, 459, 460,
+ 462, 454, 421, 417, 301, 297, 169, 169, 169, 169,
+ 169, 169, 310, 4, 4, 467, 6, 3, 405, 401,
+ 4, 144, 146, 147, 203, 269, 409, 411, 531, 532,
+ 533, 534, 536, 529, 168, 34, 35, 36, 37, 261,
+ 168, 168, 168, 168, 168, 8, 8, 8, 8, 3,
+ 8, 461, 4, 8, 3, 8, 8, 168, 168, 168,
+ 8, 199, 537, 4, 535, 3, 8, 352, 4, 171,
+ 458, 4, 169, 4, 532, 168, 5, 168, 7, 538,
+ 539, 540, 3, 6, 145, 148, 149, 150, 541, 542,
+ 543, 545, 546, 547, 539, 544, 4, 4, 4, 3,
+ 8, 4, 171, 169, 169, 542, 168
};
- const unsigned short
+ const unsigned short int
Dhcp4Parser::yyr1_[] =
{
- 0, 169, 171, 170, 172, 170, 173, 170, 174, 170,
- 175, 170, 176, 170, 177, 170, 178, 170, 179, 170,
- 180, 170, 181, 170, 182, 170, 183, 170, 184, 170,
- 185, 185, 185, 185, 185, 185, 185, 186, 188, 187,
- 189, 190, 190, 191, 191, 193, 192, 194, 194, 195,
- 195, 197, 196, 198, 198, 199, 199, 200, 202, 201,
- 203, 203, 204, 204, 204, 204, 204, 204, 206, 205,
- 208, 207, 209, 209, 210, 210, 210, 210, 210, 210,
- 210, 210, 210, 210, 210, 210, 210, 210, 210, 210,
- 210, 210, 210, 210, 210, 210, 210, 210, 210, 210,
- 210, 210, 210, 210, 210, 210, 210, 210, 211, 212,
- 213, 214, 216, 215, 217, 218, 219, 221, 220, 222,
- 222, 223, 223, 223, 223, 223, 223, 223, 225, 224,
- 227, 226, 229, 228, 230, 230, 232, 231, 233, 233,
- 234, 236, 235, 238, 237, 239, 239, 240, 242, 241,
- 244, 243, 246, 245, 247, 247, 248, 248, 250, 249,
- 251, 251, 252, 252, 252, 252, 252, 252, 252, 252,
- 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
- 254, 253, 255, 255, 255, 255, 257, 256, 259, 258,
- 261, 260, 262, 264, 263, 265, 266, 267, 268, 269,
- 270, 271, 273, 272, 275, 274, 276, 277, 279, 278,
- 280, 280, 281, 281, 281, 281, 281, 282, 283, 284,
- 285, 286, 288, 287, 289, 289, 290, 290, 292, 291,
- 294, 293, 295, 295, 295, 296, 296, 298, 297, 300,
- 299, 302, 301, 303, 303, 304, 304, 304, 304, 304,
- 304, 305, 306, 307, 308, 309, 310, 312, 311, 313,
- 313, 314, 314, 316, 315, 318, 317, 319, 319, 320,
- 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
- 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
- 320, 320, 320, 322, 321, 324, 323, 326, 325, 328,
- 327, 330, 329, 332, 331, 334, 333, 336, 335, 337,
- 337, 337, 337, 338, 340, 339, 341, 341, 342, 342,
- 344, 343, 345, 345, 346, 346, 346, 346, 346, 346,
- 346, 346, 346, 346, 346, 346, 346, 346, 346, 346,
- 346, 346, 346, 348, 347, 350, 349, 351, 351, 352,
- 352, 354, 353, 356, 355, 357, 357, 358, 358, 359,
- 359, 359, 359, 359, 359, 359, 359, 359, 359, 360,
- 361, 362, 364, 363, 366, 365, 368, 367, 369, 371,
- 370, 372, 374, 373, 375, 375, 376, 376, 378, 377,
- 380, 379, 381, 381, 382, 382, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 384, 386, 385, 387, 388,
- 389, 390, 392, 391, 393, 393, 394, 394, 396, 395,
- 398, 397, 399, 399, 400, 400, 400, 400, 400, 400,
- 400, 402, 401, 404, 403, 406, 405, 408, 407, 409,
- 409, 410, 410, 412, 411, 414, 413, 415, 415, 416,
- 416, 417, 417, 417, 417, 417, 417, 417, 417, 417,
- 417, 417, 417, 417, 417, 417, 419, 418, 421, 420,
- 423, 422, 425, 424, 427, 426, 429, 428, 431, 430,
- 433, 432, 435, 434, 437, 436, 439, 438, 441, 440,
- 443, 442, 444, 444, 446, 445, 447, 447, 449, 448,
- 450, 450, 451, 451, 452, 452, 452, 452, 452, 452,
- 452, 452, 452, 452, 452, 453, 455, 454, 456, 457,
- 459, 458, 460, 460, 461, 461, 461, 461, 461, 463,
- 462, 465, 464, 467, 466, 469, 468, 471, 470, 472,
- 472, 473, 473, 473, 473, 473, 473, 473, 473, 473,
- 473, 473, 473, 473, 473, 473, 473, 473, 473, 474,
- 476, 475, 478, 477, 479, 481, 480, 482, 483, 485,
- 484, 486, 486, 488, 487, 489, 490, 492, 491, 493,
- 493, 493, 493, 493, 495, 494, 497, 496, 499, 498,
- 501, 500, 503, 502, 505, 504, 507, 506, 509, 508,
- 510, 510, 511, 513, 512, 515, 514, 517, 516, 518,
- 518, 519, 521, 520, 522, 522, 524, 523, 525, 525,
- 526, 526, 526, 526, 526, 526, 526, 527, 529, 528,
- 531, 530, 532, 532, 534, 533, 535, 535, 536, 536,
- 536, 536, 538, 537, 539, 540, 541
+ 0, 172, 174, 173, 175, 173, 176, 173, 177, 173,
+ 178, 173, 179, 173, 180, 173, 181, 173, 182, 173,
+ 183, 173, 184, 173, 185, 173, 186, 173, 187, 173,
+ 188, 188, 188, 188, 188, 188, 188, 189, 191, 190,
+ 192, 193, 193, 194, 194, 196, 195, 197, 197, 198,
+ 198, 200, 199, 201, 201, 202, 202, 203, 205, 204,
+ 206, 206, 207, 207, 207, 207, 207, 207, 209, 208,
+ 211, 210, 212, 212, 213, 213, 213, 213, 213, 213,
+ 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
+ 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
+ 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
+ 213, 214, 215, 216, 217, 218, 219, 220, 222, 221,
+ 223, 224, 225, 227, 226, 228, 228, 229, 229, 229,
+ 229, 229, 229, 229, 231, 230, 233, 232, 235, 234,
+ 236, 236, 238, 237, 239, 239, 240, 242, 241, 244,
+ 243, 245, 245, 246, 248, 247, 250, 249, 252, 251,
+ 253, 253, 254, 254, 256, 255, 257, 257, 258, 258,
+ 258, 258, 258, 258, 258, 258, 258, 258, 258, 258,
+ 258, 258, 258, 258, 258, 258, 260, 259, 261, 261,
+ 261, 261, 263, 262, 265, 264, 267, 266, 268, 270,
+ 269, 271, 272, 273, 274, 275, 276, 277, 279, 278,
+ 281, 280, 282, 283, 285, 284, 286, 286, 287, 287,
+ 287, 287, 287, 288, 289, 290, 291, 292, 294, 293,
+ 295, 295, 296, 296, 298, 297, 300, 299, 301, 301,
+ 301, 302, 302, 304, 303, 306, 305, 308, 307, 309,
+ 309, 310, 310, 310, 310, 310, 310, 311, 312, 313,
+ 314, 315, 316, 318, 317, 319, 319, 320, 320, 322,
+ 321, 324, 323, 325, 325, 326, 326, 326, 326, 326,
+ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326,
+ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326,
+ 326, 326, 328, 327, 330, 329, 332, 331, 334, 333,
+ 336, 335, 338, 337, 340, 339, 342, 341, 343, 343,
+ 343, 343, 344, 346, 345, 347, 347, 348, 348, 350,
+ 349, 351, 351, 352, 352, 352, 352, 352, 352, 352,
+ 352, 352, 352, 352, 352, 352, 352, 352, 352, 352,
+ 352, 352, 352, 352, 352, 354, 353, 356, 355, 357,
+ 357, 358, 358, 360, 359, 362, 361, 363, 363, 364,
+ 364, 365, 365, 365, 365, 365, 365, 365, 365, 365,
+ 365, 366, 367, 368, 370, 369, 372, 371, 374, 373,
+ 375, 377, 376, 378, 380, 379, 381, 381, 382, 382,
+ 384, 383, 386, 385, 387, 387, 388, 388, 389, 389,
+ 389, 389, 389, 389, 389, 389, 389, 390, 392, 391,
+ 393, 394, 395, 396, 398, 397, 399, 399, 400, 400,
+ 402, 401, 404, 403, 405, 405, 406, 406, 406, 406,
+ 406, 406, 406, 408, 407, 410, 409, 412, 411, 414,
+ 413, 415, 415, 416, 416, 418, 417, 420, 419, 421,
+ 421, 422, 422, 423, 423, 423, 423, 423, 423, 423,
+ 423, 423, 423, 423, 423, 423, 423, 423, 425, 424,
+ 427, 426, 429, 428, 431, 430, 433, 432, 435, 434,
+ 437, 436, 439, 438, 441, 440, 443, 442, 445, 444,
+ 447, 446, 449, 448, 450, 450, 452, 451, 453, 453,
+ 455, 454, 456, 456, 457, 457, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 459, 461, 460,
+ 462, 463, 465, 464, 466, 466, 467, 467, 467, 467,
+ 467, 469, 468, 471, 470, 473, 472, 475, 474, 477,
+ 476, 478, 478, 479, 479, 479, 479, 479, 479, 479,
+ 479, 479, 479, 479, 479, 479, 479, 479, 479, 479,
+ 479, 480, 482, 481, 484, 483, 485, 487, 486, 488,
+ 489, 491, 490, 492, 492, 494, 493, 495, 496, 498,
+ 497, 499, 499, 499, 499, 499, 501, 500, 503, 502,
+ 505, 504, 507, 506, 509, 508, 511, 510, 513, 512,
+ 515, 514, 516, 516, 517, 519, 518, 521, 520, 523,
+ 522, 524, 524, 525, 527, 526, 528, 528, 530, 529,
+ 531, 531, 532, 532, 532, 532, 532, 532, 532, 533,
+ 535, 534, 537, 536, 538, 538, 540, 539, 541, 541,
+ 542, 542, 542, 542, 544, 543, 545, 546, 547
};
const unsigned char
0, 4, 1, 3, 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, 3, 3,
- 3, 3, 0, 4, 3, 3, 3, 0, 6, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 0, 4,
- 0, 4, 0, 4, 1, 1, 0, 4, 1, 1,
- 3, 0, 6, 0, 6, 1, 3, 1, 0, 4,
- 0, 6, 0, 6, 0, 1, 1, 3, 0, 4,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 0, 4, 1, 1, 1, 1, 0, 4, 0, 4,
- 0, 4, 3, 0, 4, 3, 3, 3, 3, 3,
- 3, 3, 0, 4, 0, 4, 3, 3, 0, 6,
- 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 0, 6, 0, 1, 1, 3, 0, 4,
- 0, 4, 1, 3, 1, 1, 1, 0, 4, 0,
- 4, 0, 6, 1, 3, 1, 1, 1, 1, 1,
- 1, 3, 3, 3, 3, 3, 3, 0, 6, 0,
- 1, 1, 3, 0, 4, 0, 4, 1, 3, 1,
+ 1, 3, 3, 3, 3, 3, 3, 3, 0, 4,
+ 3, 3, 3, 0, 6, 1, 3, 1, 1, 1,
+ 1, 1, 1, 1, 0, 4, 0, 4, 0, 4,
+ 1, 1, 0, 4, 1, 1, 3, 0, 6, 0,
+ 6, 1, 3, 1, 0, 4, 0, 6, 0, 6,
+ 0, 1, 1, 3, 0, 4, 1, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 4, 1, 1,
+ 1, 1, 0, 4, 0, 4, 0, 4, 3, 0,
+ 4, 3, 3, 3, 3, 3, 3, 3, 0, 4,
+ 0, 4, 3, 3, 0, 6, 1, 3, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 0, 6,
+ 0, 1, 1, 3, 0, 4, 0, 4, 1, 3,
+ 1, 1, 1, 0, 4, 0, 4, 0, 6, 1,
+ 3, 1, 1, 1, 1, 1, 1, 3, 3, 3,
+ 3, 3, 3, 0, 6, 0, 1, 1, 3, 0,
+ 4, 0, 4, 1, 3, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 0, 4, 0, 4, 0, 4, 0,
- 4, 0, 4, 0, 4, 0, 4, 0, 4, 1,
- 1, 1, 1, 3, 0, 6, 0, 1, 1, 3,
- 0, 4, 1, 3, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 0, 6, 0, 4, 0, 1, 1,
- 3, 0, 4, 0, 4, 0, 1, 1, 3, 1,
+ 1, 1, 0, 4, 0, 4, 0, 4, 0, 4,
+ 0, 4, 0, 4, 0, 4, 0, 4, 1, 1,
+ 1, 1, 3, 0, 6, 0, 1, 1, 3, 0,
+ 4, 1, 3, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 1, 0, 4, 0, 4, 0, 4, 1, 0,
- 4, 3, 0, 6, 0, 1, 1, 3, 0, 4,
- 0, 4, 0, 1, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 0, 4, 1, 1,
- 3, 3, 0, 6, 0, 1, 1, 3, 0, 4,
- 0, 4, 1, 3, 1, 1, 1, 1, 1, 1,
- 1, 0, 4, 0, 4, 0, 4, 0, 6, 0,
+ 1, 1, 1, 1, 1, 0, 6, 0, 4, 0,
1, 1, 3, 0, 4, 0, 4, 0, 1, 1,
3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 0, 4, 0, 4,
+ 1, 1, 3, 1, 0, 4, 0, 4, 0, 4,
+ 1, 0, 4, 3, 0, 6, 0, 1, 1, 3,
+ 0, 4, 0, 4, 0, 1, 1, 3, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
+ 1, 1, 3, 3, 0, 6, 0, 1, 1, 3,
+ 0, 4, 0, 4, 1, 3, 1, 1, 1, 1,
+ 1, 1, 1, 0, 4, 0, 4, 0, 4, 0,
+ 6, 0, 1, 1, 3, 0, 4, 0, 4, 0,
+ 1, 1, 3, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
0, 4, 0, 4, 0, 4, 0, 4, 0, 4,
0, 4, 0, 4, 0, 4, 0, 4, 0, 4,
- 0, 6, 1, 1, 0, 6, 1, 3, 0, 4,
- 0, 1, 1, 3, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 0, 4, 3, 3,
- 0, 6, 1, 3, 1, 1, 1, 1, 1, 0,
- 4, 0, 4, 0, 4, 0, 6, 0, 4, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
- 0, 4, 0, 4, 3, 0, 4, 3, 3, 0,
- 4, 1, 1, 0, 4, 3, 3, 0, 4, 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
+ 0, 4, 0, 6, 1, 1, 0, 6, 1, 3,
+ 0, 4, 0, 1, 1, 3, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
+ 3, 3, 0, 6, 1, 3, 1, 1, 1, 1,
+ 1, 0, 4, 0, 4, 0, 4, 0, 6, 0,
+ 4, 1, 3, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 3, 0, 4, 0, 4, 3, 0, 4, 3,
+ 3, 0, 4, 1, 1, 0, 4, 3, 3, 0,
+ 4, 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
};
"\"4o6-interface\"", "\"4o6-interface-id\"", "\"4o6-subnet\"",
"\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
"\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"",
- "\"encapsulate\"", "\"array\"", "\"shared-networks\"", "\"pools\"",
+ "\"encapsulate\"", "\"array\"", "\"calculate-tee-times\"",
+ "\"t1-percent\"", "\"t2-percent\"", "\"shared-networks\"", "\"pools\"",
"\"pool\"", "\"user-context\"", "\"comment\"", "\"subnet\"",
"\"interface\"", "\"id\"", "\"reservation-mode\"", "\"disabled\"",
"\"out-of-pool\"", "\"global\"", "\"all\"",
"not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@18",
"global_objects", "global_object", "dhcp4_object", "$@19", "sub_dhcp4",
"$@20", "global_params", "global_param", "valid_lifetime", "renew_timer",
- "rebind_timer", "decline_probation_period", "server_tag", "$@21",
- "echo_client_id", "match_client_id", "authoritative",
- "interfaces_config", "$@22", "interfaces_config_params",
- "interfaces_config_param", "sub_interfaces4", "$@23", "interfaces_list",
- "$@24", "dhcp_socket_type", "$@25", "socket_type", "outbound_interface",
- "$@26", "outbound_interface_value", "re_detect", "lease_database",
- "$@27", "sanity_checks", "$@28", "sanity_checks_params",
- "sanity_checks_param", "lease_checks", "$@29", "hosts_database", "$@30",
- "hosts_databases", "$@31", "database_list", "not_empty_database_list",
- "database", "$@32", "database_map_params", "database_map_param",
- "database_type", "$@33", "db_type", "user", "$@34", "password", "$@35",
- "host", "$@36", "port", "name", "$@37", "persist", "lfc_interval",
- "readonly", "connect_timeout", "request_timeout", "tcp_keepalive",
- "tcp_nodelay", "contact_points", "$@38", "keyspace", "$@39",
- "max_reconnect_tries", "reconnect_wait_time",
+ "rebind_timer", "calculate_tee_times", "t1_percent", "t2_percent",
+ "decline_probation_period", "server_tag", "$@21", "echo_client_id",
+ "match_client_id", "authoritative", "interfaces_config", "$@22",
+ "interfaces_config_params", "interfaces_config_param", "sub_interfaces4",
+ "$@23", "interfaces_list", "$@24", "dhcp_socket_type", "$@25",
+ "socket_type", "outbound_interface", "$@26", "outbound_interface_value",
+ "re_detect", "lease_database", "$@27", "sanity_checks", "$@28",
+ "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@29",
+ "hosts_database", "$@30", "hosts_databases", "$@31", "database_list",
+ "not_empty_database_list", "database", "$@32", "database_map_params",
+ "database_map_param", "database_type", "$@33", "db_type", "user", "$@34",
+ "password", "$@35", "host", "$@36", "port", "name", "$@37", "persist",
+ "lfc_interval", "readonly", "connect_timeout", "request_timeout",
+ "tcp_keepalive", "tcp_nodelay", "contact_points", "$@38", "keyspace",
+ "$@39", "max_reconnect_tries", "reconnect_wait_time",
"host_reservation_identifiers", "$@40",
"host_reservation_identifiers_list", "host_reservation_identifier",
"duid_id", "hw_address_id", "circuit_id", "client_id", "flex_id",
};
#if PARSER4_DEBUG
- const unsigned short
+ const unsigned short int
Dhcp4Parser::yyrline_[] =
{
- 0, 254, 254, 254, 255, 255, 256, 256, 257, 257,
- 258, 258, 259, 259, 260, 260, 261, 261, 262, 262,
- 263, 263, 264, 264, 265, 265, 266, 266, 267, 267,
- 275, 276, 277, 278, 279, 280, 281, 284, 289, 289,
- 300, 303, 304, 307, 311, 318, 318, 325, 326, 329,
- 333, 340, 340, 347, 348, 351, 355, 366, 376, 376,
- 392, 393, 397, 398, 399, 400, 401, 402, 405, 405,
- 420, 420, 429, 430, 435, 436, 437, 438, 439, 440,
- 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, 471, 476,
- 481, 486, 491, 491, 499, 504, 509, 515, 515, 526,
- 527, 530, 531, 532, 533, 534, 535, 536, 539, 539,
- 548, 548, 558, 558, 565, 566, 569, 569, 576, 578,
- 582, 588, 588, 600, 600, 610, 611, 613, 615, 615,
- 633, 633, 645, 645, 655, 656, 659, 660, 663, 663,
- 673, 674, 677, 678, 679, 680, 681, 682, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 697, 697, 704, 705, 706, 707, 710, 710, 718, 718,
- 726, 726, 734, 739, 739, 747, 752, 757, 762, 767,
- 772, 777, 782, 782, 790, 790, 798, 803, 808, 808,
- 818, 819, 822, 823, 824, 825, 826, 829, 834, 839,
- 844, 849, 854, 854, 864, 865, 868, 869, 872, 872,
- 882, 882, 892, 893, 894, 897, 898, 901, 901, 909,
- 909, 917, 917, 928, 929, 932, 933, 934, 935, 936,
- 937, 940, 945, 950, 955, 960, 965, 973, 973, 986,
- 987, 990, 991, 998, 998, 1024, 1024, 1035, 1036, 1040,
- 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050,
- 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
- 1061, 1062, 1063, 1066, 1066, 1074, 1074, 1082, 1082, 1090,
- 1090, 1098, 1098, 1106, 1106, 1114, 1114, 1124, 1124, 1131,
- 1132, 1133, 1134, 1137, 1144, 1144, 1155, 1156, 1160, 1161,
- 1164, 1164, 1172, 1173, 1176, 1177, 1178, 1179, 1180, 1181,
- 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191,
- 1192, 1193, 1194, 1201, 1201, 1214, 1214, 1223, 1224, 1227,
- 1228, 1233, 1233, 1248, 1248, 1262, 1263, 1266, 1267, 1270,
- 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1282,
- 1284, 1289, 1291, 1291, 1299, 1299, 1307, 1307, 1315, 1317,
- 1317, 1325, 1334, 1334, 1346, 1347, 1352, 1353, 1358, 1358,
- 1370, 1370, 1382, 1383, 1388, 1389, 1394, 1395, 1396, 1397,
- 1398, 1399, 1400, 1401, 1402, 1405, 1407, 1407, 1415, 1417,
- 1419, 1424, 1432, 1432, 1444, 1445, 1448, 1449, 1452, 1452,
- 1462, 1462, 1472, 1473, 1476, 1477, 1478, 1479, 1480, 1481,
- 1482, 1485, 1485, 1493, 1493, 1518, 1518, 1548, 1548, 1558,
- 1559, 1562, 1563, 1566, 1566, 1575, 1575, 1584, 1585, 1588,
- 1589, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601,
- 1602, 1603, 1604, 1605, 1606, 1607, 1610, 1610, 1618, 1618,
- 1626, 1626, 1634, 1634, 1642, 1642, 1652, 1652, 1660, 1660,
- 1668, 1668, 1676, 1676, 1684, 1684, 1692, 1692, 1700, 1700,
- 1713, 1713, 1723, 1724, 1730, 1730, 1740, 1741, 1744, 1744,
- 1754, 1755, 1758, 1759, 1762, 1763, 1764, 1765, 1766, 1767,
- 1768, 1769, 1770, 1771, 1772, 1775, 1777, 1777, 1785, 1794,
- 1801, 1801, 1811, 1812, 1815, 1816, 1817, 1818, 1819, 1822,
- 1822, 1830, 1830, 1841, 1841, 1879, 1879, 1891, 1891, 1901,
- 1902, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913,
- 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1925,
- 1930, 1930, 1938, 1938, 1946, 1951, 1951, 1959, 1964, 1969,
- 1969, 1977, 1978, 1981, 1981, 1989, 1994, 1999, 1999, 2007,
- 2010, 2013, 2016, 2019, 2025, 2025, 2033, 2033, 2041, 2041,
- 2052, 2052, 2059, 2059, 2066, 2066, 2073, 2073, 2084, 2084,
- 2094, 2095, 2099, 2102, 2102, 2117, 2117, 2127, 2127, 2138,
- 2139, 2143, 2147, 2147, 2159, 2160, 2164, 2164, 2172, 2173,
- 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2185, 2190, 2190,
- 2198, 2198, 2208, 2209, 2212, 2212, 2220, 2221, 2224, 2225,
- 2226, 2227, 2230, 2230, 2238, 2243, 2248
+ 0, 257, 257, 257, 258, 258, 259, 259, 260, 260,
+ 261, 261, 262, 262, 263, 263, 264, 264, 265, 265,
+ 266, 266, 267, 267, 268, 268, 269, 269, 270, 270,
+ 278, 279, 280, 281, 282, 283, 284, 287, 292, 292,
+ 303, 306, 307, 310, 314, 321, 321, 328, 329, 332,
+ 336, 343, 343, 350, 351, 354, 358, 369, 379, 379,
+ 395, 396, 400, 401, 402, 403, 404, 405, 408, 408,
+ 423, 423, 432, 433, 438, 439, 440, 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,
+ 474, 477, 482, 487, 492, 497, 502, 507, 512, 512,
+ 520, 525, 530, 536, 536, 547, 548, 551, 552, 553,
+ 554, 555, 556, 557, 560, 560, 569, 569, 579, 579,
+ 586, 587, 590, 590, 597, 599, 603, 609, 609, 621,
+ 621, 631, 632, 634, 636, 636, 654, 654, 666, 666,
+ 676, 677, 680, 681, 684, 684, 694, 695, 698, 699,
+ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 718, 718, 725, 726,
+ 727, 728, 731, 731, 739, 739, 747, 747, 755, 760,
+ 760, 768, 773, 778, 783, 788, 793, 798, 803, 803,
+ 811, 811, 819, 824, 829, 829, 839, 840, 843, 844,
+ 845, 846, 847, 850, 855, 860, 865, 870, 875, 875,
+ 885, 886, 889, 890, 893, 893, 903, 903, 913, 914,
+ 915, 918, 919, 922, 922, 930, 930, 938, 938, 949,
+ 950, 953, 954, 955, 956, 957, 958, 961, 966, 971,
+ 976, 981, 986, 994, 994, 1007, 1008, 1011, 1012, 1019,
+ 1019, 1045, 1045, 1056, 1057, 1061, 1062, 1063, 1064, 1065,
+ 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075,
+ 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085,
+ 1086, 1087, 1090, 1090, 1098, 1098, 1106, 1106, 1114, 1114,
+ 1122, 1122, 1130, 1130, 1138, 1138, 1148, 1148, 1155, 1156,
+ 1157, 1158, 1161, 1168, 1168, 1179, 1180, 1184, 1185, 1188,
+ 1188, 1196, 1197, 1200, 1201, 1202, 1203, 1204, 1205, 1206,
+ 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216,
+ 1217, 1218, 1219, 1220, 1221, 1228, 1228, 1241, 1241, 1250,
+ 1251, 1254, 1255, 1260, 1260, 1275, 1275, 1289, 1290, 1293,
+ 1294, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305,
+ 1306, 1309, 1311, 1316, 1318, 1318, 1326, 1326, 1334, 1334,
+ 1342, 1344, 1344, 1352, 1361, 1361, 1373, 1374, 1379, 1380,
+ 1385, 1385, 1397, 1397, 1409, 1410, 1415, 1416, 1421, 1422,
+ 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1432, 1434, 1434,
+ 1442, 1444, 1446, 1451, 1459, 1459, 1471, 1472, 1475, 1476,
+ 1479, 1479, 1489, 1489, 1499, 1500, 1503, 1504, 1505, 1506,
+ 1507, 1508, 1509, 1512, 1512, 1520, 1520, 1545, 1545, 1575,
+ 1575, 1585, 1586, 1589, 1590, 1593, 1593, 1602, 1602, 1611,
+ 1612, 1615, 1616, 1620, 1621, 1622, 1623, 1624, 1625, 1626,
+ 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1637, 1637,
+ 1645, 1645, 1653, 1653, 1661, 1661, 1669, 1669, 1679, 1679,
+ 1687, 1687, 1695, 1695, 1703, 1703, 1711, 1711, 1719, 1719,
+ 1727, 1727, 1740, 1740, 1750, 1751, 1757, 1757, 1767, 1768,
+ 1771, 1771, 1781, 1782, 1785, 1786, 1789, 1790, 1791, 1792,
+ 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1802, 1804, 1804,
+ 1812, 1821, 1828, 1828, 1838, 1839, 1842, 1843, 1844, 1845,
+ 1846, 1849, 1849, 1857, 1857, 1868, 1868, 1906, 1906, 1918,
+ 1918, 1928, 1929, 1932, 1933, 1934, 1935, 1936, 1937, 1938,
+ 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948,
+ 1949, 1952, 1957, 1957, 1965, 1965, 1973, 1978, 1978, 1986,
+ 1991, 1996, 1996, 2004, 2005, 2008, 2008, 2016, 2021, 2026,
+ 2026, 2034, 2037, 2040, 2043, 2046, 2052, 2052, 2060, 2060,
+ 2068, 2068, 2079, 2079, 2086, 2086, 2093, 2093, 2100, 2100,
+ 2111, 2111, 2121, 2122, 2126, 2129, 2129, 2144, 2144, 2154,
+ 2154, 2165, 2166, 2170, 2174, 2174, 2186, 2187, 2191, 2191,
+ 2199, 2200, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2212,
+ 2217, 2217, 2225, 2225, 2235, 2236, 2239, 2239, 2247, 2248,
+ 2251, 2252, 2253, 2254, 2257, 2257, 2265, 2270, 2275
};
// Print the state stack on the debug stream.
i_end = yystack_.end ();
i != i_end; ++i)
*yycdebug_ << ' ' << i->state;
- *yycdebug_ << '\n';
+ *yycdebug_ << std::endl;
}
// Report on the debug stream that the rule \a yyrule is going to be reduced.
void
Dhcp4Parser::yy_reduce_print_ (int yyrule)
{
- unsigned yylno = yyrline_[yyrule];
+ unsigned int yylno = yyrline_[yyrule];
int yynrhs = yyr2_[yyrule];
// Print the symbols being reduced, and their result.
*yycdebug_ << "Reducing stack by rule " << yyrule - 1
- << " (line " << yylno << "):\n";
+ << " (line " << yylno << "):" << std::endl;
// The symbols being reduced.
for (int yyi = 0; yyi < yynrhs; yyi++)
YY_SYMBOL_PRINT (" $" << yyi + 1 << " =",
#endif // PARSER4_DEBUG
-#line 14 "dhcp4_parser.yy" // lalr1.cc:1218
+#line 14 "dhcp4_parser.yy" // lalr1.cc:1167
} } // isc::dhcp
-#line 4947 "dhcp4_parser.cc" // lalr1.cc:1218
-#line 2253 "dhcp4_parser.yy" // lalr1.cc:1219
+#line 4937 "dhcp4_parser.cc" // lalr1.cc:1167
+#line 2280 "dhcp4_parser.yy" // lalr1.cc:1168
void
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.0.4.
// Skeleton interface for Bison LALR(1) parsers in C++
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 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
// This special exception was added by the Free Software Foundation in
// version 2.2 of Bison.
-
/**
** \file dhcp4_parser.h
** Define the isc::dhcp::parser class.
// C++ LALR(1) parser skeleton written by Akim Demaille.
-// Undocumented macros, especially those whose name start with YY_,
-// are private implementation details. Do not rely on them.
-
#ifndef YY_PARSER4_DHCP4_PARSER_H_INCLUDED
# define YY_PARSER4_DHCP4_PARSER_H_INCLUDED
// // "%code requires" blocks.
-#line 17 "dhcp4_parser.yy" // lalr1.cc:404
+#line 17 "dhcp4_parser.yy" // lalr1.cc:377
#include <string>
#include <cc/data.h>
using namespace isc::data;
using namespace std;
-#line 60 "dhcp4_parser.h" // lalr1.cc:404
+#line 56 "dhcp4_parser.h" // lalr1.cc:377
# include <cassert>
# include <cstdlib> // std::abort
# include <stdexcept>
# include <string>
# include <vector>
-
-#if defined __cplusplus
-# define YY_CPLUSPLUS __cplusplus
-#else
-# define YY_CPLUSPLUS 199711L
-#endif
-
-// Support move semantics when possible.
-#if 201103L <= YY_CPLUSPLUS
-# define YY_MOVE std::move
-# define YY_MOVE_OR_COPY move
-# define YY_MOVE_REF(Type) Type&&
-# define YY_RVREF(Type) Type&&
-# define YY_COPY(Type) Type
-#else
-# define YY_MOVE
-# define YY_MOVE_OR_COPY copy
-# define YY_MOVE_REF(Type) Type&
-# define YY_RVREF(Type) const Type&
-# define YY_COPY(Type) const Type&
-#endif
+# include "stack.hh"
# include "location.hh"
#include <typeinfo>
#ifndef YYASSERT
# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
#endif
+#if !defined _Noreturn \
+ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# endif
+#endif
+
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
# define YYUSE(E) ((void) (E))
# define YYUSE(E) /* empty */
#endif
-#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
_Pragma ("GCC diagnostic push") \
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif
-# ifndef YY_NULLPTR
-# if defined __cplusplus
-# if 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
-# else
-# define YY_NULLPTR 0
-# endif
-# else
-# define YY_NULLPTR ((void*)0)
-# endif
-# endif
-
/* Debug traces. */
#ifndef PARSER4_DEBUG
# if defined YYDEBUG
# endif /* ! defined YYDEBUG */
#endif /* ! defined PARSER4_DEBUG */
-#line 14 "dhcp4_parser.yy" // lalr1.cc:404
+#line 14 "dhcp4_parser.yy" // lalr1.cc:377
namespace isc { namespace dhcp {
-#line 168 "dhcp4_parser.h" // lalr1.cc:404
-
- /// A stack with random access from its top.
- template <typename T, typename S = std::vector<T> >
- 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);
- }
-
- 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 <typename T, typename S = stack<T> >
- 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_;
- };
+#line 141 "dhcp4_parser.h" // lalr1.cc:377
/// Empty construction.
variant ()
- : yybuffer_ ()
- , yytypeid_ (YY_NULLPTR)
+ : yytypeid_ (YY_NULLPTR)
{}
/// Construct and fill.
template <typename T>
- variant (YY_RVREF (T) t)
+ variant (const T& t)
: yytypeid_ (&typeid (T))
{
YYASSERT (sizeof (T) <= S);
- new (yyas_<T> ()) T (YY_MOVE (t));
+ new (yyas_<T> ()) T (t);
}
/// Destruction, allowed only if empty.
/// Instantiate an empty \a T in here.
template <typename T>
T&
- emplace ()
+ build ()
{
YYASSERT (!yytypeid_);
YYASSERT (sizeof (T) <= S);
yytypeid_ = & typeid (T);
- return *new (yyas_<T> ()) T ();
+ return *new (yyas_<T> ()) T;
}
-# if 201103L <= YY_CPLUSPLUS
- /// Instantiate a \a T in here from \a t.
- template <typename T, typename U>
- T&
- emplace (U&& u)
- {
- YYASSERT (!yytypeid_);
- YYASSERT (sizeof (T) <= S);
- yytypeid_ = & typeid (T);
- return *new (yyas_<T> ()) T (std::forward <U>(u));
- }
-# else
/// Instantiate a \a T in here from \a t.
template <typename T>
T&
- emplace (const T& t)
+ build (const T& t)
{
YYASSERT (!yytypeid_);
YYASSERT (sizeof (T) <= S);
yytypeid_ = & typeid (T);
return *new (yyas_<T> ()) T (t);
}
-# endif
-
- /// Instantiate an empty \a T in here.
- /// Obsolete, use emplace.
- template <typename T>
- T&
- build ()
- {
- return emplace<T> ();
- }
-
- /// Instantiate a \a T in here from \a t.
- /// Obsolete, use emplace.
- template <typename T>
- T&
- build (const T& t)
- {
- return emplace<T> (t);
- }
/// Accessor to a built \a T.
template <typename T>
T&
as ()
{
- YYASSERT (yytypeid_);
YYASSERT (*yytypeid_ == typeid (T));
YYASSERT (sizeof (T) <= S);
return *yyas_<T> ();
const T&
as () const
{
- YYASSERT (yytypeid_);
YYASSERT (*yytypeid_ == typeid (T));
YYASSERT (sizeof (T) <= S);
return *yyas_<T> ();
/// 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.
+ /// should not be the variant's responsability.
/// Swapping between built and (possibly) non-built is done with
/// variant::move ().
template <typename T>
void
move (self_type& other)
{
-# if 201103L <= YY_CPLUSPLUS
- emplace<T> (std::move (other.as<T> ()));
-# else
- emplace<T> ();
+ build<T> ();
swap<T> (other);
-# endif
other.destroy<T> ();
}
-# if 201103L <= YY_CPLUSPLUS
- /// Move the content of \a other to this.
- template <typename T>
- void
- move (self_type&& other)
- {
- emplace<T> (std::move (other.as<T> ()));
- other.destroy<T> ();
- }
-#endif
-
/// Copy the content of \a other to this.
template <typename T>
void
copy (const self_type& other)
{
- emplace<T> (other.as<T> ());
+ build<T> (other.as<T> ());
}
/// Destroy the stored \a T.
private:
/// Prohibit blind copies.
- self_type& operator= (const self_type&);
+ self_type& operator=(const self_type&);
variant (const self_type&);
/// Accessor to raw memory as \a T.
// hr_mode
// ncr_protocol_value
// replace_client_name_value
- char dummy1[sizeof (ElementPtr)];
+ char dummy1[sizeof(ElementPtr)];
// "boolean"
- char dummy2[sizeof (bool)];
+ char dummy2[sizeof(bool)];
// "floating point"
- char dummy3[sizeof (double)];
+ char dummy3[sizeof(double)];
// "integer"
- char dummy4[sizeof (int64_t)];
+ char dummy4[sizeof(int64_t)];
// "constant string"
- char dummy5[sizeof (std::string)];
+ char dummy5[sizeof(std::string)];
};
/// Symbol semantic values.
- typedef variant<sizeof (union_type)> semantic_type;
+ typedef variant<sizeof(union_type)> semantic_type;
#else
typedef PARSER4_STYPE semantic_type;
#endif
TOKEN_RECORD_TYPES = 325,
TOKEN_ENCAPSULATE = 326,
TOKEN_ARRAY = 327,
- TOKEN_SHARED_NETWORKS = 328,
- TOKEN_POOLS = 329,
- TOKEN_POOL = 330,
- TOKEN_USER_CONTEXT = 331,
- TOKEN_COMMENT = 332,
- TOKEN_SUBNET = 333,
- TOKEN_INTERFACE = 334,
- TOKEN_ID = 335,
- TOKEN_RESERVATION_MODE = 336,
- TOKEN_DISABLED = 337,
- TOKEN_OUT_OF_POOL = 338,
- TOKEN_GLOBAL = 339,
- TOKEN_ALL = 340,
- TOKEN_HOST_RESERVATION_IDENTIFIERS = 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_DUID = 348,
- TOKEN_HW_ADDRESS = 349,
- TOKEN_CIRCUIT_ID = 350,
- TOKEN_CLIENT_ID = 351,
- TOKEN_HOSTNAME = 352,
- TOKEN_FLEX_ID = 353,
- TOKEN_RELAY = 354,
- TOKEN_IP_ADDRESS = 355,
- TOKEN_IP_ADDRESSES = 356,
- TOKEN_HOOKS_LIBRARIES = 357,
- TOKEN_LIBRARY = 358,
- TOKEN_PARAMETERS = 359,
- TOKEN_EXPIRED_LEASES_PROCESSING = 360,
- TOKEN_RECLAIM_TIMER_WAIT_TIME = 361,
- TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 362,
- TOKEN_HOLD_RECLAIMED_TIME = 363,
- TOKEN_MAX_RECLAIM_LEASES = 364,
- TOKEN_MAX_RECLAIM_TIME = 365,
- TOKEN_UNWARNED_RECLAIM_CYCLES = 366,
- TOKEN_DHCP4O6_PORT = 367,
- TOKEN_CONTROL_SOCKET = 368,
- TOKEN_SOCKET_TYPE = 369,
- TOKEN_SOCKET_NAME = 370,
- TOKEN_DHCP_QUEUE_CONTROL = 371,
- TOKEN_DHCP_DDNS = 372,
- TOKEN_ENABLE_UPDATES = 373,
- TOKEN_QUALIFYING_SUFFIX = 374,
- TOKEN_SERVER_IP = 375,
- TOKEN_SERVER_PORT = 376,
- TOKEN_SENDER_IP = 377,
- TOKEN_SENDER_PORT = 378,
- TOKEN_MAX_QUEUE_SIZE = 379,
- TOKEN_NCR_PROTOCOL = 380,
- TOKEN_NCR_FORMAT = 381,
- TOKEN_OVERRIDE_NO_UPDATE = 382,
- TOKEN_OVERRIDE_CLIENT_UPDATE = 383,
- TOKEN_REPLACE_CLIENT_NAME = 384,
- TOKEN_GENERATED_PREFIX = 385,
- TOKEN_TCP = 386,
- TOKEN_JSON = 387,
- TOKEN_WHEN_PRESENT = 388,
- TOKEN_NEVER = 389,
- TOKEN_ALWAYS = 390,
- TOKEN_WHEN_NOT_PRESENT = 391,
- TOKEN_HOSTNAME_CHAR_SET = 392,
- TOKEN_HOSTNAME_CHAR_REPLACEMENT = 393,
- TOKEN_LOGGING = 394,
- TOKEN_LOGGERS = 395,
- TOKEN_OUTPUT_OPTIONS = 396,
- TOKEN_OUTPUT = 397,
- TOKEN_DEBUGLEVEL = 398,
- TOKEN_SEVERITY = 399,
- TOKEN_FLUSH = 400,
- TOKEN_MAXSIZE = 401,
- TOKEN_MAXVER = 402,
- TOKEN_DHCP6 = 403,
- TOKEN_DHCPDDNS = 404,
- TOKEN_CONTROL_AGENT = 405,
- TOKEN_TOPLEVEL_JSON = 406,
- TOKEN_TOPLEVEL_DHCP4 = 407,
- TOKEN_SUB_DHCP4 = 408,
- TOKEN_SUB_INTERFACES4 = 409,
- TOKEN_SUB_SUBNET4 = 410,
- TOKEN_SUB_POOL4 = 411,
- TOKEN_SUB_RESERVATION = 412,
- TOKEN_SUB_OPTION_DEFS = 413,
- TOKEN_SUB_OPTION_DEF = 414,
- TOKEN_SUB_OPTION_DATA = 415,
- TOKEN_SUB_HOOKS_LIBRARY = 416,
- TOKEN_SUB_DHCP_DDNS = 417,
- TOKEN_SUB_LOGGING = 418,
- TOKEN_SUB_CONFIG_CONTROL = 419,
- TOKEN_STRING = 420,
- TOKEN_INTEGER = 421,
- TOKEN_FLOAT = 422,
- TOKEN_BOOLEAN = 423
+ TOKEN_CALCULATE_TEE_TIMES = 328,
+ TOKEN_T1_PERCENT = 329,
+ TOKEN_T2_PERCENT = 330,
+ TOKEN_SHARED_NETWORKS = 331,
+ TOKEN_POOLS = 332,
+ TOKEN_POOL = 333,
+ TOKEN_USER_CONTEXT = 334,
+ TOKEN_COMMENT = 335,
+ TOKEN_SUBNET = 336,
+ TOKEN_INTERFACE = 337,
+ TOKEN_ID = 338,
+ TOKEN_RESERVATION_MODE = 339,
+ TOKEN_DISABLED = 340,
+ TOKEN_OUT_OF_POOL = 341,
+ TOKEN_GLOBAL = 342,
+ TOKEN_ALL = 343,
+ TOKEN_HOST_RESERVATION_IDENTIFIERS = 344,
+ TOKEN_CLIENT_CLASSES = 345,
+ TOKEN_REQUIRE_CLIENT_CLASSES = 346,
+ TOKEN_TEST = 347,
+ TOKEN_ONLY_IF_REQUIRED = 348,
+ TOKEN_CLIENT_CLASS = 349,
+ TOKEN_RESERVATIONS = 350,
+ TOKEN_DUID = 351,
+ TOKEN_HW_ADDRESS = 352,
+ TOKEN_CIRCUIT_ID = 353,
+ TOKEN_CLIENT_ID = 354,
+ TOKEN_HOSTNAME = 355,
+ TOKEN_FLEX_ID = 356,
+ TOKEN_RELAY = 357,
+ TOKEN_IP_ADDRESS = 358,
+ TOKEN_IP_ADDRESSES = 359,
+ TOKEN_HOOKS_LIBRARIES = 360,
+ TOKEN_LIBRARY = 361,
+ TOKEN_PARAMETERS = 362,
+ TOKEN_EXPIRED_LEASES_PROCESSING = 363,
+ TOKEN_RECLAIM_TIMER_WAIT_TIME = 364,
+ TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 365,
+ TOKEN_HOLD_RECLAIMED_TIME = 366,
+ TOKEN_MAX_RECLAIM_LEASES = 367,
+ TOKEN_MAX_RECLAIM_TIME = 368,
+ TOKEN_UNWARNED_RECLAIM_CYCLES = 369,
+ TOKEN_DHCP4O6_PORT = 370,
+ TOKEN_CONTROL_SOCKET = 371,
+ TOKEN_SOCKET_TYPE = 372,
+ TOKEN_SOCKET_NAME = 373,
+ TOKEN_DHCP_QUEUE_CONTROL = 374,
+ TOKEN_DHCP_DDNS = 375,
+ TOKEN_ENABLE_UPDATES = 376,
+ TOKEN_QUALIFYING_SUFFIX = 377,
+ TOKEN_SERVER_IP = 378,
+ TOKEN_SERVER_PORT = 379,
+ TOKEN_SENDER_IP = 380,
+ TOKEN_SENDER_PORT = 381,
+ TOKEN_MAX_QUEUE_SIZE = 382,
+ TOKEN_NCR_PROTOCOL = 383,
+ TOKEN_NCR_FORMAT = 384,
+ TOKEN_OVERRIDE_NO_UPDATE = 385,
+ TOKEN_OVERRIDE_CLIENT_UPDATE = 386,
+ TOKEN_REPLACE_CLIENT_NAME = 387,
+ TOKEN_GENERATED_PREFIX = 388,
+ TOKEN_TCP = 389,
+ TOKEN_JSON = 390,
+ TOKEN_WHEN_PRESENT = 391,
+ TOKEN_NEVER = 392,
+ TOKEN_ALWAYS = 393,
+ TOKEN_WHEN_NOT_PRESENT = 394,
+ TOKEN_HOSTNAME_CHAR_SET = 395,
+ TOKEN_HOSTNAME_CHAR_REPLACEMENT = 396,
+ TOKEN_LOGGING = 397,
+ TOKEN_LOGGERS = 398,
+ TOKEN_OUTPUT_OPTIONS = 399,
+ TOKEN_OUTPUT = 400,
+ TOKEN_DEBUGLEVEL = 401,
+ TOKEN_SEVERITY = 402,
+ TOKEN_FLUSH = 403,
+ TOKEN_MAXSIZE = 404,
+ TOKEN_MAXVER = 405,
+ TOKEN_DHCP6 = 406,
+ TOKEN_DHCPDDNS = 407,
+ TOKEN_CONTROL_AGENT = 408,
+ TOKEN_TOPLEVEL_JSON = 409,
+ TOKEN_TOPLEVEL_DHCP4 = 410,
+ TOKEN_SUB_DHCP4 = 411,
+ TOKEN_SUB_INTERFACES4 = 412,
+ TOKEN_SUB_SUBNET4 = 413,
+ TOKEN_SUB_POOL4 = 414,
+ TOKEN_SUB_RESERVATION = 415,
+ TOKEN_SUB_OPTION_DEFS = 416,
+ TOKEN_SUB_OPTION_DEF = 417,
+ TOKEN_SUB_OPTION_DATA = 418,
+ TOKEN_SUB_HOOKS_LIBRARY = 419,
+ TOKEN_SUB_DHCP_DDNS = 420,
+ TOKEN_SUB_LOGGING = 421,
+ TOKEN_SUB_CONFIG_CONTROL = 422,
+ TOKEN_STRING = 423,
+ TOKEN_INTEGER = 424,
+ TOKEN_FLOAT = 425,
+ TOKEN_BOOLEAN = 426
};
};
/// A complete symbol.
///
/// Expects its Base type to provide access to the symbol type
- /// via type_get ().
+ /// via type_get().
///
/// Provide access to semantic value and location.
template <typename Base>
/// Default constructor.
basic_symbol ();
- /// Move or copy constructor.
- basic_symbol (YY_RVREF (basic_symbol) other);
-
+ /// Copy constructor.
+ basic_symbol (const basic_symbol& other);
/// Constructor for valueless symbols, and symbols from each type.
-# if 201103L <= YY_CPLUSPLUS
- basic_symbol (typename Base::kind_type t, location_type&& l);
-#else
- basic_symbol (typename Base::kind_type t, const location_type& l);
-#endif
-# if 201103L <= YY_CPLUSPLUS
- basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l);
-#else
- basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l);
-#endif
-# if 201103L <= YY_CPLUSPLUS
- basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l);
-#else
- basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l);
-#endif
-# if 201103L <= YY_CPLUSPLUS
- basic_symbol (typename Base::kind_type t, double&& v, location_type&& l);
-#else
- basic_symbol (typename Base::kind_type t, const double& v, const location_type& l);
-#endif
-# if 201103L <= YY_CPLUSPLUS
- basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l);
-#else
- basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l);
-#endif
-# if 201103L <= YY_CPLUSPLUS
- basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l);
-#else
- basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l);
-#endif
+
+ basic_symbol (typename Base::kind_type t, const location_type& l);
+
+ basic_symbol (typename Base::kind_type t, const ElementPtr v, const location_type& l);
+
+ basic_symbol (typename Base::kind_type t, const bool v, const location_type& l);
+
+ basic_symbol (typename Base::kind_type t, const double v, const location_type& l);
+
+ basic_symbol (typename Base::kind_type t, const int64_t v, const location_type& l);
+
+ basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l);
+ /// Constructor for symbols with semantic value.
+ basic_symbol (typename Base::kind_type t,
+ const semantic_type& v,
+ const location_type& l);
+
/// Destroy the symbol.
~basic_symbol ();
location_type location;
private:
-#if YY_CPLUSPLUS < 201103L
/// Assignment operator.
basic_symbol& operator= (const basic_symbol& other);
-#endif
};
/// Type access provider for token (enum) based symbols.
/// "External" symbols: returned by the scanner.
typedef basic_symbol<by_type> symbol_type;
- /// Build a parser object.
- Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg);
- virtual ~Dhcp4Parser ();
-
- /// Parse. An alias for parse ().
- /// \returns 0 iff parsing succeeded.
- int operator() ();
-
- /// Parse.
- /// \returns 0 iff parsing succeeded.
- virtual int parse ();
-
-#if PARSER4_DEBUG
- /// The current debugging stream.
- std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
- /// Set the current debugging stream.
- void set_debug_stream (std::ostream &);
-
- /// Type for debugging levels.
- typedef int debug_level_type;
- /// The current debugging level.
- debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
- /// Set the current debugging level.
- void set_debug_level (debug_level_type l);
-#endif
+ // Symbol constructors declarations.
+ static inline
+ symbol_type
+ make_END (const location_type& l);
- /// Report a syntax error.
- /// \param loc where the syntax error is found.
- /// \param msg a description of the syntax error.
- virtual void error (const location_type& loc, const std::string& msg);
+ static inline
+ symbol_type
+ make_COMMA (const location_type& l);
- /// Report a syntax error.
- void error (const syntax_error& err);
+ static inline
+ symbol_type
+ make_COLON (const location_type& l);
- // Symbol constructors declarations.
- static
+ static inline
symbol_type
- make_END (YY_COPY (location_type) l);
+ make_LSQUARE_BRACKET (const location_type& l);
- static
+ static inline
symbol_type
- make_COMMA (YY_COPY (location_type) l);
+ make_RSQUARE_BRACKET (const location_type& l);
- static
+ static inline
symbol_type
- make_COLON (YY_COPY (location_type) l);
+ make_LCURLY_BRACKET (const location_type& l);
- static
+ static inline
symbol_type
- make_LSQUARE_BRACKET (YY_COPY (location_type) l);
+ make_RCURLY_BRACKET (const location_type& l);
- static
+ static inline
symbol_type
- make_RSQUARE_BRACKET (YY_COPY (location_type) l);
+ make_NULL_TYPE (const location_type& l);
- static
+ static inline
symbol_type
- make_LCURLY_BRACKET (YY_COPY (location_type) l);
+ make_DHCP4 (const location_type& l);
- static
+ static inline
symbol_type
- make_RCURLY_BRACKET (YY_COPY (location_type) l);
+ make_CONFIG_CONTROL (const location_type& l);
- static
+ static inline
symbol_type
- make_NULL_TYPE (YY_COPY (location_type) l);
+ make_CONFIG_DATABASES (const location_type& l);
- static
+ static inline
symbol_type
- make_DHCP4 (YY_COPY (location_type) l);
+ make_INTERFACES_CONFIG (const location_type& l);
- static
+ static inline
symbol_type
- make_CONFIG_CONTROL (YY_COPY (location_type) l);
+ make_INTERFACES (const location_type& l);
- static
+ static inline
symbol_type
- make_CONFIG_DATABASES (YY_COPY (location_type) l);
+ make_DHCP_SOCKET_TYPE (const location_type& l);
- static
+ static inline
symbol_type
- make_INTERFACES_CONFIG (YY_COPY (location_type) l);
+ make_RAW (const location_type& l);
- static
+ static inline
symbol_type
- make_INTERFACES (YY_COPY (location_type) l);
+ make_UDP (const location_type& l);
- static
+ static inline
symbol_type
- make_DHCP_SOCKET_TYPE (YY_COPY (location_type) l);
+ make_OUTBOUND_INTERFACE (const location_type& l);
- static
+ static inline
symbol_type
- make_RAW (YY_COPY (location_type) l);
+ make_SAME_AS_INBOUND (const location_type& l);
- static
+ static inline
symbol_type
- make_UDP (YY_COPY (location_type) l);
+ make_USE_ROUTING (const location_type& l);
- static
+ static inline
symbol_type
- make_OUTBOUND_INTERFACE (YY_COPY (location_type) l);
+ make_RE_DETECT (const location_type& l);
- static
+ static inline
symbol_type
- make_SAME_AS_INBOUND (YY_COPY (location_type) l);
+ make_SANITY_CHECKS (const location_type& l);
- static
+ static inline
symbol_type
- make_USE_ROUTING (YY_COPY (location_type) l);
+ make_LEASE_CHECKS (const location_type& l);
- static
+ static inline
symbol_type
- make_RE_DETECT (YY_COPY (location_type) l);
+ make_ECHO_CLIENT_ID (const location_type& l);
- static
+ static inline
symbol_type
- make_SANITY_CHECKS (YY_COPY (location_type) l);
+ make_MATCH_CLIENT_ID (const location_type& l);
- static
+ static inline
symbol_type
- make_LEASE_CHECKS (YY_COPY (location_type) l);
+ make_AUTHORITATIVE (const location_type& l);
- static
+ static inline
symbol_type
- make_ECHO_CLIENT_ID (YY_COPY (location_type) l);
+ make_NEXT_SERVER (const location_type& l);
- static
+ static inline
symbol_type
- make_MATCH_CLIENT_ID (YY_COPY (location_type) l);
+ make_SERVER_HOSTNAME (const location_type& l);
- static
+ static inline
symbol_type
- make_AUTHORITATIVE (YY_COPY (location_type) l);
+ make_BOOT_FILE_NAME (const location_type& l);
- static
+ static inline
symbol_type
- make_NEXT_SERVER (YY_COPY (location_type) l);
+ make_LEASE_DATABASE (const location_type& l);
- static
+ static inline
symbol_type
- make_SERVER_HOSTNAME (YY_COPY (location_type) l);
+ make_HOSTS_DATABASE (const location_type& l);
- static
+ static inline
symbol_type
- make_BOOT_FILE_NAME (YY_COPY (location_type) l);
+ make_HOSTS_DATABASES (const location_type& l);
- static
+ static inline
symbol_type
- make_LEASE_DATABASE (YY_COPY (location_type) l);
+ make_TYPE (const location_type& l);
- static
+ static inline
symbol_type
- make_HOSTS_DATABASE (YY_COPY (location_type) l);
+ make_MEMFILE (const location_type& l);
- static
+ static inline
symbol_type
- make_HOSTS_DATABASES (YY_COPY (location_type) l);
+ make_MYSQL (const location_type& l);
- static
+ static inline
symbol_type
- make_TYPE (YY_COPY (location_type) l);
+ make_POSTGRESQL (const location_type& l);
- static
+ static inline
symbol_type
- make_MEMFILE (YY_COPY (location_type) l);
+ make_CQL (const location_type& l);
- static
+ static inline
symbol_type
- make_MYSQL (YY_COPY (location_type) l);
+ make_USER (const location_type& l);
- static
+ static inline
symbol_type
- make_POSTGRESQL (YY_COPY (location_type) l);
+ make_PASSWORD (const location_type& l);
- static
+ static inline
symbol_type
- make_CQL (YY_COPY (location_type) l);
+ make_HOST (const location_type& l);
- static
+ static inline
symbol_type
- make_USER (YY_COPY (location_type) l);
+ make_PORT (const location_type& l);
- static
+ static inline
symbol_type
- make_PASSWORD (YY_COPY (location_type) l);
+ make_PERSIST (const location_type& l);
- static
+ static inline
symbol_type
- make_HOST (YY_COPY (location_type) l);
+ make_LFC_INTERVAL (const location_type& l);
- static
+ static inline
symbol_type
- make_PORT (YY_COPY (location_type) l);
+ make_READONLY (const location_type& l);
- static
+ static inline
symbol_type
- make_PERSIST (YY_COPY (location_type) l);
+ make_CONNECT_TIMEOUT (const location_type& l);
- static
+ static inline
symbol_type
- make_LFC_INTERVAL (YY_COPY (location_type) l);
+ make_CONTACT_POINTS (const location_type& l);
- static
+ static inline
symbol_type
- make_READONLY (YY_COPY (location_type) l);
+ make_KEYSPACE (const location_type& l);
- static
+ static inline
symbol_type
- make_CONNECT_TIMEOUT (YY_COPY (location_type) l);
+ make_MAX_RECONNECT_TRIES (const location_type& l);
- static
+ static inline
symbol_type
- make_CONTACT_POINTS (YY_COPY (location_type) l);
+ make_RECONNECT_WAIT_TIME (const location_type& l);
- static
+ static inline
symbol_type
- make_KEYSPACE (YY_COPY (location_type) l);
+ make_REQUEST_TIMEOUT (const location_type& l);
- static
+ static inline
symbol_type
- make_MAX_RECONNECT_TRIES (YY_COPY (location_type) l);
+ make_TCP_KEEPALIVE (const location_type& l);
- static
+ static inline
symbol_type
- make_RECONNECT_WAIT_TIME (YY_COPY (location_type) l);
+ make_TCP_NODELAY (const location_type& l);
- static
+ static inline
symbol_type
- make_REQUEST_TIMEOUT (YY_COPY (location_type) l);
+ make_VALID_LIFETIME (const location_type& l);
- static
+ static inline
symbol_type
- make_TCP_KEEPALIVE (YY_COPY (location_type) l);
+ make_RENEW_TIMER (const location_type& l);
- static
+ static inline
symbol_type
- make_TCP_NODELAY (YY_COPY (location_type) l);
+ make_REBIND_TIMER (const location_type& l);
- static
+ static inline
symbol_type
- make_VALID_LIFETIME (YY_COPY (location_type) l);
+ make_DECLINE_PROBATION_PERIOD (const location_type& l);
- static
+ static inline
symbol_type
- make_RENEW_TIMER (YY_COPY (location_type) l);
+ make_SERVER_TAG (const location_type& l);
- static
+ static inline
symbol_type
- make_REBIND_TIMER (YY_COPY (location_type) l);
+ make_SUBNET4 (const location_type& l);
- static
+ static inline
symbol_type
- make_DECLINE_PROBATION_PERIOD (YY_COPY (location_type) l);
+ make_SUBNET_4O6_INTERFACE (const location_type& l);
- static
+ static inline
symbol_type
- make_SERVER_TAG (YY_COPY (location_type) l);
+ make_SUBNET_4O6_INTERFACE_ID (const location_type& l);
- static
+ static inline
symbol_type
- make_SUBNET4 (YY_COPY (location_type) l);
+ make_SUBNET_4O6_SUBNET (const location_type& l);
- static
+ static inline
symbol_type
- make_SUBNET_4O6_INTERFACE (YY_COPY (location_type) l);
+ make_OPTION_DEF (const location_type& l);
- static
+ static inline
symbol_type
- make_SUBNET_4O6_INTERFACE_ID (YY_COPY (location_type) l);
+ make_OPTION_DATA (const location_type& l);
- static
+ static inline
symbol_type
- make_SUBNET_4O6_SUBNET (YY_COPY (location_type) l);
+ make_NAME (const location_type& l);
- static
+ static inline
symbol_type
- make_OPTION_DEF (YY_COPY (location_type) l);
+ make_DATA (const location_type& l);
- static
+ static inline
symbol_type
- make_OPTION_DATA (YY_COPY (location_type) l);
+ make_CODE (const location_type& l);
- static
+ static inline
symbol_type
- make_NAME (YY_COPY (location_type) l);
+ make_SPACE (const location_type& l);
- static
+ static inline
symbol_type
- make_DATA (YY_COPY (location_type) l);
+ make_CSV_FORMAT (const location_type& l);
- static
+ static inline
symbol_type
- make_CODE (YY_COPY (location_type) l);
+ make_ALWAYS_SEND (const location_type& l);
- static
+ static inline
symbol_type
- make_SPACE (YY_COPY (location_type) l);
+ make_RECORD_TYPES (const location_type& l);
- static
+ static inline
symbol_type
- make_CSV_FORMAT (YY_COPY (location_type) l);
+ make_ENCAPSULATE (const location_type& l);
- static
+ static inline
symbol_type
- make_ALWAYS_SEND (YY_COPY (location_type) l);
+ make_ARRAY (const location_type& l);
- static
+ static inline
symbol_type
- make_RECORD_TYPES (YY_COPY (location_type) l);
+ make_CALCULATE_TEE_TIMES (const location_type& l);
- static
+ static inline
symbol_type
- make_ENCAPSULATE (YY_COPY (location_type) l);
+ make_T1_PERCENT (const location_type& l);
- static
+ static inline
symbol_type
- make_ARRAY (YY_COPY (location_type) l);
+ make_T2_PERCENT (const location_type& l);
- static
+ static inline
symbol_type
- make_SHARED_NETWORKS (YY_COPY (location_type) l);
+ make_SHARED_NETWORKS (const location_type& l);
- static
+ static inline
symbol_type
- make_POOLS (YY_COPY (location_type) l);
+ make_POOLS (const location_type& l);
- static
+ static inline
symbol_type
- make_POOL (YY_COPY (location_type) l);
+ make_POOL (const location_type& l);
- static
+ static inline
symbol_type
- make_USER_CONTEXT (YY_COPY (location_type) l);
+ make_USER_CONTEXT (const location_type& l);
- static
+ static inline
symbol_type
- make_COMMENT (YY_COPY (location_type) l);
+ make_COMMENT (const location_type& l);
- static
+ static inline
symbol_type
- make_SUBNET (YY_COPY (location_type) l);
+ make_SUBNET (const location_type& l);
- static
+ static inline
symbol_type
- make_INTERFACE (YY_COPY (location_type) l);
+ make_INTERFACE (const location_type& l);
- static
+ static inline
symbol_type
- make_ID (YY_COPY (location_type) l);
+ make_ID (const location_type& l);
- static
+ static inline
symbol_type
- make_RESERVATION_MODE (YY_COPY (location_type) l);
+ make_RESERVATION_MODE (const location_type& l);
- static
+ static inline
symbol_type
- make_DISABLED (YY_COPY (location_type) l);
+ make_DISABLED (const location_type& l);
- static
+ static inline
symbol_type
- make_OUT_OF_POOL (YY_COPY (location_type) l);
+ make_OUT_OF_POOL (const location_type& l);
- static
+ static inline
symbol_type
- make_GLOBAL (YY_COPY (location_type) l);
+ make_GLOBAL (const location_type& l);
- static
+ static inline
symbol_type
- make_ALL (YY_COPY (location_type) l);
+ make_ALL (const location_type& l);
- static
+ static inline
symbol_type
- make_HOST_RESERVATION_IDENTIFIERS (YY_COPY (location_type) l);
+ make_HOST_RESERVATION_IDENTIFIERS (const location_type& l);
- static
+ static inline
symbol_type
- make_CLIENT_CLASSES (YY_COPY (location_type) l);
+ make_CLIENT_CLASSES (const location_type& l);
- static
+ static inline
symbol_type
- make_REQUIRE_CLIENT_CLASSES (YY_COPY (location_type) l);
+ make_REQUIRE_CLIENT_CLASSES (const location_type& l);
- static
+ static inline
symbol_type
- make_TEST (YY_COPY (location_type) l);
+ make_TEST (const location_type& l);
- static
+ static inline
symbol_type
- make_ONLY_IF_REQUIRED (YY_COPY (location_type) l);
+ make_ONLY_IF_REQUIRED (const location_type& l);
- static
+ static inline
symbol_type
- make_CLIENT_CLASS (YY_COPY (location_type) l);
+ make_CLIENT_CLASS (const location_type& l);
- static
+ static inline
symbol_type
- make_RESERVATIONS (YY_COPY (location_type) l);
+ make_RESERVATIONS (const location_type& l);
- static
+ static inline
symbol_type
- make_DUID (YY_COPY (location_type) l);
+ make_DUID (const location_type& l);
- static
+ static inline
symbol_type
- make_HW_ADDRESS (YY_COPY (location_type) l);
+ make_HW_ADDRESS (const location_type& l);
- static
+ static inline
symbol_type
- make_CIRCUIT_ID (YY_COPY (location_type) l);
+ make_CIRCUIT_ID (const location_type& l);
- static
+ static inline
symbol_type
- make_CLIENT_ID (YY_COPY (location_type) l);
+ make_CLIENT_ID (const location_type& l);
- static
+ static inline
symbol_type
- make_HOSTNAME (YY_COPY (location_type) l);
+ make_HOSTNAME (const location_type& l);
- static
+ static inline
symbol_type
- make_FLEX_ID (YY_COPY (location_type) l);
+ make_FLEX_ID (const location_type& l);
- static
+ static inline
symbol_type
- make_RELAY (YY_COPY (location_type) l);
+ make_RELAY (const location_type& l);
- static
+ static inline
symbol_type
- make_IP_ADDRESS (YY_COPY (location_type) l);
+ make_IP_ADDRESS (const location_type& l);
- static
+ static inline
symbol_type
- make_IP_ADDRESSES (YY_COPY (location_type) l);
+ make_IP_ADDRESSES (const location_type& l);
- static
+ static inline
symbol_type
- make_HOOKS_LIBRARIES (YY_COPY (location_type) l);
+ make_HOOKS_LIBRARIES (const location_type& l);
- static
+ static inline
symbol_type
- make_LIBRARY (YY_COPY (location_type) l);
+ make_LIBRARY (const location_type& l);
- static
+ static inline
symbol_type
- make_PARAMETERS (YY_COPY (location_type) l);
+ make_PARAMETERS (const location_type& l);
- static
+ static inline
symbol_type
- make_EXPIRED_LEASES_PROCESSING (YY_COPY (location_type) l);
+ make_EXPIRED_LEASES_PROCESSING (const location_type& l);
- static
+ static inline
symbol_type
- make_RECLAIM_TIMER_WAIT_TIME (YY_COPY (location_type) l);
+ make_RECLAIM_TIMER_WAIT_TIME (const location_type& l);
- static
+ static inline
symbol_type
- make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (YY_COPY (location_type) l);
+ make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l);
- static
+ static inline
symbol_type
- make_HOLD_RECLAIMED_TIME (YY_COPY (location_type) l);
+ make_HOLD_RECLAIMED_TIME (const location_type& l);
- static
+ static inline
symbol_type
- make_MAX_RECLAIM_LEASES (YY_COPY (location_type) l);
+ make_MAX_RECLAIM_LEASES (const location_type& l);
- static
+ static inline
symbol_type
- make_MAX_RECLAIM_TIME (YY_COPY (location_type) l);
+ make_MAX_RECLAIM_TIME (const location_type& l);
- static
+ static inline
symbol_type
- make_UNWARNED_RECLAIM_CYCLES (YY_COPY (location_type) l);
+ make_UNWARNED_RECLAIM_CYCLES (const location_type& l);
- static
+ static inline
symbol_type
- make_DHCP4O6_PORT (YY_COPY (location_type) l);
+ make_DHCP4O6_PORT (const location_type& l);
- static
+ static inline
symbol_type
- make_CONTROL_SOCKET (YY_COPY (location_type) l);
+ make_CONTROL_SOCKET (const location_type& l);
- static
+ static inline
symbol_type
- make_SOCKET_TYPE (YY_COPY (location_type) l);
+ make_SOCKET_TYPE (const location_type& l);
- static
+ static inline
symbol_type
- make_SOCKET_NAME (YY_COPY (location_type) l);
+ make_SOCKET_NAME (const location_type& l);
- static
+ static inline
symbol_type
- make_DHCP_QUEUE_CONTROL (YY_COPY (location_type) l);
+ make_DHCP_QUEUE_CONTROL (const location_type& l);
- static
+ static inline
symbol_type
- make_DHCP_DDNS (YY_COPY (location_type) l);
+ make_DHCP_DDNS (const location_type& l);
- static
+ static inline
symbol_type
- make_ENABLE_UPDATES (YY_COPY (location_type) l);
+ make_ENABLE_UPDATES (const location_type& l);
- static
+ static inline
symbol_type
- make_QUALIFYING_SUFFIX (YY_COPY (location_type) l);
+ make_QUALIFYING_SUFFIX (const location_type& l);
- static
+ static inline
symbol_type
- make_SERVER_IP (YY_COPY (location_type) l);
+ make_SERVER_IP (const location_type& l);
- static
+ static inline
symbol_type
- make_SERVER_PORT (YY_COPY (location_type) l);
+ make_SERVER_PORT (const location_type& l);
- static
+ static inline
symbol_type
- make_SENDER_IP (YY_COPY (location_type) l);
+ make_SENDER_IP (const location_type& l);
- static
+ static inline
symbol_type
- make_SENDER_PORT (YY_COPY (location_type) l);
+ make_SENDER_PORT (const location_type& l);
- static
+ static inline
symbol_type
- make_MAX_QUEUE_SIZE (YY_COPY (location_type) l);
+ make_MAX_QUEUE_SIZE (const location_type& l);
- static
+ static inline
symbol_type
- make_NCR_PROTOCOL (YY_COPY (location_type) l);
+ make_NCR_PROTOCOL (const location_type& l);
- static
+ static inline
symbol_type
- make_NCR_FORMAT (YY_COPY (location_type) l);
+ make_NCR_FORMAT (const location_type& l);
- static
+ static inline
symbol_type
- make_OVERRIDE_NO_UPDATE (YY_COPY (location_type) l);
+ make_OVERRIDE_NO_UPDATE (const location_type& l);
- static
+ static inline
symbol_type
- make_OVERRIDE_CLIENT_UPDATE (YY_COPY (location_type) l);
+ make_OVERRIDE_CLIENT_UPDATE (const location_type& l);
- static
+ static inline
symbol_type
- make_REPLACE_CLIENT_NAME (YY_COPY (location_type) l);
+ make_REPLACE_CLIENT_NAME (const location_type& l);
- static
+ static inline
symbol_type
- make_GENERATED_PREFIX (YY_COPY (location_type) l);
+ make_GENERATED_PREFIX (const location_type& l);
- static
+ static inline
symbol_type
- make_TCP (YY_COPY (location_type) l);
+ make_TCP (const location_type& l);
- static
+ static inline
symbol_type
- make_JSON (YY_COPY (location_type) l);
+ make_JSON (const location_type& l);
- static
+ static inline
symbol_type
- make_WHEN_PRESENT (YY_COPY (location_type) l);
+ make_WHEN_PRESENT (const location_type& l);
- static
+ static inline
symbol_type
- make_NEVER (YY_COPY (location_type) l);
+ make_NEVER (const location_type& l);
- static
+ static inline
symbol_type
- make_ALWAYS (YY_COPY (location_type) l);
+ make_ALWAYS (const location_type& l);
- static
+ static inline
symbol_type
- make_WHEN_NOT_PRESENT (YY_COPY (location_type) l);
+ make_WHEN_NOT_PRESENT (const location_type& l);
- static
+ static inline
symbol_type
- make_HOSTNAME_CHAR_SET (YY_COPY (location_type) l);
+ make_HOSTNAME_CHAR_SET (const location_type& l);
- static
+ static inline
symbol_type
- make_HOSTNAME_CHAR_REPLACEMENT (YY_COPY (location_type) l);
+ make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l);
- static
+ static inline
symbol_type
- make_LOGGING (YY_COPY (location_type) l);
+ make_LOGGING (const location_type& l);
- static
+ static inline
symbol_type
- make_LOGGERS (YY_COPY (location_type) l);
+ make_LOGGERS (const location_type& l);
- static
+ static inline
symbol_type
- make_OUTPUT_OPTIONS (YY_COPY (location_type) l);
+ make_OUTPUT_OPTIONS (const location_type& l);
- static
+ static inline
symbol_type
- make_OUTPUT (YY_COPY (location_type) l);
+ make_OUTPUT (const location_type& l);
- static
+ static inline
symbol_type
- make_DEBUGLEVEL (YY_COPY (location_type) l);
+ make_DEBUGLEVEL (const location_type& l);
- static
+ static inline
symbol_type
- make_SEVERITY (YY_COPY (location_type) l);
+ make_SEVERITY (const location_type& l);
- static
+ static inline
symbol_type
- make_FLUSH (YY_COPY (location_type) l);
+ make_FLUSH (const location_type& l);
- static
+ static inline
symbol_type
- make_MAXSIZE (YY_COPY (location_type) l);
+ make_MAXSIZE (const location_type& l);
- static
+ static inline
symbol_type
- make_MAXVER (YY_COPY (location_type) l);
+ make_MAXVER (const location_type& l);
- static
+ static inline
symbol_type
- make_DHCP6 (YY_COPY (location_type) l);
+ make_DHCP6 (const location_type& l);
- static
+ static inline
symbol_type
- make_DHCPDDNS (YY_COPY (location_type) l);
+ make_DHCPDDNS (const location_type& l);
- static
+ static inline
symbol_type
- make_CONTROL_AGENT (YY_COPY (location_type) l);
+ make_CONTROL_AGENT (const location_type& l);
- static
+ static inline
symbol_type
- make_TOPLEVEL_JSON (YY_COPY (location_type) l);
+ make_TOPLEVEL_JSON (const location_type& l);
- static
+ static inline
symbol_type
- make_TOPLEVEL_DHCP4 (YY_COPY (location_type) l);
+ make_TOPLEVEL_DHCP4 (const location_type& l);
- static
+ static inline
symbol_type
- make_SUB_DHCP4 (YY_COPY (location_type) l);
+ make_SUB_DHCP4 (const location_type& l);
- static
+ static inline
symbol_type
- make_SUB_INTERFACES4 (YY_COPY (location_type) l);
+ make_SUB_INTERFACES4 (const location_type& l);
- static
+ static inline
symbol_type
- make_SUB_SUBNET4 (YY_COPY (location_type) l);
+ make_SUB_SUBNET4 (const location_type& l);
- static
+ static inline
symbol_type
- make_SUB_POOL4 (YY_COPY (location_type) l);
+ make_SUB_POOL4 (const location_type& l);
- static
+ static inline
symbol_type
- make_SUB_RESERVATION (YY_COPY (location_type) l);
+ make_SUB_RESERVATION (const location_type& l);
- static
+ static inline
symbol_type
- make_SUB_OPTION_DEFS (YY_COPY (location_type) l);
+ make_SUB_OPTION_DEFS (const location_type& l);
- static
+ static inline
symbol_type
- make_SUB_OPTION_DEF (YY_COPY (location_type) l);
+ make_SUB_OPTION_DEF (const location_type& l);
- static
+ static inline
symbol_type
- make_SUB_OPTION_DATA (YY_COPY (location_type) l);
+ make_SUB_OPTION_DATA (const location_type& l);
- static
+ static inline
symbol_type
- make_SUB_HOOKS_LIBRARY (YY_COPY (location_type) l);
+ make_SUB_HOOKS_LIBRARY (const location_type& l);
- static
+ static inline
symbol_type
- make_SUB_DHCP_DDNS (YY_COPY (location_type) l);
+ make_SUB_DHCP_DDNS (const location_type& l);
- static
+ static inline
symbol_type
- make_SUB_LOGGING (YY_COPY (location_type) l);
+ make_SUB_LOGGING (const location_type& l);
- static
+ static inline
symbol_type
- make_SUB_CONFIG_CONTROL (YY_COPY (location_type) l);
+ make_SUB_CONFIG_CONTROL (const location_type& l);
- static
+ static inline
symbol_type
- make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l);
+ make_STRING (const std::string& v, const location_type& l);
- static
+ static inline
symbol_type
- make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l);
+ make_INTEGER (const int64_t& v, const location_type& l);
- static
+ static inline
symbol_type
- make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l);
+ make_FLOAT (const double& v, const location_type& l);
- static
+ static inline
symbol_type
- make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l);
+ make_BOOLEAN (const bool& v, const location_type& l);
+
+
+ /// Build a parser object.
+ Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg);
+ virtual ~Dhcp4Parser ();
+
+ /// Parse.
+ /// \returns 0 iff parsing succeeded.
+ virtual int parse ();
+
+#if PARSER4_DEBUG
+ /// The current debugging stream.
+ std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
+ /// Set the current debugging stream.
+ void set_debug_stream (std::ostream &);
+
+ /// Type for debugging levels.
+ typedef int debug_level_type;
+ /// The current debugging level.
+ debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
+ /// Set the current debugging level.
+ void set_debug_level (debug_level_type l);
+#endif
+ /// Report a syntax error.
+ /// \param loc where the syntax error is found.
+ /// \param msg a description of the syntax error.
+ virtual void error (const location_type& loc, const std::string& msg);
+ /// Report a syntax error.
+ void error (const syntax_error& err);
private:
/// This class is not copyable.
/// \param yyvalue the value to check
static bool yy_table_value_is_error_ (int yyvalue);
- static const short yypact_ninf_;
+ static const short int yypact_ninf_;
static const signed char yytable_ninf_;
/// Convert a scanner token number \a t to a symbol number.
// Tables.
// YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
// STATE-NUM.
- static const short yypact_[];
+ static const short int yypact_[];
// YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
// Performed when YYTABLE does not specify something else to do. Zero
// means the default is an error.
- static const unsigned short yydefact_[];
+ static const unsigned short int yydefact_[];
// YYPGOTO[NTERM-NUM].
- static const short yypgoto_[];
+ static const short int yypgoto_[];
// YYDEFGOTO[NTERM-NUM].
- static const short yydefgoto_[];
+ static const short int yydefgoto_[];
// YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
// positive, shift that token. If negative, reduce the rule whose
// number is the opposite. If YYTABLE_NINF, syntax error.
- static const unsigned short yytable_[];
+ static const unsigned short int yytable_[];
- static const short yycheck_[];
+ static const short int yycheck_[];
// YYSTOS[STATE-NUM] -- The (internal number of the) accessing
// symbol of state STATE-NUM.
- static const unsigned short yystos_[];
+ static const unsigned short int yystos_[];
// YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
- static const unsigned short yyr1_[];
+ static const unsigned short int yyr1_[];
// YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
static const unsigned char yyr2_[];
static const char* const yytname_[];
#if PARSER4_DEBUG
// YYRLINE[YYN] -- Source line where rule number YYN was defined.
- static const unsigned short yyrline_[];
+ static const unsigned short int yyrline_[];
/// Report on the debug stream that the rule \a r is going to be reduced.
virtual void yy_reduce_print_ (int r);
/// Print the state stack on the debug stream.
virtual void yystack_print_ ();
- /// Debugging level.
+ // Debugging.
int yydebug_;
- /// Debug stream.
std::ostream* yycdebug_;
/// \brief Display a symbol type, value and location.
typedef basic_symbol<by_state> super_type;
/// Construct an empty symbol.
stack_symbol_type ();
- /// Move or copy construction.
- 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
- /// Assignment, needed by push_back by some old implementations.
- /// Moves the contents of that.
- stack_symbol_type& operator= (stack_symbol_type& that);
-#endif
+ stack_symbol_type (state_type s, symbol_type& sym);
+ /// Assignment, needed by push_back.
+ stack_symbol_type& operator= (const stack_symbol_type& that);
};
/// Stack type.
/// Push a new state on the stack.
/// \param m a debug message to display
/// if null, no trace is output.
- /// \param sym the symbol
+ /// \param s the symbol
/// \warning the contents of \a s.value is stolen.
- void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
+ void yypush_ (const char* m, stack_symbol_type& s);
/// Push a new look ahead token on the state on the stack.
/// \param m a debug message to display
/// if null, no trace is output.
/// \param s the state
/// \param sym the symbol (for its value and location).
- /// \warning the contents of \a sym.value is stolen.
- void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
+ /// \warning the contents of \a s.value is stolen.
+ void yypush_ (const char* m, state_type s, symbol_type& sym);
- /// Pop \a n symbols from the stack.
- void yypop_ (int n = 1);
+ /// Pop \a n symbols the three stacks.
+ void yypop_ (unsigned int n = 1);
/// Constants.
enum
{
yyeof_ = 0,
- yylast_ = 1000, ///< Last index in yytable_.
- yynnts_ = 373, ///< Number of nonterminal symbols.
+ yylast_ = 1026, ///< Last index in yytable_.
+ yynnts_ = 376, ///< Number of nonterminal symbols.
yyfinal_ = 30, ///< Termination state number.
yyterror_ = 1,
yyerrcode_ = 256,
- yyntokens_ = 169 ///< Number of tokens.
+ yyntokens_ = 172 ///< Number of tokens.
};
135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168
+ 165, 166, 167, 168, 169, 170, 171
};
- const unsigned user_token_number_max_ = 423;
+ const unsigned int user_token_number_max_ = 426;
const token_number_type undef_token_ = 2;
- if (static_cast<int> (t) <= yyeof_)
+ if (static_cast<int>(t) <= yyeof_)
return yyeof_;
- else if (static_cast<unsigned> (t) <= user_token_number_max_)
+ else if (static_cast<unsigned int> (t) <= user_token_number_max_)
return translate_table[t];
else
return undef_token_;
// basic_symbol.
template <typename Base>
+ inline
Dhcp4Parser::basic_symbol<Base>::basic_symbol ()
: value ()
- , location ()
{}
template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (YY_RVREF (basic_symbol) other)
- : Base (YY_MOVE (other))
+ inline
+ Dhcp4Parser::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
+ : Base (other)
, value ()
- , location (YY_MOVE (other.location))
+ , location (other.location)
{
- switch (other.type_get ())
+ switch (other.type_get ())
{
- case 185: // value
- case 189: // map_value
- case 230: // socket_type
- case 233: // outbound_interface_value
- case 255: // db_type
- case 337: // hr_mode
- case 486: // ncr_protocol_value
- case 493: // replace_client_name_value
- value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (other.value));
+ case 188: // value
+ case 192: // map_value
+ case 236: // socket_type
+ case 239: // outbound_interface_value
+ case 261: // db_type
+ case 343: // hr_mode
+ case 492: // ncr_protocol_value
+ case 499: // replace_client_name_value
+ value.copy< ElementPtr > (other.value);
break;
- case 168: // "boolean"
- value.YY_MOVE_OR_COPY< bool > (YY_MOVE (other.value));
+ case 171: // "boolean"
+ value.copy< bool > (other.value);
break;
- case 167: // "floating point"
- value.YY_MOVE_OR_COPY< double > (YY_MOVE (other.value));
+ case 170: // "floating point"
+ value.copy< double > (other.value);
break;
- case 166: // "integer"
- value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (other.value));
+ case 169: // "integer"
+ value.copy< int64_t > (other.value);
break;
- case 165: // "constant string"
- value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (other.value));
+ case 168: // "constant string"
+ value.copy< std::string > (other.value);
break;
default:
}
- // Implementation of basic_symbol constructor for each type.
-# if 201103L <= YY_CPLUSPLUS
template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, location_type&& l)
+ inline
+ Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l)
: Base (t)
- , location (std::move (l))
- {}
-#else
+ , value ()
+ , location (l)
+ {
+ (void) v;
+ switch (this->type_get ())
+ {
+ case 188: // value
+ case 192: // map_value
+ case 236: // socket_type
+ case 239: // outbound_interface_value
+ case 261: // db_type
+ case 343: // hr_mode
+ case 492: // ncr_protocol_value
+ case 499: // replace_client_name_value
+ value.copy< ElementPtr > (v);
+ break;
+
+ case 171: // "boolean"
+ value.copy< bool > (v);
+ break;
+
+ case 170: // "floating point"
+ value.copy< double > (v);
+ break;
+
+ case 169: // "integer"
+ value.copy< int64_t > (v);
+ break;
+
+ case 168: // "constant string"
+ value.copy< std::string > (v);
+ break;
+
+ default:
+ break;
+ }
+}
+
+
+ // Implementation of basic_symbol constructor for each type.
+
template <typename Base>
Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const location_type& l)
: Base (t)
+ , value ()
, location (l)
{}
-#endif
-# if 201103L <= YY_CPLUSPLUS
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
- : Base (t)
- , value (std::move (v))
- , location (std::move (l))
- {}
-#else
+
template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const ElementPtr& v, const location_type& l)
+ Dhcp4Parser::basic_symbol<Base>::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
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
- : Base (t)
- , value (std::move (v))
- , location (std::move (l))
- {}
-#else
+
template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const bool& v, const location_type& l)
+ Dhcp4Parser::basic_symbol<Base>::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
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
- : Base (t)
- , value (std::move (v))
- , location (std::move (l))
- {}
-#else
+
template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const double& v, const location_type& l)
+ Dhcp4Parser::basic_symbol<Base>::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
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
- : Base (t)
- , value (std::move (v))
- , location (std::move (l))
- {}
-#else
+
template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const int64_t& v, const location_type& l)
+ Dhcp4Parser::basic_symbol<Base>::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
- template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
- : Base (t)
- , value (std::move (v))
- , location (std::move (l))
- {}
-#else
+
template <typename Base>
- Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const std::string& v, const location_type& l)
+ Dhcp4Parser::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const std::string v, const location_type& l)
: Base (t)
, value (v)
, location (l)
{}
-#endif
template <typename Base>
+ inline
Dhcp4Parser::basic_symbol<Base>::~basic_symbol ()
{
clear ();
}
template <typename Base>
+ inline
void
Dhcp4Parser::basic_symbol<Base>::clear ()
{
}
// Type destructor.
- switch (yytype)
+ switch (yytype)
{
- case 185: // value
- case 189: // map_value
- case 230: // socket_type
- case 233: // outbound_interface_value
- case 255: // db_type
- case 337: // hr_mode
- case 486: // ncr_protocol_value
- case 493: // replace_client_name_value
+ case 188: // value
+ case 192: // map_value
+ case 236: // socket_type
+ case 239: // outbound_interface_value
+ case 261: // db_type
+ case 343: // hr_mode
+ case 492: // ncr_protocol_value
+ case 499: // replace_client_name_value
value.template destroy< ElementPtr > ();
break;
- case 168: // "boolean"
+ case 171: // "boolean"
value.template destroy< bool > ();
break;
- case 167: // "floating point"
+ case 170: // "floating point"
value.template destroy< double > ();
break;
- case 166: // "integer"
+ case 169: // "integer"
value.template destroy< int64_t > ();
break;
- case 165: // "constant string"
+ case 168: // "constant string"
value.template destroy< std::string > ();
break;
}
template <typename Base>
+ inline
bool
Dhcp4Parser::basic_symbol<Base>::empty () const
{
}
template <typename Base>
+ inline
void
Dhcp4Parser::basic_symbol<Base>::move (basic_symbol& s)
{
- super_type::move (s);
- switch (this->type_get ())
+ super_type::move(s);
+ switch (this->type_get ())
{
- case 185: // value
- case 189: // map_value
- case 230: // socket_type
- case 233: // outbound_interface_value
- case 255: // db_type
- case 337: // hr_mode
- case 486: // ncr_protocol_value
- case 493: // replace_client_name_value
- value.move< ElementPtr > (YY_MOVE (s.value));
+ case 188: // value
+ case 192: // map_value
+ case 236: // socket_type
+ case 239: // outbound_interface_value
+ case 261: // db_type
+ case 343: // hr_mode
+ case 492: // ncr_protocol_value
+ case 499: // replace_client_name_value
+ value.move< ElementPtr > (s.value);
break;
- case 168: // "boolean"
- value.move< bool > (YY_MOVE (s.value));
+ case 171: // "boolean"
+ value.move< bool > (s.value);
break;
- case 167: // "floating point"
- value.move< double > (YY_MOVE (s.value));
+ case 170: // "floating point"
+ value.move< double > (s.value);
break;
- case 166: // "integer"
- value.move< int64_t > (YY_MOVE (s.value));
+ case 169: // "integer"
+ value.move< int64_t > (s.value);
break;
- case 165: // "constant string"
- value.move< std::string > (YY_MOVE (s.value));
+ case 168: // "constant string"
+ value.move< std::string > (s.value);
break;
default:
break;
}
- location = YY_MOVE (s.location);
+ location = s.location;
}
// by_type.
// YYTOKNUM[NUM] -- (External) token number corresponding to the
// (internal) symbol number NUM (which must be that of a token). */
static
- const unsigned short
+ const unsigned short int
yytoken_number_[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
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
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426
};
return static_cast<token_type> (yytoken_number_[type]);
}
-
// Implementation of make_symbol for each symbol type.
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_END (YY_COPY (location_type) l)
+ Dhcp4Parser::make_END (const location_type& l)
{
- return symbol_type (token::TOKEN_END, YY_MOVE (l));
+ return symbol_type (token::TOKEN_END, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_COMMA (YY_COPY (location_type) l)
+ Dhcp4Parser::make_COMMA (const location_type& l)
{
- return symbol_type (token::TOKEN_COMMA, YY_MOVE (l));
+ return symbol_type (token::TOKEN_COMMA, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_COLON (YY_COPY (location_type) l)
+ Dhcp4Parser::make_COLON (const location_type& l)
{
- return symbol_type (token::TOKEN_COLON, YY_MOVE (l));
+ return symbol_type (token::TOKEN_COLON, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LSQUARE_BRACKET (YY_COPY (location_type) l)
+ Dhcp4Parser::make_LSQUARE_BRACKET (const location_type& l)
{
- return symbol_type (token::TOKEN_LSQUARE_BRACKET, YY_MOVE (l));
+ return symbol_type (token::TOKEN_LSQUARE_BRACKET, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RSQUARE_BRACKET (YY_COPY (location_type) l)
+ Dhcp4Parser::make_RSQUARE_BRACKET (const location_type& l)
{
- return symbol_type (token::TOKEN_RSQUARE_BRACKET, YY_MOVE (l));
+ return symbol_type (token::TOKEN_RSQUARE_BRACKET, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LCURLY_BRACKET (YY_COPY (location_type) l)
+ Dhcp4Parser::make_LCURLY_BRACKET (const location_type& l)
{
- return symbol_type (token::TOKEN_LCURLY_BRACKET, YY_MOVE (l));
+ return symbol_type (token::TOKEN_LCURLY_BRACKET, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RCURLY_BRACKET (YY_COPY (location_type) l)
+ Dhcp4Parser::make_RCURLY_BRACKET (const location_type& l)
{
- return symbol_type (token::TOKEN_RCURLY_BRACKET, YY_MOVE (l));
+ return symbol_type (token::TOKEN_RCURLY_BRACKET, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NULL_TYPE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_NULL_TYPE (const location_type& l)
{
- return symbol_type (token::TOKEN_NULL_TYPE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_NULL_TYPE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP4 (YY_COPY (location_type) l)
+ Dhcp4Parser::make_DHCP4 (const location_type& l)
{
- return symbol_type (token::TOKEN_DHCP4, YY_MOVE (l));
+ return symbol_type (token::TOKEN_DHCP4, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONFIG_CONTROL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CONFIG_CONTROL (const location_type& l)
{
- return symbol_type (token::TOKEN_CONFIG_CONTROL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CONFIG_CONTROL, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONFIG_DATABASES (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CONFIG_DATABASES (const location_type& l)
{
- return symbol_type (token::TOKEN_CONFIG_DATABASES, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CONFIG_DATABASES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_INTERFACES_CONFIG (YY_COPY (location_type) l)
+ Dhcp4Parser::make_INTERFACES_CONFIG (const location_type& l)
{
- return symbol_type (token::TOKEN_INTERFACES_CONFIG, YY_MOVE (l));
+ return symbol_type (token::TOKEN_INTERFACES_CONFIG, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_INTERFACES (YY_COPY (location_type) l)
+ Dhcp4Parser::make_INTERFACES (const location_type& l)
{
- return symbol_type (token::TOKEN_INTERFACES, YY_MOVE (l));
+ return symbol_type (token::TOKEN_INTERFACES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP_SOCKET_TYPE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_DHCP_SOCKET_TYPE (const location_type& l)
{
- return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RAW (YY_COPY (location_type) l)
+ Dhcp4Parser::make_RAW (const location_type& l)
{
- return symbol_type (token::TOKEN_RAW, YY_MOVE (l));
+ return symbol_type (token::TOKEN_RAW, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_UDP (YY_COPY (location_type) l)
+ Dhcp4Parser::make_UDP (const location_type& l)
{
- return symbol_type (token::TOKEN_UDP, YY_MOVE (l));
+ return symbol_type (token::TOKEN_UDP, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OUTBOUND_INTERFACE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_OUTBOUND_INTERFACE (const location_type& l)
{
- return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_OUTBOUND_INTERFACE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SAME_AS_INBOUND (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SAME_AS_INBOUND (const location_type& l)
{
- return symbol_type (token::TOKEN_SAME_AS_INBOUND, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SAME_AS_INBOUND, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_USE_ROUTING (YY_COPY (location_type) l)
+ Dhcp4Parser::make_USE_ROUTING (const location_type& l)
{
- return symbol_type (token::TOKEN_USE_ROUTING, YY_MOVE (l));
+ return symbol_type (token::TOKEN_USE_ROUTING, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RE_DETECT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_RE_DETECT (const location_type& l)
{
- return symbol_type (token::TOKEN_RE_DETECT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_RE_DETECT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SANITY_CHECKS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SANITY_CHECKS (const location_type& l)
{
- return symbol_type (token::TOKEN_SANITY_CHECKS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SANITY_CHECKS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LEASE_CHECKS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_LEASE_CHECKS (const location_type& l)
{
- return symbol_type (token::TOKEN_LEASE_CHECKS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_LEASE_CHECKS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ECHO_CLIENT_ID (YY_COPY (location_type) l)
+ Dhcp4Parser::make_ECHO_CLIENT_ID (const location_type& l)
{
- return symbol_type (token::TOKEN_ECHO_CLIENT_ID, YY_MOVE (l));
+ return symbol_type (token::TOKEN_ECHO_CLIENT_ID, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MATCH_CLIENT_ID (YY_COPY (location_type) l)
+ Dhcp4Parser::make_MATCH_CLIENT_ID (const location_type& l)
{
- return symbol_type (token::TOKEN_MATCH_CLIENT_ID, YY_MOVE (l));
+ return symbol_type (token::TOKEN_MATCH_CLIENT_ID, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_AUTHORITATIVE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_AUTHORITATIVE (const location_type& l)
{
- return symbol_type (token::TOKEN_AUTHORITATIVE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_AUTHORITATIVE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NEXT_SERVER (YY_COPY (location_type) l)
+ Dhcp4Parser::make_NEXT_SERVER (const location_type& l)
{
- return symbol_type (token::TOKEN_NEXT_SERVER, YY_MOVE (l));
+ return symbol_type (token::TOKEN_NEXT_SERVER, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERVER_HOSTNAME (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SERVER_HOSTNAME (const location_type& l)
{
- return symbol_type (token::TOKEN_SERVER_HOSTNAME, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SERVER_HOSTNAME, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_BOOT_FILE_NAME (YY_COPY (location_type) l)
+ Dhcp4Parser::make_BOOT_FILE_NAME (const location_type& l)
{
- return symbol_type (token::TOKEN_BOOT_FILE_NAME, YY_MOVE (l));
+ return symbol_type (token::TOKEN_BOOT_FILE_NAME, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LEASE_DATABASE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_LEASE_DATABASE (const location_type& l)
{
- return symbol_type (token::TOKEN_LEASE_DATABASE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_LEASE_DATABASE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTS_DATABASE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_HOSTS_DATABASE (const location_type& l)
{
- return symbol_type (token::TOKEN_HOSTS_DATABASE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_HOSTS_DATABASE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTS_DATABASES (YY_COPY (location_type) l)
+ Dhcp4Parser::make_HOSTS_DATABASES (const location_type& l)
{
- return symbol_type (token::TOKEN_HOSTS_DATABASES, YY_MOVE (l));
+ return symbol_type (token::TOKEN_HOSTS_DATABASES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TYPE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_TYPE (const location_type& l)
{
- return symbol_type (token::TOKEN_TYPE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_TYPE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MEMFILE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_MEMFILE (const location_type& l)
{
- return symbol_type (token::TOKEN_MEMFILE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_MEMFILE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MYSQL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_MYSQL (const location_type& l)
{
- return symbol_type (token::TOKEN_MYSQL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_MYSQL, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_POSTGRESQL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_POSTGRESQL (const location_type& l)
{
- return symbol_type (token::TOKEN_POSTGRESQL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_POSTGRESQL, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CQL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CQL (const location_type& l)
{
- return symbol_type (token::TOKEN_CQL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CQL, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_USER (YY_COPY (location_type) l)
+ Dhcp4Parser::make_USER (const location_type& l)
{
- return symbol_type (token::TOKEN_USER, YY_MOVE (l));
+ return symbol_type (token::TOKEN_USER, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PASSWORD (YY_COPY (location_type) l)
+ Dhcp4Parser::make_PASSWORD (const location_type& l)
{
- return symbol_type (token::TOKEN_PASSWORD, YY_MOVE (l));
+ return symbol_type (token::TOKEN_PASSWORD, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOST (YY_COPY (location_type) l)
+ Dhcp4Parser::make_HOST (const location_type& l)
{
- return symbol_type (token::TOKEN_HOST, YY_MOVE (l));
+ return symbol_type (token::TOKEN_HOST, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PORT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_PORT (const location_type& l)
{
- return symbol_type (token::TOKEN_PORT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_PORT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PERSIST (YY_COPY (location_type) l)
+ Dhcp4Parser::make_PERSIST (const location_type& l)
{
- return symbol_type (token::TOKEN_PERSIST, YY_MOVE (l));
+ return symbol_type (token::TOKEN_PERSIST, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LFC_INTERVAL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_LFC_INTERVAL (const location_type& l)
{
- return symbol_type (token::TOKEN_LFC_INTERVAL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_LFC_INTERVAL, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_READONLY (YY_COPY (location_type) l)
+ Dhcp4Parser::make_READONLY (const location_type& l)
{
- return symbol_type (token::TOKEN_READONLY, YY_MOVE (l));
+ return symbol_type (token::TOKEN_READONLY, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONNECT_TIMEOUT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CONNECT_TIMEOUT (const location_type& l)
{
- return symbol_type (token::TOKEN_CONNECT_TIMEOUT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CONNECT_TIMEOUT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONTACT_POINTS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CONTACT_POINTS (const location_type& l)
{
- return symbol_type (token::TOKEN_CONTACT_POINTS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CONTACT_POINTS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_KEYSPACE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_KEYSPACE (const location_type& l)
{
- return symbol_type (token::TOKEN_KEYSPACE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_KEYSPACE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_RECONNECT_TRIES (YY_COPY (location_type) l)
+ Dhcp4Parser::make_MAX_RECONNECT_TRIES (const location_type& l)
{
- return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, YY_MOVE (l));
+ return symbol_type (token::TOKEN_MAX_RECONNECT_TRIES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RECONNECT_WAIT_TIME (YY_COPY (location_type) l)
+ Dhcp4Parser::make_RECONNECT_WAIT_TIME (const location_type& l)
{
- return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, YY_MOVE (l));
+ return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_REQUEST_TIMEOUT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_REQUEST_TIMEOUT (const location_type& l)
{
- return symbol_type (token::TOKEN_REQUEST_TIMEOUT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TCP_KEEPALIVE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_TCP_KEEPALIVE (const location_type& l)
{
- return symbol_type (token::TOKEN_TCP_KEEPALIVE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TCP_NODELAY (YY_COPY (location_type) l)
+ Dhcp4Parser::make_TCP_NODELAY (const location_type& l)
{
- return symbol_type (token::TOKEN_TCP_NODELAY, YY_MOVE (l));
+ return symbol_type (token::TOKEN_TCP_NODELAY, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_VALID_LIFETIME (YY_COPY (location_type) l)
+ Dhcp4Parser::make_VALID_LIFETIME (const location_type& l)
{
- return symbol_type (token::TOKEN_VALID_LIFETIME, YY_MOVE (l));
+ return symbol_type (token::TOKEN_VALID_LIFETIME, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RENEW_TIMER (YY_COPY (location_type) l)
+ Dhcp4Parser::make_RENEW_TIMER (const location_type& l)
{
- return symbol_type (token::TOKEN_RENEW_TIMER, YY_MOVE (l));
+ return symbol_type (token::TOKEN_RENEW_TIMER, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_REBIND_TIMER (YY_COPY (location_type) l)
+ Dhcp4Parser::make_REBIND_TIMER (const location_type& l)
{
- return symbol_type (token::TOKEN_REBIND_TIMER, YY_MOVE (l));
+ return symbol_type (token::TOKEN_REBIND_TIMER, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DECLINE_PROBATION_PERIOD (YY_COPY (location_type) l)
+ Dhcp4Parser::make_DECLINE_PROBATION_PERIOD (const location_type& l)
{
- return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, YY_MOVE (l));
+ return symbol_type (token::TOKEN_DECLINE_PROBATION_PERIOD, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERVER_TAG (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SERVER_TAG (const location_type& l)
{
- return symbol_type (token::TOKEN_SERVER_TAG, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SERVER_TAG, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET4 (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUBNET4 (const location_type& l)
{
- return symbol_type (token::TOKEN_SUBNET4, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUBNET4, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET_4O6_INTERFACE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUBNET_4O6_INTERFACE (const location_type& l)
{
- return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET_4O6_INTERFACE_ID (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUBNET_4O6_INTERFACE_ID (const location_type& l)
{
- return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUBNET_4O6_INTERFACE_ID, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET_4O6_SUBNET (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUBNET_4O6_SUBNET (const location_type& l)
{
- return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUBNET_4O6_SUBNET, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OPTION_DEF (YY_COPY (location_type) l)
+ Dhcp4Parser::make_OPTION_DEF (const location_type& l)
{
- return symbol_type (token::TOKEN_OPTION_DEF, YY_MOVE (l));
+ return symbol_type (token::TOKEN_OPTION_DEF, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OPTION_DATA (YY_COPY (location_type) l)
+ Dhcp4Parser::make_OPTION_DATA (const location_type& l)
{
- return symbol_type (token::TOKEN_OPTION_DATA, YY_MOVE (l));
+ return symbol_type (token::TOKEN_OPTION_DATA, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NAME (YY_COPY (location_type) l)
+ Dhcp4Parser::make_NAME (const location_type& l)
{
- return symbol_type (token::TOKEN_NAME, YY_MOVE (l));
+ return symbol_type (token::TOKEN_NAME, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DATA (YY_COPY (location_type) l)
+ Dhcp4Parser::make_DATA (const location_type& l)
{
- return symbol_type (token::TOKEN_DATA, YY_MOVE (l));
+ return symbol_type (token::TOKEN_DATA, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CODE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CODE (const location_type& l)
{
- return symbol_type (token::TOKEN_CODE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CODE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SPACE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SPACE (const location_type& l)
{
- return symbol_type (token::TOKEN_SPACE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SPACE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CSV_FORMAT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CSV_FORMAT (const location_type& l)
{
- return symbol_type (token::TOKEN_CSV_FORMAT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CSV_FORMAT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ALWAYS_SEND (YY_COPY (location_type) l)
+ Dhcp4Parser::make_ALWAYS_SEND (const location_type& l)
{
- return symbol_type (token::TOKEN_ALWAYS_SEND, YY_MOVE (l));
+ return symbol_type (token::TOKEN_ALWAYS_SEND, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RECORD_TYPES (YY_COPY (location_type) l)
+ Dhcp4Parser::make_RECORD_TYPES (const location_type& l)
{
- return symbol_type (token::TOKEN_RECORD_TYPES, YY_MOVE (l));
+ return symbol_type (token::TOKEN_RECORD_TYPES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ENCAPSULATE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_ENCAPSULATE (const location_type& l)
{
- return symbol_type (token::TOKEN_ENCAPSULATE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_ENCAPSULATE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ARRAY (YY_COPY (location_type) l)
+ Dhcp4Parser::make_ARRAY (const location_type& l)
{
- return symbol_type (token::TOKEN_ARRAY, YY_MOVE (l));
+ return symbol_type (token::TOKEN_ARRAY, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SHARED_NETWORKS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CALCULATE_TEE_TIMES (const location_type& l)
{
- return symbol_type (token::TOKEN_SHARED_NETWORKS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CALCULATE_TEE_TIMES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_POOLS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_T1_PERCENT (const location_type& l)
{
- return symbol_type (token::TOKEN_POOLS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_T1_PERCENT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_POOL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_T2_PERCENT (const location_type& l)
{
- return symbol_type (token::TOKEN_POOL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_T2_PERCENT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_USER_CONTEXT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SHARED_NETWORKS (const location_type& l)
{
- return symbol_type (token::TOKEN_USER_CONTEXT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SHARED_NETWORKS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_COMMENT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_POOLS (const location_type& l)
{
- return symbol_type (token::TOKEN_COMMENT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_POOLS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUBNET (YY_COPY (location_type) l)
+ Dhcp4Parser::make_POOL (const location_type& l)
{
- return symbol_type (token::TOKEN_SUBNET, YY_MOVE (l));
+ return symbol_type (token::TOKEN_POOL, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_INTERFACE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_USER_CONTEXT (const location_type& l)
{
- return symbol_type (token::TOKEN_INTERFACE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_USER_CONTEXT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ID (YY_COPY (location_type) l)
+ Dhcp4Parser::make_COMMENT (const location_type& l)
{
- return symbol_type (token::TOKEN_ID, YY_MOVE (l));
+ return symbol_type (token::TOKEN_COMMENT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RESERVATION_MODE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUBNET (const location_type& l)
{
- return symbol_type (token::TOKEN_RESERVATION_MODE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUBNET, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DISABLED (YY_COPY (location_type) l)
+ Dhcp4Parser::make_INTERFACE (const location_type& l)
{
- return symbol_type (token::TOKEN_DISABLED, YY_MOVE (l));
+ return symbol_type (token::TOKEN_INTERFACE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OUT_OF_POOL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_ID (const location_type& l)
{
- return symbol_type (token::TOKEN_OUT_OF_POOL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_ID, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_GLOBAL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_RESERVATION_MODE (const location_type& l)
{
- return symbol_type (token::TOKEN_GLOBAL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_RESERVATION_MODE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ALL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_DISABLED (const location_type& l)
{
- return symbol_type (token::TOKEN_ALL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_DISABLED, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOST_RESERVATION_IDENTIFIERS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_OUT_OF_POOL (const location_type& l)
{
- return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_OUT_OF_POOL, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CLIENT_CLASSES (YY_COPY (location_type) l)
+ Dhcp4Parser::make_GLOBAL (const location_type& l)
{
- return symbol_type (token::TOKEN_CLIENT_CLASSES, YY_MOVE (l));
+ return symbol_type (token::TOKEN_GLOBAL, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_REQUIRE_CLIENT_CLASSES (YY_COPY (location_type) l)
+ Dhcp4Parser::make_ALL (const location_type& l)
{
- return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, YY_MOVE (l));
+ return symbol_type (token::TOKEN_ALL, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TEST (YY_COPY (location_type) l)
+ Dhcp4Parser::make_HOST_RESERVATION_IDENTIFIERS (const location_type& l)
{
- return symbol_type (token::TOKEN_TEST, YY_MOVE (l));
+ return symbol_type (token::TOKEN_HOST_RESERVATION_IDENTIFIERS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ONLY_IF_REQUIRED (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CLIENT_CLASSES (const location_type& l)
{
- return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CLIENT_CLASSES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CLIENT_CLASS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_REQUIRE_CLIENT_CLASSES (const location_type& l)
{
- return symbol_type (token::TOKEN_CLIENT_CLASS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_REQUIRE_CLIENT_CLASSES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RESERVATIONS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_TEST (const location_type& l)
{
- return symbol_type (token::TOKEN_RESERVATIONS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_TEST, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DUID (YY_COPY (location_type) l)
+ Dhcp4Parser::make_ONLY_IF_REQUIRED (const location_type& l)
{
- return symbol_type (token::TOKEN_DUID, YY_MOVE (l));
+ return symbol_type (token::TOKEN_ONLY_IF_REQUIRED, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HW_ADDRESS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CLIENT_CLASS (const location_type& l)
{
- return symbol_type (token::TOKEN_HW_ADDRESS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CLIENT_CLASS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CIRCUIT_ID (YY_COPY (location_type) l)
+ Dhcp4Parser::make_RESERVATIONS (const location_type& l)
{
- return symbol_type (token::TOKEN_CIRCUIT_ID, YY_MOVE (l));
+ return symbol_type (token::TOKEN_RESERVATIONS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CLIENT_ID (YY_COPY (location_type) l)
+ Dhcp4Parser::make_DUID (const location_type& l)
{
- return symbol_type (token::TOKEN_CLIENT_ID, YY_MOVE (l));
+ return symbol_type (token::TOKEN_DUID, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTNAME (YY_COPY (location_type) l)
+ Dhcp4Parser::make_HW_ADDRESS (const location_type& l)
{
- return symbol_type (token::TOKEN_HOSTNAME, YY_MOVE (l));
+ return symbol_type (token::TOKEN_HW_ADDRESS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_FLEX_ID (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CIRCUIT_ID (const location_type& l)
{
- return symbol_type (token::TOKEN_FLEX_ID, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CIRCUIT_ID, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RELAY (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CLIENT_ID (const location_type& l)
{
- return symbol_type (token::TOKEN_RELAY, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CLIENT_ID, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_IP_ADDRESS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_HOSTNAME (const location_type& l)
{
- return symbol_type (token::TOKEN_IP_ADDRESS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_HOSTNAME, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_IP_ADDRESSES (YY_COPY (location_type) l)
+ Dhcp4Parser::make_FLEX_ID (const location_type& l)
{
- return symbol_type (token::TOKEN_IP_ADDRESSES, YY_MOVE (l));
+ return symbol_type (token::TOKEN_FLEX_ID, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOOKS_LIBRARIES (YY_COPY (location_type) l)
+ Dhcp4Parser::make_RELAY (const location_type& l)
{
- return symbol_type (token::TOKEN_HOOKS_LIBRARIES, YY_MOVE (l));
+ return symbol_type (token::TOKEN_RELAY, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LIBRARY (YY_COPY (location_type) l)
+ Dhcp4Parser::make_IP_ADDRESS (const location_type& l)
{
- return symbol_type (token::TOKEN_LIBRARY, YY_MOVE (l));
+ return symbol_type (token::TOKEN_IP_ADDRESS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_PARAMETERS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_IP_ADDRESSES (const location_type& l)
{
- return symbol_type (token::TOKEN_PARAMETERS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_IP_ADDRESSES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_EXPIRED_LEASES_PROCESSING (YY_COPY (location_type) l)
+ Dhcp4Parser::make_HOOKS_LIBRARIES (const location_type& l)
{
- return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, YY_MOVE (l));
+ return symbol_type (token::TOKEN_HOOKS_LIBRARIES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_RECLAIM_TIMER_WAIT_TIME (YY_COPY (location_type) l)
+ Dhcp4Parser::make_LIBRARY (const location_type& l)
{
- return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, YY_MOVE (l));
+ return symbol_type (token::TOKEN_LIBRARY, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (YY_COPY (location_type) l)
+ Dhcp4Parser::make_PARAMETERS (const location_type& l)
{
- return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, YY_MOVE (l));
+ return symbol_type (token::TOKEN_PARAMETERS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOLD_RECLAIMED_TIME (YY_COPY (location_type) l)
+ Dhcp4Parser::make_EXPIRED_LEASES_PROCESSING (const location_type& l)
{
- return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, YY_MOVE (l));
+ return symbol_type (token::TOKEN_EXPIRED_LEASES_PROCESSING, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_RECLAIM_LEASES (YY_COPY (location_type) l)
+ Dhcp4Parser::make_RECLAIM_TIMER_WAIT_TIME (const location_type& l)
{
- return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, YY_MOVE (l));
+ return symbol_type (token::TOKEN_RECLAIM_TIMER_WAIT_TIME, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_RECLAIM_TIME (YY_COPY (location_type) l)
+ Dhcp4Parser::make_FLUSH_RECLAIMED_TIMER_WAIT_TIME (const location_type& l)
{
- return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, YY_MOVE (l));
+ return symbol_type (token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_UNWARNED_RECLAIM_CYCLES (YY_COPY (location_type) l)
+ Dhcp4Parser::make_HOLD_RECLAIMED_TIME (const location_type& l)
{
- return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, YY_MOVE (l));
+ return symbol_type (token::TOKEN_HOLD_RECLAIMED_TIME, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP4O6_PORT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_MAX_RECLAIM_LEASES (const location_type& l)
{
- return symbol_type (token::TOKEN_DHCP4O6_PORT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_MAX_RECLAIM_LEASES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONTROL_SOCKET (YY_COPY (location_type) l)
+ Dhcp4Parser::make_MAX_RECLAIM_TIME (const location_type& l)
{
- return symbol_type (token::TOKEN_CONTROL_SOCKET, YY_MOVE (l));
+ return symbol_type (token::TOKEN_MAX_RECLAIM_TIME, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SOCKET_TYPE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_UNWARNED_RECLAIM_CYCLES (const location_type& l)
{
- return symbol_type (token::TOKEN_SOCKET_TYPE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_UNWARNED_RECLAIM_CYCLES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SOCKET_NAME (YY_COPY (location_type) l)
+ Dhcp4Parser::make_DHCP4O6_PORT (const location_type& l)
{
- return symbol_type (token::TOKEN_SOCKET_NAME, YY_MOVE (l));
+ return symbol_type (token::TOKEN_DHCP4O6_PORT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP_QUEUE_CONTROL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CONTROL_SOCKET (const location_type& l)
{
- return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CONTROL_SOCKET, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP_DDNS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SOCKET_TYPE (const location_type& l)
{
- return symbol_type (token::TOKEN_DHCP_DDNS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SOCKET_TYPE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ENABLE_UPDATES (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SOCKET_NAME (const location_type& l)
{
- return symbol_type (token::TOKEN_ENABLE_UPDATES, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SOCKET_NAME, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_QUALIFYING_SUFFIX (YY_COPY (location_type) l)
+ Dhcp4Parser::make_DHCP_QUEUE_CONTROL (const location_type& l)
{
- return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, YY_MOVE (l));
+ return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERVER_IP (YY_COPY (location_type) l)
+ Dhcp4Parser::make_DHCP_DDNS (const location_type& l)
{
- return symbol_type (token::TOKEN_SERVER_IP, YY_MOVE (l));
+ return symbol_type (token::TOKEN_DHCP_DDNS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SERVER_PORT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_ENABLE_UPDATES (const location_type& l)
{
- return symbol_type (token::TOKEN_SERVER_PORT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_ENABLE_UPDATES, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SENDER_IP (YY_COPY (location_type) l)
+ Dhcp4Parser::make_QUALIFYING_SUFFIX (const location_type& l)
{
- return symbol_type (token::TOKEN_SENDER_IP, YY_MOVE (l));
+ return symbol_type (token::TOKEN_QUALIFYING_SUFFIX, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SENDER_PORT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SERVER_IP (const location_type& l)
{
- return symbol_type (token::TOKEN_SENDER_PORT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SERVER_IP, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAX_QUEUE_SIZE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SERVER_PORT (const location_type& l)
{
- return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SERVER_PORT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NCR_PROTOCOL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SENDER_IP (const location_type& l)
{
- return symbol_type (token::TOKEN_NCR_PROTOCOL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SENDER_IP, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NCR_FORMAT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SENDER_PORT (const location_type& l)
{
- return symbol_type (token::TOKEN_NCR_FORMAT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SENDER_PORT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OVERRIDE_NO_UPDATE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_MAX_QUEUE_SIZE (const location_type& l)
{
- return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_MAX_QUEUE_SIZE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OVERRIDE_CLIENT_UPDATE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_NCR_PROTOCOL (const location_type& l)
{
- return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_NCR_PROTOCOL, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_REPLACE_CLIENT_NAME (YY_COPY (location_type) l)
+ Dhcp4Parser::make_NCR_FORMAT (const location_type& l)
{
- return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, YY_MOVE (l));
+ return symbol_type (token::TOKEN_NCR_FORMAT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_GENERATED_PREFIX (YY_COPY (location_type) l)
+ Dhcp4Parser::make_OVERRIDE_NO_UPDATE (const location_type& l)
{
- return symbol_type (token::TOKEN_GENERATED_PREFIX, YY_MOVE (l));
+ return symbol_type (token::TOKEN_OVERRIDE_NO_UPDATE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TCP (YY_COPY (location_type) l)
+ Dhcp4Parser::make_OVERRIDE_CLIENT_UPDATE (const location_type& l)
{
- return symbol_type (token::TOKEN_TCP, YY_MOVE (l));
+ return symbol_type (token::TOKEN_OVERRIDE_CLIENT_UPDATE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_JSON (YY_COPY (location_type) l)
+ Dhcp4Parser::make_REPLACE_CLIENT_NAME (const location_type& l)
{
- return symbol_type (token::TOKEN_JSON, YY_MOVE (l));
+ return symbol_type (token::TOKEN_REPLACE_CLIENT_NAME, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_WHEN_PRESENT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_GENERATED_PREFIX (const location_type& l)
{
- return symbol_type (token::TOKEN_WHEN_PRESENT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_GENERATED_PREFIX, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_NEVER (YY_COPY (location_type) l)
+ Dhcp4Parser::make_TCP (const location_type& l)
{
- return symbol_type (token::TOKEN_NEVER, YY_MOVE (l));
+ return symbol_type (token::TOKEN_TCP, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_ALWAYS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_JSON (const location_type& l)
{
- return symbol_type (token::TOKEN_ALWAYS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_JSON, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_WHEN_NOT_PRESENT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_WHEN_PRESENT (const location_type& l)
{
- return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_WHEN_PRESENT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTNAME_CHAR_SET (YY_COPY (location_type) l)
+ Dhcp4Parser::make_NEVER (const location_type& l)
{
- return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, YY_MOVE (l));
+ return symbol_type (token::TOKEN_NEVER, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_HOSTNAME_CHAR_REPLACEMENT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_ALWAYS (const location_type& l)
{
- return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_ALWAYS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LOGGING (YY_COPY (location_type) l)
+ Dhcp4Parser::make_WHEN_NOT_PRESENT (const location_type& l)
{
- return symbol_type (token::TOKEN_LOGGING, YY_MOVE (l));
+ return symbol_type (token::TOKEN_WHEN_NOT_PRESENT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_LOGGERS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_HOSTNAME_CHAR_SET (const location_type& l)
{
- return symbol_type (token::TOKEN_LOGGERS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_SET, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OUTPUT_OPTIONS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_HOSTNAME_CHAR_REPLACEMENT (const location_type& l)
{
- return symbol_type (token::TOKEN_OUTPUT_OPTIONS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_HOSTNAME_CHAR_REPLACEMENT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_OUTPUT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_LOGGING (const location_type& l)
{
- return symbol_type (token::TOKEN_OUTPUT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_LOGGING, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DEBUGLEVEL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_LOGGERS (const location_type& l)
{
- return symbol_type (token::TOKEN_DEBUGLEVEL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_LOGGERS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SEVERITY (YY_COPY (location_type) l)
+ Dhcp4Parser::make_OUTPUT_OPTIONS (const location_type& l)
{
- return symbol_type (token::TOKEN_SEVERITY, YY_MOVE (l));
+ return symbol_type (token::TOKEN_OUTPUT_OPTIONS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_FLUSH (YY_COPY (location_type) l)
+ Dhcp4Parser::make_OUTPUT (const location_type& l)
{
- return symbol_type (token::TOKEN_FLUSH, YY_MOVE (l));
+ return symbol_type (token::TOKEN_OUTPUT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAXSIZE (YY_COPY (location_type) l)
+ Dhcp4Parser::make_DEBUGLEVEL (const location_type& l)
{
- return symbol_type (token::TOKEN_MAXSIZE, YY_MOVE (l));
+ return symbol_type (token::TOKEN_DEBUGLEVEL, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_MAXVER (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SEVERITY (const location_type& l)
{
- return symbol_type (token::TOKEN_MAXVER, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SEVERITY, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCP6 (YY_COPY (location_type) l)
+ Dhcp4Parser::make_FLUSH (const location_type& l)
{
- return symbol_type (token::TOKEN_DHCP6, YY_MOVE (l));
+ return symbol_type (token::TOKEN_FLUSH, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_DHCPDDNS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_MAXSIZE (const location_type& l)
{
- return symbol_type (token::TOKEN_DHCPDDNS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_MAXSIZE, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_CONTROL_AGENT (YY_COPY (location_type) l)
+ Dhcp4Parser::make_MAXVER (const location_type& l)
{
- return symbol_type (token::TOKEN_CONTROL_AGENT, YY_MOVE (l));
+ return symbol_type (token::TOKEN_MAXVER, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TOPLEVEL_JSON (YY_COPY (location_type) l)
+ Dhcp4Parser::make_DHCP6 (const location_type& l)
{
- return symbol_type (token::TOKEN_TOPLEVEL_JSON, YY_MOVE (l));
+ return symbol_type (token::TOKEN_DHCP6, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_TOPLEVEL_DHCP4 (YY_COPY (location_type) l)
+ Dhcp4Parser::make_DHCPDDNS (const location_type& l)
{
- return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, YY_MOVE (l));
+ return symbol_type (token::TOKEN_DHCPDDNS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_DHCP4 (YY_COPY (location_type) l)
+ Dhcp4Parser::make_CONTROL_AGENT (const location_type& l)
{
- return symbol_type (token::TOKEN_SUB_DHCP4, YY_MOVE (l));
+ return symbol_type (token::TOKEN_CONTROL_AGENT, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_INTERFACES4 (YY_COPY (location_type) l)
+ Dhcp4Parser::make_TOPLEVEL_JSON (const location_type& l)
{
- return symbol_type (token::TOKEN_SUB_INTERFACES4, YY_MOVE (l));
+ return symbol_type (token::TOKEN_TOPLEVEL_JSON, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_SUBNET4 (YY_COPY (location_type) l)
+ Dhcp4Parser::make_TOPLEVEL_DHCP4 (const location_type& l)
{
- return symbol_type (token::TOKEN_SUB_SUBNET4, YY_MOVE (l));
+ return symbol_type (token::TOKEN_TOPLEVEL_DHCP4, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_POOL4 (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUB_DHCP4 (const location_type& l)
{
- return symbol_type (token::TOKEN_SUB_POOL4, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUB_DHCP4, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_RESERVATION (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUB_INTERFACES4 (const location_type& l)
{
- return symbol_type (token::TOKEN_SUB_RESERVATION, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUB_INTERFACES4, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_OPTION_DEFS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUB_SUBNET4 (const location_type& l)
{
- return symbol_type (token::TOKEN_SUB_OPTION_DEFS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUB_SUBNET4, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_OPTION_DEF (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUB_POOL4 (const location_type& l)
{
- return symbol_type (token::TOKEN_SUB_OPTION_DEF, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUB_POOL4, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_OPTION_DATA (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUB_RESERVATION (const location_type& l)
{
- return symbol_type (token::TOKEN_SUB_OPTION_DATA, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUB_RESERVATION, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_HOOKS_LIBRARY (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUB_OPTION_DEFS (const location_type& l)
{
- return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUB_OPTION_DEFS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_DHCP_DDNS (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUB_OPTION_DEF (const location_type& l)
{
- return symbol_type (token::TOKEN_SUB_DHCP_DDNS, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUB_OPTION_DEF, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_LOGGING (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUB_OPTION_DATA (const location_type& l)
{
- return symbol_type (token::TOKEN_SUB_LOGGING, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUB_OPTION_DATA, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_SUB_CONFIG_CONTROL (YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUB_HOOKS_LIBRARY (const location_type& l)
{
- return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUB_HOOKS_LIBRARY, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_STRING (YY_COPY (std::string) v, YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUB_DHCP_DDNS (const location_type& l)
{
- return symbol_type (token::TOKEN_STRING, YY_MOVE (v), YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUB_DHCP_DDNS, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_INTEGER (YY_COPY (int64_t) v, YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUB_LOGGING (const location_type& l)
{
- return symbol_type (token::TOKEN_INTEGER, YY_MOVE (v), YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUB_LOGGING, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_FLOAT (YY_COPY (double) v, YY_COPY (location_type) l)
+ Dhcp4Parser::make_SUB_CONFIG_CONTROL (const location_type& l)
{
- return symbol_type (token::TOKEN_FLOAT, YY_MOVE (v), YY_MOVE (l));
+ return symbol_type (token::TOKEN_SUB_CONFIG_CONTROL, l);
+ }
+
+ Dhcp4Parser::symbol_type
+ Dhcp4Parser::make_STRING (const std::string& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_STRING, v, l);
+ }
+
+ Dhcp4Parser::symbol_type
+ Dhcp4Parser::make_INTEGER (const int64_t& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_INTEGER, v, l);
+ }
+
+ Dhcp4Parser::symbol_type
+ Dhcp4Parser::make_FLOAT (const double& v, const location_type& l)
+ {
+ return symbol_type (token::TOKEN_FLOAT, v, l);
}
- inline
Dhcp4Parser::symbol_type
- Dhcp4Parser::make_BOOLEAN (YY_COPY (bool) v, YY_COPY (location_type) l)
+ Dhcp4Parser::make_BOOLEAN (const bool& v, const location_type& l)
{
- return symbol_type (token::TOKEN_BOOLEAN, YY_MOVE (v), YY_MOVE (l));
+ return symbol_type (token::TOKEN_BOOLEAN, v, l);
}
-#line 14 "dhcp4_parser.yy" // lalr1.cc:404
+#line 14 "dhcp4_parser.yy" // lalr1.cc:377
} } // isc::dhcp
-#line 3297 "dhcp4_parser.h" // lalr1.cc:404
+#line 2943 "dhcp4_parser.h" // lalr1.cc:377
-/* Copyright (C) 2016-2018 Internet Systems Consortium, Inc. ("ISC")
+/* Copyright (C) 2016-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
RECORD_TYPES "record-types"
ENCAPSULATE "encapsulate"
ARRAY "array"
+ CALCULATE_TEE_TIMES "calculate-tee-times"
+ T1_PERCENT "t1-percent"
+ T2_PERCENT "t2-percent"
SHARED_NETWORKS "shared-networks"
| config_control
| server_tag
| reservation_mode
+ | calculate_tee_times
+ | t1_percent
+ | t2_percent
| unknown_map_entry
;
ctx.stack_.back()->set("rebind-timer", prf);
};
+calculate_tee_times: CALCULATE_TEE_TIMES COLON BOOLEAN {
+ ElementPtr ctt(new BoolElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("calculate-tee-times", ctt);
+};
+
+t1_percent: T1_PERCENT COLON FLOAT {
+ ElementPtr t1(new DoubleElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("t1-percent", t1);
+};
+
+t2_percent: T2_PERCENT COLON FLOAT {
+ ElementPtr t2(new DoubleElement($3, ctx.loc2pos(@3)));
+ ctx.stack_.back()->set("t2-percent", t2);
+};
+
decline_probation_period: DECLINE_PROBATION_PERIOD COLON INTEGER {
ElementPtr dpp(new IntElement($3, ctx.loc2pos(@3)));
ctx.stack_.back()->set("decline-probation-period", dpp);
| subnet_4o6_subnet
| user_context
| comment
+ | calculate_tee_times
+ | t1_percent
+ | t2_percent
| unknown_map_entry
;
| valid_lifetime
| user_context
| comment
+ | calculate_tee_times
+ | t1_percent
+ | t2_percent
| unknown_map_entry
;
-// 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
// Subnet mask (type 1)
resp->addOption(getNetmaskOption(subnet));
- // rebind timer (type 59) - if specified then send it only it if
- // it is less than lease lifetime. Note we "sanity" check T1
- // and T2 against lease lifetime here in event the lifetime has
- // been altered somewhere along the line.
- uint32_t timer_ceiling = lease->valid_lft_;
- if ((!subnet->getT2().unspecified()) &&
- (subnet->getT2() < timer_ceiling)) {
- OptionUint32Ptr t2(new OptionUint32(Option::V4,
- DHO_DHCP_REBINDING_TIME,
- subnet->getT2()));
- resp->addOption(t2);
-
- // If T2 is specified, then it becomes the ceiling for T1
- timer_ceiling = subnet->getT2();
- }
-
- // renewal-timer (type 58) - if specified then send it only if
- // it is less than the ceiling (T2 if given, lease life time if not)
- if ((!subnet->getT1().unspecified()) &&
- (subnet->getT1() < timer_ceiling)) {
- OptionUint32Ptr t1(new OptionUint32(Option::V4,
- DHO_DHCP_RENEWAL_TIME,
- subnet->getT1()));
- resp->addOption(t1);
- }
-
+ // Set T1 and T2 per configuration.
+ setTeeTimes(lease, subnet, resp);
// Create NameChangeRequests if DDNS is enabled and this is a
// real allocation.
}
}
+void
+Dhcpv4Srv::setTeeTimes(const Lease4Ptr& lease, const Subnet4Ptr& subnet, Pkt4Ptr resp) {
+
+ uint32_t t2_time = 0;
+ // If T2 is explicitly configured we'll use try value.
+ if (!subnet->getT2().unspecified()) {
+ t2_time = subnet->getT2();
+ } else if (subnet->getCalculateTeeTimes()) {
+ // Calculating tee times is enabled, so calculated it.
+ t2_time = static_cast<uint32_t>(subnet->getT2Percent() * (lease->valid_lft_));
+ }
+
+ // Send the T2 candidate value only if it's sane: to be sane it must be less than
+ // the valid life time.
+ uint32_t timer_ceiling = lease->valid_lft_;
+ if (t2_time > 0 && t2_time < timer_ceiling) {
+ OptionUint32Ptr t2(new OptionUint32(Option::V4, DHO_DHCP_REBINDING_TIME, t2_time));
+ resp->addOption(t2);
+ // When we send T2, timer ceiling for T1 becomes T2.
+ timer_ceiling = t2_time;
+ }
+
+ uint32_t t1_time = 0;
+ // If T1 is explicitly configured we'll use try value.
+ if (!subnet->getT1().unspecified()) {
+ t1_time = subnet->getT1();
+ } else if (subnet->getCalculateTeeTimes()) {
+ // Calculating tee times is enabled, so calculate it.
+ t1_time = static_cast<uint32_t>(subnet->getT1Percent() * (lease->valid_lft_));
+ }
+
+ // Send T1 if it's sane: If we sent T2, T1 must be less than that. If not it must be
+ // less than the valid life time.
+ if (t1_time > 0 && t1_time < timer_ceiling) {
+ OptionUint32Ptr t1(new OptionUint32(Option::V4, DHO_DHCP_RENEWAL_TIME, t1_time));
+ resp->addOption(t1);
+ }
+}
+
+
uint16_t
Dhcpv4Srv::checkRelayPort(const Dhcpv4Exchange& ex) {
-// 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
/// @param ex DHCPv4 exchange holding the client's message to be checked.
void assignLease(Dhcpv4Exchange& ex);
+ /// @brief Adds the T1 and T2 timers to the outbound response as appropriate
+ ///
+ /// This method determines if either of the timers T1 (option 58) and T2
+ /// (option 59) should be sent to the client. It is influenced by the
+ /// lease's subnet's values for renew-timer, rebind-timer,
+ /// calculate-tee-times, t1-perecnt, and t2-percent as follows:
+ ///
+ /// By default neither T1 nor T2 will be sent.
+ ///
+ /// T2:
+ ///
+ /// If rebind-timer is set use its value, otherwise if calculate-tee-times
+ /// is true use the value given by valid lease time * t2-percent. Either
+ /// way the value will only be sent if it is less than the valid lease time.
+ ///
+ /// T1:
+ ///
+ /// If renew-timer is set use its value, otherwise if calculate-tee-times
+ /// is true use the value given by valid lease time * t1-percent. Either
+ /// way the value will only be sent if it is less than T2 when T2 is being
+ /// sent, or less than the valid lease time if T2 is not being sent.
+ ///
+ /// @param lease lease being assigned to the client
+ /// @param subnet the subnet to which the lease belongs
+ /// @param resp outbound response for the client to which timers are added.
+ void setTeeTimes(const Lease4Ptr& lease, const Subnet4Ptr& subnet, Pkt4Ptr resp);
+
/// @brief Append basic options if they are not present.
///
/// This function adds the following basic options if they
-// 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
(config_pair.first == "server-hostname") ||
(config_pair.first == "boot-file-name") ||
(config_pair.first == "server-tag") ||
- (config_pair.first == "reservation-mode")) {
+ (config_pair.first == "reservation-mode") ||
+ (config_pair.first == "calculate-tee-times") ||
+ (config_pair.first == "t1-percent") ||
+ (config_pair.first == "t2-percent")) {
continue;
}
-// Generated 201811271343
-// A Bison parser, made by GNU Bison 3.2.1.
+// A Bison parser, made by GNU Bison 3.0.4.
// Locations for Bison parsers in C++
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015 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
#ifndef YY_PARSER4_LOCATION_HH_INCLUDED
# define YY_PARSER4_LOCATION_HH_INCLUDED
-# include <algorithm> // std::max
-# include <iostream>
-# include <string>
+# include "position.hh"
-# ifndef YY_NULLPTR
-# if defined __cplusplus
-# if 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
-# else
-# define YY_NULLPTR 0
-# endif
-# else
-# define YY_NULLPTR ((void*)0)
-# endif
-# endif
-
-#line 14 "dhcp4_parser.yy" // location.cc:339
+#line 14 "dhcp4_parser.yy" // location.cc:296
namespace isc { namespace dhcp {
-#line 60 "location.hh" // location.cc:339
- /// A point in a source file.
- class position
- {
- public:
- /// Construct a position.
- explicit position (std::string* f = YY_NULLPTR,
- unsigned l = 1u,
- unsigned c = 1u)
- : filename (f)
- , line (l)
- , column (c)
- {}
-
-
- /// Initialization.
- void initialize (std::string* fn = YY_NULLPTR,
- unsigned l = 1u,
- unsigned c = 1u)
- {
- filename = fn;
- line = l;
- column = c;
- }
-
- /** \name Line and Column related manipulators
- ** \{ */
- /// (line related) Advance to the COUNT next lines.
- void lines (int count = 1)
- {
- if (count)
- {
- column = 1u;
- line = add_ (line, count, 1);
- }
- }
-
- /// (column related) Advance to the COUNT next columns.
- void columns (int count = 1)
- {
- column = add_ (column, count, 1);
- }
- /** \} */
-
- /// File name to which this position refers.
- std::string* filename;
- /// Current line number.
- unsigned line;
- /// Current column number.
- unsigned column;
-
- private:
- /// Compute max (min, lhs+rhs).
- static unsigned add_ (unsigned lhs, int rhs, int min)
- {
- return static_cast<unsigned> (std::max (min,
- static_cast<int> (lhs) + rhs));
- }
- };
-
- /// Add \a width columns, in place.
- inline position&
- operator+= (position& res, int width)
- {
- res.columns (width);
- return res;
- }
-
- /// Add \a width columns.
- inline position
- operator+ (position res, int width)
- {
- return res += width;
- }
-
- /// Subtract \a width columns, in place.
- inline position&
- operator-= (position& res, int width)
- {
- return res += -width;
- }
-
- /// Subtract \a width columns.
- inline position
- operator- (position res, int width)
- {
- return res -= width;
- }
-
- /// Compare two position objects.
- inline bool
- operator== (const position& pos1, const position& pos2)
- {
- return (pos1.line == pos2.line
- && pos1.column == pos2.column
- && (pos1.filename == pos2.filename
- || (pos1.filename && pos2.filename
- && *pos1.filename == *pos2.filename)));
- }
-
- /// Compare two position objects.
- inline bool
- operator!= (const position& pos1, const position& pos2)
- {
- return !(pos1 == pos2);
- }
-
- /** \brief Intercept output stream redirection.
- ** \param ostr the destination output stream
- ** \param pos a reference to the position to redirect
- */
- template <typename YYChar>
- std::basic_ostream<YYChar>&
- operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
- {
- if (pos.filename)
- ostr << *pos.filename << ':';
- return ostr << pos.line << '.' << pos.column;
- }
-
- /// Two points in a source file.
+#line 46 "location.hh" // location.cc:296
+ /// Abstract a location.
class location
{
public:
location (const position& b, const position& e)
: begin (b)
, end (e)
- {}
+ {
+ }
/// Construct a 0-width location in \a p.
explicit location (const position& p = position ())
: begin (p)
, end (p)
- {}
+ {
+ }
/// Construct a 0-width location in \a f, \a l, \a c.
explicit location (std::string* f,
- unsigned l = 1u,
- unsigned c = 1u)
+ unsigned int l = 1u,
+ unsigned int c = 1u)
: begin (f, l, c)
, end (f, l, c)
- {}
+ {
+ }
/// Initialization.
void initialize (std::string* f = YY_NULLPTR,
- unsigned l = 1u,
- unsigned c = 1u)
+ unsigned int l = 1u,
+ unsigned int c = 1u)
{
begin.initialize (f, l, c);
end = begin;
** Avoid duplicate information.
*/
template <typename YYChar>
- std::basic_ostream<YYChar>&
+ inline std::basic_ostream<YYChar>&
operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
{
- unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
+ unsigned int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
ostr << loc.begin;
if (loc.end.filename
&& (!loc.begin.filename
return ostr;
}
-#line 14 "dhcp4_parser.yy" // location.cc:339
+#line 14 "dhcp4_parser.yy" // location.cc:296
} } // isc::dhcp
-#line 322 "location.hh" // location.cc:339
+#line 192 "location.hh" // location.cc:296
#endif // !YY_PARSER4_LOCATION_HH_INCLUDED
-// Generated 201811271343
-// 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".
-//
-// To get rid of this file:
-// 1. add 'require "3.2"' (or newer) to your grammar file
-// 2. remove references to this file from your build system
-// 3. if you used to include it, include "location.hh" instead.
-
-#include "location.hh"
+// A Bison parser, made by GNU Bison 3.0.4.
+
+// Positions for Bison parsers in C++
+
+// Copyright (C) 2002-2015 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
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+// As a special exception, you may create a larger work that contains
+// part or all of the Bison parser skeleton and distribute that work
+// under terms of your choice, so long as that work isn't itself a
+// parser generator using the skeleton or a modified version thereof
+// as a parser skeleton. Alternatively, if you modify or redistribute
+// the parser skeleton itself, you may (at your option) remove this
+// special exception, which will cause the skeleton and the resulting
+// Bison output files to be licensed under the GNU General Public
+// License without this special exception.
+
+// This special exception was added by the Free Software Foundation in
+// version 2.2 of Bison.
+
+/**
+ ** \file position.hh
+ ** Define the isc::dhcp::position class.
+ */
+
+#ifndef YY_PARSER4_POSITION_HH_INCLUDED
+# define YY_PARSER4_POSITION_HH_INCLUDED
+
+# include <algorithm> // std::max
+# include <iostream>
+# include <string>
+
+# ifndef YY_NULLPTR
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# endif
+
+#line 14 "dhcp4_parser.yy" // location.cc:296
+namespace isc { namespace dhcp {
+#line 56 "position.hh" // location.cc:296
+ /// Abstract a position.
+ class position
+ {
+ public:
+ /// Construct a position.
+ explicit position (std::string* f = YY_NULLPTR,
+ unsigned int l = 1u,
+ unsigned int c = 1u)
+ : filename (f)
+ , line (l)
+ , column (c)
+ {
+ }
+
+
+ /// Initialization.
+ void initialize (std::string* fn = YY_NULLPTR,
+ unsigned int l = 1u,
+ unsigned int c = 1u)
+ {
+ filename = fn;
+ line = l;
+ column = c;
+ }
+
+ /** \name Line and Column related manipulators
+ ** \{ */
+ /// (line related) Advance to the COUNT next lines.
+ void lines (int count = 1)
+ {
+ if (count)
+ {
+ column = 1u;
+ line = add_ (line, count, 1);
+ }
+ }
+
+ /// (column related) Advance to the COUNT next columns.
+ void columns (int count = 1)
+ {
+ column = add_ (column, count, 1);
+ }
+ /** \} */
+
+ /// File name to which this position refers.
+ std::string* filename;
+ /// Current line number.
+ unsigned int line;
+ /// Current column number.
+ unsigned int column;
+
+ private:
+ /// Compute max(min, lhs+rhs) (provided min <= lhs).
+ static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min)
+ {
+ return (0 < rhs || -static_cast<unsigned int>(rhs) < lhs
+ ? rhs + lhs
+ : min);
+ }
+ };
+
+ /// Add \a width columns, in place.
+ inline position&
+ operator+= (position& res, int width)
+ {
+ res.columns (width);
+ return res;
+ }
+
+ /// Add \a width columns.
+ inline position
+ operator+ (position res, int width)
+ {
+ return res += width;
+ }
+
+ /// Subtract \a width columns, in place.
+ inline position&
+ operator-= (position& res, int width)
+ {
+ return res += -width;
+ }
+
+ /// Subtract \a width columns.
+ inline position
+ operator- (position res, int width)
+ {
+ return res -= width;
+ }
+
+ /// Compare two position objects.
+ inline bool
+ operator== (const position& pos1, const position& pos2)
+ {
+ return (pos1.line == pos2.line
+ && pos1.column == pos2.column
+ && (pos1.filename == pos2.filename
+ || (pos1.filename && pos2.filename
+ && *pos1.filename == *pos2.filename)));
+ }
+
+ /// Compare two position objects.
+ inline bool
+ operator!= (const position& pos1, const position& pos2)
+ {
+ return !(pos1 == pos2);
+ }
+
+ /** \brief Intercept output stream redirection.
+ ** \param ostr the destination output stream
+ ** \param pos a reference to the position to redirect
+ */
+ template <typename YYChar>
+ inline std::basic_ostream<YYChar>&
+ operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
+ {
+ if (pos.filename)
+ ostr << *pos.filename << ':';
+ return ostr << pos.line << '.' << pos.column;
+ }
+
+#line 14 "dhcp4_parser.yy" // location.cc:296
+} } // isc::dhcp
+#line 180 "position.hh" // location.cc:296
+#endif // !YY_PARSER4_POSITION_HH_INCLUDED
-// Generated 201811271343
-// 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.
-//
-// To get rid of this file:
-// 1. add 'require "3.2"' (or newer) to your grammar file
-// 2. remove references to this file from your build system.
+// A Bison parser, made by GNU Bison 3.0.4.
+
+// Stack handling for Bison parsers in C++
+
+// Copyright (C) 2002-2015 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
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+// As a special exception, you may create a larger work that contains
+// part or all of the Bison parser skeleton and distribute that work
+// under terms of your choice, so long as that work isn't itself a
+// parser generator using the skeleton or a modified version thereof
+// as a parser skeleton. Alternatively, if you modify or redistribute
+// the parser skeleton itself, you may (at your option) remove this
+// special exception, which will cause the skeleton and the resulting
+// Bison output files to be licensed under the GNU General Public
+// License without this special exception.
+
+// This special exception was added by the Free Software Foundation in
+// version 2.2 of Bison.
+
+/**
+ ** \file stack.hh
+ ** Define the isc::dhcp::stack class.
+ */
+
+#ifndef YY_PARSER4_STACK_HH_INCLUDED
+# define YY_PARSER4_STACK_HH_INCLUDED
+
+# include <vector>
+
+#line 14 "dhcp4_parser.yy" // stack.hh:132
+namespace isc { namespace dhcp {
+#line 46 "stack.hh" // stack.hh:132
+ template <class T, class S = std::vector<T> >
+ class stack
+ {
+ public:
+ // Hide our reversed order.
+ typedef typename S::reverse_iterator iterator;
+ typedef typename S::const_reverse_iterator const_iterator;
+
+ stack ()
+ : seq_ ()
+ {
+ seq_.reserve (200);
+ }
+
+ stack (unsigned int n)
+ : seq_ (n)
+ {}
+
+ inline
+ T&
+ operator[] (unsigned int i)
+ {
+ return seq_[seq_.size () - 1 - i];
+ }
+
+ inline
+ const T&
+ operator[] (unsigned int i) const
+ {
+ return seq_[seq_.size () - 1 - i];
+ }
+
+ /// Steal the contents of \a t.
+ ///
+ /// Close to move-semantics.
+ inline
+ void
+ push (T& t)
+ {
+ seq_.push_back (T());
+ operator[](0).move (t);
+ }
+
+ inline
+ void
+ pop (unsigned int n = 1)
+ {
+ for (; n; --n)
+ seq_.pop_back ();
+ }
+
+ void
+ clear ()
+ {
+ seq_.clear ();
+ }
+
+ inline
+ typename S::size_type
+ size () const
+ {
+ return seq_.size ();
+ }
+
+ inline
+ const_iterator
+ begin () const
+ {
+ return seq_.rbegin ();
+ }
+
+ inline
+ 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 T, class S = stack<T> >
+ class slice
+ {
+ public:
+ slice (const S& stack, unsigned int range)
+ : stack_ (stack)
+ , range_ (range)
+ {}
+
+ inline
+ const T&
+ operator [] (unsigned int i) const
+ {
+ return stack_[range_ - i];
+ }
+
+ private:
+ const S& stack_;
+ unsigned int range_;
+ };
+
+#line 14 "dhcp4_parser.yy" // stack.hh:132
+} } // isc::dhcp
+#line 156 "stack.hh" // stack.hh:132
+
+#endif // !YY_PARSER4_STACK_HH_INCLUDED
-// 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
#include <dhcpsrv/testutils/test_config_backend_dhcp4.h>
#include <process/config_ctl_info.h>
#include <hooks/hooks_manager.h>
+#include <util/doubles.h>
#include "marker_file.h"
#include "test_libraries.h"
" } \n"
" ] \n"
" } \n"
- "} \n"
+ "} \n",
+
};
class Dhcp4ParserTest : public ::testing::Test {
}
}
+// Checks inheritence of calculate-tee-times, t1-perecent, t2-percent
+TEST_F(Dhcp4ParserTest, calculatTeeTimesInheritence) {
+ // Configure the server. This should succeed.
+ string config =
+ "{ \n"
+ " \"interfaces-config\": { \n"
+ " \"interfaces\": [\"*\" ] \n"
+ " }, \n"
+ " \"valid-lifetime\": 4000, \n"
+ " \"shared-networks\": [ { \n"
+ " \"name\": \"foo\", \n"
+ " \"calculate-tee-times\": true, \n"
+ " \"t1-percent\": .4, \n"
+ " \"t2-percent\": .75,\n"
+ " \"subnet4\": ["
+ " { "
+ " \"id\": 100,"
+ " \"subnet\": \"192.0.1.0/24\", \n"
+ " \"pools\": [ { \"pool\": \"192.0.1.1-192.0.1.10\" } ], \n"
+ " \"calculate-tee-times\": false,\n"
+ " \"t1-percent\": .45, \n"
+ " \"t2-percent\": .65 \n"
+ " }, \n"
+ " { \n"
+ " \"id\": 200, \n"
+ " \"subnet\": \"192.0.2.0/24\", \n"
+ " \"pools\": [ { \"pool\": \"192.0.2.1-192.0.2.10\"} ] \n"
+ " } \n"
+ " ] \n"
+ " } ], \n"
+ " \"subnet4\": [ { \n"
+ " \"id\": 300, \n"
+ " \"subnet\": \"192.0.3.0/24\", \n"
+ " \"pools\": [ { \"pool\": \"192.0.3.0 - 192.0.3.15\" } ]\n"
+ " } ] \n"
+ "} \n";
+
+ extractConfig(config);
+ configure(config, CONTROL_RESULT_SUCCESS, "");
+
+ CfgSubnets4Ptr subnets4 = CfgMgr::instance().getStagingCfg()->getCfgSubnets4();
+
+ // Subnet 100 should use it's own explicit values.
+ ConstSubnet4Ptr subnet4 = subnets4->getBySubnetId(100);
+ ASSERT_TRUE(subnet4);
+ EXPECT_EQ(false, subnet4->getCalculateTeeTimes());
+ EXPECT_TRUE(util::areDoublesEquivalent(0.45, subnet4->getT1Percent()));
+ EXPECT_TRUE(util::areDoublesEquivalent(0.65, subnet4->getT2Percent()));
+
+ // Subnet 200 should use the shared-network values.
+ subnet4 = subnets4->getBySubnetId(200);
+ ASSERT_TRUE(subnet4);
+ EXPECT_EQ(true, subnet4->getCalculateTeeTimes());
+ EXPECT_TRUE(util::areDoublesEquivalent(0.4, subnet4->getT1Percent()));
+ EXPECT_TRUE(util::areDoublesEquivalent(0.75, subnet4->getT2Percent()));
+
+ // Subnet 300 should use the global values.
+ subnet4 = subnets4->getBySubnetId(300);
+ ASSERT_TRUE(subnet4);
+ EXPECT_EQ(false, subnet4->getCalculateTeeTimes());
+ EXPECT_TRUE(util::areDoublesEquivalent(0.5, subnet4->getT1Percent()));
+ EXPECT_TRUE(util::areDoublesEquivalent(0.875, subnet4->getT2Percent()));
+}
+
+
}
-// 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
}
// Check that option 58 and 59 are only included if they were specified
-// and T2 is less than valid lft; T1 is less than T2 (if given) or valid
+// (and calculate-tee-times = false) and the values are sane:
+// T2 is less than valid lft; T1 is less than T2 (if given) or valid
// lft if T2 is not given.
TEST_F(Dhcpv4SrvTest, DiscoverTimers) {
IfaceMgrTestConfig test_config(true);
}
+// Check that option 58 and 59 are included when calculate-tee-times
+// is enabled, but only when they are not explicitly specified via
+// renew-timer and rebinding-timer. This test does not check whether
+// the subnet's for t1-percent and t2-percent are valid, as this is
+// enforced by parsing and tested elsewhere.
+TEST_F(Dhcpv4SrvTest, calculateTeeTimers) {
+ IfaceMgrTestConfig test_config(true);
+ IfaceMgr::instance().openSockets4();
+
+ boost::scoped_ptr<NakedDhcpv4Srv> srv;
+ ASSERT_NO_THROW(srv.reset(new NakedDhcpv4Srv(0)));
+
+ // Recreate subnet
+ Triplet<uint32_t> unspecified;
+ Triplet<uint32_t> valid_lft(1000);
+ subnet_.reset(new Subnet4(IOAddress("192.0.2.0"), 24,
+ unspecified,
+ unspecified,
+ valid_lft));
+
+ pool_ = Pool4Ptr(new Pool4(IOAddress("192.0.2.100"),
+ IOAddress("192.0.2.110")));
+ subnet_->addPool(pool_);
+ CfgMgr::instance().clear();
+ CfgMgr::instance().getStagingCfg()->getCfgSubnets4()->add(subnet_);
+ CfgMgr::instance().commit();
+
+ // Struct for describing an individual timer test scenario
+ struct TimerTest {
+ // logged test description
+ std::string description_;
+ // configured value for subnet's T1
+ Triplet<uint32_t> cfg_t1_;
+ // configured value for subnet's T1
+ Triplet<uint32_t> cfg_t2_;
+ // configured value for sunbet's t1_percent.
+ double t1_percent_;
+ // configured value for sunbet's t2_percent.
+ double t2_percent_;
+ // expected value for T1 in server response.
+ // A value of 0 means server should not have sent T1.
+ uint32_t t1_exp_value_;
+ // expected value for T2 in server response.
+ // A value of 0 means server should not have sent T2.
+ uint32_t t2_exp_value_;
+ };
+
+ // Convenience constant
+ uint32_t not_expected = 0;
+
+ // Test scenarios
+ std::vector<TimerTest> tests = {
+ {
+ "T1 and T2 calculated",
+ unspecified, unspecified,
+ 0.4, 0.8,
+ 400, 800
+ },
+ {
+ "T1 and T2 specified insane",
+ valid_lft + 1, valid_lft + 2,
+ 0.4, 0.8,
+ not_expected, not_expected
+ },
+ {
+ "T1 should be calculated, T2 specified",
+ unspecified, valid_lft - 1,
+ 0.4, 0.8,
+ 400, valid_lft - 1
+ },
+ {
+ "T1 specified, T2 should be calculated",
+ 299, unspecified,
+ 0.4, 0.8,
+ 299, 800
+ },
+ {
+ "T1 specified > T2, T2 should be calculated",
+ valid_lft - 1, unspecified,
+ 0.4, 0.8,
+ not_expected, 800
+ }
+ };
+
+ // Calculation is enabled for all the scenarios.
+ subnet_->setCalculateTeeTimes(true);
+
+ // Create a discover packet to use
+ Pkt4Ptr dis = Pkt4Ptr(new Pkt4(DHCPDISCOVER, 1234));
+ dis->setRemoteAddr(IOAddress("192.0.2.1"));
+ OptionPtr clientid = generateClientId();
+ dis->addOption(clientid);
+ dis->setIface("eth1");
+
+ // Iterate over the test scenarios.
+ for (auto test = tests.begin(); test != tests.end(); ++test) {
+ {
+ SCOPED_TRACE((*test).description_);
+ // Configure sunbet's timer values
+ subnet_->setT1((*test).cfg_t1_);
+ subnet_->setT2((*test).cfg_t2_);
+
+ subnet_->setT1Percent((*test).t1_percent_);
+ subnet_->setT2Percent((*test).t2_percent_);
+
+ // Discover/Offer exchange with the server
+ Pkt4Ptr offer = srv->processDiscover(dis);
+
+ // Verify we have an offer
+ checkResponse(offer, DHCPOFFER, 1234);
+
+ // Check T1 timer
+ OptionUint32Ptr opt = boost::dynamic_pointer_cast
+ <OptionUint32> (offer->getOption(DHO_DHCP_RENEWAL_TIME));
+
+ if ((*test).t1_exp_value_ == not_expected) {
+ EXPECT_FALSE(opt) << "T1 present and shouldn't be";
+ } else {
+ ASSERT_TRUE(opt) << "Required T1 option missing or it has"
+ " an unexpected type";
+ EXPECT_EQ(opt->getValue(), (*test).t1_exp_value_);
+ }
+
+ // Check T2 timer
+ opt = boost::dynamic_pointer_cast
+ <OptionUint32>(offer->getOption(DHO_DHCP_REBINDING_TIME));
+
+ if ((*test).t2_exp_value_ == not_expected) {
+ EXPECT_FALSE(opt) << "T2 present and shouldn't be";
+ } else {
+ ASSERT_TRUE(opt) << "Required T2 option missing or it has"
+ " an unexpected type";
+ EXPECT_EQ(opt->getValue(), (*test).t2_exp_value_);
+ }
+ }
+ }
+}
+
// This test verifies that incoming DISCOVER can be handled properly, that an
// OFFER is generated, that the response has an address and that address
-// Copyright (C) 2010-2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-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
void
DoubleElement::toJSON(std::ostream& ss) const {
- ss << doubleValue();
+ // The default output for doubles nicely drops off trailing
+ // zeros, however this produces strings without decimal points
+ // for whole number values. When reparsed this will create
+ // IntElements not DoubleElements. Rather than used a fixed
+ // precision, we'll just tack on an ".0" when the decimal point
+ // is missing.
+ ostringstream val_ss;
+ val_ss << doubleValue();
+ ss << val_ss.str();
+ if (val_ss.str().find_first_of('.') == string::npos) {
+ ss << ".0";
+ }
}
void
-// Copyright (C) 2016-2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2016-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
}
}
+double
+SimpleParser::getDouble(const isc::data::ConstElementPtr& scope,
+ const std::string& name) {
+ ConstElementPtr x = scope->get(name);
+ if (!x) {
+ isc_throw(DhcpConfigError,
+ "missing parameter '" << name << "' ("
+ << scope->getPosition() << ")");
+ }
+
+ if (x->getType() != Element::real) {
+ isc_throw(DhcpConfigError,
+ "invalid type specified for parameter '" << name
+ << "' (" << x->getPosition() << ")");
+ }
+
+ return (x->doubleValue());
+}
+
+
const data::Element::Position&
SimpleParser::getPosition(const std::string& name, const data::ConstElementPtr parent) {
if (!parent) {
-// Copyright (C) 2016-2017 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2016-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
static isc::asiolink::IOAddress
getAddress(const ConstElementPtr& scope, const std::string& name);
+ /// @brief Returns a floating point parameter from a scope
+ ///
+ /// Unconditionally returns a parameter.
+ ///
+ /// @param scope specified parameter will be extracted from this scope
+ /// @param name name of the parameter
+ /// @return a double value of the parameter
+ /// @throw DhcpConfigError if the parameter is not there or is not
+ /// an Element::real
+ static double getDouble(const ConstElementPtr& scope,
+ const std::string& name);
+
protected:
/// @brief Returns an integer value with range checking from a scope
-// Copyright (C) 2009-2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2009-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
// some json specific format tests, here the str() output is
// different from the string input
EXPECT_EQ("100", Element::fromJSON("+100")->str());
- EXPECT_EQ("100", Element::fromJSON("1e2")->str());
- EXPECT_EQ("100", Element::fromJSON("+1e2")->str());
- EXPECT_EQ("-100", Element::fromJSON("-1e2")->str());
+ EXPECT_EQ("100.0", Element::fromJSON("1e2")->str());
+ EXPECT_EQ("100.0", Element::fromJSON("+1e2")->str());
+ EXPECT_EQ("-100.0", Element::fromJSON("-1e2")->str());
EXPECT_NO_THROW({
EXPECT_EQ("9223372036854775807", Element::fromJSON("9223372036854775807")->str());
EXPECT_EQ("0.01", Element::fromJSON(".01")->str());
EXPECT_EQ("-0.01", Element::fromJSON("-1e-2")->str());
EXPECT_EQ("1.2", Element::fromJSON("1.2")->str());
- EXPECT_EQ("1", Element::fromJSON("1.0")->str());
- EXPECT_EQ("120", Element::fromJSON("1.2e2")->str());
- EXPECT_EQ("100", Element::fromJSON("1.0e2")->str());
- EXPECT_EQ("100", Element::fromJSON("1.0E2")->str());
+ EXPECT_EQ("1.0", Element::fromJSON("1.0")->str());
+ EXPECT_EQ("120.0", Element::fromJSON("1.2e2")->str());
+ EXPECT_EQ("100.0", Element::fromJSON("1.0e2")->str());
+ EXPECT_EQ("100.0", Element::fromJSON("1.0E2")->str());
EXPECT_EQ("0.01", Element::fromJSON("1.0e-2")->str());
EXPECT_EQ("0.012", Element::fromJSON("1.2e-2")->str());
EXPECT_EQ("0.012", Element::fromJSON("1.2E-2")->str());
EXPECT_NE(*efs("1"), *efs("[]"));
EXPECT_NE(*efs("1"), *efs("true"));
EXPECT_NE(*efs("1"), *efs("{}"));
-
EXPECT_EQ(*efs("1.1"), *efs("1.1"));
EXPECT_NE(*efs("1.0"), *efs("1"));
EXPECT_NE(*efs("1.1"), *efs("\"1\""));
-// Copyright (C) 2016-2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2016-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
EXPECT_NO_THROW(val = parser.getAddress(v6, "foo"));
EXPECT_EQ("2001:db8::1" , val.toText());
}
+
+// This test exercises getDouble()
+TEST_F(SimpleParserTest, getDouble) {
+
+ SimpleParserClassTest parser;
+ std::string json =
+ "{\n"
+ " \"string\" : \"12.3\",\n"
+ " \"bool\" : true, \n"
+ " \"int\" : 777, \n"
+ " \"map\" : {}, \n"
+ " \"list\" : [], \n"
+ " \"zero\" : 0.0, \n"
+ " \"fraction\" : .75, \n"
+ " \"negative\" : -1.45, \n"
+ " \"positive\" : 346.7 \n"
+ "}\n";
+
+ // Create our test set of parameters.
+ ElementPtr elems;
+ ASSERT_NO_THROW(elems = Element::fromJSON(json)) << " invalid JSON, test is broken";
+
+ // Verify that a non-existant element is caught.
+ EXPECT_THROW(parser.getDouble(elems, "not-there"), DhcpConfigError);
+
+ // Verify that wrong element types are caught.
+ EXPECT_THROW(parser.getDouble(elems, "string"), DhcpConfigError);
+ EXPECT_THROW(parser.getDouble(elems, "int"), DhcpConfigError);
+ EXPECT_THROW(parser.getDouble(elems, "bool"), DhcpConfigError);
+ EXPECT_THROW(parser.getDouble(elems, "map"), DhcpConfigError);
+ EXPECT_THROW(parser.getDouble(elems, "list"), DhcpConfigError);
+
+ // Verify valid values are correct.
+ double value;
+
+ EXPECT_NO_THROW(value = parser.getDouble(elems, "zero"));
+ EXPECT_EQ(0.0, value);
+
+ EXPECT_NO_THROW(value = parser.getDouble(elems, "fraction"));
+ EXPECT_EQ(.75, value);
+
+ EXPECT_NO_THROW(value = parser.getDouble(elems, "negative"));
+ EXPECT_EQ(-1.45, value);
+
+ EXPECT_NO_THROW(value = parser.getDouble(elems, "positive"));
+ EXPECT_EQ(346.7, value);
+}
-// Copyright (C) 2017-2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2017-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
ConstCfgOptionPtr opts = getCfgOption();
map->set("option-data", opts->toElement());
+ // Output calcualte-tee-times and percentages if calculation is enabled.
+ bool calc_tee_times = getCalculateTeeTimes();
+ if (calc_tee_times) {
+ map->set("calculate-tee-times", Element::create(calc_tee_times));
+ map->set("t1-percent", Element::create(getT1Percent()));
+ map->set("t2-percent", Element::create(getT2Percent()));
+ }
+
return (map);
}
-// Copyright (C) 2017-2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2017-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
/// @brief Constructor.
Network()
: iface_name_(), client_class_(""), t1_(), t2_(), valid_(),
- host_reservation_mode_(HR_ALL), cfg_option_(new CfgOption()) {
+ host_reservation_mode_(HR_ALL), cfg_option_(new CfgOption()),
+ calculate_tee_times_(false), t1_percent_(0.0), t2_percent_(0.0) {
}
/// @brief Virtual destructor.
host_reservation_mode_ = mode;
}
- /// @brief Returns pointer to the option data configuration for this subnet.
+ /// @brief Returns pointer to the option data configuration for this network.
CfgOptionPtr getCfgOption() {
return (cfg_option_);
}
/// @brief Returns const pointer to the option data configuration for this
- /// subnet.
+ /// network.
ConstCfgOptionPtr getCfgOption() const {
return (cfg_option_);
}
+ /// @brief Returns whether or not T1/T2 calculation is enabled.
+ bool getCalculateTeeTimes() const {
+ return (calculate_tee_times_);
+ }
+
+ /// @brief Sets whether or not T1/T2 calculation is enabled.
+ ///
+ /// @param calculate_tee_times new value of enabled/disabled
+ void setCalculateTeeTimes(const bool& calculate_tee_times) {
+ calculate_tee_times_ = calculate_tee_times;
+ }
+
+ /// @brief Returns percentage to use when calculating the T1 (renew timer).
+ double getT1Percent() const {
+ return (t1_percent_);
+ }
+
+ /// @brief Sets new precentage for calculating T1 (renew timer).
+ ///
+ /// @param t1_percent New percentage to use.
+ void setT1Percent(const double& t1_percent) {
+ t1_percent_ = t1_percent;
+ }
+
+ /// @brief Returns percentage to use when calculating the T2 (rebind timer).
+ double getT2Percent() const {
+ return (t2_percent_);
+ }
+
+ /// @brief Sets new precentage for calculating T2 (rebind timer).
+ ///
+ /// @param t2_percent New percentage to use.
+ void setT2Percent(const double& t2_percent) {
+ t2_percent_ = t2_percent;
+ }
+
/// @brief Unparses network object.
///
/// @return A pointer to unparsed network configuration.
/// @brief Pointer to the option data configuration for this subnet.
CfgOptionPtr cfg_option_;
+
+ /// @brief Enables calculation of T1 and T2 timers
+ bool calculate_tee_times_;
+
+ /// @brief Percentage of the lease lifetime to use when calculating T1 timer
+ double t1_percent_;
+
+ /// @brief Percentage of the lease lifetime to use when calculating T2 timer
+ double t2_percent_;
};
/// @brief Pointer to the @ref Network object.
-// Copyright (C) 2013-2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-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 <config.h>
+// 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 <config.h>
#include <dhcp/iface_mgr.h>
#include <dhcp/libdhcp++.h>
#include <dhcpsrv/cfgmgr.h>
// Copy options to the subnet configuration.
options_->copyTo(*subnet4->getCfgOption());
+
+ bool calculate_tee_times = getBoolean(params, "calculate-tee-times");
+ subnet4->setCalculateTeeTimes(calculate_tee_times);
+ float t2_percent = getDouble(params, "t2-percent");
+ float t1_percent = getDouble(params, "t1-percent");
+ if (calculate_tee_times) {
+ if (t2_percent <= 0.0 || t2_percent >= 1.0) {
+ isc_throw(DhcpConfigError, "t2-percent: " << t2_percent
+ << " is invalid, it must be greater than 0.0 and less than 1.0");
+ }
+
+ if (t1_percent <= 0.0 || t1_percent >= 1.0) {
+ isc_throw(DhcpConfigError, "t1-percent: " << t1_percent
+ << " is invalid it must be greater than 0.0 and less than 1.0");
+ }
+
+ if (t1_percent >= t2_percent) {
+ isc_throw(DhcpConfigError, "t1-percent: " << t1_percent
+ << " is invalid, it must be less than t2-percent: " << t2_percent);
+ }
+
+ }
+
+ subnet4->setT2Percent(t2_percent);
+ subnet4->setT1Percent(t1_percent);
}
//**************************** Subnets4ListConfigParser **********************
-// Copyright (C) 2016-2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2016-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
{ "server-hostname", Element::string, "" },
{ "boot-file-name", Element::string, "" },
{ "server-tag", Element::string, "" },
- { "reservation-mode", Element::string, "all" }
+ { "reservation-mode", Element::string, "all" },
+ { "calculate-tee-times", Element::boolean, "false" },
+ { "t1-percent", Element::real, ".50" },
+ { "t2-percent", Element::real, ".875" }
};
/// @brief This table defines default values for each IPv4 subnet.
"renew-timer",
"reservation-mode",
"server-hostname",
- "valid-lifetime"
+ "valid-lifetime",
+ "calculate-tee-times",
+ "t1-percent",
+ "t2-percent"
};
/// @brief This table defines default values for dhcp-queue-control in DHCPv4.
-// Copyright (C) 2017-2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2017-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
network1->setIface("eth0");
network1->addRelayAddress(IOAddress("198.16.1.1"));
network1->addRelayAddress(IOAddress("198.16.1.2"));
+ network1->setCalculateTeeTimes(true);
+ network1->setT1Percent(.35);
+ network1->setT2Percent(.655);
network2->setIface("eth1");
network2->setT1(Triplet<uint32_t>(100));
" },\n"
" {\n"
" \"authoritative\": false,\n"
+ " \"calculate-tee-times\": true,\n"
" \"interface\": \"eth0\",\n"
" \"match-client-id\": true,\n"
" \"name\": \"frog\",\n"
" \"option-data\": [ ],\n"
" \"relay\": { \"ip-addresses\": [ \"198.16.1.1\", \"198.16.1.2\" ] },\n"
" \"reservation-mode\": \"all\","
- " \"subnet4\": [ ]\n"
+ " \"subnet4\": [ ],\n"
+ " \"t1-percent\": .35,\n"
+ " \"t2-percent\": .655\n"
" }\n"
"]\n";
-// Copyright (C) 2014-2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2014-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
#include <dhcp/option_definition.h>
#include <dhcp/option_space.h>
#include <dhcp/tests/iface_mgr_test_config.h>
+#include <dhcpsrv/parsers/dhcp_parsers.h>
#include <dhcpsrv/shared_network.h>
#include <dhcpsrv/cfg_subnets4.h>
#include <dhcpsrv/subnet.h>
#include <dhcpsrv/subnet_id.h>
#include <dhcpsrv/subnet_selector.h>
#include <testutils/test_to_element.h>
+#include <util/doubles.h>
+
#include <gtest/gtest.h>
#include <vector>
Subnet4Ptr subnet1(new Subnet4(IOAddress("192.0.2.0"), 26, 1, 2, 3, 123));
Subnet4Ptr subnet2(new Subnet4(IOAddress("192.0.2.64"), 26, 1, 2, 3, 124));
Subnet4Ptr subnet3(new Subnet4(IOAddress("192.0.2.128"), 26, 1, 2, 3, 125));
+
subnet1->allowClientClass("foo");
+ // These two should not appear, as calculateTeeTimes should be false.
+ subnet1->setT1Percent(0.45);
+ subnet1->setT2Percent(0.70);
+
subnet2->setIface("lo");
subnet2->addRelayAddress(IOAddress("10.0.0.1"));
+
subnet3->setIface("eth1");
subnet3->requireClientClass("foo");
subnet3->requireClientClass("bar");
+ subnet3->setCalculateTeeTimes(true);
+ subnet3->setT1Percent(0.50);
+ subnet3->setT2Percent(0.65);
data::ElementPtr ctx1 = data::Element::fromJSON("{ \"comment\": \"foo\" }");
subnet1->setContext(ctx1);
" \"reservation-mode\": \"all\",\n"
" \"option-data\": [ ],\n"
" \"pools\": [ ]\n,"
- " \"require-client-classes\": [ \"foo\", \"bar\" ]\n"
+ " \"require-client-classes\": [ \"foo\", \"bar\" ],\n"
+ " \"calculate-tee-times\": true,\n"
+ " \"t1-percent\": 0.50,\n"
+ " \"t2-percent\": 0.65\n"
"} ]\n";
runToElementTest<CfgSubnets4>(expected, cfg);
}
EXPECT_FALSE(cfg.hasSubnetWithServerId(IOAddress("2.3.4.5")));
}
+// This test verifies the Subnet4 parser's validation logic for
+// t1-percent and t2-percent parameters.
+TEST(CfgSubnets4Test, teeTimePercentValidation) {
+
+ // Describes a single test scenario.
+ struct Scenario {
+ std::string label; // label used for logging test failures
+ bool calculate_tee_times; // value of calculate-tee-times parameter
+ double t1_percent; // value of t1-percent parameter
+ double t2_percent; // value of t2-percent parameter
+ std::string error_message; // expected error message is parsing should fail
+ };
+
+ // Test Scenarios.
+ std::vector<Scenario> tests = {
+ {"off and valid", false, .5, .95, ""},
+ {"on and valid", true, .5, .95, ""},
+ {"t2_negative", true, .5, -.95,
+ "subnet configuration failed: t2-percent:"
+ " -0.95 is invalid, it must be greater than 0.0 and less than 1.0"
+ },
+ {"t2_too_big", true, .5, 1.95,
+ "subnet configuration failed: t2-percent:"
+ " 1.95 is invalid, it must be greater than 0.0 and less than 1.0"
+ },
+ {"t1_negative", true, -.5, .95,
+ "subnet configuration failed: t1-percent:"
+ " -0.5 is invalid it must be greater than 0.0 and less than 1.0"
+ },
+ {"t1_too_big", true, 1.5, .95,
+ "subnet configuration failed: t1-percent:"
+ " 1.5 is invalid it must be greater than 0.0 and less than 1.0"
+ },
+ {"t1_bigger_than_t2", true, .85, .45,
+ "subnet configuration failed: t1-percent:"
+ " 0.85 is invalid, it must be less than t2-percent: 0.45"
+ }
+ };
+
+ // First we create a set of elements that provides all
+ // required for a Subnet4.
+ std::string json =
+ " {"
+ " \"id\": 1,\n"
+ " \"subnet\": \"10.1.2.0/24\", \n"
+ " \"interface\": \"\", \n"
+ " \"renew-timer\": 100, \n"
+ " \"rebind-timer\": 200, \n"
+ " \"valid-lifetime\": 300, \n"
+ " \"match-client-id\": false, \n"
+ " \"authoritative\": false, \n"
+ " \"next-server\": \"\", \n"
+ " \"server-hostname\": \"\", \n"
+ " \"boot-file-name\": \"\", \n"
+ " \"client-class\": \"\", \n"
+ " \"require-client-classes\": [] \n,"
+ " \"reservation-mode\": \"all\", \n"
+ " \"4o6-interface\": \"\", \n"
+ " \"4o6-interface-id\": \"\", \n"
+ " \"4o6-subnet\": \"\", \n"
+ " \"dhcp4o6-port\": 0, \n"
+ " \"decline-probation-period\": 86400 \n"
+ " }";
+
+
+ data::ElementPtr elems;
+ ASSERT_NO_THROW(elems = data::Element::fromJSON(json))
+ << "invalid JSON:" << json << "\n est is broken";
+
+ // Iterate over the test scenarios, verifying each prescribed
+ // outcome.
+ for (auto test = tests.begin(); test != tests.end(); ++test) {
+ {
+ SCOPED_TRACE("test: " + (*test).label);
+
+ // Set this scenario's configuration parameters
+ elems->set("calculate-tee-times", data::Element::create((*test).calculate_tee_times));
+ elems->set("t1-percent", data::Element::create((*test).t1_percent));
+ elems->set("t2-percent", data::Element::create((*test).t2_percent));
+
+ Subnet4Ptr subnet;
+ try {
+ // Attempt to parse the configuration.
+ Subnet4ConfigParser parser;
+ subnet = parser.parse(elems);
+ } catch (const std::exception& ex) {
+ if (!(*test).error_message.empty()) {
+ // We expected a failure, did we fail the correct way?
+ EXPECT_EQ((*test).error_message, ex.what());
+ } else {
+ // Should not have failed.
+ ADD_FAILURE() << "Scenario should not have failed: " << ex.what();
+ }
+
+ // Either way we're done with this scenario.
+ continue;
+ }
+
+ // We parsed correctly, make sure the values are right.
+ EXPECT_EQ((*test).calculate_tee_times, subnet->getCalculateTeeTimes());
+ EXPECT_TRUE(util::areDoublesEquivalent((*test).t1_percent, subnet->getT1Percent()));
+ EXPECT_TRUE(util::areDoublesEquivalent((*test).t2_percent, subnet->getT2Percent()));
+ }
+ }
+}
+
} // end of anonymous namespace
-// Copyright (C) 2017-2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2017-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
" \"4o6-subnet\": \"\","
" \"dhcp4o6-port\": 0,"
" \"decline-probation-period\": 86400,"
- " \"reservation-mode\": \"all\""
+ " \"reservation-mode\": \"all\","
+ " \"calculate-tee-times\": true,"
+ " \"t1-percent\": .45,"
+ " \"t2-percent\": .65"
" },"
" {"
" \"id\": 2,"
" \"4o6-subnet\": \"\","
" \"dhcp4o6-port\": 0,"
" \"decline-probation-period\": 86400,"
- " \"reservation-mode\": \"all\""
+ " \"reservation-mode\": \"all\","
+ " \"calculate-tee-times\": false,"
+ " \"t1-percent\": .40,"
+ " \"t2-percent\": .80"
" }"
" ]"
"}";
// Parse configuration specified above.
SharedNetwork4Parser parser;
SharedNetwork4Ptr network;
+
+ try {
+ network = parser.parse(config_element);
+ } catch (const std::exception& ex) {
+ std::cout << "kabook: " << ex.what() << std::endl;
+ }
+
ASSERT_NO_THROW(network = parser.parse(config_element));
ASSERT_TRUE(network);
libkea_util_la_SOURCES = boost_time_utils.h boost_time_utils.cc
libkea_util_la_SOURCES += buffer.h io_utilities.h
libkea_util_la_SOURCES += csv_file.h csv_file.cc
+libkea_util_la_SOURCES += doubles.h
libkea_util_la_SOURCES += filename.h filename.cc
libkea_util_la_SOURCES += hash.h
libkea_util_la_SOURCES += labeled_value.h labeled_value.cc
boost_time_utils.h \
buffer.h \
csv_file.h \
+ doubles.h \
filename.h \
hash.h \
io_utilities.h \
--- /dev/null
+// 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 DOUBLES_H
+#define DOUBLES_H
+
+#include <complex>
+
+namespace isc {
+namespace util {
+
+/// @brief Tests two doubles for equivalance within a given tolerance
+///
+/// @param a comparison operand one
+/// @param b comparison operand two
+/// @param tolerance the amount by which the two values may differ and
+/// still be considered "equal".
+/// @return True if the two values differ by less than the tolerance.
+inline bool areDoublesEquivalent(double a, double b, double tolerance=0.000001) {
+ return(std::abs(a - b) < tolerance);
+}
+
+} // namespace util
+} // namespace isc
+
+#endif // DOUBLES_H
run_unittests_SOURCES += boost_time_utils_unittest.cc
run_unittests_SOURCES += buffer_unittest.cc
run_unittests_SOURCES += csv_file_unittest.cc
+run_unittests_SOURCES += doubles_unittest.cc
run_unittests_SOURCES += fd_share_tests.cc
run_unittests_SOURCES += fd_tests.cc
run_unittests_SOURCES += filename_unittest.cc
--- /dev/null
+// 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 <config.h>
+
+#include <util/doubles.h>
+
+#include <gtest/gtest.h>
+
+using namespace std;
+using namespace isc;
+using namespace isc::util;
+
+namespace {
+
+// Excerises isc::util::areDoublesEquivalent().
+TEST(Doubles, areDoublesEquivalent) {
+ std::vector<uint8_t> data;
+
+ // Default tolerance is 0.000001
+ EXPECT_TRUE(areDoublesEquivalent( 1.0000000, 1.0000005));
+ EXPECT_FALSE(areDoublesEquivalent(1.0000000, 1.000005));
+
+ // Check custome tolerance.
+ EXPECT_TRUE(areDoublesEquivalent( 1.000, 1.005, 0.01));
+ EXPECT_FALSE(areDoublesEquivalent(1.000, 1.005, 0.001));
+}
+
+}