diff options
author | Marcin Siodelski <marcin@isc.org> | 2022-11-18 10:21:20 +0100 |
---|---|---|
committer | Marcin Siodelski <marcin@isc.org> | 2023-01-07 11:45:06 +0100 |
commit | 9571b8f80b24227a7615ad9436129d2fcf13a90d (patch) | |
tree | fcd4864c8ebc3bb9820b1f40a505064dec7a1fd1 | |
parent | [#969] Random allocator (diff) | |
download | kea-9571b8f80b24227a7615ad9436129d2fcf13a90d.tar.xz kea-9571b8f80b24227a7615ad9436129d2fcf13a90d.zip |
[#969] Configure allocator for DHCPv4
-rw-r--r-- | doc/examples/kea4/all-keys.json | 12 | ||||
-rw-r--r-- | src/bin/dhcp4/dhcp4_lexer.cc | 2542 | ||||
-rw-r--r-- | src/bin/dhcp4/dhcp4_lexer.ll | 11 | ||||
-rw-r--r-- | src/bin/dhcp4/dhcp4_parser.cc | 4397 | ||||
-rw-r--r-- | src/bin/dhcp4/dhcp4_parser.h | 1443 | ||||
-rw-r--r-- | src/bin/dhcp4/dhcp4_parser.yy | 13 | ||||
-rw-r--r-- | src/bin/dhcp4/json_config_parser.cc | 3 | ||||
-rw-r--r-- | src/bin/dhcp4/location.hh | 2 | ||||
-rw-r--r-- | src/bin/dhcp4/tests/dora_unittest.cc | 96 | ||||
-rw-r--r-- | src/bin/dhcp4/tests/get_config_unittest.cc | 371 | ||||
-rw-r--r-- | src/lib/dhcpsrv/cfg_globals.cc | 1 | ||||
-rw-r--r-- | src/lib/dhcpsrv/cfg_globals.h | 1 | ||||
-rw-r--r-- | src/lib/dhcpsrv/network.cc | 4 | ||||
-rw-r--r-- | src/lib/dhcpsrv/network.h | 25 | ||||
-rw-r--r-- | src/lib/dhcpsrv/parsers/dhcp_parsers.cc | 42 | ||||
-rw-r--r-- | src/lib/dhcpsrv/parsers/simple_parser4.cc | 11 | ||||
-rw-r--r-- | src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc | 16 | ||||
-rw-r--r-- | src/lib/dhcpsrv/tests/network_unittest.cc | 7 |
18 files changed, 4801 insertions, 4196 deletions
diff --git a/doc/examples/kea4/all-keys.json b/doc/examples/kea4/all-keys.json index 960c14e4ad..617d3a9fcc 100644 --- a/doc/examples/kea4/all-keys.json +++ b/doc/examples/kea4/all-keys.json @@ -12,6 +12,10 @@ // Kea DHCPv4 server configuration begins here. "Dhcp4": { + // Global flag selecting an IP address allocation strategy for all + // subnets. Use "random" for random allocation strategy. + "allocator": "iterative", + // Global authoritative flag to handle requests by clients for // unknown IP addresses (ignore if disabled, NAK if enabled). "authoritative": false, @@ -694,6 +698,10 @@ // networks group subnets together. "shared-networks": [ { + // A flag selecting an IP address allocation strategy for all + // subnets in this shared network. + "allocator": "random", + // Shared network level authoritative flag. "authoritative": false, @@ -825,6 +833,10 @@ // Prefix matched against source address. See RFC7341. "4o6-subnet": "2001:db8:1:1::/64", + // A flag selecting an IP address allocation strategy for + // the subnet. + "allocator": "iterative", + // Subnet level authoritative flag. "authoritative": false, diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc index d348dde3f1..2450ea84b0 100644 --- a/src/bin/dhcp4/dhcp4_lexer.cc +++ b/src/bin/dhcp4/dhcp4_lexer.cc @@ -328,6 +328,7 @@ typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; @@ -452,7 +453,7 @@ typedef size_t yy_size_t; #endif /* %if-not-reentrant */ -extern int yyleng; +extern yy_size_t yyleng; /* %endif */ /* %if-c-only */ @@ -505,7 +506,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -586,8 +587,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* %not-for-header */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = NULL; @@ -617,7 +618,7 @@ static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, yy_size_t len ); /* %endif */ @@ -685,14 +686,14 @@ static void yynoreturn yy_fatal_error ( const char* msg ); #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ - yyleng = (int) (yy_cp - yy_bp); \ + yyleng = (yy_size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 217 -#define YY_END_OF_BUFFER 218 +#define YY_NUM_RULES 218 +#define YY_END_OF_BUFFER 219 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -700,21 +701,21 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[2117] = +static const flex_int16_t yy_accept[2124] = { 0, - 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, - 218, 216, 10, 11, 216, 1, 210, 207, 210, 210, - 216, 209, 208, 216, 216, 216, 216, 216, 203, 204, - 216, 216, 216, 205, 206, 5, 5, 5, 216, 216, - 216, 10, 11, 0, 0, 198, 0, 0, 0, 0, + 211, 211, 0, 0, 0, 0, 0, 0, 0, 0, + 219, 217, 10, 11, 217, 1, 211, 208, 211, 211, + 217, 210, 209, 217, 217, 217, 217, 217, 204, 205, + 217, 217, 217, 206, 207, 5, 5, 5, 217, 217, + 217, 10, 11, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 210, 210, - 0, 209, 210, 3, 2, 6, 0, 210, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 9, 0, 199, + 0, 0, 0, 0, 0, 0, 0, 1, 211, 211, + 0, 210, 211, 3, 2, 6, 0, 211, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 9, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -724,11 +725,11 @@ static const flex_int16_t yy_accept[2117] = 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 202, 0, 0, 0, 0, + 0, 0, 0, 0, 201, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -736,205 +737,206 @@ static const flex_int16_t yy_accept[2117] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 215, 213, 0, 212, 211, 0, 0, 0, - 0, 0, 0, 0, 175, 0, 174, 0, 0, 95, + 0, 0, 216, 214, 0, 213, 212, 0, 0, 0, + 0, 0, 0, 0, 176, 0, 175, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, - 0, 0, 0, 0, 214, 211, 0, 0, 0, 0, - 0, 0, 176, 0, 178, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, - 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, - 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 0, 215, 212, 0, 0, 0, + 0, 0, 0, 177, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 0, 42, + 100, 0, 0, 0, 0, 0, 0, 82, 0, 0, + 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, + 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 118, 0, 0, 35, 0, 0, 39, 0, 0, 0, - 0, 0, 0, 12, 180, 179, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 35, 0, 0, 39, 0, + 0, 0, 0, 0, 0, 12, 181, 180, 0, 0, + 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 0, 0, 181, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 0, 0, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 138, 106, 0, 0, 0, 0, 0, 0, 111, - 36, 0, 0, 0, 0, 0, 47, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 113, 43, 0, + 0, 0, 0, 0, 0, 0, 139, 107, 0, 0, + 0, 0, 0, 0, 112, 36, 0, 0, 0, 0, + 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 114, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, + 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, - 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 40, 0, 0, 0, 0, 34, 0, + 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, + 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, + 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 54, 0, 0, 0, 124, 0, 0, + 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, + 54, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, + 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, + 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, - 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 164, 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, 185, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, - 0, 129, 0, 0, 0, 0, 0, 0, 0, 109, + 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 0, 0, 0, 0, 0, 0, 0, 130, 0, + 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, - 0, 23, 0, 134, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 167, 0, - 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, - 137, 0, 38, 0, 156, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 102, 103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, - 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 124, 0, 23, 0, + 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, + 79, 0, 0, 0, 0, 0, 0, 138, 0, 38, + + 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, + 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, + 0, 0, 56, 0, 0, 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, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 189, 0, 79, 93, + 0, 0, 0, 190, 0, 80, 94, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, + 0, 0, 0, 0, 0, 165, 0, 0, 163, 0, + 0, 154, 153, 0, 0, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 0, 178, 0, 0, 0, 0, + 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, + 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 136, 0, 15, 0, + 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, + + 61, 0, 0, 131, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 60, 0, 0, 0, 0, 0, 0, 164, 0, - 0, 162, 0, 0, 153, 152, 0, 0, 0, 0, - 0, 0, 0, 22, 0, 0, 0, 0, 177, 0, - 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, + 0, 53, 0, 86, 0, 184, 0, 0, 189, 0, + 106, 0, 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 146, 0, 0, 0, 155, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, - 0, 15, 0, 0, 44, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, - 0, 0, 0, 61, 0, 0, 130, 0, 0, 0, - - 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 53, 0, 85, 0, 183, 0, - 0, 188, 0, 105, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, + + 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, + 192, 0, 0, 116, 31, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, - - 0, 0, 0, 191, 0, 0, 115, 31, 0, 0, - 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 186, 0, 159, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, - 0, 28, 0, 0, 165, 0, 0, 0, 52, 0, - 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, + 0, 187, 0, 160, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 0, 28, 0, + 0, 166, 0, 0, 0, 52, 0, 0, 0, 0, + 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, + 105, 0, 0, 0, 45, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 57, 0, 0, 104, 0, 0, 0, 45, 0, 0, + 0, 0, 0, 137, 0, 0, 0, 30, 0, 0, + 0, 0, 188, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, - 30, 0, 0, 0, 0, 187, 0, 0, 0, 0, - 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, - 0, 190, 0, 77, 0, 48, 0, 0, 0, 184, - 182, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, - 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 144, 0, 0, 0, 120, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, - - 0, 49, 0, 0, 0, 0, 149, 0, 0, 0, - 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 150, 0, 160, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 21, 0, 0, 191, 0, + 78, 0, 48, 0, 0, 0, 185, 183, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, - 0, 59, 58, 20, 0, 168, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 172, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, + 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 91, 0, 0, 0, 0, 0, 49, 0, + 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, + 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 173, 0, 13, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 151, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 144, 0, 59, 58, + 20, 0, 169, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, - 0, 0, 0, 51, 0, 64, 0, 46, 170, 0, - 96, 0, 0, 0, 0, 0, 0, 0, 0, 76, - 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, - 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, - 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 0, 0, 0, 0, 0, + 51, 0, 64, 0, 46, 171, 0, 97, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, + 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 50, 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, 0, + + 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, + 73, 0, 0, 0, 0, 149, 0, 0, 0, 0, + 0, 194, 197, 170, 0, 117, 98, 0, 0, 0, + 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, + 0, 0, 146, 0, 71, 0, 62, 0, 0, 0, + 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, + 0, 0, 140, 0, 0, 174, 198, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 70, 0, 0, 0, 0, 27, 25, - 33, 0, 0, 72, 0, 0, 0, 0, 148, 0, - 0, 0, 0, 0, 193, 196, 169, 0, 116, 97, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, - 0, 0, 0, 0, 0, 145, 0, 70, 0, 62, - 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, - 0, 0, 0, 0, 0, 139, 0, 0, 173, 197, - 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, - 0, 27, 25, 0, 0, 0, 74, 0, 0, 100, - - 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 65, 0, 141, 26, 192, 0 + 0, 0, 0, 75, 0, 0, 101, 0, 67, 0, + 0, 0, 0, 0, 0, 0, 0, 66, 0, 142, + 26, 193, 0 } ; static const YY_CHAR yy_ec[256] = @@ -981,273 +983,274 @@ static const YY_CHAR yy_meta[74] = 1, 1, 1 } ; -static const flex_int16_t yy_base[2125] = +static const flex_int16_t yy_base[2132] = { 0, 0, 72, 21, 31, 43, 51, 54, 60, 91, 99, - 2504, 2505, 34, 2500, 145, 0, 207, 2505, 214, 221, - 13, 228, 2505, 2480, 118, 25, 2, 6, 2505, 2505, - 73, 11, 17, 2505, 2505, 2505, 104, 2488, 2441, 0, - 2478, 108, 2495, 24, 262, 2505, 2437, 67, 2443, 84, - 75, 88, 224, 91, 89, 290, 220, 2435, 206, 285, - 236, 204, 197, 60, 291, 2444, 247, 308, 315, 214, - 286, 2427, 212, 320, 344, 318, 2446, 0, 373, 394, - 387, 401, 415, 2505, 0, 2505, 420, 431, 236, 314, - 238, 326, 368, 309, 2505, 2443, 2484, 2505, 263, 2505, - - 437, 2471, 308, 2440, 395, 10, 388, 334, 401, 359, - 241, 2481, 0, 498, 400, 2423, 2420, 2424, 405, 2420, - 80, 2428, 405, 2414, 2415, 2420, 78, 2430, 2413, 2422, - 2412, 2421, 376, 395, 408, 2414, 2412, 412, 2460, 2464, - 2410, 2403, 2456, 2396, 174, 2417, 2417, 2411, 406, 2404, - 2402, 2403, 2395, 2400, 2394, 420, 2405, 450, 2390, 2389, - 2403, 429, 2389, 418, 433, 2383, 494, 427, 432, 2404, - 2401, 2402, 451, 2400, 2435, 2434, 469, 2381, 432, 2382, - 456, 2374, 2391, 2383, 0, 437, 475, 481, 473, 479, - 493, 2382, 2505, 2427, 506, 2376, 498, 498, 511, 2430, - - 523, 2429, 507, 2428, 2505, 2505, 560, 2427, 536, 2386, - 2378, 2365, 2376, 2380, 2381, 2361, 2372, 2376, 2373, 2372, - 502, 530, 2410, 2374, 2355, 2352, 2360, 2355, 2369, 2365, - 2356, 2352, 2364, 2364, 2355, 2358, 2338, 2342, 2355, 2357, - 2354, 2346, 2336, 2354, 2505, 2339, 2348, 472, 2386, 2332, - 2341, 2383, 2330, 2340, 2343, 553, 2339, 2378, 2323, 2325, - 2336, 2374, 2319, 2377, 2331, 2311, 2326, 543, 2316, 2322, - 523, 2313, 2311, 2311, 2317, 2308, 2307, 2314, 2304, 2363, - 2319, 2318, 2312, 508, 2319, 2314, 2306, 2296, 2311, 2310, - 2305, 2309, 2290, 2306, 2292, 2298, 2305, 2287, 509, 2292, - - 2289, 2288, 2287, 2282, 2296, 564, 2295, 2338, 2297, 508, - 2288, 553, 2505, 2505, 565, 2505, 2505, 2275, 548, 526, - 2323, 566, 2333, 559, 2505, 2332, 2505, 2326, 615, 2505, - 556, 2266, 2275, 2323, 2283, 2266, 2283, 2319, 2279, 2262, - 2268, 2320, 2275, 2278, 2269, 2272, 2258, 2269, 2313, 2307, - 2265, 2262, 588, 2268, 2308, 2243, 2301, 2254, 2249, 2246, - 2249, 2296, 2253, 2242, 2258, 2292, 2238, 612, 2252, 2237, - 2236, 2249, 2247, 2245, 2245, 2244, 2239, 2246, 2241, 2237, - 582, 2235, 2238, 2233, 2219, 2231, 2227, 2277, 573, 2271, - 2505, 2235, 2269, 2219, 2218, 2217, 2210, 2212, 2224, 2215, - - 2222, 2203, 2220, 2215, 592, 2262, 2215, 2212, 2215, 2505, - 2214, 2203, 2203, 2215, 562, 2190, 2191, 2212, 2203, 2193, - 2244, 2189, 2203, 596, 2189, 2201, 2200, 2199, 2194, 2236, - 2196, 2195, 2194, 2193, 2185, 2235, 2194, 2174, 2232, 2505, - 2174, 2173, 641, 2186, 2505, 2505, 2185, 2174, 2166, 591, - 2225, 2224, 2505, 2223, 2505, 619, 667, 622, 2222, 2164, - 2175, 2214, 2167, 2169, 2171, 2158, 2166, 2154, 2505, 2159, - 2152, 2164, 2167, 2154, 2153, 2505, 636, 2155, 2152, 605, - 2150, 2152, 2505, 2197, 2159, 2156, 2141, 2154, 2154, 2148, - 662, 2155, 2143, 2136, 2187, 2505, 2134, 2150, 2184, 2145, - - 2143, 2141, 2142, 2126, 2135, 2177, 2128, 2127, 2122, 2121, - 2172, 2116, 610, 2135, 2109, 2116, 2121, 2131, 2165, 2169, - 2505, 2114, 2110, 2108, 2117, 2116, 2110, 2117, 2101, 2101, - 2111, 2099, 2113, 2113, 2101, 2097, 2095, 2505, 2152, 2505, - 2094, 2105, 2144, 2089, 2094, 2103, 2097, 2091, 2100, 2142, - 2136, 2098, 2082, 2077, 2097, 2072, 2078, 624, 2092, 2085, - 2089, 2072, 2130, 2071, 2071, 2122, 2067, 2068, 2067, 2083, - 2505, 2079, 2116, 2505, 2067, 2065, 2505, 2076, 2112, 2072, - 2056, 2073, 2113, 2505, 2505, 2505, 615, 642, 668, 2505, - 2064, 2063, 639, 2070, 2050, 2060, 2102, 2047, 2100, 2045, - - 2055, 2097, 2042, 2049, 2042, 2054, 2036, 2036, 2051, 2050, - 642, 2049, 2048, 2048, 2030, 2035, 2076, 2043, 2040, 2034, - 2079, 2023, 2039, 2037, 2037, 2505, 2022, 2019, 2077, 2032, - 2024, 2030, 2021, 2029, 2014, 2065, 2029, 2011, 2023, 2015, - 552, 2006, 2005, 1999, 2004, 2019, 2016, 2017, 1996, 2006, - 2012, 2055, 2010, 2002, 1993, 2505, 1994, 1996, 2005, 1997, - 2002, 2041, 2040, 1991, 16, 2000, 2037, 1982, 2035, 1982, - 1985, 1978, 2505, 1992, 1971, 1975, 1989, 1981, 2026, 1978, - 1985, 2023, 2505, 1968, 1982, 1981, 1984, 1965, 2017, 2016, - 1963, 2014, 1974, 1958, 2011, 2010, 2505, 1955, 1969, 1968, - - 695, 1969, 1968, 1950, 2003, 1967, 1962, 1945, 1950, 1952, - 2505, 1958, 1948, 2505, 670, 586, 1938, 188, 217, 243, - 311, 307, 314, 384, 471, 608, 671, 631, 610, 660, - 648, 661, 631, 651, 670, 675, 661, 664, 675, 676, - 660, 717, 670, 680, 683, 721, 684, 677, 682, 679, - 681, 728, 691, 736, 693, 694, 2505, 698, 693, 684, - 699, 704, 701, 689, 705, 704, 692, 706, 704, 712, - 748, 710, 755, 756, 706, 698, 708, 755, 713, 763, - 2505, 764, 717, 719, 715, 709, 712, 770, 766, 729, - 718, 731, 2505, 721, 732, 721, 734, 724, 737, 781, - - 782, 725, 736, 721, 744, 723, 729, 784, 748, 732, - 744, 788, 789, 736, 791, 755, 750, 755, 753, 797, - 739, 751, 754, 758, 750, 747, 2505, 811, 770, 771, - 772, 762, 765, 776, 761, 768, 774, 766, 780, 820, - 796, 783, 788, 785, 767, 774, 788, 833, 790, 787, - 788, 786, 795, 2505, 791, 786, 801, 798, 784, 786, - 805, 802, 790, 797, 798, 807, 811, 847, 809, 800, - 798, 797, 808, 804, 860, 807, 818, 803, 804, 810, - 826, 816, 863, 2505, 827, 827, 820, 831, 829, 874, - 816, 818, 837, 834, 822, 820, 882, 839, 825, 831, - - 829, 2505, 2505, 839, 844, 849, 837, 847, 849, 2505, - 2505, 850, 837, 855, 842, 836, 2505, 841, 859, 846, - 896, 847, 899, 845, 849, 867, 908, 2505, 2505, 853, - 857, 856, 853, 913, 866, 856, 857, 853, 866, 877, - 878, 873, 874, 876, 869, 871, 867, 873, 873, 875, - 890, 873, 932, 889, 894, 871, 894, 880, 879, 2505, - 886, 887, 936, 888, 901, 939, 897, 887, 902, 903, - 890, 922, 930, 899, 894, 949, 950, 912, 952, 2505, - 958, 901, 917, 921, 962, 912, 911, 906, 907, 919, - 914, 910, 913, 914, 924, 933, 970, 917, 936, 928, - - 923, 981, 938, 939, 930, 2505, 944, 933, 936, 944, - 946, 931, 947, 944, 942, 989, 955, 939, 940, 2505, - 956, 959, 942, 953, 1002, 945, 964, 2505, 963, 966, - 952, 947, 965, 1005, 963, 959, 956, 1009, 1010, 972, - 958, 976, 975, 976, 962, 977, 969, 976, 966, 984, - 983, 970, 987, 2505, 979, 985, 988, 1033, 2505, 982, - 987, 1031, 983, 995, 989, 990, 988, 990, 1000, 1045, - 989, 990, 990, 1049, 993, 1005, 998, 2505, 994, 1002, - 1000, 1051, 993, 1014, 1000, 1002, 1003, 1009, 1017, 1008, - 1013, 1023, 1024, 1029, 1070, 1042, 1047, 1029, 1026, 1022, - - 1036, 1019, 1019, 2505, 1020, 1080, 1023, 2505, 1034, 1024, - 1044, 1043, 1034, 1045, 1088, 1049, 1042, 1046, 1050, 1033, - 1050, 1041, 1096, 1043, 2505, 1093, 1042, 1045, 1063, 1045, - 1046, 1046, 1067, 1064, 1069, 1057, 1071, 1057, 1065, 1074, - 1054, 1069, 1076, 1118, 1114, 2505, 1120, 1121, 1063, 1073, - 1083, 1067, 1087, 1075, 1071, 1078, 1087, 1075, 1082, 1083, - 1095, 1136, 1083, 1081, 1083, 1100, 1141, 1091, 1090, 1096, - 1094, 1092, 1087, 1148, 1099, 1150, 1146, 1152, 2505, 1109, - 1102, 1093, 1112, 1100, 1110, 1111, 1107, 1120, 1120, 2505, - 1104, 1100, 1107, 2505, 1108, 1168, 1127, 1108, 1127, 1128, - - 1130, 1169, 1122, 1176, 1177, 1134, 1128, 1126, 1137, 1136, - 1120, 1125, 1143, 2505, 1165, 1156, 1188, 1128, 1150, 1145, - 1145, 1149, 1194, 2505, 1137, 1137, 1140, 1157, 1152, 1156, - 1151, 2505, 1143, 1160, 1140, 1161, 1151, 1202, 1155, 2505, - 1169, 1169, 1207, 1154, 1163, 1211, 1169, 1174, 1160, 1220, - 1163, 1177, 1175, 1167, 1173, 1169, 1187, 1188, 1189, 2505, - 1179, 2505, 1189, 2505, 1174, 1185, 1176, 1195, 1188, 1186, - 1179, 1191, 1235, 1199, 1188, 1195, 1196, 1202, 2505, 1195, - 1247, 1188, 1249, 2505, 1250, 1192, 1198, 1205, 1249, 1211, - 2505, 1212, 2505, 1199, 2505, 1201, 1215, 1220, 1203, 1262, - - 1219, 1220, 1260, 1212, 1217, 1268, 1264, 1217, 1271, 2505, - 1222, 1219, 1274, 1275, 1232, 1233, 1235, 2505, 2505, 1221, - 1275, 1224, 1240, 1283, 1225, 1237, 1242, 1257, 1288, 2505, - 1245, 1238, 1247, 1238, 1249, 2505, 1294, 1231, 1242, 1257, - 1293, 1245, 1256, 1257, 1258, 1255, 1299, 1262, 1252, 1262, - 1268, 1255, 1251, 1311, 1307, 1265, 1309, 1316, 1273, 2505, - 1275, 1266, 1269, 1278, 1279, 1276, 1266, 1269, 1269, 1280, - 1275, 1330, 1277, 1332, 1275, 1280, 1335, 1331, 1272, 1288, - 1281, 1284, 1297, 1298, 1296, 1345, 2505, 1298, 2505, 2505, - 1304, 1296, 1306, 1291, 1347, 1294, 1294, 1355, 1299, 1309, - - 1358, 2505, 1306, 1307, 1309, 1362, 1303, 1306, 2505, 1324, - 1325, 2505, 1325, 1313, 2505, 2505, 1326, 1309, 1329, 1315, - 1317, 1376, 1326, 2505, 1378, 1327, 1380, 1360, 2505, 1382, - 1339, 1384, 1335, 1382, 2505, 1330, 1389, 1339, 1333, 1330, - 1333, 1335, 1352, 1391, 1344, 1356, 1359, 1347, 1350, 1343, - 1350, 1341, 2505, 1349, 1364, 1349, 2505, 1351, 1352, 1406, - 1368, 1368, 1371, 1371, 1368, 1412, 1374, 1366, 1367, 2505, - 1368, 2505, 1378, 1370, 2505, 1376, 1381, 1382, 1379, 1423, - 1371, 1386, 1387, 1379, 2505, 1376, 1377, 1377, 1383, 1382, - 1380, 1434, 1395, 2505, 1436, 1383, 2505, 1384, 1385, 1391, - - 2505, 1400, 1394, 1449, 1396, 1389, 1401, 1396, 1406, 1417, - 1410, 1416, 1460, 1413, 2505, 1422, 2505, 1419, 2505, 1416, - 1439, 2505, 1466, 2505, 1424, 1409, 1469, 2505, 1470, 1427, - 1432, 1414, 1474, 1470, 1434, 1431, 1427, 1420, 1475, 1433, - 1434, 1424, 1429, 1441, 1486, 1441, 1489, 1485, 1449, 1450, - 1446, 1490, 1438, 1443, 1441, 1500, 1451, 1457, 1445, 1504, - 1500, 1463, 1507, 1468, 1457, 1451, 1511, 1453, 1454, 1468, - 1471, 1471, 1517, 1459, 1476, 1472, 1470, 1477, 1461, 1519, - 1520, 1521, 1484, 1477, 1476, 1476, 1471, 1489, 2505, 1480, - 1486, 1491, 1478, 1479, 1478, 1480, 1535, 2505, 1476, 1494, - - 1543, 1501, 1514, 2505, 1546, 1499, 2505, 2505, 1490, 1501, - 1550, 2505, 1496, 1501, 1499, 1549, 1507, 1512, 1500, 1517, - 1506, 1504, 1518, 1505, 2505, 1507, 2505, 1510, 1519, 1562, - 1505, 1510, 1570, 1518, 1528, 1530, 2505, 1575, 1571, 1529, - 1573, 2505, 1524, 1580, 2505, 1523, 1538, 1526, 2505, 1536, - 1537, 1586, 1544, 1548, 2505, 1584, 1550, 1526, 1544, 1545, - 1554, 1536, 1543, 1555, 1554, 1545, 1595, 1547, 1543, 1603, - 1545, 1546, 1606, 1602, 1608, 1558, 1610, 1563, 1568, 1561, - 2505, 1614, 1615, 2505, 1564, 1617, 1559, 2505, 1562, 1572, - 1616, 1564, 1579, 1566, 1581, 1567, 1574, 1574, 1629, 1586, - - 1587, 1575, 1589, 1575, 1635, 1588, 2505, 1632, 1583, 1580, - 2505, 1582, 1595, 1582, 1603, 2505, 1600, 1645, 1598, 1595, - 1596, 2505, 1649, 1608, 1591, 1593, 1609, 1602, 1592, 1608, - 1609, 1618, 1608, 1660, 1620, 1604, 1613, 1659, 2505, 1617, - 1666, 2505, 1615, 2505, 1609, 2505, 1616, 1670, 1666, 2505, - 2505, 1629, 2505, 1669, 1631, 1632, 1617, 1618, 1626, 1680, - 1628, 1677, 1678, 1633, 2505, 1628, 1646, 1633, 1646, 1641, - 2505, 1638, 1643, 1641, 1693, 1650, 1695, 1643, 1640, 1640, - 2505, 1655, 1656, 1657, 2505, 1658, 1648, 1660, 1705, 1658, - 1707, 1649, 1657, 1658, 1671, 2505, 1672, 1653, 1654, 1661, - - 1663, 2505, 1677, 1674, 1714, 1675, 2505, 1679, 1664, 1664, - 1679, 1672, 1671, 1682, 1669, 2505, 1685, 1673, 1676, 1732, - 1672, 1691, 1693, 1686, 1685, 1694, 1696, 1700, 2505, 1690, - 2505, 1694, 1685, 1744, 1687, 1746, 1747, 1748, 1706, 1750, - 2505, 1692, 2505, 1747, 1709, 1710, 1697, 1705, 1716, 1703, - 1714, 1700, 1698, 1706, 1705, 1710, 1702, 1767, 1720, 1721, - 1711, 1728, 1727, 1768, 1712, 1731, 1732, 2505, 1737, 1730, - 1735, 1722, 1737, 1782, 1739, 1742, 1741, 1730, 1739, 2505, - 1788, 2505, 2505, 2505, 1749, 2505, 1790, 1732, 1792, 1793, - 1736, 1795, 1743, 1792, 1793, 1755, 1795, 1741, 1745, 1763, - - 1804, 1763, 2505, 1754, 1744, 1803, 1769, 1762, 1758, 1812, - 1755, 1757, 1756, 1763, 1759, 1818, 1762, 2505, 1767, 1777, - 1780, 1763, 1771, 2505, 1766, 2505, 1778, 2505, 2505, 1783, - 2505, 1784, 1784, 1775, 1831, 1775, 1785, 1770, 1783, 2505, - 1785, 1793, 1838, 1779, 1781, 1778, 1802, 2505, 1789, 1796, - 1797, 1800, 1789, 2505, 1843, 1790, 1798, 1792, 1808, 1807, - 1810, 1803, 1798, 1798, 1810, 1805, 2505, 1816, 1804, 1857, - 1808, 1820, 1865, 2505, 1811, 1823, 1868, 1817, 1819, 1817, - 1818, 1873, 1826, 1813, 1828, 1833, 1830, 1879, 1880, 1881, - 1838, 1883, 1884, 1828, 1832, 1828, 1844, 1827, 1839, 1833, - - 2505, 1849, 1893, 2505, 1850, 1835, 1853, 1844, 2505, 1845, - 1859, 1855, 1848, 1848, 2505, 2505, 2505, 1903, 2505, 2505, - 1846, 1854, 1849, 1902, 1868, 1865, 1910, 1871, 2505, 1912, - 1854, 1914, 1857, 1870, 1869, 1870, 1860, 1867, 2505, 1862, - 1922, 1875, 1884, 1877, 1921, 2505, 1868, 2505, 1880, 2505, - 1924, 1930, 1872, 1888, 1933, 1934, 1935, 2505, 1892, 1886, - 1879, 1899, 1896, 1888, 1892, 2505, 1939, 1888, 2505, 2505, - 2505, 1888, 1896, 1943, 1903, 1896, 1951, 1899, 1899, 1895, - 1897, 1956, 1957, 1899, 1915, 1900, 2505, 1961, 1908, 1915, - 1964, 2505, 2505, 1917, 1966, 1914, 2505, 1918, 1917, 2505, - - 1918, 2505, 1912, 1912, 1929, 1930, 1975, 1921, 1977, 1978, - 2505, 1979, 2505, 2505, 2505, 2505, 1985, 1988, 1991, 1992, - 1994, 1997, 2000, 2003 + 2511, 2512, 34, 2507, 145, 0, 207, 2512, 214, 221, + 13, 228, 2512, 2487, 118, 25, 2, 6, 2512, 2512, + 73, 11, 17, 2512, 2512, 2512, 104, 2495, 2448, 0, + 2485, 108, 2502, 24, 262, 2512, 2444, 67, 2450, 84, + 75, 88, 224, 91, 89, 290, 220, 2442, 206, 285, + 236, 204, 197, 60, 291, 2451, 247, 308, 315, 214, + 286, 2434, 212, 320, 344, 318, 2453, 0, 373, 394, + 387, 401, 415, 2512, 0, 2512, 420, 431, 236, 314, + 238, 326, 368, 309, 2512, 2450, 2491, 2512, 263, 2512, + + 437, 2478, 308, 2447, 395, 10, 388, 334, 401, 359, + 241, 2488, 0, 498, 400, 2430, 2427, 2431, 405, 2427, + 80, 2435, 405, 2421, 2422, 2427, 78, 2437, 2420, 2429, + 2419, 2428, 376, 395, 408, 2421, 2419, 412, 2467, 2471, + 2417, 2410, 2463, 2403, 174, 2424, 2424, 2418, 406, 2411, + 2409, 2410, 2402, 2407, 2401, 420, 2412, 450, 2397, 2396, + 2410, 429, 2396, 418, 433, 2390, 494, 427, 432, 2411, + 2408, 2409, 451, 2407, 2442, 2441, 469, 2388, 432, 2389, + 456, 2381, 2398, 2390, 0, 437, 475, 481, 473, 479, + 493, 2389, 2512, 2434, 506, 2383, 498, 498, 511, 2437, + + 523, 2436, 507, 2435, 2512, 2512, 560, 512, 536, 2394, + 2386, 2373, 2384, 2388, 2389, 2369, 2380, 2384, 2381, 2380, + 502, 530, 2418, 2382, 2363, 2360, 2368, 2363, 2377, 2373, + 2364, 2360, 2372, 2372, 2363, 2366, 2346, 2350, 2363, 2365, + 2362, 2354, 2344, 2362, 2512, 2347, 2356, 508, 2394, 2340, + 2349, 2391, 2338, 2348, 2351, 553, 2347, 2386, 2331, 2333, + 2344, 2382, 2327, 2385, 2339, 2319, 2334, 554, 2324, 2330, + 523, 2321, 2319, 2319, 2325, 2316, 2315, 2322, 2312, 2371, + 2327, 2326, 2320, 510, 2327, 2322, 2314, 2304, 2319, 2318, + 2313, 2317, 2298, 2314, 2300, 2306, 2313, 2295, 529, 2300, + + 2297, 2296, 2295, 2290, 2304, 541, 2303, 2346, 2305, 517, + 2296, 566, 2512, 2512, 569, 2512, 2512, 2283, 540, 556, + 2331, 571, 2341, 564, 2512, 2340, 2512, 2334, 614, 2512, + 2296, 573, 2273, 2282, 2330, 2290, 2273, 2290, 2326, 2286, + 2269, 2275, 2327, 2282, 2285, 2276, 2279, 2265, 2276, 2320, + 2314, 2272, 2269, 601, 2275, 2315, 2250, 2308, 2261, 2256, + 2253, 2256, 2303, 2260, 2249, 2265, 2299, 2245, 638, 2259, + 2244, 2243, 2256, 2254, 2252, 2252, 2251, 2246, 2253, 2248, + 2244, 583, 2242, 2245, 2240, 2226, 2238, 2234, 2284, 552, + 2278, 2512, 2242, 2276, 2226, 2225, 2224, 2217, 2219, 2231, + + 2222, 2229, 2210, 2227, 2222, 594, 2269, 2222, 2219, 2222, + 2512, 2221, 2210, 2210, 2222, 588, 2197, 2198, 2219, 2210, + 2200, 2251, 2196, 2210, 598, 2196, 2208, 2207, 2206, 2201, + 2243, 2203, 2202, 2201, 2200, 2192, 2242, 2201, 2181, 2239, + 2512, 2181, 2180, 648, 2193, 2512, 2512, 2192, 2181, 2173, + 589, 2232, 2231, 2512, 2230, 2512, 623, 689, 2189, 630, + 2228, 2170, 2181, 2220, 2173, 2175, 2177, 2164, 2172, 2160, + 2512, 2165, 2158, 2170, 2173, 2160, 2159, 2512, 615, 2161, + 2158, 607, 2156, 2158, 2512, 2203, 2165, 2162, 2147, 2160, + 2160, 2154, 662, 2161, 2149, 2142, 2193, 2512, 2140, 2156, + + 2190, 2151, 2149, 2147, 2148, 2132, 2141, 2183, 2134, 2133, + 2128, 2127, 2178, 2122, 573, 2141, 2115, 2122, 2127, 2137, + 2171, 2175, 2512, 2120, 2116, 2114, 2123, 2122, 2116, 2123, + 2107, 2107, 2117, 2105, 2119, 2119, 2107, 2103, 2101, 2512, + 2158, 2512, 2100, 2111, 2150, 2095, 2100, 2109, 2103, 2097, + 2106, 2148, 2142, 2104, 2088, 2083, 2103, 2078, 2084, 611, + 2098, 2091, 2095, 2078, 2136, 2077, 2077, 2128, 2073, 2074, + 2073, 2089, 2512, 2085, 2122, 2512, 2073, 2071, 2512, 2082, + 2118, 2078, 2062, 2079, 2119, 2512, 2512, 2512, 639, 635, + 2059, 674, 2512, 2069, 2068, 618, 2075, 2055, 2065, 2107, + + 2052, 2105, 2050, 2060, 2102, 2047, 2054, 2047, 2059, 2041, + 2041, 2056, 2055, 625, 2054, 2053, 2053, 2035, 2040, 2081, + 2048, 2045, 2039, 2084, 2028, 2044, 2042, 2042, 2512, 2027, + 2024, 2082, 2037, 2029, 2035, 2026, 2034, 2019, 2070, 2034, + 2016, 2028, 2020, 586, 2011, 2010, 2004, 2009, 2024, 2021, + 2022, 2001, 2011, 2017, 2060, 2015, 2007, 1998, 2512, 1999, + 2001, 2010, 2002, 2007, 2046, 2045, 1996, 16, 2005, 2042, + 1987, 2040, 1987, 1990, 1983, 2512, 1997, 1976, 1980, 1994, + 1986, 2031, 1983, 1990, 2028, 2512, 1973, 1987, 1986, 1989, + 1970, 2022, 2021, 1968, 2019, 1979, 1963, 2016, 2015, 2512, + + 1960, 1974, 1973, 684, 1974, 1973, 1955, 2008, 1972, 1967, + 1950, 1955, 1957, 2512, 1959, 194, 2512, 654, 660, 214, + 225, 299, 315, 338, 388, 454, 465, 545, 567, 625, + 670, 682, 645, 660, 682, 684, 638, 641, 670, 675, + 661, 664, 676, 676, 660, 717, 670, 680, 683, 721, + 684, 677, 687, 684, 686, 733, 696, 741, 698, 699, + 2512, 703, 698, 689, 704, 709, 706, 694, 710, 709, + 697, 711, 709, 717, 753, 715, 760, 761, 711, 703, + 713, 760, 718, 768, 2512, 769, 722, 724, 720, 714, + 717, 775, 771, 734, 723, 736, 2512, 726, 737, 726, + + 739, 729, 742, 786, 787, 730, 741, 726, 749, 728, + 734, 789, 753, 737, 749, 793, 794, 741, 796, 760, + 755, 760, 758, 802, 744, 756, 759, 763, 755, 752, + 2512, 816, 775, 776, 777, 767, 770, 781, 766, 773, + 779, 771, 785, 825, 801, 775, 789, 794, 791, 773, + 780, 794, 839, 796, 793, 794, 792, 801, 2512, 797, + 792, 807, 804, 790, 792, 811, 808, 796, 803, 804, + 813, 817, 853, 816, 806, 804, 803, 814, 810, 866, + 813, 824, 809, 810, 816, 832, 822, 869, 2512, 833, + 833, 826, 837, 835, 880, 822, 824, 843, 840, 828, + + 826, 888, 845, 831, 837, 835, 2512, 2512, 845, 850, + 855, 843, 853, 855, 2512, 2512, 856, 843, 861, 848, + 842, 2512, 847, 865, 852, 902, 853, 905, 851, 855, + 873, 914, 2512, 2512, 859, 863, 862, 859, 919, 872, + 862, 863, 859, 872, 883, 884, 879, 880, 882, 875, + 877, 873, 879, 879, 881, 896, 879, 938, 895, 900, + 877, 900, 886, 885, 2512, 892, 893, 942, 894, 907, + 945, 903, 893, 908, 909, 896, 928, 936, 958, 906, + 901, 956, 957, 919, 959, 2512, 965, 908, 924, 928, + 969, 919, 918, 913, 914, 926, 921, 917, 920, 921, + + 931, 941, 977, 925, 943, 935, 930, 988, 945, 946, + 937, 2512, 951, 940, 943, 951, 953, 938, 954, 951, + 949, 996, 962, 946, 947, 2512, 963, 966, 949, 960, + 1009, 952, 971, 2512, 970, 973, 959, 954, 972, 1012, + 970, 966, 963, 1016, 1017, 979, 965, 983, 982, 983, + 969, 984, 976, 983, 973, 991, 990, 977, 994, 2512, + 986, 992, 995, 1040, 2512, 989, 994, 1038, 990, 1002, + 996, 997, 995, 997, 1007, 1052, 996, 997, 997, 1056, + 1000, 1012, 1005, 2512, 1001, 1009, 1007, 1058, 1000, 1021, + 1007, 1009, 1010, 1016, 1024, 1015, 1020, 1030, 1031, 1036, + + 1077, 1049, 1054, 2512, 1036, 1033, 1029, 1043, 1026, 1026, + 2512, 1027, 1087, 1030, 2512, 1041, 1031, 1051, 1050, 1041, + 1052, 1095, 1056, 1049, 1053, 1057, 1040, 1057, 1048, 1103, + 1050, 2512, 1100, 1049, 1052, 1070, 1052, 1053, 1053, 1074, + 1071, 1076, 1064, 1078, 1064, 1072, 1081, 1061, 1076, 1083, + 1125, 1121, 2512, 1127, 1128, 1070, 1080, 1090, 1074, 1094, + 1082, 1078, 1085, 1094, 1082, 1089, 1090, 1102, 1143, 1090, + 1088, 1090, 1107, 1148, 1098, 1097, 1103, 1101, 1099, 1094, + 1155, 1106, 1157, 1153, 1159, 2512, 1116, 1109, 1100, 1119, + 1107, 1117, 1118, 1114, 1127, 1127, 2512, 1111, 1107, 1114, + + 2512, 1115, 1175, 1134, 1115, 1134, 1135, 1137, 1176, 1129, + 1183, 1184, 1141, 1135, 1133, 1144, 1143, 1127, 1132, 1150, + 2512, 1172, 1163, 1195, 1135, 1157, 1152, 1152, 1156, 1201, + 2512, 1144, 1144, 1147, 1164, 1159, 1163, 1158, 2512, 1150, + 1167, 1147, 1168, 1158, 1209, 1162, 2512, 1176, 1176, 1214, + 1161, 1170, 1218, 1176, 1181, 1167, 1227, 1170, 1184, 1182, + 1174, 1180, 1176, 1194, 1195, 1196, 2512, 1186, 2512, 1196, + 2512, 1181, 1192, 1183, 1202, 1195, 1193, 1186, 1198, 1242, + 1206, 1195, 1202, 1203, 1209, 2512, 1202, 1254, 1195, 1256, + 2512, 1257, 1199, 1205, 1212, 1256, 1218, 2512, 1219, 2512, + + 1206, 2512, 1208, 1222, 1227, 1210, 1269, 1226, 1227, 1267, + 1219, 1224, 1275, 1271, 1224, 1278, 2512, 1229, 1226, 1281, + 1282, 1239, 1240, 1242, 2512, 2512, 1228, 1282, 1231, 1247, + 1290, 1232, 1244, 1249, 1264, 1295, 2512, 1252, 1245, 1254, + 1245, 1256, 2512, 1301, 1238, 1249, 1264, 1300, 1252, 1263, + 1264, 1265, 1262, 1306, 1269, 1259, 1269, 1275, 1262, 1258, + 1318, 1314, 1272, 1316, 1323, 1280, 2512, 1282, 1273, 1276, + 1285, 1286, 1283, 1273, 1276, 1276, 1287, 1282, 1337, 1284, + 1339, 1282, 1287, 1342, 1338, 1279, 1295, 1288, 1291, 1304, + 1305, 1303, 1352, 2512, 1305, 2512, 2512, 1311, 1303, 1313, + + 1298, 1354, 1301, 1301, 1362, 1306, 1316, 1365, 2512, 1313, + 1314, 1316, 1369, 1310, 1313, 2512, 1331, 1332, 2512, 1332, + 1320, 2512, 2512, 1333, 1316, 1336, 1322, 1324, 1383, 1333, + 2512, 1385, 1334, 1387, 1367, 2512, 1389, 1346, 1391, 1342, + 1389, 2512, 1337, 1396, 1346, 1340, 1337, 1340, 1342, 1359, + 1398, 1351, 1363, 1366, 1354, 1357, 1350, 1357, 1348, 2512, + 1356, 1371, 1356, 2512, 1358, 1359, 1413, 1375, 1375, 1378, + 1378, 1375, 1419, 1381, 1373, 1374, 2512, 1375, 2512, 1385, + 1377, 2512, 1383, 1388, 1389, 1386, 1430, 1378, 1393, 1394, + 1386, 2512, 1383, 1384, 1384, 1390, 1389, 1387, 1441, 1402, + + 2512, 1443, 1390, 2512, 1391, 1392, 1398, 2512, 1407, 1401, + 1456, 1403, 1396, 1408, 1403, 1413, 1424, 1417, 1423, 1467, + 1420, 2512, 1429, 2512, 1426, 2512, 1423, 1446, 2512, 1473, + 2512, 1431, 1416, 1476, 2512, 1477, 1434, 1439, 1421, 1481, + 1477, 1441, 1438, 1434, 1427, 1482, 1440, 1441, 1431, 1436, + 1448, 1493, 1448, 1496, 1492, 1456, 1457, 1453, 1497, 1445, + 1450, 1448, 1507, 1458, 1464, 1452, 1511, 1507, 1470, 1514, + 1475, 1464, 1458, 1518, 1460, 1461, 1475, 1478, 1478, 1524, + 1466, 1483, 1479, 1477, 1484, 1468, 1526, 1527, 1528, 1491, + 1484, 1483, 1483, 1478, 1496, 2512, 1487, 1493, 1498, 1485, + + 1486, 1485, 1487, 1542, 2512, 1483, 1501, 1550, 1508, 1521, + 2512, 1553, 1506, 2512, 2512, 1497, 1508, 1557, 2512, 1503, + 1508, 1506, 1556, 1514, 1519, 1507, 1524, 1513, 1511, 1525, + 1512, 2512, 1514, 2512, 1517, 1526, 1569, 1512, 1517, 1577, + 1525, 1535, 1537, 2512, 1582, 1578, 1536, 1580, 2512, 1531, + 1587, 2512, 1530, 1545, 1533, 2512, 1543, 1544, 1593, 1551, + 1555, 2512, 1591, 1557, 1533, 1551, 1552, 1561, 1543, 1550, + 1562, 1561, 1552, 1602, 1554, 1550, 1610, 1552, 1553, 1613, + 1609, 1615, 1565, 1617, 1570, 1575, 1568, 2512, 1621, 1622, + 2512, 1571, 1624, 1566, 2512, 1569, 1579, 1623, 1571, 1586, + + 1573, 1588, 1574, 1581, 1581, 1636, 1593, 1594, 1582, 1596, + 1582, 1642, 1595, 2512, 1639, 1590, 1587, 2512, 1589, 1602, + 1589, 1610, 2512, 1607, 1652, 1605, 1602, 1603, 2512, 1656, + 1615, 1598, 1600, 1616, 1609, 1599, 1615, 1616, 1625, 1615, + 1667, 1627, 1611, 1620, 1666, 2512, 1624, 1673, 2512, 1622, + 2512, 1616, 2512, 1623, 1677, 1673, 2512, 2512, 1636, 2512, + 1676, 1638, 1639, 1624, 1625, 1633, 1687, 1635, 1684, 1685, + 1640, 2512, 1635, 1653, 1640, 1653, 1648, 2512, 1645, 1650, + 1648, 1700, 1657, 1702, 1650, 1647, 1647, 2512, 1662, 1663, + 1664, 2512, 1665, 1655, 1667, 1712, 1665, 1714, 1656, 1664, + + 1665, 1678, 2512, 1679, 1660, 1661, 1668, 1670, 2512, 1684, + 1681, 1721, 1682, 2512, 1686, 1671, 1671, 1686, 1679, 1678, + 1689, 1676, 2512, 1692, 1680, 1683, 1739, 1679, 1698, 1700, + 1693, 1692, 1701, 1703, 1707, 2512, 1697, 2512, 1701, 1692, + 1751, 1694, 1753, 1754, 1755, 1713, 1757, 2512, 1699, 2512, + 1754, 1716, 1717, 1704, 1712, 1723, 1710, 1721, 1707, 1705, + 1713, 1712, 1717, 1709, 1774, 1727, 1728, 1718, 1735, 1734, + 1775, 1719, 1738, 1739, 2512, 1744, 1737, 1742, 1729, 1744, + 1789, 1746, 1749, 1748, 1737, 1746, 2512, 1795, 2512, 2512, + 2512, 1756, 2512, 1797, 1739, 1799, 1800, 1743, 1802, 1750, + + 1799, 1800, 1762, 1802, 1748, 1752, 1770, 1811, 1770, 2512, + 1761, 1751, 1810, 1776, 1769, 1765, 1819, 1762, 1764, 1763, + 1770, 1766, 1825, 1769, 2512, 1774, 1784, 1787, 1770, 1778, + 2512, 1773, 2512, 1785, 2512, 2512, 1790, 2512, 1791, 1791, + 1782, 1838, 1782, 1792, 1777, 1790, 2512, 1792, 1800, 1845, + 1786, 1788, 1785, 1809, 2512, 1796, 1803, 1804, 1807, 1796, + 2512, 1850, 1797, 1805, 1799, 1815, 1814, 1817, 1810, 1805, + 1805, 1817, 1812, 2512, 1823, 1811, 1864, 1815, 1827, 1872, + 2512, 1818, 1830, 1875, 1824, 1826, 1824, 1825, 1880, 1833, + 1820, 1835, 1840, 1837, 1886, 1887, 1888, 1845, 1890, 1891, + + 1835, 1839, 1835, 1851, 1834, 1846, 1840, 2512, 1856, 1900, + 2512, 1857, 1842, 1860, 1851, 2512, 1852, 1866, 1862, 1855, + 1855, 2512, 2512, 2512, 1910, 2512, 2512, 1853, 1861, 1856, + 1909, 1875, 1872, 1917, 1878, 2512, 1919, 1861, 1921, 1864, + 1877, 1876, 1877, 1867, 1874, 2512, 1869, 1929, 1882, 1891, + 1884, 1928, 2512, 1875, 2512, 1887, 2512, 1931, 1937, 1879, + 1895, 1940, 1941, 1942, 2512, 1899, 1893, 1886, 1906, 1903, + 1895, 1899, 2512, 1946, 1895, 2512, 2512, 2512, 1895, 1903, + 1950, 1910, 1903, 1958, 1906, 1906, 1902, 1904, 1963, 1964, + 1906, 1922, 1907, 2512, 1968, 1915, 1922, 1971, 2512, 2512, + + 1924, 1973, 1921, 2512, 1925, 1924, 2512, 1925, 2512, 1919, + 1919, 1936, 1937, 1982, 1928, 1984, 1985, 2512, 1986, 2512, + 2512, 2512, 2512, 1992, 1995, 1998, 1999, 2001, 2004, 2007, + 2010 } ; -static const flex_int16_t yy_def[2125] = +static const flex_int16_t yy_def[2132] = { 0, - 2117, 2117, 2118, 2118, 2117, 2117, 2117, 2117, 2117, 2117, - 2116, 2116, 2116, 2116, 2116, 2119, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2120, - 2116, 2116, 2116, 2121, 15, 2116, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2122, 45, 45, 45, 45, + 2124, 2124, 2125, 2125, 2124, 2124, 2124, 2124, 2124, 2124, + 2123, 2123, 2123, 2123, 2123, 2126, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2127, + 2123, 2123, 2123, 2128, 15, 2123, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2129, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2119, 2116, 2116, - 2116, 2116, 2116, 2116, 2123, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2120, 2116, 2121, 2116, + 45, 45, 45, 45, 45, 45, 45, 2126, 2123, 2123, + 2123, 2123, 2123, 2123, 2130, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2127, 2123, 2128, 2123, - 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2124, 45, 2122, 45, 45, 45, 45, 45, 45, + 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2131, 45, 2129, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2123, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2130, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2124, 2116, 2116, 114, 45, 45, 45, + 45, 45, 45, 2131, 2123, 2123, 114, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2116, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, @@ -1255,217 +1258,218 @@ static const flex_int16_t yy_def[2125] = 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 45, 45, - 45, 45, 45, 45, 2116, 45, 2116, 45, 114, 2116, + 45, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 45, 45, + 45, 45, 45, 45, 2123, 45, 2123, 45, 114, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2116, - 45, 45, 45, 45, 2116, 2116, 2116, 45, 45, 45, - 45, 45, 2116, 45, 2116, 45, 114, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2116, 45, - 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, - 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2123, 45, 45, 45, 45, 2123, 2123, 2123, 45, 45, + 45, 45, 45, 2123, 45, 2123, 45, 114, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2116, 45, 2116, + 2123, 45, 45, 45, 45, 45, 45, 2123, 45, 45, + 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2123, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2123, + 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2116, 45, 45, 2116, 45, 45, 2116, 45, 45, 2116, - 45, 45, 45, 2116, 2116, 2116, 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2123, 45, 45, 2123, 45, 45, 2123, 45, + 45, 2123, 45, 45, 45, 2123, 2123, 2123, 45, 45, + 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2116, 45, 45, 45, + 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2116, 45, 45, 2116, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2123, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 2116, 2116, 45, 45, 45, 45, 45, 45, 2116, - 2116, 45, 45, 45, 45, 45, 2116, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2116, 2116, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2123, 2123, 45, 45, + 45, 45, 45, 45, 2123, 2123, 45, 45, 45, 45, + 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 2123, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2116, + 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2116, - 45, 45, 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, + 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2116, 45, 45, 45, 45, 2116, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2116, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2123, + 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2116, 45, 45, 45, 2116, 45, 45, + 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, + 2123, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2116, 45, 45, 45, 45, 45, + 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, + 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2116, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2116, - 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, + 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, - 45, 2116, 45, 45, 45, 45, 45, 45, 45, 2116, + 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 2123, 45, 45, 45, 45, 45, 45, 45, 2123, 45, + 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2116, - 45, 2116, 45, 2116, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2116, 45, - 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, - 2116, 45, 2116, 45, 2116, 45, 45, 45, 45, 45, - - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2116, - 45, 45, 45, 45, 45, 45, 45, 2116, 2116, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2116, - 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2123, 45, 2123, 45, + 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, + 2123, 45, 45, 45, 45, 45, 45, 2123, 45, 2123, + + 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, + 45, 45, 45, 45, 2123, 2123, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, + 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2116, + 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2116, 45, 2116, 2116, + 45, 45, 45, 2123, 45, 2123, 2123, 45, 45, 45, + + 45, 45, 45, 45, 45, 45, 45, 45, 2123, 45, + 45, 45, 45, 45, 45, 2123, 45, 45, 2123, 45, + 45, 2123, 2123, 45, 45, 45, 45, 45, 45, 45, + 2123, 45, 45, 45, 45, 2123, 45, 45, 45, 45, + 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2123, + 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2123, 45, 2123, 45, + 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, + + 2123, 45, 45, 2123, 45, 45, 45, 2123, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2123, 45, 2123, 45, 2123, 45, 45, 2123, 45, + 2123, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - - 45, 2116, 45, 45, 45, 45, 45, 45, 2116, 45, - 45, 2116, 45, 45, 2116, 2116, 45, 45, 45, 45, - 45, 45, 45, 2116, 45, 45, 45, 45, 2116, 45, - 45, 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2116, 45, 45, 45, 2116, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2116, - 45, 2116, 45, 45, 2116, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2116, 45, 45, 45, 45, 45, - 45, 45, 45, 2116, 45, 45, 2116, 45, 45, 45, - - 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2116, 45, 2116, 45, 2116, 45, - 45, 2116, 45, 2116, 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, + + 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, + 2123, 45, 45, 2123, 2123, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 2123, 45, 2123, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2123, 45, 45, 45, 45, 2123, 45, + 45, 2123, 45, 45, 45, 2123, 45, 45, 45, 45, + 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2116, 45, - 45, 45, 45, 45, 45, 45, 45, 2116, 45, 45, - - 45, 45, 45, 2116, 45, 45, 2116, 2116, 45, 45, - 45, 2116, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2116, 45, 2116, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2116, 45, 45, 45, - 45, 2116, 45, 45, 2116, 45, 45, 45, 2116, 45, - 45, 45, 45, 45, 2116, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2123, 45, 45, + 2123, 45, 45, 45, 2123, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2123, 45, 45, 45, 2123, 45, 45, + 45, 45, 2123, 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2116, 45, 45, 2116, 45, 45, 45, 2116, 45, 45, + 45, 45, 45, 45, 45, 2123, 45, 45, 2123, 45, + 2123, 45, 2123, 45, 45, 45, 2123, 2123, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - - 45, 45, 45, 45, 45, 45, 2116, 45, 45, 45, - 2116, 45, 45, 45, 45, 2116, 45, 45, 45, 45, - 45, 2116, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2116, 45, - 45, 2116, 45, 2116, 45, 2116, 45, 45, 45, 2116, - 2116, 45, 2116, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2116, 45, 45, 45, 45, 45, - 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2116, 45, 45, 45, 2116, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, - - 45, 2116, 45, 45, 45, 45, 2116, 45, 45, 45, - 45, 45, 45, 45, 45, 2116, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2116, 45, - 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2116, 45, 2116, 45, 45, 45, 45, 45, 45, 45, + 45, 2123, 45, 45, 45, 45, 45, 2123, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2123, 45, 45, + 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 2123, 45, 45, 45, 45, 45, 2123, 45, + 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, + 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2123, 45, 2123, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 2123, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2116, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 2116, - 45, 2116, 2116, 2116, 45, 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 2123, 45, 2123, 2123, + 2123, 45, 2123, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 2116, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 2116, 45, 45, - 45, 45, 45, 2116, 45, 2116, 45, 2116, 2116, 45, - 2116, 45, 45, 45, 45, 45, 45, 45, 45, 2116, - 45, 45, 45, 45, 45, 45, 45, 2116, 45, 45, - 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2116, 45, 45, 45, - 45, 45, 45, 2116, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, + 2123, 45, 2123, 45, 2123, 2123, 45, 2123, 45, 45, + 45, 45, 45, 45, 45, 45, 2123, 45, 45, 45, + 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, + 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2123, 45, 45, 45, 45, 45, 45, + 2123, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 2116, 45, 45, 2116, 45, 45, 45, 45, 2116, 45, - 45, 45, 45, 45, 2116, 2116, 2116, 45, 2116, 2116, - 45, 45, 45, 45, 45, 45, 45, 45, 2116, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 2116, 45, - 45, 45, 45, 45, 45, 2116, 45, 2116, 45, 2116, - 45, 45, 45, 45, 45, 45, 45, 2116, 45, 45, - 45, 45, 45, 45, 45, 2116, 45, 45, 2116, 2116, - 2116, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 2116, 45, 45, 45, - 45, 2116, 2116, 45, 45, 45, 2116, 45, 45, 2116, - - 45, 2116, 45, 45, 45, 45, 45, 45, 45, 45, - 2116, 45, 2116, 2116, 2116, 0, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116 + 45, 45, 45, 45, 45, 45, 45, 2123, 45, 45, + 2123, 45, 45, 45, 45, 2123, 45, 45, 45, 45, + 45, 2123, 2123, 2123, 45, 2123, 2123, 45, 45, 45, + 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 2123, 45, 45, 45, 45, + 45, 45, 2123, 45, 2123, 45, 2123, 45, 45, 45, + 45, 45, 45, 45, 2123, 45, 45, 45, 45, 45, + 45, 45, 2123, 45, 45, 2123, 2123, 2123, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 2123, 45, 45, 45, 45, 2123, 2123, + + 45, 45, 45, 2123, 45, 45, 2123, 45, 2123, 45, + 45, 45, 45, 45, 45, 45, 45, 2123, 45, 2123, + 2123, 2123, 0, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123 } ; -static const flex_int16_t yy_nxt[2579] = +static const flex_int16_t yy_nxt[2586] = { 0, - 2116, 13, 14, 13, 2116, 15, 16, 2116, 17, 18, + 2123, 13, 14, 13, 2123, 15, 16, 2123, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, - 84, 793, 37, 14, 37, 85, 25, 26, 38, 100, - 2116, 27, 37, 14, 37, 42, 28, 42, 38, 90, + 84, 797, 37, 14, 37, 85, 25, 26, 38, 100, + 2123, 27, 37, 14, 37, 42, 28, 42, 38, 90, 91, 29, 198, 30, 13, 14, 13, 89, 90, 25, 31, 91, 13, 14, 13, 13, 14, 13, 32, 40, - 794, 13, 14, 13, 33, 40, 101, 90, 91, 198, + 798, 13, 14, 13, 33, 40, 101, 90, 91, 198, 89, 34, 35, 13, 14, 13, 93, 15, 16, 94, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, 13, 14, 13, 89, 39, 103, 25, 26, @@ -1488,8 +1492,8 @@ static const flex_int16_t yy_nxt[2579] = 81, 82, 82, 82, 82, 82, 136, 81, 108, 105, 103, 119, 843, 137, 81, 120, 81, 166, 109, 121, 135, 167, 122, 81, 157, 123, 186, 203, 100, 124, - 81, 108, 158, 844, 159, 188, 115, 81, 45, 160, - 161, 131, 116, 132, 45, 117, 109, 45, 845, 45, + 81, 108, 158, 846, 159, 188, 115, 81, 45, 160, + 161, 131, 116, 132, 45, 117, 109, 45, 847, 45, 203, 45, 186, 45, 133, 113, 145, 146, 45, 45, 147, 45, 45, 188, 134, 101, 148, 45, 45, 45, @@ -1498,16 +1502,16 @@ static const flex_int16_t yy_nxt[2579] = 125, 162, 45, 126, 127, 163, 45, 128, 129, 140, 45, 107, 141, 110, 187, 164, 188, 195, 45, 142, 130, 143, 45, 149, 45, 114, 186, 150, 175, 176, - 154, 151, 155, 846, 156, 168, 181, 200, 108, 169, - 187, 847, 170, 152, 191, 195, 182, 153, 109, 171, - 172, 183, 189, 848, 173, 174, 83, 83, 83, 83, + 154, 151, 155, 848, 156, 168, 181, 200, 108, 169, + 187, 849, 170, 152, 191, 195, 182, 153, 109, 171, + 172, 183, 189, 850, 173, 174, 83, 83, 83, 83, 83, 108, 202, 177, 200, 87, 178, 87, 187, 81, 88, 88, 88, 88, 88, 79, 179, 80, 80, 80, 80, 80, 79, 180, 82, 82, 82, 82, 82, 202, 81, 233, 81, 234, 190, 197, 199, 81, 83, 83, 83, 83, 83, 88, 88, 88, 88, 88, 201, 195, - 849, 81, 99, 81, 88, 88, 88, 88, 88, 99, + 851, 81, 99, 81, 88, 88, 88, 88, 88, 99, 81, 197, 213, 220, 199, 235, 208, 237, 199, 236, 265, 214, 221, 222, 81, 215, 201, 209, 241, 201, 255, 242, 312, 238, 256, 243, 270, 275, 278, 99, @@ -1515,124 +1519,124 @@ static const flex_int16_t yy_nxt[2579] = 292, 271, 272, 273, 293, 99, 298, 306, 294, 99, 312, 99, 99, 206, 281, 313, 266, 314, 312, 313, - 299, 207, 207, 207, 207, 207, 308, 372, 442, 314, - 207, 207, 207, 207, 207, 207, 303, 850, 320, 323, - 314, 313, 304, 322, 373, 316, 315, 324, 328, 282, + 299, 207, 207, 207, 207, 207, 308, 330, 852, 314, + 207, 207, 207, 207, 207, 207, 303, 443, 320, 323, + 314, 313, 304, 322, 853, 316, 315, 324, 328, 282, 283, 284, 317, 207, 207, 207, 207, 207, 207, 326, - 285, 320, 286, 395, 287, 288, 323, 289, 320, 343, - 324, 322, 344, 381, 414, 328, 450, 415, 400, 430, - 443, 431, 326, 329, 329, 329, 329, 329, 401, 445, - 345, 331, 329, 329, 329, 329, 329, 329, 346, 396, - 326, 445, 452, 454, 347, 450, 450, 538, 480, 769, - - 770, 448, 445, 397, 481, 329, 329, 329, 329, 329, - 329, 449, 841, 326, 446, 452, 382, 496, 851, 383, - 548, 454, 497, 522, 549, 458, 583, 438, 457, 457, - 457, 457, 457, 523, 691, 841, 854, 457, 457, 457, - 457, 457, 457, 512, 513, 558, 577, 715, 514, 559, - 587, 578, 588, 614, 583, 539, 855, 583, 859, 648, - 457, 457, 457, 457, 457, 457, 615, 626, 616, 649, - 498, 860, 627, 714, 715, 499, 716, 587, 717, 588, - 45, 45, 45, 45, 45, 589, 692, 606, 861, 45, - 45, 45, 45, 45, 45, 607, 720, 608, 609, 610, - - 827, 611, 739, 721, 716, 740, 840, 856, 857, 862, - 858, 828, 45, 45, 45, 45, 45, 45, 852, 863, - 864, 865, 866, 867, 853, 868, 869, 870, 871, 872, - 873, 874, 875, 876, 840, 877, 878, 881, 882, 883, - 879, 884, 885, 886, 880, 887, 888, 889, 890, 891, + 285, 320, 286, 373, 287, 288, 323, 289, 320, 344, + 324, 322, 345, 382, 396, 328, 415, 326, 401, 416, + 374, 331, 326, 329, 329, 329, 329, 329, 402, 444, + 346, 332, 329, 329, 329, 329, 329, 329, 347, 431, + 326, 432, 446, 449, 348, 446, 451, 453, 455, 540, + + 397, 854, 524, 450, 439, 329, 329, 329, 329, 329, + 329, 482, 525, 451, 398, 446, 383, 483, 447, 384, + 453, 694, 651, 855, 585, 451, 455, 458, 458, 458, + 458, 458, 652, 773, 774, 856, 458, 458, 458, 458, + 458, 458, 460, 498, 514, 515, 550, 560, 499, 516, + 551, 561, 585, 579, 589, 617, 590, 541, 580, 458, + 458, 458, 458, 458, 458, 585, 609, 629, 618, 719, + 619, 718, 630, 695, 610, 724, 611, 612, 613, 717, + 614, 589, 725, 590, 721, 743, 845, 859, 744, 831, + 844, 860, 864, 592, 865, 866, 500, 719, 718, 867, + + 832, 501, 45, 45, 45, 45, 45, 861, 862, 845, + 863, 45, 45, 45, 45, 45, 45, 857, 844, 868, + 869, 870, 871, 858, 872, 873, 874, 875, 876, 877, + 878, 879, 880, 881, 45, 45, 45, 45, 45, 45, + 882, 883, 886, 887, 888, 884, 889, 890, 891, 885, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, - 902, 903, 904, 905, 906, 908, 909, 907, 910, 911, - 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, + 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, + 913, 914, 912, 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, 947, 948, 949, 952, 953, 954, - 946, 957, 955, 950, 958, 959, 960, 951, 956, 961, - 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, + 942, 943, 944, 945, 946, 947, 948, 949, 950, 952, + 953, 954, 957, 958, 959, 951, 962, 960, 955, 963, + 964, 965, 956, 961, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, - 992, 993, 994, 995, 996, 997, 998, 999, 1000, 973, - 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, + 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, + 1002, 1003, 1004, 1005, 978, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, - 1022, 1023, 1024, 1025, 1021, 1026, 1027, 1028, 1029, 1030, - 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, + 1021, 1022, 1023, 1024, 1025, 1026, 1028, 1029, 1030, 1031, + 1027, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, - 1041, 1042, 1043, 1044, 1045, 1047, 1048, 1049, 1046, 1050, - 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, + 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, + 1051, 1053, 1054, 1055, 1052, 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, 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, 1097, - 1120, 1121, 1096, 1122, 1123, 1124, 1125, 1126, 1127, 1128, + 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, + 1121, 1122, 1123, 1124, 1125, 1103, 1126, 1127, 1102, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, - 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1148, 1149, - 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, + 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, + 1149, 1150, 1151, 1152, 1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, - 1170, 1171, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, - 1181, 1182, 1172, 1183, 1184, 1185, 1186, 1187, 1188, 1189, + 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1180, + 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1179, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, - 1200, 1201, 1202, 1203, 1204, 1147, 1205, 1206, 1207, 1208, - 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1217, 1216, 1218, - 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, + 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, + 1210, 1211, 1154, 1212, 1213, 1214, 1215, 1216, 1217, 1218, + 1219, 1220, 1221, 1222, 1224, 1223, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, - 1239, 1240, 1241, 1242, 1215, 1216, 1243, 1244, 1245, 1246, - 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, - 1257, 1258, 1259, 1260, 1261, 1262, 1264, 1266, 1267, 1268, - 1263, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, + 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, + 1249, 1222, 1223, 1250, 1251, 1252, 1253, 1254, 1255, 1256, + 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, + 1267, 1268, 1269, 1271, 1273, 1274, 1275, 1270, 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, - 1265, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, + 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1272, 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, 1328, 1351, 1352, 1353, 1354, 1355, - 1329, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, + 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, + 1357, 1335, 1358, 1359, 1360, 1361, 1362, 1336, 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, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, + 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, - 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, + 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, - 1428, 1457, 1458, 1406, 1459, 1460, 1461, 1462, 1463, 1464, - 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, - 1475, 1476, 1477, 1436, 1478, 1480, 1481, 1482, 1483, 1484, - 1485, 1486, 1479, 1487, 1488, 1489, 1490, 1491, 1492, 1493, - 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1503, 1504, - 1507, 1505, 1502, 1506, 1508, 1509, 1510, 1511, 1512, 1513, - 1514, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1523, 1524, - 1520, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, - - 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1521, - 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, + 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1435, 1464, 1465, + 1413, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, + 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, + 1443, 1485, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1486, + 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, + 1504, 1505, 1506, 1507, 1508, 1510, 1511, 1514, 1512, 1509, + 1513, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, + 1524, 1525, 1526, 1528, 1529, 1530, 1531, 1527, 1532, 1533, + + 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, + 1544, 1545, 1546, 1547, 1548, 1549, 1528, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, - 1583, 1584, 1588, 1585, 1589, 1590, 1586, 1591, 1592, 1587, - 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, + 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1595, + 1592, 1596, 1597, 1593, 1598, 1599, 1594, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, - 1613, 1614, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, - 1624, 1625, 1615, 1626, 1627, 1628, 1629, 1603, 1630, 1631, + 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1623, + 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1622, - 1632, 1633, 1634, 1635, 1636, 1637, 1639, 1640, 1641, 1642, - 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, + 1633, 1634, 1635, 1636, 1610, 1637, 1638, 1639, 1640, 1641, + 1642, 1643, 1644, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, - 1693, 1694, 1695, 1638, 1696, 1697, 1698, 1699, 1700, 1701, - 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1683, 1710, - 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, + 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, + 1645, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, + 1712, 1713, 1714, 1715, 1716, 1690, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, @@ -1642,8 +1646,8 @@ static const flex_int16_t yy_nxt[2579] = 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, - 1801, 1802, 1803, 1805, 1806, 1807, 1808, 1804, 1809, 1810, - 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, + 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, + 1812, 1813, 1814, 1815, 1811, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, @@ -1652,8 +1656,8 @@ static const flex_int16_t yy_nxt[2579] = 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, - 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1900, 1901, - 1899, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, + 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, + 1901, 1902, 1903, 1904, 1905, 1907, 1908, 1906, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, @@ -1672,87 +1676,88 @@ static const flex_int16_t yy_nxt[2579] = 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, - 2071, 2072, 2073, 2074, 2075, 2077, 2076, 2078, 2079, 2080, - 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, + 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, + 2081, 2082, 2084, 2083, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, - 2111, 2112, 2113, 2114, 2115, 12, 12, 12, 36, 36, - 36, 78, 97, 78, 99, 99, 99, 112, 112, 112, - - 185, 842, 185, 204, 204, 204, 839, 838, 837, 836, - 835, 834, 833, 832, 831, 830, 829, 826, 825, 824, - 823, 822, 821, 820, 819, 818, 817, 816, 815, 814, - 813, 812, 811, 810, 809, 808, 807, 806, 805, 804, - 803, 802, 801, 800, 799, 798, 797, 796, 795, 792, - 791, 790, 789, 788, 787, 786, 785, 784, 783, 782, - 781, 780, 779, 778, 777, 776, 775, 774, 773, 772, - 771, 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, 738, - - 737, 736, 735, 734, 733, 732, 731, 730, 729, 728, - 727, 726, 725, 724, 723, 722, 719, 718, 714, 713, - 712, 711, 710, 709, 708, 707, 706, 705, 704, 703, - 702, 701, 700, 699, 698, 697, 696, 695, 694, 693, - 690, 689, 688, 687, 686, 685, 684, 683, 682, 681, - 680, 679, 678, 677, 676, 675, 674, 673, 672, 671, - 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, - 660, 659, 658, 657, 656, 655, 654, 653, 652, 651, - 650, 647, 646, 645, 644, 643, 642, 641, 640, 639, - 638, 637, 636, 635, 634, 633, 632, 631, 630, 629, - - 628, 625, 624, 623, 622, 621, 620, 619, 618, 617, - 613, 612, 605, 604, 603, 602, 601, 600, 599, 598, - 597, 596, 595, 594, 593, 592, 591, 590, 586, 585, - 584, 582, 581, 580, 579, 576, 575, 574, 573, 572, - 571, 570, 569, 568, 567, 566, 565, 564, 563, 562, - 561, 560, 557, 556, 555, 554, 553, 552, 551, 550, - 547, 546, 545, 544, 543, 542, 541, 540, 537, 536, - 535, 534, 533, 532, 531, 530, 529, 528, 527, 526, - 525, 524, 521, 520, 519, 518, 517, 516, 515, 511, - 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, - - 500, 495, 494, 493, 492, 491, 490, 489, 488, 487, - 486, 485, 484, 483, 482, 479, 478, 477, 476, 475, - 474, 473, 472, 471, 470, 469, 468, 467, 466, 465, - 464, 463, 462, 461, 460, 459, 456, 455, 453, 451, - 447, 444, 441, 440, 439, 437, 436, 435, 434, 433, - 432, 429, 428, 427, 426, 425, 424, 423, 422, 421, - 420, 419, 418, 417, 416, 413, 412, 411, 410, 409, - 408, 407, 406, 405, 404, 403, 402, 399, 398, 394, - 393, 392, 391, 390, 389, 388, 387, 386, 385, 384, - 380, 379, 378, 377, 376, 375, 374, 371, 370, 369, - - 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, - 358, 357, 356, 355, 354, 353, 352, 351, 350, 349, - 348, 342, 341, 340, 339, 338, 337, 336, 335, 334, - 333, 332, 330, 205, 327, 325, 321, 319, 318, 311, - 310, 309, 307, 305, 302, 301, 300, 297, 296, 295, - 280, 274, 269, 268, 267, 264, 262, 261, 260, 259, - 258, 257, 254, 253, 252, 249, 248, 247, 246, 245, - 244, 240, 239, 232, 231, 230, 229, 228, 225, 224, - 223, 219, 216, 212, 211, 210, 205, 196, 194, 193, - 192, 184, 165, 144, 118, 104, 102, 43, 98, 96, - - 95, 86, 43, 2116, 11, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116 + 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, + 2121, 2122, 12, 12, 12, 36, 36, 36, 78, 97, + + 78, 99, 99, 99, 112, 112, 112, 185, 842, 185, + 204, 204, 204, 841, 840, 839, 838, 837, 836, 835, + 834, 833, 830, 829, 828, 827, 826, 825, 824, 823, + 822, 821, 820, 819, 818, 817, 816, 815, 814, 813, + 812, 811, 810, 809, 808, 807, 806, 805, 804, 803, + 802, 801, 800, 799, 796, 795, 794, 793, 792, 791, + 790, 789, 788, 787, 786, 785, 784, 783, 782, 781, + 780, 779, 778, 777, 776, 775, 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, 742, 741, 740, 739, 738, 737, + 736, 735, 734, 733, 732, 731, 730, 729, 728, 727, + 726, 723, 722, 720, 717, 716, 715, 714, 713, 712, + 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, + 701, 700, 699, 698, 697, 696, 693, 692, 691, 690, + 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, + 679, 678, 677, 676, 675, 674, 673, 672, 671, 670, + 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, + 659, 658, 657, 656, 655, 654, 653, 650, 649, 648, + 647, 646, 645, 644, 643, 642, 641, 640, 639, 638, + + 637, 636, 635, 634, 633, 632, 631, 628, 627, 626, + 625, 624, 623, 622, 621, 620, 616, 615, 608, 607, + 606, 605, 604, 603, 602, 601, 600, 599, 598, 597, + 596, 595, 594, 593, 591, 588, 587, 586, 584, 583, + 582, 581, 578, 577, 576, 575, 574, 573, 572, 571, + 570, 569, 568, 567, 566, 565, 564, 563, 562, 559, + 558, 557, 556, 555, 554, 553, 552, 549, 548, 547, + 546, 545, 544, 543, 542, 539, 538, 537, 536, 535, + 534, 533, 532, 531, 530, 529, 528, 527, 526, 523, + 522, 521, 520, 519, 518, 517, 513, 512, 511, 510, + + 509, 508, 507, 506, 505, 504, 503, 502, 497, 496, + 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, + 485, 484, 481, 480, 479, 478, 477, 476, 475, 474, + 473, 472, 471, 470, 469, 468, 467, 466, 465, 464, + 463, 462, 461, 459, 457, 456, 454, 452, 448, 445, + 442, 441, 440, 438, 437, 436, 435, 434, 433, 430, + 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, + 419, 418, 417, 414, 413, 412, 411, 410, 409, 408, + 407, 406, 405, 404, 403, 400, 399, 395, 394, 393, + 392, 391, 390, 389, 388, 387, 386, 385, 381, 380, + + 379, 378, 377, 376, 375, 372, 371, 370, 369, 368, + 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, + 357, 356, 355, 354, 353, 352, 351, 350, 349, 343, + 342, 341, 340, 339, 338, 337, 336, 335, 334, 333, + 205, 327, 325, 321, 319, 318, 311, 310, 309, 307, + 305, 302, 301, 300, 297, 296, 295, 280, 274, 269, + 268, 267, 264, 262, 261, 260, 259, 258, 257, 254, + 253, 252, 249, 248, 247, 246, 245, 244, 240, 239, + 232, 231, 230, 229, 228, 225, 224, 223, 219, 216, + 212, 211, 210, 205, 196, 194, 193, 192, 184, 165, + + 144, 118, 104, 102, 43, 98, 96, 95, 86, 43, + 2123, 11, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123 } ; -static const flex_int16_t yy_chk[2579] = +static const flex_int16_t yy_chk[2586] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 21, 665, 3, 3, 3, 21, 1, 1, 3, 44, + 21, 668, 3, 3, 3, 21, 1, 1, 3, 44, 0, 1, 4, 4, 4, 13, 1, 13, 4, 27, 28, 1, 106, 1, 5, 5, 5, 26, 32, 1, 1, 33, 6, 6, 6, 7, 7, 7, 1, 7, - 665, 8, 8, 8, 1, 8, 44, 27, 28, 106, + 668, 8, 8, 8, 1, 8, 44, 27, 28, 106, 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, @@ -1773,10 +1778,10 @@ static const flex_int16_t yy_chk[2579] = 17, 17, 17, 17, 17, 19, 62, 19, 19, 19, 19, 19, 145, 17, 20, 20, 20, 20, 20, 22, 19, 22, 22, 22, 22, 22, 63, 20, 53, 62, - 57, 59, 718, 63, 22, 59, 17, 73, 53, 59, + 57, 59, 716, 63, 22, 59, 17, 73, 53, 59, 62, 73, 59, 19, 70, 59, 89, 111, 99, 59, - 20, 53, 70, 719, 70, 91, 57, 22, 45, 70, - 70, 61, 57, 61, 45, 57, 53, 45, 720, 45, + 20, 53, 70, 720, 70, 91, 57, 22, 45, 70, + 70, 61, 57, 61, 45, 57, 53, 45, 721, 45, 111, 45, 89, 45, 61, 56, 67, 67, 45, 45, 67, 45, 56, 91, 61, 99, 67, 45, 45, 45, @@ -1785,16 +1790,16 @@ static const flex_int16_t yy_chk[2579] = 60, 71, 56, 60, 60, 71, 56, 60, 60, 65, 56, 69, 65, 76, 90, 71, 94, 103, 56, 65, 60, 65, 56, 68, 56, 56, 92, 68, 75, 75, - 69, 68, 69, 721, 69, 74, 76, 108, 75, 74, - 90, 722, 74, 68, 94, 103, 76, 68, 75, 74, - 74, 76, 92, 723, 74, 74, 79, 79, 79, 79, + 69, 68, 69, 722, 69, 74, 76, 108, 75, 74, + 90, 723, 74, 68, 94, 103, 76, 68, 75, 74, + 74, 76, 92, 724, 74, 74, 79, 79, 79, 79, 79, 75, 110, 75, 108, 81, 75, 81, 93, 79, 81, 81, 81, 81, 81, 80, 75, 80, 80, 80, 80, 80, 82, 75, 82, 82, 82, 82, 82, 110, 80, 133, 79, 133, 93, 105, 107, 82, 83, 83, 83, 83, 83, 87, 87, 87, 87, 87, 109, 115, - 724, 83, 101, 80, 88, 88, 88, 88, 88, 101, + 725, 83, 101, 80, 88, 88, 88, 88, 88, 101, 82, 105, 119, 123, 107, 134, 115, 135, 156, 134, 158, 119, 123, 123, 83, 119, 109, 115, 138, 179, 149, 138, 186, 135, 149, 138, 162, 164, 165, 101, @@ -1802,233 +1807,234 @@ static const flex_int16_t yy_chk[2579] = 169, 162, 162, 162, 169, 101, 173, 179, 169, 101, 186, 101, 101, 114, 167, 187, 158, 188, 189, 190, - 173, 114, 114, 114, 114, 114, 181, 248, 310, 191, - 114, 114, 114, 114, 114, 114, 177, 725, 195, 198, - 188, 187, 177, 197, 248, 190, 189, 199, 203, 167, + 173, 114, 114, 114, 114, 114, 181, 208, 726, 191, + 114, 114, 114, 114, 114, 114, 177, 310, 195, 198, + 188, 187, 177, 197, 727, 190, 189, 199, 203, 167, 167, 167, 191, 114, 114, 114, 114, 114, 114, 201, - 167, 195, 167, 268, 167, 167, 198, 167, 209, 221, - 199, 197, 221, 256, 284, 203, 320, 284, 271, 299, - 310, 299, 201, 207, 207, 207, 207, 207, 271, 312, - 222, 209, 207, 207, 207, 207, 207, 207, 222, 268, - 306, 315, 322, 324, 222, 320, 331, 405, 353, 641, - - 641, 319, 312, 268, 353, 207, 207, 207, 207, 207, - 207, 319, 716, 306, 315, 322, 256, 368, 726, 256, - 415, 324, 368, 389, 415, 331, 450, 306, 329, 329, - 329, 329, 329, 389, 558, 716, 728, 329, 329, 329, - 329, 329, 329, 381, 381, 424, 443, 587, 381, 424, - 456, 443, 456, 480, 450, 405, 729, 458, 731, 513, - 329, 329, 329, 329, 329, 329, 480, 491, 480, 513, - 368, 732, 491, 589, 587, 368, 588, 456, 589, 456, - 457, 457, 457, 457, 457, 458, 558, 477, 733, 457, - 457, 457, 457, 457, 457, 477, 593, 477, 477, 477, - - 701, 477, 611, 593, 588, 611, 715, 730, 730, 734, - 730, 701, 457, 457, 457, 457, 457, 457, 727, 735, - 736, 737, 738, 739, 727, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 715, 749, 750, 751, 752, 753, - 750, 754, 755, 756, 750, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, - 773, 774, 775, 776, 777, 778, 779, 777, 780, 782, - 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, - 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, - 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, - - 814, 815, 816, 817, 818, 819, 819, 820, 821, 822, - 817, 824, 823, 819, 825, 826, 828, 819, 823, 829, - 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, - 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, - 850, 851, 852, 853, 855, 856, 857, 858, 859, 860, - 861, 862, 863, 864, 865, 866, 867, 868, 869, 841, - 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, - 880, 881, 882, 883, 885, 886, 887, 888, 889, 890, - 891, 892, 893, 894, 890, 895, 896, 897, 898, 899, - 900, 901, 904, 905, 906, 907, 908, 909, 912, 913, - - 914, 915, 916, 918, 919, 920, 921, 922, 919, 923, - 924, 925, 926, 927, 930, 931, 932, 933, 934, 935, - 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, - 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, - 956, 957, 958, 959, 961, 962, 963, 964, 965, 966, - 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, - 977, 978, 979, 981, 982, 983, 984, 985, 986, 987, - 988, 989, 990, 991, 992, 993, 994, 995, 996, 973, - 997, 998, 972, 999, 1000, 1001, 1002, 1003, 1004, 1005, - 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, - - 1017, 1018, 1019, 1021, 1022, 1023, 1024, 1025, 1026, 1027, - 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, 1055, 1056, 1057, 1058, 1060, - 1061, 1062, 1050, 1063, 1064, 1065, 1066, 1067, 1068, 1069, - 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1079, 1080, - 1081, 1082, 1083, 1084, 1085, 1025, 1086, 1087, 1088, 1089, - 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1098, 1097, 1099, - 1100, 1101, 1102, 1103, 1105, 1106, 1107, 1109, 1110, 1111, - 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, - - 1122, 1123, 1124, 1126, 1096, 1097, 1127, 1128, 1129, 1130, - 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, - 1141, 1142, 1143, 1144, 1145, 1147, 1148, 1149, 1150, 1151, - 1147, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, + 167, 195, 167, 248, 167, 167, 198, 167, 209, 221, + 199, 197, 221, 256, 268, 203, 284, 306, 271, 284, + 248, 208, 201, 207, 207, 207, 207, 207, 271, 310, + 222, 209, 207, 207, 207, 207, 207, 207, 222, 299, + 306, 299, 312, 319, 222, 315, 320, 322, 324, 406, + + 268, 728, 390, 319, 306, 207, 207, 207, 207, 207, + 207, 354, 390, 332, 268, 312, 256, 354, 315, 256, + 322, 560, 515, 729, 451, 320, 324, 329, 329, 329, + 329, 329, 515, 644, 644, 730, 329, 329, 329, 329, + 329, 329, 332, 369, 382, 382, 416, 425, 369, 382, + 416, 425, 451, 444, 457, 482, 457, 406, 444, 329, + 329, 329, 329, 329, 329, 460, 479, 493, 482, 590, + 482, 589, 493, 560, 479, 596, 479, 479, 479, 592, + 479, 457, 596, 457, 592, 614, 719, 732, 614, 704, + 718, 733, 735, 460, 736, 737, 369, 590, 589, 738, + + 704, 369, 458, 458, 458, 458, 458, 734, 734, 719, + 734, 458, 458, 458, 458, 458, 458, 731, 718, 739, + 740, 741, 742, 731, 743, 744, 745, 746, 747, 748, + 749, 750, 751, 752, 458, 458, 458, 458, 458, 458, + 753, 754, 755, 756, 757, 754, 758, 759, 760, 754, + 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, + 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, + 782, 783, 781, 784, 786, 787, 788, 789, 790, 791, + 792, 793, 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, + 823, 823, 824, 825, 826, 821, 828, 827, 823, 829, + 830, 832, 823, 827, 833, 834, 835, 836, 837, 838, + 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, + 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, + 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, + 870, 871, 872, 873, 845, 874, 875, 876, 877, 878, + 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, + 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, + 895, 900, 901, 902, 903, 904, 905, 906, 909, 910, + + 911, 912, 913, 914, 917, 918, 919, 920, 921, 923, + 924, 925, 926, 927, 924, 928, 929, 930, 931, 932, + 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, + 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, + 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, + 966, 967, 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, 998, 999, 1000, 1001, 978, 1002, 1003, 977, 1004, + 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1013, 1014, 1015, + + 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, + 1027, 1028, 1029, 1030, 1031, 1032, 1033, 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, 1061, 1062, 1063, 1064, 1066, 1067, 1068, 1056, + 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 1085, 1086, 1087, 1088, 1089, + 1090, 1091, 1031, 1092, 1093, 1094, 1095, 1096, 1097, 1098, + 1099, 1100, 1101, 1102, 1105, 1103, 1106, 1107, 1108, 1109, + 1110, 1112, 1113, 1114, 1116, 1117, 1118, 1119, 1120, 1121, + + 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, + 1133, 1102, 1103, 1134, 1135, 1136, 1137, 1138, 1139, 1140, + 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, + 1151, 1152, 1154, 1155, 1156, 1157, 1158, 1154, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, - 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1180, 1181, - 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1191, 1192, - 1148, 1193, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, + 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, + 1181, 1182, 1183, 1184, 1185, 1187, 1188, 1189, 1190, 1191, + 1192, 1193, 1194, 1195, 1196, 1198, 1199, 1155, 1200, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, - 1213, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, - - 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1233, 1234, 1235, - 1236, 1237, 1238, 1239, 1215, 1241, 1242, 1243, 1244, 1245, - 1216, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, - 1255, 1256, 1257, 1258, 1259, 1261, 1263, 1265, 1266, 1267, - 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, - 1278, 1280, 1281, 1282, 1283, 1285, 1286, 1287, 1288, 1289, - 1290, 1292, 1294, 1296, 1297, 1298, 1299, 1300, 1301, 1302, - 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1311, 1312, 1313, - 1314, 1315, 1316, 1317, 1320, 1321, 1322, 1323, 1324, 1325, - 1326, 1327, 1328, 1329, 1331, 1332, 1333, 1334, 1335, 1337, - - 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, + 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1222, 1223, + + 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1232, 1233, 1234, + 1235, 1236, 1237, 1238, 1240, 1241, 1242, 1243, 1244, 1245, + 1246, 1222, 1248, 1249, 1250, 1251, 1252, 1223, 1253, 1254, + 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, + 1265, 1266, 1268, 1270, 1272, 1273, 1274, 1275, 1276, 1277, + 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1287, 1288, + 1289, 1290, 1292, 1293, 1294, 1295, 1296, 1297, 1299, 1301, + 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, + 1313, 1314, 1315, 1316, 1318, 1319, 1320, 1321, 1322, 1323, + 1324, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, + + 1336, 1338, 1339, 1340, 1341, 1342, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, - 1328, 1358, 1359, 1303, 1361, 1362, 1363, 1364, 1365, 1366, - 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, - 1377, 1378, 1379, 1337, 1380, 1381, 1382, 1383, 1384, 1385, - 1386, 1388, 1380, 1391, 1392, 1393, 1394, 1395, 1396, 1397, - 1398, 1399, 1400, 1401, 1403, 1404, 1405, 1406, 1407, 1408, - 1411, 1410, 1406, 1410, 1413, 1414, 1417, 1418, 1419, 1420, - 1421, 1422, 1423, 1425, 1426, 1427, 1428, 1430, 1431, 1432, - 1427, 1433, 1434, 1436, 1437, 1438, 1439, 1440, 1441, 1442, - - 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1428, - 1452, 1454, 1455, 1456, 1458, 1459, 1460, 1461, 1462, 1463, - 1464, 1465, 1466, 1467, 1468, 1469, 1471, 1473, 1474, 1476, - 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1486, 1487, - 1488, 1489, 1490, 1491, 1492, 1493, 1495, 1496, 1498, 1499, - 1500, 1502, 1503, 1502, 1504, 1505, 1502, 1506, 1507, 1502, - 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1516, 1518, 1520, - 1521, 1523, 1525, 1526, 1527, 1529, 1530, 1531, 1532, 1533, - 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, - 1544, 1545, 1535, 1546, 1547, 1548, 1549, 1521, 1550, 1551, - - 1552, 1553, 1554, 1555, 1555, 1556, 1557, 1558, 1559, 1560, - 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, + 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1335, 1365, 1366, + 1310, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, + 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, + 1344, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1395, 1387, + 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, + 1408, 1410, 1411, 1412, 1413, 1414, 1415, 1418, 1417, 1413, + 1417, 1420, 1421, 1424, 1425, 1426, 1427, 1428, 1429, 1430, + 1432, 1433, 1434, 1435, 1437, 1438, 1439, 1434, 1440, 1441, + + 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, + 1453, 1454, 1455, 1456, 1457, 1458, 1435, 1459, 1461, 1462, + 1463, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, + 1474, 1475, 1476, 1478, 1480, 1481, 1483, 1484, 1485, 1486, + 1487, 1488, 1489, 1490, 1491, 1493, 1494, 1495, 1496, 1497, + 1498, 1499, 1500, 1502, 1503, 1505, 1506, 1507, 1509, 1510, + 1509, 1511, 1512, 1509, 1513, 1514, 1509, 1515, 1516, 1517, + 1518, 1519, 1520, 1521, 1523, 1525, 1527, 1528, 1530, 1532, + 1533, 1534, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, + 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1542, + + 1553, 1554, 1555, 1556, 1528, 1557, 1558, 1559, 1560, 1561, + 1562, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, - 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1590, 1591, - 1592, 1593, 1594, 1595, 1596, 1597, 1599, 1600, 1601, 1602, - 1603, 1605, 1606, 1609, 1610, 1611, 1613, 1614, 1615, 1616, - 1617, 1618, 1619, 1556, 1620, 1621, 1622, 1623, 1624, 1626, - 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1603, 1636, - 1638, 1639, 1640, 1641, 1643, 1644, 1646, 1647, 1648, 1650, - 1651, 1652, 1653, 1654, 1656, 1657, 1658, 1659, 1660, 1661, - - 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, - 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1682, - 1683, 1685, 1686, 1687, 1689, 1690, 1691, 1692, 1693, 1694, - 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, - 1705, 1706, 1708, 1709, 1710, 1712, 1713, 1714, 1715, 1717, - 1718, 1719, 1720, 1721, 1723, 1724, 1725, 1726, 1727, 1728, - 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, - 1740, 1741, 1743, 1745, 1747, 1748, 1749, 1743, 1752, 1754, - 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, - 1766, 1767, 1768, 1769, 1770, 1772, 1773, 1774, 1775, 1776, - - 1777, 1778, 1779, 1780, 1782, 1783, 1784, 1786, 1787, 1788, - 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1797, 1798, 1799, - 1800, 1801, 1803, 1804, 1805, 1806, 1808, 1809, 1810, 1811, - 1812, 1813, 1814, 1815, 1817, 1818, 1819, 1820, 1821, 1822, - 1823, 1824, 1825, 1826, 1827, 1828, 1830, 1832, 1833, 1834, - 1835, 1836, 1837, 1838, 1839, 1840, 1842, 1844, 1845, 1846, - 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, - 1854, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, - 1866, 1867, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, - 1877, 1878, 1879, 1881, 1885, 1887, 1888, 1889, 1890, 1891, - - 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, - 1902, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, - 1913, 1914, 1915, 1916, 1917, 1919, 1920, 1921, 1922, 1923, - 1925, 1927, 1930, 1932, 1933, 1934, 1935, 1936, 1937, 1938, - 1939, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1949, 1950, - 1951, 1952, 1953, 1955, 1956, 1957, 1958, 1959, 1960, 1961, - 1962, 1963, 1964, 1965, 1966, 1968, 1969, 1970, 1971, 1972, - 1973, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, + 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, + 1591, 1592, 1593, 1594, 1595, 1597, 1598, 1599, 1600, 1601, + 1602, 1603, 1604, 1606, 1607, 1608, 1609, 1610, 1612, 1613, + 1616, 1617, 1618, 1620, 1621, 1622, 1623, 1624, 1625, 1626, + 1563, 1627, 1628, 1629, 1630, 1631, 1633, 1635, 1636, 1637, + 1638, 1639, 1640, 1641, 1642, 1610, 1643, 1645, 1646, 1647, + 1648, 1650, 1651, 1653, 1654, 1655, 1657, 1658, 1659, 1660, + + 1661, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, + 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, + 1682, 1683, 1684, 1685, 1686, 1687, 1689, 1690, 1692, 1693, + 1694, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, + 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1715, + 1716, 1717, 1719, 1720, 1721, 1722, 1724, 1725, 1726, 1727, + 1728, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, + 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1747, 1748, 1750, + 1752, 1754, 1755, 1756, 1750, 1759, 1761, 1762, 1763, 1764, + 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1773, 1774, 1775, + + 1776, 1777, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, + 1787, 1789, 1790, 1791, 1793, 1794, 1795, 1796, 1797, 1798, + 1799, 1800, 1801, 1802, 1804, 1805, 1806, 1807, 1808, 1810, + 1811, 1812, 1813, 1815, 1816, 1817, 1818, 1819, 1820, 1821, + 1822, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, + 1833, 1834, 1835, 1837, 1839, 1840, 1841, 1842, 1843, 1844, + 1845, 1846, 1847, 1849, 1851, 1852, 1853, 1854, 1855, 1856, + 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1861, 1864, 1865, + 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1876, + 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, + + 1888, 1892, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, + 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1911, 1912, + 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, + 1923, 1924, 1926, 1927, 1928, 1929, 1930, 1932, 1934, 1937, + 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1948, 1949, + 1950, 1951, 1952, 1953, 1954, 1956, 1957, 1958, 1959, 1960, + 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, + 1972, 1973, 1975, 1976, 1977, 1978, 1979, 1980, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, - 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2005, - - 2006, 2007, 2008, 2010, 2011, 2012, 2013, 2014, 2018, 2021, - 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2030, 2031, 2032, - 2033, 2034, 2035, 2036, 2037, 2038, 2040, 2041, 2042, 2043, - 2044, 2045, 2047, 2049, 2051, 2052, 2053, 2054, 2055, 2056, - 2057, 2059, 2060, 2061, 2062, 2063, 2062, 2064, 2065, 2067, - 2068, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, - 2081, 2082, 2083, 2084, 2085, 2086, 2088, 2089, 2090, 2091, - 2094, 2095, 2096, 2098, 2099, 2101, 2103, 2104, 2105, 2106, - 2107, 2108, 2109, 2110, 2112, 2117, 2117, 2117, 2118, 2118, - 2118, 2119, 2120, 2119, 2121, 2121, 2121, 2122, 2122, 2122, - - 2123, 717, 2123, 2124, 2124, 2124, 713, 712, 710, 709, - 708, 707, 706, 705, 704, 703, 702, 700, 699, 698, - 696, 695, 694, 693, 692, 691, 690, 689, 688, 687, - 686, 685, 684, 682, 681, 680, 679, 678, 677, 676, - 675, 674, 672, 671, 670, 669, 668, 667, 666, 664, - 663, 662, 661, 660, 659, 658, 657, 655, 654, 653, - 652, 651, 650, 649, 648, 647, 646, 645, 644, 643, - 642, 640, 639, 638, 637, 636, 635, 634, 633, 632, - 631, 630, 629, 628, 627, 625, 624, 623, 622, 621, - 620, 619, 618, 617, 616, 615, 614, 613, 612, 610, - - 609, 608, 607, 606, 605, 604, 603, 602, 601, 600, - 599, 598, 597, 596, 595, 594, 592, 591, 583, 582, - 581, 580, 579, 578, 576, 575, 573, 572, 570, 569, - 568, 567, 566, 565, 564, 563, 562, 561, 560, 559, - 557, 556, 555, 554, 553, 552, 551, 550, 549, 548, - 547, 546, 545, 544, 543, 542, 541, 539, 537, 536, - 535, 534, 533, 532, 531, 530, 529, 528, 527, 526, - 525, 524, 523, 522, 520, 519, 518, 517, 516, 515, - 514, 512, 511, 510, 509, 508, 507, 506, 505, 504, - 503, 502, 501, 500, 499, 498, 497, 495, 494, 493, - - 492, 490, 489, 488, 487, 486, 485, 484, 482, 481, - 479, 478, 475, 474, 473, 472, 471, 470, 468, 467, - 466, 465, 464, 463, 462, 461, 460, 459, 454, 452, - 451, 449, 448, 447, 444, 442, 441, 439, 438, 437, - 436, 435, 434, 433, 432, 431, 430, 429, 428, 427, - 426, 425, 423, 422, 421, 420, 419, 418, 417, 416, - 414, 413, 412, 411, 409, 408, 407, 406, 404, 403, - 402, 401, 400, 399, 398, 397, 396, 395, 394, 393, - 392, 390, 388, 387, 386, 385, 384, 383, 382, 380, - 379, 378, 377, 376, 375, 374, 373, 372, 371, 370, - - 369, 367, 366, 365, 364, 363, 362, 361, 360, 359, - 358, 357, 356, 355, 354, 352, 351, 350, 349, 348, - 347, 346, 345, 344, 343, 342, 341, 340, 339, 338, - 337, 336, 335, 334, 333, 332, 328, 326, 323, 321, - 318, 311, 309, 308, 307, 305, 304, 303, 302, 301, - 300, 298, 297, 296, 295, 294, 293, 292, 291, 290, - 289, 288, 287, 286, 285, 283, 282, 281, 280, 279, - 278, 277, 276, 275, 274, 273, 272, 270, 269, 267, - 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, - 255, 254, 253, 252, 251, 250, 249, 247, 246, 244, - - 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, - 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, - 223, 220, 219, 218, 217, 216, 215, 214, 213, 212, - 211, 210, 208, 204, 202, 200, 196, 194, 192, 184, - 183, 182, 180, 178, 176, 175, 174, 172, 171, 170, - 166, 163, 161, 160, 159, 157, 155, 154, 153, 152, - 151, 150, 148, 147, 146, 144, 143, 142, 141, 140, - 139, 137, 136, 132, 131, 130, 129, 128, 126, 125, - 124, 122, 120, 118, 117, 116, 112, 104, 102, 97, - 96, 77, 72, 66, 58, 49, 47, 43, 41, 39, - - 38, 24, 14, 11, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116 + 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, + + 2004, 2005, 2006, 2007, 2009, 2010, 2012, 2013, 2014, 2015, + 2017, 2018, 2019, 2020, 2021, 2025, 2028, 2029, 2030, 2031, + 2032, 2033, 2034, 2035, 2037, 2038, 2039, 2040, 2041, 2042, + 2043, 2044, 2045, 2047, 2048, 2049, 2050, 2051, 2052, 2054, + 2056, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2066, 2067, + 2068, 2069, 2070, 2069, 2071, 2072, 2074, 2075, 2079, 2080, + 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, + 2091, 2092, 2093, 2095, 2096, 2097, 2098, 2101, 2102, 2103, + 2105, 2106, 2108, 2110, 2111, 2112, 2113, 2114, 2115, 2116, + 2117, 2119, 2124, 2124, 2124, 2125, 2125, 2125, 2126, 2127, + + 2126, 2128, 2128, 2128, 2129, 2129, 2129, 2130, 715, 2130, + 2131, 2131, 2131, 713, 712, 711, 710, 709, 708, 707, + 706, 705, 703, 702, 701, 699, 698, 697, 696, 695, + 694, 693, 692, 691, 690, 689, 688, 687, 685, 684, + 683, 682, 681, 680, 679, 678, 677, 675, 674, 673, + 672, 671, 670, 669, 667, 666, 665, 664, 663, 662, + 661, 660, 658, 657, 656, 655, 654, 653, 652, 651, + 650, 649, 648, 647, 646, 645, 643, 642, 641, 640, + 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, + 628, 627, 626, 625, 624, 623, 622, 621, 620, 619, + + 618, 617, 616, 615, 613, 612, 611, 610, 609, 608, + 607, 606, 605, 604, 603, 602, 601, 600, 599, 598, + 597, 595, 594, 591, 585, 584, 583, 582, 581, 580, + 578, 577, 575, 574, 572, 571, 570, 569, 568, 567, + 566, 565, 564, 563, 562, 561, 559, 558, 557, 556, + 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, + 545, 544, 543, 541, 539, 538, 537, 536, 535, 534, + 533, 532, 531, 530, 529, 528, 527, 526, 525, 524, + 522, 521, 520, 519, 518, 517, 516, 514, 513, 512, + 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, + + 501, 500, 499, 497, 496, 495, 494, 492, 491, 490, + 489, 488, 487, 486, 484, 483, 481, 480, 477, 476, + 475, 474, 473, 472, 470, 469, 468, 467, 466, 465, + 464, 463, 462, 461, 459, 455, 453, 452, 450, 449, + 448, 445, 443, 442, 440, 439, 438, 437, 436, 435, + 434, 433, 432, 431, 430, 429, 428, 427, 426, 424, + 423, 422, 421, 420, 419, 418, 417, 415, 414, 413, + 412, 410, 409, 408, 407, 405, 404, 403, 402, 401, + 400, 399, 398, 397, 396, 395, 394, 393, 391, 389, + 388, 387, 386, 385, 384, 383, 381, 380, 379, 378, + + 377, 376, 375, 374, 373, 372, 371, 370, 368, 367, + 366, 365, 364, 363, 362, 361, 360, 359, 358, 357, + 356, 355, 353, 352, 351, 350, 349, 348, 347, 346, + 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, + 335, 334, 333, 331, 328, 326, 323, 321, 318, 311, + 309, 308, 307, 305, 304, 303, 302, 301, 300, 298, + 297, 296, 295, 294, 293, 292, 291, 290, 289, 288, + 287, 286, 285, 283, 282, 281, 280, 279, 278, 277, + 276, 275, 274, 273, 272, 270, 269, 267, 266, 265, + 264, 263, 262, 261, 260, 259, 258, 257, 255, 254, + + 253, 252, 251, 250, 249, 247, 246, 244, 243, 242, + 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, + 231, 230, 229, 228, 227, 226, 225, 224, 223, 220, + 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, + 204, 202, 200, 196, 194, 192, 184, 183, 182, 180, + 178, 176, 175, 174, 172, 171, 170, 166, 163, 161, + 160, 159, 157, 155, 154, 153, 152, 151, 150, 148, + 147, 146, 144, 143, 142, 141, 140, 139, 137, 136, + 132, 131, 130, 129, 128, 126, 125, 124, 122, 120, + 118, 117, 116, 112, 104, 102, 97, 96, 77, 72, + + 66, 58, 49, 47, 43, 41, 39, 38, 24, 14, + 11, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123 } ; static yy_state_type yy_last_accepting_state; @@ -2037,7 +2043,7 @@ static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[217] = +static const flex_int16_t yy_rule_linenum[218] = { 0, 146, 148, 150, 155, 156, 161, 162, 163, 175, 178, 183, 190, 199, 208, 217, 226, 235, 244, 253, 263, @@ -2045,24 +2051,24 @@ static const flex_int16_t yy_rule_linenum[217] = 362, 371, 380, 389, 398, 410, 419, 428, 437, 448, 459, 470, 481, 492, 503, 514, 525, 536, 545, 554, 563, 574, 583, 594, 605, 616, 627, 639, 651, 663, - 674, 685, 694, 703, 712, 721, 730, 741, 752, 763, - 774, 785, 796, 807, 818, 828, 839, 848, 858, 872, - 888, 897, 906, 915, 924, 946, 968, 977, 987, 996, - 1007, 1016, 1025, 1034, 1043, 1052, 1063, 1074, 1085, 1095, - - 1104, 1115, 1126, 1137, 1148, 1160, 1169, 1178, 1187, 1196, - 1205, 1214, 1223, 1232, 1241, 1251, 1262, 1274, 1283, 1292, - 1301, 1311, 1321, 1331, 1341, 1351, 1361, 1370, 1380, 1389, - 1398, 1407, 1416, 1426, 1436, 1445, 1455, 1464, 1473, 1482, - 1491, 1500, 1509, 1518, 1527, 1536, 1545, 1554, 1563, 1572, - 1581, 1590, 1599, 1608, 1617, 1626, 1635, 1644, 1653, 1662, - 1671, 1680, 1689, 1698, 1707, 1716, 1725, 1734, 1743, 1752, - 1761, 1770, 1782, 1794, 1804, 1814, 1824, 1834, 1844, 1854, - 1864, 1874, 1884, 1893, 1902, 1911, 1920, 1931, 1942, 1955, - 1968, 1981, 1990, 1999, 2008, 2017, 2026, 2036, 2137, 2153, - - 2202, 2210, 2225, 2226, 2227, 2228, 2229, 2230, 2232, 2250, - 2263, 2268, 2272, 2274, 2276, 2278 + 674, 685, 694, 703, 712, 723, 732, 741, 752, 763, + 774, 785, 796, 807, 818, 829, 839, 850, 859, 869, + 883, 899, 908, 917, 926, 935, 957, 979, 988, 998, + 1007, 1018, 1027, 1036, 1045, 1054, 1063, 1074, 1085, 1096, + + 1106, 1115, 1126, 1137, 1148, 1159, 1171, 1180, 1189, 1198, + 1207, 1216, 1225, 1234, 1243, 1252, 1262, 1273, 1285, 1294, + 1303, 1312, 1322, 1332, 1342, 1352, 1362, 1372, 1381, 1391, + 1400, 1409, 1418, 1427, 1437, 1447, 1456, 1466, 1475, 1484, + 1493, 1502, 1511, 1520, 1529, 1538, 1547, 1556, 1565, 1574, + 1583, 1592, 1601, 1610, 1619, 1628, 1637, 1646, 1655, 1664, + 1673, 1682, 1691, 1700, 1709, 1718, 1727, 1736, 1745, 1754, + 1763, 1772, 1781, 1793, 1805, 1815, 1825, 1835, 1845, 1855, + 1865, 1875, 1885, 1895, 1904, 1913, 1922, 1931, 1942, 1953, + 1966, 1979, 1992, 2001, 2010, 2019, 2028, 2037, 2047, 2148, + + 2164, 2213, 2221, 2236, 2237, 2238, 2239, 2240, 2241, 2243, + 2261, 2274, 2279, 2283, 2285, 2287, 2289 } ; /* The intent behind this definition is that it'll catch @@ -2116,7 +2122,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg) -#line 2119 "dhcp4_lexer.cc" +#line 2125 "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 @@ -2142,8 +2148,8 @@ using namespace isc::dhcp; by moving it ahead by yyleng bytes. yyleng specifies the length of the currently matched token. */ #define YY_USER_ACTION driver.loc_.columns(yyleng); -#line 2145 "dhcp4_lexer.cc" -#line 2146 "dhcp4_lexer.cc" +#line 2151 "dhcp4_lexer.cc" +#line 2152 "dhcp4_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2199,7 +2205,7 @@ FILE *yyget_out ( void ); void yyset_out ( FILE * _out_str ); - int yyget_leng ( void ); + yy_size_t yyget_leng ( void ); char *yyget_text ( void ); @@ -2286,7 +2292,7 @@ static int input ( void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + yy_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -2471,7 +2477,7 @@ YY_DECL } -#line 2474 "dhcp4_lexer.cc" +#line 2480 "dhcp4_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2500,13 +2506,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2117 ) + if ( yy_current_state >= 2124 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 2116 ); + while ( yy_current_state != 2123 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -2525,13 +2531,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 217 ) + else if ( yy_act < 218 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 217 ) + else if ( yy_act == 218 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 218 ) + else if ( yy_act == 219 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -3322,15 +3328,29 @@ YY_RULE_SETUP { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: + case isc::dhcp::Parser4Context::SUBNET4: + case isc::dhcp::Parser4Context::SHARED_NETWORK: + return isc::dhcp::Dhcp4Parser::make_ALLOCATOR(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("allocator", driver.loc_); + } +} + YY_BREAK +case 66: +YY_RULE_SETUP +#line 723 "dhcp4_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::DHCP4: return isc::dhcp::Dhcp4Parser::make_STATISTIC_DEFAULT_SAMPLE_COUNT(driver.loc_); default: return isc::dhcp::Dhcp4Parser::make_STRING("statistic-default-sample-count", driver.loc_); } } YY_BREAK -case 66: +case 67: YY_RULE_SETUP -#line 721 "dhcp4_lexer.ll" +#line 732 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3340,9 +3360,9 @@ YY_RULE_SETUP } } YY_BREAK -case 67: +case 68: YY_RULE_SETUP -#line 730 "dhcp4_lexer.ll" +#line 741 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3354,9 +3374,9 @@ YY_RULE_SETUP } } YY_BREAK -case 68: +case 69: YY_RULE_SETUP -#line 741 "dhcp4_lexer.ll" +#line 752 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3368,9 +3388,9 @@ YY_RULE_SETUP } } YY_BREAK -case 69: +case 70: YY_RULE_SETUP -#line 752 "dhcp4_lexer.ll" +#line 763 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3382,9 +3402,9 @@ YY_RULE_SETUP } } YY_BREAK -case 70: +case 71: YY_RULE_SETUP -#line 763 "dhcp4_lexer.ll" +#line 774 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3396,9 +3416,9 @@ YY_RULE_SETUP } } YY_BREAK -case 71: +case 72: YY_RULE_SETUP -#line 774 "dhcp4_lexer.ll" +#line 785 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3410,9 +3430,9 @@ YY_RULE_SETUP } } YY_BREAK -case 72: +case 73: YY_RULE_SETUP -#line 785 "dhcp4_lexer.ll" +#line 796 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3424,9 +3444,9 @@ YY_RULE_SETUP } } YY_BREAK -case 73: +case 74: YY_RULE_SETUP -#line 796 "dhcp4_lexer.ll" +#line 807 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3438,9 +3458,9 @@ YY_RULE_SETUP } } YY_BREAK -case 74: +case 75: YY_RULE_SETUP -#line 807 "dhcp4_lexer.ll" +#line 818 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3452,9 +3472,9 @@ YY_RULE_SETUP } } YY_BREAK -case 75: +case 76: YY_RULE_SETUP -#line 818 "dhcp4_lexer.ll" +#line 829 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3465,9 +3485,9 @@ YY_RULE_SETUP } } YY_BREAK -case 76: +case 77: YY_RULE_SETUP -#line 828 "dhcp4_lexer.ll" +#line 839 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3479,9 +3499,9 @@ YY_RULE_SETUP } } YY_BREAK -case 77: +case 78: YY_RULE_SETUP -#line 839 "dhcp4_lexer.ll" +#line 850 "dhcp4_lexer.ll" { switch (driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3491,9 +3511,9 @@ YY_RULE_SETUP } } YY_BREAK -case 78: +case 79: YY_RULE_SETUP -#line 848 "dhcp4_lexer.ll" +#line 859 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3504,9 +3524,9 @@ YY_RULE_SETUP } } YY_BREAK -case 79: +case 80: YY_RULE_SETUP -#line 858 "dhcp4_lexer.ll" +#line 869 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3521,9 +3541,9 @@ YY_RULE_SETUP } } YY_BREAK -case 80: +case 81: YY_RULE_SETUP -#line 872 "dhcp4_lexer.ll" +#line 883 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -3540,9 +3560,9 @@ YY_RULE_SETUP } } YY_BREAK -case 81: +case 82: YY_RULE_SETUP -#line 888 "dhcp4_lexer.ll" +#line 899 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -3552,9 +3572,9 @@ YY_RULE_SETUP } } YY_BREAK -case 82: +case 83: YY_RULE_SETUP -#line 897 "dhcp4_lexer.ll" +#line 908 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -3564,9 +3584,9 @@ YY_RULE_SETUP } } YY_BREAK -case 83: +case 84: YY_RULE_SETUP -#line 906 "dhcp4_lexer.ll" +#line 917 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3576,9 +3596,9 @@ YY_RULE_SETUP } } YY_BREAK -case 84: +case 85: YY_RULE_SETUP -#line 915 "dhcp4_lexer.ll" +#line 926 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::POOLS: @@ -3588,9 +3608,9 @@ YY_RULE_SETUP } } YY_BREAK -case 85: +case 86: YY_RULE_SETUP -#line 924 "dhcp4_lexer.ll" +#line 935 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3613,9 +3633,9 @@ YY_RULE_SETUP } } YY_BREAK -case 86: +case 87: YY_RULE_SETUP -#line 946 "dhcp4_lexer.ll" +#line 957 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3638,9 +3658,9 @@ YY_RULE_SETUP } } YY_BREAK -case 87: +case 88: YY_RULE_SETUP -#line 968 "dhcp4_lexer.ll" +#line 979 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3650,9 +3670,9 @@ YY_RULE_SETUP } } YY_BREAK -case 88: +case 89: YY_RULE_SETUP -#line 977 "dhcp4_lexer.ll" +#line 988 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3663,9 +3683,9 @@ YY_RULE_SETUP } } YY_BREAK -case 89: +case 90: YY_RULE_SETUP -#line 987 "dhcp4_lexer.ll" +#line 998 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3675,9 +3695,9 @@ YY_RULE_SETUP } } YY_BREAK -case 90: +case 91: YY_RULE_SETUP -#line 996 "dhcp4_lexer.ll" +#line 1007 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3689,9 +3709,9 @@ YY_RULE_SETUP } } YY_BREAK -case 91: +case 92: YY_RULE_SETUP -#line 1007 "dhcp4_lexer.ll" +#line 1018 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3701,9 +3721,9 @@ YY_RULE_SETUP } } YY_BREAK -case 92: +case 93: YY_RULE_SETUP -#line 1016 "dhcp4_lexer.ll" +#line 1027 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3713,9 +3733,9 @@ YY_RULE_SETUP } } YY_BREAK -case 93: +case 94: YY_RULE_SETUP -#line 1025 "dhcp4_lexer.ll" +#line 1036 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3725,9 +3745,9 @@ YY_RULE_SETUP } } YY_BREAK -case 94: +case 95: YY_RULE_SETUP -#line 1034 "dhcp4_lexer.ll" +#line 1045 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3737,9 +3757,9 @@ YY_RULE_SETUP } } YY_BREAK -case 95: +case 96: YY_RULE_SETUP -#line 1043 "dhcp4_lexer.ll" +#line 1054 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3749,9 +3769,9 @@ YY_RULE_SETUP } } YY_BREAK -case 96: +case 97: YY_RULE_SETUP -#line 1052 "dhcp4_lexer.ll" +#line 1063 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3763,9 +3783,9 @@ YY_RULE_SETUP } } YY_BREAK -case 97: +case 98: YY_RULE_SETUP -#line 1063 "dhcp4_lexer.ll" +#line 1074 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3777,9 +3797,9 @@ YY_RULE_SETUP } } YY_BREAK -case 98: +case 99: YY_RULE_SETUP -#line 1074 "dhcp4_lexer.ll" +#line 1085 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3791,9 +3811,9 @@ YY_RULE_SETUP } } YY_BREAK -case 99: +case 100: YY_RULE_SETUP -#line 1085 "dhcp4_lexer.ll" +#line 1096 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -3804,9 +3824,9 @@ YY_RULE_SETUP } } YY_BREAK -case 100: +case 101: YY_RULE_SETUP -#line 1095 "dhcp4_lexer.ll" +#line 1106 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3816,9 +3836,9 @@ YY_RULE_SETUP } } YY_BREAK -case 101: +case 102: YY_RULE_SETUP -#line 1104 "dhcp4_lexer.ll" +#line 1115 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3830,9 +3850,9 @@ YY_RULE_SETUP } } YY_BREAK -case 102: +case 103: YY_RULE_SETUP -#line 1115 "dhcp4_lexer.ll" +#line 1126 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3844,9 +3864,9 @@ YY_RULE_SETUP } } YY_BREAK -case 103: +case 104: YY_RULE_SETUP -#line 1126 "dhcp4_lexer.ll" +#line 1137 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3858,9 +3878,9 @@ YY_RULE_SETUP } } YY_BREAK -case 104: +case 105: YY_RULE_SETUP -#line 1137 "dhcp4_lexer.ll" +#line 1148 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3872,9 +3892,9 @@ YY_RULE_SETUP } } YY_BREAK -case 105: +case 106: YY_RULE_SETUP -#line 1148 "dhcp4_lexer.ll" +#line 1159 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3886,9 +3906,9 @@ YY_RULE_SETUP } } YY_BREAK -case 106: +case 107: YY_RULE_SETUP -#line 1160 "dhcp4_lexer.ll" +#line 1171 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3898,9 +3918,9 @@ YY_RULE_SETUP } } YY_BREAK -case 107: +case 108: YY_RULE_SETUP -#line 1169 "dhcp4_lexer.ll" +#line 1180 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -3910,9 +3930,9 @@ YY_RULE_SETUP } } YY_BREAK -case 108: +case 109: YY_RULE_SETUP -#line 1178 "dhcp4_lexer.ll" +#line 1189 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3922,9 +3942,9 @@ YY_RULE_SETUP } } YY_BREAK -case 109: +case 110: YY_RULE_SETUP -#line 1187 "dhcp4_lexer.ll" +#line 1198 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -3934,9 +3954,9 @@ YY_RULE_SETUP } } YY_BREAK -case 110: +case 111: YY_RULE_SETUP -#line 1196 "dhcp4_lexer.ll" +#line 1207 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3946,9 +3966,9 @@ YY_RULE_SETUP } } YY_BREAK -case 111: +case 112: YY_RULE_SETUP -#line 1205 "dhcp4_lexer.ll" +#line 1216 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3958,9 +3978,9 @@ YY_RULE_SETUP } } YY_BREAK -case 112: +case 113: YY_RULE_SETUP -#line 1214 "dhcp4_lexer.ll" +#line 1225 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3970,9 +3990,9 @@ YY_RULE_SETUP } } YY_BREAK -case 113: +case 114: YY_RULE_SETUP -#line 1223 "dhcp4_lexer.ll" +#line 1234 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3982,9 +4002,9 @@ YY_RULE_SETUP } } YY_BREAK -case 114: +case 115: YY_RULE_SETUP -#line 1232 "dhcp4_lexer.ll" +#line 1243 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -3994,9 +4014,9 @@ YY_RULE_SETUP } } YY_BREAK -case 115: +case 116: YY_RULE_SETUP -#line 1241 "dhcp4_lexer.ll" +#line 1252 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4007,9 +4027,9 @@ YY_RULE_SETUP } } YY_BREAK -case 116: +case 117: YY_RULE_SETUP -#line 1251 "dhcp4_lexer.ll" +#line 1262 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4021,9 +4041,9 @@ YY_RULE_SETUP } } YY_BREAK -case 117: +case 118: YY_RULE_SETUP -#line 1262 "dhcp4_lexer.ll" +#line 1273 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4036,9 +4056,9 @@ YY_RULE_SETUP } } YY_BREAK -case 118: +case 119: YY_RULE_SETUP -#line 1274 "dhcp4_lexer.ll" +#line 1285 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -4048,9 +4068,9 @@ YY_RULE_SETUP } } YY_BREAK -case 119: +case 120: YY_RULE_SETUP -#line 1283 "dhcp4_lexer.ll" +#line 1294 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -4060,9 +4080,9 @@ YY_RULE_SETUP } } YY_BREAK -case 120: +case 121: YY_RULE_SETUP -#line 1292 "dhcp4_lexer.ll" +#line 1303 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -4072,9 +4092,9 @@ YY_RULE_SETUP } } YY_BREAK -case 121: +case 122: YY_RULE_SETUP -#line 1301 "dhcp4_lexer.ll" +#line 1312 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4085,9 +4105,9 @@ YY_RULE_SETUP } } YY_BREAK -case 122: +case 123: YY_RULE_SETUP -#line 1311 "dhcp4_lexer.ll" +#line 1322 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4098,9 +4118,9 @@ YY_RULE_SETUP } } YY_BREAK -case 123: +case 124: YY_RULE_SETUP -#line 1321 "dhcp4_lexer.ll" +#line 1332 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4111,9 +4131,9 @@ YY_RULE_SETUP } } YY_BREAK -case 124: +case 125: YY_RULE_SETUP -#line 1331 "dhcp4_lexer.ll" +#line 1342 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4124,9 +4144,9 @@ YY_RULE_SETUP } } YY_BREAK -case 125: +case 126: YY_RULE_SETUP -#line 1341 "dhcp4_lexer.ll" +#line 1352 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4137,9 +4157,9 @@ YY_RULE_SETUP } } YY_BREAK -case 126: +case 127: YY_RULE_SETUP -#line 1351 "dhcp4_lexer.ll" +#line 1362 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4150,9 +4170,9 @@ YY_RULE_SETUP } } YY_BREAK -case 127: +case 128: YY_RULE_SETUP -#line 1361 "dhcp4_lexer.ll" +#line 1372 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATIONS: @@ -4162,9 +4182,9 @@ YY_RULE_SETUP } } YY_BREAK -case 128: +case 129: YY_RULE_SETUP -#line 1370 "dhcp4_lexer.ll" +#line 1381 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4175,9 +4195,9 @@ YY_RULE_SETUP } } YY_BREAK -case 129: +case 130: YY_RULE_SETUP -#line 1380 "dhcp4_lexer.ll" +#line 1391 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -4187,9 +4207,9 @@ YY_RULE_SETUP } } YY_BREAK -case 130: +case 131: YY_RULE_SETUP -#line 1389 "dhcp4_lexer.ll" +#line 1400 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4199,9 +4219,9 @@ YY_RULE_SETUP } } YY_BREAK -case 131: +case 132: YY_RULE_SETUP -#line 1398 "dhcp4_lexer.ll" +#line 1409 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4211,9 +4231,9 @@ YY_RULE_SETUP } } YY_BREAK -case 132: +case 133: YY_RULE_SETUP -#line 1407 "dhcp4_lexer.ll" +#line 1418 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4223,9 +4243,9 @@ YY_RULE_SETUP } } YY_BREAK -case 133: +case 134: YY_RULE_SETUP -#line 1416 "dhcp4_lexer.ll" +#line 1427 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4236,9 +4256,9 @@ YY_RULE_SETUP } } YY_BREAK -case 134: +case 135: YY_RULE_SETUP -#line 1426 "dhcp4_lexer.ll" +#line 1437 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RELAY: @@ -4249,9 +4269,9 @@ YY_RULE_SETUP } } YY_BREAK -case 135: +case 136: YY_RULE_SETUP -#line 1436 "dhcp4_lexer.ll" +#line 1447 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RELAY: @@ -4261,9 +4281,9 @@ YY_RULE_SETUP } } YY_BREAK -case 136: +case 137: YY_RULE_SETUP -#line 1445 "dhcp4_lexer.ll" +#line 1456 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4273,9 +4293,9 @@ YY_RULE_SETUP } } YY_BREAK -case 137: +case 138: YY_RULE_SETUP -#line 1455 "dhcp4_lexer.ll" +#line 1466 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOOKS_LIBRARIES: @@ -4285,9 +4305,9 @@ YY_RULE_SETUP } } YY_BREAK -case 138: +case 139: YY_RULE_SETUP -#line 1464 "dhcp4_lexer.ll" +#line 1475 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOOKS_LIBRARIES: @@ -4297,9 +4317,9 @@ YY_RULE_SETUP } } YY_BREAK -case 139: +case 140: YY_RULE_SETUP -#line 1473 "dhcp4_lexer.ll" +#line 1484 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4309,9 +4329,9 @@ YY_RULE_SETUP } } YY_BREAK -case 140: +case 141: YY_RULE_SETUP -#line 1482 "dhcp4_lexer.ll" +#line 1493 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4321,9 +4341,9 @@ YY_RULE_SETUP } } YY_BREAK -case 141: +case 142: YY_RULE_SETUP -#line 1491 "dhcp4_lexer.ll" +#line 1502 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4333,9 +4353,9 @@ YY_RULE_SETUP } } YY_BREAK -case 142: +case 143: YY_RULE_SETUP -#line 1500 "dhcp4_lexer.ll" +#line 1511 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4345,9 +4365,9 @@ YY_RULE_SETUP } } YY_BREAK -case 143: +case 144: YY_RULE_SETUP -#line 1509 "dhcp4_lexer.ll" +#line 1520 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4357,9 +4377,9 @@ YY_RULE_SETUP } } YY_BREAK -case 144: +case 145: YY_RULE_SETUP -#line 1518 "dhcp4_lexer.ll" +#line 1529 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4369,9 +4389,9 @@ YY_RULE_SETUP } } YY_BREAK -case 145: +case 146: YY_RULE_SETUP -#line 1527 "dhcp4_lexer.ll" +#line 1538 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4381,9 +4401,9 @@ YY_RULE_SETUP } } YY_BREAK -case 146: +case 147: YY_RULE_SETUP -#line 1536 "dhcp4_lexer.ll" +#line 1547 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4393,9 +4413,9 @@ YY_RULE_SETUP } } YY_BREAK -case 147: +case 148: YY_RULE_SETUP -#line 1545 "dhcp4_lexer.ll" +#line 1556 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4405,9 +4425,9 @@ YY_RULE_SETUP } } YY_BREAK -case 148: +case 149: YY_RULE_SETUP -#line 1554 "dhcp4_lexer.ll" +#line 1565 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: @@ -4417,9 +4437,9 @@ YY_RULE_SETUP } } YY_BREAK -case 149: +case 150: YY_RULE_SETUP -#line 1563 "dhcp4_lexer.ll" +#line 1574 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: @@ -4429,9 +4449,9 @@ YY_RULE_SETUP } } YY_BREAK -case 150: +case 151: YY_RULE_SETUP -#line 1572 "dhcp4_lexer.ll" +#line 1583 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: @@ -4441,9 +4461,9 @@ YY_RULE_SETUP } } YY_BREAK -case 151: +case 152: YY_RULE_SETUP -#line 1581 "dhcp4_lexer.ll" +#line 1592 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4453,9 +4473,9 @@ YY_RULE_SETUP } } YY_BREAK -case 152: +case 153: YY_RULE_SETUP -#line 1590 "dhcp4_lexer.ll" +#line 1601 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -4465,9 +4485,9 @@ YY_RULE_SETUP } } YY_BREAK -case 153: +case 154: YY_RULE_SETUP -#line 1599 "dhcp4_lexer.ll" +#line 1610 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -4477,9 +4497,9 @@ YY_RULE_SETUP } } YY_BREAK -case 154: +case 155: YY_RULE_SETUP -#line 1608 "dhcp4_lexer.ll" +#line 1619 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4489,9 +4509,9 @@ YY_RULE_SETUP } } YY_BREAK -case 155: +case 156: YY_RULE_SETUP -#line 1617 "dhcp4_lexer.ll" +#line 1628 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: @@ -4501,9 +4521,9 @@ YY_RULE_SETUP } } YY_BREAK -case 156: +case 157: YY_RULE_SETUP -#line 1626 "dhcp4_lexer.ll" +#line 1637 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: @@ -4513,9 +4533,9 @@ YY_RULE_SETUP } } YY_BREAK -case 157: +case 158: YY_RULE_SETUP -#line 1635 "dhcp4_lexer.ll" +#line 1646 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: @@ -4525,9 +4545,9 @@ YY_RULE_SETUP } } YY_BREAK -case 158: +case 159: YY_RULE_SETUP -#line 1644 "dhcp4_lexer.ll" +#line 1655 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4537,9 +4557,9 @@ YY_RULE_SETUP } } YY_BREAK -case 159: +case 160: YY_RULE_SETUP -#line 1653 "dhcp4_lexer.ll" +#line 1664 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4549,9 +4569,9 @@ YY_RULE_SETUP } } YY_BREAK -case 160: +case 161: YY_RULE_SETUP -#line 1662 "dhcp4_lexer.ll" +#line 1673 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4561,9 +4581,9 @@ YY_RULE_SETUP } } YY_BREAK -case 161: +case 162: YY_RULE_SETUP -#line 1671 "dhcp4_lexer.ll" +#line 1682 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4573,9 +4593,9 @@ YY_RULE_SETUP } } YY_BREAK -case 162: +case 163: YY_RULE_SETUP -#line 1680 "dhcp4_lexer.ll" +#line 1691 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4585,9 +4605,9 @@ YY_RULE_SETUP } } YY_BREAK -case 163: +case 164: YY_RULE_SETUP -#line 1689 "dhcp4_lexer.ll" +#line 1700 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4597,9 +4617,9 @@ YY_RULE_SETUP } } YY_BREAK -case 164: +case 165: YY_RULE_SETUP -#line 1698 "dhcp4_lexer.ll" +#line 1709 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4609,9 +4629,9 @@ YY_RULE_SETUP } } YY_BREAK -case 165: +case 166: YY_RULE_SETUP -#line 1707 "dhcp4_lexer.ll" +#line 1718 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4621,9 +4641,9 @@ YY_RULE_SETUP } } YY_BREAK -case 166: +case 167: YY_RULE_SETUP -#line 1716 "dhcp4_lexer.ll" +#line 1727 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4633,9 +4653,9 @@ YY_RULE_SETUP } } YY_BREAK -case 167: +case 168: YY_RULE_SETUP -#line 1725 "dhcp4_lexer.ll" +#line 1736 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4645,9 +4665,9 @@ YY_RULE_SETUP } } YY_BREAK -case 168: +case 169: YY_RULE_SETUP -#line 1734 "dhcp4_lexer.ll" +#line 1745 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4657,9 +4677,9 @@ YY_RULE_SETUP } } YY_BREAK -case 169: +case 170: YY_RULE_SETUP -#line 1743 "dhcp4_lexer.ll" +#line 1754 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4669,9 +4689,9 @@ YY_RULE_SETUP } } YY_BREAK -case 170: +case 171: YY_RULE_SETUP -#line 1752 "dhcp4_lexer.ll" +#line 1763 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4681,9 +4701,9 @@ YY_RULE_SETUP } } YY_BREAK -case 171: +case 172: YY_RULE_SETUP -#line 1761 "dhcp4_lexer.ll" +#line 1772 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4693,9 +4713,9 @@ YY_RULE_SETUP } } YY_BREAK -case 172: +case 173: YY_RULE_SETUP -#line 1770 "dhcp4_lexer.ll" +#line 1781 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4708,9 +4728,9 @@ YY_RULE_SETUP } } YY_BREAK -case 173: +case 174: YY_RULE_SETUP -#line 1782 "dhcp4_lexer.ll" +#line 1793 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4723,9 +4743,9 @@ YY_RULE_SETUP } } YY_BREAK -case 174: +case 175: YY_RULE_SETUP -#line 1794 "dhcp4_lexer.ll" +#line 1805 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { @@ -4736,9 +4756,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 175: +case 176: YY_RULE_SETUP -#line 1804 "dhcp4_lexer.ll" +#line 1815 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { @@ -4749,9 +4769,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 176: +case 177: YY_RULE_SETUP -#line 1814 "dhcp4_lexer.ll" +#line 1825 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) { @@ -4762,9 +4782,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 177: +case 178: YY_RULE_SETUP -#line 1824 "dhcp4_lexer.ll" +#line 1835 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4775,9 +4795,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 178: +case 179: YY_RULE_SETUP -#line 1834 "dhcp4_lexer.ll" +#line 1845 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4788,9 +4808,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 179: +case 180: YY_RULE_SETUP -#line 1844 "dhcp4_lexer.ll" +#line 1855 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4801,9 +4821,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 180: +case 181: YY_RULE_SETUP -#line 1854 "dhcp4_lexer.ll" +#line 1865 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4814,9 +4834,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 181: +case 182: YY_RULE_SETUP -#line 1864 "dhcp4_lexer.ll" +#line 1875 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4827,9 +4847,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 182: +case 183: YY_RULE_SETUP -#line 1874 "dhcp4_lexer.ll" +#line 1885 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -4840,9 +4860,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 183: +case 184: YY_RULE_SETUP -#line 1884 "dhcp4_lexer.ll" +#line 1895 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4852,9 +4872,9 @@ YY_RULE_SETUP } } YY_BREAK -case 184: +case 185: YY_RULE_SETUP -#line 1893 "dhcp4_lexer.ll" +#line 1904 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4864,9 +4884,9 @@ YY_RULE_SETUP } } YY_BREAK -case 185: +case 186: YY_RULE_SETUP -#line 1902 "dhcp4_lexer.ll" +#line 1913 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4876,9 +4896,9 @@ YY_RULE_SETUP } } YY_BREAK -case 186: +case 187: YY_RULE_SETUP -#line 1911 "dhcp4_lexer.ll" +#line 1922 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4888,9 +4908,9 @@ YY_RULE_SETUP } } YY_BREAK -case 187: +case 188: YY_RULE_SETUP -#line 1920 "dhcp4_lexer.ll" +#line 1931 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4902,9 +4922,9 @@ YY_RULE_SETUP } } YY_BREAK -case 188: +case 189: YY_RULE_SETUP -#line 1931 "dhcp4_lexer.ll" +#line 1942 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4916,9 +4936,9 @@ YY_RULE_SETUP } } YY_BREAK -case 189: +case 190: YY_RULE_SETUP -#line 1942 "dhcp4_lexer.ll" +#line 1953 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4932,9 +4952,9 @@ YY_RULE_SETUP } } YY_BREAK -case 190: +case 191: YY_RULE_SETUP -#line 1955 "dhcp4_lexer.ll" +#line 1966 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4948,9 +4968,9 @@ YY_RULE_SETUP } } YY_BREAK -case 191: +case 192: YY_RULE_SETUP -#line 1968 "dhcp4_lexer.ll" +#line 1979 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4964,9 +4984,9 @@ YY_RULE_SETUP } } YY_BREAK -case 192: +case 193: YY_RULE_SETUP -#line 1981 "dhcp4_lexer.ll" +#line 1992 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4976,9 +4996,9 @@ YY_RULE_SETUP } } YY_BREAK -case 193: +case 194: YY_RULE_SETUP -#line 1990 "dhcp4_lexer.ll" +#line 2001 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4988,9 +5008,9 @@ YY_RULE_SETUP } } YY_BREAK -case 194: +case 195: YY_RULE_SETUP -#line 1999 "dhcp4_lexer.ll" +#line 2010 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5000,9 +5020,9 @@ YY_RULE_SETUP } } YY_BREAK -case 195: +case 196: YY_RULE_SETUP -#line 2008 "dhcp4_lexer.ll" +#line 2019 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5012,9 +5032,9 @@ YY_RULE_SETUP } } YY_BREAK -case 196: +case 197: YY_RULE_SETUP -#line 2017 "dhcp4_lexer.ll" +#line 2028 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::COMPATIBILITY: @@ -5024,9 +5044,9 @@ YY_RULE_SETUP } } YY_BREAK -case 197: +case 198: YY_RULE_SETUP -#line 2026 "dhcp4_lexer.ll" +#line 2037 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::COMPATIBILITY: @@ -5036,9 +5056,9 @@ YY_RULE_SETUP } } YY_BREAK -case 198: +case 199: YY_RULE_SETUP -#line 2036 "dhcp4_lexer.ll" +#line 2047 "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. @@ -5140,10 +5160,10 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_); } YY_BREAK -case 199: -/* rule 199 can match eol */ +case 200: +/* rule 200 can match eol */ YY_RULE_SETUP -#line 2137 "dhcp4_lexer.ll" +#line 2148 "dhcp4_lexer.ll" { /* Bad string with a forbidden control character inside */ std::string raw(yytext+1); @@ -5160,10 +5180,10 @@ YY_RULE_SETUP pos + 1); } YY_BREAK -case 200: -/* rule 200 can match eol */ +case 201: +/* rule 201 can match eol */ YY_RULE_SETUP -#line 2153 "dhcp4_lexer.ll" +#line 2164 "dhcp4_lexer.ll" { /* Bad string with a bad escape inside */ std::string raw(yytext+1); @@ -5213,9 +5233,9 @@ YY_RULE_SETUP pos); } YY_BREAK -case 201: +case 202: YY_RULE_SETUP -#line 2202 "dhcp4_lexer.ll" +#line 2213 "dhcp4_lexer.ll" { /* Bad string with an open escape at the end */ std::string raw(yytext+1); @@ -5224,9 +5244,9 @@ YY_RULE_SETUP raw.size() + 1); } YY_BREAK -case 202: +case 203: YY_RULE_SETUP -#line 2210 "dhcp4_lexer.ll" +#line 2221 "dhcp4_lexer.ll" { /* Bad string with an open unicode escape at the end */ std::string raw(yytext+1); @@ -5242,39 +5262,39 @@ YY_RULE_SETUP pos + 1); } YY_BREAK -case 203: +case 204: YY_RULE_SETUP -#line 2225 "dhcp4_lexer.ll" +#line 2236 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 204: +case 205: YY_RULE_SETUP -#line 2226 "dhcp4_lexer.ll" +#line 2237 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 205: +case 206: YY_RULE_SETUP -#line 2227 "dhcp4_lexer.ll" +#line 2238 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); } YY_BREAK -case 206: +case 207: YY_RULE_SETUP -#line 2228 "dhcp4_lexer.ll" +#line 2239 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); } YY_BREAK -case 207: +case 208: YY_RULE_SETUP -#line 2229 "dhcp4_lexer.ll" +#line 2240 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); } YY_BREAK -case 208: +case 209: YY_RULE_SETUP -#line 2230 "dhcp4_lexer.ll" +#line 2241 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); } YY_BREAK -case 209: +case 210: YY_RULE_SETUP -#line 2232 "dhcp4_lexer.ll" +#line 2243 "dhcp4_lexer.ll" { /* An integer was found. */ std::string tmp(yytext); @@ -5293,9 +5313,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_); } YY_BREAK -case 210: +case 211: YY_RULE_SETUP -#line 2250 "dhcp4_lexer.ll" +#line 2261 "dhcp4_lexer.ll" { /* A floating point was found. */ std::string tmp(yytext); @@ -5309,43 +5329,43 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_); } YY_BREAK -case 211: +case 212: YY_RULE_SETUP -#line 2263 "dhcp4_lexer.ll" +#line 2274 "dhcp4_lexer.ll" { string tmp(yytext); return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK -case 212: +case 213: YY_RULE_SETUP -#line 2268 "dhcp4_lexer.ll" +#line 2279 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_); } YY_BREAK -case 213: +case 214: YY_RULE_SETUP -#line 2272 "dhcp4_lexer.ll" +#line 2283 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); YY_BREAK -case 214: +case 215: YY_RULE_SETUP -#line 2274 "dhcp4_lexer.ll" +#line 2285 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); YY_BREAK -case 215: +case 216: YY_RULE_SETUP -#line 2276 "dhcp4_lexer.ll" +#line 2287 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); YY_BREAK -case 216: +case 217: YY_RULE_SETUP -#line 2278 "dhcp4_lexer.ll" +#line 2289 "dhcp4_lexer.ll" driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 2280 "dhcp4_lexer.ll" +#line 2291 "dhcp4_lexer.ll" { if (driver.states_.empty()) { return isc::dhcp::Dhcp4Parser::make_END(driver.loc_); @@ -5369,12 +5389,12 @@ case YY_STATE_EOF(INITIAL): BEGIN(DIR_EXIT); } YY_BREAK -case 217: +case 218: YY_RULE_SETUP -#line 2303 "dhcp4_lexer.ll" +#line 2314 "dhcp4_lexer.ll" ECHO; YY_BREAK -#line 5377 "dhcp4_lexer.cc" +#line 5397 "dhcp4_lexer.cc" case YY_END_OF_BUFFER: { @@ -5576,7 +5596,7 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -5590,7 +5610,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -5648,7 +5668,7 @@ static int yy_get_next_buffer (void) if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) @@ -5693,7 +5713,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2117 ) + if ( yy_current_state >= 2124 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5726,11 +5746,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2117 ) + if ( yy_current_state >= 2124 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 2116); + yy_is_jam = (yy_current_state == 2123); return yy_is_jam ? 0 : yy_current_state; } @@ -5769,7 +5789,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -6212,12 +6232,12 @@ YY_BUFFER_STATE yy_scan_string (const char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); @@ -6264,7 +6284,7 @@ static void yynoreturn yy_fatal_error (const char* msg ) do \ { \ /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ + yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ @@ -6308,7 +6328,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t yyget_leng (void) { return yyleng; } @@ -6479,7 +6499,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 2303 "dhcp4_lexer.ll" +#line 2314 "dhcp4_lexer.ll" using namespace isc::dhcp; diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index ccd6a72530..41376fe15c 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -708,6 +708,17 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu] } } +\"allocator\" { + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::DHCP4: + case isc::dhcp::Parser4Context::SUBNET4: + case isc::dhcp::Parser4Context::SHARED_NETWORK: + return isc::dhcp::Dhcp4Parser::make_ALLOCATOR(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("allocator", driver.loc_); + } +} + \"statistic-default-sample-count\" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc index b04d05c878..a961496a89 100644 --- a/src/bin/dhcp4/dhcp4_parser.cc +++ b/src/bin/dhcp4/dhcp4_parser.cc @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.8.2. +// A Bison parser, made by GNU Bison 3.7.6. // Skeleton implementation for Bison LALR(1) parsers in C++ @@ -160,9 +160,9 @@ namespace isc { namespace dhcp { Dhcp4Parser::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW {} - /*---------. - | symbol. | - `---------*/ + /*---------------. + | symbol kinds. | + `---------------*/ @@ -402,79 +402,79 @@ namespace isc { namespace dhcp { switch (yykind) { case symbol_kind::S_STRING: // "constant string" -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < std::string > (); } #line 408 "dhcp4_parser.cc" break; case symbol_kind::S_INTEGER: // "integer" -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < int64_t > (); } #line 414 "dhcp4_parser.cc" break; case symbol_kind::S_FLOAT: // "floating point" -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < double > (); } #line 420 "dhcp4_parser.cc" break; case symbol_kind::S_BOOLEAN: // "boolean" -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < bool > (); } #line 426 "dhcp4_parser.cc" break; case symbol_kind::S_value: // value -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 432 "dhcp4_parser.cc" break; case symbol_kind::S_map_value: // map_value -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 438 "dhcp4_parser.cc" break; case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 444 "dhcp4_parser.cc" break; case symbol_kind::S_socket_type: // socket_type -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 450 "dhcp4_parser.cc" break; case symbol_kind::S_outbound_interface_value: // outbound_interface_value -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 456 "dhcp4_parser.cc" break; case symbol_kind::S_db_type: // db_type -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 462 "dhcp4_parser.cc" break; case symbol_kind::S_on_fail_mode: // on_fail_mode -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 468 "dhcp4_parser.cc" break; case symbol_kind::S_hr_mode: // hr_mode -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 474 "dhcp4_parser.cc" break; case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value -#line 289 "dhcp4_parser.yy" +#line 290 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } #line 480 "dhcp4_parser.cc" break; @@ -507,7 +507,7 @@ namespace isc { namespace dhcp { } void - Dhcp4Parser::yypop_ (int n) YY_NOEXCEPT + Dhcp4Parser::yypop_ (int n) { yystack_.pop (n); } @@ -550,13 +550,13 @@ namespace isc { namespace dhcp { } bool - Dhcp4Parser::yy_pact_value_is_default_ (int yyvalue) YY_NOEXCEPT + Dhcp4Parser::yy_pact_value_is_default_ (int yyvalue) { return yyvalue == yypact_ninf_; } bool - Dhcp4Parser::yy_table_value_is_error_ (int yyvalue) YY_NOEXCEPT + Dhcp4Parser::yy_table_value_is_error_ (int yyvalue) { return yyvalue == yytable_ninf_; } @@ -755,127 +755,127 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: // $@1: %empty -#line 298 "dhcp4_parser.yy" +#line 299 "dhcp4_parser.yy" { ctx.ctx_ = ctx.NO_KEYWORD; } #line 761 "dhcp4_parser.cc" break; case 4: // $@2: %empty -#line 299 "dhcp4_parser.yy" +#line 300 "dhcp4_parser.yy" { ctx.ctx_ = ctx.CONFIG; } #line 767 "dhcp4_parser.cc" break; case 6: // $@3: %empty -#line 300 "dhcp4_parser.yy" +#line 301 "dhcp4_parser.yy" { ctx.ctx_ = ctx.DHCP4; } #line 773 "dhcp4_parser.cc" break; case 8: // $@4: %empty -#line 301 "dhcp4_parser.yy" +#line 302 "dhcp4_parser.yy" { ctx.ctx_ = ctx.INTERFACES_CONFIG; } #line 779 "dhcp4_parser.cc" break; case 10: // $@5: %empty -#line 302 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { ctx.ctx_ = ctx.SUBNET4; } #line 785 "dhcp4_parser.cc" break; case 12: // $@6: %empty -#line 303 "dhcp4_parser.yy" +#line 304 "dhcp4_parser.yy" { ctx.ctx_ = ctx.POOLS; } #line 791 "dhcp4_parser.cc" break; case 14: // $@7: %empty -#line 304 "dhcp4_parser.yy" +#line 305 "dhcp4_parser.yy" { ctx.ctx_ = ctx.RESERVATIONS; } #line 797 "dhcp4_parser.cc" break; case 16: // $@8: %empty -#line 305 "dhcp4_parser.yy" +#line 306 "dhcp4_parser.yy" { ctx.ctx_ = ctx.DHCP4; } #line 803 "dhcp4_parser.cc" break; case 18: // $@9: %empty -#line 306 "dhcp4_parser.yy" +#line 307 "dhcp4_parser.yy" { ctx.ctx_ = ctx.OPTION_DEF; } #line 809 "dhcp4_parser.cc" break; case 20: // $@10: %empty -#line 307 "dhcp4_parser.yy" +#line 308 "dhcp4_parser.yy" { ctx.ctx_ = ctx.OPTION_DATA; } #line 815 "dhcp4_parser.cc" break; case 22: // $@11: %empty -#line 308 "dhcp4_parser.yy" +#line 309 "dhcp4_parser.yy" { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } #line 821 "dhcp4_parser.cc" break; case 24: // $@12: %empty -#line 309 "dhcp4_parser.yy" +#line 310 "dhcp4_parser.yy" { ctx.ctx_ = ctx.DHCP_DDNS; } #line 827 "dhcp4_parser.cc" break; case 26: // $@13: %empty -#line 310 "dhcp4_parser.yy" +#line 311 "dhcp4_parser.yy" { ctx.ctx_ = ctx.CONFIG_CONTROL; } #line 833 "dhcp4_parser.cc" break; case 28: // value: "integer" -#line 318 "dhcp4_parser.yy" +#line 319 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } #line 839 "dhcp4_parser.cc" break; case 29: // value: "floating point" -#line 319 "dhcp4_parser.yy" +#line 320 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } #line 845 "dhcp4_parser.cc" break; case 30: // value: "boolean" -#line 320 "dhcp4_parser.yy" +#line 321 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } #line 851 "dhcp4_parser.cc" break; case 31: // value: "constant string" -#line 321 "dhcp4_parser.yy" +#line 322 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } #line 857 "dhcp4_parser.cc" break; case 32: // value: "null" -#line 322 "dhcp4_parser.yy" +#line 323 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } #line 863 "dhcp4_parser.cc" break; case 33: // value: map2 -#line 323 "dhcp4_parser.yy" +#line 324 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 869 "dhcp4_parser.cc" break; case 34: // value: list_generic -#line 324 "dhcp4_parser.yy" +#line 325 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 875 "dhcp4_parser.cc" break; case 35: // sub_json: value -#line 327 "dhcp4_parser.yy" +#line 328 "dhcp4_parser.yy" { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); @@ -884,7 +884,7 @@ namespace isc { namespace dhcp { break; case 36: // $@14: %empty -#line 332 "dhcp4_parser.yy" +#line 333 "dhcp4_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -895,7 +895,7 @@ namespace isc { namespace dhcp { break; case 37: // map2: "{" $@14 map_content "}" -#line 337 "dhcp4_parser.yy" +#line 338 "dhcp4_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -905,13 +905,13 @@ namespace isc { namespace dhcp { break; case 38: // map_value: map2 -#line 343 "dhcp4_parser.yy" +#line 344 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 911 "dhcp4_parser.cc" break; case 41: // not_empty_map: "constant string" ":" value -#line 350 "dhcp4_parser.yy" +#line 351 "dhcp4_parser.yy" { // map containing a single entry ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); @@ -921,7 +921,7 @@ namespace isc { namespace dhcp { break; case 42: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 355 "dhcp4_parser.yy" +#line 356 "dhcp4_parser.yy" { // map consisting of a shorter map followed by // comma and string:value @@ -932,7 +932,7 @@ namespace isc { namespace dhcp { break; case 43: // not_empty_map: not_empty_map "," -#line 361 "dhcp4_parser.yy" +#line 362 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -940,7 +940,7 @@ namespace isc { namespace dhcp { break; case 44: // $@15: %empty -#line 366 "dhcp4_parser.yy" +#line 367 "dhcp4_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); @@ -949,7 +949,7 @@ namespace isc { namespace dhcp { break; case 45: // list_generic: "[" $@15 list_content "]" -#line 369 "dhcp4_parser.yy" +#line 370 "dhcp4_parser.yy" { // list parsing complete. Put any sanity checking here } @@ -957,7 +957,7 @@ namespace isc { namespace dhcp { break; case 48: // not_empty_list: value -#line 377 "dhcp4_parser.yy" +#line 378 "dhcp4_parser.yy" { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); @@ -966,7 +966,7 @@ namespace isc { namespace dhcp { break; case 49: // not_empty_list: not_empty_list "," value -#line 381 "dhcp4_parser.yy" +#line 382 "dhcp4_parser.yy" { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); @@ -975,7 +975,7 @@ namespace isc { namespace dhcp { break; case 50: // not_empty_list: not_empty_list "," -#line 385 "dhcp4_parser.yy" +#line 386 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -983,7 +983,7 @@ namespace isc { namespace dhcp { break; case 51: // $@16: %empty -#line 391 "dhcp4_parser.yy" +#line 392 "dhcp4_parser.yy" { // List parsing about to start } @@ -991,7 +991,7 @@ namespace isc { namespace dhcp { break; case 52: // list_strings: "[" $@16 list_strings_content "]" -#line 393 "dhcp4_parser.yy" +#line 394 "dhcp4_parser.yy" { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); @@ -1000,7 +1000,7 @@ namespace isc { namespace dhcp { break; case 55: // not_empty_list_strings: "constant string" -#line 402 "dhcp4_parser.yy" +#line 403 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -1009,7 +1009,7 @@ namespace isc { namespace dhcp { break; case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string" -#line 406 "dhcp4_parser.yy" +#line 407 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -1018,7 +1018,7 @@ namespace isc { namespace dhcp { break; case 57: // not_empty_list_strings: not_empty_list_strings "," -#line 410 "dhcp4_parser.yy" +#line 411 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1026,7 +1026,7 @@ namespace isc { namespace dhcp { break; case 58: // unknown_map_entry: "constant string" ":" -#line 420 "dhcp4_parser.yy" +#line 421 "dhcp4_parser.yy" { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as < std::string > (); @@ -1037,7 +1037,7 @@ namespace isc { namespace dhcp { break; case 59: // $@17: %empty -#line 429 "dhcp4_parser.yy" +#line 430 "dhcp4_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1048,7 +1048,7 @@ namespace isc { namespace dhcp { break; case 60: // syntax_map: "{" $@17 global_object "}" -#line 434 "dhcp4_parser.yy" +#line 435 "dhcp4_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -1061,7 +1061,7 @@ namespace isc { namespace dhcp { break; case 61: // $@18: %empty -#line 444 "dhcp4_parser.yy" +#line 445 "dhcp4_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1076,7 +1076,7 @@ namespace isc { namespace dhcp { break; case 62: // global_object: "Dhcp4" $@18 ":" "{" global_params "}" -#line 453 "dhcp4_parser.yy" +#line 454 "dhcp4_parser.yy" { // No global parameter is required ctx.stack_.pop_back(); @@ -1086,7 +1086,7 @@ namespace isc { namespace dhcp { break; case 64: // global_object_comma: global_object "," -#line 461 "dhcp4_parser.yy" +#line 462 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } @@ -1094,7 +1094,7 @@ namespace isc { namespace dhcp { break; case 65: // $@19: %empty -#line 467 "dhcp4_parser.yy" +#line 468 "dhcp4_parser.yy" { // Parse the Dhcp4 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1104,7 +1104,7 @@ namespace isc { namespace dhcp { break; case 66: // sub_dhcp4: "{" $@19 global_params "}" -#line 471 "dhcp4_parser.yy" +#line 472 "dhcp4_parser.yy" { // No global parameter is required // parsing completed @@ -1113,15 +1113,15 @@ namespace isc { namespace dhcp { break; case 69: // global_params: global_params "," -#line 478 "dhcp4_parser.yy" +#line 479 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } #line 1121 "dhcp4_parser.cc" break; - case 134: // valid_lifetime: "valid-lifetime" ":" "integer" -#line 551 "dhcp4_parser.yy" + case 135: // valid_lifetime: "valid-lifetime" ":" "integer" +#line 553 "dhcp4_parser.yy" { ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1130,8 +1130,8 @@ namespace isc { namespace dhcp { #line 1131 "dhcp4_parser.cc" break; - case 135: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" -#line 557 "dhcp4_parser.yy" + case 136: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" +#line 559 "dhcp4_parser.yy" { ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1140,8 +1140,8 @@ namespace isc { namespace dhcp { #line 1141 "dhcp4_parser.cc" break; - case 136: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" -#line 563 "dhcp4_parser.yy" + case 137: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" +#line 565 "dhcp4_parser.yy" { ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1150,8 +1150,8 @@ namespace isc { namespace dhcp { #line 1151 "dhcp4_parser.cc" break; - case 137: // renew_timer: "renew-timer" ":" "integer" -#line 569 "dhcp4_parser.yy" + case 138: // renew_timer: "renew-timer" ":" "integer" +#line 571 "dhcp4_parser.yy" { ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1160,8 +1160,8 @@ namespace isc { namespace dhcp { #line 1161 "dhcp4_parser.cc" break; - case 138: // rebind_timer: "rebind-timer" ":" "integer" -#line 575 "dhcp4_parser.yy" + case 139: // rebind_timer: "rebind-timer" ":" "integer" +#line 577 "dhcp4_parser.yy" { ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1170,8 +1170,8 @@ namespace isc { namespace dhcp { #line 1171 "dhcp4_parser.cc" break; - case 139: // calculate_tee_times: "calculate-tee-times" ":" "boolean" -#line 581 "dhcp4_parser.yy" + case 140: // calculate_tee_times: "calculate-tee-times" ":" "boolean" +#line 583 "dhcp4_parser.yy" { ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location)); ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); @@ -1180,8 +1180,8 @@ namespace isc { namespace dhcp { #line 1181 "dhcp4_parser.cc" break; - case 140: // t1_percent: "t1-percent" ":" "floating point" -#line 587 "dhcp4_parser.yy" + case 141: // t1_percent: "t1-percent" ":" "floating point" +#line 589 "dhcp4_parser.yy" { ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1190,8 +1190,8 @@ namespace isc { namespace dhcp { #line 1191 "dhcp4_parser.cc" break; - case 141: // t2_percent: "t2-percent" ":" "floating point" -#line 593 "dhcp4_parser.yy" + case 142: // t2_percent: "t2-percent" ":" "floating point" +#line 595 "dhcp4_parser.yy" { ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1200,8 +1200,8 @@ namespace isc { namespace dhcp { #line 1201 "dhcp4_parser.cc" break; - case 142: // cache_threshold: "cache-threshold" ":" "floating point" -#line 599 "dhcp4_parser.yy" + case 143: // cache_threshold: "cache-threshold" ":" "floating point" +#line 601 "dhcp4_parser.yy" { ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location)); ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); @@ -1210,8 +1210,8 @@ namespace isc { namespace dhcp { #line 1211 "dhcp4_parser.cc" break; - case 143: // cache_max_age: "cache-max-age" ":" "integer" -#line 605 "dhcp4_parser.yy" + case 144: // cache_max_age: "cache-max-age" ":" "integer" +#line 607 "dhcp4_parser.yy" { ctx.unique("cache-max-age", ctx.loc2pos(yystack_[2].location)); ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1220,8 +1220,8 @@ namespace isc { namespace dhcp { #line 1221 "dhcp4_parser.cc" break; - case 144: // decline_probation_period: "decline-probation-period" ":" "integer" -#line 611 "dhcp4_parser.yy" + case 145: // decline_probation_period: "decline-probation-period" ":" "integer" +#line 613 "dhcp4_parser.yy" { ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location)); ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1230,8 +1230,8 @@ namespace isc { namespace dhcp { #line 1231 "dhcp4_parser.cc" break; - case 145: // $@20: %empty -#line 617 "dhcp4_parser.yy" + case 146: // $@20: %empty +#line 619 "dhcp4_parser.yy" { ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); @@ -1239,8 +1239,8 @@ namespace isc { namespace dhcp { #line 1240 "dhcp4_parser.cc" break; - case 146: // server_tag: "server-tag" $@20 ":" "constant string" -#line 620 "dhcp4_parser.yy" + case 147: // server_tag: "server-tag" $@20 ":" "constant string" +#line 622 "dhcp4_parser.yy" { ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-tag", stag); @@ -1249,8 +1249,8 @@ namespace isc { namespace dhcp { #line 1250 "dhcp4_parser.cc" break; - case 147: // parked_packet_limit: "parked-packet-limit" ":" "integer" -#line 626 "dhcp4_parser.yy" + case 148: // parked_packet_limit: "parked-packet-limit" ":" "integer" +#line 628 "dhcp4_parser.yy" { ctx.unique("parked-packet-limit", ctx.loc2pos(yystack_[2].location)); ElementPtr ppl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); @@ -1259,283 +1259,302 @@ namespace isc { namespace dhcp { #line 1260 "dhcp4_parser.cc" break; - case 148: // echo_client_id: "echo-client-id" ":" "boolean" -#line 632 "dhcp4_parser.yy" + case 149: // $@21: %empty +#line 634 "dhcp4_parser.yy" + { + ctx.unique("allocator", ctx.loc2pos(yystack_[0].location)); + ctx.enter(ctx.NO_KEYWORD); +} +#line 1269 "dhcp4_parser.cc" + break; + + case 150: // allocator: "allocator" $@21 ":" "constant string" +#line 637 "dhcp4_parser.yy" + { + ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); + ctx.stack_.back()->set("allocator", al); + ctx.leave(); +} +#line 1279 "dhcp4_parser.cc" + break; + + case 151: // echo_client_id: "echo-client-id" ":" "boolean" +#line 643 "dhcp4_parser.yy" { ctx.unique("echo-client-id", ctx.loc2pos(yystack_[2].location)); ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("echo-client-id", echo); } -#line 1270 "dhcp4_parser.cc" +#line 1289 "dhcp4_parser.cc" break; - case 149: // match_client_id: "match-client-id" ":" "boolean" -#line 638 "dhcp4_parser.yy" + case 152: // match_client_id: "match-client-id" ":" "boolean" +#line 649 "dhcp4_parser.yy" { ctx.unique("match-client-id", ctx.loc2pos(yystack_[2].location)); ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("match-client-id", match); } -#line 1280 "dhcp4_parser.cc" +#line 1299 "dhcp4_parser.cc" break; - case 150: // authoritative: "authoritative" ":" "boolean" -#line 644 "dhcp4_parser.yy" + case 153: // authoritative: "authoritative" ":" "boolean" +#line 655 "dhcp4_parser.yy" { ctx.unique("authoritative", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("authoritative", prf); } -#line 1290 "dhcp4_parser.cc" +#line 1309 "dhcp4_parser.cc" break; - case 151: // ddns_send_updates: "ddns-send-updates" ":" "boolean" -#line 650 "dhcp4_parser.yy" + case 154: // ddns_send_updates: "ddns-send-updates" ":" "boolean" +#line 661 "dhcp4_parser.yy" { ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-send-updates", b); } -#line 1300 "dhcp4_parser.cc" +#line 1319 "dhcp4_parser.cc" break; - case 152: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" -#line 656 "dhcp4_parser.yy" + case 155: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" +#line 667 "dhcp4_parser.yy" { ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-override-no-update", b); } -#line 1310 "dhcp4_parser.cc" +#line 1329 "dhcp4_parser.cc" break; - case 153: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" -#line 662 "dhcp4_parser.yy" + case 156: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" +#line 673 "dhcp4_parser.yy" { ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-override-client-update", b); } -#line 1320 "dhcp4_parser.cc" +#line 1339 "dhcp4_parser.cc" break; - case 154: // $@21: %empty -#line 668 "dhcp4_parser.yy" + case 157: // $@22: %empty +#line 679 "dhcp4_parser.yy" { ctx.enter(ctx.REPLACE_CLIENT_NAME); ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location)); } -#line 1329 "dhcp4_parser.cc" +#line 1348 "dhcp4_parser.cc" break; - case 155: // ddns_replace_client_name: "ddns-replace-client-name" $@21 ":" ddns_replace_client_name_value -#line 671 "dhcp4_parser.yy" + case 158: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value +#line 682 "dhcp4_parser.yy" { ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1338 "dhcp4_parser.cc" +#line 1357 "dhcp4_parser.cc" break; - case 156: // ddns_replace_client_name_value: "when-present" -#line 677 "dhcp4_parser.yy" + case 159: // ddns_replace_client_name_value: "when-present" +#line 688 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } -#line 1346 "dhcp4_parser.cc" +#line 1365 "dhcp4_parser.cc" break; - case 157: // ddns_replace_client_name_value: "never" -#line 680 "dhcp4_parser.yy" + case 160: // ddns_replace_client_name_value: "never" +#line 691 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } -#line 1354 "dhcp4_parser.cc" +#line 1373 "dhcp4_parser.cc" break; - case 158: // ddns_replace_client_name_value: "always" -#line 683 "dhcp4_parser.yy" + case 161: // ddns_replace_client_name_value: "always" +#line 694 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } -#line 1362 "dhcp4_parser.cc" +#line 1381 "dhcp4_parser.cc" break; - case 159: // ddns_replace_client_name_value: "when-not-present" -#line 686 "dhcp4_parser.yy" + case 162: // ddns_replace_client_name_value: "when-not-present" +#line 697 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } -#line 1370 "dhcp4_parser.cc" +#line 1389 "dhcp4_parser.cc" break; - case 160: // ddns_replace_client_name_value: "boolean" -#line 689 "dhcp4_parser.yy" + case 163: // ddns_replace_client_name_value: "boolean" +#line 700 "dhcp4_parser.yy" { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); } -#line 1379 "dhcp4_parser.cc" +#line 1398 "dhcp4_parser.cc" break; - case 161: // $@22: %empty -#line 695 "dhcp4_parser.yy" + case 164: // $@23: %empty +#line 706 "dhcp4_parser.yy" { ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1388 "dhcp4_parser.cc" +#line 1407 "dhcp4_parser.cc" break; - case 162: // ddns_generated_prefix: "ddns-generated-prefix" $@22 ":" "constant string" -#line 698 "dhcp4_parser.yy" + case 165: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string" +#line 709 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-generated-prefix", s); ctx.leave(); } -#line 1398 "dhcp4_parser.cc" +#line 1417 "dhcp4_parser.cc" break; - case 163: // $@23: %empty -#line 704 "dhcp4_parser.yy" + case 166: // $@24: %empty +#line 715 "dhcp4_parser.yy" { ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1407 "dhcp4_parser.cc" +#line 1426 "dhcp4_parser.cc" break; - case 164: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@23 ":" "constant string" -#line 707 "dhcp4_parser.yy" + case 167: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string" +#line 718 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-qualifying-suffix", s); ctx.leave(); } -#line 1417 "dhcp4_parser.cc" +#line 1436 "dhcp4_parser.cc" break; - case 165: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" -#line 713 "dhcp4_parser.yy" + case 168: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" +#line 724 "dhcp4_parser.yy" { ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-update-on-renew", b); } -#line 1427 "dhcp4_parser.cc" +#line 1446 "dhcp4_parser.cc" break; - case 166: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean" -#line 719 "dhcp4_parser.yy" + case 169: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean" +#line 730 "dhcp4_parser.yy" { ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-use-conflict-resolution", b); } -#line 1437 "dhcp4_parser.cc" +#line 1456 "dhcp4_parser.cc" break; - case 167: // $@24: %empty -#line 725 "dhcp4_parser.yy" + case 170: // $@25: %empty +#line 736 "dhcp4_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1446 "dhcp4_parser.cc" +#line 1465 "dhcp4_parser.cc" break; - case 168: // hostname_char_set: "hostname-char-set" $@24 ":" "constant string" -#line 728 "dhcp4_parser.yy" + case 171: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string" +#line 739 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 1456 "dhcp4_parser.cc" +#line 1475 "dhcp4_parser.cc" break; - case 169: // $@25: %empty -#line 734 "dhcp4_parser.yy" + case 172: // $@26: %empty +#line 745 "dhcp4_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1465 "dhcp4_parser.cc" +#line 1484 "dhcp4_parser.cc" break; - case 170: // hostname_char_replacement: "hostname-char-replacement" $@25 ":" "constant string" -#line 737 "dhcp4_parser.yy" + case 173: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string" +#line 748 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 1475 "dhcp4_parser.cc" +#line 1494 "dhcp4_parser.cc" break; - case 171: // store_extended_info: "store-extended-info" ":" "boolean" -#line 743 "dhcp4_parser.yy" + case 174: // store_extended_info: "store-extended-info" ":" "boolean" +#line 754 "dhcp4_parser.yy" { ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("store-extended-info", b); } -#line 1485 "dhcp4_parser.cc" +#line 1504 "dhcp4_parser.cc" break; - case 172: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" -#line 749 "dhcp4_parser.yy" + case 175: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" +#line 760 "dhcp4_parser.yy" { ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location)); ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("statistic-default-sample-count", count); } -#line 1495 "dhcp4_parser.cc" +#line 1514 "dhcp4_parser.cc" break; - case 173: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" -#line 755 "dhcp4_parser.yy" + case 176: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" +#line 766 "dhcp4_parser.yy" { ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location)); ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("statistic-default-sample-age", age); } -#line 1505 "dhcp4_parser.cc" +#line 1524 "dhcp4_parser.cc" break; - case 174: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean" -#line 761 "dhcp4_parser.yy" + case 177: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean" +#line 772 "dhcp4_parser.yy" { ctx.unique("early-global-reservations-lookup", ctx.loc2pos(yystack_[2].location)); ElementPtr early(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("early-global-reservations-lookup", early); } -#line 1515 "dhcp4_parser.cc" +#line 1534 "dhcp4_parser.cc" break; - case 175: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" -#line 767 "dhcp4_parser.yy" + case 178: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" +#line 778 "dhcp4_parser.yy" { ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location)); ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-reservations-unique", unique); } -#line 1525 "dhcp4_parser.cc" +#line 1544 "dhcp4_parser.cc" break; - case 176: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean" -#line 773 "dhcp4_parser.yy" + case 179: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean" +#line 784 "dhcp4_parser.yy" { ctx.unique("reservations-lookup-first", ctx.loc2pos(yystack_[2].location)); ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-lookup-first", first); } -#line 1535 "dhcp4_parser.cc" +#line 1554 "dhcp4_parser.cc" break; - case 177: // $@26: %empty -#line 779 "dhcp4_parser.yy" + case 180: // $@27: %empty +#line 790 "dhcp4_parser.yy" { ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1543,48 +1562,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.INTERFACES_CONFIG); } -#line 1547 "dhcp4_parser.cc" +#line 1566 "dhcp4_parser.cc" break; - case 178: // interfaces_config: "interfaces-config" $@26 ":" "{" interfaces_config_params "}" -#line 785 "dhcp4_parser.yy" + case 181: // interfaces_config: "interfaces-config" $@27 ":" "{" interfaces_config_params "}" +#line 796 "dhcp4_parser.yy" { // No interfaces config param is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1557 "dhcp4_parser.cc" +#line 1576 "dhcp4_parser.cc" break; - case 181: // interfaces_config_params: interfaces_config_params "," -#line 793 "dhcp4_parser.yy" + case 184: // interfaces_config_params: interfaces_config_params "," +#line 804 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1565 "dhcp4_parser.cc" +#line 1584 "dhcp4_parser.cc" break; - case 192: // $@27: %empty -#line 810 "dhcp4_parser.yy" + case 195: // $@28: %empty +#line 821 "dhcp4_parser.yy" { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1575 "dhcp4_parser.cc" +#line 1594 "dhcp4_parser.cc" break; - case 193: // sub_interfaces4: "{" $@27 interfaces_config_params "}" -#line 814 "dhcp4_parser.yy" + case 196: // sub_interfaces4: "{" $@28 interfaces_config_params "}" +#line 825 "dhcp4_parser.yy" { // No interfaces config param is required // parsing completed } -#line 1584 "dhcp4_parser.cc" +#line 1603 "dhcp4_parser.cc" break; - case 194: // $@28: %empty -#line 819 "dhcp4_parser.yy" + case 197: // $@29: %empty +#line 830 "dhcp4_parser.yy" { ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1592,124 +1611,124 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 1596 "dhcp4_parser.cc" +#line 1615 "dhcp4_parser.cc" break; - case 195: // interfaces_list: "interfaces" $@28 ":" list_strings -#line 825 "dhcp4_parser.yy" + case 198: // interfaces_list: "interfaces" $@29 ":" list_strings +#line 836 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1605 "dhcp4_parser.cc" +#line 1624 "dhcp4_parser.cc" break; - case 196: // $@29: %empty -#line 830 "dhcp4_parser.yy" + case 199: // $@30: %empty +#line 841 "dhcp4_parser.yy" { ctx.unique("dhcp-socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DHCP_SOCKET_TYPE); } -#line 1614 "dhcp4_parser.cc" +#line 1633 "dhcp4_parser.cc" break; - case 197: // dhcp_socket_type: "dhcp-socket-type" $@29 ":" socket_type -#line 833 "dhcp4_parser.yy" + case 200: // dhcp_socket_type: "dhcp-socket-type" $@30 ":" socket_type +#line 844 "dhcp4_parser.yy" { ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1623 "dhcp4_parser.cc" +#line 1642 "dhcp4_parser.cc" break; - case 198: // socket_type: "raw" -#line 838 "dhcp4_parser.yy" + case 201: // socket_type: "raw" +#line 849 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); } -#line 1629 "dhcp4_parser.cc" +#line 1648 "dhcp4_parser.cc" break; - case 199: // socket_type: "udp" -#line 839 "dhcp4_parser.yy" + case 202: // socket_type: "udp" +#line 850 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); } -#line 1635 "dhcp4_parser.cc" +#line 1654 "dhcp4_parser.cc" break; - case 200: // $@30: %empty -#line 842 "dhcp4_parser.yy" + case 203: // $@31: %empty +#line 853 "dhcp4_parser.yy" { ctx.unique("outbound-interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.OUTBOUND_INTERFACE); } -#line 1644 "dhcp4_parser.cc" +#line 1663 "dhcp4_parser.cc" break; - case 201: // outbound_interface: "outbound-interface" $@30 ":" outbound_interface_value -#line 845 "dhcp4_parser.yy" + case 204: // outbound_interface: "outbound-interface" $@31 ":" outbound_interface_value +#line 856 "dhcp4_parser.yy" { ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1653 "dhcp4_parser.cc" +#line 1672 "dhcp4_parser.cc" break; - case 202: // outbound_interface_value: "same-as-inbound" -#line 850 "dhcp4_parser.yy" + case 205: // outbound_interface_value: "same-as-inbound" +#line 861 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location))); } -#line 1661 "dhcp4_parser.cc" +#line 1680 "dhcp4_parser.cc" break; - case 203: // outbound_interface_value: "use-routing" -#line 852 "dhcp4_parser.yy" + case 206: // outbound_interface_value: "use-routing" +#line 863 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location))); } -#line 1669 "dhcp4_parser.cc" +#line 1688 "dhcp4_parser.cc" break; - case 204: // re_detect: "re-detect" ":" "boolean" -#line 856 "dhcp4_parser.yy" + case 207: // re_detect: "re-detect" ":" "boolean" +#line 867 "dhcp4_parser.yy" { ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("re-detect", b); } -#line 1679 "dhcp4_parser.cc" +#line 1698 "dhcp4_parser.cc" break; - case 205: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean" -#line 862 "dhcp4_parser.yy" + case 208: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean" +#line 873 "dhcp4_parser.yy" { ctx.unique("service-sockets-require-all", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("service-sockets-require-all", b); } -#line 1689 "dhcp4_parser.cc" +#line 1708 "dhcp4_parser.cc" break; - case 206: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer" -#line 868 "dhcp4_parser.yy" + case 209: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer" +#line 879 "dhcp4_parser.yy" { ctx.unique("service-sockets-retry-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("service-sockets-retry-wait-time", n); } -#line 1699 "dhcp4_parser.cc" +#line 1718 "dhcp4_parser.cc" break; - case 207: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer" -#line 874 "dhcp4_parser.yy" + case 210: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer" +#line 885 "dhcp4_parser.yy" { ctx.unique("service-sockets-max-retries", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("service-sockets-max-retries", n); } -#line 1709 "dhcp4_parser.cc" +#line 1728 "dhcp4_parser.cc" break; - case 208: // $@31: %empty -#line 880 "dhcp4_parser.yy" + case 211: // $@32: %empty +#line 891 "dhcp4_parser.yy" { ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1717,22 +1736,22 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.LEASE_DATABASE); } -#line 1721 "dhcp4_parser.cc" +#line 1740 "dhcp4_parser.cc" break; - case 209: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}" -#line 886 "dhcp4_parser.yy" + case 212: // lease_database: "lease-database" $@32 ":" "{" database_map_params "}" +#line 897 "dhcp4_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1732 "dhcp4_parser.cc" +#line 1751 "dhcp4_parser.cc" break; - case 210: // $@32: %empty -#line 893 "dhcp4_parser.yy" + case 213: // $@33: %empty +#line 904 "dhcp4_parser.yy" { ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1740,37 +1759,37 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.SANITY_CHECKS); } -#line 1744 "dhcp4_parser.cc" +#line 1763 "dhcp4_parser.cc" break; - case 211: // sanity_checks: "sanity-checks" $@32 ":" "{" sanity_checks_params "}" -#line 899 "dhcp4_parser.yy" + case 214: // sanity_checks: "sanity-checks" $@33 ":" "{" sanity_checks_params "}" +#line 910 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1753 "dhcp4_parser.cc" +#line 1772 "dhcp4_parser.cc" break; - case 214: // sanity_checks_params: sanity_checks_params "," -#line 906 "dhcp4_parser.yy" + case 217: // sanity_checks_params: sanity_checks_params "," +#line 917 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1761 "dhcp4_parser.cc" +#line 1780 "dhcp4_parser.cc" break; - case 217: // $@33: %empty -#line 915 "dhcp4_parser.yy" + case 220: // $@34: %empty +#line 926 "dhcp4_parser.yy" { ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1770 "dhcp4_parser.cc" +#line 1789 "dhcp4_parser.cc" break; - case 218: // lease_checks: "lease-checks" $@33 ":" "constant string" -#line 918 "dhcp4_parser.yy" + case 221: // lease_checks: "lease-checks" $@34 ":" "constant string" +#line 929 "dhcp4_parser.yy" { if ( (string(yystack_[0].value.as < std::string > ()) == "none") || @@ -1786,20 +1805,20 @@ namespace isc { namespace dhcp { ", supported values are: none, warn, fix, fix-del, del"); } } -#line 1790 "dhcp4_parser.cc" +#line 1809 "dhcp4_parser.cc" break; - case 219: // $@34: %empty -#line 934 "dhcp4_parser.yy" + case 222: // $@35: %empty +#line 945 "dhcp4_parser.yy" { ctx.unique("extended-info-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1799 "dhcp4_parser.cc" +#line 1818 "dhcp4_parser.cc" break; - case 220: // extended_info_checks: "extended-info-checks" $@34 ":" "constant string" -#line 937 "dhcp4_parser.yy" + case 223: // extended_info_checks: "extended-info-checks" $@35 ":" "constant string" +#line 948 "dhcp4_parser.yy" { if ( (string(yystack_[0].value.as < std::string > ()) == "none") || @@ -1814,11 +1833,11 @@ namespace isc { namespace dhcp { ", supported values are: none, fix, strict, pedantic"); } } -#line 1818 "dhcp4_parser.cc" +#line 1837 "dhcp4_parser.cc" break; - case 221: // $@35: %empty -#line 952 "dhcp4_parser.yy" + case 224: // $@36: %empty +#line 963 "dhcp4_parser.yy" { ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1826,22 +1845,22 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1830 "dhcp4_parser.cc" +#line 1849 "dhcp4_parser.cc" break; - case 222: // hosts_database: "hosts-database" $@35 ":" "{" database_map_params "}" -#line 958 "dhcp4_parser.yy" + case 225: // hosts_database: "hosts-database" $@36 ":" "{" database_map_params "}" +#line 969 "dhcp4_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1841 "dhcp4_parser.cc" +#line 1860 "dhcp4_parser.cc" break; - case 223: // $@36: %empty -#line 965 "dhcp4_parser.yy" + case 226: // $@37: %empty +#line 976 "dhcp4_parser.yy" { ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1849,360 +1868,360 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1853 "dhcp4_parser.cc" +#line 1872 "dhcp4_parser.cc" break; - case 224: // hosts_databases: "hosts-databases" $@36 ":" "[" database_list "]" -#line 971 "dhcp4_parser.yy" + case 227: // hosts_databases: "hosts-databases" $@37 ":" "[" database_list "]" +#line 982 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1862 "dhcp4_parser.cc" +#line 1881 "dhcp4_parser.cc" break; - case 229: // not_empty_database_list: not_empty_database_list "," -#line 982 "dhcp4_parser.yy" + case 232: // not_empty_database_list: not_empty_database_list "," +#line 993 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1870 "dhcp4_parser.cc" +#line 1889 "dhcp4_parser.cc" break; - case 230: // $@37: %empty -#line 987 "dhcp4_parser.yy" + case 233: // $@38: %empty +#line 998 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1880 "dhcp4_parser.cc" +#line 1899 "dhcp4_parser.cc" break; - case 231: // database: "{" $@37 database_map_params "}" -#line 991 "dhcp4_parser.yy" + case 234: // database: "{" $@38 database_map_params "}" +#line 1002 "dhcp4_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1890 "dhcp4_parser.cc" +#line 1909 "dhcp4_parser.cc" break; - case 234: // database_map_params: database_map_params "," -#line 999 "dhcp4_parser.yy" + case 237: // database_map_params: database_map_params "," +#line 1010 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1898 "dhcp4_parser.cc" +#line 1917 "dhcp4_parser.cc" break; - case 254: // $@38: %empty -#line 1025 "dhcp4_parser.yy" + case 257: // $@39: %empty +#line 1036 "dhcp4_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_TYPE); } -#line 1907 "dhcp4_parser.cc" +#line 1926 "dhcp4_parser.cc" break; - case 255: // database_type: "type" $@38 ":" db_type -#line 1028 "dhcp4_parser.yy" + case 258: // database_type: "type" $@39 ":" db_type +#line 1039 "dhcp4_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1916 "dhcp4_parser.cc" +#line 1935 "dhcp4_parser.cc" break; - case 256: // db_type: "memfile" -#line 1033 "dhcp4_parser.yy" + case 259: // db_type: "memfile" +#line 1044 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } -#line 1922 "dhcp4_parser.cc" +#line 1941 "dhcp4_parser.cc" break; - case 257: // db_type: "mysql" -#line 1034 "dhcp4_parser.yy" + case 260: // db_type: "mysql" +#line 1045 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } -#line 1928 "dhcp4_parser.cc" +#line 1947 "dhcp4_parser.cc" break; - case 258: // db_type: "postgresql" -#line 1035 "dhcp4_parser.yy" + case 261: // db_type: "postgresql" +#line 1046 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } -#line 1934 "dhcp4_parser.cc" +#line 1953 "dhcp4_parser.cc" break; - case 259: // $@39: %empty -#line 1038 "dhcp4_parser.yy" + case 262: // $@40: %empty +#line 1049 "dhcp4_parser.yy" { ctx.unique("user", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1943 "dhcp4_parser.cc" +#line 1962 "dhcp4_parser.cc" break; - case 260: // user: "user" $@39 ":" "constant string" -#line 1041 "dhcp4_parser.yy" + case 263: // user: "user" $@40 ":" "constant string" +#line 1052 "dhcp4_parser.yy" { ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); ctx.leave(); } -#line 1953 "dhcp4_parser.cc" +#line 1972 "dhcp4_parser.cc" break; - case 261: // $@40: %empty -#line 1047 "dhcp4_parser.yy" + case 264: // $@41: %empty +#line 1058 "dhcp4_parser.yy" { ctx.unique("password", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1962 "dhcp4_parser.cc" +#line 1981 "dhcp4_parser.cc" break; - case 262: // password: "password" $@40 ":" "constant string" -#line 1050 "dhcp4_parser.yy" + case 265: // password: "password" $@41 ":" "constant string" +#line 1061 "dhcp4_parser.yy" { ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); ctx.leave(); } -#line 1972 "dhcp4_parser.cc" +#line 1991 "dhcp4_parser.cc" break; - case 263: // $@41: %empty -#line 1056 "dhcp4_parser.yy" + case 266: // $@42: %empty +#line 1067 "dhcp4_parser.yy" { ctx.unique("host", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1981 "dhcp4_parser.cc" +#line 2000 "dhcp4_parser.cc" break; - case 264: // host: "host" $@41 ":" "constant string" -#line 1059 "dhcp4_parser.yy" + case 267: // host: "host" $@42 ":" "constant string" +#line 1070 "dhcp4_parser.yy" { ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); ctx.leave(); } -#line 1991 "dhcp4_parser.cc" +#line 2010 "dhcp4_parser.cc" break; - case 265: // port: "port" ":" "integer" -#line 1065 "dhcp4_parser.yy" + case 268: // port: "port" ":" "integer" +#line 1076 "dhcp4_parser.yy" { ctx.unique("port", ctx.loc2pos(yystack_[2].location)); ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", p); } -#line 2001 "dhcp4_parser.cc" +#line 2020 "dhcp4_parser.cc" break; - case 266: // $@42: %empty -#line 1071 "dhcp4_parser.yy" + case 269: // $@43: %empty +#line 1082 "dhcp4_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2010 "dhcp4_parser.cc" +#line 2029 "dhcp4_parser.cc" break; - case 267: // name: "name" $@42 ":" "constant string" -#line 1074 "dhcp4_parser.yy" + case 270: // name: "name" $@43 ":" "constant string" +#line 1085 "dhcp4_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 2020 "dhcp4_parser.cc" +#line 2039 "dhcp4_parser.cc" break; - case 268: // persist: "persist" ":" "boolean" -#line 1080 "dhcp4_parser.yy" + case 271: // persist: "persist" ":" "boolean" +#line 1091 "dhcp4_parser.yy" { ctx.unique("persist", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("persist", n); } -#line 2030 "dhcp4_parser.cc" +#line 2049 "dhcp4_parser.cc" break; - case 269: // lfc_interval: "lfc-interval" ":" "integer" -#line 1086 "dhcp4_parser.yy" + case 272: // lfc_interval: "lfc-interval" ":" "integer" +#line 1097 "dhcp4_parser.yy" { ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lfc-interval", n); } -#line 2040 "dhcp4_parser.cc" +#line 2059 "dhcp4_parser.cc" break; - case 270: // readonly: "readonly" ":" "boolean" -#line 1092 "dhcp4_parser.yy" + case 273: // readonly: "readonly" ":" "boolean" +#line 1103 "dhcp4_parser.yy" { ctx.unique("readonly", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("readonly", n); } -#line 2050 "dhcp4_parser.cc" +#line 2069 "dhcp4_parser.cc" break; - case 271: // connect_timeout: "connect-timeout" ":" "integer" -#line 1098 "dhcp4_parser.yy" + case 274: // connect_timeout: "connect-timeout" ":" "integer" +#line 1109 "dhcp4_parser.yy" { ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("connect-timeout", n); } -#line 2060 "dhcp4_parser.cc" +#line 2079 "dhcp4_parser.cc" break; - case 272: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" -#line 1104 "dhcp4_parser.yy" + case 275: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" +#line 1115 "dhcp4_parser.yy" { ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reconnect-tries", n); } -#line 2070 "dhcp4_parser.cc" +#line 2089 "dhcp4_parser.cc" break; - case 273: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" -#line 1110 "dhcp4_parser.yy" + case 276: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" +#line 1121 "dhcp4_parser.yy" { ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reconnect-wait-time", n); } -#line 2080 "dhcp4_parser.cc" +#line 2099 "dhcp4_parser.cc" break; - case 274: // $@43: %empty -#line 1116 "dhcp4_parser.yy" + case 277: // $@44: %empty +#line 1127 "dhcp4_parser.yy" { ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_ON_FAIL); } -#line 2089 "dhcp4_parser.cc" +#line 2108 "dhcp4_parser.cc" break; - case 275: // on_fail: "on-fail" $@43 ":" on_fail_mode -#line 1119 "dhcp4_parser.yy" + case 278: // on_fail: "on-fail" $@44 ":" on_fail_mode +#line 1130 "dhcp4_parser.yy" { ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2098 "dhcp4_parser.cc" +#line 2117 "dhcp4_parser.cc" break; - case 276: // on_fail_mode: "stop-retry-exit" -#line 1124 "dhcp4_parser.yy" + case 279: // on_fail_mode: "stop-retry-exit" +#line 1135 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 2104 "dhcp4_parser.cc" +#line 2123 "dhcp4_parser.cc" break; - case 277: // on_fail_mode: "serve-retry-exit" -#line 1125 "dhcp4_parser.yy" + case 280: // on_fail_mode: "serve-retry-exit" +#line 1136 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 2110 "dhcp4_parser.cc" +#line 2129 "dhcp4_parser.cc" break; - case 278: // on_fail_mode: "serve-retry-continue" -#line 1126 "dhcp4_parser.yy" + case 281: // on_fail_mode: "serve-retry-continue" +#line 1137 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); } -#line 2116 "dhcp4_parser.cc" +#line 2135 "dhcp4_parser.cc" break; - case 279: // max_row_errors: "max-row-errors" ":" "integer" -#line 1129 "dhcp4_parser.yy" + case 282: // max_row_errors: "max-row-errors" ":" "integer" +#line 1140 "dhcp4_parser.yy" { ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-row-errors", n); } -#line 2126 "dhcp4_parser.cc" +#line 2145 "dhcp4_parser.cc" break; - case 280: // $@44: %empty -#line 1135 "dhcp4_parser.yy" + case 283: // $@45: %empty +#line 1146 "dhcp4_parser.yy" { ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2135 "dhcp4_parser.cc" +#line 2154 "dhcp4_parser.cc" break; - case 281: // trust_anchor: "trust-anchor" $@44 ":" "constant string" -#line 1138 "dhcp4_parser.yy" + case 284: // trust_anchor: "trust-anchor" $@45 ":" "constant string" +#line 1149 "dhcp4_parser.yy" { ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("trust-anchor", ca); ctx.leave(); } -#line 2145 "dhcp4_parser.cc" +#line 2164 "dhcp4_parser.cc" break; - case 282: // $@45: %empty -#line 1144 "dhcp4_parser.yy" + case 285: // $@46: %empty +#line 1155 "dhcp4_parser.yy" { ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2154 "dhcp4_parser.cc" +#line 2173 "dhcp4_parser.cc" break; - case 283: // cert_file: "cert-file" $@45 ":" "constant string" -#line 1147 "dhcp4_parser.yy" + case 286: // cert_file: "cert-file" $@46 ":" "constant string" +#line 1158 "dhcp4_parser.yy" { ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cert-file", cert); ctx.leave(); } -#line 2164 "dhcp4_parser.cc" +#line 2183 "dhcp4_parser.cc" break; - case 284: // $@46: %empty -#line 1153 "dhcp4_parser.yy" + case 287: // $@47: %empty +#line 1164 "dhcp4_parser.yy" { ctx.unique("key-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2173 "dhcp4_parser.cc" +#line 2192 "dhcp4_parser.cc" break; - case 285: // key_file: "key-file" $@46 ":" "constant string" -#line 1156 "dhcp4_parser.yy" + case 288: // key_file: "key-file" $@47 ":" "constant string" +#line 1167 "dhcp4_parser.yy" { ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("key-file", key); ctx.leave(); } -#line 2183 "dhcp4_parser.cc" +#line 2202 "dhcp4_parser.cc" break; - case 286: // $@47: %empty -#line 1162 "dhcp4_parser.yy" + case 289: // $@48: %empty +#line 1173 "dhcp4_parser.yy" { ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2192 "dhcp4_parser.cc" +#line 2211 "dhcp4_parser.cc" break; - case 287: // cipher_list: "cipher-list" $@47 ":" "constant string" -#line 1165 "dhcp4_parser.yy" + case 290: // cipher_list: "cipher-list" $@48 ":" "constant string" +#line 1176 "dhcp4_parser.yy" { ElementPtr cl(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cipher-list", cl); ctx.leave(); } -#line 2202 "dhcp4_parser.cc" +#line 2221 "dhcp4_parser.cc" break; - case 288: // $@48: %empty -#line 1171 "dhcp4_parser.yy" + case 291: // $@49: %empty +#line 1182 "dhcp4_parser.yy" { ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2210,73 +2229,73 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS); } -#line 2214 "dhcp4_parser.cc" +#line 2233 "dhcp4_parser.cc" break; - case 289: // host_reservation_identifiers: "host-reservation-identifiers" $@48 ":" "[" host_reservation_identifiers_list "]" -#line 1177 "dhcp4_parser.yy" + case 292: // host_reservation_identifiers: "host-reservation-identifiers" $@49 ":" "[" host_reservation_identifiers_list "]" +#line 1188 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2223 "dhcp4_parser.cc" +#line 2242 "dhcp4_parser.cc" break; - case 292: // host_reservation_identifiers_list: host_reservation_identifiers_list "," -#line 1184 "dhcp4_parser.yy" + case 295: // host_reservation_identifiers_list: host_reservation_identifiers_list "," +#line 1195 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2231 "dhcp4_parser.cc" +#line 2250 "dhcp4_parser.cc" break; - case 298: // duid_id: "duid" -#line 1196 "dhcp4_parser.yy" + case 301: // duid_id: "duid" +#line 1207 "dhcp4_parser.yy" { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2240 "dhcp4_parser.cc" +#line 2259 "dhcp4_parser.cc" break; - case 299: // hw_address_id: "hw-address" -#line 1201 "dhcp4_parser.yy" + case 302: // hw_address_id: "hw-address" +#line 1212 "dhcp4_parser.yy" { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 2249 "dhcp4_parser.cc" +#line 2268 "dhcp4_parser.cc" break; - case 300: // circuit_id: "circuit-id" -#line 1206 "dhcp4_parser.yy" + case 303: // circuit_id: "circuit-id" +#line 1217 "dhcp4_parser.yy" { ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(circuit); } -#line 2258 "dhcp4_parser.cc" +#line 2277 "dhcp4_parser.cc" break; - case 301: // client_id: "client-id" -#line 1211 "dhcp4_parser.yy" + case 304: // client_id: "client-id" +#line 1222 "dhcp4_parser.yy" { ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(client); } -#line 2267 "dhcp4_parser.cc" +#line 2286 "dhcp4_parser.cc" break; - case 302: // flex_id: "flex-id" -#line 1216 "dhcp4_parser.yy" + case 305: // flex_id: "flex-id" +#line 1227 "dhcp4_parser.yy" { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 2276 "dhcp4_parser.cc" +#line 2295 "dhcp4_parser.cc" break; - case 303: // $@49: %empty -#line 1223 "dhcp4_parser.yy" + case 306: // $@50: %empty +#line 1234 "dhcp4_parser.yy" { ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location)); ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2284,60 +2303,60 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(mt); ctx.enter(ctx.DHCP_MULTI_THREADING); } -#line 2288 "dhcp4_parser.cc" +#line 2307 "dhcp4_parser.cc" break; - case 304: // dhcp_multi_threading: "multi-threading" $@49 ":" "{" multi_threading_params "}" -#line 1229 "dhcp4_parser.yy" + case 307: // dhcp_multi_threading: "multi-threading" $@50 ":" "{" multi_threading_params "}" +#line 1240 "dhcp4_parser.yy" { // The enable parameter is required. ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 2299 "dhcp4_parser.cc" +#line 2318 "dhcp4_parser.cc" break; - case 307: // multi_threading_params: multi_threading_params "," -#line 1238 "dhcp4_parser.yy" + case 310: // multi_threading_params: multi_threading_params "," +#line 1249 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2307 "dhcp4_parser.cc" +#line 2326 "dhcp4_parser.cc" break; - case 314: // enable_multi_threading: "enable-multi-threading" ":" "boolean" -#line 1251 "dhcp4_parser.yy" + case 317: // enable_multi_threading: "enable-multi-threading" ":" "boolean" +#line 1262 "dhcp4_parser.yy" { ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-multi-threading", b); } -#line 2317 "dhcp4_parser.cc" +#line 2336 "dhcp4_parser.cc" break; - case 315: // thread_pool_size: "thread-pool-size" ":" "integer" -#line 1257 "dhcp4_parser.yy" + case 318: // thread_pool_size: "thread-pool-size" ":" "integer" +#line 1268 "dhcp4_parser.yy" { ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("thread-pool-size", prf); } -#line 2327 "dhcp4_parser.cc" +#line 2346 "dhcp4_parser.cc" break; - case 316: // packet_queue_size: "packet-queue-size" ":" "integer" -#line 1263 "dhcp4_parser.yy" + case 319: // packet_queue_size: "packet-queue-size" ":" "integer" +#line 1274 "dhcp4_parser.yy" { ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("packet-queue-size", prf); } -#line 2337 "dhcp4_parser.cc" +#line 2356 "dhcp4_parser.cc" break; - case 317: // $@50: %empty -#line 1269 "dhcp4_parser.yy" + case 320: // $@51: %empty +#line 1280 "dhcp4_parser.yy" { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2345,113 +2364,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 2349 "dhcp4_parser.cc" +#line 2368 "dhcp4_parser.cc" break; - case 318: // hooks_libraries: "hooks-libraries" $@50 ":" "[" hooks_libraries_list "]" -#line 1275 "dhcp4_parser.yy" + case 321: // hooks_libraries: "hooks-libraries" $@51 ":" "[" hooks_libraries_list "]" +#line 1286 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2358 "dhcp4_parser.cc" +#line 2377 "dhcp4_parser.cc" break; - case 323: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," -#line 1286 "dhcp4_parser.yy" + case 326: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," +#line 1297 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2366 "dhcp4_parser.cc" +#line 2385 "dhcp4_parser.cc" break; - case 324: // $@51: %empty -#line 1291 "dhcp4_parser.yy" + case 327: // $@52: %empty +#line 1302 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2376 "dhcp4_parser.cc" +#line 2395 "dhcp4_parser.cc" break; - case 325: // hooks_library: "{" $@51 hooks_params "}" -#line 1295 "dhcp4_parser.yy" + case 328: // hooks_library: "{" $@52 hooks_params "}" +#line 1306 "dhcp4_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2386 "dhcp4_parser.cc" +#line 2405 "dhcp4_parser.cc" break; - case 326: // $@52: %empty -#line 1301 "dhcp4_parser.yy" + case 329: // $@53: %empty +#line 1312 "dhcp4_parser.yy" { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2396 "dhcp4_parser.cc" +#line 2415 "dhcp4_parser.cc" break; - case 327: // sub_hooks_library: "{" $@52 hooks_params "}" -#line 1305 "dhcp4_parser.yy" + case 330: // sub_hooks_library: "{" $@53 hooks_params "}" +#line 1316 "dhcp4_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2406 "dhcp4_parser.cc" +#line 2425 "dhcp4_parser.cc" break; - case 330: // hooks_params: hooks_params "," -#line 1313 "dhcp4_parser.yy" + case 333: // hooks_params: hooks_params "," +#line 1324 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2414 "dhcp4_parser.cc" +#line 2433 "dhcp4_parser.cc" break; - case 334: // $@53: %empty -#line 1323 "dhcp4_parser.yy" + case 337: // $@54: %empty +#line 1334 "dhcp4_parser.yy" { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2423 "dhcp4_parser.cc" +#line 2442 "dhcp4_parser.cc" break; - case 335: // library: "library" $@53 ":" "constant string" -#line 1326 "dhcp4_parser.yy" + case 338: // library: "library" $@54 ":" "constant string" +#line 1337 "dhcp4_parser.yy" { ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 2433 "dhcp4_parser.cc" +#line 2452 "dhcp4_parser.cc" break; - case 336: // $@54: %empty -#line 1332 "dhcp4_parser.yy" + case 339: // $@55: %empty +#line 1343 "dhcp4_parser.yy" { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2442 "dhcp4_parser.cc" +#line 2461 "dhcp4_parser.cc" break; - case 337: // parameters: "parameters" $@54 ":" map_value -#line 1335 "dhcp4_parser.yy" + case 340: // parameters: "parameters" $@55 ":" map_value +#line 1346 "dhcp4_parser.yy" { ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2451 "dhcp4_parser.cc" +#line 2470 "dhcp4_parser.cc" break; - case 338: // $@55: %empty -#line 1341 "dhcp4_parser.yy" + case 341: // $@56: %empty +#line 1352 "dhcp4_parser.yy" { ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2459,89 +2478,89 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.EXPIRED_LEASES_PROCESSING); } -#line 2463 "dhcp4_parser.cc" +#line 2482 "dhcp4_parser.cc" break; - case 339: // expired_leases_processing: "expired-leases-processing" $@55 ":" "{" expired_leases_params "}" -#line 1347 "dhcp4_parser.yy" + case 342: // expired_leases_processing: "expired-leases-processing" $@56 ":" "{" expired_leases_params "}" +#line 1358 "dhcp4_parser.yy" { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 2473 "dhcp4_parser.cc" +#line 2492 "dhcp4_parser.cc" break; - case 342: // expired_leases_params: expired_leases_params "," -#line 1355 "dhcp4_parser.yy" + case 345: // expired_leases_params: expired_leases_params "," +#line 1366 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2481 "dhcp4_parser.cc" +#line 2500 "dhcp4_parser.cc" break; - case 349: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" -#line 1368 "dhcp4_parser.yy" + case 352: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" +#line 1379 "dhcp4_parser.yy" { ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reclaim-timer-wait-time", value); } -#line 2491 "dhcp4_parser.cc" +#line 2510 "dhcp4_parser.cc" break; - case 350: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" -#line 1374 "dhcp4_parser.yy" + case 353: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" +#line 1385 "dhcp4_parser.yy" { ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value); } -#line 2501 "dhcp4_parser.cc" +#line 2520 "dhcp4_parser.cc" break; - case 351: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" -#line 1380 "dhcp4_parser.yy" + case 354: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" +#line 1391 "dhcp4_parser.yy" { ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hold-reclaimed-time", value); } -#line 2511 "dhcp4_parser.cc" +#line 2530 "dhcp4_parser.cc" break; - case 352: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" -#line 1386 "dhcp4_parser.yy" + case 355: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" +#line 1397 "dhcp4_parser.yy" { ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-leases", value); } -#line 2521 "dhcp4_parser.cc" +#line 2540 "dhcp4_parser.cc" break; - case 353: // max_reclaim_time: "max-reclaim-time" ":" "integer" -#line 1392 "dhcp4_parser.yy" + case 356: // max_reclaim_time: "max-reclaim-time" ":" "integer" +#line 1403 "dhcp4_parser.yy" { ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-time", value); } -#line 2531 "dhcp4_parser.cc" +#line 2550 "dhcp4_parser.cc" break; - case 354: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" -#line 1398 "dhcp4_parser.yy" + case 357: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" +#line 1409 "dhcp4_parser.yy" { ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("unwarned-reclaim-cycles", value); } -#line 2541 "dhcp4_parser.cc" +#line 2560 "dhcp4_parser.cc" break; - case 355: // $@56: %empty -#line 1407 "dhcp4_parser.yy" + case 358: // $@57: %empty +#line 1418 "dhcp4_parser.yy" { ctx.unique("subnet4", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2549,38 +2568,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SUBNET4); } -#line 2553 "dhcp4_parser.cc" +#line 2572 "dhcp4_parser.cc" break; - case 356: // subnet4_list: "subnet4" $@56 ":" "[" subnet4_list_content "]" -#line 1413 "dhcp4_parser.yy" + case 359: // subnet4_list: "subnet4" $@57 ":" "[" subnet4_list_content "]" +#line 1424 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2562 "dhcp4_parser.cc" +#line 2581 "dhcp4_parser.cc" break; - case 361: // not_empty_subnet4_list: not_empty_subnet4_list "," -#line 1427 "dhcp4_parser.yy" + case 364: // not_empty_subnet4_list: not_empty_subnet4_list "," +#line 1438 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2570 "dhcp4_parser.cc" +#line 2589 "dhcp4_parser.cc" break; - case 362: // $@57: %empty -#line 1436 "dhcp4_parser.yy" + case 365: // $@58: %empty +#line 1447 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2580 "dhcp4_parser.cc" +#line 2599 "dhcp4_parser.cc" break; - case 363: // subnet4: "{" $@57 subnet4_params "}" -#line 1440 "dhcp4_parser.yy" + case 366: // subnet4: "{" $@58 subnet4_params "}" +#line 1451 "dhcp4_parser.yy" { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. @@ -2602,153 +2621,153 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2606 "dhcp4_parser.cc" +#line 2625 "dhcp4_parser.cc" break; - case 364: // $@58: %empty -#line 1462 "dhcp4_parser.yy" + case 367: // $@59: %empty +#line 1473 "dhcp4_parser.yy" { // Parse the subnet4 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2616 "dhcp4_parser.cc" +#line 2635 "dhcp4_parser.cc" break; - case 365: // sub_subnet4: "{" $@58 subnet4_params "}" -#line 1466 "dhcp4_parser.yy" + case 368: // sub_subnet4: "{" $@59 subnet4_params "}" +#line 1477 "dhcp4_parser.yy" { // The subnet subnet4 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2626 "dhcp4_parser.cc" +#line 2645 "dhcp4_parser.cc" break; - case 368: // subnet4_params: subnet4_params "," -#line 1475 "dhcp4_parser.yy" + case 371: // subnet4_params: subnet4_params "," +#line 1486 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2634 "dhcp4_parser.cc" +#line 2653 "dhcp4_parser.cc" break; - case 414: // $@59: %empty -#line 1528 "dhcp4_parser.yy" + case 418: // $@60: %empty +#line 1540 "dhcp4_parser.yy" { ctx.unique("subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2643 "dhcp4_parser.cc" +#line 2662 "dhcp4_parser.cc" break; - case 415: // subnet: "subnet" $@59 ":" "constant string" -#line 1531 "dhcp4_parser.yy" + case 419: // subnet: "subnet" $@60 ":" "constant string" +#line 1543 "dhcp4_parser.yy" { ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet", subnet); ctx.leave(); } -#line 2653 "dhcp4_parser.cc" +#line 2672 "dhcp4_parser.cc" break; - case 416: // $@60: %empty -#line 1537 "dhcp4_parser.yy" + case 420: // $@61: %empty +#line 1549 "dhcp4_parser.yy" { ctx.unique("4o6-interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2662 "dhcp4_parser.cc" +#line 2681 "dhcp4_parser.cc" break; - case 417: // subnet_4o6_interface: "4o6-interface" $@60 ":" "constant string" -#line 1540 "dhcp4_parser.yy" + case 421: // subnet_4o6_interface: "4o6-interface" $@61 ":" "constant string" +#line 1552 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-interface", iface); ctx.leave(); } -#line 2672 "dhcp4_parser.cc" +#line 2691 "dhcp4_parser.cc" break; - case 418: // $@61: %empty -#line 1546 "dhcp4_parser.yy" + case 422: // $@62: %empty +#line 1558 "dhcp4_parser.yy" { ctx.unique("4o6-interface-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2681 "dhcp4_parser.cc" +#line 2700 "dhcp4_parser.cc" break; - case 419: // subnet_4o6_interface_id: "4o6-interface-id" $@61 ":" "constant string" -#line 1549 "dhcp4_parser.yy" + case 423: // subnet_4o6_interface_id: "4o6-interface-id" $@62 ":" "constant string" +#line 1561 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-interface-id", iface); ctx.leave(); } -#line 2691 "dhcp4_parser.cc" +#line 2710 "dhcp4_parser.cc" break; - case 420: // $@62: %empty -#line 1555 "dhcp4_parser.yy" + case 424: // $@63: %empty +#line 1567 "dhcp4_parser.yy" { ctx.unique("4o6-subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2700 "dhcp4_parser.cc" +#line 2719 "dhcp4_parser.cc" break; - case 421: // subnet_4o6_subnet: "4o6-subnet" $@62 ":" "constant string" -#line 1558 "dhcp4_parser.yy" + case 425: // subnet_4o6_subnet: "4o6-subnet" $@63 ":" "constant string" +#line 1570 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-subnet", iface); ctx.leave(); } -#line 2710 "dhcp4_parser.cc" +#line 2729 "dhcp4_parser.cc" break; - case 422: // $@63: %empty -#line 1564 "dhcp4_parser.yy" + case 426: // $@64: %empty +#line 1576 "dhcp4_parser.yy" { ctx.unique("interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2719 "dhcp4_parser.cc" +#line 2738 "dhcp4_parser.cc" break; - case 423: // interface: "interface" $@63 ":" "constant string" -#line 1567 "dhcp4_parser.yy" + case 427: // interface: "interface" $@64 ":" "constant string" +#line 1579 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface", iface); ctx.leave(); } -#line 2729 "dhcp4_parser.cc" +#line 2748 "dhcp4_parser.cc" break; - case 424: // $@64: %empty -#line 1573 "dhcp4_parser.yy" + case 428: // $@65: %empty +#line 1585 "dhcp4_parser.yy" { ctx.unique("client-class", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2738 "dhcp4_parser.cc" +#line 2757 "dhcp4_parser.cc" break; - case 425: // client_class: "client-class" $@64 ":" "constant string" -#line 1576 "dhcp4_parser.yy" + case 429: // client_class: "client-class" $@65 ":" "constant string" +#line 1588 "dhcp4_parser.yy" { ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-class", cls); ctx.leave(); } -#line 2748 "dhcp4_parser.cc" +#line 2767 "dhcp4_parser.cc" break; - case 426: // $@65: %empty -#line 1582 "dhcp4_parser.yy" + case 430: // $@66: %empty +#line 1594 "dhcp4_parser.yy" { ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2756,102 +2775,102 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2760 "dhcp4_parser.cc" +#line 2779 "dhcp4_parser.cc" break; - case 427: // require_client_classes: "require-client-classes" $@65 ":" list_strings -#line 1588 "dhcp4_parser.yy" + case 431: // require_client_classes: "require-client-classes" $@66 ":" list_strings +#line 1600 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2769 "dhcp4_parser.cc" +#line 2788 "dhcp4_parser.cc" break; - case 428: // reservations_global: "reservations-global" ":" "boolean" -#line 1593 "dhcp4_parser.yy" + case 432: // reservations_global: "reservations-global" ":" "boolean" +#line 1605 "dhcp4_parser.yy" { ctx.unique("reservations-global", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-global", b); } -#line 2779 "dhcp4_parser.cc" +#line 2798 "dhcp4_parser.cc" break; - case 429: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" -#line 1599 "dhcp4_parser.yy" + case 433: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" +#line 1611 "dhcp4_parser.yy" { ctx.unique("reservations-in-subnet", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-in-subnet", b); } -#line 2789 "dhcp4_parser.cc" +#line 2808 "dhcp4_parser.cc" break; - case 430: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" -#line 1605 "dhcp4_parser.yy" + case 434: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" +#line 1617 "dhcp4_parser.yy" { ctx.unique("reservations-out-of-pool", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-out-of-pool", b); } -#line 2799 "dhcp4_parser.cc" +#line 2818 "dhcp4_parser.cc" break; - case 431: // $@66: %empty -#line 1611 "dhcp4_parser.yy" + case 435: // $@67: %empty +#line 1623 "dhcp4_parser.yy" { ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.RESERVATION_MODE); } -#line 2808 "dhcp4_parser.cc" +#line 2827 "dhcp4_parser.cc" break; - case 432: // reservation_mode: "reservation-mode" $@66 ":" hr_mode -#line 1614 "dhcp4_parser.yy" + case 436: // reservation_mode: "reservation-mode" $@67 ":" hr_mode +#line 1626 "dhcp4_parser.yy" { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2817 "dhcp4_parser.cc" +#line 2836 "dhcp4_parser.cc" break; - case 433: // hr_mode: "disabled" -#line 1619 "dhcp4_parser.yy" + case 437: // hr_mode: "disabled" +#line 1631 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 2823 "dhcp4_parser.cc" +#line 2842 "dhcp4_parser.cc" break; - case 434: // hr_mode: "out-of-pool" -#line 1620 "dhcp4_parser.yy" + case 438: // hr_mode: "out-of-pool" +#line 1632 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 2829 "dhcp4_parser.cc" +#line 2848 "dhcp4_parser.cc" break; - case 435: // hr_mode: "global" -#line 1621 "dhcp4_parser.yy" + case 439: // hr_mode: "global" +#line 1633 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 2835 "dhcp4_parser.cc" +#line 2854 "dhcp4_parser.cc" break; - case 436: // hr_mode: "all" -#line 1622 "dhcp4_parser.yy" + case 440: // hr_mode: "all" +#line 1634 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 2841 "dhcp4_parser.cc" +#line 2860 "dhcp4_parser.cc" break; - case 437: // id: "id" ":" "integer" -#line 1625 "dhcp4_parser.yy" + case 441: // id: "id" ":" "integer" +#line 1637 "dhcp4_parser.yy" { ctx.unique("id", ctx.loc2pos(yystack_[2].location)); ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("id", id); } -#line 2851 "dhcp4_parser.cc" +#line 2870 "dhcp4_parser.cc" break; - case 438: // $@67: %empty -#line 1633 "dhcp4_parser.yy" + case 442: // $@68: %empty +#line 1645 "dhcp4_parser.yy" { ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2859,54 +2878,54 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SHARED_NETWORK); } -#line 2863 "dhcp4_parser.cc" +#line 2882 "dhcp4_parser.cc" break; - case 439: // shared_networks: "shared-networks" $@67 ":" "[" shared_networks_content "]" -#line 1639 "dhcp4_parser.yy" + case 443: // shared_networks: "shared-networks" $@68 ":" "[" shared_networks_content "]" +#line 1651 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2872 "dhcp4_parser.cc" +#line 2891 "dhcp4_parser.cc" break; - case 444: // shared_networks_list: shared_networks_list "," -#line 1652 "dhcp4_parser.yy" + case 448: // shared_networks_list: shared_networks_list "," +#line 1664 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2880 "dhcp4_parser.cc" +#line 2899 "dhcp4_parser.cc" break; - case 445: // $@68: %empty -#line 1657 "dhcp4_parser.yy" + case 449: // $@69: %empty +#line 1669 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2890 "dhcp4_parser.cc" +#line 2909 "dhcp4_parser.cc" break; - case 446: // shared_network: "{" $@68 shared_network_params "}" -#line 1661 "dhcp4_parser.yy" + case 450: // shared_network: "{" $@69 shared_network_params "}" +#line 1673 "dhcp4_parser.yy" { ctx.stack_.pop_back(); } -#line 2898 "dhcp4_parser.cc" +#line 2917 "dhcp4_parser.cc" break; - case 449: // shared_network_params: shared_network_params "," -#line 1667 "dhcp4_parser.yy" + case 453: // shared_network_params: shared_network_params "," +#line 1679 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2906 "dhcp4_parser.cc" +#line 2925 "dhcp4_parser.cc" break; - case 490: // $@69: %empty -#line 1718 "dhcp4_parser.yy" + case 495: // $@70: %empty +#line 1731 "dhcp4_parser.yy" { ctx.unique("option-def", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2914,55 +2933,55 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DEF); } -#line 2918 "dhcp4_parser.cc" +#line 2937 "dhcp4_parser.cc" break; - case 491: // option_def_list: "option-def" $@69 ":" "[" option_def_list_content "]" -#line 1724 "dhcp4_parser.yy" + case 496: // option_def_list: "option-def" $@70 ":" "[" option_def_list_content "]" +#line 1737 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2927 "dhcp4_parser.cc" +#line 2946 "dhcp4_parser.cc" break; - case 492: // $@70: %empty -#line 1732 "dhcp4_parser.yy" + case 497: // $@71: %empty +#line 1745 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2936 "dhcp4_parser.cc" +#line 2955 "dhcp4_parser.cc" break; - case 493: // sub_option_def_list: "{" $@70 option_def_list "}" -#line 1735 "dhcp4_parser.yy" + case 498: // sub_option_def_list: "{" $@71 option_def_list "}" +#line 1748 "dhcp4_parser.yy" { // parsing completed } -#line 2944 "dhcp4_parser.cc" +#line 2963 "dhcp4_parser.cc" break; - case 498: // not_empty_option_def_list: not_empty_option_def_list "," -#line 1747 "dhcp4_parser.yy" + case 503: // not_empty_option_def_list: not_empty_option_def_list "," +#line 1760 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2952 "dhcp4_parser.cc" +#line 2971 "dhcp4_parser.cc" break; - case 499: // $@71: %empty -#line 1754 "dhcp4_parser.yy" + case 504: // $@72: %empty +#line 1767 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2962 "dhcp4_parser.cc" +#line 2981 "dhcp4_parser.cc" break; - case 500: // option_def_entry: "{" $@71 option_def_params "}" -#line 1758 "dhcp4_parser.yy" + case 505: // option_def_entry: "{" $@72 option_def_params "}" +#line 1771 "dhcp4_parser.yy" { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2970,21 +2989,21 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2974 "dhcp4_parser.cc" +#line 2993 "dhcp4_parser.cc" break; - case 501: // $@72: %empty -#line 1769 "dhcp4_parser.yy" + case 506: // $@73: %empty +#line 1782 "dhcp4_parser.yy" { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2984 "dhcp4_parser.cc" +#line 3003 "dhcp4_parser.cc" break; - case 502: // sub_option_def: "{" $@72 option_def_params "}" -#line 1773 "dhcp4_parser.yy" + case 507: // sub_option_def: "{" $@73 option_def_params "}" +#line 1786 "dhcp4_parser.yy" { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2992,115 +3011,115 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2996 "dhcp4_parser.cc" +#line 3015 "dhcp4_parser.cc" break; - case 507: // not_empty_option_def_params: not_empty_option_def_params "," -#line 1789 "dhcp4_parser.yy" + case 512: // not_empty_option_def_params: not_empty_option_def_params "," +#line 1802 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3004 "dhcp4_parser.cc" +#line 3023 "dhcp4_parser.cc" break; - case 519: // code: "code" ":" "integer" -#line 1808 "dhcp4_parser.yy" + case 524: // code: "code" ":" "integer" +#line 1821 "dhcp4_parser.yy" { ctx.unique("code", ctx.loc2pos(yystack_[2].location)); ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("code", code); } -#line 3014 "dhcp4_parser.cc" +#line 3033 "dhcp4_parser.cc" break; - case 521: // $@73: %empty -#line 1816 "dhcp4_parser.yy" + case 526: // $@74: %empty +#line 1829 "dhcp4_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3023 "dhcp4_parser.cc" +#line 3042 "dhcp4_parser.cc" break; - case 522: // option_def_type: "type" $@73 ":" "constant string" -#line 1819 "dhcp4_parser.yy" + case 527: // option_def_type: "type" $@74 ":" "constant string" +#line 1832 "dhcp4_parser.yy" { ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", prf); ctx.leave(); } -#line 3033 "dhcp4_parser.cc" +#line 3052 "dhcp4_parser.cc" break; - case 523: // $@74: %empty -#line 1825 "dhcp4_parser.yy" + case 528: // $@75: %empty +#line 1838 "dhcp4_parser.yy" { ctx.unique("record-types", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3042 "dhcp4_parser.cc" +#line 3061 "dhcp4_parser.cc" break; - case 524: // option_def_record_types: "record-types" $@74 ":" "constant string" -#line 1828 "dhcp4_parser.yy" + case 529: // option_def_record_types: "record-types" $@75 ":" "constant string" +#line 1841 "dhcp4_parser.yy" { ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("record-types", rtypes); ctx.leave(); } -#line 3052 "dhcp4_parser.cc" +#line 3071 "dhcp4_parser.cc" break; - case 525: // $@75: %empty -#line 1834 "dhcp4_parser.yy" + case 530: // $@76: %empty +#line 1847 "dhcp4_parser.yy" { ctx.unique("space", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3061 "dhcp4_parser.cc" +#line 3080 "dhcp4_parser.cc" break; - case 526: // space: "space" $@75 ":" "constant string" -#line 1837 "dhcp4_parser.yy" + case 531: // space: "space" $@76 ":" "constant string" +#line 1850 "dhcp4_parser.yy" { ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("space", space); ctx.leave(); } -#line 3071 "dhcp4_parser.cc" +#line 3090 "dhcp4_parser.cc" break; - case 528: // $@76: %empty -#line 1845 "dhcp4_parser.yy" + case 533: // $@77: %empty +#line 1858 "dhcp4_parser.yy" { ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3080 "dhcp4_parser.cc" +#line 3099 "dhcp4_parser.cc" break; - case 529: // option_def_encapsulate: "encapsulate" $@76 ":" "constant string" -#line 1848 "dhcp4_parser.yy" + case 534: // option_def_encapsulate: "encapsulate" $@77 ":" "constant string" +#line 1861 "dhcp4_parser.yy" { ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("encapsulate", encap); ctx.leave(); } -#line 3090 "dhcp4_parser.cc" +#line 3109 "dhcp4_parser.cc" break; - case 530: // option_def_array: "array" ":" "boolean" -#line 1854 "dhcp4_parser.yy" + case 535: // option_def_array: "array" ":" "boolean" +#line 1867 "dhcp4_parser.yy" { ctx.unique("array", ctx.loc2pos(yystack_[2].location)); ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("array", array); } -#line 3100 "dhcp4_parser.cc" +#line 3119 "dhcp4_parser.cc" break; - case 531: // $@77: %empty -#line 1864 "dhcp4_parser.yy" + case 536: // $@78: %empty +#line 1877 "dhcp4_parser.yy" { ctx.unique("option-data", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3108,113 +3127,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DATA); } -#line 3112 "dhcp4_parser.cc" +#line 3131 "dhcp4_parser.cc" break; - case 532: // option_data_list: "option-data" $@77 ":" "[" option_data_list_content "]" -#line 1870 "dhcp4_parser.yy" + case 537: // option_data_list: "option-data" $@78 ":" "[" option_data_list_content "]" +#line 1883 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3121 "dhcp4_parser.cc" +#line 3140 "dhcp4_parser.cc" break; - case 537: // not_empty_option_data_list: not_empty_option_data_list "," -#line 1885 "dhcp4_parser.yy" + case 542: // not_empty_option_data_list: not_empty_option_data_list "," +#line 1898 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3129 "dhcp4_parser.cc" +#line 3148 "dhcp4_parser.cc" break; - case 538: // $@78: %empty -#line 1892 "dhcp4_parser.yy" + case 543: // $@79: %empty +#line 1905 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3139 "dhcp4_parser.cc" +#line 3158 "dhcp4_parser.cc" break; - case 539: // option_data_entry: "{" $@78 option_data_params "}" -#line 1896 "dhcp4_parser.yy" + case 544: // option_data_entry: "{" $@79 option_data_params "}" +#line 1909 "dhcp4_parser.yy" { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 3148 "dhcp4_parser.cc" +#line 3167 "dhcp4_parser.cc" break; - case 540: // $@79: %empty -#line 1904 "dhcp4_parser.yy" + case 545: // $@80: %empty +#line 1917 "dhcp4_parser.yy" { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3158 "dhcp4_parser.cc" +#line 3177 "dhcp4_parser.cc" break; - case 541: // sub_option_data: "{" $@79 option_data_params "}" -#line 1908 "dhcp4_parser.yy" + case 546: // sub_option_data: "{" $@80 option_data_params "}" +#line 1921 "dhcp4_parser.yy" { /// @todo: the code or name parameters are required. // parsing completed } -#line 3167 "dhcp4_parser.cc" +#line 3186 "dhcp4_parser.cc" break; - case 546: // not_empty_option_data_params: not_empty_option_data_params "," -#line 1924 "dhcp4_parser.yy" + case 551: // not_empty_option_data_params: not_empty_option_data_params "," +#line 1937 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3175 "dhcp4_parser.cc" +#line 3194 "dhcp4_parser.cc" break; - case 557: // $@80: %empty -#line 1944 "dhcp4_parser.yy" + case 562: // $@81: %empty +#line 1957 "dhcp4_parser.yy" { ctx.unique("data", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3184 "dhcp4_parser.cc" +#line 3203 "dhcp4_parser.cc" break; - case 558: // option_data_data: "data" $@80 ":" "constant string" -#line 1947 "dhcp4_parser.yy" + case 563: // option_data_data: "data" $@81 ":" "constant string" +#line 1960 "dhcp4_parser.yy" { ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data", data); ctx.leave(); } -#line 3194 "dhcp4_parser.cc" +#line 3213 "dhcp4_parser.cc" break; - case 561: // option_data_csv_format: "csv-format" ":" "boolean" -#line 1957 "dhcp4_parser.yy" + case 566: // option_data_csv_format: "csv-format" ":" "boolean" +#line 1970 "dhcp4_parser.yy" { ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location)); ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", space); } -#line 3204 "dhcp4_parser.cc" +#line 3223 "dhcp4_parser.cc" break; - case 562: // option_data_always_send: "always-send" ":" "boolean" -#line 1963 "dhcp4_parser.yy" + case 567: // option_data_always_send: "always-send" ":" "boolean" +#line 1976 "dhcp4_parser.yy" { ctx.unique("always-send", ctx.loc2pos(yystack_[2].location)); ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-send", persist); } -#line 3214 "dhcp4_parser.cc" +#line 3233 "dhcp4_parser.cc" break; - case 563: // $@81: %empty -#line 1972 "dhcp4_parser.yy" + case 568: // $@82: %empty +#line 1985 "dhcp4_parser.yy" { ctx.unique("pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3222,103 +3241,103 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.POOLS); } -#line 3226 "dhcp4_parser.cc" +#line 3245 "dhcp4_parser.cc" break; - case 564: // pools_list: "pools" $@81 ":" "[" pools_list_content "]" -#line 1978 "dhcp4_parser.yy" + case 569: // pools_list: "pools" $@82 ":" "[" pools_list_content "]" +#line 1991 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3235 "dhcp4_parser.cc" +#line 3254 "dhcp4_parser.cc" break; - case 569: // not_empty_pools_list: not_empty_pools_list "," -#line 1991 "dhcp4_parser.yy" + case 574: // not_empty_pools_list: not_empty_pools_list "," +#line 2004 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3243 "dhcp4_parser.cc" +#line 3262 "dhcp4_parser.cc" break; - case 570: // $@82: %empty -#line 1996 "dhcp4_parser.yy" + case 575: // $@83: %empty +#line 2009 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3253 "dhcp4_parser.cc" +#line 3272 "dhcp4_parser.cc" break; - case 571: // pool_list_entry: "{" $@82 pool_params "}" -#line 2000 "dhcp4_parser.yy" + case 576: // pool_list_entry: "{" $@83 pool_params "}" +#line 2013 "dhcp4_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3263 "dhcp4_parser.cc" +#line 3282 "dhcp4_parser.cc" break; - case 572: // $@83: %empty -#line 2006 "dhcp4_parser.yy" + case 577: // $@84: %empty +#line 2019 "dhcp4_parser.yy" { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3273 "dhcp4_parser.cc" +#line 3292 "dhcp4_parser.cc" break; - case 573: // sub_pool4: "{" $@83 pool_params "}" -#line 2010 "dhcp4_parser.yy" + case 578: // sub_pool4: "{" $@84 pool_params "}" +#line 2023 "dhcp4_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3283 "dhcp4_parser.cc" +#line 3302 "dhcp4_parser.cc" break; - case 576: // pool_params: pool_params "," -#line 2018 "dhcp4_parser.yy" + case 581: // pool_params: pool_params "," +#line 2031 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3291 "dhcp4_parser.cc" +#line 3310 "dhcp4_parser.cc" break; - case 584: // $@84: %empty -#line 2032 "dhcp4_parser.yy" + case 589: // $@85: %empty +#line 2045 "dhcp4_parser.yy" { ctx.unique("pool", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3300 "dhcp4_parser.cc" +#line 3319 "dhcp4_parser.cc" break; - case 585: // pool_entry: "pool" $@84 ":" "constant string" -#line 2035 "dhcp4_parser.yy" + case 590: // pool_entry: "pool" $@85 ":" "constant string" +#line 2048 "dhcp4_parser.yy" { ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool", pool); ctx.leave(); } -#line 3310 "dhcp4_parser.cc" +#line 3329 "dhcp4_parser.cc" break; - case 586: // $@85: %empty -#line 2041 "dhcp4_parser.yy" + case 591: // $@86: %empty +#line 2054 "dhcp4_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3318 "dhcp4_parser.cc" +#line 3337 "dhcp4_parser.cc" break; - case 587: // user_context: "user-context" $@85 ":" map_value -#line 2043 "dhcp4_parser.yy" + case 592: // user_context: "user-context" $@86 ":" map_value +#line 2056 "dhcp4_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); @@ -3341,19 +3360,19 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3345 "dhcp4_parser.cc" +#line 3364 "dhcp4_parser.cc" break; - case 588: // $@86: %empty -#line 2066 "dhcp4_parser.yy" + case 593: // $@87: %empty +#line 2079 "dhcp4_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3353 "dhcp4_parser.cc" +#line 3372 "dhcp4_parser.cc" break; - case 589: // comment: "comment" $@86 ":" "constant string" -#line 2068 "dhcp4_parser.yy" + case 594: // comment: "comment" $@87 ":" "constant string" +#line 2081 "dhcp4_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -3378,11 +3397,11 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3382 "dhcp4_parser.cc" +#line 3401 "dhcp4_parser.cc" break; - case 590: // $@87: %empty -#line 2096 "dhcp4_parser.yy" + case 595: // $@88: %empty +#line 2109 "dhcp4_parser.yy" { ctx.unique("reservations", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3390,150 +3409,150 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.RESERVATIONS); } -#line 3394 "dhcp4_parser.cc" +#line 3413 "dhcp4_parser.cc" break; - case 591: // reservations: "reservations" $@87 ":" "[" reservations_list "]" -#line 2102 "dhcp4_parser.yy" + case 596: // reservations: "reservations" $@88 ":" "[" reservations_list "]" +#line 2115 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3403 "dhcp4_parser.cc" +#line 3422 "dhcp4_parser.cc" break; - case 596: // not_empty_reservations_list: not_empty_reservations_list "," -#line 2113 "dhcp4_parser.yy" + case 601: // not_empty_reservations_list: not_empty_reservations_list "," +#line 2126 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3411 "dhcp4_parser.cc" +#line 3430 "dhcp4_parser.cc" break; - case 597: // $@88: %empty -#line 2118 "dhcp4_parser.yy" + case 602: // $@89: %empty +#line 2131 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3421 "dhcp4_parser.cc" +#line 3440 "dhcp4_parser.cc" break; - case 598: // reservation: "{" $@88 reservation_params "}" -#line 2122 "dhcp4_parser.yy" + case 603: // reservation: "{" $@89 reservation_params "}" +#line 2135 "dhcp4_parser.yy" { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 3430 "dhcp4_parser.cc" +#line 3449 "dhcp4_parser.cc" break; - case 599: // $@89: %empty -#line 2127 "dhcp4_parser.yy" + case 604: // $@90: %empty +#line 2140 "dhcp4_parser.yy" { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3440 "dhcp4_parser.cc" +#line 3459 "dhcp4_parser.cc" break; - case 600: // sub_reservation: "{" $@89 reservation_params "}" -#line 2131 "dhcp4_parser.yy" + case 605: // sub_reservation: "{" $@90 reservation_params "}" +#line 2144 "dhcp4_parser.yy" { /// @todo: an identifier parameter is required. // parsing completed } -#line 3449 "dhcp4_parser.cc" +#line 3468 "dhcp4_parser.cc" break; - case 605: // not_empty_reservation_params: not_empty_reservation_params "," -#line 2142 "dhcp4_parser.yy" + case 610: // not_empty_reservation_params: not_empty_reservation_params "," +#line 2155 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3457 "dhcp4_parser.cc" +#line 3476 "dhcp4_parser.cc" break; - case 621: // $@90: %empty -#line 2165 "dhcp4_parser.yy" + case 626: // $@91: %empty +#line 2178 "dhcp4_parser.yy" { ctx.unique("next-server", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3466 "dhcp4_parser.cc" +#line 3485 "dhcp4_parser.cc" break; - case 622: // next_server: "next-server" $@90 ":" "constant string" -#line 2168 "dhcp4_parser.yy" + case 627: // next_server: "next-server" $@91 ":" "constant string" +#line 2181 "dhcp4_parser.yy" { ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("next-server", next_server); ctx.leave(); } -#line 3476 "dhcp4_parser.cc" +#line 3495 "dhcp4_parser.cc" break; - case 623: // $@91: %empty -#line 2174 "dhcp4_parser.yy" + case 628: // $@92: %empty +#line 2187 "dhcp4_parser.yy" { ctx.unique("server-hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3485 "dhcp4_parser.cc" +#line 3504 "dhcp4_parser.cc" break; - case 624: // server_hostname: "server-hostname" $@91 ":" "constant string" -#line 2177 "dhcp4_parser.yy" + case 629: // server_hostname: "server-hostname" $@92 ":" "constant string" +#line 2190 "dhcp4_parser.yy" { ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-hostname", srv); ctx.leave(); } -#line 3495 "dhcp4_parser.cc" +#line 3514 "dhcp4_parser.cc" break; - case 625: // $@92: %empty -#line 2183 "dhcp4_parser.yy" + case 630: // $@93: %empty +#line 2196 "dhcp4_parser.yy" { ctx.unique("boot-file-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3504 "dhcp4_parser.cc" +#line 3523 "dhcp4_parser.cc" break; - case 626: // boot_file_name: "boot-file-name" $@92 ":" "constant string" -#line 2186 "dhcp4_parser.yy" + case 631: // boot_file_name: "boot-file-name" $@93 ":" "constant string" +#line 2199 "dhcp4_parser.yy" { ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("boot-file-name", bootfile); ctx.leave(); } -#line 3514 "dhcp4_parser.cc" +#line 3533 "dhcp4_parser.cc" break; - case 627: // $@93: %empty -#line 2192 "dhcp4_parser.yy" + case 632: // $@94: %empty +#line 2205 "dhcp4_parser.yy" { ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3523 "dhcp4_parser.cc" +#line 3542 "dhcp4_parser.cc" break; - case 628: // ip_address: "ip-address" $@93 ":" "constant string" -#line 2195 "dhcp4_parser.yy" + case 633: // ip_address: "ip-address" $@94 ":" "constant string" +#line 2208 "dhcp4_parser.yy" { ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", addr); ctx.leave(); } -#line 3533 "dhcp4_parser.cc" +#line 3552 "dhcp4_parser.cc" break; - case 629: // $@94: %empty -#line 2201 "dhcp4_parser.yy" + case 634: // $@95: %empty +#line 2214 "dhcp4_parser.yy" { ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3541,134 +3560,134 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3545 "dhcp4_parser.cc" +#line 3564 "dhcp4_parser.cc" break; - case 630: // ip_addresses: "ip-addresses" $@94 ":" list_strings -#line 2207 "dhcp4_parser.yy" + case 635: // ip_addresses: "ip-addresses" $@95 ":" list_strings +#line 2220 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3554 "dhcp4_parser.cc" +#line 3573 "dhcp4_parser.cc" break; - case 631: // $@95: %empty -#line 2212 "dhcp4_parser.yy" + case 636: // $@96: %empty +#line 2225 "dhcp4_parser.yy" { ctx.unique("duid", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3563 "dhcp4_parser.cc" +#line 3582 "dhcp4_parser.cc" break; - case 632: // duid: "duid" $@95 ":" "constant string" -#line 2215 "dhcp4_parser.yy" + case 637: // duid: "duid" $@96 ":" "constant string" +#line 2228 "dhcp4_parser.yy" { ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("duid", d); ctx.leave(); } -#line 3573 "dhcp4_parser.cc" +#line 3592 "dhcp4_parser.cc" break; - case 633: // $@96: %empty -#line 2221 "dhcp4_parser.yy" + case 638: // $@97: %empty +#line 2234 "dhcp4_parser.yy" { ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3582 "dhcp4_parser.cc" +#line 3601 "dhcp4_parser.cc" break; - case 634: // hw_address: "hw-address" $@96 ":" "constant string" -#line 2224 "dhcp4_parser.yy" + case 639: // hw_address: "hw-address" $@97 ":" "constant string" +#line 2237 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hw-address", hw); ctx.leave(); } -#line 3592 "dhcp4_parser.cc" +#line 3611 "dhcp4_parser.cc" break; - case 635: // $@97: %empty -#line 2230 "dhcp4_parser.yy" + case 640: // $@98: %empty +#line 2243 "dhcp4_parser.yy" { ctx.unique("client-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3601 "dhcp4_parser.cc" +#line 3620 "dhcp4_parser.cc" break; - case 636: // client_id_value: "client-id" $@97 ":" "constant string" -#line 2233 "dhcp4_parser.yy" + case 641: // client_id_value: "client-id" $@98 ":" "constant string" +#line 2246 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-id", hw); ctx.leave(); } -#line 3611 "dhcp4_parser.cc" +#line 3630 "dhcp4_parser.cc" break; - case 637: // $@98: %empty -#line 2239 "dhcp4_parser.yy" + case 642: // $@99: %empty +#line 2252 "dhcp4_parser.yy" { ctx.unique("circuit-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3620 "dhcp4_parser.cc" +#line 3639 "dhcp4_parser.cc" break; - case 638: // circuit_id_value: "circuit-id" $@98 ":" "constant string" -#line 2242 "dhcp4_parser.yy" + case 643: // circuit_id_value: "circuit-id" $@99 ":" "constant string" +#line 2255 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("circuit-id", hw); ctx.leave(); } -#line 3630 "dhcp4_parser.cc" +#line 3649 "dhcp4_parser.cc" break; - case 639: // $@99: %empty -#line 2248 "dhcp4_parser.yy" + case 644: // $@100: %empty +#line 2261 "dhcp4_parser.yy" { ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3639 "dhcp4_parser.cc" +#line 3658 "dhcp4_parser.cc" break; - case 640: // flex_id_value: "flex-id" $@99 ":" "constant string" -#line 2251 "dhcp4_parser.yy" + case 645: // flex_id_value: "flex-id" $@100 ":" "constant string" +#line 2264 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flex-id", hw); ctx.leave(); } -#line 3649 "dhcp4_parser.cc" +#line 3668 "dhcp4_parser.cc" break; - case 641: // $@100: %empty -#line 2257 "dhcp4_parser.yy" + case 646: // $@101: %empty +#line 2270 "dhcp4_parser.yy" { ctx.unique("hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3658 "dhcp4_parser.cc" +#line 3677 "dhcp4_parser.cc" break; - case 642: // hostname: "hostname" $@100 ":" "constant string" -#line 2260 "dhcp4_parser.yy" + case 647: // hostname: "hostname" $@101 ":" "constant string" +#line 2273 "dhcp4_parser.yy" { ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname", host); ctx.leave(); } -#line 3668 "dhcp4_parser.cc" +#line 3687 "dhcp4_parser.cc" break; - case 643: // $@101: %empty -#line 2266 "dhcp4_parser.yy" + case 648: // $@102: %empty +#line 2279 "dhcp4_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3676,20 +3695,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 3680 "dhcp4_parser.cc" +#line 3699 "dhcp4_parser.cc" break; - case 644: // reservation_client_classes: "client-classes" $@101 ":" list_strings -#line 2272 "dhcp4_parser.yy" + case 649: // reservation_client_classes: "client-classes" $@102 ":" list_strings +#line 2285 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3689 "dhcp4_parser.cc" +#line 3708 "dhcp4_parser.cc" break; - case 645: // $@102: %empty -#line 2280 "dhcp4_parser.yy" + case 650: // $@103: %empty +#line 2293 "dhcp4_parser.yy" { ctx.unique("relay", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3697,20 +3716,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.RELAY); } -#line 3701 "dhcp4_parser.cc" +#line 3720 "dhcp4_parser.cc" break; - case 646: // relay: "relay" $@102 ":" "{" relay_map "}" -#line 2286 "dhcp4_parser.yy" + case 651: // relay: "relay" $@103 ":" "{" relay_map "}" +#line 2299 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3710 "dhcp4_parser.cc" +#line 3729 "dhcp4_parser.cc" break; - case 649: // $@103: %empty -#line 2298 "dhcp4_parser.yy" + case 654: // $@104: %empty +#line 2311 "dhcp4_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3718,114 +3737,114 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CLIENT_CLASSES); } -#line 3722 "dhcp4_parser.cc" +#line 3741 "dhcp4_parser.cc" break; - case 650: // client_classes: "client-classes" $@103 ":" "[" client_classes_list "]" -#line 2304 "dhcp4_parser.yy" + case 655: // client_classes: "client-classes" $@104 ":" "[" client_classes_list "]" +#line 2317 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3731 "dhcp4_parser.cc" +#line 3750 "dhcp4_parser.cc" break; - case 653: // client_classes_list: client_classes_list "," -#line 2311 "dhcp4_parser.yy" + case 658: // client_classes_list: client_classes_list "," +#line 2324 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3739 "dhcp4_parser.cc" +#line 3758 "dhcp4_parser.cc" break; - case 654: // $@104: %empty -#line 2316 "dhcp4_parser.yy" + case 659: // $@105: %empty +#line 2329 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3749 "dhcp4_parser.cc" +#line 3768 "dhcp4_parser.cc" break; - case 655: // client_class_entry: "{" $@104 client_class_params "}" -#line 2320 "dhcp4_parser.yy" + case 660: // client_class_entry: "{" $@105 client_class_params "}" +#line 2333 "dhcp4_parser.yy" { // The name client class parameter is required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3759 "dhcp4_parser.cc" +#line 3778 "dhcp4_parser.cc" break; - case 660: // not_empty_client_class_params: not_empty_client_class_params "," -#line 2332 "dhcp4_parser.yy" + case 665: // not_empty_client_class_params: not_empty_client_class_params "," +#line 2345 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3767 "dhcp4_parser.cc" +#line 3786 "dhcp4_parser.cc" break; - case 677: // $@105: %empty -#line 2356 "dhcp4_parser.yy" + case 682: // $@106: %empty +#line 2369 "dhcp4_parser.yy" { ctx.unique("test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3776 "dhcp4_parser.cc" +#line 3795 "dhcp4_parser.cc" break; - case 678: // client_class_test: "test" $@105 ":" "constant string" -#line 2359 "dhcp4_parser.yy" + case 683: // client_class_test: "test" $@106 ":" "constant string" +#line 2372 "dhcp4_parser.yy" { ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("test", test); ctx.leave(); } -#line 3786 "dhcp4_parser.cc" +#line 3805 "dhcp4_parser.cc" break; - case 679: // $@106: %empty -#line 2365 "dhcp4_parser.yy" + case 684: // $@107: %empty +#line 2378 "dhcp4_parser.yy" { ctx.unique("template-test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3795 "dhcp4_parser.cc" +#line 3814 "dhcp4_parser.cc" break; - case 680: // client_class_template_test: "template-test" $@106 ":" "constant string" -#line 2368 "dhcp4_parser.yy" + case 685: // client_class_template_test: "template-test" $@107 ":" "constant string" +#line 2381 "dhcp4_parser.yy" { ElementPtr template_test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("template-test", template_test); ctx.leave(); } -#line 3805 "dhcp4_parser.cc" +#line 3824 "dhcp4_parser.cc" break; - case 681: // only_if_required: "only-if-required" ":" "boolean" -#line 2374 "dhcp4_parser.yy" + case 686: // only_if_required: "only-if-required" ":" "boolean" +#line 2387 "dhcp4_parser.yy" { ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-if-required", b); } -#line 3815 "dhcp4_parser.cc" +#line 3834 "dhcp4_parser.cc" break; - case 682: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" -#line 2382 "dhcp4_parser.yy" + case 687: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" +#line 2395 "dhcp4_parser.yy" { ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location)); ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4o6-port", time); } -#line 3825 "dhcp4_parser.cc" +#line 3844 "dhcp4_parser.cc" break; - case 683: // $@107: %empty -#line 2390 "dhcp4_parser.yy" + case 688: // $@108: %empty +#line 2403 "dhcp4_parser.yy" { ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3833,66 +3852,66 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 3837 "dhcp4_parser.cc" +#line 3856 "dhcp4_parser.cc" break; - case 684: // control_socket: "control-socket" $@107 ":" "{" control_socket_params "}" -#line 2396 "dhcp4_parser.yy" + case 689: // control_socket: "control-socket" $@108 ":" "{" control_socket_params "}" +#line 2409 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3846 "dhcp4_parser.cc" +#line 3865 "dhcp4_parser.cc" break; - case 687: // control_socket_params: control_socket_params "," -#line 2403 "dhcp4_parser.yy" + case 692: // control_socket_params: control_socket_params "," +#line 2416 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3854 "dhcp4_parser.cc" +#line 3873 "dhcp4_parser.cc" break; - case 693: // $@108: %empty -#line 2415 "dhcp4_parser.yy" + case 698: // $@109: %empty +#line 2428 "dhcp4_parser.yy" { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3863 "dhcp4_parser.cc" +#line 3882 "dhcp4_parser.cc" break; - case 694: // control_socket_type: "socket-type" $@108 ":" "constant string" -#line 2418 "dhcp4_parser.yy" + case 699: // control_socket_type: "socket-type" $@109 ":" "constant string" +#line 2431 "dhcp4_parser.yy" { ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-type", stype); ctx.leave(); } -#line 3873 "dhcp4_parser.cc" +#line 3892 "dhcp4_parser.cc" break; - case 695: // $@109: %empty -#line 2424 "dhcp4_parser.yy" + case 700: // $@110: %empty +#line 2437 "dhcp4_parser.yy" { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3882 "dhcp4_parser.cc" +#line 3901 "dhcp4_parser.cc" break; - case 696: // control_socket_name: "socket-name" $@109 ":" "constant string" -#line 2427 "dhcp4_parser.yy" + case 701: // control_socket_name: "socket-name" $@110 ":" "constant string" +#line 2440 "dhcp4_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-name", name); ctx.leave(); } -#line 3892 "dhcp4_parser.cc" +#line 3911 "dhcp4_parser.cc" break; - case 697: // $@110: %empty -#line 2436 "dhcp4_parser.yy" + case 702: // $@111: %empty +#line 2449 "dhcp4_parser.yy" { ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location)); ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3900,87 +3919,87 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(qc); ctx.enter(ctx.DHCP_QUEUE_CONTROL); } -#line 3904 "dhcp4_parser.cc" +#line 3923 "dhcp4_parser.cc" break; - case 698: // dhcp_queue_control: "dhcp-queue-control" $@110 ":" "{" queue_control_params "}" -#line 2442 "dhcp4_parser.yy" + case 703: // dhcp_queue_control: "dhcp-queue-control" $@111 ":" "{" queue_control_params "}" +#line 2455 "dhcp4_parser.yy" { // The enable queue parameter is required. ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 3915 "dhcp4_parser.cc" +#line 3934 "dhcp4_parser.cc" break; - case 701: // queue_control_params: queue_control_params "," -#line 2451 "dhcp4_parser.yy" + case 706: // queue_control_params: queue_control_params "," +#line 2464 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3923 "dhcp4_parser.cc" +#line 3942 "dhcp4_parser.cc" break; - case 708: // enable_queue: "enable-queue" ":" "boolean" -#line 2464 "dhcp4_parser.yy" + case 713: // enable_queue: "enable-queue" ":" "boolean" +#line 2477 "dhcp4_parser.yy" { ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-queue", b); } -#line 3933 "dhcp4_parser.cc" +#line 3952 "dhcp4_parser.cc" break; - case 709: // $@111: %empty -#line 2470 "dhcp4_parser.yy" + case 714: // $@112: %empty +#line 2483 "dhcp4_parser.yy" { ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3942 "dhcp4_parser.cc" +#line 3961 "dhcp4_parser.cc" break; - case 710: // queue_type: "queue-type" $@111 ":" "constant string" -#line 2473 "dhcp4_parser.yy" + case 715: // queue_type: "queue-type" $@112 ":" "constant string" +#line 2486 "dhcp4_parser.yy" { ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("queue-type", qt); ctx.leave(); } -#line 3952 "dhcp4_parser.cc" +#line 3971 "dhcp4_parser.cc" break; - case 711: // capacity: "capacity" ":" "integer" -#line 2479 "dhcp4_parser.yy" + case 716: // capacity: "capacity" ":" "integer" +#line 2492 "dhcp4_parser.yy" { ctx.unique("capacity", ctx.loc2pos(yystack_[2].location)); ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("capacity", c); } -#line 3962 "dhcp4_parser.cc" +#line 3981 "dhcp4_parser.cc" break; - case 712: // $@112: %empty -#line 2485 "dhcp4_parser.yy" + case 717: // $@113: %empty +#line 2498 "dhcp4_parser.yy" { ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3971 "dhcp4_parser.cc" +#line 3990 "dhcp4_parser.cc" break; - case 713: // arbitrary_map_entry: "constant string" $@112 ":" value -#line 2488 "dhcp4_parser.yy" + case 718: // arbitrary_map_entry: "constant string" $@113 ":" value +#line 2501 "dhcp4_parser.yy" { ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 3980 "dhcp4_parser.cc" +#line 3999 "dhcp4_parser.cc" break; - case 714: // $@113: %empty -#line 2495 "dhcp4_parser.yy" + case 719: // $@114: %empty +#line 2508 "dhcp4_parser.yy" { ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3988,291 +4007,291 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP_DDNS); } -#line 3992 "dhcp4_parser.cc" +#line 4011 "dhcp4_parser.cc" break; - case 715: // dhcp_ddns: "dhcp-ddns" $@113 ":" "{" dhcp_ddns_params "}" -#line 2501 "dhcp4_parser.yy" + case 720: // dhcp_ddns: "dhcp-ddns" $@114 ":" "{" dhcp_ddns_params "}" +#line 2514 "dhcp4_parser.yy" { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 4003 "dhcp4_parser.cc" +#line 4022 "dhcp4_parser.cc" break; - case 716: // $@114: %empty -#line 2508 "dhcp4_parser.yy" + case 721: // $@115: %empty +#line 2521 "dhcp4_parser.yy" { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4013 "dhcp4_parser.cc" +#line 4032 "dhcp4_parser.cc" break; - case 717: // sub_dhcp_ddns: "{" $@114 dhcp_ddns_params "}" -#line 2512 "dhcp4_parser.yy" + case 722: // sub_dhcp_ddns: "{" $@115 dhcp_ddns_params "}" +#line 2525 "dhcp4_parser.yy" { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 4023 "dhcp4_parser.cc" +#line 4042 "dhcp4_parser.cc" break; - case 720: // dhcp_ddns_params: dhcp_ddns_params "," -#line 2520 "dhcp4_parser.yy" + case 725: // dhcp_ddns_params: dhcp_ddns_params "," +#line 2533 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4031 "dhcp4_parser.cc" +#line 4050 "dhcp4_parser.cc" break; - case 739: // enable_updates: "enable-updates" ":" "boolean" -#line 2545 "dhcp4_parser.yy" + case 744: // enable_updates: "enable-updates" ":" "boolean" +#line 2558 "dhcp4_parser.yy" { ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); } -#line 4041 "dhcp4_parser.cc" +#line 4060 "dhcp4_parser.cc" break; - case 740: // $@115: %empty -#line 2551 "dhcp4_parser.yy" + case 745: // $@116: %empty +#line 2564 "dhcp4_parser.yy" { ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4050 "dhcp4_parser.cc" +#line 4069 "dhcp4_parser.cc" break; - case 741: // server_ip: "server-ip" $@115 ":" "constant string" -#line 2554 "dhcp4_parser.yy" + case 746: // server_ip: "server-ip" $@116 ":" "constant string" +#line 2567 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-ip", s); ctx.leave(); } -#line 4060 "dhcp4_parser.cc" +#line 4079 "dhcp4_parser.cc" break; - case 742: // server_port: "server-port" ":" "integer" -#line 2560 "dhcp4_parser.yy" + case 747: // server_port: "server-port" ":" "integer" +#line 2573 "dhcp4_parser.yy" { ctx.unique("server-port", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); } -#line 4070 "dhcp4_parser.cc" +#line 4089 "dhcp4_parser.cc" break; - case 743: // $@116: %empty -#line 2566 "dhcp4_parser.yy" + case 748: // $@117: %empty +#line 2579 "dhcp4_parser.yy" { ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4079 "dhcp4_parser.cc" +#line 4098 "dhcp4_parser.cc" break; - case 744: // sender_ip: "sender-ip" $@116 ":" "constant string" -#line 2569 "dhcp4_parser.yy" + case 749: // sender_ip: "sender-ip" $@117 ":" "constant string" +#line 2582 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-ip", s); ctx.leave(); } -#line 4089 "dhcp4_parser.cc" +#line 4108 "dhcp4_parser.cc" break; - case 745: // sender_port: "sender-port" ":" "integer" -#line 2575 "dhcp4_parser.yy" + case 750: // sender_port: "sender-port" ":" "integer" +#line 2588 "dhcp4_parser.yy" { ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); } -#line 4099 "dhcp4_parser.cc" +#line 4118 "dhcp4_parser.cc" break; - case 746: // max_queue_size: "max-queue-size" ":" "integer" -#line 2581 "dhcp4_parser.yy" + case 751: // max_queue_size: "max-queue-size" ":" "integer" +#line 2594 "dhcp4_parser.yy" { ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-queue-size", i); } -#line 4109 "dhcp4_parser.cc" +#line 4128 "dhcp4_parser.cc" break; - case 747: // $@117: %empty -#line 2587 "dhcp4_parser.yy" + case 752: // $@118: %empty +#line 2600 "dhcp4_parser.yy" { ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_PROTOCOL); } -#line 4118 "dhcp4_parser.cc" +#line 4137 "dhcp4_parser.cc" break; - case 748: // ncr_protocol: "ncr-protocol" $@117 ":" ncr_protocol_value -#line 2590 "dhcp4_parser.yy" + case 753: // ncr_protocol: "ncr-protocol" $@118 ":" ncr_protocol_value +#line 2603 "dhcp4_parser.yy" { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4127 "dhcp4_parser.cc" +#line 4146 "dhcp4_parser.cc" break; - case 749: // ncr_protocol_value: "udp" -#line 2596 "dhcp4_parser.yy" + case 754: // ncr_protocol_value: "udp" +#line 2609 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 4133 "dhcp4_parser.cc" +#line 4152 "dhcp4_parser.cc" break; - case 750: // ncr_protocol_value: "tcp" -#line 2597 "dhcp4_parser.yy" + case 755: // ncr_protocol_value: "tcp" +#line 2610 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 4139 "dhcp4_parser.cc" +#line 4158 "dhcp4_parser.cc" break; - case 751: // $@118: %empty -#line 2600 "dhcp4_parser.yy" + case 756: // $@119: %empty +#line 2613 "dhcp4_parser.yy" { ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_FORMAT); } -#line 4148 "dhcp4_parser.cc" +#line 4167 "dhcp4_parser.cc" break; - case 752: // ncr_format: "ncr-format" $@118 ":" "JSON" -#line 2603 "dhcp4_parser.yy" + case 757: // ncr_format: "ncr-format" $@119 ":" "JSON" +#line 2616 "dhcp4_parser.yy" { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 4158 "dhcp4_parser.cc" +#line 4177 "dhcp4_parser.cc" break; - case 753: // $@119: %empty -#line 2610 "dhcp4_parser.yy" + case 758: // $@120: %empty +#line 2623 "dhcp4_parser.yy" { ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4167 "dhcp4_parser.cc" +#line 4186 "dhcp4_parser.cc" break; - case 754: // dep_qualifying_suffix: "qualifying-suffix" $@119 ":" "constant string" -#line 2613 "dhcp4_parser.yy" + case 759: // dep_qualifying_suffix: "qualifying-suffix" $@120 ":" "constant string" +#line 2626 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("qualifying-suffix", s); ctx.leave(); } -#line 4177 "dhcp4_parser.cc" +#line 4196 "dhcp4_parser.cc" break; - case 755: // dep_override_no_update: "override-no-update" ":" "boolean" -#line 2620 "dhcp4_parser.yy" + case 760: // dep_override_no_update: "override-no-update" ":" "boolean" +#line 2633 "dhcp4_parser.yy" { ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 4187 "dhcp4_parser.cc" +#line 4206 "dhcp4_parser.cc" break; - case 756: // dep_override_client_update: "override-client-update" ":" "boolean" -#line 2627 "dhcp4_parser.yy" + case 761: // dep_override_client_update: "override-client-update" ":" "boolean" +#line 2640 "dhcp4_parser.yy" { ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 4197 "dhcp4_parser.cc" +#line 4216 "dhcp4_parser.cc" break; - case 757: // $@120: %empty -#line 2634 "dhcp4_parser.yy" + case 762: // $@121: %empty +#line 2647 "dhcp4_parser.yy" { ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 4206 "dhcp4_parser.cc" +#line 4225 "dhcp4_parser.cc" break; - case 758: // dep_replace_client_name: "replace-client-name" $@120 ":" ddns_replace_client_name_value -#line 2637 "dhcp4_parser.yy" + case 763: // dep_replace_client_name: "replace-client-name" $@121 ":" ddns_replace_client_name_value +#line 2650 "dhcp4_parser.yy" { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4215 "dhcp4_parser.cc" +#line 4234 "dhcp4_parser.cc" break; - case 759: // $@121: %empty -#line 2643 "dhcp4_parser.yy" + case 764: // $@122: %empty +#line 2656 "dhcp4_parser.yy" { ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4224 "dhcp4_parser.cc" +#line 4243 "dhcp4_parser.cc" break; - case 760: // dep_generated_prefix: "generated-prefix" $@121 ":" "constant string" -#line 2646 "dhcp4_parser.yy" + case 765: // dep_generated_prefix: "generated-prefix" $@122 ":" "constant string" +#line 2659 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("generated-prefix", s); ctx.leave(); } -#line 4234 "dhcp4_parser.cc" +#line 4253 "dhcp4_parser.cc" break; - case 761: // $@122: %empty -#line 2653 "dhcp4_parser.yy" + case 766: // $@123: %empty +#line 2666 "dhcp4_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4243 "dhcp4_parser.cc" +#line 4262 "dhcp4_parser.cc" break; - case 762: // dep_hostname_char_set: "hostname-char-set" $@122 ":" "constant string" -#line 2656 "dhcp4_parser.yy" + case 767: // dep_hostname_char_set: "hostname-char-set" $@123 ":" "constant string" +#line 2669 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 4253 "dhcp4_parser.cc" +#line 4272 "dhcp4_parser.cc" break; - case 763: // $@123: %empty -#line 2663 "dhcp4_parser.yy" + case 768: // $@124: %empty +#line 2676 "dhcp4_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4262 "dhcp4_parser.cc" +#line 4281 "dhcp4_parser.cc" break; - case 764: // dep_hostname_char_replacement: "hostname-char-replacement" $@123 ":" "constant string" -#line 2666 "dhcp4_parser.yy" + case 769: // dep_hostname_char_replacement: "hostname-char-replacement" $@124 ":" "constant string" +#line 2679 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 4272 "dhcp4_parser.cc" +#line 4291 "dhcp4_parser.cc" break; - case 765: // $@124: %empty -#line 2675 "dhcp4_parser.yy" + case 770: // $@125: %empty +#line 2688 "dhcp4_parser.yy" { ctx.unique("config-control", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4280,48 +4299,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.CONFIG_CONTROL); } -#line 4284 "dhcp4_parser.cc" +#line 4303 "dhcp4_parser.cc" break; - case 766: // config_control: "config-control" $@124 ":" "{" config_control_params "}" -#line 2681 "dhcp4_parser.yy" + case 771: // config_control: "config-control" $@125 ":" "{" config_control_params "}" +#line 2694 "dhcp4_parser.yy" { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 4294 "dhcp4_parser.cc" +#line 4313 "dhcp4_parser.cc" break; - case 767: // $@125: %empty -#line 2687 "dhcp4_parser.yy" + case 772: // $@126: %empty +#line 2700 "dhcp4_parser.yy" { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4304 "dhcp4_parser.cc" +#line 4323 "dhcp4_parser.cc" break; - case 768: // sub_config_control: "{" $@125 config_control_params "}" -#line 2691 "dhcp4_parser.yy" + case 773: // sub_config_control: "{" $@126 config_control_params "}" +#line 2704 "dhcp4_parser.yy" { // No config_control params are required // parsing completed } -#line 4313 "dhcp4_parser.cc" +#line 4332 "dhcp4_parser.cc" break; - case 771: // config_control_params: config_control_params "," -#line 2699 "dhcp4_parser.yy" + case 776: // config_control_params: config_control_params "," +#line 2712 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4321 "dhcp4_parser.cc" +#line 4340 "dhcp4_parser.cc" break; - case 774: // $@126: %empty -#line 2709 "dhcp4_parser.yy" + case 779: // $@127: %empty +#line 2722 "dhcp4_parser.yy" { ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4329,30 +4348,30 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CONFIG_DATABASE); } -#line 4333 "dhcp4_parser.cc" +#line 4352 "dhcp4_parser.cc" break; - case 775: // config_databases: "config-databases" $@126 ":" "[" database_list "]" -#line 2715 "dhcp4_parser.yy" + case 780: // config_databases: "config-databases" $@127 ":" "[" database_list "]" +#line 2728 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4342 "dhcp4_parser.cc" +#line 4361 "dhcp4_parser.cc" break; - case 776: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" -#line 2720 "dhcp4_parser.yy" + case 781: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" +#line 2733 "dhcp4_parser.yy" { ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-fetch-wait-time", value); } -#line 4352 "dhcp4_parser.cc" +#line 4371 "dhcp4_parser.cc" break; - case 777: // $@127: %empty -#line 2728 "dhcp4_parser.yy" + case 782: // $@128: %empty +#line 2741 "dhcp4_parser.yy" { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4360,83 +4379,83 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 4364 "dhcp4_parser.cc" +#line 4383 "dhcp4_parser.cc" break; - case 778: // loggers: "loggers" $@127 ":" "[" loggers_entries "]" -#line 2734 "dhcp4_parser.yy" + case 783: // loggers: "loggers" $@128 ":" "[" loggers_entries "]" +#line 2747 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4373 "dhcp4_parser.cc" +#line 4392 "dhcp4_parser.cc" break; - case 781: // loggers_entries: loggers_entries "," -#line 2743 "dhcp4_parser.yy" + case 786: // loggers_entries: loggers_entries "," +#line 2756 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4381 "dhcp4_parser.cc" +#line 4400 "dhcp4_parser.cc" break; - case 782: // $@128: %empty -#line 2749 "dhcp4_parser.yy" + case 787: // $@129: %empty +#line 2762 "dhcp4_parser.yy" { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 4391 "dhcp4_parser.cc" +#line 4410 "dhcp4_parser.cc" break; - case 783: // logger_entry: "{" $@128 logger_params "}" -#line 2753 "dhcp4_parser.yy" + case 788: // logger_entry: "{" $@129 logger_params "}" +#line 2766 "dhcp4_parser.yy" { ctx.stack_.pop_back(); } -#line 4399 "dhcp4_parser.cc" +#line 4418 "dhcp4_parser.cc" break; - case 786: // logger_params: logger_params "," -#line 2759 "dhcp4_parser.yy" + case 791: // logger_params: logger_params "," +#line 2772 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4407 "dhcp4_parser.cc" +#line 4426 "dhcp4_parser.cc" break; - case 794: // debuglevel: "debuglevel" ":" "integer" -#line 2773 "dhcp4_parser.yy" + case 799: // debuglevel: "debuglevel" ":" "integer" +#line 2786 "dhcp4_parser.yy" { ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location)); ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 4417 "dhcp4_parser.cc" +#line 4436 "dhcp4_parser.cc" break; - case 795: // $@129: %empty -#line 2779 "dhcp4_parser.yy" + case 800: // $@130: %empty +#line 2792 "dhcp4_parser.yy" { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4426 "dhcp4_parser.cc" +#line 4445 "dhcp4_parser.cc" break; - case 796: // severity: "severity" $@129 ":" "constant string" -#line 2782 "dhcp4_parser.yy" + case 801: // severity: "severity" $@130 ":" "constant string" +#line 2795 "dhcp4_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 4436 "dhcp4_parser.cc" +#line 4455 "dhcp4_parser.cc" break; - case 797: // $@130: %empty -#line 2788 "dhcp4_parser.yy" + case 802: // $@131: %empty +#line 2801 "dhcp4_parser.yy" { ctx.unique("output_options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4444,122 +4463,122 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 4448 "dhcp4_parser.cc" +#line 4467 "dhcp4_parser.cc" break; - case 798: // output_options_list: "output_options" $@130 ":" "[" output_options_list_content "]" -#line 2794 "dhcp4_parser.yy" + case 803: // output_options_list: "output_options" $@131 ":" "[" output_options_list_content "]" +#line 2807 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4457 "dhcp4_parser.cc" +#line 4476 "dhcp4_parser.cc" break; - case 801: // output_options_list_content: output_options_list_content "," -#line 2801 "dhcp4_parser.yy" + case 806: // output_options_list_content: output_options_list_content "," +#line 2814 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4465 "dhcp4_parser.cc" +#line 4484 "dhcp4_parser.cc" break; - case 802: // $@131: %empty -#line 2806 "dhcp4_parser.yy" + case 807: // $@132: %empty +#line 2819 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4475 "dhcp4_parser.cc" +#line 4494 "dhcp4_parser.cc" break; - case 803: // output_entry: "{" $@131 output_params_list "}" -#line 2810 "dhcp4_parser.yy" + case 808: // output_entry: "{" $@132 output_params_list "}" +#line 2823 "dhcp4_parser.yy" { ctx.stack_.pop_back(); } -#line 4483 "dhcp4_parser.cc" +#line 4502 "dhcp4_parser.cc" break; - case 806: // output_params_list: output_params_list "," -#line 2816 "dhcp4_parser.yy" + case 811: // output_params_list: output_params_list "," +#line 2829 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4491 "dhcp4_parser.cc" +#line 4510 "dhcp4_parser.cc" break; - case 812: // $@132: %empty -#line 2828 "dhcp4_parser.yy" + case 817: // $@133: %empty +#line 2841 "dhcp4_parser.yy" { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4500 "dhcp4_parser.cc" +#line 4519 "dhcp4_parser.cc" break; - case 813: // output: "output" $@132 ":" "constant string" -#line 2831 "dhcp4_parser.yy" + case 818: // output: "output" $@133 ":" "constant string" +#line 2844 "dhcp4_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 4510 "dhcp4_parser.cc" +#line 4529 "dhcp4_parser.cc" break; - case 814: // flush: "flush" ":" "boolean" -#line 2837 "dhcp4_parser.yy" + case 819: // flush: "flush" ":" "boolean" +#line 2850 "dhcp4_parser.yy" { ctx.unique("flush", ctx.loc2pos(yystack_[2].location)); ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 4520 "dhcp4_parser.cc" +#line 4539 "dhcp4_parser.cc" break; - case 815: // maxsize: "maxsize" ":" "integer" -#line 2843 "dhcp4_parser.yy" + case 820: // maxsize: "maxsize" ":" "integer" +#line 2856 "dhcp4_parser.yy" { ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location)); ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 4530 "dhcp4_parser.cc" +#line 4549 "dhcp4_parser.cc" break; - case 816: // maxver: "maxver" ":" "integer" -#line 2849 "dhcp4_parser.yy" + case 821: // maxver: "maxver" ":" "integer" +#line 2862 "dhcp4_parser.yy" { ctx.unique("maxver", ctx.loc2pos(yystack_[2].location)); ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 4540 "dhcp4_parser.cc" +#line 4559 "dhcp4_parser.cc" break; - case 817: // $@133: %empty -#line 2855 "dhcp4_parser.yy" + case 822: // $@134: %empty +#line 2868 "dhcp4_parser.yy" { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4549 "dhcp4_parser.cc" +#line 4568 "dhcp4_parser.cc" break; - case 818: // pattern: "pattern" $@133 ":" "constant string" -#line 2858 "dhcp4_parser.yy" + case 823: // pattern: "pattern" $@134 ":" "constant string" +#line 2871 "dhcp4_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pattern", sev); ctx.leave(); } -#line 4559 "dhcp4_parser.cc" +#line 4578 "dhcp4_parser.cc" break; - case 819: // $@134: %empty -#line 2864 "dhcp4_parser.yy" + case 824: // $@135: %empty +#line 2877 "dhcp4_parser.yy" { ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4567,48 +4586,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.COMPATIBILITY); } -#line 4571 "dhcp4_parser.cc" +#line 4590 "dhcp4_parser.cc" break; - case 820: // compatibility: "compatibility" $@134 ":" "{" compatibility_params "}" -#line 2870 "dhcp4_parser.yy" + case 825: // compatibility: "compatibility" $@135 ":" "{" compatibility_params "}" +#line 2883 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4580 "dhcp4_parser.cc" +#line 4599 "dhcp4_parser.cc" break; - case 823: // compatibility_params: compatibility_params "," -#line 2877 "dhcp4_parser.yy" + case 828: // compatibility_params: compatibility_params "," +#line 2890 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4588 "dhcp4_parser.cc" +#line 4607 "dhcp4_parser.cc" break; - case 827: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" -#line 2887 "dhcp4_parser.yy" + case 832: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" +#line 2900 "dhcp4_parser.yy" { ctx.unique("lenient-option-parsing", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lenient-option-parsing", b); } -#line 4598 "dhcp4_parser.cc" +#line 4617 "dhcp4_parser.cc" break; - case 828: // ignore-rai-link-selection: "ignore-rai-link-selection" ":" "boolean" -#line 2893 "dhcp4_parser.yy" + case 833: // ignore-rai-link-selection: "ignore-rai-link-selection" ":" "boolean" +#line 2906 "dhcp4_parser.yy" { ctx.unique("ignore-rai-link-selection", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ignore-rai-link-selection", b); } -#line 4608 "dhcp4_parser.cc" +#line 4627 "dhcp4_parser.cc" break; -#line 4612 "dhcp4_parser.cc" +#line 4631 "dhcp4_parser.cc" default: break; @@ -4846,16 +4865,16 @@ namespace isc { namespace dhcp { // Actual number of expected tokens int yycount = 0; - const int yyn = yypact_[+yyparser_.yystack_[0].state]; + int yyn = yypact_[+yyparser_.yystack_[0].state]; if (!yy_pact_value_is_default_ (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ - const int yyxbegin = yyn < 0 ? -yyn : 0; + int yyxbegin = yyn < 0 ? -yyn : 0; // Stay within bounds of both yycheck and yytname. - const int yychecklim = yylast_ - yyn + 1; - const int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yychecklim = yylast_ - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; for (int yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck_[yyx + yyn] == yyx && yyx != symbol_kind::S_YYerror && !yy_table_value_is_error_ (yytable_[yyx + yyn])) @@ -4876,9 +4895,6 @@ namespace isc { namespace dhcp { - - - int Dhcp4Parser::yy_syntax_error_arguments_ (const context& yyctx, symbol_kind_type yyarg[], int yyargn) const @@ -4960,141 +4976,141 @@ namespace isc { namespace dhcp { } - const short Dhcp4Parser::yypact_ninf_ = -974; + const short Dhcp4Parser::yypact_ninf_ = -980; const signed char Dhcp4Parser::yytable_ninf_ = -1; const short Dhcp4Parser::yypact_[] = { - 218, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, 54, 44, 15, 57, 65, 67, - 74, 78, 86, 88, 103, 113, 134, 136, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, 44, -155, 94, 140, 123, 271, - 76, 278, 80, -6, 175, -97, 636, 32, -974, 177, - 186, 187, 185, 197, -974, 49, -974, -974, -974, -974, - 221, 243, 254, -974, -974, -974, -974, -974, -974, 292, - 296, 327, 340, 351, 361, 367, 369, 386, 404, 425, - -974, 432, 433, 434, 435, 436, -974, -974, -974, 437, - 438, 439, -974, -974, -974, 440, -974, -974, -974, -974, - 445, 447, 448, -974, -974, -974, -974, -974, 449, -974, - -974, -974, -974, -974, -974, 450, 452, 454, -974, -974, - 457, -974, 72, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - 458, 459, 461, 462, -974, 97, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, 464, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - 115, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, 118, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, 267, 283, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, 284, - -974, -974, 468, -974, -974, -974, 471, -974, -974, 354, - 474, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, 475, 476, -974, -974, -974, -974, - 479, 481, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, 125, -974, -974, -974, 484, -974, - -974, 486, -974, 489, 491, -974, -974, 494, 498, -974, - -974, -974, -974, -974, -974, -974, 128, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, 500, 141, -974, -974, -974, -974, - 44, 44, -974, 300, 502, -974, -974, 503, 504, 506, - 307, 309, 310, 507, 510, 518, 520, 521, 522, 321, - 322, 323, 329, 330, 332, 334, 336, 337, 331, 339, - 526, 341, 342, 338, 343, 345, 552, 553, 555, 355, - 363, 366, 560, 562, 565, 370, 573, 577, 578, 580, - 377, 378, 379, 584, 585, 586, 587, 588, 387, 590, - 591, 595, 596, 597, 598, 395, 396, 397, 602, 603, - -974, 140, -974, 604, 605, 607, 405, 426, 406, 430, - 123, -974, 633, 634, 635, 637, 638, 639, 441, 640, - 641, 642, 271, -974, 645, 76, -974, 646, 647, 651, - 652, 654, 655, 656, 657, -974, 278, -974, 659, 660, - 460, 661, 667, 669, 466, -974, -6, 671, 469, 478, - -974, 175, 683, 684, 47, -974, 482, 685, 691, 490, - 693, 492, 495, 696, 698, 496, 497, 699, 702, 703, - 704, 636, -974, 715, 514, 32, -974, -974, -974, 717, - 734, 735, 736, 737, -974, -974, -974, 517, 540, 541, - 740, 741, 744, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, 545, -974, -974, -974, -974, -974, - -58, 548, 550, -974, -974, -974, 752, 753, 754, -974, - 755, 757, 563, 288, -974, -974, -974, 760, 762, 766, - 767, 768, -974, 769, 772, 773, 774, 568, 569, -974, - -974, -974, 777, 776, -974, 779, 228, 286, -974, -974, - -974, -974, -974, 581, 582, 583, 780, 600, 601, -974, - 779, 608, 782, -974, 609, -974, 779, 610, 611, 612, - 613, 614, 615, 616, -974, 617, 620, -974, 621, 622, - 623, -974, -974, 624, -974, -974, -974, 625, 757, -974, - -974, 626, 627, -974, 628, -974, -974, 17, 470, -974, - -974, -58, 629, 630, 631, -974, 785, -974, -974, 44, - 140, 32, 123, 315, -974, -974, -974, 572, 572, 784, - -974, -974, -974, -974, -974, -974, -974, -974, -974, 800, - 801, 802, 803, -974, -974, -974, -974, -974, -974, -974, - -974, 135, 830, 831, 832, 184, -44, 92, 84, 636, - -974, -974, 833, -150, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, 835, -974, -974, -974, -974, - 303, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, 784, - -974, 182, 189, 269, -974, -974, 279, -974, -974, -974, - -974, -974, -974, -974, 839, 840, 841, 842, 843, 844, - 845, -974, 846, -974, -974, -974, -974, -974, 282, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, 290, -974, - 848, 849, -974, -974, 850, 852, -974, -974, 851, 855, - -974, -974, 853, 857, -974, -974, 856, 858, -974, -974, - -974, -974, -974, -974, 149, -974, -974, -974, -974, -974, - -974, -974, 161, -974, -974, 859, 860, -974, -974, 861, - 863, -974, 847, 864, 865, 866, 867, 868, 291, -974, - -974, -974, -974, -974, -974, -974, 869, 870, 871, -974, - 305, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, 306, -974, -974, -974, 872, -974, 873, -974, - -974, -974, 356, -974, -974, -974, -974, -974, 358, -974, - 268, -974, 874, 875, -974, 360, -974, -974, -974, 675, - -974, 876, 878, -974, -974, -974, -974, 877, 880, -974, - -974, -974, 879, 883, 315, -974, 884, 885, 886, 887, - 658, 676, 686, 687, 688, 690, 692, 889, 694, 893, - 895, 897, 898, 572, -974, -974, 572, -974, 784, 271, - -974, 800, -6, -974, 801, 175, -974, 802, 648, -974, - 803, 135, -974, 564, 830, -974, 278, -974, 831, -97, - -974, 832, 697, 700, 701, 705, 707, 708, 184, -974, - 709, 710, 714, -44, -974, 900, 901, 92, -974, 720, - 904, 729, 905, 84, -974, -974, -21, 833, -974, 739, - 746, -150, -974, -974, 936, 907, 76, -974, 835, 951, - -974, -974, 787, 789, -974, 22, 795, 798, 806, -974, - -974, -974, -974, -974, -974, -974, 178, -974, 819, 862, - 881, 882, -974, 380, -974, 384, -974, 949, -974, 952, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, 388, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, 970, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - 969, 981, -974, -974, -974, -974, -974, -974, 997, -974, - 420, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, 888, 890, -974, -974, 891, -974, 44, - -974, -974, 985, -974, -974, -974, -974, -974, 422, -974, - -974, -974, -974, -974, -974, -974, -974, -974, 892, 423, - -974, 779, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, 648, -974, 1049, 1051, 854, -974, 564, - -974, -974, -974, -974, -974, -974, 1053, 896, 1054, -21, - -974, -974, -974, -974, -974, 894, 899, -974, -974, 1055, - -974, 902, -974, -974, -974, 1056, -974, -974, 324, -974, - -29, 1056, -974, -974, 1057, 1060, 1061, -974, 424, -974, - -974, -974, -974, -974, -974, -974, 1062, 903, 906, 908, - 1064, -29, -974, 910, -974, -974, -974, 911, -974, -974, - -974 + 219, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 22, 44, 52, 65, 79, 94, + 103, 113, 127, 146, 154, 182, 184, 286, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 44, -156, 59, 140, 133, 682, + 221, 233, 57, 88, -10, -98, 435, 62, -980, 91, + 144, 163, 218, 243, -980, 24, -980, -980, -980, -980, + 293, 304, 319, -980, -980, -980, -980, -980, -980, 337, + 345, 353, 372, 373, 374, 375, 377, 380, 381, 386, + -980, 387, 388, 401, 402, 421, -980, -980, -980, 422, + 425, 426, -980, -980, -980, 427, -980, -980, -980, -980, + -980, 428, 429, 430, -980, -980, -980, -980, -980, 431, + -980, -980, -980, -980, -980, -980, 432, 434, 436, -980, + -980, 438, -980, 49, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, 439, 440, 441, 442, -980, 84, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 443, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, 90, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, 97, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, 445, 298, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, 447, -980, -980, 444, -980, -980, -980, 446, + -980, -980, 448, 454, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, 456, 458, -980, + -980, -980, -980, 450, 462, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, 115, -980, -980, + -980, 463, -980, -980, 465, -980, 466, 472, -980, -980, + 475, 476, -980, -980, -980, -980, -980, -980, -980, 125, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, 477, 128, -980, + -980, -980, -980, 44, 44, -980, 245, 479, -980, -980, + 480, 483, 484, 257, 282, 285, 488, 493, 495, 498, + 502, 504, 302, 303, 305, 307, 308, 309, 311, 314, + 318, 321, 322, 507, 323, 324, 312, 332, 335, 528, + 529, 530, 336, 338, 341, 544, 545, 547, 348, 548, + 556, 557, 561, 563, 359, 361, 364, 571, 574, 576, + 577, 579, 378, 582, 586, 587, 601, 602, 603, 399, + 400, 404, 606, 610, -980, 140, -980, 611, 612, 613, + 409, 410, 413, 414, 133, -980, 618, 619, 620, 621, + 622, 623, 423, 624, 625, 627, 682, -980, 628, 221, + -980, 629, 630, 631, 632, 633, 635, 638, 639, -980, + 233, -980, 640, 641, 449, 642, 643, 644, 451, -980, + 88, 645, 452, 455, -980, -10, 646, 647, 98, -980, + 457, 648, 650, 460, 651, 461, 464, 653, 654, 468, + 470, 655, 659, 661, 665, 435, -980, 666, 467, 62, + -980, -980, -980, 668, 673, 674, 676, 677, -980, -980, + -980, 481, 482, 485, 678, 679, 684, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, 486, -980, + -980, -980, -980, -980, -59, 487, 489, -980, -980, -980, + 685, 689, 691, -980, 496, 696, 698, 497, 256, -980, + -980, -980, 701, 702, 703, 704, 710, -980, 711, 712, + 713, 714, 505, 516, -980, -980, -980, 705, 716, -980, + 719, 297, 313, -980, -980, -980, -980, -980, 519, 520, + 521, 723, 523, 524, -980, 719, 525, 725, -980, 527, + -980, 719, 531, 532, 549, 550, 560, 564, 566, -980, + 567, 568, -980, 569, 570, 572, -980, -980, 573, -980, + -980, -980, 575, 698, -980, -980, 588, 589, -980, 593, + -980, -980, 17, 565, -980, -980, -59, 594, 596, 597, + -980, 729, -980, -980, 44, 140, 62, 133, 325, -980, + -980, -980, 351, 351, 728, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 746, 747, 770, -980, 773, -980, + -980, -980, -980, -980, -980, -980, -980, 179, 776, 778, + 785, 130, -44, -60, 158, 435, -980, -980, 786, -151, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, 797, -980, -980, -980, -980, 242, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, 728, -980, 135, 156, 157, + -980, -980, 160, -980, -980, -980, -980, -980, -980, -980, + 669, 803, 804, 805, 806, 807, 808, -980, 810, -980, + -980, -980, -980, -980, 180, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 187, -980, 809, 813, -980, -980, + 811, 815, -980, -980, 814, 816, -980, -980, 817, 818, + -980, -980, 819, 821, -980, -980, -980, -980, -980, -980, + 138, -980, -980, -980, -980, -980, -980, -980, 176, -980, + -980, 820, 824, -980, -980, 822, 826, -980, 827, 828, + 829, 830, 831, 832, 222, -980, -980, -980, -980, -980, + -980, -980, 833, 834, 835, -980, 224, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, 239, -980, + -980, -980, 836, -980, 837, -980, -980, -980, 240, -980, + -980, -980, -980, -980, 272, -980, 273, -980, 838, 839, + -980, 275, -980, -980, -980, 616, -980, 840, 841, -980, + -980, -980, -980, 842, 843, -980, -980, -980, 844, 847, + 325, -980, 848, 849, 850, 851, 649, 636, 656, 652, + 657, 658, 660, 853, 662, 856, 858, 862, 864, 351, + -980, -980, 351, -980, 728, 682, -980, 746, 88, -980, + 747, -10, -980, 770, 1254, -980, 773, 179, -980, 266, + 776, -980, 233, -980, 778, -98, -980, 785, 663, 664, + 667, 670, 671, 672, 130, -980, 675, 680, 683, -44, + -980, 868, 869, -60, -980, 686, 871, 687, 872, 158, + -980, -980, 198, 786, -980, 688, 690, -151, -980, -980, + 874, 878, 221, -980, 797, 879, -980, -980, 692, 694, + -980, 23, 695, 697, 699, -980, -980, -980, -980, -980, + -980, -980, 206, -980, 700, 706, 707, 708, -980, 279, + -980, 283, -980, 877, -980, 881, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, 287, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 882, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, 883, 889, -980, + -980, -980, -980, -980, -980, 885, -980, 328, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + 709, 717, -980, -980, 720, -980, 44, -980, -980, 892, + -980, -980, -980, -980, -980, 339, -980, -980, -980, -980, + -980, -980, -980, -980, -980, 735, 340, -980, 719, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + 1254, -980, 898, 900, 739, -980, 266, -980, -980, -980, + -980, -980, -980, 903, 715, 904, 198, -980, -980, -980, + -980, -980, 754, 755, -980, -980, 825, -980, 757, -980, + -980, -980, 875, -980, -980, 329, -980, 11, 875, -980, + -980, 905, 906, 907, -980, 342, -980, -980, -980, -980, + -980, -980, -980, 912, 744, 727, 759, 913, 11, -980, + 774, -980, -980, -980, 777, -980, -980, -980 }; const short @@ -5104,713 +5120,752 @@ namespace isc { namespace dhcp { 20, 22, 24, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 44, 36, 32, 31, 28, 29, 30, 35, 3, 33, 34, - 59, 5, 65, 7, 192, 9, 364, 11, 572, 13, - 599, 15, 492, 17, 501, 19, 540, 21, 326, 23, - 716, 25, 767, 27, 46, 39, 0, 0, 0, 0, - 0, 601, 0, 503, 542, 0, 0, 0, 48, 0, - 47, 0, 0, 40, 61, 0, 63, 765, 177, 210, - 0, 0, 0, 621, 623, 625, 208, 221, 223, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 145, 0, 0, 0, 0, 0, 154, 161, 163, 0, - 0, 0, 355, 490, 531, 0, 438, 586, 588, 431, - 0, 0, 0, 288, 649, 590, 317, 338, 0, 303, - 683, 697, 714, 167, 169, 0, 0, 0, 777, 819, - 0, 133, 0, 67, 70, 71, 72, 73, 74, 108, - 109, 110, 111, 112, 75, 103, 132, 92, 93, 94, - 116, 117, 118, 119, 120, 121, 122, 123, 114, 115, - 124, 125, 126, 128, 129, 130, 78, 79, 100, 80, - 81, 82, 127, 86, 87, 76, 105, 106, 107, 104, - 77, 84, 85, 98, 99, 101, 95, 96, 97, 83, - 88, 89, 90, 91, 102, 113, 131, 194, 196, 200, - 0, 0, 0, 0, 191, 0, 179, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 416, 418, 420, 563, - 414, 422, 0, 426, 424, 645, 413, 369, 370, 371, - 372, 373, 397, 398, 399, 400, 401, 387, 388, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 0, 366, 376, 392, 393, 394, 377, 379, 380, 383, - 384, 385, 382, 378, 374, 375, 395, 396, 381, 389, - 390, 391, 386, 584, 583, 579, 580, 578, 0, 574, - 577, 581, 582, 643, 631, 633, 637, 635, 641, 639, - 627, 620, 614, 618, 619, 0, 602, 603, 615, 616, - 617, 611, 606, 612, 608, 609, 610, 613, 607, 0, - 521, 266, 0, 525, 523, 528, 0, 517, 518, 0, - 504, 505, 508, 520, 509, 510, 511, 527, 512, 513, - 514, 515, 516, 557, 0, 0, 555, 556, 559, 560, - 0, 543, 544, 547, 548, 549, 550, 551, 552, 553, - 554, 334, 336, 331, 0, 328, 332, 333, 0, 753, - 740, 0, 743, 0, 0, 747, 751, 0, 0, 757, - 759, 761, 763, 738, 736, 737, 0, 718, 721, 722, - 723, 724, 725, 726, 727, 728, 733, 729, 730, 731, - 732, 734, 735, 774, 0, 0, 769, 772, 773, 45, - 50, 0, 37, 43, 0, 64, 60, 0, 0, 0, + 59, 5, 65, 7, 195, 9, 367, 11, 577, 13, + 604, 15, 497, 17, 506, 19, 545, 21, 329, 23, + 721, 25, 772, 27, 46, 39, 0, 0, 0, 0, + 0, 606, 0, 508, 547, 0, 0, 0, 48, 0, + 47, 0, 0, 40, 61, 0, 63, 770, 180, 213, + 0, 0, 0, 626, 628, 630, 211, 224, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 146, 0, 0, 0, 0, 0, 157, 164, 166, 0, + 0, 0, 358, 495, 536, 0, 149, 442, 591, 593, + 435, 0, 0, 0, 291, 654, 595, 320, 341, 0, + 306, 688, 702, 719, 170, 172, 0, 0, 0, 782, + 824, 0, 134, 0, 67, 70, 71, 72, 73, 74, + 108, 109, 110, 111, 112, 75, 103, 132, 133, 92, + 93, 94, 116, 117, 118, 119, 120, 121, 122, 123, + 114, 115, 124, 125, 126, 128, 129, 130, 78, 79, + 100, 80, 81, 82, 127, 86, 87, 76, 105, 106, + 107, 104, 77, 84, 85, 98, 99, 101, 95, 96, + 97, 83, 88, 89, 90, 91, 102, 113, 131, 197, + 199, 203, 0, 0, 0, 0, 194, 0, 182, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 420, 422, + 424, 568, 418, 426, 0, 430, 428, 650, 417, 372, + 373, 374, 375, 376, 400, 401, 402, 403, 404, 415, + 390, 391, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 416, 0, 369, 379, 395, 396, 397, 380, + 382, 383, 386, 387, 388, 385, 381, 377, 378, 398, + 399, 384, 392, 393, 394, 389, 589, 588, 584, 585, + 583, 0, 579, 582, 586, 587, 648, 636, 638, 642, + 640, 646, 644, 632, 625, 619, 623, 624, 0, 607, + 608, 620, 621, 622, 616, 611, 617, 613, 614, 615, + 618, 612, 0, 526, 269, 0, 530, 528, 533, 0, + 522, 523, 0, 509, 510, 513, 525, 514, 515, 516, + 532, 517, 518, 519, 520, 521, 562, 0, 0, 560, + 561, 564, 565, 0, 548, 549, 552, 553, 554, 555, + 556, 557, 558, 559, 337, 339, 334, 0, 331, 335, + 336, 0, 758, 745, 0, 748, 0, 0, 752, 756, + 0, 0, 762, 764, 766, 768, 743, 741, 742, 0, + 723, 726, 727, 728, 729, 730, 731, 732, 733, 738, + 734, 735, 736, 737, 739, 740, 779, 0, 0, 774, + 777, 778, 45, 50, 0, 37, 43, 0, 64, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 58, 69, 66, 0, 0, 0, 0, 0, 0, 0, - 181, 193, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 368, 365, 0, 576, 573, 0, 0, 0, - 0, 0, 0, 0, 0, 600, 605, 493, 0, 0, - 0, 0, 0, 0, 0, 502, 507, 0, 0, 0, - 541, 546, 0, 0, 330, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 720, 717, 0, 0, 771, 768, 49, 41, 0, - 0, 0, 0, 0, 148, 149, 150, 0, 0, 0, - 0, 0, 0, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 0, 172, 173, 151, 152, 153, - 0, 0, 0, 165, 166, 171, 0, 0, 0, 147, - 0, 0, 0, 0, 428, 429, 430, 0, 0, 0, - 0, 0, 682, 0, 0, 0, 0, 0, 0, 174, - 175, 176, 0, 0, 68, 0, 0, 0, 204, 205, - 206, 207, 180, 0, 0, 0, 0, 0, 0, 437, - 0, 0, 0, 367, 0, 575, 0, 0, 0, 0, - 0, 0, 0, 0, 604, 0, 0, 519, 0, 0, - 0, 530, 506, 0, 561, 562, 545, 0, 0, 329, - 739, 0, 0, 742, 0, 745, 746, 0, 0, 755, - 756, 0, 0, 0, 0, 719, 0, 776, 770, 0, - 0, 0, 0, 0, 622, 624, 626, 0, 0, 225, - 146, 156, 157, 158, 159, 160, 155, 162, 164, 357, - 494, 533, 440, 38, 587, 589, 433, 434, 435, 436, - 432, 0, 0, 592, 319, 0, 0, 0, 0, 0, - 168, 170, 0, 0, 51, 195, 198, 199, 197, 202, - 203, 201, 417, 419, 421, 565, 415, 423, 427, 425, - 0, 585, 644, 632, 634, 638, 636, 642, 640, 628, - 522, 267, 526, 524, 529, 558, 335, 337, 754, 741, - 744, 749, 750, 748, 752, 758, 760, 762, 764, 225, - 42, 0, 0, 0, 217, 219, 0, 212, 215, 216, - 254, 259, 261, 263, 0, 0, 0, 0, 0, 0, - 0, 274, 0, 280, 282, 284, 286, 253, 0, 232, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 0, 230, - 0, 226, 227, 362, 0, 358, 359, 499, 0, 495, - 496, 538, 0, 534, 535, 445, 0, 441, 442, 298, - 299, 300, 301, 302, 0, 290, 293, 294, 295, 296, - 297, 654, 0, 651, 597, 0, 593, 594, 324, 0, - 320, 321, 0, 0, 0, 0, 0, 0, 0, 340, - 343, 344, 345, 346, 347, 348, 0, 0, 0, 313, - 0, 305, 308, 309, 310, 311, 312, 693, 695, 692, - 690, 691, 0, 685, 688, 689, 0, 709, 0, 712, - 705, 706, 0, 699, 702, 703, 704, 707, 0, 782, - 0, 779, 0, 0, 826, 0, 821, 824, 825, 53, - 570, 0, 566, 567, 629, 647, 648, 0, 0, 62, - 766, 178, 0, 0, 214, 211, 0, 0, 0, 0, + 0, 0, 0, 0, 58, 69, 66, 0, 0, 0, + 0, 0, 0, 0, 184, 196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 371, 368, 0, 581, + 578, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 610, 498, 0, 0, 0, 0, 0, 0, 0, 507, + 512, 0, 0, 0, 546, 551, 0, 0, 333, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 234, 209, 222, 0, 224, 229, 0, - 356, 361, 503, 491, 498, 542, 532, 537, 0, 439, - 444, 292, 289, 656, 653, 650, 601, 591, 596, 0, - 318, 323, 0, 0, 0, 0, 0, 0, 342, 339, - 0, 0, 0, 307, 304, 0, 0, 687, 684, 0, - 0, 0, 0, 701, 698, 715, 0, 781, 778, 0, - 0, 823, 820, 55, 0, 54, 0, 564, 569, 0, - 646, 775, 0, 0, 213, 0, 0, 0, 0, 265, - 268, 269, 270, 271, 272, 273, 0, 279, 0, 0, - 0, 0, 233, 0, 228, 0, 360, 0, 497, 0, - 536, 489, 468, 469, 470, 453, 454, 473, 474, 475, - 476, 477, 456, 457, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 450, 451, 452, 466, 467, - 463, 464, 465, 462, 0, 447, 455, 471, 472, 458, - 459, 460, 461, 443, 291, 677, 679, 0, 672, 673, - 674, 675, 676, 665, 666, 670, 671, 667, 668, 669, - 0, 657, 658, 661, 662, 663, 664, 652, 0, 595, - 0, 322, 349, 350, 351, 352, 353, 354, 341, 314, - 315, 316, 306, 0, 0, 686, 708, 0, 711, 0, - 700, 797, 0, 795, 793, 787, 791, 792, 0, 784, - 789, 790, 788, 780, 827, 828, 822, 52, 57, 0, - 568, 0, 218, 220, 256, 257, 258, 255, 260, 262, - 264, 276, 277, 278, 275, 281, 283, 285, 287, 231, - 363, 500, 539, 449, 446, 0, 0, 0, 655, 660, - 598, 325, 694, 696, 710, 713, 0, 0, 0, 786, - 783, 56, 571, 630, 448, 0, 0, 681, 659, 0, - 794, 0, 785, 678, 680, 0, 796, 802, 0, 799, - 0, 801, 798, 812, 0, 0, 0, 817, 0, 804, - 807, 808, 809, 810, 811, 800, 0, 0, 0, 0, - 0, 806, 803, 0, 814, 815, 816, 0, 805, 813, - 818 + 0, 0, 0, 0, 0, 725, 722, 0, 0, 776, + 773, 49, 41, 0, 0, 0, 0, 0, 151, 152, + 153, 0, 0, 0, 0, 0, 0, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 0, 175, + 176, 154, 155, 156, 0, 0, 0, 168, 169, 174, + 0, 0, 0, 148, 0, 0, 0, 0, 0, 432, + 433, 434, 0, 0, 0, 0, 0, 687, 0, 0, + 0, 0, 0, 0, 177, 178, 179, 0, 0, 68, + 0, 0, 0, 207, 208, 209, 210, 183, 0, 0, + 0, 0, 0, 0, 441, 0, 0, 0, 370, 0, + 580, 0, 0, 0, 0, 0, 0, 0, 0, 609, + 0, 0, 524, 0, 0, 0, 535, 511, 0, 566, + 567, 550, 0, 0, 332, 744, 0, 0, 747, 0, + 750, 751, 0, 0, 760, 761, 0, 0, 0, 0, + 724, 0, 781, 775, 0, 0, 0, 0, 0, 627, + 629, 631, 0, 0, 228, 147, 159, 160, 161, 162, + 163, 158, 165, 167, 360, 499, 538, 150, 444, 38, + 592, 594, 437, 438, 439, 440, 436, 0, 0, 597, + 322, 0, 0, 0, 0, 0, 171, 173, 0, 0, + 51, 198, 201, 202, 200, 205, 206, 204, 421, 423, + 425, 570, 419, 427, 431, 429, 0, 590, 649, 637, + 639, 643, 641, 647, 645, 633, 527, 270, 531, 529, + 534, 563, 338, 340, 759, 746, 749, 754, 755, 753, + 757, 763, 765, 767, 769, 228, 42, 0, 0, 0, + 220, 222, 0, 215, 218, 219, 257, 262, 264, 266, + 0, 0, 0, 0, 0, 0, 0, 277, 0, 283, + 285, 287, 289, 256, 0, 235, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 0, 233, 0, 229, 230, 365, + 0, 361, 362, 504, 0, 500, 501, 543, 0, 539, + 540, 449, 0, 445, 446, 301, 302, 303, 304, 305, + 0, 293, 296, 297, 298, 299, 300, 659, 0, 656, + 602, 0, 598, 599, 327, 0, 323, 324, 0, 0, + 0, 0, 0, 0, 0, 343, 346, 347, 348, 349, + 350, 351, 0, 0, 0, 316, 0, 308, 311, 312, + 313, 314, 315, 698, 700, 697, 695, 696, 0, 690, + 693, 694, 0, 714, 0, 717, 710, 711, 0, 704, + 707, 708, 709, 712, 0, 787, 0, 784, 0, 0, + 831, 0, 826, 829, 830, 53, 575, 0, 571, 572, + 634, 652, 653, 0, 0, 62, 771, 181, 0, 0, + 217, 214, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 212, 225, 0, 227, 232, 0, 359, 364, 508, 496, + 503, 547, 537, 542, 0, 443, 448, 295, 292, 661, + 658, 655, 606, 596, 601, 0, 321, 326, 0, 0, + 0, 0, 0, 0, 345, 342, 0, 0, 0, 310, + 307, 0, 0, 692, 689, 0, 0, 0, 0, 706, + 703, 720, 0, 786, 783, 0, 0, 828, 825, 55, + 0, 54, 0, 569, 574, 0, 651, 780, 0, 0, + 216, 0, 0, 0, 0, 268, 271, 272, 273, 274, + 275, 276, 0, 282, 0, 0, 0, 0, 236, 0, + 231, 0, 363, 0, 502, 0, 541, 494, 472, 473, + 474, 457, 458, 477, 478, 479, 480, 481, 492, 460, + 461, 482, 483, 484, 485, 486, 487, 488, 489, 490, + 491, 493, 454, 455, 456, 470, 471, 467, 468, 469, + 466, 0, 451, 459, 475, 476, 462, 463, 464, 465, + 447, 294, 682, 684, 0, 677, 678, 679, 680, 681, + 670, 671, 675, 676, 672, 673, 674, 0, 662, 663, + 666, 667, 668, 669, 657, 0, 600, 0, 325, 352, + 353, 354, 355, 356, 357, 344, 317, 318, 319, 309, + 0, 0, 691, 713, 0, 716, 0, 705, 802, 0, + 800, 798, 792, 796, 797, 0, 789, 794, 795, 793, + 785, 832, 833, 827, 52, 57, 0, 573, 0, 221, + 223, 259, 260, 261, 258, 263, 265, 267, 279, 280, + 281, 278, 284, 286, 288, 290, 234, 366, 505, 544, + 453, 450, 0, 0, 0, 660, 665, 603, 328, 699, + 701, 715, 718, 0, 0, 0, 791, 788, 56, 576, + 635, 452, 0, 0, 686, 664, 0, 799, 0, 790, + 683, 685, 0, 801, 807, 0, 804, 0, 806, 803, + 817, 0, 0, 0, 822, 0, 809, 812, 813, 814, + 815, 816, 805, 0, 0, 0, 0, 0, 811, 808, + 0, 819, 820, 821, 0, 810, 818, 823 }; const short Dhcp4Parser::yypgoto_[] = { - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -51, -974, -584, -974, 391, - -974, -974, -974, -974, -974, -974, -620, -974, -974, -974, - -67, -974, -974, -974, -974, -974, -974, -974, 371, 579, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -51, -980, -562, -980, 164, + -980, -980, -980, -980, -980, -980, -625, -980, -980, -980, + -67, -980, -980, -980, -980, -980, -980, -980, 214, 500, -26, 9, 19, -52, -30, -27, 7, 20, 27, 30, - -974, -974, -974, -974, -974, 37, 38, 40, 42, 43, - 48, -974, 381, 50, -974, 53, -974, 55, 56, 58, - -974, 60, -974, 61, -974, -974, -974, -974, -974, -974, - -974, 372, 575, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, 119, -974, -974, -974, -974, -974, -974, -974, - -974, 287, -974, 99, -974, -696, 105, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -63, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - 89, -974, -974, -974, -974, -974, -974, -974, -974, 69, - -974, -974, -974, -974, -974, -974, -974, 82, -974, -974, - -974, 85, 535, -974, -974, -974, -974, -974, -974, -974, - 73, -974, -974, -974, -974, -974, -974, -973, -974, -974, - -974, 104, -974, -974, -974, 109, 589, -974, -974, -974, - -974, -974, -974, -974, -974, -969, -974, -65, -974, 64, - -974, 63, 66, 68, 71, -974, -974, -974, -974, -974, - -974, -974, 100, -974, -974, -114, -54, -974, -974, -974, - -974, -974, 107, -974, -974, -974, 110, -974, 558, -974, - -41, -974, -974, -974, -974, -974, -40, -974, -974, -974, - -974, -974, -23, -974, -974, -974, 111, -974, -974, -974, - 120, -974, 576, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, 75, -974, -974, -974, 70, 594, - -974, -974, -45, -974, -3, -974, -48, -974, -974, -974, - 112, -974, -974, -974, 122, -974, 593, -55, -974, -13, - -974, 8, -974, 362, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -968, -974, -974, -974, -974, -974, 126, -974, -974, - -974, -106, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, 106, -974, -974, -974, -974, -974, -974, -974, - 98, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, 385, 566, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, -974, -974, -974, -974, -974, -974, - -974, -974, 427, 561, -974, -974, -974, -974, -974, -974, - 102, -974, -974, -94, -974, -974, -974, -974, -974, -974, - -111, -974, -974, -130, -974, -974, -974, -974, -974, -974, - -974, -974, -974, -974, 101, -974, -974 + -980, -980, -980, -980, 37, -980, -980, 38, 40, 42, + 43, 48, 50, -980, 294, 53, -980, 55, -980, 56, + 58, 60, -980, 61, -980, 63, -980, -980, -980, -980, + -980, -980, -980, 213, 494, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 46, -980, -980, -980, -980, -980, + -980, -980, -980, 205, -980, 25, -980, -701, 32, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -63, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, 33, -980, -980, -980, -980, -980, -980, -980, + -980, -2, -980, -980, -980, -980, -980, -980, -980, 54, + -980, -980, -980, 64, 511, -980, -980, -980, -980, -980, + -980, -980, 67, -980, -980, -980, -980, -980, -980, -979, + -980, -980, -980, 77, -980, -980, -980, 81, 552, -980, + -980, -980, -980, -980, -980, -980, -980, -975, -980, -65, + -980, 69, -980, 66, 68, 71, 73, -980, -980, -980, + -980, -980, -980, -980, 74, -980, -980, -139, -54, -980, + -980, -980, -980, -980, 82, -980, -980, -980, 85, -980, + 534, -980, -41, -980, -980, -980, -980, -980, -40, -980, + -980, -980, -980, -980, -23, -980, -980, -980, 83, -980, + -980, -980, 86, -980, 533, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, 31, -980, -980, -980, + 41, 578, -980, -980, -45, -980, -3, -980, -48, -980, + -980, -980, 75, -980, -980, -980, 78, -980, 554, -55, + -980, -13, -980, 8, -980, 316, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -974, -980, -980, -980, -980, -980, 87, + -980, -980, -980, -131, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 70, -980, -980, -980, -980, -980, + -980, -980, 72, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, 343, 526, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, -980, -980, -980, -980, + -980, -980, -980, -980, 383, 517, -980, -980, -980, -980, + -980, -980, 76, -980, -980, -136, -980, -980, -980, -980, + -980, -980, -154, -980, -980, -176, -980, -980, -980, -980, + -980, -980, -980, -980, -980, -980, 80, -980, -980 }; const short Dhcp4Parser::yydefgoto_[] = { 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 36, 37, 38, 65, 724, - 82, 83, 39, 64, 79, 80, 745, 939, 1034, 1035, - 817, 41, 66, 85, 424, 86, 43, 67, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 450, 166, 167, 168, 169, 170, 171, 172, - 173, 456, 716, 174, 457, 175, 458, 176, 177, 178, - 483, 179, 484, 180, 181, 182, 183, 184, 185, 186, - 428, 225, 226, 45, 68, 227, 493, 228, 494, 748, - 229, 495, 751, 230, 231, 232, 233, 187, 436, 188, - 429, 796, 797, 798, 952, 799, 953, 189, 437, 190, - 438, 840, 841, 842, 976, 818, 819, 820, 956, 1187, - 821, 957, 822, 958, 823, 959, 824, 825, 529, 826, - 827, 828, 829, 830, 831, 832, 967, 1194, 833, 834, - 969, 835, 970, 836, 971, 837, 972, 191, 473, 864, - 865, 866, 867, 868, 869, 870, 192, 479, 900, 901, - 902, 903, 904, 193, 476, 879, 880, 881, 999, 59, - 75, 374, 375, 376, 542, 377, 543, 194, 477, 888, - 889, 890, 891, 892, 893, 894, 895, 195, 462, 844, - 845, 846, 979, 47, 69, 270, 271, 272, 506, 273, - 502, 274, 503, 275, 504, 276, 507, 277, 510, 278, - 509, 196, 197, 198, 199, 469, 730, 283, 200, 466, - 856, 857, 858, 988, 1104, 1105, 201, 463, 53, 72, - 848, 849, 850, 982, 55, 73, 339, 340, 341, 342, - 343, 344, 345, 528, 346, 532, 347, 531, 348, 349, - 533, 350, 202, 464, 852, 853, 854, 985, 57, 74, - 360, 361, 362, 363, 364, 537, 365, 366, 367, 368, - 285, 505, 941, 942, 943, 1036, 49, 70, 298, 299, - 300, 514, 203, 467, 204, 468, 205, 475, 875, 876, - 877, 996, 51, 71, 315, 316, 317, 206, 433, 207, - 434, 208, 435, 321, 524, 946, 1039, 322, 518, 323, - 519, 324, 521, 325, 520, 326, 523, 327, 522, 328, - 517, 292, 511, 947, 209, 474, 872, 873, 993, 1130, - 1131, 1132, 1133, 1134, 1205, 1135, 1206, 1136, 210, 211, - 480, 912, 913, 914, 1015, 915, 1016, 212, 481, 922, - 923, 924, 925, 1020, 926, 927, 1022, 213, 482, 61, - 76, 396, 397, 398, 399, 548, 400, 401, 550, 402, - 403, 404, 553, 783, 405, 554, 406, 547, 407, 408, - 409, 557, 410, 558, 411, 559, 412, 560, 214, 427, - 63, 77, 415, 416, 417, 563, 418, 215, 488, 930, - 931, 1026, 1168, 1169, 1170, 1171, 1218, 1172, 1216, 1238, - 1239, 1240, 1248, 1249, 1250, 1256, 1251, 1252, 1253, 1254, - 1260, 216, 489, 935, 936, 937, 938 + 23, 24, 25, 26, 27, 36, 37, 38, 65, 730, + 82, 83, 39, 64, 79, 80, 751, 945, 1040, 1041, + 823, 41, 66, 85, 427, 86, 43, 67, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 453, 167, 168, 469, 169, 170, 171, 172, + 173, 174, 175, 459, 721, 176, 460, 177, 461, 178, + 179, 180, 487, 181, 488, 182, 183, 184, 185, 186, + 187, 188, 431, 227, 228, 45, 68, 229, 497, 230, + 498, 754, 231, 499, 757, 232, 233, 234, 235, 189, + 439, 190, 432, 802, 803, 804, 958, 805, 959, 191, + 440, 192, 441, 846, 847, 848, 982, 824, 825, 826, + 962, 1194, 827, 963, 828, 964, 829, 965, 830, 831, + 533, 832, 833, 834, 835, 836, 837, 838, 973, 1201, + 839, 840, 975, 841, 976, 842, 977, 843, 978, 193, + 477, 870, 871, 872, 873, 874, 875, 876, 194, 483, + 906, 907, 908, 909, 910, 195, 480, 885, 886, 887, + 1005, 59, 75, 377, 378, 379, 546, 380, 547, 196, + 481, 894, 895, 896, 897, 898, 899, 900, 901, 197, + 465, 850, 851, 852, 985, 47, 69, 273, 274, 275, + 510, 276, 506, 277, 507, 278, 508, 279, 511, 280, + 514, 281, 513, 198, 199, 200, 201, 473, 736, 286, + 202, 470, 862, 863, 864, 994, 1111, 1112, 203, 466, + 53, 72, 854, 855, 856, 988, 55, 73, 342, 343, + 344, 345, 346, 347, 348, 532, 349, 536, 350, 535, + 351, 352, 537, 353, 204, 467, 858, 859, 860, 991, + 57, 74, 363, 364, 365, 366, 367, 541, 368, 369, + 370, 371, 288, 509, 947, 948, 949, 1042, 49, 70, + 301, 302, 303, 518, 205, 471, 206, 472, 207, 479, + 881, 882, 883, 1002, 51, 71, 318, 319, 320, 208, + 436, 209, 437, 210, 438, 324, 528, 952, 1045, 325, + 522, 326, 523, 327, 525, 328, 524, 329, 527, 330, + 526, 331, 521, 295, 515, 953, 211, 478, 878, 879, + 999, 1137, 1138, 1139, 1140, 1141, 1212, 1142, 1213, 1143, + 212, 213, 484, 918, 919, 920, 1021, 921, 1022, 214, + 485, 928, 929, 930, 931, 1026, 932, 933, 1028, 215, + 486, 61, 76, 399, 400, 401, 402, 552, 403, 404, + 554, 405, 406, 407, 557, 789, 408, 558, 409, 551, + 410, 411, 412, 561, 413, 562, 414, 563, 415, 564, + 216, 430, 63, 77, 418, 419, 420, 567, 421, 217, + 492, 936, 937, 1032, 1175, 1176, 1177, 1178, 1225, 1179, + 1223, 1245, 1246, 1247, 1255, 1256, 1257, 1263, 1258, 1259, + 1260, 1261, 1267, 218, 493, 941, 942, 943, 944 }; const short Dhcp4Parser::yytable_[] = { - 151, 224, 246, 294, 311, 295, 337, 356, 373, 393, - 338, 357, 838, 78, 289, 1096, 318, 250, 329, 1097, - 1112, 288, 40, 234, 286, 301, 313, 723, 351, 369, - 758, 394, 330, 358, 359, 781, 762, 371, 372, 251, - 932, 933, 252, 247, 413, 414, 284, 297, 312, 29, - 81, 30, 425, 31, 28, 150, 290, 426, 319, 127, - 128, 1184, 1185, 1186, 42, 235, 287, 302, 314, 331, - 352, 370, 44, 395, 46, 491, 253, 291, 248, 320, - 492, 48, 127, 128, 331, 50, 332, 333, 249, 254, - 334, 335, 336, 52, 723, 54, 255, 127, 128, 256, - 500, 896, 897, 898, 84, 501, 257, 258, 150, 259, - 56, 260, 261, 711, 712, 713, 714, 262, 512, 263, - 58, 515, 264, 513, 265, 266, 516, 267, 544, 268, - 269, 561, 279, 545, 296, 280, 562, 281, 217, 218, - 282, 60, 219, 62, 565, 220, 221, 222, 223, 566, - 715, 87, 991, 1243, 88, 992, 1244, 1245, 1246, 1247, - 1161, 150, 1162, 1163, 994, 124, 89, 995, 123, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 293, 127, - 128, 371, 372, 419, 150, 491, 782, 127, 128, 420, - 949, 421, 565, 422, 243, 127, 128, 950, 244, 150, - 423, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 152, 226, 248, 297, 314, 298, 340, 359, 376, 396, + 341, 360, 844, 78, 292, 1103, 321, 252, 332, 1104, + 1119, 291, 28, 236, 289, 304, 316, 428, 354, 372, + 764, 397, 429, 361, 362, 787, 768, 374, 375, 253, + 938, 939, 254, 249, 128, 129, 287, 300, 315, 29, + 81, 30, 495, 31, 729, 151, 293, 496, 322, 40, + 128, 129, 1191, 1192, 1193, 237, 290, 305, 317, 84, + 355, 373, 42, 398, 416, 417, 255, 294, 250, 323, + 334, 356, 335, 336, 357, 358, 44, 504, 251, 256, + 913, 914, 505, 516, 128, 129, 257, 422, 517, 258, + 519, 46, 902, 903, 904, 520, 259, 260, 151, 261, + 48, 262, 263, 716, 717, 718, 719, 264, 548, 265, + 50, 729, 266, 549, 267, 268, 333, 269, 565, 270, + 271, 569, 272, 566, 52, 282, 570, 283, 495, 299, + 284, 997, 285, 955, 998, 123, 151, 423, 219, 220, + 720, 87, 221, 54, 88, 222, 223, 224, 225, 569, + 504, 56, 151, 960, 956, 957, 89, 424, 961, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 334, 1000, + 335, 336, 1001, 979, 337, 338, 339, 788, 980, 58, + 979, 60, 128, 129, 1250, 981, 151, 1251, 1252, 1253, + 1254, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 430, 127, 128, 123, 124, - 1096, 1191, 1192, 1193, 1097, 1112, 916, 917, 918, 125, - 126, 907, 908, 127, 128, 746, 747, 431, 129, 32, - 33, 34, 35, 130, 131, 132, 133, 134, 432, 859, - 860, 861, 862, 135, 863, 331, 353, 332, 333, 354, - 355, 1027, 500, 136, 1028, 525, 137, 951, 127, 128, - 1063, 150, 954, 138, 139, 973, 526, 955, 140, 919, - 974, 141, 527, 973, 1008, 142, 439, 150, 975, 1009, - 440, 91, 92, 93, 94, 95, 749, 750, 1013, 1017, - 93, 94, 95, 1014, 1018, 143, 144, 145, 146, 147, - 148, 882, 883, 884, 885, 886, 887, 1241, 150, 149, - 1242, 441, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 794, 795, 442, 150, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 443, 236, 237, 238, 1023, - 124, 561, 535, 1031, 1024, 444, 1025, 124, 1032, 567, - 568, 445, 239, 446, 127, 128, 240, 241, 242, 129, - 150, 127, 128, 973, 130, 131, 132, 512, 1199, 243, - 447, 1203, 1200, 244, 135, 303, 1204, 726, 727, 728, - 729, 245, 304, 305, 306, 307, 308, 309, 448, 310, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 544, 151, 1219, 515, 1261, 1211, 449, - 1220, 1222, 1262, 224, 310, 944, 451, 452, 453, 454, - 455, 459, 460, 461, 465, 246, 143, 144, 294, 470, - 295, 471, 472, 478, 485, 234, 486, 289, 487, 311, - 250, 490, 496, 497, 288, 498, 499, 286, 508, 337, - 301, 318, 530, 338, 356, 534, 150, 536, 357, 538, - 539, 313, 251, 150, 541, 252, 247, 540, 546, 284, - 549, 351, 297, 551, 393, 552, 369, 235, 555, 290, - 358, 359, 556, 312, 564, 569, 570, 571, 572, 287, - 573, 577, 302, 319, 578, 574, 394, 575, 576, 253, - 291, 248, 579, 314, 580, 581, 582, 583, 584, 585, - 594, 249, 254, 352, 320, 586, 587, 592, 370, 255, - 588, 589, 256, 590, 591, 593, 597, 595, 596, 257, - 258, 598, 259, 599, 260, 261, 600, 601, 395, 602, - 262, 1223, 263, 603, 606, 264, 607, 265, 266, 608, - 267, 604, 268, 269, 605, 279, 609, 610, 280, 296, - 281, 611, 612, 282, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 93, 94, 95, 625, - 626, 627, 628, 629, 630, 631, 632, 633, 635, 636, - 800, 637, 640, 638, 801, 802, 803, 804, 805, 806, - 807, 808, 809, 810, 811, 99, 100, 101, 812, 813, - 814, 815, 816, 151, 639, 224, 641, 643, 644, 645, - 784, 646, 647, 648, 650, 651, 652, 649, 790, 654, - 656, 657, 123, 124, 331, 658, 659, 234, 660, 661, - 662, 663, 331, 665, 666, 668, 667, 127, 128, 899, - 909, 669, 393, 670, 671, 673, 934, 674, 91, 92, - 93, 94, 95, 1115, 1116, 1117, 675, 677, 678, 681, - 680, 905, 910, 920, 394, 682, 683, 684, 685, 235, - 687, 686, 688, 691, 689, 690, 692, 693, 694, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 696, - 697, 699, 704, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 906, 911, 921, 395, 124, 331, 127, - 128, 700, 701, 702, 703, 705, 706, 707, 708, 709, - 710, 127, 128, 717, 241, 718, 129, 719, 720, 721, - 722, 130, 131, 132, 30, 731, 243, 732, 725, 150, - 244, 733, 734, 740, 741, 735, 736, 150, 245, 737, - 738, 739, 742, 743, 744, 755, 752, 753, 754, 760, - 789, 839, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 756, 757, 843, 847, 851, - 855, 391, 392, 759, 761, 763, 764, 765, 766, 767, - 768, 769, 770, 143, 144, 771, 772, 773, 774, 775, - 776, 778, 779, 780, 786, 787, 788, 871, 874, 878, - 929, 150, 940, 960, 961, 962, 963, 964, 965, 966, - 968, 1002, 978, 150, 977, 981, 980, 983, 984, 986, - 987, 990, 989, 998, 1049, 997, 1001, 1000, 1003, 1004, - 1005, 1006, 1007, 1010, 1011, 1012, 1019, 1021, 1029, 1030, - 1033, 1038, 1037, 1042, 1050, 1040, 1041, 1043, 1045, 1046, - 1047, 1048, 1051, 1056, 1053, 1052, 1054, 1058, 1055, 1059, - 1057, 1060, 1061, 1142, 1153, 1154, 1143, 1144, 1157, 1159, - 1178, 1145, 246, 1146, 1147, 337, 1150, 1149, 356, 338, - 1151, 1071, 357, 1098, 289, 1095, 1118, 250, 1156, 311, - 1122, 288, 373, 1109, 286, 1158, 1075, 351, 1127, 1123, - 369, 318, 1177, 1107, 358, 359, 899, 1174, 1125, 251, - 909, 313, 252, 247, 1175, 1181, 284, 1201, 1076, 1164, - 1202, 1077, 1072, 1165, 934, 1106, 290, 1119, 905, 294, - 1124, 295, 910, 312, 1207, 1110, 287, 1208, 920, 352, - 1128, 1166, 370, 319, 1209, 1108, 253, 291, 248, 1217, - 1126, 301, 1182, 314, 1183, 1078, 1111, 1073, 249, 254, - 1188, 1129, 1120, 1189, 320, 1210, 255, 1074, 1079, 256, - 906, 1190, 1121, 297, 911, 1080, 257, 258, 1081, 259, - 921, 260, 261, 1167, 1195, 1082, 1083, 262, 1084, 263, - 1085, 1086, 264, 302, 265, 266, 1087, 267, 1088, 268, - 269, 1089, 279, 1090, 1091, 280, 1092, 281, 1093, 1094, - 282, 1100, 1099, 1225, 1101, 1226, 1102, 1229, 1231, 1103, - 1235, 1257, 1227, 1237, 1258, 1259, 1263, 1196, 1267, 777, - 634, 791, 785, 1044, 793, 642, 948, 1064, 1062, 679, - 1114, 1148, 1152, 1141, 1140, 1066, 1197, 1198, 1065, 1224, - 1113, 1068, 1067, 1212, 672, 1213, 1214, 1221, 1070, 1233, - 296, 653, 1230, 1228, 1234, 1069, 1179, 1236, 1215, 655, - 1139, 1264, 1265, 1180, 1266, 1269, 1270, 676, 1138, 664, - 1137, 1160, 945, 1155, 928, 1232, 698, 695, 792, 1173, - 1255, 1268, 1176, 0, 0, 0, 1071, 0, 1098, 0, - 1095, 0, 1118, 0, 0, 0, 1122, 0, 1109, 0, - 0, 1075, 1164, 0, 1127, 1123, 1165, 0, 1107, 0, - 0, 0, 0, 0, 1125, 0, 0, 0, 0, 0, - 0, 0, 0, 1076, 1166, 0, 1077, 1072, 0, 0, - 1106, 0, 0, 1119, 0, 0, 1124, 0, 0, 0, - 1110, 0, 0, 0, 0, 0, 1128, 0, 0, 0, - 1108, 0, 0, 0, 0, 0, 1126, 0, 0, 0, - 1078, 1111, 1073, 0, 0, 0, 1167, 1129, 1120, 0, - 0, 0, 1074, 1079, 0, 0, 0, 0, 1121, 0, - 1080, 0, 0, 1081, 0, 0, 0, 0, 0, 0, - 1082, 1083, 0, 1084, 0, 1085, 1086, 0, 0, 0, - 0, 1087, 0, 1088, 0, 0, 1089, 0, 1090, 1091, - 0, 1092, 0, 1093, 1094, 0, 1100, 1099, 0, 1101, - 0, 1102, 0, 0, 1103 + 118, 119, 120, 121, 122, 1014, 425, 1019, 123, 124, + 1015, 1103, 1020, 374, 375, 1104, 1119, 128, 129, 125, + 126, 127, 1023, 1029, 128, 129, 426, 1024, 1030, 130, + 32, 33, 34, 35, 131, 132, 133, 134, 135, 1198, + 1199, 1200, 128, 129, 136, 93, 94, 95, 888, 889, + 890, 891, 892, 893, 137, 565, 1033, 138, 1037, 1034, + 1031, 1069, 979, 1038, 139, 140, 516, 1206, 334, 141, + 1210, 1207, 142, 62, 151, 1211, 143, 433, 93, 94, + 95, 530, 128, 129, 865, 866, 867, 868, 434, 869, + 124, 922, 923, 924, 752, 753, 144, 145, 146, 147, + 148, 149, 124, 435, 296, 128, 129, 99, 100, 101, + 150, 548, 1248, 755, 756, 1249, 1218, 128, 129, 151, + 245, 442, 1226, 519, 246, 1268, 151, 1227, 1229, 443, + 1269, 306, 800, 801, 123, 124, 334, 444, 307, 308, + 309, 310, 311, 312, 925, 313, 732, 733, 734, 735, + 128, 129, 571, 572, 313, 950, 445, 446, 447, 448, + 1168, 449, 1169, 1170, 450, 451, 1122, 1123, 1124, 806, + 452, 454, 455, 807, 808, 809, 810, 811, 812, 813, + 814, 815, 816, 817, 151, 456, 457, 818, 819, 820, + 821, 822, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 458, 462, 151, 152, 463, + 464, 468, 474, 475, 476, 482, 489, 226, 490, 151, + 491, 334, 494, 500, 501, 502, 503, 512, 534, 248, + 538, 573, 297, 529, 298, 531, 539, 540, 544, 236, + 542, 292, 543, 314, 252, 545, 578, 550, 291, 553, + 555, 289, 151, 340, 304, 321, 556, 341, 359, 559, + 560, 568, 360, 574, 575, 316, 253, 576, 577, 254, + 249, 579, 581, 287, 580, 354, 300, 582, 396, 583, + 372, 237, 584, 293, 361, 362, 585, 315, 586, 587, + 588, 598, 589, 290, 590, 591, 305, 322, 592, 593, + 397, 601, 594, 255, 294, 250, 595, 317, 596, 597, + 599, 600, 604, 605, 606, 251, 256, 355, 323, 128, + 129, 602, 373, 257, 603, 607, 258, 608, 610, 611, + 609, 612, 614, 259, 260, 613, 261, 151, 262, 263, + 615, 616, 398, 1230, 264, 617, 265, 618, 619, 266, + 620, 267, 268, 621, 269, 622, 270, 271, 623, 272, + 624, 625, 282, 626, 283, 627, 628, 284, 299, 285, + 629, 630, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 631, 632, 633, 634, 635, + 637, 394, 395, 636, 638, 640, 641, 642, 643, 644, + 645, 646, 648, 649, 650, 651, 652, 653, 655, 656, + 654, 657, 659, 661, 662, 663, 664, 665, 152, 666, + 226, 151, 667, 668, 670, 671, 673, 674, 675, 678, + 682, 683, 686, 796, 687, 689, 672, 692, 693, 696, + 676, 679, 236, 697, 680, 698, 685, 688, 690, 699, + 701, 691, 704, 966, 702, 905, 915, 694, 396, 695, + 705, 706, 940, 707, 708, 712, 713, 709, 710, 714, + 724, 711, 715, 722, 725, 723, 726, 911, 916, 926, + 397, 728, 727, 731, 237, 30, 737, 738, 739, 740, + 748, 746, 91, 92, 93, 94, 95, 741, 742, 743, + 744, 745, 747, 749, 750, 758, 759, 760, 761, 762, + 763, 765, 766, 767, 795, 845, 790, 769, 770, 912, + 917, 927, 398, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 849, 853, 771, 772, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 773, 238, 239, 240, + 774, 124, 775, 776, 777, 778, 779, 857, 780, 781, + 861, 782, 126, 877, 241, 880, 128, 129, 242, 243, + 244, 130, 884, 935, 784, 785, 131, 132, 133, 786, + 792, 245, 793, 794, 946, 246, 136, 967, 968, 969, + 970, 971, 972, 247, 974, 983, 984, 986, 987, 990, + 989, 993, 1039, 992, 996, 995, 1003, 1004, 1006, 1007, + 1242, 1008, 1009, 1010, 1011, 1012, 1013, 1016, 1017, 1018, + 1025, 1027, 1035, 1036, 1044, 1056, 1043, 783, 1048, 1047, + 1046, 1049, 1051, 1052, 1053, 1054, 1055, 1062, 144, 145, + 1064, 1058, 1065, 1057, 1059, 1060, 1066, 1061, 1067, 1063, + 1149, 1150, 1160, 1161, 1151, 1164, 1166, 1152, 1153, 1154, + 1184, 1185, 1244, 1188, 1156, 1208, 1214, 1157, 151, 1209, + 1158, 1215, 1216, 1217, 1165, 1163, 1224, 1181, 1189, 1182, + 1190, 1195, 1232, 1196, 1233, 1197, 1202, 1236, 1238, 1264, + 1265, 1266, 1203, 1204, 1205, 1219, 1270, 1274, 248, 797, + 799, 340, 1237, 1220, 359, 341, 1221, 1077, 360, 1105, + 292, 1102, 1125, 252, 1272, 314, 1129, 291, 376, 1116, + 289, 1228, 1081, 354, 1134, 1130, 372, 321, 1234, 1114, + 361, 362, 905, 1271, 1132, 253, 915, 316, 254, 249, + 1240, 1241, 287, 1243, 1082, 1171, 1273, 1083, 1078, 1172, + 940, 1113, 293, 1126, 911, 297, 1131, 298, 916, 315, + 1276, 1117, 290, 1277, 926, 355, 1135, 1173, 373, 322, + 791, 1115, 255, 294, 250, 639, 1133, 304, 647, 317, + 954, 1084, 1118, 1079, 251, 256, 1050, 1136, 1127, 1070, + 323, 1068, 257, 1080, 1085, 258, 912, 1159, 1128, 300, + 917, 1086, 259, 260, 1087, 261, 927, 262, 263, 1174, + 1121, 1088, 1089, 264, 1090, 265, 1091, 1092, 266, 305, + 267, 268, 1093, 269, 1094, 270, 271, 1095, 272, 1096, + 1097, 282, 1098, 283, 1099, 1100, 284, 1101, 285, 684, + 1107, 1148, 1108, 1106, 1072, 1109, 1071, 1110, 658, 1147, + 1120, 1231, 1074, 1073, 677, 1187, 1076, 1075, 681, 1146, + 1145, 1155, 951, 1186, 669, 1235, 703, 1144, 934, 798, + 1239, 700, 1275, 1162, 1262, 0, 0, 660, 0, 0, + 0, 1167, 0, 0, 0, 0, 0, 0, 0, 1180, + 0, 299, 0, 0, 0, 1222, 0, 1183, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1077, 0, 1105, 0, 1102, 0, 1125, + 0, 0, 0, 1129, 0, 1116, 0, 0, 1081, 1171, + 0, 1134, 1130, 1172, 0, 1114, 0, 0, 0, 0, + 0, 1132, 0, 0, 0, 0, 0, 0, 0, 0, + 1082, 1173, 0, 1083, 1078, 0, 0, 1113, 0, 0, + 1126, 0, 0, 1131, 0, 0, 0, 1117, 0, 0, + 0, 0, 0, 1135, 0, 0, 0, 1115, 0, 0, + 0, 0, 0, 1133, 0, 0, 0, 1084, 1118, 1079, + 0, 0, 0, 1174, 1136, 1127, 0, 0, 0, 1080, + 1085, 0, 0, 0, 0, 1128, 0, 1086, 0, 0, + 1087, 0, 0, 0, 0, 0, 0, 1088, 1089, 0, + 1090, 0, 1091, 1092, 0, 0, 0, 0, 1093, 0, + 1094, 0, 0, 1095, 0, 1096, 1097, 0, 1098, 0, + 1099, 1100, 0, 1101, 0, 0, 1107, 0, 1108, 1106, + 0, 1109, 0, 1110, 91, 92, 93, 94, 95, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 0, 0, 0, 0, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 0, + 0, 0, 0, 124, 334, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 126, 0, 0, 0, 128, 129, + 0, 243, 0, 130, 0, 0, 0, 0, 131, 132, + 133, 0, 0, 245, 0, 0, 0, 246, 0, 0, + 0, 0, 0, 0, 0, 247, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 144, 145, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 151 }; const short Dhcp4Parser::yycheck_[] = { 67, 68, 69, 70, 71, 70, 73, 74, 75, 76, - 73, 74, 708, 64, 69, 988, 71, 69, 72, 988, - 988, 69, 7, 68, 69, 70, 71, 611, 73, 74, - 650, 76, 38, 74, 74, 18, 656, 134, 135, 69, - 190, 191, 69, 69, 12, 13, 69, 70, 71, 5, - 205, 7, 3, 9, 0, 205, 69, 8, 71, 103, - 104, 39, 40, 41, 7, 68, 69, 70, 71, 90, - 73, 74, 7, 76, 7, 3, 69, 69, 69, 71, - 8, 7, 103, 104, 90, 7, 92, 93, 69, 69, - 96, 97, 98, 7, 678, 7, 69, 103, 104, 69, - 3, 145, 146, 147, 10, 8, 69, 69, 205, 69, - 7, 69, 69, 171, 172, 173, 174, 69, 3, 69, - 7, 3, 69, 8, 69, 69, 8, 69, 3, 69, - 69, 3, 69, 8, 70, 69, 8, 69, 15, 16, - 69, 7, 19, 7, 3, 22, 23, 24, 25, 8, - 208, 11, 3, 182, 14, 6, 185, 186, 187, 188, - 181, 205, 183, 184, 3, 89, 26, 6, 88, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 102, 103, - 104, 134, 135, 6, 205, 3, 169, 103, 104, 3, - 8, 4, 3, 8, 118, 103, 104, 8, 122, 205, - 3, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 73, 74, 713, 64, 69, 994, 71, 69, 72, 994, + 994, 69, 0, 68, 69, 70, 71, 3, 73, 74, + 655, 76, 8, 74, 74, 18, 661, 135, 136, 69, + 191, 192, 69, 69, 104, 105, 69, 70, 71, 5, + 206, 7, 3, 9, 616, 206, 69, 8, 71, 7, + 104, 105, 39, 40, 41, 68, 69, 70, 71, 10, + 73, 74, 7, 76, 12, 13, 69, 69, 69, 71, + 90, 91, 92, 93, 94, 95, 7, 3, 69, 69, + 150, 151, 8, 3, 104, 105, 69, 6, 8, 69, + 3, 7, 146, 147, 148, 8, 69, 69, 206, 69, + 7, 69, 69, 172, 173, 174, 175, 69, 3, 69, + 7, 683, 69, 8, 69, 69, 38, 69, 3, 69, + 69, 3, 69, 8, 7, 69, 8, 69, 3, 70, + 69, 3, 69, 8, 6, 88, 206, 3, 15, 16, + 209, 11, 19, 7, 14, 22, 23, 24, 25, 3, + 3, 7, 206, 3, 8, 8, 26, 4, 8, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 90, 3, + 92, 93, 6, 3, 96, 97, 98, 170, 8, 7, + 3, 7, 104, 105, 183, 8, 206, 186, 187, 188, + 189, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 4, 103, 104, 88, 89, - 1203, 53, 54, 55, 1203, 1203, 152, 153, 154, 99, - 100, 149, 150, 103, 104, 17, 18, 4, 108, 205, - 206, 207, 208, 113, 114, 115, 116, 117, 4, 124, - 125, 126, 127, 123, 129, 90, 91, 92, 93, 94, - 95, 3, 3, 133, 6, 8, 136, 8, 103, 104, - 976, 205, 3, 143, 144, 3, 3, 8, 148, 205, - 8, 151, 8, 3, 3, 155, 4, 205, 8, 8, - 4, 30, 31, 32, 33, 34, 20, 21, 3, 3, - 32, 33, 34, 8, 8, 175, 176, 177, 178, 179, - 180, 137, 138, 139, 140, 141, 142, 3, 205, 189, - 6, 4, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 27, 28, 4, 205, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 4, 85, 86, 87, 3, - 89, 3, 8, 3, 8, 4, 8, 89, 8, 420, - 421, 4, 101, 4, 103, 104, 105, 106, 107, 108, - 205, 103, 104, 3, 113, 114, 115, 3, 8, 118, - 4, 3, 8, 122, 123, 117, 8, 109, 110, 111, - 112, 130, 124, 125, 126, 127, 128, 129, 4, 131, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 3, 491, 3, 3, 3, 8, 4, - 8, 8, 8, 500, 131, 132, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 512, 175, 176, 515, 4, - 515, 4, 4, 4, 4, 500, 4, 512, 4, 526, - 512, 4, 4, 4, 512, 4, 4, 512, 4, 536, - 515, 526, 4, 536, 541, 4, 205, 3, 541, 4, - 4, 526, 512, 205, 3, 512, 512, 8, 4, 512, - 4, 536, 515, 4, 561, 4, 541, 500, 4, 512, - 541, 541, 4, 526, 4, 205, 4, 4, 4, 512, - 4, 4, 515, 526, 4, 208, 561, 208, 208, 512, - 512, 512, 4, 526, 4, 4, 4, 206, 206, 206, - 4, 512, 512, 536, 526, 206, 206, 206, 541, 512, - 208, 207, 512, 207, 207, 206, 208, 206, 206, 512, - 512, 208, 512, 208, 512, 512, 4, 4, 561, 4, - 512, 1181, 512, 208, 4, 512, 4, 512, 512, 4, - 512, 208, 512, 512, 208, 512, 206, 4, 512, 515, - 512, 4, 4, 512, 4, 208, 208, 208, 4, 4, - 4, 4, 4, 206, 4, 4, 32, 33, 34, 4, - 4, 4, 4, 208, 208, 208, 4, 4, 4, 4, - 38, 4, 206, 208, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 61, 62, 63, 56, 57, - 58, 59, 60, 700, 208, 702, 206, 4, 4, 4, - 170, 4, 4, 4, 4, 4, 4, 206, 699, 4, - 4, 4, 88, 89, 90, 4, 4, 702, 4, 4, - 4, 4, 90, 4, 4, 4, 206, 103, 104, 736, - 737, 4, 739, 4, 208, 4, 743, 208, 30, 31, - 32, 33, 34, 119, 120, 121, 208, 4, 4, 4, - 208, 736, 737, 738, 739, 4, 206, 4, 206, 702, - 4, 206, 4, 4, 208, 208, 4, 4, 4, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 4, - 206, 4, 205, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 736, 737, 738, 739, 89, 90, 103, - 104, 7, 7, 7, 7, 205, 205, 7, 7, 5, - 205, 103, 104, 205, 106, 205, 108, 5, 5, 5, - 5, 113, 114, 115, 7, 5, 118, 5, 205, 205, - 122, 5, 5, 205, 205, 7, 7, 205, 130, 7, - 7, 7, 5, 7, 5, 5, 205, 205, 205, 7, - 5, 7, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 205, 205, 7, 7, 7, - 7, 175, 176, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 175, 176, 205, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 7, 7, 7, - 7, 205, 7, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 3, 205, 6, 3, 6, 6, 3, 6, - 3, 3, 6, 3, 206, 6, 3, 6, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 205, 3, 6, 4, 208, 8, 6, 4, 4, 4, - 4, 4, 206, 4, 206, 208, 206, 4, 206, 4, - 206, 4, 4, 206, 4, 4, 206, 206, 4, 4, - 3, 206, 979, 206, 206, 982, 206, 208, 985, 982, - 206, 988, 985, 988, 979, 988, 993, 979, 208, 996, - 993, 979, 999, 988, 979, 206, 988, 982, 993, 993, - 985, 996, 6, 988, 985, 985, 1013, 208, 993, 979, - 1017, 996, 979, 979, 208, 4, 979, 8, 988, 1026, - 8, 988, 988, 1026, 1031, 988, 979, 993, 1013, 1036, - 993, 1036, 1017, 996, 4, 988, 979, 8, 1023, 982, - 993, 1026, 985, 996, 3, 988, 979, 979, 979, 4, - 993, 1036, 205, 996, 205, 988, 988, 988, 979, 979, - 205, 993, 993, 205, 996, 8, 979, 988, 988, 979, - 1013, 205, 993, 1036, 1017, 988, 979, 979, 988, 979, - 1023, 979, 979, 1026, 205, 988, 988, 979, 988, 979, - 988, 988, 979, 1036, 979, 979, 988, 979, 988, 979, - 979, 988, 979, 988, 988, 979, 988, 979, 988, 988, - 979, 988, 988, 4, 988, 4, 988, 4, 4, 988, - 5, 4, 208, 7, 4, 4, 4, 205, 4, 678, - 491, 700, 691, 954, 702, 500, 789, 978, 973, 544, - 991, 1008, 1013, 1001, 999, 981, 205, 205, 979, 1203, - 990, 984, 982, 205, 536, 205, 205, 205, 987, 205, - 1036, 512, 206, 1209, 205, 985, 1036, 205, 1159, 515, - 998, 208, 206, 1038, 206, 205, 205, 541, 996, 526, - 994, 1023, 760, 1017, 739, 1219, 565, 561, 701, 1027, - 1241, 1261, 1031, -1, -1, -1, 1203, -1, 1203, -1, - 1203, -1, 1209, -1, -1, -1, 1209, -1, 1203, -1, - -1, 1203, 1219, -1, 1209, 1209, 1219, -1, 1203, -1, - -1, -1, -1, -1, 1209, -1, -1, -1, -1, -1, - -1, -1, -1, 1203, 1219, -1, 1203, 1203, -1, -1, - 1203, -1, -1, 1209, -1, -1, 1209, -1, -1, -1, - 1203, -1, -1, -1, -1, -1, 1209, -1, -1, -1, - 1203, -1, -1, -1, -1, -1, 1209, -1, -1, -1, - 1203, 1203, 1203, -1, -1, -1, 1219, 1209, 1209, -1, - -1, -1, 1203, 1203, -1, -1, -1, -1, 1209, -1, - 1203, -1, -1, 1203, -1, -1, -1, -1, -1, -1, - 1203, 1203, -1, 1203, -1, 1203, 1203, -1, -1, -1, - -1, 1203, -1, 1203, -1, -1, 1203, -1, 1203, 1203, - -1, 1203, -1, 1203, 1203, -1, 1203, 1203, -1, 1203, - -1, 1203, -1, -1, 1203 + 80, 81, 82, 83, 84, 3, 8, 3, 88, 89, + 8, 1210, 8, 135, 136, 1210, 1210, 104, 105, 99, + 100, 101, 3, 3, 104, 105, 3, 8, 8, 109, + 206, 207, 208, 209, 114, 115, 116, 117, 118, 53, + 54, 55, 104, 105, 124, 32, 33, 34, 138, 139, + 140, 141, 142, 143, 134, 3, 3, 137, 3, 6, + 8, 982, 3, 8, 144, 145, 3, 8, 90, 149, + 3, 8, 152, 7, 206, 8, 156, 4, 32, 33, + 34, 3, 104, 105, 125, 126, 127, 128, 4, 130, + 89, 153, 154, 155, 17, 18, 176, 177, 178, 179, + 180, 181, 89, 4, 103, 104, 105, 61, 62, 63, + 190, 3, 3, 20, 21, 6, 8, 104, 105, 206, + 119, 4, 3, 3, 123, 3, 206, 8, 8, 4, + 8, 118, 27, 28, 88, 89, 90, 4, 125, 126, + 127, 128, 129, 130, 206, 132, 110, 111, 112, 113, + 104, 105, 423, 424, 132, 133, 4, 4, 4, 4, + 182, 4, 184, 185, 4, 4, 120, 121, 122, 38, + 4, 4, 4, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 206, 4, 4, 56, 57, 58, + 59, 60, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 4, 4, 206, 495, 4, + 4, 4, 4, 4, 4, 4, 4, 504, 4, 206, + 4, 90, 4, 4, 4, 4, 4, 4, 4, 516, + 4, 206, 519, 8, 519, 8, 8, 3, 8, 504, + 4, 516, 4, 530, 516, 3, 209, 4, 516, 4, + 4, 516, 206, 540, 519, 530, 4, 540, 545, 4, + 4, 4, 545, 4, 4, 530, 516, 4, 4, 516, + 516, 209, 4, 516, 209, 540, 519, 4, 565, 4, + 545, 504, 4, 516, 545, 545, 4, 530, 4, 207, + 207, 4, 207, 516, 207, 207, 519, 530, 209, 208, + 565, 209, 208, 516, 516, 516, 208, 530, 207, 207, + 207, 207, 4, 4, 4, 516, 516, 540, 530, 104, + 105, 209, 545, 516, 209, 209, 516, 209, 4, 4, + 209, 4, 4, 516, 516, 207, 516, 206, 516, 516, + 4, 4, 565, 1188, 516, 4, 516, 4, 209, 516, + 209, 516, 516, 209, 516, 4, 516, 516, 4, 516, + 4, 4, 516, 4, 516, 207, 4, 516, 519, 516, + 4, 4, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 4, 4, 4, 209, 209, + 4, 176, 177, 209, 4, 4, 4, 4, 209, 209, + 207, 207, 4, 4, 4, 4, 4, 4, 4, 4, + 207, 4, 4, 4, 4, 4, 4, 4, 705, 4, + 707, 206, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 704, 4, 4, 207, 4, 4, 4, + 209, 209, 707, 4, 209, 4, 209, 207, 207, 4, + 4, 207, 4, 4, 207, 742, 743, 209, 745, 209, + 7, 7, 749, 7, 7, 7, 7, 206, 206, 5, + 5, 206, 206, 206, 5, 206, 5, 742, 743, 744, + 745, 5, 206, 206, 707, 7, 5, 5, 5, 5, + 5, 206, 30, 31, 32, 33, 34, 7, 7, 7, + 7, 7, 206, 7, 5, 206, 206, 206, 5, 206, + 206, 206, 7, 206, 5, 7, 171, 206, 206, 742, + 743, 744, 745, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 7, 7, 206, 206, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 206, 85, 86, 87, + 206, 89, 206, 206, 206, 206, 206, 7, 206, 206, + 7, 206, 100, 7, 102, 7, 104, 105, 106, 107, + 108, 109, 7, 7, 206, 206, 114, 115, 116, 206, + 206, 119, 206, 206, 7, 123, 124, 4, 4, 4, + 4, 4, 4, 131, 4, 6, 3, 6, 3, 3, + 6, 3, 206, 6, 3, 6, 6, 3, 6, 3, + 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 3, 209, 6, 683, 4, 6, + 8, 4, 4, 4, 4, 4, 207, 4, 176, 177, + 4, 209, 4, 207, 207, 207, 4, 207, 4, 207, + 207, 207, 4, 4, 207, 4, 4, 207, 207, 207, + 6, 3, 7, 4, 209, 8, 4, 207, 206, 8, + 207, 8, 3, 8, 207, 209, 4, 209, 206, 209, + 206, 206, 4, 206, 4, 206, 206, 4, 4, 4, + 4, 4, 206, 206, 206, 206, 4, 4, 985, 705, + 707, 988, 207, 206, 991, 988, 206, 994, 991, 994, + 985, 994, 999, 985, 207, 1002, 999, 985, 1005, 994, + 985, 206, 994, 988, 999, 999, 991, 1002, 209, 994, + 991, 991, 1019, 209, 999, 985, 1023, 1002, 985, 985, + 206, 206, 985, 206, 994, 1032, 207, 994, 994, 1032, + 1037, 994, 985, 999, 1019, 1042, 999, 1042, 1023, 1002, + 206, 994, 985, 206, 1029, 988, 999, 1032, 991, 1002, + 696, 994, 985, 985, 985, 495, 999, 1042, 504, 1002, + 795, 994, 994, 994, 985, 985, 960, 999, 999, 984, + 1002, 979, 985, 994, 994, 985, 1019, 1019, 999, 1042, + 1023, 994, 985, 985, 994, 985, 1029, 985, 985, 1032, + 997, 994, 994, 985, 994, 985, 994, 994, 985, 1042, + 985, 985, 994, 985, 994, 985, 985, 994, 985, 994, + 994, 985, 994, 985, 994, 994, 985, 994, 985, 548, + 994, 1007, 994, 994, 987, 994, 985, 994, 516, 1005, + 996, 1210, 990, 988, 540, 1044, 993, 991, 545, 1004, + 1002, 1014, 766, 1042, 530, 1216, 569, 1000, 745, 706, + 1226, 565, 1268, 1023, 1248, -1, -1, 519, -1, -1, + -1, 1029, -1, -1, -1, -1, -1, -1, -1, 1033, + -1, 1042, -1, -1, -1, 1166, -1, 1037, -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, 1210, -1, 1210, -1, 1210, -1, 1216, + -1, -1, -1, 1216, -1, 1210, -1, -1, 1210, 1226, + -1, 1216, 1216, 1226, -1, 1210, -1, -1, -1, -1, + -1, 1216, -1, -1, -1, -1, -1, -1, -1, -1, + 1210, 1226, -1, 1210, 1210, -1, -1, 1210, -1, -1, + 1216, -1, -1, 1216, -1, -1, -1, 1210, -1, -1, + -1, -1, -1, 1216, -1, -1, -1, 1210, -1, -1, + -1, -1, -1, 1216, -1, -1, -1, 1210, 1210, 1210, + -1, -1, -1, 1226, 1216, 1216, -1, -1, -1, 1210, + 1210, -1, -1, -1, -1, 1216, -1, 1210, -1, -1, + 1210, -1, -1, -1, -1, -1, -1, 1210, 1210, -1, + 1210, -1, 1210, 1210, -1, -1, -1, -1, 1210, -1, + 1210, -1, -1, 1210, -1, 1210, 1210, -1, 1210, -1, + 1210, 1210, -1, 1210, -1, -1, 1210, -1, 1210, 1210, + -1, 1210, -1, 1210, 30, 31, 32, 33, 34, -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, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, -1, -1, -1, -1, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, + -1, -1, -1, 89, 90, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 100, -1, -1, -1, 104, 105, + -1, 107, -1, 109, -1, -1, -1, -1, 114, 115, + 116, -1, -1, 119, -1, -1, -1, 123, -1, -1, + -1, -1, -1, -1, -1, 131, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 176, 177, -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, + 206 }; const short Dhcp4Parser::yystos_[] = { - 0, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 0, 5, - 7, 9, 205, 206, 207, 208, 224, 225, 226, 231, - 7, 240, 7, 245, 7, 292, 7, 402, 7, 485, - 7, 501, 7, 437, 7, 443, 7, 467, 7, 378, - 7, 568, 7, 599, 232, 227, 241, 246, 293, 403, - 486, 502, 438, 444, 468, 379, 569, 600, 224, 233, - 234, 205, 229, 230, 10, 242, 244, 11, 14, 26, + 0, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 0, 5, + 7, 9, 206, 207, 208, 209, 225, 226, 227, 232, + 7, 241, 7, 246, 7, 295, 7, 405, 7, 488, + 7, 504, 7, 440, 7, 446, 7, 470, 7, 381, + 7, 571, 7, 602, 233, 228, 242, 247, 296, 406, + 489, 505, 441, 447, 471, 382, 572, 603, 225, 234, + 235, 206, 230, 231, 10, 243, 245, 11, 14, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 88, 89, 99, 100, 103, 104, 108, - 113, 114, 115, 116, 117, 123, 133, 136, 143, 144, - 148, 151, 155, 175, 176, 177, 178, 179, 180, 189, - 205, 239, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 262, 263, 264, 265, - 266, 267, 268, 269, 272, 274, 276, 277, 278, 280, - 282, 283, 284, 285, 286, 287, 288, 306, 308, 316, - 318, 356, 365, 372, 386, 396, 420, 421, 422, 423, - 427, 435, 461, 491, 493, 495, 506, 508, 510, 533, - 547, 548, 556, 566, 597, 606, 630, 15, 16, 19, - 22, 23, 24, 25, 239, 290, 291, 294, 296, 299, - 302, 303, 304, 305, 491, 493, 85, 86, 87, 101, - 105, 106, 107, 118, 122, 130, 239, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 264, 265, 266, - 267, 268, 269, 272, 274, 276, 277, 278, 280, 282, - 404, 405, 406, 408, 410, 412, 414, 416, 418, 420, - 421, 422, 423, 426, 461, 479, 491, 493, 495, 506, - 508, 510, 530, 102, 239, 416, 418, 461, 487, 488, - 489, 491, 493, 117, 124, 125, 126, 127, 128, 129, - 131, 239, 461, 491, 493, 503, 504, 505, 506, 508, - 510, 512, 516, 518, 520, 522, 524, 526, 528, 435, - 38, 90, 92, 93, 96, 97, 98, 239, 336, 445, - 446, 447, 448, 449, 450, 451, 453, 455, 457, 458, - 460, 491, 493, 91, 94, 95, 239, 336, 449, 455, - 469, 470, 471, 472, 473, 475, 476, 477, 478, 491, - 493, 134, 135, 239, 380, 381, 382, 384, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 175, 176, 239, 491, 493, 570, 571, 572, 573, - 575, 576, 578, 579, 580, 583, 585, 587, 588, 589, - 591, 593, 595, 12, 13, 601, 602, 603, 605, 6, - 3, 4, 8, 3, 243, 3, 8, 598, 289, 309, - 4, 4, 4, 507, 509, 511, 307, 317, 319, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 261, 4, 4, 4, 4, 4, 270, 273, 275, 4, - 4, 4, 397, 436, 462, 4, 428, 492, 494, 424, - 4, 4, 4, 357, 534, 496, 373, 387, 4, 366, - 549, 557, 567, 279, 281, 4, 4, 4, 607, 631, - 4, 3, 8, 295, 297, 300, 4, 4, 4, 4, - 3, 8, 409, 411, 413, 480, 407, 415, 4, 419, - 417, 531, 3, 8, 490, 3, 8, 529, 517, 519, - 523, 521, 527, 525, 513, 8, 3, 8, 452, 337, - 4, 456, 454, 459, 4, 8, 3, 474, 4, 4, - 8, 3, 383, 385, 3, 8, 4, 586, 574, 4, - 577, 4, 4, 581, 584, 4, 4, 590, 592, 594, - 596, 3, 8, 604, 4, 3, 8, 224, 224, 205, - 4, 4, 4, 4, 208, 208, 208, 4, 4, 4, - 4, 4, 4, 206, 206, 206, 206, 206, 208, 207, - 207, 207, 206, 206, 4, 206, 206, 208, 208, 208, - 4, 4, 4, 208, 208, 208, 4, 4, 4, 206, - 4, 4, 4, 4, 208, 208, 208, 4, 4, 4, - 4, 4, 206, 4, 4, 4, 4, 4, 4, 208, - 208, 208, 4, 4, 248, 4, 4, 4, 208, 208, - 206, 206, 291, 4, 4, 4, 4, 4, 4, 206, - 4, 4, 4, 405, 4, 488, 4, 4, 4, 4, - 4, 4, 4, 4, 505, 4, 4, 206, 4, 4, - 4, 208, 447, 4, 208, 208, 471, 4, 4, 381, - 208, 4, 4, 206, 4, 206, 206, 4, 4, 208, - 208, 4, 4, 4, 4, 571, 4, 206, 602, 4, - 7, 7, 7, 7, 205, 205, 205, 7, 7, 5, - 205, 171, 172, 173, 174, 208, 271, 205, 205, 5, - 5, 5, 5, 226, 228, 205, 109, 110, 111, 112, - 425, 5, 5, 5, 5, 7, 7, 7, 7, 7, - 205, 205, 5, 7, 5, 235, 17, 18, 298, 20, - 21, 301, 205, 205, 205, 5, 205, 205, 235, 205, - 7, 205, 235, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 228, 205, 205, - 205, 18, 169, 582, 170, 271, 205, 205, 205, 5, - 224, 247, 601, 290, 27, 28, 310, 311, 312, 314, - 38, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 56, 57, 58, 59, 60, 239, 324, 325, - 326, 329, 331, 333, 335, 336, 338, 339, 340, 341, - 342, 343, 344, 347, 348, 350, 352, 354, 324, 7, - 320, 321, 322, 7, 398, 399, 400, 7, 439, 440, - 441, 7, 463, 464, 465, 7, 429, 430, 431, 124, - 125, 126, 127, 129, 358, 359, 360, 361, 362, 363, - 364, 7, 535, 536, 7, 497, 498, 499, 7, 374, - 375, 376, 137, 138, 139, 140, 141, 142, 388, 389, - 390, 391, 392, 393, 394, 395, 145, 146, 147, 239, - 367, 368, 369, 370, 371, 491, 493, 149, 150, 239, - 491, 493, 550, 551, 552, 554, 152, 153, 154, 205, - 491, 493, 558, 559, 560, 561, 563, 564, 570, 7, - 608, 609, 190, 191, 239, 632, 633, 634, 635, 236, - 7, 481, 482, 483, 132, 512, 514, 532, 320, 8, - 8, 8, 313, 315, 3, 8, 327, 330, 332, 334, - 4, 4, 4, 4, 4, 4, 4, 345, 4, 349, - 351, 353, 355, 3, 8, 8, 323, 6, 3, 401, - 6, 3, 442, 6, 3, 466, 6, 3, 432, 6, - 3, 3, 6, 537, 3, 6, 500, 6, 3, 377, - 6, 3, 4, 4, 4, 4, 4, 4, 3, 8, - 4, 4, 4, 3, 8, 553, 555, 3, 8, 4, - 562, 4, 565, 3, 8, 8, 610, 3, 6, 4, - 4, 3, 8, 205, 237, 238, 484, 6, 3, 515, - 8, 6, 4, 4, 311, 4, 4, 4, 4, 206, - 208, 206, 208, 206, 206, 206, 4, 206, 4, 4, - 4, 4, 325, 324, 322, 404, 400, 445, 441, 469, - 465, 239, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 264, 265, 266, 267, 268, 269, 272, 274, - 276, 277, 278, 280, 282, 336, 396, 414, 416, 418, - 420, 421, 422, 423, 433, 434, 461, 491, 493, 506, - 508, 510, 530, 431, 359, 119, 120, 121, 239, 249, - 250, 251, 336, 435, 461, 491, 493, 506, 508, 510, - 538, 539, 540, 541, 542, 544, 546, 536, 503, 499, - 380, 376, 206, 206, 206, 206, 206, 206, 389, 208, - 206, 206, 368, 4, 4, 551, 208, 4, 206, 4, - 559, 181, 183, 184, 239, 336, 491, 493, 611, 612, - 613, 614, 616, 609, 208, 208, 633, 6, 3, 487, - 483, 4, 205, 205, 39, 40, 41, 328, 205, 205, - 205, 53, 54, 55, 346, 205, 205, 205, 205, 8, - 8, 8, 8, 3, 8, 543, 545, 4, 8, 3, - 8, 8, 205, 205, 205, 224, 617, 4, 615, 3, - 8, 205, 8, 235, 434, 4, 4, 208, 540, 4, - 206, 4, 612, 205, 205, 5, 205, 7, 618, 619, - 620, 3, 6, 182, 185, 186, 187, 188, 621, 622, - 623, 625, 626, 627, 628, 619, 624, 4, 4, 4, - 629, 3, 8, 4, 208, 206, 206, 4, 622, 205, - 205 + 82, 83, 84, 88, 89, 99, 100, 101, 104, 105, + 109, 114, 115, 116, 117, 118, 124, 134, 137, 144, + 145, 149, 152, 156, 176, 177, 178, 179, 180, 181, + 190, 206, 240, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 263, 264, 266, + 267, 268, 269, 270, 271, 272, 275, 277, 279, 280, + 281, 283, 285, 286, 287, 288, 289, 290, 291, 309, + 311, 319, 321, 359, 368, 375, 389, 399, 423, 424, + 425, 426, 430, 438, 464, 494, 496, 498, 509, 511, + 513, 536, 550, 551, 559, 569, 600, 609, 633, 15, + 16, 19, 22, 23, 24, 25, 240, 293, 294, 297, + 299, 302, 305, 306, 307, 308, 494, 496, 85, 86, + 87, 102, 106, 107, 108, 119, 123, 131, 240, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 264, + 267, 268, 269, 270, 271, 272, 275, 277, 279, 280, + 281, 283, 285, 407, 408, 409, 411, 413, 415, 417, + 419, 421, 423, 424, 425, 426, 429, 464, 482, 494, + 496, 498, 509, 511, 513, 533, 103, 240, 419, 421, + 464, 490, 491, 492, 494, 496, 118, 125, 126, 127, + 128, 129, 130, 132, 240, 464, 494, 496, 506, 507, + 508, 509, 511, 513, 515, 519, 521, 523, 525, 527, + 529, 531, 438, 38, 90, 92, 93, 96, 97, 98, + 240, 339, 448, 449, 450, 451, 452, 453, 454, 456, + 458, 460, 461, 463, 494, 496, 91, 94, 95, 240, + 339, 452, 458, 472, 473, 474, 475, 476, 478, 479, + 480, 481, 494, 496, 135, 136, 240, 383, 384, 385, + 387, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 176, 177, 240, 494, 496, 573, + 574, 575, 576, 578, 579, 581, 582, 583, 586, 588, + 590, 591, 592, 594, 596, 598, 12, 13, 604, 605, + 606, 608, 6, 3, 4, 8, 3, 244, 3, 8, + 601, 292, 312, 4, 4, 4, 510, 512, 514, 310, + 320, 322, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 262, 4, 4, 4, 4, 4, 273, + 276, 278, 4, 4, 4, 400, 439, 465, 4, 265, + 431, 495, 497, 427, 4, 4, 4, 360, 537, 499, + 376, 390, 4, 369, 552, 560, 570, 282, 284, 4, + 4, 4, 610, 634, 4, 3, 8, 298, 300, 303, + 4, 4, 4, 4, 3, 8, 412, 414, 416, 483, + 410, 418, 4, 422, 420, 534, 3, 8, 493, 3, + 8, 532, 520, 522, 526, 524, 530, 528, 516, 8, + 3, 8, 455, 340, 4, 459, 457, 462, 4, 8, + 3, 477, 4, 4, 8, 3, 386, 388, 3, 8, + 4, 589, 577, 4, 580, 4, 4, 584, 587, 4, + 4, 593, 595, 597, 599, 3, 8, 607, 4, 3, + 8, 225, 225, 206, 4, 4, 4, 4, 209, 209, + 209, 4, 4, 4, 4, 4, 4, 207, 207, 207, + 207, 207, 209, 208, 208, 208, 207, 207, 4, 207, + 207, 209, 209, 209, 4, 4, 4, 209, 209, 209, + 4, 4, 4, 207, 4, 4, 4, 4, 4, 209, + 209, 209, 4, 4, 4, 4, 4, 207, 4, 4, + 4, 4, 4, 4, 209, 209, 209, 4, 4, 249, + 4, 4, 4, 209, 209, 207, 207, 294, 4, 4, + 4, 4, 4, 4, 207, 4, 4, 4, 408, 4, + 491, 4, 4, 4, 4, 4, 4, 4, 4, 508, + 4, 4, 207, 4, 4, 4, 209, 450, 4, 209, + 209, 474, 4, 4, 384, 209, 4, 4, 207, 4, + 207, 207, 4, 4, 209, 209, 4, 4, 4, 4, + 574, 4, 207, 605, 4, 7, 7, 7, 7, 206, + 206, 206, 7, 7, 5, 206, 172, 173, 174, 175, + 209, 274, 206, 206, 5, 5, 5, 206, 5, 227, + 229, 206, 110, 111, 112, 113, 428, 5, 5, 5, + 5, 7, 7, 7, 7, 7, 206, 206, 5, 7, + 5, 236, 17, 18, 301, 20, 21, 304, 206, 206, + 206, 5, 206, 206, 236, 206, 7, 206, 236, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 229, 206, 206, 206, 18, 170, 585, + 171, 274, 206, 206, 206, 5, 225, 248, 604, 293, + 27, 28, 313, 314, 315, 317, 38, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 56, 57, + 58, 59, 60, 240, 327, 328, 329, 332, 334, 336, + 338, 339, 341, 342, 343, 344, 345, 346, 347, 350, + 351, 353, 355, 357, 327, 7, 323, 324, 325, 7, + 401, 402, 403, 7, 442, 443, 444, 7, 466, 467, + 468, 7, 432, 433, 434, 125, 126, 127, 128, 130, + 361, 362, 363, 364, 365, 366, 367, 7, 538, 539, + 7, 500, 501, 502, 7, 377, 378, 379, 138, 139, + 140, 141, 142, 143, 391, 392, 393, 394, 395, 396, + 397, 398, 146, 147, 148, 240, 370, 371, 372, 373, + 374, 494, 496, 150, 151, 240, 494, 496, 553, 554, + 555, 557, 153, 154, 155, 206, 494, 496, 561, 562, + 563, 564, 566, 567, 573, 7, 611, 612, 191, 192, + 240, 635, 636, 637, 638, 237, 7, 484, 485, 486, + 133, 515, 517, 535, 323, 8, 8, 8, 316, 318, + 3, 8, 330, 333, 335, 337, 4, 4, 4, 4, + 4, 4, 4, 348, 4, 352, 354, 356, 358, 3, + 8, 8, 326, 6, 3, 404, 6, 3, 445, 6, + 3, 469, 6, 3, 435, 6, 3, 3, 6, 540, + 3, 6, 503, 6, 3, 380, 6, 3, 4, 4, + 4, 4, 4, 4, 3, 8, 4, 4, 4, 3, + 8, 556, 558, 3, 8, 4, 565, 4, 568, 3, + 8, 8, 613, 3, 6, 4, 4, 3, 8, 206, + 238, 239, 487, 6, 3, 518, 8, 6, 4, 4, + 314, 4, 4, 4, 4, 207, 209, 207, 209, 207, + 207, 207, 4, 207, 4, 4, 4, 4, 328, 327, + 325, 407, 403, 448, 444, 472, 468, 240, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 264, 267, + 268, 269, 270, 271, 272, 275, 277, 279, 280, 281, + 283, 285, 339, 399, 417, 419, 421, 423, 424, 425, + 426, 436, 437, 464, 494, 496, 509, 511, 513, 533, + 434, 362, 120, 121, 122, 240, 250, 251, 252, 339, + 438, 464, 494, 496, 509, 511, 513, 541, 542, 543, + 544, 545, 547, 549, 539, 506, 502, 383, 379, 207, + 207, 207, 207, 207, 207, 392, 209, 207, 207, 371, + 4, 4, 554, 209, 4, 207, 4, 562, 182, 184, + 185, 240, 339, 494, 496, 614, 615, 616, 617, 619, + 612, 209, 209, 636, 6, 3, 490, 486, 4, 206, + 206, 39, 40, 41, 331, 206, 206, 206, 53, 54, + 55, 349, 206, 206, 206, 206, 8, 8, 8, 8, + 3, 8, 546, 548, 4, 8, 3, 8, 8, 206, + 206, 206, 225, 620, 4, 618, 3, 8, 206, 8, + 236, 437, 4, 4, 209, 543, 4, 207, 4, 615, + 206, 206, 5, 206, 7, 621, 622, 623, 3, 6, + 183, 186, 187, 188, 189, 624, 625, 626, 628, 629, + 630, 631, 622, 627, 4, 4, 4, 632, 3, 8, + 4, 209, 207, 207, 4, 625, 206, 206 }; const short Dhcp4Parser::yyr1_[] = { - 0, 209, 211, 210, 212, 210, 213, 210, 214, 210, - 215, 210, 216, 210, 217, 210, 218, 210, 219, 210, - 220, 210, 221, 210, 222, 210, 223, 210, 224, 224, - 224, 224, 224, 224, 224, 225, 227, 226, 228, 229, - 229, 230, 230, 230, 232, 231, 233, 233, 234, 234, - 234, 236, 235, 237, 237, 238, 238, 238, 239, 241, - 240, 243, 242, 242, 244, 246, 245, 247, 247, 247, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 261, 260, 262, 263, 264, - 265, 266, 267, 268, 270, 269, 271, 271, 271, 271, - 271, 273, 272, 275, 274, 276, 277, 279, 278, 281, - 280, 282, 283, 284, 285, 286, 287, 289, 288, 290, - 290, 290, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 293, 292, 295, 294, 297, 296, 298, 298, - 300, 299, 301, 301, 302, 303, 304, 305, 307, 306, - 309, 308, 310, 310, 310, 311, 311, 313, 312, 315, - 314, 317, 316, 319, 318, 320, 320, 321, 321, 321, - 323, 322, 324, 324, 324, 325, 325, 325, 325, 325, - 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, - 325, 325, 325, 325, 327, 326, 328, 328, 328, 330, - 329, 332, 331, 334, 333, 335, 337, 336, 338, 339, - 340, 341, 342, 343, 345, 344, 346, 346, 346, 347, - 349, 348, 351, 350, 353, 352, 355, 354, 357, 356, - 358, 358, 358, 359, 359, 359, 359, 359, 360, 361, - 362, 363, 364, 366, 365, 367, 367, 367, 368, 368, - 368, 368, 368, 368, 369, 370, 371, 373, 372, 374, - 374, 375, 375, 375, 377, 376, 379, 378, 380, 380, - 380, 380, 381, 381, 383, 382, 385, 384, 387, 386, - 388, 388, 388, 389, 389, 389, 389, 389, 389, 390, - 391, 392, 393, 394, 395, 397, 396, 398, 398, 399, - 399, 399, 401, 400, 403, 402, 404, 404, 404, 405, - 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 405, 407, 406, 409, 408, 411, 410, - 413, 412, 415, 414, 417, 416, 419, 418, 420, 421, - 422, 424, 423, 425, 425, 425, 425, 426, 428, 427, - 429, 429, 430, 430, 430, 432, 431, 433, 433, 433, - 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, - 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, - 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, - 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, - 436, 435, 438, 437, 439, 439, 440, 440, 440, 442, - 441, 444, 443, 445, 445, 446, 446, 446, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 448, 449, - 450, 452, 451, 454, 453, 456, 455, 457, 459, 458, - 460, 462, 461, 463, 463, 464, 464, 464, 466, 465, - 468, 467, 469, 469, 470, 470, 470, 471, 471, 471, - 471, 471, 471, 471, 471, 471, 472, 474, 473, 475, - 476, 477, 478, 480, 479, 481, 481, 482, 482, 482, - 484, 483, 486, 485, 487, 487, 487, 488, 488, 488, - 488, 488, 488, 488, 490, 489, 492, 491, 494, 493, - 496, 495, 497, 497, 498, 498, 498, 500, 499, 502, - 501, 503, 503, 504, 504, 504, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 507, 506, 509, 508, 511, 510, 513, 512, 515, - 514, 517, 516, 519, 518, 521, 520, 523, 522, 525, - 524, 527, 526, 529, 528, 531, 530, 532, 532, 534, - 533, 535, 535, 535, 537, 536, 538, 538, 539, 539, - 539, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 541, 543, 542, 545, - 544, 546, 547, 549, 548, 550, 550, 550, 551, 551, - 551, 551, 551, 553, 552, 555, 554, 557, 556, 558, - 558, 558, 559, 559, 559, 559, 559, 559, 560, 562, - 561, 563, 565, 564, 567, 566, 569, 568, 570, 570, - 570, 571, 571, 571, 571, 571, 571, 571, 571, 571, - 571, 571, 571, 571, 571, 571, 571, 571, 571, 572, - 574, 573, 575, 577, 576, 578, 579, 581, 580, 582, - 582, 584, 583, 586, 585, 587, 588, 590, 589, 592, - 591, 594, 593, 596, 595, 598, 597, 600, 599, 601, - 601, 601, 602, 602, 604, 603, 605, 607, 606, 608, - 608, 608, 610, 609, 611, 611, 611, 612, 612, 612, - 612, 612, 612, 612, 613, 615, 614, 617, 616, 618, - 618, 618, 620, 619, 621, 621, 621, 622, 622, 622, - 622, 622, 624, 623, 625, 626, 627, 629, 628, 631, - 630, 632, 632, 632, 633, 633, 633, 634, 635 + 0, 210, 212, 211, 213, 211, 214, 211, 215, 211, + 216, 211, 217, 211, 218, 211, 219, 211, 220, 211, + 221, 211, 222, 211, 223, 211, 224, 211, 225, 225, + 225, 225, 225, 225, 225, 226, 228, 227, 229, 230, + 230, 231, 231, 231, 233, 232, 234, 234, 235, 235, + 235, 237, 236, 238, 238, 239, 239, 239, 240, 242, + 241, 244, 243, 243, 245, 247, 246, 248, 248, 248, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 262, 261, 263, 265, + 264, 266, 267, 268, 269, 270, 271, 273, 272, 274, + 274, 274, 274, 274, 276, 275, 278, 277, 279, 280, + 282, 281, 284, 283, 285, 286, 287, 288, 289, 290, + 292, 291, 293, 293, 293, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 296, 295, 298, 297, 300, + 299, 301, 301, 303, 302, 304, 304, 305, 306, 307, + 308, 310, 309, 312, 311, 313, 313, 313, 314, 314, + 316, 315, 318, 317, 320, 319, 322, 321, 323, 323, + 324, 324, 324, 326, 325, 327, 327, 327, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 330, 329, 331, + 331, 331, 333, 332, 335, 334, 337, 336, 338, 340, + 339, 341, 342, 343, 344, 345, 346, 348, 347, 349, + 349, 349, 350, 352, 351, 354, 353, 356, 355, 358, + 357, 360, 359, 361, 361, 361, 362, 362, 362, 362, + 362, 363, 364, 365, 366, 367, 369, 368, 370, 370, + 370, 371, 371, 371, 371, 371, 371, 372, 373, 374, + 376, 375, 377, 377, 378, 378, 378, 380, 379, 382, + 381, 383, 383, 383, 383, 384, 384, 386, 385, 388, + 387, 390, 389, 391, 391, 391, 392, 392, 392, 392, + 392, 392, 393, 394, 395, 396, 397, 398, 400, 399, + 401, 401, 402, 402, 402, 404, 403, 406, 405, 407, + 407, 407, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 410, 409, + 412, 411, 414, 413, 416, 415, 418, 417, 420, 419, + 422, 421, 423, 424, 425, 427, 426, 428, 428, 428, + 428, 429, 431, 430, 432, 432, 433, 433, 433, 435, + 434, 436, 436, 436, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 439, 438, 441, 440, 442, + 442, 443, 443, 443, 445, 444, 447, 446, 448, 448, + 449, 449, 449, 450, 450, 450, 450, 450, 450, 450, + 450, 450, 450, 451, 452, 453, 455, 454, 457, 456, + 459, 458, 460, 462, 461, 463, 465, 464, 466, 466, + 467, 467, 467, 469, 468, 471, 470, 472, 472, 473, + 473, 473, 474, 474, 474, 474, 474, 474, 474, 474, + 474, 475, 477, 476, 478, 479, 480, 481, 483, 482, + 484, 484, 485, 485, 485, 487, 486, 489, 488, 490, + 490, 490, 491, 491, 491, 491, 491, 491, 491, 493, + 492, 495, 494, 497, 496, 499, 498, 500, 500, 501, + 501, 501, 503, 502, 505, 504, 506, 506, 507, 507, + 507, 508, 508, 508, 508, 508, 508, 508, 508, 508, + 508, 508, 508, 508, 508, 508, 510, 509, 512, 511, + 514, 513, 516, 515, 518, 517, 520, 519, 522, 521, + 524, 523, 526, 525, 528, 527, 530, 529, 532, 531, + 534, 533, 535, 535, 537, 536, 538, 538, 538, 540, + 539, 541, 541, 542, 542, 542, 543, 543, 543, 543, + 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, + 543, 544, 546, 545, 548, 547, 549, 550, 552, 551, + 553, 553, 553, 554, 554, 554, 554, 554, 556, 555, + 558, 557, 560, 559, 561, 561, 561, 562, 562, 562, + 562, 562, 562, 563, 565, 564, 566, 568, 567, 570, + 569, 572, 571, 573, 573, 573, 574, 574, 574, 574, + 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, + 574, 574, 574, 574, 575, 577, 576, 578, 580, 579, + 581, 582, 584, 583, 585, 585, 587, 586, 589, 588, + 590, 591, 593, 592, 595, 594, 597, 596, 599, 598, + 601, 600, 603, 602, 604, 604, 604, 605, 605, 607, + 606, 608, 610, 609, 611, 611, 611, 613, 612, 614, + 614, 614, 615, 615, 615, 615, 615, 615, 615, 616, + 618, 617, 620, 619, 621, 621, 621, 623, 622, 624, + 624, 624, 625, 625, 625, 625, 625, 627, 626, 628, + 629, 630, 632, 631, 634, 633, 635, 635, 635, 636, + 636, 636, 637, 638 }; const signed char @@ -5829,76 +5884,77 @@ namespace isc { namespace dhcp { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 0, 4, 3, 3, 3, - 3, 3, 3, 3, 0, 4, 1, 1, 1, 1, - 1, 0, 4, 0, 4, 3, 3, 0, 4, 0, - 4, 3, 3, 3, 3, 3, 3, 0, 6, 1, - 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 4, 0, 4, 0, 4, 1, 1, - 0, 4, 1, 1, 3, 3, 3, 3, 0, 6, - 0, 6, 1, 3, 2, 1, 1, 0, 4, 0, - 4, 0, 6, 0, 6, 0, 1, 1, 3, 2, - 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 4, 1, 1, 1, 0, - 4, 0, 4, 0, 4, 3, 0, 4, 3, 3, - 3, 3, 3, 3, 0, 4, 1, 1, 1, 3, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 6, - 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 6, 1, 3, 2, 1, 1, - 1, 1, 1, 1, 3, 3, 3, 0, 6, 0, - 1, 1, 3, 2, 0, 4, 0, 4, 1, 3, - 2, 1, 1, 1, 0, 4, 0, 4, 0, 6, - 1, 3, 2, 1, 1, 1, 1, 1, 1, 3, - 3, 3, 3, 3, 3, 0, 6, 0, 1, 1, - 3, 2, 0, 4, 0, 4, 1, 3, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 0, 4, 3, 0, + 4, 3, 3, 3, 3, 3, 3, 0, 4, 1, + 1, 1, 1, 1, 0, 4, 0, 4, 3, 3, + 0, 4, 0, 4, 3, 3, 3, 3, 3, 3, + 0, 6, 1, 3, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 4, 0, 4, 0, + 4, 1, 1, 0, 4, 1, 1, 3, 3, 3, + 3, 0, 6, 0, 6, 1, 3, 2, 1, 1, + 0, 4, 0, 4, 0, 6, 0, 6, 0, 1, + 1, 3, 2, 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 4, 1, + 1, 1, 0, 4, 0, 4, 0, 4, 3, 0, + 4, 3, 3, 3, 3, 3, 3, 0, 4, 1, + 1, 1, 3, 0, 4, 0, 4, 0, 4, 0, + 4, 0, 6, 1, 3, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 6, 1, 3, + 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, + 0, 6, 0, 1, 1, 3, 2, 0, 4, 0, + 4, 1, 3, 2, 1, 1, 1, 0, 4, 0, + 4, 0, 6, 1, 3, 2, 1, 1, 1, 1, + 1, 1, 3, 3, 3, 3, 3, 3, 0, 6, + 0, 1, 1, 3, 2, 0, 4, 0, 4, 1, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 4, 0, 4, 0, 4, - 0, 4, 0, 4, 0, 4, 0, 4, 3, 3, - 3, 0, 4, 1, 1, 1, 1, 3, 0, 6, - 0, 1, 1, 3, 2, 0, 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, + 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, + 0, 4, 3, 3, 3, 0, 4, 1, 1, 1, + 1, 3, 0, 6, 0, 1, 1, 3, 2, 0, + 4, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 6, 0, 4, 0, 1, 1, 3, 2, 0, - 4, 0, 4, 0, 1, 1, 3, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 1, 0, 4, 0, 4, 0, 4, 1, 0, 4, - 3, 0, 6, 0, 1, 1, 3, 2, 0, 4, - 0, 4, 0, 1, 1, 3, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 4, 1, - 1, 3, 3, 0, 6, 0, 1, 1, 3, 2, - 0, 4, 0, 4, 1, 3, 2, 1, 1, 1, - 1, 1, 1, 1, 0, 4, 0, 4, 0, 4, - 0, 6, 0, 1, 1, 3, 2, 0, 4, 0, + 1, 1, 1, 1, 1, 0, 6, 0, 4, 0, + 1, 1, 3, 2, 0, 4, 0, 4, 0, 1, + 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 1, 0, 4, 0, 4, + 0, 4, 1, 0, 4, 3, 0, 6, 0, 1, + 1, 3, 2, 0, 4, 0, 4, 0, 1, 1, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 4, 1, 1, 3, 3, 0, 6, + 0, 1, 1, 3, 2, 0, 4, 0, 4, 1, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 0, + 4, 0, 4, 0, 4, 0, 6, 0, 1, 1, + 3, 2, 0, 4, 0, 4, 0, 1, 1, 3, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 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, 4, + 0, 6, 1, 1, 0, 6, 1, 3, 2, 0, 4, 0, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 4, 0, 6, 1, 1, 0, - 6, 1, 3, 2, 0, 4, 0, 1, 1, 3, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 4, 0, - 4, 3, 3, 0, 6, 1, 3, 2, 1, 1, - 1, 1, 1, 0, 4, 0, 4, 0, 6, 1, - 3, 2, 1, 1, 1, 1, 1, 1, 3, 0, - 4, 3, 0, 4, 0, 6, 0, 4, 1, 3, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 0, 4, 3, 0, 4, 3, 3, 0, 4, 1, - 1, 0, 4, 0, 4, 3, 3, 0, 4, 0, - 4, 0, 4, 0, 4, 0, 6, 0, 4, 1, - 3, 2, 1, 1, 0, 6, 3, 0, 6, 1, - 3, 2, 0, 4, 1, 3, 2, 1, 1, 1, - 1, 1, 1, 1, 3, 0, 4, 0, 6, 1, - 3, 2, 0, 4, 1, 3, 2, 1, 1, 1, - 1, 1, 0, 4, 3, 3, 3, 0, 4, 0, - 6, 1, 3, 2, 1, 1, 1, 3, 3 + 1, 1, 0, 4, 0, 4, 3, 3, 0, 6, + 1, 3, 2, 1, 1, 1, 1, 1, 0, 4, + 0, 4, 0, 6, 1, 3, 2, 1, 1, 1, + 1, 1, 1, 3, 0, 4, 3, 0, 4, 0, + 6, 0, 4, 1, 3, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 0, 4, 3, 0, 4, + 3, 3, 0, 4, 1, 1, 0, 4, 0, 4, + 3, 3, 0, 4, 0, 4, 0, 4, 0, 4, + 0, 6, 0, 4, 1, 3, 2, 1, 1, 0, + 6, 3, 0, 6, 1, 3, 2, 0, 4, 1, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 3, + 0, 4, 0, 6, 1, 3, 2, 0, 4, 1, + 3, 2, 1, 1, 1, 1, 1, 0, 4, 3, + 3, 3, 0, 4, 0, 6, 1, 3, 2, 1, + 1, 1, 3, 3 }; @@ -5940,17 +5996,18 @@ namespace isc { namespace dhcp { "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"", "\"encapsulate\"", "\"array\"", "\"parked-packet-limit\"", - "\"shared-networks\"", "\"pools\"", "\"pool\"", "\"user-context\"", - "\"comment\"", "\"subnet\"", "\"interface\"", "\"id\"", - "\"reservation-mode\"", "\"disabled\"", "\"out-of-pool\"", "\"global\"", - "\"all\"", "\"reservations-global\"", "\"reservations-in-subnet\"", - "\"reservations-out-of-pool\"", "\"host-reservation-identifiers\"", - "\"client-classes\"", "\"require-client-classes\"", "\"test\"", - "\"template-test\"", "\"only-if-required\"", "\"client-class\"", - "\"reservations\"", "\"duid\"", "\"hw-address\"", "\"circuit-id\"", - "\"client-id\"", "\"hostname\"", "\"flex-id\"", "\"relay\"", - "\"ip-address\"", "\"ip-addresses\"", "\"hooks-libraries\"", - "\"library\"", "\"parameters\"", "\"expired-leases-processing\"", + "\"allocator\"", "\"shared-networks\"", "\"pools\"", "\"pool\"", + "\"user-context\"", "\"comment\"", "\"subnet\"", "\"interface\"", + "\"id\"", "\"reservation-mode\"", "\"disabled\"", "\"out-of-pool\"", + "\"global\"", "\"all\"", "\"reservations-global\"", + "\"reservations-in-subnet\"", "\"reservations-out-of-pool\"", + "\"host-reservation-identifiers\"", "\"client-classes\"", + "\"require-client-classes\"", "\"test\"", "\"template-test\"", + "\"only-if-required\"", "\"client-class\"", "\"reservations\"", + "\"duid\"", "\"hw-address\"", "\"circuit-id\"", "\"client-id\"", + "\"hostname\"", "\"flex-id\"", "\"relay\"", "\"ip-address\"", + "\"ip-addresses\"", "\"hooks-libraries\"", "\"library\"", + "\"parameters\"", "\"expired-leases-processing\"", "\"reclaim-timer-wait-time\"", "\"flush-reclaimed-timer-wait-time\"", "\"hold-reclaimed-time\"", "\"max-reclaim-leases\"", "\"max-reclaim-time\"", "\"unwarned-reclaim-cycles\"", @@ -5985,102 +6042,103 @@ namespace isc { namespace dhcp { "max_valid_lifetime", "renew_timer", "rebind_timer", "calculate_tee_times", "t1_percent", "t2_percent", "cache_threshold", "cache_max_age", "decline_probation_period", "server_tag", "$@20", - "parked_packet_limit", "echo_client_id", "match_client_id", - "authoritative", "ddns_send_updates", "ddns_override_no_update", - "ddns_override_client_update", "ddns_replace_client_name", "$@21", - "ddns_replace_client_name_value", "ddns_generated_prefix", "$@22", - "ddns_qualifying_suffix", "$@23", "ddns_update_on_renew", - "ddns_use_conflict_resolution", "hostname_char_set", "$@24", - "hostname_char_replacement", "$@25", "store_extended_info", - "statistic_default_sample_count", "statistic_default_sample_age", - "early_global_reservations_lookup", "ip_reservations_unique", - "reservations_lookup_first", "interfaces_config", "$@26", - "interfaces_config_params", "interfaces_config_param", "sub_interfaces4", - "$@27", "interfaces_list", "$@28", "dhcp_socket_type", "$@29", - "socket_type", "outbound_interface", "$@30", "outbound_interface_value", - "re_detect", "service_sockets_require_all", - "service_sockets_retry_wait_time", "service_sockets_max_retries", - "lease_database", "$@31", "sanity_checks", "$@32", - "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@33", - "extended_info_checks", "$@34", "hosts_database", "$@35", - "hosts_databases", "$@36", "database_list", "not_empty_database_list", - "database", "$@37", "database_map_params", "database_map_param", - "database_type", "$@38", "db_type", "user", "$@39", "password", "$@40", - "host", "$@41", "port", "name", "$@42", "persist", "lfc_interval", + "parked_packet_limit", "allocator", "$@21", "echo_client_id", + "match_client_id", "authoritative", "ddns_send_updates", + "ddns_override_no_update", "ddns_override_client_update", + "ddns_replace_client_name", "$@22", "ddns_replace_client_name_value", + "ddns_generated_prefix", "$@23", "ddns_qualifying_suffix", "$@24", + "ddns_update_on_renew", "ddns_use_conflict_resolution", + "hostname_char_set", "$@25", "hostname_char_replacement", "$@26", + "store_extended_info", "statistic_default_sample_count", + "statistic_default_sample_age", "early_global_reservations_lookup", + "ip_reservations_unique", "reservations_lookup_first", + "interfaces_config", "$@27", "interfaces_config_params", + "interfaces_config_param", "sub_interfaces4", "$@28", "interfaces_list", + "$@29", "dhcp_socket_type", "$@30", "socket_type", "outbound_interface", + "$@31", "outbound_interface_value", "re_detect", + "service_sockets_require_all", "service_sockets_retry_wait_time", + "service_sockets_max_retries", "lease_database", "$@32", "sanity_checks", + "$@33", "sanity_checks_params", "sanity_checks_param", "lease_checks", + "$@34", "extended_info_checks", "$@35", "hosts_database", "$@36", + "hosts_databases", "$@37", "database_list", "not_empty_database_list", + "database", "$@38", "database_map_params", "database_map_param", + "database_type", "$@39", "db_type", "user", "$@40", "password", "$@41", + "host", "$@42", "port", "name", "$@43", "persist", "lfc_interval", "readonly", "connect_timeout", "max_reconnect_tries", - "reconnect_wait_time", "on_fail", "$@43", "on_fail_mode", - "max_row_errors", "trust_anchor", "$@44", "cert_file", "$@45", - "key_file", "$@46", "cipher_list", "$@47", - "host_reservation_identifiers", "$@48", + "reconnect_wait_time", "on_fail", "$@44", "on_fail_mode", + "max_row_errors", "trust_anchor", "$@45", "cert_file", "$@46", + "key_file", "$@47", "cipher_list", "$@48", + "host_reservation_identifiers", "$@49", "host_reservation_identifiers_list", "host_reservation_identifier", "duid_id", "hw_address_id", "circuit_id", "client_id", "flex_id", - "dhcp_multi_threading", "$@49", "multi_threading_params", + "dhcp_multi_threading", "$@50", "multi_threading_params", "multi_threading_param", "enable_multi_threading", "thread_pool_size", - "packet_queue_size", "hooks_libraries", "$@50", "hooks_libraries_list", - "not_empty_hooks_libraries_list", "hooks_library", "$@51", - "sub_hooks_library", "$@52", "hooks_params", "hooks_param", "library", - "$@53", "parameters", "$@54", "expired_leases_processing", "$@55", + "packet_queue_size", "hooks_libraries", "$@51", "hooks_libraries_list", + "not_empty_hooks_libraries_list", "hooks_library", "$@52", + "sub_hooks_library", "$@53", "hooks_params", "hooks_param", "library", + "$@54", "parameters", "$@55", "expired_leases_processing", "$@56", "expired_leases_params", "expired_leases_param", "reclaim_timer_wait_time", "flush_reclaimed_timer_wait_time", "hold_reclaimed_time", "max_reclaim_leases", "max_reclaim_time", - "unwarned_reclaim_cycles", "subnet4_list", "$@56", - "subnet4_list_content", "not_empty_subnet4_list", "subnet4", "$@57", - "sub_subnet4", "$@58", "subnet4_params", "subnet4_param", "subnet", - "$@59", "subnet_4o6_interface", "$@60", "subnet_4o6_interface_id", - "$@61", "subnet_4o6_subnet", "$@62", "interface", "$@63", "client_class", - "$@64", "require_client_classes", "$@65", "reservations_global", + "unwarned_reclaim_cycles", "subnet4_list", "$@57", + "subnet4_list_content", "not_empty_subnet4_list", "subnet4", "$@58", + "sub_subnet4", "$@59", "subnet4_params", "subnet4_param", "subnet", + "$@60", "subnet_4o6_interface", "$@61", "subnet_4o6_interface_id", + "$@62", "subnet_4o6_subnet", "$@63", "interface", "$@64", "client_class", + "$@65", "require_client_classes", "$@66", "reservations_global", "reservations_in_subnet", "reservations_out_of_pool", "reservation_mode", - "$@66", "hr_mode", "id", "shared_networks", "$@67", + "$@67", "hr_mode", "id", "shared_networks", "$@68", "shared_networks_content", "shared_networks_list", "shared_network", - "$@68", "shared_network_params", "shared_network_param", - "option_def_list", "$@69", "sub_option_def_list", "$@70", + "$@69", "shared_network_params", "shared_network_param", + "option_def_list", "$@70", "sub_option_def_list", "$@71", "option_def_list_content", "not_empty_option_def_list", - "option_def_entry", "$@71", "sub_option_def", "$@72", + "option_def_entry", "$@72", "sub_option_def", "$@73", "option_def_params", "not_empty_option_def_params", "option_def_param", - "option_def_name", "code", "option_def_code", "option_def_type", "$@73", - "option_def_record_types", "$@74", "space", "$@75", "option_def_space", - "option_def_encapsulate", "$@76", "option_def_array", "option_data_list", - "$@77", "option_data_list_content", "not_empty_option_data_list", - "option_data_entry", "$@78", "sub_option_data", "$@79", + "option_def_name", "code", "option_def_code", "option_def_type", "$@74", + "option_def_record_types", "$@75", "space", "$@76", "option_def_space", + "option_def_encapsulate", "$@77", "option_def_array", "option_data_list", + "$@78", "option_data_list_content", "not_empty_option_data_list", + "option_data_entry", "$@79", "sub_option_data", "$@80", "option_data_params", "not_empty_option_data_params", - "option_data_param", "option_data_name", "option_data_data", "$@80", + "option_data_param", "option_data_name", "option_data_data", "$@81", "option_data_code", "option_data_space", "option_data_csv_format", - "option_data_always_send", "pools_list", "$@81", "pools_list_content", - "not_empty_pools_list", "pool_list_entry", "$@82", "sub_pool4", "$@83", - "pool_params", "pool_param", "pool_entry", "$@84", "user_context", - "$@85", "comment", "$@86", "reservations", "$@87", "reservations_list", - "not_empty_reservations_list", "reservation", "$@88", "sub_reservation", - "$@89", "reservation_params", "not_empty_reservation_params", - "reservation_param", "next_server", "$@90", "server_hostname", "$@91", - "boot_file_name", "$@92", "ip_address", "$@93", "ip_addresses", "$@94", - "duid", "$@95", "hw_address", "$@96", "client_id_value", "$@97", - "circuit_id_value", "$@98", "flex_id_value", "$@99", "hostname", "$@100", - "reservation_client_classes", "$@101", "relay", "$@102", "relay_map", - "client_classes", "$@103", "client_classes_list", "client_class_entry", - "$@104", "client_class_params", "not_empty_client_class_params", - "client_class_param", "client_class_name", "client_class_test", "$@105", - "client_class_template_test", "$@106", "only_if_required", - "dhcp4o6_port", "control_socket", "$@107", "control_socket_params", - "control_socket_param", "control_socket_type", "$@108", - "control_socket_name", "$@109", "dhcp_queue_control", "$@110", + "option_data_always_send", "pools_list", "$@82", "pools_list_content", + "not_empty_pools_list", "pool_list_entry", "$@83", "sub_pool4", "$@84", + "pool_params", "pool_param", "pool_entry", "$@85", "user_context", + "$@86", "comment", "$@87", "reservations", "$@88", "reservations_list", + "not_empty_reservations_list", "reservation", "$@89", "sub_reservation", + "$@90", "reservation_params", "not_empty_reservation_params", + "reservation_param", "next_server", "$@91", "server_hostname", "$@92", + "boot_file_name", "$@93", "ip_address", "$@94", "ip_addresses", "$@95", + "duid", "$@96", "hw_address", "$@97", "client_id_value", "$@98", + "circuit_id_value", "$@99", "flex_id_value", "$@100", "hostname", + "$@101", "reservation_client_classes", "$@102", "relay", "$@103", + "relay_map", "client_classes", "$@104", "client_classes_list", + "client_class_entry", "$@105", "client_class_params", + "not_empty_client_class_params", "client_class_param", + "client_class_name", "client_class_test", "$@106", + "client_class_template_test", "$@107", "only_if_required", + "dhcp4o6_port", "control_socket", "$@108", "control_socket_params", + "control_socket_param", "control_socket_type", "$@109", + "control_socket_name", "$@110", "dhcp_queue_control", "$@111", "queue_control_params", "queue_control_param", "enable_queue", - "queue_type", "$@111", "capacity", "arbitrary_map_entry", "$@112", - "dhcp_ddns", "$@113", "sub_dhcp_ddns", "$@114", "dhcp_ddns_params", - "dhcp_ddns_param", "enable_updates", "server_ip", "$@115", "server_port", - "sender_ip", "$@116", "sender_port", "max_queue_size", "ncr_protocol", - "$@117", "ncr_protocol_value", "ncr_format", "$@118", - "dep_qualifying_suffix", "$@119", "dep_override_no_update", - "dep_override_client_update", "dep_replace_client_name", "$@120", - "dep_generated_prefix", "$@121", "dep_hostname_char_set", "$@122", - "dep_hostname_char_replacement", "$@123", "config_control", "$@124", - "sub_config_control", "$@125", "config_control_params", - "config_control_param", "config_databases", "$@126", - "config_fetch_wait_time", "loggers", "$@127", "loggers_entries", - "logger_entry", "$@128", "logger_params", "logger_param", "debuglevel", - "severity", "$@129", "output_options_list", "$@130", - "output_options_list_content", "output_entry", "$@131", - "output_params_list", "output_params", "output", "$@132", "flush", - "maxsize", "maxver", "pattern", "$@133", "compatibility", "$@134", + "queue_type", "$@112", "capacity", "arbitrary_map_entry", "$@113", + "dhcp_ddns", "$@114", "sub_dhcp_ddns", "$@115", "dhcp_ddns_params", + "dhcp_ddns_param", "enable_updates", "server_ip", "$@116", "server_port", + "sender_ip", "$@117", "sender_port", "max_queue_size", "ncr_protocol", + "$@118", "ncr_protocol_value", "ncr_format", "$@119", + "dep_qualifying_suffix", "$@120", "dep_override_no_update", + "dep_override_client_update", "dep_replace_client_name", "$@121", + "dep_generated_prefix", "$@122", "dep_hostname_char_set", "$@123", + "dep_hostname_char_replacement", "$@124", "config_control", "$@125", + "sub_config_control", "$@126", "config_control_params", + "config_control_param", "config_databases", "$@127", + "config_fetch_wait_time", "loggers", "$@128", "loggers_entries", + "logger_entry", "$@129", "logger_params", "logger_param", "debuglevel", + "severity", "$@130", "output_options_list", "$@131", + "output_options_list_content", "output_entry", "$@132", + "output_params_list", "output_params", "output", "$@133", "flush", + "maxsize", "maxver", "pattern", "$@134", "compatibility", "$@135", "compatibility_params", "compatibility_param", "lenient_option_parsing", "ignore-rai-link-selection", YY_NULLPTR }; @@ -6091,89 +6149,90 @@ namespace isc { namespace dhcp { const short Dhcp4Parser::yyrline_[] = { - 0, 298, 298, 298, 299, 299, 300, 300, 301, 301, - 302, 302, 303, 303, 304, 304, 305, 305, 306, 306, - 307, 307, 308, 308, 309, 309, 310, 310, 318, 319, - 320, 321, 322, 323, 324, 327, 332, 332, 343, 346, - 347, 350, 355, 361, 366, 366, 373, 374, 377, 381, - 385, 391, 391, 398, 399, 402, 406, 410, 420, 429, - 429, 444, 444, 458, 461, 467, 467, 476, 477, 478, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 551, 557, 563, 569, 575, 581, - 587, 593, 599, 605, 611, 617, 617, 626, 632, 638, - 644, 650, 656, 662, 668, 668, 677, 680, 683, 686, - 689, 695, 695, 704, 704, 713, 719, 725, 725, 734, - 734, 743, 749, 755, 761, 767, 773, 779, 779, 791, - 792, 793, 798, 799, 800, 801, 802, 803, 804, 805, - 806, 807, 810, 810, 819, 819, 830, 830, 838, 839, - 842, 842, 850, 852, 856, 862, 868, 874, 880, 880, - 893, 893, 904, 905, 906, 911, 912, 915, 915, 934, - 934, 952, 952, 965, 965, 976, 977, 980, 981, 982, - 987, 987, 997, 998, 999, 1004, 1005, 1006, 1007, 1008, - 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, - 1019, 1020, 1021, 1022, 1025, 1025, 1033, 1034, 1035, 1038, - 1038, 1047, 1047, 1056, 1056, 1065, 1071, 1071, 1080, 1086, - 1092, 1098, 1104, 1110, 1116, 1116, 1124, 1125, 1126, 1129, - 1135, 1135, 1144, 1144, 1153, 1153, 1162, 1162, 1171, 1171, - 1182, 1183, 1184, 1189, 1190, 1191, 1192, 1193, 1196, 1201, - 1206, 1211, 1216, 1223, 1223, 1236, 1237, 1238, 1243, 1244, - 1245, 1246, 1247, 1248, 1251, 1257, 1263, 1269, 1269, 1280, - 1281, 1284, 1285, 1286, 1291, 1291, 1301, 1301, 1311, 1312, - 1313, 1316, 1319, 1320, 1323, 1323, 1332, 1332, 1341, 1341, - 1353, 1354, 1355, 1360, 1361, 1362, 1363, 1364, 1365, 1368, - 1374, 1380, 1386, 1392, 1398, 1407, 1407, 1421, 1422, 1425, - 1426, 1427, 1436, 1436, 1462, 1462, 1473, 1474, 1475, 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, 1506, 1507, 1508, 1509, 1510, 1511, - 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, - 1522, 1523, 1524, 1525, 1528, 1528, 1537, 1537, 1546, 1546, - 1555, 1555, 1564, 1564, 1573, 1573, 1582, 1582, 1593, 1599, - 1605, 1611, 1611, 1619, 1620, 1621, 1622, 1625, 1633, 1633, - 1645, 1646, 1650, 1651, 1652, 1657, 1657, 1665, 1666, 1667, - 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, - 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, - 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, - 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, - 1718, 1718, 1732, 1732, 1741, 1742, 1745, 1746, 1747, 1754, - 1754, 1769, 1769, 1783, 1784, 1787, 1788, 1789, 1794, 1795, - 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1806, 1808, - 1814, 1816, 1816, 1825, 1825, 1834, 1834, 1843, 1845, 1845, - 1854, 1864, 1864, 1877, 1878, 1883, 1884, 1885, 1892, 1892, - 1904, 1904, 1916, 1917, 1922, 1923, 1924, 1931, 1932, 1933, - 1934, 1935, 1936, 1937, 1938, 1939, 1942, 1944, 1944, 1953, - 1955, 1957, 1963, 1972, 1972, 1985, 1986, 1989, 1990, 1991, - 1996, 1996, 2006, 2006, 2016, 2017, 2018, 2023, 2024, 2025, - 2026, 2027, 2028, 2029, 2032, 2032, 2041, 2041, 2066, 2066, - 2096, 2096, 2107, 2108, 2111, 2112, 2113, 2118, 2118, 2127, - 2127, 2136, 2137, 2140, 2141, 2142, 2148, 2149, 2150, 2151, - 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, - 2162, 2165, 2165, 2174, 2174, 2183, 2183, 2192, 2192, 2201, - 2201, 2212, 2212, 2221, 2221, 2230, 2230, 2239, 2239, 2248, - 2248, 2257, 2257, 2266, 2266, 2280, 2280, 2291, 2292, 2298, - 2298, 2309, 2310, 2311, 2316, 2316, 2326, 2327, 2330, 2331, - 2332, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, - 2346, 2347, 2348, 2349, 2350, 2351, 2354, 2356, 2356, 2365, - 2365, 2374, 2382, 2390, 2390, 2401, 2402, 2403, 2408, 2409, - 2410, 2411, 2412, 2415, 2415, 2424, 2424, 2436, 2436, 2449, - 2450, 2451, 2456, 2457, 2458, 2459, 2460, 2461, 2464, 2470, - 2470, 2479, 2485, 2485, 2495, 2495, 2508, 2508, 2518, 2519, - 2520, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, - 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2545, - 2551, 2551, 2560, 2566, 2566, 2575, 2581, 2587, 2587, 2596, - 2597, 2600, 2600, 2610, 2610, 2620, 2627, 2634, 2634, 2643, - 2643, 2653, 2653, 2663, 2663, 2675, 2675, 2687, 2687, 2697, - 2698, 2699, 2705, 2706, 2709, 2709, 2720, 2728, 2728, 2741, - 2742, 2743, 2749, 2749, 2757, 2758, 2759, 2764, 2765, 2766, - 2767, 2768, 2769, 2770, 2773, 2779, 2779, 2788, 2788, 2799, - 2800, 2801, 2806, 2806, 2814, 2815, 2816, 2821, 2822, 2823, - 2824, 2825, 2828, 2828, 2837, 2843, 2849, 2855, 2855, 2864, - 2864, 2875, 2876, 2877, 2882, 2883, 2884, 2887, 2893 + 0, 299, 299, 299, 300, 300, 301, 301, 302, 302, + 303, 303, 304, 304, 305, 305, 306, 306, 307, 307, + 308, 308, 309, 309, 310, 310, 311, 311, 319, 320, + 321, 322, 323, 324, 325, 328, 333, 333, 344, 347, + 348, 351, 356, 362, 367, 367, 374, 375, 378, 382, + 386, 392, 392, 399, 400, 403, 407, 411, 421, 430, + 430, 445, 445, 459, 462, 468, 468, 477, 478, 479, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 553, 559, 565, 571, 577, + 583, 589, 595, 601, 607, 613, 619, 619, 628, 634, + 634, 643, 649, 655, 661, 667, 673, 679, 679, 688, + 691, 694, 697, 700, 706, 706, 715, 715, 724, 730, + 736, 736, 745, 745, 754, 760, 766, 772, 778, 784, + 790, 790, 802, 803, 804, 809, 810, 811, 812, 813, + 814, 815, 816, 817, 818, 821, 821, 830, 830, 841, + 841, 849, 850, 853, 853, 861, 863, 867, 873, 879, + 885, 891, 891, 904, 904, 915, 916, 917, 922, 923, + 926, 926, 945, 945, 963, 963, 976, 976, 987, 988, + 991, 992, 993, 998, 998, 1008, 1009, 1010, 1015, 1016, + 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, + 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1036, 1036, 1044, + 1045, 1046, 1049, 1049, 1058, 1058, 1067, 1067, 1076, 1082, + 1082, 1091, 1097, 1103, 1109, 1115, 1121, 1127, 1127, 1135, + 1136, 1137, 1140, 1146, 1146, 1155, 1155, 1164, 1164, 1173, + 1173, 1182, 1182, 1193, 1194, 1195, 1200, 1201, 1202, 1203, + 1204, 1207, 1212, 1217, 1222, 1227, 1234, 1234, 1247, 1248, + 1249, 1254, 1255, 1256, 1257, 1258, 1259, 1262, 1268, 1274, + 1280, 1280, 1291, 1292, 1295, 1296, 1297, 1302, 1302, 1312, + 1312, 1322, 1323, 1324, 1327, 1330, 1331, 1334, 1334, 1343, + 1343, 1352, 1352, 1364, 1365, 1366, 1371, 1372, 1373, 1374, + 1375, 1376, 1379, 1385, 1391, 1397, 1403, 1409, 1418, 1418, + 1432, 1433, 1436, 1437, 1438, 1447, 1447, 1473, 1473, 1484, + 1485, 1486, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, + 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, + 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, + 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, + 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1540, 1540, + 1549, 1549, 1558, 1558, 1567, 1567, 1576, 1576, 1585, 1585, + 1594, 1594, 1605, 1611, 1617, 1623, 1623, 1631, 1632, 1633, + 1634, 1637, 1645, 1645, 1657, 1658, 1662, 1663, 1664, 1669, + 1669, 1677, 1678, 1679, 1684, 1685, 1686, 1687, 1688, 1689, + 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, + 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, + 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, + 1720, 1721, 1722, 1723, 1724, 1731, 1731, 1745, 1745, 1754, + 1755, 1758, 1759, 1760, 1767, 1767, 1782, 1782, 1796, 1797, + 1800, 1801, 1802, 1807, 1808, 1809, 1810, 1811, 1812, 1813, + 1814, 1815, 1816, 1819, 1821, 1827, 1829, 1829, 1838, 1838, + 1847, 1847, 1856, 1858, 1858, 1867, 1877, 1877, 1890, 1891, + 1896, 1897, 1898, 1905, 1905, 1917, 1917, 1929, 1930, 1935, + 1936, 1937, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, + 1952, 1955, 1957, 1957, 1966, 1968, 1970, 1976, 1985, 1985, + 1998, 1999, 2002, 2003, 2004, 2009, 2009, 2019, 2019, 2029, + 2030, 2031, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2045, + 2045, 2054, 2054, 2079, 2079, 2109, 2109, 2120, 2121, 2124, + 2125, 2126, 2131, 2131, 2140, 2140, 2149, 2150, 2153, 2154, + 2155, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, + 2170, 2171, 2172, 2173, 2174, 2175, 2178, 2178, 2187, 2187, + 2196, 2196, 2205, 2205, 2214, 2214, 2225, 2225, 2234, 2234, + 2243, 2243, 2252, 2252, 2261, 2261, 2270, 2270, 2279, 2279, + 2293, 2293, 2304, 2305, 2311, 2311, 2322, 2323, 2324, 2329, + 2329, 2339, 2340, 2343, 2344, 2345, 2350, 2351, 2352, 2353, + 2354, 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, + 2364, 2367, 2369, 2369, 2378, 2378, 2387, 2395, 2403, 2403, + 2414, 2415, 2416, 2421, 2422, 2423, 2424, 2425, 2428, 2428, + 2437, 2437, 2449, 2449, 2462, 2463, 2464, 2469, 2470, 2471, + 2472, 2473, 2474, 2477, 2483, 2483, 2492, 2498, 2498, 2508, + 2508, 2521, 2521, 2531, 2532, 2533, 2538, 2539, 2540, 2541, + 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, + 2552, 2553, 2554, 2555, 2558, 2564, 2564, 2573, 2579, 2579, + 2588, 2594, 2600, 2600, 2609, 2610, 2613, 2613, 2623, 2623, + 2633, 2640, 2647, 2647, 2656, 2656, 2666, 2666, 2676, 2676, + 2688, 2688, 2700, 2700, 2710, 2711, 2712, 2718, 2719, 2722, + 2722, 2733, 2741, 2741, 2754, 2755, 2756, 2762, 2762, 2770, + 2771, 2772, 2777, 2778, 2779, 2780, 2781, 2782, 2783, 2786, + 2792, 2792, 2801, 2801, 2812, 2813, 2814, 2819, 2819, 2827, + 2828, 2829, 2834, 2835, 2836, 2837, 2838, 2841, 2841, 2850, + 2856, 2862, 2868, 2868, 2877, 2877, 2888, 2889, 2890, 2895, + 2896, 2897, 2900, 2906 }; void @@ -6206,9 +6265,9 @@ namespace isc { namespace dhcp { #line 14 "dhcp4_parser.yy" } } // isc::dhcp -#line 6210 "dhcp4_parser.cc" +#line 6269 "dhcp4_parser.cc" -#line 2899 "dhcp4_parser.yy" +#line 2912 "dhcp4_parser.yy" void diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h index f57245ac01..01aaa7e262 100644 --- a/src/bin/dhcp4/dhcp4_parser.h +++ b/src/bin/dhcp4/dhcp4_parser.h @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.8.2. +// A Bison parser, made by GNU Bison 3.7.6. // Skeleton interface for Bison LALR(1) parsers in C++ @@ -133,18 +133,12 @@ using namespace std; # define YY_USE(E) /* empty */ #endif +#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ -# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") -# else -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else @@ -206,7 +200,7 @@ using namespace std; #line 14 "dhcp4_parser.yy" namespace isc { namespace dhcp { -#line 210 "dhcp4_parser.h" +#line 204 "dhcp4_parser.h" @@ -215,32 +209,27 @@ namespace isc { namespace dhcp { class Dhcp4Parser { public: -#ifdef PARSER4_STYPE -# ifdef __GNUC__ -# pragma GCC message "bison: do not #define PARSER4_STYPE in C++, use %define api.value.type" -# endif - typedef PARSER4_STYPE value_type; -#else +#ifndef PARSER4_STYPE /// A buffer to store and retrieve objects. /// /// Sort of a variant, but does not keep track of the nature /// of the stored data, since that knowledge is available /// via the current parser state. - class value_type + class semantic_type { public: /// Type of *this. - typedef value_type self_type; + typedef semantic_type self_type; /// Empty construction. - value_type () YY_NOEXCEPT - : yyraw_ () + semantic_type () YY_NOEXCEPT + : yybuffer_ () , yytypeid_ (YY_NULLPTR) {} /// Construct and fill. template <typename T> - value_type (YY_RVREF (T) t) + semantic_type (YY_RVREF (T) t) : yytypeid_ (&typeid (T)) { PARSER4__ASSERT (sizeof (T) <= size); @@ -249,13 +238,13 @@ namespace isc { namespace dhcp { #if 201103L <= YY_CPLUSPLUS /// Non copyable. - value_type (const self_type&) = delete; + semantic_type (const self_type&) = delete; /// Non copyable. self_type& operator= (const self_type&) = delete; #endif /// Destruction, allowed only if empty. - ~value_type () YY_NOEXCEPT + ~semantic_type () YY_NOEXCEPT { PARSER4__ASSERT (!yytypeid_); } @@ -399,7 +388,7 @@ namespace isc { namespace dhcp { private: #if YY_CPLUSPLUS < 201103L /// Non copyable. - value_type (const self_type&); + semantic_type (const self_type&); /// Non copyable. self_type& operator= (const self_type&); #endif @@ -409,7 +398,7 @@ namespace isc { namespace dhcp { T* yyas_ () YY_NOEXCEPT { - void *yyp = yyraw_; + void *yyp = yybuffer_.yyraw; return static_cast<T*> (yyp); } @@ -418,7 +407,7 @@ namespace isc { namespace dhcp { const T* yyas_ () const YY_NOEXCEPT { - const void *yyp = yyraw_; + const void *yyp = yybuffer_.yyraw; return static_cast<const T*> (yyp); } @@ -456,19 +445,18 @@ namespace isc { namespace dhcp { union { /// Strongest alignment constraints. - long double yyalign_me_; + long double yyalign_me; /// A buffer large enough to store any of the semantic values. - char yyraw_[size]; - }; + char yyraw[size]; + } yybuffer_; /// Whether the content is built: if defined, the name of the stored type. const std::type_info *yytypeid_; }; +#else + typedef PARSER4_STYPE semantic_type; #endif - /// Backward compatibility (Bison 3.8). - typedef value_type semantic_type; - /// Symbol locations. typedef location location_type; @@ -596,122 +584,123 @@ namespace isc { namespace dhcp { TOKEN_ENCAPSULATE = 352, // "encapsulate" TOKEN_ARRAY = 353, // "array" TOKEN_PARKED_PACKET_LIMIT = 354, // "parked-packet-limit" - TOKEN_SHARED_NETWORKS = 355, // "shared-networks" - TOKEN_POOLS = 356, // "pools" - TOKEN_POOL = 357, // "pool" - TOKEN_USER_CONTEXT = 358, // "user-context" - TOKEN_COMMENT = 359, // "comment" - TOKEN_SUBNET = 360, // "subnet" - TOKEN_INTERFACE = 361, // "interface" - TOKEN_ID = 362, // "id" - TOKEN_RESERVATION_MODE = 363, // "reservation-mode" - TOKEN_DISABLED = 364, // "disabled" - TOKEN_OUT_OF_POOL = 365, // "out-of-pool" - TOKEN_GLOBAL = 366, // "global" - TOKEN_ALL = 367, // "all" - TOKEN_RESERVATIONS_GLOBAL = 368, // "reservations-global" - TOKEN_RESERVATIONS_IN_SUBNET = 369, // "reservations-in-subnet" - TOKEN_RESERVATIONS_OUT_OF_POOL = 370, // "reservations-out-of-pool" - TOKEN_HOST_RESERVATION_IDENTIFIERS = 371, // "host-reservation-identifiers" - TOKEN_CLIENT_CLASSES = 372, // "client-classes" - TOKEN_REQUIRE_CLIENT_CLASSES = 373, // "require-client-classes" - TOKEN_TEST = 374, // "test" - TOKEN_TEMPLATE_TEST = 375, // "template-test" - TOKEN_ONLY_IF_REQUIRED = 376, // "only-if-required" - TOKEN_CLIENT_CLASS = 377, // "client-class" - TOKEN_RESERVATIONS = 378, // "reservations" - TOKEN_DUID = 379, // "duid" - TOKEN_HW_ADDRESS = 380, // "hw-address" - TOKEN_CIRCUIT_ID = 381, // "circuit-id" - TOKEN_CLIENT_ID = 382, // "client-id" - TOKEN_HOSTNAME = 383, // "hostname" - TOKEN_FLEX_ID = 384, // "flex-id" - TOKEN_RELAY = 385, // "relay" - TOKEN_IP_ADDRESS = 386, // "ip-address" - TOKEN_IP_ADDRESSES = 387, // "ip-addresses" - TOKEN_HOOKS_LIBRARIES = 388, // "hooks-libraries" - TOKEN_LIBRARY = 389, // "library" - TOKEN_PARAMETERS = 390, // "parameters" - TOKEN_EXPIRED_LEASES_PROCESSING = 391, // "expired-leases-processing" - TOKEN_RECLAIM_TIMER_WAIT_TIME = 392, // "reclaim-timer-wait-time" - TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 393, // "flush-reclaimed-timer-wait-time" - TOKEN_HOLD_RECLAIMED_TIME = 394, // "hold-reclaimed-time" - TOKEN_MAX_RECLAIM_LEASES = 395, // "max-reclaim-leases" - TOKEN_MAX_RECLAIM_TIME = 396, // "max-reclaim-time" - TOKEN_UNWARNED_RECLAIM_CYCLES = 397, // "unwarned-reclaim-cycles" - TOKEN_DHCP4O6_PORT = 398, // "dhcp4o6-port" - TOKEN_DHCP_MULTI_THREADING = 399, // "multi-threading" - TOKEN_ENABLE_MULTI_THREADING = 400, // "enable-multi-threading" - TOKEN_THREAD_POOL_SIZE = 401, // "thread-pool-size" - TOKEN_PACKET_QUEUE_SIZE = 402, // "packet-queue-size" - TOKEN_CONTROL_SOCKET = 403, // "control-socket" - TOKEN_SOCKET_TYPE = 404, // "socket-type" - TOKEN_SOCKET_NAME = 405, // "socket-name" - TOKEN_DHCP_QUEUE_CONTROL = 406, // "dhcp-queue-control" - TOKEN_ENABLE_QUEUE = 407, // "enable-queue" - TOKEN_QUEUE_TYPE = 408, // "queue-type" - TOKEN_CAPACITY = 409, // "capacity" - TOKEN_DHCP_DDNS = 410, // "dhcp-ddns" - TOKEN_ENABLE_UPDATES = 411, // "enable-updates" - TOKEN_QUALIFYING_SUFFIX = 412, // "qualifying-suffix" - TOKEN_SERVER_IP = 413, // "server-ip" - TOKEN_SERVER_PORT = 414, // "server-port" - TOKEN_SENDER_IP = 415, // "sender-ip" - TOKEN_SENDER_PORT = 416, // "sender-port" - TOKEN_MAX_QUEUE_SIZE = 417, // "max-queue-size" - TOKEN_NCR_PROTOCOL = 418, // "ncr-protocol" - TOKEN_NCR_FORMAT = 419, // "ncr-format" - TOKEN_OVERRIDE_NO_UPDATE = 420, // "override-no-update" - TOKEN_OVERRIDE_CLIENT_UPDATE = 421, // "override-client-update" - TOKEN_REPLACE_CLIENT_NAME = 422, // "replace-client-name" - TOKEN_GENERATED_PREFIX = 423, // "generated-prefix" - TOKEN_TCP = 424, // "tcp" - TOKEN_JSON = 425, // "JSON" - TOKEN_WHEN_PRESENT = 426, // "when-present" - TOKEN_NEVER = 427, // "never" - TOKEN_ALWAYS = 428, // "always" - TOKEN_WHEN_NOT_PRESENT = 429, // "when-not-present" - TOKEN_HOSTNAME_CHAR_SET = 430, // "hostname-char-set" - TOKEN_HOSTNAME_CHAR_REPLACEMENT = 431, // "hostname-char-replacement" - TOKEN_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 432, // "early-global-reservations-lookup" - TOKEN_IP_RESERVATIONS_UNIQUE = 433, // "ip-reservations-unique" - TOKEN_RESERVATIONS_LOOKUP_FIRST = 434, // "reservations-lookup-first" - TOKEN_LOGGERS = 435, // "loggers" - TOKEN_OUTPUT_OPTIONS = 436, // "output_options" - TOKEN_OUTPUT = 437, // "output" - TOKEN_DEBUGLEVEL = 438, // "debuglevel" - TOKEN_SEVERITY = 439, // "severity" - TOKEN_FLUSH = 440, // "flush" - TOKEN_MAXSIZE = 441, // "maxsize" - TOKEN_MAXVER = 442, // "maxver" - TOKEN_PATTERN = 443, // "pattern" - TOKEN_COMPATIBILITY = 444, // "compatibility" - TOKEN_LENIENT_OPTION_PARSING = 445, // "lenient-option-parsing" - TOKEN_IGNORE_RAI_LINK_SEL = 446, // "ignore-rai-link-selection" - TOKEN_TOPLEVEL_JSON = 447, // TOPLEVEL_JSON - TOKEN_TOPLEVEL_DHCP4 = 448, // TOPLEVEL_DHCP4 - TOKEN_SUB_DHCP4 = 449, // SUB_DHCP4 - TOKEN_SUB_INTERFACES4 = 450, // SUB_INTERFACES4 - TOKEN_SUB_SUBNET4 = 451, // SUB_SUBNET4 - TOKEN_SUB_POOL4 = 452, // SUB_POOL4 - TOKEN_SUB_RESERVATION = 453, // SUB_RESERVATION - TOKEN_SUB_OPTION_DEFS = 454, // SUB_OPTION_DEFS - TOKEN_SUB_OPTION_DEF = 455, // SUB_OPTION_DEF - TOKEN_SUB_OPTION_DATA = 456, // SUB_OPTION_DATA - TOKEN_SUB_HOOKS_LIBRARY = 457, // SUB_HOOKS_LIBRARY - TOKEN_SUB_DHCP_DDNS = 458, // SUB_DHCP_DDNS - TOKEN_SUB_CONFIG_CONTROL = 459, // SUB_CONFIG_CONTROL - TOKEN_STRING = 460, // "constant string" - TOKEN_INTEGER = 461, // "integer" - TOKEN_FLOAT = 462, // "floating point" - TOKEN_BOOLEAN = 463 // "boolean" + TOKEN_ALLOCATOR = 355, // "allocator" + TOKEN_SHARED_NETWORKS = 356, // "shared-networks" + TOKEN_POOLS = 357, // "pools" + TOKEN_POOL = 358, // "pool" + TOKEN_USER_CONTEXT = 359, // "user-context" + TOKEN_COMMENT = 360, // "comment" + TOKEN_SUBNET = 361, // "subnet" + TOKEN_INTERFACE = 362, // "interface" + TOKEN_ID = 363, // "id" + TOKEN_RESERVATION_MODE = 364, // "reservation-mode" + TOKEN_DISABLED = 365, // "disabled" + TOKEN_OUT_OF_POOL = 366, // "out-of-pool" + TOKEN_GLOBAL = 367, // "global" + TOKEN_ALL = 368, // "all" + TOKEN_RESERVATIONS_GLOBAL = 369, // "reservations-global" + TOKEN_RESERVATIONS_IN_SUBNET = 370, // "reservations-in-subnet" + TOKEN_RESERVATIONS_OUT_OF_POOL = 371, // "reservations-out-of-pool" + TOKEN_HOST_RESERVATION_IDENTIFIERS = 372, // "host-reservation-identifiers" + TOKEN_CLIENT_CLASSES = 373, // "client-classes" + TOKEN_REQUIRE_CLIENT_CLASSES = 374, // "require-client-classes" + TOKEN_TEST = 375, // "test" + TOKEN_TEMPLATE_TEST = 376, // "template-test" + TOKEN_ONLY_IF_REQUIRED = 377, // "only-if-required" + TOKEN_CLIENT_CLASS = 378, // "client-class" + TOKEN_RESERVATIONS = 379, // "reservations" + TOKEN_DUID = 380, // "duid" + TOKEN_HW_ADDRESS = 381, // "hw-address" + TOKEN_CIRCUIT_ID = 382, // "circuit-id" + TOKEN_CLIENT_ID = 383, // "client-id" + TOKEN_HOSTNAME = 384, // "hostname" + TOKEN_FLEX_ID = 385, // "flex-id" + TOKEN_RELAY = 386, // "relay" + TOKEN_IP_ADDRESS = 387, // "ip-address" + TOKEN_IP_ADDRESSES = 388, // "ip-addresses" + TOKEN_HOOKS_LIBRARIES = 389, // "hooks-libraries" + TOKEN_LIBRARY = 390, // "library" + TOKEN_PARAMETERS = 391, // "parameters" + TOKEN_EXPIRED_LEASES_PROCESSING = 392, // "expired-leases-processing" + TOKEN_RECLAIM_TIMER_WAIT_TIME = 393, // "reclaim-timer-wait-time" + TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 394, // "flush-reclaimed-timer-wait-time" + TOKEN_HOLD_RECLAIMED_TIME = 395, // "hold-reclaimed-time" + TOKEN_MAX_RECLAIM_LEASES = 396, // "max-reclaim-leases" + TOKEN_MAX_RECLAIM_TIME = 397, // "max-reclaim-time" + TOKEN_UNWARNED_RECLAIM_CYCLES = 398, // "unwarned-reclaim-cycles" + TOKEN_DHCP4O6_PORT = 399, // "dhcp4o6-port" + TOKEN_DHCP_MULTI_THREADING = 400, // "multi-threading" + TOKEN_ENABLE_MULTI_THREADING = 401, // "enable-multi-threading" + TOKEN_THREAD_POOL_SIZE = 402, // "thread-pool-size" + TOKEN_PACKET_QUEUE_SIZE = 403, // "packet-queue-size" + TOKEN_CONTROL_SOCKET = 404, // "control-socket" + TOKEN_SOCKET_TYPE = 405, // "socket-type" + TOKEN_SOCKET_NAME = 406, // "socket-name" + TOKEN_DHCP_QUEUE_CONTROL = 407, // "dhcp-queue-control" + TOKEN_ENABLE_QUEUE = 408, // "enable-queue" + TOKEN_QUEUE_TYPE = 409, // "queue-type" + TOKEN_CAPACITY = 410, // "capacity" + TOKEN_DHCP_DDNS = 411, // "dhcp-ddns" + TOKEN_ENABLE_UPDATES = 412, // "enable-updates" + TOKEN_QUALIFYING_SUFFIX = 413, // "qualifying-suffix" + TOKEN_SERVER_IP = 414, // "server-ip" + TOKEN_SERVER_PORT = 415, // "server-port" + TOKEN_SENDER_IP = 416, // "sender-ip" + TOKEN_SENDER_PORT = 417, // "sender-port" + TOKEN_MAX_QUEUE_SIZE = 418, // "max-queue-size" + TOKEN_NCR_PROTOCOL = 419, // "ncr-protocol" + TOKEN_NCR_FORMAT = 420, // "ncr-format" + TOKEN_OVERRIDE_NO_UPDATE = 421, // "override-no-update" + TOKEN_OVERRIDE_CLIENT_UPDATE = 422, // "override-client-update" + TOKEN_REPLACE_CLIENT_NAME = 423, // "replace-client-name" + TOKEN_GENERATED_PREFIX = 424, // "generated-prefix" + TOKEN_TCP = 425, // "tcp" + TOKEN_JSON = 426, // "JSON" + TOKEN_WHEN_PRESENT = 427, // "when-present" + TOKEN_NEVER = 428, // "never" + TOKEN_ALWAYS = 429, // "always" + TOKEN_WHEN_NOT_PRESENT = 430, // "when-not-present" + TOKEN_HOSTNAME_CHAR_SET = 431, // "hostname-char-set" + TOKEN_HOSTNAME_CHAR_REPLACEMENT = 432, // "hostname-char-replacement" + TOKEN_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 433, // "early-global-reservations-lookup" + TOKEN_IP_RESERVATIONS_UNIQUE = 434, // "ip-reservations-unique" + TOKEN_RESERVATIONS_LOOKUP_FIRST = 435, // "reservations-lookup-first" + TOKEN_LOGGERS = 436, // "loggers" + TOKEN_OUTPUT_OPTIONS = 437, // "output_options" + TOKEN_OUTPUT = 438, // "output" + TOKEN_DEBUGLEVEL = 439, // "debuglevel" + TOKEN_SEVERITY = 440, // "severity" + TOKEN_FLUSH = 441, // "flush" + TOKEN_MAXSIZE = 442, // "maxsize" + TOKEN_MAXVER = 443, // "maxver" + TOKEN_PATTERN = 444, // "pattern" + TOKEN_COMPATIBILITY = 445, // "compatibility" + TOKEN_LENIENT_OPTION_PARSING = 446, // "lenient-option-parsing" + TOKEN_IGNORE_RAI_LINK_SEL = 447, // "ignore-rai-link-selection" + TOKEN_TOPLEVEL_JSON = 448, // TOPLEVEL_JSON + TOKEN_TOPLEVEL_DHCP4 = 449, // TOPLEVEL_DHCP4 + TOKEN_SUB_DHCP4 = 450, // SUB_DHCP4 + TOKEN_SUB_INTERFACES4 = 451, // SUB_INTERFACES4 + TOKEN_SUB_SUBNET4 = 452, // SUB_SUBNET4 + TOKEN_SUB_POOL4 = 453, // SUB_POOL4 + TOKEN_SUB_RESERVATION = 454, // SUB_RESERVATION + TOKEN_SUB_OPTION_DEFS = 455, // SUB_OPTION_DEFS + TOKEN_SUB_OPTION_DEF = 456, // SUB_OPTION_DEF + TOKEN_SUB_OPTION_DATA = 457, // SUB_OPTION_DATA + TOKEN_SUB_HOOKS_LIBRARY = 458, // SUB_HOOKS_LIBRARY + TOKEN_SUB_DHCP_DDNS = 459, // SUB_DHCP_DDNS + TOKEN_SUB_CONFIG_CONTROL = 460, // SUB_CONFIG_CONTROL + TOKEN_STRING = 461, // "constant string" + TOKEN_INTEGER = 462, // "integer" + TOKEN_FLOAT = 463, // "floating point" + TOKEN_BOOLEAN = 464 // "boolean" }; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type yytokentype; }; /// Token kind, as returned by yylex. - typedef token::token_kind_type token_kind_type; + typedef token::yytokentype token_kind_type; /// Backward compatibility alias (Bison 3.6). typedef token_kind_type token_type; @@ -721,7 +710,7 @@ namespace isc { namespace dhcp { { enum symbol_kind_type { - YYNTOKENS = 209, ///< Number of tokens. + YYNTOKENS = 210, ///< Number of tokens. S_YYEMPTY = -2, S_YYEOF = 0, // "end of file" S_YYerror = 1, // error @@ -823,542 +812,545 @@ namespace isc { namespace dhcp { S_ENCAPSULATE = 97, // "encapsulate" S_ARRAY = 98, // "array" S_PARKED_PACKET_LIMIT = 99, // "parked-packet-limit" - S_SHARED_NETWORKS = 100, // "shared-networks" - S_POOLS = 101, // "pools" - S_POOL = 102, // "pool" - S_USER_CONTEXT = 103, // "user-context" - S_COMMENT = 104, // "comment" - S_SUBNET = 105, // "subnet" - S_INTERFACE = 106, // "interface" - S_ID = 107, // "id" - S_RESERVATION_MODE = 108, // "reservation-mode" - S_DISABLED = 109, // "disabled" - S_OUT_OF_POOL = 110, // "out-of-pool" - S_GLOBAL = 111, // "global" - S_ALL = 112, // "all" - S_RESERVATIONS_GLOBAL = 113, // "reservations-global" - S_RESERVATIONS_IN_SUBNET = 114, // "reservations-in-subnet" - S_RESERVATIONS_OUT_OF_POOL = 115, // "reservations-out-of-pool" - S_HOST_RESERVATION_IDENTIFIERS = 116, // "host-reservation-identifiers" - S_CLIENT_CLASSES = 117, // "client-classes" - S_REQUIRE_CLIENT_CLASSES = 118, // "require-client-classes" - S_TEST = 119, // "test" - S_TEMPLATE_TEST = 120, // "template-test" - S_ONLY_IF_REQUIRED = 121, // "only-if-required" - S_CLIENT_CLASS = 122, // "client-class" - S_RESERVATIONS = 123, // "reservations" - S_DUID = 124, // "duid" - S_HW_ADDRESS = 125, // "hw-address" - S_CIRCUIT_ID = 126, // "circuit-id" - S_CLIENT_ID = 127, // "client-id" - S_HOSTNAME = 128, // "hostname" - S_FLEX_ID = 129, // "flex-id" - S_RELAY = 130, // "relay" - S_IP_ADDRESS = 131, // "ip-address" - S_IP_ADDRESSES = 132, // "ip-addresses" - S_HOOKS_LIBRARIES = 133, // "hooks-libraries" - S_LIBRARY = 134, // "library" - S_PARAMETERS = 135, // "parameters" - S_EXPIRED_LEASES_PROCESSING = 136, // "expired-leases-processing" - S_RECLAIM_TIMER_WAIT_TIME = 137, // "reclaim-timer-wait-time" - S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 138, // "flush-reclaimed-timer-wait-time" - S_HOLD_RECLAIMED_TIME = 139, // "hold-reclaimed-time" - S_MAX_RECLAIM_LEASES = 140, // "max-reclaim-leases" - S_MAX_RECLAIM_TIME = 141, // "max-reclaim-time" - S_UNWARNED_RECLAIM_CYCLES = 142, // "unwarned-reclaim-cycles" - S_DHCP4O6_PORT = 143, // "dhcp4o6-port" - S_DHCP_MULTI_THREADING = 144, // "multi-threading" - S_ENABLE_MULTI_THREADING = 145, // "enable-multi-threading" - S_THREAD_POOL_SIZE = 146, // "thread-pool-size" - S_PACKET_QUEUE_SIZE = 147, // "packet-queue-size" - S_CONTROL_SOCKET = 148, // "control-socket" - S_SOCKET_TYPE = 149, // "socket-type" - S_SOCKET_NAME = 150, // "socket-name" - S_DHCP_QUEUE_CONTROL = 151, // "dhcp-queue-control" - S_ENABLE_QUEUE = 152, // "enable-queue" - S_QUEUE_TYPE = 153, // "queue-type" - S_CAPACITY = 154, // "capacity" - S_DHCP_DDNS = 155, // "dhcp-ddns" - S_ENABLE_UPDATES = 156, // "enable-updates" - S_QUALIFYING_SUFFIX = 157, // "qualifying-suffix" - S_SERVER_IP = 158, // "server-ip" - S_SERVER_PORT = 159, // "server-port" - S_SENDER_IP = 160, // "sender-ip" - S_SENDER_PORT = 161, // "sender-port" - S_MAX_QUEUE_SIZE = 162, // "max-queue-size" - S_NCR_PROTOCOL = 163, // "ncr-protocol" - S_NCR_FORMAT = 164, // "ncr-format" - S_OVERRIDE_NO_UPDATE = 165, // "override-no-update" - S_OVERRIDE_CLIENT_UPDATE = 166, // "override-client-update" - S_REPLACE_CLIENT_NAME = 167, // "replace-client-name" - S_GENERATED_PREFIX = 168, // "generated-prefix" - S_TCP = 169, // "tcp" - S_JSON = 170, // "JSON" - S_WHEN_PRESENT = 171, // "when-present" - S_NEVER = 172, // "never" - S_ALWAYS = 173, // "always" - S_WHEN_NOT_PRESENT = 174, // "when-not-present" - S_HOSTNAME_CHAR_SET = 175, // "hostname-char-set" - S_HOSTNAME_CHAR_REPLACEMENT = 176, // "hostname-char-replacement" - S_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 177, // "early-global-reservations-lookup" - S_IP_RESERVATIONS_UNIQUE = 178, // "ip-reservations-unique" - S_RESERVATIONS_LOOKUP_FIRST = 179, // "reservations-lookup-first" - S_LOGGERS = 180, // "loggers" - S_OUTPUT_OPTIONS = 181, // "output_options" - S_OUTPUT = 182, // "output" - S_DEBUGLEVEL = 183, // "debuglevel" - S_SEVERITY = 184, // "severity" - S_FLUSH = 185, // "flush" - S_MAXSIZE = 186, // "maxsize" - S_MAXVER = 187, // "maxver" - S_PATTERN = 188, // "pattern" - S_COMPATIBILITY = 189, // "compatibility" - S_LENIENT_OPTION_PARSING = 190, // "lenient-option-parsing" - S_IGNORE_RAI_LINK_SEL = 191, // "ignore-rai-link-selection" - S_TOPLEVEL_JSON = 192, // TOPLEVEL_JSON - S_TOPLEVEL_DHCP4 = 193, // TOPLEVEL_DHCP4 - S_SUB_DHCP4 = 194, // SUB_DHCP4 - S_SUB_INTERFACES4 = 195, // SUB_INTERFACES4 - S_SUB_SUBNET4 = 196, // SUB_SUBNET4 - S_SUB_POOL4 = 197, // SUB_POOL4 - S_SUB_RESERVATION = 198, // SUB_RESERVATION - S_SUB_OPTION_DEFS = 199, // SUB_OPTION_DEFS - S_SUB_OPTION_DEF = 200, // SUB_OPTION_DEF - S_SUB_OPTION_DATA = 201, // SUB_OPTION_DATA - S_SUB_HOOKS_LIBRARY = 202, // SUB_HOOKS_LIBRARY - S_SUB_DHCP_DDNS = 203, // SUB_DHCP_DDNS - S_SUB_CONFIG_CONTROL = 204, // SUB_CONFIG_CONTROL - S_STRING = 205, // "constant string" - S_INTEGER = 206, // "integer" - S_FLOAT = 207, // "floating point" - S_BOOLEAN = 208, // "boolean" - S_YYACCEPT = 209, // $accept - S_start = 210, // start - S_211_1 = 211, // $@1 - S_212_2 = 212, // $@2 - S_213_3 = 213, // $@3 - S_214_4 = 214, // $@4 - S_215_5 = 215, // $@5 - S_216_6 = 216, // $@6 - S_217_7 = 217, // $@7 - S_218_8 = 218, // $@8 - S_219_9 = 219, // $@9 - S_220_10 = 220, // $@10 - S_221_11 = 221, // $@11 - S_222_12 = 222, // $@12 - S_223_13 = 223, // $@13 - S_value = 224, // value - S_sub_json = 225, // sub_json - S_map2 = 226, // map2 - S_227_14 = 227, // $@14 - S_map_value = 228, // map_value - S_map_content = 229, // map_content - S_not_empty_map = 230, // not_empty_map - S_list_generic = 231, // list_generic - S_232_15 = 232, // $@15 - S_list_content = 233, // list_content - S_not_empty_list = 234, // not_empty_list - S_list_strings = 235, // list_strings - S_236_16 = 236, // $@16 - S_list_strings_content = 237, // list_strings_content - S_not_empty_list_strings = 238, // not_empty_list_strings - S_unknown_map_entry = 239, // unknown_map_entry - S_syntax_map = 240, // syntax_map - S_241_17 = 241, // $@17 - S_global_object = 242, // global_object - S_243_18 = 243, // $@18 - S_global_object_comma = 244, // global_object_comma - S_sub_dhcp4 = 245, // sub_dhcp4 - S_246_19 = 246, // $@19 - S_global_params = 247, // global_params - S_global_param = 248, // global_param - S_valid_lifetime = 249, // valid_lifetime - S_min_valid_lifetime = 250, // min_valid_lifetime - S_max_valid_lifetime = 251, // max_valid_lifetime - S_renew_timer = 252, // renew_timer - S_rebind_timer = 253, // rebind_timer - S_calculate_tee_times = 254, // calculate_tee_times - S_t1_percent = 255, // t1_percent - S_t2_percent = 256, // t2_percent - S_cache_threshold = 257, // cache_threshold - S_cache_max_age = 258, // cache_max_age - S_decline_probation_period = 259, // decline_probation_period - S_server_tag = 260, // server_tag - S_261_20 = 261, // $@20 - S_parked_packet_limit = 262, // parked_packet_limit - S_echo_client_id = 263, // echo_client_id - S_match_client_id = 264, // match_client_id - S_authoritative = 265, // authoritative - S_ddns_send_updates = 266, // ddns_send_updates - S_ddns_override_no_update = 267, // ddns_override_no_update - S_ddns_override_client_update = 268, // ddns_override_client_update - S_ddns_replace_client_name = 269, // ddns_replace_client_name - S_270_21 = 270, // $@21 - S_ddns_replace_client_name_value = 271, // ddns_replace_client_name_value - S_ddns_generated_prefix = 272, // ddns_generated_prefix + S_ALLOCATOR = 100, // "allocator" + S_SHARED_NETWORKS = 101, // "shared-networks" + S_POOLS = 102, // "pools" + S_POOL = 103, // "pool" + S_USER_CONTEXT = 104, // "user-context" + S_COMMENT = 105, // "comment" + S_SUBNET = 106, // "subnet" + S_INTERFACE = 107, // "interface" + S_ID = 108, // "id" + S_RESERVATION_MODE = 109, // "reservation-mode" + S_DISABLED = 110, // "disabled" + S_OUT_OF_POOL = 111, // "out-of-pool" + S_GLOBAL = 112, // "global" + S_ALL = 113, // "all" + S_RESERVATIONS_GLOBAL = 114, // "reservations-global" + S_RESERVATIONS_IN_SUBNET = 115, // "reservations-in-subnet" + S_RESERVATIONS_OUT_OF_POOL = 116, // "reservations-out-of-pool" + S_HOST_RESERVATION_IDENTIFIERS = 117, // "host-reservation-identifiers" + S_CLIENT_CLASSES = 118, // "client-classes" + S_REQUIRE_CLIENT_CLASSES = 119, // "require-client-classes" + S_TEST = 120, // "test" + S_TEMPLATE_TEST = 121, // "template-test" + S_ONLY_IF_REQUIRED = 122, // "only-if-required" + S_CLIENT_CLASS = 123, // "client-class" + S_RESERVATIONS = 124, // "reservations" + S_DUID = 125, // "duid" + S_HW_ADDRESS = 126, // "hw-address" + S_CIRCUIT_ID = 127, // "circuit-id" + S_CLIENT_ID = 128, // "client-id" + S_HOSTNAME = 129, // "hostname" + S_FLEX_ID = 130, // "flex-id" + S_RELAY = 131, // "relay" + S_IP_ADDRESS = 132, // "ip-address" + S_IP_ADDRESSES = 133, // "ip-addresses" + S_HOOKS_LIBRARIES = 134, // "hooks-libraries" + S_LIBRARY = 135, // "library" + S_PARAMETERS = 136, // "parameters" + S_EXPIRED_LEASES_PROCESSING = 137, // "expired-leases-processing" + S_RECLAIM_TIMER_WAIT_TIME = 138, // "reclaim-timer-wait-time" + S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 139, // "flush-reclaimed-timer-wait-time" + S_HOLD_RECLAIMED_TIME = 140, // "hold-reclaimed-time" + S_MAX_RECLAIM_LEASES = 141, // "max-reclaim-leases" + S_MAX_RECLAIM_TIME = 142, // "max-reclaim-time" + S_UNWARNED_RECLAIM_CYCLES = 143, // "unwarned-reclaim-cycles" + S_DHCP4O6_PORT = 144, // "dhcp4o6-port" + S_DHCP_MULTI_THREADING = 145, // "multi-threading" + S_ENABLE_MULTI_THREADING = 146, // "enable-multi-threading" + S_THREAD_POOL_SIZE = 147, // "thread-pool-size" + S_PACKET_QUEUE_SIZE = 148, // "packet-queue-size" + S_CONTROL_SOCKET = 149, // "control-socket" + S_SOCKET_TYPE = 150, // "socket-type" + S_SOCKET_NAME = 151, // "socket-name" + S_DHCP_QUEUE_CONTROL = 152, // "dhcp-queue-control" + S_ENABLE_QUEUE = 153, // "enable-queue" + S_QUEUE_TYPE = 154, // "queue-type" + S_CAPACITY = 155, // "capacity" + S_DHCP_DDNS = 156, // "dhcp-ddns" + S_ENABLE_UPDATES = 157, // "enable-updates" + S_QUALIFYING_SUFFIX = 158, // "qualifying-suffix" + S_SERVER_IP = 159, // "server-ip" + S_SERVER_PORT = 160, // "server-port" + S_SENDER_IP = 161, // "sender-ip" + S_SENDER_PORT = 162, // "sender-port" + S_MAX_QUEUE_SIZE = 163, // "max-queue-size" + S_NCR_PROTOCOL = 164, // "ncr-protocol" + S_NCR_FORMAT = 165, // "ncr-format" + S_OVERRIDE_NO_UPDATE = 166, // "override-no-update" + S_OVERRIDE_CLIENT_UPDATE = 167, // "override-client-update" + S_REPLACE_CLIENT_NAME = 168, // "replace-client-name" + S_GENERATED_PREFIX = 169, // "generated-prefix" + S_TCP = 170, // "tcp" + S_JSON = 171, // "JSON" + S_WHEN_PRESENT = 172, // "when-present" + S_NEVER = 173, // "never" + S_ALWAYS = 174, // "always" + S_WHEN_NOT_PRESENT = 175, // "when-not-present" + S_HOSTNAME_CHAR_SET = 176, // "hostname-char-set" + S_HOSTNAME_CHAR_REPLACEMENT = 177, // "hostname-char-replacement" + S_EARLY_GLOBAL_RESERVATIONS_LOOKUP = 178, // "early-global-reservations-lookup" + S_IP_RESERVATIONS_UNIQUE = 179, // "ip-reservations-unique" + S_RESERVATIONS_LOOKUP_FIRST = 180, // "reservations-lookup-first" + S_LOGGERS = 181, // "loggers" + S_OUTPUT_OPTIONS = 182, // "output_options" + S_OUTPUT = 183, // "output" + S_DEBUGLEVEL = 184, // "debuglevel" + S_SEVERITY = 185, // "severity" + S_FLUSH = 186, // "flush" + S_MAXSIZE = 187, // "maxsize" + S_MAXVER = 188, // "maxver" + S_PATTERN = 189, // "pattern" + S_COMPATIBILITY = 190, // "compatibility" + S_LENIENT_OPTION_PARSING = 191, // "lenient-option-parsing" + S_IGNORE_RAI_LINK_SEL = 192, // "ignore-rai-link-selection" + S_TOPLEVEL_JSON = 193, // TOPLEVEL_JSON + S_TOPLEVEL_DHCP4 = 194, // TOPLEVEL_DHCP4 + S_SUB_DHCP4 = 195, // SUB_DHCP4 + S_SUB_INTERFACES4 = 196, // SUB_INTERFACES4 + S_SUB_SUBNET4 = 197, // SUB_SUBNET4 + S_SUB_POOL4 = 198, // SUB_POOL4 + S_SUB_RESERVATION = 199, // SUB_RESERVATION + S_SUB_OPTION_DEFS = 200, // SUB_OPTION_DEFS + S_SUB_OPTION_DEF = 201, // SUB_OPTION_DEF + S_SUB_OPTION_DATA = 202, // SUB_OPTION_DATA + S_SUB_HOOKS_LIBRARY = 203, // SUB_HOOKS_LIBRARY + S_SUB_DHCP_DDNS = 204, // SUB_DHCP_DDNS + S_SUB_CONFIG_CONTROL = 205, // SUB_CONFIG_CONTROL + S_STRING = 206, // "constant string" + S_INTEGER = 207, // "integer" + S_FLOAT = 208, // "floating point" + S_BOOLEAN = 209, // "boolean" + S_YYACCEPT = 210, // $accept + S_start = 211, // start + S_212_1 = 212, // $@1 + S_213_2 = 213, // $@2 + S_214_3 = 214, // $@3 + S_215_4 = 215, // $@4 + S_216_5 = 216, // $@5 + S_217_6 = 217, // $@6 + S_218_7 = 218, // $@7 + S_219_8 = 219, // $@8 + S_220_9 = 220, // $@9 + S_221_10 = 221, // $@10 + S_222_11 = 222, // $@11 + S_223_12 = 223, // $@12 + S_224_13 = 224, // $@13 + S_value = 225, // value + S_sub_json = 226, // sub_json + S_map2 = 227, // map2 + S_228_14 = 228, // $@14 + S_map_value = 229, // map_value + S_map_content = 230, // map_content + S_not_empty_map = 231, // not_empty_map + S_list_generic = 232, // list_generic + S_233_15 = 233, // $@15 + S_list_content = 234, // list_content + S_not_empty_list = 235, // not_empty_list + S_list_strings = 236, // list_strings + S_237_16 = 237, // $@16 + S_list_strings_content = 238, // list_strings_content + S_not_empty_list_strings = 239, // not_empty_list_strings + S_unknown_map_entry = 240, // unknown_map_entry + S_syntax_map = 241, // syntax_map + S_242_17 = 242, // $@17 + S_global_object = 243, // global_object + S_244_18 = 244, // $@18 + S_global_object_comma = 245, // global_object_comma + S_sub_dhcp4 = 246, // sub_dhcp4 + S_247_19 = 247, // $@19 + S_global_params = 248, // global_params + S_global_param = 249, // global_param + S_valid_lifetime = 250, // valid_lifetime + S_min_valid_lifetime = 251, // min_valid_lifetime + S_max_valid_lifetime = 252, // max_valid_lifetime + S_renew_timer = 253, // renew_timer + S_rebind_timer = 254, // rebind_timer + S_calculate_tee_times = 255, // calculate_tee_times + S_t1_percent = 256, // t1_percent + S_t2_percent = 257, // t2_percent + S_cache_threshold = 258, // cache_threshold + S_cache_max_age = 259, // cache_max_age + S_decline_probation_period = 260, // decline_probation_period + S_server_tag = 261, // server_tag + S_262_20 = 262, // $@20 + S_parked_packet_limit = 263, // parked_packet_limit + S_allocator = 264, // allocator + S_265_21 = 265, // $@21 + S_echo_client_id = 266, // echo_client_id + S_match_client_id = 267, // match_client_id + S_authoritative = 268, // authoritative + S_ddns_send_updates = 269, // ddns_send_updates + S_ddns_override_no_update = 270, // ddns_override_no_update + S_ddns_override_client_update = 271, // ddns_override_client_update + S_ddns_replace_client_name = 272, // ddns_replace_client_name S_273_22 = 273, // $@22 - S_ddns_qualifying_suffix = 274, // ddns_qualifying_suffix - S_275_23 = 275, // $@23 - S_ddns_update_on_renew = 276, // ddns_update_on_renew - S_ddns_use_conflict_resolution = 277, // ddns_use_conflict_resolution - S_hostname_char_set = 278, // hostname_char_set - S_279_24 = 279, // $@24 - S_hostname_char_replacement = 280, // hostname_char_replacement - S_281_25 = 281, // $@25 - S_store_extended_info = 282, // store_extended_info - S_statistic_default_sample_count = 283, // statistic_default_sample_count - S_statistic_default_sample_age = 284, // statistic_default_sample_age - S_early_global_reservations_lookup = 285, // early_global_reservations_lookup - S_ip_reservations_unique = 286, // ip_reservations_unique - S_reservations_lookup_first = 287, // reservations_lookup_first - S_interfaces_config = 288, // interfaces_config - S_289_26 = 289, // $@26 - S_interfaces_config_params = 290, // interfaces_config_params - S_interfaces_config_param = 291, // interfaces_config_param - S_sub_interfaces4 = 292, // sub_interfaces4 - S_293_27 = 293, // $@27 - S_interfaces_list = 294, // interfaces_list - S_295_28 = 295, // $@28 - S_dhcp_socket_type = 296, // dhcp_socket_type - S_297_29 = 297, // $@29 - S_socket_type = 298, // socket_type - S_outbound_interface = 299, // outbound_interface + S_ddns_replace_client_name_value = 274, // ddns_replace_client_name_value + S_ddns_generated_prefix = 275, // ddns_generated_prefix + S_276_23 = 276, // $@23 + S_ddns_qualifying_suffix = 277, // ddns_qualifying_suffix + S_278_24 = 278, // $@24 + S_ddns_update_on_renew = 279, // ddns_update_on_renew + S_ddns_use_conflict_resolution = 280, // ddns_use_conflict_resolution + S_hostname_char_set = 281, // hostname_char_set + S_282_25 = 282, // $@25 + S_hostname_char_replacement = 283, // hostname_char_replacement + S_284_26 = 284, // $@26 + S_store_extended_info = 285, // store_extended_info + S_statistic_default_sample_count = 286, // statistic_default_sample_count + S_statistic_default_sample_age = 287, // statistic_default_sample_age + S_early_global_reservations_lookup = 288, // early_global_reservations_lookup + S_ip_reservations_unique = 289, // ip_reservations_unique + S_reservations_lookup_first = 290, // reservations_lookup_first + S_interfaces_config = 291, // interfaces_config + S_292_27 = 292, // $@27 + S_interfaces_config_params = 293, // interfaces_config_params + S_interfaces_config_param = 294, // interfaces_config_param + S_sub_interfaces4 = 295, // sub_interfaces4 + S_296_28 = 296, // $@28 + S_interfaces_list = 297, // interfaces_list + S_298_29 = 298, // $@29 + S_dhcp_socket_type = 299, // dhcp_socket_type S_300_30 = 300, // $@30 - S_outbound_interface_value = 301, // outbound_interface_value - S_re_detect = 302, // re_detect - S_service_sockets_require_all = 303, // service_sockets_require_all - S_service_sockets_retry_wait_time = 304, // service_sockets_retry_wait_time - S_service_sockets_max_retries = 305, // service_sockets_max_retries - S_lease_database = 306, // lease_database - S_307_31 = 307, // $@31 - S_sanity_checks = 308, // sanity_checks - S_309_32 = 309, // $@32 - S_sanity_checks_params = 310, // sanity_checks_params - S_sanity_checks_param = 311, // sanity_checks_param - S_lease_checks = 312, // lease_checks - S_313_33 = 313, // $@33 - S_extended_info_checks = 314, // extended_info_checks - S_315_34 = 315, // $@34 - S_hosts_database = 316, // hosts_database - S_317_35 = 317, // $@35 - S_hosts_databases = 318, // hosts_databases - S_319_36 = 319, // $@36 - S_database_list = 320, // database_list - S_not_empty_database_list = 321, // not_empty_database_list - S_database = 322, // database - S_323_37 = 323, // $@37 - S_database_map_params = 324, // database_map_params - S_database_map_param = 325, // database_map_param - S_database_type = 326, // database_type - S_327_38 = 327, // $@38 - S_db_type = 328, // db_type - S_user = 329, // user + S_socket_type = 301, // socket_type + S_outbound_interface = 302, // outbound_interface + S_303_31 = 303, // $@31 + S_outbound_interface_value = 304, // outbound_interface_value + S_re_detect = 305, // re_detect + S_service_sockets_require_all = 306, // service_sockets_require_all + S_service_sockets_retry_wait_time = 307, // service_sockets_retry_wait_time + S_service_sockets_max_retries = 308, // service_sockets_max_retries + S_lease_database = 309, // lease_database + S_310_32 = 310, // $@32 + S_sanity_checks = 311, // sanity_checks + S_312_33 = 312, // $@33 + S_sanity_checks_params = 313, // sanity_checks_params + S_sanity_checks_param = 314, // sanity_checks_param + S_lease_checks = 315, // lease_checks + S_316_34 = 316, // $@34 + S_extended_info_checks = 317, // extended_info_checks + S_318_35 = 318, // $@35 + S_hosts_database = 319, // hosts_database + S_320_36 = 320, // $@36 + S_hosts_databases = 321, // hosts_databases + S_322_37 = 322, // $@37 + S_database_list = 323, // database_list + S_not_empty_database_list = 324, // not_empty_database_list + S_database = 325, // database + S_326_38 = 326, // $@38 + S_database_map_params = 327, // database_map_params + S_database_map_param = 328, // database_map_param + S_database_type = 329, // database_type S_330_39 = 330, // $@39 - S_password = 331, // password - S_332_40 = 332, // $@40 - S_host = 333, // host - S_334_41 = 334, // $@41 - S_port = 335, // port - S_name = 336, // name + S_db_type = 331, // db_type + S_user = 332, // user + S_333_40 = 333, // $@40 + S_password = 334, // password + S_335_41 = 335, // $@41 + S_host = 336, // host S_337_42 = 337, // $@42 - S_persist = 338, // persist - S_lfc_interval = 339, // lfc_interval - S_readonly = 340, // readonly - S_connect_timeout = 341, // connect_timeout - S_max_reconnect_tries = 342, // max_reconnect_tries - S_reconnect_wait_time = 343, // reconnect_wait_time - S_on_fail = 344, // on_fail - S_345_43 = 345, // $@43 - S_on_fail_mode = 346, // on_fail_mode - S_max_row_errors = 347, // max_row_errors - S_trust_anchor = 348, // trust_anchor - S_349_44 = 349, // $@44 - S_cert_file = 350, // cert_file - S_351_45 = 351, // $@45 - S_key_file = 352, // key_file - S_353_46 = 353, // $@46 - S_cipher_list = 354, // cipher_list - S_355_47 = 355, // $@47 - S_host_reservation_identifiers = 356, // host_reservation_identifiers - S_357_48 = 357, // $@48 - S_host_reservation_identifiers_list = 358, // host_reservation_identifiers_list - S_host_reservation_identifier = 359, // host_reservation_identifier - S_duid_id = 360, // duid_id - S_hw_address_id = 361, // hw_address_id - S_circuit_id = 362, // circuit_id - S_client_id = 363, // client_id - S_flex_id = 364, // flex_id - S_dhcp_multi_threading = 365, // dhcp_multi_threading - S_366_49 = 366, // $@49 - S_multi_threading_params = 367, // multi_threading_params - S_multi_threading_param = 368, // multi_threading_param - S_enable_multi_threading = 369, // enable_multi_threading - S_thread_pool_size = 370, // thread_pool_size - S_packet_queue_size = 371, // packet_queue_size - S_hooks_libraries = 372, // hooks_libraries - S_373_50 = 373, // $@50 - S_hooks_libraries_list = 374, // hooks_libraries_list - S_not_empty_hooks_libraries_list = 375, // not_empty_hooks_libraries_list - S_hooks_library = 376, // hooks_library - S_377_51 = 377, // $@51 - S_sub_hooks_library = 378, // sub_hooks_library - S_379_52 = 379, // $@52 - S_hooks_params = 380, // hooks_params - S_hooks_param = 381, // hooks_param - S_library = 382, // library - S_383_53 = 383, // $@53 - S_parameters = 384, // parameters - S_385_54 = 385, // $@54 - S_expired_leases_processing = 386, // expired_leases_processing - S_387_55 = 387, // $@55 - S_expired_leases_params = 388, // expired_leases_params - S_expired_leases_param = 389, // expired_leases_param - S_reclaim_timer_wait_time = 390, // reclaim_timer_wait_time - S_flush_reclaimed_timer_wait_time = 391, // flush_reclaimed_timer_wait_time - S_hold_reclaimed_time = 392, // hold_reclaimed_time - S_max_reclaim_leases = 393, // max_reclaim_leases - S_max_reclaim_time = 394, // max_reclaim_time - S_unwarned_reclaim_cycles = 395, // unwarned_reclaim_cycles - S_subnet4_list = 396, // subnet4_list - S_397_56 = 397, // $@56 - S_subnet4_list_content = 398, // subnet4_list_content - S_not_empty_subnet4_list = 399, // not_empty_subnet4_list - S_subnet4 = 400, // subnet4 - S_401_57 = 401, // $@57 - S_sub_subnet4 = 402, // sub_subnet4 - S_403_58 = 403, // $@58 - S_subnet4_params = 404, // subnet4_params - S_subnet4_param = 405, // subnet4_param - S_subnet = 406, // subnet - S_407_59 = 407, // $@59 - S_subnet_4o6_interface = 408, // subnet_4o6_interface - S_409_60 = 409, // $@60 - S_subnet_4o6_interface_id = 410, // subnet_4o6_interface_id - S_411_61 = 411, // $@61 - S_subnet_4o6_subnet = 412, // subnet_4o6_subnet - S_413_62 = 413, // $@62 - S_interface = 414, // interface - S_415_63 = 415, // $@63 - S_client_class = 416, // client_class - S_417_64 = 417, // $@64 - S_require_client_classes = 418, // require_client_classes - S_419_65 = 419, // $@65 - S_reservations_global = 420, // reservations_global - S_reservations_in_subnet = 421, // reservations_in_subnet - S_reservations_out_of_pool = 422, // reservations_out_of_pool - S_reservation_mode = 423, // reservation_mode - S_424_66 = 424, // $@66 - S_hr_mode = 425, // hr_mode - S_id = 426, // id - S_shared_networks = 427, // shared_networks - S_428_67 = 428, // $@67 - S_shared_networks_content = 429, // shared_networks_content - S_shared_networks_list = 430, // shared_networks_list - S_shared_network = 431, // shared_network - S_432_68 = 432, // $@68 - S_shared_network_params = 433, // shared_network_params - S_shared_network_param = 434, // shared_network_param - S_option_def_list = 435, // option_def_list - S_436_69 = 436, // $@69 - S_sub_option_def_list = 437, // sub_option_def_list - S_438_70 = 438, // $@70 - S_option_def_list_content = 439, // option_def_list_content - S_not_empty_option_def_list = 440, // not_empty_option_def_list - S_option_def_entry = 441, // option_def_entry - S_442_71 = 442, // $@71 - S_sub_option_def = 443, // sub_option_def - S_444_72 = 444, // $@72 - S_option_def_params = 445, // option_def_params - S_not_empty_option_def_params = 446, // not_empty_option_def_params - S_option_def_param = 447, // option_def_param - S_option_def_name = 448, // option_def_name - S_code = 449, // code - S_option_def_code = 450, // option_def_code - S_option_def_type = 451, // option_def_type - S_452_73 = 452, // $@73 - S_option_def_record_types = 453, // option_def_record_types - S_454_74 = 454, // $@74 - S_space = 455, // space - S_456_75 = 456, // $@75 - S_option_def_space = 457, // option_def_space - S_option_def_encapsulate = 458, // option_def_encapsulate + S_port = 338, // port + S_name = 339, // name + S_340_43 = 340, // $@43 + S_persist = 341, // persist + S_lfc_interval = 342, // lfc_interval + S_readonly = 343, // readonly + S_connect_timeout = 344, // connect_timeout + S_max_reconnect_tries = 345, // max_reconnect_tries + S_reconnect_wait_time = 346, // reconnect_wait_time + S_on_fail = 347, // on_fail + S_348_44 = 348, // $@44 + S_on_fail_mode = 349, // on_fail_mode + S_max_row_errors = 350, // max_row_errors + S_trust_anchor = 351, // trust_anchor + S_352_45 = 352, // $@45 + S_cert_file = 353, // cert_file + S_354_46 = 354, // $@46 + S_key_file = 355, // key_file + S_356_47 = 356, // $@47 + S_cipher_list = 357, // cipher_list + S_358_48 = 358, // $@48 + S_host_reservation_identifiers = 359, // host_reservation_identifiers + S_360_49 = 360, // $@49 + S_host_reservation_identifiers_list = 361, // host_reservation_identifiers_list + S_host_reservation_identifier = 362, // host_reservation_identifier + S_duid_id = 363, // duid_id + S_hw_address_id = 364, // hw_address_id + S_circuit_id = 365, // circuit_id + S_client_id = 366, // client_id + S_flex_id = 367, // flex_id + S_dhcp_multi_threading = 368, // dhcp_multi_threading + S_369_50 = 369, // $@50 + S_multi_threading_params = 370, // multi_threading_params + S_multi_threading_param = 371, // multi_threading_param + S_enable_multi_threading = 372, // enable_multi_threading + S_thread_pool_size = 373, // thread_pool_size + S_packet_queue_size = 374, // packet_queue_size + S_hooks_libraries = 375, // hooks_libraries + S_376_51 = 376, // $@51 + S_hooks_libraries_list = 377, // hooks_libraries_list + S_not_empty_hooks_libraries_list = 378, // not_empty_hooks_libraries_list + S_hooks_library = 379, // hooks_library + S_380_52 = 380, // $@52 + S_sub_hooks_library = 381, // sub_hooks_library + S_382_53 = 382, // $@53 + S_hooks_params = 383, // hooks_params + S_hooks_param = 384, // hooks_param + S_library = 385, // library + S_386_54 = 386, // $@54 + S_parameters = 387, // parameters + S_388_55 = 388, // $@55 + S_expired_leases_processing = 389, // expired_leases_processing + S_390_56 = 390, // $@56 + S_expired_leases_params = 391, // expired_leases_params + S_expired_leases_param = 392, // expired_leases_param + S_reclaim_timer_wait_time = 393, // reclaim_timer_wait_time + S_flush_reclaimed_timer_wait_time = 394, // flush_reclaimed_timer_wait_time + S_hold_reclaimed_time = 395, // hold_reclaimed_time + S_max_reclaim_leases = 396, // max_reclaim_leases + S_max_reclaim_time = 397, // max_reclaim_time + S_unwarned_reclaim_cycles = 398, // unwarned_reclaim_cycles + S_subnet4_list = 399, // subnet4_list + S_400_57 = 400, // $@57 + S_subnet4_list_content = 401, // subnet4_list_content + S_not_empty_subnet4_list = 402, // not_empty_subnet4_list + S_subnet4 = 403, // subnet4 + S_404_58 = 404, // $@58 + S_sub_subnet4 = 405, // sub_subnet4 + S_406_59 = 406, // $@59 + S_subnet4_params = 407, // subnet4_params + S_subnet4_param = 408, // subnet4_param + S_subnet = 409, // subnet + S_410_60 = 410, // $@60 + S_subnet_4o6_interface = 411, // subnet_4o6_interface + S_412_61 = 412, // $@61 + S_subnet_4o6_interface_id = 413, // subnet_4o6_interface_id + S_414_62 = 414, // $@62 + S_subnet_4o6_subnet = 415, // subnet_4o6_subnet + S_416_63 = 416, // $@63 + S_interface = 417, // interface + S_418_64 = 418, // $@64 + S_client_class = 419, // client_class + S_420_65 = 420, // $@65 + S_require_client_classes = 421, // require_client_classes + S_422_66 = 422, // $@66 + S_reservations_global = 423, // reservations_global + S_reservations_in_subnet = 424, // reservations_in_subnet + S_reservations_out_of_pool = 425, // reservations_out_of_pool + S_reservation_mode = 426, // reservation_mode + S_427_67 = 427, // $@67 + S_hr_mode = 428, // hr_mode + S_id = 429, // id + S_shared_networks = 430, // shared_networks + S_431_68 = 431, // $@68 + S_shared_networks_content = 432, // shared_networks_content + S_shared_networks_list = 433, // shared_networks_list + S_shared_network = 434, // shared_network + S_435_69 = 435, // $@69 + S_shared_network_params = 436, // shared_network_params + S_shared_network_param = 437, // shared_network_param + S_option_def_list = 438, // option_def_list + S_439_70 = 439, // $@70 + S_sub_option_def_list = 440, // sub_option_def_list + S_441_71 = 441, // $@71 + S_option_def_list_content = 442, // option_def_list_content + S_not_empty_option_def_list = 443, // not_empty_option_def_list + S_option_def_entry = 444, // option_def_entry + S_445_72 = 445, // $@72 + S_sub_option_def = 446, // sub_option_def + S_447_73 = 447, // $@73 + S_option_def_params = 448, // option_def_params + S_not_empty_option_def_params = 449, // not_empty_option_def_params + S_option_def_param = 450, // option_def_param + S_option_def_name = 451, // option_def_name + S_code = 452, // code + S_option_def_code = 453, // option_def_code + S_option_def_type = 454, // option_def_type + S_455_74 = 455, // $@74 + S_option_def_record_types = 456, // option_def_record_types + S_457_75 = 457, // $@75 + S_space = 458, // space S_459_76 = 459, // $@76 - S_option_def_array = 460, // option_def_array - S_option_data_list = 461, // option_data_list + S_option_def_space = 460, // option_def_space + S_option_def_encapsulate = 461, // option_def_encapsulate S_462_77 = 462, // $@77 - S_option_data_list_content = 463, // option_data_list_content - S_not_empty_option_data_list = 464, // not_empty_option_data_list - S_option_data_entry = 465, // option_data_entry - S_466_78 = 466, // $@78 - S_sub_option_data = 467, // sub_option_data - S_468_79 = 468, // $@79 - S_option_data_params = 469, // option_data_params - S_not_empty_option_data_params = 470, // not_empty_option_data_params - S_option_data_param = 471, // option_data_param - S_option_data_name = 472, // option_data_name - S_option_data_data = 473, // option_data_data - S_474_80 = 474, // $@80 - S_option_data_code = 475, // option_data_code - S_option_data_space = 476, // option_data_space - S_option_data_csv_format = 477, // option_data_csv_format - S_option_data_always_send = 478, // option_data_always_send - S_pools_list = 479, // pools_list - S_480_81 = 480, // $@81 - S_pools_list_content = 481, // pools_list_content - S_not_empty_pools_list = 482, // not_empty_pools_list - S_pool_list_entry = 483, // pool_list_entry - S_484_82 = 484, // $@82 - S_sub_pool4 = 485, // sub_pool4 - S_486_83 = 486, // $@83 - S_pool_params = 487, // pool_params - S_pool_param = 488, // pool_param - S_pool_entry = 489, // pool_entry - S_490_84 = 490, // $@84 - S_user_context = 491, // user_context - S_492_85 = 492, // $@85 - S_comment = 493, // comment - S_494_86 = 494, // $@86 - S_reservations = 495, // reservations - S_496_87 = 496, // $@87 - S_reservations_list = 497, // reservations_list - S_not_empty_reservations_list = 498, // not_empty_reservations_list - S_reservation = 499, // reservation - S_500_88 = 500, // $@88 - S_sub_reservation = 501, // sub_reservation - S_502_89 = 502, // $@89 - S_reservation_params = 503, // reservation_params - S_not_empty_reservation_params = 504, // not_empty_reservation_params - S_reservation_param = 505, // reservation_param - S_next_server = 506, // next_server - S_507_90 = 507, // $@90 - S_server_hostname = 508, // server_hostname - S_509_91 = 509, // $@91 - S_boot_file_name = 510, // boot_file_name - S_511_92 = 511, // $@92 - S_ip_address = 512, // ip_address - S_513_93 = 513, // $@93 - S_ip_addresses = 514, // ip_addresses - S_515_94 = 515, // $@94 - S_duid = 516, // duid - S_517_95 = 517, // $@95 - S_hw_address = 518, // hw_address - S_519_96 = 519, // $@96 - S_client_id_value = 520, // client_id_value - S_521_97 = 521, // $@97 - S_circuit_id_value = 522, // circuit_id_value - S_523_98 = 523, // $@98 - S_flex_id_value = 524, // flex_id_value - S_525_99 = 525, // $@99 - S_hostname = 526, // hostname - S_527_100 = 527, // $@100 - S_reservation_client_classes = 528, // reservation_client_classes - S_529_101 = 529, // $@101 - S_relay = 530, // relay - S_531_102 = 531, // $@102 - S_relay_map = 532, // relay_map - S_client_classes = 533, // client_classes + S_option_def_array = 463, // option_def_array + S_option_data_list = 464, // option_data_list + S_465_78 = 465, // $@78 + S_option_data_list_content = 466, // option_data_list_content + S_not_empty_option_data_list = 467, // not_empty_option_data_list + S_option_data_entry = 468, // option_data_entry + S_469_79 = 469, // $@79 + S_sub_option_data = 470, // sub_option_data + S_471_80 = 471, // $@80 + S_option_data_params = 472, // option_data_params + S_not_empty_option_data_params = 473, // not_empty_option_data_params + S_option_data_param = 474, // option_data_param + S_option_data_name = 475, // option_data_name + S_option_data_data = 476, // option_data_data + S_477_81 = 477, // $@81 + S_option_data_code = 478, // option_data_code + S_option_data_space = 479, // option_data_space + S_option_data_csv_format = 480, // option_data_csv_format + S_option_data_always_send = 481, // option_data_always_send + S_pools_list = 482, // pools_list + S_483_82 = 483, // $@82 + S_pools_list_content = 484, // pools_list_content + S_not_empty_pools_list = 485, // not_empty_pools_list + S_pool_list_entry = 486, // pool_list_entry + S_487_83 = 487, // $@83 + S_sub_pool4 = 488, // sub_pool4 + S_489_84 = 489, // $@84 + S_pool_params = 490, // pool_params + S_pool_param = 491, // pool_param + S_pool_entry = 492, // pool_entry + S_493_85 = 493, // $@85 + S_user_context = 494, // user_context + S_495_86 = 495, // $@86 + S_comment = 496, // comment + S_497_87 = 497, // $@87 + S_reservations = 498, // reservations + S_499_88 = 499, // $@88 + S_reservations_list = 500, // reservations_list + S_not_empty_reservations_list = 501, // not_empty_reservations_list + S_reservation = 502, // reservation + S_503_89 = 503, // $@89 + S_sub_reservation = 504, // sub_reservation + S_505_90 = 505, // $@90 + S_reservation_params = 506, // reservation_params + S_not_empty_reservation_params = 507, // not_empty_reservation_params + S_reservation_param = 508, // reservation_param + S_next_server = 509, // next_server + S_510_91 = 510, // $@91 + S_server_hostname = 511, // server_hostname + S_512_92 = 512, // $@92 + S_boot_file_name = 513, // boot_file_name + S_514_93 = 514, // $@93 + S_ip_address = 515, // ip_address + S_516_94 = 516, // $@94 + S_ip_addresses = 517, // ip_addresses + S_518_95 = 518, // $@95 + S_duid = 519, // duid + S_520_96 = 520, // $@96 + S_hw_address = 521, // hw_address + S_522_97 = 522, // $@97 + S_client_id_value = 523, // client_id_value + S_524_98 = 524, // $@98 + S_circuit_id_value = 525, // circuit_id_value + S_526_99 = 526, // $@99 + S_flex_id_value = 527, // flex_id_value + S_528_100 = 528, // $@100 + S_hostname = 529, // hostname + S_530_101 = 530, // $@101 + S_reservation_client_classes = 531, // reservation_client_classes + S_532_102 = 532, // $@102 + S_relay = 533, // relay S_534_103 = 534, // $@103 - S_client_classes_list = 535, // client_classes_list - S_client_class_entry = 536, // client_class_entry + S_relay_map = 535, // relay_map + S_client_classes = 536, // client_classes S_537_104 = 537, // $@104 - S_client_class_params = 538, // client_class_params - S_not_empty_client_class_params = 539, // not_empty_client_class_params - S_client_class_param = 540, // client_class_param - S_client_class_name = 541, // client_class_name - S_client_class_test = 542, // client_class_test - S_543_105 = 543, // $@105 - S_client_class_template_test = 544, // client_class_template_test - S_545_106 = 545, // $@106 - S_only_if_required = 546, // only_if_required - S_dhcp4o6_port = 547, // dhcp4o6_port - S_control_socket = 548, // control_socket - S_549_107 = 549, // $@107 - S_control_socket_params = 550, // control_socket_params - S_control_socket_param = 551, // control_socket_param - S_control_socket_type = 552, // control_socket_type - S_553_108 = 553, // $@108 - S_control_socket_name = 554, // control_socket_name - S_555_109 = 555, // $@109 - S_dhcp_queue_control = 556, // dhcp_queue_control - S_557_110 = 557, // $@110 - S_queue_control_params = 558, // queue_control_params - S_queue_control_param = 559, // queue_control_param - S_enable_queue = 560, // enable_queue - S_queue_type = 561, // queue_type - S_562_111 = 562, // $@111 - S_capacity = 563, // capacity - S_arbitrary_map_entry = 564, // arbitrary_map_entry + S_client_classes_list = 538, // client_classes_list + S_client_class_entry = 539, // client_class_entry + S_540_105 = 540, // $@105 + S_client_class_params = 541, // client_class_params + S_not_empty_client_class_params = 542, // not_empty_client_class_params + S_client_class_param = 543, // client_class_param + S_client_class_name = 544, // client_class_name + S_client_class_test = 545, // client_class_test + S_546_106 = 546, // $@106 + S_client_class_template_test = 547, // client_class_template_test + S_548_107 = 548, // $@107 + S_only_if_required = 549, // only_if_required + S_dhcp4o6_port = 550, // dhcp4o6_port + S_control_socket = 551, // control_socket + S_552_108 = 552, // $@108 + S_control_socket_params = 553, // control_socket_params + S_control_socket_param = 554, // control_socket_param + S_control_socket_type = 555, // control_socket_type + S_556_109 = 556, // $@109 + S_control_socket_name = 557, // control_socket_name + S_558_110 = 558, // $@110 + S_dhcp_queue_control = 559, // dhcp_queue_control + S_560_111 = 560, // $@111 + S_queue_control_params = 561, // queue_control_params + S_queue_control_param = 562, // queue_control_param + S_enable_queue = 563, // enable_queue + S_queue_type = 564, // queue_type S_565_112 = 565, // $@112 - S_dhcp_ddns = 566, // dhcp_ddns - S_567_113 = 567, // $@113 - S_sub_dhcp_ddns = 568, // sub_dhcp_ddns - S_569_114 = 569, // $@114 - S_dhcp_ddns_params = 570, // dhcp_ddns_params - S_dhcp_ddns_param = 571, // dhcp_ddns_param - S_enable_updates = 572, // enable_updates - S_server_ip = 573, // server_ip - S_574_115 = 574, // $@115 - S_server_port = 575, // server_port - S_sender_ip = 576, // sender_ip + S_capacity = 566, // capacity + S_arbitrary_map_entry = 567, // arbitrary_map_entry + S_568_113 = 568, // $@113 + S_dhcp_ddns = 569, // dhcp_ddns + S_570_114 = 570, // $@114 + S_sub_dhcp_ddns = 571, // sub_dhcp_ddns + S_572_115 = 572, // $@115 + S_dhcp_ddns_params = 573, // dhcp_ddns_params + S_dhcp_ddns_param = 574, // dhcp_ddns_param + S_enable_updates = 575, // enable_updates + S_server_ip = 576, // server_ip S_577_116 = 577, // $@116 - S_sender_port = 578, // sender_port - S_max_queue_size = 579, // max_queue_size - S_ncr_protocol = 580, // ncr_protocol - S_581_117 = 581, // $@117 - S_ncr_protocol_value = 582, // ncr_protocol_value - S_ncr_format = 583, // ncr_format + S_server_port = 578, // server_port + S_sender_ip = 579, // sender_ip + S_580_117 = 580, // $@117 + S_sender_port = 581, // sender_port + S_max_queue_size = 582, // max_queue_size + S_ncr_protocol = 583, // ncr_protocol S_584_118 = 584, // $@118 - S_dep_qualifying_suffix = 585, // dep_qualifying_suffix - S_586_119 = 586, // $@119 - S_dep_override_no_update = 587, // dep_override_no_update - S_dep_override_client_update = 588, // dep_override_client_update - S_dep_replace_client_name = 589, // dep_replace_client_name - S_590_120 = 590, // $@120 - S_dep_generated_prefix = 591, // dep_generated_prefix - S_592_121 = 592, // $@121 - S_dep_hostname_char_set = 593, // dep_hostname_char_set - S_594_122 = 594, // $@122 - S_dep_hostname_char_replacement = 595, // dep_hostname_char_replacement - S_596_123 = 596, // $@123 - S_config_control = 597, // config_control - S_598_124 = 598, // $@124 - S_sub_config_control = 599, // sub_config_control - S_600_125 = 600, // $@125 - S_config_control_params = 601, // config_control_params - S_config_control_param = 602, // config_control_param - S_config_databases = 603, // config_databases - S_604_126 = 604, // $@126 - S_config_fetch_wait_time = 605, // config_fetch_wait_time - S_loggers = 606, // loggers + S_ncr_protocol_value = 585, // ncr_protocol_value + S_ncr_format = 586, // ncr_format + S_587_119 = 587, // $@119 + S_dep_qualifying_suffix = 588, // dep_qualifying_suffix + S_589_120 = 589, // $@120 + S_dep_override_no_update = 590, // dep_override_no_update + S_dep_override_client_update = 591, // dep_override_client_update + S_dep_replace_client_name = 592, // dep_replace_client_name + S_593_121 = 593, // $@121 + S_dep_generated_prefix = 594, // dep_generated_prefix + S_595_122 = 595, // $@122 + S_dep_hostname_char_set = 596, // dep_hostname_char_set + S_597_123 = 597, // $@123 + S_dep_hostname_char_replacement = 598, // dep_hostname_char_replacement + S_599_124 = 599, // $@124 + S_config_control = 600, // config_control + S_601_125 = 601, // $@125 + S_sub_config_control = 602, // sub_config_control + S_603_126 = 603, // $@126 + S_config_control_params = 604, // config_control_params + S_config_control_param = 605, // config_control_param + S_config_databases = 606, // config_databases S_607_127 = 607, // $@127 - S_loggers_entries = 608, // loggers_entries - S_logger_entry = 609, // logger_entry + S_config_fetch_wait_time = 608, // config_fetch_wait_time + S_loggers = 609, // loggers S_610_128 = 610, // $@128 - S_logger_params = 611, // logger_params - S_logger_param = 612, // logger_param - S_debuglevel = 613, // debuglevel - S_severity = 614, // severity - S_615_129 = 615, // $@129 - S_output_options_list = 616, // output_options_list - S_617_130 = 617, // $@130 - S_output_options_list_content = 618, // output_options_list_content - S_output_entry = 619, // output_entry + S_loggers_entries = 611, // loggers_entries + S_logger_entry = 612, // logger_entry + S_613_129 = 613, // $@129 + S_logger_params = 614, // logger_params + S_logger_param = 615, // logger_param + S_debuglevel = 616, // debuglevel + S_severity = 617, // severity + S_618_130 = 618, // $@130 + S_output_options_list = 619, // output_options_list S_620_131 = 620, // $@131 - S_output_params_list = 621, // output_params_list - S_output_params = 622, // output_params - S_output = 623, // output - S_624_132 = 624, // $@132 - S_flush = 625, // flush - S_maxsize = 626, // maxsize - S_maxver = 627, // maxver - S_pattern = 628, // pattern - S_629_133 = 629, // $@133 - S_compatibility = 630, // compatibility - S_631_134 = 631, // $@134 - S_compatibility_params = 632, // compatibility_params - S_compatibility_param = 633, // compatibility_param - S_lenient_option_parsing = 634, // lenient_option_parsing - S_635_ignore_rai_link_selection = 635 // ignore-rai-link-selection + S_output_options_list_content = 621, // output_options_list_content + S_output_entry = 622, // output_entry + S_623_132 = 623, // $@132 + S_output_params_list = 624, // output_params_list + S_output_params = 625, // output_params + S_output = 626, // output + S_627_133 = 627, // $@133 + S_flush = 628, // flush + S_maxsize = 629, // maxsize + S_maxver = 630, // maxver + S_pattern = 631, // pattern + S_632_134 = 632, // $@134 + S_compatibility = 633, // compatibility + S_634_135 = 634, // $@135 + S_compatibility_params = 635, // compatibility_params + S_compatibility_param = 636, // compatibility_param + S_lenient_option_parsing = 637, // lenient_option_parsing + S_638_ignore_rai_link_selection = 638 // ignore-rai-link-selection }; }; @@ -1381,7 +1373,7 @@ namespace isc { namespace dhcp { typedef Base super_type; /// Default constructor. - basic_symbol () YY_NOEXCEPT + basic_symbol () : value () , location () {} @@ -1522,8 +1514,6 @@ namespace isc { namespace dhcp { clear (); } - - /// Destroy contents, and record that is empty. void clear () YY_NOEXCEPT { @@ -1591,7 +1581,7 @@ switch (yykind) void move (basic_symbol& s); /// The semantic value. - value_type value; + semantic_type value; /// The location. location_type location; @@ -1606,24 +1596,22 @@ switch (yykind) /// Type access provider for token (enum) based symbols. struct by_kind { - /// The symbol kind as needed by the constructor. - typedef token_kind_type kind_type; - /// Default constructor. - by_kind () YY_NOEXCEPT; + by_kind (); #if 201103L <= YY_CPLUSPLUS /// Move constructor. - by_kind (by_kind&& that) YY_NOEXCEPT; + by_kind (by_kind&& that); #endif /// Copy constructor. - by_kind (const by_kind& that) YY_NOEXCEPT; - - /// Constructor from (external) token numbers. - by_kind (kind_type t) YY_NOEXCEPT; + by_kind (const by_kind& that); + /// The symbol kind as needed by the constructor. + typedef token_kind_type kind_type; + /// Constructor from (external) token numbers. + by_kind (kind_type t); /// Record that this symbol is empty. void clear () YY_NOEXCEPT; @@ -1653,69 +1641,59 @@ switch (yykind) typedef basic_symbol<by_kind> super_type; /// Empty symbol. - symbol_type () YY_NOEXCEPT {} + symbol_type () {} /// Constructor for valueless symbols, and symbols from each type. #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, location_type l) - : super_type (token_kind_type (tok), std::move (l)) + : super_type(token_type (tok), std::move (l)) #else symbol_type (int tok, const location_type& l) - : super_type (token_kind_type (tok), l) + : super_type(token_type (tok), l) #endif { -#if !defined _MSC_VER || defined __clang__ PARSER4__ASSERT (tok == token::TOKEN_END || (token::TOKEN_PARSER4_error <= tok && tok <= token::TOKEN_SUB_CONFIG_CONTROL)); -#endif } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, bool v, location_type l) - : super_type (token_kind_type (tok), std::move (v), std::move (l)) + : super_type(token_type (tok), std::move (v), std::move (l)) #else symbol_type (int tok, const bool& v, const location_type& l) - : super_type (token_kind_type (tok), v, l) + : super_type(token_type (tok), v, l) #endif { -#if !defined _MSC_VER || defined __clang__ PARSER4__ASSERT (tok == token::TOKEN_BOOLEAN); -#endif } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, double v, location_type l) - : super_type (token_kind_type (tok), std::move (v), std::move (l)) + : super_type(token_type (tok), std::move (v), std::move (l)) #else symbol_type (int tok, const double& v, const location_type& l) - : super_type (token_kind_type (tok), v, l) + : super_type(token_type (tok), v, l) #endif { -#if !defined _MSC_VER || defined __clang__ PARSER4__ASSERT (tok == token::TOKEN_FLOAT); -#endif } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, int64_t v, location_type l) - : super_type (token_kind_type (tok), std::move (v), std::move (l)) + : super_type(token_type (tok), std::move (v), std::move (l)) #else symbol_type (int tok, const int64_t& v, const location_type& l) - : super_type (token_kind_type (tok), v, l) + : super_type(token_type (tok), v, l) #endif { -#if !defined _MSC_VER || defined __clang__ PARSER4__ASSERT (tok == token::TOKEN_INTEGER); -#endif } #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, std::string v, location_type l) - : super_type (token_kind_type (tok), std::move (v), std::move (l)) + : super_type(token_type (tok), std::move (v), std::move (l)) #else symbol_type (int tok, const std::string& v, const location_type& l) - : super_type (token_kind_type (tok), v, l) + : super_type(token_type (tok), v, l) #endif { -#if !defined _MSC_VER || defined __clang__ PARSER4__ASSERT (tok == token::TOKEN_STRING); -#endif } }; @@ -1764,7 +1742,7 @@ switch (yykind) /// YYSYMBOL. No bounds checking. static std::string symbol_name (symbol_kind_type yysymbol); - // Implementation of make_symbol for each token kind. + // Implementation of make_symbol for each symbol type. #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -3268,6 +3246,21 @@ switch (yykind) #if 201103L <= YY_CPLUSPLUS static symbol_type + make_ALLOCATOR (location_type l) + { + return symbol_type (token::TOKEN_ALLOCATOR, std::move (l)); + } +#else + static + symbol_type + make_ALLOCATOR (const location_type& l) + { + return symbol_type (token::TOKEN_ALLOCATOR, l); + } +#endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type make_SHARED_NETWORKS (location_type l) { return symbol_type (token::TOKEN_SHARED_NETWORKS, std::move (l)); @@ -4946,19 +4939,19 @@ switch (yykind) /// Whether the given \c yypact_ value indicates a defaulted state. /// \param yyvalue the value to check - static bool yy_pact_value_is_default_ (int yyvalue) YY_NOEXCEPT; + static bool yy_pact_value_is_default_ (int yyvalue); /// Whether the given \c yytable_ value indicates a syntax error. /// \param yyvalue the value to check - static bool yy_table_value_is_error_ (int yyvalue) YY_NOEXCEPT; + static bool yy_table_value_is_error_ (int yyvalue); static const short yypact_ninf_; static const signed char yytable_ninf_; /// Convert a scanner token kind \a t to a symbol kind. /// In theory \a t should be a token_kind_type, but character literals - /// are valid, yet not members of the token_kind_type enum. - static symbol_kind_type yytranslate_ (int t) YY_NOEXCEPT; + /// are valid, yet not members of the token_type enum. + static symbol_kind_type yytranslate_ (int t); /// Convert the symbol name \a n to a form suitable for a diagnostic. static std::string yytnamerr_ (const char *yystr); @@ -4990,14 +4983,14 @@ switch (yykind) static const short yycheck_[]; - // YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of - // state STATE-NUM. + // YYSTOS[STATE-NUM] -- The (internal number of the) accessing + // symbol of state STATE-NUM. static const short yystos_[]; - // YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. + // YYR1[YYN] -- Symbol number of symbol that rule YYN derives. static const short yyr1_[]; - // YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. + // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. static const signed char yyr2_[]; @@ -5096,7 +5089,7 @@ switch (yykind) typedef typename S::size_type size_type; typedef typename std::ptrdiff_t index_type; - stack (size_type n = 200) YY_NOEXCEPT + stack (size_type n = 200) : seq_ (n) {} @@ -5175,7 +5168,7 @@ switch (yykind) class slice { public: - slice (const stack& stack, index_type range) YY_NOEXCEPT + slice (const stack& stack, index_type range) : stack_ (stack) , range_ (range) {} @@ -5225,13 +5218,13 @@ switch (yykind) void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym); /// Pop \a n symbols from the stack. - void yypop_ (int n = 1) YY_NOEXCEPT; + void yypop_ (int n = 1); /// Constants. enum { - yylast_ = 1274, ///< Last index in yytable_. - yynnts_ = 427, ///< Number of nonterminal symbols. + yylast_ = 1460, ///< Last index in yytable_. + yynnts_ = 429, ///< Number of nonterminal symbols. yyfinal_ = 28 ///< Termination state number. }; @@ -5243,7 +5236,7 @@ switch (yykind) inline Dhcp4Parser::symbol_kind_type - Dhcp4Parser::yytranslate_ (int t) YY_NOEXCEPT + Dhcp4Parser::yytranslate_ (int t) { // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to // TOKEN-NUM as returned by yylex. @@ -5297,15 +5290,15 @@ switch (yykind) 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208 + 205, 206, 207, 208, 209 }; // Last valid token kind. - const int code_max = 463; + const int code_max = 464; if (t <= 0) return symbol_kind::S_YYEOF; else if (t <= code_max) - return static_cast <symbol_kind_type> (translate_table[t]); + return YY_CAST (symbol_kind_type, translate_table[t]); else return symbol_kind::S_YYUNDEF; } @@ -5355,7 +5348,6 @@ switch (yykind) - template <typename Base> Dhcp4Parser::symbol_kind_type Dhcp4Parser::basic_symbol<Base>::type_get () const YY_NOEXCEPT @@ -5363,7 +5355,6 @@ switch (yykind) return this->kind (); } - template <typename Base> bool Dhcp4Parser::basic_symbol<Base>::empty () const YY_NOEXCEPT @@ -5415,13 +5406,13 @@ switch (yykind) // by_kind. inline - Dhcp4Parser::by_kind::by_kind () YY_NOEXCEPT + Dhcp4Parser::by_kind::by_kind () : kind_ (symbol_kind::S_YYEMPTY) {} #if 201103L <= YY_CPLUSPLUS inline - Dhcp4Parser::by_kind::by_kind (by_kind&& that) YY_NOEXCEPT + Dhcp4Parser::by_kind::by_kind (by_kind&& that) : kind_ (that.kind_) { that.clear (); @@ -5429,17 +5420,15 @@ switch (yykind) #endif inline - Dhcp4Parser::by_kind::by_kind (const by_kind& that) YY_NOEXCEPT + Dhcp4Parser::by_kind::by_kind (const by_kind& that) : kind_ (that.kind_) {} inline - Dhcp4Parser::by_kind::by_kind (token_kind_type t) YY_NOEXCEPT + Dhcp4Parser::by_kind::by_kind (token_kind_type t) : kind_ (yytranslate_ (t)) {} - - inline void Dhcp4Parser::by_kind::clear () YY_NOEXCEPT @@ -5462,7 +5451,6 @@ switch (yykind) return kind_; } - inline Dhcp4Parser::symbol_kind_type Dhcp4Parser::by_kind::type_get () const YY_NOEXCEPT @@ -5470,10 +5458,9 @@ switch (yykind) return this->kind (); } - #line 14 "dhcp4_parser.yy" } } // isc::dhcp -#line 5477 "dhcp4_parser.h" +#line 5464 "dhcp4_parser.h" diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy index f5c04dc8ce..0f932c99db 100644 --- a/src/bin/dhcp4/dhcp4_parser.yy +++ b/src/bin/dhcp4/dhcp4_parser.yy @@ -145,6 +145,7 @@ using namespace std; ENCAPSULATE "encapsulate" ARRAY "array" PARKED_PACKET_LIMIT "parked-packet-limit" + ALLOCATOR "allocator" SHARED_NETWORKS "shared-networks" @@ -545,6 +546,7 @@ global_param: valid_lifetime | reservations_lookup_first | compatibility | parked_packet_limit + | allocator | unknown_map_entry ; @@ -629,6 +631,15 @@ parked_packet_limit: PARKED_PACKET_LIMIT COLON INTEGER { ctx.stack_.back()->set("parked-packet-limit", ppl); }; +allocator: ALLOCATOR { + ctx.unique("allocator", ctx.loc2pos(@1)); + ctx.enter(ctx.NO_KEYWORD); +} COLON STRING { + ElementPtr al(new StringElement($4, ctx.loc2pos(@4))); + ctx.stack_.back()->set("allocator", al); + ctx.leave(); +}; + echo_client_id: ECHO_CLIENT_ID COLON BOOLEAN { ctx.unique("echo-client-id", ctx.loc2pos(@1)); ElementPtr echo(new BoolElement($3, ctx.loc2pos(@3))); @@ -1521,6 +1532,7 @@ subnet4_param: valid_lifetime | ddns_use_conflict_resolution | hostname_char_set | hostname_char_replacement + | allocator | store_extended_info | unknown_map_entry ; @@ -1707,6 +1719,7 @@ shared_network_param: name | ddns_use_conflict_resolution | hostname_char_set | hostname_char_replacement + | allocator | store_extended_info | unknown_map_entry ; diff --git a/src/bin/dhcp4/json_config_parser.cc b/src/bin/dhcp4/json_config_parser.cc index 21ed702136..05a45d8688 100644 --- a/src/bin/dhcp4/json_config_parser.cc +++ b/src/bin/dhcp4/json_config_parser.cc @@ -688,7 +688,8 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, (config_pair.first == "early-global-reservations-lookup") || (config_pair.first == "ip-reservations-unique") || (config_pair.first == "reservations-lookup-first") || - (config_pair.first == "parked-packet-limit")) { + (config_pair.first == "parked-packet-limit") || + (config_pair.first == "allocator") ) { CfgMgr::instance().getStagingCfg()->addConfiguredGlobal(config_pair.first, config_pair.second); continue; diff --git a/src/bin/dhcp4/location.hh b/src/bin/dhcp4/location.hh index 860fbfa0c9..3c542905df 100644 --- a/src/bin/dhcp4/location.hh +++ b/src/bin/dhcp4/location.hh @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.8.2. +// A Bison parser, made by GNU Bison 3.7.6. // Locations for Bison parsers in C++ diff --git a/src/bin/dhcp4/tests/dora_unittest.cc b/src/bin/dhcp4/tests/dora_unittest.cc index c26d92098d..f422008810 100644 --- a/src/bin/dhcp4/tests/dora_unittest.cc +++ b/src/bin/dhcp4/tests/dora_unittest.cc @@ -28,6 +28,9 @@ #include <boost/shared_ptr.hpp> #include <stats/stats_mgr.h> +#include <set> +#include <vector> + using namespace isc; using namespace isc::asiolink; using namespace isc::data; @@ -142,6 +145,15 @@ namespace { /// - authoritative flag is set to false, thus the server does not /// respond to requests from unknown clients. /// +/// - Configuration 16: +/// - Use for testing storing extended info +/// - Two subnets with one with storing extended info enabled and +/// one with disabled. +/// +/// - Configuration 17: +/// - Selects random allocator. +/// - One subnet with three distinct pools. +/// - Random allocator enabled globally. const char* DORA_CONFIGS[] = { // Configuration 0 "{ \"interfaces-config\": {" @@ -542,6 +554,31 @@ const char* DORA_CONFIGS[] = { " \"interface\": \"eth1\"" " }" "]" + "}", + + // Configuration 17 + "{ \"interfaces-config\": {" + " \"interfaces\": [ \"*\" ]" + "}," + "\"valid-lifetime\": 600," + "\"allocator\": \"random\"," + "\"subnet4\": [" + " {" + " \"subnet\": \"10.0.0.0/24\", " + " \"pools\": [" + " {" + " \"pool\": \"10.0.0.10-10.0.0.20\"" + " }," + " {" + " \"pool\": \"10.0.0.30-10.0.0.40\"" + " }," + " {" + " \"pool\": \"10.0.0.50-10.0.0.60\"" + " }" + " ]," + " \"interface\": \"eth0\"" + " }" + "]" "}" }; @@ -790,6 +827,10 @@ public: /// store-extended-info is disabled. void storeExtendedInfoDisabled(); + /// @brief This test verifies that random allocator is used according + /// to the configuration and it allocates random addresses. + void randomAllocation(); + /// @brief Interface Manager's fake configuration control. IfaceMgrTestConfig iface_mgr_test_config_; }; @@ -2704,6 +2745,61 @@ TEST_F(DORATest, storeExtendedInfoDisabledMultiThreading) { storeExtendedInfoDisabled(); } +void +DORATest::randomAllocation() { + // Create the base client and server configuration. + Dhcp4Client client(Dhcp4Client::SELECTING); + configure(DORA_CONFIGS[17], *client.getServer()); + + // Record what addresses have been allocated and in what order. + std::set<std::string> allocated_set; + std::vector<IOAddress> allocated_list; + + // Simulate allocations from different clients. + for (auto i = 0; i < 30; ++i) { + // Create a client from the base client. + Dhcp4Client next_client(client.getServer(), Dhcp4Client::SELECTING); + // Run 4-way exchange. + ASSERT_NO_THROW(next_client.doDORA()); + // Make sure that the server responded. + ASSERT_TRUE(next_client.getContext().response_); + auto resp = next_client.getContext().response_; + // Make sure that the server has responded with DHCPACK. + ASSERT_EQ(DHCPACK, static_cast<int>(resp->getType())); + // Remember allocated address uniqueness and order. + allocated_set.insert(next_client.config_.lease_.addr_.toText()); + allocated_list.push_back(next_client.config_.lease_.addr_); + } + // Make sure that we have 30 distinct allocations. + ASSERT_EQ(30, allocated_set.size()); + ASSERT_EQ(30, allocated_list.size()); + + // Make sure that the addresses are not allocated iteratively. + int consecutives = 0; + for (auto i = 1; i < allocated_list.size(); ++i) { + // Record the cases when the previously allocated address is + // lower by 1 (iterative allocation). Some cases like this are + // possible even with the random allocation but they should be + // very rare. + if (allocated_list[i].toUint32() == allocated_list[i-1].toUint32()+1) { + ++consecutives; + } + } + // Make sure we don't have too many allocations when previously + // allocated address is the current address minus one. + EXPECT_LT(consecutives, 10); +} + +TEST_F(DORATest, randomAllocation) { + Dhcpv4SrvMTTestGuard guard(*this, false); + randomAllocation(); +} + +TEST_F(DORATest, randomAllocationMultiThreading) { + Dhcpv4SrvMTTestGuard guard(*this, true); + randomAllocation(); +} + // Starting tests which require MySQL backend availability. Those tests // will not be executed if Kea has been compiled without the // --with-mysql. diff --git a/src/bin/dhcp4/tests/get_config_unittest.cc b/src/bin/dhcp4/tests/get_config_unittest.cc index 5894223669..019968acdb 100644 --- a/src/bin/dhcp4/tests/get_config_unittest.cc +++ b/src/bin/dhcp4/tests/get_config_unittest.cc @@ -1892,6 +1892,36 @@ const char* EXTRACTED_CONFIGS[] = { " }\n", // CONFIGURATION 63 "{\n" +" \"client-classes\": [\n" +" {\n" +" \"max-valid-lifetime\": 3000,\n" +" \"min-valid-lifetime\": 1000,\n" +" \"name\": \"one\",\n" +" \"template-test\": \"''\",\n" +" \"valid-lifetime\": 2000\n" +" },\n" +" {\n" +" \"name\": \"two\",\n" +" \"template-test\": \"''\"\n" +" }\n" +" ],\n" +" \"interfaces-config\": {\n" +" \"interfaces\": [ \"*\" ],\n" +" \"re-detect\": false\n" +" },\n" +" \"subnet4\": [\n" +" {\n" +" \"pools\": [\n" +" {\n" +" \"pool\": \"192.0.2.1 - 192.0.2.100\"\n" +" }\n" +" ],\n" +" \"subnet\": \"192.0.2.0/24\"\n" +" }\n" +" ]\n" +" }\n", + // CONFIGURATION 64 +"{\n" " \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ],\n" " \"re-detect\": false\n" @@ -1910,7 +1940,7 @@ const char* EXTRACTED_CONFIGS[] = { " ],\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 64 + // CONFIGURATION 65 "{\n" " \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ],\n" @@ -1931,7 +1961,7 @@ const char* EXTRACTED_CONFIGS[] = { " ],\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 65 + // CONFIGURATION 66 "{\n" " \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ],\n" @@ -1956,7 +1986,7 @@ const char* EXTRACTED_CONFIGS[] = { " ],\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 66 + // CONFIGURATION 67 "{\n" " \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ],\n" @@ -1981,7 +2011,7 @@ const char* EXTRACTED_CONFIGS[] = { " ],\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 67 + // CONFIGURATION 68 "{\n" " \"hosts-databases\": [\n" " {\n" @@ -2005,7 +2035,7 @@ const char* EXTRACTED_CONFIGS[] = { " \"renew-timer\": 1000,\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 68 + // CONFIGURATION 69 "{\n" " \"client-classes\": [\n" " {\n" @@ -2114,7 +2144,7 @@ const char* EXTRACTED_CONFIGS[] = { " \"comment\": \"A DHCPv4 server\"\n" " }\n" " }\n", - // CONFIGURATION 69 + // CONFIGURATION 70 "{\n" " \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ],\n" @@ -2176,7 +2206,7 @@ const char* EXTRACTED_CONFIGS[] = { " ],\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 70 + // CONFIGURATION 71 "{\n" " \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ],\n" @@ -2226,7 +2256,7 @@ const char* EXTRACTED_CONFIGS[] = { " ],\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 71 + // CONFIGURATION 72 "{\n" " \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ],\n" @@ -2256,7 +2286,7 @@ const char* EXTRACTED_CONFIGS[] = { " ],\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 72 + // CONFIGURATION 73 "{\n" " \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ],\n" @@ -2286,7 +2316,7 @@ const char* EXTRACTED_CONFIGS[] = { " ],\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 73 + // CONFIGURATION 74 "{\n" " \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ],\n" @@ -2298,7 +2328,7 @@ const char* EXTRACTED_CONFIGS[] = { " \"statistic-default-sample-count\": 10,\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 74 + // CONFIGURATION 75 "{\n" " \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ],\n" @@ -2306,7 +2336,7 @@ const char* EXTRACTED_CONFIGS[] = { " },\n" " \"subnet4\": [ ]\n" " }\n", - // CONFIGURATION 75 + // CONFIGURATION 76 "{\n" " \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ],\n" @@ -2325,6 +2355,7 @@ const char* EXTRACTED_CONFIGS[] = { const char* UNPARSED_CONFIGS[] = { // CONFIGURATION 0 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -2408,6 +2439,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 1 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -2488,6 +2520,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -2517,6 +2550,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 2 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -2597,6 +2631,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -2626,6 +2661,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 3 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -2709,6 +2745,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 5000,\n" @@ -2739,6 +2776,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 4 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -2820,6 +2858,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -2847,6 +2886,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" " \"max-valid-lifetime\": 4000,\n" @@ -2874,6 +2914,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 3,\n" " \"max-valid-lifetime\": 4000,\n" @@ -2901,6 +2942,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 4,\n" " \"max-valid-lifetime\": 4000,\n" @@ -2931,6 +2973,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 5 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -3012,6 +3055,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -3039,6 +3083,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 34,\n" " \"max-valid-lifetime\": 4000,\n" @@ -3066,6 +3111,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 100,\n" " \"max-valid-lifetime\": 4000,\n" @@ -3093,6 +3139,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1024,\n" " \"max-valid-lifetime\": 4000,\n" @@ -3123,6 +3170,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 6 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"bar\",\n" " \"calculate-tee-times\": false,\n" @@ -3204,6 +3252,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -3234,6 +3283,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 7 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -3315,6 +3365,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"boot-file-name\": \"bar\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -3348,6 +3399,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 8 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"nofile\",\n" " \"calculate-tee-times\": false,\n" @@ -3429,6 +3481,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"boot-file-name\": \"bootfile.efi\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -3462,6 +3515,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 9 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -3543,6 +3597,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -3573,6 +3628,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 10 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -3654,6 +3710,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -3684,6 +3741,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 11 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -3765,6 +3823,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"match-client-id\": true,\n" @@ -3793,6 +3852,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" " \"match-client-id\": false,\n" @@ -3824,6 +3884,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 12 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -3905,6 +3966,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"match-client-id\": false,\n" @@ -3933,6 +3995,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" " \"max-valid-lifetime\": 4000,\n" @@ -3963,6 +4026,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 13 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -4044,6 +4108,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": true,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -4072,6 +4137,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" @@ -4103,6 +4169,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 14 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": true,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -4184,6 +4251,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" @@ -4212,6 +4280,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" " \"max-valid-lifetime\": 4000,\n" @@ -4242,6 +4311,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 15 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -4325,6 +4395,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 5,\n" @@ -4355,6 +4426,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 16 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -4436,6 +4508,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -4467,6 +4540,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" " \"max-valid-lifetime\": 4000,\n" @@ -4501,6 +4575,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 17 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -4582,6 +4657,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -4612,6 +4688,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 18 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -4703,6 +4780,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 19 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -4794,6 +4872,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 20 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -4894,6 +4973,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 21 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -4985,6 +5065,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 22 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -5076,6 +5157,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 23 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -5167,6 +5249,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 24 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -5258,6 +5341,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 25 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -5356,6 +5440,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -5386,6 +5471,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 26 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -5467,6 +5553,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -5514,6 +5601,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 27 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -5622,6 +5710,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -5652,6 +5741,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 28 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -5771,6 +5861,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 29 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -5905,6 +5996,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 3000,\n" @@ -5935,6 +6027,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 30 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -6025,6 +6118,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -6072,6 +6166,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 31 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -6153,6 +6248,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -6189,6 +6285,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" " \"max-valid-lifetime\": 4000,\n" @@ -6228,6 +6325,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 32 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -6309,6 +6407,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -6356,6 +6455,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 33 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -6437,6 +6537,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -6489,6 +6590,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 34 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -6587,6 +6689,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -6617,6 +6720,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 35 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -6736,6 +6840,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 36 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -6861,6 +6966,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 3000,\n" @@ -6891,6 +6997,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 37 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -6987,6 +7094,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -7017,6 +7125,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 38 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -7117,6 +7226,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -7147,6 +7257,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 39 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -7230,6 +7341,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 40 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -7313,6 +7425,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 41 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -7394,6 +7507,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -7424,6 +7538,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 42 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -7505,6 +7620,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -7535,6 +7651,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 43 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -7616,6 +7733,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -7646,6 +7764,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 44 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -7727,6 +7846,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4,\n" @@ -7757,6 +7877,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 45 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -7838,6 +7959,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4,\n" @@ -7868,6 +7990,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 46 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -7949,6 +8072,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"client-class\": \"alpha\",\n" " \"id\": 1,\n" @@ -7977,6 +8101,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"client-class\": \"beta\",\n" " \"id\": 2,\n" @@ -8005,6 +8130,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"client-class\": \"gamma\",\n" " \"id\": 3,\n" @@ -8033,6 +8159,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 4,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8063,6 +8190,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 47 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -8144,6 +8272,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8189,6 +8318,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 48 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -8270,6 +8400,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 123,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8297,6 +8428,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 234,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8379,6 +8511,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 542,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8457,6 +8590,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 49 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -8548,6 +8682,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 234,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8598,6 +8733,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 50 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -8679,6 +8815,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8709,6 +8846,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8739,6 +8877,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 3,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8768,6 +8907,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 4,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8797,6 +8937,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 5,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8824,6 +8965,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 6,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8854,6 +8996,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 7,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8887,6 +9030,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 51 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -8968,6 +9112,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -8998,6 +9143,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" " \"max-valid-lifetime\": 4000,\n" @@ -9028,6 +9174,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 52 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -9109,6 +9256,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 53 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -9190,6 +9338,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 54 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -9271,6 +9420,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 55 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -9352,6 +9502,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 56 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -9433,6 +9584,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -9463,6 +9615,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 57 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -9544,6 +9697,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"2001:db8::123/45\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -9574,6 +9728,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 58 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -9655,6 +9810,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"ethX\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -9685,6 +9841,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 59 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -9766,6 +9923,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"ethX\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"2001:db8::543/21\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -9796,6 +9954,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 60 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -9877,6 +10036,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"vlan123\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -9907,6 +10067,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 61 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -10014,6 +10175,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -10044,6 +10206,7 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 62 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -10144,6 +10307,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 7200,\n" @@ -10172,6 +10336,139 @@ const char* UNPARSED_CONFIGS[] = { " }\n", // CONFIGURATION 63 "{\n" +" \"allocator\": \"iterative\",\n" +" \"authoritative\": false,\n" +" \"boot-file-name\": \"\",\n" +" \"calculate-tee-times\": false,\n" +" \"client-classes\": [\n" +" {\n" +" \"boot-file-name\": \"\",\n" +" \"max-valid-lifetime\": 3000,\n" +" \"min-valid-lifetime\": 1000,\n" +" \"name\": \"one\",\n" +" \"next-server\": \"0.0.0.0\",\n" +" \"option-data\": [ ],\n" +" \"option-def\": [ ],\n" +" \"server-hostname\": \"\",\n" +" \"template-test\": \"''\",\n" +" \"valid-lifetime\": 2000\n" +" },\n" +" {\n" +" \"boot-file-name\": \"\",\n" +" \"name\": \"two\",\n" +" \"next-server\": \"0.0.0.0\",\n" +" \"option-data\": [ ],\n" +" \"option-def\": [ ],\n" +" \"server-hostname\": \"\",\n" +" \"template-test\": \"''\"\n" +" }\n" +" ],\n" +" \"ddns-generated-prefix\": \"myhost\",\n" +" \"ddns-override-client-update\": false,\n" +" \"ddns-override-no-update\": false,\n" +" \"ddns-qualifying-suffix\": \"\",\n" +" \"ddns-replace-client-name\": \"never\",\n" +" \"ddns-send-updates\": true,\n" +" \"ddns-update-on-renew\": false,\n" +" \"ddns-use-conflict-resolution\": true,\n" +" \"decline-probation-period\": 86400,\n" +" \"dhcp-ddns\": {\n" +" \"enable-updates\": false,\n" +" \"max-queue-size\": 1024,\n" +" \"ncr-format\": \"JSON\",\n" +" \"ncr-protocol\": \"UDP\",\n" +" \"sender-ip\": \"0.0.0.0\",\n" +" \"sender-port\": 0,\n" +" \"server-ip\": \"127.0.0.1\",\n" +" \"server-port\": 53001\n" +" },\n" +" \"dhcp-queue-control\": {\n" +" \"capacity\": 64,\n" +" \"enable-queue\": false,\n" +" \"queue-type\": \"kea-ring4\"\n" +" },\n" +" \"dhcp4o6-port\": 0,\n" +" \"early-global-reservations-lookup\": false,\n" +" \"echo-client-id\": true,\n" +" \"expired-leases-processing\": {\n" +" \"flush-reclaimed-timer-wait-time\": 25,\n" +" \"hold-reclaimed-time\": 3600,\n" +" \"max-reclaim-leases\": 100,\n" +" \"max-reclaim-time\": 250,\n" +" \"reclaim-timer-wait-time\": 10,\n" +" \"unwarned-reclaim-cycles\": 5\n" +" },\n" +" \"hooks-libraries\": [ ],\n" +" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n" +" \"hostname-char-replacement\": \"\",\n" +" \"hostname-char-set\": \"[^A-Za-z0-9.-]\",\n" +" \"interfaces-config\": {\n" +" \"interfaces\": [ \"*\" ],\n" +" \"re-detect\": false\n" +" },\n" +" \"ip-reservations-unique\": true,\n" +" \"lease-database\": {\n" +" \"type\": \"memfile\"\n" +" },\n" +" \"match-client-id\": true,\n" +" \"multi-threading\": {\n" +" \"enable-multi-threading\": false,\n" +" \"packet-queue-size\": 64,\n" +" \"thread-pool-size\": 0\n" +" },\n" +" \"next-server\": \"0.0.0.0\",\n" +" \"option-data\": [ ],\n" +" \"option-def\": [ ],\n" +" \"parked-packet-limit\": 256,\n" +" \"reservations-global\": false,\n" +" \"reservations-in-subnet\": true,\n" +" \"reservations-lookup-first\": false,\n" +" \"reservations-out-of-pool\": false,\n" +" \"sanity-checks\": {\n" +" \"extended-info-checks\": \"fix\",\n" +" \"lease-checks\": \"warn\"\n" +" },\n" +" \"server-hostname\": \"\",\n" +" \"server-tag\": \"\",\n" +" \"shared-networks\": [ ],\n" +" \"statistic-default-sample-age\": 0,\n" +" \"statistic-default-sample-count\": 20,\n" +" \"store-extended-info\": false,\n" +" \"subnet4\": [\n" +" {\n" +" \"4o6-interface\": \"\",\n" +" \"4o6-interface-id\": \"\",\n" +" \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" +" \"calculate-tee-times\": false,\n" +" \"id\": 1,\n" +" \"max-valid-lifetime\": 7200,\n" +" \"min-valid-lifetime\": 7200,\n" +" \"option-data\": [ ],\n" +" \"pools\": [\n" +" {\n" +" \"option-data\": [ ],\n" +" \"pool\": \"192.0.2.1-192.0.2.100\"\n" +" }\n" +" ],\n" +" \"relay\": {\n" +" \"ip-addresses\": [ ]\n" +" },\n" +" \"reservations\": [ ],\n" +" \"store-extended-info\": false,\n" +" \"subnet\": \"192.0.2.0/24\",\n" +" \"t1-percent\": 0.5,\n" +" \"t2-percent\": 0.875,\n" +" \"valid-lifetime\": 7200\n" +" }\n" +" ],\n" +" \"t1-percent\": 0.5,\n" +" \"t2-percent\": 0.875,\n" +" \"valid-lifetime\": 7200\n" +" }\n", + // CONFIGURATION 64 +"{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -10253,6 +10550,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -10281,8 +10579,9 @@ const char* UNPARSED_CONFIGS[] = { " \"t2-percent\": 0.875,\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 64 + // CONFIGURATION 65 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -10364,6 +10663,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -10393,8 +10693,9 @@ const char* UNPARSED_CONFIGS[] = { " \"t2-percent\": 0.875,\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 65 + // CONFIGURATION 66 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -10476,6 +10777,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -10509,8 +10811,9 @@ const char* UNPARSED_CONFIGS[] = { " \"t2-percent\": 0.875,\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 66 + // CONFIGURATION 67 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -10592,6 +10895,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -10625,8 +10929,9 @@ const char* UNPARSED_CONFIGS[] = { " \"t2-percent\": 0.875,\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 67 + // CONFIGURATION 68 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -10722,8 +11027,9 @@ const char* UNPARSED_CONFIGS[] = { " \"t2-percent\": 0.875,\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 68 + // CONFIGURATION 69 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -10882,6 +11188,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 100,\n" " \"max-valid-lifetime\": 7200,\n" @@ -10954,8 +11261,9 @@ const char* UNPARSED_CONFIGS[] = { " },\n" " \"valid-lifetime\": 7200\n" " }\n", - // CONFIGURATION 69 + // CONFIGURATION 70 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -11092,6 +11400,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 123,\n" " \"max-valid-lifetime\": 4000,\n" @@ -11119,6 +11428,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 542,\n" " \"max-valid-lifetime\": 4000,\n" @@ -11147,8 +11457,9 @@ const char* UNPARSED_CONFIGS[] = { " \"t2-percent\": 0.875,\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 70 + // CONFIGURATION 71 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -11235,6 +11546,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 100,\n" " \"max-valid-lifetime\": 4000,\n" @@ -11260,6 +11572,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": true,\n" " \"id\": 200,\n" " \"max-valid-lifetime\": 4000,\n" @@ -11295,6 +11608,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 300,\n" " \"max-valid-lifetime\": 4000,\n" @@ -11321,8 +11635,9 @@ const char* UNPARSED_CONFIGS[] = { " \"t2-percent\": 0.875,\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 71 + // CONFIGURATION 72 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -11404,6 +11719,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -11431,6 +11747,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" " \"max-valid-lifetime\": 4000,\n" @@ -11459,8 +11776,9 @@ const char* UNPARSED_CONFIGS[] = { " \"t2-percent\": 0.875,\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 72 + // CONFIGURATION 73 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -11542,6 +11860,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 1,\n" " \"max-valid-lifetime\": 4000,\n" @@ -11569,6 +11888,7 @@ const char* UNPARSED_CONFIGS[] = { " \"4o6-interface\": \"\",\n" " \"4o6-interface-id\": \"\",\n" " \"4o6-subnet\": \"\",\n" +" \"allocator\": \"iterative\",\n" " \"calculate-tee-times\": false,\n" " \"id\": 2,\n" " \"max-valid-lifetime\": 4000,\n" @@ -11597,8 +11917,9 @@ const char* UNPARSED_CONFIGS[] = { " \"t2-percent\": 0.875,\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 73 + // CONFIGURATION 74 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -11680,8 +12001,9 @@ const char* UNPARSED_CONFIGS[] = { " \"t2-percent\": 0.875,\n" " \"valid-lifetime\": 4000\n" " }\n", - // CONFIGURATION 74 + // CONFIGURATION 75 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" @@ -11761,8 +12083,9 @@ const char* UNPARSED_CONFIGS[] = { " \"t2-percent\": 0.875,\n" " \"valid-lifetime\": 7200\n" " }\n", - // CONFIGURATION 75 + // CONFIGURATION 76 "{\n" +" \"allocator\": \"iterative\",\n" " \"authoritative\": false,\n" " \"boot-file-name\": \"\",\n" " \"calculate-tee-times\": false,\n" diff --git a/src/lib/dhcpsrv/cfg_globals.cc b/src/lib/dhcpsrv/cfg_globals.cc index eec05e5144..1b66050a6b 100644 --- a/src/lib/dhcpsrv/cfg_globals.cc +++ b/src/lib/dhcpsrv/cfg_globals.cc @@ -58,6 +58,7 @@ CfgGlobals::nameToIndex = { { "next-server", NEXT_SERVER }, { "server-hostname", SERVER_HOSTNAME }, { "boot-file-name", BOOT_FILE_NAME }, + { "allocator", ALLOCATOR }, // DHCPv6 specific parameters. { "data-directory", DATA_DIRECTORY }, diff --git a/src/lib/dhcpsrv/cfg_globals.h b/src/lib/dhcpsrv/cfg_globals.h index af15edcc7a..c453425758 100644 --- a/src/lib/dhcpsrv/cfg_globals.h +++ b/src/lib/dhcpsrv/cfg_globals.h @@ -81,6 +81,7 @@ public: NEXT_SERVER, SERVER_HOSTNAME, BOOT_FILE_NAME, + ALLOCATOR, // DHCPv6 specific parameters. DATA_DIRECTORY, diff --git a/src/lib/dhcpsrv/network.cc b/src/lib/dhcpsrv/network.cc index 688762b7ab..934c0178c0 100644 --- a/src/lib/dhcpsrv/network.cc +++ b/src/lib/dhcpsrv/network.cc @@ -265,6 +265,10 @@ Network::toElement() const { map->set("ddns-use-conflict-resolution", Element::create(ddns_use_conflict_resolution_)); } + if (!allocator_type_.unspecified()) { + map->set("allocator", Element::create(allocator_type_)); + } + return (map); } diff --git a/src/lib/dhcpsrv/network.h b/src/lib/dhcpsrv/network.h index aab3727d4a..43f647bb33 100644 --- a/src/lib/dhcpsrv/network.h +++ b/src/lib/dhcpsrv/network.h @@ -779,6 +779,28 @@ public: ddns_use_conflict_resolution_ = ddns_use_conflict_resolution; } + /// @brief Returns allocator type. + /// + /// @param inheritance inheritance mode to be used. + util::Optional<std::string> + getAllocatorType(const Inheritance& inheritance = Inheritance::ALL) const { + return (getProperty<Network>(&Network::getAllocatorType, + allocator_type_, + inheritance, + CfgGlobals::ALLOCATOR)); + } + + /// @brief Sets new allocator type. + /// + /// It doesn't set the actual allocator instance. It merely remembers the + /// value specified in the configuration, so it can be output in the + /// @c toElement call. + /// + /// @param allocator_type new allocator type to use. + void setAllocatorType(const util::Optional<std::string>& allocator_type) { + allocator_type_ = allocator_type; + } + /// @brief Unparses network object. /// /// @return A pointer to unparsed network configuration. @@ -1163,6 +1185,9 @@ protected: /// @brief Used to to tell kea-dhcp-ddns whether or not to use conflict resolution. util::Optional<bool> ddns_use_conflict_resolution_; + /// @brief Allocator used for IP address allocations. + util::Optional<std::string> allocator_type_; + /// @brief Pointer to another network that this network belongs to. /// /// The most common case is that this instance is a subnet which belongs diff --git a/src/lib/dhcpsrv/parsers/dhcp_parsers.cc b/src/lib/dhcpsrv/parsers/dhcp_parsers.cc index 9bec575ff5..10b01a1197 100644 --- a/src/lib/dhcpsrv/parsers/dhcp_parsers.cc +++ b/src/lib/dhcpsrv/parsers/dhcp_parsers.cc @@ -12,6 +12,10 @@ #include <dhcpsrv/cfgmgr.h> #include <dhcpsrv/cfg_option.h> #include <dhcpsrv/dhcpsrv_log.h> +#include <dhcpsrv/iterative_allocation_state.h> +#include <dhcpsrv/iterative_allocator.h> +#include <dhcpsrv/random_allocation_state.h> +#include <dhcpsrv/random_allocator.h> #include <dhcpsrv/parsers/dhcp_parsers.h> #include <dhcpsrv/parsers/host_reservation_parser.h> #include <dhcpsrv/parsers/host_reservations_list_parser.h> @@ -500,10 +504,6 @@ PoolParser::parse(PoolStoragePtr pools, pool->requireClientClass((*cclass)->stringValue()); } } - - // Create allocation state for iterative allocator. We're going to - // make it configurable. - pool->setAllocationState(PoolIterativeAllocationState::create(pool)); } boost::shared_ptr<OptionDataListParser> @@ -633,11 +633,39 @@ SubnetConfigParser::createSubnet(ConstElementPtr params) { // Call the subclass's method to instantiate the subnet initSubnet(params, addr, len); + std::string allocator_type = (params->contains("allocator") ? + getString(params, "allocator") : "iterative"); + subnet_->setAllocatorType(allocator_type); + if (allocator_type == "random") { + subnet_->setAllocator(Lease::TYPE_V4, + boost::make_shared<RandomAllocator> + (Lease::TYPE_V4, subnet_)); + subnet_->setAllocationState(SubnetAllocationStatePtr()); + + } else if (allocator_type == "iterative") { + subnet_->setAllocator(Lease::TYPE_V4, + boost::make_shared<IterativeAllocator> + (Lease::TYPE_V4, subnet_)); + subnet_->setAllocationState(SubnetIterativeAllocationState::create(subnet_)); + + } else { + ConstElementPtr error = params->get("allocator"); + isc_throw(DhcpConfigError, "supported allocators are: iterative and random (" + << error->getPosition() << ")"); + } + + // Add pools to it. for (PoolStorage::iterator it = pools_->begin(); it != pools_->end(); ++it) { try { - subnet_->addPool(*it); + auto pool = *it; + if (allocator_type == "random") { + pool->setAllocationState(PoolRandomAllocationState::create(pool)); + } else { + pool->setAllocationState(PoolIterativeAllocationState::create(pool)); + } + subnet_->addPool(pool); } catch (const BadValue& ex) { // addPool() can throw BadValue if the pool is overlapping or // is out of bounds for the subnet. @@ -662,10 +690,6 @@ SubnetConfigParser::createSubnet(ConstElementPtr params) { subnet_->setFetchGlobalsFn([]() -> ConstCfgGlobalsPtr { return (CfgMgr::instance().getCurrentCfg()->getConfiguredGlobals()); }); - - // Set allocation state for iterative allocator. We will make it - // configurable. - subnet_->setAllocationState(SubnetIterativeAllocationState::create(subnet_)); } boost::shared_ptr<OptionDataListParser> diff --git a/src/lib/dhcpsrv/parsers/simple_parser4.cc b/src/lib/dhcpsrv/parsers/simple_parser4.cc index ba6a809a66..dcf0a3d7d4 100644 --- a/src/lib/dhcpsrv/parsers/simple_parser4.cc +++ b/src/lib/dhcpsrv/parsers/simple_parser4.cc @@ -99,6 +99,7 @@ const SimpleKeywords SimpleParser4::GLOBAL4_PARAMETERS = { { "ddns-use-conflict-resolution", Element::boolean }, { "compatibility", Element::map }, { "parked-packet-limit", Element::integer }, + { "allocator", Element::string }, }; /// @brief This table defines default global values for DHCPv4 @@ -140,6 +141,7 @@ const SimpleDefaults SimpleParser4::GLOBAL4_DEFAULTS = { { "ddns-update-on-renew", Element::boolean, "false" }, { "ddns-use-conflict-resolution", Element::boolean, "true" }, { "parked-packet-limit", Element::integer, "256" }, + { "allocator", Element::string, "iterative" }, }; /// @brief This table defines all option definition parameters. @@ -249,7 +251,8 @@ const SimpleKeywords SimpleParser4::SUBNET4_PARAMETERS = { { "cache-threshold", Element::real }, { "cache-max-age", Element::integer }, { "ddns-update-on-renew", Element::boolean }, - { "ddns-use-conflict-resolution", Element::boolean } + { "ddns-use-conflict-resolution", Element::boolean }, + { "allocator", Element::string } }; /// @brief This table defines default values for each IPv4 subnet. @@ -302,7 +305,8 @@ const ParamsList SimpleParser4::INHERIT_TO_SUBNET4 = { "t2-percent", "store-extended-info", "cache-threshold", - "cache-max-age" + "cache-max-age", + "allocator", }; /// @brief This table defines all pool parameters. @@ -365,7 +369,8 @@ const SimpleKeywords SimpleParser4::SHARED_NETWORK4_PARAMETERS = { { "cache-threshold", Element::real }, { "cache-max-age", Element::integer }, { "ddns-update-on-renew", Element::boolean }, - { "ddns-use-conflict-resolution", Element::boolean } + { "ddns-use-conflict-resolution", Element::boolean }, + { "allocator", Element::string } }; /// @brief This table defines default values for each IPv4 shared network. diff --git a/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc b/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc index edb1b4df31..5eb0ac6ff1 100644 --- a/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc +++ b/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc @@ -18,6 +18,7 @@ #include <dhcpsrv/cfgmgr.h> #include <dhcpsrv/subnet.h> #include <dhcpsrv/cfg_mac_source.h> +#include <dhcpsrv/iterative_allocator.h> #include <dhcpsrv/parsers/dhcp_parsers.h> #include <dhcpsrv/parsers/option_data_parser.h> #include <dhcpsrv/parsers/shared_network_parser.h> @@ -2805,6 +2806,9 @@ TEST_F(ParseConfigTest, defaultSubnet4) { EXPECT_TRUE(subnet->getAllocationState()); EXPECT_TRUE(subnet->getAllocator(Lease::TYPE_V4)); + + auto allocator = subnet->getAllocator(Lease::TYPE_V4); + EXPECT_TRUE(boost::dynamic_pointer_cast<IterativeAllocator>(allocator)); } // This test verifies that it is possible to parse an IPv6 subnet for which @@ -2902,6 +2906,15 @@ TEST_F(ParseConfigTest, defaultSubnet6) { EXPECT_TRUE(subnet->getAllocator(Lease::TYPE_NA)); EXPECT_TRUE(subnet->getAllocator(Lease::TYPE_TA)); EXPECT_TRUE(subnet->getAllocator(Lease::TYPE_PD)); + + auto allocator = subnet->getAllocator(Lease::TYPE_NA); + EXPECT_TRUE(boost::dynamic_pointer_cast<IterativeAllocator>(allocator)); + + allocator = subnet->getAllocator(Lease::TYPE_TA); + EXPECT_TRUE(boost::dynamic_pointer_cast<IterativeAllocator>(allocator)); + + allocator = subnet->getAllocator(Lease::TYPE_PD); + EXPECT_TRUE(boost::dynamic_pointer_cast<IterativeAllocator>(allocator)); } // This test verifies that it is possible to parse an IPv4 shared network @@ -2988,6 +3001,9 @@ TEST_F(ParseConfigTest, defaultSharedNetwork4) { EXPECT_TRUE(network->getDdnsUseConflictResolution().unspecified()); EXPECT_FALSE(network->getDdnsUseConflictResolution().get()); + + EXPECT_TRUE(network->getAllocatorType().unspecified()); + EXPECT_TRUE(network->getAllocatorType().get().empty()); } // This test verifies that it is possible to parse an IPv6 shared network diff --git a/src/lib/dhcpsrv/tests/network_unittest.cc b/src/lib/dhcpsrv/tests/network_unittest.cc index 725edc9815..9f649dc481 100644 --- a/src/lib/dhcpsrv/tests/network_unittest.cc +++ b/src/lib/dhcpsrv/tests/network_unittest.cc @@ -180,6 +180,7 @@ TEST_F(NetworkTest, inheritanceSupport4) { globals_->set("cache-max-age", Element::create(20)); globals_->set("ddns-update-on-renew", Element::create(true)); globals_->set("ddns-use-conflict-resolution", Element::create(true)); + globals_->set("allocator", Element::create("random")); // For each parameter for which inheritance is supported run // the test that checks if the values are inherited properly. @@ -352,6 +353,12 @@ TEST_F(NetworkTest, inheritanceSupport4) { &Network4::setDdnsUseConflictResolution, false, true); } + { + SCOPED_TRACE("allocator"); + testNetworkInheritance<TestNetwork4>(&Network4::getAllocatorType, + &Network4::setAllocatorType, + "iterative", "random"); + } } // This test verifies that the inheritance is supported for DHCPv6 |