From: Thomas Markwalder Date: Fri, 10 Aug 2018 17:48:30 +0000 (-0400) Subject: [5705] kea-dhcp4 now fully supports globl HRs X-Git-Tag: gitlab29-base~50^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4f8db6c61e162c610fe0da5ebcdd09ed31ee615e;p=thirdparty%2Fkea.git [5705] kea-dhcp4 now fully supports globl HRs src/bin/dhcp4/dhcp4_lexer.ll src/bin/dhcp4/dhcp4_parser.yy Added support for HR_GLOBAL mode src/bin/dhcp4/tests/dhcp4_test_utils.cc Minor modifications to output exception and config text when parsing fails. src/bin/dhcp4/tests/host_unittest.cc New tests to make sure reservation matching behaves according to reservation modes src/lib/dhcpsrv/network.cc src/lib/dhcpsrv/parsers/dhcp_parsers.cc Adding missed bits needed to parse HR_GLOBAL mode --- diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc index 756a7cfd26..f7ed46cc93 100644 --- a/src/bin/dhcp4/dhcp4_lexer.cc +++ b/src/bin/dhcp4/dhcp4_lexer.cc @@ -465,8 +465,8 @@ static void yy_fatal_error (yyconst char msg[] ); (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 172 -#define YY_END_OF_BUFFER 173 +#define YY_NUM_RULES 173 +#define YY_END_OF_BUFFER 174 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -474,166 +474,167 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1437] = +static yyconst flex_int16_t yy_accept[1443] = { 0, - 165, 165, 0, 0, 0, 0, 0, 0, 0, 0, - 173, 171, 10, 11, 171, 1, 165, 162, 165, 165, - 171, 164, 163, 171, 171, 171, 171, 171, 158, 159, - 171, 171, 171, 160, 161, 5, 5, 5, 171, 171, - 171, 10, 11, 0, 0, 154, 0, 0, 0, 0, + 166, 166, 0, 0, 0, 0, 0, 0, 0, 0, + 174, 172, 10, 11, 172, 1, 166, 163, 166, 166, + 172, 165, 164, 172, 172, 172, 172, 172, 159, 160, + 172, 172, 172, 161, 162, 5, 5, 5, 172, 172, + 172, 10, 11, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, - 165, 165, 0, 164, 165, 3, 2, 6, 0, 165, + 166, 166, 0, 165, 166, 3, 2, 6, 0, 166, 0, 0, 0, 0, 0, 0, 4, 0, 0, 9, - 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, + 0, 156, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, - + 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 170, 168, 0, 167, 166, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 0, 0, 0, 0, 0, 0, 171, 169, 0, 168, + 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 134, 0, 0, 71, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 136, 0, 135, 0, 0, 72, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, - 0, 0, 169, 166, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 136, 0, 0, 138, 0, 0, - 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, - 0, 56, 0, 0, 0, 0, 0, 89, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, + 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, - 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 28, + 18, 0, 0, 0, 0, 170, 167, 0, 0, 0, - 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 143, 0, 140, 0, 139, 0, 0, 0, - 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, + 139, 0, 0, 0, 0, 0, 0, 0, 73, 0, + 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, + 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 0, 141, + 0, 0, 87, 28, 0, 0, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 144, 0, 141, 0, + 140, 0, 0, 0, 100, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, + 0, 7, 0, 0, 142, 0, 0, 0, 0, 0, 0, 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, 77, 0, 0, 0, 0, 0, + 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, + 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, - 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, - 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, + 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 105, 75, 0, 0, 0, 0, 80, 29, + 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 106, 76, + 0, 0, 0, 0, 81, 29, 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, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, + 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, - 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 34, 0, 0, 0, 0, 27, 0, 0, 0, 0, + 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 91, 0, 0, 0, 0, 0, 0, 117, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, + 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, + 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, + 93, 0, 0, 0, 0, 97, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 122, 0, 0, 120, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, - 0, 0, 0, 0, 92, 0, 0, 0, 0, 96, - 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 0, 22, 0, 101, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, - 0, 0, 0, 53, 0, 0, 0, 0, 0, 104, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 91, 0, 22, 0, 102, 0, 0, 0, 0, + 0, 0, 0, 0, 127, 0, 0, 0, 0, 53, + 0, 0, 0, 0, 0, 105, 31, 0, 0, 0, + 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, + 54, 70, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, + 124, 0, 122, 0, 117, 116, 0, 44, 0, 21, + 0, 0, 0, 0, 0, 138, 0, 0, 86, 0, + 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 0, 103, 15, + 0, 38, 0, 0, 0, 0, 0, 126, 0, 0, + 0, 0, 0, 0, 66, 49, 0, 0, 98, 0, + 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, + 60, 0, 147, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 151, 0, 54, 70, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, - 0, 0, 0, 0, 123, 0, 121, 0, 116, 115, - 0, 44, 0, 21, 0, 0, 0, 0, 0, 137, - 0, 0, 85, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 0, 102, 15, 0, 38, 0, 0, 0, 0, - 0, 125, 0, 0, 0, 0, 0, 0, 66, 49, - 0, 0, 97, 0, 0, 0, 0, 88, 0, 0, - 0, 0, 0, 0, 60, 0, 146, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 14, 0, 0, 43, 0, 0, + 0, 0, 0, 154, 84, 0, 45, 115, 0, 0, + 150, 119, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 24, 0, 125, 0, 0, 0, 0, + 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 47, 0, 0, 0, 39, + 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, + 26, 0, 151, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 42, 0, 0, 20, 153, 52, + 0, 148, 143, 0, 0, 16, 0, 0, 132, 0, + 0, 0, 0, 0, 0, 112, 0, 88, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, + 0, 0, 0, 0, 0, 133, 13, 0, 0, 0, + 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 111, 0, 19, 0, 129, + 0, 0, 0, 0, 0, 128, 0, 0, 0, 110, + 0, 0, 46, 0, 0, 41, 131, 0, 0, 0, 0, 0, 0, 0, 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, 43, 0, 0, 0, 0, 0, 153, 83, 0, - 45, 114, 0, 0, 149, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 24, 0, 124, - 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, - 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, - 103, 0, 0, 0, 26, 0, 150, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, - - 0, 20, 152, 52, 0, 147, 142, 0, 0, 16, - 0, 0, 131, 0, 0, 0, 0, 0, 0, 111, - 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, - 67, 0, 0, 0, 0, 0, 0, 0, 0, 132, - 13, 0, 0, 0, 0, 0, 119, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, - 0, 19, 0, 128, 0, 0, 0, 0, 0, 127, - 0, 0, 0, 109, 0, 0, 46, 0, 0, 41, - 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 129, 0, 84, 0, - 0, 0, 0, 0, 0, 107, 112, 50, 0, 0, - 0, 0, 106, 0, 0, 133, 0, 0, 0, 0, - 0, 73, 0, 0, 108, 0 + 0, 0, 130, 0, 85, 0, 0, 0, 0, 0, + 0, 108, 113, 50, 0, 0, 0, 0, 107, 0, + 0, 134, 0, 0, 0, 0, 0, 74, 0, 0, + 109, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -680,349 +681,351 @@ static yyconst flex_int32_t yy_meta[72] = 3 } ; -static yyconst flex_int16_t yy_base[1449] = +static yyconst flex_int16_t yy_base[1455] = { 0, 0, 70, 19, 29, 41, 49, 52, 58, 87, 95, - 1799, 1800, 32, 1795, 141, 0, 201, 1800, 206, 88, - 11, 213, 1800, 1777, 114, 25, 2, 6, 1800, 1800, - 73, 11, 17, 1800, 1800, 1800, 104, 1783, 1738, 0, - 1775, 107, 1790, 217, 247, 1800, 1734, 185, 1733, 1739, - 93, 58, 1731, 91, 211, 195, 14, 273, 195, 1730, - 181, 275, 202, 209, 1739, 66, 188, 1738, 232, 219, - 296, 284, 207, 1721, 78, 287, 324, 305, 1740, 0, - 339, 359, 367, 374, 379, 1800, 0, 1800, 301, 344, - 223, 295, 196, 336, 348, 210, 1800, 1737, 1776, 1800, - - 322, 1800, 392, 1765, 330, 1723, 1733, 351, 366, 1728, - 363, 370, 372, 379, 241, 1771, 0, 443, 376, 1715, - 1717, 1713, 1721, 362, 1717, 1706, 1707, 89, 1723, 1706, - 1715, 1715, 366, 1706, 353, 1707, 358, 1752, 1756, 1698, - 1749, 1691, 1714, 1711, 1711, 1705, 358, 1698, 1691, 1696, - 1690, 378, 1701, 1694, 1685, 1684, 1698, 373, 1684, 386, - 1700, 72, 439, 383, 413, 1699, 1696, 1697, 1695, 414, - 1677, 1679, 420, 1671, 1688, 1680, 0, 389, 425, 331, - 398, 442, 438, 1679, 1800, 0, 1722, 451, 1669, 1672, - 441, 447, 1680, 457, 1723, 468, 1722, 451, 1721, 1800, - - 503, 1720, 479, 1681, 1661, 1677, 1674, 1673, 1664, 449, - 1713, 1707, 1673, 1652, 1660, 1655, 1669, 1665, 1653, 1665, - 1665, 1656, 1640, 1644, 1657, 1657, 1649, 1639, 1657, 1800, - 1652, 1655, 1636, 1635, 1685, 1634, 1644, 1647, 491, 1643, - 1631, 1642, 1678, 1625, 1681, 1618, 1633, 496, 1623, 1639, - 1620, 1619, 1625, 1616, 1615, 1622, 1624, 1669, 1627, 1626, - 1620, 311, 1627, 1622, 1614, 1604, 1619, 1618, 1613, 1617, - 1598, 1614, 1600, 1606, 1613, 1601, 314, 1594, 1608, 1649, - 1610, 415, 1601, 484, 1800, 1800, 485, 1800, 1800, 1588, - 0, 459, 293, 1590, 498, 490, 1644, 1597, 497, 1800, - - 1642, 1800, 1636, 545, 1800, 495, 1578, 1634, 1580, 1586, - 1636, 1593, 1592, 476, 1800, 1590, 1632, 1587, 1584, 520, - 1590, 1628, 1622, 1577, 1572, 1569, 1618, 1577, 1566, 1615, - 1563, 551, 1577, 1562, 1575, 1562, 1572, 1567, 1574, 1569, - 1565, 401, 1563, 1566, 1561, 1557, 1605, 487, 1599, 1800, - 1598, 1550, 1549, 1548, 1541, 1543, 1547, 1536, 1549, 533, - 1594, 1549, 1546, 1550, 1800, 1548, 1537, 1537, 1549, 483, - 1524, 1525, 1546, 524, 1528, 1577, 1524, 1538, 1537, 1523, - 1535, 1534, 1533, 1532, 488, 1573, 1572, 1800, 1516, 1515, - 567, 1528, 1800, 1800, 1527, 0, 1516, 1508, 520, 1513, - - 1564, 1563, 1521, 1561, 1800, 1509, 1559, 1800, 545, 600, - 545, 1558, 1514, 1510, 1498, 1800, 1503, 1513, 1512, 1499, - 1498, 1800, 1500, 1497, 518, 1495, 1497, 1800, 1505, 1502, - 1487, 1500, 1495, 575, 1502, 1484, 1533, 1800, 1482, 1498, - 1530, 1493, 1490, 1491, 1493, 1525, 1478, 1473, 1472, 1521, - 1467, 1482, 1460, 1467, 1472, 1520, 1800, 1467, 1463, 1461, - 1470, 1464, 1471, 1455, 1455, 1465, 1468, 1457, 1452, 1800, - 1507, 1800, 1451, 1462, 1499, 1446, 1451, 1460, 1454, 1448, - 1457, 1497, 1491, 1455, 1438, 1438, 1433, 1453, 1428, 1434, - 1433, 1441, 1445, 1428, 1484, 1426, 1440, 1429, 1800, 1800, - - 1429, 1427, 1800, 1438, 1472, 1434, 0, 1418, 1435, 1473, - 1423, 1800, 1800, 1420, 1800, 1426, 1800, 543, 550, 592, - 1800, 1423, 1411, 1462, 1409, 1408, 1407, 1414, 1407, 1419, - 1418, 1418, 1406, 1447, 1414, 1406, 1449, 1395, 1411, 1410, - 1800, 1395, 1392, 1406, 1398, 1404, 1395, 1403, 1388, 1404, - 1386, 1400, 538, 1382, 1376, 1381, 1396, 1393, 1394, 1391, - 1432, 1389, 1800, 1375, 1377, 1386, 1384, 1421, 1420, 1373, - 590, 1382, 1365, 1366, 1363, 1800, 1377, 1356, 1377, 1374, - 1366, 1409, 1363, 1370, 1406, 1800, 1353, 1367, 1351, 1365, - 1368, 1349, 1399, 1398, 1397, 1344, 1395, 1394, 1800, 14, - - 1356, 1356, 1354, 1337, 1342, 1344, 1800, 1350, 1340, 1800, - 1385, 1333, 1388, 564, 539, 548, 1338, 1381, 560, 1385, - 1379, 1378, 1377, 1331, 1321, 1374, 1327, 1337, 1371, 1334, - 1328, 1315, 1323, 1366, 1370, 1327, 1326, 1327, 1320, 1309, - 1322, 1325, 1320, 1321, 1318, 1317, 1313, 1319, 1314, 1355, - 1354, 1304, 1294, 562, 1351, 1800, 1350, 1299, 1291, 1292, - 1341, 1304, 1291, 1302, 1800, 1290, 1299, 1298, 1298, 1338, - 1281, 1290, 1283, 1294, 1271, 1275, 1326, 1290, 1272, 1282, - 1322, 1321, 1320, 1267, 1318, 1282, 576, 578, 1259, 1269, - 575, 1800, 1319, 1265, 1275, 1275, 1258, 1263, 1267, 1257, - - 1269, 1272, 1309, 1800, 1303, 597, 1256, 1264, 1263, 1258, - 1254, 1261, 1800, 1244, 1247, 1243, 1260, 1255, 1243, 1239, - 5, 9, 115, 189, 229, 386, 488, 1800, 542, 550, - 550, 564, 570, 628, 556, 574, 592, 579, 636, 595, - 587, 590, 1800, 1800, 600, 605, 610, 598, 1800, 1800, - 612, 599, 593, 599, 617, 604, 652, 605, 655, 606, - 662, 1800, 609, 613, 615, 609, 667, 622, 612, 613, - 609, 622, 633, 617, 635, 630, 631, 633, 626, 628, - 629, 629, 631, 684, 643, 648, 625, 1800, 650, 640, - 685, 645, 635, 650, 651, 638, 652, 1800, 671, 679, - - 659, 649, 696, 661, 665, 704, 659, 654, 655, 651, - 660, 655, 711, 670, 661, 1800, 663, 674, 659, 675, - 669, 714, 682, 667, 668, 1800, 685, 688, 671, 728, - 673, 1800, 690, 693, 673, 692, 730, 690, 686, 681, - 699, 698, 699, 685, 700, 692, 699, 689, 707, 692, - 1800, 700, 706, 701, 752, 1800, 703, 708, 750, 703, - 715, 710, 714, 712, 710, 712, 722, 765, 711, 711, - 768, 714, 1800, 713, 721, 719, 724, 736, 720, 725, - 735, 736, 741, 780, 739, 755, 761, 734, 745, 736, - 788, 733, 1800, 740, 745, 752, 793, 794, 743, 1800, - - 739, 742, 741, 761, 758, 763, 764, 750, 758, 767, - 747, 762, 769, 809, 1800, 765, 813, 814, 767, 777, - 779, 768, 764, 771, 780, 823, 772, 770, 772, 789, - 828, 780, 779, 785, 783, 781, 834, 835, 831, 791, - 1800, 796, 789, 780, 799, 787, 797, 794, 799, 795, - 808, 808, 1800, 792, 793, 1800, 794, 792, 811, 812, - 809, 795, 816, 815, 799, 804, 822, 1800, 812, 845, - 836, 808, 867, 830, 1800, 813, 828, 820, 824, 1800, - 1800, 834, 869, 818, 871, 820, 878, 823, 834, 826, - 832, 828, 846, 847, 848, 1800, 847, 1800, 849, 1800, - - 834, 835, 854, 845, 838, 850, 892, 858, 1800, 850, - 900, 843, 902, 1800, 903, 847, 853, 860, 902, 1800, - 1800, 852, 852, 855, 869, 874, 857, 914, 873, 874, - 875, 913, 867, 872, 921, 871, 923, 872, 925, 926, - 868, 928, 889, 930, 874, 886, 891, 877, 907, 936, - 896, 1800, 888, 939, 888, 884, 900, 905, 887, 945, - 900, 905, 1800, 906, 899, 908, 909, 906, 896, 899, - 899, 956, 905, 958, 959, 904, 961, 957, 901, 916, - 909, 967, 1800, 922, 1800, 1800, 928, 920, 930, 916, - 917, 976, 977, 923, 933, 980, 1800, 931, 931, 933, - - 935, 986, 929, 932, 1800, 951, 1800, 935, 1800, 1800, - 949, 1800, 943, 1800, 993, 944, 995, 996, 978, 1800, - 956, 957, 1800, 945, 944, 947, 947, 948, 944, 1800, - 966, 952, 953, 968, 968, 971, 971, 968, 1010, 974, - 1800, 966, 1800, 1800, 976, 1800, 973, 979, 980, 977, - 1019, 1800, 970, 971, 971, 977, 976, 987, 1800, 1800, - 1026, 975, 1800, 976, 976, 978, 984, 1800, 986, 1038, - 989, 992, 1041, 1004, 1800, 1001, 1800, 998, 1800, 1021, - 1041, 1047, 1048, 992, 1050, 1051, 1006, 1000, 1054, 1055, - 1051, 1016, 1012, 1054, 1004, 1009, 1007, 1064, 1022, 1066, - - 1026, 1068, 1031, 1020, 1014, 1031, 1031, 1075, 1019, 1036, - 1035, 1019, 1075, 1076, 1025, 1078, 1043, 1044, 1800, 1044, - 1031, 1800, 1042, 1089, 1049, 1062, 1049, 1800, 1800, 1093, - 1800, 1800, 1042, 1053, 1800, 1800, 1043, 1092, 1037, 1042, - 1100, 1050, 1060, 1061, 1800, 1104, 1059, 1800, 1106, 1800, - 1051, 1066, 1054, 1069, 1073, 1800, 1107, 1075, 1068, 1077, - 1059, 1066, 1118, 1081, 1080, 1123, 1124, 1125, 1076, 1800, - 1127, 1128, 1075, 1800, 1079, 1131, 1077, 1076, 1134, 1089, - 1800, 1131, 1084, 1081, 1800, 1095, 1800, 1098, 1141, 1096, - 1143, 1104, 1087, 1089, 1086, 1102, 1103, 1112, 1800, 1102, - - 1152, 1800, 1800, 1800, 1148, 1800, 1800, 1113, 1150, 1800, - 1104, 1111, 1800, 1108, 1113, 1111, 1161, 1162, 1107, 1800, - 1122, 1800, 1123, 1113, 1125, 1168, 1112, 1120, 1121, 1134, - 1800, 1133, 1123, 1122, 1136, 1127, 1136, 1138, 1142, 1800, - 1800, 1181, 1126, 1183, 1143, 1185, 1800, 1181, 1145, 1146, - 1133, 1128, 1191, 1150, 1151, 1152, 1195, 1154, 1157, 1800, - 1198, 1800, 1161, 1800, 1143, 1201, 1202, 1147, 1164, 1800, - 1150, 1150, 1152, 1800, 1157, 1167, 1800, 1153, 1165, 1800, - 1800, 1170, 1164, 1168, 1159, 1211, 1160, 1168, 1177, 1170, - 1165, 1180, 1171, 1178, 1165, 1180, 1185, 1228, 1187, 1230, - - 1175, 1191, 1182, 1196, 1192, 1185, 1800, 1237, 1800, 1238, - 1239, 1196, 1195, 1196, 1186, 1800, 1800, 1800, 1244, 1188, - 1204, 1247, 1800, 1243, 1194, 1800, 1193, 1195, 1206, 1253, - 1204, 1800, 1213, 1256, 1800, 1800, 1262, 1267, 1272, 1277, - 1282, 1287, 1292, 1295, 1269, 1274, 1276, 1289 + 1805, 1806, 32, 1801, 141, 0, 201, 1806, 206, 88, + 11, 213, 1806, 1783, 114, 25, 2, 6, 1806, 1806, + 73, 11, 17, 1806, 1806, 1806, 104, 1789, 1744, 0, + 1781, 107, 1796, 217, 247, 1806, 1740, 185, 1739, 1745, + 93, 58, 1737, 91, 211, 195, 14, 273, 195, 1736, + 181, 275, 202, 209, 76, 68, 188, 1745, 232, 219, + 296, 284, 207, 1728, 230, 287, 324, 305, 1747, 0, + 339, 359, 367, 374, 379, 1806, 0, 1806, 301, 344, + 295, 336, 196, 348, 350, 292, 1806, 1744, 1783, 1806, + + 355, 1806, 395, 1772, 331, 1730, 1740, 351, 367, 1735, + 363, 370, 373, 379, 241, 1778, 0, 446, 375, 1722, + 1724, 1720, 1728, 363, 1724, 1713, 1714, 76, 1730, 1713, + 1722, 1722, 322, 1713, 367, 1714, 1712, 359, 1758, 1762, + 1704, 1755, 1697, 1720, 1717, 1717, 1711, 349, 1704, 1697, + 1702, 1696, 381, 1707, 1700, 1691, 1690, 1704, 362, 1690, + 381, 1706, 266, 442, 376, 390, 1705, 1702, 1703, 1701, + 417, 1683, 1685, 418, 1677, 1694, 1686, 0, 392, 428, + 441, 401, 445, 448, 1685, 1806, 0, 1728, 454, 1675, + 1678, 444, 450, 1686, 457, 1729, 460, 1728, 454, 1727, + + 1806, 498, 1726, 482, 1687, 1667, 1683, 1680, 1679, 1670, + 75, 1719, 1713, 1679, 1658, 1666, 1661, 1675, 1671, 1659, + 1671, 1671, 1662, 1646, 1650, 1663, 1665, 1662, 1654, 1644, + 1662, 1806, 1657, 1660, 1641, 1640, 1690, 1639, 1649, 1652, + 453, 1648, 1636, 1647, 1683, 1630, 1686, 1623, 1638, 505, + 1628, 1644, 1625, 1624, 1630, 1621, 1620, 1627, 1629, 1674, + 1632, 1631, 1625, 470, 1632, 1627, 1619, 1609, 1624, 1623, + 1618, 1622, 1603, 1619, 1605, 1611, 1618, 1606, 521, 1599, + 1613, 1654, 1615, 468, 1606, 485, 1806, 1806, 492, 1806, + 1806, 1593, 0, 479, 470, 1595, 533, 505, 1649, 1602, + + 501, 1806, 1647, 1806, 1641, 551, 1806, 500, 1583, 1639, + 1585, 1591, 1641, 1598, 1597, 491, 1806, 1595, 1637, 1592, + 1589, 540, 1595, 1633, 1627, 1582, 1577, 1574, 1623, 1582, + 1571, 1587, 1619, 1567, 548, 1581, 1566, 1579, 1566, 1576, + 1571, 1578, 1573, 1569, 476, 1567, 1570, 1565, 1561, 1609, + 511, 1603, 1806, 1602, 1554, 1553, 1552, 1545, 1547, 1551, + 1540, 1553, 550, 1598, 1553, 1550, 1554, 1806, 1552, 1541, + 1541, 1553, 521, 1528, 1529, 1550, 531, 1532, 1581, 1528, + 1542, 1541, 1527, 1539, 1538, 1537, 1536, 504, 1577, 1576, + 1806, 1520, 1519, 574, 1532, 1806, 1806, 1531, 0, 1520, + + 1512, 529, 1517, 1568, 1567, 1525, 1565, 1806, 1513, 1563, + 1806, 554, 600, 547, 1562, 1518, 1514, 1502, 1806, 1507, + 1517, 1516, 1503, 1502, 1806, 1504, 1501, 190, 1499, 1501, + 1806, 1509, 1506, 1491, 1504, 1499, 581, 1506, 1494, 1487, + 1536, 1806, 1485, 1501, 1533, 1496, 1493, 1494, 1496, 1528, + 1481, 1476, 1475, 1524, 1470, 1485, 1463, 1470, 1475, 1523, + 1806, 1470, 1466, 1464, 1473, 1467, 1474, 1458, 1458, 1468, + 1471, 1460, 1455, 1806, 1510, 1806, 1454, 1465, 1502, 1449, + 1454, 1463, 1457, 1451, 1460, 1500, 1494, 1458, 1441, 1441, + 1436, 1456, 1431, 1437, 1436, 1444, 1448, 1431, 1487, 1429, + + 1443, 1432, 1806, 1806, 1432, 1430, 1806, 1441, 1475, 1437, + 0, 1421, 1438, 1476, 1426, 1806, 1806, 1423, 1806, 1429, + 1806, 559, 568, 582, 1806, 1426, 1414, 1465, 1412, 1411, + 1410, 1417, 1410, 1422, 1421, 1421, 1409, 1450, 1417, 1409, + 1452, 1398, 1414, 1413, 1806, 1398, 1395, 1451, 1408, 1400, + 1406, 1397, 1405, 1390, 1406, 1388, 1402, 556, 1384, 1378, + 1383, 1398, 1395, 1396, 1393, 1434, 1391, 1806, 1377, 1379, + 1388, 1386, 1423, 1422, 1375, 563, 1384, 1367, 1368, 1365, + 1806, 1379, 1358, 1379, 1376, 1368, 1411, 1365, 1372, 1408, + 1806, 1355, 1369, 1353, 1367, 1370, 1351, 1401, 1400, 1399, + + 1346, 1397, 1396, 1806, 14, 1358, 1358, 1356, 1339, 1344, + 1346, 1806, 1352, 1342, 1806, 1387, 1335, 1390, 569, 546, + 556, 1340, 1383, 581, 1387, 1381, 1380, 1379, 1333, 1323, + 1376, 1329, 1339, 1373, 1336, 1330, 1317, 1325, 1368, 1372, + 1329, 1328, 1806, 1329, 1322, 1311, 1324, 1327, 1322, 1323, + 1320, 1319, 1315, 1321, 1316, 1357, 1356, 1306, 1296, 573, + 1353, 1806, 1352, 1301, 1293, 1294, 1343, 1306, 1293, 1304, + 1806, 1292, 1301, 1300, 1300, 1340, 1283, 1292, 1285, 1296, + 1273, 1277, 1328, 1292, 1274, 1284, 1324, 1323, 1322, 1269, + 1320, 1284, 578, 583, 1261, 1271, 593, 1806, 1321, 1267, + + 1277, 1277, 1260, 1265, 1269, 1259, 1271, 1274, 1311, 1806, + 1305, 602, 1258, 1266, 1265, 1260, 1256, 1263, 1806, 1246, + 1249, 1245, 15, 20, 76, 184, 234, 261, 357, 386, + 386, 421, 426, 1806, 543, 560, 564, 575, 590, 646, + 576, 578, 593, 581, 645, 605, 591, 594, 1806, 1806, + 606, 611, 616, 604, 1806, 1806, 618, 605, 600, 605, + 623, 610, 658, 611, 661, 612, 668, 1806, 615, 619, + 621, 615, 673, 628, 618, 619, 615, 628, 639, 623, + 641, 636, 637, 639, 632, 634, 635, 635, 637, 690, + 649, 654, 631, 1806, 656, 646, 691, 651, 641, 656, + + 657, 644, 658, 1806, 677, 685, 665, 655, 702, 667, + 671, 710, 665, 660, 661, 657, 666, 661, 717, 676, + 667, 1806, 669, 680, 665, 681, 675, 720, 688, 673, + 674, 1806, 691, 694, 677, 734, 679, 1806, 696, 699, + 679, 698, 736, 696, 692, 687, 705, 704, 705, 691, + 706, 698, 705, 695, 713, 698, 1806, 706, 712, 707, + 758, 1806, 709, 714, 756, 709, 721, 716, 720, 718, + 716, 718, 728, 771, 717, 717, 774, 720, 1806, 719, + 727, 725, 730, 742, 726, 731, 741, 742, 747, 786, + 745, 761, 767, 740, 751, 742, 794, 739, 1806, 746, + + 751, 758, 799, 800, 749, 1806, 745, 748, 747, 767, + 764, 769, 770, 756, 764, 773, 753, 768, 775, 815, + 1806, 771, 819, 820, 773, 783, 785, 774, 770, 777, + 786, 829, 778, 776, 778, 795, 834, 786, 785, 791, + 789, 787, 840, 841, 837, 797, 1806, 802, 795, 786, + 805, 793, 803, 800, 805, 801, 814, 814, 1806, 798, + 799, 1806, 800, 798, 817, 818, 815, 801, 822, 821, + 805, 810, 828, 1806, 818, 851, 842, 814, 873, 836, + 1806, 819, 834, 826, 830, 1806, 1806, 840, 875, 824, + 877, 826, 884, 829, 840, 832, 838, 834, 852, 853, + + 854, 1806, 853, 1806, 855, 1806, 840, 841, 860, 851, + 844, 856, 898, 864, 1806, 856, 906, 849, 908, 1806, + 909, 853, 859, 866, 908, 1806, 1806, 858, 858, 861, + 875, 880, 863, 920, 879, 880, 881, 919, 873, 878, + 927, 877, 929, 878, 931, 932, 874, 934, 895, 936, + 880, 892, 897, 883, 913, 942, 902, 1806, 894, 945, + 894, 890, 906, 911, 893, 951, 906, 911, 1806, 912, + 905, 914, 915, 912, 902, 905, 905, 962, 911, 964, + 965, 910, 967, 963, 907, 922, 915, 973, 1806, 928, + 1806, 1806, 934, 926, 936, 922, 923, 982, 983, 929, + + 939, 986, 1806, 937, 937, 939, 941, 992, 935, 938, + 1806, 957, 1806, 941, 1806, 1806, 955, 1806, 949, 1806, + 999, 950, 1001, 1002, 984, 1806, 962, 963, 1806, 951, + 950, 953, 953, 954, 950, 1806, 972, 958, 959, 974, + 974, 977, 977, 974, 1016, 980, 1806, 972, 1806, 1806, + 982, 1806, 979, 985, 986, 983, 1025, 1806, 976, 977, + 977, 983, 982, 993, 1806, 1806, 1032, 981, 1806, 982, + 982, 984, 990, 1806, 992, 1044, 995, 998, 1047, 1010, + 1806, 1007, 1806, 1004, 1806, 1027, 1047, 1053, 1054, 998, + 1056, 1057, 1012, 1006, 1060, 1061, 1057, 1022, 1018, 1060, + + 1010, 1015, 1013, 1070, 1028, 1072, 1032, 1074, 1037, 1026, + 1020, 1037, 1037, 1081, 1025, 1042, 1041, 1025, 1081, 1082, + 1031, 1084, 1049, 1050, 1806, 1050, 1037, 1806, 1048, 1095, + 1055, 1068, 1055, 1806, 1806, 1099, 1806, 1806, 1048, 1059, + 1806, 1806, 1049, 1098, 1043, 1048, 1106, 1056, 1066, 1067, + 1806, 1110, 1065, 1806, 1112, 1806, 1057, 1072, 1060, 1075, + 1079, 1806, 1113, 1081, 1074, 1083, 1065, 1072, 1124, 1087, + 1086, 1129, 1130, 1131, 1082, 1806, 1133, 1134, 1081, 1806, + 1085, 1137, 1083, 1082, 1140, 1095, 1806, 1137, 1090, 1087, + 1806, 1101, 1806, 1104, 1147, 1102, 1149, 1110, 1093, 1095, + + 1092, 1108, 1109, 1118, 1806, 1108, 1158, 1806, 1806, 1806, + 1154, 1806, 1806, 1119, 1156, 1806, 1110, 1117, 1806, 1114, + 1119, 1117, 1167, 1168, 1113, 1806, 1128, 1806, 1129, 1119, + 1131, 1174, 1118, 1126, 1127, 1140, 1806, 1139, 1129, 1128, + 1142, 1133, 1142, 1144, 1148, 1806, 1806, 1187, 1132, 1189, + 1149, 1191, 1806, 1187, 1151, 1152, 1139, 1134, 1197, 1156, + 1157, 1158, 1201, 1160, 1163, 1806, 1204, 1806, 1167, 1806, + 1149, 1207, 1208, 1153, 1170, 1806, 1156, 1156, 1158, 1806, + 1163, 1173, 1806, 1159, 1171, 1806, 1806, 1176, 1170, 1174, + 1165, 1217, 1166, 1174, 1183, 1176, 1171, 1186, 1177, 1184, + + 1171, 1186, 1191, 1234, 1193, 1236, 1181, 1197, 1188, 1202, + 1198, 1191, 1806, 1243, 1806, 1244, 1245, 1202, 1201, 1202, + 1192, 1806, 1806, 1806, 1250, 1194, 1210, 1253, 1806, 1249, + 1200, 1806, 1199, 1201, 1212, 1259, 1210, 1806, 1219, 1262, + 1806, 1806, 1268, 1273, 1278, 1283, 1288, 1293, 1298, 1301, + 1275, 1280, 1282, 1295 } ; -static yyconst flex_int16_t yy_def[1449] = +static yyconst flex_int16_t yy_def[1455] = { 0, - 1437, 1437, 1438, 1438, 1437, 1437, 1437, 1437, 1437, 1437, - 1436, 1436, 1436, 1436, 1436, 1439, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1440, - 1436, 1436, 1436, 1441, 15, 1436, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1442, 45, 45, + 1443, 1443, 1444, 1444, 1443, 1443, 1443, 1443, 1443, 1443, + 1442, 1442, 1442, 1442, 1442, 1445, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1446, + 1442, 1442, 1442, 1447, 15, 1442, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1448, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1439, - 1436, 1436, 1436, 1436, 1436, 1436, 1443, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1440, 1436, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1445, + 1442, 1442, 1442, 1442, 1442, 1442, 1449, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1446, 1442, - 1441, 1436, 1436, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1444, 45, 1442, 45, 45, + 1447, 1442, 1442, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1450, 45, 1448, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1443, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1445, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1444, 1436, + 45, 45, 45, 45, 45, 45, 45, 1449, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1451, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1450, - 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1442, 1448, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1436, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1446, 45, 45, 45, 45, 45, 45, 45, 45, 1436, + 45, 45, 45, 45, 45, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1452, 45, 45, 45, 45, 45, 45, 45, - 45, 1436, 45, 1442, 1436, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1436, 45, 45, 45, 45, 45, + 45, 1442, 45, 1442, 45, 1448, 1442, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1436, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1436, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1436, 45, 45, - 45, 45, 1436, 1436, 1436, 1447, 45, 45, 45, 45, - - 45, 45, 45, 45, 1436, 45, 45, 1436, 45, 1442, - 45, 45, 45, 45, 45, 1436, 45, 45, 45, 45, - 45, 1436, 45, 45, 45, 45, 45, 1436, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1436, 45, 45, + 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1436, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1436, - 45, 1436, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1436, 1436, + 1442, 45, 45, 45, 45, 1442, 1442, 1442, 1453, 45, - 45, 45, 1436, 45, 45, 1436, 1448, 45, 45, 45, - 45, 1436, 1436, 45, 1436, 45, 1436, 45, 45, 45, - 1436, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1442, 45, 45, + 1442, 45, 1448, 45, 45, 45, 45, 45, 1442, 45, + 45, 45, 45, 45, 1442, 45, 45, 45, 45, 45, + 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1442, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1436, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1436, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1436, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1436, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1436, 45, - 45, 45, 45, 45, 45, 45, 1436, 45, 45, 1436, + 45, 45, 1442, 1442, 45, 45, 1442, 45, 45, 1442, + 1454, 45, 45, 45, 45, 1442, 1442, 45, 1442, 45, + 1442, 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1442, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, + 45, 1442, 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1436, 45, 45, 45, 45, - 45, 45, 45, 45, 1436, 45, 45, 45, 45, 45, + 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, + 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1436, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1442, 45, 45, - 45, 45, 45, 1436, 45, 45, 45, 45, 45, 45, - 45, 45, 1436, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1436, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1442, + 45, 45, 45, 45, 45, 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1436, 1436, 45, 45, 45, 45, 1436, 1436, + 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1442, 1442, + 45, 45, 45, 45, 1442, 1442, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1436, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1436, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1436, 45, 45, + 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1436, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1436, 45, 45, 45, 45, - 45, 1436, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1442, 45, 45, 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1436, 45, 45, 45, 45, 1436, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1442, 45, 45, 45, + 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1436, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1436, 45, 45, 45, 45, 45, 45, 1436, + 45, 45, 45, 45, 45, 45, 45, 45, 1442, 45, + 45, 45, 45, 45, 45, 1442, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1436, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1442, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1442, 45, + 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, + 1442, 45, 45, 45, 45, 1442, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + + 45, 1442, 45, 1442, 45, 1442, 45, 45, 45, 45, + 45, 45, 45, 45, 1442, 45, 45, 45, 45, 1442, + 45, 45, 45, 45, 45, 1442, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1436, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1436, 45, 45, 1436, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1436, 45, 45, - 45, 45, 45, 45, 1436, 45, 45, 45, 45, 1436, - 1436, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1436, 45, 1436, 45, 1436, - - 45, 45, 45, 45, 45, 45, 45, 45, 1436, 45, - 45, 45, 45, 1436, 45, 45, 45, 45, 45, 1436, - 1436, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1442, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1436, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1436, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1442, 45, + 1442, 1442, 45, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, + 1442, 45, 1442, 45, 1442, 1442, 45, 1442, 45, 1442, + 45, 45, 45, 45, 45, 1442, 45, 45, 1442, 45, + 45, 45, 45, 45, 45, 1442, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1442, 45, 1442, 1442, + 45, 1442, 45, 45, 45, 45, 45, 1442, 45, 45, + 45, 45, 45, 45, 1442, 1442, 45, 45, 1442, 45, + 45, 45, 45, 1442, 45, 45, 45, 45, 45, 45, + 1442, 45, 1442, 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1436, 45, 1436, 1436, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1436, 45, 45, 45, - 45, 45, 45, 45, 1436, 45, 1436, 45, 1436, 1436, - 45, 1436, 45, 1436, 45, 45, 45, 45, 45, 1436, - 45, 45, 1436, 45, 45, 45, 45, 45, 45, 1436, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1436, 45, 1436, 1436, 45, 1436, 45, 45, 45, 45, - 45, 1436, 45, 45, 45, 45, 45, 45, 1436, 1436, - 45, 45, 1436, 45, 45, 45, 45, 1436, 45, 45, - 45, 45, 45, 45, 1436, 45, 1436, 45, 1436, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1442, 45, 45, 1442, 45, 45, + 45, 45, 45, 1442, 1442, 45, 1442, 1442, 45, 45, + 1442, 1442, 45, 45, 45, 45, 45, 45, 45, 45, + 1442, 45, 45, 1442, 45, 1442, 45, 45, 45, 45, + 45, 1442, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1442, 45, 45, 45, 1442, + 45, 45, 45, 45, 45, 45, 1442, 45, 45, 45, + 1442, 45, 1442, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 45, 45, 1442, 45, 45, 1442, 1442, 1442, + 45, 1442, 1442, 45, 45, 1442, 45, 45, 1442, 45, + 45, 45, 45, 45, 45, 1442, 45, 1442, 45, 45, + 45, 45, 45, 45, 45, 45, 1442, 45, 45, 45, + 45, 45, 45, 45, 45, 1442, 1442, 45, 45, 45, + 45, 45, 1442, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1442, 45, 1442, 45, 1442, + 45, 45, 45, 45, 45, 1442, 45, 45, 45, 1442, + 45, 45, 1442, 45, 45, 1442, 1442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1436, 45, - 45, 1436, 45, 45, 45, 45, 45, 1436, 1436, 45, - 1436, 1436, 45, 45, 1436, 1436, 45, 45, 45, 45, - 45, 45, 45, 45, 1436, 45, 45, 1436, 45, 1436, - 45, 45, 45, 45, 45, 1436, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1436, - 45, 45, 45, 1436, 45, 45, 45, 45, 45, 45, - 1436, 45, 45, 45, 1436, 45, 1436, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1436, 45, - - 45, 1436, 1436, 1436, 45, 1436, 1436, 45, 45, 1436, - 45, 45, 1436, 45, 45, 45, 45, 45, 45, 1436, - 45, 1436, 45, 45, 45, 45, 45, 45, 45, 45, - 1436, 45, 45, 45, 45, 45, 45, 45, 45, 1436, - 1436, 45, 45, 45, 45, 45, 1436, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1436, - 45, 1436, 45, 1436, 45, 45, 45, 45, 45, 1436, - 45, 45, 45, 1436, 45, 45, 1436, 45, 45, 1436, - 1436, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - - 45, 45, 45, 45, 45, 45, 1436, 45, 1436, 45, - 45, 45, 45, 45, 45, 1436, 1436, 1436, 45, 45, - 45, 45, 1436, 45, 45, 1436, 45, 45, 45, 45, - 45, 1436, 45, 45, 1436, 0, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436 + 45, 45, 1442, 45, 1442, 45, 45, 45, 45, 45, + 45, 1442, 1442, 1442, 45, 45, 45, 45, 1442, 45, + 45, 1442, 45, 45, 45, 45, 45, 1442, 45, 45, + 1442, 0, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442 } ; -static yyconst flex_int16_t yy_nxt[1872] = +static yyconst flex_int16_t yy_nxt[1878] = { 0, - 1436, 13, 14, 13, 1436, 15, 16, 1436, 17, 18, - 19, 20, 21, 22, 22, 22, 23, 24, 86, 692, - 37, 14, 37, 87, 25, 26, 38, 1436, 693, 27, + 1442, 13, 14, 13, 1442, 15, 16, 1442, 17, 18, + 19, 20, 21, 22, 22, 22, 23, 24, 86, 698, + 37, 14, 37, 87, 25, 26, 38, 1442, 699, 27, 37, 14, 37, 42, 28, 42, 38, 92, 93, 29, 115, 30, 13, 14, 13, 91, 92, 25, 31, 93, - 13, 14, 13, 13, 14, 13, 32, 40, 814, 13, - 14, 13, 33, 40, 115, 92, 93, 815, 91, 34, + 13, 14, 13, 13, 14, 13, 32, 40, 816, 13, + 14, 13, 33, 40, 115, 92, 93, 817, 91, 34, 35, 13, 14, 13, 95, 15, 16, 96, 17, 18, 19, 20, 21, 22, 22, 22, 23, 24, 13, 14, 13, 109, 39, 91, 25, 26, 13, 14, 13, 27, 39, 85, 85, 85, 28, 42, 41, 42, 42, 29, 42, 30, 83, 108, 41, 111, 94, 25, 31, 109, - 816, 162, 89, 137, 89, 163, 32, 90, 90, 90, - 257, 138, 33, 214, 215, 83, 108, 258, 111, 34, + 215, 216, 89, 136, 89, 138, 32, 90, 90, 90, + 137, 315, 33, 139, 818, 83, 108, 316, 111, 34, 35, 44, 44, 44, 45, 45, 46, 45, 45, 45, 45, 45, 45, 45, 45, 47, 45, 45, 45, 45, 45, 48, 45, 49, 50, 45, 51, 45, 52, 53, @@ -1033,106 +1036,106 @@ static yyconst flex_int16_t yy_nxt[1872] = 74, 75, 76, 77, 78, 79, 57, 45, 45, 45, 45, 45, 81, 105, 82, 82, 82, 81, 114, 84, 84, 84, 102, 105, 81, 83, 84, 84, 84, 108, - 83, 180, 122, 112, 139, 123, 817, 83, 124, 105, - 125, 114, 126, 113, 140, 180, 141, 132, 83, 119, - 158, 178, 108, 83, 159, 120, 112, 103, 133, 180, - 83, 45, 147, 135, 160, 198, 148, 45, 134, 45, - 45, 113, 45, 183, 45, 45, 45, 178, 117, 143, - 144, 45, 45, 145, 45, 45, 149, 818, 198, 146, + 83, 181, 122, 112, 140, 123, 536, 83, 124, 105, + 125, 114, 126, 113, 141, 819, 142, 132, 83, 119, + 159, 537, 108, 83, 160, 120, 112, 103, 133, 181, + 83, 45, 148, 135, 161, 199, 149, 45, 134, 45, + 45, 113, 45, 163, 45, 45, 45, 164, 117, 144, + 145, 45, 45, 146, 45, 45, 150, 820, 199, 147, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 90, 90, 90, 45, 127, 300, - 111, 45, 128, 179, 385, 129, 130, 102, 114, 45, - 164, 399, 153, 45, 165, 45, 118, 166, 131, 150, - 154, 151, 155, 152, 167, 168, 112, 156, 157, 179, - 169, 173, 85, 85, 85, 286, 113, 90, 90, 90, - 399, 174, 103, 83, 178, 369, 175, 188, 370, 170, - 81, 171, 82, 82, 82, 89, 179, 89, 286, 191, + 45, 45, 45, 45, 90, 90, 90, 45, 127, 821, + 111, 45, 128, 179, 259, 129, 130, 181, 114, 45, + 165, 260, 154, 45, 166, 45, 118, 167, 131, 151, + 155, 152, 156, 153, 168, 169, 112, 157, 158, 179, + 170, 174, 85, 85, 85, 184, 113, 90, 90, 90, + 102, 175, 822, 83, 180, 221, 176, 222, 189, 171, + 81, 172, 82, 82, 82, 89, 179, 89, 180, 192, 90, 90, 90, 83, 113, 81, 83, 84, 84, 84, - 181, 172, 85, 85, 85, 188, 192, 101, 83, 194, - - 223, 195, 182, 83, 101, 191, 83, 196, 208, 220, - 197, 221, 226, 188, 194, 227, 224, 209, 210, 228, - 238, 83, 284, 192, 239, 390, 83, 194, 195, 819, - 202, 284, 101, 250, 251, 196, 101, 197, 268, 269, - 101, 203, 194, 253, 244, 195, 254, 255, 101, 259, - 284, 197, 101, 285, 101, 186, 201, 201, 201, 287, - 451, 452, 286, 201, 201, 201, 201, 201, 201, 270, - 285, 293, 277, 271, 296, 391, 297, 272, 280, 285, - 303, 299, 260, 261, 262, 289, 201, 201, 201, 201, - 201, 201, 301, 263, 293, 264, 288, 265, 266, 293, - - 267, 342, 296, 297, 299, 313, 353, 303, 393, 393, - 397, 314, 401, 402, 404, 301, 304, 304, 304, 419, - 398, 403, 306, 304, 304, 304, 304, 304, 304, 407, - 425, 393, 394, 399, 426, 458, 420, 404, 470, 480, - 354, 497, 820, 481, 498, 459, 304, 304, 304, 304, - 304, 304, 343, 510, 355, 344, 438, 407, 410, 410, - 410, 439, 411, 706, 532, 410, 410, 410, 410, 410, - 410, 485, 503, 614, 518, 486, 519, 504, 510, 533, - 541, 510, 615, 647, 648, 542, 706, 821, 410, 410, - 410, 410, 410, 410, 471, 665, 822, 610, 705, 707, - - 614, 518, 616, 519, 823, 711, 520, 440, 824, 708, - 615, 712, 441, 45, 45, 45, 747, 825, 828, 748, - 45, 45, 45, 45, 45, 45, 705, 779, 781, 782, - 800, 786, 666, 826, 780, 829, 783, 787, 827, 830, - 831, 832, 833, 45, 45, 45, 45, 45, 45, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 800, 843, - 844, 846, 847, 848, 845, 849, 850, 851, 852, 853, - 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, + 180, 173, 85, 85, 85, 103, 189, 193, 83, 195, + + 101, 196, 182, 83, 183, 192, 83, 101, 197, 209, + 198, 240, 189, 228, 224, 241, 229, 195, 210, 211, + 230, 83, 252, 253, 193, 286, 83, 195, 196, 203, + 225, 270, 271, 823, 286, 101, 197, 198, 255, 101, + 204, 256, 257, 101, 824, 195, 272, 246, 196, 198, + 273, 101, 261, 286, 274, 101, 287, 101, 187, 202, + 202, 202, 289, 345, 825, 288, 202, 202, 202, 202, + 202, 202, 288, 287, 295, 279, 282, 298, 393, 299, + 826, 301, 287, 305, 303, 262, 263, 264, 288, 202, + 202, 202, 202, 202, 202, 291, 265, 295, 266, 290, + + 267, 268, 295, 269, 301, 298, 299, 303, 402, 396, + 305, 306, 306, 306, 346, 356, 396, 347, 306, 306, + 306, 306, 306, 306, 372, 308, 302, 373, 394, 407, + 400, 388, 396, 410, 422, 455, 456, 402, 402, 397, + 401, 306, 306, 306, 306, 306, 306, 404, 405, 357, + 428, 423, 407, 442, 429, 474, 406, 501, 443, 462, + 502, 410, 514, 358, 413, 413, 413, 414, 671, 463, + 712, 413, 413, 413, 413, 413, 413, 484, 489, 507, + 514, 485, 490, 522, 508, 523, 545, 615, 827, 619, + 514, 546, 621, 712, 413, 413, 413, 413, 413, 413, + + 620, 653, 654, 711, 444, 672, 828, 713, 524, 445, + 522, 475, 523, 45, 45, 45, 619, 714, 829, 830, + 45, 45, 45, 45, 45, 45, 717, 753, 620, 785, + 754, 711, 718, 787, 788, 806, 786, 831, 834, 835, + 836, 789, 837, 45, 45, 45, 45, 45, 45, 792, + 838, 832, 839, 840, 841, 793, 833, 842, 843, 844, + 845, 846, 847, 806, 848, 849, 850, 852, 853, 854, + 851, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, - 904, 905, 906, 907, 908, 909, 887, 910, 911, 886, - 912, 913, 914, 915, 918, 919, 920, 921, 916, 922, - 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, - 933, 934, 935, 937, 938, 939, 940, 941, 942, 943, - 944, 945, 946, 936, 947, 948, 949, 950, 951, 952, + 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, + 914, 915, 893, 916, 917, 892, 918, 919, 920, 921, + 924, 925, 926, 927, 922, 928, 929, 930, 931, 932, + 933, 934, 935, 936, 937, 938, 939, 940, 941, 943, + 944, 945, 946, 947, 948, 949, 950, 951, 952, 942, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, - 963, 964, 965, 966, 967, 968, 969, 970, 972, 917, - 971, 973, 974, 975, 976, 977, 978, 979, 980, 981, + 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, + 973, 974, 975, 976, 978, 923, 977, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, - 992, 993, 994, 995, 996, 970, 997, 971, 998, 1000, - 1002, 1003, 1004, 999, 1005, 1006, 1007, 1008, 1009, 1010, + 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, + 1002, 976, 1003, 977, 1004, 1006, 1008, 1009, 1010, 1005, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, - 1041, 1001, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, + 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1007, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, - 1070, 1071, 1049, 1072, 1073, 1074, 1075, 1076, 1050, 1077, + 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1055, 1078, - 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, + 1079, 1080, 1081, 1082, 1056, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, - 1098, 1099, 1100, 1101, 1103, 1104, 1105, 1106, 1107, 1108, + 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, - 1119, 1120, 1121, 1122, 1123, 1125, 1126, 1127, 1128, 1129, - 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, - 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1119, 1148, - 1149, 1151, 1152, 1153, 1102, 1154, 1155, 1156, 1150, 1157, - 1158, 1159, 1160, 1161, 1162, 1163, 1124, 1164, 1165, 1166, - 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, - - 1177, 1179, 1180, 1181, 1182, 1178, 1183, 1184, 1185, 1186, - 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, - 1197, 1198, 1199, 1200, 1201, 1180, 1202, 1203, 1204, 1205, - 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, + 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, + 1129, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, + 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, + 1150, 1151, 1152, 1153, 1125, 1154, 1155, 1157, 1158, 1159, + 1108, 1160, 1161, 1162, 1156, 1163, 1164, 1165, 1166, 1167, + 1168, 1169, 1130, 1170, 1171, 1172, 1173, 1174, 1175, 1176, + + 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1185, 1186, 1187, + 1188, 1184, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, + 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 1207, 1186, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, - 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1226, 1254, 1255, - 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, + 1246, 1247, 1248, 1249, 1250, 1251, 1253, 1254, 1255, 1256, + 1257, 1258, 1259, 1232, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, - 1296, 1297, 1298, 1299, 1272, 1246, 1300, 1301, 1302, 1303, - 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, + 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, + 1278, 1252, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 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, @@ -1146,93 +1149,93 @@ static yyconst flex_int16_t yy_nxt[1872] = 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, - 1434, 1435, 12, 12, 12, 12, 12, 36, 36, 36, - 36, 36, 80, 291, 80, 80, 80, 99, 396, 99, - 507, 99, 101, 101, 101, 101, 101, 116, 116, 116, - 116, 116, 177, 101, 177, 177, 177, 199, 199, 199, - - 813, 812, 811, 810, 809, 808, 807, 806, 805, 804, - 803, 802, 801, 799, 798, 797, 796, 795, 794, 793, - 792, 791, 790, 789, 788, 785, 784, 778, 777, 776, - 775, 774, 773, 772, 771, 770, 769, 768, 767, 766, - 765, 764, 763, 762, 761, 760, 759, 758, 757, 756, - 755, 754, 753, 752, 751, 750, 749, 746, 745, 744, - 743, 742, 741, 740, 739, 738, 737, 736, 735, 734, - 733, 732, 731, 730, 729, 728, 727, 726, 725, 724, - 723, 722, 721, 720, 719, 718, 717, 716, 715, 714, - 713, 710, 709, 704, 703, 702, 701, 700, 699, 698, - - 697, 696, 695, 694, 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, 664, - 663, 662, 661, 660, 659, 658, 657, 656, 655, 654, - 653, 652, 651, 650, 649, 646, 645, 644, 643, 642, - 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, - 631, 630, 629, 628, 627, 626, 625, 624, 623, 622, - 621, 620, 619, 618, 617, 613, 612, 611, 610, 609, - 608, 607, 606, 605, 604, 603, 602, 601, 600, 599, - 598, 597, 596, 595, 594, 593, 592, 591, 590, 589, - - 588, 587, 586, 585, 584, 583, 582, 581, 580, 579, - 578, 577, 576, 575, 574, 573, 572, 571, 570, 569, - 568, 567, 566, 565, 564, 563, 562, 561, 560, 559, - 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, - 548, 547, 546, 545, 544, 543, 540, 539, 538, 537, - 536, 535, 534, 531, 530, 529, 528, 527, 526, 525, - 524, 523, 522, 521, 517, 516, 515, 514, 513, 512, - 511, 509, 508, 506, 505, 502, 501, 500, 499, 496, - 495, 494, 493, 492, 491, 490, 489, 488, 487, 484, - 483, 482, 479, 478, 477, 476, 475, 474, 473, 472, - - 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, - 457, 456, 455, 454, 453, 450, 449, 448, 447, 446, - 445, 444, 443, 442, 437, 436, 435, 434, 433, 432, - 431, 430, 429, 428, 427, 424, 423, 422, 421, 418, - 417, 416, 415, 414, 413, 412, 409, 408, 406, 405, - 400, 395, 392, 389, 388, 387, 386, 384, 383, 382, - 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, - 371, 368, 367, 366, 365, 364, 363, 362, 361, 360, - 359, 358, 357, 356, 352, 351, 350, 349, 348, 347, - 346, 345, 341, 340, 339, 338, 337, 336, 335, 334, - - 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, - 323, 322, 321, 320, 319, 318, 317, 316, 315, 312, - 311, 310, 309, 308, 307, 305, 200, 302, 300, 298, - 295, 294, 292, 290, 283, 282, 281, 279, 278, 276, - 275, 274, 273, 256, 252, 249, 248, 247, 246, 245, - 243, 242, 241, 240, 237, 236, 235, 234, 233, 232, - 231, 230, 229, 225, 222, 219, 218, 217, 216, 213, - 212, 211, 207, 206, 205, 204, 200, 193, 190, 189, - 187, 185, 184, 176, 161, 142, 136, 121, 110, 107, - 106, 104, 43, 100, 98, 97, 88, 43, 1436, 11, - - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436 + 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 12, 12, + 12, 12, 12, 36, 36, 36, 36, 36, 80, 293, + 80, 80, 80, 99, 399, 99, 511, 99, 101, 101, + 101, 101, 101, 116, 116, 116, 116, 116, 178, 101, + + 178, 178, 178, 200, 200, 200, 815, 814, 813, 812, + 811, 810, 809, 808, 807, 805, 804, 803, 802, 801, + 800, 799, 798, 797, 796, 795, 794, 791, 790, 784, + 783, 782, 781, 780, 779, 778, 777, 776, 775, 774, + 773, 772, 771, 770, 769, 768, 767, 766, 765, 764, + 763, 762, 761, 760, 759, 758, 757, 756, 755, 752, + 751, 750, 749, 748, 747, 746, 745, 744, 743, 742, + 741, 740, 739, 738, 737, 736, 735, 734, 733, 732, + 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, + 721, 720, 719, 716, 715, 710, 709, 708, 707, 706, + + 705, 704, 703, 702, 701, 700, 697, 696, 695, 694, + 693, 692, 691, 690, 689, 688, 687, 686, 685, 684, + 683, 682, 681, 680, 679, 678, 677, 676, 675, 674, + 673, 670, 669, 668, 667, 666, 665, 664, 663, 662, + 661, 660, 659, 658, 657, 656, 655, 652, 651, 650, + 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, + 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, + 629, 628, 627, 626, 625, 624, 623, 622, 618, 617, + 616, 615, 614, 613, 612, 611, 610, 609, 608, 607, + 606, 605, 604, 603, 602, 601, 600, 599, 598, 597, + + 596, 595, 594, 593, 592, 591, 590, 589, 588, 587, + 586, 585, 584, 583, 582, 581, 580, 579, 578, 577, + 576, 575, 574, 573, 572, 571, 570, 569, 568, 567, + 566, 565, 564, 563, 562, 561, 560, 559, 558, 557, + 556, 555, 554, 553, 552, 551, 550, 549, 548, 547, + 544, 543, 542, 541, 540, 539, 538, 535, 534, 533, + 532, 531, 530, 529, 528, 527, 526, 525, 521, 520, + 519, 518, 517, 516, 515, 513, 512, 510, 509, 506, + 505, 504, 503, 500, 499, 498, 497, 496, 495, 494, + 493, 492, 491, 488, 487, 486, 483, 482, 481, 480, + + 479, 478, 477, 476, 473, 472, 471, 470, 469, 468, + 467, 466, 465, 464, 461, 460, 459, 458, 457, 454, + 453, 452, 451, 450, 449, 448, 447, 446, 441, 440, + 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, + 427, 426, 425, 424, 421, 420, 419, 418, 417, 416, + 415, 412, 411, 409, 408, 403, 398, 395, 392, 391, + 390, 389, 387, 386, 385, 384, 383, 382, 381, 380, + 379, 378, 377, 376, 375, 374, 371, 370, 369, 368, + 367, 366, 365, 364, 363, 362, 361, 360, 359, 355, + 354, 353, 352, 351, 350, 349, 348, 344, 343, 342, + + 341, 340, 339, 338, 337, 336, 335, 334, 333, 332, + 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, + 321, 320, 319, 318, 317, 314, 313, 312, 311, 310, + 309, 307, 201, 304, 302, 300, 297, 296, 294, 292, + 285, 284, 283, 281, 280, 278, 277, 276, 275, 258, + 254, 251, 250, 249, 248, 247, 245, 244, 243, 242, + 239, 238, 237, 236, 235, 234, 233, 232, 231, 227, + 226, 223, 220, 219, 218, 217, 214, 213, 212, 208, + 207, 206, 205, 201, 194, 191, 190, 188, 186, 185, + 177, 162, 143, 121, 110, 107, 106, 104, 43, 100, + + 98, 97, 88, 43, 1442, 11, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442 } ; -static yyconst flex_int16_t yy_chk[1872] = +static yyconst flex_int16_t yy_chk[1878] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 21, 600, - 3, 3, 3, 21, 1, 1, 3, 0, 600, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 21, 605, + 3, 3, 3, 21, 1, 1, 3, 0, 605, 1, 4, 4, 4, 13, 1, 13, 4, 27, 28, 1, 57, 1, 5, 5, 5, 26, 32, 1, 1, 33, - 6, 6, 6, 7, 7, 7, 1, 7, 721, 8, - 8, 8, 1, 8, 57, 27, 28, 722, 26, 1, + 6, 6, 6, 7, 7, 7, 1, 7, 723, 8, + 8, 8, 1, 8, 57, 27, 28, 724, 26, 1, 1, 2, 2, 2, 32, 2, 2, 33, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 9, 9, 9, 52, 5, 31, 2, 2, 10, 10, 10, 2, 6, 20, 20, 20, 2, 37, 9, 37, 42, 2, 42, 2, 20, 51, 10, 54, 31, 2, 2, 52, - 723, 75, 25, 66, 25, 75, 2, 25, 25, 25, - 162, 66, 2, 128, 128, 20, 51, 162, 54, 2, + 128, 128, 25, 65, 25, 66, 2, 25, 25, 25, + 65, 211, 2, 66, 725, 20, 51, 211, 54, 2, 2, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -1243,187 +1246,187 @@ static yyconst flex_int16_t yy_chk[1872] = 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 17, 48, 17, 17, 17, 19, 56, 19, 19, 19, 44, 59, 22, 17, 22, 22, 22, 64, - 19, 93, 61, 55, 67, 61, 724, 22, 61, 48, - 61, 56, 61, 55, 67, 96, 67, 63, 17, 59, - 73, 91, 64, 19, 73, 59, 55, 44, 63, 93, + 19, 93, 61, 55, 67, 61, 428, 22, 61, 48, + 61, 56, 61, 55, 67, 726, 67, 63, 17, 59, + 73, 428, 64, 19, 73, 59, 55, 44, 63, 93, 22, 45, 70, 64, 73, 115, 70, 45, 63, 45, - 45, 55, 45, 96, 45, 45, 45, 91, 58, 69, - 69, 45, 45, 69, 45, 58, 70, 725, 115, 69, + 45, 55, 45, 75, 45, 45, 45, 75, 58, 69, + 69, 45, 45, 69, 45, 58, 70, 727, 115, 69, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 58, 89, 89, 89, 58, 62, 277, - 71, 58, 62, 92, 277, 62, 62, 101, 78, 58, - 76, 293, 72, 58, 76, 58, 58, 76, 62, 71, - 72, 71, 72, 71, 76, 76, 77, 72, 72, 92, - 76, 78, 81, 81, 81, 180, 77, 90, 90, 90, - 293, 78, 101, 81, 94, 262, 78, 105, 262, 77, - 82, 77, 82, 82, 82, 83, 95, 83, 180, 108, + 45, 45, 45, 58, 89, 89, 89, 58, 62, 728, + 71, 58, 62, 91, 163, 62, 62, 96, 78, 58, + 76, 163, 72, 58, 76, 58, 58, 76, 62, 71, + 72, 71, 72, 71, 76, 76, 77, 72, 72, 91, + 76, 78, 81, 81, 81, 96, 77, 90, 90, 90, + 101, 78, 729, 81, 92, 133, 78, 133, 105, 77, + 82, 77, 82, 82, 82, 83, 94, 83, 95, 108, 83, 83, 83, 82, 77, 84, 81, 84, 84, 84, - 94, 77, 85, 85, 85, 105, 109, 103, 84, 111, - - 135, 112, 95, 85, 103, 108, 82, 113, 124, 133, - 114, 133, 137, 119, 152, 137, 135, 124, 124, 137, - 147, 84, 178, 109, 147, 282, 85, 111, 112, 726, - 119, 181, 103, 158, 158, 113, 103, 114, 164, 164, - 103, 119, 152, 160, 152, 170, 160, 160, 103, 163, - 178, 173, 103, 179, 103, 103, 118, 118, 118, 181, - 342, 342, 183, 118, 118, 118, 118, 118, 118, 165, - 182, 188, 170, 165, 191, 282, 192, 165, 173, 179, - 198, 194, 163, 163, 163, 183, 118, 118, 118, 118, - 118, 118, 196, 163, 188, 163, 182, 163, 163, 203, - - 163, 239, 191, 192, 194, 210, 248, 198, 284, 287, - 292, 210, 295, 295, 296, 196, 201, 201, 201, 314, - 292, 295, 203, 201, 201, 201, 201, 201, 201, 299, - 320, 284, 287, 306, 320, 348, 314, 296, 360, 370, - 248, 385, 727, 370, 385, 348, 201, 201, 201, 201, - 201, 201, 239, 399, 248, 239, 332, 299, 304, 304, - 304, 332, 306, 615, 425, 304, 304, 304, 304, 304, - 304, 374, 391, 518, 409, 374, 409, 391, 411, 425, - 434, 399, 519, 553, 553, 434, 615, 729, 304, 304, - 304, 304, 304, 304, 360, 571, 730, 520, 614, 616, - - 518, 409, 520, 409, 731, 619, 411, 332, 732, 616, - 519, 619, 332, 410, 410, 410, 654, 733, 735, 654, - 410, 410, 410, 410, 410, 410, 614, 687, 688, 688, - 706, 691, 571, 734, 687, 736, 688, 691, 734, 737, - 738, 739, 740, 410, 410, 410, 410, 410, 410, 741, - 742, 745, 746, 747, 748, 751, 752, 753, 706, 754, - 755, 756, 757, 758, 755, 759, 760, 761, 763, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, + 92, 77, 85, 85, 85, 101, 105, 109, 84, 111, + + 103, 112, 94, 85, 95, 108, 82, 103, 113, 124, + 114, 148, 119, 138, 135, 148, 138, 153, 124, 124, + 138, 84, 159, 159, 109, 179, 85, 111, 112, 119, + 135, 165, 165, 730, 182, 103, 113, 114, 161, 103, + 119, 161, 161, 103, 731, 153, 166, 153, 171, 174, + 166, 103, 164, 179, 166, 103, 180, 103, 103, 118, + 118, 118, 182, 241, 732, 181, 118, 118, 118, 118, + 118, 118, 184, 183, 189, 171, 174, 192, 284, 193, + 733, 195, 180, 199, 197, 164, 164, 164, 181, 118, + 118, 118, 118, 118, 118, 184, 164, 189, 164, 183, + + 164, 164, 204, 164, 195, 192, 193, 197, 295, 286, + 199, 202, 202, 202, 241, 250, 289, 241, 202, 202, + 202, 202, 202, 202, 264, 204, 279, 264, 284, 298, + 294, 279, 286, 301, 316, 345, 345, 295, 308, 289, + 294, 202, 202, 202, 202, 202, 202, 297, 297, 250, + 322, 316, 298, 335, 322, 363, 297, 388, 335, 351, + 388, 301, 402, 250, 306, 306, 306, 308, 576, 351, + 620, 306, 306, 306, 306, 306, 306, 373, 377, 394, + 414, 373, 377, 412, 394, 412, 437, 524, 735, 522, + 402, 437, 524, 620, 306, 306, 306, 306, 306, 306, + + 523, 558, 558, 619, 335, 576, 736, 621, 414, 335, + 412, 363, 412, 413, 413, 413, 522, 621, 737, 738, + 413, 413, 413, 413, 413, 413, 624, 660, 523, 693, + 660, 619, 624, 694, 694, 712, 693, 739, 741, 742, + 743, 694, 744, 413, 413, 413, 413, 413, 413, 697, + 745, 740, 746, 747, 748, 697, 740, 751, 752, 753, + 754, 757, 758, 712, 759, 760, 761, 762, 763, 764, + 761, 765, 766, 767, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, - 785, 786, 787, 789, 790, 791, 792, 793, 794, 795, - - 796, 797, 799, 800, 801, 802, 803, 804, 805, 806, - 807, 808, 809, 810, 811, 812, 813, 814, 815, 817, - 818, 819, 820, 821, 822, 823, 800, 824, 825, 799, - 827, 828, 829, 830, 831, 833, 834, 835, 830, 836, - 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 852, 853, 854, 855, 857, 858, - 859, 860, 861, 849, 862, 863, 864, 865, 866, 867, - 868, 869, 870, 871, 872, 874, 875, 876, 877, 878, - 879, 880, 881, 882, 883, 884, 885, 886, 888, 830, - 887, 889, 890, 891, 892, 894, 895, 896, 897, 898, - - 899, 901, 902, 903, 904, 905, 906, 907, 908, 909, - 910, 911, 912, 913, 914, 886, 916, 887, 917, 918, - 919, 920, 921, 917, 922, 923, 924, 925, 926, 927, + 785, 786, 787, 788, 789, 790, 791, 792, 793, 795, + + 796, 797, 798, 799, 800, 801, 802, 803, 805, 806, + 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, + 817, 818, 819, 820, 821, 823, 824, 825, 826, 827, + 828, 829, 806, 830, 831, 805, 833, 834, 835, 836, + 837, 839, 840, 841, 836, 842, 843, 844, 845, 846, + 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, + 858, 859, 860, 861, 863, 864, 865, 866, 867, 855, + 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, + 878, 880, 881, 882, 883, 884, 885, 886, 887, 888, + 889, 890, 891, 892, 894, 836, 893, 895, 896, 897, + + 898, 900, 901, 902, 903, 904, 905, 907, 908, 909, + 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, + 920, 892, 922, 893, 923, 924, 925, 926, 927, 923, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, - 938, 939, 940, 942, 943, 944, 945, 946, 947, 948, - 949, 950, 951, 952, 954, 955, 957, 958, 959, 960, - 961, 918, 962, 963, 964, 965, 966, 967, 969, 970, - 971, 972, 973, 974, 976, 977, 978, 979, 982, 983, - 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, - 994, 995, 970, 997, 999, 1001, 1002, 1003, 971, 1004, - - 1005, 1006, 1007, 1008, 1010, 1011, 1012, 1013, 1015, 1016, - 1017, 1018, 1019, 1022, 1023, 1024, 1025, 1026, 1027, 1028, + 938, 939, 940, 941, 942, 943, 944, 945, 946, 948, + 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, + 960, 961, 963, 964, 965, 966, 967, 924, 968, 969, + 970, 971, 972, 973, 975, 976, 977, 978, 979, 980, + 982, 983, 984, 985, 988, 989, 990, 991, 992, 993, + 994, 995, 996, 997, 998, 999, 1000, 1001, 976, 1003, + + 1005, 1007, 1008, 1009, 977, 1010, 1011, 1012, 1013, 1014, + 1016, 1017, 1018, 1019, 1021, 1022, 1023, 1024, 1025, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, - 1049, 1050, 1051, 1053, 1054, 1055, 1056, 1057, 1058, 1059, - 1060, 1061, 1062, 1064, 1065, 1066, 1067, 1068, 1069, 1070, - 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1049, 1079, - 1080, 1081, 1082, 1084, 1032, 1087, 1088, 1089, 1080, 1090, - 1091, 1092, 1093, 1094, 1095, 1096, 1054, 1098, 1099, 1100, - 1101, 1102, 1103, 1104, 1106, 1108, 1111, 1113, 1115, 1116, - - 1117, 1118, 1119, 1121, 1122, 1117, 1124, 1125, 1126, 1127, - 1128, 1129, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, - 1139, 1140, 1142, 1145, 1147, 1119, 1148, 1149, 1150, 1151, - 1153, 1154, 1155, 1156, 1157, 1158, 1161, 1162, 1164, 1165, - 1166, 1167, 1169, 1170, 1171, 1172, 1173, 1174, 1176, 1178, - 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, - 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1197, 1198, - 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1180, 1206, 1207, - 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, - 1218, 1220, 1221, 1223, 1224, 1225, 1226, 1227, 1230, 1233, - - 1234, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1246, - 1247, 1249, 1251, 1252, 1253, 1254, 1255, 1257, 1258, 1259, - 1260, 1261, 1262, 1263, 1226, 1198, 1264, 1265, 1266, 1267, - 1268, 1269, 1271, 1272, 1273, 1275, 1276, 1277, 1278, 1279, - 1280, 1282, 1283, 1284, 1286, 1288, 1289, 1290, 1291, 1292, - 1293, 1294, 1295, 1296, 1297, 1298, 1300, 1301, 1305, 1308, - 1309, 1311, 1312, 1314, 1315, 1316, 1317, 1318, 1319, 1321, - 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1332, 1333, - 1334, 1335, 1336, 1337, 1338, 1339, 1342, 1343, 1344, 1345, - 1346, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, - - 1357, 1358, 1359, 1361, 1363, 1365, 1366, 1367, 1368, 1369, - 1371, 1372, 1373, 1375, 1376, 1378, 1379, 1382, 1383, 1384, - 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, + 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1059, + 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1070, + 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, + 1081, 1082, 1083, 1084, 1055, 1085, 1086, 1087, 1088, 1090, + 1038, 1093, 1094, 1095, 1086, 1096, 1097, 1098, 1099, 1100, + 1101, 1102, 1060, 1104, 1105, 1106, 1107, 1108, 1109, 1110, + + 1112, 1114, 1117, 1119, 1121, 1122, 1123, 1124, 1125, 1127, + 1128, 1123, 1130, 1131, 1132, 1133, 1134, 1135, 1137, 1138, + 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1148, 1151, + 1153, 1125, 1154, 1155, 1156, 1157, 1159, 1160, 1161, 1162, + 1163, 1164, 1167, 1168, 1170, 1171, 1172, 1173, 1175, 1176, + 1177, 1178, 1179, 1180, 1182, 1184, 1186, 1187, 1188, 1189, + 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, + 1200, 1201, 1202, 1203, 1203, 1204, 1205, 1206, 1207, 1208, + 1209, 1210, 1211, 1186, 1212, 1213, 1214, 1215, 1216, 1217, + 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1226, 1227, 1229, + + 1230, 1231, 1232, 1233, 1236, 1239, 1240, 1243, 1244, 1245, + 1246, 1247, 1248, 1249, 1250, 1252, 1253, 1255, 1257, 1258, + 1259, 1260, 1261, 1263, 1264, 1265, 1266, 1267, 1268, 1269, + 1232, 1204, 1270, 1271, 1272, 1273, 1274, 1275, 1277, 1278, + 1279, 1281, 1282, 1283, 1284, 1285, 1286, 1288, 1289, 1290, + 1292, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, + 1303, 1304, 1306, 1307, 1311, 1314, 1315, 1317, 1318, 1320, + 1321, 1322, 1323, 1324, 1325, 1327, 1329, 1330, 1331, 1332, + 1333, 1334, 1335, 1336, 1338, 1339, 1340, 1341, 1342, 1343, + 1344, 1345, 1348, 1349, 1350, 1351, 1352, 1354, 1355, 1356, + + 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1367, + 1369, 1371, 1372, 1373, 1374, 1375, 1377, 1378, 1379, 1381, + 1382, 1384, 1385, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, - 1405, 1406, 1408, 1410, 1411, 1412, 1413, 1414, 1415, 1419, - 1420, 1421, 1422, 1424, 1425, 1427, 1428, 1429, 1430, 1431, - 1433, 1434, 1437, 1437, 1437, 1437, 1437, 1438, 1438, 1438, - 1438, 1438, 1439, 1445, 1439, 1439, 1439, 1440, 1446, 1440, - 1447, 1440, 1441, 1441, 1441, 1441, 1441, 1442, 1442, 1442, - 1442, 1442, 1443, 1448, 1443, 1443, 1443, 1444, 1444, 1444, - - 720, 719, 718, 717, 716, 715, 714, 712, 711, 710, - 709, 708, 707, 705, 703, 702, 701, 700, 699, 698, - 697, 696, 695, 694, 693, 690, 689, 686, 685, 684, - 683, 682, 681, 680, 679, 678, 677, 676, 675, 674, - 673, 672, 671, 670, 669, 668, 667, 666, 664, 663, - 662, 661, 660, 659, 658, 657, 655, 653, 652, 651, - 650, 649, 648, 647, 646, 645, 644, 643, 642, 641, - 640, 639, 638, 637, 636, 635, 634, 633, 632, 631, - 630, 629, 628, 627, 626, 625, 624, 623, 622, 621, - 620, 618, 617, 613, 612, 611, 609, 608, 606, 605, - - 604, 603, 602, 601, 598, 597, 596, 595, 594, 593, - 592, 591, 590, 589, 588, 587, 585, 584, 583, 582, - 581, 580, 579, 578, 577, 575, 574, 573, 572, 570, - 569, 568, 567, 566, 565, 564, 562, 561, 560, 559, - 558, 557, 556, 555, 554, 552, 551, 550, 549, 548, - 547, 546, 545, 544, 543, 542, 540, 539, 538, 537, - 536, 535, 534, 533, 532, 531, 530, 529, 528, 527, - 526, 525, 524, 523, 522, 516, 514, 511, 510, 509, - 508, 506, 505, 504, 502, 501, 498, 497, 496, 495, - 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, - - 484, 483, 482, 481, 480, 479, 478, 477, 476, 475, - 474, 473, 471, 469, 468, 467, 466, 465, 464, 463, - 462, 461, 460, 459, 458, 456, 455, 454, 453, 452, - 451, 450, 449, 448, 447, 446, 445, 444, 443, 442, - 441, 440, 439, 437, 436, 435, 433, 432, 431, 430, - 429, 427, 426, 424, 423, 421, 420, 419, 418, 417, - 415, 414, 413, 412, 407, 406, 404, 403, 402, 401, - 400, 398, 397, 395, 392, 390, 389, 387, 386, 384, - 383, 382, 381, 380, 379, 378, 377, 376, 375, 373, - 372, 371, 369, 368, 367, 366, 364, 363, 362, 361, - - 359, 358, 357, 356, 355, 354, 353, 352, 351, 349, - 347, 346, 345, 344, 343, 341, 340, 339, 338, 337, - 336, 335, 334, 333, 331, 330, 329, 328, 327, 326, - 325, 324, 323, 322, 321, 319, 318, 317, 316, 313, - 312, 311, 310, 309, 308, 307, 303, 301, 298, 297, - 294, 290, 283, 281, 280, 279, 278, 276, 275, 274, - 273, 272, 271, 270, 269, 268, 267, 266, 265, 264, - 263, 261, 260, 259, 258, 257, 256, 255, 254, 253, - 252, 251, 250, 249, 247, 246, 245, 244, 243, 242, - 241, 240, 238, 237, 236, 235, 234, 233, 232, 231, - - 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, - 219, 218, 217, 216, 215, 214, 213, 212, 211, 209, - 208, 207, 206, 205, 204, 202, 199, 197, 195, 193, - 190, 189, 187, 184, 176, 175, 174, 172, 171, 169, - 168, 167, 166, 161, 159, 157, 156, 155, 154, 153, - 151, 150, 149, 148, 146, 145, 144, 143, 142, 141, - 140, 139, 138, 136, 134, 132, 131, 130, 129, 127, - 126, 125, 123, 122, 121, 120, 116, 110, 107, 106, - 104, 99, 98, 79, 74, 68, 65, 60, 53, 50, - 49, 47, 43, 41, 39, 38, 24, 14, 11, 1436, - - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436 + 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1414, 1416, + 1417, 1418, 1419, 1420, 1421, 1425, 1426, 1427, 1428, 1430, + 1431, 1433, 1434, 1435, 1436, 1437, 1439, 1440, 1443, 1443, + 1443, 1443, 1443, 1444, 1444, 1444, 1444, 1444, 1445, 1451, + 1445, 1445, 1445, 1446, 1452, 1446, 1453, 1446, 1447, 1447, + 1447, 1447, 1447, 1448, 1448, 1448, 1448, 1448, 1449, 1454, + + 1449, 1449, 1449, 1450, 1450, 1450, 722, 721, 720, 718, + 717, 716, 715, 714, 713, 711, 709, 708, 707, 706, + 705, 704, 703, 702, 701, 700, 699, 696, 695, 692, + 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, + 681, 680, 679, 678, 677, 676, 675, 674, 673, 672, + 670, 669, 668, 667, 666, 665, 664, 663, 661, 659, + 658, 657, 656, 655, 654, 653, 652, 651, 650, 649, + 648, 647, 646, 645, 644, 642, 641, 640, 639, 638, + 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, + 627, 626, 625, 623, 622, 618, 617, 616, 614, 613, + + 611, 610, 609, 608, 607, 606, 603, 602, 601, 600, + 599, 598, 597, 596, 595, 594, 593, 592, 590, 589, + 588, 587, 586, 585, 584, 583, 582, 580, 579, 578, + 577, 575, 574, 573, 572, 571, 570, 569, 567, 566, + 565, 564, 563, 562, 561, 560, 559, 557, 556, 555, + 554, 553, 552, 551, 550, 549, 548, 547, 546, 544, + 543, 542, 541, 540, 539, 538, 537, 536, 535, 534, + 533, 532, 531, 530, 529, 528, 527, 526, 520, 518, + 515, 514, 513, 512, 510, 509, 508, 506, 505, 502, + 501, 500, 499, 498, 497, 496, 495, 494, 493, 492, + + 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, + 481, 480, 479, 478, 477, 475, 473, 472, 471, 470, + 469, 468, 467, 466, 465, 464, 463, 462, 460, 459, + 458, 457, 456, 455, 454, 453, 452, 451, 450, 449, + 448, 447, 446, 445, 444, 443, 441, 440, 439, 438, + 436, 435, 434, 433, 432, 430, 429, 427, 426, 424, + 423, 422, 421, 420, 418, 417, 416, 415, 410, 409, + 407, 406, 405, 404, 403, 401, 400, 398, 395, 393, + 392, 390, 389, 387, 386, 385, 384, 383, 382, 381, + 380, 379, 378, 376, 375, 374, 372, 371, 370, 369, + + 367, 366, 365, 364, 362, 361, 360, 359, 358, 357, + 356, 355, 354, 352, 350, 349, 348, 347, 346, 344, + 343, 342, 341, 340, 339, 338, 337, 336, 334, 333, + 332, 331, 330, 329, 328, 327, 326, 325, 324, 323, + 321, 320, 319, 318, 315, 314, 313, 312, 311, 310, + 309, 305, 303, 300, 299, 296, 292, 285, 283, 282, + 281, 280, 278, 277, 276, 275, 274, 273, 272, 271, + 270, 269, 268, 267, 266, 265, 263, 262, 261, 260, + 259, 258, 257, 256, 255, 254, 253, 252, 251, 249, + 248, 247, 246, 245, 244, 243, 242, 240, 239, 238, + + 237, 236, 235, 234, 233, 231, 230, 229, 228, 227, + 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, + 216, 215, 214, 213, 212, 210, 209, 208, 207, 206, + 205, 203, 200, 198, 196, 194, 191, 190, 188, 185, + 177, 176, 175, 173, 172, 170, 169, 168, 167, 162, + 160, 158, 157, 156, 155, 154, 152, 151, 150, 149, + 147, 146, 145, 144, 143, 142, 141, 140, 139, 137, + 136, 134, 132, 131, 130, 129, 127, 126, 125, 123, + 122, 121, 120, 116, 110, 107, 106, 104, 99, 98, + 79, 74, 68, 60, 53, 50, 49, 47, 43, 41, + + 39, 38, 24, 14, 11, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, + 1442, 1442, 1442, 1442, 1442, 1442, 1442 } ; static yy_state_type yy_last_accepting_state; @@ -1432,7 +1435,7 @@ static char *yy_last_accepting_cpos; extern int parser4__flex_debug; int parser4__flex_debug = 1; -static yyconst flex_int16_t yy_rule_linenum[172] = +static yyconst flex_int16_t yy_rule_linenum[173] = { 0, 144, 146, 148, 153, 154, 159, 160, 161, 173, 176, 181, 188, 197, 206, 215, 224, 233, 242, 252, 261, @@ -1441,18 +1444,18 @@ static yyconst flex_int16_t yy_rule_linenum[172] = 460, 470, 480, 490, 500, 510, 520, 531, 542, 553, 562, 572, 581, 591, 605, 620, 629, 638, 647, 656, 676, 696, 705, 715, 724, 733, 742, 752, 761, 770, - 779, 788, 798, 807, 816, 825, 834, 843, 852, 861, - 870, 879, 888, 898, 909, 921, 930, 939, 949, 959, - 969, 979, 989, 999, 1008, 1018, 1027, 1036, 1045, 1054, + 779, 788, 797, 807, 816, 825, 834, 843, 852, 861, + 870, 879, 888, 897, 907, 918, 930, 939, 948, 958, + 968, 978, 988, 998, 1008, 1017, 1027, 1036, 1045, 1054, - 1064, 1074, 1083, 1093, 1102, 1111, 1120, 1129, 1138, 1147, + 1063, 1073, 1083, 1092, 1102, 1111, 1120, 1129, 1138, 1147, 1156, 1165, 1174, 1183, 1192, 1201, 1210, 1219, 1228, 1237, 1246, 1255, 1264, 1273, 1282, 1291, 1300, 1309, 1318, 1327, - 1336, 1345, 1354, 1363, 1373, 1383, 1393, 1403, 1413, 1423, - 1433, 1443, 1453, 1462, 1471, 1480, 1489, 1498, 1507, 1516, - 1527, 1540, 1553, 1568, 1667, 1672, 1677, 1682, 1683, 1684, - 1685, 1686, 1687, 1689, 1707, 1720, 1725, 1729, 1731, 1733, - 1735 + 1336, 1345, 1354, 1363, 1372, 1382, 1392, 1402, 1412, 1422, + 1432, 1442, 1452, 1462, 1471, 1480, 1489, 1498, 1507, 1516, + 1525, 1536, 1549, 1562, 1577, 1676, 1681, 1686, 1691, 1692, + 1693, 1694, 1695, 1696, 1698, 1716, 1729, 1734, 1738, 1740, + 1742, 1744 } ; /* The intent behind this definition is that it'll catch @@ -1531,7 +1534,7 @@ using namespace isc::dhcp; by moving it ahead by parser4_leng bytes. parser4_leng specifies the length of the currently matched token. */ #define YY_USER_ACTION driver.loc_.columns(parser4_leng); -#line 1535 "dhcp4_lexer.cc" +#line 1538 "dhcp4_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -1820,7 +1823,7 @@ YY_DECL } -#line 1824 "dhcp4_lexer.cc" +#line 1827 "dhcp4_lexer.cc" if ( !(yy_init) ) { @@ -1883,13 +1886,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 >= 1437 ) + if ( yy_current_state >= 1443 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 1436 ); + while ( yy_current_state != 1442 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -1908,13 +1911,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 < 172 ) + else if ( yy_act < 173 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], parser4_text ); - else if ( yy_act == 172 ) + else if ( yy_act == 173 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", parser4_text ); - else if ( yy_act == 173 ) + else if ( yy_act == 174 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -2792,15 +2795,27 @@ YY_RULE_SETUP { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: - return isc::dhcp::Dhcp4Parser::make_ALL(driver.loc_); + return isc::dhcp::Dhcp4Parser::make_GLOBAL(driver.loc_); default: - return isc::dhcp::Dhcp4Parser::make_STRING("all", driver.loc_); + return isc::dhcp::Dhcp4Parser::make_STRING("global", driver.loc_); } } YY_BREAK case 72: YY_RULE_SETUP #line 788 "dhcp4_lexer.ll" +{ + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::RESERVATION_MODE: + return isc::dhcp::Dhcp4Parser::make_ALL(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("all", driver.loc_); + } +} + YY_BREAK +case 73: +YY_RULE_SETUP +#line 797 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -2811,9 +2826,9 @@ YY_RULE_SETUP } } YY_BREAK -case 73: +case 74: YY_RULE_SETUP -#line 798 "dhcp4_lexer.ll" +#line 807 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2823,9 +2838,9 @@ YY_RULE_SETUP } } YY_BREAK -case 74: +case 75: YY_RULE_SETUP -#line 807 "dhcp4_lexer.ll" +#line 816 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONFIG: @@ -2835,9 +2850,9 @@ YY_RULE_SETUP } } YY_BREAK -case 75: +case 76: YY_RULE_SETUP -#line 816 "dhcp4_lexer.ll" +#line 825 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGING: @@ -2847,9 +2862,9 @@ YY_RULE_SETUP } } YY_BREAK -case 76: +case 77: YY_RULE_SETUP -#line 825 "dhcp4_lexer.ll" +#line 834 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -2859,9 +2874,9 @@ YY_RULE_SETUP } } YY_BREAK -case 77: +case 78: YY_RULE_SETUP -#line 834 "dhcp4_lexer.ll" +#line 843 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -2871,9 +2886,9 @@ YY_RULE_SETUP } } YY_BREAK -case 78: +case 79: YY_RULE_SETUP -#line 843 "dhcp4_lexer.ll" +#line 852 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -2883,9 +2898,9 @@ YY_RULE_SETUP } } YY_BREAK -case 79: +case 80: YY_RULE_SETUP -#line 852 "dhcp4_lexer.ll" +#line 861 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -2895,9 +2910,9 @@ YY_RULE_SETUP } } YY_BREAK -case 80: +case 81: YY_RULE_SETUP -#line 861 "dhcp4_lexer.ll" +#line 870 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -2907,9 +2922,9 @@ YY_RULE_SETUP } } YY_BREAK -case 81: +case 82: YY_RULE_SETUP -#line 870 "dhcp4_lexer.ll" +#line 879 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -2919,9 +2934,9 @@ YY_RULE_SETUP } } YY_BREAK -case 82: +case 83: YY_RULE_SETUP -#line 879 "dhcp4_lexer.ll" +#line 888 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -2931,9 +2946,9 @@ YY_RULE_SETUP } } YY_BREAK -case 83: +case 84: YY_RULE_SETUP -#line 888 "dhcp4_lexer.ll" +#line 897 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2944,9 +2959,9 @@ YY_RULE_SETUP } } YY_BREAK -case 84: +case 85: YY_RULE_SETUP -#line 898 "dhcp4_lexer.ll" +#line 907 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -2958,9 +2973,9 @@ YY_RULE_SETUP } } YY_BREAK -case 85: +case 86: YY_RULE_SETUP -#line 909 "dhcp4_lexer.ll" +#line 918 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -2973,9 +2988,9 @@ YY_RULE_SETUP } } YY_BREAK -case 86: +case 87: YY_RULE_SETUP -#line 921 "dhcp4_lexer.ll" +#line 930 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -2985,9 +3000,9 @@ YY_RULE_SETUP } } YY_BREAK -case 87: +case 88: YY_RULE_SETUP -#line 930 "dhcp4_lexer.ll" +#line 939 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -2997,9 +3012,9 @@ YY_RULE_SETUP } } YY_BREAK -case 88: +case 89: YY_RULE_SETUP -#line 939 "dhcp4_lexer.ll" +#line 948 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3010,9 +3025,9 @@ YY_RULE_SETUP } } YY_BREAK -case 89: +case 90: YY_RULE_SETUP -#line 949 "dhcp4_lexer.ll" +#line 958 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -3023,9 +3038,9 @@ YY_RULE_SETUP } } YY_BREAK -case 90: +case 91: YY_RULE_SETUP -#line 959 "dhcp4_lexer.ll" +#line 968 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -3036,9 +3051,9 @@ YY_RULE_SETUP } } YY_BREAK -case 91: +case 92: YY_RULE_SETUP -#line 969 "dhcp4_lexer.ll" +#line 978 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -3049,9 +3064,9 @@ YY_RULE_SETUP } } YY_BREAK -case 92: +case 93: YY_RULE_SETUP -#line 979 "dhcp4_lexer.ll" +#line 988 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -3062,9 +3077,9 @@ YY_RULE_SETUP } } YY_BREAK -case 93: +case 94: YY_RULE_SETUP -#line 989 "dhcp4_lexer.ll" +#line 998 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -3075,9 +3090,9 @@ YY_RULE_SETUP } } YY_BREAK -case 94: +case 95: YY_RULE_SETUP -#line 999 "dhcp4_lexer.ll" +#line 1008 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATIONS: @@ -3087,9 +3102,9 @@ YY_RULE_SETUP } } YY_BREAK -case 95: +case 96: YY_RULE_SETUP -#line 1008 "dhcp4_lexer.ll" +#line 1017 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -3100,9 +3115,9 @@ YY_RULE_SETUP } } YY_BREAK -case 96: +case 97: YY_RULE_SETUP -#line 1018 "dhcp4_lexer.ll" +#line 1027 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -3112,9 +3127,9 @@ YY_RULE_SETUP } } YY_BREAK -case 97: +case 98: YY_RULE_SETUP -#line 1027 "dhcp4_lexer.ll" +#line 1036 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -3124,9 +3139,9 @@ YY_RULE_SETUP } } YY_BREAK -case 98: +case 99: YY_RULE_SETUP -#line 1036 "dhcp4_lexer.ll" +#line 1045 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -3136,9 +3151,9 @@ YY_RULE_SETUP } } YY_BREAK -case 99: +case 100: YY_RULE_SETUP -#line 1045 "dhcp4_lexer.ll" +#line 1054 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -3148,9 +3163,9 @@ YY_RULE_SETUP } } YY_BREAK -case 100: +case 101: YY_RULE_SETUP -#line 1054 "dhcp4_lexer.ll" +#line 1063 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3161,9 +3176,9 @@ YY_RULE_SETUP } } YY_BREAK -case 101: +case 102: YY_RULE_SETUP -#line 1064 "dhcp4_lexer.ll" +#line 1073 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RELAY: @@ -3174,9 +3189,9 @@ YY_RULE_SETUP } } YY_BREAK -case 102: +case 103: YY_RULE_SETUP -#line 1074 "dhcp4_lexer.ll" +#line 1083 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RELAY: @@ -3186,9 +3201,9 @@ YY_RULE_SETUP } } YY_BREAK -case 103: +case 104: YY_RULE_SETUP -#line 1083 "dhcp4_lexer.ll" +#line 1092 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3198,9 +3213,9 @@ YY_RULE_SETUP } } YY_BREAK -case 104: +case 105: YY_RULE_SETUP -#line 1093 "dhcp4_lexer.ll" +#line 1102 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOOKS_LIBRARIES: @@ -3210,9 +3225,9 @@ YY_RULE_SETUP } } YY_BREAK -case 105: +case 106: YY_RULE_SETUP -#line 1102 "dhcp4_lexer.ll" +#line 1111 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOOKS_LIBRARIES: @@ -3222,9 +3237,9 @@ YY_RULE_SETUP } } YY_BREAK -case 106: +case 107: YY_RULE_SETUP -#line 1111 "dhcp4_lexer.ll" +#line 1120 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3234,9 +3249,9 @@ YY_RULE_SETUP } } YY_BREAK -case 107: +case 108: YY_RULE_SETUP -#line 1120 "dhcp4_lexer.ll" +#line 1129 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -3246,9 +3261,9 @@ YY_RULE_SETUP } } YY_BREAK -case 108: +case 109: YY_RULE_SETUP -#line 1129 "dhcp4_lexer.ll" +#line 1138 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -3258,9 +3273,9 @@ YY_RULE_SETUP } } YY_BREAK -case 109: +case 110: YY_RULE_SETUP -#line 1138 "dhcp4_lexer.ll" +#line 1147 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -3270,9 +3285,9 @@ YY_RULE_SETUP } } YY_BREAK -case 110: +case 111: YY_RULE_SETUP -#line 1147 "dhcp4_lexer.ll" +#line 1156 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -3282,9 +3297,9 @@ YY_RULE_SETUP } } YY_BREAK -case 111: +case 112: YY_RULE_SETUP -#line 1156 "dhcp4_lexer.ll" +#line 1165 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -3294,9 +3309,9 @@ YY_RULE_SETUP } } YY_BREAK -case 112: +case 113: YY_RULE_SETUP -#line 1165 "dhcp4_lexer.ll" +#line 1174 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -3306,9 +3321,9 @@ YY_RULE_SETUP } } YY_BREAK -case 113: +case 114: YY_RULE_SETUP -#line 1174 "dhcp4_lexer.ll" +#line 1183 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3318,9 +3333,9 @@ YY_RULE_SETUP } } YY_BREAK -case 114: +case 115: YY_RULE_SETUP -#line 1183 "dhcp4_lexer.ll" +#line 1192 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3330,9 +3345,9 @@ YY_RULE_SETUP } } YY_BREAK -case 115: +case 116: YY_RULE_SETUP -#line 1192 "dhcp4_lexer.ll" +#line 1201 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -3342,9 +3357,9 @@ YY_RULE_SETUP } } YY_BREAK -case 116: +case 117: YY_RULE_SETUP -#line 1201 "dhcp4_lexer.ll" +#line 1210 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -3354,9 +3369,9 @@ YY_RULE_SETUP } } YY_BREAK -case 117: +case 118: YY_RULE_SETUP -#line 1210 "dhcp4_lexer.ll" +#line 1219 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3366,9 +3381,9 @@ YY_RULE_SETUP } } YY_BREAK -case 118: +case 119: YY_RULE_SETUP -#line 1219 "dhcp4_lexer.ll" +#line 1228 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3378,9 +3393,9 @@ YY_RULE_SETUP } } YY_BREAK -case 119: +case 120: YY_RULE_SETUP -#line 1228 "dhcp4_lexer.ll" +#line 1237 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3390,9 +3405,9 @@ YY_RULE_SETUP } } YY_BREAK -case 120: +case 121: YY_RULE_SETUP -#line 1237 "dhcp4_lexer.ll" +#line 1246 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3402,9 +3417,9 @@ YY_RULE_SETUP } } YY_BREAK -case 121: +case 122: YY_RULE_SETUP -#line 1246 "dhcp4_lexer.ll" +#line 1255 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3414,9 +3429,9 @@ YY_RULE_SETUP } } YY_BREAK -case 122: +case 123: YY_RULE_SETUP -#line 1255 "dhcp4_lexer.ll" +#line 1264 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3426,9 +3441,9 @@ YY_RULE_SETUP } } YY_BREAK -case 123: +case 124: YY_RULE_SETUP -#line 1264 "dhcp4_lexer.ll" +#line 1273 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3438,9 +3453,9 @@ YY_RULE_SETUP } } YY_BREAK -case 124: +case 125: YY_RULE_SETUP -#line 1273 "dhcp4_lexer.ll" +#line 1282 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3450,9 +3465,9 @@ YY_RULE_SETUP } } YY_BREAK -case 125: +case 126: YY_RULE_SETUP -#line 1282 "dhcp4_lexer.ll" +#line 1291 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3462,9 +3477,9 @@ YY_RULE_SETUP } } YY_BREAK -case 126: +case 127: YY_RULE_SETUP -#line 1291 "dhcp4_lexer.ll" +#line 1300 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3474,9 +3489,9 @@ YY_RULE_SETUP } } YY_BREAK -case 127: +case 128: YY_RULE_SETUP -#line 1300 "dhcp4_lexer.ll" +#line 1309 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3486,9 +3501,9 @@ YY_RULE_SETUP } } YY_BREAK -case 128: +case 129: YY_RULE_SETUP -#line 1309 "dhcp4_lexer.ll" +#line 1318 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3498,9 +3513,9 @@ YY_RULE_SETUP } } YY_BREAK -case 129: +case 130: YY_RULE_SETUP -#line 1318 "dhcp4_lexer.ll" +#line 1327 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3510,9 +3525,9 @@ YY_RULE_SETUP } } YY_BREAK -case 130: +case 131: YY_RULE_SETUP -#line 1327 "dhcp4_lexer.ll" +#line 1336 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3522,9 +3537,9 @@ YY_RULE_SETUP } } YY_BREAK -case 131: +case 132: YY_RULE_SETUP -#line 1336 "dhcp4_lexer.ll" +#line 1345 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3534,9 +3549,9 @@ YY_RULE_SETUP } } YY_BREAK -case 132: +case 133: YY_RULE_SETUP -#line 1345 "dhcp4_lexer.ll" +#line 1354 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3546,9 +3561,9 @@ YY_RULE_SETUP } } YY_BREAK -case 133: +case 134: YY_RULE_SETUP -#line 1354 "dhcp4_lexer.ll" +#line 1363 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -3558,9 +3573,9 @@ YY_RULE_SETUP } } YY_BREAK -case 134: +case 135: YY_RULE_SETUP -#line 1363 "dhcp4_lexer.ll" +#line 1372 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { @@ -3571,9 +3586,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 135: +case 136: YY_RULE_SETUP -#line 1373 "dhcp4_lexer.ll" +#line 1382 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { @@ -3584,9 +3599,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 136: +case 137: YY_RULE_SETUP -#line 1383 "dhcp4_lexer.ll" +#line 1392 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) { @@ -3597,9 +3612,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 137: +case 138: YY_RULE_SETUP -#line 1393 "dhcp4_lexer.ll" +#line 1402 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -3610,9 +3625,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 138: +case 139: YY_RULE_SETUP -#line 1403 "dhcp4_lexer.ll" +#line 1412 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -3623,9 +3638,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 139: +case 140: YY_RULE_SETUP -#line 1413 "dhcp4_lexer.ll" +#line 1422 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -3636,9 +3651,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 140: +case 141: YY_RULE_SETUP -#line 1423 "dhcp4_lexer.ll" +#line 1432 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -3649,9 +3664,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 141: +case 142: YY_RULE_SETUP -#line 1433 "dhcp4_lexer.ll" +#line 1442 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -3662,9 +3677,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 142: +case 143: YY_RULE_SETUP -#line 1443 "dhcp4_lexer.ll" +#line 1452 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -3675,9 +3690,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } YY_BREAK -case 143: +case 144: YY_RULE_SETUP -#line 1453 "dhcp4_lexer.ll" +#line 1462 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONFIG: @@ -3687,9 +3702,9 @@ YY_RULE_SETUP } } YY_BREAK -case 144: +case 145: YY_RULE_SETUP -#line 1462 "dhcp4_lexer.ll" +#line 1471 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONFIG: @@ -3699,9 +3714,9 @@ YY_RULE_SETUP } } YY_BREAK -case 145: +case 146: YY_RULE_SETUP -#line 1471 "dhcp4_lexer.ll" +#line 1480 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONFIG: @@ -3711,9 +3726,9 @@ YY_RULE_SETUP } } YY_BREAK -case 146: +case 147: YY_RULE_SETUP -#line 1480 "dhcp4_lexer.ll" +#line 1489 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3723,9 +3738,9 @@ YY_RULE_SETUP } } YY_BREAK -case 147: +case 148: YY_RULE_SETUP -#line 1489 "dhcp4_lexer.ll" +#line 1498 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3735,9 +3750,9 @@ YY_RULE_SETUP } } YY_BREAK -case 148: +case 149: YY_RULE_SETUP -#line 1498 "dhcp4_lexer.ll" +#line 1507 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3747,9 +3762,9 @@ YY_RULE_SETUP } } YY_BREAK -case 149: +case 150: YY_RULE_SETUP -#line 1507 "dhcp4_lexer.ll" +#line 1516 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3759,9 +3774,9 @@ YY_RULE_SETUP } } YY_BREAK -case 150: +case 151: YY_RULE_SETUP -#line 1516 "dhcp4_lexer.ll" +#line 1525 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3773,9 +3788,9 @@ YY_RULE_SETUP } } YY_BREAK -case 151: +case 152: YY_RULE_SETUP -#line 1527 "dhcp4_lexer.ll" +#line 1536 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3789,9 +3804,9 @@ YY_RULE_SETUP } } YY_BREAK -case 152: +case 153: YY_RULE_SETUP -#line 1540 "dhcp4_lexer.ll" +#line 1549 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3805,9 +3820,9 @@ YY_RULE_SETUP } } YY_BREAK -case 153: +case 154: YY_RULE_SETUP -#line 1553 "dhcp4_lexer.ll" +#line 1562 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3821,9 +3836,9 @@ YY_RULE_SETUP } } YY_BREAK -case 154: +case 155: YY_RULE_SETUP -#line 1568 "dhcp4_lexer.ll" +#line 1577 "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. @@ -3923,65 +3938,65 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_); } YY_BREAK -case 155: -/* rule 155 can match eol */ +case 156: +/* rule 156 can match eol */ YY_RULE_SETUP -#line 1667 "dhcp4_lexer.ll" +#line 1676 "dhcp4_lexer.ll" { /* Bad string with a forbidden control character inside */ driver.error(driver.loc_, "Invalid control in " + std::string(parser4_text)); } YY_BREAK -case 156: -/* rule 156 can match eol */ +case 157: +/* rule 157 can match eol */ YY_RULE_SETUP -#line 1672 "dhcp4_lexer.ll" +#line 1681 "dhcp4_lexer.ll" { /* Bad string with a bad escape inside */ driver.error(driver.loc_, "Bad escape in " + std::string(parser4_text)); } YY_BREAK -case 157: +case 158: YY_RULE_SETUP -#line 1677 "dhcp4_lexer.ll" +#line 1686 "dhcp4_lexer.ll" { /* Bad string with an open escape at the end */ driver.error(driver.loc_, "Overflow escape in " + std::string(parser4_text)); } YY_BREAK -case 158: +case 159: YY_RULE_SETUP -#line 1682 "dhcp4_lexer.ll" +#line 1691 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 159: +case 160: YY_RULE_SETUP -#line 1683 "dhcp4_lexer.ll" +#line 1692 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); } YY_BREAK -case 160: +case 161: YY_RULE_SETUP -#line 1684 "dhcp4_lexer.ll" +#line 1693 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); } YY_BREAK -case 161: +case 162: YY_RULE_SETUP -#line 1685 "dhcp4_lexer.ll" +#line 1694 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); } YY_BREAK -case 162: +case 163: YY_RULE_SETUP -#line 1686 "dhcp4_lexer.ll" +#line 1695 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); } YY_BREAK -case 163: +case 164: YY_RULE_SETUP -#line 1687 "dhcp4_lexer.ll" +#line 1696 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); } YY_BREAK -case 164: +case 165: YY_RULE_SETUP -#line 1689 "dhcp4_lexer.ll" +#line 1698 "dhcp4_lexer.ll" { /* An integer was found. */ std::string tmp(parser4_text); @@ -4000,9 +4015,9 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_); } YY_BREAK -case 165: +case 166: YY_RULE_SETUP -#line 1707 "dhcp4_lexer.ll" +#line 1716 "dhcp4_lexer.ll" { /* A floating point was found. */ std::string tmp(parser4_text); @@ -4016,43 +4031,43 @@ YY_RULE_SETUP return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_); } YY_BREAK -case 166: +case 167: YY_RULE_SETUP -#line 1720 "dhcp4_lexer.ll" +#line 1729 "dhcp4_lexer.ll" { string tmp(parser4_text); return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK -case 167: +case 168: YY_RULE_SETUP -#line 1725 "dhcp4_lexer.ll" +#line 1734 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_); } YY_BREAK -case 168: +case 169: YY_RULE_SETUP -#line 1729 "dhcp4_lexer.ll" +#line 1738 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); YY_BREAK -case 169: +case 170: YY_RULE_SETUP -#line 1731 "dhcp4_lexer.ll" +#line 1740 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); YY_BREAK -case 170: +case 171: YY_RULE_SETUP -#line 1733 "dhcp4_lexer.ll" +#line 1742 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); YY_BREAK -case 171: +case 172: YY_RULE_SETUP -#line 1735 "dhcp4_lexer.ll" +#line 1744 "dhcp4_lexer.ll" driver.error (driver.loc_, "Invalid character: " + std::string(parser4_text)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 1737 "dhcp4_lexer.ll" +#line 1746 "dhcp4_lexer.ll" { if (driver.states_.empty()) { return isc::dhcp::Dhcp4Parser::make_END(driver.loc_); @@ -4076,12 +4091,12 @@ case YY_STATE_EOF(INITIAL): BEGIN(DIR_EXIT); } YY_BREAK -case 172: +case 173: YY_RULE_SETUP -#line 1760 "dhcp4_lexer.ll" +#line 1769 "dhcp4_lexer.ll" ECHO; YY_BREAK -#line 4085 "dhcp4_lexer.cc" +#line 4100 "dhcp4_lexer.cc" case YY_END_OF_BUFFER: { @@ -4393,7 +4408,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 >= 1437 ) + if ( yy_current_state >= 1443 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -4426,11 +4441,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 >= 1437 ) + if ( yy_current_state >= 1443 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 1436); + yy_is_jam = (yy_current_state == 1442); return yy_is_jam ? 0 : yy_current_state; } @@ -5161,7 +5176,7 @@ void parser4_free (void * ptr ) /* %ok-for-header */ -#line 1760 "dhcp4_lexer.ll" +#line 1769 "dhcp4_lexer.ll" diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index a32606aca2..278ca6c8b2 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -776,6 +776,15 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } } +\"global\" { + switch(driver.ctx_) { + case isc::dhcp::Parser4Context::RESERVATION_MODE: + return isc::dhcp::Dhcp4Parser::make_GLOBAL(driver.loc_); + default: + return isc::dhcp::Dhcp4Parser::make_STRING("global", driver.loc_); + } +} + \"all\" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc index dfa2ea1ad0..fb4aa72467 100644 --- a/src/bin/dhcp4/dhcp4_parser.cc +++ b/src/bin/dhcp4/dhcp4_parser.cc @@ -253,30 +253,30 @@ namespace isc { namespace dhcp { { switch (that.type_get ()) { - case 180: // value - case 184: // map_value - case 222: // socket_type - case 225: // outbound_interface_value - case 247: // db_type - case 331: // hr_mode - case 479: // ncr_protocol_value - case 487: // replace_client_name_value + case 181: // value + case 185: // map_value + case 223: // socket_type + case 226: // outbound_interface_value + case 248: // db_type + case 332: // hr_mode + case 480: // ncr_protocol_value + case 488: // replace_client_name_value value.move< ElementPtr > (that.value); break; - case 164: // "boolean" + case 165: // "boolean" value.move< bool > (that.value); break; - case 163: // "floating point" + case 164: // "floating point" value.move< double > (that.value); break; - case 162: // "integer" + case 163: // "integer" value.move< int64_t > (that.value); break; - case 161: // "constant string" + case 162: // "constant string" value.move< std::string > (that.value); break; @@ -295,30 +295,30 @@ namespace isc { namespace dhcp { state = that.state; switch (that.type_get ()) { - case 180: // value - case 184: // map_value - case 222: // socket_type - case 225: // outbound_interface_value - case 247: // db_type - case 331: // hr_mode - case 479: // ncr_protocol_value - case 487: // replace_client_name_value + case 181: // value + case 185: // map_value + case 223: // socket_type + case 226: // outbound_interface_value + case 248: // db_type + case 332: // hr_mode + case 480: // ncr_protocol_value + case 488: // replace_client_name_value value.copy< ElementPtr > (that.value); break; - case 164: // "boolean" + case 165: // "boolean" value.copy< bool > (that.value); break; - case 163: // "floating point" + case 164: // "floating point" value.copy< double > (that.value); break; - case 162: // "integer" + case 163: // "integer" value.copy< int64_t > (that.value); break; - case 161: // "constant string" + case 162: // "constant string" value.copy< std::string > (that.value); break; @@ -358,86 +358,86 @@ namespace isc { namespace dhcp { << yysym.location << ": "; switch (yytype) { - case 161: // "constant string" + case 162: // "constant string" -#line 240 "dhcp4_parser.yy" // lalr1.cc:636 +#line 241 "dhcp4_parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< std::string > (); } #line 366 "dhcp4_parser.cc" // lalr1.cc:636 break; - case 162: // "integer" + case 163: // "integer" -#line 240 "dhcp4_parser.yy" // lalr1.cc:636 +#line 241 "dhcp4_parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< int64_t > (); } #line 373 "dhcp4_parser.cc" // lalr1.cc:636 break; - case 163: // "floating point" + case 164: // "floating point" -#line 240 "dhcp4_parser.yy" // lalr1.cc:636 +#line 241 "dhcp4_parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< double > (); } #line 380 "dhcp4_parser.cc" // lalr1.cc:636 break; - case 164: // "boolean" + case 165: // "boolean" -#line 240 "dhcp4_parser.yy" // lalr1.cc:636 +#line 241 "dhcp4_parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< bool > (); } #line 387 "dhcp4_parser.cc" // lalr1.cc:636 break; - case 180: // value + case 181: // value -#line 240 "dhcp4_parser.yy" // lalr1.cc:636 +#line 241 "dhcp4_parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< ElementPtr > (); } #line 394 "dhcp4_parser.cc" // lalr1.cc:636 break; - case 184: // map_value + case 185: // map_value -#line 240 "dhcp4_parser.yy" // lalr1.cc:636 +#line 241 "dhcp4_parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< ElementPtr > (); } #line 401 "dhcp4_parser.cc" // lalr1.cc:636 break; - case 222: // socket_type + case 223: // socket_type -#line 240 "dhcp4_parser.yy" // lalr1.cc:636 +#line 241 "dhcp4_parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< ElementPtr > (); } #line 408 "dhcp4_parser.cc" // lalr1.cc:636 break; - case 225: // outbound_interface_value + case 226: // outbound_interface_value -#line 240 "dhcp4_parser.yy" // lalr1.cc:636 +#line 241 "dhcp4_parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< ElementPtr > (); } #line 415 "dhcp4_parser.cc" // lalr1.cc:636 break; - case 247: // db_type + case 248: // db_type -#line 240 "dhcp4_parser.yy" // lalr1.cc:636 +#line 241 "dhcp4_parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< ElementPtr > (); } #line 422 "dhcp4_parser.cc" // lalr1.cc:636 break; - case 331: // hr_mode + case 332: // hr_mode -#line 240 "dhcp4_parser.yy" // lalr1.cc:636 +#line 241 "dhcp4_parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< ElementPtr > (); } #line 429 "dhcp4_parser.cc" // lalr1.cc:636 break; - case 479: // ncr_protocol_value + case 480: // ncr_protocol_value -#line 240 "dhcp4_parser.yy" // lalr1.cc:636 +#line 241 "dhcp4_parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< ElementPtr > (); } #line 436 "dhcp4_parser.cc" // lalr1.cc:636 break; - case 487: // replace_client_name_value + case 488: // replace_client_name_value -#line 240 "dhcp4_parser.yy" // lalr1.cc:636 +#line 241 "dhcp4_parser.yy" // lalr1.cc:636 { yyoutput << yysym.value.template as< ElementPtr > (); } #line 443 "dhcp4_parser.cc" // lalr1.cc:636 break; @@ -639,30 +639,30 @@ namespace isc { namespace dhcp { when using variants. */ switch (yyr1_[yyn]) { - case 180: // value - case 184: // map_value - case 222: // socket_type - case 225: // outbound_interface_value - case 247: // db_type - case 331: // hr_mode - case 479: // ncr_protocol_value - case 487: // replace_client_name_value + case 181: // value + case 185: // map_value + case 223: // socket_type + case 226: // outbound_interface_value + case 248: // db_type + case 332: // hr_mode + case 480: // ncr_protocol_value + case 488: // replace_client_name_value yylhs.value.build< ElementPtr > (); break; - case 164: // "boolean" + case 165: // "boolean" yylhs.value.build< bool > (); break; - case 163: // "floating point" + case 164: // "floating point" yylhs.value.build< double > (); break; - case 162: // "integer" + case 163: // "integer" yylhs.value.build< int64_t > (); break; - case 161: // "constant string" + case 162: // "constant string" yylhs.value.build< std::string > (); break; @@ -684,127 +684,127 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: -#line 249 "dhcp4_parser.yy" // lalr1.cc:859 +#line 250 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.NO_KEYWORD; } #line 690 "dhcp4_parser.cc" // lalr1.cc:859 break; case 4: -#line 250 "dhcp4_parser.yy" // lalr1.cc:859 +#line 251 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.CONFIG; } #line 696 "dhcp4_parser.cc" // lalr1.cc:859 break; case 6: -#line 251 "dhcp4_parser.yy" // lalr1.cc:859 +#line 252 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.DHCP4; } #line 702 "dhcp4_parser.cc" // lalr1.cc:859 break; case 8: -#line 252 "dhcp4_parser.yy" // lalr1.cc:859 +#line 253 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.INTERFACES_CONFIG; } #line 708 "dhcp4_parser.cc" // lalr1.cc:859 break; case 10: -#line 253 "dhcp4_parser.yy" // lalr1.cc:859 +#line 254 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.SUBNET4; } #line 714 "dhcp4_parser.cc" // lalr1.cc:859 break; case 12: -#line 254 "dhcp4_parser.yy" // lalr1.cc:859 +#line 255 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.POOLS; } #line 720 "dhcp4_parser.cc" // lalr1.cc:859 break; case 14: -#line 255 "dhcp4_parser.yy" // lalr1.cc:859 +#line 256 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.RESERVATIONS; } #line 726 "dhcp4_parser.cc" // lalr1.cc:859 break; case 16: -#line 256 "dhcp4_parser.yy" // lalr1.cc:859 +#line 257 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.DHCP4; } #line 732 "dhcp4_parser.cc" // lalr1.cc:859 break; case 18: -#line 257 "dhcp4_parser.yy" // lalr1.cc:859 +#line 258 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.OPTION_DEF; } #line 738 "dhcp4_parser.cc" // lalr1.cc:859 break; case 20: -#line 258 "dhcp4_parser.yy" // lalr1.cc:859 +#line 259 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.OPTION_DATA; } #line 744 "dhcp4_parser.cc" // lalr1.cc:859 break; case 22: -#line 259 "dhcp4_parser.yy" // lalr1.cc:859 +#line 260 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } #line 750 "dhcp4_parser.cc" // lalr1.cc:859 break; case 24: -#line 260 "dhcp4_parser.yy" // lalr1.cc:859 +#line 261 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.DHCP_DDNS; } #line 756 "dhcp4_parser.cc" // lalr1.cc:859 break; case 26: -#line 261 "dhcp4_parser.yy" // lalr1.cc:859 +#line 262 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.ctx_ = ctx.LOGGING; } #line 762 "dhcp4_parser.cc" // lalr1.cc:859 break; case 28: -#line 269 "dhcp4_parser.yy" // lalr1.cc:859 +#line 270 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); } #line 768 "dhcp4_parser.cc" // lalr1.cc:859 break; case 29: -#line 270 "dhcp4_parser.yy" // lalr1.cc:859 +#line 271 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); } #line 774 "dhcp4_parser.cc" // lalr1.cc:859 break; case 30: -#line 271 "dhcp4_parser.yy" // lalr1.cc:859 +#line 272 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); } #line 780 "dhcp4_parser.cc" // lalr1.cc:859 break; case 31: -#line 272 "dhcp4_parser.yy" // lalr1.cc:859 +#line 273 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); } #line 786 "dhcp4_parser.cc" // lalr1.cc:859 break; case 32: -#line 273 "dhcp4_parser.yy" // lalr1.cc:859 +#line 274 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } #line 792 "dhcp4_parser.cc" // lalr1.cc:859 break; case 33: -#line 274 "dhcp4_parser.yy" // lalr1.cc:859 +#line 275 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 798 "dhcp4_parser.cc" // lalr1.cc:859 break; case 34: -#line 275 "dhcp4_parser.yy" // lalr1.cc:859 +#line 276 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 804 "dhcp4_parser.cc" // lalr1.cc:859 break; case 35: -#line 278 "dhcp4_parser.yy" // lalr1.cc:859 +#line 279 "dhcp4_parser.yy" // lalr1.cc:859 { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ()); @@ -813,7 +813,7 @@ namespace isc { namespace dhcp { break; case 36: -#line 283 "dhcp4_parser.yy" // lalr1.cc:859 +#line 284 "dhcp4_parser.yy" // lalr1.cc:859 { // This code is executed when we're about to start parsing // the content of the map @@ -824,7 +824,7 @@ namespace isc { namespace dhcp { break; case 37: -#line 288 "dhcp4_parser.yy" // lalr1.cc:859 +#line 289 "dhcp4_parser.yy" // lalr1.cc:859 { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -834,13 +834,13 @@ namespace isc { namespace dhcp { break; case 38: -#line 294 "dhcp4_parser.yy" // lalr1.cc:859 +#line 295 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } #line 840 "dhcp4_parser.cc" // lalr1.cc:859 break; case 41: -#line 301 "dhcp4_parser.yy" // lalr1.cc:859 +#line 302 "dhcp4_parser.yy" // lalr1.cc:859 { // map containing a single entry ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); @@ -849,7 +849,7 @@ namespace isc { namespace dhcp { break; case 42: -#line 305 "dhcp4_parser.yy" // lalr1.cc:859 +#line 306 "dhcp4_parser.yy" // lalr1.cc:859 { // map consisting of a shorter map followed by // comma and string:value @@ -859,7 +859,7 @@ namespace isc { namespace dhcp { break; case 43: -#line 312 "dhcp4_parser.yy" // lalr1.cc:859 +#line 313 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); @@ -868,7 +868,7 @@ namespace isc { namespace dhcp { break; case 44: -#line 315 "dhcp4_parser.yy" // lalr1.cc:859 +#line 316 "dhcp4_parser.yy" // lalr1.cc:859 { // list parsing complete. Put any sanity checking here } @@ -876,7 +876,7 @@ namespace isc { namespace dhcp { break; case 47: -#line 323 "dhcp4_parser.yy" // lalr1.cc:859 +#line 324 "dhcp4_parser.yy" // lalr1.cc:859 { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); @@ -885,7 +885,7 @@ namespace isc { namespace dhcp { break; case 48: -#line 327 "dhcp4_parser.yy" // lalr1.cc:859 +#line 328 "dhcp4_parser.yy" // lalr1.cc:859 { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); @@ -894,7 +894,7 @@ namespace isc { namespace dhcp { break; case 49: -#line 334 "dhcp4_parser.yy" // lalr1.cc:859 +#line 335 "dhcp4_parser.yy" // lalr1.cc:859 { // List parsing about to start } @@ -902,7 +902,7 @@ namespace isc { namespace dhcp { break; case 50: -#line 336 "dhcp4_parser.yy" // lalr1.cc:859 +#line 337 "dhcp4_parser.yy" // lalr1.cc:859 { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); @@ -911,7 +911,7 @@ namespace isc { namespace dhcp { break; case 53: -#line 345 "dhcp4_parser.yy" // lalr1.cc:859 +#line 346 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -920,7 +920,7 @@ namespace isc { namespace dhcp { break; case 54: -#line 349 "dhcp4_parser.yy" // lalr1.cc:859 +#line 350 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); @@ -929,7 +929,7 @@ namespace isc { namespace dhcp { break; case 55: -#line 360 "dhcp4_parser.yy" // lalr1.cc:859 +#line 361 "dhcp4_parser.yy" // lalr1.cc:859 { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as< std::string > (); @@ -940,7 +940,7 @@ namespace isc { namespace dhcp { break; case 56: -#line 370 "dhcp4_parser.yy" // lalr1.cc:859 +#line 371 "dhcp4_parser.yy" // lalr1.cc:859 { // This code is executed when we're about to start parsing // the content of the map @@ -951,7 +951,7 @@ namespace isc { namespace dhcp { break; case 57: -#line 375 "dhcp4_parser.yy" // lalr1.cc:859 +#line 376 "dhcp4_parser.yy" // lalr1.cc:859 { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -964,7 +964,7 @@ namespace isc { namespace dhcp { break; case 66: -#line 399 "dhcp4_parser.yy" // lalr1.cc:859 +#line 400 "dhcp4_parser.yy" // lalr1.cc:859 { // This code is executed when we're about to start parsing // the content of the map @@ -977,7 +977,7 @@ namespace isc { namespace dhcp { break; case 67: -#line 406 "dhcp4_parser.yy" // lalr1.cc:859 +#line 407 "dhcp4_parser.yy" // lalr1.cc:859 { // No global parameter is required ctx.stack_.pop_back(); @@ -987,7 +987,7 @@ namespace isc { namespace dhcp { break; case 68: -#line 414 "dhcp4_parser.yy" // lalr1.cc:859 +#line 415 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the Dhcp4 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -997,7 +997,7 @@ namespace isc { namespace dhcp { break; case 69: -#line 418 "dhcp4_parser.yy" // lalr1.cc:859 +#line 419 "dhcp4_parser.yy" // lalr1.cc:859 { // No global parameter is required // parsing completed @@ -1006,7 +1006,7 @@ namespace isc { namespace dhcp { break; case 101: -#line 460 "dhcp4_parser.yy" // lalr1.cc:859 +#line 461 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("valid-lifetime", prf); @@ -1015,7 +1015,7 @@ namespace isc { namespace dhcp { break; case 102: -#line 465 "dhcp4_parser.yy" // lalr1.cc:859 +#line 466 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("renew-timer", prf); @@ -1024,7 +1024,7 @@ namespace isc { namespace dhcp { break; case 103: -#line 470 "dhcp4_parser.yy" // lalr1.cc:859 +#line 471 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rebind-timer", prf); @@ -1033,7 +1033,7 @@ namespace isc { namespace dhcp { break; case 104: -#line 475 "dhcp4_parser.yy" // lalr1.cc:859 +#line 476 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("decline-probation-period", dpp); @@ -1042,7 +1042,7 @@ namespace isc { namespace dhcp { break; case 105: -#line 480 "dhcp4_parser.yy" // lalr1.cc:859 +#line 481 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("echo-client-id", echo); @@ -1051,7 +1051,7 @@ namespace isc { namespace dhcp { break; case 106: -#line 485 "dhcp4_parser.yy" // lalr1.cc:859 +#line 486 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("match-client-id", match); @@ -1060,7 +1060,7 @@ namespace isc { namespace dhcp { break; case 107: -#line 491 "dhcp4_parser.yy" // lalr1.cc:859 +#line 492 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces-config", i); @@ -1071,7 +1071,7 @@ namespace isc { namespace dhcp { break; case 108: -#line 496 "dhcp4_parser.yy" // lalr1.cc:859 +#line 497 "dhcp4_parser.yy" // lalr1.cc:859 { // No interfaces config param is required ctx.stack_.pop_back(); @@ -1081,7 +1081,7 @@ namespace isc { namespace dhcp { break; case 118: -#line 515 "dhcp4_parser.yy" // lalr1.cc:859 +#line 516 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1091,7 +1091,7 @@ namespace isc { namespace dhcp { break; case 119: -#line 519 "dhcp4_parser.yy" // lalr1.cc:859 +#line 520 "dhcp4_parser.yy" // lalr1.cc:859 { // No interfaces config param is required // parsing completed @@ -1100,7 +1100,7 @@ namespace isc { namespace dhcp { break; case 120: -#line 524 "dhcp4_parser.yy" // lalr1.cc:859 +#line 525 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces", l); @@ -1111,7 +1111,7 @@ namespace isc { namespace dhcp { break; case 121: -#line 529 "dhcp4_parser.yy" // lalr1.cc:859 +#line 530 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1120,7 +1120,7 @@ namespace isc { namespace dhcp { break; case 122: -#line 534 "dhcp4_parser.yy" // lalr1.cc:859 +#line 535 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.DHCP_SOCKET_TYPE); } @@ -1128,7 +1128,7 @@ namespace isc { namespace dhcp { break; case 123: -#line 536 "dhcp4_parser.yy" // lalr1.cc:859 +#line 537 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -1137,19 +1137,19 @@ namespace isc { namespace dhcp { break; case 124: -#line 541 "dhcp4_parser.yy" // lalr1.cc:859 +#line 542 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); } #line 1143 "dhcp4_parser.cc" // lalr1.cc:859 break; case 125: -#line 542 "dhcp4_parser.yy" // lalr1.cc:859 +#line 543 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); } #line 1149 "dhcp4_parser.cc" // lalr1.cc:859 break; case 126: -#line 545 "dhcp4_parser.yy" // lalr1.cc:859 +#line 546 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.OUTBOUND_INTERFACE); } @@ -1157,7 +1157,7 @@ namespace isc { namespace dhcp { break; case 127: -#line 547 "dhcp4_parser.yy" // lalr1.cc:859 +#line 548 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -1166,7 +1166,7 @@ namespace isc { namespace dhcp { break; case 128: -#line 552 "dhcp4_parser.yy" // lalr1.cc:859 +#line 553 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location))); } @@ -1174,7 +1174,7 @@ namespace isc { namespace dhcp { break; case 129: -#line 554 "dhcp4_parser.yy" // lalr1.cc:859 +#line 555 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location))); } @@ -1182,7 +1182,7 @@ namespace isc { namespace dhcp { break; case 130: -#line 558 "dhcp4_parser.yy" // lalr1.cc:859 +#line 559 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("re-detect", b); @@ -1191,7 +1191,7 @@ namespace isc { namespace dhcp { break; case 131: -#line 564 "dhcp4_parser.yy" // lalr1.cc:859 +#line 565 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lease-database", i); @@ -1202,7 +1202,7 @@ namespace isc { namespace dhcp { break; case 132: -#line 569 "dhcp4_parser.yy" // lalr1.cc:859 +#line 570 "dhcp4_parser.yy" // lalr1.cc:859 { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); @@ -1213,7 +1213,7 @@ namespace isc { namespace dhcp { break; case 133: -#line 576 "dhcp4_parser.yy" // lalr1.cc:859 +#line 577 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sanity-checks", m); @@ -1224,7 +1224,7 @@ namespace isc { namespace dhcp { break; case 134: -#line 581 "dhcp4_parser.yy" // lalr1.cc:859 +#line 582 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1233,7 +1233,7 @@ namespace isc { namespace dhcp { break; case 138: -#line 591 "dhcp4_parser.yy" // lalr1.cc:859 +#line 592 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1241,7 +1241,7 @@ namespace isc { namespace dhcp { break; case 139: -#line 593 "dhcp4_parser.yy" // lalr1.cc:859 +#line 594 "dhcp4_parser.yy" // lalr1.cc:859 { if ( (string(yystack_[0].value.as< std::string > ()) == "none") || @@ -1261,7 +1261,7 @@ namespace isc { namespace dhcp { break; case 140: -#line 609 "dhcp4_parser.yy" // lalr1.cc:859 +#line 610 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hosts-database", i); @@ -1272,7 +1272,7 @@ namespace isc { namespace dhcp { break; case 141: -#line 614 "dhcp4_parser.yy" // lalr1.cc:859 +#line 615 "dhcp4_parser.yy" // lalr1.cc:859 { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); @@ -1283,7 +1283,7 @@ namespace isc { namespace dhcp { break; case 142: -#line 621 "dhcp4_parser.yy" // lalr1.cc:859 +#line 622 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hosts-databases", l); @@ -1294,7 +1294,7 @@ namespace isc { namespace dhcp { break; case 143: -#line 626 "dhcp4_parser.yy" // lalr1.cc:859 +#line 627 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1303,7 +1303,7 @@ namespace isc { namespace dhcp { break; case 148: -#line 639 "dhcp4_parser.yy" // lalr1.cc:859 +#line 640 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -1313,7 +1313,7 @@ namespace isc { namespace dhcp { break; case 149: -#line 643 "dhcp4_parser.yy" // lalr1.cc:859 +#line 644 "dhcp4_parser.yy" // lalr1.cc:859 { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -1323,7 +1323,7 @@ namespace isc { namespace dhcp { break; case 170: -#line 673 "dhcp4_parser.yy" // lalr1.cc:859 +#line 674 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.DATABASE_TYPE); } @@ -1331,7 +1331,7 @@ namespace isc { namespace dhcp { break; case 171: -#line 675 "dhcp4_parser.yy" // lalr1.cc:859 +#line 676 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -1340,31 +1340,31 @@ namespace isc { namespace dhcp { break; case 172: -#line 680 "dhcp4_parser.yy" // lalr1.cc:859 +#line 681 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } #line 1346 "dhcp4_parser.cc" // lalr1.cc:859 break; case 173: -#line 681 "dhcp4_parser.yy" // lalr1.cc:859 +#line 682 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } #line 1352 "dhcp4_parser.cc" // lalr1.cc:859 break; case 174: -#line 682 "dhcp4_parser.yy" // lalr1.cc:859 +#line 683 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } #line 1358 "dhcp4_parser.cc" // lalr1.cc:859 break; case 175: -#line 683 "dhcp4_parser.yy" // lalr1.cc:859 +#line 684 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } #line 1364 "dhcp4_parser.cc" // lalr1.cc:859 break; case 176: -#line 686 "dhcp4_parser.yy" // lalr1.cc:859 +#line 687 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1372,7 +1372,7 @@ namespace isc { namespace dhcp { break; case 177: -#line 688 "dhcp4_parser.yy" // lalr1.cc:859 +#line 689 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); @@ -1382,7 +1382,7 @@ namespace isc { namespace dhcp { break; case 178: -#line 694 "dhcp4_parser.yy" // lalr1.cc:859 +#line 695 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1390,7 +1390,7 @@ namespace isc { namespace dhcp { break; case 179: -#line 696 "dhcp4_parser.yy" // lalr1.cc:859 +#line 697 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); @@ -1400,7 +1400,7 @@ namespace isc { namespace dhcp { break; case 180: -#line 702 "dhcp4_parser.yy" // lalr1.cc:859 +#line 703 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1408,7 +1408,7 @@ namespace isc { namespace dhcp { break; case 181: -#line 704 "dhcp4_parser.yy" // lalr1.cc:859 +#line 705 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); @@ -1418,7 +1418,7 @@ namespace isc { namespace dhcp { break; case 182: -#line 710 "dhcp4_parser.yy" // lalr1.cc:859 +#line 711 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", p); @@ -1427,7 +1427,7 @@ namespace isc { namespace dhcp { break; case 183: -#line 715 "dhcp4_parser.yy" // lalr1.cc:859 +#line 716 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1435,7 +1435,7 @@ namespace isc { namespace dhcp { break; case 184: -#line 717 "dhcp4_parser.yy" // lalr1.cc:859 +#line 718 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); @@ -1445,7 +1445,7 @@ namespace isc { namespace dhcp { break; case 185: -#line 723 "dhcp4_parser.yy" // lalr1.cc:859 +#line 724 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("persist", n); @@ -1454,7 +1454,7 @@ namespace isc { namespace dhcp { break; case 186: -#line 728 "dhcp4_parser.yy" // lalr1.cc:859 +#line 729 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lfc-interval", n); @@ -1463,7 +1463,7 @@ namespace isc { namespace dhcp { break; case 187: -#line 733 "dhcp4_parser.yy" // lalr1.cc:859 +#line 734 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("readonly", n); @@ -1472,7 +1472,7 @@ namespace isc { namespace dhcp { break; case 188: -#line 738 "dhcp4_parser.yy" // lalr1.cc:859 +#line 739 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("connect-timeout", n); @@ -1481,7 +1481,7 @@ namespace isc { namespace dhcp { break; case 189: -#line 743 "dhcp4_parser.yy" // lalr1.cc:859 +#line 744 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("request-timeout", n); @@ -1490,7 +1490,7 @@ namespace isc { namespace dhcp { break; case 190: -#line 748 "dhcp4_parser.yy" // lalr1.cc:859 +#line 749 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-keepalive", n); @@ -1499,7 +1499,7 @@ namespace isc { namespace dhcp { break; case 191: -#line 753 "dhcp4_parser.yy" // lalr1.cc:859 +#line 754 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-nodelay", n); @@ -1508,7 +1508,7 @@ namespace isc { namespace dhcp { break; case 192: -#line 758 "dhcp4_parser.yy" // lalr1.cc:859 +#line 759 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1516,7 +1516,7 @@ namespace isc { namespace dhcp { break; case 193: -#line 760 "dhcp4_parser.yy" // lalr1.cc:859 +#line 761 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr cp(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("contact-points", cp); @@ -1526,7 +1526,7 @@ namespace isc { namespace dhcp { break; case 194: -#line 766 "dhcp4_parser.yy" // lalr1.cc:859 +#line 767 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1534,7 +1534,7 @@ namespace isc { namespace dhcp { break; case 195: -#line 768 "dhcp4_parser.yy" // lalr1.cc:859 +#line 769 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("keyspace", ks); @@ -1544,7 +1544,7 @@ namespace isc { namespace dhcp { break; case 196: -#line 774 "dhcp4_parser.yy" // lalr1.cc:859 +#line 775 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reconnect-tries", n); @@ -1553,7 +1553,7 @@ namespace isc { namespace dhcp { break; case 197: -#line 779 "dhcp4_parser.yy" // lalr1.cc:859 +#line 780 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reconnect-wait-time", n); @@ -1562,7 +1562,7 @@ namespace isc { namespace dhcp { break; case 198: -#line 784 "dhcp4_parser.yy" // lalr1.cc:859 +#line 785 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host-reservation-identifiers", l); @@ -1573,7 +1573,7 @@ namespace isc { namespace dhcp { break; case 199: -#line 789 "dhcp4_parser.yy" // lalr1.cc:859 +#line 790 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1582,7 +1582,7 @@ namespace isc { namespace dhcp { break; case 207: -#line 805 "dhcp4_parser.yy" // lalr1.cc:859 +#line 806 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); @@ -1591,7 +1591,7 @@ namespace isc { namespace dhcp { break; case 208: -#line 810 "dhcp4_parser.yy" // lalr1.cc:859 +#line 811 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); @@ -1600,7 +1600,7 @@ namespace isc { namespace dhcp { break; case 209: -#line 815 "dhcp4_parser.yy" // lalr1.cc:859 +#line 816 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(circuit); @@ -1609,7 +1609,7 @@ namespace isc { namespace dhcp { break; case 210: -#line 820 "dhcp4_parser.yy" // lalr1.cc:859 +#line 821 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(client); @@ -1618,7 +1618,7 @@ namespace isc { namespace dhcp { break; case 211: -#line 825 "dhcp4_parser.yy" // lalr1.cc:859 +#line 826 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); @@ -1627,7 +1627,7 @@ namespace isc { namespace dhcp { break; case 212: -#line 830 "dhcp4_parser.yy" // lalr1.cc:859 +#line 831 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hooks-libraries", l); @@ -1638,7 +1638,7 @@ namespace isc { namespace dhcp { break; case 213: -#line 835 "dhcp4_parser.yy" // lalr1.cc:859 +#line 836 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1647,7 +1647,7 @@ namespace isc { namespace dhcp { break; case 218: -#line 848 "dhcp4_parser.yy" // lalr1.cc:859 +#line 849 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -1657,7 +1657,7 @@ namespace isc { namespace dhcp { break; case 219: -#line 852 "dhcp4_parser.yy" // lalr1.cc:859 +#line 853 "dhcp4_parser.yy" // lalr1.cc:859 { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -1667,7 +1667,7 @@ namespace isc { namespace dhcp { break; case 220: -#line 858 "dhcp4_parser.yy" // lalr1.cc:859 +#line 859 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1677,7 +1677,7 @@ namespace isc { namespace dhcp { break; case 221: -#line 862 "dhcp4_parser.yy" // lalr1.cc:859 +#line 863 "dhcp4_parser.yy" // lalr1.cc:859 { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -1687,7 +1687,7 @@ namespace isc { namespace dhcp { break; case 227: -#line 877 "dhcp4_parser.yy" // lalr1.cc:859 +#line 878 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1695,7 +1695,7 @@ namespace isc { namespace dhcp { break; case 228: -#line 879 "dhcp4_parser.yy" // lalr1.cc:859 +#line 880 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); @@ -1705,7 +1705,7 @@ namespace isc { namespace dhcp { break; case 229: -#line 885 "dhcp4_parser.yy" // lalr1.cc:859 +#line 886 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1713,7 +1713,7 @@ namespace isc { namespace dhcp { break; case 230: -#line 887 "dhcp4_parser.yy" // lalr1.cc:859 +#line 888 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -1722,7 +1722,7 @@ namespace isc { namespace dhcp { break; case 231: -#line 893 "dhcp4_parser.yy" // lalr1.cc:859 +#line 894 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("expired-leases-processing", m); @@ -1733,7 +1733,7 @@ namespace isc { namespace dhcp { break; case 232: -#line 898 "dhcp4_parser.yy" // lalr1.cc:859 +#line 899 "dhcp4_parser.yy" // lalr1.cc:859 { // No expired lease parameter is required ctx.stack_.pop_back(); @@ -1743,7 +1743,7 @@ namespace isc { namespace dhcp { break; case 241: -#line 916 "dhcp4_parser.yy" // lalr1.cc:859 +#line 917 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reclaim-timer-wait-time", value); @@ -1752,7 +1752,7 @@ namespace isc { namespace dhcp { break; case 242: -#line 921 "dhcp4_parser.yy" // lalr1.cc:859 +#line 922 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value); @@ -1761,7 +1761,7 @@ namespace isc { namespace dhcp { break; case 243: -#line 926 "dhcp4_parser.yy" // lalr1.cc:859 +#line 927 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hold-reclaimed-time", value); @@ -1770,7 +1770,7 @@ namespace isc { namespace dhcp { break; case 244: -#line 931 "dhcp4_parser.yy" // lalr1.cc:859 +#line 932 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-leases", value); @@ -1779,7 +1779,7 @@ namespace isc { namespace dhcp { break; case 245: -#line 936 "dhcp4_parser.yy" // lalr1.cc:859 +#line 937 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-time", value); @@ -1788,7 +1788,7 @@ namespace isc { namespace dhcp { break; case 246: -#line 941 "dhcp4_parser.yy" // lalr1.cc:859 +#line 942 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("unwarned-reclaim-cycles", value); @@ -1797,7 +1797,7 @@ namespace isc { namespace dhcp { break; case 247: -#line 949 "dhcp4_parser.yy" // lalr1.cc:859 +#line 950 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet4", l); @@ -1808,7 +1808,7 @@ namespace isc { namespace dhcp { break; case 248: -#line 954 "dhcp4_parser.yy" // lalr1.cc:859 +#line 955 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1817,7 +1817,7 @@ namespace isc { namespace dhcp { break; case 253: -#line 974 "dhcp4_parser.yy" // lalr1.cc:859 +#line 975 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -1827,7 +1827,7 @@ namespace isc { namespace dhcp { break; case 254: -#line 978 "dhcp4_parser.yy" // lalr1.cc:859 +#line 979 "dhcp4_parser.yy" // lalr1.cc:859 { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. @@ -1853,7 +1853,7 @@ namespace isc { namespace dhcp { break; case 255: -#line 1000 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1001 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the subnet4 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1863,7 +1863,7 @@ namespace isc { namespace dhcp { break; case 256: -#line 1004 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1005 "dhcp4_parser.yy" // lalr1.cc:859 { // The subnet subnet4 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -1873,7 +1873,7 @@ namespace isc { namespace dhcp { break; case 284: -#line 1043 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1044 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1881,7 +1881,7 @@ namespace isc { namespace dhcp { break; case 285: -#line 1045 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1046 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet", subnet); @@ -1891,7 +1891,7 @@ namespace isc { namespace dhcp { break; case 286: -#line 1051 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1052 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1899,7 +1899,7 @@ namespace isc { namespace dhcp { break; case 287: -#line 1053 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1054 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-interface", iface); @@ -1909,7 +1909,7 @@ namespace isc { namespace dhcp { break; case 288: -#line 1059 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1060 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1917,7 +1917,7 @@ namespace isc { namespace dhcp { break; case 289: -#line 1061 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1062 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-interface-id", iface); @@ -1927,7 +1927,7 @@ namespace isc { namespace dhcp { break; case 290: -#line 1067 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1068 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1935,7 +1935,7 @@ namespace isc { namespace dhcp { break; case 291: -#line 1069 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1070 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-subnet", iface); @@ -1945,7 +1945,7 @@ namespace isc { namespace dhcp { break; case 292: -#line 1075 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1076 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1953,7 +1953,7 @@ namespace isc { namespace dhcp { break; case 293: -#line 1077 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1078 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface", iface); @@ -1963,7 +1963,7 @@ namespace isc { namespace dhcp { break; case 294: -#line 1083 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1084 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1971,7 +1971,7 @@ namespace isc { namespace dhcp { break; case 295: -#line 1085 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1086 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface-id", iface); @@ -1981,7 +1981,7 @@ namespace isc { namespace dhcp { break; case 296: -#line 1091 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1092 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -1989,7 +1989,7 @@ namespace isc { namespace dhcp { break; case 297: -#line 1093 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1094 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-class", cls); @@ -1999,7 +1999,7 @@ namespace isc { namespace dhcp { break; case 298: -#line 1099 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1100 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("require-client-classes", c); @@ -2010,7 +2010,7 @@ namespace isc { namespace dhcp { break; case 299: -#line 1104 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1105 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2019,7 +2019,7 @@ namespace isc { namespace dhcp { break; case 300: -#line 1109 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1110 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.RESERVATION_MODE); } @@ -2027,7 +2027,7 @@ namespace isc { namespace dhcp { break; case 301: -#line 1111 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1112 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -2036,128 +2036,134 @@ namespace isc { namespace dhcp { break; case 302: -#line 1116 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1117 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } #line 2042 "dhcp4_parser.cc" // lalr1.cc:859 break; case 303: -#line 1117 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1118 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } #line 2048 "dhcp4_parser.cc" // lalr1.cc:859 break; case 304: -#line 1118 "dhcp4_parser.yy" // lalr1.cc:859 - { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } +#line 1119 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } #line 2054 "dhcp4_parser.cc" // lalr1.cc:859 break; case 305: -#line 1121 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1120 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } +#line 2060 "dhcp4_parser.cc" // lalr1.cc:859 + break; + + case 306: +#line 1123 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("id", id); } -#line 2063 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2069 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 306: -#line 1126 "dhcp4_parser.yy" // lalr1.cc:859 + case 307: +#line 1128 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rapid-commit", rc); } -#line 2072 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2078 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 307: -#line 1133 "dhcp4_parser.yy" // lalr1.cc:859 + case 308: +#line 1135 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("shared-networks", l); ctx.stack_.push_back(l); ctx.enter(ctx.SHARED_NETWORK); } -#line 2083 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2089 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 308: -#line 1138 "dhcp4_parser.yy" // lalr1.cc:859 + case 309: +#line 1140 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2092 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2098 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 313: -#line 1153 "dhcp4_parser.yy" // lalr1.cc:859 + case 314: +#line 1155 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2102 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2108 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 314: -#line 1157 "dhcp4_parser.yy" // lalr1.cc:859 + case 315: +#line 1159 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } -#line 2110 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2116 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 335: -#line 1189 "dhcp4_parser.yy" // lalr1.cc:859 + case 336: +#line 1191 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("option-def", l); ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DEF); } -#line 2121 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2127 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 336: -#line 1194 "dhcp4_parser.yy" // lalr1.cc:859 + case 337: +#line 1196 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2130 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2136 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 337: -#line 1202 "dhcp4_parser.yy" // lalr1.cc:859 + case 338: +#line 1204 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2139 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2145 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 338: -#line 1205 "dhcp4_parser.yy" // lalr1.cc:859 + case 339: +#line 1207 "dhcp4_parser.yy" // lalr1.cc:859 { // parsing completed } -#line 2147 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2153 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 343: -#line 1221 "dhcp4_parser.yy" // lalr1.cc:859 + case 344: +#line 1223 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2157 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2163 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 344: -#line 1225 "dhcp4_parser.yy" // lalr1.cc:859 + case 345: +#line 1227 "dhcp4_parser.yy" // lalr1.cc:859 { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2165,21 +2171,21 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2169 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2175 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 345: -#line 1236 "dhcp4_parser.yy" // lalr1.cc:859 + case 346: +#line 1238 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2179 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2185 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 346: -#line 1240 "dhcp4_parser.yy" // lalr1.cc:859 + case 347: +#line 1242 "dhcp4_parser.yy" // lalr1.cc:859 { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2187,281 +2193,281 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2191 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2197 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 362: -#line 1272 "dhcp4_parser.yy" // lalr1.cc:859 + case 363: +#line 1274 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("code", code); } -#line 2200 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2206 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 364: -#line 1279 "dhcp4_parser.yy" // lalr1.cc:859 + case 365: +#line 1281 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2208 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2214 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 365: -#line 1281 "dhcp4_parser.yy" // lalr1.cc:859 + case 366: +#line 1283 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", prf); ctx.leave(); } -#line 2218 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2224 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 366: -#line 1287 "dhcp4_parser.yy" // lalr1.cc:859 + case 367: +#line 1289 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2226 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2232 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 367: -#line 1289 "dhcp4_parser.yy" // lalr1.cc:859 + case 368: +#line 1291 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("record-types", rtypes); ctx.leave(); } -#line 2236 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2242 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 368: -#line 1295 "dhcp4_parser.yy" // lalr1.cc:859 + case 369: +#line 1297 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2244 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2250 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 369: -#line 1297 "dhcp4_parser.yy" // lalr1.cc:859 + case 370: +#line 1299 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("space", space); ctx.leave(); } -#line 2254 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2260 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 371: -#line 1305 "dhcp4_parser.yy" // lalr1.cc:859 + case 372: +#line 1307 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2262 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2268 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 372: -#line 1307 "dhcp4_parser.yy" // lalr1.cc:859 + case 373: +#line 1309 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("encapsulate", encap); ctx.leave(); } -#line 2272 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2278 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 373: -#line 1313 "dhcp4_parser.yy" // lalr1.cc:859 + case 374: +#line 1315 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("array", array); } -#line 2281 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2287 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 374: -#line 1322 "dhcp4_parser.yy" // lalr1.cc:859 + case 375: +#line 1324 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("option-data", l); ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DATA); } -#line 2292 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2298 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 375: -#line 1327 "dhcp4_parser.yy" // lalr1.cc:859 + case 376: +#line 1329 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2301 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2307 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 380: -#line 1346 "dhcp4_parser.yy" // lalr1.cc:859 + case 381: +#line 1348 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2311 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2317 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 381: -#line 1350 "dhcp4_parser.yy" // lalr1.cc:859 + case 382: +#line 1352 "dhcp4_parser.yy" // lalr1.cc:859 { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 2320 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2326 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 382: -#line 1358 "dhcp4_parser.yy" // lalr1.cc:859 + case 383: +#line 1360 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2330 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2336 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 383: -#line 1362 "dhcp4_parser.yy" // lalr1.cc:859 + case 384: +#line 1364 "dhcp4_parser.yy" // lalr1.cc:859 { /// @todo: the code or name parameters are required. // parsing completed } -#line 2339 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2345 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 398: -#line 1395 "dhcp4_parser.yy" // lalr1.cc:859 + case 399: +#line 1397 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2347 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2353 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 399: -#line 1397 "dhcp4_parser.yy" // lalr1.cc:859 + case 400: +#line 1399 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data", data); ctx.leave(); } -#line 2357 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2363 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 402: -#line 1407 "dhcp4_parser.yy" // lalr1.cc:859 + case 403: +#line 1409 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", space); } -#line 2366 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2372 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 403: -#line 1412 "dhcp4_parser.yy" // lalr1.cc:859 + case 404: +#line 1414 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-send", persist); } -#line 2375 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2381 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 404: -#line 1420 "dhcp4_parser.yy" // lalr1.cc:859 + case 405: +#line 1422 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pools", l); ctx.stack_.push_back(l); ctx.enter(ctx.POOLS); } -#line 2386 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2392 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 405: -#line 1425 "dhcp4_parser.yy" // lalr1.cc:859 + case 406: +#line 1427 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2395 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2401 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 410: -#line 1440 "dhcp4_parser.yy" // lalr1.cc:859 + case 411: +#line 1442 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2405 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2411 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 411: -#line 1444 "dhcp4_parser.yy" // lalr1.cc:859 + case 412: +#line 1446 "dhcp4_parser.yy" // lalr1.cc:859 { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2415 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2421 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 412: -#line 1450 "dhcp4_parser.yy" // lalr1.cc:859 + case 413: +#line 1452 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2425 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2431 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 413: -#line 1454 "dhcp4_parser.yy" // lalr1.cc:859 + case 414: +#line 1456 "dhcp4_parser.yy" // lalr1.cc:859 { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2435 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2441 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 423: -#line 1473 "dhcp4_parser.yy" // lalr1.cc:859 + case 424: +#line 1475 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2443 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2449 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 424: -#line 1475 "dhcp4_parser.yy" // lalr1.cc:859 + case 425: +#line 1477 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool", pool); ctx.leave(); } -#line 2453 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2459 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 425: -#line 1481 "dhcp4_parser.yy" // lalr1.cc:859 + case 426: +#line 1483 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2461 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2467 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 426: -#line 1483 "dhcp4_parser.yy" // lalr1.cc:859 + case 427: +#line 1485 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as< ElementPtr > (); @@ -2484,19 +2490,19 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 2488 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2494 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 427: -#line 1506 "dhcp4_parser.yy" // lalr1.cc:859 + case 428: +#line 1508 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2496 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2502 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 428: -#line 1508 "dhcp4_parser.yy" // lalr1.cc:859 + case 429: +#line 1510 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -2521,996 +2527,996 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 2525 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2531 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 429: -#line 1536 "dhcp4_parser.yy" // lalr1.cc:859 + case 430: +#line 1538 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations", l); ctx.stack_.push_back(l); ctx.enter(ctx.RESERVATIONS); } -#line 2536 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2542 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 430: -#line 1541 "dhcp4_parser.yy" // lalr1.cc:859 + case 431: +#line 1543 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2545 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2551 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 435: -#line 1554 "dhcp4_parser.yy" // lalr1.cc:859 + case 436: +#line 1556 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2555 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2561 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 436: -#line 1558 "dhcp4_parser.yy" // lalr1.cc:859 + case 437: +#line 1560 "dhcp4_parser.yy" // lalr1.cc:859 { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 2564 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2570 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 437: -#line 1563 "dhcp4_parser.yy" // lalr1.cc:859 + case 438: +#line 1565 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2574 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2580 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 438: -#line 1567 "dhcp4_parser.yy" // lalr1.cc:859 + case 439: +#line 1569 "dhcp4_parser.yy" // lalr1.cc:859 { /// @todo: an identifier parameter is required. // parsing completed } -#line 2583 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2589 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 458: -#line 1598 "dhcp4_parser.yy" // lalr1.cc:859 + case 459: +#line 1600 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2591 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2597 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 459: -#line 1600 "dhcp4_parser.yy" // lalr1.cc:859 + case 460: +#line 1602 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("next-server", next_server); ctx.leave(); } -#line 2601 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2607 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 460: -#line 1606 "dhcp4_parser.yy" // lalr1.cc:859 + case 461: +#line 1608 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2609 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2615 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 461: -#line 1608 "dhcp4_parser.yy" // lalr1.cc:859 + case 462: +#line 1610 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-hostname", srv); ctx.leave(); } -#line 2619 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2625 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 462: -#line 1614 "dhcp4_parser.yy" // lalr1.cc:859 + case 463: +#line 1616 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2627 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2633 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 463: -#line 1616 "dhcp4_parser.yy" // lalr1.cc:859 + case 464: +#line 1618 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("boot-file-name", bootfile); ctx.leave(); } -#line 2637 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2643 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 464: -#line 1622 "dhcp4_parser.yy" // lalr1.cc:859 + case 465: +#line 1624 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2645 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2651 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 465: -#line 1624 "dhcp4_parser.yy" // lalr1.cc:859 + case 466: +#line 1626 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", addr); ctx.leave(); } -#line 2655 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2661 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 466: -#line 1630 "dhcp4_parser.yy" // lalr1.cc:859 + case 467: +#line 1632 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-addresses", l); ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 2666 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2672 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 467: -#line 1635 "dhcp4_parser.yy" // lalr1.cc:859 + case 468: +#line 1637 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2675 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2681 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 468: -#line 1640 "dhcp4_parser.yy" // lalr1.cc:859 + case 469: +#line 1642 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2683 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2689 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 469: -#line 1642 "dhcp4_parser.yy" // lalr1.cc:859 + case 470: +#line 1644 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("duid", d); ctx.leave(); } -#line 2693 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2699 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 470: -#line 1648 "dhcp4_parser.yy" // lalr1.cc:859 + case 471: +#line 1650 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2701 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2707 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 471: -#line 1650 "dhcp4_parser.yy" // lalr1.cc:859 + case 472: +#line 1652 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hw-address", hw); ctx.leave(); } -#line 2711 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2717 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 472: -#line 1656 "dhcp4_parser.yy" // lalr1.cc:859 + case 473: +#line 1658 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2719 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2725 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 473: -#line 1658 "dhcp4_parser.yy" // lalr1.cc:859 + case 474: +#line 1660 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-id", hw); ctx.leave(); } -#line 2729 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2735 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 474: -#line 1664 "dhcp4_parser.yy" // lalr1.cc:859 + case 475: +#line 1666 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2737 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2743 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 475: -#line 1666 "dhcp4_parser.yy" // lalr1.cc:859 + case 476: +#line 1668 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("circuit-id", hw); ctx.leave(); } -#line 2747 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2753 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 476: -#line 1672 "dhcp4_parser.yy" // lalr1.cc:859 + case 477: +#line 1674 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2755 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2761 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 477: -#line 1674 "dhcp4_parser.yy" // lalr1.cc:859 + case 478: +#line 1676 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flex-id", hw); ctx.leave(); } -#line 2765 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2771 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 478: -#line 1680 "dhcp4_parser.yy" // lalr1.cc:859 + case 479: +#line 1682 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2773 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2779 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 479: -#line 1682 "dhcp4_parser.yy" // lalr1.cc:859 + case 480: +#line 1684 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname", host); ctx.leave(); } -#line 2783 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2789 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 480: -#line 1688 "dhcp4_parser.yy" // lalr1.cc:859 + case 481: +#line 1690 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-classes", c); ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2794 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2800 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 481: -#line 1693 "dhcp4_parser.yy" // lalr1.cc:859 + case 482: +#line 1695 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2803 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2809 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 482: -#line 1701 "dhcp4_parser.yy" // lalr1.cc:859 + case 483: +#line 1703 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("relay", m); ctx.stack_.push_back(m); ctx.enter(ctx.RELAY); } -#line 2814 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2820 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 483: -#line 1706 "dhcp4_parser.yy" // lalr1.cc:859 + case 484: +#line 1708 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2823 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2829 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 486: -#line 1718 "dhcp4_parser.yy" // lalr1.cc:859 + case 487: +#line 1720 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-classes", l); ctx.stack_.push_back(l); ctx.enter(ctx.CLIENT_CLASSES); } -#line 2834 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2840 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 487: -#line 1723 "dhcp4_parser.yy" // lalr1.cc:859 + case 488: +#line 1725 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2843 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2849 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 490: -#line 1732 "dhcp4_parser.yy" // lalr1.cc:859 + case 491: +#line 1734 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2853 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2859 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 491: -#line 1736 "dhcp4_parser.yy" // lalr1.cc:859 + case 492: +#line 1738 "dhcp4_parser.yy" // lalr1.cc:859 { // The name client class parameter is required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2863 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2869 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 508: -#line 1765 "dhcp4_parser.yy" // lalr1.cc:859 + case 509: +#line 1767 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2871 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2877 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 509: -#line 1767 "dhcp4_parser.yy" // lalr1.cc:859 + case 510: +#line 1769 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("test", test); ctx.leave(); } -#line 2881 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2887 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 510: -#line 1773 "dhcp4_parser.yy" // lalr1.cc:859 + case 511: +#line 1775 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-if-required", b); } -#line 2890 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2896 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 511: -#line 1782 "dhcp4_parser.yy" // lalr1.cc:859 + case 512: +#line 1784 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4o6-port", time); } -#line 2899 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2905 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 512: -#line 1789 "dhcp4_parser.yy" // lalr1.cc:859 + case 513: +#line 1791 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("control-socket", m); ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 2910 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2916 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 513: -#line 1794 "dhcp4_parser.yy" // lalr1.cc:859 + case 514: +#line 1796 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2919 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2925 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 521: -#line 1810 "dhcp4_parser.yy" // lalr1.cc:859 + case 522: +#line 1812 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2927 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2933 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 522: -#line 1812 "dhcp4_parser.yy" // lalr1.cc:859 + case 523: +#line 1814 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-type", stype); ctx.leave(); } -#line 2937 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2943 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 523: -#line 1818 "dhcp4_parser.yy" // lalr1.cc:859 + case 524: +#line 1820 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2945 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2951 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 524: -#line 1820 "dhcp4_parser.yy" // lalr1.cc:859 + case 525: +#line 1822 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-name", name); ctx.leave(); } -#line 2955 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2961 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 525: -#line 1828 "dhcp4_parser.yy" // lalr1.cc:859 + case 526: +#line 1830 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp-ddns", m); ctx.stack_.push_back(m); ctx.enter(ctx.DHCP_DDNS); } -#line 2966 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2972 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 526: -#line 1833 "dhcp4_parser.yy" // lalr1.cc:859 + case 527: +#line 1835 "dhcp4_parser.yy" // lalr1.cc:859 { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 2977 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2983 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 527: -#line 1840 "dhcp4_parser.yy" // lalr1.cc:859 + case 528: +#line 1842 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2987 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2993 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 528: -#line 1844 "dhcp4_parser.yy" // lalr1.cc:859 + case 529: +#line 1846 "dhcp4_parser.yy" // lalr1.cc:859 { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2997 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3003 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 550: -#line 1875 "dhcp4_parser.yy" // lalr1.cc:859 + case 551: +#line 1877 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); } -#line 3006 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3012 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 551: -#line 1880 "dhcp4_parser.yy" // lalr1.cc:859 + case 552: +#line 1882 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 3014 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3020 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 552: -#line 1882 "dhcp4_parser.yy" // lalr1.cc:859 + case 553: +#line 1884 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("qualifying-suffix", s); ctx.leave(); } -#line 3024 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3030 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 553: -#line 1888 "dhcp4_parser.yy" // lalr1.cc:859 + case 554: +#line 1890 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 3032 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3038 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 554: -#line 1890 "dhcp4_parser.yy" // lalr1.cc:859 + case 555: +#line 1892 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-ip", s); ctx.leave(); } -#line 3042 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3048 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 555: -#line 1896 "dhcp4_parser.yy" // lalr1.cc:859 + case 556: +#line 1898 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); } -#line 3051 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3057 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 556: -#line 1901 "dhcp4_parser.yy" // lalr1.cc:859 + case 557: +#line 1903 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 3059 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3065 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 557: -#line 1903 "dhcp4_parser.yy" // lalr1.cc:859 + case 558: +#line 1905 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-ip", s); ctx.leave(); } -#line 3069 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3075 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 558: -#line 1909 "dhcp4_parser.yy" // lalr1.cc:859 + case 559: +#line 1911 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); } -#line 3078 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3084 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 559: -#line 1914 "dhcp4_parser.yy" // lalr1.cc:859 + case 560: +#line 1916 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-queue-size", i); } -#line 3087 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3093 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 560: -#line 1919 "dhcp4_parser.yy" // lalr1.cc:859 + case 561: +#line 1921 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NCR_PROTOCOL); } -#line 3095 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3101 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 561: -#line 1921 "dhcp4_parser.yy" // lalr1.cc:859 + case 562: +#line 1923 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3104 "dhcp4_parser.cc" // lalr1.cc:859 - break; - - case 562: -#line 1927 "dhcp4_parser.yy" // lalr1.cc:859 - { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } #line 3110 "dhcp4_parser.cc" // lalr1.cc:859 break; case 563: -#line 1928 "dhcp4_parser.yy" // lalr1.cc:859 - { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } +#line 1929 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } #line 3116 "dhcp4_parser.cc" // lalr1.cc:859 break; case 564: -#line 1931 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1930 "dhcp4_parser.yy" // lalr1.cc:859 + { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } +#line 3122 "dhcp4_parser.cc" // lalr1.cc:859 + break; + + case 565: +#line 1933 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NCR_FORMAT); } -#line 3124 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3130 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 565: -#line 1933 "dhcp4_parser.yy" // lalr1.cc:859 + case 566: +#line 1935 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 3134 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3140 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 566: -#line 1939 "dhcp4_parser.yy" // lalr1.cc:859 + case 567: +#line 1941 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-include-fqdn", b); } -#line 3143 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3149 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 567: -#line 1944 "dhcp4_parser.yy" // lalr1.cc:859 + case 568: +#line 1946 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 3152 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3158 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 568: -#line 1949 "dhcp4_parser.yy" // lalr1.cc:859 + case 569: +#line 1951 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 3161 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3167 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 569: -#line 1954 "dhcp4_parser.yy" // lalr1.cc:859 + case 570: +#line 1956 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 3169 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3175 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 570: -#line 1956 "dhcp4_parser.yy" // lalr1.cc:859 + case 571: +#line 1958 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3178 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3184 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 571: -#line 1962 "dhcp4_parser.yy" // lalr1.cc:859 + case 572: +#line 1964 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } -#line 3186 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3192 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 572: -#line 1965 "dhcp4_parser.yy" // lalr1.cc:859 + case 573: +#line 1967 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } -#line 3194 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3200 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 573: -#line 1968 "dhcp4_parser.yy" // lalr1.cc:859 + case 574: +#line 1970 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } -#line 3202 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3208 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 574: -#line 1971 "dhcp4_parser.yy" // lalr1.cc:859 + case 575: +#line 1973 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } -#line 3210 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3216 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 575: -#line 1974 "dhcp4_parser.yy" // lalr1.cc:859 + case 576: +#line 1976 "dhcp4_parser.yy" // lalr1.cc:859 { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); } -#line 3219 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3225 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 576: -#line 1980 "dhcp4_parser.yy" // lalr1.cc:859 + case 577: +#line 1982 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 3227 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3233 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 577: -#line 1982 "dhcp4_parser.yy" // lalr1.cc:859 + case 578: +#line 1984 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("generated-prefix", s); ctx.leave(); } -#line 3237 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3243 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 578: -#line 1988 "dhcp4_parser.yy" // lalr1.cc:859 + case 579: +#line 1990 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 3245 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3251 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 579: -#line 1990 "dhcp4_parser.yy" // lalr1.cc:859 + case 580: +#line 1992 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 3255 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3261 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 580: -#line 1996 "dhcp4_parser.yy" // lalr1.cc:859 + case 581: +#line 1998 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 3263 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3269 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 581: -#line 1998 "dhcp4_parser.yy" // lalr1.cc:859 + case 582: +#line 2000 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 3273 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3279 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 582: -#line 2007 "dhcp4_parser.yy" // lalr1.cc:859 + case 583: +#line 2009 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 3281 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3287 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 583: -#line 2009 "dhcp4_parser.yy" // lalr1.cc:859 + case 584: +#line 2011 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3290 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3296 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 584: -#line 2014 "dhcp4_parser.yy" // lalr1.cc:859 + case 585: +#line 2016 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 3298 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3304 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 585: -#line 2016 "dhcp4_parser.yy" // lalr1.cc:859 + case 586: +#line 2018 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3307 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3313 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 586: -#line 2021 "dhcp4_parser.yy" // lalr1.cc:859 + case 587: +#line 2023 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 3315 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3321 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 587: -#line 2023 "dhcp4_parser.yy" // lalr1.cc:859 + case 588: +#line 2025 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 3324 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3330 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 588: -#line 2033 "dhcp4_parser.yy" // lalr1.cc:859 + case 589: +#line 2035 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("Logging", m); ctx.stack_.push_back(m); ctx.enter(ctx.LOGGING); } -#line 3335 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3341 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 589: -#line 2038 "dhcp4_parser.yy" // lalr1.cc:859 + case 590: +#line 2040 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3344 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3350 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 590: -#line 2043 "dhcp4_parser.yy" // lalr1.cc:859 + case 591: +#line 2045 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the Logging map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3354 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3360 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 591: -#line 2047 "dhcp4_parser.yy" // lalr1.cc:859 + case 592: +#line 2049 "dhcp4_parser.yy" // lalr1.cc:859 { // parsing completed } -#line 3362 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3368 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 595: -#line 2063 "dhcp4_parser.yy" // lalr1.cc:859 + case 596: +#line 2065 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("loggers", l); ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 3373 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3379 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 596: -#line 2068 "dhcp4_parser.yy" // lalr1.cc:859 + case 597: +#line 2070 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3382 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3388 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 599: -#line 2080 "dhcp4_parser.yy" // lalr1.cc:859 + case 600: +#line 2082 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 3392 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3398 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 600: -#line 2084 "dhcp4_parser.yy" // lalr1.cc:859 + case 601: +#line 2086 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } -#line 3400 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3406 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 610: -#line 2101 "dhcp4_parser.yy" // lalr1.cc:859 + case 611: +#line 2103 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 3409 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3415 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 611: -#line 2106 "dhcp4_parser.yy" // lalr1.cc:859 + case 612: +#line 2108 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 3417 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3423 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 612: -#line 2108 "dhcp4_parser.yy" // lalr1.cc:859 + case 613: +#line 2110 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 3427 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3433 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 613: -#line 2114 "dhcp4_parser.yy" // lalr1.cc:859 + case 614: +#line 2116 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output_options", l); ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 3438 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3444 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 614: -#line 2119 "dhcp4_parser.yy" // lalr1.cc:859 + case 615: +#line 2121 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 3447 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3453 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 617: -#line 2128 "dhcp4_parser.yy" // lalr1.cc:859 + case 618: +#line 2130 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3457 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3463 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 618: -#line 2132 "dhcp4_parser.yy" // lalr1.cc:859 + case 619: +#line 2134 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } -#line 3465 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3471 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 625: -#line 2146 "dhcp4_parser.yy" // lalr1.cc:859 + case 626: +#line 2148 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 3473 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3479 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 626: -#line 2148 "dhcp4_parser.yy" // lalr1.cc:859 + case 627: +#line 2150 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 3483 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3489 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 627: -#line 2154 "dhcp4_parser.yy" // lalr1.cc:859 + case 628: +#line 2156 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 3492 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3498 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 628: -#line 2159 "dhcp4_parser.yy" // lalr1.cc:859 + case 629: +#line 2161 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 3501 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3507 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 629: -#line 2164 "dhcp4_parser.yy" // lalr1.cc:859 + case 630: +#line 2166 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 3510 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3516 "dhcp4_parser.cc" // lalr1.cc:859 break; -#line 3514 "dhcp4_parser.cc" // lalr1.cc:859 +#line 3520 "dhcp4_parser.cc" // lalr1.cc:859 default: break; } @@ -3772,107 +3778,108 @@ namespace isc { namespace dhcp { const short int Dhcp4Parser::yypact_[] = { - 275, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, 53, 27, 61, 82, 140, 149, - 153, 168, 174, 178, 186, 189, 190, 192, -777, -777, + 274, -777, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, 37, 27, 71, 102, 152, 156, + 179, 188, 189, 205, 220, 221, 222, 230, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, 27, -46, 25, 85, 48, 177, - 133, 58, 87, 56, 151, -63, 469, 70, -777, 202, - 207, 218, 223, 234, -777, -777, -777, -777, -777, 241, - -777, 46, -777, -777, -777, -777, -777, -777, -777, -777, - 253, 256, -777, -777, -777, -777, -777, -777, 257, 266, - 267, 274, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, 278, -777, -777, -777, 77, -777, -777, + -777, -777, -777, -777, 27, -113, 14, 68, 70, 183, + 39, 427, 22, 151, 84, -63, 457, -21, -777, 168, + 264, 272, 269, 279, -777, -777, -777, -777, -777, 287, + -777, 38, -777, -777, -777, -777, -777, -777, -777, -777, + 304, 308, -777, -777, -777, -777, -777, -777, 311, 312, + 319, 320, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, 321, -777, -777, -777, 61, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - 279, -777, 98, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, -777, -777, -777, 295, 318, -777, - -777, -777, -777, -777, -777, -777, -777, -777, 124, -777, + 322, -777, 147, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, 323, 324, -777, + -777, -777, -777, -777, -777, -777, -777, -777, 167, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, -777, 138, -777, -777, -777, -777, + -777, -777, -777, -777, -777, 185, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, 251, 298, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, -777, -777, 312, -777, -777, 321, - -777, -777, -777, 322, -777, -777, 320, 327, -777, -777, + -777, -777, 284, 307, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, 328, -777, -777, 326, + -777, -777, -777, 334, -777, -777, 331, 337, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, 329, 330, -777, -777, -777, -777, 323, 333, -777, + -777, 338, 339, -777, -777, -777, -777, 333, 345, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, 170, -777, -777, -777, 339, -777, -777, 341, -777, - 344, 345, -777, -777, 346, 347, 348, -777, -777, -777, - -777, -777, -777, -777, 217, -777, -777, -777, -777, -777, + -777, 191, -777, -777, -777, 346, -777, -777, 347, -777, + 348, 349, -777, -777, 355, 356, 359, -777, -777, -777, + -777, -777, -777, -777, 194, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, 227, -777, -777, -777, 27, 27, -777, - 193, 349, 355, 356, 359, 360, -777, 25, -777, 362, - 363, 205, 206, 370, 372, 375, 376, 377, 383, 231, - 233, 235, 236, 385, 396, 398, 401, 407, 412, 415, - 416, 417, 432, 433, 280, 440, 441, 85, -777, 442, - 443, 446, 291, 48, -777, 447, 448, 449, 450, 452, - 453, 454, 301, 296, 455, 461, 462, 463, 177, -777, - 465, 133, -777, 466, 467, 468, 471, 472, 474, 475, - 476, -777, 58, -777, 477, 478, 311, 480, 482, 483, - 324, -777, 56, 485, 328, 332, -777, 151, 487, 489, - -22, -777, 334, 490, 493, 337, 496, 340, 343, 497, - 499, 342, 350, 353, 504, 505, 506, 507, 469, -777, - 508, 70, -777, -777, -777, 509, 511, 512, 27, 27, - 27, -777, 513, 514, -777, -777, 361, 364, 365, 516, - 517, 524, -777, -777, -777, -777, 525, 526, 527, 528, - 529, 373, 532, 533, 534, 535, 536, -777, 537, 538, - -777, 541, 73, 108, -777, -777, 386, 387, 388, 546, - 392, 393, 411, -777, -777, -41, 541, 413, 566, -777, - 414, -777, 541, 418, 419, 420, 436, 437, 438, 439, - -777, 444, 445, -777, 451, 456, 457, -777, -777, 458, - -777, -777, -777, 459, 27, -777, -777, 460, 464, -777, - 470, -777, -777, 31, 473, -777, -777, -777, -60, 479, - 481, 484, -777, 571, -777, 27, 85, 70, -777, -777, - -777, 48, 556, -777, -777, -777, 522, 522, 594, 600, - 601, 602, 603, -777, -777, -777, 2, 604, 606, 607, - 59, -21, 469, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, 608, -777, -777, -777, -777, -777, - -777, -777, -777, -777, 36, -777, -777, -777, -777, -777, + -777, -777, -777, 195, -777, -777, -777, 27, 27, -777, + 187, 360, 362, 363, 365, 366, -777, 14, -777, 370, + 372, 212, 214, 376, 377, 383, 385, 389, 391, 234, + 235, 237, 239, 401, 407, 408, 415, 417, 432, 433, + 434, 439, 441, 442, 285, 443, 450, 68, -777, 451, + 452, 453, 293, 70, -777, 455, 456, 460, 462, 463, + 464, 466, 298, 309, 467, 468, 469, 471, 183, -777, + 473, 39, -777, 474, 476, 477, 478, 480, 481, 484, + 485, -777, 427, -777, 487, 488, 330, 490, 492, 493, + 336, -777, 151, 494, 340, 341, -777, 84, 498, 499, + -41, -777, 343, 505, 506, 350, 507, 351, 354, 520, + 522, 367, 368, 369, 527, 532, 533, 534, 457, -777, + 535, -21, -777, -777, -777, 536, 537, 538, 27, 27, + 27, -777, 539, 540, -777, -777, 379, 380, 381, 541, + 542, 545, -777, -777, -777, -777, 546, 548, 549, 552, + 551, 397, 555, 556, 557, 558, 559, -777, 560, 561, + -777, 564, 109, 121, -777, -777, 402, 403, 409, 565, + 424, 425, 426, -777, -777, -10, 564, 428, 584, -777, + 435, -777, 564, 436, 437, 438, 440, 444, 445, 446, + -777, 447, 448, -777, 449, 454, 458, -777, -777, 459, + -777, -777, -777, 461, 27, -777, -777, 465, 470, -777, + 472, -777, -777, 25, 475, -777, -777, -777, -80, 479, + 482, 483, -777, 589, -777, 27, 68, -21, -777, -777, + -777, 70, 574, -777, -777, -777, 258, 258, 594, 596, + 597, 605, 606, -777, -777, -777, 73, 607, 608, 610, + -1, 60, 457, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, 611, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, 86, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, -777, -777, -777, -777, 609, -777, - 240, 255, 269, -777, 276, -777, -777, -777, -777, -777, - -777, 574, 618, 619, 620, 622, -777, -777, 623, 624, - 625, 628, 629, -777, 277, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777, -777, 615, + -777, 197, 207, 213, -777, 217, -777, -777, -777, -777, + -777, -777, 592, 620, 621, 622, 624, -777, -777, 625, + 626, 627, 629, 631, -777, 223, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, 287, -777, 630, 631, -777, -777, 632, - 634, -777, -777, 633, 638, -777, -777, 637, 641, -777, - -777, 640, 644, -777, -777, -777, -777, -777, -777, 63, - -777, -777, -777, -777, -777, -777, -777, 96, -777, -777, - 642, 646, -777, -777, 645, 647, -777, 648, 649, 650, - 651, 652, 653, 288, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, -777, -777, 289, -777, -777, -777, - 290, 498, -777, 654, 655, -777, -777, -777, -777, 627, - -777, 97, -777, -777, -777, -777, 657, 556, -777, 658, - 659, 660, 661, 510, 502, 515, 503, 518, 664, 665, - 519, 520, 523, 530, 531, 522, -777, -777, 522, -777, - 594, 177, -777, 600, 56, -777, 601, 151, -777, 602, - 389, -777, 603, 2, -777, 216, 604, -777, 58, -777, - 606, -63, -777, 607, 539, 540, 542, 543, 544, 545, - 59, -777, 666, 667, -21, -777, -777, -777, 668, 670, - 133, -777, 608, 671, -777, 166, 609, -777, 547, -777, - 308, 548, 549, 550, -777, -777, -777, -777, -777, 551, - 552, -777, -777, -777, -777, -777, -777, 297, -777, 305, - -777, 676, -777, 678, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, -777, -777, 306, -777, -777, -777, - -777, -777, -777, -777, -777, -777, -777, -777, 672, -777, - -777, -777, -777, -777, -777, -777, -777, -777, 679, 675, - -777, -777, -777, -777, -777, 680, -777, 307, -777, -777, - -777, -777, -777, -777, -777, -777, 553, 554, -777, -777, - 555, 313, -777, 541, -777, 685, -777, -777, -777, -777, - -777, 315, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, 233, -777, 630, 634, -777, -777, + 632, 636, -777, -777, 637, 639, -777, -777, 640, 644, + -777, -777, 642, 646, -777, -777, -777, -777, -777, -777, + 81, -777, -777, -777, -777, -777, -777, -777, 110, -777, + -777, 645, 647, -777, -777, 648, 649, -777, 651, 652, + 653, 654, 655, 656, 240, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, 241, -777, -777, + -777, 260, 491, -777, 657, 658, -777, -777, -777, -777, + 659, -777, 244, -777, -777, -777, -777, 660, 574, -777, + 661, 662, 664, 665, 508, 497, 509, 510, 511, 666, + 669, 513, 514, 515, 516, 517, 258, -777, -777, 258, + -777, 594, 183, -777, 596, 151, -777, 597, 84, -777, + 605, 390, -777, 606, 73, -777, 42, 607, -777, 427, + -777, 608, -63, -777, 610, 518, 521, 523, 524, 525, + 526, -1, -777, 676, 679, 60, -777, -777, -777, 684, + 682, 39, -777, 611, 687, -777, 192, 615, -777, 530, + -777, 288, 531, 543, 544, -777, -777, -777, -777, -777, + 547, 550, -777, -777, -777, -777, -777, -777, 263, -777, + 267, -777, 686, -777, 688, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, 271, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777, -777, 691, + -777, -777, -777, -777, -777, -777, -777, -777, -777, 689, + 695, -777, -777, -777, -777, -777, 692, -777, 275, -777, + -777, -777, -777, -777, -777, -777, -777, 553, 554, -777, + -777, 562, 281, -777, 564, -777, 697, -777, -777, -777, + -777, -777, 282, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, 389, -777, 686, 557, -777, 216, -777, -777, - -777, -777, -777, -777, -777, 687, 558, 689, 166, -777, - -777, 561, -777, -777, 674, -777, 562, -777, -777, 690, - -777, -777, 176, -777, 125, 690, -777, -777, 692, 694, - 695, 316, -777, -777, -777, -777, -777, -777, 696, 560, - 564, 565, 125, -777, 568, -777, -777, -777, -777, -777 + -777, -777, -777, 390, -777, 698, 563, -777, 42, -777, + -777, -777, -777, -777, -777, -777, 699, 567, 700, 192, + -777, -777, 569, -777, -777, 635, -777, 571, -777, -777, + 701, -777, -777, 248, -777, -9, 701, -777, -777, 703, + 706, 707, 306, -777, -777, -777, -777, -777, -777, 709, + 583, 576, 587, -9, -777, 572, -777, -777, -777, -777, + -777 }; const unsigned short int @@ -3882,144 +3889,145 @@ namespace isc { namespace dhcp { 20, 22, 24, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 43, 36, 32, 31, 28, 29, 30, 35, 3, 33, 34, - 56, 5, 68, 7, 118, 9, 255, 11, 412, 13, - 437, 15, 337, 17, 345, 19, 382, 21, 220, 23, - 527, 25, 590, 27, 45, 39, 0, 0, 0, 0, - 0, 439, 0, 347, 384, 0, 0, 0, 47, 0, - 46, 0, 0, 40, 66, 588, 582, 584, 586, 0, + 56, 5, 68, 7, 118, 9, 255, 11, 413, 13, + 438, 15, 338, 17, 346, 19, 383, 21, 220, 23, + 528, 25, 591, 27, 45, 39, 0, 0, 0, 0, + 0, 440, 0, 348, 385, 0, 0, 0, 47, 0, + 46, 0, 0, 40, 66, 589, 583, 585, 587, 0, 65, 0, 58, 60, 62, 63, 64, 61, 107, 133, - 0, 0, 458, 460, 462, 131, 140, 142, 0, 0, - 0, 0, 247, 335, 374, 307, 425, 427, 198, 486, - 429, 212, 231, 0, 512, 525, 100, 0, 70, 72, + 0, 0, 459, 461, 463, 131, 140, 142, 0, 0, + 0, 0, 247, 336, 375, 308, 426, 428, 198, 487, + 430, 212, 231, 0, 513, 526, 100, 0, 70, 72, 73, 74, 75, 91, 92, 78, 79, 98, 80, 81, 82, 86, 87, 76, 77, 84, 85, 96, 97, 99, 93, 94, 95, 83, 88, 89, 90, 120, 122, 126, 0, 117, 0, 109, 111, 112, 113, 114, 115, 116, - 286, 288, 290, 404, 284, 292, 294, 0, 0, 300, - 298, 296, 482, 283, 259, 260, 261, 274, 0, 257, + 286, 288, 290, 405, 284, 292, 294, 0, 0, 300, + 298, 296, 483, 283, 259, 260, 261, 274, 0, 257, 264, 278, 279, 280, 265, 266, 269, 270, 272, 267, 268, 262, 263, 281, 282, 271, 275, 276, 277, 273, - 423, 422, 418, 419, 417, 0, 414, 416, 420, 421, - 480, 468, 470, 474, 472, 478, 476, 464, 457, 451, - 455, 456, 0, 440, 441, 452, 453, 454, 448, 443, - 449, 445, 446, 447, 450, 444, 0, 364, 183, 0, - 368, 366, 371, 0, 360, 361, 0, 348, 349, 351, - 363, 352, 353, 354, 370, 355, 356, 357, 358, 359, - 398, 0, 0, 396, 397, 400, 401, 0, 385, 386, - 388, 389, 390, 391, 392, 393, 394, 395, 227, 229, - 224, 0, 222, 225, 226, 0, 551, 553, 0, 556, - 0, 0, 560, 564, 0, 0, 0, 569, 576, 578, - 580, 549, 547, 548, 0, 529, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 595, 0, 592, 594, 44, 0, 0, 37, + 424, 423, 419, 420, 418, 0, 415, 417, 421, 422, + 481, 469, 471, 475, 473, 479, 477, 465, 458, 452, + 456, 457, 0, 441, 442, 453, 454, 455, 449, 444, + 450, 446, 447, 448, 451, 445, 0, 365, 183, 0, + 369, 367, 372, 0, 361, 362, 0, 349, 350, 352, + 364, 353, 354, 355, 371, 356, 357, 358, 359, 360, + 399, 0, 0, 397, 398, 401, 402, 0, 386, 387, + 389, 390, 391, 392, 393, 394, 395, 396, 227, 229, + 224, 0, 222, 225, 226, 0, 552, 554, 0, 557, + 0, 0, 561, 565, 0, 0, 0, 570, 577, 579, + 581, 550, 548, 549, 0, 530, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 596, 0, 593, 595, 44, 0, 0, 37, 0, 0, 0, 0, 0, 0, 55, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, - 0, 0, 413, 0, 0, 0, 0, 0, 0, 0, - 0, 438, 0, 338, 0, 0, 0, 0, 0, 0, - 0, 346, 0, 0, 0, 0, 383, 0, 0, 0, + 0, 0, 414, 0, 0, 0, 0, 0, 0, 0, + 0, 439, 0, 339, 0, 0, 0, 0, 0, 0, + 0, 347, 0, 0, 0, 0, 384, 0, 0, 0, 0, 221, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 528, - 0, 0, 591, 48, 41, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 529, + 0, 0, 592, 48, 41, 0, 0, 0, 0, 0, 0, 59, 0, 0, 105, 106, 0, 0, 0, 0, 0, 0, 101, 102, 103, 104, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 511, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 512, 0, 0, 71, 0, 0, 0, 130, 110, 0, 0, 0, 0, - 0, 0, 0, 305, 306, 0, 0, 0, 0, 258, - 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, - 442, 0, 0, 362, 0, 0, 0, 373, 350, 0, - 402, 403, 387, 0, 0, 223, 550, 0, 0, 555, - 0, 558, 559, 0, 0, 566, 567, 568, 0, 0, - 0, 0, 530, 0, 593, 0, 0, 0, 583, 585, - 587, 0, 0, 459, 461, 463, 0, 0, 144, 249, - 339, 376, 309, 38, 426, 428, 0, 0, 431, 214, + 0, 0, 0, 306, 307, 0, 0, 0, 0, 258, + 0, 416, 0, 0, 0, 0, 0, 0, 0, 0, + 443, 0, 0, 363, 0, 0, 0, 374, 351, 0, + 403, 404, 388, 0, 0, 223, 551, 0, 0, 556, + 0, 559, 560, 0, 0, 567, 568, 569, 0, 0, + 0, 0, 531, 0, 594, 0, 0, 0, 584, 586, + 588, 0, 0, 460, 462, 464, 0, 0, 144, 249, + 340, 377, 310, 38, 427, 429, 0, 0, 432, 214, 0, 0, 0, 49, 121, 124, 125, 123, 128, 129, - 127, 287, 289, 291, 406, 285, 293, 295, 302, 303, - 304, 301, 299, 297, 0, 424, 481, 469, 471, 475, - 473, 479, 477, 465, 365, 184, 369, 367, 372, 399, - 228, 230, 552, 554, 557, 562, 563, 561, 565, 571, - 572, 573, 574, 575, 570, 577, 579, 581, 0, 42, - 0, 0, 0, 138, 0, 135, 137, 170, 176, 178, - 180, 0, 0, 0, 0, 0, 192, 194, 0, 0, - 0, 0, 0, 169, 0, 150, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 165, 166, 167, 162, - 168, 163, 164, 0, 148, 0, 145, 146, 253, 0, - 250, 251, 343, 0, 340, 341, 380, 0, 377, 378, - 313, 0, 310, 311, 207, 208, 209, 210, 211, 0, - 200, 202, 203, 204, 205, 206, 490, 0, 488, 435, - 0, 432, 433, 218, 0, 215, 216, 0, 0, 0, - 0, 0, 0, 0, 233, 235, 236, 237, 238, 239, - 240, 521, 523, 520, 518, 519, 0, 514, 516, 517, - 0, 51, 410, 0, 407, 408, 466, 484, 485, 0, - 599, 0, 597, 67, 589, 108, 0, 0, 134, 0, + 127, 287, 289, 291, 407, 285, 293, 295, 302, 303, + 304, 305, 301, 299, 297, 0, 425, 482, 470, 472, + 476, 474, 480, 478, 466, 366, 184, 370, 368, 373, + 400, 228, 230, 553, 555, 558, 563, 564, 562, 566, + 572, 573, 574, 575, 576, 571, 578, 580, 582, 0, + 42, 0, 0, 0, 138, 0, 135, 137, 170, 176, + 178, 180, 0, 0, 0, 0, 0, 192, 194, 0, + 0, 0, 0, 0, 169, 0, 150, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 165, 166, 167, + 162, 168, 163, 164, 0, 148, 0, 145, 146, 253, + 0, 250, 251, 344, 0, 341, 342, 381, 0, 378, + 379, 314, 0, 311, 312, 207, 208, 209, 210, 211, + 0, 200, 202, 203, 204, 205, 206, 491, 0, 489, + 436, 0, 433, 434, 218, 0, 215, 216, 0, 0, + 0, 0, 0, 0, 0, 233, 235, 236, 237, 238, + 239, 240, 522, 524, 521, 519, 520, 0, 515, 517, + 518, 0, 51, 411, 0, 408, 409, 467, 485, 486, + 0, 600, 0, 598, 67, 590, 108, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 132, 141, 0, 143, - 0, 0, 248, 0, 347, 336, 0, 384, 375, 0, - 0, 308, 0, 0, 199, 492, 0, 487, 439, 430, - 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, - 0, 232, 0, 0, 0, 513, 526, 53, 0, 52, - 0, 405, 0, 0, 483, 0, 0, 596, 0, 136, - 0, 0, 0, 0, 182, 185, 186, 187, 188, 0, - 0, 196, 197, 189, 190, 191, 151, 0, 147, 0, - 252, 0, 342, 0, 379, 334, 331, 320, 321, 323, - 317, 318, 319, 329, 330, 328, 0, 315, 322, 332, - 333, 324, 325, 326, 327, 312, 201, 508, 0, 506, - 507, 499, 500, 504, 505, 501, 502, 503, 0, 493, - 494, 496, 497, 498, 489, 0, 434, 0, 217, 241, - 242, 243, 244, 245, 246, 234, 0, 0, 515, 50, - 0, 0, 409, 0, 613, 0, 611, 609, 603, 607, - 608, 0, 601, 605, 606, 604, 598, 139, 172, 173, - 174, 175, 171, 177, 179, 181, 193, 195, 149, 254, - 344, 381, 0, 314, 0, 0, 491, 0, 436, 219, - 522, 524, 54, 411, 467, 0, 0, 0, 0, 600, - 316, 0, 510, 495, 0, 610, 0, 602, 509, 0, - 612, 617, 0, 615, 0, 0, 614, 625, 0, 0, - 0, 0, 619, 621, 622, 623, 624, 616, 0, 0, - 0, 0, 0, 618, 0, 627, 628, 629, 620, 626 + 0, 0, 0, 0, 0, 0, 0, 132, 141, 0, + 143, 0, 0, 248, 0, 348, 337, 0, 385, 376, + 0, 0, 309, 0, 0, 199, 493, 0, 488, 440, + 431, 0, 0, 213, 0, 0, 0, 0, 0, 0, + 0, 0, 232, 0, 0, 0, 514, 527, 53, 0, + 52, 0, 406, 0, 0, 484, 0, 0, 597, 0, + 136, 0, 0, 0, 0, 182, 185, 186, 187, 188, + 0, 0, 196, 197, 189, 190, 191, 151, 0, 147, + 0, 252, 0, 343, 0, 380, 335, 332, 321, 322, + 324, 318, 319, 320, 330, 331, 329, 0, 316, 323, + 333, 334, 325, 326, 327, 328, 313, 201, 509, 0, + 507, 508, 500, 501, 505, 506, 502, 503, 504, 0, + 494, 495, 497, 498, 499, 490, 0, 435, 0, 217, + 241, 242, 243, 244, 245, 246, 234, 0, 0, 516, + 50, 0, 0, 410, 0, 614, 0, 612, 610, 604, + 608, 609, 0, 602, 606, 607, 605, 599, 139, 172, + 173, 174, 175, 171, 177, 179, 181, 193, 195, 149, + 254, 345, 382, 0, 315, 0, 0, 492, 0, 437, + 219, 523, 525, 54, 412, 468, 0, 0, 0, 0, + 601, 317, 0, 511, 496, 0, 611, 0, 603, 510, + 0, 613, 618, 0, 616, 0, 0, 615, 626, 0, + 0, 0, 0, 620, 622, 623, 624, 625, 617, 0, + 0, 0, 0, 0, 619, 0, 628, 629, 630, 621, + 627 }; const short int Dhcp4Parser::yypgoto_[] = { -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, -777, -51, -777, 214, -777, -777, + -777, -777, -777, -777, -777, -51, -777, 219, -777, -777, -777, -777, -777, -777, -777, -777, -485, -777, -777, -777, - -66, -777, -777, -777, 371, -777, -777, -777, -777, 147, - 382, -43, -14, -7, -777, -777, 12, -777, -777, 156, - 336, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, -777, -777, -777, -37, -777, -777, - -777, -777, -777, -777, -777, -777, -58, -777, -544, -52, + -66, -777, -777, -777, 371, -777, -777, -777, -777, 158, + 342, -43, -14, -7, -777, -777, 12, -777, -777, 159, + 344, -777, -777, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -47, -777, -777, + -777, -777, -777, -777, -777, -777, -74, -777, -544, -33, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -44, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, -777, -777, -777, -777, -65, -777, - -777, -777, -777, -777, -777, -777, -777, -777, -53, -777, - -777, -777, -59, 317, -777, -777, -777, -777, -777, -777, - -777, -71, -777, -777, -777, -777, -777, -777, -776, -777, - -777, -777, -31, -777, -777, -777, -28, 369, -777, -777, - -777, -777, -777, -777, -777, -777, -775, -777, -777, -777, - -64, -777, -11, -777, -772, -777, -777, -777, -777, -777, - -777, -777, -777, -30, -777, -777, -179, -61, -777, -777, - -777, -777, -777, -16, -777, -777, -777, -19, -777, 366, + -777, -777, -777, -777, -777, -777, -777, -777, -82, -777, + -777, -777, -777, -777, -777, -777, -777, -777, -91, -777, + -777, -777, -87, 361, -777, -777, -777, -777, -777, -777, + -777, -60, -777, -777, -777, -777, -777, -777, -776, -777, + -777, -777, -34, -777, -777, -777, -29, 375, -777, -777, + -777, -777, -777, -777, -777, -777, -773, -777, -777, -777, + -64, -777, -11, -777, -770, -777, -777, -777, -777, -777, + -777, -777, -777, -39, -777, -777, -185, -61, -777, -777, + -777, -777, -777, -23, -777, -777, -777, -19, -777, 386, -777, -62, -777, -777, -777, -777, -777, -56, -777, -777, - -777, -777, -777, -13, -777, -777, -777, -9, -777, -777, - -777, 3, -777, 374, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, -777, -49, -777, -777, -777, -23, - 421, -777, -777, -54, -777, -26, -777, -36, -777, -777, - -777, -2, -777, -777, -777, 7, -777, 404, -6, -777, - 5, -777, 6, -777, 219, -777, -777, -777, -777, -777, + -777, -777, -777, -13, -777, -777, -777, -16, -777, -777, + -777, -17, -777, 374, -777, -777, -777, -777, -777, -777, + -777, -777, -777, -777, -777, -31, -777, -777, -777, -42, + 416, -777, -777, -54, -777, -26, -777, -36, -777, -777, + -777, -2, -777, -777, -777, 7, -777, 410, -6, -777, + 5, -777, 6, -777, 216, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -769, -777, -777, -777, -777, -777, 14, -777, + -777, -777, -766, -777, -777, -777, -777, -777, 16, -777, -777, -777, -139, -777, -777, -777, -777, -777, -777, -777, - -777, -3, -777, -777, -777, -777, -777, -777, -777, -777, + -777, 0, -777, -777, -777, -777, -777, -777, -777, -777, 242, 378, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, -777, - -777, -777, -777, -777, -777, -777, -777, -777, -777, 268, - 379, -777, -777, -777, -8, -777, -777, -141, -777, -777, - -777, -777, -777, -777, -156, -777, -777, -171, -777, -777, + -777, -777, -777, -777, -777, -777, -777, -777, -777, 270, + 382, -777, -777, -777, -8, -777, -777, -141, -777, -777, + -777, -777, -777, -777, -156, -777, -777, -172, -777, -777, -777, -777, -777 }; @@ -4028,41 +4036,41 @@ namespace isc { namespace dhcp { { -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 36, 37, 38, 65, 574, - 82, 83, 39, 64, 79, 80, 584, 751, 828, 829, - 663, 41, 66, 91, 92, 93, 341, 43, 67, 127, + 82, 83, 39, 64, 79, 80, 584, 752, 829, 830, + 664, 41, 66, 91, 92, 93, 341, 43, 67, 127, 128, 129, 130, 131, 132, 133, 134, 135, 349, 162, 163, 45, 68, 164, 379, 165, 380, 587, 166, 381, - 590, 167, 136, 356, 137, 350, 644, 645, 646, 766, - 138, 357, 139, 358, 685, 686, 687, 788, 664, 665, - 666, 769, 942, 667, 770, 668, 771, 669, 772, 670, - 671, 415, 672, 673, 674, 675, 676, 677, 678, 679, - 778, 680, 779, 681, 682, 140, 369, 709, 710, 711, - 712, 713, 714, 715, 141, 372, 724, 725, 726, 811, + 590, 167, 136, 356, 137, 350, 645, 646, 647, 767, + 138, 357, 139, 358, 686, 687, 688, 789, 665, 666, + 667, 770, 943, 668, 771, 669, 772, 670, 773, 671, + 672, 415, 673, 674, 675, 676, 677, 678, 679, 680, + 779, 681, 780, 682, 683, 140, 369, 710, 711, 712, + 713, 714, 715, 716, 141, 372, 725, 726, 727, 812, 59, 75, 291, 292, 293, 428, 294, 429, 142, 373, - 733, 734, 735, 736, 737, 738, 739, 740, 143, 363, - 689, 690, 691, 791, 47, 69, 188, 189, 190, 389, + 734, 735, 736, 737, 738, 739, 740, 741, 143, 363, + 690, 691, 692, 792, 47, 69, 188, 189, 190, 389, 191, 385, 192, 386, 193, 387, 194, 390, 195, 391, - 196, 396, 197, 395, 198, 394, 601, 199, 200, 144, - 366, 701, 702, 703, 800, 876, 877, 145, 364, 53, - 72, 693, 694, 695, 794, 55, 73, 256, 257, 258, + 196, 396, 197, 395, 198, 394, 602, 199, 200, 144, + 366, 702, 703, 704, 801, 877, 878, 145, 364, 53, + 72, 694, 695, 696, 795, 55, 73, 256, 257, 258, 259, 260, 261, 262, 414, 263, 418, 264, 417, 265, - 266, 419, 267, 146, 365, 697, 698, 699, 797, 57, + 266, 419, 267, 146, 365, 698, 699, 700, 798, 57, 74, 277, 278, 279, 280, 281, 423, 282, 283, 284, - 285, 202, 388, 753, 754, 755, 830, 49, 70, 215, - 216, 217, 400, 147, 367, 148, 368, 149, 371, 720, - 721, 722, 808, 51, 71, 232, 233, 234, 150, 353, - 151, 354, 152, 355, 238, 410, 758, 833, 239, 404, + 285, 202, 388, 754, 755, 756, 831, 49, 70, 215, + 216, 217, 400, 147, 367, 148, 368, 149, 371, 721, + 722, 723, 809, 51, 71, 232, 233, 234, 150, 353, + 151, 354, 152, 355, 238, 410, 759, 834, 239, 404, 240, 405, 241, 407, 242, 406, 243, 409, 244, 408, - 245, 403, 209, 397, 759, 153, 370, 717, 718, 805, - 898, 899, 900, 901, 902, 954, 903, 154, 155, 375, - 746, 747, 748, 822, 749, 823, 156, 376, 61, 76, + 245, 403, 209, 397, 760, 153, 370, 718, 719, 806, + 899, 900, 901, 902, 903, 955, 904, 154, 155, 375, + 747, 748, 749, 823, 750, 824, 156, 376, 61, 76, 314, 315, 316, 317, 433, 318, 434, 319, 320, 436, - 321, 322, 323, 439, 627, 324, 440, 325, 326, 327, - 328, 444, 634, 329, 445, 330, 446, 331, 447, 94, + 321, 322, 323, 439, 628, 324, 440, 325, 326, 327, + 328, 444, 635, 329, 445, 330, 446, 331, 447, 94, 343, 95, 344, 96, 345, 97, 342, 63, 77, 333, - 334, 335, 450, 761, 762, 835, 931, 932, 933, 934, - 967, 935, 965, 982, 983, 984, 991, 992, 993, 998, - 994, 995, 996 + 334, 335, 450, 762, 763, 836, 932, 933, 934, 935, + 968, 936, 966, 983, 984, 985, 992, 993, 994, 999, + 995, 996, 997 }; const unsigned short int @@ -4070,101 +4078,101 @@ namespace isc { namespace dhcp { { 90, 126, 161, 183, 211, 228, 212, 254, 273, 290, 311, 246, 275, 78, 168, 203, 218, 230, 276, 268, - 286, 602, 312, 683, 871, 872, 184, 606, 875, 255, - 274, 884, 29, 205, 30, 84, 31, 288, 289, 598, - 599, 600, 169, 204, 219, 231, 625, 269, 287, 347, - 313, 116, 117, 28, 348, 185, 201, 214, 229, 213, - 157, 158, 186, 206, 159, 235, 803, 160, 40, 804, - 629, 630, 631, 632, 207, 208, 236, 237, 288, 289, - 377, 187, 102, 103, 104, 378, 247, 585, 586, 42, - 741, 742, 704, 705, 706, 707, 98, 708, 89, 806, - 836, 383, 807, 837, 633, 99, 384, 100, 101, 102, - 103, 104, 105, 106, 107, 81, 248, 114, 249, 250, - 116, 117, 251, 252, 253, 588, 589, 398, 116, 117, - 116, 117, 399, 227, 756, 108, 109, 110, 111, 112, - 89, 401, 220, 113, 114, 113, 402, 44, 221, 222, - 223, 224, 225, 226, 115, 227, 46, 116, 117, 626, - 48, 85, 727, 728, 729, 730, 731, 732, 118, 119, - 86, 87, 88, 430, 120, 50, 871, 872, 431, 985, - 875, 52, 986, 884, 121, 54, 89, 122, 32, 33, - 34, 35, 114, 56, 123, 124, 58, 60, 125, 62, - 101, 102, 103, 104, 210, 116, 117, 332, 336, 89, - 337, 248, 270, 249, 250, 271, 272, 89, 180, 89, - 448, 181, 338, 116, 117, 449, 248, 108, 109, 110, - 451, 339, 170, 171, 172, 452, 114, 340, 116, 117, - 102, 103, 104, 377, 857, 346, 89, 173, 763, 116, - 117, 174, 175, 176, 177, 178, 179, 351, 451, 411, - 352, 359, 180, 764, 987, 181, 120, 988, 989, 990, - 360, 361, 383, 182, 113, 114, 248, 765, 362, 767, - 785, 90, 374, 382, 768, 786, 453, 454, 116, 117, - 785, 820, 824, 448, 89, 787, 821, 825, 826, 392, - 785, 412, 887, 888, 924, 948, 925, 926, 398, 952, - 430, 126, 89, 949, 953, 959, 401, 161, 968, 1002, - 413, 963, 393, 969, 1003, 416, 420, 89, 421, 168, - 422, 426, 183, 424, 425, 211, 427, 212, 89, 938, - 939, 940, 941, 432, 203, 435, 228, 218, 437, 438, - 441, 442, 443, 456, 455, 184, 254, 169, 230, 457, - 458, 273, 205, 459, 460, 275, 462, 463, 268, 464, - 465, 276, 204, 286, 466, 219, 467, 89, 255, 468, - 469, 470, 311, 274, 185, 201, 231, 471, 214, 476, - 213, 186, 206, 472, 312, 473, 269, 474, 475, 229, - 477, 287, 478, 207, 208, 479, 235, 558, 559, 560, - 187, 480, 101, 102, 103, 104, 481, 236, 237, 482, - 483, 484, 313, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 485, 486, 964, 108, - 109, 110, 487, 112, 488, 489, 491, 492, 114, 248, - 493, 496, 497, 498, 499, 494, 500, 501, 502, 505, - 504, 116, 117, 503, 175, 506, 507, 508, 179, 510, - 512, 513, 514, 523, 180, 515, 516, 181, 517, 518, - 519, 521, 522, 621, 524, 182, 525, 526, 527, 529, - 126, 533, 530, 534, 537, 161, 531, 538, 536, 539, - 540, 543, 541, 544, 639, 542, 545, 168, 548, 549, - 550, 551, 553, 555, 546, 743, 311, 547, 556, 557, - 561, 562, 563, 566, 567, 564, 565, 744, 312, 568, - 569, 570, 571, 572, 575, 169, 30, 576, 577, 578, - 579, 116, 117, 580, 581, 582, 583, 591, 592, 593, - 89, 594, 647, 595, 596, 745, 313, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, - 661, 662, 597, 604, 603, 605, 638, 643, 773, 607, - 608, 609, 248, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 610, 611, 612, - 613, 684, 628, 309, 310, 614, 615, 688, 692, 696, - 700, 716, 616, 719, 723, 752, 760, 617, 618, 619, - 620, 622, 774, 775, 776, 623, 777, 780, 781, 782, - 89, 624, 783, 784, 790, 834, 789, 793, 792, 795, - 635, 796, 636, 798, 799, 637, 801, 802, 809, 810, - 813, 812, 814, 815, 816, 817, 818, 819, 832, 827, - 831, 838, 840, 841, 842, 843, 845, 847, 849, 850, - 916, 917, 844, 920, 919, 923, 955, 846, 957, 979, - 848, 851, 852, 89, 950, 853, 951, 956, 958, 966, - 971, 974, 854, 976, 573, 855, 999, 981, 1000, 1001, - 1004, 909, 910, 640, 911, 912, 913, 914, 937, 943, - 944, 945, 946, 947, 960, 961, 962, 642, 461, 495, - 975, 972, 978, 980, 1005, 183, 1006, 1007, 254, 1009, - 839, 273, 858, 856, 865, 275, 873, 203, 886, 889, - 268, 276, 228, 286, 891, 290, 879, 535, 184, 915, - 255, 893, 907, 274, 230, 205, 870, 866, 743, 490, - 908, 890, 860, 859, 211, 204, 212, 509, 269, 927, - 744, 287, 885, 970, 880, 861, 218, 185, 201, 894, - 862, 929, 231, 922, 186, 206, 867, 878, 528, 874, - 864, 928, 892, 868, 881, 229, 207, 208, 745, 895, - 863, 532, 235, 187, 219, 882, 883, 921, 906, 930, - 896, 897, 869, 236, 237, 905, 520, 214, 973, 213, - 904, 918, 511, 757, 750, 641, 552, 977, 936, 997, - 554, 1008, 0, 0, 0, 0, 0, 0, 0, 0, + 286, 603, 312, 684, 84, 872, 184, 607, 873, 255, + 274, 876, 29, 205, 30, 885, 31, 28, 288, 289, + 626, 347, 169, 204, 219, 231, 348, 269, 287, 81, + 313, 630, 631, 632, 633, 185, 201, 214, 229, 213, + 288, 289, 186, 206, 377, 235, 102, 103, 104, 378, + 598, 599, 600, 601, 207, 208, 236, 237, 40, 98, + 113, 187, 157, 158, 804, 634, 159, 805, 99, 160, + 100, 101, 102, 103, 104, 105, 106, 107, 114, 89, + 113, 114, 248, 728, 729, 730, 731, 732, 733, 42, + 210, 116, 117, 807, 116, 117, 808, 332, 108, 109, + 110, 111, 112, 585, 586, 180, 113, 114, 181, 888, + 889, 988, 116, 117, 989, 990, 991, 115, 588, 589, + 116, 117, 116, 117, 248, 270, 249, 250, 271, 272, + 383, 85, 118, 119, 627, 384, 116, 117, 120, 44, + 86, 87, 88, 46, 705, 706, 707, 708, 121, 709, + 398, 122, 742, 743, 336, 399, 89, 872, 123, 124, + 873, 247, 125, 876, 227, 757, 48, 885, 401, 32, + 33, 34, 35, 402, 430, 50, 52, 448, 451, 431, + 377, 89, 449, 452, 89, 764, 101, 102, 103, 104, + 451, 248, 54, 249, 250, 765, 383, 251, 252, 253, + 768, 766, 89, 116, 117, 769, 786, 56, 58, 60, + 89, 787, 89, 108, 109, 110, 786, 62, 170, 171, + 172, 788, 114, 821, 825, 858, 89, 837, 822, 826, + 838, 986, 248, 173, 987, 116, 117, 174, 175, 176, + 177, 178, 179, 448, 116, 117, 786, 337, 827, 180, + 398, 949, 181, 120, 953, 950, 338, 339, 430, 954, + 182, 90, 340, 960, 401, 969, 453, 454, 648, 964, + 970, 346, 411, 649, 650, 651, 652, 653, 654, 655, + 656, 657, 658, 659, 660, 661, 662, 663, 351, 1003, + 412, 126, 352, 89, 1004, 359, 360, 161, 248, 939, + 940, 941, 942, 361, 362, 374, 382, 392, 393, 168, + 416, 925, 183, 926, 927, 211, 413, 212, 420, 421, + 422, 426, 424, 425, 203, 89, 228, 218, 427, 455, + 432, 435, 437, 438, 89, 184, 254, 169, 230, 441, + 442, 273, 205, 443, 456, 275, 457, 458, 268, 459, + 460, 276, 204, 286, 462, 219, 463, 464, 255, 465, + 466, 467, 311, 274, 185, 201, 231, 468, 214, 469, + 213, 186, 206, 470, 312, 471, 269, 472, 473, 229, + 474, 287, 475, 207, 208, 476, 235, 558, 559, 560, + 187, 477, 478, 101, 102, 103, 104, 236, 237, 479, + 89, 480, 313, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 481, 482, 483, 965, + 108, 109, 110, 484, 112, 485, 486, 488, 487, 114, + 248, 102, 103, 104, 489, 491, 492, 493, 494, 496, + 497, 503, 116, 117, 498, 175, 499, 500, 501, 179, + 502, 505, 506, 507, 504, 508, 180, 510, 512, 181, + 513, 514, 515, 622, 516, 517, 114, 182, 518, 519, + 126, 521, 522, 523, 524, 161, 525, 526, 529, 116, + 117, 527, 533, 534, 640, 530, 531, 168, 536, 537, + 538, 540, 220, 539, 541, 744, 311, 542, 221, 222, + 223, 224, 225, 226, 543, 227, 544, 745, 312, 116, + 117, 548, 545, 546, 547, 169, 549, 550, 551, 553, + 555, 563, 564, 565, 556, 557, 561, 562, 566, 567, + 568, 569, 89, 570, 571, 746, 313, 572, 30, 575, + 576, 577, 578, 579, 591, 592, 580, 581, 582, 583, + 594, 593, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 595, 596, 597, 89, + 604, 605, 309, 310, 639, 644, 774, 606, 608, 609, + 610, 685, 611, 689, 693, 629, 612, 613, 614, 615, + 616, 617, 697, 701, 717, 720, 618, 724, 753, 89, + 619, 620, 761, 621, 775, 776, 777, 623, 778, 781, + 782, 783, 624, 784, 625, 785, 790, 791, 793, 794, + 980, 636, 797, 796, 637, 638, 799, 800, 802, 803, + 811, 810, 814, 828, 813, 815, 816, 817, 818, 819, + 820, 833, 846, 832, 839, 841, 842, 835, 843, 844, + 850, 845, 847, 851, 849, 848, 852, 853, 854, 855, + 917, 910, 856, 918, 911, 921, 912, 913, 914, 915, + 920, 924, 938, 944, 951, 956, 952, 957, 958, 573, + 959, 967, 972, 975, 977, 945, 946, 1000, 982, 947, + 1001, 1002, 948, 1005, 641, 961, 962, 859, 461, 490, + 643, 840, 887, 909, 963, 908, 183, 495, 973, 254, + 976, 979, 273, 981, 1010, 866, 275, 874, 203, 1007, + 890, 268, 276, 228, 286, 892, 290, 880, 1006, 184, + 1008, 255, 894, 857, 274, 230, 205, 871, 867, 744, + 861, 916, 891, 860, 886, 211, 204, 212, 971, 269, + 928, 745, 287, 509, 863, 881, 862, 218, 185, 201, + 895, 864, 930, 231, 865, 186, 206, 868, 879, 922, + 875, 535, 929, 893, 869, 882, 229, 207, 208, 746, + 896, 532, 923, 235, 187, 219, 883, 884, 528, 907, + 931, 897, 898, 870, 236, 237, 906, 511, 214, 974, + 213, 758, 520, 905, 751, 919, 552, 642, 978, 937, + 998, 1009, 0, 554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 865, 0, 873, 0, - 0, 889, 0, 0, 0, 0, 891, 0, 879, 0, - 0, 0, 927, 893, 0, 0, 0, 0, 870, 866, - 0, 0, 0, 890, 929, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 928, 0, 880, 0, 0, 0, - 0, 894, 0, 0, 0, 0, 0, 0, 867, 878, - 0, 874, 930, 0, 892, 868, 881, 0, 0, 0, - 0, 895, 0, 0, 0, 0, 0, 882, 883, 0, - 0, 0, 896, 897, 869 + 0, 0, 0, 0, 0, 0, 0, 866, 0, 874, + 0, 0, 890, 0, 0, 0, 0, 892, 0, 880, + 0, 0, 0, 928, 894, 0, 0, 0, 0, 871, + 867, 0, 0, 0, 891, 930, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 929, 0, 881, 0, 0, + 0, 0, 895, 0, 0, 0, 0, 0, 0, 868, + 879, 0, 875, 931, 0, 893, 869, 882, 0, 0, + 0, 0, 896, 0, 0, 0, 0, 0, 883, 884, + 0, 0, 0, 897, 898, 870 }; const short int @@ -4172,275 +4180,277 @@ namespace isc { namespace dhcp { { 66, 67, 68, 69, 70, 71, 70, 73, 74, 75, 76, 72, 74, 64, 68, 69, 70, 71, 74, 73, - 74, 506, 76, 567, 800, 800, 69, 512, 800, 73, - 74, 800, 5, 69, 7, 10, 9, 100, 101, 80, - 81, 82, 68, 69, 70, 71, 15, 73, 74, 3, - 76, 72, 73, 0, 8, 69, 69, 70, 71, 70, - 12, 13, 69, 69, 16, 71, 3, 19, 7, 6, - 130, 131, 132, 133, 69, 69, 71, 71, 100, 101, - 3, 69, 24, 25, 26, 8, 30, 14, 15, 7, - 111, 112, 90, 91, 92, 93, 11, 95, 161, 3, - 3, 3, 6, 6, 164, 20, 8, 22, 23, 24, - 25, 26, 27, 28, 29, 161, 60, 59, 62, 63, - 72, 73, 66, 67, 68, 17, 18, 3, 72, 73, - 72, 73, 8, 97, 98, 50, 51, 52, 53, 54, - 161, 3, 84, 58, 59, 58, 8, 7, 90, 91, - 92, 93, 94, 95, 69, 97, 7, 72, 73, 128, - 7, 136, 103, 104, 105, 106, 107, 108, 83, 84, - 145, 146, 147, 3, 89, 7, 952, 952, 8, 3, - 952, 7, 6, 952, 99, 7, 161, 102, 161, 162, - 163, 164, 59, 7, 109, 110, 7, 7, 113, 7, - 23, 24, 25, 26, 71, 72, 73, 137, 6, 161, - 3, 60, 61, 62, 63, 64, 65, 161, 85, 161, - 3, 88, 4, 72, 73, 8, 60, 50, 51, 52, - 3, 8, 55, 56, 57, 8, 59, 3, 72, 73, - 24, 25, 26, 3, 788, 4, 161, 70, 8, 72, - 73, 74, 75, 76, 77, 78, 79, 4, 3, 8, - 4, 4, 85, 8, 139, 88, 89, 142, 143, 144, - 4, 4, 3, 96, 58, 59, 60, 8, 4, 3, - 3, 347, 4, 4, 8, 8, 337, 338, 72, 73, - 3, 3, 3, 3, 161, 8, 8, 8, 8, 4, - 3, 3, 86, 87, 138, 8, 140, 141, 3, 3, - 3, 377, 161, 8, 8, 8, 3, 383, 3, 3, - 8, 8, 4, 8, 8, 4, 4, 161, 8, 383, - 3, 8, 398, 4, 4, 401, 3, 401, 161, 31, - 32, 33, 34, 4, 398, 4, 412, 401, 4, 4, - 4, 4, 4, 4, 161, 398, 422, 383, 412, 4, - 4, 427, 398, 4, 4, 427, 4, 4, 422, 164, - 164, 427, 398, 427, 4, 401, 4, 161, 422, 4, + 74, 506, 76, 567, 10, 801, 69, 512, 801, 73, + 74, 801, 5, 69, 7, 801, 9, 0, 101, 102, + 15, 3, 68, 69, 70, 71, 8, 73, 74, 162, + 76, 131, 132, 133, 134, 69, 69, 70, 71, 70, + 101, 102, 69, 69, 3, 71, 24, 25, 26, 8, + 80, 81, 82, 83, 69, 69, 71, 71, 7, 11, + 58, 69, 12, 13, 3, 165, 16, 6, 20, 19, + 22, 23, 24, 25, 26, 27, 28, 29, 59, 162, + 58, 59, 60, 104, 105, 106, 107, 108, 109, 7, + 71, 72, 73, 3, 72, 73, 6, 138, 50, 51, + 52, 53, 54, 14, 15, 86, 58, 59, 89, 87, + 88, 140, 72, 73, 143, 144, 145, 69, 17, 18, + 72, 73, 72, 73, 60, 61, 62, 63, 64, 65, + 3, 137, 84, 85, 129, 8, 72, 73, 90, 7, + 146, 147, 148, 7, 91, 92, 93, 94, 100, 96, + 3, 103, 112, 113, 6, 8, 162, 953, 110, 111, + 953, 30, 114, 953, 98, 99, 7, 953, 3, 162, + 163, 164, 165, 8, 3, 7, 7, 3, 3, 8, + 3, 162, 8, 8, 162, 8, 23, 24, 25, 26, + 3, 60, 7, 62, 63, 8, 3, 66, 67, 68, + 3, 8, 162, 72, 73, 8, 3, 7, 7, 7, + 162, 8, 162, 50, 51, 52, 3, 7, 55, 56, + 57, 8, 59, 3, 3, 789, 162, 3, 8, 8, + 6, 3, 60, 70, 6, 72, 73, 74, 75, 76, + 77, 78, 79, 3, 72, 73, 3, 3, 8, 86, + 3, 8, 89, 90, 3, 8, 4, 8, 3, 8, + 97, 347, 3, 8, 3, 3, 337, 338, 30, 8, + 8, 4, 8, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 4, 3, + 3, 377, 4, 162, 8, 4, 4, 383, 60, 31, + 32, 33, 34, 4, 4, 4, 4, 4, 4, 383, + 4, 139, 398, 141, 142, 401, 8, 401, 4, 8, + 3, 8, 4, 4, 398, 162, 412, 401, 3, 162, + 4, 4, 4, 4, 162, 398, 422, 383, 412, 4, + 4, 427, 398, 4, 4, 427, 4, 4, 422, 4, + 4, 427, 398, 427, 4, 401, 4, 165, 422, 165, 4, 4, 448, 427, 398, 398, 412, 4, 401, 4, - 401, 398, 398, 162, 448, 162, 422, 162, 162, 412, - 4, 427, 4, 398, 398, 4, 412, 458, 459, 460, - 398, 4, 23, 24, 25, 26, 4, 412, 412, 4, - 4, 4, 448, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 4, 4, 923, 50, - 51, 52, 162, 54, 4, 4, 4, 4, 59, 60, - 4, 4, 4, 4, 4, 164, 4, 4, 4, 4, - 164, 72, 73, 162, 75, 4, 4, 4, 79, 4, - 4, 4, 4, 162, 85, 4, 4, 88, 4, 4, - 4, 4, 4, 534, 4, 96, 4, 4, 164, 4, - 556, 4, 164, 4, 4, 561, 164, 4, 164, 162, - 4, 4, 162, 4, 555, 162, 164, 561, 4, 4, - 4, 4, 4, 4, 164, 581, 582, 164, 7, 7, - 7, 7, 161, 7, 7, 161, 161, 581, 582, 5, - 5, 5, 5, 5, 161, 561, 7, 5, 5, 5, - 5, 72, 73, 7, 7, 7, 5, 161, 161, 161, - 161, 5, 30, 161, 161, 581, 582, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 161, 7, 161, 161, 5, 21, 4, 161, - 161, 161, 60, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 161, 161, 161, - 161, 7, 129, 134, 135, 161, 161, 7, 7, 7, - 7, 7, 161, 7, 7, 7, 7, 161, 161, 161, - 161, 161, 4, 4, 4, 161, 4, 4, 4, 4, - 161, 161, 4, 4, 3, 8, 6, 3, 6, 6, - 161, 3, 161, 6, 3, 161, 6, 3, 6, 3, - 3, 6, 4, 4, 4, 4, 4, 4, 3, 161, - 6, 4, 4, 4, 4, 4, 164, 164, 4, 4, - 4, 4, 162, 3, 6, 4, 4, 162, 3, 5, - 162, 162, 162, 161, 8, 162, 8, 8, 8, 4, - 4, 4, 162, 4, 480, 164, 4, 7, 4, 4, - 4, 162, 162, 556, 162, 162, 162, 162, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 561, 347, 383, - 162, 164, 161, 161, 164, 791, 162, 162, 794, 161, - 767, 797, 790, 785, 800, 797, 800, 791, 803, 805, - 794, 797, 808, 797, 805, 811, 800, 430, 791, 820, - 794, 805, 811, 797, 808, 791, 800, 800, 824, 377, - 813, 805, 793, 791, 830, 791, 830, 398, 794, 835, - 824, 797, 802, 952, 800, 794, 830, 791, 791, 805, - 796, 835, 808, 832, 791, 791, 800, 800, 422, 800, - 799, 835, 805, 800, 800, 808, 791, 791, 824, 805, - 797, 427, 808, 791, 830, 800, 800, 830, 810, 835, - 805, 805, 800, 808, 808, 808, 412, 830, 957, 830, - 806, 824, 401, 604, 582, 557, 448, 968, 836, 985, - 451, 1002, -1, -1, -1, -1, -1, -1, -1, -1, + 401, 398, 398, 4, 448, 4, 422, 163, 163, 412, + 163, 427, 163, 398, 398, 4, 412, 458, 459, 460, + 398, 4, 4, 23, 24, 25, 26, 412, 412, 4, + 162, 4, 448, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 4, 4, 4, 924, + 50, 51, 52, 4, 54, 4, 4, 4, 163, 59, + 60, 24, 25, 26, 4, 4, 4, 4, 165, 4, + 4, 163, 72, 73, 4, 75, 4, 4, 4, 79, + 4, 4, 4, 4, 165, 4, 86, 4, 4, 89, + 4, 4, 4, 534, 4, 4, 59, 97, 4, 4, + 556, 4, 4, 163, 4, 561, 4, 4, 4, 72, + 73, 165, 4, 4, 555, 165, 165, 561, 165, 4, + 4, 4, 85, 163, 163, 581, 582, 163, 91, 92, + 93, 94, 95, 96, 4, 98, 4, 581, 582, 72, + 73, 4, 165, 165, 165, 561, 4, 4, 4, 4, + 4, 162, 162, 162, 7, 7, 7, 7, 7, 7, + 5, 5, 162, 5, 5, 581, 582, 5, 7, 162, + 5, 5, 5, 5, 162, 162, 7, 7, 7, 5, + 5, 162, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 162, 162, 162, 162, + 162, 7, 135, 136, 5, 21, 4, 162, 162, 162, + 162, 7, 162, 7, 7, 130, 162, 162, 162, 162, + 162, 162, 7, 7, 7, 7, 162, 7, 7, 162, + 162, 162, 7, 162, 4, 4, 4, 162, 4, 4, + 4, 4, 162, 4, 162, 4, 6, 3, 6, 3, + 5, 162, 3, 6, 162, 162, 6, 3, 6, 3, + 3, 6, 3, 162, 6, 4, 4, 4, 4, 4, + 4, 3, 165, 6, 4, 4, 4, 8, 4, 4, + 4, 163, 163, 4, 163, 165, 163, 163, 163, 163, + 4, 163, 165, 4, 163, 3, 163, 163, 163, 163, + 6, 4, 162, 162, 8, 4, 8, 8, 3, 480, + 8, 4, 4, 4, 4, 162, 162, 4, 7, 162, + 4, 4, 162, 4, 556, 162, 162, 791, 347, 377, + 561, 768, 804, 814, 162, 812, 792, 383, 165, 795, + 163, 162, 798, 162, 162, 801, 798, 801, 792, 163, + 806, 795, 798, 809, 798, 806, 812, 801, 165, 792, + 163, 795, 806, 786, 798, 809, 792, 801, 801, 825, + 794, 821, 806, 792, 803, 831, 792, 831, 953, 795, + 836, 825, 798, 398, 797, 801, 795, 831, 792, 792, + 806, 798, 836, 809, 800, 792, 792, 801, 801, 831, + 801, 430, 836, 806, 801, 801, 809, 792, 792, 825, + 806, 427, 833, 809, 792, 831, 801, 801, 422, 811, + 836, 806, 806, 801, 809, 809, 809, 401, 831, 958, + 831, 605, 412, 807, 582, 825, 448, 557, 969, 837, + 986, 1003, -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 952, -1, 952, -1, - -1, 957, -1, -1, -1, -1, 957, -1, 952, -1, - -1, -1, 968, 957, -1, -1, -1, -1, 952, 952, - -1, -1, -1, 957, 968, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 968, -1, 952, -1, -1, -1, - -1, 957, -1, -1, -1, -1, -1, -1, 952, 952, - -1, 952, 968, -1, 957, 952, 952, -1, -1, -1, - -1, 957, -1, -1, -1, -1, -1, 952, 952, -1, - -1, -1, 957, 957, 952 + -1, -1, -1, -1, -1, -1, -1, 953, -1, 953, + -1, -1, 958, -1, -1, -1, -1, 958, -1, 953, + -1, -1, -1, 969, 958, -1, -1, -1, -1, 953, + 953, -1, -1, -1, 958, 969, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 969, -1, 953, -1, -1, + -1, -1, 958, -1, -1, -1, -1, -1, -1, 953, + 953, -1, 953, 969, -1, 958, 953, 953, -1, -1, + -1, -1, 958, -1, -1, -1, -1, -1, 953, 953, + -1, -1, -1, 958, 958, 953 }; const unsigned short int Dhcp4Parser::yystos_[] = { - 0, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 0, 5, - 7, 9, 161, 162, 163, 164, 180, 181, 182, 187, - 7, 196, 7, 202, 7, 216, 7, 309, 7, 392, - 7, 408, 7, 344, 7, 350, 7, 374, 7, 285, - 7, 463, 7, 502, 188, 183, 197, 203, 217, 310, - 393, 409, 345, 351, 375, 286, 464, 503, 180, 189, - 190, 161, 185, 186, 10, 136, 145, 146, 147, 161, - 195, 198, 199, 200, 494, 496, 498, 500, 11, 20, + 0, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 0, 5, + 7, 9, 162, 163, 164, 165, 181, 182, 183, 188, + 7, 197, 7, 203, 7, 217, 7, 310, 7, 393, + 7, 409, 7, 345, 7, 351, 7, 375, 7, 286, + 7, 464, 7, 503, 189, 184, 198, 204, 218, 311, + 394, 410, 346, 352, 376, 287, 465, 504, 181, 190, + 191, 162, 186, 187, 10, 137, 146, 147, 148, 162, + 196, 199, 200, 201, 495, 497, 499, 501, 11, 20, 22, 23, 24, 25, 26, 27, 28, 29, 50, 51, - 52, 53, 54, 58, 59, 69, 72, 73, 83, 84, - 89, 99, 102, 109, 110, 113, 195, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 227, 229, 235, 237, - 270, 279, 293, 303, 334, 342, 368, 398, 400, 402, - 413, 415, 417, 440, 452, 453, 461, 12, 13, 16, - 19, 195, 214, 215, 218, 220, 223, 226, 398, 400, + 52, 53, 54, 58, 59, 69, 72, 73, 84, 85, + 90, 100, 103, 110, 111, 114, 196, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 228, 230, 236, 238, + 271, 280, 294, 304, 335, 343, 369, 399, 401, 403, + 414, 416, 418, 441, 453, 454, 462, 12, 13, 16, + 19, 196, 215, 216, 219, 221, 224, 227, 399, 401, 55, 56, 57, 70, 74, 75, 76, 77, 78, 79, - 85, 88, 96, 195, 206, 207, 208, 211, 311, 312, - 313, 315, 317, 319, 321, 323, 325, 327, 329, 332, - 333, 368, 386, 398, 400, 402, 413, 415, 417, 437, - 71, 195, 325, 327, 368, 394, 395, 396, 398, 400, - 84, 90, 91, 92, 93, 94, 95, 97, 195, 368, - 398, 400, 410, 411, 412, 413, 415, 417, 419, 423, - 425, 427, 429, 431, 433, 435, 342, 30, 60, 62, - 63, 66, 67, 68, 195, 255, 352, 353, 354, 355, - 356, 357, 358, 360, 362, 364, 365, 367, 398, 400, - 61, 64, 65, 195, 255, 356, 362, 376, 377, 378, - 379, 380, 382, 383, 384, 385, 398, 400, 100, 101, - 195, 287, 288, 289, 291, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 134, - 135, 195, 398, 400, 465, 466, 467, 468, 470, 472, - 473, 475, 476, 477, 480, 482, 483, 484, 485, 488, - 490, 492, 137, 504, 505, 506, 6, 3, 4, 8, - 3, 201, 501, 495, 497, 499, 4, 3, 8, 213, - 230, 4, 4, 414, 416, 418, 228, 236, 238, 4, - 4, 4, 4, 304, 343, 369, 335, 399, 401, 271, - 441, 403, 280, 294, 4, 454, 462, 3, 8, 219, - 221, 224, 4, 3, 8, 316, 318, 320, 387, 314, - 322, 324, 4, 4, 330, 328, 326, 438, 3, 8, - 397, 3, 8, 436, 424, 426, 430, 428, 434, 432, - 420, 8, 3, 8, 359, 256, 4, 363, 361, 366, - 4, 8, 3, 381, 4, 4, 8, 3, 290, 292, - 3, 8, 4, 469, 471, 4, 474, 4, 4, 478, - 481, 4, 4, 4, 486, 489, 491, 493, 3, 8, - 507, 3, 8, 180, 180, 161, 4, 4, 4, 4, - 4, 199, 4, 4, 164, 164, 4, 4, 4, 4, - 4, 4, 162, 162, 162, 162, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 162, 4, 4, - 205, 4, 4, 4, 164, 215, 4, 4, 4, 4, - 4, 4, 4, 162, 164, 4, 4, 4, 4, 312, - 4, 395, 4, 4, 4, 4, 4, 4, 4, 4, - 412, 4, 4, 162, 4, 4, 4, 164, 354, 4, - 164, 164, 378, 4, 4, 288, 164, 4, 4, 162, - 4, 162, 162, 4, 4, 164, 164, 164, 4, 4, - 4, 4, 466, 4, 505, 4, 7, 7, 180, 180, - 180, 7, 7, 161, 161, 161, 7, 7, 5, 5, - 5, 5, 5, 182, 184, 161, 5, 5, 5, 5, - 7, 7, 7, 5, 191, 14, 15, 222, 17, 18, - 225, 161, 161, 161, 5, 161, 161, 161, 80, 81, - 82, 331, 191, 161, 7, 161, 191, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 180, 161, 161, 161, 15, 128, 479, 129, 130, - 131, 132, 133, 164, 487, 161, 161, 161, 5, 180, - 204, 504, 214, 21, 231, 232, 233, 30, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 195, 243, 244, 245, 248, 250, 252, - 254, 255, 257, 258, 259, 260, 261, 262, 263, 264, - 266, 268, 269, 243, 7, 239, 240, 241, 7, 305, - 306, 307, 7, 346, 347, 348, 7, 370, 371, 372, - 7, 336, 337, 338, 90, 91, 92, 93, 95, 272, - 273, 274, 275, 276, 277, 278, 7, 442, 443, 7, - 404, 405, 406, 7, 281, 282, 283, 103, 104, 105, - 106, 107, 108, 295, 296, 297, 298, 299, 300, 301, - 302, 111, 112, 195, 398, 400, 455, 456, 457, 459, - 465, 192, 7, 388, 389, 390, 98, 419, 421, 439, - 7, 508, 509, 8, 8, 8, 234, 3, 8, 246, - 249, 251, 253, 4, 4, 4, 4, 4, 265, 267, - 4, 4, 4, 4, 4, 3, 8, 8, 242, 6, - 3, 308, 6, 3, 349, 6, 3, 373, 6, 3, - 339, 6, 3, 3, 6, 444, 3, 6, 407, 6, - 3, 284, 6, 3, 4, 4, 4, 4, 4, 4, - 3, 8, 458, 460, 3, 8, 8, 161, 193, 194, - 391, 6, 3, 422, 8, 510, 3, 6, 4, 232, - 4, 4, 4, 4, 162, 164, 162, 164, 162, 4, - 4, 162, 162, 162, 162, 164, 244, 243, 241, 311, - 307, 352, 348, 376, 372, 195, 206, 207, 208, 211, - 255, 303, 321, 325, 327, 329, 340, 341, 368, 398, - 400, 413, 415, 417, 437, 338, 273, 86, 87, 195, - 255, 342, 368, 398, 400, 413, 415, 417, 445, 446, - 447, 448, 449, 451, 443, 410, 406, 287, 283, 162, - 162, 162, 162, 162, 162, 296, 4, 4, 456, 6, - 3, 394, 390, 4, 138, 140, 141, 195, 255, 398, - 400, 511, 512, 513, 514, 516, 509, 161, 31, 32, - 33, 34, 247, 161, 161, 161, 161, 161, 8, 8, - 8, 8, 3, 8, 450, 4, 8, 3, 8, 8, - 161, 161, 161, 8, 191, 517, 4, 515, 3, 8, - 341, 4, 164, 447, 4, 162, 4, 512, 161, 5, - 161, 7, 518, 519, 520, 3, 6, 139, 142, 143, - 144, 521, 522, 523, 525, 526, 527, 519, 524, 4, - 4, 4, 3, 8, 4, 164, 162, 162, 522, 161 + 86, 89, 97, 196, 207, 208, 209, 212, 312, 313, + 314, 316, 318, 320, 322, 324, 326, 328, 330, 333, + 334, 369, 387, 399, 401, 403, 414, 416, 418, 438, + 71, 196, 326, 328, 369, 395, 396, 397, 399, 401, + 85, 91, 92, 93, 94, 95, 96, 98, 196, 369, + 399, 401, 411, 412, 413, 414, 416, 418, 420, 424, + 426, 428, 430, 432, 434, 436, 343, 30, 60, 62, + 63, 66, 67, 68, 196, 256, 353, 354, 355, 356, + 357, 358, 359, 361, 363, 365, 366, 368, 399, 401, + 61, 64, 65, 196, 256, 357, 363, 377, 378, 379, + 380, 381, 383, 384, 385, 386, 399, 401, 101, 102, + 196, 288, 289, 290, 292, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 135, + 136, 196, 399, 401, 466, 467, 468, 469, 471, 473, + 474, 476, 477, 478, 481, 483, 484, 485, 486, 489, + 491, 493, 138, 505, 506, 507, 6, 3, 4, 8, + 3, 202, 502, 496, 498, 500, 4, 3, 8, 214, + 231, 4, 4, 415, 417, 419, 229, 237, 239, 4, + 4, 4, 4, 305, 344, 370, 336, 400, 402, 272, + 442, 404, 281, 295, 4, 455, 463, 3, 8, 220, + 222, 225, 4, 3, 8, 317, 319, 321, 388, 315, + 323, 325, 4, 4, 331, 329, 327, 439, 3, 8, + 398, 3, 8, 437, 425, 427, 431, 429, 435, 433, + 421, 8, 3, 8, 360, 257, 4, 364, 362, 367, + 4, 8, 3, 382, 4, 4, 8, 3, 291, 293, + 3, 8, 4, 470, 472, 4, 475, 4, 4, 479, + 482, 4, 4, 4, 487, 490, 492, 494, 3, 8, + 508, 3, 8, 181, 181, 162, 4, 4, 4, 4, + 4, 200, 4, 4, 165, 165, 4, 4, 4, 4, + 4, 4, 163, 163, 163, 163, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 163, 4, 4, + 206, 4, 4, 4, 165, 216, 4, 4, 4, 4, + 4, 4, 4, 163, 165, 4, 4, 4, 4, 313, + 4, 396, 4, 4, 4, 4, 4, 4, 4, 4, + 413, 4, 4, 163, 4, 4, 4, 165, 355, 4, + 165, 165, 379, 4, 4, 289, 165, 4, 4, 163, + 4, 163, 163, 4, 4, 165, 165, 165, 4, 4, + 4, 4, 467, 4, 506, 4, 7, 7, 181, 181, + 181, 7, 7, 162, 162, 162, 7, 7, 5, 5, + 5, 5, 5, 183, 185, 162, 5, 5, 5, 5, + 7, 7, 7, 5, 192, 14, 15, 223, 17, 18, + 226, 162, 162, 162, 5, 162, 162, 162, 80, 81, + 82, 83, 332, 192, 162, 7, 162, 192, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 181, 162, 162, 162, 15, 129, 480, 130, + 131, 132, 133, 134, 165, 488, 162, 162, 162, 5, + 181, 205, 505, 215, 21, 232, 233, 234, 30, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 196, 244, 245, 246, 249, 251, + 253, 255, 256, 258, 259, 260, 261, 262, 263, 264, + 265, 267, 269, 270, 244, 7, 240, 241, 242, 7, + 306, 307, 308, 7, 347, 348, 349, 7, 371, 372, + 373, 7, 337, 338, 339, 91, 92, 93, 94, 96, + 273, 274, 275, 276, 277, 278, 279, 7, 443, 444, + 7, 405, 406, 407, 7, 282, 283, 284, 104, 105, + 106, 107, 108, 109, 296, 297, 298, 299, 300, 301, + 302, 303, 112, 113, 196, 399, 401, 456, 457, 458, + 460, 466, 193, 7, 389, 390, 391, 99, 420, 422, + 440, 7, 509, 510, 8, 8, 8, 235, 3, 8, + 247, 250, 252, 254, 4, 4, 4, 4, 4, 266, + 268, 4, 4, 4, 4, 4, 3, 8, 8, 243, + 6, 3, 309, 6, 3, 350, 6, 3, 374, 6, + 3, 340, 6, 3, 3, 6, 445, 3, 6, 408, + 6, 3, 285, 6, 3, 4, 4, 4, 4, 4, + 4, 3, 8, 459, 461, 3, 8, 8, 162, 194, + 195, 392, 6, 3, 423, 8, 511, 3, 6, 4, + 233, 4, 4, 4, 4, 163, 165, 163, 165, 163, + 4, 4, 163, 163, 163, 163, 165, 245, 244, 242, + 312, 308, 353, 349, 377, 373, 196, 207, 208, 209, + 212, 256, 304, 322, 326, 328, 330, 341, 342, 369, + 399, 401, 414, 416, 418, 438, 339, 274, 87, 88, + 196, 256, 343, 369, 399, 401, 414, 416, 418, 446, + 447, 448, 449, 450, 452, 444, 411, 407, 288, 284, + 163, 163, 163, 163, 163, 163, 297, 4, 4, 457, + 6, 3, 395, 391, 4, 139, 141, 142, 196, 256, + 399, 401, 512, 513, 514, 515, 517, 510, 162, 31, + 32, 33, 34, 248, 162, 162, 162, 162, 162, 8, + 8, 8, 8, 3, 8, 451, 4, 8, 3, 8, + 8, 162, 162, 162, 8, 192, 518, 4, 516, 3, + 8, 342, 4, 165, 448, 4, 163, 4, 513, 162, + 5, 162, 7, 519, 520, 521, 3, 6, 140, 143, + 144, 145, 522, 523, 524, 526, 527, 528, 520, 525, + 4, 4, 4, 3, 8, 4, 165, 163, 163, 523, + 162 }; const unsigned short int Dhcp4Parser::yyr1_[] = { - 0, 165, 167, 166, 168, 166, 169, 166, 170, 166, - 171, 166, 172, 166, 173, 166, 174, 166, 175, 166, - 176, 166, 177, 166, 178, 166, 179, 166, 180, 180, - 180, 180, 180, 180, 180, 181, 183, 182, 184, 185, - 185, 186, 186, 188, 187, 189, 189, 190, 190, 192, - 191, 193, 193, 194, 194, 195, 197, 196, 198, 198, - 199, 199, 199, 199, 199, 199, 201, 200, 203, 202, - 204, 204, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 206, 207, 208, 209, 210, 211, 213, 212, 214, - 214, 215, 215, 215, 215, 215, 215, 215, 217, 216, - 219, 218, 221, 220, 222, 222, 224, 223, 225, 225, - 226, 228, 227, 230, 229, 231, 231, 232, 234, 233, - 236, 235, 238, 237, 239, 239, 240, 240, 242, 241, - 243, 243, 244, 244, 244, 244, 244, 244, 244, 244, - 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, - 246, 245, 247, 247, 247, 247, 249, 248, 251, 250, - 253, 252, 254, 256, 255, 257, 258, 259, 260, 261, - 262, 263, 265, 264, 267, 266, 268, 269, 271, 270, - 272, 272, 273, 273, 273, 273, 273, 274, 275, 276, - 277, 278, 280, 279, 281, 281, 282, 282, 284, 283, - 286, 285, 287, 287, 287, 288, 288, 290, 289, 292, - 291, 294, 293, 295, 295, 296, 296, 296, 296, 296, - 296, 297, 298, 299, 300, 301, 302, 304, 303, 305, - 305, 306, 306, 308, 307, 310, 309, 311, 311, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 314, 313, 316, 315, 318, 317, - 320, 319, 322, 321, 324, 323, 326, 325, 328, 327, - 330, 329, 331, 331, 331, 332, 333, 335, 334, 336, - 336, 337, 337, 339, 338, 340, 340, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 343, 342, 345, 344, 346, - 346, 347, 347, 349, 348, 351, 350, 352, 352, 353, - 353, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 355, 356, 357, 359, 358, 361, 360, 363, 362, - 364, 366, 365, 367, 369, 368, 370, 370, 371, 371, - 373, 372, 375, 374, 376, 376, 377, 377, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 379, 381, 380, - 382, 383, 384, 385, 387, 386, 388, 388, 389, 389, - 391, 390, 393, 392, 394, 394, 395, 395, 395, 395, - 395, 395, 395, 397, 396, 399, 398, 401, 400, 403, - 402, 404, 404, 405, 405, 407, 406, 409, 408, 410, - 410, 411, 411, 412, 412, 412, 412, 412, 412, 412, - 412, 412, 412, 412, 412, 412, 412, 412, 414, 413, - 416, 415, 418, 417, 420, 419, 422, 421, 424, 423, - 426, 425, 428, 427, 430, 429, 432, 431, 434, 433, - 436, 435, 438, 437, 439, 439, 441, 440, 442, 442, - 444, 443, 445, 445, 446, 446, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 448, 450, 449, - 451, 452, 454, 453, 455, 455, 456, 456, 456, 456, - 456, 458, 457, 460, 459, 462, 461, 464, 463, 465, - 465, 466, 466, 466, 466, 466, 466, 466, 466, 466, - 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, - 467, 469, 468, 471, 470, 472, 474, 473, 475, 476, - 478, 477, 479, 479, 481, 480, 482, 483, 484, 486, - 485, 487, 487, 487, 487, 487, 489, 488, 491, 490, - 493, 492, 495, 494, 497, 496, 499, 498, 501, 500, - 503, 502, 504, 504, 505, 507, 506, 508, 508, 510, - 509, 511, 511, 512, 512, 512, 512, 512, 512, 512, - 513, 515, 514, 517, 516, 518, 518, 520, 519, 521, - 521, 522, 522, 522, 522, 524, 523, 525, 526, 527 + 0, 166, 168, 167, 169, 167, 170, 167, 171, 167, + 172, 167, 173, 167, 174, 167, 175, 167, 176, 167, + 177, 167, 178, 167, 179, 167, 180, 167, 181, 181, + 181, 181, 181, 181, 181, 182, 184, 183, 185, 186, + 186, 187, 187, 189, 188, 190, 190, 191, 191, 193, + 192, 194, 194, 195, 195, 196, 198, 197, 199, 199, + 200, 200, 200, 200, 200, 200, 202, 201, 204, 203, + 205, 205, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 207, 208, 209, 210, 211, 212, 214, 213, 215, + 215, 216, 216, 216, 216, 216, 216, 216, 218, 217, + 220, 219, 222, 221, 223, 223, 225, 224, 226, 226, + 227, 229, 228, 231, 230, 232, 232, 233, 235, 234, + 237, 236, 239, 238, 240, 240, 241, 241, 243, 242, + 244, 244, 245, 245, 245, 245, 245, 245, 245, 245, + 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, + 247, 246, 248, 248, 248, 248, 250, 249, 252, 251, + 254, 253, 255, 257, 256, 258, 259, 260, 261, 262, + 263, 264, 266, 265, 268, 267, 269, 270, 272, 271, + 273, 273, 274, 274, 274, 274, 274, 275, 276, 277, + 278, 279, 281, 280, 282, 282, 283, 283, 285, 284, + 287, 286, 288, 288, 288, 289, 289, 291, 290, 293, + 292, 295, 294, 296, 296, 297, 297, 297, 297, 297, + 297, 298, 299, 300, 301, 302, 303, 305, 304, 306, + 306, 307, 307, 309, 308, 311, 310, 312, 312, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 315, 314, 317, 316, 319, 318, + 321, 320, 323, 322, 325, 324, 327, 326, 329, 328, + 331, 330, 332, 332, 332, 332, 333, 334, 336, 335, + 337, 337, 338, 338, 340, 339, 341, 341, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 344, 343, 346, 345, + 347, 347, 348, 348, 350, 349, 352, 351, 353, 353, + 354, 354, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 356, 357, 358, 360, 359, 362, 361, 364, + 363, 365, 367, 366, 368, 370, 369, 371, 371, 372, + 372, 374, 373, 376, 375, 377, 377, 378, 378, 379, + 379, 379, 379, 379, 379, 379, 379, 379, 380, 382, + 381, 383, 384, 385, 386, 388, 387, 389, 389, 390, + 390, 392, 391, 394, 393, 395, 395, 396, 396, 396, + 396, 396, 396, 396, 398, 397, 400, 399, 402, 401, + 404, 403, 405, 405, 406, 406, 408, 407, 410, 409, + 411, 411, 412, 412, 413, 413, 413, 413, 413, 413, + 413, 413, 413, 413, 413, 413, 413, 413, 413, 415, + 414, 417, 416, 419, 418, 421, 420, 423, 422, 425, + 424, 427, 426, 429, 428, 431, 430, 433, 432, 435, + 434, 437, 436, 439, 438, 440, 440, 442, 441, 443, + 443, 445, 444, 446, 446, 447, 447, 448, 448, 448, + 448, 448, 448, 448, 448, 448, 448, 448, 449, 451, + 450, 452, 453, 455, 454, 456, 456, 457, 457, 457, + 457, 457, 459, 458, 461, 460, 463, 462, 465, 464, + 466, 466, 467, 467, 467, 467, 467, 467, 467, 467, + 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, + 467, 468, 470, 469, 472, 471, 473, 475, 474, 476, + 477, 479, 478, 480, 480, 482, 481, 483, 484, 485, + 487, 486, 488, 488, 488, 488, 488, 490, 489, 492, + 491, 494, 493, 496, 495, 498, 497, 500, 499, 502, + 501, 504, 503, 505, 505, 506, 508, 507, 509, 509, + 511, 510, 512, 512, 513, 513, 513, 513, 513, 513, + 513, 514, 516, 515, 518, 517, 519, 519, 521, 520, + 522, 522, 523, 523, 523, 523, 525, 524, 526, 527, + 528 }; const unsigned char @@ -4476,39 +4486,40 @@ namespace isc { namespace dhcp { 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, 1, 1, 1, 3, 3, 0, 6, 0, - 1, 1, 3, 0, 4, 1, 3, 1, 1, 1, + 0, 4, 1, 1, 1, 1, 3, 3, 0, 6, + 0, 1, 1, 3, 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 6, 0, 4, 0, - 1, 1, 3, 0, 4, 0, 4, 0, 1, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 1, 0, 4, 0, 4, 0, 4, - 1, 0, 4, 3, 0, 6, 0, 1, 1, 3, - 0, 4, 0, 4, 0, 1, 1, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, - 1, 1, 3, 3, 0, 6, 0, 1, 1, 3, - 0, 4, 0, 4, 1, 3, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 0, 4, 0, 4, 0, - 6, 0, 1, 1, 3, 0, 4, 0, 4, 0, - 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, - 0, 4, 0, 6, 1, 1, 0, 6, 1, 3, - 0, 4, 0, 1, 1, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, - 3, 3, 0, 6, 1, 3, 1, 1, 1, 1, - 1, 0, 4, 0, 4, 0, 6, 0, 4, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 6, 0, 4, + 0, 1, 1, 3, 0, 4, 0, 4, 0, 1, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 0, 4, 0, 4, 0, + 4, 1, 0, 4, 3, 0, 6, 0, 1, 1, + 3, 0, 4, 0, 4, 0, 1, 1, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 4, 1, 1, 3, 3, 0, 6, 0, 1, 1, + 3, 0, 4, 0, 4, 1, 3, 1, 1, 1, + 1, 1, 1, 1, 0, 4, 0, 4, 0, 4, + 0, 6, 0, 1, 1, 3, 0, 4, 0, 4, + 0, 1, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, + 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, + 4, 0, 4, 0, 6, 1, 1, 0, 6, 1, + 3, 0, 4, 0, 1, 1, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 4, 3, 3, 0, 6, 1, 3, 1, 1, 1, + 1, 1, 0, 4, 0, 4, 0, 6, 0, 4, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 0, 4, 0, 4, 3, 0, 4, 3, 3, - 0, 4, 1, 1, 0, 4, 3, 3, 3, 0, - 4, 1, 1, 1, 1, 1, 0, 4, 0, 4, - 0, 4, 0, 4, 0, 4, 0, 4, 0, 6, - 0, 4, 1, 3, 1, 0, 6, 1, 3, 0, - 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 3, 0, 4, 0, 6, 1, 3, 0, 4, 1, - 3, 1, 1, 1, 1, 0, 4, 3, 3, 3 + 1, 3, 0, 4, 0, 4, 3, 0, 4, 3, + 3, 0, 4, 1, 1, 0, 4, 3, 3, 3, + 0, 4, 1, 1, 1, 1, 1, 0, 4, 0, + 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, + 6, 0, 4, 1, 3, 1, 0, 6, 1, 3, + 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 3, 0, 4, 0, 6, 1, 3, 0, 4, + 1, 3, 1, 1, 1, 1, 0, 4, 3, 3, + 3 }; @@ -4539,8 +4550,8 @@ namespace isc { namespace dhcp { "\"encapsulate\"", "\"array\"", "\"shared-networks\"", "\"pools\"", "\"pool\"", "\"user-context\"", "\"comment\"", "\"subnet\"", "\"interface\"", "\"interface-id\"", "\"id\"", "\"rapid-commit\"", - "\"reservation-mode\"", "\"disabled\"", "\"out-of-pool\"", "\"all\"", - "\"host-reservation-identifiers\"", "\"client-classes\"", + "\"reservation-mode\"", "\"disabled\"", "\"out-of-pool\"", "\"global\"", + "\"all\"", "\"host-reservation-identifiers\"", "\"client-classes\"", "\"require-client-classes\"", "\"test\"", "\"only-if-required\"", "\"client-class\"", "\"reservations\"", "\"duid\"", "\"hw-address\"", "\"circuit-id\"", "\"client-id\"", "\"hostname\"", "\"flex-id\"", @@ -4657,69 +4668,70 @@ namespace isc { namespace dhcp { const unsigned short int Dhcp4Parser::yyrline_[] = { - 0, 249, 249, 249, 250, 250, 251, 251, 252, 252, - 253, 253, 254, 254, 255, 255, 256, 256, 257, 257, - 258, 258, 259, 259, 260, 260, 261, 261, 269, 270, - 271, 272, 273, 274, 275, 278, 283, 283, 294, 297, - 298, 301, 305, 312, 312, 319, 320, 323, 327, 334, - 334, 341, 342, 345, 349, 360, 370, 370, 386, 387, - 391, 392, 393, 394, 395, 396, 399, 399, 414, 414, - 423, 424, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 460, 465, 470, 475, 480, 485, 491, 491, 502, - 503, 506, 507, 508, 509, 510, 511, 512, 515, 515, - 524, 524, 534, 534, 541, 542, 545, 545, 552, 554, - 558, 564, 564, 576, 576, 586, 587, 589, 591, 591, - 609, 609, 621, 621, 631, 632, 635, 636, 639, 639, - 649, 650, 653, 654, 655, 656, 657, 658, 659, 660, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 673, 673, 680, 681, 682, 683, 686, 686, 694, 694, - 702, 702, 710, 715, 715, 723, 728, 733, 738, 743, - 748, 753, 758, 758, 766, 766, 774, 779, 784, 784, - 794, 795, 798, 799, 800, 801, 802, 805, 810, 815, - 820, 825, 830, 830, 840, 841, 844, 845, 848, 848, - 858, 858, 868, 869, 870, 873, 874, 877, 877, 885, - 885, 893, 893, 904, 905, 908, 909, 910, 911, 912, - 913, 916, 921, 926, 931, 936, 941, 949, 949, 962, - 963, 966, 967, 974, 974, 1000, 1000, 1011, 1012, 1016, - 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, - 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, - 1037, 1038, 1039, 1040, 1043, 1043, 1051, 1051, 1059, 1059, - 1067, 1067, 1075, 1075, 1083, 1083, 1091, 1091, 1099, 1099, - 1109, 1109, 1116, 1117, 1118, 1121, 1126, 1133, 1133, 1144, - 1145, 1149, 1150, 1153, 1153, 1161, 1162, 1165, 1166, 1167, - 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, - 1178, 1179, 1180, 1181, 1182, 1189, 1189, 1202, 1202, 1211, - 1212, 1215, 1216, 1221, 1221, 1236, 1236, 1250, 1251, 1254, - 1255, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, - 1267, 1270, 1272, 1277, 1279, 1279, 1287, 1287, 1295, 1295, - 1303, 1305, 1305, 1313, 1322, 1322, 1334, 1335, 1340, 1341, - 1346, 1346, 1358, 1358, 1370, 1371, 1376, 1377, 1382, 1383, - 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1393, 1395, 1395, - 1403, 1405, 1407, 1412, 1420, 1420, 1432, 1433, 1436, 1437, - 1440, 1440, 1450, 1450, 1460, 1461, 1464, 1465, 1466, 1467, - 1468, 1469, 1470, 1473, 1473, 1481, 1481, 1506, 1506, 1536, - 1536, 1546, 1547, 1550, 1551, 1554, 1554, 1563, 1563, 1572, - 1573, 1576, 1577, 1581, 1582, 1583, 1584, 1585, 1586, 1587, - 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1598, 1598, - 1606, 1606, 1614, 1614, 1622, 1622, 1630, 1630, 1640, 1640, - 1648, 1648, 1656, 1656, 1664, 1664, 1672, 1672, 1680, 1680, - 1688, 1688, 1701, 1701, 1711, 1712, 1718, 1718, 1728, 1729, - 1732, 1732, 1742, 1743, 1746, 1747, 1750, 1751, 1752, 1753, - 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1763, 1765, 1765, - 1773, 1782, 1789, 1789, 1799, 1800, 1803, 1804, 1805, 1806, - 1807, 1810, 1810, 1818, 1818, 1828, 1828, 1840, 1840, 1850, - 1851, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, - 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, - 1875, 1880, 1880, 1888, 1888, 1896, 1901, 1901, 1909, 1914, - 1919, 1919, 1927, 1928, 1931, 1931, 1939, 1944, 1949, 1954, - 1954, 1962, 1965, 1968, 1971, 1974, 1980, 1980, 1988, 1988, - 1996, 1996, 2007, 2007, 2014, 2014, 2021, 2021, 2033, 2033, - 2043, 2043, 2054, 2055, 2059, 2063, 2063, 2075, 2076, 2080, - 2080, 2088, 2089, 2092, 2093, 2094, 2095, 2096, 2097, 2098, - 2101, 2106, 2106, 2114, 2114, 2124, 2125, 2128, 2128, 2136, - 2137, 2140, 2141, 2142, 2143, 2146, 2146, 2154, 2159, 2164 + 0, 250, 250, 250, 251, 251, 252, 252, 253, 253, + 254, 254, 255, 255, 256, 256, 257, 257, 258, 258, + 259, 259, 260, 260, 261, 261, 262, 262, 270, 271, + 272, 273, 274, 275, 276, 279, 284, 284, 295, 298, + 299, 302, 306, 313, 313, 320, 321, 324, 328, 335, + 335, 342, 343, 346, 350, 361, 371, 371, 387, 388, + 392, 393, 394, 395, 396, 397, 400, 400, 415, 415, + 424, 425, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 461, 466, 471, 476, 481, 486, 492, 492, 503, + 504, 507, 508, 509, 510, 511, 512, 513, 516, 516, + 525, 525, 535, 535, 542, 543, 546, 546, 553, 555, + 559, 565, 565, 577, 577, 587, 588, 590, 592, 592, + 610, 610, 622, 622, 632, 633, 636, 637, 640, 640, + 650, 651, 654, 655, 656, 657, 658, 659, 660, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 674, 674, 681, 682, 683, 684, 687, 687, 695, 695, + 703, 703, 711, 716, 716, 724, 729, 734, 739, 744, + 749, 754, 759, 759, 767, 767, 775, 780, 785, 785, + 795, 796, 799, 800, 801, 802, 803, 806, 811, 816, + 821, 826, 831, 831, 841, 842, 845, 846, 849, 849, + 859, 859, 869, 870, 871, 874, 875, 878, 878, 886, + 886, 894, 894, 905, 906, 909, 910, 911, 912, 913, + 914, 917, 922, 927, 932, 937, 942, 950, 950, 963, + 964, 967, 968, 975, 975, 1001, 1001, 1012, 1013, 1017, + 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, + 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, + 1038, 1039, 1040, 1041, 1044, 1044, 1052, 1052, 1060, 1060, + 1068, 1068, 1076, 1076, 1084, 1084, 1092, 1092, 1100, 1100, + 1110, 1110, 1117, 1118, 1119, 1120, 1123, 1128, 1135, 1135, + 1146, 1147, 1151, 1152, 1155, 1155, 1163, 1164, 1167, 1168, + 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, + 1179, 1180, 1181, 1182, 1183, 1184, 1191, 1191, 1204, 1204, + 1213, 1214, 1217, 1218, 1223, 1223, 1238, 1238, 1252, 1253, + 1256, 1257, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, + 1268, 1269, 1272, 1274, 1279, 1281, 1281, 1289, 1289, 1297, + 1297, 1305, 1307, 1307, 1315, 1324, 1324, 1336, 1337, 1342, + 1343, 1348, 1348, 1360, 1360, 1372, 1373, 1378, 1379, 1384, + 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1395, 1397, + 1397, 1405, 1407, 1409, 1414, 1422, 1422, 1434, 1435, 1438, + 1439, 1442, 1442, 1452, 1452, 1462, 1463, 1466, 1467, 1468, + 1469, 1470, 1471, 1472, 1475, 1475, 1483, 1483, 1508, 1508, + 1538, 1538, 1548, 1549, 1552, 1553, 1556, 1556, 1565, 1565, + 1574, 1575, 1578, 1579, 1583, 1584, 1585, 1586, 1587, 1588, + 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1600, + 1600, 1608, 1608, 1616, 1616, 1624, 1624, 1632, 1632, 1642, + 1642, 1650, 1650, 1658, 1658, 1666, 1666, 1674, 1674, 1682, + 1682, 1690, 1690, 1703, 1703, 1713, 1714, 1720, 1720, 1730, + 1731, 1734, 1734, 1744, 1745, 1748, 1749, 1752, 1753, 1754, + 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1765, 1767, + 1767, 1775, 1784, 1791, 1791, 1801, 1802, 1805, 1806, 1807, + 1808, 1809, 1812, 1812, 1820, 1820, 1830, 1830, 1842, 1842, + 1852, 1853, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, + 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, + 1874, 1877, 1882, 1882, 1890, 1890, 1898, 1903, 1903, 1911, + 1916, 1921, 1921, 1929, 1930, 1933, 1933, 1941, 1946, 1951, + 1956, 1956, 1964, 1967, 1970, 1973, 1976, 1982, 1982, 1990, + 1990, 1998, 1998, 2009, 2009, 2016, 2016, 2023, 2023, 2035, + 2035, 2045, 2045, 2056, 2057, 2061, 2065, 2065, 2077, 2078, + 2082, 2082, 2090, 2091, 2094, 2095, 2096, 2097, 2098, 2099, + 2100, 2103, 2108, 2108, 2116, 2116, 2126, 2127, 2130, 2130, + 2138, 2139, 2142, 2143, 2144, 2145, 2148, 2148, 2156, 2161, + 2166 }; // Print the state stack on the debug stream. @@ -4754,8 +4766,8 @@ namespace isc { namespace dhcp { #line 14 "dhcp4_parser.yy" // lalr1.cc:1167 } } // isc::dhcp -#line 4758 "dhcp4_parser.cc" // lalr1.cc:1167 -#line 2169 "dhcp4_parser.yy" // lalr1.cc:1168 +#line 4770 "dhcp4_parser.cc" // lalr1.cc:1167 +#line 2171 "dhcp4_parser.yy" // lalr1.cc:1168 void diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h index 7868faffad..37662f5981 100644 --- a/src/bin/dhcp4/dhcp4_parser.h +++ b/src/bin/dhcp4/dhcp4_parser.h @@ -427,89 +427,90 @@ namespace isc { namespace dhcp { TOKEN_RESERVATION_MODE = 334, TOKEN_DISABLED = 335, TOKEN_OUT_OF_POOL = 336, - TOKEN_ALL = 337, - TOKEN_HOST_RESERVATION_IDENTIFIERS = 338, - TOKEN_CLIENT_CLASSES = 339, - TOKEN_REQUIRE_CLIENT_CLASSES = 340, - TOKEN_TEST = 341, - TOKEN_ONLY_IF_REQUIRED = 342, - TOKEN_CLIENT_CLASS = 343, - TOKEN_RESERVATIONS = 344, - TOKEN_DUID = 345, - TOKEN_HW_ADDRESS = 346, - TOKEN_CIRCUIT_ID = 347, - TOKEN_CLIENT_ID = 348, - TOKEN_HOSTNAME = 349, - TOKEN_FLEX_ID = 350, - TOKEN_RELAY = 351, - TOKEN_IP_ADDRESS = 352, - TOKEN_IP_ADDRESSES = 353, - TOKEN_HOOKS_LIBRARIES = 354, - TOKEN_LIBRARY = 355, - TOKEN_PARAMETERS = 356, - TOKEN_EXPIRED_LEASES_PROCESSING = 357, - TOKEN_RECLAIM_TIMER_WAIT_TIME = 358, - TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 359, - TOKEN_HOLD_RECLAIMED_TIME = 360, - TOKEN_MAX_RECLAIM_LEASES = 361, - TOKEN_MAX_RECLAIM_TIME = 362, - TOKEN_UNWARNED_RECLAIM_CYCLES = 363, - TOKEN_DHCP4O6_PORT = 364, - TOKEN_CONTROL_SOCKET = 365, - TOKEN_SOCKET_TYPE = 366, - TOKEN_SOCKET_NAME = 367, - TOKEN_DHCP_DDNS = 368, - TOKEN_ENABLE_UPDATES = 369, - TOKEN_QUALIFYING_SUFFIX = 370, - TOKEN_SERVER_IP = 371, - TOKEN_SERVER_PORT = 372, - TOKEN_SENDER_IP = 373, - TOKEN_SENDER_PORT = 374, - TOKEN_MAX_QUEUE_SIZE = 375, - TOKEN_NCR_PROTOCOL = 376, - TOKEN_NCR_FORMAT = 377, - TOKEN_ALWAYS_INCLUDE_FQDN = 378, - TOKEN_OVERRIDE_NO_UPDATE = 379, - TOKEN_OVERRIDE_CLIENT_UPDATE = 380, - TOKEN_REPLACE_CLIENT_NAME = 381, - TOKEN_GENERATED_PREFIX = 382, - TOKEN_TCP = 383, - TOKEN_JSON = 384, - TOKEN_WHEN_PRESENT = 385, - TOKEN_NEVER = 386, - TOKEN_ALWAYS = 387, - TOKEN_WHEN_NOT_PRESENT = 388, - TOKEN_HOSTNAME_CHAR_SET = 389, - TOKEN_HOSTNAME_CHAR_REPLACEMENT = 390, - TOKEN_LOGGING = 391, - TOKEN_LOGGERS = 392, - TOKEN_OUTPUT_OPTIONS = 393, - TOKEN_OUTPUT = 394, - TOKEN_DEBUGLEVEL = 395, - TOKEN_SEVERITY = 396, - TOKEN_FLUSH = 397, - TOKEN_MAXSIZE = 398, - TOKEN_MAXVER = 399, - TOKEN_DHCP6 = 400, - TOKEN_DHCPDDNS = 401, - TOKEN_CONTROL_AGENT = 402, - TOKEN_TOPLEVEL_JSON = 403, - TOKEN_TOPLEVEL_DHCP4 = 404, - TOKEN_SUB_DHCP4 = 405, - TOKEN_SUB_INTERFACES4 = 406, - TOKEN_SUB_SUBNET4 = 407, - TOKEN_SUB_POOL4 = 408, - TOKEN_SUB_RESERVATION = 409, - TOKEN_SUB_OPTION_DEFS = 410, - TOKEN_SUB_OPTION_DEF = 411, - TOKEN_SUB_OPTION_DATA = 412, - TOKEN_SUB_HOOKS_LIBRARY = 413, - TOKEN_SUB_DHCP_DDNS = 414, - TOKEN_SUB_LOGGING = 415, - TOKEN_STRING = 416, - TOKEN_INTEGER = 417, - TOKEN_FLOAT = 418, - TOKEN_BOOLEAN = 419 + TOKEN_GLOBAL = 337, + TOKEN_ALL = 338, + TOKEN_HOST_RESERVATION_IDENTIFIERS = 339, + TOKEN_CLIENT_CLASSES = 340, + TOKEN_REQUIRE_CLIENT_CLASSES = 341, + TOKEN_TEST = 342, + TOKEN_ONLY_IF_REQUIRED = 343, + TOKEN_CLIENT_CLASS = 344, + TOKEN_RESERVATIONS = 345, + TOKEN_DUID = 346, + TOKEN_HW_ADDRESS = 347, + TOKEN_CIRCUIT_ID = 348, + TOKEN_CLIENT_ID = 349, + TOKEN_HOSTNAME = 350, + TOKEN_FLEX_ID = 351, + TOKEN_RELAY = 352, + TOKEN_IP_ADDRESS = 353, + TOKEN_IP_ADDRESSES = 354, + TOKEN_HOOKS_LIBRARIES = 355, + TOKEN_LIBRARY = 356, + TOKEN_PARAMETERS = 357, + TOKEN_EXPIRED_LEASES_PROCESSING = 358, + TOKEN_RECLAIM_TIMER_WAIT_TIME = 359, + TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 360, + TOKEN_HOLD_RECLAIMED_TIME = 361, + TOKEN_MAX_RECLAIM_LEASES = 362, + TOKEN_MAX_RECLAIM_TIME = 363, + TOKEN_UNWARNED_RECLAIM_CYCLES = 364, + TOKEN_DHCP4O6_PORT = 365, + TOKEN_CONTROL_SOCKET = 366, + TOKEN_SOCKET_TYPE = 367, + TOKEN_SOCKET_NAME = 368, + TOKEN_DHCP_DDNS = 369, + TOKEN_ENABLE_UPDATES = 370, + TOKEN_QUALIFYING_SUFFIX = 371, + TOKEN_SERVER_IP = 372, + TOKEN_SERVER_PORT = 373, + TOKEN_SENDER_IP = 374, + TOKEN_SENDER_PORT = 375, + TOKEN_MAX_QUEUE_SIZE = 376, + TOKEN_NCR_PROTOCOL = 377, + TOKEN_NCR_FORMAT = 378, + TOKEN_ALWAYS_INCLUDE_FQDN = 379, + TOKEN_OVERRIDE_NO_UPDATE = 380, + TOKEN_OVERRIDE_CLIENT_UPDATE = 381, + TOKEN_REPLACE_CLIENT_NAME = 382, + TOKEN_GENERATED_PREFIX = 383, + TOKEN_TCP = 384, + TOKEN_JSON = 385, + TOKEN_WHEN_PRESENT = 386, + TOKEN_NEVER = 387, + TOKEN_ALWAYS = 388, + TOKEN_WHEN_NOT_PRESENT = 389, + TOKEN_HOSTNAME_CHAR_SET = 390, + TOKEN_HOSTNAME_CHAR_REPLACEMENT = 391, + TOKEN_LOGGING = 392, + TOKEN_LOGGERS = 393, + TOKEN_OUTPUT_OPTIONS = 394, + TOKEN_OUTPUT = 395, + TOKEN_DEBUGLEVEL = 396, + TOKEN_SEVERITY = 397, + TOKEN_FLUSH = 398, + TOKEN_MAXSIZE = 399, + TOKEN_MAXVER = 400, + TOKEN_DHCP6 = 401, + TOKEN_DHCPDDNS = 402, + TOKEN_CONTROL_AGENT = 403, + TOKEN_TOPLEVEL_JSON = 404, + TOKEN_TOPLEVEL_DHCP4 = 405, + TOKEN_SUB_DHCP4 = 406, + TOKEN_SUB_INTERFACES4 = 407, + TOKEN_SUB_SUBNET4 = 408, + TOKEN_SUB_POOL4 = 409, + TOKEN_SUB_RESERVATION = 410, + TOKEN_SUB_OPTION_DEFS = 411, + TOKEN_SUB_OPTION_DEF = 412, + TOKEN_SUB_OPTION_DATA = 413, + TOKEN_SUB_HOOKS_LIBRARY = 414, + TOKEN_SUB_DHCP_DDNS = 415, + TOKEN_SUB_LOGGING = 416, + TOKEN_STRING = 417, + TOKEN_INTEGER = 418, + TOKEN_FLOAT = 419, + TOKEN_BOOLEAN = 420 }; }; @@ -944,6 +945,10 @@ namespace isc { namespace dhcp { symbol_type make_OUT_OF_POOL (const location_type& l); + static inline + symbol_type + make_GLOBAL (const location_type& l); + static inline symbol_type make_ALL (const location_type& l); @@ -1481,12 +1486,12 @@ namespace isc { namespace dhcp { enum { yyeof_ = 0, - yylast_ = 964, ///< Last index in yytable_. + yylast_ = 965, ///< Last index in yytable_. yynnts_ = 363, ///< Number of nonterminal symbols. yyfinal_ = 28, ///< Termination state number. yyterror_ = 1, yyerrcode_ = 256, - yyntokens_ = 165 ///< Number of tokens. + yyntokens_ = 166 ///< Number of tokens. }; @@ -1544,9 +1549,10 @@ namespace isc { namespace dhcp { 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164 + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165 }; - const unsigned int user_token_number_max_ = 419; + const unsigned int user_token_number_max_ = 420; const token_number_type undef_token_ = 2; if (static_cast(t) <= yyeof_) @@ -1579,30 +1585,30 @@ namespace isc { namespace dhcp { { switch (other.type_get ()) { - case 180: // value - case 184: // map_value - case 222: // socket_type - case 225: // outbound_interface_value - case 247: // db_type - case 331: // hr_mode - case 479: // ncr_protocol_value - case 487: // replace_client_name_value + case 181: // value + case 185: // map_value + case 223: // socket_type + case 226: // outbound_interface_value + case 248: // db_type + case 332: // hr_mode + case 480: // ncr_protocol_value + case 488: // replace_client_name_value value.copy< ElementPtr > (other.value); break; - case 164: // "boolean" + case 165: // "boolean" value.copy< bool > (other.value); break; - case 163: // "floating point" + case 164: // "floating point" value.copy< double > (other.value); break; - case 162: // "integer" + case 163: // "integer" value.copy< int64_t > (other.value); break; - case 161: // "constant string" + case 162: // "constant string" value.copy< std::string > (other.value); break; @@ -1623,30 +1629,30 @@ namespace isc { namespace dhcp { (void) v; switch (this->type_get ()) { - case 180: // value - case 184: // map_value - case 222: // socket_type - case 225: // outbound_interface_value - case 247: // db_type - case 331: // hr_mode - case 479: // ncr_protocol_value - case 487: // replace_client_name_value + case 181: // value + case 185: // map_value + case 223: // socket_type + case 226: // outbound_interface_value + case 248: // db_type + case 332: // hr_mode + case 480: // ncr_protocol_value + case 488: // replace_client_name_value value.copy< ElementPtr > (v); break; - case 164: // "boolean" + case 165: // "boolean" value.copy< bool > (v); break; - case 163: // "floating point" + case 164: // "floating point" value.copy< double > (v); break; - case 162: // "integer" + case 163: // "integer" value.copy< int64_t > (v); break; - case 161: // "constant string" + case 162: // "constant string" value.copy< std::string > (v); break; @@ -1726,30 +1732,30 @@ namespace isc { namespace dhcp { // Type destructor. switch (yytype) { - case 180: // value - case 184: // map_value - case 222: // socket_type - case 225: // outbound_interface_value - case 247: // db_type - case 331: // hr_mode - case 479: // ncr_protocol_value - case 487: // replace_client_name_value + case 181: // value + case 185: // map_value + case 223: // socket_type + case 226: // outbound_interface_value + case 248: // db_type + case 332: // hr_mode + case 480: // ncr_protocol_value + case 488: // replace_client_name_value value.template destroy< ElementPtr > (); break; - case 164: // "boolean" + case 165: // "boolean" value.template destroy< bool > (); break; - case 163: // "floating point" + case 164: // "floating point" value.template destroy< double > (); break; - case 162: // "integer" + case 163: // "integer" value.template destroy< int64_t > (); break; - case 161: // "constant string" + case 162: // "constant string" value.template destroy< std::string > (); break; @@ -1776,30 +1782,30 @@ namespace isc { namespace dhcp { super_type::move(s); switch (this->type_get ()) { - case 180: // value - case 184: // map_value - case 222: // socket_type - case 225: // outbound_interface_value - case 247: // db_type - case 331: // hr_mode - case 479: // ncr_protocol_value - case 487: // replace_client_name_value + case 181: // value + case 185: // map_value + case 223: // socket_type + case 226: // outbound_interface_value + case 248: // db_type + case 332: // hr_mode + case 480: // ncr_protocol_value + case 488: // replace_client_name_value value.move< ElementPtr > (s.value); break; - case 164: // "boolean" + case 165: // "boolean" value.move< bool > (s.value); break; - case 163: // "floating point" + case 164: // "floating point" value.move< double > (s.value); break; - case 162: // "integer" + case 163: // "integer" value.move< int64_t > (s.value); break; - case 161: // "constant string" + case 162: // "constant string" value.move< std::string > (s.value); break; @@ -1874,7 +1880,7 @@ namespace isc { namespace dhcp { 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419 + 415, 416, 417, 418, 419, 420 }; return static_cast (yytoken_number_[type]); } @@ -2359,6 +2365,12 @@ namespace isc { namespace dhcp { return symbol_type (token::TOKEN_OUT_OF_POOL, l); } + Dhcp4Parser::symbol_type + Dhcp4Parser::make_GLOBAL (const location_type& l) + { + return symbol_type (token::TOKEN_GLOBAL, l); + } + Dhcp4Parser::symbol_type Dhcp4Parser::make_ALL (const location_type& l) { @@ -2860,7 +2872,7 @@ namespace isc { namespace dhcp { #line 14 "dhcp4_parser.yy" // lalr1.cc:377 } } // isc::dhcp -#line 2864 "dhcp4_parser.h" // lalr1.cc:377 +#line 2876 "dhcp4_parser.h" // lalr1.cc:377 diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy index 9449a7a1f2..a065259a75 100644 --- a/src/bin/dhcp4/dhcp4_parser.yy +++ b/src/bin/dhcp4/dhcp4_parser.yy @@ -128,6 +128,7 @@ using namespace std; RESERVATION_MODE "reservation-mode" DISABLED "disabled" OUT_OF_POOL "out-of-pool" + GLOBAL "global" ALL "all" HOST_RESERVATION_IDENTIFIERS "host-reservation-identifiers" @@ -1115,6 +1116,7 @@ reservation_mode: RESERVATION_MODE { hr_mode: DISABLED { $$ = ElementPtr(new StringElement("disabled", ctx.loc2pos(@1))); } | OUT_OF_POOL { $$ = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(@1))); } + | GLOBAL { $$ = ElementPtr(new StringElement("global", ctx.loc2pos(@1))); } | ALL { $$ = ElementPtr(new StringElement("all", ctx.loc2pos(@1))); } ; diff --git a/src/bin/dhcp4/tests/dhcp4_test_utils.cc b/src/bin/dhcp4/tests/dhcp4_test_utils.cc index 75c31f3f67..2bd898787b 100644 --- a/src/bin/dhcp4/tests/dhcp4_test_utils.cc +++ b/src/bin/dhcp4/tests/dhcp4_test_utils.cc @@ -605,7 +605,14 @@ void Dhcpv4SrvTest::configure(const std::string& config, NakedDhcpv4Srv& srv, const bool commit) { ConstElementPtr json; - ASSERT_NO_THROW(json = parseJSON(config)); + try { + json = parseJSON(config); + } catch (const std::exception& ex){ + FAIL() << "parsing failure:" + << "config:" << config << std::endl + << "error: " << ex.what(); + } + ConstElementPtr status; // Disable the re-detect flag @@ -616,7 +623,7 @@ Dhcpv4SrvTest::configure(const std::string& config, NakedDhcpv4Srv& srv, ASSERT_TRUE(status); int rcode; ConstElementPtr comment = config::parseAnswer(rcode, status); - ASSERT_EQ(0, rcode); + ASSERT_EQ(0, rcode) << comment->stringValue(); // Use specified lease database backend. ASSERT_NO_THROW( { diff --git a/src/bin/dhcp4/tests/get_config_unittest.cc b/src/bin/dhcp4/tests/get_config_unittest.cc index e9468485fc..89aeef5939 100644 --- a/src/bin/dhcp4/tests/get_config_unittest.cc +++ b/src/bin/dhcp4/tests/get_config_unittest.cc @@ -68,6 +68,7 @@ namespace { ///@{ /// @brief extracted configurations const char* EXTRACTED_CONFIGS[] = { + // CONFIGURATION 0 "{\n" " \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ],\n" @@ -1919,6 +1920,7 @@ const char* EXTRACTED_CONFIGS[] = { /// @brief unparsed configurations const char* UNPARSED_CONFIGS[] = { + // CONFIGURATION 0 "{\n" " \"decline-probation-period\": 86400,\n" " \"dhcp-ddns\": {\n" diff --git a/src/bin/dhcp4/tests/host_unittest.cc b/src/bin/dhcp4/tests/host_unittest.cc index d05f229b2f..5e0671c735 100644 --- a/src/bin/dhcp4/tests/host_unittest.cc +++ b/src/bin/dhcp4/tests/host_unittest.cc @@ -36,7 +36,9 @@ namespace { /// - 5 global reservations /// - 1 subnet: 10.0.0.0/24 const char* CONFIGS[] = { -// Configuration 4 + // Configuration 0 + // 1 subnet, mode HR_GLOBAL, + // global reservations for different identifier types "{ \"interfaces-config\": {\n" " \"interfaces\": [ \"*\" ]\n" "},\n" @@ -50,7 +52,7 @@ const char* CONFIGS[] = { "{\n" " \"hw-address\": \"01:02:03:04:05:06\",\n" " \"hostname\": \"hw-host-fixed\",\n" - " \"ip-address\": \"10.0.0.7\"\n" + " \"ip-address\": \"192.0.1.77\"\n" "},\n" "{\n" " \"duid\": \"01:02:03:04:05\",\n" @@ -68,9 +70,105 @@ const char* CONFIGS[] = { "\"valid-lifetime\": 600,\n" "\"subnet4\": [ { \n" " \"subnet\": \"10.0.0.0/24\", \n" + " \"reservation-mode\": \"global\"," " \"pools\": [ { \"pool\": \"10.0.0.10-10.0.0.100\" } ]\n" "} ]\n" "}\n" + , + // Configuration 1 global vs in-pool + // 2 subnets, one mode default (aka HR_ALL), one mode HR_GLOBAL + // Host reservations for the same client, one global, one in each subnet + "{ \"interfaces-config\": {\n" + " \"interfaces\": [ \"*\" ]\n" + "},\n" + "\"valid-lifetime\": 600,\n" + "\"reservations\": [ \n" + "{\n" + " \"hw-address\": \"aa:bb:cc:dd:ee:ff\",\n" + " \"hostname\": \"global-host\"\n" + "}\n" + "],\n" + "\"subnet4\": [\n" + " {\n" + " \"subnet\": \"10.0.0.0/24\", \n" + " \"id\": 10," + " \"pools\": [ { \"pool\": \"10.0.0.10-10.0.0.100\" } ],\n" + " \"interface\": \"eth0\",\n" + " \"reservations\": [ \n" + " {\n" + " \"hw-address\": \"aa:bb:cc:dd:ee:ff\",\n" + " \"hostname\": \"subnet-10-host\"\n" + " }]\n" + " },\n" + " {\n" + " \"subnet\": \"192.0.2.0/26\", \n" + " \"id\": 20," + " \"pools\": [ { \"pool\": \"192.0.2.10-192.0.2.63\" } ],\n" + " \"interface\": \"eth1\",\n" + " \"reservation-mode\": \"global\"," + " \"reservations\": [ \n" + " {\n" + " \"hw-address\": \"aa:bb:cc:dd:ee:ff\",\n" + " \"hostname\": \"subnet-20-host\"\n" + " }]\n" + " }\n" + "]\n" + "}\n" + , + // Configuration 2 global and out-of-pool + "{ \"interfaces-config\": {\n" + " \"interfaces\": [ \"*\" ]\n" + "},\n" + "\"valid-lifetime\": 600,\n" + "\"reservations\": [ \n" + "{\n" + " \"hw-address\": \"aa:bb:cc:dd:ee:ff\",\n" + " \"hostname\": \"global-host\"\n" + "}\n" + "],\n" + "\"subnet4\": [\n" + " {\n" + " \"subnet\": \"10.0.0.0/24\", \n" + " \"id\": 10," + " \"pools\": [ { \"pool\": \"10.0.0.10-10.0.0.100\" } ],\n" + " \"interface\": \"eth0\",\n" + " \"reservation-mode\": \"out-of-pool\"," + " \"reservations\": [ \n" + " {\n" + " \"hw-address\": \"aa:bb:cc:dd:ee:ff\",\n" + " \"hostname\": \"subnet-10-host\",\n" + " \"ip-address\": \"192.0.5.10\"\n" + " }]\n" + " }\n" + "]\n" + "}\n" + , + // Configuration 3 global and all + "{ \"interfaces-config\": {\n" + " \"interfaces\": [ \"*\" ]\n" + "},\n" + "\"valid-lifetime\": 600,\n" + "\"reservations\": [ \n" + "{\n" + " \"hw-address\": \"aa:bb:cc:dd:ee:ff\",\n" + " \"hostname\": \"global-host\"\n" + "}\n" + "],\n" + "\"subnet4\": [\n" + " {\n" + " \"subnet\": \"10.0.0.0/24\", \n" + " \"id\": 10," " \"pools\": [ { \"pool\": \"10.0.0.10-10.0.0.100\" } ],\n" + " \"interface\": \"eth0\",\n" + " \"reservation-mode\": \"all\"," + " \"reservations\": [ \n" + " {\n" + " \"hw-address\": \"aa:bb:cc:dd:ee:ff\",\n" + " \"hostname\": \"subnet-10-host\",\n" + " \"ip-address\": \"192.0.5.10\"\n" + " }]\n" + " }\n" + "]\n" + "}\n" }; /// @brief Test fixture class for testing v4 exchanges. @@ -105,7 +203,7 @@ public: const std::string& expected_addr) { // Configure DHCP server. - configure(config, *client.getServer()); + ASSERT_NO_FATAL_FAILURE(configure(config, *client.getServer())); client.requestOptions(DHO_HOST_NAME); // Perform 4-way exchange with the server but to not request any @@ -136,6 +234,19 @@ public: }; +// Verifies that a client, which fails to match to a global +// reservation, still gets a dynamic address when subnet mode is HR_GLOBAL +TEST_F(HostTest, globalHardwareNoMatch) { + Dhcp4Client client(Dhcp4Client::SELECTING); + + client.setHWAddress("99:99:99:99:99:99"); + runDoraTest(CONFIGS[0], client, "", "10.0.0.10"); +} + + +// Verifies that a client, that matches to a global hostname +// reservation, gets both the hostname and a dynamic address, +// when the subnet mode is HR_GLOBAL TEST_F(HostTest, globalHardwareDynamicAddress) { Dhcp4Client client(Dhcp4Client::SELECTING); @@ -144,12 +255,122 @@ TEST_F(HostTest, globalHardwareDynamicAddress) { } +// Verifies that a client matched to a global address reservation +// reservation, gets both the hostname and the reserved address +// when the subnet mode is HR_GLOBAL TEST_F(HostTest, globalHardwareFixedAddress) { Dhcp4Client client(Dhcp4Client::SELECTING); //client.includeClientId(clientid_a); client.setHWAddress("01:02:03:04:05:06"); - runDoraTest(CONFIGS[0], client, "hw-host-fixed", "10.0.0.7"); + runDoraTest(CONFIGS[0], client, "hw-host-fixed", "192.0.1.77"); +} + +// Verifies that a client, can be matched to a global reservation by DUID +TEST_F(HostTest, globalDuid) { + Dhcp4Client client(Dhcp4Client::SELECTING); + + // Set hw address to a none-matching value + client.setHWAddress("99:99:99:99:99:99"); + + // - FF is a client identifier type for DUID, + // - 45454545 - represents 4 bytes for IAID + // - 01:02:03:04:05 - is an actual DUID for which there is a + client.includeClientId("FF:45:45:45:45:01:02:03:04:05"); + + runDoraTest(CONFIGS[0], client, "duid-host", "10.0.0.10"); +} + +// Verifies that a client, can be matched to a global reservation by ciruit-id +TEST_F(HostTest, globalCircuitId) { + Dhcp4Client client(Dhcp4Client::SELECTING); + + // Set hw address to a none-matching value + client.setHWAddress("99:99:99:99:99:99"); + + // Use relay agent so as the circuit-id can be inserted. + client.useRelay(true, IOAddress("10.0.0.1"), IOAddress("10.0.0.2")); + + // Set the circuit id + client.setCircuitId("charter950"); + + runDoraTest(CONFIGS[0], client, "circuit-id-host", "10.0.0.10"); +} + +// Verifies that a client, can be matched to a global reservation by client-id +TEST_F(HostTest, globalClientID) { + Dhcp4Client client(Dhcp4Client::SELECTING); + + // Set hw address to a none-matching value + client.setHWAddress("99:99:99:99:99:99"); + + // - 01 is a client identifier type for CLIENT_ID, + // - 11:22:33:44:55:66 - is an actual DUID for which there is a + client.includeClientId("01:11:22:33:44:55:66"); + + runDoraTest(CONFIGS[0], client, "client-id-host", "10.0.0.10"); +} + +// Verifies that even when a matching global reservation exists, +// client will get a subnet scoped reservation, when subnet +// reservation mode is default +TEST_F(HostTest, defaultOverGlobal) { + Dhcp4Client client(Dhcp4Client::SELECTING); + + // Hardware address matches all reservations + client.setHWAddress("aa:bb:cc:dd:ee:ff"); + + // Subnet 10 usses default HR mode(i.e. "in-pool"), so its + // reservation should be used, rather than global. + runDoraTest(CONFIGS[1], client, "subnet-10-host", "10.0.0.10"); +} + +// Verifies that when there are matching reservations at +// both the global and subnet levels, client will be matched +// to the global reservation, when subnet reservation mode +// is HR_GLOBAL. +TEST_F(HostTest, globalOverSubnet) { + Dhcp4Client client(Dhcp4Client::SELECTING); + + // Hardware address matches all reservations + client.setHWAddress("aa:bb:cc:dd:ee:ff"); + + // Change to subnet 20 + client.setIfaceName("eth1"); + + // Subnet 20 usses global HR mode, so the global + // reservation should be used, rather than the subnet one. + runDoraTest(CONFIGS[1], client, "global-host", "192.0.2.10"); +} + +// Verifies that when there are matching reservations at +// both the global and subnet levels, client will be matched +// to the subnet reservation, when subnet reservation mode +// is HR_OUT_OF_POOL +TEST_F(HostTest, outOfPoolOverGlobal) { + Dhcp4Client client(Dhcp4Client::SELECTING); + + // Hardware address matches all reservations + client.setHWAddress("aa:bb:cc:dd:ee:ff"); + + // Subnet 10 usses default HR mode(i.e. "in-pool"), so its + // reservation should be used, rather than global. + runDoraTest(CONFIGS[2], client, "subnet-10-host", "192.0.5.10"); +} + +// Verifies that when there are matching reservations at +// both the global and subnet levels, client will be matched +// to the subnet reservation, when subnet reservation mode +// is HR_ALL +TEST_F(HostTest, allOverGlobal) { + Dhcp4Client client(Dhcp4Client::SELECTING); + + // Hardware address matches all reservations + client.setHWAddress("aa:bb:cc:dd:ee:ff"); + + // Subnet 10 usses default HR mode(i.e. "in-pool"), so its + // reservation should be used, rather than global. + runDoraTest(CONFIGS[3], client, "subnet-10-host", "192.0.5.10"); } } // end of anonymous namespace diff --git a/src/lib/dhcpsrv/network.cc b/src/lib/dhcpsrv/network.cc index cb996a387d..376e2568d8 100644 --- a/src/lib/dhcpsrv/network.cc +++ b/src/lib/dhcpsrv/network.cc @@ -169,6 +169,9 @@ Network::toElement() const { case HR_OUT_OF_POOL: mode = "out-of-pool"; break; + case HR_GLOBAL: + mode = "global"; + break; case HR_ALL: mode = "all"; break; diff --git a/src/lib/dhcpsrv/parsers/dhcp_parsers.cc b/src/lib/dhcpsrv/parsers/dhcp_parsers.cc index 7b9d26f995..ad2b8bcd2d 100644 --- a/src/lib/dhcpsrv/parsers/dhcp_parsers.cc +++ b/src/lib/dhcpsrv/parsers/dhcp_parsers.cc @@ -522,6 +522,8 @@ SubnetConfigParser::hrModeFromText(const std::string& txt) { return (Network::HR_DISABLED); } else if (txt.compare("out-of-pool") == 0) { return (Network::HR_OUT_OF_POOL); + } else if (txt.compare("global") == 0) { + return (Network::HR_GLOBAL); } else if (txt.compare("all") == 0) { return (Network::HR_ALL); } else {