diff options
author | Thomas Markwalder <tmark@isc.org> | 2018-08-07 12:46:30 +0200 |
---|---|---|
committer | Thomas Markwalder <tmark@isc.org> | 2018-08-07 12:46:30 +0200 |
commit | f1b3b3c76d5080fb1dbccc22231b7ba29af65768 (patch) | |
tree | c745a56e1d09d82955667397297078a4107d847d /src | |
parent | [5704] Added subnet-id = 0 unit tests to host data sources (diff) | |
download | kea-f1b3b3c76d5080fb1dbccc22231b7ba29af65768.tar.xz kea-f1b3b3c76d5080fb1dbccc22231b7ba29af65768.zip |
[5704] host backends and kea-dhcp4/6 support global HR storage
- Added constants for special SubnetIDs:
SUBNET_ID_GLOBAL, SUBNET_ID_MAX, SUBNET_ID_UNUSED
- Modified code throughout to use these constants, rather than hard-coded
values. Note, MySQL and PostgreSQL host backends convert from NULL to
UNUSED and back.
- kea-dhcp4/6 servers will now parse a "reservations" element at the global
level.
src/lib/dhcpsrv/subnet_id.h
Added constants SubnetID SUBNET_ID_GLOBAL, SUBNET_ID_MAX, SUBNET_ID_UNUSED
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/json_config_parser.cc
kea-dhcp4 parsing now handles reservations as a global element
src/bin/dhcp4/tests/config_parser_unittest.cc
TEST_F(Dhcp4ParserTest, globalReservations) - new test to
verify global HR parsing
src/bin/dhcp4/tests/dora_unittest.cc
src/lib/dhcpsrv/cfg_hosts.cc
src/lib/dhcpsrv/host.cc
src/lib/dhcpsrv/host_mgr.cc
src/lib/dhcpsrv/mysql_host_data_source.cc
src/lib/dhcpsrv/parsers/host_reservation_parser.cc
src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc
src/lib/dhcpsrv/tests/alloc_engine_utils.cc
src/lib/dhcpsrv/tests/host_mgr_unittest.cc
src/lib/dhcpsrv/tests/host_reservation_parser_unittest.cc
src/lib/dhcpsrv/tests/host_reservations_list_parser_unittest.cc
src/lib/dhcpsrv/tests/host_unittest.cc
Replaced SubnetID 0 with SUBNET_ID_UNUSED
src/lib/dhcpsrv/srv_config.cc
SrvConfig::toElement() - added global reservations output
src/lib/dhcpsrv/tests/cfg_hosts_unittest.cc
TEST_F(CfgHostsTest, globalSubnetIDs)
TEST_F(CfgHostsTest, unusedSubnetIDs) - new tests
src/lib/dhcpsrv/tests/host_unittest.cc
Replaced SubnetID 0 with SUBNET_ID_UNUSED
TEST_F(HostTest, toText) - updated to verify global ID output
src/lib/dhcpsrv/tests/mysql_host_data_source_unittest.cc
TEST_F(MySqlHostDataSourceTest, globalSubnetId4)
TEST_F(MySqlHostDataSourceTest, globalSubnetId6) - new tests
src/lib/dhcpsrv/tests/srv_config_unittest.cc
TEST_F(SrvConfigTest, unparseHR) - added global HRs
src/lib/dhcpsrv/testutils/generic_host_data_source_unittest.*
GenericHostDataSourceTest::testGlobalSubnetId4()
GenericHostDataSourceTest::testGlobalSubnetId6()
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/json_config_parser.cc
kea-dhcp6 now parses reservations as a global element
src/bin/dhcp6/tests/config_parser_unittest.cc
TEST_F(Dhcp6ParserTest, globalReservations) - new test
Diffstat (limited to 'src')
38 files changed, 4469 insertions, 4842 deletions
diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc index 55cd6bb2dc..756a7cfd26 100644 --- a/src/bin/dhcp4/dhcp4_lexer.cc +++ b/src/bin/dhcp4/dhcp4_lexer.cc @@ -7,21 +7,16 @@ /* A lexical scanner generated by flex */ /* %not-for-header */ + /* %if-c-only */ /* %if-not-reentrant */ #define yy_create_buffer parser4__create_buffer #define yy_delete_buffer parser4__delete_buffer -#define yy_scan_buffer parser4__scan_buffer -#define yy_scan_string parser4__scan_string -#define yy_scan_bytes parser4__scan_bytes +#define yy_flex_debug parser4__flex_debug #define yy_init_buffer parser4__init_buffer #define yy_flush_buffer parser4__flush_buffer #define yy_load_buffer_state parser4__load_buffer_state #define yy_switch_to_buffer parser4__switch_to_buffer -#define yypush_buffer_state parser4_push_buffer_state -#define yypop_buffer_state parser4_pop_buffer_state -#define yyensure_buffer_stack parser4_ensure_buffer_stack -#define yy_flex_debug parser4__flex_debug #define yyin parser4_in #define yyleng parser4_leng #define yylex parser4_lex @@ -40,8 +35,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 37 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -50,244 +45,11 @@ /* %endif */ /* %if-c-only */ -#ifdef yy_create_buffer -#define parser4__create_buffer_ALREADY_DEFINED -#else -#define yy_create_buffer parser4__create_buffer -#endif - -#ifdef yy_delete_buffer -#define parser4__delete_buffer_ALREADY_DEFINED -#else -#define yy_delete_buffer parser4__delete_buffer -#endif - -#ifdef yy_scan_buffer -#define parser4__scan_buffer_ALREADY_DEFINED -#else -#define yy_scan_buffer parser4__scan_buffer -#endif - -#ifdef yy_scan_string -#define parser4__scan_string_ALREADY_DEFINED -#else -#define yy_scan_string parser4__scan_string -#endif - -#ifdef yy_scan_bytes -#define parser4__scan_bytes_ALREADY_DEFINED -#else -#define yy_scan_bytes parser4__scan_bytes -#endif - -#ifdef yy_init_buffer -#define parser4__init_buffer_ALREADY_DEFINED -#else -#define yy_init_buffer parser4__init_buffer -#endif - -#ifdef yy_flush_buffer -#define parser4__flush_buffer_ALREADY_DEFINED -#else -#define yy_flush_buffer parser4__flush_buffer -#endif - -#ifdef yy_load_buffer_state -#define parser4__load_buffer_state_ALREADY_DEFINED -#else -#define yy_load_buffer_state parser4__load_buffer_state -#endif - -#ifdef yy_switch_to_buffer -#define parser4__switch_to_buffer_ALREADY_DEFINED -#else -#define yy_switch_to_buffer parser4__switch_to_buffer -#endif - -#ifdef yypush_buffer_state -#define parser4_push_buffer_state_ALREADY_DEFINED -#else -#define yypush_buffer_state parser4_push_buffer_state -#endif - -#ifdef yypop_buffer_state -#define parser4_pop_buffer_state_ALREADY_DEFINED -#else -#define yypop_buffer_state parser4_pop_buffer_state -#endif - -#ifdef yyensure_buffer_stack -#define parser4_ensure_buffer_stack_ALREADY_DEFINED -#else -#define yyensure_buffer_stack parser4_ensure_buffer_stack -#endif - -#ifdef yylex -#define parser4_lex_ALREADY_DEFINED -#else -#define yylex parser4_lex -#endif - -#ifdef yyrestart -#define parser4_restart_ALREADY_DEFINED -#else -#define yyrestart parser4_restart -#endif - -#ifdef yylex_init -#define parser4_lex_init_ALREADY_DEFINED -#else -#define yylex_init parser4_lex_init -#endif - -#ifdef yylex_init_extra -#define parser4_lex_init_extra_ALREADY_DEFINED -#else -#define yylex_init_extra parser4_lex_init_extra -#endif - -#ifdef yylex_destroy -#define parser4_lex_destroy_ALREADY_DEFINED -#else -#define yylex_destroy parser4_lex_destroy -#endif - -#ifdef yyget_debug -#define parser4_get_debug_ALREADY_DEFINED -#else -#define yyget_debug parser4_get_debug -#endif - -#ifdef yyset_debug -#define parser4_set_debug_ALREADY_DEFINED -#else -#define yyset_debug parser4_set_debug -#endif - -#ifdef yyget_extra -#define parser4_get_extra_ALREADY_DEFINED -#else -#define yyget_extra parser4_get_extra -#endif - -#ifdef yyset_extra -#define parser4_set_extra_ALREADY_DEFINED -#else -#define yyset_extra parser4_set_extra -#endif - -#ifdef yyget_in -#define parser4_get_in_ALREADY_DEFINED -#else -#define yyget_in parser4_get_in -#endif - -#ifdef yyset_in -#define parser4_set_in_ALREADY_DEFINED -#else -#define yyset_in parser4_set_in -#endif - -#ifdef yyget_out -#define parser4_get_out_ALREADY_DEFINED -#else -#define yyget_out parser4_get_out -#endif - -#ifdef yyset_out -#define parser4_set_out_ALREADY_DEFINED -#else -#define yyset_out parser4_set_out -#endif - -#ifdef yyget_leng -#define parser4_get_leng_ALREADY_DEFINED -#else -#define yyget_leng parser4_get_leng -#endif - -#ifdef yyget_text -#define parser4_get_text_ALREADY_DEFINED -#else -#define yyget_text parser4_get_text -#endif - -#ifdef yyget_lineno -#define parser4_get_lineno_ALREADY_DEFINED -#else -#define yyget_lineno parser4_get_lineno -#endif - -#ifdef yyset_lineno -#define parser4_set_lineno_ALREADY_DEFINED -#else -#define yyset_lineno parser4_set_lineno -#endif - -#ifdef yywrap -#define parser4_wrap_ALREADY_DEFINED -#else -#define yywrap parser4_wrap -#endif - + /* %endif */ -#ifdef yyalloc -#define parser4_alloc_ALREADY_DEFINED -#else -#define yyalloc parser4_alloc -#endif - -#ifdef yyrealloc -#define parser4_realloc_ALREADY_DEFINED -#else -#define yyrealloc parser4_realloc -#endif - -#ifdef yyfree -#define parser4_free_ALREADY_DEFINED -#else -#define yyfree parser4_free -#endif - /* %if-c-only */ -#ifdef yytext -#define parser4_text_ALREADY_DEFINED -#else -#define yytext parser4_text -#endif - -#ifdef yyleng -#define parser4_leng_ALREADY_DEFINED -#else -#define yyleng parser4_leng -#endif - -#ifdef yyin -#define parser4_in_ALREADY_DEFINED -#else -#define yyin parser4_in -#endif - -#ifdef yyout -#define parser4_out_ALREADY_DEFINED -#else -#define yyout parser4_out -#endif - -#ifdef yy_flex_debug -#define parser4__flex_debug_ALREADY_DEFINED -#else -#define yy_flex_debug parser4__flex_debug -#endif - -#ifdef yylineno -#define parser4_lineno_ALREADY_DEFINED -#else -#define yylineno parser4_lineno -#endif - /* %endif */ /* First, we deal with platform-specific or compiler-specific issues. */ @@ -365,39 +127,50 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* %endif */ -/* begin standard C++ headers. */ /* %if-c++-only */ /* %endif */ -/* TODO: this is always defined, so inline it */ -#define yyconst const +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const #else -#define yynoreturn +#define yyconst #endif /* %not-for-header */ + /* Returned upon end-of-file. */ #define YY_NULL 0 /* %ok-for-header */ /* %not-for-header */ -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* %ok-for-header */ /* %if-reentrant */ @@ -412,29 +185,25 @@ typedef unsigned int flex_uint32_t; * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * + /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START + /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) +#define YY_NEW_FILE parser4_restart(parser4_in ) + #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else #define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -452,35 +221,35 @@ typedef size_t yy_size_t; #endif /* %if-not-reentrant */ -extern int yyleng; +extern yy_size_t parser4_leng; /* %endif */ /* %if-c-only */ /* %if-not-reentrant */ -extern FILE *yyin, *yyout; +extern FILE *parser4_in, *parser4_out; /* %endif */ /* %endif */ #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - + #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ - /* Undo effects of setting up yytext. */ \ + /* Undo effects of setting up parser4_text. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + YY_DO_BEFORE_ACTION; /* set up parser4_text again */ \ } \ while ( 0 ) + #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -500,12 +269,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -528,7 +297,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -545,8 +314,8 @@ struct yy_buffer_state * possible backing-up. * * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. + * (via parser4_restart()), so that the user can continue scanning by + * just pointing parser4_in at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 @@ -555,12 +324,13 @@ struct yy_buffer_state /* %if-c-only Standard (non-C++) definition */ /* %not-for-header */ + /* %if-not-reentrant */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* %endif */ /* %ok-for-header */ @@ -575,6 +345,7 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) + /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ @@ -584,112 +355,115 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* %if-not-reentrant */ /* %not-for-header */ -/* yy_hold_char holds the character lost when yytext is formed. */ + +/* yy_hold_char holds the character lost when parser4_text is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t parser4_leng; /* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; +static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... +/* Flag which is used to allow parser4_wrap()'s to do buffer switches + * instead of setting up a fresh parser4_in. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; /* %ok-for-header */ /* %endif */ -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); +void parser4_restart (FILE *input_file ); +void parser4__switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE parser4__create_buffer (FILE *file,int size ); +void parser4__delete_buffer (YY_BUFFER_STATE b ); +void parser4__flush_buffer (YY_BUFFER_STATE b ); +void parser4_push_buffer_state (YY_BUFFER_STATE new_buffer ); +void parser4_pop_buffer_state (void ); + +static void parser4_ensure_buffer_stack (void ); +static void parser4__load_buffer_state (void ); +static void parser4__init_buffer (YY_BUFFER_STATE b,FILE *file ); -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) +#define YY_FLUSH_BUFFER parser4__flush_buffer(YY_CURRENT_BUFFER ) -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); +YY_BUFFER_STATE parser4__scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE parser4__scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE parser4__scan_bytes (yyconst char *bytes,yy_size_t len ); /* %endif */ -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); +void *parser4_alloc (yy_size_t ); +void *parser4_realloc (void *,yy_size_t ); +void parser4_free (void * ); + +#define yy_new_buffer parser4__create_buffer -#define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ + parser4_ensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ + parser4__create_buffer(parser4_in,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } + #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ + parser4_ensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ + parser4__create_buffer(parser4_in,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } + #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) -/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */ +/* %% [1.0] parser4_text/parser4_in/parser4_out/yy_state_type/parser4_lineno etc. def's & init go here */ /* Begin user sect3 */ -#define parser4_wrap() (/*CONSTCOND*/1) +#define parser4_wrap() 1 #define YY_SKIP_YYWRAP #define FLEX_DEBUG -typedef flex_uint8_t YY_CHAR; -FILE *yyin = NULL, *yyout = NULL; +typedef unsigned char YY_CHAR; + +FILE *parser4_in = (FILE *) 0, *parser4_out = (FILE *) 0; typedef int yy_state_type; -extern int yylineno; -int yylineno = 1; +extern int parser4_lineno; -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext +int parser4_lineno = 1; -/* %% [1.5] DFA */ +extern char *parser4_text; +#define yytext_ptr parser4_text /* %if-c-only Standard (non-C++) definition */ -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); /* %endif */ /* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. + * corresponding action - sets up parser4_text. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ -/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ - yyleng = (int) (yy_cp - yy_bp); \ +/* %% [2.0] code to fiddle parser4_text and parser4_leng for yymore() goes here \ */\ + parser4_leng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ -/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ +/* %% [3.0] code to copy yytext_ptr to parser4_text[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; + /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ #define YY_NUM_RULES 172 #define YY_END_OF_BUFFER 173 @@ -700,7 +474,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1437] = +static yyconst flex_int16_t yy_accept[1437] = { 0, 165, 165, 0, 0, 0, 0, 0, 0, 0, 0, 173, 171, 10, 11, 171, 1, 165, 162, 165, 165, @@ -862,7 +636,7 @@ static const flex_int16_t yy_accept[1437] = 0, 73, 0, 0, 108, 0 } ; -static const YY_CHAR yy_ec[256] = +static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, @@ -894,7 +668,7 @@ static const YY_CHAR yy_ec[256] = 5, 5, 5, 5, 5 } ; -static const YY_CHAR yy_meta[72] = +static yyconst flex_int32_t yy_meta[72] = { 0, 1, 1, 2, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 3, 3, 3, 3, @@ -906,7 +680,7 @@ static const YY_CHAR yy_meta[72] = 3 } ; -static const flex_int16_t yy_base[1449] = +static yyconst flex_int16_t yy_base[1449] = { 0, 0, 70, 19, 29, 41, 49, 52, 58, 87, 95, 1799, 1800, 32, 1795, 141, 0, 201, 1800, 206, 88, @@ -1069,7 +843,7 @@ static const flex_int16_t yy_base[1449] = 1282, 1287, 1292, 1295, 1269, 1274, 1276, 1289 } ; -static const flex_int16_t yy_def[1449] = +static yyconst flex_int16_t yy_def[1449] = { 0, 1437, 1437, 1438, 1438, 1437, 1437, 1437, 1437, 1437, 1437, 1436, 1436, 1436, 1436, 1436, 1439, 1436, 1436, 1436, 1436, @@ -1232,7 +1006,7 @@ static const flex_int16_t yy_def[1449] = 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436 } ; -static const flex_int16_t yy_nxt[1872] = +static yyconst flex_int16_t yy_nxt[1872] = { 0, 1436, 13, 14, 13, 1436, 15, 16, 1436, 17, 18, 19, 20, 21, 22, 22, 22, 23, 24, 86, 692, @@ -1442,7 +1216,7 @@ static const flex_int16_t yy_nxt[1872] = 1436 } ; -static const flex_int16_t yy_chk[1872] = +static yyconst flex_int16_t yy_chk[1872] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 600, @@ -1655,20 +1429,20 @@ static const flex_int16_t yy_chk[1872] = static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; -extern int yy_flex_debug; -int yy_flex_debug = 1; +extern int parser4__flex_debug; +int parser4__flex_debug = 1; -static const flex_int16_t yy_rule_linenum[172] = +static yyconst flex_int16_t yy_rule_linenum[172] = { 0, - 145, 147, 149, 154, 155, 160, 161, 162, 174, 177, - 182, 189, 198, 207, 216, 225, 234, 243, 253, 262, - 271, 280, 289, 298, 307, 316, 325, 334, 345, 354, - 363, 372, 381, 391, 401, 411, 421, 431, 441, 451, - 461, 471, 481, 491, 501, 511, 521, 532, 543, 554, - 563, 573, 582, 592, 606, 621, 630, 639, 648, 657, - 677, 697, 706, 716, 725, 734, 743, 753, 762, 771, - 780, 789, 799, 808, 817, 826, 835, 844, 853, 862, - 871, 880, 889, 899, 910, 922, 931, 940, 949, 959, + 144, 146, 148, 153, 154, 159, 160, 161, 173, 176, + 181, 188, 197, 206, 215, 224, 233, 242, 252, 261, + 270, 279, 288, 297, 306, 315, 324, 333, 344, 353, + 362, 371, 380, 390, 400, 410, 420, 430, 440, 450, + 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, 1064, 1074, 1083, 1093, 1102, 1111, 1120, 1129, 1138, 1147, @@ -1688,7 +1462,7 @@ static const flex_int16_t yy_rule_linenum[172] = #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET -char *yytext; +char *parser4_text; #line 1 "dhcp4_lexer.ll" /* Copyright (C) 2016-2018 Internet Systems Consortium, Inc. ("ISC") @@ -1715,8 +1489,8 @@ char *yytext; 2.5.31 through 2.5.33): it generates code that does not conform to C89. See Debian bug 333231 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */ -# undef yywrap -# define yywrap() 1 +# undef parser4_wrap +# define parser4_wrap() 1 namespace { @@ -1731,10 +1505,9 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg) -#line 1735 "dhcp4_lexer.cc" /* noyywrap disables automatic rewinding for the next file to parse. Since we always parse only a single string, there's no need to do any wraps. And - using yywrap requires linking with -lfl, which provides the default yywrap + using parser4_wrap requires linking with -lfl, which provides the default parser4_wrap implementation that always returns 1 anyway. */ /* nounput simplifies the lexer, by removing support for putting a character back into the input stream. We never use such capability anyway. */ @@ -1742,23 +1515,23 @@ using namespace isc::dhcp; /* avoid to get static global variables to remain with C++. */ /* in last resort %option reentrant */ /* Enables debug mode. To see the debug messages, one needs to also set - yy_flex_debug to 1, then the debug messages will be printed on stderr. */ + parser4__flex_debug to 1, then the debug messages will be printed on stderr. */ /* I have no idea what this option does, except it was specified in the bison examples and Postgres folks added it to remove gcc 4.3 warnings. Let's be on the safe side and keep it. */ #define YY_NO_INPUT 1 + /* These are not token expressions yet, just convenience expressions that can be used during actual token definitions. Note some can match incorrect inputs (e.g., IP addresses) which must be checked. */ /* for errors */ #line 94 "dhcp4_lexer.ll" /* This code run each time a pattern is matched. It updates the location - by moving it ahead by yyleng bytes. yyleng specifies the length of the + 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(yyleng); -#line 1761 "dhcp4_lexer.cc" -#line 1762 "dhcp4_lexer.cc" +#define YY_USER_ACTION driver.loc_.columns(parser4_leng); +#line 1535 "dhcp4_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -1786,7 +1559,7 @@ using namespace isc::dhcp; /* %if-reentrant */ /* %if-c-only */ -static int yy_init_globals ( void ); +static int yy_init_globals (void ); /* %endif */ /* %if-reentrant */ @@ -1796,31 +1569,31 @@ static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy ( void ); +int parser4_lex_destroy (void ); -int yyget_debug ( void ); +int parser4_get_debug (void ); -void yyset_debug ( int debug_flag ); +void parser4_set_debug (int debug_flag ); -YY_EXTRA_TYPE yyget_extra ( void ); +YY_EXTRA_TYPE parser4_get_extra (void ); -void yyset_extra ( YY_EXTRA_TYPE user_defined ); +void parser4_set_extra (YY_EXTRA_TYPE user_defined ); -FILE *yyget_in ( void ); +FILE *parser4_get_in (void ); -void yyset_in ( FILE * _in_str ); +void parser4_set_in (FILE * in_str ); -FILE *yyget_out ( void ); +FILE *parser4_get_out (void ); -void yyset_out ( FILE * _out_str ); +void parser4_set_out (FILE * out_str ); - int yyget_leng ( void ); +yy_size_t parser4_get_leng (void ); -char *yyget_text ( void ); +char *parser4_get_text (void ); -int yyget_lineno ( void ); +int parser4_get_lineno (void ); -void yyset_lineno ( int _line_number ); +void parser4_set_lineno (int line_number ); /* %if-bison-bridge */ /* %endif */ @@ -1831,35 +1604,34 @@ void yyset_lineno ( int _line_number ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap ( void ); +extern "C" int parser4_wrap (void ); #else -extern int yywrap ( void ); +extern int parser4_wrap (void ); #endif #endif /* %not-for-header */ -#ifndef YY_NO_UNPUT - -#endif + /* %ok-for-header */ /* %endif */ #ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); +static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); +static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT /* %if-c-only Standard (non-C++) definition */ /* %not-for-header */ + #ifdef __cplusplus -static int yyinput ( void ); +static int yyinput (void ); #else -static int input ( void ); +static int input (void ); #endif /* %ok-for-header */ @@ -1872,12 +1644,7 @@ static int input ( void ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else #define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -1886,7 +1653,7 @@ static int input ( void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( parser4_text, parser4_leng, 1, parser4_out )) {} } while (0) /* %endif */ /* %if-c++-only C++ definition */ /* %endif */ @@ -1901,20 +1668,20 @@ static int input ( void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + size_t n; \ for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + (c = getc( parser4_in )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ + if ( c == EOF && ferror( parser4_in ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + while ( (result = fread(buf, 1, max_size, parser4_in))==0 && ferror(parser4_in)) \ { \ if( errno != EINTR) \ { \ @@ -1922,7 +1689,7 @@ static int input ( void ); break; \ } \ errno=0; \ - clearerr(yyin); \ + clearerr(parser4_in); \ } \ }\ \ @@ -1955,9 +1722,11 @@ static int input ( void ); /* %if-tables-serialization structures and prototypes */ /* %not-for-header */ + /* %ok-for-header */ /* %not-for-header */ + /* %tables-yydmap generated elements */ /* %endif */ /* end tables serialization structures and prototypes */ @@ -1971,15 +1740,15 @@ static int input ( void ); #define YY_DECL_IS_OURS 1 /* %if-c-only Standard (non-C++) definition */ -extern int yylex (void); +extern int parser4_lex (void); -#define YY_DECL int yylex (void) +#define YY_DECL int parser4_lex (void) /* %endif */ /* %if-c++-only C++ definition */ /* %endif */ #endif /* !YY_DECL */ -/* Code executed at the beginning of each rule, after yytext and yyleng +/* Code executed at the beginning of each rule, after parser4_text and parser4_leng * have been set up. */ #ifndef YY_USER_ACTION @@ -1988,7 +1757,7 @@ extern int yylex (void); /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; +#define YY_BREAK break; #endif /* %% [6.0] YY_RULE_SETUP definition goes here */ @@ -1996,60 +1765,25 @@ extern int yylex (void); YY_USER_ACTION /* %not-for-header */ + /** The main scanner function which does all the work. */ YY_DECL { - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) -/* %if-c-only */ - yyin = stdin; -/* %endif */ -/* %if-c++-only */ -/* %endif */ - - if ( ! yyout ) -/* %if-c-only */ - yyout = stdout; -/* %endif */ -/* %if-c++-only */ -/* %endif */ - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - { /* %% [7.0] user's declarations go here */ #line 100 "dhcp4_lexer.ll" -#line 104 "dhcp4_lexer.ll" /* This part of the code is copied over to the verbatim to the top - of the generated yylex function. Explanation: + of the generated parser4_lex function. Explanation: http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */ - /* Code run each time yylex is called. */ + /* Code run each time parser4_lex is called. */ driver.loc_.step(); if (start_token_flag) { @@ -2086,14 +1820,48 @@ YY_DECL } -#line 2090 "dhcp4_lexer.cc" +#line 1824 "dhcp4_lexer.cc" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! parser4_in ) +/* %if-c-only */ + parser4_in = stdin; +/* %endif */ +/* %if-c++-only */ +/* %endif */ + + if ( ! parser4_out ) +/* %if-c-only */ + parser4_out = stdout; +/* %endif */ +/* %if-c++-only */ +/* %endif */ - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + if ( ! YY_CURRENT_BUFFER ) { + parser4_ensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + parser4__create_buffer(parser4_in,YY_BUF_SIZE ); + } + + parser4__load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ { /* %% [8.0] yymore()-related code goes here */ yy_cp = (yy_c_buf_p); - /* Support of yytext. */ + /* Support of parser4_text. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of @@ -2106,7 +1874,7 @@ YY_DECL yy_match: do { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -2116,9 +1884,9 @@ yy_match: { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 1437 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_current_state != 1436 ); @@ -2131,21 +1899,21 @@ yy_find_action: YY_DO_BEFORE_ACTION; -/* %% [11.0] code for yylineno update goes here */ +/* %% [11.0] code for parser4_lineno update goes here */ do_action: /* This label is used only to access EOF actions. */ /* %% [12.0] debug code goes here */ - if ( yy_flex_debug ) + if ( parser4__flex_debug ) { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); else if ( yy_act < 172 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", - (long)yy_rule_linenum[yy_act], yytext ); + (long)yy_rule_linenum[yy_act], parser4_text ); else if ( yy_act == 172 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", - yytext ); + parser4_text ); else if ( yy_act == 173 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else @@ -2164,17 +1932,17 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 145 "dhcp4_lexer.ll" +#line 144 "dhcp4_lexer.ll" ; YY_BREAK case 2: YY_RULE_SETUP -#line 147 "dhcp4_lexer.ll" +#line 146 "dhcp4_lexer.ll" ; YY_BREAK case 3: YY_RULE_SETUP -#line 149 "dhcp4_lexer.ll" +#line 148 "dhcp4_lexer.ll" { BEGIN(COMMENT); comment_start_line = driver.loc_.end.line;; @@ -2182,38 +1950,38 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 154 "dhcp4_lexer.ll" +#line 153 "dhcp4_lexer.ll" BEGIN(INITIAL); YY_BREAK case 5: YY_RULE_SETUP -#line 155 "dhcp4_lexer.ll" +#line 154 "dhcp4_lexer.ll" ; YY_BREAK case YY_STATE_EOF(COMMENT): -#line 156 "dhcp4_lexer.ll" +#line 155 "dhcp4_lexer.ll" { isc_throw(Dhcp4ParseError, "Comment not closed. (/* in line " << comment_start_line); } YY_BREAK case 6: YY_RULE_SETUP -#line 160 "dhcp4_lexer.ll" +#line 159 "dhcp4_lexer.ll" BEGIN(DIR_ENTER); YY_BREAK case 7: YY_RULE_SETUP -#line 161 "dhcp4_lexer.ll" +#line 160 "dhcp4_lexer.ll" BEGIN(DIR_INCLUDE); YY_BREAK case 8: YY_RULE_SETUP -#line 162 "dhcp4_lexer.ll" +#line 161 "dhcp4_lexer.ll" { /* Include directive. */ /* Extract the filename. */ - std::string tmp(yytext+1); + std::string tmp(parser4_text+1); tmp.resize(tmp.size() - 1); driver.includeFile(tmp); @@ -2222,19 +1990,19 @@ YY_RULE_SETUP case YY_STATE_EOF(DIR_ENTER): case YY_STATE_EOF(DIR_INCLUDE): case YY_STATE_EOF(DIR_EXIT): -#line 171 "dhcp4_lexer.ll" +#line 170 "dhcp4_lexer.ll" { isc_throw(Dhcp4ParseError, "Directive not closed."); } YY_BREAK case 9: YY_RULE_SETUP -#line 174 "dhcp4_lexer.ll" +#line 173 "dhcp4_lexer.ll" BEGIN(INITIAL); YY_BREAK case 10: YY_RULE_SETUP -#line 177 "dhcp4_lexer.ll" +#line 176 "dhcp4_lexer.ll" { /* Ok, we found a with space. Let's ignore it and update loc variable. */ driver.loc_.step(); @@ -2243,16 +2011,16 @@ YY_RULE_SETUP case 11: /* rule 11 can match eol */ YY_RULE_SETUP -#line 182 "dhcp4_lexer.ll" +#line 181 "dhcp4_lexer.ll" { /* Newline found. Let's update the location and continue. */ - driver.loc_.lines(yyleng); + driver.loc_.lines(parser4_leng); driver.loc_.step(); } YY_BREAK case 12: YY_RULE_SETUP -#line 189 "dhcp4_lexer.ll" +#line 188 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONFIG: @@ -2264,7 +2032,7 @@ YY_RULE_SETUP YY_BREAK case 13: YY_RULE_SETUP -#line 198 "dhcp4_lexer.ll" +#line 197 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2276,7 +2044,7 @@ YY_RULE_SETUP YY_BREAK case 14: YY_RULE_SETUP -#line 207 "dhcp4_lexer.ll" +#line 206 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2288,7 +2056,7 @@ YY_RULE_SETUP YY_BREAK case 15: YY_RULE_SETUP -#line 216 "dhcp4_lexer.ll" +#line 215 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SANITY_CHECKS: @@ -2300,7 +2068,7 @@ YY_RULE_SETUP YY_BREAK case 16: YY_RULE_SETUP -#line 225 "dhcp4_lexer.ll" +#line 224 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::INTERFACES_CONFIG: @@ -2312,7 +2080,7 @@ YY_RULE_SETUP YY_BREAK case 17: YY_RULE_SETUP -#line 234 "dhcp4_lexer.ll" +#line 233 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE: @@ -2324,7 +2092,7 @@ YY_RULE_SETUP YY_BREAK case 18: YY_RULE_SETUP -#line 243 "dhcp4_lexer.ll" +#line 242 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE: @@ -2337,7 +2105,7 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 253 "dhcp4_lexer.ll" +#line 252 "dhcp4_lexer.ll" { switch(driver.ctx_) { case Parser4Context::INTERFACES_CONFIG: @@ -2349,7 +2117,7 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 262 "dhcp4_lexer.ll" +#line 261 "dhcp4_lexer.ll" { switch(driver.ctx_) { case Parser4Context::OUTBOUND_INTERFACE: @@ -2361,7 +2129,7 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 271 "dhcp4_lexer.ll" +#line 270 "dhcp4_lexer.ll" { switch(driver.ctx_) { case Parser4Context::OUTBOUND_INTERFACE: @@ -2373,7 +2141,7 @@ YY_RULE_SETUP YY_BREAK case 22: YY_RULE_SETUP -#line 280 "dhcp4_lexer.ll" +#line 279 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::INTERFACES_CONFIG: @@ -2385,7 +2153,7 @@ YY_RULE_SETUP YY_BREAK case 23: YY_RULE_SETUP -#line 289 "dhcp4_lexer.ll" +#line 288 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::INTERFACES_CONFIG: @@ -2397,7 +2165,7 @@ YY_RULE_SETUP YY_BREAK case 24: YY_RULE_SETUP -#line 298 "dhcp4_lexer.ll" +#line 297 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2409,7 +2177,7 @@ YY_RULE_SETUP YY_BREAK case 25: YY_RULE_SETUP -#line 307 "dhcp4_lexer.ll" +#line 306 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2421,7 +2189,7 @@ YY_RULE_SETUP YY_BREAK case 26: YY_RULE_SETUP -#line 316 "dhcp4_lexer.ll" +#line 315 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2433,7 +2201,7 @@ YY_RULE_SETUP YY_BREAK case 27: YY_RULE_SETUP -#line 325 "dhcp4_lexer.ll" +#line 324 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOSTS_DATABASE: @@ -2445,7 +2213,7 @@ YY_RULE_SETUP YY_BREAK case 28: YY_RULE_SETUP -#line 334 "dhcp4_lexer.ll" +#line 333 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2459,7 +2227,7 @@ YY_RULE_SETUP YY_BREAK case 29: YY_RULE_SETUP -#line 345 "dhcp4_lexer.ll" +#line 344 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DATABASE_TYPE: @@ -2471,7 +2239,7 @@ YY_RULE_SETUP YY_BREAK case 30: YY_RULE_SETUP -#line 354 "dhcp4_lexer.ll" +#line 353 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DATABASE_TYPE: @@ -2483,7 +2251,7 @@ YY_RULE_SETUP YY_BREAK case 31: YY_RULE_SETUP -#line 363 "dhcp4_lexer.ll" +#line 362 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DATABASE_TYPE: @@ -2495,7 +2263,7 @@ YY_RULE_SETUP YY_BREAK case 32: YY_RULE_SETUP -#line 372 "dhcp4_lexer.ll" +#line 371 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DATABASE_TYPE: @@ -2507,7 +2275,7 @@ YY_RULE_SETUP YY_BREAK case 33: YY_RULE_SETUP -#line 381 "dhcp4_lexer.ll" +#line 380 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2520,7 +2288,7 @@ YY_RULE_SETUP YY_BREAK case 34: YY_RULE_SETUP -#line 391 "dhcp4_lexer.ll" +#line 390 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2533,7 +2301,7 @@ YY_RULE_SETUP YY_BREAK case 35: YY_RULE_SETUP -#line 401 "dhcp4_lexer.ll" +#line 400 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2546,7 +2314,7 @@ YY_RULE_SETUP YY_BREAK case 36: YY_RULE_SETUP -#line 411 "dhcp4_lexer.ll" +#line 410 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2559,7 +2327,7 @@ YY_RULE_SETUP YY_BREAK case 37: YY_RULE_SETUP -#line 421 "dhcp4_lexer.ll" +#line 420 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2572,7 +2340,7 @@ YY_RULE_SETUP YY_BREAK case 38: YY_RULE_SETUP -#line 431 "dhcp4_lexer.ll" +#line 430 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2585,7 +2353,7 @@ YY_RULE_SETUP YY_BREAK case 39: YY_RULE_SETUP -#line 441 "dhcp4_lexer.ll" +#line 440 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2598,7 +2366,7 @@ YY_RULE_SETUP YY_BREAK case 40: YY_RULE_SETUP -#line 451 "dhcp4_lexer.ll" +#line 450 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2611,7 +2379,7 @@ YY_RULE_SETUP YY_BREAK case 41: YY_RULE_SETUP -#line 461 "dhcp4_lexer.ll" +#line 460 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2624,7 +2392,7 @@ YY_RULE_SETUP YY_BREAK case 42: YY_RULE_SETUP -#line 471 "dhcp4_lexer.ll" +#line 470 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2637,7 +2405,7 @@ YY_RULE_SETUP YY_BREAK case 43: YY_RULE_SETUP -#line 481 "dhcp4_lexer.ll" +#line 480 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2650,7 +2418,7 @@ YY_RULE_SETUP YY_BREAK case 44: YY_RULE_SETUP -#line 491 "dhcp4_lexer.ll" +#line 490 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2663,7 +2431,7 @@ YY_RULE_SETUP YY_BREAK case 45: YY_RULE_SETUP -#line 501 "dhcp4_lexer.ll" +#line 500 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2676,7 +2444,7 @@ YY_RULE_SETUP YY_BREAK case 46: YY_RULE_SETUP -#line 511 "dhcp4_lexer.ll" +#line 510 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2689,7 +2457,7 @@ YY_RULE_SETUP YY_BREAK case 47: YY_RULE_SETUP -#line 521 "dhcp4_lexer.ll" +#line 520 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2703,7 +2471,7 @@ YY_RULE_SETUP YY_BREAK case 48: YY_RULE_SETUP -#line 532 "dhcp4_lexer.ll" +#line 531 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2717,7 +2485,7 @@ YY_RULE_SETUP YY_BREAK case 49: YY_RULE_SETUP -#line 543 "dhcp4_lexer.ll" +#line 542 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2731,7 +2499,7 @@ YY_RULE_SETUP YY_BREAK case 50: YY_RULE_SETUP -#line 554 "dhcp4_lexer.ll" +#line 553 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2743,7 +2511,7 @@ YY_RULE_SETUP YY_BREAK case 51: YY_RULE_SETUP -#line 563 "dhcp4_lexer.ll" +#line 562 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2756,7 +2524,7 @@ YY_RULE_SETUP YY_BREAK case 52: YY_RULE_SETUP -#line 573 "dhcp4_lexer.ll" +#line 572 "dhcp4_lexer.ll" { switch (driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2768,7 +2536,7 @@ YY_RULE_SETUP YY_BREAK case 53: YY_RULE_SETUP -#line 582 "dhcp4_lexer.ll" +#line 581 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2781,7 +2549,7 @@ YY_RULE_SETUP YY_BREAK case 54: YY_RULE_SETUP -#line 592 "dhcp4_lexer.ll" +#line 591 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2798,7 +2566,7 @@ YY_RULE_SETUP YY_BREAK case 55: YY_RULE_SETUP -#line 606 "dhcp4_lexer.ll" +#line 605 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LEASE_DATABASE: @@ -2816,7 +2584,7 @@ YY_RULE_SETUP YY_BREAK case 56: YY_RULE_SETUP -#line 621 "dhcp4_lexer.ll" +#line 620 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -2828,7 +2596,7 @@ YY_RULE_SETUP YY_BREAK case 57: YY_RULE_SETUP -#line 630 "dhcp4_lexer.ll" +#line 629 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -2840,7 +2608,7 @@ YY_RULE_SETUP YY_BREAK case 58: YY_RULE_SETUP -#line 639 "dhcp4_lexer.ll" +#line 638 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -2852,7 +2620,7 @@ YY_RULE_SETUP YY_BREAK case 59: YY_RULE_SETUP -#line 648 "dhcp4_lexer.ll" +#line 647 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::POOLS: @@ -2864,7 +2632,7 @@ YY_RULE_SETUP YY_BREAK case 60: YY_RULE_SETUP -#line 657 "dhcp4_lexer.ll" +#line 656 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2887,7 +2655,7 @@ YY_RULE_SETUP YY_BREAK case 61: YY_RULE_SETUP -#line 677 "dhcp4_lexer.ll" +#line 676 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -2910,7 +2678,7 @@ YY_RULE_SETUP YY_BREAK case 62: YY_RULE_SETUP -#line 697 "dhcp4_lexer.ll" +#line 696 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -2922,7 +2690,7 @@ YY_RULE_SETUP YY_BREAK case 63: YY_RULE_SETUP -#line 706 "dhcp4_lexer.ll" +#line 705 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -2935,7 +2703,7 @@ YY_RULE_SETUP YY_BREAK case 64: YY_RULE_SETUP -#line 716 "dhcp4_lexer.ll" +#line 715 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -2947,7 +2715,7 @@ YY_RULE_SETUP YY_BREAK case 65: YY_RULE_SETUP -#line 725 "dhcp4_lexer.ll" +#line 724 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -2959,7 +2727,7 @@ YY_RULE_SETUP YY_BREAK case 66: YY_RULE_SETUP -#line 734 "dhcp4_lexer.ll" +#line 733 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -2971,7 +2739,7 @@ YY_RULE_SETUP YY_BREAK case 67: YY_RULE_SETUP -#line 743 "dhcp4_lexer.ll" +#line 742 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -2984,7 +2752,7 @@ YY_RULE_SETUP YY_BREAK case 68: YY_RULE_SETUP -#line 753 "dhcp4_lexer.ll" +#line 752 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -2996,7 +2764,7 @@ YY_RULE_SETUP YY_BREAK case 69: YY_RULE_SETUP -#line 762 "dhcp4_lexer.ll" +#line 761 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3008,7 +2776,7 @@ YY_RULE_SETUP YY_BREAK case 70: YY_RULE_SETUP -#line 771 "dhcp4_lexer.ll" +#line 770 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3020,7 +2788,7 @@ YY_RULE_SETUP YY_BREAK case 71: YY_RULE_SETUP -#line 780 "dhcp4_lexer.ll" +#line 779 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATION_MODE: @@ -3032,7 +2800,7 @@ YY_RULE_SETUP YY_BREAK case 72: YY_RULE_SETUP -#line 789 "dhcp4_lexer.ll" +#line 788 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -3045,7 +2813,7 @@ YY_RULE_SETUP YY_BREAK case 73: YY_RULE_SETUP -#line 799 "dhcp4_lexer.ll" +#line 798 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3057,7 +2825,7 @@ YY_RULE_SETUP YY_BREAK case 74: YY_RULE_SETUP -#line 808 "dhcp4_lexer.ll" +#line 807 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONFIG: @@ -3069,7 +2837,7 @@ YY_RULE_SETUP YY_BREAK case 75: YY_RULE_SETUP -#line 817 "dhcp4_lexer.ll" +#line 816 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGING: @@ -3081,7 +2849,7 @@ YY_RULE_SETUP YY_BREAK case 76: YY_RULE_SETUP -#line 826 "dhcp4_lexer.ll" +#line 825 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -3093,7 +2861,7 @@ YY_RULE_SETUP YY_BREAK case 77: YY_RULE_SETUP -#line 835 "dhcp4_lexer.ll" +#line 834 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3105,7 +2873,7 @@ YY_RULE_SETUP YY_BREAK case 78: YY_RULE_SETUP -#line 844 "dhcp4_lexer.ll" +#line 843 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -3117,7 +2885,7 @@ YY_RULE_SETUP YY_BREAK case 79: YY_RULE_SETUP -#line 853 "dhcp4_lexer.ll" +#line 852 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3129,7 +2897,7 @@ YY_RULE_SETUP YY_BREAK case 80: YY_RULE_SETUP -#line 862 "dhcp4_lexer.ll" +#line 861 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3141,7 +2909,7 @@ YY_RULE_SETUP YY_BREAK case 81: YY_RULE_SETUP -#line 871 "dhcp4_lexer.ll" +#line 870 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -3153,7 +2921,7 @@ YY_RULE_SETUP YY_BREAK case 82: YY_RULE_SETUP -#line 880 "dhcp4_lexer.ll" +#line 879 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -3165,7 +2933,7 @@ YY_RULE_SETUP YY_BREAK case 83: YY_RULE_SETUP -#line 889 "dhcp4_lexer.ll" +#line 888 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3178,7 +2946,7 @@ YY_RULE_SETUP YY_BREAK case 84: YY_RULE_SETUP -#line 899 "dhcp4_lexer.ll" +#line 898 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3192,7 +2960,7 @@ YY_RULE_SETUP YY_BREAK case 85: YY_RULE_SETUP -#line 910 "dhcp4_lexer.ll" +#line 909 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3207,7 +2975,7 @@ YY_RULE_SETUP YY_BREAK case 86: YY_RULE_SETUP -#line 922 "dhcp4_lexer.ll" +#line 921 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -3219,7 +2987,7 @@ YY_RULE_SETUP YY_BREAK case 87: YY_RULE_SETUP -#line 931 "dhcp4_lexer.ll" +#line 930 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -3231,9 +2999,10 @@ YY_RULE_SETUP YY_BREAK case 88: YY_RULE_SETUP -#line 940 "dhcp4_lexer.ll" +#line 939 "dhcp4_lexer.ll" { switch(driver.ctx_) { + case isc::dhcp::Parser4Context::DHCP4: case isc::dhcp::Parser4Context::SUBNET4: return isc::dhcp::Dhcp4Parser::make_RESERVATIONS(driver.loc_); default: @@ -3797,7 +3566,7 @@ YY_RULE_SETUP if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser4_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } @@ -3810,7 +3579,7 @@ YY_RULE_SETUP if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { return isc::dhcp::Dhcp4Parser::make_TCP(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser4_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } @@ -3823,7 +3592,7 @@ YY_RULE_SETUP if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) { return isc::dhcp::Dhcp4Parser::make_JSON(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser4_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } @@ -3836,7 +3605,7 @@ YY_RULE_SETUP if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { return isc::dhcp::Dhcp4Parser::make_WHEN_PRESENT(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser4_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } @@ -3849,7 +3618,7 @@ YY_RULE_SETUP if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { return isc::dhcp::Dhcp4Parser::make_WHEN_PRESENT(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser4_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } @@ -3862,7 +3631,7 @@ YY_RULE_SETUP if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser4_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } @@ -3875,7 +3644,7 @@ YY_RULE_SETUP if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser4_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } @@ -3888,7 +3657,7 @@ YY_RULE_SETUP if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { return isc::dhcp::Dhcp4Parser::make_ALWAYS(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser4_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } @@ -3901,7 +3670,7 @@ YY_RULE_SETUP if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { return isc::dhcp::Dhcp4Parser::make_WHEN_NOT_PRESENT(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser4_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_); } @@ -4059,7 +3828,7 @@ YY_RULE_SETUP /* 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. for 'foo' we should get foo */ - std::string raw(yytext+1); + std::string raw(parser4_text+1); size_t len = raw.size() - 1; raw.resize(len); std::string decoded; @@ -4160,7 +3929,7 @@ YY_RULE_SETUP #line 1667 "dhcp4_lexer.ll" { /* Bad string with a forbidden control character inside */ - driver.error(driver.loc_, "Invalid control in " + std::string(yytext)); + driver.error(driver.loc_, "Invalid control in " + std::string(parser4_text)); } YY_BREAK case 156: @@ -4169,7 +3938,7 @@ YY_RULE_SETUP #line 1672 "dhcp4_lexer.ll" { /* Bad string with a bad escape inside */ - driver.error(driver.loc_, "Bad escape in " + std::string(yytext)); + driver.error(driver.loc_, "Bad escape in " + std::string(parser4_text)); } YY_BREAK case 157: @@ -4177,7 +3946,7 @@ YY_RULE_SETUP #line 1677 "dhcp4_lexer.ll" { /* Bad string with an open escape at the end */ - driver.error(driver.loc_, "Overflow escape in " + std::string(yytext)); + driver.error(driver.loc_, "Overflow escape in " + std::string(parser4_text)); } YY_BREAK case 158: @@ -4215,7 +3984,7 @@ YY_RULE_SETUP #line 1689 "dhcp4_lexer.ll" { /* An integer was found. */ - std::string tmp(yytext); + std::string tmp(parser4_text); int64_t integer = 0; try { /* In substring we want to use negative values (e.g. -1). @@ -4236,7 +4005,7 @@ YY_RULE_SETUP #line 1707 "dhcp4_lexer.ll" { /* A floating point was found. */ - std::string tmp(yytext); + std::string tmp(parser4_text); double fp = 0.0; try { fp = boost::lexical_cast<double>(tmp); @@ -4251,7 +4020,7 @@ case 166: YY_RULE_SETUP #line 1720 "dhcp4_lexer.ll" { - string tmp(yytext); + string tmp(parser4_text); return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK @@ -4280,7 +4049,7 @@ driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); case 171: YY_RULE_SETUP #line 1735 "dhcp4_lexer.ll" -driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); +driver.error (driver.loc_, "Invalid character: " + std::string(parser4_text)); YY_BREAK case YY_STATE_EOF(INITIAL): #line 1737 "dhcp4_lexer.ll" @@ -4312,7 +4081,7 @@ YY_RULE_SETUP #line 1760 "dhcp4_lexer.ll" ECHO; YY_BREAK -#line 4316 "dhcp4_lexer.cc" +#line 4085 "dhcp4_lexer.cc" case YY_END_OF_BUFFER: { @@ -4327,19 +4096,15 @@ ECHO; { /* We're scanning a new file or input source. It's * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure + * just pointed parser4_in at a new source and called + * parser4_lex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; -/* %if-c-only */ - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; -/* %endif */ -/* %if-c++-only */ -/* %endif */ + YY_CURRENT_BUFFER_LVALUE->yy_input_file = parser4_in; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } @@ -4394,11 +4159,11 @@ ECHO; { (yy_did_buffer_switch_on_eof) = 0; - if ( yywrap( ) ) + if ( parser4_wrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up - * yytext, we can now set up + * parser4_text, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the @@ -4447,12 +4212,12 @@ ECHO; "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ +} /* end of parser4_lex */ /* %ok-for-header */ /* %if-c++-only */ /* %not-for-header */ + /* %ok-for-header */ /* %endif */ @@ -4470,9 +4235,9 @@ static int yy_get_next_buffer (void) /* %if-c++-only */ /* %endif */ { - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -4501,7 +4266,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -4514,7 +4279,7 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -4528,7 +4293,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -4537,12 +4302,11 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); + parser4_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; + b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -4570,7 +4334,7 @@ static int yy_get_next_buffer (void) if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); + parser4_restart(parser4_in ); } else @@ -4584,15 +4348,12 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) parser4_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; @@ -4608,13 +4369,14 @@ static int yy_get_next_buffer (void) /* %if-c-only */ /* %not-for-header */ + static yy_state_type yy_get_previous_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { - yy_state_type yy_current_state; - char *yy_cp; + register yy_state_type yy_current_state; + register char *yy_cp; /* %% [15.0] code to get the start state into yy_current_state goes here */ yy_current_state = (yy_start); @@ -4622,7 +4384,7 @@ static int yy_get_next_buffer (void) for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { /* %% [16.0] code to find the next state goes here */ - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -4632,9 +4394,9 @@ static int yy_get_next_buffer (void) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 1437 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; @@ -4651,11 +4413,11 @@ static int yy_get_next_buffer (void) /* %if-c++-only */ /* %endif */ { - int yy_is_jam; + register int yy_is_jam; /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */ - char *yy_cp = (yy_c_buf_p); + register char *yy_cp = (yy_c_buf_p); - YY_CHAR yy_c = 1; + register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -4665,19 +4427,17 @@ static int yy_get_next_buffer (void) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 1437 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 1436); return yy_is_jam ? 0 : yy_current_state; } -#ifndef YY_NO_UNPUT /* %if-c-only */ /* %endif */ -#endif /* %if-c-only */ #ifndef YY_NO_INPUT @@ -4707,7 +4467,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -4724,14 +4484,14 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - yyrestart( yyin ); + parser4_restart(parser4_in ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap( ) ) - return 0; + if ( parser4_wrap( ) ) + return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -4750,10 +4510,10 @@ static int yy_get_next_buffer (void) } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ + *(yy_c_buf_p) = '\0'; /* preserve parser4_text */ (yy_hold_char) = *++(yy_c_buf_p); -/* %% [19.0] update BOL and yylineno */ +/* %% [19.0] update BOL and parser4_lineno */ return c; } @@ -4767,31 +4527,28 @@ static int yy_get_next_buffer (void) * @note This function does not reset the start condition to @c INITIAL . */ /* %if-c-only */ - void yyrestart (FILE * input_file ) + void parser4_restart (FILE * input_file ) /* %endif */ /* %if-c++-only */ /* %endif */ { if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); + parser4_ensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); + parser4__create_buffer(parser4_in,YY_BUF_SIZE ); } - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); + parser4__init_buffer(YY_CURRENT_BUFFER,input_file ); + parser4__load_buffer_state( ); } -/* %if-c++-only */ -/* %endif */ - /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ /* %if-c-only */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) + void parser4__switch_to_buffer (YY_BUFFER_STATE new_buffer ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -4799,10 +4556,10 @@ static int yy_get_next_buffer (void) /* TODO. We should be able to replace this entire function body * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); + * parser4_pop_buffer_state(); + * parser4_push_buffer_state(new_buffer); */ - yyensure_buffer_stack (); + parser4_ensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; @@ -4815,29 +4572,25 @@ static int yy_get_next_buffer (void) } YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); + parser4__load_buffer_state( ); /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe + * EOF (parser4_wrap()) processing, but the only time this flag + * is looked at is after parser4_wrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } /* %if-c-only */ -static void yy_load_buffer_state (void) +static void parser4__load_buffer_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; -/* %if-c-only */ - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; -/* %endif */ -/* %if-c++-only */ -/* %endif */ + parser4_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } @@ -4848,42 +4601,39 @@ static void yy_load_buffer_state (void) * @return the allocated buffer state. */ /* %if-c-only */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) + YY_BUFFER_STATE parser4__create_buffer (FILE * file, int size ) /* %endif */ /* %if-c++-only */ /* %endif */ { YY_BUFFER_STATE b; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) parser4_alloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in parser4__create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + b->yy_ch_buf = (char *) parser4_alloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in parser4__create_buffer()" ); b->yy_is_our_buffer = 1; - yy_init_buffer( b, file ); + parser4__init_buffer(b,file ); return b; } -/* %if-c++-only */ -/* %endif */ - /** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() + * @param b a buffer created with parser4__create_buffer() * */ /* %if-c-only */ - void yy_delete_buffer (YY_BUFFER_STATE b ) + void parser4__delete_buffer (YY_BUFFER_STATE b ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -4896,17 +4646,17 @@ static void yy_load_buffer_state (void) YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); + parser4_free((void *) b->yy_ch_buf ); - yyfree( (void *) b ); + parser4_free((void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. + * such as during a parser4_restart() or at EOF. */ /* %if-c-only */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + static void parser4__init_buffer (YY_BUFFER_STATE b, FILE * file ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -4914,17 +4664,13 @@ static void yy_load_buffer_state (void) { int oerrno = errno; - yy_flush_buffer( b ); + parser4__flush_buffer(b ); -/* %if-c-only */ b->yy_input_file = file; -/* %endif */ -/* %if-c++-only */ -/* %endif */ b->yy_fill_buffer = 1; - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. + /* If b is the current buffer, then parser4__init_buffer was _probably_ + * called from parser4_restart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ @@ -4947,7 +4693,7 @@ static void yy_load_buffer_state (void) * */ /* %if-c-only */ - void yy_flush_buffer (YY_BUFFER_STATE b ) + void parser4__flush_buffer (YY_BUFFER_STATE b ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -4970,7 +4716,7 @@ static void yy_load_buffer_state (void) b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); + parser4__load_buffer_state( ); } /* %if-c-or-c++ */ @@ -4981,7 +4727,7 @@ static void yy_load_buffer_state (void) * */ /* %if-c-only */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +void parser4_push_buffer_state (YY_BUFFER_STATE new_buffer ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -4989,9 +4735,9 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) if (new_buffer == NULL) return; - yyensure_buffer_stack(); + parser4_ensure_buffer_stack(); - /* This block is copied from yy_switch_to_buffer. */ + /* This block is copied from parser4__switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ @@ -5005,8 +4751,8 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); + /* copied from parser4__switch_to_buffer. */ + parser4__load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /* %endif */ @@ -5017,7 +4763,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) * */ /* %if-c-only */ -void yypop_buffer_state (void) +void parser4_pop_buffer_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -5025,13 +4771,13 @@ void yypop_buffer_state (void) if (!YY_CURRENT_BUFFER) return; - yy_delete_buffer(YY_CURRENT_BUFFER ); + parser4__delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); + parser4__load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } @@ -5042,7 +4788,7 @@ void yypop_buffer_state (void) * Guarantees space for at least one push. */ /* %if-c-only */ -static void yyensure_buffer_stack (void) +static void parser4_ensure_buffer_stack (void) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -5055,15 +4801,15 @@ static void yyensure_buffer_stack (void) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)parser4_alloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - + YY_FATAL_ERROR( "out of dynamic memory in parser4_ensure_buffer_stack()" ); + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; @@ -5072,15 +4818,15 @@ static void yyensure_buffer_stack (void) if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; + int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + (yy_buffer_stack) = (struct yy_buffer_state**)parser4_realloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + YY_FATAL_ERROR( "out of dynamic memory in parser4_ensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); @@ -5094,9 +4840,9 @@ static void yyensure_buffer_stack (void) * @param base the character buffer * @param size the size in bytes of the character buffer * - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +YY_BUFFER_STATE parser4__scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; @@ -5104,53 +4850,53 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ - return NULL; + return 0; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) parser4_alloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in parser4__scan_buffer()" ); - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; + b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - yy_switch_to_buffer( b ); + parser4__switch_to_buffer(b ); return b; } /* %endif */ /* %if-c-only */ -/** Setup the input buffer state to scan a string. The next call to yylex() will +/** Setup the input buffer state to scan a string. The next call to parser4_lex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. + * parser4__scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) +YY_BUFFER_STATE parser4__scan_string (yyconst char * yystr ) { - return yy_scan_bytes( yystr, (int) strlen(yystr) ); + return parser4__scan_bytes(yystr,strlen(yystr) ); } /* %endif */ /* %if-c-only */ -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will +/** Setup the input buffer state to scan the given bytes. The next call to parser4_lex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE parser4__scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -5158,19 +4904,19 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) int i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); + n = _yybytes_len + 2; + buf = (char *) parser4_alloc(n ); if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + YY_FATAL_ERROR( "out of dynamic memory in parser4__scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - b = yy_scan_buffer( buf, n ); + b = parser4__scan_buffer(buf,n ); if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + YY_FATAL_ERROR( "bad buffer in parser4__scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. @@ -5186,9 +4932,9 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) #endif /* %if-c-only */ -static void yynoreturn yy_fatal_error (const char* msg ) +static void yy_fatal_error (yyconst char* msg ) { - fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* %endif */ @@ -5201,14 +4947,14 @@ static void yynoreturn yy_fatal_error (const char* msg ) #define yyless(n) \ do \ { \ - /* Undo effects of setting up yytext. */ \ + /* Undo effects of setting up parser4_text. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ + parser4_text[parser4_leng] = (yy_hold_char); \ + (yy_c_buf_p) = parser4_text + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ + parser4_leng = yyless_macro_arg; \ } \ while ( 0 ) @@ -5221,82 +4967,82 @@ static void yynoreturn yy_fatal_error (const char* msg ) /** Get the current line number. * */ -int yyget_lineno (void) +int parser4_get_lineno (void) { - - return yylineno; + + return parser4_lineno; } /** Get the input stream. * */ -FILE *yyget_in (void) +FILE *parser4_get_in (void) { - return yyin; + return parser4_in; } /** Get the output stream. * */ -FILE *yyget_out (void) +FILE *parser4_get_out (void) { - return yyout; + return parser4_out; } /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t parser4_get_leng (void) { - return yyleng; + return parser4_leng; } /** Get the current token. * */ -char *yyget_text (void) +char *parser4_get_text (void) { - return yytext; + return parser4_text; } /* %if-reentrant */ /* %endif */ /** Set the current line number. - * @param _line_number line number + * @param line_number * */ -void yyset_lineno (int _line_number ) +void parser4_set_lineno (int line_number ) { - yylineno = _line_number; + parser4_lineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param _in_str A readable stream. + * @param in_str A readable stream. * - * @see yy_switch_to_buffer + * @see parser4__switch_to_buffer */ -void yyset_in (FILE * _in_str ) +void parser4_set_in (FILE * in_str ) { - yyin = _in_str ; + parser4_in = in_str ; } -void yyset_out (FILE * _out_str ) +void parser4_set_out (FILE * out_str ) { - yyout = _out_str ; + parser4_out = out_str ; } -int yyget_debug (void) +int parser4_get_debug (void) { - return yy_flex_debug; + return parser4__flex_debug; } -void yyset_debug (int _bdebug ) +void parser4_set_debug (int bdebug ) { - yy_flex_debug = _bdebug ; + parser4__flex_debug = bdebug ; } /* %endif */ @@ -5310,50 +5056,50 @@ void yyset_debug (int _bdebug ) static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. + * This function is called from parser4_lex_destroy(), so don't allocate here. */ - (yy_buffer_stack) = NULL; + (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; + (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; + parser4_in = stdin; + parser4_out = stdout; #else - yyin = NULL; - yyout = NULL; + parser4_in = (FILE *) 0; + parser4_out = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by - * yylex_init() + * parser4_lex_init() */ return 0; } /* %endif */ /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */ -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) +/* parser4_lex_destroy is for both reentrant and non-reentrant scanners. */ +int parser4_lex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); + parser4__delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); + parser4_pop_buffer_state(); } /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); + parser4_free((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ + * parser4_lex() is called, initialization will occur. */ yy_init_globals( ); /* %if-reentrant */ @@ -5367,19 +5113,18 @@ int yylex_destroy (void) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { - - int i; + register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) +static int yy_flex_strlen (yyconst char * s ) { - int n; + register int n; for ( n = 0; s[n]; ++n ) ; @@ -5387,14 +5132,13 @@ static int yy_flex_strlen (const char * s ) } #endif -void *yyalloc (yy_size_t size ) +void *parser4_alloc (yy_size_t size ) { - return malloc(size); + return (void *) malloc( size ); } -void *yyrealloc (void * ptr, yy_size_t size ) +void *parser4_realloc (void * ptr, yy_size_t size ) { - /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -5402,12 +5146,12 @@ void *yyrealloc (void * ptr, yy_size_t size ) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return realloc(ptr, size); + return (void *) realloc( (char *) ptr, size ); } -void yyfree (void * ptr ) +void parser4_free (void * ptr ) { - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see parser4_realloc() for (char *) cast */ } /* %if-tables-serialization definitions */ @@ -5420,6 +5164,7 @@ void yyfree (void * ptr ) #line 1760 "dhcp4_lexer.ll" + using namespace isc::dhcp; void @@ -5431,7 +5176,7 @@ Parser4Context::scanStringBegin(const std::string& str, ParserType parser_type) file_ = "<string>"; sfile_ = 0; loc_.initialize(&file_); - yy_flex_debug = trace_scanning_; + parser4__flex_debug = trace_scanning_; YY_BUFFER_STATE buffer; buffer = parser4__scan_bytes(str.c_str(), str.size()); if (!buffer) { @@ -5451,7 +5196,7 @@ Parser4Context::scanFileBegin(FILE * f, file_ = filename; sfile_ = f; loc_.initialize(&file_); - yy_flex_debug = trace_scanning_; + parser4__flex_debug = trace_scanning_; YY_BUFFER_STATE buffer; /* See dhcp4_lexer.cc header for available definitions */ diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index 40d013703b..a32606aca2 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -938,6 +938,7 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} \"reservations\" { switch(driver.ctx_) { + case isc::dhcp::Parser4Context::DHCP4: case isc::dhcp::Parser4Context::SUBNET4: return isc::dhcp::Dhcp4Parser::make_RESERVATIONS(driver.loc_); default: diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc index 854ca57248..dfa2ea1ad0 100644 --- a/src/bin/dhcp4/dhcp4_parser.cc +++ b/src/bin/dhcp4/dhcp4_parser.cc @@ -1005,8 +1005,8 @@ namespace isc { namespace dhcp { #line 1006 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 100: -#line 459 "dhcp4_parser.yy" // lalr1.cc:859 + case 101: +#line 460 "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); @@ -1014,8 +1014,8 @@ namespace isc { namespace dhcp { #line 1015 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 101: -#line 464 "dhcp4_parser.yy" // lalr1.cc:859 + case 102: +#line 465 "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); @@ -1023,8 +1023,8 @@ namespace isc { namespace dhcp { #line 1024 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 102: -#line 469 "dhcp4_parser.yy" // lalr1.cc:859 + case 103: +#line 470 "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); @@ -1032,8 +1032,8 @@ namespace isc { namespace dhcp { #line 1033 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 103: -#line 474 "dhcp4_parser.yy" // lalr1.cc:859 + case 104: +#line 475 "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); @@ -1041,8 +1041,8 @@ namespace isc { namespace dhcp { #line 1042 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 104: -#line 479 "dhcp4_parser.yy" // lalr1.cc:859 + case 105: +#line 480 "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); @@ -1050,8 +1050,8 @@ namespace isc { namespace dhcp { #line 1051 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 105: -#line 484 "dhcp4_parser.yy" // lalr1.cc:859 + case 106: +#line 485 "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); @@ -1059,8 +1059,8 @@ namespace isc { namespace dhcp { #line 1060 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 106: -#line 490 "dhcp4_parser.yy" // lalr1.cc:859 + case 107: +#line 491 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces-config", i); @@ -1070,8 +1070,8 @@ namespace isc { namespace dhcp { #line 1071 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 107: -#line 495 "dhcp4_parser.yy" // lalr1.cc:859 + case 108: +#line 496 "dhcp4_parser.yy" // lalr1.cc:859 { // No interfaces config param is required ctx.stack_.pop_back(); @@ -1080,8 +1080,8 @@ namespace isc { namespace dhcp { #line 1081 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 117: -#line 514 "dhcp4_parser.yy" // lalr1.cc:859 + case 118: +#line 515 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1090,8 +1090,8 @@ namespace isc { namespace dhcp { #line 1091 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 118: -#line 518 "dhcp4_parser.yy" // lalr1.cc:859 + case 119: +#line 519 "dhcp4_parser.yy" // lalr1.cc:859 { // No interfaces config param is required // parsing completed @@ -1099,8 +1099,8 @@ namespace isc { namespace dhcp { #line 1100 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 119: -#line 523 "dhcp4_parser.yy" // lalr1.cc:859 + case 120: +#line 524 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces", l); @@ -1110,8 +1110,8 @@ namespace isc { namespace dhcp { #line 1111 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 120: -#line 528 "dhcp4_parser.yy" // lalr1.cc:859 + case 121: +#line 529 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1119,16 +1119,16 @@ namespace isc { namespace dhcp { #line 1120 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 121: -#line 533 "dhcp4_parser.yy" // lalr1.cc:859 + case 122: +#line 534 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.DHCP_SOCKET_TYPE); } #line 1128 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 122: -#line 535 "dhcp4_parser.yy" // lalr1.cc:859 + case 123: +#line 536 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -1136,28 +1136,28 @@ namespace isc { namespace dhcp { #line 1137 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 123: -#line 540 "dhcp4_parser.yy" // lalr1.cc:859 + case 124: +#line 541 "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 124: -#line 541 "dhcp4_parser.yy" // lalr1.cc:859 + case 125: +#line 542 "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 125: -#line 544 "dhcp4_parser.yy" // lalr1.cc:859 + case 126: +#line 545 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.OUTBOUND_INTERFACE); } #line 1157 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 126: -#line 546 "dhcp4_parser.yy" // lalr1.cc:859 + case 127: +#line 547 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -1165,24 +1165,24 @@ namespace isc { namespace dhcp { #line 1166 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 127: -#line 551 "dhcp4_parser.yy" // lalr1.cc:859 + case 128: +#line 552 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location))); } #line 1174 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 128: -#line 553 "dhcp4_parser.yy" // lalr1.cc:859 + case 129: +#line 554 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location))); } #line 1182 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 129: -#line 557 "dhcp4_parser.yy" // lalr1.cc:859 + case 130: +#line 558 "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); @@ -1190,8 +1190,8 @@ namespace isc { namespace dhcp { #line 1191 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 130: -#line 563 "dhcp4_parser.yy" // lalr1.cc:859 + case 131: +#line 564 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lease-database", i); @@ -1201,8 +1201,8 @@ namespace isc { namespace dhcp { #line 1202 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 131: -#line 568 "dhcp4_parser.yy" // lalr1.cc:859 + case 132: +#line 569 "dhcp4_parser.yy" // lalr1.cc:859 { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); @@ -1212,8 +1212,8 @@ namespace isc { namespace dhcp { #line 1213 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 132: -#line 575 "dhcp4_parser.yy" // lalr1.cc:859 + case 133: +#line 576 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sanity-checks", m); @@ -1223,8 +1223,8 @@ namespace isc { namespace dhcp { #line 1224 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 133: -#line 580 "dhcp4_parser.yy" // lalr1.cc:859 + case 134: +#line 581 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1232,16 +1232,16 @@ namespace isc { namespace dhcp { #line 1233 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 137: -#line 590 "dhcp4_parser.yy" // lalr1.cc:859 + case 138: +#line 591 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1241 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 138: -#line 592 "dhcp4_parser.yy" // lalr1.cc:859 + case 139: +#line 593 "dhcp4_parser.yy" // lalr1.cc:859 { if ( (string(yystack_[0].value.as< std::string > ()) == "none") || @@ -1260,8 +1260,8 @@ namespace isc { namespace dhcp { #line 1261 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 139: -#line 608 "dhcp4_parser.yy" // lalr1.cc:859 + case 140: +#line 609 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hosts-database", i); @@ -1271,8 +1271,8 @@ namespace isc { namespace dhcp { #line 1272 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 140: -#line 613 "dhcp4_parser.yy" // lalr1.cc:859 + case 141: +#line 614 "dhcp4_parser.yy" // lalr1.cc:859 { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); @@ -1282,8 +1282,8 @@ namespace isc { namespace dhcp { #line 1283 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 141: -#line 620 "dhcp4_parser.yy" // lalr1.cc:859 + case 142: +#line 621 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hosts-databases", l); @@ -1293,8 +1293,8 @@ namespace isc { namespace dhcp { #line 1294 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 142: -#line 625 "dhcp4_parser.yy" // lalr1.cc:859 + case 143: +#line 626 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1302,8 +1302,8 @@ namespace isc { namespace dhcp { #line 1303 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 147: -#line 638 "dhcp4_parser.yy" // lalr1.cc:859 + case 148: +#line 639 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -1312,8 +1312,8 @@ namespace isc { namespace dhcp { #line 1313 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 148: -#line 642 "dhcp4_parser.yy" // lalr1.cc:859 + case 149: +#line 643 "dhcp4_parser.yy" // lalr1.cc:859 { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -1322,16 +1322,16 @@ namespace isc { namespace dhcp { #line 1323 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 169: -#line 672 "dhcp4_parser.yy" // lalr1.cc:859 + case 170: +#line 673 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.DATABASE_TYPE); } #line 1331 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 170: -#line 674 "dhcp4_parser.yy" // lalr1.cc:859 + case 171: +#line 675 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -1339,40 +1339,40 @@ namespace isc { namespace dhcp { #line 1340 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 171: -#line 679 "dhcp4_parser.yy" // lalr1.cc:859 + case 172: +#line 680 "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 172: -#line 680 "dhcp4_parser.yy" // lalr1.cc:859 + case 173: +#line 681 "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 173: -#line 681 "dhcp4_parser.yy" // lalr1.cc:859 + case 174: +#line 682 "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 174: -#line 682 "dhcp4_parser.yy" // lalr1.cc:859 + case 175: +#line 683 "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 175: -#line 685 "dhcp4_parser.yy" // lalr1.cc:859 + case 176: +#line 686 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1372 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 176: -#line 687 "dhcp4_parser.yy" // lalr1.cc:859 + case 177: +#line 688 "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); @@ -1381,16 +1381,16 @@ namespace isc { namespace dhcp { #line 1382 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 177: -#line 693 "dhcp4_parser.yy" // lalr1.cc:859 + case 178: +#line 694 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1390 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 178: -#line 695 "dhcp4_parser.yy" // lalr1.cc:859 + case 179: +#line 696 "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); @@ -1399,16 +1399,16 @@ namespace isc { namespace dhcp { #line 1400 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 179: -#line 701 "dhcp4_parser.yy" // lalr1.cc:859 + case 180: +#line 702 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1408 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 180: -#line 703 "dhcp4_parser.yy" // lalr1.cc:859 + case 181: +#line 704 "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); @@ -1417,8 +1417,8 @@ namespace isc { namespace dhcp { #line 1418 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 181: -#line 709 "dhcp4_parser.yy" // lalr1.cc:859 + case 182: +#line 710 "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); @@ -1426,16 +1426,16 @@ namespace isc { namespace dhcp { #line 1427 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 182: -#line 714 "dhcp4_parser.yy" // lalr1.cc:859 + case 183: +#line 715 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1435 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 183: -#line 716 "dhcp4_parser.yy" // lalr1.cc:859 + case 184: +#line 717 "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); @@ -1444,8 +1444,8 @@ namespace isc { namespace dhcp { #line 1445 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 184: -#line 722 "dhcp4_parser.yy" // lalr1.cc:859 + case 185: +#line 723 "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); @@ -1453,8 +1453,8 @@ namespace isc { namespace dhcp { #line 1454 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 185: -#line 727 "dhcp4_parser.yy" // lalr1.cc:859 + case 186: +#line 728 "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); @@ -1462,8 +1462,8 @@ namespace isc { namespace dhcp { #line 1463 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 186: -#line 732 "dhcp4_parser.yy" // lalr1.cc:859 + case 187: +#line 733 "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); @@ -1471,8 +1471,8 @@ namespace isc { namespace dhcp { #line 1472 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 187: -#line 737 "dhcp4_parser.yy" // lalr1.cc:859 + case 188: +#line 738 "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); @@ -1480,8 +1480,8 @@ namespace isc { namespace dhcp { #line 1481 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 188: -#line 742 "dhcp4_parser.yy" // lalr1.cc:859 + case 189: +#line 743 "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); @@ -1489,8 +1489,8 @@ namespace isc { namespace dhcp { #line 1490 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 189: -#line 747 "dhcp4_parser.yy" // lalr1.cc:859 + case 190: +#line 748 "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); @@ -1498,8 +1498,8 @@ namespace isc { namespace dhcp { #line 1499 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 190: -#line 752 "dhcp4_parser.yy" // lalr1.cc:859 + case 191: +#line 753 "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); @@ -1507,16 +1507,16 @@ namespace isc { namespace dhcp { #line 1508 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 191: -#line 757 "dhcp4_parser.yy" // lalr1.cc:859 + case 192: +#line 758 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1516 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 192: -#line 759 "dhcp4_parser.yy" // lalr1.cc:859 + case 193: +#line 760 "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); @@ -1525,16 +1525,16 @@ namespace isc { namespace dhcp { #line 1526 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 193: -#line 765 "dhcp4_parser.yy" // lalr1.cc:859 + case 194: +#line 766 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1534 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 194: -#line 767 "dhcp4_parser.yy" // lalr1.cc:859 + case 195: +#line 768 "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); @@ -1543,8 +1543,8 @@ namespace isc { namespace dhcp { #line 1544 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 195: -#line 773 "dhcp4_parser.yy" // lalr1.cc:859 + case 196: +#line 774 "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); @@ -1552,8 +1552,8 @@ namespace isc { namespace dhcp { #line 1553 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 196: -#line 778 "dhcp4_parser.yy" // lalr1.cc:859 + case 197: +#line 779 "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); @@ -1561,8 +1561,8 @@ namespace isc { namespace dhcp { #line 1562 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 197: -#line 783 "dhcp4_parser.yy" // lalr1.cc:859 + case 198: +#line 784 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host-reservation-identifiers", l); @@ -1572,8 +1572,8 @@ namespace isc { namespace dhcp { #line 1573 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 198: -#line 788 "dhcp4_parser.yy" // lalr1.cc:859 + case 199: +#line 789 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1581,8 +1581,8 @@ namespace isc { namespace dhcp { #line 1582 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 206: -#line 804 "dhcp4_parser.yy" // lalr1.cc:859 + case 207: +#line 805 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); @@ -1590,8 +1590,8 @@ namespace isc { namespace dhcp { #line 1591 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 207: -#line 809 "dhcp4_parser.yy" // lalr1.cc:859 + case 208: +#line 810 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); @@ -1599,8 +1599,8 @@ namespace isc { namespace dhcp { #line 1600 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 208: -#line 814 "dhcp4_parser.yy" // lalr1.cc:859 + case 209: +#line 815 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(circuit); @@ -1608,8 +1608,8 @@ namespace isc { namespace dhcp { #line 1609 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 209: -#line 819 "dhcp4_parser.yy" // lalr1.cc:859 + case 210: +#line 820 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(client); @@ -1617,8 +1617,8 @@ namespace isc { namespace dhcp { #line 1618 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 210: -#line 824 "dhcp4_parser.yy" // lalr1.cc:859 + case 211: +#line 825 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); @@ -1626,8 +1626,8 @@ namespace isc { namespace dhcp { #line 1627 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 211: -#line 829 "dhcp4_parser.yy" // lalr1.cc:859 + case 212: +#line 830 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hooks-libraries", l); @@ -1637,8 +1637,8 @@ namespace isc { namespace dhcp { #line 1638 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 212: -#line 834 "dhcp4_parser.yy" // lalr1.cc:859 + case 213: +#line 835 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1646,8 +1646,8 @@ namespace isc { namespace dhcp { #line 1647 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 217: -#line 847 "dhcp4_parser.yy" // lalr1.cc:859 + case 218: +#line 848 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -1656,8 +1656,8 @@ namespace isc { namespace dhcp { #line 1657 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 218: -#line 851 "dhcp4_parser.yy" // lalr1.cc:859 + case 219: +#line 852 "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)); @@ -1666,8 +1666,8 @@ namespace isc { namespace dhcp { #line 1667 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 219: -#line 857 "dhcp4_parser.yy" // lalr1.cc:859 + case 220: +#line 858 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1676,8 +1676,8 @@ namespace isc { namespace dhcp { #line 1677 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 220: -#line 861 "dhcp4_parser.yy" // lalr1.cc:859 + case 221: +#line 862 "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)); @@ -1686,16 +1686,16 @@ namespace isc { namespace dhcp { #line 1687 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 226: -#line 876 "dhcp4_parser.yy" // lalr1.cc:859 + case 227: +#line 877 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1695 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 227: -#line 878 "dhcp4_parser.yy" // lalr1.cc:859 + case 228: +#line 879 "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); @@ -1704,16 +1704,16 @@ namespace isc { namespace dhcp { #line 1705 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 228: -#line 884 "dhcp4_parser.yy" // lalr1.cc:859 + case 229: +#line 885 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1713 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 229: -#line 886 "dhcp4_parser.yy" // lalr1.cc:859 + case 230: +#line 887 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -1721,8 +1721,8 @@ namespace isc { namespace dhcp { #line 1722 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 230: -#line 892 "dhcp4_parser.yy" // lalr1.cc:859 + case 231: +#line 893 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("expired-leases-processing", m); @@ -1732,8 +1732,8 @@ namespace isc { namespace dhcp { #line 1733 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 231: -#line 897 "dhcp4_parser.yy" // lalr1.cc:859 + case 232: +#line 898 "dhcp4_parser.yy" // lalr1.cc:859 { // No expired lease parameter is required ctx.stack_.pop_back(); @@ -1742,8 +1742,8 @@ namespace isc { namespace dhcp { #line 1743 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 240: -#line 915 "dhcp4_parser.yy" // lalr1.cc:859 + case 241: +#line 916 "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); @@ -1751,8 +1751,8 @@ namespace isc { namespace dhcp { #line 1752 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 241: -#line 920 "dhcp4_parser.yy" // lalr1.cc:859 + case 242: +#line 921 "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); @@ -1760,8 +1760,8 @@ namespace isc { namespace dhcp { #line 1761 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 242: -#line 925 "dhcp4_parser.yy" // lalr1.cc:859 + case 243: +#line 926 "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); @@ -1769,8 +1769,8 @@ namespace isc { namespace dhcp { #line 1770 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 243: -#line 930 "dhcp4_parser.yy" // lalr1.cc:859 + case 244: +#line 931 "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); @@ -1778,8 +1778,8 @@ namespace isc { namespace dhcp { #line 1779 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 244: -#line 935 "dhcp4_parser.yy" // lalr1.cc:859 + case 245: +#line 936 "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); @@ -1787,8 +1787,8 @@ namespace isc { namespace dhcp { #line 1788 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 245: -#line 940 "dhcp4_parser.yy" // lalr1.cc:859 + case 246: +#line 941 "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); @@ -1796,8 +1796,8 @@ namespace isc { namespace dhcp { #line 1797 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 246: -#line 948 "dhcp4_parser.yy" // lalr1.cc:859 + case 247: +#line 949 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet4", l); @@ -1807,8 +1807,8 @@ namespace isc { namespace dhcp { #line 1808 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 247: -#line 953 "dhcp4_parser.yy" // lalr1.cc:859 + case 248: +#line 954 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1816,8 +1816,8 @@ namespace isc { namespace dhcp { #line 1817 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 252: -#line 973 "dhcp4_parser.yy" // lalr1.cc:859 + case 253: +#line 974 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -1826,8 +1826,8 @@ namespace isc { namespace dhcp { #line 1827 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 253: -#line 977 "dhcp4_parser.yy" // lalr1.cc:859 + case 254: +#line 978 "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. @@ -1852,8 +1852,8 @@ namespace isc { namespace dhcp { #line 1853 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 254: -#line 999 "dhcp4_parser.yy" // lalr1.cc:859 + case 255: +#line 1000 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the subnet4 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1862,8 +1862,8 @@ namespace isc { namespace dhcp { #line 1863 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 255: -#line 1003 "dhcp4_parser.yy" // lalr1.cc:859 + case 256: +#line 1004 "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)); @@ -1872,16 +1872,16 @@ namespace isc { namespace dhcp { #line 1873 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 283: -#line 1042 "dhcp4_parser.yy" // lalr1.cc:859 + case 284: +#line 1043 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1881 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 284: -#line 1044 "dhcp4_parser.yy" // lalr1.cc:859 + case 285: +#line 1045 "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); @@ -1890,16 +1890,16 @@ namespace isc { namespace dhcp { #line 1891 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 285: -#line 1050 "dhcp4_parser.yy" // lalr1.cc:859 + case 286: +#line 1051 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1899 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 286: -#line 1052 "dhcp4_parser.yy" // lalr1.cc:859 + case 287: +#line 1053 "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); @@ -1908,16 +1908,16 @@ namespace isc { namespace dhcp { #line 1909 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 287: -#line 1058 "dhcp4_parser.yy" // lalr1.cc:859 + case 288: +#line 1059 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1917 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 288: -#line 1060 "dhcp4_parser.yy" // lalr1.cc:859 + case 289: +#line 1061 "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); @@ -1926,16 +1926,16 @@ namespace isc { namespace dhcp { #line 1927 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 289: -#line 1066 "dhcp4_parser.yy" // lalr1.cc:859 + case 290: +#line 1067 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1935 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 290: -#line 1068 "dhcp4_parser.yy" // lalr1.cc:859 + case 291: +#line 1069 "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); @@ -1944,16 +1944,16 @@ namespace isc { namespace dhcp { #line 1945 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 291: -#line 1074 "dhcp4_parser.yy" // lalr1.cc:859 + case 292: +#line 1075 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1953 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 292: -#line 1076 "dhcp4_parser.yy" // lalr1.cc:859 + case 293: +#line 1077 "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); @@ -1962,16 +1962,16 @@ namespace isc { namespace dhcp { #line 1963 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 293: -#line 1082 "dhcp4_parser.yy" // lalr1.cc:859 + case 294: +#line 1083 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1971 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 294: -#line 1084 "dhcp4_parser.yy" // lalr1.cc:859 + case 295: +#line 1085 "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); @@ -1980,16 +1980,16 @@ namespace isc { namespace dhcp { #line 1981 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 295: -#line 1090 "dhcp4_parser.yy" // lalr1.cc:859 + case 296: +#line 1091 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1989 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 296: -#line 1092 "dhcp4_parser.yy" // lalr1.cc:859 + case 297: +#line 1093 "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); @@ -1998,8 +1998,8 @@ namespace isc { namespace dhcp { #line 1999 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 297: -#line 1098 "dhcp4_parser.yy" // lalr1.cc:859 + case 298: +#line 1099 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("require-client-classes", c); @@ -2009,8 +2009,8 @@ namespace isc { namespace dhcp { #line 2010 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 298: -#line 1103 "dhcp4_parser.yy" // lalr1.cc:859 + case 299: +#line 1104 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2018,16 +2018,16 @@ namespace isc { namespace dhcp { #line 2019 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 299: -#line 1108 "dhcp4_parser.yy" // lalr1.cc:859 + case 300: +#line 1109 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.RESERVATION_MODE); } #line 2027 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 300: -#line 1110 "dhcp4_parser.yy" // lalr1.cc:859 + case 301: +#line 1111 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -2035,26 +2035,26 @@ namespace isc { namespace dhcp { #line 2036 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 301: -#line 1115 "dhcp4_parser.yy" // lalr1.cc:859 + case 302: +#line 1116 "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 302: -#line 1116 "dhcp4_parser.yy" // lalr1.cc:859 + case 303: +#line 1117 "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 303: -#line 1117 "dhcp4_parser.yy" // lalr1.cc:859 + case 304: +#line 1118 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } #line 2054 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 304: -#line 1120 "dhcp4_parser.yy" // lalr1.cc:859 + case 305: +#line 1121 "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); @@ -2062,8 +2062,8 @@ namespace isc { namespace dhcp { #line 2063 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 305: -#line 1125 "dhcp4_parser.yy" // lalr1.cc:859 + case 306: +#line 1126 "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); @@ -2071,8 +2071,8 @@ namespace isc { namespace dhcp { #line 2072 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 306: -#line 1132 "dhcp4_parser.yy" // lalr1.cc:859 + case 307: +#line 1133 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("shared-networks", l); @@ -2082,8 +2082,8 @@ namespace isc { namespace dhcp { #line 2083 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 307: -#line 1137 "dhcp4_parser.yy" // lalr1.cc:859 + case 308: +#line 1138 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2091,8 +2091,8 @@ namespace isc { namespace dhcp { #line 2092 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 312: -#line 1152 "dhcp4_parser.yy" // lalr1.cc:859 + case 313: +#line 1153 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2101,16 +2101,16 @@ namespace isc { namespace dhcp { #line 2102 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 313: -#line 1156 "dhcp4_parser.yy" // lalr1.cc:859 + case 314: +#line 1157 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } #line 2110 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 334: -#line 1188 "dhcp4_parser.yy" // lalr1.cc:859 + case 335: +#line 1189 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("option-def", l); @@ -2120,8 +2120,8 @@ namespace isc { namespace dhcp { #line 2121 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 335: -#line 1193 "dhcp4_parser.yy" // lalr1.cc:859 + case 336: +#line 1194 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2129,8 +2129,8 @@ namespace isc { namespace dhcp { #line 2130 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 336: -#line 1201 "dhcp4_parser.yy" // lalr1.cc:859 + case 337: +#line 1202 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); @@ -2138,16 +2138,16 @@ namespace isc { namespace dhcp { #line 2139 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 337: -#line 1204 "dhcp4_parser.yy" // lalr1.cc:859 + case 338: +#line 1205 "dhcp4_parser.yy" // lalr1.cc:859 { // parsing completed } #line 2147 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 342: -#line 1220 "dhcp4_parser.yy" // lalr1.cc:859 + case 343: +#line 1221 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2156,8 +2156,8 @@ namespace isc { namespace dhcp { #line 2157 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 343: -#line 1224 "dhcp4_parser.yy" // lalr1.cc:859 + case 344: +#line 1225 "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)); @@ -2168,8 +2168,8 @@ namespace isc { namespace dhcp { #line 2169 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 344: -#line 1235 "dhcp4_parser.yy" // lalr1.cc:859 + case 345: +#line 1236 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2178,8 +2178,8 @@ namespace isc { namespace dhcp { #line 2179 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 345: -#line 1239 "dhcp4_parser.yy" // lalr1.cc:859 + case 346: +#line 1240 "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)); @@ -2190,8 +2190,8 @@ namespace isc { namespace dhcp { #line 2191 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 361: -#line 1271 "dhcp4_parser.yy" // lalr1.cc:859 + case 362: +#line 1272 "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); @@ -2199,16 +2199,16 @@ namespace isc { namespace dhcp { #line 2200 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 363: -#line 1278 "dhcp4_parser.yy" // lalr1.cc:859 + case 364: +#line 1279 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2208 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 364: -#line 1280 "dhcp4_parser.yy" // lalr1.cc:859 + case 365: +#line 1281 "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); @@ -2217,16 +2217,16 @@ namespace isc { namespace dhcp { #line 2218 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 365: -#line 1286 "dhcp4_parser.yy" // lalr1.cc:859 + case 366: +#line 1287 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2226 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 366: -#line 1288 "dhcp4_parser.yy" // lalr1.cc:859 + case 367: +#line 1289 "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); @@ -2235,16 +2235,16 @@ namespace isc { namespace dhcp { #line 2236 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 367: -#line 1294 "dhcp4_parser.yy" // lalr1.cc:859 + case 368: +#line 1295 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2244 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 368: -#line 1296 "dhcp4_parser.yy" // lalr1.cc:859 + case 369: +#line 1297 "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); @@ -2253,16 +2253,16 @@ namespace isc { namespace dhcp { #line 2254 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 370: -#line 1304 "dhcp4_parser.yy" // lalr1.cc:859 + case 371: +#line 1305 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2262 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 371: -#line 1306 "dhcp4_parser.yy" // lalr1.cc:859 + case 372: +#line 1307 "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); @@ -2271,8 +2271,8 @@ namespace isc { namespace dhcp { #line 2272 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 372: -#line 1312 "dhcp4_parser.yy" // lalr1.cc:859 + case 373: +#line 1313 "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); @@ -2280,8 +2280,8 @@ namespace isc { namespace dhcp { #line 2281 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 373: -#line 1321 "dhcp4_parser.yy" // lalr1.cc:859 + case 374: +#line 1322 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("option-data", l); @@ -2291,8 +2291,8 @@ namespace isc { namespace dhcp { #line 2292 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 374: -#line 1326 "dhcp4_parser.yy" // lalr1.cc:859 + case 375: +#line 1327 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2300,8 +2300,8 @@ namespace isc { namespace dhcp { #line 2301 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 379: -#line 1345 "dhcp4_parser.yy" // lalr1.cc:859 + case 380: +#line 1346 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2310,8 +2310,8 @@ namespace isc { namespace dhcp { #line 2311 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 380: -#line 1349 "dhcp4_parser.yy" // lalr1.cc:859 + case 381: +#line 1350 "dhcp4_parser.yy" // lalr1.cc:859 { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); @@ -2319,8 +2319,8 @@ namespace isc { namespace dhcp { #line 2320 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 381: -#line 1357 "dhcp4_parser.yy" // lalr1.cc:859 + case 382: +#line 1358 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2329,8 +2329,8 @@ namespace isc { namespace dhcp { #line 2330 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 382: -#line 1361 "dhcp4_parser.yy" // lalr1.cc:859 + case 383: +#line 1362 "dhcp4_parser.yy" // lalr1.cc:859 { /// @todo: the code or name parameters are required. // parsing completed @@ -2338,16 +2338,16 @@ namespace isc { namespace dhcp { #line 2339 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 397: -#line 1394 "dhcp4_parser.yy" // lalr1.cc:859 + case 398: +#line 1395 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2347 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 398: -#line 1396 "dhcp4_parser.yy" // lalr1.cc:859 + case 399: +#line 1397 "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); @@ -2356,8 +2356,8 @@ namespace isc { namespace dhcp { #line 2357 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 401: -#line 1406 "dhcp4_parser.yy" // lalr1.cc:859 + case 402: +#line 1407 "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); @@ -2365,8 +2365,8 @@ namespace isc { namespace dhcp { #line 2366 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 402: -#line 1411 "dhcp4_parser.yy" // lalr1.cc:859 + case 403: +#line 1412 "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); @@ -2374,8 +2374,8 @@ namespace isc { namespace dhcp { #line 2375 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 403: -#line 1419 "dhcp4_parser.yy" // lalr1.cc:859 + case 404: +#line 1420 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pools", l); @@ -2385,8 +2385,8 @@ namespace isc { namespace dhcp { #line 2386 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 404: -#line 1424 "dhcp4_parser.yy" // lalr1.cc:859 + case 405: +#line 1425 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2394,8 +2394,8 @@ namespace isc { namespace dhcp { #line 2395 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 409: -#line 1439 "dhcp4_parser.yy" // lalr1.cc:859 + case 410: +#line 1440 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2404,8 +2404,8 @@ namespace isc { namespace dhcp { #line 2405 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 410: -#line 1443 "dhcp4_parser.yy" // lalr1.cc:859 + case 411: +#line 1444 "dhcp4_parser.yy" // lalr1.cc:859 { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2414,8 +2414,8 @@ namespace isc { namespace dhcp { #line 2415 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 411: -#line 1449 "dhcp4_parser.yy" // lalr1.cc:859 + case 412: +#line 1450 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2424,8 +2424,8 @@ namespace isc { namespace dhcp { #line 2425 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 412: -#line 1453 "dhcp4_parser.yy" // lalr1.cc:859 + case 413: +#line 1454 "dhcp4_parser.yy" // lalr1.cc:859 { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2434,16 +2434,16 @@ namespace isc { namespace dhcp { #line 2435 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 422: -#line 1472 "dhcp4_parser.yy" // lalr1.cc:859 + case 423: +#line 1473 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2443 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 423: -#line 1474 "dhcp4_parser.yy" // lalr1.cc:859 + case 424: +#line 1475 "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); @@ -2452,16 +2452,16 @@ namespace isc { namespace dhcp { #line 2453 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 424: -#line 1480 "dhcp4_parser.yy" // lalr1.cc:859 + case 425: +#line 1481 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2461 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 425: -#line 1482 "dhcp4_parser.yy" // lalr1.cc:859 + case 426: +#line 1483 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as< ElementPtr > (); @@ -2487,16 +2487,16 @@ namespace isc { namespace dhcp { #line 2488 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 426: -#line 1505 "dhcp4_parser.yy" // lalr1.cc:859 + case 427: +#line 1506 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2496 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 427: -#line 1507 "dhcp4_parser.yy" // lalr1.cc:859 + case 428: +#line 1508 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -2524,8 +2524,8 @@ namespace isc { namespace dhcp { #line 2525 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 428: -#line 1535 "dhcp4_parser.yy" // lalr1.cc:859 + case 429: +#line 1536 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations", l); @@ -2535,8 +2535,8 @@ namespace isc { namespace dhcp { #line 2536 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 429: -#line 1540 "dhcp4_parser.yy" // lalr1.cc:859 + case 430: +#line 1541 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2544,8 +2544,8 @@ namespace isc { namespace dhcp { #line 2545 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 434: -#line 1553 "dhcp4_parser.yy" // lalr1.cc:859 + case 435: +#line 1554 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2554,8 +2554,8 @@ namespace isc { namespace dhcp { #line 2555 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 435: -#line 1557 "dhcp4_parser.yy" // lalr1.cc:859 + case 436: +#line 1558 "dhcp4_parser.yy" // lalr1.cc:859 { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); @@ -2563,8 +2563,8 @@ namespace isc { namespace dhcp { #line 2564 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 436: -#line 1562 "dhcp4_parser.yy" // lalr1.cc:859 + case 437: +#line 1563 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2573,8 +2573,8 @@ namespace isc { namespace dhcp { #line 2574 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 437: -#line 1566 "dhcp4_parser.yy" // lalr1.cc:859 + case 438: +#line 1567 "dhcp4_parser.yy" // lalr1.cc:859 { /// @todo: an identifier parameter is required. // parsing completed @@ -2582,16 +2582,16 @@ namespace isc { namespace dhcp { #line 2583 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 457: -#line 1597 "dhcp4_parser.yy" // lalr1.cc:859 + case 458: +#line 1598 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2591 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 458: -#line 1599 "dhcp4_parser.yy" // lalr1.cc:859 + case 459: +#line 1600 "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); @@ -2600,16 +2600,16 @@ namespace isc { namespace dhcp { #line 2601 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 459: -#line 1605 "dhcp4_parser.yy" // lalr1.cc:859 + case 460: +#line 1606 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2609 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 460: -#line 1607 "dhcp4_parser.yy" // lalr1.cc:859 + case 461: +#line 1608 "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); @@ -2618,16 +2618,16 @@ namespace isc { namespace dhcp { #line 2619 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 461: -#line 1613 "dhcp4_parser.yy" // lalr1.cc:859 + case 462: +#line 1614 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2627 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 462: -#line 1615 "dhcp4_parser.yy" // lalr1.cc:859 + case 463: +#line 1616 "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); @@ -2636,16 +2636,16 @@ namespace isc { namespace dhcp { #line 2637 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 463: -#line 1621 "dhcp4_parser.yy" // lalr1.cc:859 + case 464: +#line 1622 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2645 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 464: -#line 1623 "dhcp4_parser.yy" // lalr1.cc:859 + case 465: +#line 1624 "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); @@ -2654,8 +2654,8 @@ namespace isc { namespace dhcp { #line 2655 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 465: -#line 1629 "dhcp4_parser.yy" // lalr1.cc:859 + case 466: +#line 1630 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-addresses", l); @@ -2665,8 +2665,8 @@ namespace isc { namespace dhcp { #line 2666 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 466: -#line 1634 "dhcp4_parser.yy" // lalr1.cc:859 + case 467: +#line 1635 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2674,16 +2674,16 @@ namespace isc { namespace dhcp { #line 2675 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 467: -#line 1639 "dhcp4_parser.yy" // lalr1.cc:859 + case 468: +#line 1640 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2683 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 468: -#line 1641 "dhcp4_parser.yy" // lalr1.cc:859 + case 469: +#line 1642 "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); @@ -2692,16 +2692,16 @@ namespace isc { namespace dhcp { #line 2693 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 469: -#line 1647 "dhcp4_parser.yy" // lalr1.cc:859 + case 470: +#line 1648 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2701 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 470: -#line 1649 "dhcp4_parser.yy" // lalr1.cc:859 + case 471: +#line 1650 "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); @@ -2710,16 +2710,16 @@ namespace isc { namespace dhcp { #line 2711 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 471: -#line 1655 "dhcp4_parser.yy" // lalr1.cc:859 + case 472: +#line 1656 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2719 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 472: -#line 1657 "dhcp4_parser.yy" // lalr1.cc:859 + case 473: +#line 1658 "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); @@ -2728,16 +2728,16 @@ namespace isc { namespace dhcp { #line 2729 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 473: -#line 1663 "dhcp4_parser.yy" // lalr1.cc:859 + case 474: +#line 1664 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2737 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 474: -#line 1665 "dhcp4_parser.yy" // lalr1.cc:859 + case 475: +#line 1666 "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); @@ -2746,16 +2746,16 @@ namespace isc { namespace dhcp { #line 2747 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 475: -#line 1671 "dhcp4_parser.yy" // lalr1.cc:859 + case 476: +#line 1672 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2755 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 476: -#line 1673 "dhcp4_parser.yy" // lalr1.cc:859 + case 477: +#line 1674 "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); @@ -2764,16 +2764,16 @@ namespace isc { namespace dhcp { #line 2765 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 477: -#line 1679 "dhcp4_parser.yy" // lalr1.cc:859 + case 478: +#line 1680 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2773 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 478: -#line 1681 "dhcp4_parser.yy" // lalr1.cc:859 + case 479: +#line 1682 "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); @@ -2782,8 +2782,8 @@ namespace isc { namespace dhcp { #line 2783 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 479: -#line 1687 "dhcp4_parser.yy" // lalr1.cc:859 + case 480: +#line 1688 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-classes", c); @@ -2793,8 +2793,8 @@ namespace isc { namespace dhcp { #line 2794 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 480: -#line 1692 "dhcp4_parser.yy" // lalr1.cc:859 + case 481: +#line 1693 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2802,8 +2802,8 @@ namespace isc { namespace dhcp { #line 2803 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 481: -#line 1700 "dhcp4_parser.yy" // lalr1.cc:859 + case 482: +#line 1701 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("relay", m); @@ -2813,8 +2813,8 @@ namespace isc { namespace dhcp { #line 2814 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 482: -#line 1705 "dhcp4_parser.yy" // lalr1.cc:859 + case 483: +#line 1706 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2822,8 +2822,8 @@ namespace isc { namespace dhcp { #line 2823 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 485: -#line 1717 "dhcp4_parser.yy" // lalr1.cc:859 + case 486: +#line 1718 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-classes", l); @@ -2833,8 +2833,8 @@ namespace isc { namespace dhcp { #line 2834 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 486: -#line 1722 "dhcp4_parser.yy" // lalr1.cc:859 + case 487: +#line 1723 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2842,8 +2842,8 @@ namespace isc { namespace dhcp { #line 2843 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 489: -#line 1731 "dhcp4_parser.yy" // lalr1.cc:859 + case 490: +#line 1732 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2852,8 +2852,8 @@ namespace isc { namespace dhcp { #line 2853 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 490: -#line 1735 "dhcp4_parser.yy" // lalr1.cc:859 + case 491: +#line 1736 "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)); @@ -2862,16 +2862,16 @@ namespace isc { namespace dhcp { #line 2863 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 507: -#line 1764 "dhcp4_parser.yy" // lalr1.cc:859 + case 508: +#line 1765 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2871 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 508: -#line 1766 "dhcp4_parser.yy" // lalr1.cc:859 + case 509: +#line 1767 "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); @@ -2880,8 +2880,8 @@ namespace isc { namespace dhcp { #line 2881 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 509: -#line 1772 "dhcp4_parser.yy" // lalr1.cc:859 + case 510: +#line 1773 "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); @@ -2889,8 +2889,8 @@ namespace isc { namespace dhcp { #line 2890 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 510: -#line 1781 "dhcp4_parser.yy" // lalr1.cc:859 + case 511: +#line 1782 "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); @@ -2898,8 +2898,8 @@ namespace isc { namespace dhcp { #line 2899 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 511: -#line 1788 "dhcp4_parser.yy" // lalr1.cc:859 + case 512: +#line 1789 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("control-socket", m); @@ -2909,8 +2909,8 @@ namespace isc { namespace dhcp { #line 2910 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 512: -#line 1793 "dhcp4_parser.yy" // lalr1.cc:859 + case 513: +#line 1794 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2918,16 +2918,16 @@ namespace isc { namespace dhcp { #line 2919 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 520: -#line 1809 "dhcp4_parser.yy" // lalr1.cc:859 + case 521: +#line 1810 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2927 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 521: -#line 1811 "dhcp4_parser.yy" // lalr1.cc:859 + case 522: +#line 1812 "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); @@ -2936,16 +2936,16 @@ namespace isc { namespace dhcp { #line 2937 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 522: -#line 1817 "dhcp4_parser.yy" // lalr1.cc:859 + case 523: +#line 1818 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2945 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 523: -#line 1819 "dhcp4_parser.yy" // lalr1.cc:859 + case 524: +#line 1820 "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); @@ -2954,8 +2954,8 @@ namespace isc { namespace dhcp { #line 2955 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 524: -#line 1827 "dhcp4_parser.yy" // lalr1.cc:859 + case 525: +#line 1828 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp-ddns", m); @@ -2965,8 +2965,8 @@ namespace isc { namespace dhcp { #line 2966 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 525: -#line 1832 "dhcp4_parser.yy" // lalr1.cc:859 + case 526: +#line 1833 "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)); @@ -2976,8 +2976,8 @@ namespace isc { namespace dhcp { #line 2977 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 526: -#line 1839 "dhcp4_parser.yy" // lalr1.cc:859 + case 527: +#line 1840 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2986,8 +2986,8 @@ namespace isc { namespace dhcp { #line 2987 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 527: -#line 1843 "dhcp4_parser.yy" // lalr1.cc:859 + case 528: +#line 1844 "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)); @@ -2996,8 +2996,8 @@ namespace isc { namespace dhcp { #line 2997 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 549: -#line 1874 "dhcp4_parser.yy" // lalr1.cc:859 + case 550: +#line 1875 "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); @@ -3005,16 +3005,16 @@ namespace isc { namespace dhcp { #line 3006 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 550: -#line 1879 "dhcp4_parser.yy" // lalr1.cc:859 + case 551: +#line 1880 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3014 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 551: -#line 1881 "dhcp4_parser.yy" // lalr1.cc:859 + case 552: +#line 1882 "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); @@ -3023,16 +3023,16 @@ namespace isc { namespace dhcp { #line 3024 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 552: -#line 1887 "dhcp4_parser.yy" // lalr1.cc:859 + case 553: +#line 1888 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3032 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 553: -#line 1889 "dhcp4_parser.yy" // lalr1.cc:859 + case 554: +#line 1890 "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); @@ -3041,8 +3041,8 @@ namespace isc { namespace dhcp { #line 3042 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 554: -#line 1895 "dhcp4_parser.yy" // lalr1.cc:859 + case 555: +#line 1896 "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); @@ -3050,16 +3050,16 @@ namespace isc { namespace dhcp { #line 3051 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 555: -#line 1900 "dhcp4_parser.yy" // lalr1.cc:859 + case 556: +#line 1901 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3059 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 556: -#line 1902 "dhcp4_parser.yy" // lalr1.cc:859 + case 557: +#line 1903 "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); @@ -3068,8 +3068,8 @@ namespace isc { namespace dhcp { #line 3069 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 557: -#line 1908 "dhcp4_parser.yy" // lalr1.cc:859 + case 558: +#line 1909 "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); @@ -3077,8 +3077,8 @@ namespace isc { namespace dhcp { #line 3078 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 558: -#line 1913 "dhcp4_parser.yy" // lalr1.cc:859 + case 559: +#line 1914 "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); @@ -3086,16 +3086,16 @@ namespace isc { namespace dhcp { #line 3087 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 559: -#line 1918 "dhcp4_parser.yy" // lalr1.cc:859 + case 560: +#line 1919 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NCR_PROTOCOL); } #line 3095 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 560: -#line 1920 "dhcp4_parser.yy" // lalr1.cc:859 + case 561: +#line 1921 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3103,28 +3103,28 @@ namespace isc { namespace dhcp { #line 3104 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 561: -#line 1926 "dhcp4_parser.yy" // lalr1.cc:859 + 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 562: -#line 1927 "dhcp4_parser.yy" // lalr1.cc:859 + case 563: +#line 1928 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } #line 3116 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 563: -#line 1930 "dhcp4_parser.yy" // lalr1.cc:859 + case 564: +#line 1931 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NCR_FORMAT); } #line 3124 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 564: -#line 1932 "dhcp4_parser.yy" // lalr1.cc:859 + case 565: +#line 1933 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); @@ -3133,8 +3133,8 @@ namespace isc { namespace dhcp { #line 3134 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 565: -#line 1938 "dhcp4_parser.yy" // lalr1.cc:859 + case 566: +#line 1939 "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); @@ -3142,8 +3142,8 @@ namespace isc { namespace dhcp { #line 3143 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 566: -#line 1943 "dhcp4_parser.yy" // lalr1.cc:859 + case 567: +#line 1944 "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); @@ -3151,8 +3151,8 @@ namespace isc { namespace dhcp { #line 3152 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 567: -#line 1948 "dhcp4_parser.yy" // lalr1.cc:859 + case 568: +#line 1949 "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); @@ -3160,16 +3160,16 @@ namespace isc { namespace dhcp { #line 3161 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 568: -#line 1953 "dhcp4_parser.yy" // lalr1.cc:859 + case 569: +#line 1954 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.REPLACE_CLIENT_NAME); } #line 3169 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 569: -#line 1955 "dhcp4_parser.yy" // lalr1.cc:859 + case 570: +#line 1956 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3177,40 +3177,40 @@ namespace isc { namespace dhcp { #line 3178 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 570: -#line 1961 "dhcp4_parser.yy" // lalr1.cc:859 + case 571: +#line 1962 "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 break; - case 571: -#line 1964 "dhcp4_parser.yy" // lalr1.cc:859 + case 572: +#line 1965 "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 break; - case 572: -#line 1967 "dhcp4_parser.yy" // lalr1.cc:859 + case 573: +#line 1968 "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 break; - case 573: -#line 1970 "dhcp4_parser.yy" // lalr1.cc:859 + case 574: +#line 1971 "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 break; - case 574: -#line 1973 "dhcp4_parser.yy" // lalr1.cc:859 + case 575: +#line 1974 "dhcp4_parser.yy" // lalr1.cc:859 { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); @@ -3218,16 +3218,16 @@ namespace isc { namespace dhcp { #line 3219 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 575: -#line 1979 "dhcp4_parser.yy" // lalr1.cc:859 + case 576: +#line 1980 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3227 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 576: -#line 1981 "dhcp4_parser.yy" // lalr1.cc:859 + case 577: +#line 1982 "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); @@ -3236,16 +3236,16 @@ namespace isc { namespace dhcp { #line 3237 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 577: -#line 1987 "dhcp4_parser.yy" // lalr1.cc:859 + case 578: +#line 1988 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3245 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 578: -#line 1989 "dhcp4_parser.yy" // lalr1.cc:859 + case 579: +#line 1990 "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); @@ -3254,16 +3254,16 @@ namespace isc { namespace dhcp { #line 3255 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 579: -#line 1995 "dhcp4_parser.yy" // lalr1.cc:859 + case 580: +#line 1996 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3263 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 580: -#line 1997 "dhcp4_parser.yy" // lalr1.cc:859 + case 581: +#line 1998 "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); @@ -3272,16 +3272,16 @@ namespace isc { namespace dhcp { #line 3273 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 581: -#line 2006 "dhcp4_parser.yy" // lalr1.cc:859 + case 582: +#line 2007 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3281 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 582: -#line 2008 "dhcp4_parser.yy" // lalr1.cc:859 + case 583: +#line 2009 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3289,16 +3289,16 @@ namespace isc { namespace dhcp { #line 3290 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 583: -#line 2013 "dhcp4_parser.yy" // lalr1.cc:859 + case 584: +#line 2014 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3298 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 584: -#line 2015 "dhcp4_parser.yy" // lalr1.cc:859 + case 585: +#line 2016 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3306,16 +3306,16 @@ namespace isc { namespace dhcp { #line 3307 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 585: -#line 2020 "dhcp4_parser.yy" // lalr1.cc:859 + case 586: +#line 2021 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3315 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 586: -#line 2022 "dhcp4_parser.yy" // lalr1.cc:859 + case 587: +#line 2023 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3323,8 +3323,8 @@ namespace isc { namespace dhcp { #line 3324 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 587: -#line 2032 "dhcp4_parser.yy" // lalr1.cc:859 + case 588: +#line 2033 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("Logging", m); @@ -3334,8 +3334,8 @@ namespace isc { namespace dhcp { #line 3335 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 588: -#line 2037 "dhcp4_parser.yy" // lalr1.cc:859 + case 589: +#line 2038 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -3343,8 +3343,8 @@ namespace isc { namespace dhcp { #line 3344 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 589: -#line 2042 "dhcp4_parser.yy" // lalr1.cc:859 + case 590: +#line 2043 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the Logging map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3353,16 +3353,16 @@ namespace isc { namespace dhcp { #line 3354 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 590: -#line 2046 "dhcp4_parser.yy" // lalr1.cc:859 + case 591: +#line 2047 "dhcp4_parser.yy" // lalr1.cc:859 { // parsing completed } #line 3362 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 594: -#line 2062 "dhcp4_parser.yy" // lalr1.cc:859 + case 595: +#line 2063 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("loggers", l); @@ -3372,8 +3372,8 @@ namespace isc { namespace dhcp { #line 3373 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 595: -#line 2067 "dhcp4_parser.yy" // lalr1.cc:859 + case 596: +#line 2068 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -3381,8 +3381,8 @@ namespace isc { namespace dhcp { #line 3382 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 598: -#line 2079 "dhcp4_parser.yy" // lalr1.cc:859 + case 599: +#line 2080 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); @@ -3391,16 +3391,16 @@ namespace isc { namespace dhcp { #line 3392 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 599: -#line 2083 "dhcp4_parser.yy" // lalr1.cc:859 + case 600: +#line 2084 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } #line 3400 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 609: -#line 2100 "dhcp4_parser.yy" // lalr1.cc:859 + case 610: +#line 2101 "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); @@ -3408,16 +3408,16 @@ namespace isc { namespace dhcp { #line 3409 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 610: -#line 2105 "dhcp4_parser.yy" // lalr1.cc:859 + case 611: +#line 2106 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3417 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 611: -#line 2107 "dhcp4_parser.yy" // lalr1.cc:859 + case 612: +#line 2108 "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); @@ -3426,8 +3426,8 @@ namespace isc { namespace dhcp { #line 3427 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 612: -#line 2113 "dhcp4_parser.yy" // lalr1.cc:859 + case 613: +#line 2114 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output_options", l); @@ -3437,8 +3437,8 @@ namespace isc { namespace dhcp { #line 3438 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 613: -#line 2118 "dhcp4_parser.yy" // lalr1.cc:859 + case 614: +#line 2119 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -3446,8 +3446,8 @@ namespace isc { namespace dhcp { #line 3447 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 616: -#line 2127 "dhcp4_parser.yy" // lalr1.cc:859 + case 617: +#line 2128 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -3456,24 +3456,24 @@ namespace isc { namespace dhcp { #line 3457 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 617: -#line 2131 "dhcp4_parser.yy" // lalr1.cc:859 + case 618: +#line 2132 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } #line 3465 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 624: -#line 2145 "dhcp4_parser.yy" // lalr1.cc:859 + case 625: +#line 2146 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3473 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 625: -#line 2147 "dhcp4_parser.yy" // lalr1.cc:859 + case 626: +#line 2148 "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); @@ -3482,8 +3482,8 @@ namespace isc { namespace dhcp { #line 3483 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 626: -#line 2153 "dhcp4_parser.yy" // lalr1.cc:859 + case 627: +#line 2154 "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); @@ -3491,8 +3491,8 @@ namespace isc { namespace dhcp { #line 3492 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 627: -#line 2158 "dhcp4_parser.yy" // lalr1.cc:859 + case 628: +#line 2159 "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); @@ -3500,8 +3500,8 @@ namespace isc { namespace dhcp { #line 3501 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 628: -#line 2163 "dhcp4_parser.yy" // lalr1.cc:859 + case 629: +#line 2164 "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); @@ -3765,114 +3765,114 @@ namespace isc { namespace dhcp { } - const short int Dhcp4Parser::yypact_ninf_ = -787; + const short int Dhcp4Parser::yypact_ninf_ = -777; const signed char Dhcp4Parser::yytable_ninf_ = -1; const short int Dhcp4Parser::yypact_[] = { - 413, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, 32, 22, 33, 45, 64, 107, - 109, 120, 127, 155, 159, 170, 183, 192, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, 22, -127, 27, 95, 57, 187, - 160, 358, 145, 28, 79, -58, 425, 80, -787, 222, - 252, 267, 279, 294, -787, -787, -787, -787, -787, 295, - -787, 74, -787, -787, -787, -787, -787, -787, -787, -787, - 298, 306, -787, -787, -787, -787, -787, -787, 307, 308, - 309, 310, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, 314, -787, -787, -787, 81, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, 316, -787, - 99, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, 318, 320, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, 101, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, 102, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, 317, 323, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, 322, -787, -787, 324, -787, - -787, -787, 329, -787, -787, 327, 333, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - 334, 335, -787, -787, -787, -787, 336, 338, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - 105, -787, -787, -787, 343, -787, -787, 345, -787, 346, - 348, -787, -787, 352, 355, 357, -787, -787, -787, -787, - -787, -787, -787, 125, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, 147, -787, -787, -787, 22, 22, -787, 176, - 359, 361, 364, 367, 369, -787, 27, -787, 371, 372, - 178, 214, 376, 381, 383, 385, 386, 388, 200, 234, - 237, 239, 391, 398, 400, 402, 405, 406, 408, 409, - 411, 412, 256, 415, 416, 95, -787, 418, 419, 428, - 265, 57, -787, 429, 430, 431, 432, 433, 434, 436, - 284, 277, 439, 440, 441, 443, 452, 187, -787, 453, - 160, -787, 454, 470, 471, 472, 473, 474, 475, 476, - -787, 358, -787, 477, 478, 321, 481, 482, 483, 326, - -787, 28, 484, 328, 331, -787, 79, 487, 489, -14, - -787, 332, 495, 496, 339, 499, 342, 347, 501, 503, - 344, 351, 353, 506, 507, 508, 512, 425, -787, 514, - 80, -787, -787, -787, 516, 515, 517, 22, 22, 22, - -787, 520, 521, -787, -787, 360, 368, 370, 523, 525, - 528, -787, -787, -787, -787, 529, 530, 531, 533, 546, - 393, 550, 553, 569, 568, -787, 570, 571, -787, 574, - 201, 283, -787, -787, 420, 421, 422, 575, 423, 426, - 427, -787, -787, -20, 574, 435, 584, 583, -787, 437, - -787, 574, 438, 442, 444, 445, 446, 447, 448, -787, - 449, 450, -787, 451, 455, 456, -787, -787, 457, -787, - -787, -787, 458, 22, -787, -787, 459, 460, -787, 461, - -787, -787, 29, 462, -787, -787, -787, 5, 463, 464, - 465, -787, 587, -787, 22, 95, 80, -787, -787, -787, - 57, 555, -787, -787, -787, 424, 424, 586, 588, 590, - 593, 594, -787, -787, -787, -36, 595, 597, 118, 59, - 425, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, 606, -787, -787, -787, -787, -787, -787, -787, - -787, -787, 607, 210, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, 608, -787, 172, - 188, 190, -787, 198, -787, -787, -787, -787, -787, -787, - 619, 623, 624, 625, 626, -787, -787, 627, 628, 629, - 630, 631, -787, 199, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, 206, -787, 632, 591, -787, -787, 633, 634, - -787, -787, 635, 637, -787, -787, 636, 640, -787, -787, - 638, 642, -787, -787, -787, -787, -787, -787, 72, -787, - -787, -787, -787, -787, -787, -787, 153, -787, -787, 641, - 643, -787, 644, 645, 646, 647, 648, 649, 226, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, 227, -787, -787, -787, 233, 493, -787, 650, 652, - -787, -787, 651, 655, -787, -787, -787, -787, 653, -787, - 189, -787, -787, -787, -787, 656, 555, -787, 658, 659, - 660, 661, 497, 502, 505, 504, 509, 665, 666, 510, - 511, 513, 518, 519, 424, -787, -787, 424, -787, 586, - 187, -787, 588, 28, -787, 590, 79, -787, 593, 244, - -787, 594, -36, -787, 39, 595, -787, -58, -787, 597, - 522, 524, 526, 527, 532, 534, 118, -787, 670, 672, - 59, -787, -787, -787, 671, 675, 160, -787, 606, 358, - -787, 607, 677, -787, 20, 608, -787, 536, -787, 259, - 537, 538, 539, -787, -787, -787, -787, -787, 540, 541, - -787, -787, -787, -787, -787, -787, 246, -787, 250, -787, - 674, -787, 679, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, 270, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, 681, -787, -787, - -787, -787, -787, -787, -787, -787, -787, 682, 676, -787, - -787, -787, -787, -787, 271, -787, -787, -787, -787, -787, - -787, -787, -787, 542, 543, -787, -787, 544, 274, -787, - 683, -787, 574, -787, 688, -787, -787, -787, -787, -787, - 278, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, 244, -787, 689, 545, -787, 39, -787, -787, -787, - -787, -787, -787, -787, 691, 548, 702, 20, -787, -787, - 547, -787, -787, 706, -787, 551, -787, -787, 700, -787, - -787, 282, -787, 108, 700, -787, -787, 709, 710, 711, - 281, -787, -787, -787, -787, -787, -787, 712, 554, 557, - 558, 108, -787, 556, -787, -787, -787, -787, -787 + 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, + -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, -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, + -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, -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, -777, -777, -777, -777, -777, -777, -777, -777, + -777, 329, 330, -777, -777, -777, -777, 323, 333, -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, -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, -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, -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, -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 }; const unsigned short int @@ -3882,393 +3882,391 @@ 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, 117, 9, 254, 11, 411, 13, - 436, 15, 336, 17, 344, 19, 381, 21, 219, 23, - 526, 25, 589, 27, 45, 39, 0, 0, 0, 0, - 0, 438, 0, 346, 383, 0, 0, 0, 47, 0, - 46, 0, 0, 40, 66, 587, 581, 583, 585, 0, - 65, 0, 58, 60, 62, 63, 64, 61, 106, 132, - 0, 0, 457, 459, 461, 130, 139, 141, 0, 0, - 0, 0, 246, 334, 373, 306, 424, 426, 197, 485, - 211, 230, 0, 511, 524, 99, 0, 70, 72, 73, - 74, 75, 91, 92, 78, 79, 98, 80, 81, 82, - 86, 87, 76, 77, 84, 85, 96, 97, 93, 94, - 95, 83, 88, 89, 90, 119, 121, 125, 0, 116, - 0, 108, 110, 111, 112, 113, 114, 115, 285, 287, - 289, 403, 283, 291, 293, 0, 0, 299, 297, 295, - 428, 481, 282, 258, 259, 260, 273, 0, 256, 263, - 277, 278, 279, 264, 265, 268, 269, 271, 266, 267, - 261, 262, 280, 281, 270, 274, 275, 276, 272, 422, - 421, 417, 418, 416, 0, 413, 415, 419, 420, 479, - 467, 469, 473, 471, 477, 475, 463, 456, 450, 454, - 455, 0, 439, 440, 451, 452, 453, 447, 442, 448, - 444, 445, 446, 449, 443, 0, 363, 182, 0, 367, - 365, 370, 0, 359, 360, 0, 347, 348, 350, 362, - 351, 352, 353, 369, 354, 355, 356, 357, 358, 397, - 0, 0, 395, 396, 399, 400, 0, 384, 385, 387, - 388, 389, 390, 391, 392, 393, 394, 226, 228, 223, - 0, 221, 224, 225, 0, 550, 552, 0, 555, 0, - 0, 559, 563, 0, 0, 0, 568, 575, 577, 579, - 548, 546, 547, 0, 528, 530, 531, 532, 533, 534, + 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, + 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, + 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, + 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, 594, 0, 591, 593, 44, 0, 0, 37, 0, - 0, 0, 0, 0, 0, 55, 0, 57, 0, 0, + 545, 546, 595, 0, 592, 594, 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, 69, 0, 0, 0, - 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, - 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, - 437, 0, 337, 0, 0, 0, 0, 0, 0, 0, - 345, 0, 0, 0, 0, 382, 0, 0, 0, 0, - 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 527, 0, - 0, 590, 48, 41, 0, 0, 0, 0, 0, 0, - 59, 0, 0, 104, 105, 0, 0, 0, 0, 0, - 0, 100, 101, 102, 103, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 510, 0, 0, 71, 0, - 0, 0, 129, 109, 0, 0, 0, 0, 0, 0, - 0, 304, 305, 0, 0, 0, 0, 0, 257, 0, - 414, 0, 0, 0, 0, 0, 0, 0, 0, 441, - 0, 0, 361, 0, 0, 0, 372, 349, 0, 401, - 402, 386, 0, 0, 222, 549, 0, 0, 554, 0, - 557, 558, 0, 0, 565, 566, 567, 0, 0, 0, - 0, 529, 0, 592, 0, 0, 0, 582, 584, 586, - 0, 0, 458, 460, 462, 0, 0, 143, 248, 338, - 375, 308, 38, 425, 427, 0, 0, 213, 0, 0, - 0, 49, 120, 123, 124, 122, 127, 128, 126, 286, - 288, 290, 405, 284, 292, 294, 301, 302, 303, 300, - 298, 296, 430, 0, 423, 480, 468, 470, 474, 472, - 478, 476, 464, 364, 183, 368, 366, 371, 398, 227, - 229, 551, 553, 556, 561, 562, 560, 564, 570, 571, - 572, 573, 574, 569, 576, 578, 580, 0, 42, 0, - 0, 0, 137, 0, 134, 136, 169, 175, 177, 179, - 0, 0, 0, 0, 0, 191, 193, 0, 0, 0, - 0, 0, 168, 0, 149, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 164, 165, 166, 161, 167, - 162, 163, 0, 147, 0, 144, 145, 252, 0, 249, - 250, 342, 0, 339, 340, 379, 0, 376, 377, 312, - 0, 309, 310, 206, 207, 208, 209, 210, 0, 199, - 201, 202, 203, 204, 205, 489, 0, 487, 217, 0, - 214, 215, 0, 0, 0, 0, 0, 0, 0, 232, - 234, 235, 236, 237, 238, 239, 520, 522, 519, 517, - 518, 0, 513, 515, 516, 0, 51, 409, 0, 406, - 407, 434, 0, 431, 432, 465, 483, 484, 0, 598, - 0, 596, 67, 588, 107, 0, 0, 133, 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, 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, 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, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 131, 140, 0, 142, 0, - 0, 247, 0, 346, 335, 0, 383, 374, 0, 0, - 307, 0, 0, 198, 491, 0, 486, 0, 212, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 512, 525, 53, 0, 52, 0, 404, 0, 438, - 429, 0, 0, 482, 0, 0, 595, 0, 135, 0, - 0, 0, 0, 181, 184, 185, 186, 187, 0, 0, - 195, 196, 188, 189, 190, 150, 0, 146, 0, 251, - 0, 341, 0, 378, 333, 330, 319, 320, 322, 316, - 317, 318, 328, 329, 327, 0, 314, 321, 331, 332, - 323, 324, 325, 326, 311, 200, 507, 0, 505, 506, - 498, 499, 503, 504, 500, 501, 502, 0, 492, 493, - 495, 496, 497, 488, 0, 216, 240, 241, 242, 243, - 244, 245, 233, 0, 0, 514, 50, 0, 0, 408, - 0, 433, 0, 612, 0, 610, 608, 602, 606, 607, - 0, 600, 604, 605, 603, 597, 138, 171, 172, 173, - 174, 170, 176, 178, 180, 192, 194, 148, 253, 343, - 380, 0, 313, 0, 0, 490, 0, 218, 521, 523, - 54, 410, 435, 466, 0, 0, 0, 0, 599, 315, - 0, 509, 494, 0, 609, 0, 601, 508, 0, 611, - 616, 0, 614, 0, 0, 613, 624, 0, 0, 0, - 0, 618, 620, 621, 622, 623, 615, 0, 0, 0, - 0, 0, 617, 0, 626, 627, 628, 619, 625 + 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 }; const short int Dhcp4Parser::yypgoto_[] = { - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -31, -787, 157, -787, -787, - -787, -787, -787, -787, -787, -787, -483, -787, -787, -787, - -66, -787, -787, -787, 375, -787, -787, -787, -787, 167, - 350, -46, -44, -43, -787, -787, -28, -787, -787, 163, - 354, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -40, -787, -787, - -787, -787, -787, -787, -787, -787, -60, -787, -560, -53, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -35, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -74, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -77, -787, - -787, -787, -70, 319, -787, -787, -787, -787, -787, -787, - -787, -67, -787, -787, -787, -787, -787, -787, -786, -787, - -787, -787, -41, -787, -787, -787, -38, 362, -787, -787, - -787, -787, -787, -787, -787, -787, -775, -787, -787, -787, - -34, -787, -21, -787, -769, -787, -787, -787, -787, -787, - -787, -787, -787, -27, -787, -787, -194, -61, -787, -787, - -787, -787, -787, -18, -787, -787, -787, -11, -787, 363, - -787, -62, -787, -787, -787, -787, -787, -56, -787, -787, - -787, -787, -787, -3, -787, -787, -787, -19, -787, -787, - -787, -13, -787, 365, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -42, -787, -787, -787, -37, - 390, -787, -787, -54, -787, -23, -787, -787, -787, -787, - -787, -33, -787, -787, -787, -17, -787, 374, 3, -787, - 10, -787, 14, -787, 185, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -764, -787, -787, -787, -787, -787, -10, -787, - -787, -787, -162, -787, -787, -787, -787, -787, -787, -787, - -787, -12, -787, -787, -787, -787, -787, -787, -787, -787, - 230, 373, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, -787, - -787, -787, -787, -787, -787, -787, -787, -787, -787, 260, - 377, -787, -787, -787, -16, -787, -787, -152, -787, -787, - -787, -787, -787, -787, -167, -787, -787, -180, -787, -787, - -787, -787, -787 + -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, -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, + -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, -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, -777, -777, -777, -777, -777, -777, -777, + -777, -777, -769, -777, -777, -777, -777, -777, 14, -777, + -777, -777, -139, -777, -777, -777, -777, -777, -777, -777, + -777, -3, -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 }; const short int Dhcp4Parser::yydefgoto_[] = { -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 36, 37, 38, 65, 573, - 82, 83, 39, 64, 79, 80, 582, 746, 824, 825, - 662, 41, 66, 91, 92, 93, 340, 43, 67, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 348, 160, - 161, 45, 68, 162, 377, 163, 378, 585, 164, 379, - 588, 165, 135, 355, 136, 349, 643, 644, 645, 765, - 137, 356, 138, 357, 684, 685, 686, 787, 663, 664, - 665, 768, 941, 666, 769, 667, 770, 668, 771, 669, - 670, 414, 671, 672, 673, 674, 675, 676, 677, 678, - 777, 679, 778, 680, 681, 139, 368, 708, 709, 710, - 711, 712, 713, 714, 140, 370, 719, 720, 721, 807, - 59, 75, 290, 291, 292, 427, 293, 428, 141, 371, - 728, 729, 730, 731, 732, 733, 734, 735, 142, 362, - 688, 689, 690, 790, 47, 69, 187, 188, 189, 387, - 190, 383, 191, 384, 192, 385, 193, 388, 194, 389, - 195, 394, 196, 393, 197, 392, 599, 198, 199, 143, - 365, 700, 701, 702, 799, 875, 876, 144, 363, 53, - 72, 692, 693, 694, 793, 55, 73, 255, 256, 257, - 258, 259, 260, 261, 413, 262, 417, 263, 416, 264, - 265, 418, 266, 145, 364, 696, 697, 698, 796, 57, - 74, 276, 277, 278, 279, 280, 422, 281, 282, 283, - 284, 201, 386, 748, 749, 750, 826, 49, 70, 214, - 215, 216, 399, 146, 366, 147, 367, 204, 395, 752, - 753, 754, 829, 51, 71, 231, 232, 233, 148, 352, - 149, 353, 150, 354, 237, 409, 757, 832, 238, 403, - 239, 404, 240, 406, 241, 405, 242, 408, 243, 407, - 244, 402, 208, 396, 758, 151, 369, 716, 717, 804, - 897, 898, 899, 900, 901, 953, 902, 152, 153, 373, - 741, 742, 743, 818, 744, 819, 154, 374, 61, 76, - 313, 314, 315, 316, 432, 317, 433, 318, 319, 435, - 320, 321, 322, 438, 626, 323, 439, 324, 325, 326, - 327, 443, 633, 328, 444, 329, 445, 330, 446, 94, - 342, 95, 343, 96, 344, 97, 341, 63, 77, 332, - 333, 334, 449, 760, 761, 834, 930, 931, 932, 933, - 966, 934, 964, 981, 982, 983, 990, 991, 992, 997, - 993, 994, 995 + 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, + 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, + 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, + 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, + 259, 260, 261, 262, 414, 263, 418, 264, 417, 265, + 266, 419, 267, 146, 365, 697, 698, 699, 797, 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, + 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, + 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, + 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 }; const unsigned short int Dhcp4Parser::yytable_[] = { - 90, 125, 159, 182, 210, 227, 682, 253, 272, 289, - 310, 245, 274, 870, 166, 202, 217, 229, 275, 267, - 285, 600, 311, 183, 871, 184, 185, 29, 605, 30, - 874, 31, 28, 78, 81, 883, 211, 84, 254, 273, - 40, 186, 287, 288, 624, 167, 203, 218, 230, 212, - 268, 286, 42, 312, 703, 704, 705, 706, 246, 707, - 596, 597, 598, 102, 103, 104, 200, 213, 228, 155, - 156, 44, 205, 157, 234, 802, 158, 346, 803, 206, - 247, 235, 347, 207, 375, 236, 287, 288, 247, 376, - 248, 249, 116, 117, 250, 251, 252, 113, 114, 247, - 116, 117, 381, 89, 397, 400, 98, 382, 429, 398, - 401, 116, 117, 430, 46, 99, 48, 100, 101, 102, - 103, 104, 105, 106, 107, 886, 887, 50, 447, 116, - 117, 116, 117, 448, 52, 628, 629, 630, 631, 247, - 269, 248, 249, 270, 271, 108, 109, 110, 111, 112, - 450, 116, 117, 113, 114, 451, 805, 625, 923, 806, - 924, 925, 54, 85, 115, 870, 56, 116, 117, 632, - 736, 737, 86, 87, 88, 375, 871, 58, 118, 119, - 762, 89, 874, 32, 33, 34, 35, 883, 89, 89, - 60, 450, 835, 381, 120, 836, 763, 121, 764, 62, - 89, 766, 784, 113, 122, 123, 767, 785, 124, 784, - 101, 102, 103, 104, 786, 583, 584, 331, 89, 114, - 89, 722, 723, 724, 725, 726, 727, 856, 335, 816, - 820, 209, 116, 117, 817, 821, 447, 108, 109, 110, - 89, 822, 168, 169, 170, 178, 114, 986, 179, 784, - 987, 988, 989, 397, 947, 336, 89, 171, 948, 116, - 117, 172, 173, 174, 175, 176, 177, 101, 102, 103, - 104, 337, 178, 951, 429, 179, 180, 400, 952, 957, - 90, 967, 961, 181, 1001, 984, 968, 338, 985, 1002, - 937, 938, 939, 940, 108, 109, 110, 339, 112, 345, - 586, 587, 350, 114, 247, 452, 453, 226, 755, 125, - 351, 358, 359, 360, 361, 159, 116, 117, 372, 173, - 380, 89, 390, 177, 391, 410, 411, 166, 415, 178, - 412, 182, 179, 419, 210, 420, 421, 454, 423, 424, - 181, 426, 463, 202, 425, 227, 217, 431, 89, 434, - 436, 183, 437, 184, 185, 253, 440, 229, 167, 441, - 272, 442, 471, 455, 274, 456, 211, 267, 457, 186, - 275, 458, 285, 459, 203, 461, 462, 218, 464, 212, - 465, 310, 102, 103, 104, 466, 254, 467, 230, 468, - 469, 273, 470, 311, 200, 475, 472, 213, 268, 473, - 205, 474, 476, 286, 477, 89, 478, 206, 228, 479, - 480, 207, 481, 482, 234, 483, 484, 114, 485, 486, - 487, 235, 489, 490, 312, 236, 557, 558, 559, 492, - 116, 117, 491, 494, 495, 496, 497, 498, 499, 963, - 500, 502, 219, 503, 504, 505, 501, 506, 220, 221, - 222, 223, 224, 225, 646, 226, 507, 509, 511, 647, - 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, - 658, 659, 660, 661, 512, 513, 514, 515, 516, 517, - 518, 520, 521, 522, 247, 523, 524, 525, 528, 125, - 526, 532, 529, 533, 159, 530, 535, 116, 117, 536, - 537, 538, 620, 539, 540, 542, 166, 543, 544, 541, - 547, 548, 549, 738, 310, 545, 550, 546, 552, 89, - 554, 562, 555, 638, 556, 739, 311, 560, 561, 563, - 565, 564, 566, 567, 568, 569, 570, 167, 571, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 30, 574, 575, 740, 312, 576, 308, - 309, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 577, 578, 642, 579, 580, 581, - 592, 589, 590, 591, 593, 89, 89, 594, 595, 602, - 603, 627, 637, 683, 789, 687, 601, 691, 604, 606, - 695, 699, 715, 607, 718, 608, 609, 610, 611, 612, - 613, 614, 615, 747, 751, 759, 616, 617, 618, 619, - 621, 622, 623, 772, 634, 635, 636, 773, 774, 775, - 776, 779, 780, 781, 782, 783, 572, 792, 788, 791, - 795, 794, 797, 798, 800, 801, 809, 808, 810, 811, - 812, 813, 814, 815, 823, 828, 827, 830, 831, 843, - 837, 833, 839, 840, 841, 842, 844, 845, 846, 848, - 849, 847, 850, 851, 913, 852, 914, 916, 917, 956, - 853, 922, 949, 854, 906, 954, 907, 950, 908, 909, - 955, 962, 965, 970, 910, 973, 911, 936, 942, 943, - 944, 945, 946, 958, 959, 960, 975, 980, 977, 971, - 974, 978, 979, 998, 999, 1000, 1003, 1008, 1004, 1005, - 1006, 460, 639, 641, 182, 488, 838, 253, 885, 857, - 272, 855, 905, 864, 274, 493, 202, 904, 888, 267, - 275, 289, 285, 890, 183, 878, 184, 185, 534, 912, - 892, 859, 858, 865, 738, 866, 867, 969, 254, 508, - 210, 273, 186, 227, 869, 872, 739, 203, 926, 889, - 268, 868, 217, 286, 884, 229, 879, 861, 873, 863, - 928, 893, 860, 862, 527, 519, 919, 200, 756, 918, - 510, 531, 211, 205, 972, 903, 877, 740, 921, 927, - 206, 891, 880, 218, 207, 212, 230, 894, 915, 881, - 745, 929, 920, 882, 895, 976, 640, 996, 896, 935, - 551, 1007, 0, 213, 0, 0, 228, 553, 0, 0, - 0, 0, 234, 0, 0, 0, 0, 0, 0, 235, - 0, 0, 0, 236, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 864, 0, 0, 0, 0, - 888, 0, 0, 0, 0, 890, 0, 878, 0, 0, - 0, 926, 892, 0, 0, 865, 0, 866, 867, 0, - 0, 0, 0, 928, 0, 0, 869, 872, 0, 0, - 0, 889, 0, 868, 0, 0, 0, 0, 879, 0, - 873, 0, 927, 893, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 929, 0, 0, 0, 877, 0, - 0, 0, 0, 891, 880, 0, 0, 0, 0, 894, - 0, 881, 0, 0, 0, 882, 895, 0, 0, 0, - 896 + 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 }; const short int Dhcp4Parser::yycheck_[] = { - 66, 67, 68, 69, 70, 71, 566, 73, 74, 75, - 76, 72, 74, 799, 68, 69, 70, 71, 74, 73, - 74, 504, 76, 69, 799, 69, 69, 5, 511, 7, - 799, 9, 0, 64, 161, 799, 70, 10, 73, 74, - 7, 69, 100, 101, 15, 68, 69, 70, 71, 70, - 73, 74, 7, 76, 90, 91, 92, 93, 30, 95, - 80, 81, 82, 24, 25, 26, 69, 70, 71, 12, - 13, 7, 69, 16, 71, 3, 19, 3, 6, 69, - 60, 71, 8, 69, 3, 71, 100, 101, 60, 8, - 62, 63, 72, 73, 66, 67, 68, 58, 59, 60, - 72, 73, 3, 161, 3, 3, 11, 8, 3, 8, - 8, 72, 73, 8, 7, 20, 7, 22, 23, 24, - 25, 26, 27, 28, 29, 86, 87, 7, 3, 72, - 73, 72, 73, 8, 7, 130, 131, 132, 133, 60, - 61, 62, 63, 64, 65, 50, 51, 52, 53, 54, - 3, 72, 73, 58, 59, 8, 3, 128, 138, 6, - 140, 141, 7, 136, 69, 951, 7, 72, 73, 164, - 111, 112, 145, 146, 147, 3, 951, 7, 83, 84, - 8, 161, 951, 161, 162, 163, 164, 951, 161, 161, - 7, 3, 3, 3, 99, 6, 8, 102, 8, 7, - 161, 3, 3, 58, 109, 110, 8, 8, 113, 3, - 23, 24, 25, 26, 8, 14, 15, 137, 161, 59, - 161, 103, 104, 105, 106, 107, 108, 787, 6, 3, - 3, 71, 72, 73, 8, 8, 3, 50, 51, 52, - 161, 8, 55, 56, 57, 85, 59, 139, 88, 3, - 142, 143, 144, 3, 8, 3, 161, 70, 8, 72, - 73, 74, 75, 76, 77, 78, 79, 23, 24, 25, - 26, 4, 85, 3, 3, 88, 89, 3, 8, 8, - 346, 3, 8, 96, 3, 3, 8, 8, 6, 8, - 31, 32, 33, 34, 50, 51, 52, 3, 54, 4, - 17, 18, 4, 59, 60, 336, 337, 97, 98, 375, - 4, 4, 4, 4, 4, 381, 72, 73, 4, 75, - 4, 161, 4, 79, 4, 8, 3, 381, 4, 85, - 8, 397, 88, 4, 400, 8, 3, 161, 4, 4, - 96, 3, 164, 397, 8, 411, 400, 4, 161, 4, - 4, 397, 4, 397, 397, 421, 4, 411, 381, 4, - 426, 4, 162, 4, 426, 4, 400, 421, 4, 397, - 426, 4, 426, 4, 397, 4, 4, 400, 164, 400, - 4, 447, 24, 25, 26, 4, 421, 4, 411, 4, - 4, 426, 4, 447, 397, 4, 162, 400, 421, 162, - 397, 162, 4, 426, 4, 161, 4, 397, 411, 4, - 4, 397, 4, 4, 411, 4, 4, 59, 162, 4, - 4, 411, 4, 4, 447, 411, 457, 458, 459, 164, - 72, 73, 4, 4, 4, 4, 4, 4, 4, 922, - 4, 164, 84, 4, 4, 4, 162, 4, 90, 91, - 92, 93, 94, 95, 30, 97, 4, 4, 4, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 162, 60, 4, 4, 4, 4, 555, - 164, 4, 164, 4, 560, 164, 164, 72, 73, 4, - 4, 162, 533, 4, 162, 4, 560, 4, 164, 162, - 4, 4, 4, 579, 580, 164, 4, 164, 4, 161, - 4, 161, 7, 554, 7, 579, 580, 7, 7, 161, - 7, 161, 7, 5, 5, 5, 5, 560, 5, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 7, 161, 5, 579, 580, 5, 134, - 135, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 5, 7, 21, 7, 7, 5, - 5, 161, 161, 161, 161, 161, 161, 161, 161, 5, - 7, 129, 5, 7, 3, 7, 161, 7, 161, 161, - 7, 7, 7, 161, 7, 161, 161, 161, 161, 161, - 161, 161, 161, 7, 7, 7, 161, 161, 161, 161, - 161, 161, 161, 4, 161, 161, 161, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 479, 3, 6, 6, - 3, 6, 6, 3, 6, 3, 3, 6, 4, 4, - 4, 4, 4, 4, 161, 3, 6, 6, 3, 162, - 4, 8, 4, 4, 4, 4, 164, 162, 164, 4, - 4, 162, 162, 162, 4, 162, 4, 6, 3, 3, - 162, 4, 8, 164, 162, 4, 162, 8, 162, 162, - 8, 8, 4, 4, 162, 4, 162, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 4, 7, 161, 164, - 162, 5, 161, 4, 4, 4, 4, 161, 164, 162, - 162, 346, 555, 560, 790, 375, 766, 793, 802, 789, - 796, 784, 809, 799, 796, 381, 790, 807, 804, 793, - 796, 807, 796, 804, 790, 799, 790, 790, 429, 816, - 804, 792, 790, 799, 820, 799, 799, 951, 793, 397, - 826, 796, 790, 829, 799, 799, 820, 790, 834, 804, - 793, 799, 826, 796, 801, 829, 799, 795, 799, 798, - 834, 804, 793, 796, 421, 411, 828, 790, 603, 826, - 400, 426, 826, 790, 956, 805, 799, 820, 831, 834, - 790, 804, 799, 826, 790, 826, 829, 804, 820, 799, - 580, 834, 829, 799, 804, 967, 556, 984, 804, 835, - 447, 1001, -1, 826, -1, -1, 829, 450, -1, -1, - -1, -1, 829, -1, -1, -1, -1, -1, -1, 829, - -1, -1, -1, 829, -1, -1, -1, -1, -1, -1, + 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, + 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, -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, 951, -1, -1, -1, -1, - 956, -1, -1, -1, -1, 956, -1, 951, -1, -1, - -1, 967, 956, -1, -1, 951, -1, 951, 951, -1, - -1, -1, -1, 967, -1, -1, 951, 951, -1, -1, - -1, 956, -1, 951, -1, -1, -1, -1, 951, -1, - 951, -1, 967, 956, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 967, -1, -1, -1, 951, -1, - -1, -1, -1, 956, 951, -1, -1, -1, -1, 956, - -1, 951, -1, -1, -1, 951, 956, -1, -1, -1, - 956 + -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 }; const unsigned short int @@ -4286,95 +4284,95 @@ namespace isc { namespace dhcp { 195, 198, 199, 200, 494, 496, 498, 500, 11, 20, 22, 23, 24, 25, 26, 27, 28, 29, 50, 51, 52, 53, 54, 58, 59, 69, 72, 73, 83, 84, - 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, 413, 415, - 417, 440, 452, 453, 461, 12, 13, 16, 19, 195, - 214, 215, 218, 220, 223, 226, 398, 400, 55, 56, - 57, 70, 74, 75, 76, 77, 78, 79, 85, 88, - 89, 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, - 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, 403, 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, 162, 4, 4, 205, 4, - 4, 4, 164, 215, 4, 4, 4, 4, 4, 4, - 4, 162, 164, 4, 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, 7, 7, - 7, 5, 191, 14, 15, 222, 17, 18, 225, 161, - 161, 161, 5, 161, 161, 161, 80, 81, 82, 331, - 191, 161, 5, 7, 161, 191, 161, 161, 161, 161, + 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, + 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, - 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, 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, 7, 404, 405, 406, 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, 284, 6, 3, - 4, 4, 4, 4, 4, 4, 3, 8, 458, 460, - 3, 8, 8, 161, 193, 194, 391, 6, 3, 407, - 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, 287, 283, 162, 162, 162, 162, - 162, 162, 296, 4, 4, 456, 6, 3, 394, 390, - 410, 406, 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, 161, 161, - 161, 8, 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 + 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 }; const unsigned short int @@ -4390,59 +4388,59 @@ namespace isc { namespace dhcp { 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, - 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, + 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, 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, + 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, 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, + 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, - 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 + 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 }; const unsigned char @@ -4458,59 +4456,59 @@ namespace isc { namespace dhcp { 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 3, 3, 3, 3, 3, 0, 6, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 0, 4, 0, - 4, 0, 4, 1, 1, 0, 4, 1, 1, 3, - 0, 6, 0, 6, 1, 3, 1, 0, 4, 0, - 6, 0, 6, 0, 1, 1, 3, 0, 4, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 4, 1, 1, 1, 1, 0, 4, 0, 4, 0, - 4, 3, 0, 4, 3, 3, 3, 3, 3, 3, - 3, 0, 4, 0, 4, 3, 3, 0, 6, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 6, 0, 1, 1, 3, 0, 4, 0, - 4, 1, 3, 1, 1, 1, 0, 4, 0, 4, - 0, 6, 1, 3, 1, 1, 1, 1, 1, 1, - 3, 3, 3, 3, 3, 3, 0, 6, 0, 1, - 1, 3, 0, 4, 0, 4, 1, 3, 1, 1, + 1, 3, 3, 3, 3, 3, 3, 0, 6, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 0, 4, + 0, 4, 0, 4, 1, 1, 0, 4, 1, 1, + 3, 0, 6, 0, 6, 1, 3, 1, 0, 4, + 0, 6, 0, 6, 0, 1, 1, 3, 0, 4, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 4, 1, 1, 1, 1, 0, 4, 0, 4, + 0, 4, 3, 0, 4, 3, 3, 3, 3, 3, + 3, 3, 0, 4, 0, 4, 3, 3, 0, 6, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 6, 0, 1, 1, 3, 0, 4, + 0, 4, 1, 3, 1, 1, 1, 0, 4, 0, + 4, 0, 6, 1, 3, 1, 1, 1, 1, 1, + 1, 3, 3, 3, 3, 3, 3, 0, 6, 0, + 1, 1, 3, 0, 4, 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 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, 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, 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, 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, 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, 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 + 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 }; @@ -4669,59 +4667,59 @@ namespace isc { namespace dhcp { 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, - 459, 464, 469, 474, 479, 484, 490, 490, 501, 502, - 505, 506, 507, 508, 509, 510, 511, 514, 514, 523, - 523, 533, 533, 540, 541, 544, 544, 551, 553, 557, - 563, 563, 575, 575, 585, 586, 588, 590, 590, 608, - 608, 620, 620, 630, 631, 634, 635, 638, 638, 648, - 649, 652, 653, 654, 655, 656, 657, 658, 659, 660, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 672, - 672, 679, 680, 681, 682, 685, 685, 693, 693, 701, - 701, 709, 714, 714, 722, 727, 732, 737, 742, 747, - 752, 757, 757, 765, 765, 773, 778, 783, 783, 793, - 794, 797, 798, 799, 800, 801, 804, 809, 814, 819, - 824, 829, 829, 839, 840, 843, 844, 847, 847, 857, - 857, 867, 868, 869, 872, 873, 876, 876, 884, 884, - 892, 892, 903, 904, 907, 908, 909, 910, 911, 912, - 915, 920, 925, 930, 935, 940, 948, 948, 961, 962, - 965, 966, 973, 973, 999, 999, 1010, 1011, 1015, 1016, + 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, 1042, 1042, 1050, 1050, 1058, 1058, 1066, - 1066, 1074, 1074, 1082, 1082, 1090, 1090, 1098, 1098, 1108, - 1108, 1115, 1116, 1117, 1120, 1125, 1132, 1132, 1143, 1144, - 1148, 1149, 1152, 1152, 1160, 1161, 1164, 1165, 1166, 1167, + 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, 1188, 1188, 1201, 1201, 1210, 1211, - 1214, 1215, 1220, 1220, 1235, 1235, 1249, 1250, 1253, 1254, - 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, - 1269, 1271, 1276, 1278, 1278, 1286, 1286, 1294, 1294, 1302, - 1304, 1304, 1312, 1321, 1321, 1333, 1334, 1339, 1340, 1345, - 1345, 1357, 1357, 1369, 1370, 1375, 1376, 1381, 1382, 1383, - 1384, 1385, 1386, 1387, 1388, 1389, 1392, 1394, 1394, 1402, - 1404, 1406, 1411, 1419, 1419, 1431, 1432, 1435, 1436, 1439, - 1439, 1449, 1449, 1459, 1460, 1463, 1464, 1465, 1466, 1467, - 1468, 1469, 1472, 1472, 1480, 1480, 1505, 1505, 1535, 1535, - 1545, 1546, 1549, 1550, 1553, 1553, 1562, 1562, 1571, 1572, - 1575, 1576, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, - 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1597, 1597, 1605, - 1605, 1613, 1613, 1621, 1621, 1629, 1629, 1639, 1639, 1647, - 1647, 1655, 1655, 1663, 1663, 1671, 1671, 1679, 1679, 1687, - 1687, 1700, 1700, 1710, 1711, 1717, 1717, 1727, 1728, 1731, - 1731, 1741, 1742, 1745, 1746, 1749, 1750, 1751, 1752, 1753, - 1754, 1755, 1756, 1757, 1758, 1759, 1762, 1764, 1764, 1772, - 1781, 1788, 1788, 1798, 1799, 1802, 1803, 1804, 1805, 1806, - 1809, 1809, 1817, 1817, 1827, 1827, 1839, 1839, 1849, 1850, - 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, - 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1874, - 1879, 1879, 1887, 1887, 1895, 1900, 1900, 1908, 1913, 1918, - 1918, 1926, 1927, 1930, 1930, 1938, 1943, 1948, 1953, 1953, - 1961, 1964, 1967, 1970, 1973, 1979, 1979, 1987, 1987, 1995, - 1995, 2006, 2006, 2013, 2013, 2020, 2020, 2032, 2032, 2042, - 2042, 2053, 2054, 2058, 2062, 2062, 2074, 2075, 2079, 2079, - 2087, 2088, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2100, - 2105, 2105, 2113, 2113, 2123, 2124, 2127, 2127, 2135, 2136, - 2139, 2140, 2141, 2142, 2145, 2145, 2153, 2158, 2163 + 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 }; // Print the state stack on the debug stream. @@ -4756,8 +4754,8 @@ namespace isc { namespace dhcp { #line 14 "dhcp4_parser.yy" // lalr1.cc:1167 } } // isc::dhcp -#line 4760 "dhcp4_parser.cc" // lalr1.cc:1167 -#line 2168 "dhcp4_parser.yy" // lalr1.cc:1168 +#line 4758 "dhcp4_parser.cc" // lalr1.cc:1167 +#line 2169 "dhcp4_parser.yy" // lalr1.cc:1168 void diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h index 2dc3e60d1a..7868faffad 100644 --- a/src/bin/dhcp4/dhcp4_parser.h +++ b/src/bin/dhcp4/dhcp4_parser.h @@ -1481,7 +1481,7 @@ namespace isc { namespace dhcp { enum { yyeof_ = 0, - yylast_ = 970, ///< Last index in yytable_. + yylast_ = 964, ///< Last index in yytable_. yynnts_ = 363, ///< Number of nonterminal symbols. yyfinal_ = 28, ///< Termination state number. yyterror_ = 1, diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy index f478533c47..9449a7a1f2 100644 --- a/src/bin/dhcp4/dhcp4_parser.yy +++ b/src/bin/dhcp4/dhcp4_parser.yy @@ -453,6 +453,7 @@ global_param: valid_lifetime | user_context | comment | sanity_checks + | reservations | unknown_map_entry ; diff --git a/src/bin/dhcp4/json_config_parser.cc b/src/bin/dhcp4/json_config_parser.cc index 758f23a8f3..d94e30916e 100644 --- a/src/bin/dhcp4/json_config_parser.cc +++ b/src/bin/dhcp4/json_config_parser.cc @@ -477,6 +477,17 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, continue; } + if (config_pair.first == "reservations") { + HostCollection hosts; + HostReservationsListParser<HostReservationParser4> parser; + parser.parse(SUBNET_ID_GLOBAL, config_pair.second, hosts); + for (auto h = hosts.begin(); h != hosts.end(); ++h) { + srv_cfg->getCfgHosts()->add(*h); + } + + continue; + } + // Timers are not used in the global scope. Their values are derived // to specific subnets (see SimpleParser6::deriveParameters). // decline-probation-period, dhcp4o6-port, echo-client-id, diff --git a/src/bin/dhcp4/tests/config_parser_unittest.cc b/src/bin/dhcp4/tests/config_parser_unittest.cc index 1bd4e3f66c..ae7cf19169 100644 --- a/src/bin/dhcp4/tests/config_parser_unittest.cc +++ b/src/bin/dhcp4/tests/config_parser_unittest.cc @@ -6052,7 +6052,7 @@ TEST_F(Dhcp4ParserTest, comments) { EXPECT_EQ("aa:bb:cc:dd:ee:ff", host->getHWAddress()->toText(false)); EXPECT_FALSE(host->getDuid()); EXPECT_EQ(100, host->getIPv4SubnetID()); - EXPECT_EQ(0, host->getIPv6SubnetID()); + EXPECT_EQ(SUBNET_ID_UNUSED, host->getIPv6SubnetID()); EXPECT_EQ("foo.example.com", host->getHostname()); // Check host user context. @@ -6103,4 +6103,140 @@ TEST_F(Dhcp4ParserTest, comments) { #endif } +// This test verifies that the global host reservations can be specified +TEST_F(Dhcp4ParserTest, globalReservations) { + ConstElementPtr x; + string config = "{ " + genIfaceConfig() + "," + + "\"rebind-timer\": 2000, \n" + "\"renew-timer\": 1000, \n" + "\"reservations\": [\n" + " {\n" + " \"duid\": \"01:02:03:04:05:06:07:08:09:0A\",\n" + " \"ip-address\": \"192.0.200.1\",\n" + " \"hostname\": \"global1\",\n" + " \"option-data\": [\n" + " {\n" + " \"name\": \"name-servers\",\n" + " \"data\": \"192.0.3.15\"\n" + " },\n" + " {\n" + " \"name\": \"default-ip-ttl\",\n" + " \"data\": \"32\"\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"hw-address\": \"01:02:03:04:05:06\",\n" + " \"hostname\": \"global2\",\n" + " \"option-data\": [\n" + " {\n" + " \"name\": \"name-servers\",\n" + " \"data\": \"192.0.3.95\"\n" + " },\n" + " {\n" + " \"name\": \"default-ip-ttl\",\n" + " \"data\": \"11\"\n" + " }\n" + " ]\n" + " }],\n" + "\"subnet4\": [ \n" + " { \n" + " \"pools\": [ { \"pool\": \"192.0.2.1 - 192.0.2.100\" } ],\n" + " \"subnet\": \"192.0.2.0/24\", \n" + " \"id\": 123,\n" + " \"reservations\": [\n" + " ]\n" + " },\n" + " {\n" + " \"pools\": [ { \"pool\": \"192.0.4.101 - 192.0.4.150\" } ],\n" + " \"subnet\": \"192.0.4.0/24\",\n" + " \"id\": 542\n" + " } ],\n" + "\"valid-lifetime\": 4000" + "}\n"; + + ConstElementPtr json; + try { + (json = parseDHCP4(config)); + } catch (const std::exception& ex) { + std::cout << "TKM: " << ex.what() << std::endl; + } + + ASSERT_NO_THROW(json = parseDHCP4(config)); + extractConfig(config); + + EXPECT_NO_THROW(x = configureDhcp4Server(*srv_, json)); + checkResult(x, 0); + + // Make sure all subnets have been successfully configured. There is no + // need to sanity check the subnet properties because it should have + // been already tested by other tests. + const Subnet4Collection* subnets = + CfgMgr::instance().getStagingCfg()->getCfgSubnets4()->getAll(); + ASSERT_TRUE(subnets); + ASSERT_EQ(2, subnets->size()); + + // Hosts configuration must be available. + CfgHostsPtr hosts_cfg = CfgMgr::instance().getStagingCfg()->getCfgHosts(); + ASSERT_TRUE(hosts_cfg); + + // Let's create a hardware address of the host named "global2" + std::vector<uint8_t> hwaddr; + for (unsigned int i = 1; i < 7; ++i) { + hwaddr.push_back(static_cast<uint8_t>(i)); + } + + // Retrieve the global reservation and sanity check the hostname reserved. + ConstHostPtr host = hosts_cfg->get4(SUBNET_ID_GLOBAL, Host::IDENT_HWADDR, + &hwaddr[0], hwaddr.size()); + ASSERT_TRUE(host); + EXPECT_EQ("global2", host->getHostname()); + + // Check that options are assigned correctly. + Option4AddrLstPtr opt_dns = + retrieveOption<Option4AddrLstPtr>(*host, DHO_NAME_SERVERS); + ASSERT_TRUE(opt_dns); + Option4AddrLst::AddressContainer dns_addrs = opt_dns->getAddresses(); + ASSERT_EQ(1, dns_addrs.size()); + EXPECT_EQ("192.0.3.95", dns_addrs[0].toText()); + OptionUint8Ptr opt_ttl = + retrieveOption<OptionUint8Ptr>(*host, DHO_DEFAULT_IP_TTL); + ASSERT_TRUE(opt_ttl); + EXPECT_EQ(11, static_cast<int>(opt_ttl->getValue())); + + // This reservation should be global solely and not assigned to + // either subnet + EXPECT_FALSE(hosts_cfg->get4(123, Host::IDENT_HWADDR, + &hwaddr[0], hwaddr.size())); + + EXPECT_FALSE(hosts_cfg->get4(542, Host::IDENT_HWADDR, + &hwaddr[0], hwaddr.size())); + + // Do the same test for the DUID based reservation. + std::vector<uint8_t> duid; + for (unsigned int i = 1; i < 0xb; ++i) { + duid.push_back(static_cast<uint8_t>(i)); + } + + // Retrieve the global reservation and sanity check the hostname reserved. + host = hosts_cfg->get4(SUBNET_ID_GLOBAL, Host::IDENT_DUID, &duid[0], duid.size()); + ASSERT_TRUE(host); + EXPECT_EQ("global1", host->getHostname()); + + // Check that options are assigned correctly. + opt_dns = retrieveOption<Option4AddrLstPtr>(*host, DHO_NAME_SERVERS); + ASSERT_TRUE(opt_dns); + dns_addrs = opt_dns->getAddresses(); + ASSERT_EQ(1, dns_addrs.size()); + EXPECT_EQ("192.0.3.15", dns_addrs[0].toText()); + opt_ttl = retrieveOption<OptionUint8Ptr>(*host, DHO_DEFAULT_IP_TTL); + ASSERT_TRUE(opt_ttl); + EXPECT_EQ(32, static_cast<int>(opt_ttl->getValue())); + + // This reservation should be global solely and not assigned to + // either subnet + EXPECT_FALSE(hosts_cfg->get4(123, Host::IDENT_DUID, &duid[0], duid.size())); + EXPECT_FALSE(hosts_cfg->get4(542, Host::IDENT_DUID, &duid[0], duid.size())); +} + } diff --git a/src/bin/dhcp4/tests/dora_unittest.cc b/src/bin/dhcp4/tests/dora_unittest.cc index 2c45e53d9c..a4a4243599 100644 --- a/src/bin/dhcp4/tests/dora_unittest.cc +++ b/src/bin/dhcp4/tests/dora_unittest.cc @@ -1361,7 +1361,7 @@ TEST_F(DORATest, reservationsWithConflicts) { HostPtr host(new Host(&client.getHWAddress()->hwaddr_[0], client.getHWAddress()->hwaddr_.size(), Host::IDENT_HWADDR, SubnetID(1), - SubnetID(0), IOAddress("10.0.0.9"))); + SUBNET_ID_UNUSED, IOAddress("10.0.0.9"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -1440,7 +1440,7 @@ TEST_F(DORATest, reservationsWithConflicts) { host.reset(new Host(&clientB.getHWAddress()->hwaddr_[0], clientB.getHWAddress()->hwaddr_.size(), Host::IDENT_HWADDR, SubnetID(1), - SubnetID(0), in_pool_addr)); + SUBNET_ID_UNUSED, in_pool_addr)); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); diff --git a/src/bin/dhcp6/dhcp6_lexer.cc b/src/bin/dhcp6/dhcp6_lexer.cc index ad8dffecc5..4467d6e322 100644 --- a/src/bin/dhcp6/dhcp6_lexer.cc +++ b/src/bin/dhcp6/dhcp6_lexer.cc @@ -7,21 +7,16 @@ /* A lexical scanner generated by flex */ /* %not-for-header */ + /* %if-c-only */ /* %if-not-reentrant */ #define yy_create_buffer parser6__create_buffer #define yy_delete_buffer parser6__delete_buffer -#define yy_scan_buffer parser6__scan_buffer -#define yy_scan_string parser6__scan_string -#define yy_scan_bytes parser6__scan_bytes +#define yy_flex_debug parser6__flex_debug #define yy_init_buffer parser6__init_buffer #define yy_flush_buffer parser6__flush_buffer #define yy_load_buffer_state parser6__load_buffer_state #define yy_switch_to_buffer parser6__switch_to_buffer -#define yypush_buffer_state parser6_push_buffer_state -#define yypop_buffer_state parser6_pop_buffer_state -#define yyensure_buffer_stack parser6_ensure_buffer_stack -#define yy_flex_debug parser6__flex_debug #define yyin parser6_in #define yyleng parser6_leng #define yylex parser6_lex @@ -40,8 +35,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 37 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -50,244 +45,11 @@ /* %endif */ /* %if-c-only */ -#ifdef yy_create_buffer -#define parser6__create_buffer_ALREADY_DEFINED -#else -#define yy_create_buffer parser6__create_buffer -#endif - -#ifdef yy_delete_buffer -#define parser6__delete_buffer_ALREADY_DEFINED -#else -#define yy_delete_buffer parser6__delete_buffer -#endif - -#ifdef yy_scan_buffer -#define parser6__scan_buffer_ALREADY_DEFINED -#else -#define yy_scan_buffer parser6__scan_buffer -#endif - -#ifdef yy_scan_string -#define parser6__scan_string_ALREADY_DEFINED -#else -#define yy_scan_string parser6__scan_string -#endif - -#ifdef yy_scan_bytes -#define parser6__scan_bytes_ALREADY_DEFINED -#else -#define yy_scan_bytes parser6__scan_bytes -#endif - -#ifdef yy_init_buffer -#define parser6__init_buffer_ALREADY_DEFINED -#else -#define yy_init_buffer parser6__init_buffer -#endif - -#ifdef yy_flush_buffer -#define parser6__flush_buffer_ALREADY_DEFINED -#else -#define yy_flush_buffer parser6__flush_buffer -#endif - -#ifdef yy_load_buffer_state -#define parser6__load_buffer_state_ALREADY_DEFINED -#else -#define yy_load_buffer_state parser6__load_buffer_state -#endif - -#ifdef yy_switch_to_buffer -#define parser6__switch_to_buffer_ALREADY_DEFINED -#else -#define yy_switch_to_buffer parser6__switch_to_buffer -#endif - -#ifdef yypush_buffer_state -#define parser6_push_buffer_state_ALREADY_DEFINED -#else -#define yypush_buffer_state parser6_push_buffer_state -#endif - -#ifdef yypop_buffer_state -#define parser6_pop_buffer_state_ALREADY_DEFINED -#else -#define yypop_buffer_state parser6_pop_buffer_state -#endif - -#ifdef yyensure_buffer_stack -#define parser6_ensure_buffer_stack_ALREADY_DEFINED -#else -#define yyensure_buffer_stack parser6_ensure_buffer_stack -#endif - -#ifdef yylex -#define parser6_lex_ALREADY_DEFINED -#else -#define yylex parser6_lex -#endif - -#ifdef yyrestart -#define parser6_restart_ALREADY_DEFINED -#else -#define yyrestart parser6_restart -#endif - -#ifdef yylex_init -#define parser6_lex_init_ALREADY_DEFINED -#else -#define yylex_init parser6_lex_init -#endif - -#ifdef yylex_init_extra -#define parser6_lex_init_extra_ALREADY_DEFINED -#else -#define yylex_init_extra parser6_lex_init_extra -#endif - -#ifdef yylex_destroy -#define parser6_lex_destroy_ALREADY_DEFINED -#else -#define yylex_destroy parser6_lex_destroy -#endif - -#ifdef yyget_debug -#define parser6_get_debug_ALREADY_DEFINED -#else -#define yyget_debug parser6_get_debug -#endif - -#ifdef yyset_debug -#define parser6_set_debug_ALREADY_DEFINED -#else -#define yyset_debug parser6_set_debug -#endif - -#ifdef yyget_extra -#define parser6_get_extra_ALREADY_DEFINED -#else -#define yyget_extra parser6_get_extra -#endif - -#ifdef yyset_extra -#define parser6_set_extra_ALREADY_DEFINED -#else -#define yyset_extra parser6_set_extra -#endif - -#ifdef yyget_in -#define parser6_get_in_ALREADY_DEFINED -#else -#define yyget_in parser6_get_in -#endif - -#ifdef yyset_in -#define parser6_set_in_ALREADY_DEFINED -#else -#define yyset_in parser6_set_in -#endif - -#ifdef yyget_out -#define parser6_get_out_ALREADY_DEFINED -#else -#define yyget_out parser6_get_out -#endif - -#ifdef yyset_out -#define parser6_set_out_ALREADY_DEFINED -#else -#define yyset_out parser6_set_out -#endif - -#ifdef yyget_leng -#define parser6_get_leng_ALREADY_DEFINED -#else -#define yyget_leng parser6_get_leng -#endif - -#ifdef yyget_text -#define parser6_get_text_ALREADY_DEFINED -#else -#define yyget_text parser6_get_text -#endif - -#ifdef yyget_lineno -#define parser6_get_lineno_ALREADY_DEFINED -#else -#define yyget_lineno parser6_get_lineno -#endif - -#ifdef yyset_lineno -#define parser6_set_lineno_ALREADY_DEFINED -#else -#define yyset_lineno parser6_set_lineno -#endif - -#ifdef yywrap -#define parser6_wrap_ALREADY_DEFINED -#else -#define yywrap parser6_wrap -#endif - + /* %endif */ -#ifdef yyalloc -#define parser6_alloc_ALREADY_DEFINED -#else -#define yyalloc parser6_alloc -#endif - -#ifdef yyrealloc -#define parser6_realloc_ALREADY_DEFINED -#else -#define yyrealloc parser6_realloc -#endif - -#ifdef yyfree -#define parser6_free_ALREADY_DEFINED -#else -#define yyfree parser6_free -#endif - /* %if-c-only */ -#ifdef yytext -#define parser6_text_ALREADY_DEFINED -#else -#define yytext parser6_text -#endif - -#ifdef yyleng -#define parser6_leng_ALREADY_DEFINED -#else -#define yyleng parser6_leng -#endif - -#ifdef yyin -#define parser6_in_ALREADY_DEFINED -#else -#define yyin parser6_in -#endif - -#ifdef yyout -#define parser6_out_ALREADY_DEFINED -#else -#define yyout parser6_out -#endif - -#ifdef yy_flex_debug -#define parser6__flex_debug_ALREADY_DEFINED -#else -#define yy_flex_debug parser6__flex_debug -#endif - -#ifdef yylineno -#define parser6_lineno_ALREADY_DEFINED -#else -#define yylineno parser6_lineno -#endif - /* %endif */ /* First, we deal with platform-specific or compiler-specific issues. */ @@ -365,39 +127,50 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* %endif */ -/* begin standard C++ headers. */ /* %if-c++-only */ /* %endif */ -/* TODO: this is always defined, so inline it */ -#define yyconst const +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const #else -#define yynoreturn +#define yyconst #endif /* %not-for-header */ + /* Returned upon end-of-file. */ #define YY_NULL 0 /* %ok-for-header */ /* %not-for-header */ -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* %ok-for-header */ /* %if-reentrant */ @@ -412,29 +185,25 @@ typedef unsigned int flex_uint32_t; * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * + /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START + /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) +#define YY_NEW_FILE parser6_restart(parser6_in ) + #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else #define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -452,35 +221,35 @@ typedef size_t yy_size_t; #endif /* %if-not-reentrant */ -extern int yyleng; +extern yy_size_t parser6_leng; /* %endif */ /* %if-c-only */ /* %if-not-reentrant */ -extern FILE *yyin, *yyout; +extern FILE *parser6_in, *parser6_out; /* %endif */ /* %endif */ #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - + #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ - /* Undo effects of setting up yytext. */ \ + /* Undo effects of setting up parser6_text. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + YY_DO_BEFORE_ACTION; /* set up parser6_text again */ \ } \ while ( 0 ) + #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -500,12 +269,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -528,7 +297,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -545,8 +314,8 @@ struct yy_buffer_state * possible backing-up. * * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. + * (via parser6_restart()), so that the user can continue scanning by + * just pointing parser6_in at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 @@ -555,12 +324,13 @@ struct yy_buffer_state /* %if-c-only Standard (non-C++) definition */ /* %not-for-header */ + /* %if-not-reentrant */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* %endif */ /* %ok-for-header */ @@ -575,6 +345,7 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) + /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ @@ -584,112 +355,115 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* %if-not-reentrant */ /* %not-for-header */ -/* yy_hold_char holds the character lost when yytext is formed. */ + +/* yy_hold_char holds the character lost when parser6_text is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t parser6_leng; /* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; +static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... +/* Flag which is used to allow parser6_wrap()'s to do buffer switches + * instead of setting up a fresh parser6_in. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; /* %ok-for-header */ /* %endif */ -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); +void parser6_restart (FILE *input_file ); +void parser6__switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE parser6__create_buffer (FILE *file,int size ); +void parser6__delete_buffer (YY_BUFFER_STATE b ); +void parser6__flush_buffer (YY_BUFFER_STATE b ); +void parser6_push_buffer_state (YY_BUFFER_STATE new_buffer ); +void parser6_pop_buffer_state (void ); + +static void parser6_ensure_buffer_stack (void ); +static void parser6__load_buffer_state (void ); +static void parser6__init_buffer (YY_BUFFER_STATE b,FILE *file ); -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) +#define YY_FLUSH_BUFFER parser6__flush_buffer(YY_CURRENT_BUFFER ) -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); +YY_BUFFER_STATE parser6__scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE parser6__scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE parser6__scan_bytes (yyconst char *bytes,yy_size_t len ); /* %endif */ -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); +void *parser6_alloc (yy_size_t ); +void *parser6_realloc (void *,yy_size_t ); +void parser6_free (void * ); + +#define yy_new_buffer parser6__create_buffer -#define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ + parser6_ensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ + parser6__create_buffer(parser6_in,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } + #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ + parser6_ensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ + parser6__create_buffer(parser6_in,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } + #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) -/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */ +/* %% [1.0] parser6_text/parser6_in/parser6_out/yy_state_type/parser6_lineno etc. def's & init go here */ /* Begin user sect3 */ -#define parser6_wrap() (/*CONSTCOND*/1) +#define parser6_wrap() 1 #define YY_SKIP_YYWRAP #define FLEX_DEBUG -typedef flex_uint8_t YY_CHAR; -FILE *yyin = NULL, *yyout = NULL; +typedef unsigned char YY_CHAR; + +FILE *parser6_in = (FILE *) 0, *parser6_out = (FILE *) 0; typedef int yy_state_type; -extern int yylineno; -int yylineno = 1; +extern int parser6_lineno; -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext +int parser6_lineno = 1; -/* %% [1.5] DFA */ +extern char *parser6_text; +#define yytext_ptr parser6_text /* %if-c-only Standard (non-C++) definition */ -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); /* %endif */ /* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. + * corresponding action - sets up parser6_text. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ -/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ - yyleng = (int) (yy_cp - yy_bp); \ +/* %% [2.0] code to fiddle parser6_text and parser6_leng for yymore() goes here \ */\ + parser6_leng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ -/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ +/* %% [3.0] code to copy yytext_ptr to parser6_text[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; + /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ #define YY_NUM_RULES 175 #define YY_END_OF_BUFFER 176 @@ -700,7 +474,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1420] = +static yyconst flex_int16_t yy_accept[1420] = { 0, 168, 168, 0, 0, 0, 0, 0, 0, 0, 0, 176, 174, 10, 11, 174, 1, 168, 165, 168, 168, @@ -860,7 +634,7 @@ static const flex_int16_t yy_accept[1420] = 0, 0, 0, 0, 102, 0, 0, 144, 0 } ; -static const YY_CHAR yy_ec[256] = +static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, @@ -892,7 +666,7 @@ static const YY_CHAR yy_ec[256] = 5, 5, 5, 5, 5 } ; -static const YY_CHAR yy_meta[72] = +static yyconst flex_int32_t yy_meta[72] = { 0, 1, 1, 2, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 3, 3, 3, 3, @@ -904,7 +678,7 @@ static const YY_CHAR yy_meta[72] = 3 } ; -static const flex_int16_t yy_base[1432] = +static yyconst flex_int16_t yy_base[1432] = { 0, 0, 70, 19, 29, 41, 49, 52, 58, 87, 95, 1784, 1785, 32, 1780, 141, 0, 201, 1785, 206, 88, @@ -1066,7 +840,7 @@ static const flex_int16_t yy_base[1432] = 1274 } ; -static const flex_int16_t yy_def[1432] = +static yyconst flex_int16_t yy_def[1432] = { 0, 1420, 1420, 1421, 1421, 1420, 1420, 1420, 1420, 1420, 1420, 1419, 1419, 1419, 1419, 1419, 1422, 1419, 1419, 1419, 1419, @@ -1228,7 +1002,7 @@ static const flex_int16_t yy_def[1432] = 1419 } ; -static const flex_int16_t yy_nxt[1857] = +static yyconst flex_int16_t yy_nxt[1857] = { 0, 1419, 13, 14, 13, 1419, 15, 16, 1419, 17, 18, 19, 20, 21, 22, 22, 22, 23, 24, 85, 359, @@ -1436,7 +1210,7 @@ static const flex_int16_t yy_nxt[1857] = 1419, 1419, 1419, 1419, 1419, 1419 } ; -static const flex_int16_t yy_chk[1857] = +static yyconst flex_int16_t yy_chk[1857] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 252, @@ -1647,24 +1421,24 @@ static const flex_int16_t yy_chk[1857] = static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; -extern int yy_flex_debug; -int yy_flex_debug = 1; +extern int parser6__flex_debug; +int parser6__flex_debug = 1; -static const flex_int16_t yy_rule_linenum[175] = +static yyconst flex_int16_t yy_rule_linenum[175] = { 0, - 147, 149, 151, 156, 157, 162, 163, 164, 176, 179, - 184, 191, 200, 209, 218, 227, 236, 245, 254, 263, - 272, 281, 290, 299, 308, 317, 326, 335, 345, 355, - 365, 375, 385, 394, 404, 414, 424, 434, 443, 452, - 461, 470, 479, 488, 497, 506, 515, 524, 536, 545, - 554, 563, 572, 582, 592, 602, 612, 623, 633, 643, - 653, 663, 673, 683, 693, 703, 713, 724, 735, 746, - 757, 766, 776, 785, 794, 809, 824, 833, 842, 851, - 860, 869, 878, 887, 896, 905, 914, 936, 958, 967, - 977, 987, 996, 1006, 1016, 1025, 1034, 1043, 1052, 1062, - - 1071, 1080, 1089, 1098, 1107, 1116, 1125, 1134, 1143, 1153, - 1162, 1171, 1181, 1193, 1206, 1215, 1224, 1233, 1243, 1252, + 146, 148, 150, 155, 156, 161, 162, 163, 175, 178, + 183, 190, 199, 208, 217, 226, 235, 244, 253, 262, + 271, 280, 289, 298, 307, 316, 325, 334, 344, 354, + 364, 374, 384, 393, 403, 413, 423, 433, 442, 451, + 460, 469, 478, 487, 496, 505, 514, 523, 535, 544, + 553, 562, 571, 581, 591, 601, 611, 622, 632, 642, + 652, 662, 672, 682, 692, 702, 712, 723, 734, 745, + 756, 765, 775, 784, 793, 808, 823, 832, 841, 850, + 859, 868, 877, 886, 895, 904, 913, 935, 957, 966, + 976, 986, 995, 1005, 1015, 1024, 1033, 1042, 1051, 1061, + + 1070, 1079, 1088, 1097, 1106, 1115, 1124, 1133, 1142, 1152, + 1161, 1170, 1180, 1192, 1205, 1214, 1223, 1233, 1243, 1252, 1263, 1273, 1282, 1292, 1302, 1311, 1320, 1329, 1338, 1348, 1357, 1367, 1376, 1385, 1394, 1403, 1412, 1421, 1430, 1439, 1448, 1457, 1466, 1475, 1484, 1493, 1502, 1511, 1520, 1529, @@ -1680,7 +1454,7 @@ static const flex_int16_t yy_rule_linenum[175] = #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET -char *yytext; +char *parser6_text; #line 1 "dhcp6_lexer.ll" /* Copyright (C) 2016-2018 Internet Systems Consortium, Inc. ("ISC") @@ -1707,8 +1481,8 @@ char *yytext; 2.5.31 through 2.5.33): it generates code that does not conform to C89. See Debian bug 333231 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */ -# undef yywrap -# define yywrap() 1 +# undef parser6_wrap +# define parser6_wrap() 1 namespace { @@ -1723,10 +1497,9 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg) -#line 1727 "dhcp6_lexer.cc" /* noyywrap disables automatic rewinding for the next file to parse. Since we always parse only a single string, there's no need to do any wraps. And - using yywrap requires linking with -lfl, which provides the default yywrap + using parser6_wrap requires linking with -lfl, which provides the default parser6_wrap implementation that always returns 1 anyway. */ /* nounput simplifies the lexer, by removing support for putting a character back into the input stream. We never use such capability anyway. */ @@ -1734,23 +1507,23 @@ using namespace isc::dhcp; /* avoid to get static global variables to remain with C++. */ /* in last resort %option reentrant */ /* Enables debug mode. To see the debug messages, one needs to also set - yy_flex_debug to 1, then the debug messages will be printed on stderr. */ + parser6__flex_debug to 1, then the debug messages will be printed on stderr. */ /* I have no idea what this option does, except it was specified in the bison examples and Postgres folks added it to remove gcc 4.3 warnings. Let's be on the safe side and keep it. */ #define YY_NO_INPUT 1 + /* These are not token expressions yet, just convenience expressions that can be used during actual token definitions. Note some can match incorrect inputs (e.g., IP addresses) which must be checked. */ /* for errors */ #line 94 "dhcp6_lexer.ll" /* This code run each time a pattern is matched. It updates the location - by moving it ahead by yyleng bytes. yyleng specifies the length of the + by moving it ahead by parser6_leng bytes. parser6_leng specifies the length of the currently matched token. */ -#define YY_USER_ACTION driver.loc_.columns(yyleng); -#line 1753 "dhcp6_lexer.cc" -#line 1754 "dhcp6_lexer.cc" +#define YY_USER_ACTION driver.loc_.columns(parser6_leng); +#line 1527 "dhcp6_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -1778,7 +1551,7 @@ using namespace isc::dhcp; /* %if-reentrant */ /* %if-c-only */ -static int yy_init_globals ( void ); +static int yy_init_globals (void ); /* %endif */ /* %if-reentrant */ @@ -1788,31 +1561,31 @@ static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy ( void ); +int parser6_lex_destroy (void ); -int yyget_debug ( void ); +int parser6_get_debug (void ); -void yyset_debug ( int debug_flag ); +void parser6_set_debug (int debug_flag ); -YY_EXTRA_TYPE yyget_extra ( void ); +YY_EXTRA_TYPE parser6_get_extra (void ); -void yyset_extra ( YY_EXTRA_TYPE user_defined ); +void parser6_set_extra (YY_EXTRA_TYPE user_defined ); -FILE *yyget_in ( void ); +FILE *parser6_get_in (void ); -void yyset_in ( FILE * _in_str ); +void parser6_set_in (FILE * in_str ); -FILE *yyget_out ( void ); +FILE *parser6_get_out (void ); -void yyset_out ( FILE * _out_str ); +void parser6_set_out (FILE * out_str ); - int yyget_leng ( void ); +yy_size_t parser6_get_leng (void ); -char *yyget_text ( void ); +char *parser6_get_text (void ); -int yyget_lineno ( void ); +int parser6_get_lineno (void ); -void yyset_lineno ( int _line_number ); +void parser6_set_lineno (int line_number ); /* %if-bison-bridge */ /* %endif */ @@ -1823,35 +1596,34 @@ void yyset_lineno ( int _line_number ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap ( void ); +extern "C" int parser6_wrap (void ); #else -extern int yywrap ( void ); +extern int parser6_wrap (void ); #endif #endif /* %not-for-header */ -#ifndef YY_NO_UNPUT - -#endif + /* %ok-for-header */ /* %endif */ #ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); +static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); +static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT /* %if-c-only Standard (non-C++) definition */ /* %not-for-header */ + #ifdef __cplusplus -static int yyinput ( void ); +static int yyinput (void ); #else -static int input ( void ); +static int input (void ); #endif /* %ok-for-header */ @@ -1864,12 +1636,7 @@ static int input ( void ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else #define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -1878,7 +1645,7 @@ static int input ( void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( parser6_text, parser6_leng, 1, parser6_out )) {} } while (0) /* %endif */ /* %if-c++-only C++ definition */ /* %endif */ @@ -1893,20 +1660,20 @@ static int input ( void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + size_t n; \ for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + (c = getc( parser6_in )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ + if ( c == EOF && ferror( parser6_in ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + while ( (result = fread(buf, 1, max_size, parser6_in))==0 && ferror(parser6_in)) \ { \ if( errno != EINTR) \ { \ @@ -1914,7 +1681,7 @@ static int input ( void ); break; \ } \ errno=0; \ - clearerr(yyin); \ + clearerr(parser6_in); \ } \ }\ \ @@ -1947,9 +1714,11 @@ static int input ( void ); /* %if-tables-serialization structures and prototypes */ /* %not-for-header */ + /* %ok-for-header */ /* %not-for-header */ + /* %tables-yydmap generated elements */ /* %endif */ /* end tables serialization structures and prototypes */ @@ -1963,15 +1732,15 @@ static int input ( void ); #define YY_DECL_IS_OURS 1 /* %if-c-only Standard (non-C++) definition */ -extern int yylex (void); +extern int parser6_lex (void); -#define YY_DECL int yylex (void) +#define YY_DECL int parser6_lex (void) /* %endif */ /* %if-c++-only C++ definition */ /* %endif */ #endif /* !YY_DECL */ -/* Code executed at the beginning of each rule, after yytext and yyleng +/* Code executed at the beginning of each rule, after parser6_text and parser6_leng * have been set up. */ #ifndef YY_USER_ACTION @@ -1980,7 +1749,7 @@ extern int yylex (void); /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; +#define YY_BREAK break; #endif /* %% [6.0] YY_RULE_SETUP definition goes here */ @@ -1988,60 +1757,25 @@ extern int yylex (void); YY_USER_ACTION /* %not-for-header */ + /** The main scanner function which does all the work. */ YY_DECL { - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) -/* %if-c-only */ - yyin = stdin; -/* %endif */ -/* %if-c++-only */ -/* %endif */ - - if ( ! yyout ) -/* %if-c-only */ - yyout = stdout; -/* %endif */ -/* %if-c++-only */ -/* %endif */ - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - { /* %% [7.0] user's declarations go here */ #line 100 "dhcp6_lexer.ll" -#line 104 "dhcp6_lexer.ll" /* This part of the code is copied over to the verbatim to the top - of the generated yylex function. Explanation: + of the generated parser6_lex function. Explanation: http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */ - /* Code run each time yylex is called. */ + /* Code run each time parser6_lex is called. */ driver.loc_.step(); if (start_token_flag) { @@ -2080,14 +1814,48 @@ YY_DECL } -#line 2084 "dhcp6_lexer.cc" +#line 1818 "dhcp6_lexer.cc" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! parser6_in ) +/* %if-c-only */ + parser6_in = stdin; +/* %endif */ +/* %if-c++-only */ +/* %endif */ + + if ( ! parser6_out ) +/* %if-c-only */ + parser6_out = stdout; +/* %endif */ +/* %if-c++-only */ +/* %endif */ - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + if ( ! YY_CURRENT_BUFFER ) { + parser6_ensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + parser6__create_buffer(parser6_in,YY_BUF_SIZE ); + } + + parser6__load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ { /* %% [8.0] yymore()-related code goes here */ yy_cp = (yy_c_buf_p); - /* Support of yytext. */ + /* Support of parser6_text. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of @@ -2100,7 +1868,7 @@ YY_DECL yy_match: do { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -2110,9 +1878,9 @@ yy_match: { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 1420 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_current_state != 1419 ); @@ -2125,21 +1893,21 @@ yy_find_action: YY_DO_BEFORE_ACTION; -/* %% [11.0] code for yylineno update goes here */ +/* %% [11.0] code for parser6_lineno update goes here */ do_action: /* This label is used only to access EOF actions. */ /* %% [12.0] debug code goes here */ - if ( yy_flex_debug ) + if ( parser6__flex_debug ) { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); else if ( yy_act < 175 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", - (long)yy_rule_linenum[yy_act], yytext ); + (long)yy_rule_linenum[yy_act], parser6_text ); else if ( yy_act == 175 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", - yytext ); + parser6_text ); else if ( yy_act == 176 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else @@ -2158,17 +1926,17 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 147 "dhcp6_lexer.ll" +#line 146 "dhcp6_lexer.ll" ; YY_BREAK case 2: YY_RULE_SETUP -#line 149 "dhcp6_lexer.ll" +#line 148 "dhcp6_lexer.ll" ; YY_BREAK case 3: YY_RULE_SETUP -#line 151 "dhcp6_lexer.ll" +#line 150 "dhcp6_lexer.ll" { BEGIN(COMMENT); comment_start_line = driver.loc_.end.line;; @@ -2176,38 +1944,38 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 156 "dhcp6_lexer.ll" +#line 155 "dhcp6_lexer.ll" BEGIN(INITIAL); YY_BREAK case 5: YY_RULE_SETUP -#line 157 "dhcp6_lexer.ll" +#line 156 "dhcp6_lexer.ll" ; YY_BREAK case YY_STATE_EOF(COMMENT): -#line 158 "dhcp6_lexer.ll" +#line 157 "dhcp6_lexer.ll" { isc_throw(Dhcp6ParseError, "Comment not closed. (/* in line " << comment_start_line); } YY_BREAK case 6: YY_RULE_SETUP -#line 162 "dhcp6_lexer.ll" +#line 161 "dhcp6_lexer.ll" BEGIN(DIR_ENTER); YY_BREAK case 7: YY_RULE_SETUP -#line 163 "dhcp6_lexer.ll" +#line 162 "dhcp6_lexer.ll" BEGIN(DIR_INCLUDE); YY_BREAK case 8: YY_RULE_SETUP -#line 164 "dhcp6_lexer.ll" +#line 163 "dhcp6_lexer.ll" { /* Include directive. */ /* Extract the filename. */ - std::string tmp(yytext+1); + std::string tmp(parser6_text+1); tmp.resize(tmp.size() - 1); driver.includeFile(tmp); @@ -2216,19 +1984,19 @@ YY_RULE_SETUP case YY_STATE_EOF(DIR_ENTER): case YY_STATE_EOF(DIR_INCLUDE): case YY_STATE_EOF(DIR_EXIT): -#line 173 "dhcp6_lexer.ll" +#line 172 "dhcp6_lexer.ll" { isc_throw(Dhcp6ParseError, "Directive not closed."); } YY_BREAK case 9: YY_RULE_SETUP -#line 176 "dhcp6_lexer.ll" +#line 175 "dhcp6_lexer.ll" BEGIN(INITIAL); YY_BREAK case 10: YY_RULE_SETUP -#line 179 "dhcp6_lexer.ll" +#line 178 "dhcp6_lexer.ll" { /* Ok, we found a with space. Let's ignore it and update loc variable. */ driver.loc_.step(); @@ -2237,16 +2005,16 @@ YY_RULE_SETUP case 11: /* rule 11 can match eol */ YY_RULE_SETUP -#line 184 "dhcp6_lexer.ll" +#line 183 "dhcp6_lexer.ll" { /* Newline found. Let's update the location and continue. */ - driver.loc_.lines(yyleng); + driver.loc_.lines(parser6_leng); driver.loc_.step(); } YY_BREAK case 12: YY_RULE_SETUP -#line 191 "dhcp6_lexer.ll" +#line 190 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2258,7 +2026,7 @@ YY_RULE_SETUP YY_BREAK case 13: YY_RULE_SETUP -#line 200 "dhcp6_lexer.ll" +#line 199 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2270,7 +2038,7 @@ YY_RULE_SETUP YY_BREAK case 14: YY_RULE_SETUP -#line 209 "dhcp6_lexer.ll" +#line 208 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2282,7 +2050,7 @@ YY_RULE_SETUP YY_BREAK case 15: YY_RULE_SETUP -#line 218 "dhcp6_lexer.ll" +#line 217 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2294,7 +2062,7 @@ YY_RULE_SETUP YY_BREAK case 16: YY_RULE_SETUP -#line 227 "dhcp6_lexer.ll" +#line 226 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2306,7 +2074,7 @@ YY_RULE_SETUP YY_BREAK case 17: YY_RULE_SETUP -#line 236 "dhcp6_lexer.ll" +#line 235 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2318,7 +2086,7 @@ YY_RULE_SETUP YY_BREAK case 18: YY_RULE_SETUP -#line 245 "dhcp6_lexer.ll" +#line 244 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2330,7 +2098,7 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 254 "dhcp6_lexer.ll" +#line 253 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2342,7 +2110,7 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 263 "dhcp6_lexer.ll" +#line 262 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2354,7 +2122,7 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 272 "dhcp6_lexer.ll" +#line 271 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2366,7 +2134,7 @@ YY_RULE_SETUP YY_BREAK case 22: YY_RULE_SETUP -#line 281 "dhcp6_lexer.ll" +#line 280 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2378,7 +2146,7 @@ YY_RULE_SETUP YY_BREAK case 23: YY_RULE_SETUP -#line 290 "dhcp6_lexer.ll" +#line 289 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2390,7 +2158,7 @@ YY_RULE_SETUP YY_BREAK case 24: YY_RULE_SETUP -#line 299 "dhcp6_lexer.ll" +#line 298 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2402,7 +2170,7 @@ YY_RULE_SETUP YY_BREAK case 25: YY_RULE_SETUP -#line 308 "dhcp6_lexer.ll" +#line 307 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2414,7 +2182,7 @@ YY_RULE_SETUP YY_BREAK case 26: YY_RULE_SETUP -#line 317 "dhcp6_lexer.ll" +#line 316 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2426,7 +2194,7 @@ YY_RULE_SETUP YY_BREAK case 27: YY_RULE_SETUP -#line 326 "dhcp6_lexer.ll" +#line 325 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP_DDNS: @@ -2438,72 +2206,72 @@ YY_RULE_SETUP YY_BREAK case 28: YY_RULE_SETUP -#line 335 "dhcp6_lexer.ll" +#line 334 "dhcp6_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_PROTOCOL) { return isc::dhcp::Dhcp6Parser::make_UDP(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser6_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_); } YY_BREAK case 29: YY_RULE_SETUP -#line 345 "dhcp6_lexer.ll" +#line 344 "dhcp6_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_PROTOCOL) { return isc::dhcp::Dhcp6Parser::make_TCP(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser6_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_); } YY_BREAK case 30: YY_RULE_SETUP -#line 355 "dhcp6_lexer.ll" +#line 354 "dhcp6_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_FORMAT) { return isc::dhcp::Dhcp6Parser::make_JSON(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser6_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_); } YY_BREAK case 31: YY_RULE_SETUP -#line 365 "dhcp6_lexer.ll" +#line 364 "dhcp6_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) { return isc::dhcp::Dhcp6Parser::make_WHEN_PRESENT(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser6_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_); } YY_BREAK case 32: YY_RULE_SETUP -#line 375 "dhcp6_lexer.ll" +#line 374 "dhcp6_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) { return isc::dhcp::Dhcp6Parser::make_WHEN_PRESENT(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser6_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_); } YY_BREAK case 33: YY_RULE_SETUP -#line 385 "dhcp6_lexer.ll" +#line 384 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME: @@ -2515,59 +2283,59 @@ YY_RULE_SETUP YY_BREAK case 34: YY_RULE_SETUP -#line 394 "dhcp6_lexer.ll" +#line 393 "dhcp6_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) { return isc::dhcp::Dhcp6Parser::make_NEVER(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser6_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_); } YY_BREAK case 35: YY_RULE_SETUP -#line 404 "dhcp6_lexer.ll" +#line 403 "dhcp6_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) { return isc::dhcp::Dhcp6Parser::make_NEVER(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser6_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_); } YY_BREAK case 36: YY_RULE_SETUP -#line 414 "dhcp6_lexer.ll" +#line 413 "dhcp6_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) { return isc::dhcp::Dhcp6Parser::make_ALWAYS(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser6_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_); } YY_BREAK case 37: YY_RULE_SETUP -#line 424 "dhcp6_lexer.ll" +#line 423 "dhcp6_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) { return isc::dhcp::Dhcp6Parser::make_WHEN_NOT_PRESENT(driver.loc_); } - std::string tmp(yytext+1); + std::string tmp(parser6_text+1); tmp.resize(tmp.size() - 1); return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_); } YY_BREAK case 38: YY_RULE_SETUP -#line 434 "dhcp6_lexer.ll" +#line 433 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CONFIG: @@ -2579,7 +2347,7 @@ YY_RULE_SETUP YY_BREAK case 39: YY_RULE_SETUP -#line 443 "dhcp6_lexer.ll" +#line 442 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -2591,7 +2359,7 @@ YY_RULE_SETUP YY_BREAK case 40: YY_RULE_SETUP -#line 452 "dhcp6_lexer.ll" +#line 451 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::INTERFACES_CONFIG: @@ -2603,7 +2371,7 @@ YY_RULE_SETUP YY_BREAK case 41: YY_RULE_SETUP -#line 461 "dhcp6_lexer.ll" +#line 460 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::INTERFACES_CONFIG: @@ -2615,7 +2383,7 @@ YY_RULE_SETUP YY_BREAK case 42: YY_RULE_SETUP -#line 470 "dhcp6_lexer.ll" +#line 469 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -2627,7 +2395,7 @@ YY_RULE_SETUP YY_BREAK case 43: YY_RULE_SETUP -#line 479 "dhcp6_lexer.ll" +#line 478 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SANITY_CHECKS: @@ -2639,7 +2407,7 @@ YY_RULE_SETUP YY_BREAK case 44: YY_RULE_SETUP -#line 488 "dhcp6_lexer.ll" +#line 487 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -2651,7 +2419,7 @@ YY_RULE_SETUP YY_BREAK case 45: YY_RULE_SETUP -#line 497 "dhcp6_lexer.ll" +#line 496 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -2663,7 +2431,7 @@ YY_RULE_SETUP YY_BREAK case 46: YY_RULE_SETUP -#line 506 "dhcp6_lexer.ll" +#line 505 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -2675,7 +2443,7 @@ YY_RULE_SETUP YY_BREAK case 47: YY_RULE_SETUP -#line 515 "dhcp6_lexer.ll" +#line 514 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::HOSTS_DATABASE: @@ -2687,7 +2455,7 @@ YY_RULE_SETUP YY_BREAK case 48: YY_RULE_SETUP -#line 524 "dhcp6_lexer.ll" +#line 523 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2702,7 +2470,7 @@ YY_RULE_SETUP YY_BREAK case 49: YY_RULE_SETUP -#line 536 "dhcp6_lexer.ll" +#line 535 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DATABASE_TYPE: @@ -2714,7 +2482,7 @@ YY_RULE_SETUP YY_BREAK case 50: YY_RULE_SETUP -#line 545 "dhcp6_lexer.ll" +#line 544 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DATABASE_TYPE: @@ -2726,7 +2494,7 @@ YY_RULE_SETUP YY_BREAK case 51: YY_RULE_SETUP -#line 554 "dhcp6_lexer.ll" +#line 553 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DATABASE_TYPE: @@ -2738,7 +2506,7 @@ YY_RULE_SETUP YY_BREAK case 52: YY_RULE_SETUP -#line 563 "dhcp6_lexer.ll" +#line 562 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DATABASE_TYPE: @@ -2750,7 +2518,7 @@ YY_RULE_SETUP YY_BREAK case 53: YY_RULE_SETUP -#line 572 "dhcp6_lexer.ll" +#line 571 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2763,7 +2531,7 @@ YY_RULE_SETUP YY_BREAK case 54: YY_RULE_SETUP -#line 582 "dhcp6_lexer.ll" +#line 581 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2776,7 +2544,7 @@ YY_RULE_SETUP YY_BREAK case 55: YY_RULE_SETUP -#line 592 "dhcp6_lexer.ll" +#line 591 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2789,7 +2557,7 @@ YY_RULE_SETUP YY_BREAK case 56: YY_RULE_SETUP -#line 602 "dhcp6_lexer.ll" +#line 601 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2802,7 +2570,7 @@ YY_RULE_SETUP YY_BREAK case 57: YY_RULE_SETUP -#line 612 "dhcp6_lexer.ll" +#line 611 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2816,7 +2584,7 @@ YY_RULE_SETUP YY_BREAK case 58: YY_RULE_SETUP -#line 623 "dhcp6_lexer.ll" +#line 622 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2829,7 +2597,7 @@ YY_RULE_SETUP YY_BREAK case 59: YY_RULE_SETUP -#line 633 "dhcp6_lexer.ll" +#line 632 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2842,7 +2610,7 @@ YY_RULE_SETUP YY_BREAK case 60: YY_RULE_SETUP -#line 643 "dhcp6_lexer.ll" +#line 642 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2855,7 +2623,7 @@ YY_RULE_SETUP YY_BREAK case 61: YY_RULE_SETUP -#line 653 "dhcp6_lexer.ll" +#line 652 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2868,7 +2636,7 @@ YY_RULE_SETUP YY_BREAK case 62: YY_RULE_SETUP -#line 663 "dhcp6_lexer.ll" +#line 662 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2881,7 +2649,7 @@ YY_RULE_SETUP YY_BREAK case 63: YY_RULE_SETUP -#line 673 "dhcp6_lexer.ll" +#line 672 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2894,7 +2662,7 @@ YY_RULE_SETUP YY_BREAK case 64: YY_RULE_SETUP -#line 683 "dhcp6_lexer.ll" +#line 682 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2907,7 +2675,7 @@ YY_RULE_SETUP YY_BREAK case 65: YY_RULE_SETUP -#line 693 "dhcp6_lexer.ll" +#line 692 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2920,7 +2688,7 @@ YY_RULE_SETUP YY_BREAK case 66: YY_RULE_SETUP -#line 703 "dhcp6_lexer.ll" +#line 702 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -2933,7 +2701,7 @@ YY_RULE_SETUP YY_BREAK case 67: YY_RULE_SETUP -#line 713 "dhcp6_lexer.ll" +#line 712 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -2947,7 +2715,7 @@ YY_RULE_SETUP YY_BREAK case 68: YY_RULE_SETUP -#line 724 "dhcp6_lexer.ll" +#line 723 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -2961,7 +2729,7 @@ YY_RULE_SETUP YY_BREAK case 69: YY_RULE_SETUP -#line 735 "dhcp6_lexer.ll" +#line 734 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -2975,7 +2743,7 @@ YY_RULE_SETUP YY_BREAK case 70: YY_RULE_SETUP -#line 746 "dhcp6_lexer.ll" +#line 745 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -2989,7 +2757,7 @@ YY_RULE_SETUP YY_BREAK case 71: YY_RULE_SETUP -#line 757 "dhcp6_lexer.ll" +#line 756 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3001,7 +2769,7 @@ YY_RULE_SETUP YY_BREAK case 72: YY_RULE_SETUP -#line 766 "dhcp6_lexer.ll" +#line 765 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3014,7 +2782,7 @@ YY_RULE_SETUP YY_BREAK case 73: YY_RULE_SETUP -#line 776 "dhcp6_lexer.ll" +#line 775 "dhcp6_lexer.ll" { switch (driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3026,7 +2794,7 @@ YY_RULE_SETUP YY_BREAK case 74: YY_RULE_SETUP -#line 785 "dhcp6_lexer.ll" +#line 784 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3038,7 +2806,7 @@ YY_RULE_SETUP YY_BREAK case 75: YY_RULE_SETUP -#line 794 "dhcp6_lexer.ll" +#line 793 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3056,7 +2824,7 @@ YY_RULE_SETUP YY_BREAK case 76: YY_RULE_SETUP -#line 809 "dhcp6_lexer.ll" +#line 808 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LEASE_DATABASE: @@ -3074,7 +2842,7 @@ YY_RULE_SETUP YY_BREAK case 77: YY_RULE_SETUP -#line 824 "dhcp6_lexer.ll" +#line 823 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DATA: @@ -3086,7 +2854,7 @@ YY_RULE_SETUP YY_BREAK case 78: YY_RULE_SETUP -#line 833 "dhcp6_lexer.ll" +#line 832 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DATA: @@ -3098,7 +2866,7 @@ YY_RULE_SETUP YY_BREAK case 79: YY_RULE_SETUP -#line 842 "dhcp6_lexer.ll" +#line 841 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3110,7 +2878,7 @@ YY_RULE_SETUP YY_BREAK case 80: YY_RULE_SETUP -#line 851 "dhcp6_lexer.ll" +#line 850 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3122,7 +2890,7 @@ YY_RULE_SETUP YY_BREAK case 81: YY_RULE_SETUP -#line 860 "dhcp6_lexer.ll" +#line 859 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3134,7 +2902,7 @@ YY_RULE_SETUP YY_BREAK case 82: YY_RULE_SETUP -#line 869 "dhcp6_lexer.ll" +#line 868 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3146,7 +2914,7 @@ YY_RULE_SETUP YY_BREAK case 83: YY_RULE_SETUP -#line 878 "dhcp6_lexer.ll" +#line 877 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3158,7 +2926,7 @@ YY_RULE_SETUP YY_BREAK case 84: YY_RULE_SETUP -#line 887 "dhcp6_lexer.ll" +#line 886 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3170,7 +2938,7 @@ YY_RULE_SETUP YY_BREAK case 85: YY_RULE_SETUP -#line 896 "dhcp6_lexer.ll" +#line 895 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::PD_POOLS: @@ -3182,7 +2950,7 @@ YY_RULE_SETUP YY_BREAK case 86: YY_RULE_SETUP -#line 905 "dhcp6_lexer.ll" +#line 904 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::POOLS: @@ -3194,7 +2962,7 @@ YY_RULE_SETUP YY_BREAK case 87: YY_RULE_SETUP -#line 914 "dhcp6_lexer.ll" +#line 913 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3219,7 +2987,7 @@ YY_RULE_SETUP YY_BREAK case 88: YY_RULE_SETUP -#line 936 "dhcp6_lexer.ll" +#line 935 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3244,7 +3012,7 @@ YY_RULE_SETUP YY_BREAK case 89: YY_RULE_SETUP -#line 958 "dhcp6_lexer.ll" +#line 957 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3256,7 +3024,7 @@ YY_RULE_SETUP YY_BREAK case 90: YY_RULE_SETUP -#line 967 "dhcp6_lexer.ll" +#line 966 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3269,7 +3037,7 @@ YY_RULE_SETUP YY_BREAK case 91: YY_RULE_SETUP -#line 977 "dhcp6_lexer.ll" +#line 976 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3282,7 +3050,7 @@ YY_RULE_SETUP YY_BREAK case 92: YY_RULE_SETUP -#line 987 "dhcp6_lexer.ll" +#line 986 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3294,7 +3062,7 @@ YY_RULE_SETUP YY_BREAK case 93: YY_RULE_SETUP -#line 996 "dhcp6_lexer.ll" +#line 995 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3307,7 +3075,7 @@ YY_RULE_SETUP YY_BREAK case 94: YY_RULE_SETUP -#line 1006 "dhcp6_lexer.ll" +#line 1005 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3320,7 +3088,7 @@ YY_RULE_SETUP YY_BREAK case 95: YY_RULE_SETUP -#line 1016 "dhcp6_lexer.ll" +#line 1015 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3332,7 +3100,7 @@ YY_RULE_SETUP YY_BREAK case 96: YY_RULE_SETUP -#line 1025 "dhcp6_lexer.ll" +#line 1024 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3344,7 +3112,7 @@ YY_RULE_SETUP YY_BREAK case 97: YY_RULE_SETUP -#line 1034 "dhcp6_lexer.ll" +#line 1033 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3356,7 +3124,7 @@ YY_RULE_SETUP YY_BREAK case 98: YY_RULE_SETUP -#line 1043 "dhcp6_lexer.ll" +#line 1042 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::RESERVATION_MODE: @@ -3368,7 +3136,7 @@ YY_RULE_SETUP YY_BREAK case 99: YY_RULE_SETUP -#line 1052 "dhcp6_lexer.ll" +#line 1051 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OPTION_DEF: @@ -3381,7 +3149,7 @@ YY_RULE_SETUP YY_BREAK case 100: YY_RULE_SETUP -#line 1062 "dhcp6_lexer.ll" +#line 1061 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3393,7 +3161,7 @@ YY_RULE_SETUP YY_BREAK case 101: YY_RULE_SETUP -#line 1071 "dhcp6_lexer.ll" +#line 1070 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3405,7 +3173,7 @@ YY_RULE_SETUP YY_BREAK case 102: YY_RULE_SETUP -#line 1080 "dhcp6_lexer.ll" +#line 1079 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3417,7 +3185,7 @@ YY_RULE_SETUP YY_BREAK case 103: YY_RULE_SETUP -#line 1089 "dhcp6_lexer.ll" +#line 1088 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CONFIG: @@ -3429,7 +3197,7 @@ YY_RULE_SETUP YY_BREAK case 104: YY_RULE_SETUP -#line 1098 "dhcp6_lexer.ll" +#line 1097 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGING: @@ -3441,7 +3209,7 @@ YY_RULE_SETUP YY_BREAK case 105: YY_RULE_SETUP -#line 1107 "dhcp6_lexer.ll" +#line 1106 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGERS: @@ -3453,7 +3221,7 @@ YY_RULE_SETUP YY_BREAK case 106: YY_RULE_SETUP -#line 1116 "dhcp6_lexer.ll" +#line 1115 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -3465,7 +3233,7 @@ YY_RULE_SETUP YY_BREAK case 107: YY_RULE_SETUP -#line 1125 "dhcp6_lexer.ll" +#line 1124 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -3477,7 +3245,7 @@ YY_RULE_SETUP YY_BREAK case 108: YY_RULE_SETUP -#line 1134 "dhcp6_lexer.ll" +#line 1133 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -3489,7 +3257,7 @@ YY_RULE_SETUP YY_BREAK case 109: YY_RULE_SETUP -#line 1143 "dhcp6_lexer.ll" +#line 1142 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::OUTPUT_OPTIONS: @@ -3501,7 +3269,7 @@ YY_RULE_SETUP YY_BREAK case 110: YY_RULE_SETUP -#line 1153 "dhcp6_lexer.ll" +#line 1152 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGERS: @@ -3513,7 +3281,7 @@ YY_RULE_SETUP YY_BREAK case 111: YY_RULE_SETUP -#line 1162 "dhcp6_lexer.ll" +#line 1161 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::LOGGERS: @@ -3525,7 +3293,7 @@ YY_RULE_SETUP YY_BREAK case 112: YY_RULE_SETUP -#line 1171 "dhcp6_lexer.ll" +#line 1170 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: @@ -3538,7 +3306,7 @@ YY_RULE_SETUP YY_BREAK case 113: YY_RULE_SETUP -#line 1181 "dhcp6_lexer.ll" +#line 1180 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3553,7 +3321,7 @@ YY_RULE_SETUP YY_BREAK case 114: YY_RULE_SETUP -#line 1193 "dhcp6_lexer.ll" +#line 1192 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::SUBNET6: @@ -3569,7 +3337,7 @@ YY_RULE_SETUP YY_BREAK case 115: YY_RULE_SETUP -#line 1206 "dhcp6_lexer.ll" +#line 1205 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CLIENT_CLASSES: @@ -3581,7 +3349,7 @@ YY_RULE_SETUP YY_BREAK case 116: YY_RULE_SETUP -#line 1215 "dhcp6_lexer.ll" +#line 1214 "dhcp6_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::CLIENT_CLASSES: @@ -3593,9 +3361,10 @@ YY_RULE_SETUP YY_BREAK case 117: YY_RULE_SETUP -#line 1224 "dhcp6_lexer.ll" +#line 1223 "dhcp6_lexer.ll" { switch(driver.ctx_) { + case isc::dhcp::Parser6Context::DHCP6: case isc::dhcp::Parser6Context::SUBNET6: return isc::dhcp::Dhcp6Parser::make_RESERVATIONS(driver.loc_); default: @@ -4085,7 +3854,7 @@ YY_RULE_SETUP /* 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. for 'foo' we should get foo */ - std::string raw(yytext+1); + std::string raw(parser6_text+1); size_t len = raw.size() - 1; raw.resize(len); std::string decoded; @@ -4186,7 +3955,7 @@ YY_RULE_SETUP #line 1692 "dhcp6_lexer.ll" { /* Bad string with a forbidden control character inside */ - driver.error(driver.loc_, "Invalid control in " + std::string(yytext)); + driver.error(driver.loc_, "Invalid control in " + std::string(parser6_text)); } YY_BREAK case 159: @@ -4195,7 +3964,7 @@ YY_RULE_SETUP #line 1697 "dhcp6_lexer.ll" { /* Bad string with a bad escape inside */ - driver.error(driver.loc_, "Bad escape in " + std::string(yytext)); + driver.error(driver.loc_, "Bad escape in " + std::string(parser6_text)); } YY_BREAK case 160: @@ -4203,7 +3972,7 @@ YY_RULE_SETUP #line 1702 "dhcp6_lexer.ll" { /* Bad string with an open escape at the end */ - driver.error(driver.loc_, "Overflow escape in " + std::string(yytext)); + driver.error(driver.loc_, "Overflow escape in " + std::string(parser6_text)); } YY_BREAK case 161: @@ -4241,7 +4010,7 @@ YY_RULE_SETUP #line 1714 "dhcp6_lexer.ll" { /* An integer was found. */ - std::string tmp(yytext); + std::string tmp(parser6_text); int64_t integer = 0; try { /* In substring we want to use negative values (e.g. -1). @@ -4262,7 +4031,7 @@ YY_RULE_SETUP #line 1732 "dhcp6_lexer.ll" { /* A floating point was found. */ - std::string tmp(yytext); + std::string tmp(parser6_text); double fp = 0.0; try { fp = boost::lexical_cast<double>(tmp); @@ -4277,7 +4046,7 @@ case 169: YY_RULE_SETUP #line 1745 "dhcp6_lexer.ll" { - string tmp(yytext); + string tmp(parser6_text); return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_); } YY_BREAK @@ -4306,7 +4075,7 @@ driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); case 174: YY_RULE_SETUP #line 1760 "dhcp6_lexer.ll" -driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); +driver.error (driver.loc_, "Invalid character: " + std::string(parser6_text)); YY_BREAK case YY_STATE_EOF(INITIAL): #line 1762 "dhcp6_lexer.ll" @@ -4338,7 +4107,7 @@ YY_RULE_SETUP #line 1785 "dhcp6_lexer.ll" ECHO; YY_BREAK -#line 4342 "dhcp6_lexer.cc" +#line 4111 "dhcp6_lexer.cc" case YY_END_OF_BUFFER: { @@ -4353,19 +4122,15 @@ ECHO; { /* We're scanning a new file or input source. It's * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure + * just pointed parser6_in at a new source and called + * parser6_lex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; -/* %if-c-only */ - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; -/* %endif */ -/* %if-c++-only */ -/* %endif */ + YY_CURRENT_BUFFER_LVALUE->yy_input_file = parser6_in; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } @@ -4420,11 +4185,11 @@ ECHO; { (yy_did_buffer_switch_on_eof) = 0; - if ( yywrap( ) ) + if ( parser6_wrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up - * yytext, we can now set up + * parser6_text, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the @@ -4473,12 +4238,12 @@ ECHO; "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ +} /* end of parser6_lex */ /* %ok-for-header */ /* %if-c++-only */ /* %not-for-header */ + /* %ok-for-header */ /* %endif */ @@ -4496,9 +4261,9 @@ static int yy_get_next_buffer (void) /* %if-c++-only */ /* %endif */ { - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -4527,7 +4292,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -4540,7 +4305,7 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -4554,7 +4319,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -4563,12 +4328,11 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); + parser6_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; + b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -4596,7 +4360,7 @@ static int yy_get_next_buffer (void) if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); + parser6_restart(parser6_in ); } else @@ -4610,15 +4374,12 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) parser6_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; @@ -4634,13 +4395,14 @@ static int yy_get_next_buffer (void) /* %if-c-only */ /* %not-for-header */ + static yy_state_type yy_get_previous_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { - yy_state_type yy_current_state; - char *yy_cp; + register yy_state_type yy_current_state; + register char *yy_cp; /* %% [15.0] code to get the start state into yy_current_state goes here */ yy_current_state = (yy_start); @@ -4648,7 +4410,7 @@ static int yy_get_next_buffer (void) for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { /* %% [16.0] code to find the next state goes here */ - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -4658,9 +4420,9 @@ static int yy_get_next_buffer (void) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 1420 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; @@ -4677,11 +4439,11 @@ static int yy_get_next_buffer (void) /* %if-c++-only */ /* %endif */ { - int yy_is_jam; + register int yy_is_jam; /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */ - char *yy_cp = (yy_c_buf_p); + register char *yy_cp = (yy_c_buf_p); - YY_CHAR yy_c = 1; + register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -4691,19 +4453,17 @@ static int yy_get_next_buffer (void) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 1420 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 1419); return yy_is_jam ? 0 : yy_current_state; } -#ifndef YY_NO_UNPUT /* %if-c-only */ /* %endif */ -#endif /* %if-c-only */ #ifndef YY_NO_INPUT @@ -4733,7 +4493,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -4750,14 +4510,14 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - yyrestart( yyin ); + parser6_restart(parser6_in ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap( ) ) - return 0; + if ( parser6_wrap( ) ) + return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -4776,10 +4536,10 @@ static int yy_get_next_buffer (void) } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ + *(yy_c_buf_p) = '\0'; /* preserve parser6_text */ (yy_hold_char) = *++(yy_c_buf_p); -/* %% [19.0] update BOL and yylineno */ +/* %% [19.0] update BOL and parser6_lineno */ return c; } @@ -4793,31 +4553,28 @@ static int yy_get_next_buffer (void) * @note This function does not reset the start condition to @c INITIAL . */ /* %if-c-only */ - void yyrestart (FILE * input_file ) + void parser6_restart (FILE * input_file ) /* %endif */ /* %if-c++-only */ /* %endif */ { if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); + parser6_ensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); + parser6__create_buffer(parser6_in,YY_BUF_SIZE ); } - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); + parser6__init_buffer(YY_CURRENT_BUFFER,input_file ); + parser6__load_buffer_state( ); } -/* %if-c++-only */ -/* %endif */ - /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ /* %if-c-only */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) + void parser6__switch_to_buffer (YY_BUFFER_STATE new_buffer ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -4825,10 +4582,10 @@ static int yy_get_next_buffer (void) /* TODO. We should be able to replace this entire function body * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); + * parser6_pop_buffer_state(); + * parser6_push_buffer_state(new_buffer); */ - yyensure_buffer_stack (); + parser6_ensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; @@ -4841,29 +4598,25 @@ static int yy_get_next_buffer (void) } YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); + parser6__load_buffer_state( ); /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe + * EOF (parser6_wrap()) processing, but the only time this flag + * is looked at is after parser6_wrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } /* %if-c-only */ -static void yy_load_buffer_state (void) +static void parser6__load_buffer_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; -/* %if-c-only */ - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; -/* %endif */ -/* %if-c++-only */ -/* %endif */ + parser6_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } @@ -4874,42 +4627,39 @@ static void yy_load_buffer_state (void) * @return the allocated buffer state. */ /* %if-c-only */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) + YY_BUFFER_STATE parser6__create_buffer (FILE * file, int size ) /* %endif */ /* %if-c++-only */ /* %endif */ { YY_BUFFER_STATE b; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) parser6_alloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in parser6__create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + b->yy_ch_buf = (char *) parser6_alloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in parser6__create_buffer()" ); b->yy_is_our_buffer = 1; - yy_init_buffer( b, file ); + parser6__init_buffer(b,file ); return b; } -/* %if-c++-only */ -/* %endif */ - /** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() + * @param b a buffer created with parser6__create_buffer() * */ /* %if-c-only */ - void yy_delete_buffer (YY_BUFFER_STATE b ) + void parser6__delete_buffer (YY_BUFFER_STATE b ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -4922,17 +4672,17 @@ static void yy_load_buffer_state (void) YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); + parser6_free((void *) b->yy_ch_buf ); - yyfree( (void *) b ); + parser6_free((void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. + * such as during a parser6_restart() or at EOF. */ /* %if-c-only */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + static void parser6__init_buffer (YY_BUFFER_STATE b, FILE * file ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -4940,17 +4690,13 @@ static void yy_load_buffer_state (void) { int oerrno = errno; - yy_flush_buffer( b ); + parser6__flush_buffer(b ); -/* %if-c-only */ b->yy_input_file = file; -/* %endif */ -/* %if-c++-only */ -/* %endif */ b->yy_fill_buffer = 1; - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. + /* If b is the current buffer, then parser6__init_buffer was _probably_ + * called from parser6_restart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ @@ -4973,7 +4719,7 @@ static void yy_load_buffer_state (void) * */ /* %if-c-only */ - void yy_flush_buffer (YY_BUFFER_STATE b ) + void parser6__flush_buffer (YY_BUFFER_STATE b ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -4996,7 +4742,7 @@ static void yy_load_buffer_state (void) b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); + parser6__load_buffer_state( ); } /* %if-c-or-c++ */ @@ -5007,7 +4753,7 @@ static void yy_load_buffer_state (void) * */ /* %if-c-only */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +void parser6_push_buffer_state (YY_BUFFER_STATE new_buffer ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -5015,9 +4761,9 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) if (new_buffer == NULL) return; - yyensure_buffer_stack(); + parser6_ensure_buffer_stack(); - /* This block is copied from yy_switch_to_buffer. */ + /* This block is copied from parser6__switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ @@ -5031,8 +4777,8 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); + /* copied from parser6__switch_to_buffer. */ + parser6__load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /* %endif */ @@ -5043,7 +4789,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) * */ /* %if-c-only */ -void yypop_buffer_state (void) +void parser6_pop_buffer_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -5051,13 +4797,13 @@ void yypop_buffer_state (void) if (!YY_CURRENT_BUFFER) return; - yy_delete_buffer(YY_CURRENT_BUFFER ); + parser6__delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); + parser6__load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } @@ -5068,7 +4814,7 @@ void yypop_buffer_state (void) * Guarantees space for at least one push. */ /* %if-c-only */ -static void yyensure_buffer_stack (void) +static void parser6_ensure_buffer_stack (void) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -5081,15 +4827,15 @@ static void yyensure_buffer_stack (void) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)parser6_alloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - + YY_FATAL_ERROR( "out of dynamic memory in parser6_ensure_buffer_stack()" ); + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; @@ -5098,15 +4844,15 @@ static void yyensure_buffer_stack (void) if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; + int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + (yy_buffer_stack) = (struct yy_buffer_state**)parser6_realloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + YY_FATAL_ERROR( "out of dynamic memory in parser6_ensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); @@ -5120,9 +4866,9 @@ static void yyensure_buffer_stack (void) * @param base the character buffer * @param size the size in bytes of the character buffer * - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +YY_BUFFER_STATE parser6__scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; @@ -5130,53 +4876,53 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ - return NULL; + return 0; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) parser6_alloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in parser6__scan_buffer()" ); - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; + b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - yy_switch_to_buffer( b ); + parser6__switch_to_buffer(b ); return b; } /* %endif */ /* %if-c-only */ -/** Setup the input buffer state to scan a string. The next call to yylex() will +/** Setup the input buffer state to scan a string. The next call to parser6_lex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. + * parser6__scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) +YY_BUFFER_STATE parser6__scan_string (yyconst char * yystr ) { - return yy_scan_bytes( yystr, (int) strlen(yystr) ); + return parser6__scan_bytes(yystr,strlen(yystr) ); } /* %endif */ /* %if-c-only */ -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will +/** Setup the input buffer state to scan the given bytes. The next call to parser6_lex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE parser6__scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -5184,19 +4930,19 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) int i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); + n = _yybytes_len + 2; + buf = (char *) parser6_alloc(n ); if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + YY_FATAL_ERROR( "out of dynamic memory in parser6__scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - b = yy_scan_buffer( buf, n ); + b = parser6__scan_buffer(buf,n ); if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + YY_FATAL_ERROR( "bad buffer in parser6__scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. @@ -5212,9 +4958,9 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) #endif /* %if-c-only */ -static void yynoreturn yy_fatal_error (const char* msg ) +static void yy_fatal_error (yyconst char* msg ) { - fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* %endif */ @@ -5227,14 +4973,14 @@ static void yynoreturn yy_fatal_error (const char* msg ) #define yyless(n) \ do \ { \ - /* Undo effects of setting up yytext. */ \ + /* Undo effects of setting up parser6_text. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ + parser6_text[parser6_leng] = (yy_hold_char); \ + (yy_c_buf_p) = parser6_text + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ + parser6_leng = yyless_macro_arg; \ } \ while ( 0 ) @@ -5247,82 +4993,82 @@ static void yynoreturn yy_fatal_error (const char* msg ) /** Get the current line number. * */ -int yyget_lineno (void) +int parser6_get_lineno (void) { - - return yylineno; + + return parser6_lineno; } /** Get the input stream. * */ -FILE *yyget_in (void) +FILE *parser6_get_in (void) { - return yyin; + return parser6_in; } /** Get the output stream. * */ -FILE *yyget_out (void) +FILE *parser6_get_out (void) { - return yyout; + return parser6_out; } /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t parser6_get_leng (void) { - return yyleng; + return parser6_leng; } /** Get the current token. * */ -char *yyget_text (void) +char *parser6_get_text (void) { - return yytext; + return parser6_text; } /* %if-reentrant */ /* %endif */ /** Set the current line number. - * @param _line_number line number + * @param line_number * */ -void yyset_lineno (int _line_number ) +void parser6_set_lineno (int line_number ) { - yylineno = _line_number; + parser6_lineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param _in_str A readable stream. + * @param in_str A readable stream. * - * @see yy_switch_to_buffer + * @see parser6__switch_to_buffer */ -void yyset_in (FILE * _in_str ) +void parser6_set_in (FILE * in_str ) { - yyin = _in_str ; + parser6_in = in_str ; } -void yyset_out (FILE * _out_str ) +void parser6_set_out (FILE * out_str ) { - yyout = _out_str ; + parser6_out = out_str ; } -int yyget_debug (void) +int parser6_get_debug (void) { - return yy_flex_debug; + return parser6__flex_debug; } -void yyset_debug (int _bdebug ) +void parser6_set_debug (int bdebug ) { - yy_flex_debug = _bdebug ; + parser6__flex_debug = bdebug ; } /* %endif */ @@ -5336,50 +5082,50 @@ void yyset_debug (int _bdebug ) static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. + * This function is called from parser6_lex_destroy(), so don't allocate here. */ - (yy_buffer_stack) = NULL; + (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; + (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; + parser6_in = stdin; + parser6_out = stdout; #else - yyin = NULL; - yyout = NULL; + parser6_in = (FILE *) 0; + parser6_out = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by - * yylex_init() + * parser6_lex_init() */ return 0; } /* %endif */ /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */ -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) +/* parser6_lex_destroy is for both reentrant and non-reentrant scanners. */ +int parser6_lex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); + parser6__delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); + parser6_pop_buffer_state(); } /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); + parser6_free((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ + * parser6_lex() is called, initialization will occur. */ yy_init_globals( ); /* %if-reentrant */ @@ -5393,19 +5139,18 @@ int yylex_destroy (void) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { - - int i; + register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) +static int yy_flex_strlen (yyconst char * s ) { - int n; + register int n; for ( n = 0; s[n]; ++n ) ; @@ -5413,14 +5158,13 @@ static int yy_flex_strlen (const char * s ) } #endif -void *yyalloc (yy_size_t size ) +void *parser6_alloc (yy_size_t size ) { - return malloc(size); + return (void *) malloc( size ); } -void *yyrealloc (void * ptr, yy_size_t size ) +void *parser6_realloc (void * ptr, yy_size_t size ) { - /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -5428,12 +5172,12 @@ void *yyrealloc (void * ptr, yy_size_t size ) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return realloc(ptr, size); + return (void *) realloc( (char *) ptr, size ); } -void yyfree (void * ptr ) +void parser6_free (void * ptr ) { - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see parser6_realloc() for (char *) cast */ } /* %if-tables-serialization definitions */ @@ -5446,6 +5190,7 @@ void yyfree (void * ptr ) #line 1785 "dhcp6_lexer.ll" + using namespace isc::dhcp; void @@ -5457,7 +5202,7 @@ Parser6Context::scanStringBegin(const std::string& str, ParserType parser_type) file_ = "<string>"; sfile_ = 0; loc_.initialize(&file_); - yy_flex_debug = trace_scanning_; + parser6__flex_debug = trace_scanning_; YY_BUFFER_STATE buffer; buffer = parser6__scan_bytes(str.c_str(), str.size()); if (!buffer) { @@ -5477,7 +5222,7 @@ Parser6Context::scanFileBegin(FILE * f, file_ = filename; sfile_ = f; loc_.initialize(&file_); - yy_flex_debug = trace_scanning_; + parser6__flex_debug = trace_scanning_; YY_BUFFER_STATE buffer; /* See dhcp6_lexer.cc header for available definitions */ diff --git a/src/bin/dhcp6/dhcp6_lexer.ll b/src/bin/dhcp6/dhcp6_lexer.ll index 6515dfeaad..cfa04060aa 100644 --- a/src/bin/dhcp6/dhcp6_lexer.ll +++ b/src/bin/dhcp6/dhcp6_lexer.ll @@ -1222,6 +1222,7 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} \"reservations\" { switch(driver.ctx_) { + case isc::dhcp::Parser6Context::DHCP6: case isc::dhcp::Parser6Context::SUBNET6: return isc::dhcp::Dhcp6Parser::make_RESERVATIONS(driver.loc_); default: diff --git a/src/bin/dhcp6/dhcp6_parser.cc b/src/bin/dhcp6/dhcp6_parser.cc index e39503f4f7..d62f5151fd 100644 --- a/src/bin/dhcp6/dhcp6_parser.cc +++ b/src/bin/dhcp6/dhcp6_parser.cc @@ -1001,8 +1001,8 @@ namespace isc { namespace dhcp { #line 1002 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 101: -#line 460 "dhcp6_parser.yy" // lalr1.cc:859 + case 102: +#line 461 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("preferred-lifetime", prf); @@ -1010,8 +1010,8 @@ namespace isc { namespace dhcp { #line 1011 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 102: -#line 465 "dhcp6_parser.yy" // lalr1.cc:859 + case 103: +#line 466 "dhcp6_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); @@ -1019,8 +1019,8 @@ namespace isc { namespace dhcp { #line 1020 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 103: -#line 470 "dhcp6_parser.yy" // lalr1.cc:859 + case 104: +#line 471 "dhcp6_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); @@ -1028,8 +1028,8 @@ namespace isc { namespace dhcp { #line 1029 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 104: -#line 475 "dhcp6_parser.yy" // lalr1.cc:859 + case 105: +#line 476 "dhcp6_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); @@ -1037,8 +1037,8 @@ namespace isc { namespace dhcp { #line 1038 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 105: -#line 480 "dhcp6_parser.yy" // lalr1.cc:859 + case 106: +#line 481 "dhcp6_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); @@ -1046,8 +1046,8 @@ namespace isc { namespace dhcp { #line 1047 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 106: -#line 485 "dhcp6_parser.yy" // lalr1.cc:859 + case 107: +#line 486 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces-config", i); @@ -1057,8 +1057,8 @@ namespace isc { namespace dhcp { #line 1058 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 107: -#line 490 "dhcp6_parser.yy" // lalr1.cc:859 + case 108: +#line 491 "dhcp6_parser.yy" // lalr1.cc:859 { // No interfaces config param is required ctx.stack_.pop_back(); @@ -1067,8 +1067,8 @@ namespace isc { namespace dhcp { #line 1068 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 108: -#line 496 "dhcp6_parser.yy" // lalr1.cc:859 + case 109: +#line 497 "dhcp6_parser.yy" // lalr1.cc:859 { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1077,8 +1077,8 @@ namespace isc { namespace dhcp { #line 1078 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 109: -#line 500 "dhcp6_parser.yy" // lalr1.cc:859 + case 110: +#line 501 "dhcp6_parser.yy" // lalr1.cc:859 { // No interfaces config param is required // parsing completed @@ -1086,8 +1086,8 @@ namespace isc { namespace dhcp { #line 1087 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 117: -#line 516 "dhcp6_parser.yy" // lalr1.cc:859 + case 118: +#line 517 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces", l); @@ -1097,8 +1097,8 @@ namespace isc { namespace dhcp { #line 1098 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 118: -#line 521 "dhcp6_parser.yy" // lalr1.cc:859 + case 119: +#line 522 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1106,8 +1106,8 @@ namespace isc { namespace dhcp { #line 1107 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 119: -#line 526 "dhcp6_parser.yy" // lalr1.cc:859 + case 120: +#line 527 "dhcp6_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); @@ -1115,8 +1115,8 @@ namespace isc { namespace dhcp { #line 1116 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 120: -#line 532 "dhcp6_parser.yy" // lalr1.cc:859 + case 121: +#line 533 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lease-database", i); @@ -1126,8 +1126,8 @@ namespace isc { namespace dhcp { #line 1127 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 121: -#line 537 "dhcp6_parser.yy" // lalr1.cc:859 + case 122: +#line 538 "dhcp6_parser.yy" // lalr1.cc:859 { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); @@ -1137,8 +1137,8 @@ namespace isc { namespace dhcp { #line 1138 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 122: -#line 544 "dhcp6_parser.yy" // lalr1.cc:859 + case 123: +#line 545 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hosts-database", i); @@ -1148,8 +1148,8 @@ namespace isc { namespace dhcp { #line 1149 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 123: -#line 549 "dhcp6_parser.yy" // lalr1.cc:859 + case 124: +#line 550 "dhcp6_parser.yy" // lalr1.cc:859 { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); @@ -1159,8 +1159,8 @@ namespace isc { namespace dhcp { #line 1160 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 124: -#line 556 "dhcp6_parser.yy" // lalr1.cc:859 + case 125: +#line 557 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hosts-databases", l); @@ -1170,8 +1170,8 @@ namespace isc { namespace dhcp { #line 1171 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 125: -#line 561 "dhcp6_parser.yy" // lalr1.cc:859 + case 126: +#line 562 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1179,8 +1179,8 @@ namespace isc { namespace dhcp { #line 1180 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 130: -#line 574 "dhcp6_parser.yy" // lalr1.cc:859 + case 131: +#line 575 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -1189,8 +1189,8 @@ namespace isc { namespace dhcp { #line 1190 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 131: -#line 578 "dhcp6_parser.yy" // lalr1.cc:859 + case 132: +#line 579 "dhcp6_parser.yy" // lalr1.cc:859 { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -1199,16 +1199,16 @@ namespace isc { namespace dhcp { #line 1200 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 152: -#line 608 "dhcp6_parser.yy" // lalr1.cc:859 + case 153: +#line 609 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.DATABASE_TYPE); } #line 1208 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 153: -#line 610 "dhcp6_parser.yy" // lalr1.cc:859 + case 154: +#line 611 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -1216,40 +1216,40 @@ namespace isc { namespace dhcp { #line 1217 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 154: -#line 615 "dhcp6_parser.yy" // lalr1.cc:859 + case 155: +#line 616 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } #line 1223 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 155: -#line 616 "dhcp6_parser.yy" // lalr1.cc:859 + case 156: +#line 617 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } #line 1229 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 156: -#line 617 "dhcp6_parser.yy" // lalr1.cc:859 + case 157: +#line 618 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } #line 1235 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 157: -#line 618 "dhcp6_parser.yy" // lalr1.cc:859 + case 158: +#line 619 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); } #line 1241 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 158: -#line 621 "dhcp6_parser.yy" // lalr1.cc:859 + case 159: +#line 622 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1249 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 159: -#line 623 "dhcp6_parser.yy" // lalr1.cc:859 + case 160: +#line 624 "dhcp6_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); @@ -1258,16 +1258,16 @@ namespace isc { namespace dhcp { #line 1259 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 160: -#line 629 "dhcp6_parser.yy" // lalr1.cc:859 + case 161: +#line 630 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1267 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 161: -#line 631 "dhcp6_parser.yy" // lalr1.cc:859 + case 162: +#line 632 "dhcp6_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); @@ -1276,16 +1276,16 @@ namespace isc { namespace dhcp { #line 1277 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 162: -#line 637 "dhcp6_parser.yy" // lalr1.cc:859 + case 163: +#line 638 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1285 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 163: -#line 639 "dhcp6_parser.yy" // lalr1.cc:859 + case 164: +#line 640 "dhcp6_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); @@ -1294,8 +1294,8 @@ namespace isc { namespace dhcp { #line 1295 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 164: -#line 645 "dhcp6_parser.yy" // lalr1.cc:859 + case 165: +#line 646 "dhcp6_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); @@ -1303,16 +1303,16 @@ namespace isc { namespace dhcp { #line 1304 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 165: -#line 650 "dhcp6_parser.yy" // lalr1.cc:859 + case 166: +#line 651 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1312 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 166: -#line 652 "dhcp6_parser.yy" // lalr1.cc:859 + case 167: +#line 653 "dhcp6_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); @@ -1321,8 +1321,8 @@ namespace isc { namespace dhcp { #line 1322 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 167: -#line 658 "dhcp6_parser.yy" // lalr1.cc:859 + case 168: +#line 659 "dhcp6_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); @@ -1330,8 +1330,8 @@ namespace isc { namespace dhcp { #line 1331 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 168: -#line 663 "dhcp6_parser.yy" // lalr1.cc:859 + case 169: +#line 664 "dhcp6_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); @@ -1339,8 +1339,8 @@ namespace isc { namespace dhcp { #line 1340 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 169: -#line 668 "dhcp6_parser.yy" // lalr1.cc:859 + case 170: +#line 669 "dhcp6_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); @@ -1348,8 +1348,8 @@ namespace isc { namespace dhcp { #line 1349 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 170: -#line 673 "dhcp6_parser.yy" // lalr1.cc:859 + case 171: +#line 674 "dhcp6_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); @@ -1357,8 +1357,8 @@ namespace isc { namespace dhcp { #line 1358 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 171: -#line 678 "dhcp6_parser.yy" // lalr1.cc:859 + case 172: +#line 679 "dhcp6_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); @@ -1366,8 +1366,8 @@ namespace isc { namespace dhcp { #line 1367 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 172: -#line 683 "dhcp6_parser.yy" // lalr1.cc:859 + case 173: +#line 684 "dhcp6_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); @@ -1375,8 +1375,8 @@ namespace isc { namespace dhcp { #line 1376 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 173: -#line 688 "dhcp6_parser.yy" // lalr1.cc:859 + case 174: +#line 689 "dhcp6_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); @@ -1384,8 +1384,8 @@ namespace isc { namespace dhcp { #line 1385 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 174: -#line 693 "dhcp6_parser.yy" // lalr1.cc:859 + case 175: +#line 694 "dhcp6_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); @@ -1393,16 +1393,16 @@ namespace isc { namespace dhcp { #line 1394 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 175: -#line 698 "dhcp6_parser.yy" // lalr1.cc:859 + case 176: +#line 699 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1402 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 176: -#line 700 "dhcp6_parser.yy" // lalr1.cc:859 + case 177: +#line 701 "dhcp6_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); @@ -1411,8 +1411,8 @@ namespace isc { namespace dhcp { #line 1412 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 177: -#line 706 "dhcp6_parser.yy" // lalr1.cc:859 + case 178: +#line 707 "dhcp6_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); @@ -1420,16 +1420,16 @@ namespace isc { namespace dhcp { #line 1421 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 178: -#line 711 "dhcp6_parser.yy" // lalr1.cc:859 + case 179: +#line 712 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1429 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 179: -#line 713 "dhcp6_parser.yy" // lalr1.cc:859 + case 180: +#line 714 "dhcp6_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); @@ -1438,8 +1438,8 @@ namespace isc { namespace dhcp { #line 1439 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 180: -#line 719 "dhcp6_parser.yy" // lalr1.cc:859 + case 181: +#line 720 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sanity-checks", m); @@ -1449,8 +1449,8 @@ namespace isc { namespace dhcp { #line 1450 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 181: -#line 724 "dhcp6_parser.yy" // lalr1.cc:859 + case 182: +#line 725 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1458,16 +1458,16 @@ namespace isc { namespace dhcp { #line 1459 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 185: -#line 734 "dhcp6_parser.yy" // lalr1.cc:859 + case 186: +#line 735 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1467 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 186: -#line 736 "dhcp6_parser.yy" // lalr1.cc:859 + case 187: +#line 737 "dhcp6_parser.yy" // lalr1.cc:859 { if ( (string(yystack_[0].value.as< std::string > ()) == "none") || @@ -1486,8 +1486,8 @@ namespace isc { namespace dhcp { #line 1487 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 187: -#line 752 "dhcp6_parser.yy" // lalr1.cc:859 + case 188: +#line 753 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("mac-sources", l); @@ -1497,8 +1497,8 @@ namespace isc { namespace dhcp { #line 1498 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 188: -#line 757 "dhcp6_parser.yy" // lalr1.cc:859 + case 189: +#line 758 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1506,8 +1506,8 @@ namespace isc { namespace dhcp { #line 1507 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 193: -#line 770 "dhcp6_parser.yy" // lalr1.cc:859 + case 194: +#line 771 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); @@ -1515,8 +1515,8 @@ namespace isc { namespace dhcp { #line 1516 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 194: -#line 775 "dhcp6_parser.yy" // lalr1.cc:859 + case 195: +#line 776 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); @@ -1524,8 +1524,8 @@ namespace isc { namespace dhcp { #line 1525 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 195: -#line 780 "dhcp6_parser.yy" // lalr1.cc:859 + case 196: +#line 781 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host-reservation-identifiers", l); @@ -1535,8 +1535,8 @@ namespace isc { namespace dhcp { #line 1536 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 196: -#line 785 "dhcp6_parser.yy" // lalr1.cc:859 + case 197: +#line 786 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1544,8 +1544,8 @@ namespace isc { namespace dhcp { #line 1545 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 202: -#line 799 "dhcp6_parser.yy" // lalr1.cc:859 + case 203: +#line 800 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); @@ -1553,8 +1553,8 @@ namespace isc { namespace dhcp { #line 1554 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 203: -#line 804 "dhcp6_parser.yy" // lalr1.cc:859 + case 204: +#line 805 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); @@ -1562,8 +1562,8 @@ namespace isc { namespace dhcp { #line 1563 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 204: -#line 811 "dhcp6_parser.yy" // lalr1.cc:859 + case 205: +#line 812 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("relay-supplied-options", l); @@ -1573,8 +1573,8 @@ namespace isc { namespace dhcp { #line 1574 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 205: -#line 816 "dhcp6_parser.yy" // lalr1.cc:859 + case 206: +#line 817 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1582,8 +1582,8 @@ namespace isc { namespace dhcp { #line 1583 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 206: -#line 821 "dhcp6_parser.yy" // lalr1.cc:859 + case 207: +#line 822 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hooks-libraries", l); @@ -1593,8 +1593,8 @@ namespace isc { namespace dhcp { #line 1594 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 207: -#line 826 "dhcp6_parser.yy" // lalr1.cc:859 + case 208: +#line 827 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1602,8 +1602,8 @@ namespace isc { namespace dhcp { #line 1603 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 212: -#line 839 "dhcp6_parser.yy" // lalr1.cc:859 + case 213: +#line 840 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -1612,8 +1612,8 @@ namespace isc { namespace dhcp { #line 1613 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 213: -#line 843 "dhcp6_parser.yy" // lalr1.cc:859 + case 214: +#line 844 "dhcp6_parser.yy" // lalr1.cc:859 { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -1622,8 +1622,8 @@ namespace isc { namespace dhcp { #line 1623 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 214: -#line 849 "dhcp6_parser.yy" // lalr1.cc:859 + case 215: +#line 850 "dhcp6_parser.yy" // lalr1.cc:859 { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1632,8 +1632,8 @@ namespace isc { namespace dhcp { #line 1633 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 215: -#line 853 "dhcp6_parser.yy" // lalr1.cc:859 + case 216: +#line 854 "dhcp6_parser.yy" // lalr1.cc:859 { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -1642,16 +1642,16 @@ namespace isc { namespace dhcp { #line 1643 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 221: -#line 868 "dhcp6_parser.yy" // lalr1.cc:859 + case 222: +#line 869 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1651 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 222: -#line 870 "dhcp6_parser.yy" // lalr1.cc:859 + case 223: +#line 871 "dhcp6_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); @@ -1660,16 +1660,16 @@ namespace isc { namespace dhcp { #line 1661 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 223: -#line 876 "dhcp6_parser.yy" // lalr1.cc:859 + case 224: +#line 877 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1669 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 224: -#line 878 "dhcp6_parser.yy" // lalr1.cc:859 + case 225: +#line 879 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -1677,8 +1677,8 @@ namespace isc { namespace dhcp { #line 1678 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 225: -#line 884 "dhcp6_parser.yy" // lalr1.cc:859 + case 226: +#line 885 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("expired-leases-processing", m); @@ -1688,8 +1688,8 @@ namespace isc { namespace dhcp { #line 1689 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 226: -#line 889 "dhcp6_parser.yy" // lalr1.cc:859 + case 227: +#line 890 "dhcp6_parser.yy" // lalr1.cc:859 { // No expired lease parameter is required ctx.stack_.pop_back(); @@ -1698,8 +1698,8 @@ namespace isc { namespace dhcp { #line 1699 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 235: -#line 907 "dhcp6_parser.yy" // lalr1.cc:859 + case 236: +#line 908 "dhcp6_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); @@ -1707,8 +1707,8 @@ namespace isc { namespace dhcp { #line 1708 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 236: -#line 912 "dhcp6_parser.yy" // lalr1.cc:859 + case 237: +#line 913 "dhcp6_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); @@ -1716,8 +1716,8 @@ namespace isc { namespace dhcp { #line 1717 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 237: -#line 917 "dhcp6_parser.yy" // lalr1.cc:859 + case 238: +#line 918 "dhcp6_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); @@ -1725,8 +1725,8 @@ namespace isc { namespace dhcp { #line 1726 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 238: -#line 922 "dhcp6_parser.yy" // lalr1.cc:859 + case 239: +#line 923 "dhcp6_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); @@ -1734,8 +1734,8 @@ namespace isc { namespace dhcp { #line 1735 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 239: -#line 927 "dhcp6_parser.yy" // lalr1.cc:859 + case 240: +#line 928 "dhcp6_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); @@ -1743,8 +1743,8 @@ namespace isc { namespace dhcp { #line 1744 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 240: -#line 932 "dhcp6_parser.yy" // lalr1.cc:859 + case 241: +#line 933 "dhcp6_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); @@ -1752,8 +1752,8 @@ namespace isc { namespace dhcp { #line 1753 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 241: -#line 940 "dhcp6_parser.yy" // lalr1.cc:859 + case 242: +#line 941 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet6", l); @@ -1763,8 +1763,8 @@ namespace isc { namespace dhcp { #line 1764 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 242: -#line 945 "dhcp6_parser.yy" // lalr1.cc:859 + case 243: +#line 946 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1772,8 +1772,8 @@ namespace isc { namespace dhcp { #line 1773 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 247: -#line 965 "dhcp6_parser.yy" // lalr1.cc:859 + case 248: +#line 966 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -1782,8 +1782,8 @@ namespace isc { namespace dhcp { #line 1783 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 248: -#line 969 "dhcp6_parser.yy" // lalr1.cc:859 + case 249: +#line 970 "dhcp6_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. @@ -1808,8 +1808,8 @@ namespace isc { namespace dhcp { #line 1809 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 249: -#line 991 "dhcp6_parser.yy" // lalr1.cc:859 + case 250: +#line 992 "dhcp6_parser.yy" // lalr1.cc:859 { // Parse the subnet6 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1818,8 +1818,8 @@ namespace isc { namespace dhcp { #line 1819 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 250: -#line 995 "dhcp6_parser.yy" // lalr1.cc:859 + case 251: +#line 996 "dhcp6_parser.yy" // lalr1.cc:859 { // The subnet subnet6 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -1828,16 +1828,16 @@ namespace isc { namespace dhcp { #line 1829 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 273: -#line 1029 "dhcp6_parser.yy" // lalr1.cc:859 + case 274: +#line 1030 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1837 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 274: -#line 1031 "dhcp6_parser.yy" // lalr1.cc:859 + case 275: +#line 1032 "dhcp6_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); @@ -1846,16 +1846,16 @@ namespace isc { namespace dhcp { #line 1847 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 275: -#line 1037 "dhcp6_parser.yy" // lalr1.cc:859 + case 276: +#line 1038 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1855 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 276: -#line 1039 "dhcp6_parser.yy" // lalr1.cc:859 + case 277: +#line 1040 "dhcp6_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); @@ -1864,16 +1864,16 @@ namespace isc { namespace dhcp { #line 1865 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 277: -#line 1045 "dhcp6_parser.yy" // lalr1.cc:859 + case 278: +#line 1046 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1873 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 278: -#line 1047 "dhcp6_parser.yy" // lalr1.cc:859 + case 279: +#line 1048 "dhcp6_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); @@ -1882,16 +1882,16 @@ namespace isc { namespace dhcp { #line 1883 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 279: -#line 1053 "dhcp6_parser.yy" // lalr1.cc:859 + case 280: +#line 1054 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 1891 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 280: -#line 1055 "dhcp6_parser.yy" // lalr1.cc:859 + case 281: +#line 1056 "dhcp6_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); @@ -1900,8 +1900,8 @@ namespace isc { namespace dhcp { #line 1901 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 281: -#line 1061 "dhcp6_parser.yy" // lalr1.cc:859 + case 282: +#line 1062 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("require-client-classes", c); @@ -1911,8 +1911,8 @@ namespace isc { namespace dhcp { #line 1912 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 282: -#line 1066 "dhcp6_parser.yy" // lalr1.cc:859 + case 283: +#line 1067 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1920,16 +1920,16 @@ namespace isc { namespace dhcp { #line 1921 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 283: -#line 1071 "dhcp6_parser.yy" // lalr1.cc:859 + case 284: +#line 1072 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.RESERVATION_MODE); } #line 1929 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 284: -#line 1073 "dhcp6_parser.yy" // lalr1.cc:859 + case 285: +#line 1074 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -1937,26 +1937,26 @@ namespace isc { namespace dhcp { #line 1938 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 285: -#line 1078 "dhcp6_parser.yy" // lalr1.cc:859 + case 286: +#line 1079 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } #line 1944 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 286: -#line 1079 "dhcp6_parser.yy" // lalr1.cc:859 + case 287: +#line 1080 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } #line 1950 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 287: -#line 1080 "dhcp6_parser.yy" // lalr1.cc:859 + case 288: +#line 1081 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } #line 1956 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 288: -#line 1083 "dhcp6_parser.yy" // lalr1.cc:859 + case 289: +#line 1084 "dhcp6_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); @@ -1964,8 +1964,8 @@ namespace isc { namespace dhcp { #line 1965 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 289: -#line 1088 "dhcp6_parser.yy" // lalr1.cc:859 + case 290: +#line 1089 "dhcp6_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); @@ -1973,8 +1973,8 @@ namespace isc { namespace dhcp { #line 1974 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 290: -#line 1096 "dhcp6_parser.yy" // lalr1.cc:859 + case 291: +#line 1097 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("shared-networks", l); @@ -1984,8 +1984,8 @@ namespace isc { namespace dhcp { #line 1985 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 291: -#line 1101 "dhcp6_parser.yy" // lalr1.cc:859 + case 292: +#line 1102 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -1993,8 +1993,8 @@ namespace isc { namespace dhcp { #line 1994 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 296: -#line 1116 "dhcp6_parser.yy" // lalr1.cc:859 + case 297: +#line 1117 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2003,16 +2003,16 @@ namespace isc { namespace dhcp { #line 2004 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 297: -#line 1120 "dhcp6_parser.yy" // lalr1.cc:859 + case 298: +#line 1121 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } #line 2012 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 317: -#line 1151 "dhcp6_parser.yy" // lalr1.cc:859 + case 318: +#line 1152 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("option-def", l); @@ -2022,8 +2022,8 @@ namespace isc { namespace dhcp { #line 2023 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 318: -#line 1156 "dhcp6_parser.yy" // lalr1.cc:859 + case 319: +#line 1157 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2031,8 +2031,8 @@ namespace isc { namespace dhcp { #line 2032 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 319: -#line 1164 "dhcp6_parser.yy" // lalr1.cc:859 + case 320: +#line 1165 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); @@ -2040,16 +2040,16 @@ namespace isc { namespace dhcp { #line 2041 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 320: -#line 1167 "dhcp6_parser.yy" // lalr1.cc:859 + case 321: +#line 1168 "dhcp6_parser.yy" // lalr1.cc:859 { // parsing completed } #line 2049 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 325: -#line 1183 "dhcp6_parser.yy" // lalr1.cc:859 + case 326: +#line 1184 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2058,8 +2058,8 @@ namespace isc { namespace dhcp { #line 2059 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 326: -#line 1187 "dhcp6_parser.yy" // lalr1.cc:859 + case 327: +#line 1188 "dhcp6_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)); @@ -2070,8 +2070,8 @@ namespace isc { namespace dhcp { #line 2071 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 327: -#line 1198 "dhcp6_parser.yy" // lalr1.cc:859 + case 328: +#line 1199 "dhcp6_parser.yy" // lalr1.cc:859 { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2080,8 +2080,8 @@ namespace isc { namespace dhcp { #line 2081 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 328: -#line 1202 "dhcp6_parser.yy" // lalr1.cc:859 + case 329: +#line 1203 "dhcp6_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)); @@ -2092,8 +2092,8 @@ namespace isc { namespace dhcp { #line 2093 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 344: -#line 1234 "dhcp6_parser.yy" // lalr1.cc:859 + case 345: +#line 1235 "dhcp6_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); @@ -2101,16 +2101,16 @@ namespace isc { namespace dhcp { #line 2102 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 346: -#line 1241 "dhcp6_parser.yy" // lalr1.cc:859 + case 347: +#line 1242 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2110 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 347: -#line 1243 "dhcp6_parser.yy" // lalr1.cc:859 + case 348: +#line 1244 "dhcp6_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); @@ -2119,16 +2119,16 @@ namespace isc { namespace dhcp { #line 2120 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 348: -#line 1249 "dhcp6_parser.yy" // lalr1.cc:859 + case 349: +#line 1250 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2128 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 349: -#line 1251 "dhcp6_parser.yy" // lalr1.cc:859 + case 350: +#line 1252 "dhcp6_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); @@ -2137,16 +2137,16 @@ namespace isc { namespace dhcp { #line 2138 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 350: -#line 1257 "dhcp6_parser.yy" // lalr1.cc:859 + case 351: +#line 1258 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2146 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 351: -#line 1259 "dhcp6_parser.yy" // lalr1.cc:859 + case 352: +#line 1260 "dhcp6_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); @@ -2155,16 +2155,16 @@ namespace isc { namespace dhcp { #line 2156 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 353: -#line 1267 "dhcp6_parser.yy" // lalr1.cc:859 + case 354: +#line 1268 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2164 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 354: -#line 1269 "dhcp6_parser.yy" // lalr1.cc:859 + case 355: +#line 1270 "dhcp6_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); @@ -2173,8 +2173,8 @@ namespace isc { namespace dhcp { #line 2174 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 355: -#line 1275 "dhcp6_parser.yy" // lalr1.cc:859 + case 356: +#line 1276 "dhcp6_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); @@ -2182,8 +2182,8 @@ namespace isc { namespace dhcp { #line 2183 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 356: -#line 1284 "dhcp6_parser.yy" // lalr1.cc:859 + case 357: +#line 1285 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("option-data", l); @@ -2193,8 +2193,8 @@ namespace isc { namespace dhcp { #line 2194 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 357: -#line 1289 "dhcp6_parser.yy" // lalr1.cc:859 + case 358: +#line 1290 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2202,8 +2202,8 @@ namespace isc { namespace dhcp { #line 2203 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 362: -#line 1308 "dhcp6_parser.yy" // lalr1.cc:859 + case 363: +#line 1309 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2212,8 +2212,8 @@ namespace isc { namespace dhcp { #line 2213 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 363: -#line 1312 "dhcp6_parser.yy" // lalr1.cc:859 + case 364: +#line 1313 "dhcp6_parser.yy" // lalr1.cc:859 { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); @@ -2221,8 +2221,8 @@ namespace isc { namespace dhcp { #line 2222 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 364: -#line 1320 "dhcp6_parser.yy" // lalr1.cc:859 + case 365: +#line 1321 "dhcp6_parser.yy" // lalr1.cc:859 { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2231,8 +2231,8 @@ namespace isc { namespace dhcp { #line 2232 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 365: -#line 1324 "dhcp6_parser.yy" // lalr1.cc:859 + case 366: +#line 1325 "dhcp6_parser.yy" // lalr1.cc:859 { /// @todo: the code or name parameters are required. // parsing completed @@ -2240,16 +2240,16 @@ namespace isc { namespace dhcp { #line 2241 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 380: -#line 1357 "dhcp6_parser.yy" // lalr1.cc:859 + case 381: +#line 1358 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2249 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 381: -#line 1359 "dhcp6_parser.yy" // lalr1.cc:859 + case 382: +#line 1360 "dhcp6_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); @@ -2258,8 +2258,8 @@ namespace isc { namespace dhcp { #line 2259 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 384: -#line 1369 "dhcp6_parser.yy" // lalr1.cc:859 + case 385: +#line 1370 "dhcp6_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); @@ -2267,8 +2267,8 @@ namespace isc { namespace dhcp { #line 2268 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 385: -#line 1374 "dhcp6_parser.yy" // lalr1.cc:859 + case 386: +#line 1375 "dhcp6_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); @@ -2276,8 +2276,8 @@ namespace isc { namespace dhcp { #line 2277 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 386: -#line 1382 "dhcp6_parser.yy" // lalr1.cc:859 + case 387: +#line 1383 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pools", l); @@ -2287,8 +2287,8 @@ namespace isc { namespace dhcp { #line 2288 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 387: -#line 1387 "dhcp6_parser.yy" // lalr1.cc:859 + case 388: +#line 1388 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2296,8 +2296,8 @@ namespace isc { namespace dhcp { #line 2297 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 392: -#line 1402 "dhcp6_parser.yy" // lalr1.cc:859 + case 393: +#line 1403 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2306,8 +2306,8 @@ namespace isc { namespace dhcp { #line 2307 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 393: -#line 1406 "dhcp6_parser.yy" // lalr1.cc:859 + case 394: +#line 1407 "dhcp6_parser.yy" // lalr1.cc:859 { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2316,8 +2316,8 @@ namespace isc { namespace dhcp { #line 2317 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 394: -#line 1412 "dhcp6_parser.yy" // lalr1.cc:859 + case 395: +#line 1413 "dhcp6_parser.yy" // lalr1.cc:859 { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2326,8 +2326,8 @@ namespace isc { namespace dhcp { #line 2327 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 395: -#line 1416 "dhcp6_parser.yy" // lalr1.cc:859 + case 396: +#line 1417 "dhcp6_parser.yy" // lalr1.cc:859 { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2335,16 +2335,16 @@ namespace isc { namespace dhcp { #line 2336 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 405: -#line 1434 "dhcp6_parser.yy" // lalr1.cc:859 + case 406: +#line 1435 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2344 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 406: -#line 1436 "dhcp6_parser.yy" // lalr1.cc:859 + case 407: +#line 1437 "dhcp6_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); @@ -2353,16 +2353,16 @@ namespace isc { namespace dhcp { #line 2354 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 407: -#line 1442 "dhcp6_parser.yy" // lalr1.cc:859 + case 408: +#line 1443 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2362 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 408: -#line 1444 "dhcp6_parser.yy" // lalr1.cc:859 + case 409: +#line 1445 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as< ElementPtr > (); @@ -2388,16 +2388,16 @@ namespace isc { namespace dhcp { #line 2389 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 409: -#line 1467 "dhcp6_parser.yy" // lalr1.cc:859 + case 410: +#line 1468 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2397 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 410: -#line 1469 "dhcp6_parser.yy" // lalr1.cc:859 + case 411: +#line 1470 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -2425,8 +2425,8 @@ namespace isc { namespace dhcp { #line 2426 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 411: -#line 1497 "dhcp6_parser.yy" // lalr1.cc:859 + case 412: +#line 1498 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pd-pools", l); @@ -2436,8 +2436,8 @@ namespace isc { namespace dhcp { #line 2437 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 412: -#line 1502 "dhcp6_parser.yy" // lalr1.cc:859 + case 413: +#line 1503 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2445,8 +2445,8 @@ namespace isc { namespace dhcp { #line 2446 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 417: -#line 1517 "dhcp6_parser.yy" // lalr1.cc:859 + case 418: +#line 1518 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2455,8 +2455,8 @@ namespace isc { namespace dhcp { #line 2456 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 418: -#line 1521 "dhcp6_parser.yy" // lalr1.cc:859 + case 419: +#line 1522 "dhcp6_parser.yy" // lalr1.cc:859 { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2467,8 +2467,8 @@ namespace isc { namespace dhcp { #line 2468 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 419: -#line 1529 "dhcp6_parser.yy" // lalr1.cc:859 + case 420: +#line 1530 "dhcp6_parser.yy" // lalr1.cc:859 { // Parse the pd-pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2477,8 +2477,8 @@ namespace isc { namespace dhcp { #line 2478 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 420: -#line 1533 "dhcp6_parser.yy" // lalr1.cc:859 + case 421: +#line 1534 "dhcp6_parser.yy" // lalr1.cc:859 { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -2489,16 +2489,16 @@ namespace isc { namespace dhcp { #line 2490 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 434: -#line 1558 "dhcp6_parser.yy" // lalr1.cc:859 + case 435: +#line 1559 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2498 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 435: -#line 1560 "dhcp6_parser.yy" // lalr1.cc:859 + case 436: +#line 1561 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix", prf); @@ -2507,8 +2507,8 @@ namespace isc { namespace dhcp { #line 2508 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 436: -#line 1566 "dhcp6_parser.yy" // lalr1.cc:859 + case 437: +#line 1567 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix-len", prf); @@ -2516,16 +2516,16 @@ namespace isc { namespace dhcp { #line 2517 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 437: -#line 1571 "dhcp6_parser.yy" // lalr1.cc:859 + case 438: +#line 1572 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2525 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 438: -#line 1573 "dhcp6_parser.yy" // lalr1.cc:859 + case 439: +#line 1574 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("excluded-prefix", prf); @@ -2534,8 +2534,8 @@ namespace isc { namespace dhcp { #line 2535 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 439: -#line 1579 "dhcp6_parser.yy" // lalr1.cc:859 + case 440: +#line 1580 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("excluded-prefix-len", prf); @@ -2543,8 +2543,8 @@ namespace isc { namespace dhcp { #line 2544 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 440: -#line 1584 "dhcp6_parser.yy" // lalr1.cc:859 + case 441: +#line 1585 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("delegated-len", deleg); @@ -2552,8 +2552,8 @@ namespace isc { namespace dhcp { #line 2553 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 441: -#line 1592 "dhcp6_parser.yy" // lalr1.cc:859 + case 442: +#line 1593 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations", l); @@ -2563,8 +2563,8 @@ namespace isc { namespace dhcp { #line 2564 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 442: -#line 1597 "dhcp6_parser.yy" // lalr1.cc:859 + case 443: +#line 1598 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2572,8 +2572,8 @@ namespace isc { namespace dhcp { #line 2573 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 447: -#line 1610 "dhcp6_parser.yy" // lalr1.cc:859 + case 448: +#line 1611 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2582,8 +2582,8 @@ namespace isc { namespace dhcp { #line 2583 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 448: -#line 1614 "dhcp6_parser.yy" // lalr1.cc:859 + case 449: +#line 1615 "dhcp6_parser.yy" // lalr1.cc:859 { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); @@ -2591,8 +2591,8 @@ namespace isc { namespace dhcp { #line 2592 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 449: -#line 1619 "dhcp6_parser.yy" // lalr1.cc:859 + case 450: +#line 1620 "dhcp6_parser.yy" // lalr1.cc:859 { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2601,8 +2601,8 @@ namespace isc { namespace dhcp { #line 2602 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 450: -#line 1623 "dhcp6_parser.yy" // lalr1.cc:859 + case 451: +#line 1624 "dhcp6_parser.yy" // lalr1.cc:859 { /// @todo: an identifier parameter is required. // parsing completed @@ -2610,8 +2610,8 @@ namespace isc { namespace dhcp { #line 2611 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 466: -#line 1650 "dhcp6_parser.yy" // lalr1.cc:859 + case 467: +#line 1651 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-addresses", l); @@ -2621,8 +2621,8 @@ namespace isc { namespace dhcp { #line 2622 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 467: -#line 1655 "dhcp6_parser.yy" // lalr1.cc:859 + case 468: +#line 1656 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2630,8 +2630,8 @@ namespace isc { namespace dhcp { #line 2631 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 468: -#line 1660 "dhcp6_parser.yy" // lalr1.cc:859 + case 469: +#line 1661 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefixes", l); @@ -2641,8 +2641,8 @@ namespace isc { namespace dhcp { #line 2642 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 469: -#line 1665 "dhcp6_parser.yy" // lalr1.cc:859 + case 470: +#line 1666 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2650,16 +2650,16 @@ namespace isc { namespace dhcp { #line 2651 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 470: -#line 1670 "dhcp6_parser.yy" // lalr1.cc:859 + case 471: +#line 1671 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2659 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 471: -#line 1672 "dhcp6_parser.yy" // lalr1.cc:859 + case 472: +#line 1673 "dhcp6_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); @@ -2668,16 +2668,16 @@ namespace isc { namespace dhcp { #line 2669 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 472: -#line 1678 "dhcp6_parser.yy" // lalr1.cc:859 + case 473: +#line 1679 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2677 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 473: -#line 1680 "dhcp6_parser.yy" // lalr1.cc:859 + case 474: +#line 1681 "dhcp6_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); @@ -2686,16 +2686,16 @@ namespace isc { namespace dhcp { #line 2687 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 474: -#line 1686 "dhcp6_parser.yy" // lalr1.cc:859 + case 475: +#line 1687 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2695 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 475: -#line 1688 "dhcp6_parser.yy" // lalr1.cc:859 + case 476: +#line 1689 "dhcp6_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); @@ -2704,16 +2704,16 @@ namespace isc { namespace dhcp { #line 2705 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 476: -#line 1694 "dhcp6_parser.yy" // lalr1.cc:859 + case 477: +#line 1695 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2713 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 477: -#line 1696 "dhcp6_parser.yy" // lalr1.cc:859 + case 478: +#line 1697 "dhcp6_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); @@ -2722,8 +2722,8 @@ namespace isc { namespace dhcp { #line 2723 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 478: -#line 1702 "dhcp6_parser.yy" // lalr1.cc:859 + case 479: +#line 1703 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-classes", c); @@ -2733,8 +2733,8 @@ namespace isc { namespace dhcp { #line 2734 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 479: -#line 1707 "dhcp6_parser.yy" // lalr1.cc:859 + case 480: +#line 1708 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2742,8 +2742,8 @@ namespace isc { namespace dhcp { #line 2743 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 480: -#line 1715 "dhcp6_parser.yy" // lalr1.cc:859 + case 481: +#line 1716 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("relay", m); @@ -2753,8 +2753,8 @@ namespace isc { namespace dhcp { #line 2754 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 481: -#line 1720 "dhcp6_parser.yy" // lalr1.cc:859 + case 482: +#line 1721 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2762,16 +2762,16 @@ namespace isc { namespace dhcp { #line 2763 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 484: -#line 1729 "dhcp6_parser.yy" // lalr1.cc:859 + case 485: +#line 1730 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2771 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 485: -#line 1731 "dhcp6_parser.yy" // lalr1.cc:859 + case 486: +#line 1732 "dhcp6_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); @@ -2780,8 +2780,8 @@ namespace isc { namespace dhcp { #line 2781 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 486: -#line 1740 "dhcp6_parser.yy" // lalr1.cc:859 + case 487: +#line 1741 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-classes", l); @@ -2791,8 +2791,8 @@ namespace isc { namespace dhcp { #line 2792 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 487: -#line 1745 "dhcp6_parser.yy" // lalr1.cc:859 + case 488: +#line 1746 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2800,8 +2800,8 @@ namespace isc { namespace dhcp { #line 2801 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 490: -#line 1754 "dhcp6_parser.yy" // lalr1.cc:859 + case 491: +#line 1755 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -2810,8 +2810,8 @@ namespace isc { namespace dhcp { #line 2811 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 491: -#line 1758 "dhcp6_parser.yy" // lalr1.cc:859 + case 492: +#line 1759 "dhcp6_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)); @@ -2820,16 +2820,16 @@ namespace isc { namespace dhcp { #line 2821 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 504: -#line 1783 "dhcp6_parser.yy" // lalr1.cc:859 + case 505: +#line 1784 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2829 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 505: -#line 1785 "dhcp6_parser.yy" // lalr1.cc:859 + case 506: +#line 1786 "dhcp6_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); @@ -2838,8 +2838,8 @@ namespace isc { namespace dhcp { #line 2839 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 506: -#line 1791 "dhcp6_parser.yy" // lalr1.cc:859 + case 507: +#line 1792 "dhcp6_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); @@ -2847,8 +2847,8 @@ namespace isc { namespace dhcp { #line 2848 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 507: -#line 1799 "dhcp6_parser.yy" // lalr1.cc:859 + case 508: +#line 1800 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-id", m); @@ -2858,8 +2858,8 @@ namespace isc { namespace dhcp { #line 2859 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 508: -#line 1804 "dhcp6_parser.yy" // lalr1.cc:859 + case 509: +#line 1805 "dhcp6_parser.yy" // lalr1.cc:859 { // The type parameter is required. ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); @@ -2869,16 +2869,16 @@ namespace isc { namespace dhcp { #line 2870 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 520: -#line 1826 "dhcp6_parser.yy" // lalr1.cc:859 + case 521: +#line 1827 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.DUID_TYPE); } #line 2878 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 521: -#line 1828 "dhcp6_parser.yy" // lalr1.cc:859 + case 522: +#line 1829 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -2886,26 +2886,26 @@ namespace isc { namespace dhcp { #line 2887 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 522: -#line 1833 "dhcp6_parser.yy" // lalr1.cc:859 + case 523: +#line 1834 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); } #line 2893 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 523: -#line 1834 "dhcp6_parser.yy" // lalr1.cc:859 + case 524: +#line 1835 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); } #line 2899 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 524: -#line 1835 "dhcp6_parser.yy" // lalr1.cc:859 + case 525: +#line 1836 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); } #line 2905 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 525: -#line 1838 "dhcp6_parser.yy" // lalr1.cc:859 + case 526: +#line 1839 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("htype", htype); @@ -2913,16 +2913,16 @@ namespace isc { namespace dhcp { #line 2914 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 526: -#line 1843 "dhcp6_parser.yy" // lalr1.cc:859 + case 527: +#line 1844 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2922 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 527: -#line 1845 "dhcp6_parser.yy" // lalr1.cc:859 + case 528: +#line 1846 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("identifier", id); @@ -2931,8 +2931,8 @@ namespace isc { namespace dhcp { #line 2932 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 528: -#line 1851 "dhcp6_parser.yy" // lalr1.cc:859 + case 529: +#line 1852 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("time", time); @@ -2940,8 +2940,8 @@ namespace isc { namespace dhcp { #line 2941 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 529: -#line 1856 "dhcp6_parser.yy" // lalr1.cc:859 + case 530: +#line 1857 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enterprise-id", time); @@ -2949,8 +2949,8 @@ namespace isc { namespace dhcp { #line 2950 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 530: -#line 1863 "dhcp6_parser.yy" // lalr1.cc:859 + case 531: +#line 1864 "dhcp6_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); @@ -2958,8 +2958,8 @@ namespace isc { namespace dhcp { #line 2959 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 531: -#line 1870 "dhcp6_parser.yy" // lalr1.cc:859 + case 532: +#line 1871 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("control-socket", m); @@ -2969,8 +2969,8 @@ namespace isc { namespace dhcp { #line 2970 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 532: -#line 1875 "dhcp6_parser.yy" // lalr1.cc:859 + case 533: +#line 1876 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -2978,16 +2978,16 @@ namespace isc { namespace dhcp { #line 2979 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 540: -#line 1891 "dhcp6_parser.yy" // lalr1.cc:859 + case 541: +#line 1892 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 2987 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 541: -#line 1893 "dhcp6_parser.yy" // lalr1.cc:859 + case 542: +#line 1894 "dhcp6_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); @@ -2996,16 +2996,16 @@ namespace isc { namespace dhcp { #line 2997 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 542: -#line 1899 "dhcp6_parser.yy" // lalr1.cc:859 + case 543: +#line 1900 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3005 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 543: -#line 1901 "dhcp6_parser.yy" // lalr1.cc:859 + case 544: +#line 1902 "dhcp6_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); @@ -3014,8 +3014,8 @@ namespace isc { namespace dhcp { #line 3015 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 544: -#line 1909 "dhcp6_parser.yy" // lalr1.cc:859 + case 545: +#line 1910 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp-ddns", m); @@ -3025,8 +3025,8 @@ namespace isc { namespace dhcp { #line 3026 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 545: -#line 1914 "dhcp6_parser.yy" // lalr1.cc:859 + case 546: +#line 1915 "dhcp6_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)); @@ -3036,8 +3036,8 @@ namespace isc { namespace dhcp { #line 3037 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 546: -#line 1921 "dhcp6_parser.yy" // lalr1.cc:859 + case 547: +#line 1922 "dhcp6_parser.yy" // lalr1.cc:859 { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3046,8 +3046,8 @@ namespace isc { namespace dhcp { #line 3047 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 547: -#line 1925 "dhcp6_parser.yy" // lalr1.cc:859 + case 548: +#line 1926 "dhcp6_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)); @@ -3056,8 +3056,8 @@ namespace isc { namespace dhcp { #line 3057 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 569: -#line 1956 "dhcp6_parser.yy" // lalr1.cc:859 + case 570: +#line 1957 "dhcp6_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); @@ -3065,16 +3065,16 @@ namespace isc { namespace dhcp { #line 3066 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 570: -#line 1961 "dhcp6_parser.yy" // lalr1.cc:859 + case 571: +#line 1962 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3074 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 571: -#line 1963 "dhcp6_parser.yy" // lalr1.cc:859 + case 572: +#line 1964 "dhcp6_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); @@ -3083,16 +3083,16 @@ namespace isc { namespace dhcp { #line 3084 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 572: -#line 1969 "dhcp6_parser.yy" // lalr1.cc:859 + case 573: +#line 1970 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3092 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 573: -#line 1971 "dhcp6_parser.yy" // lalr1.cc:859 + case 574: +#line 1972 "dhcp6_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); @@ -3101,8 +3101,8 @@ namespace isc { namespace dhcp { #line 3102 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 574: -#line 1977 "dhcp6_parser.yy" // lalr1.cc:859 + case 575: +#line 1978 "dhcp6_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); @@ -3110,16 +3110,16 @@ namespace isc { namespace dhcp { #line 3111 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 575: -#line 1982 "dhcp6_parser.yy" // lalr1.cc:859 + case 576: +#line 1983 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3119 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 576: -#line 1984 "dhcp6_parser.yy" // lalr1.cc:859 + case 577: +#line 1985 "dhcp6_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); @@ -3128,8 +3128,8 @@ namespace isc { namespace dhcp { #line 3129 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 577: -#line 1990 "dhcp6_parser.yy" // lalr1.cc:859 + case 578: +#line 1991 "dhcp6_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); @@ -3137,8 +3137,8 @@ namespace isc { namespace dhcp { #line 3138 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 578: -#line 1995 "dhcp6_parser.yy" // lalr1.cc:859 + case 579: +#line 1996 "dhcp6_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); @@ -3146,16 +3146,16 @@ namespace isc { namespace dhcp { #line 3147 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 579: -#line 2000 "dhcp6_parser.yy" // lalr1.cc:859 + case 580: +#line 2001 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NCR_PROTOCOL); } #line 3155 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 580: -#line 2002 "dhcp6_parser.yy" // lalr1.cc:859 + case 581: +#line 2003 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3163,28 +3163,28 @@ namespace isc { namespace dhcp { #line 3164 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 581: -#line 2008 "dhcp6_parser.yy" // lalr1.cc:859 + case 582: +#line 2009 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } #line 3170 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 582: -#line 2009 "dhcp6_parser.yy" // lalr1.cc:859 + case 583: +#line 2010 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } #line 3176 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 583: -#line 2012 "dhcp6_parser.yy" // lalr1.cc:859 + case 584: +#line 2013 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NCR_FORMAT); } #line 3184 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 584: -#line 2014 "dhcp6_parser.yy" // lalr1.cc:859 + case 585: +#line 2015 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); @@ -3193,8 +3193,8 @@ namespace isc { namespace dhcp { #line 3194 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 585: -#line 2020 "dhcp6_parser.yy" // lalr1.cc:859 + case 586: +#line 2021 "dhcp6_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); @@ -3202,8 +3202,8 @@ namespace isc { namespace dhcp { #line 3203 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 586: -#line 2025 "dhcp6_parser.yy" // lalr1.cc:859 + case 587: +#line 2026 "dhcp6_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); @@ -3211,8 +3211,8 @@ namespace isc { namespace dhcp { #line 3212 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 587: -#line 2030 "dhcp6_parser.yy" // lalr1.cc:859 + case 588: +#line 2031 "dhcp6_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); @@ -3220,16 +3220,16 @@ namespace isc { namespace dhcp { #line 3221 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 588: -#line 2035 "dhcp6_parser.yy" // lalr1.cc:859 + case 589: +#line 2036 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.REPLACE_CLIENT_NAME); } #line 3229 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 589: -#line 2037 "dhcp6_parser.yy" // lalr1.cc:859 + case 590: +#line 2038 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3237,40 +3237,40 @@ namespace isc { namespace dhcp { #line 3238 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 590: -#line 2043 "dhcp6_parser.yy" // lalr1.cc:859 + case 591: +#line 2044 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } #line 3246 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 591: -#line 2046 "dhcp6_parser.yy" // lalr1.cc:859 + case 592: +#line 2047 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } #line 3254 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 592: -#line 2049 "dhcp6_parser.yy" // lalr1.cc:859 + case 593: +#line 2050 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } #line 3262 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 593: -#line 2052 "dhcp6_parser.yy" // lalr1.cc:859 + case 594: +#line 2053 "dhcp6_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } #line 3270 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 594: -#line 2055 "dhcp6_parser.yy" // lalr1.cc:859 + case 595: +#line 2056 "dhcp6_parser.yy" // lalr1.cc:859 { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); @@ -3278,16 +3278,16 @@ namespace isc { namespace dhcp { #line 3279 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 595: -#line 2061 "dhcp6_parser.yy" // lalr1.cc:859 + case 596: +#line 2062 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3287 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 596: -#line 2063 "dhcp6_parser.yy" // lalr1.cc:859 + case 597: +#line 2064 "dhcp6_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); @@ -3296,16 +3296,16 @@ namespace isc { namespace dhcp { #line 3297 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 597: -#line 2069 "dhcp6_parser.yy" // lalr1.cc:859 + case 598: +#line 2070 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3305 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 598: -#line 2071 "dhcp6_parser.yy" // lalr1.cc:859 + case 599: +#line 2072 "dhcp6_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); @@ -3314,16 +3314,16 @@ namespace isc { namespace dhcp { #line 3315 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 599: -#line 2077 "dhcp6_parser.yy" // lalr1.cc:859 + case 600: +#line 2078 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3323 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 600: -#line 2079 "dhcp6_parser.yy" // lalr1.cc:859 + case 601: +#line 2080 "dhcp6_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); @@ -3332,16 +3332,16 @@ namespace isc { namespace dhcp { #line 3333 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 601: -#line 2087 "dhcp6_parser.yy" // lalr1.cc:859 + case 602: +#line 2088 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3341 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 602: -#line 2089 "dhcp6_parser.yy" // lalr1.cc:859 + case 603: +#line 2090 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3349,16 +3349,16 @@ namespace isc { namespace dhcp { #line 3350 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 603: -#line 2094 "dhcp6_parser.yy" // lalr1.cc:859 + case 604: +#line 2095 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3358 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 604: -#line 2096 "dhcp6_parser.yy" // lalr1.cc:859 + case 605: +#line 2097 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3366,16 +3366,16 @@ namespace isc { namespace dhcp { #line 3367 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 605: -#line 2101 "dhcp6_parser.yy" // lalr1.cc:859 + case 606: +#line 2102 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3375 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 606: -#line 2103 "dhcp6_parser.yy" // lalr1.cc:859 + case 607: +#line 2104 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3383,8 +3383,8 @@ namespace isc { namespace dhcp { #line 3384 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 607: -#line 2114 "dhcp6_parser.yy" // lalr1.cc:859 + case 608: +#line 2115 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("Logging", m); @@ -3394,8 +3394,8 @@ namespace isc { namespace dhcp { #line 3395 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 608: -#line 2119 "dhcp6_parser.yy" // lalr1.cc:859 + case 609: +#line 2120 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -3403,8 +3403,8 @@ namespace isc { namespace dhcp { #line 3404 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 609: -#line 2124 "dhcp6_parser.yy" // lalr1.cc:859 + case 610: +#line 2125 "dhcp6_parser.yy" // lalr1.cc:859 { // Parse the Logging map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3413,16 +3413,16 @@ namespace isc { namespace dhcp { #line 3414 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 610: -#line 2128 "dhcp6_parser.yy" // lalr1.cc:859 + case 611: +#line 2129 "dhcp6_parser.yy" // lalr1.cc:859 { // parsing completed } #line 3422 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 614: -#line 2144 "dhcp6_parser.yy" // lalr1.cc:859 + case 615: +#line 2145 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("loggers", l); @@ -3432,8 +3432,8 @@ namespace isc { namespace dhcp { #line 3433 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 615: -#line 2149 "dhcp6_parser.yy" // lalr1.cc:859 + case 616: +#line 2150 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -3441,8 +3441,8 @@ namespace isc { namespace dhcp { #line 3442 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 618: -#line 2161 "dhcp6_parser.yy" // lalr1.cc:859 + case 619: +#line 2162 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); @@ -3451,16 +3451,16 @@ namespace isc { namespace dhcp { #line 3452 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 619: -#line 2165 "dhcp6_parser.yy" // lalr1.cc:859 + case 620: +#line 2166 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } #line 3460 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 629: -#line 2182 "dhcp6_parser.yy" // lalr1.cc:859 + case 630: +#line 2183 "dhcp6_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); @@ -3468,16 +3468,16 @@ namespace isc { namespace dhcp { #line 3469 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 630: -#line 2187 "dhcp6_parser.yy" // lalr1.cc:859 + case 631: +#line 2188 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3477 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 631: -#line 2189 "dhcp6_parser.yy" // lalr1.cc:859 + case 632: +#line 2190 "dhcp6_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); @@ -3486,8 +3486,8 @@ namespace isc { namespace dhcp { #line 3487 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 632: -#line 2195 "dhcp6_parser.yy" // lalr1.cc:859 + case 633: +#line 2196 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output_options", l); @@ -3497,8 +3497,8 @@ namespace isc { namespace dhcp { #line 3498 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 633: -#line 2200 "dhcp6_parser.yy" // lalr1.cc:859 + case 634: +#line 2201 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -3506,8 +3506,8 @@ namespace isc { namespace dhcp { #line 3507 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 636: -#line 2209 "dhcp6_parser.yy" // lalr1.cc:859 + case 637: +#line 2210 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -3516,24 +3516,24 @@ namespace isc { namespace dhcp { #line 3517 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 637: -#line 2213 "dhcp6_parser.yy" // lalr1.cc:859 + case 638: +#line 2214 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } #line 3525 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 644: -#line 2227 "dhcp6_parser.yy" // lalr1.cc:859 + case 645: +#line 2228 "dhcp6_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } #line 3533 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 645: -#line 2229 "dhcp6_parser.yy" // lalr1.cc:859 + case 646: +#line 2230 "dhcp6_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); @@ -3542,8 +3542,8 @@ namespace isc { namespace dhcp { #line 3543 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 646: -#line 2235 "dhcp6_parser.yy" // lalr1.cc:859 + case 647: +#line 2236 "dhcp6_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); @@ -3551,8 +3551,8 @@ namespace isc { namespace dhcp { #line 3552 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 647: -#line 2240 "dhcp6_parser.yy" // lalr1.cc:859 + case 648: +#line 2241 "dhcp6_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); @@ -3560,8 +3560,8 @@ namespace isc { namespace dhcp { #line 3561 "dhcp6_parser.cc" // lalr1.cc:859 break; - case 648: -#line 2245 "dhcp6_parser.yy" // lalr1.cc:859 + case 649: +#line 2246 "dhcp6_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); @@ -3825,119 +3825,119 @@ namespace isc { namespace dhcp { } - const short int Dhcp6Parser::yypact_ninf_ = -796; + const short int Dhcp6Parser::yypact_ninf_ = -794; const signed char Dhcp6Parser::yytable_ninf_ = -1; const short int Dhcp6Parser::yypact_[] = { - 315, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, 42, 36, 58, 79, 106, - 120, 121, 142, 160, 166, 178, 192, 219, 221, 223, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, 36, -115, - 27, 33, 68, 175, 234, 243, 332, 17, 70, 133, - 3, 319, 84, -796, 226, 194, 230, 228, 248, -796, - -796, -796, -796, -796, 253, -796, 43, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, 271, 278, 314, - 324, 325, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, 330, -796, -796, -796, - 54, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, 342, - -796, 82, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, 350, 351, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, 91, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, 134, -796, -796, -796, - -796, -796, 354, -796, 360, 364, -796, -796, -796, -796, - -796, -796, 213, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - 285, 258, -796, -796, -796, -796, -796, -796, -796, -796, - 300, -796, -796, 370, -796, -796, -796, 374, -796, -796, - 363, 329, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, 381, 384, -796, -796, -796, - -796, 394, 389, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, 217, -796, -796, -796, 412, - -796, -796, 426, -796, 430, 445, -796, -796, 450, 451, - 454, -796, -796, -796, -796, -796, -796, -796, 246, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, 257, -796, -796, - -796, 36, 36, -796, 294, 456, 457, 458, 476, 477, - -796, 27, -796, 478, 479, 481, 482, 321, 322, 323, - 327, 333, 486, 488, 490, 491, 494, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 344, 505, 507, 33, - -796, 508, 349, 68, -796, 509, 515, 516, 517, 518, - 357, 356, 521, 522, 523, 524, 525, 175, -796, 526, - 234, -796, 527, 366, 529, 368, 369, 243, -796, 536, - 537, 538, 539, 540, 541, 543, -796, 332, -796, 544, - 545, 385, 546, 548, 549, 386, -796, 70, 551, 388, - 390, -796, 133, 553, 555, 123, -796, 393, 558, 559, - 402, 563, 403, 404, 567, 568, 405, 406, 407, 572, - 573, 574, 575, 319, -796, 576, 84, -796, -796, -796, - 577, 578, 579, 36, 36, 36, -796, 580, 581, 582, - 585, -796, -796, -796, -796, -796, 586, 587, 588, 589, - 417, 590, 592, 593, 594, 595, 596, 598, 597, 599, - -796, 600, 601, -796, 604, -796, -796, 605, 606, 418, - 419, 429, -796, -796, 343, 604, 435, 607, 608, -796, - 440, -796, 448, -796, 449, -796, -796, -796, 604, 604, - 604, 452, 453, 455, 459, -796, 460, 461, -796, 462, - 463, 464, -796, -796, 465, -796, -796, -796, 466, 36, - -796, -796, 467, 468, -796, 469, -796, -796, 191, 484, - -796, -796, -796, 55, 470, 471, 472, -796, 614, -796, - 36, 33, 84, -796, -796, -796, 68, 129, 129, 615, - 616, 631, 632, -796, -796, -796, 633, -49, 36, 53, - 564, 634, 636, 326, 62, 21, 319, -796, -796, 637, - 638, -796, -796, -796, -796, -796, -796, -796, -796, -796, - 639, -3, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, 640, -796, 260, 261, - 264, -796, -796, -796, -796, 617, 644, 645, 646, 647, - -796, 648, 649, -796, 650, 651, 652, -796, 276, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, 282, -796, 653, - 654, -796, -796, 655, 657, -796, -796, 656, 660, -796, - -796, 658, 662, -796, -796, 661, 663, -796, -796, -796, - 108, -796, -796, -796, 664, -796, -796, -796, 144, -796, - -796, -796, -796, 304, -796, -796, -796, 181, -796, -796, - 665, 666, -796, 668, 669, 670, 671, 672, 673, 307, - -796, -796, -796, -796, -796, -796, -796, -796, -796, 674, - 675, 676, -796, -796, -796, -796, 308, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, 316, -796, - -796, -796, 317, 493, -796, 677, 678, -796, -796, 679, - 681, -796, -796, 680, 684, -796, -796, -796, 682, -796, - -796, 280, -796, -796, -796, -796, 685, 687, 688, 689, - 528, 514, 530, 520, 531, 691, 532, 533, 696, 535, - 542, 534, 129, -796, -796, 129, -796, 615, 175, -796, - 616, 70, -796, 631, 133, -796, 632, 208, -796, 633, - -49, -796, -796, 53, -796, 699, 564, -796, 57, 634, - -796, 3, -796, 636, 547, 550, 552, 554, 556, 557, - 326, -796, 700, 701, 560, 561, 562, 62, -796, 702, - 703, 21, -796, -796, -796, 704, 706, 234, -796, 637, - 243, -796, 638, 332, -796, 639, 707, -796, 288, 640, - -796, 190, 565, 566, 569, -796, -796, -796, -796, -796, - 570, -796, -796, 571, -796, -796, -796, -796, 328, -796, - 335, -796, 709, -796, 711, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, 345, - -796, -796, -796, -796, -796, -796, -796, -796, 603, -796, - -796, 708, -796, -796, -796, -796, -796, 713, 712, -796, - -796, -796, -796, -796, 367, -796, -796, -796, -796, -796, - -796, -796, -796, 346, 609, -796, -796, -796, -796, 610, - 613, -796, -796, 618, 383, -796, 395, -796, 716, -796, - 619, -796, 710, -796, -796, -796, -796, -796, 398, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, 208, -796, - -796, 721, 584, -796, 57, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, 725, 591, - 728, 288, -796, -796, 620, -796, -796, 732, -796, 621, - -796, -796, 726, -796, -796, 289, -796, -42, 726, -796, - -796, 735, 736, 739, 401, -796, -796, -796, -796, -796, - -796, 742, 602, 623, 626, -42, -796, 630, -796, -796, - -796, -796, -796 + 308, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, 51, 47, 46, 64, 68, + 72, 86, 108, 152, 161, 211, 217, 233, 234, 249, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, 47, -110, + 39, 58, 45, 229, 94, 26, 355, 104, 77, 14, + -13, 357, 132, -794, 274, 285, 302, 300, 307, -794, + -794, -794, -794, -794, 329, -794, 115, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, 342, 345, 347, + 349, 350, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, 352, -794, -794, + -794, 133, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, 353, -794, 140, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, 361, 362, -794, -794, -794, -794, + -794, -794, -794, -794, -794, 147, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, 157, -794, -794, + -794, -794, -794, 365, -794, 370, 375, -794, -794, -794, + -794, -794, -794, 164, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, 351, 334, -794, -794, -794, -794, -794, -794, -794, + -794, 373, -794, -794, 379, -794, -794, -794, 381, -794, + -794, 380, 358, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, 385, 388, -794, -794, + -794, -794, 390, 418, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, 168, -794, -794, -794, + 419, -794, -794, 420, -794, 421, 422, -794, -794, 423, + 424, 427, -794, -794, -794, -794, -794, -794, -794, 172, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, 178, -794, + -794, -794, 47, 47, -794, 272, 434, 435, 442, 444, + 445, -794, 39, -794, 447, 448, 449, 450, 256, 289, + 290, 291, 321, 484, 485, 486, 487, 489, 492, 497, + 498, 499, 500, 501, 502, 503, 504, 506, 346, 507, + 509, 58, -794, 510, 356, 45, -794, 511, 515, 519, + 521, 522, 368, 359, 527, 529, 531, 532, 229, -794, + 533, 94, -794, 534, 377, 535, 378, 382, 26, -794, + 541, 542, 543, 545, 546, 547, 548, -794, 355, -794, + 549, 550, 389, 552, 553, 554, 391, -794, 77, 556, + 393, 394, -794, 14, 559, 560, 10, -794, 397, 562, + 563, 402, 565, 404, 405, 568, 569, 407, 408, 409, + 574, 575, 576, 577, 357, -794, 578, 132, -794, -794, + -794, 579, 580, 581, 47, 47, 47, -794, 582, 583, + 584, 587, -794, -794, -794, -794, -794, 588, 589, 591, + 590, 433, 594, 595, 596, 597, 598, 599, 601, 602, + 603, 604, -794, 605, 606, -794, 609, -794, -794, 610, + 611, 438, 443, 452, -794, -794, 331, 609, 453, 612, + -794, 455, -794, 456, -794, 457, -794, -794, -794, 609, + 609, 609, 458, 459, 460, 461, -794, 462, 463, -794, + 464, 465, 466, -794, -794, 467, -794, -794, -794, 468, + 47, -794, -794, 469, 470, -794, 471, -794, -794, 76, + 454, -794, -794, -794, -22, 472, 473, 474, -794, 635, + -794, 47, 58, 132, -794, -794, -794, 45, 203, 203, + 634, 636, 637, 638, -794, -794, -794, 639, -7, 47, + 29, 564, 640, 641, 642, 224, 136, 138, 357, -794, + -794, 643, 644, -794, -794, -794, -794, -794, -794, -794, + -794, -794, 18, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, 645, -794, 189, + 200, 213, -794, -794, -794, -794, 649, 650, 651, 652, + 653, -794, 654, 655, -794, 656, 657, 658, -794, 214, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, 246, -794, + 659, 660, -794, -794, 661, 663, -794, -794, 662, 666, + -794, -794, 664, 668, -794, -794, 667, 669, -794, -794, + -794, 179, -794, -794, -794, 670, -794, -794, -794, 257, + -794, -794, -794, -794, 247, -794, -794, -794, 275, -794, + -794, 671, 672, -794, -794, 673, 675, -794, 676, 677, + 678, 679, 680, 681, 250, -794, -794, -794, -794, -794, + -794, -794, -794, -794, 682, 683, 684, -794, -794, -794, + -794, 267, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, 268, -794, -794, -794, 271, 524, -794, + 685, 687, -794, -794, 686, 690, -794, -794, -794, 688, + -794, -794, 284, -794, -794, -794, -794, 691, 693, 694, + 695, 508, 416, 528, 417, 536, 696, 537, 538, 697, + 539, 540, 441, 203, -794, -794, 203, -794, 634, 229, + -794, 636, 77, -794, 637, 14, -794, 638, 367, -794, + 639, -7, -794, -794, 29, -794, 703, 564, -794, 82, + 640, -794, 355, -794, 641, -13, -794, 642, 544, 551, + 555, 557, 558, 561, 224, -794, 704, 705, 566, 567, + 570, 136, -794, 707, 708, 138, -794, -794, -794, 709, + 710, 94, -794, 643, 26, -794, 644, 712, -794, 121, + 645, -794, 395, 572, 573, 585, -794, -794, -794, -794, + -794, 615, -794, -794, 617, -794, -794, -794, -794, 281, + -794, 296, -794, 706, -794, 711, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + 297, -794, -794, -794, -794, -794, -794, -794, -794, 624, + -794, -794, 714, -794, -794, -794, -794, -794, 717, 719, + -794, -794, -794, -794, -794, 718, -794, 299, -794, -794, + -794, -794, -794, -794, -794, -794, 212, 627, -794, -794, + -794, -794, 630, 631, -794, -794, 633, 311, -794, 326, + -794, 647, -794, 716, -794, -794, -794, -794, -794, 327, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, 367, + -794, -794, 724, 496, -794, 82, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, 725, + 648, 726, 121, -794, -794, 665, -794, -794, 729, -794, + 674, -794, -794, 728, -794, -794, 339, -794, 48, 728, + -794, -794, 727, 736, 737, 333, -794, -794, -794, -794, + -794, -794, 740, 593, 689, 692, 48, -794, 698, -794, + -794, -794, -794, -794 }; const unsigned short int @@ -3947,151 +3947,151 @@ namespace isc { namespace dhcp { 20, 22, 24, 26, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 45, 38, 34, 33, 30, 31, 32, 37, 3, - 35, 36, 58, 5, 70, 7, 108, 9, 249, 11, - 394, 13, 419, 15, 449, 17, 319, 19, 327, 21, - 364, 23, 214, 25, 546, 27, 609, 29, 47, 41, - 0, 0, 0, 0, 0, 0, 451, 0, 329, 366, + 35, 36, 58, 5, 70, 7, 109, 9, 250, 11, + 395, 13, 420, 15, 450, 17, 320, 19, 328, 21, + 365, 23, 215, 25, 547, 27, 610, 29, 47, 41, + 0, 0, 0, 0, 0, 0, 452, 0, 330, 367, 0, 0, 0, 49, 0, 48, 0, 0, 42, 68, - 607, 601, 603, 605, 0, 67, 0, 60, 62, 64, - 65, 66, 63, 106, 120, 122, 124, 0, 0, 0, - 0, 0, 241, 317, 356, 407, 409, 290, 187, 204, - 195, 180, 486, 206, 225, 507, 0, 531, 544, 100, - 0, 72, 74, 75, 76, 77, 78, 81, 82, 83, - 84, 99, 85, 87, 86, 91, 92, 79, 80, 89, - 90, 97, 98, 88, 93, 94, 95, 96, 117, 0, - 116, 0, 110, 112, 113, 114, 115, 386, 411, 273, - 275, 277, 0, 0, 283, 281, 279, 441, 480, 272, - 253, 254, 255, 256, 0, 251, 260, 261, 262, 265, - 266, 268, 263, 264, 257, 258, 270, 271, 259, 267, - 269, 405, 404, 400, 401, 399, 0, 396, 398, 402, - 403, 434, 0, 437, 0, 0, 433, 427, 428, 426, - 431, 432, 0, 421, 423, 424, 429, 430, 425, 478, - 466, 468, 470, 472, 474, 476, 465, 462, 463, 464, - 0, 452, 453, 457, 458, 455, 459, 460, 461, 456, - 0, 346, 165, 0, 350, 348, 353, 0, 342, 343, - 0, 330, 331, 333, 345, 334, 335, 336, 352, 337, - 338, 339, 340, 341, 380, 0, 0, 378, 379, 382, - 383, 0, 367, 368, 370, 371, 372, 373, 374, 375, - 376, 377, 221, 223, 218, 0, 216, 219, 220, 0, - 570, 572, 0, 575, 0, 0, 579, 583, 0, 0, - 0, 588, 595, 597, 599, 568, 566, 567, 0, 548, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, - 560, 561, 562, 563, 564, 565, 614, 0, 611, 613, - 46, 0, 0, 39, 0, 0, 0, 0, 0, 0, - 57, 0, 59, 0, 0, 0, 0, 0, 0, 0, + 608, 602, 604, 606, 0, 67, 0, 60, 62, 64, + 65, 66, 63, 107, 121, 123, 125, 0, 0, 0, + 0, 0, 242, 318, 357, 408, 410, 291, 188, 205, + 196, 181, 487, 442, 207, 226, 508, 0, 532, 545, + 101, 0, 72, 74, 75, 76, 77, 78, 81, 82, + 83, 84, 99, 85, 87, 86, 91, 92, 79, 80, + 89, 90, 97, 98, 100, 88, 93, 94, 95, 96, + 118, 0, 117, 0, 111, 113, 114, 115, 116, 387, + 412, 274, 276, 278, 0, 0, 284, 282, 280, 481, + 273, 254, 255, 256, 257, 0, 252, 261, 262, 263, + 266, 267, 269, 264, 265, 258, 259, 271, 272, 260, + 268, 270, 406, 405, 401, 402, 400, 0, 397, 399, + 403, 404, 435, 0, 438, 0, 0, 434, 428, 429, + 427, 432, 433, 0, 422, 424, 425, 430, 431, 426, + 479, 467, 469, 471, 473, 475, 477, 466, 463, 464, + 465, 0, 453, 454, 458, 459, 456, 460, 461, 462, + 457, 0, 347, 166, 0, 351, 349, 354, 0, 343, + 344, 0, 331, 332, 334, 346, 335, 336, 337, 353, + 338, 339, 340, 341, 342, 381, 0, 0, 379, 380, + 383, 384, 0, 368, 369, 371, 372, 373, 374, 375, + 376, 377, 378, 222, 224, 219, 0, 217, 220, 221, + 0, 571, 573, 0, 576, 0, 0, 580, 584, 0, + 0, 0, 589, 596, 598, 600, 569, 567, 568, 0, + 549, 551, 552, 553, 554, 555, 556, 557, 558, 559, + 560, 561, 562, 563, 564, 565, 566, 615, 0, 612, + 614, 46, 0, 0, 39, 0, 0, 0, 0, 0, + 0, 57, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 0, 0, 0, 109, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, - 0, 395, 0, 0, 0, 0, 0, 0, 420, 0, - 0, 0, 0, 0, 0, 0, 450, 0, 320, 0, - 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, - 0, 365, 0, 0, 0, 0, 215, 0, 0, 0, + 0, 0, 71, 0, 0, 0, 110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, + 0, 0, 396, 0, 0, 0, 0, 0, 0, 421, + 0, 0, 0, 0, 0, 0, 0, 451, 0, 321, + 0, 0, 0, 0, 0, 0, 0, 329, 0, 0, + 0, 0, 366, 0, 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 547, 0, 0, 610, 50, 43, - 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, - 0, 101, 102, 103, 104, 105, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 548, 0, 0, 611, 50, + 43, 0, 0, 0, 0, 0, 0, 61, 0, 0, + 0, 0, 102, 103, 104, 105, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 530, 0, 0, 73, 0, 119, 111, 0, 0, 0, - 0, 0, 288, 289, 0, 0, 0, 0, 0, 252, - 0, 397, 0, 436, 0, 439, 440, 422, 0, 0, - 0, 0, 0, 0, 0, 454, 0, 0, 344, 0, - 0, 0, 355, 332, 0, 384, 385, 369, 0, 0, - 217, 569, 0, 0, 574, 0, 577, 578, 0, 0, - 585, 586, 587, 0, 0, 0, 0, 549, 0, 612, - 0, 0, 0, 602, 604, 606, 0, 0, 0, 126, - 243, 321, 358, 40, 408, 410, 292, 0, 47, 0, - 0, 0, 208, 0, 0, 0, 0, 51, 118, 388, - 413, 274, 276, 278, 285, 286, 287, 284, 282, 280, - 443, 0, 406, 435, 438, 479, 467, 469, 471, 473, - 475, 477, 347, 166, 351, 349, 354, 381, 222, 224, - 571, 573, 576, 581, 582, 580, 584, 590, 591, 592, - 593, 594, 589, 596, 598, 600, 0, 44, 0, 0, - 0, 152, 158, 160, 162, 0, 0, 0, 0, 0, - 175, 0, 0, 178, 0, 0, 0, 151, 0, 132, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 146, 147, 148, 149, 144, 145, 150, 0, 130, 0, - 127, 128, 247, 0, 244, 245, 325, 0, 322, 323, - 362, 0, 359, 360, 296, 0, 293, 294, 193, 194, - 0, 189, 191, 192, 0, 202, 203, 199, 0, 197, - 200, 201, 185, 0, 182, 184, 490, 0, 488, 212, - 0, 209, 210, 0, 0, 0, 0, 0, 0, 0, - 227, 229, 230, 231, 232, 233, 234, 520, 526, 0, - 0, 0, 519, 516, 517, 518, 0, 509, 511, 514, - 512, 513, 515, 540, 542, 539, 537, 538, 0, 533, - 535, 536, 0, 53, 392, 0, 389, 390, 417, 0, - 414, 415, 447, 0, 444, 445, 484, 483, 0, 482, - 618, 0, 616, 69, 608, 107, 0, 0, 0, 0, + 0, 0, 531, 0, 0, 73, 0, 120, 112, 0, + 0, 0, 0, 0, 289, 290, 0, 0, 0, 0, + 253, 0, 398, 0, 437, 0, 440, 441, 423, 0, + 0, 0, 0, 0, 0, 0, 455, 0, 0, 345, + 0, 0, 0, 356, 333, 0, 385, 386, 370, 0, + 0, 218, 570, 0, 0, 575, 0, 578, 579, 0, + 0, 586, 587, 588, 0, 0, 0, 0, 550, 0, + 613, 0, 0, 0, 603, 605, 607, 0, 0, 0, + 127, 244, 322, 359, 40, 409, 411, 293, 0, 47, + 0, 0, 0, 444, 209, 0, 0, 0, 0, 51, + 119, 389, 414, 275, 277, 279, 286, 287, 288, 285, + 283, 281, 0, 407, 436, 439, 480, 468, 470, 472, + 474, 476, 478, 348, 167, 352, 350, 355, 382, 223, + 225, 572, 574, 577, 582, 583, 581, 585, 591, 592, + 593, 594, 595, 590, 597, 599, 601, 0, 44, 0, + 0, 0, 153, 159, 161, 163, 0, 0, 0, 0, + 0, 176, 0, 0, 179, 0, 0, 0, 152, 0, + 133, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 147, 148, 149, 150, 145, 146, 151, 0, 131, + 0, 128, 129, 248, 0, 245, 246, 326, 0, 323, + 324, 363, 0, 360, 361, 297, 0, 294, 295, 194, + 195, 0, 190, 192, 193, 0, 203, 204, 200, 0, + 198, 201, 202, 186, 0, 183, 185, 491, 0, 489, + 448, 0, 445, 446, 213, 0, 210, 211, 0, 0, + 0, 0, 0, 0, 0, 228, 230, 231, 232, 233, + 234, 235, 521, 527, 0, 0, 0, 520, 517, 518, + 519, 0, 510, 512, 515, 513, 514, 516, 541, 543, + 540, 538, 539, 0, 534, 536, 537, 0, 53, 393, + 0, 390, 391, 418, 0, 415, 416, 485, 484, 0, + 483, 619, 0, 617, 69, 609, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 121, 123, 0, 125, 0, 0, 242, - 0, 329, 318, 0, 366, 357, 0, 0, 291, 0, - 0, 188, 205, 0, 196, 0, 0, 181, 492, 0, - 487, 0, 207, 0, 0, 0, 0, 0, 0, 0, - 0, 226, 0, 0, 0, 0, 0, 0, 508, 0, - 0, 0, 532, 545, 55, 0, 54, 0, 387, 0, - 0, 412, 0, 451, 442, 0, 0, 481, 0, 0, - 615, 0, 0, 0, 0, 164, 167, 168, 169, 170, - 0, 177, 171, 0, 172, 173, 174, 133, 0, 129, - 0, 246, 0, 324, 0, 361, 316, 311, 313, 304, - 305, 300, 301, 302, 303, 309, 310, 308, 312, 0, - 298, 306, 314, 315, 307, 295, 190, 198, 0, 183, - 504, 0, 502, 503, 499, 500, 501, 0, 493, 494, - 496, 497, 498, 489, 0, 211, 235, 236, 237, 238, - 239, 240, 228, 0, 0, 525, 528, 529, 510, 0, - 0, 534, 52, 0, 0, 391, 0, 416, 0, 446, - 0, 632, 0, 630, 628, 622, 626, 627, 0, 620, - 624, 625, 623, 617, 154, 155, 156, 157, 153, 159, - 161, 163, 176, 179, 131, 248, 326, 363, 0, 297, - 186, 0, 0, 491, 0, 213, 522, 523, 524, 521, - 527, 541, 543, 56, 393, 418, 448, 485, 0, 0, - 0, 0, 619, 299, 0, 506, 495, 0, 629, 0, - 621, 505, 0, 631, 636, 0, 634, 0, 0, 633, - 644, 0, 0, 0, 0, 638, 640, 641, 642, 643, - 635, 0, 0, 0, 0, 0, 637, 0, 646, 647, - 648, 639, 645 + 0, 0, 0, 0, 122, 124, 0, 126, 0, 0, + 243, 0, 330, 319, 0, 367, 358, 0, 0, 292, + 0, 0, 189, 206, 0, 197, 0, 0, 182, 493, + 0, 488, 452, 443, 0, 0, 208, 0, 0, 0, + 0, 0, 0, 0, 0, 227, 0, 0, 0, 0, + 0, 0, 509, 0, 0, 0, 533, 546, 55, 0, + 54, 0, 388, 0, 0, 413, 0, 0, 482, 0, + 0, 616, 0, 0, 0, 0, 165, 168, 169, 170, + 171, 0, 178, 172, 0, 173, 174, 175, 134, 0, + 130, 0, 247, 0, 325, 0, 362, 317, 312, 314, + 305, 306, 301, 302, 303, 304, 310, 311, 309, 313, + 0, 299, 307, 315, 316, 308, 296, 191, 199, 0, + 184, 505, 0, 503, 504, 500, 501, 502, 0, 494, + 495, 497, 498, 499, 490, 0, 447, 0, 212, 236, + 237, 238, 239, 240, 241, 229, 0, 0, 526, 529, + 530, 511, 0, 0, 535, 52, 0, 0, 392, 0, + 417, 0, 633, 0, 631, 629, 623, 627, 628, 0, + 621, 625, 626, 624, 618, 155, 156, 157, 158, 154, + 160, 162, 164, 177, 180, 132, 249, 327, 364, 0, + 298, 187, 0, 0, 492, 0, 449, 214, 523, 524, + 525, 522, 528, 542, 544, 56, 394, 419, 486, 0, + 0, 0, 0, 620, 300, 0, 507, 496, 0, 630, + 0, 622, 506, 0, 632, 637, 0, 635, 0, 0, + 634, 645, 0, 0, 0, 0, 639, 641, 642, 643, + 644, 636, 0, 0, 0, 0, 0, 638, 0, 647, + 648, 649, 640, 646 }; const short int Dhcp6Parser::yypgoto_[] = { - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, 0, -796, 189, -796, - -796, -796, -796, -796, -796, 176, -796, -427, -796, -796, - -796, -70, -796, -796, -796, 420, -796, -796, -796, -796, - 211, 400, -58, -53, -52, -41, -796, -796, -796, -796, - -796, 187, 413, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -34, -796, -549, -2, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -66, -796, - -567, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -22, -796, -796, -796, - -796, -796, -15, -561, -796, -796, -796, -796, -16, -796, - -796, -796, -796, -796, -796, -796, -796, -19, -796, -796, - -796, -18, 376, -796, -796, -796, -796, -796, -796, -796, - -24, -796, -796, -796, -796, -796, -796, -795, -796, -796, - -796, 7, -796, -796, -796, 10, 422, -796, -796, -794, - -796, -788, -796, -35, -796, -11, -796, -783, -796, -796, - -796, -782, -796, -796, -796, -796, 4, -796, -796, -164, - 749, -796, -796, -796, -796, -796, 15, -796, -796, -796, - 18, -796, 408, -796, -72, -796, -796, -796, -796, -796, - -65, -796, -796, -796, -796, -796, -7, -796, -796, -796, - 14, -796, -796, -796, 19, -796, 409, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -27, -796, - -796, -796, -23, 436, -796, -796, -48, -796, -20, -796, - -796, -796, -796, -796, -17, -796, -796, -796, -21, 431, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -14, -796, -796, -796, -9, -796, 425, 251, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -781, -796, -796, -796, -796, -796, -796, -796, - 26, -796, -796, -796, -150, -796, -796, -796, -796, -796, - -796, -796, 11, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -4, -796, -796, -796, -796, - -796, -796, -796, -796, 273, 410, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, -796, -796, -796, -796, -796, -796, -796, - -796, -796, -796, 295, 411, -796, -796, -796, -8, -796, - -796, -151, -796, -796, -796, -796, -796, -796, -166, -796, - -796, -181, -796, -796, -796, -796, -796 + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, 34, -794, 266, -794, + -794, -794, -794, -794, -794, 170, -794, -429, -794, -794, + -794, -70, -794, -794, -794, 401, -794, -794, -794, -794, + 185, 387, -66, -54, -51, -34, -794, -794, -794, -794, + -794, 235, 371, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -4, -794, -545, -3, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -42, -794, + -574, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -20, -794, -794, -794, + -794, -794, -5, -567, -794, -794, -794, -794, -16, -794, + -794, -794, -794, -794, -794, -794, -794, -24, -794, -794, + -794, -18, 383, -794, -794, -794, -794, -794, -794, -794, + -19, -794, -794, -794, -794, -794, -794, -793, -794, -794, + -794, 9, -794, -794, -794, 13, 428, -794, -794, -787, + -794, -784, -794, -30, -794, -28, -794, -780, -794, -794, + -794, -778, -794, -794, -794, -794, 8, -794, -794, -160, + 755, -794, -794, -794, -794, -794, 21, -794, -794, -794, + 25, -794, 410, -794, -38, -794, -794, -794, -794, -794, + -36, -794, -794, -794, -794, -794, -8, -794, -794, -794, + 23, -794, -794, -794, 27, -794, 411, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -17, -794, + -794, -794, -14, 440, -794, -794, -58, -794, -46, -794, + -794, -794, -794, -794, -23, -794, -794, -794, -15, 437, + -794, -794, -794, -794, -794, -794, -794, -31, -794, -794, + -794, 16, -794, -794, -794, 19, -794, 430, 252, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -770, -794, -794, -794, -794, -794, -794, -794, + 22, -794, -794, -794, -138, -794, -794, -794, -794, -794, + -794, -794, 11, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, 4, -794, -794, -794, -794, + -794, -794, -794, -794, 273, 406, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, + -794, -794, -794, 301, 412, -794, -794, -794, -2, -794, + -794, -147, -794, -794, -794, -794, -794, -794, -163, -794, + -794, -179, -794, -794, -794, -794, -794 }; const short int @@ -4099,252 +4099,250 @@ namespace isc { namespace dhcp { { -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 83, 39, 40, 69, - 574, 87, 88, 41, 68, 84, 85, 588, 763, 855, - 856, 657, 43, 70, 96, 97, 98, 345, 45, 71, - 130, 131, 132, 133, 134, 135, 136, 137, 353, 47, - 72, 161, 162, 163, 381, 164, 138, 354, 139, 355, - 140, 356, 679, 680, 681, 805, 658, 659, 660, 786, - 978, 661, 787, 662, 788, 663, 789, 664, 665, 420, - 666, 667, 668, 669, 670, 671, 672, 673, 674, 795, - 675, 676, 798, 141, 371, 713, 714, 715, 825, 142, - 368, 700, 701, 702, 703, 143, 370, 708, 709, 710, - 711, 144, 369, 145, 373, 720, 721, 722, 831, 63, - 80, 295, 296, 297, 433, 298, 434, 146, 374, 729, - 730, 731, 732, 733, 734, 735, 736, 147, 362, 683, - 684, 685, 808, 49, 73, 184, 185, 186, 387, 187, - 388, 188, 389, 189, 394, 190, 393, 191, 392, 597, - 192, 193, 148, 367, 695, 696, 697, 817, 909, 910, - 149, 363, 57, 77, 687, 688, 689, 811, 59, 78, - 260, 261, 262, 263, 264, 265, 266, 419, 267, 423, - 268, 422, 269, 270, 424, 271, 150, 364, 691, 692, - 693, 814, 61, 79, 281, 282, 283, 284, 285, 428, - 286, 287, 288, 289, 195, 385, 765, 766, 767, 857, - 51, 74, 206, 207, 208, 399, 151, 365, 152, 366, - 198, 386, 769, 770, 771, 860, 53, 75, 222, 223, - 224, 402, 225, 226, 404, 227, 228, 199, 395, 773, - 774, 775, 863, 55, 76, 240, 241, 242, 243, 410, - 244, 411, 245, 412, 246, 413, 247, 414, 248, 415, - 249, 409, 200, 396, 778, 779, 866, 153, 372, 717, - 718, 828, 927, 928, 929, 930, 931, 991, 932, 154, - 375, 746, 747, 748, 842, 999, 749, 750, 843, 751, - 752, 155, 156, 377, 758, 759, 760, 849, 761, 850, - 157, 378, 65, 81, 318, 319, 320, 321, 438, 322, - 439, 323, 324, 441, 325, 326, 327, 444, 625, 328, - 445, 329, 330, 331, 332, 449, 632, 333, 450, 334, - 451, 335, 452, 99, 347, 100, 348, 101, 349, 102, - 346, 67, 82, 337, 338, 339, 455, 781, 782, 868, - 968, 969, 970, 971, 1010, 972, 1008, 1025, 1026, 1027, - 1034, 1035, 1036, 1041, 1037, 1038, 1039 + 575, 87, 88, 41, 68, 84, 85, 590, 768, 859, + 860, 658, 43, 70, 96, 97, 98, 346, 45, 71, + 131, 132, 133, 134, 135, 136, 137, 138, 354, 47, + 72, 163, 164, 165, 383, 166, 139, 355, 140, 356, + 141, 357, 680, 681, 682, 806, 659, 660, 661, 787, + 979, 662, 788, 663, 789, 664, 790, 665, 666, 421, + 667, 668, 669, 670, 671, 672, 673, 674, 675, 796, + 676, 677, 799, 142, 372, 714, 715, 716, 826, 143, + 369, 701, 702, 703, 704, 144, 371, 709, 710, 711, + 712, 145, 370, 146, 375, 725, 726, 727, 835, 63, + 80, 296, 297, 298, 434, 299, 435, 147, 376, 734, + 735, 736, 737, 738, 739, 740, 741, 148, 363, 684, + 685, 686, 809, 49, 73, 185, 186, 187, 389, 188, + 390, 189, 391, 190, 396, 191, 395, 192, 394, 599, + 193, 194, 149, 368, 696, 697, 698, 818, 910, 911, + 150, 364, 57, 77, 688, 689, 690, 812, 59, 78, + 261, 262, 263, 264, 265, 266, 267, 420, 268, 424, + 269, 423, 270, 271, 425, 272, 151, 365, 692, 693, + 694, 815, 61, 79, 282, 283, 284, 285, 286, 429, + 287, 288, 289, 290, 196, 387, 770, 771, 772, 861, + 51, 74, 207, 208, 209, 400, 152, 366, 153, 367, + 199, 388, 774, 775, 776, 864, 53, 75, 223, 224, + 225, 403, 226, 227, 405, 228, 229, 154, 374, 721, + 722, 723, 832, 55, 76, 241, 242, 243, 244, 411, + 245, 412, 246, 413, 247, 414, 248, 415, 249, 416, + 250, 410, 201, 397, 779, 780, 867, 155, 373, 718, + 719, 829, 928, 929, 930, 931, 932, 992, 933, 156, + 377, 751, 752, 753, 846, 1001, 754, 755, 847, 756, + 757, 157, 158, 379, 763, 764, 765, 853, 766, 854, + 159, 380, 65, 81, 319, 320, 321, 322, 439, 323, + 440, 324, 325, 442, 326, 327, 328, 445, 626, 329, + 446, 330, 331, 332, 333, 450, 633, 334, 451, 335, + 452, 336, 453, 99, 348, 100, 349, 101, 350, 102, + 347, 67, 82, 338, 339, 340, 456, 782, 783, 869, + 969, 970, 971, 972, 1011, 973, 1009, 1026, 1027, 1028, + 1035, 1036, 1037, 1042, 1038, 1039, 1040 }; const unsigned short int Dhcp6Parser::yytable_[] = { - 95, 129, 160, 179, 202, 216, 236, 279, 258, 277, - 294, 315, 259, 278, 280, 180, 38, 743, 707, 677, - 181, 182, 902, 903, 165, 196, 209, 220, 238, 904, - 272, 290, 183, 316, 907, 908, 914, 89, 698, 203, - 217, 31, 30, 32, 103, 33, 351, 104, 105, 106, - 86, 352, 166, 197, 210, 221, 239, 379, 273, 291, - 113, 317, 380, 204, 218, 42, 194, 205, 219, 237, - 107, 108, 109, 110, 111, 112, 113, 114, 598, 737, - 158, 159, 230, 115, 116, 383, 44, 251, 646, 776, - 384, 605, 606, 607, 397, 115, 116, 292, 293, 398, - 1030, 114, 252, 1031, 1032, 1033, 117, 118, 119, 120, - 121, 820, 122, 46, 821, 252, 699, 253, 254, 115, - 116, 255, 256, 257, 115, 116, 123, 48, 50, 124, - 115, 116, 115, 116, 753, 754, 125, 400, 920, 921, - 698, 705, 401, 706, 126, 127, 641, 823, 128, 52, - 824, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 90, 54, 94, 738, - 739, 740, 741, 56, 252, 91, 92, 93, 252, 274, - 253, 254, 275, 276, 829, 58, 94, 830, 627, 628, - 629, 630, 94, 902, 903, 115, 116, 341, 94, 60, - 904, 34, 35, 36, 37, 907, 908, 914, 974, 975, - 976, 977, 107, 108, 109, 110, 407, 292, 293, 114, - 435, 408, 94, 631, 336, 436, 62, 94, 64, 167, - 66, 168, 340, 94, 342, 94, 343, 115, 116, 169, - 170, 171, 172, 173, 174, 107, 108, 109, 110, 453, - 112, 344, 114, 252, 454, 175, 888, 350, 176, 177, - 456, 417, 707, 379, 456, 457, 178, 383, 783, 784, - 115, 116, 785, 170, 171, 357, 173, 174, 114, 802, - 743, 95, 358, 869, 803, 802, 870, 114, 175, 201, - 804, 176, 1028, 416, 94, 1029, 115, 116, 94, 178, - 211, 212, 213, 214, 215, 115, 116, 826, 418, 129, - 840, 847, 827, 160, 175, 841, 848, 176, 359, 851, - 453, 623, 624, 175, 852, 853, 176, 179, 360, 361, - 202, 802, 427, 252, 376, 165, 984, 216, 397, 180, - 94, 458, 459, 985, 181, 182, 382, 236, 988, 196, - 115, 116, 209, 989, 390, 391, 183, 258, 403, 220, - 279, 259, 277, 166, 405, 203, 278, 280, 406, 238, - 435, 426, 217, 94, 421, 995, 114, 197, 425, 272, - 210, 115, 116, 315, 290, 429, 400, 221, 430, 204, - 194, 1004, 432, 205, 115, 116, 218, 239, 407, 94, - 219, 1011, 431, 1005, 1045, 316, 1012, 273, 94, 1046, - 237, 229, 291, 594, 595, 596, 437, 230, 231, 232, - 233, 234, 235, 723, 724, 725, 726, 727, 728, 961, - 440, 962, 963, 317, 442, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 443, - 996, 997, 998, 94, 446, 447, 313, 314, 448, 460, - 461, 462, 463, 563, 564, 565, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 464, 465, 467, 468, 94, 469, 470, 471, 472, 473, - 476, 129, 477, 474, 478, 479, 160, 94, 480, 475, - 481, 482, 483, 484, 485, 486, 487, 488, 489, 491, - 490, 492, 494, 497, 742, 755, 315, 495, 165, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, - 510, 512, 513, 514, 515, 516, 744, 756, 316, 619, - 518, 519, 520, 521, 522, 523, 166, 524, 526, 527, - 529, 528, 530, 531, 532, 534, 535, 538, 536, 539, - 637, 541, 542, 543, 745, 757, 317, 545, 544, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 558, 560, 575, 591, 592, 561, 562, 566, 567, 568, - 569, 570, 571, 572, 593, 576, 32, 577, 578, 579, - 599, 581, 580, 582, 583, 602, 584, 585, 586, 587, - 589, 590, 600, 603, 604, 601, 626, 608, 609, 636, - 610, 790, 678, 682, 611, 612, 613, 614, 615, 616, - 617, 618, 620, 621, 622, 633, 634, 635, 686, 690, - 694, 716, 712, 719, 764, 768, 772, 780, 791, 792, - 793, 794, 796, 797, 799, 800, 801, 807, 854, 806, - 810, 809, 812, 813, 815, 816, 819, 818, 573, 833, - 822, 832, 834, 835, 836, 837, 838, 839, 844, 845, - 846, 859, 876, 858, 862, 861, 864, 865, 878, 871, - 867, 872, 873, 874, 875, 880, 877, 879, 881, 882, - 883, 884, 886, 918, 943, 944, 949, 950, 885, 953, - 952, 960, 992, 936, 1009, 994, 937, 986, 938, 987, - 939, 993, 940, 941, 1006, 1014, 945, 946, 947, 1017, - 979, 980, 1019, 1024, 981, 982, 983, 1022, 179, 1042, - 1043, 258, 279, 1044, 277, 259, 1047, 896, 278, 280, - 180, 901, 1015, 640, 704, 181, 182, 1018, 922, 897, - 196, 294, 923, 272, 898, 899, 290, 183, 990, 912, - 1048, 466, 638, 889, 1000, 1001, 900, 742, 1002, 493, - 925, 755, 905, 1003, 1007, 1021, 1023, 202, 197, 1049, - 216, 273, 1050, 236, 291, 1052, 496, 913, 964, 744, - 887, 194, 965, 756, 919, 916, 906, 917, 926, 209, - 911, 540, 220, 934, 935, 238, 942, 891, 890, 509, - 966, 924, 203, 915, 1013, 217, 250, 745, 893, 892, - 895, 757, 955, 894, 954, 533, 511, 210, 517, 956, - 221, 537, 525, 239, 1016, 957, 204, 951, 967, 218, - 205, 959, 777, 219, 958, 933, 237, 639, 948, 762, - 1020, 973, 1040, 557, 1051, 0, 0, 559, 0, 0, + 95, 130, 162, 180, 203, 217, 237, 181, 259, 278, + 295, 316, 748, 708, 167, 197, 210, 221, 239, 182, + 273, 291, 183, 317, 678, 903, 168, 198, 211, 222, + 240, 904, 274, 292, 905, 318, 260, 279, 908, 184, + 909, 280, 200, 281, 204, 218, 205, 219, 915, 89, + 38, 30, 31, 42, 32, 86, 33, 160, 161, 253, + 275, 254, 255, 276, 277, 195, 206, 220, 238, 103, + 114, 44, 104, 105, 106, 46, 115, 116, 600, 48, + 699, 293, 294, 212, 213, 214, 215, 216, 115, 116, + 606, 607, 608, 50, 252, 107, 108, 109, 110, 111, + 112, 113, 114, 231, 293, 294, 177, 115, 116, 178, + 777, 628, 629, 630, 631, 52, 699, 706, 352, 707, + 115, 116, 253, 353, 254, 255, 114, 253, 256, 257, + 258, 117, 118, 119, 120, 121, 381, 122, 114, 115, + 116, 382, 123, 385, 115, 116, 632, 113, 386, 202, + 398, 124, 94, 742, 125, 399, 115, 116, 700, 54, + 401, 126, 647, 921, 922, 402, 253, 408, 56, 127, + 128, 436, 409, 129, 177, 454, 437, 178, 90, 94, + 455, 457, 821, 115, 116, 822, 458, 91, 92, 93, + 1031, 94, 381, 1032, 1033, 1034, 903, 784, 115, 116, + 115, 116, 904, 457, 94, 905, 624, 625, 785, 908, + 94, 909, 34, 35, 36, 37, 385, 803, 58, 915, + 642, 786, 804, 94, 60, 643, 644, 645, 646, 647, + 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, + 62, 64, 94, 743, 744, 745, 746, 94, 253, 803, + 827, 758, 759, 844, 805, 828, 66, 708, 845, 94, + 824, 889, 962, 825, 963, 964, 107, 108, 109, 110, + 851, 855, 337, 114, 454, 852, 856, 748, 830, 857, + 341, 831, 95, 169, 803, 170, 94, 870, 342, 985, + 871, 115, 116, 171, 172, 173, 174, 175, 176, 398, + 989, 94, 436, 94, 986, 990, 343, 997, 344, 177, + 345, 130, 178, 123, 401, 162, 998, 999, 1000, 1006, + 179, 728, 729, 730, 731, 732, 733, 167, 180, 408, + 1012, 203, 181, 351, 1007, 1013, 1046, 418, 217, 168, + 197, 1047, 1029, 210, 182, 1030, 358, 183, 237, 359, + 221, 360, 198, 361, 362, 211, 378, 384, 259, 417, + 239, 428, 222, 278, 184, 392, 393, 200, 94, 404, + 273, 204, 240, 205, 406, 291, 459, 460, 218, 407, + 219, 419, 274, 422, 316, 426, 260, 292, 427, 430, + 195, 279, 431, 206, 94, 280, 317, 281, 432, 114, + 220, 596, 597, 598, 107, 108, 109, 110, 318, 112, + 238, 114, 253, 975, 976, 977, 978, 115, 116, 115, + 116, 433, 472, 438, 441, 443, 444, 447, 448, 115, + 116, 449, 172, 173, 230, 175, 176, 461, 462, 463, + 231, 232, 233, 234, 235, 236, 464, 177, 465, 466, + 178, 468, 469, 470, 471, 473, 474, 475, 179, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 476, 477, 478, + 479, 480, 130, 481, 314, 315, 482, 162, 564, 565, + 566, 483, 484, 485, 486, 487, 488, 489, 490, 167, + 491, 493, 492, 494, 496, 499, 747, 760, 316, 500, + 94, 168, 94, 501, 497, 502, 503, 505, 749, 761, + 317, 506, 94, 507, 504, 508, 509, 511, 513, 515, + 750, 762, 318, 514, 516, 519, 520, 521, 517, 522, + 523, 524, 525, 527, 528, 529, 530, 531, 532, 533, + 535, 536, 537, 539, 540, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 620, 551, 552, 553, 554, 555, + 556, 557, 559, 561, 877, 879, 627, 562, 563, 567, + 568, 569, 570, 571, 572, 638, 573, 32, 576, 577, + 578, 579, 580, 593, 582, 581, 583, 584, 594, 887, + 585, 586, 587, 588, 589, 591, 592, 595, 601, 602, + 603, 604, 605, 609, 610, 611, 612, 613, 614, 615, + 616, 617, 618, 619, 621, 622, 623, 634, 635, 636, + 637, 679, 713, 683, 687, 691, 695, 717, 720, 724, + 769, 773, 781, 791, 792, 793, 794, 795, 797, 798, + 800, 801, 802, 808, 1016, 807, 811, 810, 813, 814, + 816, 817, 820, 819, 876, 834, 823, 833, 837, 836, + 838, 839, 840, 841, 842, 843, 848, 849, 850, 858, + 863, 862, 865, 866, 878, 872, 868, 873, 874, 875, + 881, 884, 880, 882, 883, 885, 886, 919, 946, 947, + 939, 952, 953, 956, 987, 955, 961, 940, 993, 988, + 1010, 941, 995, 942, 943, 994, 996, 944, 1015, 1018, + 1020, 1043, 948, 949, 1023, 1025, 950, 980, 981, 180, + 1044, 1045, 259, 181, 1048, 278, 574, 639, 897, 705, + 982, 197, 898, 467, 273, 182, 498, 291, 183, 923, + 913, 1049, 237, 198, 899, 295, 274, 900, 495, 292, + 260, 926, 914, 279, 239, 184, 902, 280, 200, 281, + 983, 747, 984, 927, 901, 760, 240, 924, 906, 991, + 907, 203, 1002, 749, 217, 1003, 1004, 761, 1005, 965, + 888, 195, 641, 210, 890, 750, 221, 920, 918, 762, + 912, 967, 1008, 938, 1019, 211, 917, 937, 222, 541, + 892, 925, 891, 968, 238, 945, 510, 966, 916, 1014, + 1022, 204, 251, 205, 218, 894, 219, 893, 534, 1024, + 896, 512, 895, 960, 538, 518, 958, 957, 526, 959, + 936, 935, 934, 206, 778, 1050, 220, 1017, 1051, 954, + 558, 767, 951, 1053, 640, 1021, 1041, 1052, 974, 560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 896, 0, - 0, 0, 901, 0, 922, 0, 0, 0, 923, 0, - 897, 0, 0, 0, 0, 898, 899, 0, 0, 0, - 912, 964, 0, 0, 0, 965, 925, 900, 0, 0, - 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 966, 0, 0, 0, 0, 913, 0, - 0, 0, 0, 0, 926, 0, 0, 906, 0, 0, - 0, 911, 0, 0, 0, 0, 0, 924, 0, 0, - 0, 967 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 897, + 0, 0, 0, 898, 0, 923, 0, 0, 0, 0, + 0, 913, 0, 0, 0, 899, 0, 926, 900, 0, + 0, 0, 965, 914, 0, 0, 0, 902, 0, 927, + 0, 0, 0, 924, 967, 901, 0, 0, 0, 906, + 0, 907, 0, 0, 0, 0, 968, 0, 0, 0, + 966, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 912, 0, 0, 0, 0, 0, 925 }; const short int Dhcp6Parser::yycheck_[] = { - 70, 71, 72, 73, 74, 75, 76, 79, 78, 79, - 80, 81, 78, 79, 79, 73, 16, 584, 579, 568, - 73, 73, 817, 817, 72, 73, 74, 75, 76, 817, - 78, 79, 73, 81, 817, 817, 817, 10, 87, 74, - 75, 5, 0, 7, 11, 9, 3, 14, 15, 16, - 165, 8, 72, 73, 74, 75, 76, 3, 78, 79, - 43, 81, 8, 74, 75, 7, 73, 74, 75, 76, - 37, 38, 39, 40, 41, 42, 43, 44, 505, 17, - 12, 13, 85, 62, 63, 3, 7, 17, 26, 92, - 8, 518, 519, 520, 3, 62, 63, 94, 95, 8, - 142, 44, 45, 145, 146, 147, 73, 74, 75, 76, - 77, 3, 79, 7, 6, 45, 165, 47, 48, 62, - 63, 51, 52, 53, 62, 63, 93, 7, 7, 96, - 62, 63, 62, 63, 113, 114, 103, 3, 81, 82, - 87, 88, 8, 90, 111, 112, 17, 3, 115, 7, - 6, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 139, 7, 165, 107, - 108, 109, 110, 7, 45, 148, 149, 150, 45, 46, - 47, 48, 49, 50, 3, 7, 165, 6, 133, 134, - 135, 136, 165, 988, 988, 62, 63, 3, 165, 7, - 988, 165, 166, 167, 168, 988, 988, 988, 18, 19, - 20, 21, 37, 38, 39, 40, 3, 94, 95, 44, - 3, 8, 165, 168, 140, 8, 7, 165, 7, 54, - 7, 56, 6, 165, 4, 165, 8, 62, 63, 64, - 65, 66, 67, 68, 69, 37, 38, 39, 40, 3, - 42, 3, 44, 45, 8, 80, 805, 4, 83, 84, - 3, 3, 823, 3, 3, 8, 91, 3, 8, 8, - 62, 63, 8, 65, 66, 4, 68, 69, 44, 3, - 847, 351, 4, 3, 8, 3, 6, 44, 80, 55, - 8, 83, 3, 8, 165, 6, 62, 63, 165, 91, - 57, 58, 59, 60, 61, 62, 63, 3, 8, 379, - 3, 3, 8, 383, 80, 8, 8, 83, 4, 3, - 3, 130, 131, 80, 8, 8, 83, 397, 4, 4, - 400, 3, 3, 45, 4, 383, 8, 407, 3, 397, - 165, 341, 342, 8, 397, 397, 4, 417, 3, 397, - 62, 63, 400, 8, 4, 4, 397, 427, 4, 407, - 432, 427, 432, 383, 4, 400, 432, 432, 4, 417, - 3, 8, 407, 165, 4, 8, 44, 397, 4, 427, - 400, 62, 63, 453, 432, 4, 3, 407, 4, 400, - 397, 8, 3, 400, 62, 63, 407, 417, 3, 165, - 407, 3, 8, 8, 3, 453, 8, 427, 165, 8, - 417, 79, 432, 70, 71, 72, 4, 85, 86, 87, - 88, 89, 90, 97, 98, 99, 100, 101, 102, 141, - 4, 143, 144, 453, 4, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 4, - 104, 105, 106, 165, 4, 4, 137, 138, 4, 165, - 4, 4, 4, 463, 464, 465, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 4, 4, 4, 4, 165, 4, 4, 166, 166, 166, - 4, 561, 4, 166, 4, 4, 566, 165, 4, 166, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 166, 4, 4, 4, 584, 585, 586, 168, 566, 4, - 4, 4, 4, 166, 168, 4, 4, 4, 4, 4, - 4, 4, 166, 4, 166, 166, 584, 585, 586, 539, - 4, 4, 4, 4, 4, 4, 566, 4, 4, 4, - 4, 166, 4, 4, 168, 4, 168, 4, 168, 4, - 560, 168, 4, 4, 584, 585, 586, 4, 166, 166, - 166, 4, 4, 168, 168, 168, 4, 4, 4, 4, - 4, 4, 165, 165, 165, 7, 7, 7, 7, 7, - 5, 5, 5, 5, 165, 5, 7, 5, 5, 5, - 165, 5, 7, 5, 7, 165, 7, 7, 7, 5, - 5, 5, 5, 165, 165, 7, 132, 165, 165, 5, - 165, 4, 7, 7, 165, 165, 165, 165, 165, 165, - 165, 165, 165, 165, 165, 165, 165, 165, 7, 7, - 7, 7, 78, 7, 7, 7, 7, 7, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 3, 165, 6, - 3, 6, 6, 3, 6, 3, 3, 6, 479, 3, - 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 3, 168, 6, 3, 6, 6, 3, 168, 4, - 8, 4, 4, 4, 166, 4, 166, 166, 166, 166, - 4, 166, 168, 4, 4, 4, 4, 4, 166, 3, - 6, 4, 4, 166, 4, 3, 166, 8, 166, 8, - 166, 8, 166, 166, 8, 4, 166, 166, 166, 4, - 165, 165, 4, 7, 165, 165, 165, 5, 808, 4, - 4, 811, 814, 4, 814, 811, 4, 817, 814, 814, - 808, 817, 168, 566, 578, 808, 808, 166, 828, 817, - 808, 831, 828, 811, 817, 817, 814, 808, 165, 817, - 168, 351, 561, 807, 165, 165, 817, 847, 165, 379, - 828, 851, 817, 165, 165, 165, 165, 857, 808, 166, - 860, 811, 166, 863, 814, 165, 383, 817, 868, 847, - 802, 808, 868, 851, 826, 820, 817, 823, 828, 857, - 817, 435, 860, 831, 833, 863, 840, 810, 808, 397, - 868, 828, 857, 819, 988, 860, 77, 847, 813, 811, - 816, 851, 859, 814, 857, 427, 400, 857, 407, 860, - 860, 432, 417, 863, 994, 862, 857, 851, 868, 860, - 857, 865, 601, 860, 863, 829, 863, 562, 847, 586, - 1011, 869, 1028, 453, 1045, -1, -1, 456, -1, -1, + 70, 71, 72, 73, 74, 75, 76, 73, 78, 79, + 80, 81, 586, 580, 72, 73, 74, 75, 76, 73, + 78, 79, 73, 81, 569, 818, 72, 73, 74, 75, + 76, 818, 78, 79, 818, 81, 78, 79, 818, 73, + 818, 79, 73, 79, 74, 75, 74, 75, 818, 10, + 16, 0, 5, 7, 7, 165, 9, 12, 13, 45, + 46, 47, 48, 49, 50, 73, 74, 75, 76, 11, + 44, 7, 14, 15, 16, 7, 62, 63, 507, 7, + 87, 94, 95, 57, 58, 59, 60, 61, 62, 63, + 519, 520, 521, 7, 17, 37, 38, 39, 40, 41, + 42, 43, 44, 85, 94, 95, 80, 62, 63, 83, + 92, 133, 134, 135, 136, 7, 87, 88, 3, 90, + 62, 63, 45, 8, 47, 48, 44, 45, 51, 52, + 53, 73, 74, 75, 76, 77, 3, 79, 44, 62, + 63, 8, 84, 3, 62, 63, 168, 43, 8, 55, + 3, 93, 165, 17, 96, 8, 62, 63, 165, 7, + 3, 103, 26, 81, 82, 8, 45, 3, 7, 111, + 112, 3, 8, 115, 80, 3, 8, 83, 139, 165, + 8, 3, 3, 62, 63, 6, 8, 148, 149, 150, + 142, 165, 3, 145, 146, 147, 989, 8, 62, 63, + 62, 63, 989, 3, 165, 989, 130, 131, 8, 989, + 165, 989, 165, 166, 167, 168, 3, 3, 7, 989, + 17, 8, 8, 165, 7, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 7, 7, 165, 107, 108, 109, 110, 165, 45, 3, + 3, 113, 114, 3, 8, 8, 7, 824, 8, 165, + 3, 806, 141, 6, 143, 144, 37, 38, 39, 40, + 3, 3, 140, 44, 3, 8, 8, 851, 3, 8, + 6, 6, 352, 54, 3, 56, 165, 3, 3, 8, + 6, 62, 63, 64, 65, 66, 67, 68, 69, 3, + 3, 165, 3, 165, 8, 8, 4, 8, 8, 80, + 3, 381, 83, 84, 3, 385, 104, 105, 106, 8, + 91, 97, 98, 99, 100, 101, 102, 385, 398, 3, + 3, 401, 398, 4, 8, 8, 3, 3, 408, 385, + 398, 8, 3, 401, 398, 6, 4, 398, 418, 4, + 408, 4, 398, 4, 4, 401, 4, 4, 428, 8, + 418, 3, 408, 433, 398, 4, 4, 398, 165, 4, + 428, 401, 418, 401, 4, 433, 342, 343, 408, 4, + 408, 8, 428, 4, 454, 4, 428, 433, 8, 4, + 398, 433, 4, 401, 165, 433, 454, 433, 8, 44, + 408, 70, 71, 72, 37, 38, 39, 40, 454, 42, + 418, 44, 45, 18, 19, 20, 21, 62, 63, 62, + 63, 3, 166, 4, 4, 4, 4, 4, 4, 62, + 63, 4, 65, 66, 79, 68, 69, 165, 4, 4, + 85, 86, 87, 88, 89, 90, 4, 80, 4, 4, + 83, 4, 4, 4, 4, 166, 166, 166, 91, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 166, 4, 4, + 4, 4, 562, 4, 137, 138, 4, 567, 464, 465, + 466, 4, 4, 4, 4, 4, 4, 4, 4, 567, + 4, 4, 166, 4, 4, 4, 586, 587, 588, 4, + 165, 567, 165, 4, 168, 4, 4, 168, 586, 587, + 588, 4, 165, 4, 166, 4, 4, 4, 4, 4, + 586, 587, 588, 166, 166, 4, 4, 4, 166, 4, + 4, 4, 4, 4, 4, 166, 4, 4, 4, 168, + 4, 168, 168, 4, 4, 168, 4, 4, 166, 4, + 166, 166, 4, 4, 540, 168, 168, 168, 4, 4, + 4, 4, 4, 4, 168, 168, 132, 7, 7, 7, + 7, 7, 5, 5, 5, 561, 5, 7, 165, 5, + 5, 5, 5, 165, 5, 7, 5, 5, 165, 168, + 7, 7, 7, 7, 5, 5, 5, 165, 165, 7, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 5, 7, 78, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 3, 168, 6, 3, 6, 6, 3, + 6, 3, 3, 6, 166, 3, 6, 6, 3, 6, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 165, + 3, 6, 6, 3, 166, 4, 8, 4, 4, 4, + 4, 4, 166, 166, 166, 166, 166, 4, 4, 4, + 166, 4, 4, 3, 8, 6, 4, 166, 4, 8, + 4, 166, 3, 166, 166, 8, 8, 166, 4, 4, + 4, 4, 166, 166, 5, 7, 166, 165, 165, 809, + 4, 4, 812, 809, 4, 815, 480, 562, 818, 579, + 165, 809, 818, 352, 812, 809, 385, 815, 809, 829, + 818, 168, 832, 809, 818, 835, 812, 818, 381, 815, + 812, 829, 818, 815, 832, 809, 818, 815, 809, 815, + 165, 851, 165, 829, 818, 855, 832, 829, 818, 165, + 818, 861, 165, 851, 864, 165, 165, 855, 165, 869, + 803, 809, 567, 861, 808, 851, 864, 827, 824, 855, + 818, 869, 165, 837, 166, 861, 821, 835, 864, 436, + 811, 829, 809, 869, 832, 844, 398, 869, 820, 989, + 165, 861, 77, 861, 864, 814, 864, 812, 428, 165, + 817, 401, 815, 866, 433, 408, 863, 861, 418, 864, + 834, 832, 830, 861, 602, 166, 864, 995, 166, 855, + 454, 588, 851, 165, 563, 1012, 1029, 1046, 870, 457, -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, 988, -1, - -1, -1, 988, -1, 994, -1, -1, -1, 994, -1, - 988, -1, -1, -1, -1, 988, 988, -1, -1, -1, - 988, 1011, -1, -1, -1, 1011, 994, 988, -1, -1, - -1, -1, -1, 988, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1011, -1, -1, -1, -1, 988, -1, - -1, -1, -1, -1, 994, -1, -1, 988, -1, -1, - -1, 988, -1, -1, -1, -1, -1, 994, -1, -1, - -1, 1011 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 989, + -1, -1, -1, 989, -1, 995, -1, -1, -1, -1, + -1, 989, -1, -1, -1, 989, -1, 995, 989, -1, + -1, -1, 1012, 989, -1, -1, -1, 989, -1, 995, + -1, -1, -1, 995, 1012, 989, -1, -1, -1, 989, + -1, 989, -1, -1, -1, -1, 1012, -1, -1, -1, + 1012, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 989, -1, -1, -1, -1, -1, 995 }; const unsigned short int @@ -4362,100 +4360,100 @@ namespace isc { namespace dhcp { 139, 148, 149, 150, 165, 200, 203, 204, 205, 512, 514, 516, 518, 11, 14, 15, 16, 37, 38, 39, 40, 41, 42, 43, 44, 62, 63, 73, 74, 75, - 76, 77, 79, 93, 96, 103, 111, 112, 115, 200, - 209, 210, 211, 212, 213, 214, 215, 216, 225, 227, - 229, 262, 268, 274, 280, 282, 296, 306, 331, 339, - 365, 395, 397, 446, 458, 470, 471, 479, 12, 13, - 200, 220, 221, 222, 224, 395, 397, 54, 56, 64, - 65, 66, 67, 68, 69, 80, 83, 84, 91, 200, - 211, 212, 213, 214, 314, 315, 316, 318, 320, 322, - 324, 326, 329, 330, 365, 383, 395, 397, 399, 416, - 441, 55, 200, 322, 324, 365, 391, 392, 393, 395, - 397, 57, 58, 59, 60, 61, 200, 322, 324, 365, - 395, 397, 407, 408, 409, 411, 412, 414, 415, 79, - 85, 86, 87, 88, 89, 90, 200, 365, 395, 397, - 424, 425, 426, 427, 429, 431, 433, 435, 437, 439, - 339, 17, 45, 47, 48, 51, 52, 53, 200, 247, - 349, 350, 351, 352, 353, 354, 355, 357, 359, 361, - 362, 364, 395, 397, 46, 49, 50, 200, 247, 353, - 359, 373, 374, 375, 376, 377, 379, 380, 381, 382, - 395, 397, 94, 95, 200, 290, 291, 292, 294, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 137, 138, 200, 395, 397, 483, 484, - 485, 486, 488, 490, 491, 493, 494, 495, 498, 500, - 501, 502, 503, 506, 508, 510, 140, 522, 523, 524, - 6, 3, 4, 8, 3, 206, 519, 513, 515, 517, - 4, 3, 8, 217, 226, 228, 230, 4, 4, 4, - 4, 4, 307, 340, 366, 396, 398, 332, 269, 281, - 275, 263, 447, 283, 297, 459, 4, 472, 480, 3, - 8, 223, 4, 3, 8, 384, 400, 317, 319, 321, - 4, 4, 327, 325, 323, 417, 442, 3, 8, 394, - 3, 8, 410, 4, 413, 4, 4, 3, 8, 440, - 428, 430, 432, 434, 436, 438, 8, 3, 8, 356, - 248, 4, 360, 358, 363, 4, 8, 3, 378, 4, - 4, 8, 3, 293, 295, 3, 8, 4, 487, 489, - 4, 492, 4, 4, 496, 499, 4, 4, 4, 504, - 507, 509, 511, 3, 8, 525, 3, 8, 185, 185, - 165, 4, 4, 4, 4, 4, 204, 4, 4, 4, - 4, 166, 166, 166, 166, 166, 4, 4, 4, 4, + 76, 77, 79, 84, 93, 96, 103, 111, 112, 115, + 200, 209, 210, 211, 212, 213, 214, 215, 216, 225, + 227, 229, 262, 268, 274, 280, 282, 296, 306, 331, + 339, 365, 395, 397, 416, 446, 458, 470, 471, 479, + 12, 13, 200, 220, 221, 222, 224, 395, 397, 54, + 56, 64, 65, 66, 67, 68, 69, 80, 83, 91, + 200, 211, 212, 213, 214, 314, 315, 316, 318, 320, + 322, 324, 326, 329, 330, 365, 383, 395, 397, 399, + 416, 441, 55, 200, 322, 324, 365, 391, 392, 393, + 395, 397, 57, 58, 59, 60, 61, 200, 322, 324, + 365, 395, 397, 407, 408, 409, 411, 412, 414, 415, + 79, 85, 86, 87, 88, 89, 90, 200, 365, 395, + 397, 424, 425, 426, 427, 429, 431, 433, 435, 437, + 439, 339, 17, 45, 47, 48, 51, 52, 53, 200, + 247, 349, 350, 351, 352, 353, 354, 355, 357, 359, + 361, 362, 364, 395, 397, 46, 49, 50, 200, 247, + 353, 359, 373, 374, 375, 376, 377, 379, 380, 381, + 382, 395, 397, 94, 95, 200, 290, 291, 292, 294, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 137, 138, 200, 395, 397, 483, + 484, 485, 486, 488, 490, 491, 493, 494, 495, 498, + 500, 501, 502, 503, 506, 508, 510, 140, 522, 523, + 524, 6, 3, 4, 8, 3, 206, 519, 513, 515, + 517, 4, 3, 8, 217, 226, 228, 230, 4, 4, + 4, 4, 4, 307, 340, 366, 396, 398, 332, 269, + 281, 275, 263, 447, 417, 283, 297, 459, 4, 472, + 480, 3, 8, 223, 4, 3, 8, 384, 400, 317, + 319, 321, 4, 4, 327, 325, 323, 442, 3, 8, + 394, 3, 8, 410, 4, 413, 4, 4, 3, 8, + 440, 428, 430, 432, 434, 436, 438, 8, 3, 8, + 356, 248, 4, 360, 358, 363, 4, 8, 3, 378, + 4, 4, 8, 3, 293, 295, 3, 8, 4, 487, + 489, 4, 492, 4, 4, 496, 499, 4, 4, 4, + 504, 507, 509, 511, 3, 8, 525, 3, 8, 185, + 185, 165, 4, 4, 4, 4, 4, 204, 4, 4, + 4, 4, 166, 166, 166, 166, 166, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 166, 4, 4, 210, 4, 168, 221, 4, 4, 4, - 4, 4, 166, 168, 4, 4, 4, 4, 4, 315, - 4, 392, 4, 166, 4, 166, 166, 408, 4, 4, - 4, 4, 4, 4, 4, 426, 4, 4, 166, 4, - 4, 4, 168, 351, 4, 168, 168, 375, 4, 4, - 291, 168, 4, 4, 166, 4, 166, 166, 4, 4, - 168, 168, 168, 4, 4, 4, 4, 484, 4, 523, - 4, 7, 7, 185, 185, 185, 7, 7, 7, 5, - 5, 5, 5, 187, 189, 165, 5, 5, 5, 5, - 7, 5, 5, 7, 7, 7, 7, 5, 196, 5, - 5, 165, 165, 165, 70, 71, 72, 328, 196, 165, - 5, 7, 165, 165, 165, 196, 196, 196, 165, 165, - 165, 165, 165, 165, 165, 165, 165, 165, 165, 185, - 165, 165, 165, 130, 131, 497, 132, 133, 134, 135, - 136, 168, 505, 165, 165, 165, 5, 185, 209, 522, - 220, 17, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 200, 235, 236, - 237, 240, 242, 244, 246, 247, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 259, 260, 235, 7, 231, - 232, 233, 7, 308, 309, 310, 7, 343, 344, 345, - 7, 367, 368, 369, 7, 333, 334, 335, 87, 165, - 270, 271, 272, 273, 194, 88, 90, 272, 276, 277, - 278, 279, 78, 264, 265, 266, 7, 448, 449, 7, - 284, 285, 286, 97, 98, 99, 100, 101, 102, 298, - 299, 300, 301, 302, 303, 304, 305, 17, 107, 108, - 109, 110, 200, 249, 395, 397, 460, 461, 462, 465, - 466, 468, 469, 113, 114, 200, 395, 397, 473, 474, - 475, 477, 483, 197, 7, 385, 386, 387, 7, 401, - 402, 403, 7, 418, 419, 420, 92, 427, 443, 444, - 7, 526, 527, 8, 8, 8, 238, 241, 243, 245, - 4, 4, 4, 4, 4, 258, 4, 4, 261, 4, - 4, 4, 3, 8, 8, 234, 6, 3, 311, 6, - 3, 346, 6, 3, 370, 6, 3, 336, 6, 3, - 3, 6, 6, 3, 6, 267, 3, 8, 450, 3, - 6, 287, 6, 3, 4, 4, 4, 4, 4, 4, - 3, 8, 463, 467, 4, 4, 4, 3, 8, 476, - 478, 3, 8, 8, 165, 198, 199, 388, 6, 3, - 404, 6, 3, 421, 6, 3, 445, 8, 528, 3, - 6, 4, 4, 4, 4, 166, 168, 166, 168, 166, - 4, 166, 166, 4, 166, 166, 168, 236, 235, 233, - 314, 310, 349, 345, 373, 369, 200, 211, 212, 213, - 214, 247, 306, 318, 320, 322, 324, 326, 330, 337, - 338, 365, 395, 397, 441, 335, 271, 277, 4, 265, - 81, 82, 200, 247, 365, 395, 397, 451, 452, 453, - 454, 455, 457, 449, 290, 286, 166, 166, 166, 166, - 166, 166, 299, 4, 4, 166, 166, 166, 461, 4, - 4, 474, 6, 3, 391, 387, 407, 403, 424, 420, - 4, 141, 143, 144, 200, 247, 395, 397, 529, 530, - 531, 532, 534, 527, 18, 19, 20, 21, 239, 165, - 165, 165, 165, 165, 8, 8, 8, 8, 3, 8, - 165, 456, 4, 8, 3, 8, 104, 105, 106, 464, - 165, 165, 165, 165, 8, 8, 8, 165, 535, 4, - 533, 3, 8, 338, 4, 168, 453, 4, 166, 4, - 530, 165, 5, 165, 7, 536, 537, 538, 3, 6, - 142, 145, 146, 147, 539, 540, 541, 543, 544, 545, - 537, 542, 4, 4, 4, 3, 8, 4, 168, 166, - 166, 540, 165 + 4, 4, 166, 4, 4, 210, 4, 168, 221, 4, + 4, 4, 4, 4, 166, 168, 4, 4, 4, 4, + 315, 4, 392, 4, 166, 4, 166, 166, 408, 4, + 4, 4, 4, 4, 4, 4, 426, 4, 4, 166, + 4, 4, 4, 168, 351, 4, 168, 168, 375, 4, + 4, 291, 168, 4, 4, 166, 4, 166, 166, 4, + 4, 168, 168, 168, 4, 4, 4, 4, 484, 4, + 523, 4, 7, 7, 185, 185, 185, 7, 7, 7, + 5, 5, 5, 5, 187, 189, 165, 5, 5, 5, + 5, 7, 5, 5, 5, 7, 7, 7, 7, 5, + 196, 5, 5, 165, 165, 165, 70, 71, 72, 328, + 196, 165, 7, 165, 165, 165, 196, 196, 196, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 185, 165, 165, 165, 130, 131, 497, 132, 133, 134, + 135, 136, 168, 505, 165, 165, 165, 5, 185, 209, + 522, 220, 17, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 200, 235, + 236, 237, 240, 242, 244, 246, 247, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 259, 260, 235, 7, + 231, 232, 233, 7, 308, 309, 310, 7, 343, 344, + 345, 7, 367, 368, 369, 7, 333, 334, 335, 87, + 165, 270, 271, 272, 273, 194, 88, 90, 272, 276, + 277, 278, 279, 78, 264, 265, 266, 7, 448, 449, + 7, 418, 419, 420, 7, 284, 285, 286, 97, 98, + 99, 100, 101, 102, 298, 299, 300, 301, 302, 303, + 304, 305, 17, 107, 108, 109, 110, 200, 249, 395, + 397, 460, 461, 462, 465, 466, 468, 469, 113, 114, + 200, 395, 397, 473, 474, 475, 477, 483, 197, 7, + 385, 386, 387, 7, 401, 402, 403, 92, 427, 443, + 444, 7, 526, 527, 8, 8, 8, 238, 241, 243, + 245, 4, 4, 4, 4, 4, 258, 4, 4, 261, + 4, 4, 4, 3, 8, 8, 234, 6, 3, 311, + 6, 3, 346, 6, 3, 370, 6, 3, 336, 6, + 3, 3, 6, 6, 3, 6, 267, 3, 8, 450, + 3, 6, 421, 6, 3, 287, 6, 3, 4, 4, + 4, 4, 4, 4, 3, 8, 463, 467, 4, 4, + 4, 3, 8, 476, 478, 3, 8, 8, 165, 198, + 199, 388, 6, 3, 404, 6, 3, 445, 8, 528, + 3, 6, 4, 4, 4, 4, 166, 168, 166, 168, + 166, 4, 166, 166, 4, 166, 166, 168, 236, 235, + 233, 314, 310, 349, 345, 373, 369, 200, 211, 212, + 213, 214, 247, 306, 318, 320, 322, 324, 326, 330, + 337, 338, 365, 395, 397, 441, 335, 271, 277, 4, + 265, 81, 82, 200, 247, 365, 395, 397, 451, 452, + 453, 454, 455, 457, 449, 424, 420, 290, 286, 166, + 166, 166, 166, 166, 166, 299, 4, 4, 166, 166, + 166, 461, 4, 4, 474, 6, 3, 391, 387, 407, + 403, 4, 141, 143, 144, 200, 247, 395, 397, 529, + 530, 531, 532, 534, 527, 18, 19, 20, 21, 239, + 165, 165, 165, 165, 165, 8, 8, 8, 8, 3, + 8, 165, 456, 4, 8, 3, 8, 8, 104, 105, + 106, 464, 165, 165, 165, 165, 8, 8, 165, 535, + 4, 533, 3, 8, 338, 4, 168, 453, 4, 166, + 4, 530, 165, 5, 165, 7, 536, 537, 538, 3, + 6, 142, 145, 146, 147, 539, 540, 541, 543, 544, + 545, 537, 542, 4, 4, 4, 3, 8, 4, 168, + 166, 166, 540, 165 }; const unsigned short int @@ -4471,61 +4469,61 @@ namespace isc { namespace dhcp { 208, 207, 209, 209, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 211, 212, 213, 214, 215, 217, 216, 219, 218, - 220, 220, 221, 221, 221, 221, 221, 223, 222, 224, - 226, 225, 228, 227, 230, 229, 231, 231, 232, 232, - 234, 233, 235, 235, 236, 236, 236, 236, 236, 236, + 210, 210, 211, 212, 213, 214, 215, 217, 216, 219, + 218, 220, 220, 221, 221, 221, 221, 221, 223, 222, + 224, 226, 225, 228, 227, 230, 229, 231, 231, 232, + 232, 234, 233, 235, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - 236, 236, 238, 237, 239, 239, 239, 239, 241, 240, - 243, 242, 245, 244, 246, 248, 247, 249, 250, 251, - 252, 253, 254, 255, 256, 258, 257, 259, 261, 260, - 263, 262, 264, 264, 265, 267, 266, 269, 268, 270, - 270, 271, 271, 272, 273, 275, 274, 276, 276, 277, - 277, 277, 278, 279, 281, 280, 283, 282, 284, 284, - 285, 285, 287, 286, 289, 288, 290, 290, 290, 291, - 291, 293, 292, 295, 294, 297, 296, 298, 298, 299, - 299, 299, 299, 299, 299, 300, 301, 302, 303, 304, - 305, 307, 306, 308, 308, 309, 309, 311, 310, 313, - 312, 314, 314, 315, 315, 315, 315, 315, 315, 315, + 236, 236, 236, 238, 237, 239, 239, 239, 239, 241, + 240, 243, 242, 245, 244, 246, 248, 247, 249, 250, + 251, 252, 253, 254, 255, 256, 258, 257, 259, 261, + 260, 263, 262, 264, 264, 265, 267, 266, 269, 268, + 270, 270, 271, 271, 272, 273, 275, 274, 276, 276, + 277, 277, 277, 278, 279, 281, 280, 283, 282, 284, + 284, 285, 285, 287, 286, 289, 288, 290, 290, 290, + 291, 291, 293, 292, 295, 294, 297, 296, 298, 298, + 299, 299, 299, 299, 299, 299, 300, 301, 302, 303, + 304, 305, 307, 306, 308, 308, 309, 309, 311, 310, + 313, 312, 314, 314, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, - 315, 315, 315, 317, 316, 319, 318, 321, 320, 323, - 322, 325, 324, 327, 326, 328, 328, 328, 329, 330, - 332, 331, 333, 333, 334, 334, 336, 335, 337, 337, - 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, - 338, 338, 338, 338, 338, 338, 338, 340, 339, 342, - 341, 343, 343, 344, 344, 346, 345, 348, 347, 349, - 349, 350, 350, 351, 351, 351, 351, 351, 351, 351, - 351, 351, 351, 352, 353, 354, 356, 355, 358, 357, - 360, 359, 361, 363, 362, 364, 366, 365, 367, 367, - 368, 368, 370, 369, 372, 371, 373, 373, 374, 374, - 375, 375, 375, 375, 375, 375, 375, 375, 375, 376, - 378, 377, 379, 380, 381, 382, 384, 383, 385, 385, - 386, 386, 388, 387, 390, 389, 391, 391, 392, 392, - 392, 392, 392, 392, 392, 394, 393, 396, 395, 398, - 397, 400, 399, 401, 401, 402, 402, 404, 403, 406, - 405, 407, 407, 408, 408, 408, 408, 408, 408, 408, - 408, 408, 408, 408, 410, 409, 411, 413, 412, 414, - 415, 417, 416, 418, 418, 419, 419, 421, 420, 423, - 422, 424, 424, 425, 425, 426, 426, 426, 426, 426, - 426, 426, 426, 426, 426, 426, 428, 427, 430, 429, - 432, 431, 434, 433, 436, 435, 438, 437, 440, 439, - 442, 441, 443, 443, 445, 444, 447, 446, 448, 448, - 450, 449, 451, 451, 452, 452, 453, 453, 453, 453, - 453, 453, 453, 454, 456, 455, 457, 459, 458, 460, - 460, 461, 461, 461, 461, 461, 461, 461, 461, 461, - 463, 462, 464, 464, 464, 465, 467, 466, 468, 469, - 470, 472, 471, 473, 473, 474, 474, 474, 474, 474, - 476, 475, 478, 477, 480, 479, 482, 481, 483, 483, + 315, 315, 315, 315, 317, 316, 319, 318, 321, 320, + 323, 322, 325, 324, 327, 326, 328, 328, 328, 329, + 330, 332, 331, 333, 333, 334, 334, 336, 335, 337, + 337, 338, 338, 338, 338, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 340, 339, + 342, 341, 343, 343, 344, 344, 346, 345, 348, 347, + 349, 349, 350, 350, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 352, 353, 354, 356, 355, 358, + 357, 360, 359, 361, 363, 362, 364, 366, 365, 367, + 367, 368, 368, 370, 369, 372, 371, 373, 373, 374, + 374, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 376, 378, 377, 379, 380, 381, 382, 384, 383, 385, + 385, 386, 386, 388, 387, 390, 389, 391, 391, 392, + 392, 392, 392, 392, 392, 392, 394, 393, 396, 395, + 398, 397, 400, 399, 401, 401, 402, 402, 404, 403, + 406, 405, 407, 407, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 410, 409, 411, 413, 412, + 414, 415, 417, 416, 418, 418, 419, 419, 421, 420, + 423, 422, 424, 424, 425, 425, 426, 426, 426, 426, + 426, 426, 426, 426, 426, 426, 426, 428, 427, 430, + 429, 432, 431, 434, 433, 436, 435, 438, 437, 440, + 439, 442, 441, 443, 443, 445, 444, 447, 446, 448, + 448, 450, 449, 451, 451, 452, 452, 453, 453, 453, + 453, 453, 453, 453, 454, 456, 455, 457, 459, 458, + 460, 460, 461, 461, 461, 461, 461, 461, 461, 461, + 461, 463, 462, 464, 464, 464, 465, 467, 466, 468, + 469, 470, 472, 471, 473, 473, 474, 474, 474, 474, + 474, 476, 475, 478, 477, 480, 479, 482, 481, 483, + 483, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, - 484, 484, 484, 484, 484, 484, 484, 484, 484, 485, - 487, 486, 489, 488, 490, 492, 491, 493, 494, 496, - 495, 497, 497, 499, 498, 500, 501, 502, 504, 503, - 505, 505, 505, 505, 505, 507, 506, 509, 508, 511, - 510, 513, 512, 515, 514, 517, 516, 519, 518, 521, - 520, 522, 522, 523, 525, 524, 526, 526, 528, 527, - 529, 529, 530, 530, 530, 530, 530, 530, 530, 531, - 533, 532, 535, 534, 536, 536, 538, 537, 539, 539, - 540, 540, 540, 540, 542, 541, 543, 544, 545 + 485, 487, 486, 489, 488, 490, 492, 491, 493, 494, + 496, 495, 497, 497, 499, 498, 500, 501, 502, 504, + 503, 505, 505, 505, 505, 505, 507, 506, 509, 508, + 511, 510, 513, 512, 515, 514, 517, 516, 519, 518, + 521, 520, 522, 522, 523, 525, 524, 526, 526, 528, + 527, 529, 529, 530, 530, 530, 530, 530, 530, 530, + 531, 533, 532, 535, 534, 536, 536, 538, 537, 539, + 539, 540, 540, 540, 540, 542, 541, 543, 544, 545 }; const unsigned char @@ -4541,61 +4539,61 @@ namespace isc { namespace dhcp { 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 3, 3, 3, 3, 0, 6, 0, 4, - 1, 3, 1, 1, 1, 1, 1, 0, 4, 3, - 0, 6, 0, 6, 0, 6, 0, 1, 1, 3, - 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 4, 1, 1, 1, 1, 0, 4, - 0, 4, 0, 4, 3, 0, 4, 3, 3, 3, - 3, 3, 3, 3, 3, 0, 4, 3, 0, 4, - 0, 6, 1, 3, 1, 0, 4, 0, 6, 1, - 3, 1, 1, 1, 1, 0, 6, 1, 3, 1, - 1, 1, 1, 1, 0, 6, 0, 6, 0, 1, - 1, 3, 0, 4, 0, 4, 1, 3, 1, 1, - 1, 0, 4, 0, 4, 0, 6, 1, 3, 1, - 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, - 3, 0, 6, 0, 1, 1, 3, 0, 4, 0, - 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 3, 3, 3, 3, 0, 6, 0, + 4, 1, 3, 1, 1, 1, 1, 1, 0, 4, + 3, 0, 6, 0, 6, 0, 6, 0, 1, 1, + 3, 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 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, 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, 0, 4, 1, 1, 1, 1, 0, + 4, 0, 4, 0, 4, 3, 0, 4, 3, 3, + 3, 3, 3, 3, 3, 3, 0, 4, 3, 0, + 4, 0, 6, 1, 3, 1, 0, 4, 0, 6, + 1, 3, 1, 1, 1, 1, 0, 6, 1, 3, + 1, 1, 1, 1, 1, 0, 6, 0, 6, 0, + 1, 1, 3, 0, 4, 0, 4, 1, 3, 1, + 1, 1, 0, 4, 0, 4, 0, 6, 1, 3, + 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 3, 3, 0, 6, 0, 1, 1, 3, 0, 4, + 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 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, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 4, 3, 0, 4, 3, - 3, 0, 6, 0, 1, 1, 3, 0, 4, 0, - 4, 0, 1, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 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, 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, 4, 0, 4, 0, 4, 0, 4, - 0, 6, 1, 1, 0, 4, 0, 6, 1, 3, + 0, 4, 0, 6, 0, 1, 1, 3, 0, 4, + 0, 4, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 4, 3, 0, 4, + 3, 3, 0, 6, 0, 1, 1, 3, 0, 4, 0, 4, 0, 1, 1, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 4, 3, 0, 6, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 4, 0, + 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, + 4, 0, 6, 1, 1, 0, 4, 0, 6, 1, + 3, 0, 4, 0, 1, 1, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 4, 3, 0, 6, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 4, 1, 1, 1, 3, 0, 4, 3, + 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, - 0, 4, 1, 1, 1, 3, 0, 4, 3, 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, 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 + 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 }; @@ -4759,61 +4757,61 @@ namespace isc { namespace dhcp { 416, 416, 425, 426, 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, 485, 496, 496, - 505, 506, 509, 510, 511, 512, 513, 516, 516, 526, - 532, 532, 544, 544, 556, 556, 566, 567, 570, 571, - 574, 574, 584, 585, 588, 589, 590, 591, 592, 593, + 457, 458, 461, 466, 471, 476, 481, 486, 486, 497, + 497, 506, 507, 510, 511, 512, 513, 514, 517, 517, + 527, 533, 533, 545, 545, 557, 557, 567, 568, 571, + 572, 575, 575, 585, 586, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, - 604, 605, 608, 608, 615, 616, 617, 618, 621, 621, - 629, 629, 637, 637, 645, 650, 650, 658, 663, 668, - 673, 678, 683, 688, 693, 698, 698, 706, 711, 711, - 719, 719, 729, 730, 732, 734, 734, 752, 752, 762, - 763, 766, 767, 770, 775, 780, 780, 790, 791, 794, - 795, 796, 799, 804, 811, 811, 821, 821, 831, 832, - 835, 836, 839, 839, 849, 849, 859, 860, 861, 864, - 865, 868, 868, 876, 876, 884, 884, 895, 896, 899, - 900, 901, 902, 903, 904, 907, 912, 917, 922, 927, - 932, 940, 940, 953, 954, 957, 958, 965, 965, 991, - 991, 1002, 1003, 1007, 1008, 1009, 1010, 1011, 1012, 1013, + 604, 605, 606, 609, 609, 616, 617, 618, 619, 622, + 622, 630, 630, 638, 638, 646, 651, 651, 659, 664, + 669, 674, 679, 684, 689, 694, 699, 699, 707, 712, + 712, 720, 720, 730, 731, 733, 735, 735, 753, 753, + 763, 764, 767, 768, 771, 776, 781, 781, 791, 792, + 795, 796, 797, 800, 805, 812, 812, 822, 822, 832, + 833, 836, 837, 840, 840, 850, 850, 860, 861, 862, + 865, 866, 869, 869, 877, 877, 885, 885, 896, 897, + 900, 901, 902, 903, 904, 905, 908, 913, 918, 923, + 928, 933, 941, 941, 954, 955, 958, 959, 966, 966, + 992, 992, 1003, 1004, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, - 1024, 1025, 1026, 1029, 1029, 1037, 1037, 1045, 1045, 1053, - 1053, 1061, 1061, 1071, 1071, 1078, 1079, 1080, 1083, 1088, - 1096, 1096, 1107, 1108, 1112, 1113, 1116, 1116, 1124, 1125, - 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, - 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1151, 1151, 1164, - 1164, 1173, 1174, 1177, 1178, 1183, 1183, 1198, 1198, 1212, - 1213, 1216, 1217, 1220, 1221, 1222, 1223, 1224, 1225, 1226, - 1227, 1228, 1229, 1232, 1234, 1239, 1241, 1241, 1249, 1249, - 1257, 1257, 1265, 1267, 1267, 1275, 1284, 1284, 1296, 1297, - 1302, 1303, 1308, 1308, 1320, 1320, 1332, 1333, 1338, 1339, - 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1355, - 1357, 1357, 1365, 1367, 1369, 1374, 1382, 1382, 1394, 1395, - 1398, 1399, 1402, 1402, 1412, 1412, 1421, 1422, 1425, 1426, - 1427, 1428, 1429, 1430, 1431, 1434, 1434, 1442, 1442, 1467, - 1467, 1497, 1497, 1509, 1510, 1513, 1514, 1517, 1517, 1529, - 1529, 1541, 1542, 1545, 1546, 1547, 1548, 1549, 1550, 1551, - 1552, 1553, 1554, 1555, 1558, 1558, 1566, 1571, 1571, 1579, - 1584, 1592, 1592, 1602, 1603, 1606, 1607, 1610, 1610, 1619, - 1619, 1628, 1629, 1632, 1633, 1637, 1638, 1639, 1640, 1641, - 1642, 1643, 1644, 1645, 1646, 1647, 1650, 1650, 1660, 1660, - 1670, 1670, 1678, 1678, 1686, 1686, 1694, 1694, 1702, 1702, - 1715, 1715, 1725, 1726, 1729, 1729, 1740, 1740, 1750, 1751, - 1754, 1754, 1764, 1765, 1768, 1769, 1772, 1773, 1774, 1775, - 1776, 1777, 1778, 1781, 1783, 1783, 1791, 1799, 1799, 1811, - 1812, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, - 1826, 1826, 1833, 1834, 1835, 1838, 1843, 1843, 1851, 1856, - 1863, 1870, 1870, 1880, 1881, 1884, 1885, 1886, 1887, 1888, - 1891, 1891, 1899, 1899, 1909, 1909, 1921, 1921, 1931, 1932, - 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, - 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1956, - 1961, 1961, 1969, 1969, 1977, 1982, 1982, 1990, 1995, 2000, - 2000, 2008, 2009, 2012, 2012, 2020, 2025, 2030, 2035, 2035, - 2043, 2046, 2049, 2052, 2055, 2061, 2061, 2069, 2069, 2077, - 2077, 2087, 2087, 2094, 2094, 2101, 2101, 2114, 2114, 2124, - 2124, 2135, 2136, 2140, 2144, 2144, 2156, 2157, 2161, 2161, - 2169, 2170, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2182, - 2187, 2187, 2195, 2195, 2205, 2206, 2209, 2209, 2217, 2218, - 2221, 2222, 2223, 2224, 2227, 2227, 2235, 2240, 2245 + 1024, 1025, 1026, 1027, 1030, 1030, 1038, 1038, 1046, 1046, + 1054, 1054, 1062, 1062, 1072, 1072, 1079, 1080, 1081, 1084, + 1089, 1097, 1097, 1108, 1109, 1113, 1114, 1117, 1117, 1125, + 1126, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, + 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1152, 1152, + 1165, 1165, 1174, 1175, 1178, 1179, 1184, 1184, 1199, 1199, + 1213, 1214, 1217, 1218, 1221, 1222, 1223, 1224, 1225, 1226, + 1227, 1228, 1229, 1230, 1233, 1235, 1240, 1242, 1242, 1250, + 1250, 1258, 1258, 1266, 1268, 1268, 1276, 1285, 1285, 1297, + 1298, 1303, 1304, 1309, 1309, 1321, 1321, 1333, 1334, 1339, + 1340, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, + 1356, 1358, 1358, 1366, 1368, 1370, 1375, 1383, 1383, 1395, + 1396, 1399, 1400, 1403, 1403, 1413, 1413, 1422, 1423, 1426, + 1427, 1428, 1429, 1430, 1431, 1432, 1435, 1435, 1443, 1443, + 1468, 1468, 1498, 1498, 1510, 1511, 1514, 1515, 1518, 1518, + 1530, 1530, 1542, 1543, 1546, 1547, 1548, 1549, 1550, 1551, + 1552, 1553, 1554, 1555, 1556, 1559, 1559, 1567, 1572, 1572, + 1580, 1585, 1593, 1593, 1603, 1604, 1607, 1608, 1611, 1611, + 1620, 1620, 1629, 1630, 1633, 1634, 1638, 1639, 1640, 1641, + 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1651, 1651, 1661, + 1661, 1671, 1671, 1679, 1679, 1687, 1687, 1695, 1695, 1703, + 1703, 1716, 1716, 1726, 1727, 1730, 1730, 1741, 1741, 1751, + 1752, 1755, 1755, 1765, 1766, 1769, 1770, 1773, 1774, 1775, + 1776, 1777, 1778, 1779, 1782, 1784, 1784, 1792, 1800, 1800, + 1812, 1813, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, + 1824, 1827, 1827, 1834, 1835, 1836, 1839, 1844, 1844, 1852, + 1857, 1864, 1871, 1871, 1881, 1882, 1885, 1886, 1887, 1888, + 1889, 1892, 1892, 1900, 1900, 1910, 1910, 1922, 1922, 1932, + 1933, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, + 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, + 1957, 1962, 1962, 1970, 1970, 1978, 1983, 1983, 1991, 1996, + 2001, 2001, 2009, 2010, 2013, 2013, 2021, 2026, 2031, 2036, + 2036, 2044, 2047, 2050, 2053, 2056, 2062, 2062, 2070, 2070, + 2078, 2078, 2088, 2088, 2095, 2095, 2102, 2102, 2115, 2115, + 2125, 2125, 2136, 2137, 2141, 2145, 2145, 2157, 2158, 2162, + 2162, 2170, 2171, 2174, 2175, 2176, 2177, 2178, 2179, 2180, + 2183, 2188, 2188, 2196, 2196, 2206, 2207, 2210, 2210, 2218, + 2219, 2222, 2223, 2224, 2225, 2228, 2228, 2236, 2241, 2246 }; // Print the state stack on the debug stream. @@ -4848,8 +4846,8 @@ namespace isc { namespace dhcp { #line 14 "dhcp6_parser.yy" // lalr1.cc:1167 } } // isc::dhcp -#line 4852 "dhcp6_parser.cc" // lalr1.cc:1167 -#line 2250 "dhcp6_parser.yy" // lalr1.cc:1168 +#line 4850 "dhcp6_parser.cc" // lalr1.cc:1167 +#line 2251 "dhcp6_parser.yy" // lalr1.cc:1168 void diff --git a/src/bin/dhcp6/dhcp6_parser.h b/src/bin/dhcp6/dhcp6_parser.h index 9ba682d7cf..176dbe27fa 100644 --- a/src/bin/dhcp6/dhcp6_parser.h +++ b/src/bin/dhcp6/dhcp6_parser.h @@ -1500,7 +1500,7 @@ namespace isc { namespace dhcp { enum { yyeof_ = 0, - yylast_ = 991, ///< Last index in yytable_. + yylast_ = 987, ///< Last index in yytable_. yynnts_ = 377, ///< Number of nonterminal symbols. yyfinal_ = 30, ///< Termination state number. yyterror_ = 1, diff --git a/src/bin/dhcp6/dhcp6_parser.yy b/src/bin/dhcp6/dhcp6_parser.yy index 6572c1e045..39dff24b99 100644 --- a/src/bin/dhcp6/dhcp6_parser.yy +++ b/src/bin/dhcp6/dhcp6_parser.yy @@ -454,6 +454,7 @@ global_param: preferred_lifetime | user_context | comment | sanity_checks + | reservations | unknown_map_entry ; diff --git a/src/bin/dhcp6/json_config_parser.cc b/src/bin/dhcp6/json_config_parser.cc index c59395a4e0..b6dbab69b1 100644 --- a/src/bin/dhcp6/json_config_parser.cc +++ b/src/bin/dhcp6/json_config_parser.cc @@ -589,6 +589,17 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, continue; } + if (config_pair.first == "reservations") { + HostCollection hosts; + HostReservationsListParser<HostReservationParser6> parser; + parser.parse(SUBNET_ID_GLOBAL, config_pair.second, hosts); + for (auto h = hosts.begin(); h != hosts.end(); ++h) { + srv_config->getCfgHosts()->add(*h); + } + + continue; + } + // Timers are not used in the global scope. Their values are derived // to specific subnets (see SimpleParser6::deriveParameters). // decline-probation-period, dhcp4o6-port and user-context diff --git a/src/bin/dhcp6/tests/config_parser_unittest.cc b/src/bin/dhcp6/tests/config_parser_unittest.cc index 5abbff697d..76c3c5f4a2 100644 --- a/src/bin/dhcp6/tests/config_parser_unittest.cc +++ b/src/bin/dhcp6/tests/config_parser_unittest.cc @@ -6647,7 +6647,7 @@ TEST_F(Dhcp6ParserTest, comments) { EXPECT_EQ(Host::IDENT_HWADDR, host->getIdentifierType()); EXPECT_EQ("aa:bb:cc:dd:ee:ff", host->getHWAddress()->toText(false)); EXPECT_FALSE(host->getDuid()); - EXPECT_EQ(0, host->getIPv4SubnetID()); + EXPECT_EQ(SUBNET_ID_UNUSED, host->getIPv4SubnetID()); EXPECT_EQ(100, host->getIPv6SubnetID()); EXPECT_EQ("foo.example.com", host->getHostname()); @@ -6689,4 +6689,143 @@ TEST_F(Dhcp6ParserTest, comments) { EXPECT_EQ("\"No dynamic DNS\"", ctx_d2->get("comment")->str()); } +// This test verifies that the global host reservations can be specified. +TEST_F(Dhcp6ParserTest, globalReservations) { + ConstElementPtr x; + string config = "{ " + genIfaceConfig() + ",\n" + "\"rebind-timer\": 2000, \n" + "\"renew-timer\": 1000, \n" + "\"reservations\": [\n" + " {\n" + " \"duid\": \"01:02:03:04:05:06:07:08:09:0A\",\n" + " \"ip-addresses\": [ \"2001:db8:2::1234\" ],\n" + " \"hostname\": \"\",\n" + " \"option-data\": [\n" + " {\n" + " \"name\": \"dns-servers\",\n" + " \"data\": \"2001:db8:2::1111\"\n" + " },\n" + " {\n" + " \"name\": \"preference\",\n" + " \"data\": \"11\"\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"hw-address\": \"01:02:03:04:05:06\",\n" + " \"ip-addresses\": [ \"2001:db8:2::abcd\" ],\n" + " \"hostname\": \"\",\n" + " \"option-data\": [\n" + " {\n" + " \"name\": \"dns-servers\",\n" + " \"data\": \"2001:db8:2::abbc\"\n" + " },\n" + " {\n" + " \"name\": \"preference\",\n" + " \"data\": \"25\"\n" + " }\n" + " ]\n" + " }\n" + "],\n" + "\"subnet6\": [ \n" + " { \n" + " \"pools\": [ { \"pool\": \"2001:db8:1::/80\" } ],\n" + " \"subnet\": \"2001:db8:1::/64\", \n" + " \"id\": 123,\n" + " \"reservations\": [\n" + " ]\n" + " },\n" + " {\n" + " \"pools\": [ ],\n" + " \"subnet\": \"2001:db8:2::/64\", \n" + " \"id\": 234\n" + " },\n" + " {\n" + " \"pools\": [ ],\n" + " \"subnet\": \"2001:db8:3::/64\", \n" + " \"id\": 542\n" + " }\n" + "],\n" + "\"preferred-lifetime\": 3000,\n" + "\"valid-lifetime\": 4000 }\n"; + + ConstElementPtr json; + (json = parseDHCP6(config)); + ASSERT_NO_THROW(json = parseDHCP6(config)); + extractConfig(config); + + EXPECT_NO_THROW(x = configureDhcp6Server(srv_, json)); + checkResult(x, 0); + + // Make sure all subnets have been successfully configured. There is no + // need to sanity check the subnet properties because it should have + // been already tested by other tests. + const Subnet6Collection* subnets = + CfgMgr::instance().getStagingCfg()->getCfgSubnets6()->getAll(); + ASSERT_TRUE(subnets); + ASSERT_EQ(3, subnets->size()); + + // Hosts configuration must be available. + CfgHostsPtr hosts_cfg = CfgMgr::instance().getStagingCfg()->getCfgHosts(); + ASSERT_TRUE(hosts_cfg); + + // Let's create an object holding hardware address of the host having + // a reservation in the subnet having id of 234. For simplicity the + // address is a collection of numbers from 1 to 6. + std::vector<uint8_t> hwaddr; + for (unsigned int i = 1; i < 7; ++i) { + hwaddr.push_back(static_cast<uint8_t>(i)); + } + // Retrieve the reservation and sanity check the address reserved. + ConstHostPtr host = hosts_cfg->get6(SUBNET_ID_GLOBAL, Host::IDENT_HWADDR, + &hwaddr[0], hwaddr.size()); + ASSERT_TRUE(host); + IPv6ResrvRange resrv = host->getIPv6Reservations(IPv6Resrv::TYPE_NA); + ASSERT_EQ(1, std::distance(resrv.first, resrv.second)); + EXPECT_TRUE(reservationExists(IPv6Resrv(IPv6Resrv::TYPE_NA, + IOAddress("2001:db8:2::abcd")), + resrv)); + // This reservation should be solely assigned to the subnet 234, + // and not to other two. + EXPECT_FALSE(hosts_cfg->get6(123, Host::IDENT_HWADDR, + &hwaddr[0], hwaddr.size())); + EXPECT_FALSE(hosts_cfg->get6(542, Host::IDENT_HWADDR, + &hwaddr[0], hwaddr.size())); + // Check that options are assigned correctly. + Option6AddrLstPtr opt_dns = + retrieveOption<Option6AddrLstPtr>(*host, D6O_NAME_SERVERS); + ASSERT_TRUE(opt_dns); + Option6AddrLst::AddressContainer dns_addrs = opt_dns->getAddresses(); + ASSERT_EQ(1, dns_addrs.size()); + EXPECT_EQ("2001:db8:2::abbc", dns_addrs[0].toText()); + OptionUint8Ptr opt_prf = + retrieveOption<OptionUint8Ptr>(*host, D6O_PREFERENCE); + ASSERT_TRUE(opt_prf); + EXPECT_EQ(25, static_cast<int>(opt_prf->getValue())); + + // Do the same test for the DUID based reservation. + std::vector<uint8_t> duid; + for (unsigned int i = 1; i < 0xb; ++i) { + duid.push_back(static_cast<uint8_t>(i)); + } + host = hosts_cfg->get6(SUBNET_ID_GLOBAL, Host::IDENT_DUID, &duid[0], duid.size()); + ASSERT_TRUE(host); + resrv = host->getIPv6Reservations(IPv6Resrv::TYPE_NA); + ASSERT_EQ(1, std::distance(resrv.first, resrv.second)); + EXPECT_TRUE(reservationExists(IPv6Resrv(IPv6Resrv::TYPE_NA, + IOAddress("2001:db8:2::1234")), + resrv)); + EXPECT_FALSE(hosts_cfg->get6(123, Host::IDENT_DUID, &duid[0], duid.size())); + EXPECT_FALSE(hosts_cfg->get6(542, Host::IDENT_DUID, &duid[0], duid.size())); + // Check that options are assigned correctly. + opt_dns = retrieveOption<Option6AddrLstPtr>(*host, D6O_NAME_SERVERS); + ASSERT_TRUE(opt_dns); + dns_addrs = opt_dns->getAddresses(); + ASSERT_EQ(1, dns_addrs.size()); + EXPECT_EQ("2001:db8:2::1111", dns_addrs[0].toText()); + opt_prf = retrieveOption<OptionUint8Ptr>(*host, D6O_PREFERENCE); + ASSERT_TRUE(opt_prf); + EXPECT_EQ(11, static_cast<int>(opt_prf->getValue())); +} + }; diff --git a/src/lib/dhcpsrv/cfg_hosts.cc b/src/lib/dhcpsrv/cfg_hosts.cc index d673cdc3b1..9725920d9d 100644 --- a/src/lib/dhcpsrv/cfg_hosts.cc +++ b/src/lib/dhcpsrv/cfg_hosts.cc @@ -446,8 +446,9 @@ CfgHosts::add(const HostPtr& host) { " is added to the configuration"); } - // At least one subnet ID must be non-zero - if (host->getIPv4SubnetID() == 0 && host->getIPv6SubnetID() == 0) { + // At least one subnet ID must be used + if (host->getIPv4SubnetID() == SUBNET_ID_UNUSED && + host->getIPv6SubnetID() == SUBNET_ID_UNUSED) { isc_throw(BadValue, "must not use both IPv4 and IPv6 subnet ids of" " 0 when adding new host reservation"); } @@ -489,7 +490,7 @@ CfgHosts::add4(const HostPtr& host) { } // Check for duplicates for the specified IPv4 subnet. - if (host->getIPv4SubnetID() > 0) { + if (host->getIPv4SubnetID() != SUBNET_ID_UNUSED) { if (hwaddr && !hwaddr->hwaddr_.empty() && get4(host->getIPv4SubnetID(), Host::IDENT_HWADDR, &hwaddr->hwaddr_[0], hwaddr->hwaddr_.size())) { @@ -507,7 +508,7 @@ CfgHosts::add4(const HostPtr& host) { << "' as this host has already been added"); } // Check for duplicates for the specified IPv6 subnet. - } else if (host->getIPv6SubnetID()) { + } else if (host->getIPv6SubnetID() != SUBNET_ID_UNUSED) { if (duid && !duid->getDuid().empty() && get6(host->getIPv6SubnetID(), Host::IDENT_DUID, &duid->getDuid()[0], duid->getDuid().size())) { @@ -528,7 +529,7 @@ CfgHosts::add4(const HostPtr& host) { // Check if the address is already reserved for the specified IPv4 subnet. if (!host->getIPv4Reservation().isV4Zero() && - (host->getIPv4SubnetID() > 0) && + (host->getIPv4SubnetID() != SUBNET_ID_UNUSED) && get4(host->getIPv4SubnetID(), host->getIPv4Reservation())) { isc_throw(ReservedAddress, "failed to add new host using the HW" " address '" << (hwaddr ? hwaddr->toText(false) : "(null)") @@ -540,7 +541,7 @@ CfgHosts::add4(const HostPtr& host) { // Check if the (identifier type, identifier) tuple is already used. const std::vector<uint8_t>& id = host->getIdentifier(); - if ((host->getIPv4SubnetID() > 0) && !id.empty()) { + if ((host->getIPv4SubnetID() != SUBNET_ID_UNUSED) && !id.empty()) { if (get4(host->getIPv4SubnetID(), host->getIdentifierType(), &id[0], id.size())) { isc_throw(DuplicateHost, "failed to add duplicate IPv4 host using identifier: " @@ -556,7 +557,7 @@ CfgHosts::add4(const HostPtr& host) { void CfgHosts::add6(const HostPtr& host) { - if (host->getIPv6SubnetID() == 0) { + if (host->getIPv6SubnetID() == SUBNET_ID_UNUSED) { // This is IPv4-only host. No need to add it to v6 tables. return; } diff --git a/src/lib/dhcpsrv/host.cc b/src/lib/dhcpsrv/host.cc index 0244f23aea..1899e1c6dc 100644 --- a/src/lib/dhcpsrv/host.cc +++ b/src/lib/dhcpsrv/host.cc @@ -595,13 +595,13 @@ Host::toText() const { // Add HW address or DUID. s << getIdentifierAsText(); - // Add IPv4 subnet id if exists (non-zero). - if (ipv4_subnet_id_) { + // Add IPv4 subnet id if exists. + if (ipv4_subnet_id_ != SUBNET_ID_UNUSED) { s << " ipv4_subnet_id=" << ipv4_subnet_id_; } - // Add IPv6 subnet id if exists (non-zero). - if (ipv6_subnet_id_) { + // Add IPv6 subnet id if exists. + if (ipv6_subnet_id_ != SUBNET_ID_UNUSED) { s << " ipv6_subnet_id=" << ipv6_subnet_id_; } diff --git a/src/lib/dhcpsrv/host_mgr.cc b/src/lib/dhcpsrv/host_mgr.cc index 6792a73f8e..87770db6bc 100644 --- a/src/lib/dhcpsrv/host_mgr.cc +++ b/src/lib/dhcpsrv/host_mgr.cc @@ -181,7 +181,7 @@ HostMgr::get4(const SubnetID& subnet_id, if (host && host->getNegative()) { return (ConstHostPtr()); } else if (!host && negative_caching_) { - cacheNegative(subnet_id, SubnetID(0), + cacheNegative(subnet_id, SubnetID(SUBNET_ID_UNUSED), identifier_type, identifier_begin, identifier_len); } return (host); @@ -295,7 +295,7 @@ HostMgr::get6(const SubnetID& subnet_id, if (host && host->getNegative()) { return (ConstHostPtr()); } else if (!host && negative_caching_) { - cacheNegative(SubnetID(0), subnet_id, + cacheNegative(SubnetID(SUBNET_ID_UNUSED), subnet_id, identifier_type, identifier_begin, identifier_len); } return (host); diff --git a/src/lib/dhcpsrv/mysql_host_data_source.cc b/src/lib/dhcpsrv/mysql_host_data_source.cc index adb6b3f651..513f025b6f 100644 --- a/src/lib/dhcpsrv/mysql_host_data_source.cc +++ b/src/lib/dhcpsrv/mysql_host_data_source.cc @@ -129,7 +129,8 @@ public: bind_(columns_num_), columns_(columns_num_), error_(columns_num_, MLM_FALSE), host_id_(0), dhcp_identifier_length_(0), dhcp_identifier_type_(0), - dhcp4_subnet_id_(0), dhcp6_subnet_id_(0), ipv4_address_(0), + dhcp4_subnet_id_(SUBNET_ID_UNUSED), + dhcp6_subnet_id_(SUBNET_ID_UNUSED), ipv4_address_(0), hostname_length_(0), dhcp4_client_classes_length_(0), dhcp6_client_classes_length_(0), user_context_length_(0), @@ -312,7 +313,7 @@ public: // Can't take an address of intermediate object, so let's store it // in dhcp4_subnet_id_ dhcp4_subnet_id_ = host->getIPv4SubnetID(); - dhcp4_subnet_id_null_ = host->getIPv4SubnetID() == 0 ? MLM_TRUE : MLM_FALSE; + dhcp4_subnet_id_null_ = host->getIPv4SubnetID() == SUBNET_ID_UNUSED ? MLM_TRUE : MLM_FALSE; bind_[3].buffer_type = MYSQL_TYPE_LONG; bind_[3].buffer = reinterpret_cast<char*>(&dhcp4_subnet_id_); bind_[3].is_unsigned = MLM_TRUE; @@ -322,7 +323,7 @@ public: // Can't take an address of intermediate object, so let's store it // in dhcp6_subnet_id_ dhcp6_subnet_id_ = host->getIPv6SubnetID(); - dhcp6_subnet_id_null_ = host->getIPv6SubnetID() == 0 ? MLM_TRUE : MLM_FALSE; + dhcp6_subnet_id_null_ = host->getIPv6SubnetID() == SUBNET_ID_UNUSED ? MLM_TRUE : MLM_FALSE; bind_[4].buffer_type = MYSQL_TYPE_LONG; bind_[4].buffer = reinterpret_cast<char*>(&dhcp6_subnet_id_); bind_[4].is_unsigned = MLM_TRUE; @@ -571,14 +572,14 @@ public: // Set DHCPv4 subnet ID to the value returned. If NULL returned, // set to 0. - SubnetID ipv4_subnet_id(0); + SubnetID ipv4_subnet_id(SUBNET_ID_UNUSED); if (dhcp4_subnet_id_null_ == MLM_FALSE) { ipv4_subnet_id = static_cast<SubnetID>(dhcp4_subnet_id_); } // Set DHCPv6 subnet ID to the value returned. If NULL returned, // set to 0. - SubnetID ipv6_subnet_id(0); + SubnetID ipv6_subnet_id(SUBNET_ID_UNUSED); if (dhcp6_subnet_id_null_ == MLM_FALSE) { ipv6_subnet_id = static_cast<SubnetID>(dhcp6_subnet_id_); } @@ -1742,7 +1743,7 @@ public: : type_(0), value_len_(0), formatted_value_len_(0), space_(), space_len_(0), persistent_(false), user_context_(), user_context_len_(0), client_class_(), client_class_len_(0), - subnet_id_(0), host_id_(0), option_() { + subnet_id_(SUBNET_ID_UNUSED), host_id_(0), option_() { BOOST_STATIC_ASSERT(9 < OPTION_COLUMNS); } diff --git a/src/lib/dhcpsrv/parsers/host_reservation_parser.cc b/src/lib/dhcpsrv/parsers/host_reservation_parser.cc index 3ec3fd5cca..2bf08f4dc3 100644 --- a/src/lib/dhcpsrv/parsers/host_reservation_parser.cc +++ b/src/lib/dhcpsrv/parsers/host_reservation_parser.cc @@ -158,8 +158,8 @@ HostReservationParser::parseInternal(const SubnetID&, } // Create a host object from the basic parameters we already parsed. - host.reset(new Host(identifier, identifier_name, SubnetID(0), - SubnetID(0), IOAddress("0.0.0.0"), hostname)); + host.reset(new Host(identifier, identifier_name, SUBNET_ID_UNUSED, + SUBNET_ID_UNUSED, IOAddress("0.0.0.0"), hostname)); // Add user context if (user_context) { diff --git a/src/lib/dhcpsrv/pgsql_host_data_source.cc b/src/lib/dhcpsrv/pgsql_host_data_source.cc index 02e2048601..2acf36e068 100644 --- a/src/lib/dhcpsrv/pgsql_host_data_source.cc +++ b/src/lib/dhcpsrv/pgsql_host_data_source.cc @@ -66,11 +66,12 @@ const size_t DHCP_IDENTIFIER_MAX_LEN = 128; /// listed below: /// - zero or null IPv4 address indicates that there is no reservation for the /// IPv4 address for the host, -/// - zero or null subnet identifier (either IPv4 or IPv6) indicates that +/// - null subnet identifier (either IPv4 or IPv6) indicates that /// this subnet identifier must be ignored. Specifically, this is the case /// when host reservation is created for the DHCPv4 server, the IPv6 subnet id /// should be ignored. Conversely, when host reservation is created for the /// DHCPv6 server, the IPv4 subnet id should be ignored. +/// NOTE! Zero is a the "global" subnet id as Kea 1.5.0 /// /// To exclude those special case values, the Postgres backend uses partial /// indexes, i.e. the only values that are included in the index are those that @@ -208,10 +209,20 @@ public: bind_array->add(host->getIdentifierType()); // dhcp4_subnet_id : INT NULL - bind_array->add(host->getIPv4SubnetID()); + if (host->getIPv4SubnetID() == SUBNET_ID_UNUSED) { + bind_array->addNull(); + } + else { + bind_array->add(host->getIPv4SubnetID()); + } // dhcp6_subnet_id : INT NULL - bind_array->add(host->getIPv6SubnetID()); + if (host->getIPv6SubnetID() == SUBNET_ID_UNUSED) { + bind_array->addNull(); + } + else { + bind_array->add(host->getIPv6SubnetID()); + } // ipv4_address : BIGINT NULL bind_array->add((host->getIPv4Reservation())); @@ -326,14 +337,14 @@ public: static_cast<Host::IdentifierType>(type); // dhcp4_subnet_id : INT NULL - uint32_t subnet_id(0); + uint32_t subnet_id(SUBNET_ID_UNUSED); if (!isColumnNull(r, row, DHCP4_SUBNET_ID_COL)) { getColumnValue(r, row, DHCP4_SUBNET_ID_COL, subnet_id); } SubnetID dhcp4_subnet_id = static_cast<SubnetID>(subnet_id); // dhcp6_subnet_id : INT NULL - subnet_id = 0; + subnet_id = SUBNET_ID_UNUSED; if (!isColumnNull(r, row, DHCP6_SUBNET_ID_COL)) { getColumnValue(r, row, DHCP6_SUBNET_ID_COL, subnet_id); } diff --git a/src/lib/dhcpsrv/srv_config.cc b/src/lib/dhcpsrv/srv_config.cc index a75bc2f02a..db0bf7ec06 100644 --- a/src/lib/dhcpsrv/srv_config.cc +++ b/src/lib/dhcpsrv/srv_config.cc @@ -341,9 +341,18 @@ SrvConfig::toElement() const { } } } - // Insert reservations + + // Host reservations CfgHostsList resv_list; resv_list.internalize(cfg_hosts_->toElement()); + + // Insert global reservations + ConstElementPtr global_resvs = resv_list.get(SUBNET_ID_GLOBAL); + if (global_resvs->size() > 0) { + dhcp->set("reservations", global_resvs); + } + + // Insert subnet reservations for (std::vector<ElementPtr>::const_iterator subnet = sn_list.cbegin(); subnet != sn_list.cend(); ++subnet) { ConstElementPtr id = (*subnet)->get("id"); @@ -354,6 +363,7 @@ SrvConfig::toElement() const { ConstElementPtr resvs = resv_list.get(subnet_id); (*subnet)->set("reservations", resvs); } + // Set expired-leases-processing ConstElementPtr expired = cfg_expiration_->toElement(); dhcp->set("expired-leases-processing", expired); diff --git a/src/lib/dhcpsrv/subnet.h b/src/lib/dhcpsrv/subnet.h index 176e3dbb43..140a521bf6 100644 --- a/src/lib/dhcpsrv/subnet.h +++ b/src/lib/dhcpsrv/subnet.h @@ -315,6 +315,10 @@ protected: /// /// @return the next unique Subnet-ID static SubnetID generateNextID() { + if (static_id_ == SUBNET_ID_MAX) { + resetSubnetID(); + } + return (static_id_++); } diff --git a/src/lib/dhcpsrv/subnet_id.h b/src/lib/dhcpsrv/subnet_id.h index 318dcd9b0c..7d89a64c76 100644 --- a/src/lib/dhcpsrv/subnet_id.h +++ b/src/lib/dhcpsrv/subnet_id.h @@ -9,6 +9,7 @@ #include <exceptions/exceptions.h> #include <stdint.h> +#include <typeinfo> namespace isc { namespace dhcp { @@ -21,6 +22,10 @@ namespace dhcp { /// type. typedef uint32_t SubnetID; +static const SubnetID SUBNET_ID_GLOBAL = 0; +static const SubnetID SUBNET_ID_MAX = std::numeric_limits<uint32_t>::max()-1; +static const SubnetID SUBNET_ID_UNUSED = std::numeric_limits<uint32_t>::max(); + /// @brief Exception thrown upon attempt to add subnet with an ID that belongs /// to the subnet that already exists. class DuplicateSubnetID : public Exception { diff --git a/src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc b/src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc index 72e7d70896..6d8e2776a6 100644 --- a/src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc +++ b/src/lib/dhcpsrv/tests/alloc_engine4_unittest.cc @@ -740,7 +740,7 @@ TEST_F(SharedNetworkAlloc4Test, discoverSharedNetworkClassification) { // lease from subnet2. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet1_->getID(), - SubnetID(0), IOAddress("192.0.2.17"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.17"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); AllocEngine::findReservation(ctx); @@ -810,7 +810,7 @@ TEST_F(SharedNetworkAlloc4Test, discoverSharedNetworkReservations) { // Create reservation for the client. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet2_->getID(), - SubnetID(0), IOAddress("10.2.3.23"))); + SUBNET_ID_UNUSED, IOAddress("10.2.3.23"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -1066,7 +1066,7 @@ TEST_F(SharedNetworkAlloc4Test, requestSharedNetworkReservations) { // Create reservation for the client. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet2_->getID(), - SubnetID(0), IOAddress("10.2.3.23"))); + SUBNET_ID_UNUSED, IOAddress("10.2.3.23"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -1498,7 +1498,7 @@ TEST_F(AllocEngine4Test, reservedAddressNoHint) { // Create reservation for the client. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.123"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.123"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -1537,7 +1537,7 @@ TEST_F(AllocEngine4Test,reservedAddressNoHintFakeAllocation) { // Create reservation for the client. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.123"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.123"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -1578,7 +1578,7 @@ TEST_F(AllocEngine4Test,reservedAddressNoHintFakeAllocation) { TEST_F(AllocEngine4Test, reservedAddressHint) { HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.123"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.123"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -1627,7 +1627,7 @@ TEST_F(AllocEngine4Test, reservedAddressHintFakeAllocation) { // Create a reservation for the client. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.123"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.123"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -1666,7 +1666,7 @@ TEST_F(AllocEngine4Test, reservedAddressExistingLease) { // Create the reservation for the client. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.123"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.123"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -1717,7 +1717,7 @@ TEST_F(AllocEngine4Test, reservedAddressHijacked) { // Create host reservation for the client B. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.123"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.123"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -1775,7 +1775,7 @@ TEST_F(AllocEngine4Test, reservedAddressHijackedFakeAllocation) { // Create a reservation for the client B. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.123"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.123"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -1835,7 +1835,7 @@ TEST_F(AllocEngine4Test, reservedAddressExistingLeaseInvalidHint) { // Create a reservation for the client. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.123"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.123"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -1889,7 +1889,7 @@ TEST_F(AllocEngine4Test, reservedAddressExistingLeaseFakeAllocation) { // Create a reservation for the client. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.123"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.123"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -1954,7 +1954,7 @@ TEST_F(AllocEngine4Test, reservedAddressExistingLeaseNoHint) { // Create a reservation. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.123"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.123"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -2006,7 +2006,7 @@ TEST_F(AllocEngine4Test, reservedAddressExistingLeaseNoHintFakeAllocation) { // Create a reservation. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.123"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.123"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -2070,7 +2070,7 @@ TEST_F(AllocEngine4Test, reservedAddressConflictResolution) { // Create a reservation for client B. HostPtr host(new Host(&hwaddr2_->hwaddr_[0], hwaddr2_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.101"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.101"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -2162,7 +2162,7 @@ TEST_F(AllocEngine4Test, reservedAddressVsDynamicPool) { // Create a reservation for the client. HostPtr host(new Host(&hwaddr2_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.100"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.100"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -2194,7 +2194,7 @@ TEST_F(AllocEngine4Test, reservedAddressHintUsedByOtherClient) { // Create a reservation for the client. HostPtr host(new Host(&hwaddr2_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.100"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.100"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -2236,7 +2236,7 @@ TEST_F(AllocEngine4Test, reservedAddressShortPool) { // Reserve the address for a different client. HostPtr host(new Host(&hwaddr2_->hwaddr_[0], hwaddr2_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.100"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.100"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -2277,7 +2277,7 @@ TEST_F(AllocEngine4Test, reservedHostname) { // indicates that there is no reservation. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress::IPV4_ZERO_ADDRESS(), + SUBNET_ID_UNUSED, IOAddress::IPV4_ZERO_ADDRESS(), "foo.example.org")); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -2323,7 +2323,7 @@ TEST_F(AllocEngine4Test, findReservation) { // Create a reservation for the client. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.100"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.100"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -2347,7 +2347,7 @@ TEST_F(AllocEngine4Test, findReservation) { host.reset(new Host(&clientid_->getClientId()[0], clientid_->getClientId().size(), Host::IDENT_DUID, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.101"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.101"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -2366,7 +2366,7 @@ TEST_F(AllocEngine4Test, findReservation) { ctx.subnet_ = subnet_; host.reset(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID() + 1, - SubnetID(0), IOAddress("192.0.2.100"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.100"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); @@ -2444,7 +2444,7 @@ TEST_F(AllocEngine4Test, reservedAddressExistingLeaseStat) { // Create the reservation for the client. HostPtr host(new Host(&hwaddr_->hwaddr_[0], hwaddr_->hwaddr_.size(), Host::IDENT_HWADDR, subnet_->getID(), - SubnetID(0), IOAddress("192.0.2.123"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.123"))); CfgMgr::instance().getStagingCfg()->getCfgHosts()->add(host); CfgMgr::instance().commit(); diff --git a/src/lib/dhcpsrv/tests/alloc_engine_utils.cc b/src/lib/dhcpsrv/tests/alloc_engine_utils.cc index 30ac73677b..8fa12fa838 100644 --- a/src/lib/dhcpsrv/tests/alloc_engine_utils.cc +++ b/src/lib/dhcpsrv/tests/alloc_engine_utils.cc @@ -194,7 +194,7 @@ AllocEngine6Test::createHost6HWAddr(bool add_to_host_mgr, IPv6Resrv::Type type, HWAddrPtr& hwaddr, const asiolink::IOAddress& addr, uint8_t prefix_len) { HostPtr host(new Host(&hwaddr->hwaddr_[0], hwaddr->hwaddr_.size(), - Host::IDENT_HWADDR, SubnetID(0), subnet_->getID(), + Host::IDENT_HWADDR, SUBNET_ID_UNUSED, subnet_->getID(), asiolink::IOAddress("0.0.0.0"))); IPv6Resrv resv(type, addr, prefix_len); host->addReservation(resv); diff --git a/src/lib/dhcpsrv/tests/cfg_hosts_unittest.cc b/src/lib/dhcpsrv/tests/cfg_hosts_unittest.cc index 2496048e9c..9503c7a147 100644 --- a/src/lib/dhcpsrv/tests/cfg_hosts_unittest.cc +++ b/src/lib/dhcpsrv/tests/cfg_hosts_unittest.cc @@ -215,12 +215,12 @@ TEST_F(CfgHostsTest, getAll4ByAddress) { // Add host identified by the HW address. cfg.add(HostPtr(new Host(hwaddrs_[i]->toText(false), "hw-address", - SubnetID(1 + i), SubnetID(0), + SubnetID(1 + i), SUBNET_ID_UNUSED, IOAddress("192.0.2.5")))); // Add host identified by the DUID. cfg.add(HostPtr(new Host(duids_[i]->toText(), "duid", - SubnetID(1 + i), SubnetID(0), + SubnetID(1 + i), SUBNET_ID_UNUSED, IOAddress("192.0.2.10")))); } @@ -520,7 +520,7 @@ TEST_F(CfgHostsTest, get6ByAddr) { // Add host identified by DUID. HostPtr host = HostPtr(new Host(duids_[i]->toText(), "duid", - SubnetID(0), SubnetID(1 + i % 2), + SUBNET_ID_UNUSED, SubnetID(1 + i % 2), IOAddress("0.0.0.0"))); host->addReservation(IPv6Resrv(IPv6Resrv::TYPE_NA, increase(IOAddress("2001:db8:2::1"), @@ -553,7 +553,7 @@ TEST_F(CfgHostsTest, get6MultipleAddrs) { // Add host identified by DUID. HostPtr host = HostPtr(new Host(duids_[i]->toText(), "duid", - SubnetID(0), SubnetID(1 + i % 2), + SUBNET_ID_UNUSED, SubnetID(1 + i % 2), IOAddress("0.0.0.0"))); // Generate 5 unique addresses for this host. @@ -603,7 +603,7 @@ TEST_F(CfgHostsTest, add4AlreadyReserved) { // First host has a reservation for address 192.0.2.1 HostPtr host1 = HostPtr(new Host(hwaddrs_[0]->toText(false), "hw-address", - SubnetID(1), SubnetID(0), + SubnetID(1), SubnetID(SUBNET_ID_UNUSED), IOAddress("192.0.2.1"))); // Adding this should work. EXPECT_NO_THROW(cfg.add(host1)); @@ -611,7 +611,7 @@ TEST_F(CfgHostsTest, add4AlreadyReserved) { // The second host has a reservation for the same address. HostPtr host2 = HostPtr(new Host(hwaddrs_[1]->toText(false), "hw-address", - SubnetID(1), SubnetID(0), + SubnetID(1), SUBNET_ID_UNUSED, IOAddress("192.0.2.1"))); // This second host has a reservation for an address that is already @@ -626,7 +626,7 @@ TEST_F(CfgHostsTest, add6Invalid2Hosts) { // First host has a reservation for address 2001:db8::1 HostPtr host1 = HostPtr(new Host(duids_[0]->toText(), "duid", - SubnetID(0), SubnetID(1), + SUBNET_ID_UNUSED, SubnetID(1), IOAddress("0.0.0.0"))); host1->addReservation(IPv6Resrv(IPv6Resrv::TYPE_NA, IOAddress("2001:db8::1"))); @@ -635,7 +635,7 @@ TEST_F(CfgHostsTest, add6Invalid2Hosts) { // The second host has a reservation for the same address. HostPtr host2 = HostPtr(new Host(duids_[1]->toText(), "duid", - SubnetID(0), SubnetID(1), + SUBNET_ID_UNUSED, SubnetID(1), IOAddress("0.0.0.0"))); host2->addReservation(IPv6Resrv(IPv6Resrv::TYPE_NA, IOAddress("2001:db8::1"))); @@ -645,13 +645,24 @@ TEST_F(CfgHostsTest, add6Invalid2Hosts) { EXPECT_THROW(cfg.add(host2), isc::dhcp::DuplicateHost); } +// Check that no error is reported when adding a host with subnet +// ids equal to global. +TEST_F(CfgHostsTest, globalSubnetIDs) { + CfgHosts cfg; + ASSERT_NO_THROW(cfg.add(HostPtr(new Host(hwaddrs_[0]->toText(false), + "hw-address", + SUBNET_ID_GLOBAL, SUBNET_ID_GLOBAL, + IOAddress("10.0.0.1"))))); +} + + // Check that error is reported when trying to add a host with subnet -// ids equal to zero. -TEST_F(CfgHostsTest, zeroSubnetIDs) { +// ids equal to unused. +TEST_F(CfgHostsTest, unusedSubnetIDs) { CfgHosts cfg; ASSERT_THROW(cfg.add(HostPtr(new Host(hwaddrs_[0]->toText(false), "hw-address", - SubnetID(0), SubnetID(0), + SUBNET_ID_UNUSED, SUBNET_ID_UNUSED, IOAddress("10.0.0.1")))), isc::BadValue); } @@ -663,21 +674,21 @@ TEST_F(CfgHostsTest, duplicatesSubnet4HWAddr) { // Add a host. ASSERT_NO_THROW(cfg.add(HostPtr(new Host(hwaddrs_[0]->toText(false), "hw-address", - SubnetID(10), SubnetID(0), + SubnetID(10), SUBNET_ID_UNUSED, IOAddress("10.0.0.1"))))); // Try to add the host with the same HW address to the same subnet. The fact // that the IP address is different here shouldn't really matter. EXPECT_THROW(cfg.add(HostPtr(new Host(hwaddrs_[0]->toText(false), "hw-address", - SubnetID(10), SubnetID(0), + SubnetID(10), SUBNET_ID_UNUSED, IOAddress("10.0.0.10")))), isc::dhcp::DuplicateHost); // Now try to add it to a different subnet. It should go through. EXPECT_NO_THROW(cfg.add(HostPtr(new Host(hwaddrs_[0]->toText(false), "hw-address", - SubnetID(11), SubnetID(0), + SubnetID(11), SUBNET_ID_UNUSED, IOAddress("10.0.0.10"))))); } @@ -688,21 +699,21 @@ TEST_F(CfgHostsTest, duplicatesSubnet4DUID) { // Add a host. ASSERT_NO_THROW(cfg.add(HostPtr(new Host(duids_[0]->toText(), "duid", - SubnetID(10), SubnetID(0), + SubnetID(10), SUBNET_ID_UNUSED, IOAddress("10.0.0.1"))))); // Try to add the host with the same DUID to the same subnet. The fact // that the IP address is different here shouldn't really matter. EXPECT_THROW(cfg.add(HostPtr(new Host(duids_[0]->toText(), "duid", - SubnetID(10), SubnetID(0), + SubnetID(10), SUBNET_ID_UNUSED, IOAddress("10.0.0.10")))), isc::dhcp::DuplicateHost); // Now try to add it to a different subnet. It should go through. EXPECT_NO_THROW(cfg.add(HostPtr(new Host(duids_[0]->toText(), "duid", - SubnetID(11), SubnetID(0), + SubnetID(11), SUBNET_ID_UNUSED, IOAddress("10.0.0.10"))))); } @@ -713,7 +724,7 @@ TEST_F(CfgHostsTest, duplicatesSubnet6HWAddr) { // Add a host. ASSERT_NO_THROW(cfg.add(HostPtr(new Host(hwaddrs_[0]->toText(false), "hw-address", - SubnetID(0), SubnetID(1), + SUBNET_ID_UNUSED, SubnetID(1), IOAddress("0.0.0.0"), "foo.example.com")))); @@ -721,7 +732,7 @@ TEST_F(CfgHostsTest, duplicatesSubnet6HWAddr) { // that the IP address is different here shouldn't really matter. EXPECT_THROW(cfg.add(HostPtr(new Host(hwaddrs_[0]->toText(false), "hw-address", - SubnetID(0), SubnetID(1), + SUBNET_ID_UNUSED, SubnetID(1), IOAddress("0.0.0.0"), "foo.example.com"))), isc::dhcp::DuplicateHost); @@ -729,7 +740,7 @@ TEST_F(CfgHostsTest, duplicatesSubnet6HWAddr) { // Now try to add it to a different subnet. It should go through. EXPECT_NO_THROW(cfg.add(HostPtr(new Host(hwaddrs_[0]->toText(false), "hw-address", - SubnetID(0), SubnetID(2), + SUBNET_ID_UNUSED, SubnetID(2), IOAddress("0.0.0.0"), "foo.example.com")))); } @@ -741,7 +752,7 @@ TEST_F(CfgHostsTest, duplicatesSubnet6DUID) { // Add a host. ASSERT_NO_THROW(cfg.add(HostPtr(new Host(duids_[0]->toText(), "duid", - SubnetID(0), SubnetID(1), + SUBNET_ID_UNUSED, SubnetID(1), IOAddress("0.0.0.0"), "foo.example.com")))); @@ -749,7 +760,7 @@ TEST_F(CfgHostsTest, duplicatesSubnet6DUID) { // that the IP address is different here shouldn't really matter. EXPECT_THROW(cfg.add(HostPtr(new Host(duids_[0]->toText(), "duid", - SubnetID(0), SubnetID(1), + SUBNET_ID_UNUSED, SubnetID(1), IOAddress("0.0.0.0"), "foo.example.com"))), isc::dhcp::DuplicateHost); @@ -757,7 +768,7 @@ TEST_F(CfgHostsTest, duplicatesSubnet6DUID) { // Now try to add it to a different subnet. It should go through. EXPECT_NO_THROW(cfg.add(HostPtr(new Host(duids_[0]->toText(), "duid", - SubnetID(0), SubnetID(2), + SUBNET_ID_UNUSED, SubnetID(2), IOAddress("0.0.0.0"), "foo.example.com")))); } diff --git a/src/lib/dhcpsrv/tests/cql_host_data_source_unittest.cc b/src/lib/dhcpsrv/tests/cql_host_data_source_unittest.cc index 6e70c7b7d2..3c54332927 100644 --- a/src/lib/dhcpsrv/tests/cql_host_data_source_unittest.cc +++ b/src/lib/dhcpsrv/tests/cql_host_data_source_unittest.cc @@ -663,16 +663,16 @@ TEST_F(CqlHostDataSourceTest, testMultipleHosts6) { testMultipleHosts6(); } -// Verifies that IPv4 host reservation with options can have a value of zero -// dhcp4_subnet id -TEST_F(CqlHostDataSourceTest, zeroSubnetId4) { - testMaxSubnetId4(); +// Verifies that IPv4 host reservation with options can have a the global +// subnet id value +TEST_F(CqlHostDataSourceTest, globalSubnetId4) { + testGlobalSubnetId4(); } -// Verifies that IPv6 host reservation with options can have a value of zero -// dhcp6_subnet id -TEST_F(CqlHostDataSourceTest, zeroSubnetId6) { - testMaxSubnetId6(); +// Verifies that IPv6 host reservation with options can have a the global +// subnet id value +TEST_F(CqlHostDataSourceTest, globalSubnetId6) { + testGlobalSubnetId6(); } // Verifies that IPv4 host reservation with options can have a max value diff --git a/src/lib/dhcpsrv/tests/host_mgr_unittest.cc b/src/lib/dhcpsrv/tests/host_mgr_unittest.cc index f4bca8ad9a..9432ae9468 100644 --- a/src/lib/dhcpsrv/tests/host_mgr_unittest.cc +++ b/src/lib/dhcpsrv/tests/host_mgr_unittest.cc @@ -187,7 +187,7 @@ HostMgrTest::addHost4(BaseHostDataSource& data_source, const SubnetID& subnet_id, const IOAddress& address) { data_source.add(HostPtr(new Host(hwaddr->toText(false), - "hw-address", subnet_id, SubnetID(0), + "hw-address", subnet_id, SUBNET_ID_UNUSED, address))); } @@ -330,7 +330,7 @@ HostMgrTest::testGet4Any() { // Add new host to the database. HostPtr new_host(new Host(duids_[0]->toText(), "duid", SubnetID(1), - SubnetID(0), IOAddress("192.0.2.5"))); + SUBNET_ID_UNUSED, IOAddress("192.0.2.5"))); // Abuse of the server's configuration. getCfgHosts()->add(new_host); @@ -543,7 +543,7 @@ TEST_F(HostMgrTest, addNoDataSource) { HostMgr::create(); HostPtr host(new Host(hwaddrs_[0]->toText(false), "hw-address", - SubnetID(1), SubnetID(0), IOAddress("192.0.2.5"))); + SubnetID(1), SUBNET_ID_UNUSED, IOAddress("192.0.2.5"))); EXPECT_THROW(HostMgr::instance().add(host), NoHostDataSourceManager); } diff --git a/src/lib/dhcpsrv/tests/host_reservation_parser_unittest.cc b/src/lib/dhcpsrv/tests/host_reservation_parser_unittest.cc index 4712450137..a608136b3a 100644 --- a/src/lib/dhcpsrv/tests/host_reservation_parser_unittest.cc +++ b/src/lib/dhcpsrv/tests/host_reservation_parser_unittest.cc @@ -154,7 +154,7 @@ protected: ASSERT_TRUE(host); EXPECT_EQ(10, host->getIPv4SubnetID()); - EXPECT_EQ(0, host->getIPv6SubnetID()); + EXPECT_EQ(SUBNET_ID_UNUSED, host->getIPv6SubnetID()); EXPECT_EQ("192.0.2.112", host->getIPv4Reservation().toText()); EXPECT_TRUE(host->getHostname().empty()); } @@ -370,7 +370,7 @@ TEST_F(HostReservationParserTest, dhcp4NoHostname) { ASSERT_EQ(1, hosts.size()); EXPECT_EQ(10, hosts[0]->getIPv4SubnetID()); - EXPECT_EQ(0, hosts[0]->getIPv6SubnetID()); + EXPECT_EQ(SUBNET_ID_UNUSED, hosts[0]->getIPv6SubnetID()); EXPECT_EQ("192.0.2.10", hosts[0]->getIPv4Reservation().toText()); EXPECT_TRUE(hosts[0]->getHostname().empty()); @@ -563,7 +563,7 @@ TEST_F(HostReservationParserTest, noIPAddress) { ASSERT_EQ(1, hosts.size()); EXPECT_EQ(10, hosts[0]->getIPv4SubnetID()); - EXPECT_EQ(0, hosts[0]->getIPv6SubnetID()); + EXPECT_EQ(SUBNET_ID_UNUSED, hosts[0]->getIPv6SubnetID()); EXPECT_EQ("0.0.0.0", hosts[0]->getIPv4Reservation().toText()); EXPECT_EQ("foo.example.com", hosts[0]->getHostname()); @@ -676,7 +676,7 @@ TEST_F(HostReservationParserTest, dhcp6HWaddr) { hwaddr_->hwaddr_.size())); ASSERT_EQ(1, hosts.size()); - EXPECT_EQ(0, hosts[0]->getIPv4SubnetID()); + EXPECT_EQ(SUBNET_ID_UNUSED, hosts[0]->getIPv4SubnetID()); EXPECT_EQ(10, hosts[0]->getIPv6SubnetID()); EXPECT_EQ("foo.example.com", hosts[0]->getHostname()); @@ -746,7 +746,7 @@ TEST_F(HostReservationParserTest, dhcp6DUID) { duid_->getDuid().size())); ASSERT_EQ(1, hosts.size()); - EXPECT_EQ(0, hosts[0]->getIPv4SubnetID()); + EXPECT_EQ(SUBNET_ID_UNUSED, hosts[0]->getIPv4SubnetID()); EXPECT_EQ(12, hosts[0]->getIPv6SubnetID()); EXPECT_EQ("foo.example.com", hosts[0]->getHostname()); @@ -827,7 +827,7 @@ TEST_F(HostReservationParserTest, dhcp6NoHostname) { duid_->getDuid().size())); ASSERT_EQ(1, hosts.size()); - EXPECT_EQ(0, hosts[0]->getIPv4SubnetID()); + EXPECT_EQ(SUBNET_ID_UNUSED, hosts[0]->getIPv4SubnetID()); EXPECT_EQ(12, hosts[0]->getIPv6SubnetID()); EXPECT_TRUE(hosts[0]->getHostname().empty()); diff --git a/src/lib/dhcpsrv/tests/host_reservations_list_parser_unittest.cc b/src/lib/dhcpsrv/tests/host_reservations_list_parser_unittest.cc index 80583aa6e0..5827c0234b 100644 --- a/src/lib/dhcpsrv/tests/host_reservations_list_parser_unittest.cc +++ b/src/lib/dhcpsrv/tests/host_reservations_list_parser_unittest.cc @@ -180,7 +180,7 @@ TEST_F(HostReservationsListParserTest, ipv4Reservations) { ASSERT_EQ(1, hosts.size()); EXPECT_EQ(1, hosts[0]->getIPv4SubnetID()); - EXPECT_EQ(0, hosts[0]->getIPv6SubnetID()); + EXPECT_EQ(SUBNET_ID_UNUSED, hosts[0]->getIPv6SubnetID()); EXPECT_EQ("192.0.2.134", hosts[0]->getIPv4Reservation().toText()); EXPECT_EQ("foo.example.com", hosts[0]->getHostname()); @@ -191,7 +191,7 @@ TEST_F(HostReservationsListParserTest, ipv4Reservations) { ASSERT_EQ(1, hosts.size()); EXPECT_EQ(1, hosts[0]->getIPv4SubnetID()); - EXPECT_EQ(0, hosts[0]->getIPv6SubnetID()); + EXPECT_EQ(SUBNET_ID_UNUSED, hosts[0]->getIPv6SubnetID()); EXPECT_EQ("192.0.2.110", hosts[0]->getIPv4Reservation().toText()); EXPECT_EQ("bar.example.com", hosts[0]->getHostname()); @@ -205,7 +205,7 @@ TEST_F(HostReservationsListParserTest, ipv4Reservations) { runToElementTest<CfgHostsSubnet>("[ ]", cfg_subnet6); CfgMgr::instance().setFamily(AF_INET); - CfgHostsSubnet cfg_subnet1(cfg_hosts, SubnetID(0)); + CfgHostsSubnet cfg_subnet1(cfg_hosts, SUBNET_ID_UNUSED); runToElementTest<CfgHostsSubnet>("[ ]", cfg_subnet1); } @@ -292,7 +292,7 @@ TEST_F(HostReservationsListParserTest, ipv6Reservations) { ASSERT_EQ(1, hosts.size()); // Make sure it belongs to a valid subnet. - EXPECT_EQ(0, hosts[0]->getIPv4SubnetID()); + EXPECT_EQ(SUBNET_ID_UNUSED, hosts[0]->getIPv4SubnetID()); EXPECT_EQ(2, hosts[0]->getIPv6SubnetID()); // Get the reserved addresses for the host. There should be exactly one @@ -311,7 +311,7 @@ TEST_F(HostReservationsListParserTest, ipv6Reservations) { duid_->getDuid().size())); ASSERT_EQ(1, hosts.size()); - EXPECT_EQ(0, hosts[0]->getIPv4SubnetID()); + EXPECT_EQ(SUBNET_ID_UNUSED, hosts[0]->getIPv4SubnetID()); EXPECT_EQ(2, hosts[0]->getIPv6SubnetID()); // This reservation was for a prefix, instead of an IPv6 address. diff --git a/src/lib/dhcpsrv/tests/host_unittest.cc b/src/lib/dhcpsrv/tests/host_unittest.cc index 4847e2a779..a6079b053a 100644 --- a/src/lib/dhcpsrv/tests/host_unittest.cc +++ b/src/lib/dhcpsrv/tests/host_unittest.cc @@ -988,7 +988,7 @@ TEST_F(HostTest, toText) { // Reset some of the data and make sure that the output is affected. host->setHostname(""); host->removeIPv4Reservation(); - host->setIPv4SubnetID(0); + host->setIPv4SubnetID(SUBNET_ID_UNUSED); host->setNegative(true); EXPECT_EQ("hwaddr=010203040506 ipv6_subnet_id=2" @@ -1007,7 +1007,7 @@ TEST_F(HostTest, toText) { // Create host identified by DUID, instead of HWADDR, with a very // basic configuration. ASSERT_NO_THROW(host.reset(new Host("11:12:13:14:15", "duid", - SubnetID(0), SubnetID(0), + SUBNET_ID_UNUSED, SUBNET_ID_UNUSED, IOAddress::IPV4_ZERO_ADDRESS(), "myhost"))); @@ -1044,6 +1044,21 @@ TEST_F(HostTest, toText) { " dhcp4_class0=modem dhcp4_class1=router" " dhcp6_class0=hub dhcp6_class1=device", host->toText()); + + // Create global host identified by DUID, with a very basic configuration. + ASSERT_NO_THROW(host.reset(new Host("11:12:13:14:15", "duid", + SUBNET_ID_GLOBAL, SUBNET_ID_GLOBAL, + IOAddress::IPV4_ZERO_ADDRESS(), + "myhost"))); + + EXPECT_EQ("duid=1112131415 ipv4_subnet_id=0 ipv6_subnet_id=0 " + "hostname=myhost ipv4_reservation=(no)" + " siaddr=(no)" + " sname=(empty)" + " file=(empty)" + " key=(empty)" + " ipv6_reservations=(none)", host->toText()); + } // This test checks that Host object is correctly unparsed, @@ -1098,7 +1113,7 @@ TEST_F(HostTest, unparse) { // Reset some of the data and make sure that the output is affected. host->setHostname(""); host->removeIPv4Reservation(); - host->setIPv4SubnetID(0); + host->setIPv4SubnetID(SUBNET_ID_UNUSED); EXPECT_EQ("{ " "\"boot-file-name\": \"\", " @@ -1126,7 +1141,7 @@ TEST_F(HostTest, unparse) { // Create host identified by DUID, instead of HWADDR, with a very // basic configuration. ASSERT_NO_THROW(host.reset(new Host("11:12:13:14:15", "duid", - SubnetID(0), SubnetID(0), + SUBNET_ID_UNUSED, SUBNET_ID_UNUSED, IOAddress::IPV4_ZERO_ADDRESS(), "myhost"))); diff --git a/src/lib/dhcpsrv/tests/mysql_host_data_source_unittest.cc b/src/lib/dhcpsrv/tests/mysql_host_data_source_unittest.cc index e82c7d4588..8c88716993 100644 --- a/src/lib/dhcpsrv/tests/mysql_host_data_source_unittest.cc +++ b/src/lib/dhcpsrv/tests/mysql_host_data_source_unittest.cc @@ -285,16 +285,16 @@ TEST_F(MySqlHostDataSourceTest, basic4HWAddr) { testBasic4(Host::IDENT_HWADDR); } -// Verifies that IPv4 host reservation with options can have a value of zero -// dhcp4_subnet id -TEST_F(MySqlHostDataSourceTest, zeroSubnetId4) { - testMaxSubnetId4(); +// Verifies that IPv4 host reservation with options can have a the global +// subnet id value +TEST_F(MySqlHostDataSourceTest, globalSubnetId4) { + testGlobalSubnetId4(); } -// Verifies that IPv6 host reservation with options can have a value of zero -// dhcp6_subnet id -TEST_F(MySqlHostDataSourceTest, zeroSubnetId6) { - testMaxSubnetId6(); +// Verifies that IPv6 host reservation with options can have a the global +// subnet id value +TEST_F(MySqlHostDataSourceTest, globalSubnetId6) { + testGlobalSubnetId6(); } // Verifies that IPv4 host reservation with options can have a max value diff --git a/src/lib/dhcpsrv/tests/pgsql_host_data_source_unittest.cc b/src/lib/dhcpsrv/tests/pgsql_host_data_source_unittest.cc index aecd7afdd9..f20d27279a 100644 --- a/src/lib/dhcpsrv/tests/pgsql_host_data_source_unittest.cc +++ b/src/lib/dhcpsrv/tests/pgsql_host_data_source_unittest.cc @@ -270,16 +270,16 @@ TEST_F(PgSqlHostDataSourceTest, basic4HWAddr) { testBasic4(Host::IDENT_HWADDR); } -// Verifies that IPv4 host reservation with options can have a value of zero -// dhcp4_subnet id -TEST_F(PgSqlHostDataSourceTest, zeroSubnetId4) { - testMaxSubnetId4(); +// Verifies that IPv4 host reservation with options can have a the global +// subnet id value +TEST_F(PgSqlHostDataSourceTest, globalSubnetId4) { + testGlobalSubnetId4(); } -// Verifies that IPv6 host reservation with options can have a value of zero -// dhcp6_subnet id -TEST_F(PgSqlHostDataSourceTest, zeroSubnetId6) { - testMaxSubnetId6(); +// Verifies that IPv6 host reservation with options can have a the global +// subnet id value +TEST_F(PgSqlHostDataSourceTest, globalSubnetId6) { + testGlobalSubnetId6(); } // Verifies that IPv4 host reservation with options can have a max value diff --git a/src/lib/dhcpsrv/tests/srv_config_unittest.cc b/src/lib/dhcpsrv/tests/srv_config_unittest.cc index ad5f41d662..21f31a9f24 100644 --- a/src/lib/dhcpsrv/tests/srv_config_unittest.cc +++ b/src/lib/dhcpsrv/tests/srv_config_unittest.cc @@ -586,14 +586,20 @@ TEST_F(SrvConfigTest, unparseHR) { def_triplet, def_triplet, 4000, s_id)); network4->add(ssubnet4); + // Add a v4 global host reservation to the plain subnet + HostPtr ghost4(new Host("AA:01:02:03:04:05", "hw-address", + SUBNET_ID_GLOBAL, SUBNET_ID_UNUSED, + IOAddress("192.0.3.1"))); + conf4.getCfgHosts()->add(ghost4); + // Add a host reservation to the plain subnet HostPtr phost4(new Host("00:01:02:03:04:05", "hw-address", - p_id, SubnetID(0), IOAddress("192.0.1.1"))); + p_id, SUBNET_ID_UNUSED, IOAddress("192.0.1.1"))); conf4.getCfgHosts()->add(phost4); // Add a host reservation to the shared subnet HostPtr shost4(new Host("00:05:04:03:02:01", "hw-address", - s_id, SubnetID(0), IOAddress("192.0.2.1"))); + s_id, SUBNET_ID_UNUSED, IOAddress("192.0.2.1"))); conf4.getCfgHosts()->add(shost4); // Unparse the config @@ -607,8 +613,25 @@ TEST_F(SrvConfigTest, unparseHR) { ASSERT_TRUE(dhcp4); ASSERT_EQ(Element::map, dhcp4->getType()); - // Get plain subnets + // Get global host reservations ConstElementPtr check; + ASSERT_NO_THROW(check = dhcp4->get("reservations")); + ASSERT_TRUE(check); + ASSERT_EQ(Element::list, check->getType()); + EXPECT_EQ(1, check->size()); + + // Get the global host reservation + ASSERT_NO_THROW(check = check->get(0)); + ASSERT_TRUE(check); + ASSERT_EQ(Element::map, check->getType()); + + // Check the reserved address + ASSERT_NO_THROW(check = check->get("ip-address")); + ASSERT_TRUE(check); + ASSERT_EQ(Element::string, check->getType()); + EXPECT_EQ("192.0.3.1", check->stringValue()); + + // Get plain subnets ASSERT_NO_THROW(check = dhcp4->get("subnet4")); ASSERT_TRUE(check); ASSERT_EQ(Element::list, check->getType()); @@ -712,14 +735,21 @@ TEST_F(SrvConfigTest, unparseHR) { 1000, 2000, 3000, 4000, s_id)); network6->add(ssubnet6); + // Add a v6 global host reservation + HostPtr ghost6(new Host("ff:b2:c3:d4:e5:f6", "duid", SUBNET_ID_UNUSED, + SUBNET_ID_GLOBAL, IOAddress::IPV4_ZERO_ADDRESS(), + "global.example.org")); + conf6.getCfgHosts()->add(ghost6); + // Add a host reservation to the plain subnet - HostPtr phost6(new Host("a1:b2:c3:d4:e5:f6", "duid", SubnetID(0), + HostPtr phost6(new Host("a1:b2:c3:d4:e5:f6", "duid", SUBNET_ID_UNUSED, p_id, IOAddress::IPV4_ZERO_ADDRESS(), "foo.example.org")); + conf6.getCfgHosts()->add(phost6); // Add a host reservation to the shared subnet - HostPtr shost6(new Host("f6:e5:d4:c3:b2:a1", "duid", SubnetID(0), + HostPtr shost6(new Host("f6:e5:d4:c3:b2:a1", "duid", SUBNET_ID_UNUSED, s_id, IOAddress::IPV4_ZERO_ADDRESS(), "bar.example.org")); conf6.getCfgHosts()->add(shost6); @@ -735,6 +765,23 @@ TEST_F(SrvConfigTest, unparseHR) { ASSERT_TRUE(dhcp6); ASSERT_EQ(Element::map, dhcp6->getType()); + // Get global host reservations + ASSERT_NO_THROW(check = dhcp6->get("reservations")); + ASSERT_TRUE(check); + ASSERT_EQ(Element::list, check->getType()); + EXPECT_EQ(1, check->size()); + + // Get the global host reservation + ASSERT_NO_THROW(check = check->get(0)); + ASSERT_TRUE(check); + ASSERT_EQ(Element::map, check->getType()); + + // Check the host name + ASSERT_NO_THROW(check = check->get("hostname")); + ASSERT_TRUE(check); + ASSERT_EQ(Element::string, check->getType()); + EXPECT_EQ("global.example.org", check->stringValue()); + // Get plain subnets ASSERT_NO_THROW(check = dhcp6->get("subnet6")); ASSERT_TRUE(check); diff --git a/src/lib/dhcpsrv/testutils/generic_host_data_source_unittest.cc b/src/lib/dhcpsrv/testutils/generic_host_data_source_unittest.cc index d20c5c9924..2a863fd197 100644 --- a/src/lib/dhcpsrv/testutils/generic_host_data_source_unittest.cc +++ b/src/lib/dhcpsrv/testutils/generic_host_data_source_unittest.cc @@ -260,16 +260,17 @@ GenericHostDataSourceTest::testBasic4(const Host::IdentifierType& id) { } void -GenericHostDataSourceTest::testZeroSubnetId4() { +GenericHostDataSourceTest::testGlobalSubnetId4() { std::vector<uint8_t> ident; ident = HostDataSourceUtils::generateIdentifier(); - SubnetID subnet_id4 = 0; + SubnetID subnet_id4 = SUBNET_ID_GLOBAL; HostPtr host(new Host(&ident[0], ident.size(), Host::IDENT_DUID, - subnet_id4, 0, IOAddress("0.0.0.0"))); + subnet_id4, SUBNET_ID_UNUSED, IOAddress("0.0.0.0"))); ASSERT_NO_THROW(addTestOptions(host, true, DHCP4_ONLY)); - ASSERT_NO_THROW(hdsptr_->add(host)); + (hdsptr_->add(host)); + //ASSERT_NO_THROW(hdsptr_->add(host)); // get4(subnet_id, identifier_type, identifier, identifier_size) ConstHostPtr host_by_id = hdsptr_->get4(subnet_id4, @@ -290,13 +291,13 @@ GenericHostDataSourceTest::testZeroSubnetId4() { EXPECT_FALSE(host_by_id); } -void GenericHostDataSourceTest::testZeroSubnetId6() { +void GenericHostDataSourceTest::testGlobalSubnetId6() { std::vector<uint8_t> ident; ident = HostDataSourceUtils::generateIdentifier(); - SubnetID subnet_id6 = 0; + SubnetID subnet_id6 = SUBNET_ID_GLOBAL; HostPtr host(new Host(&ident[0], ident.size(), Host::IDENT_DUID, - 0, subnet_id6, IOAddress("0.0.0.0"))); + SUBNET_ID_UNUSED, subnet_id6, IOAddress("0.0.0.0"))); ASSERT_NO_THROW(addTestOptions(host, true, DHCP6_ONLY)); ASSERT_NO_THROW(hdsptr_->add(host)); @@ -326,9 +327,9 @@ GenericHostDataSourceTest::testMaxSubnetId4() { std::vector<uint8_t> ident; ident = HostDataSourceUtils::generateIdentifier(); - SubnetID subnet_id4 = numeric_limits<uint32_t>::max(); + SubnetID subnet_id4 = SUBNET_ID_MAX; HostPtr host(new Host(&ident[0], ident.size(), Host::IDENT_DUID, - subnet_id4, 0, IOAddress("0.0.0.0"))); + subnet_id4, SUBNET_ID_UNUSED, IOAddress("0.0.0.0"))); ASSERT_NO_THROW(addTestOptions(host, true, DHCP4_ONLY)); ASSERT_NO_THROW(hdsptr_->add(host)); @@ -356,9 +357,9 @@ void GenericHostDataSourceTest::testMaxSubnetId6() { std::vector<uint8_t> ident; ident = HostDataSourceUtils::generateIdentifier(); - SubnetID subnet_id6 = numeric_limits<uint32_t>::max(); + SubnetID subnet_id6 = SUBNET_ID_MAX; HostPtr host(new Host(&ident[0], ident.size(), Host::IDENT_DUID, - 0, subnet_id6, IOAddress("0.0.0.0"))); + SUBNET_ID_UNUSED, subnet_id6, IOAddress("0.0.0.0"))); ASSERT_NO_THROW(addTestOptions(host, true, DHCP6_ONLY)); ASSERT_NO_THROW(hdsptr_->add(host)); @@ -620,13 +621,11 @@ GenericHostDataSourceTest::testMultipleSubnets(int subnets, ASSERT_TRUE(hdsptr_); HostPtr host = HostDataSourceUtils::initializeHost4("192.0.2.1", id); - host->setIPv6SubnetID(0); + host->setIPv6SubnetID(SUBNET_ID_UNUSED); for (int i = 0; i < subnets; ++i) { host->setIPv4SubnetID(i + 1000); - - // Check that the same host can have reservations in multiple subnets. - EXPECT_NO_THROW(hdsptr_->add(host)); + ASSERT_NO_THROW(hdsptr_->add(host)); } // Now check that the reservations can be retrieved by IPv4 address from @@ -1568,7 +1567,7 @@ GenericHostDataSourceTest::testMultipleHostsNoAddress4() { // Create a host with zero IPv4 address. HostPtr host1 = HostDataSourceUtils::initializeHost4("0.0.0.0", Host::IDENT_HWADDR); host1->setIPv4SubnetID(1); - host1->setIPv6SubnetID(0); + host1->setIPv6SubnetID(SUBNET_ID_UNUSED); // Add the host to the database. ASSERT_NO_THROW(hdsptr_->add(host1)); @@ -1581,7 +1580,7 @@ GenericHostDataSourceTest::testMultipleHostsNoAddress4() { // in the unique index. HostPtr host2 = HostDataSourceUtils::initializeHost4("0.0.0.0", Host::IDENT_HWADDR); host2->setIPv4SubnetID(1); - host2->setIPv6SubnetID(0); + host2->setIPv6SubnetID(SUBNET_ID_UNUSED); ASSERT_NO_THROW(hdsptr_->add(host2)); } @@ -1592,7 +1591,7 @@ GenericHostDataSourceTest::testMultipleHosts6() { // Create first host. HostPtr host1 = HostDataSourceUtils::initializeHost6("2001:db8::1", Host::IDENT_DUID, false); - host1->setIPv4SubnetID(0); + host1->setIPv4SubnetID(SUBNET_ID_UNUSED); host1->setIPv6SubnetID(1); // Add the host to the database. ASSERT_NO_THROW(hdsptr_->add(host1)); @@ -1602,7 +1601,7 @@ GenericHostDataSourceTest::testMultipleHosts6() { ASSERT_THROW(hdsptr_->add(host1), DuplicateEntry); HostPtr host2 = HostDataSourceUtils::initializeHost6("2001:db8::2", Host::IDENT_DUID, false); - host2->setIPv4SubnetID(0); + host2->setIPv4SubnetID(SUBNET_ID_UNUSED); host2->setIPv6SubnetID(1); // Add the host to the database. ASSERT_NO_THROW(hdsptr_->add(host2)); diff --git a/src/lib/dhcpsrv/testutils/generic_host_data_source_unittest.h b/src/lib/dhcpsrv/testutils/generic_host_data_source_unittest.h index fdc0c0d811..5e6175cd3d 100644 --- a/src/lib/dhcpsrv/testutils/generic_host_data_source_unittest.h +++ b/src/lib/dhcpsrv/testutils/generic_host_data_source_unittest.h @@ -313,18 +313,16 @@ public: void testBasic4(const Host::IdentifierType& id); /// @brief Test that Verifies that an IPv4 host reservation with - /// options can have 0 for dhcp4_subnet id. 0 denotes global - /// reservation. + /// options can have the global subnet id value. /// /// Uses gtest macros to report failures. - void testZeroSubnetId4(); + void testGlobalSubnetId4(); /// @brief Test that Verifies that an IPv6 host reservation with - /// options can have 0 for dhcp6_subnet id. 0 denotes global - /// reservation. + /// options can have the global subnet id value. /// /// Uses gtest macros to report failures. - void testZeroSubnetId6(); + void testGlobalSubnetId6(); /// @brief Test that Verifies that an IPv4 host reservation with /// options can have a max value for dhcp4_subnet id diff --git a/src/lib/eval/lexer.cc b/src/lib/eval/lexer.cc index 48c177a6d9..a43e2913f4 100644 --- a/src/lib/eval/lexer.cc +++ b/src/lib/eval/lexer.cc @@ -1,27 +1,22 @@ -#line 1 "lexer.cc" +#line 2 "lexer.cc" -#line 3 "lexer.cc" +#line 4 "lexer.cc" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ /* %not-for-header */ + /* %if-c-only */ /* %if-not-reentrant */ #define yy_create_buffer eval_create_buffer #define yy_delete_buffer eval_delete_buffer -#define yy_scan_buffer eval_scan_buffer -#define yy_scan_string eval_scan_string -#define yy_scan_bytes eval_scan_bytes +#define yy_flex_debug eval_flex_debug #define yy_init_buffer eval_init_buffer #define yy_flush_buffer eval_flush_buffer #define yy_load_buffer_state eval_load_buffer_state #define yy_switch_to_buffer eval_switch_to_buffer -#define yypush_buffer_state evalpush_buffer_state -#define yypop_buffer_state evalpop_buffer_state -#define yyensure_buffer_stack evalensure_buffer_stack -#define yy_flex_debug eval_flex_debug #define yyin evalin #define yyleng evalleng #define yylex evallex @@ -40,8 +35,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 37 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -50,244 +45,11 @@ /* %endif */ /* %if-c-only */ -#ifdef yy_create_buffer -#define eval_create_buffer_ALREADY_DEFINED -#else -#define yy_create_buffer eval_create_buffer -#endif - -#ifdef yy_delete_buffer -#define eval_delete_buffer_ALREADY_DEFINED -#else -#define yy_delete_buffer eval_delete_buffer -#endif - -#ifdef yy_scan_buffer -#define eval_scan_buffer_ALREADY_DEFINED -#else -#define yy_scan_buffer eval_scan_buffer -#endif - -#ifdef yy_scan_string -#define eval_scan_string_ALREADY_DEFINED -#else -#define yy_scan_string eval_scan_string -#endif - -#ifdef yy_scan_bytes -#define eval_scan_bytes_ALREADY_DEFINED -#else -#define yy_scan_bytes eval_scan_bytes -#endif - -#ifdef yy_init_buffer -#define eval_init_buffer_ALREADY_DEFINED -#else -#define yy_init_buffer eval_init_buffer -#endif - -#ifdef yy_flush_buffer -#define eval_flush_buffer_ALREADY_DEFINED -#else -#define yy_flush_buffer eval_flush_buffer -#endif - -#ifdef yy_load_buffer_state -#define eval_load_buffer_state_ALREADY_DEFINED -#else -#define yy_load_buffer_state eval_load_buffer_state -#endif - -#ifdef yy_switch_to_buffer -#define eval_switch_to_buffer_ALREADY_DEFINED -#else -#define yy_switch_to_buffer eval_switch_to_buffer -#endif - -#ifdef yypush_buffer_state -#define evalpush_buffer_state_ALREADY_DEFINED -#else -#define yypush_buffer_state evalpush_buffer_state -#endif - -#ifdef yypop_buffer_state -#define evalpop_buffer_state_ALREADY_DEFINED -#else -#define yypop_buffer_state evalpop_buffer_state -#endif - -#ifdef yyensure_buffer_stack -#define evalensure_buffer_stack_ALREADY_DEFINED -#else -#define yyensure_buffer_stack evalensure_buffer_stack -#endif - -#ifdef yylex -#define evallex_ALREADY_DEFINED -#else -#define yylex evallex -#endif - -#ifdef yyrestart -#define evalrestart_ALREADY_DEFINED -#else -#define yyrestart evalrestart -#endif - -#ifdef yylex_init -#define evallex_init_ALREADY_DEFINED -#else -#define yylex_init evallex_init -#endif - -#ifdef yylex_init_extra -#define evallex_init_extra_ALREADY_DEFINED -#else -#define yylex_init_extra evallex_init_extra -#endif - -#ifdef yylex_destroy -#define evallex_destroy_ALREADY_DEFINED -#else -#define yylex_destroy evallex_destroy -#endif - -#ifdef yyget_debug -#define evalget_debug_ALREADY_DEFINED -#else -#define yyget_debug evalget_debug -#endif - -#ifdef yyset_debug -#define evalset_debug_ALREADY_DEFINED -#else -#define yyset_debug evalset_debug -#endif - -#ifdef yyget_extra -#define evalget_extra_ALREADY_DEFINED -#else -#define yyget_extra evalget_extra -#endif - -#ifdef yyset_extra -#define evalset_extra_ALREADY_DEFINED -#else -#define yyset_extra evalset_extra -#endif - -#ifdef yyget_in -#define evalget_in_ALREADY_DEFINED -#else -#define yyget_in evalget_in -#endif - -#ifdef yyset_in -#define evalset_in_ALREADY_DEFINED -#else -#define yyset_in evalset_in -#endif - -#ifdef yyget_out -#define evalget_out_ALREADY_DEFINED -#else -#define yyget_out evalget_out -#endif - -#ifdef yyset_out -#define evalset_out_ALREADY_DEFINED -#else -#define yyset_out evalset_out -#endif - -#ifdef yyget_leng -#define evalget_leng_ALREADY_DEFINED -#else -#define yyget_leng evalget_leng -#endif - -#ifdef yyget_text -#define evalget_text_ALREADY_DEFINED -#else -#define yyget_text evalget_text -#endif - -#ifdef yyget_lineno -#define evalget_lineno_ALREADY_DEFINED -#else -#define yyget_lineno evalget_lineno -#endif - -#ifdef yyset_lineno -#define evalset_lineno_ALREADY_DEFINED -#else -#define yyset_lineno evalset_lineno -#endif - -#ifdef yywrap -#define evalwrap_ALREADY_DEFINED -#else -#define yywrap evalwrap -#endif - + /* %endif */ -#ifdef yyalloc -#define evalalloc_ALREADY_DEFINED -#else -#define yyalloc evalalloc -#endif - -#ifdef yyrealloc -#define evalrealloc_ALREADY_DEFINED -#else -#define yyrealloc evalrealloc -#endif - -#ifdef yyfree -#define evalfree_ALREADY_DEFINED -#else -#define yyfree evalfree -#endif - /* %if-c-only */ -#ifdef yytext -#define evaltext_ALREADY_DEFINED -#else -#define yytext evaltext -#endif - -#ifdef yyleng -#define evalleng_ALREADY_DEFINED -#else -#define yyleng evalleng -#endif - -#ifdef yyin -#define evalin_ALREADY_DEFINED -#else -#define yyin evalin -#endif - -#ifdef yyout -#define evalout_ALREADY_DEFINED -#else -#define yyout evalout -#endif - -#ifdef yy_flex_debug -#define eval_flex_debug_ALREADY_DEFINED -#else -#define yy_flex_debug eval_flex_debug -#endif - -#ifdef yylineno -#define evallineno_ALREADY_DEFINED -#else -#define yylineno evallineno -#endif - /* %endif */ /* First, we deal with platform-specific or compiler-specific issues. */ @@ -365,39 +127,50 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* %endif */ -/* begin standard C++ headers. */ /* %if-c++-only */ /* %endif */ -/* TODO: this is always defined, so inline it */ -#define yyconst const +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const #else -#define yynoreturn +#define yyconst #endif /* %not-for-header */ + /* Returned upon end-of-file. */ #define YY_NULL 0 /* %ok-for-header */ /* %not-for-header */ -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* %ok-for-header */ /* %if-reentrant */ @@ -412,29 +185,25 @@ typedef unsigned int flex_uint32_t; * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * + /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START + /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) +#define YY_NEW_FILE evalrestart(evalin ) + #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else #define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -452,54 +221,48 @@ typedef size_t yy_size_t; #endif /* %if-not-reentrant */ -extern int yyleng; +extern yy_size_t evalleng; /* %endif */ /* %if-c-only */ /* %if-not-reentrant */ -extern FILE *yyin, *yyout; +extern FILE *evalin, *evalout; /* %endif */ /* %endif */ #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - + /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires * access to the local variable yy_act. Since yyless() is a macro, it would break - * existing scanners that call yyless() from OUTSIDE yylex. + * existing scanners that call yyless() from OUTSIDE evallex. * One obvious solution it to make yy_act a global. I tried that, and saw - * a 5% performance hit in a non-yylineno scanner, because yy_act is + * a 5% performance hit in a non-evallineno scanner, because yy_act is * normally declared as a register variable-- so it is not worth it. */ #define YY_LESS_LINENO(n) \ do { \ int yyl;\ - for ( yyl = n; yyl < yyleng; ++yyl )\ - if ( yytext[yyl] == '\n' )\ - --yylineno;\ - }while(0) - #define YY_LINENO_REWIND_TO(dst) \ - do {\ - const char *p;\ - for ( p = yy_cp-1; p >= (dst); --p)\ - if ( *p == '\n' )\ - --yylineno;\ + for ( yyl = n; yyl < evalleng; ++yyl )\ + if ( evaltext[yyl] == '\n' )\ + --evallineno;\ }while(0) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ - /* Undo effects of setting up yytext. */ \ + /* Undo effects of setting up evaltext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + YY_DO_BEFORE_ACTION; /* set up evaltext again */ \ } \ while ( 0 ) + #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -519,12 +282,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -547,7 +310,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -564,8 +327,8 @@ struct yy_buffer_state * possible backing-up. * * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. + * (via evalrestart()), so that the user can continue scanning by + * just pointing evalin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 @@ -574,12 +337,13 @@ struct yy_buffer_state /* %if-c-only Standard (non-C++) definition */ /* %not-for-header */ + /* %if-not-reentrant */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* %endif */ /* %ok-for-header */ @@ -594,6 +358,7 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) + /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ @@ -603,112 +368,115 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* %if-not-reentrant */ /* %not-for-header */ -/* yy_hold_char holds the character lost when yytext is formed. */ + +/* yy_hold_char holds the character lost when evaltext is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t evalleng; /* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; +static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... +/* Flag which is used to allow evalwrap()'s to do buffer switches + * instead of setting up a fresh evalin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; /* %ok-for-header */ /* %endif */ -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); +void evalrestart (FILE *input_file ); +void eval_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE eval_create_buffer (FILE *file,int size ); +void eval_delete_buffer (YY_BUFFER_STATE b ); +void eval_flush_buffer (YY_BUFFER_STATE b ); +void evalpush_buffer_state (YY_BUFFER_STATE new_buffer ); +void evalpop_buffer_state (void ); -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) +static void evalensure_buffer_stack (void ); +static void eval_load_buffer_state (void ); +static void eval_init_buffer (YY_BUFFER_STATE b,FILE *file ); -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); +#define YY_FLUSH_BUFFER eval_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE eval_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE eval_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE eval_scan_bytes (yyconst char *bytes,yy_size_t len ); /* %endif */ -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); +void *evalalloc (yy_size_t ); +void *evalrealloc (void *,yy_size_t ); +void evalfree (void * ); + +#define yy_new_buffer eval_create_buffer -#define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ + evalensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ + eval_create_buffer(evalin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } + #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ + evalensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ + eval_create_buffer(evalin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } + #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) -/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */ +/* %% [1.0] evaltext/evalin/evalout/yy_state_type/evallineno etc. def's & init go here */ /* Begin user sect3 */ -#define evalwrap() (/*CONSTCOND*/1) +#define evalwrap() 1 #define YY_SKIP_YYWRAP #define FLEX_DEBUG -typedef flex_uint8_t YY_CHAR; -FILE *yyin = NULL, *yyout = NULL; +typedef unsigned char YY_CHAR; + +FILE *evalin = (FILE *) 0, *evalout = (FILE *) 0; typedef int yy_state_type; -extern int yylineno; -int yylineno = 1; +extern int evallineno; -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext +int evallineno = 1; -/* %% [1.5] DFA */ +extern char *evaltext; +#define yytext_ptr evaltext /* %if-c-only Standard (non-C++) definition */ -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); /* %endif */ /* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. + * corresponding action - sets up evaltext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ -/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ - yyleng = (int) (yy_cp - yy_bp); \ +/* %% [2.0] code to fiddle evaltext and evalleng for yymore() goes here \ */\ + evalleng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ -/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ +/* %% [3.0] code to copy yytext_ptr to evaltext[] goes here, if %array \ */\ (yy_c_buf_p) = yy_cp; + /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ #define YY_NUM_RULES 53 #define YY_END_OF_BUFFER 54 @@ -719,7 +487,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_acclist[291] = +static yyconst flex_int16_t yy_acclist[291] = { 0, 54, 52, 53, 1, 52, 53, 2, 53, 52, 53, 46, 52, 53, 47, 52, 53, 51, 52, 53, 50, @@ -754,7 +522,7 @@ static const flex_int16_t yy_acclist[291] = 16390, 37,16390,16390, 36,16390,16390,16390, 34,16390 } ; -static const flex_int16_t yy_accept[208] = +static yyconst flex_int16_t yy_accept[208] = { 0, 1, 1, 1, 2, 4, 7, 9, 11, 14, 17, 20, 23, 25, 28, 31, 34, 36, 38, 41, 44, @@ -781,7 +549,7 @@ static const flex_int16_t yy_accept[208] = 284, 285, 287, 288, 289, 291, 291 } ; -static const YY_CHAR yy_ec[256] = +static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -813,7 +581,7 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[45] = +static yyconst flex_int32_t yy_meta[45] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 3, 4, 4, 4, 4, 5, 1, 4, 1, 1, 1, @@ -822,7 +590,7 @@ static const YY_CHAR yy_meta[45] = 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[212] = +static yyconst flex_int16_t yy_base[212] = { 0, 0, 0, 319, 320, 316, 314, 312, 320, 320, 320, 320, 34, 320, 39, 36, 300, 298, 81, 115, 320, @@ -850,7 +618,7 @@ static const flex_int16_t yy_base[212] = 215 } ; -static const flex_int16_t yy_def[212] = +static yyconst flex_int16_t yy_def[212] = { 0, 206, 1, 206, 206, 206, 206, 207, 206, 206, 206, 206, 206, 206, 206, 14, 208, 206, 206, 18, 206, @@ -878,7 +646,7 @@ static const flex_int16_t yy_def[212] = 206 } ; -static const flex_int16_t yy_nxt[365] = +static yyconst flex_int16_t yy_nxt[365] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 16, 17, 18, 19, 19, 20, @@ -922,7 +690,7 @@ static const flex_int16_t yy_nxt[365] = 206, 206, 206, 206 } ; -static const flex_int16_t yy_chk[365] = +static yyconst flex_int16_t yy_chk[365] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -967,23 +735,23 @@ static const flex_int16_t yy_chk[365] = } ; /* Table of booleans, true if rule could match eol. */ -static const flex_int32_t yy_rule_can_match_eol[54] = +static yyconst flex_int32_t yy_rule_can_match_eol[54] = { 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -extern int yy_flex_debug; -int yy_flex_debug = 1; +extern int eval_flex_debug; +int eval_flex_debug = 1; -static const flex_int16_t yy_rule_linenum[53] = +static yyconst flex_int16_t yy_rule_linenum[53] = { 0, - 106, 111, 117, 127, 133, 151, 158, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216 + 105, 110, 116, 126, 132, 150, 157, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215 } ; static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; @@ -996,7 +764,7 @@ static int *yy_full_state; #define YY_TRAILING_HEAD_MASK 0x4000 #define REJECT \ { \ -*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \ +*yy_cp = (yy_hold_char); /* undo effects of setting up evaltext */ \ yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ (yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \ (yy_state_ptr) = (yy_full_state); /* restore orig. state */ \ @@ -1008,9 +776,9 @@ goto find_rule; \ #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET -char *yytext; +char *evaltext; #line 1 "lexer.ll" -/* Copyright (C) 2015-2018 Internet Systems Consortium, Inc. ("ISC") +/* Copyright (C) 2015-2017 Internet Systems Consortium, Inc. ("ISC") This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this @@ -1035,8 +803,8 @@ char *yytext; 2.5.31 through 2.5.33): it generates code that does not conform to C89. See Debian bug 333231 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */ -# undef yywrap -# define yywrap() 1 +# undef evalwrap +# define evalwrap() 1 /* The location of the current token. The lexer will keep updating it. This variable will be useful for logging errors. */ @@ -1049,10 +817,9 @@ namespace { /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::eval::EvalContext::fatal(msg) -#line 1052 "lexer.cc" /* noyywrap disables automatic rewinding for the next file to parse. Since we always parse only a single string, there's no need to do any wraps. And - using yywrap requires linking with -lfl, which provides the default yywrap + using evalwrap requires linking with -lfl, which provides the default evalwrap implementation that always returns 1 anyway. */ /* nounput simplifies the lexer, by removing support for putting a character back into the input stream. We never use such capability anyway. */ @@ -1071,11 +838,10 @@ namespace { incorrect inputs (e.g., IP addresses) which must be checked. */ #line 80 "lexer.ll" /* This code run each time a pattern is matched. It updates the location - by moving it ahead by yyleng bytes. yyleng specifies the length of the + by moving it ahead by evalleng bytes. evalleng specifies the length of the currently matched token. */ #define YY_USER_ACTION loc.columns(evalleng); -#line 1077 "lexer.cc" -#line 1078 "lexer.cc" +#line 845 "lexer.cc" #define INITIAL 0 @@ -1099,7 +865,7 @@ namespace { /* %if-reentrant */ /* %if-c-only */ -static int yy_init_globals ( void ); +static int yy_init_globals (void ); /* %endif */ /* %if-reentrant */ @@ -1109,31 +875,31 @@ static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy ( void ); +int evallex_destroy (void ); -int yyget_debug ( void ); +int evalget_debug (void ); -void yyset_debug ( int debug_flag ); +void evalset_debug (int debug_flag ); -YY_EXTRA_TYPE yyget_extra ( void ); +YY_EXTRA_TYPE evalget_extra (void ); -void yyset_extra ( YY_EXTRA_TYPE user_defined ); +void evalset_extra (YY_EXTRA_TYPE user_defined ); -FILE *yyget_in ( void ); +FILE *evalget_in (void ); -void yyset_in ( FILE * _in_str ); +void evalset_in (FILE * in_str ); -FILE *yyget_out ( void ); +FILE *evalget_out (void ); -void yyset_out ( FILE * _out_str ); +void evalset_out (FILE * out_str ); - int yyget_leng ( void ); +yy_size_t evalget_leng (void ); -char *yyget_text ( void ); +char *evalget_text (void ); -int yyget_lineno ( void ); +int evalget_lineno (void ); -void yyset_lineno ( int _line_number ); +void evalset_lineno (int line_number ); /* %if-bison-bridge */ /* %endif */ @@ -1144,35 +910,34 @@ void yyset_lineno ( int _line_number ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap ( void ); +extern "C" int evalwrap (void ); #else -extern int yywrap ( void ); +extern int evalwrap (void ); #endif #endif /* %not-for-header */ -#ifndef YY_NO_UNPUT - -#endif + /* %ok-for-header */ /* %endif */ #ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); +static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); +static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT /* %if-c-only Standard (non-C++) definition */ /* %not-for-header */ + #ifdef __cplusplus -static int yyinput ( void ); +static int yyinput (void ); #else -static int input ( void ); +static int input (void ); #endif /* %ok-for-header */ @@ -1185,12 +950,7 @@ static int input ( void ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else #define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -1199,7 +959,7 @@ static int input ( void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( evaltext, evalleng, 1, evalout )) {} } while (0) /* %endif */ /* %if-c++-only C++ definition */ /* %endif */ @@ -1214,20 +974,20 @@ static int input ( void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + size_t n; \ for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + (c = getc( evalin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ + if ( c == EOF && ferror( evalin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + while ( (result = fread(buf, 1, max_size, evalin))==0 && ferror(evalin)) \ { \ if( errno != EINTR) \ { \ @@ -1235,7 +995,7 @@ static int input ( void ); break; \ } \ errno=0; \ - clearerr(yyin); \ + clearerr(evalin); \ } \ }\ \ @@ -1268,9 +1028,11 @@ static int input ( void ); /* %if-tables-serialization structures and prototypes */ /* %not-for-header */ + /* %ok-for-header */ /* %not-for-header */ + /* %tables-yydmap generated elements */ /* %endif */ /* end tables serialization structures and prototypes */ @@ -1284,15 +1046,15 @@ static int input ( void ); #define YY_DECL_IS_OURS 1 /* %if-c-only Standard (non-C++) definition */ -extern int yylex (void); +extern int evallex (void); -#define YY_DECL int yylex (void) +#define YY_DECL int evallex (void) /* %endif */ /* %if-c++-only C++ definition */ /* %endif */ #endif /* !YY_DECL */ -/* Code executed at the beginning of each rule, after yytext and yyleng +/* Code executed at the beginning of each rule, after evaltext and evalleng * have been set up. */ #ifndef YY_USER_ACTION @@ -1301,7 +1063,7 @@ extern int yylex (void); /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; +#define YY_BREAK break; #endif /* %% [6.0] YY_RULE_SETUP definition goes here */ @@ -1309,14 +1071,38 @@ extern int yylex (void); YY_USER_ACTION /* %not-for-header */ + /** The main scanner function which does all the work. */ YY_DECL { - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; +/* %% [7.0] user's declarations go here */ +#line 86 "lexer.ll" + + + + /* Code run each time evallex is called. */ + loc.step(); + + if (start_token_flag) { + start_token_flag = false; + switch (start_token_value) { + case EvalContext::PARSER_BOOL: + return isc::eval::EvalParser::make_TOPLEVEL_BOOL(loc); + default: + case EvalContext::PARSER_STRING: + return isc::eval::EvalParser::make_TOPLEVEL_STRING(loc); + } + } + + + +#line 1105 "lexer.cc" + if ( !(yy_init) ) { (yy_init) = 1; @@ -1327,67 +1113,42 @@ YY_DECL /* Create the reject buffer large enough to save one state per allowed character. */ if ( ! (yy_state_buf) ) - (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ); + (yy_state_buf) = (yy_state_type *)evalalloc(YY_STATE_BUF_SIZE ); if ( ! (yy_state_buf) ) - YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); + YY_FATAL_ERROR( "out of dynamic memory in evallex()" ); if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ - if ( ! yyin ) + if ( ! evalin ) /* %if-c-only */ - yyin = stdin; + evalin = stdin; /* %endif */ /* %if-c++-only */ /* %endif */ - if ( ! yyout ) + if ( ! evalout ) /* %if-c-only */ - yyout = stdout; + evalout = stdout; /* %endif */ /* %if-c++-only */ /* %endif */ if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); + evalensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); + eval_create_buffer(evalin,YY_BUF_SIZE ); } - yy_load_buffer_state( ); + eval_load_buffer_state( ); } - { -/* %% [7.0] user's declarations go here */ -#line 86 "lexer.ll" - - - -#line 90 "lexer.ll" - /* Code run each time evallex is called. */ - loc.step(); - - if (start_token_flag) { - start_token_flag = false; - switch (start_token_value) { - case EvalContext::PARSER_BOOL: - return isc::eval::EvalParser::make_TOPLEVEL_BOOL(loc); - default: - case EvalContext::PARSER_STRING: - return isc::eval::EvalParser::make_TOPLEVEL_STRING(loc); - } - } - - - -#line 1383 "lexer.cc" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + while ( 1 ) /* loops until end-of-file is reached */ { /* %% [8.0] yymore()-related code goes here */ yy_cp = (yy_c_buf_p); - /* Support of yytext. */ + /* Support of evaltext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of @@ -1404,14 +1165,14 @@ YY_DECL yy_match: do { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; 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 >= 207 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *(yy_state_ptr)++ = yy_current_state; ++yy_cp; } @@ -1459,31 +1220,31 @@ find_rule: /* we branch to this label when backing up */ YY_DO_BEFORE_ACTION; -/* %% [11.0] code for yylineno update goes here */ +/* %% [11.0] code for evallineno update goes here */ if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) { int yyl; - for ( yyl = 0; yyl < yyleng; ++yyl ) - if ( yytext[yyl] == '\n' ) - - yylineno++; + for ( yyl = 0; yyl < evalleng; ++yyl ) + if ( evaltext[yyl] == '\n' ) + + evallineno++; ; } do_action: /* This label is used only to access EOF actions. */ /* %% [12.0] debug code goes here */ - if ( yy_flex_debug ) + if ( eval_flex_debug ) { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); else if ( yy_act < 53 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", - (long)yy_rule_linenum[yy_act], yytext ); + (long)yy_rule_linenum[yy_act], evaltext ); else if ( yy_act == 53 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", - yytext ); + evaltext ); else if ( yy_act == 54 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else @@ -1495,7 +1256,7 @@ do_action: /* This label is used only to access EOF actions. */ /* %% [13.0] actions go here */ case 1: YY_RULE_SETUP -#line 106 "lexer.ll" +#line 105 "lexer.ll" { /* Ok, we found a with space. Let's ignore it and update loc variable. */ loc.step(); @@ -1504,7 +1265,7 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 111 "lexer.ll" +#line 110 "lexer.ll" { /* Newline found. Let's update the location and continue. */ loc.lines(evalleng); @@ -1513,7 +1274,7 @@ YY_RULE_SETUP YY_BREAK case 3: YY_RULE_SETUP -#line 117 "lexer.ll" +#line 116 "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. @@ -1526,7 +1287,7 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 127 "lexer.ll" +#line 126 "lexer.ll" { /* A hex string has been matched. It contains the '0x' or '0X' header followed by at least one hexadecimal digit. */ @@ -1535,7 +1296,7 @@ YY_RULE_SETUP YY_BREAK case 5: YY_RULE_SETUP -#line 133 "lexer.ll" +#line 132 "lexer.ll" { /* An integer was found. */ std::string tmp(evaltext); @@ -1557,7 +1318,7 @@ YY_RULE_SETUP case 6: /* rule 6 can match eol */ YY_RULE_SETUP -#line 151 "lexer.ll" +#line 150 "lexer.ll" { /* This string specifies option name starting with a letter and further containing letters, digits, hyphens and @@ -1567,7 +1328,7 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -#line 158 "lexer.ll" +#line 157 "lexer.ll" { /* IPv4 or IPv6 address */ std::string tmp(evaltext); @@ -1584,239 +1345,239 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 172 "lexer.ll" +#line 171 "lexer.ll" return isc::eval::EvalParser::make_EQUAL(loc); YY_BREAK case 9: YY_RULE_SETUP -#line 173 "lexer.ll" +#line 172 "lexer.ll" return isc::eval::EvalParser::make_OPTION(loc); YY_BREAK case 10: YY_RULE_SETUP -#line 174 "lexer.ll" +#line 173 "lexer.ll" return isc::eval::EvalParser::make_RELAY4(loc); YY_BREAK case 11: YY_RULE_SETUP -#line 175 "lexer.ll" +#line 174 "lexer.ll" return isc::eval::EvalParser::make_RELAY6(loc); YY_BREAK case 12: YY_RULE_SETUP -#line 176 "lexer.ll" +#line 175 "lexer.ll" return isc::eval::EvalParser::make_PEERADDR(loc); YY_BREAK case 13: YY_RULE_SETUP -#line 177 "lexer.ll" +#line 176 "lexer.ll" return isc::eval::EvalParser::make_LINKADDR(loc); YY_BREAK case 14: YY_RULE_SETUP -#line 178 "lexer.ll" +#line 177 "lexer.ll" return isc::eval::EvalParser::make_TEXT(loc); YY_BREAK case 15: YY_RULE_SETUP -#line 179 "lexer.ll" +#line 178 "lexer.ll" return isc::eval::EvalParser::make_HEX(loc); YY_BREAK case 16: YY_RULE_SETUP -#line 180 "lexer.ll" +#line 179 "lexer.ll" return isc::eval::EvalParser::make_EXISTS(loc); YY_BREAK case 17: YY_RULE_SETUP -#line 181 "lexer.ll" +#line 180 "lexer.ll" return isc::eval::EvalParser::make_PKT(loc); YY_BREAK case 18: YY_RULE_SETUP -#line 182 "lexer.ll" +#line 181 "lexer.ll" return isc::eval::EvalParser::make_IFACE(loc); YY_BREAK case 19: YY_RULE_SETUP -#line 183 "lexer.ll" +#line 182 "lexer.ll" return isc::eval::EvalParser::make_SRC(loc); YY_BREAK case 20: YY_RULE_SETUP -#line 184 "lexer.ll" +#line 183 "lexer.ll" return isc::eval::EvalParser::make_DST(loc); YY_BREAK case 21: YY_RULE_SETUP -#line 185 "lexer.ll" +#line 184 "lexer.ll" return isc::eval::EvalParser::make_LEN(loc); YY_BREAK case 22: YY_RULE_SETUP -#line 186 "lexer.ll" +#line 185 "lexer.ll" return isc::eval::EvalParser::make_PKT4(loc); YY_BREAK case 23: YY_RULE_SETUP -#line 187 "lexer.ll" +#line 186 "lexer.ll" return isc::eval::EvalParser::make_CHADDR(loc); YY_BREAK case 24: YY_RULE_SETUP -#line 188 "lexer.ll" +#line 187 "lexer.ll" return isc::eval::EvalParser::make_HLEN(loc); YY_BREAK case 25: YY_RULE_SETUP -#line 189 "lexer.ll" +#line 188 "lexer.ll" return isc::eval::EvalParser::make_HTYPE(loc); YY_BREAK case 26: YY_RULE_SETUP -#line 190 "lexer.ll" +#line 189 "lexer.ll" return isc::eval::EvalParser::make_CIADDR(loc); YY_BREAK case 27: YY_RULE_SETUP -#line 191 "lexer.ll" +#line 190 "lexer.ll" return isc::eval::EvalParser::make_GIADDR(loc); YY_BREAK case 28: YY_RULE_SETUP -#line 192 "lexer.ll" +#line 191 "lexer.ll" return isc::eval::EvalParser::make_YIADDR(loc); YY_BREAK case 29: YY_RULE_SETUP -#line 193 "lexer.ll" +#line 192 "lexer.ll" return isc::eval::EvalParser::make_SIADDR(loc); YY_BREAK case 30: YY_RULE_SETUP -#line 194 "lexer.ll" +#line 193 "lexer.ll" return isc::eval::EvalParser::make_PKT6(loc); YY_BREAK case 31: YY_RULE_SETUP -#line 195 "lexer.ll" +#line 194 "lexer.ll" return isc::eval::EvalParser::make_MSGTYPE(loc); YY_BREAK case 32: YY_RULE_SETUP -#line 196 "lexer.ll" +#line 195 "lexer.ll" return isc::eval::EvalParser::make_TRANSID(loc); YY_BREAK case 33: YY_RULE_SETUP -#line 197 "lexer.ll" +#line 196 "lexer.ll" return isc::eval::EvalParser::make_VENDOR(loc); YY_BREAK case 34: YY_RULE_SETUP -#line 198 "lexer.ll" +#line 197 "lexer.ll" return isc::eval::EvalParser::make_VENDOR_CLASS(loc); YY_BREAK case 35: YY_RULE_SETUP -#line 199 "lexer.ll" +#line 198 "lexer.ll" return isc::eval::EvalParser::make_DATA(loc); YY_BREAK case 36: YY_RULE_SETUP -#line 200 "lexer.ll" +#line 199 "lexer.ll" return isc::eval::EvalParser::make_ENTERPRISE(loc); YY_BREAK case 37: YY_RULE_SETUP -#line 201 "lexer.ll" +#line 200 "lexer.ll" return isc::eval::EvalParser::make_SUBSTRING(loc); YY_BREAK case 38: YY_RULE_SETUP -#line 202 "lexer.ll" +#line 201 "lexer.ll" return isc::eval::EvalParser::make_ALL(loc); YY_BREAK case 39: YY_RULE_SETUP -#line 203 "lexer.ll" +#line 202 "lexer.ll" return isc::eval::EvalParser::make_CONCAT(loc); YY_BREAK case 40: YY_RULE_SETUP -#line 204 "lexer.ll" +#line 203 "lexer.ll" return isc::eval::EvalParser::make_IFELSE(loc); YY_BREAK case 41: YY_RULE_SETUP -#line 205 "lexer.ll" +#line 204 "lexer.ll" return isc::eval::EvalParser::make_NOT(loc); YY_BREAK case 42: YY_RULE_SETUP -#line 206 "lexer.ll" +#line 205 "lexer.ll" return isc::eval::EvalParser::make_AND(loc); YY_BREAK case 43: YY_RULE_SETUP -#line 207 "lexer.ll" +#line 206 "lexer.ll" return isc::eval::EvalParser::make_OR(loc); YY_BREAK case 44: YY_RULE_SETUP -#line 208 "lexer.ll" +#line 207 "lexer.ll" return isc::eval::EvalParser::make_MEMBER(loc); YY_BREAK case 45: YY_RULE_SETUP -#line 209 "lexer.ll" +#line 208 "lexer.ll" return isc::eval::EvalParser::make_DOT(loc); YY_BREAK case 46: YY_RULE_SETUP -#line 210 "lexer.ll" +#line 209 "lexer.ll" return isc::eval::EvalParser::make_LPAREN(loc); YY_BREAK case 47: YY_RULE_SETUP -#line 211 "lexer.ll" +#line 210 "lexer.ll" return isc::eval::EvalParser::make_RPAREN(loc); YY_BREAK case 48: YY_RULE_SETUP -#line 212 "lexer.ll" +#line 211 "lexer.ll" return isc::eval::EvalParser::make_LBRACKET(loc); YY_BREAK case 49: YY_RULE_SETUP -#line 213 "lexer.ll" +#line 212 "lexer.ll" return isc::eval::EvalParser::make_RBRACKET(loc); YY_BREAK case 50: YY_RULE_SETUP -#line 214 "lexer.ll" +#line 213 "lexer.ll" return isc::eval::EvalParser::make_COMA(loc); YY_BREAK case 51: YY_RULE_SETUP -#line 215 "lexer.ll" +#line 214 "lexer.ll" return isc::eval::EvalParser::make_ANY(loc); YY_BREAK case 52: YY_RULE_SETUP -#line 216 "lexer.ll" +#line 215 "lexer.ll" driver.error (loc, "Invalid character: " + std::string(evaltext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 217 "lexer.ll" +#line 216 "lexer.ll" return isc::eval::EvalParser::make_END(loc); YY_BREAK case 53: YY_RULE_SETUP -#line 218 "lexer.ll" +#line 217 "lexer.ll" ECHO; YY_BREAK -#line 1819 "lexer.cc" +#line 1581 "lexer.cc" case YY_END_OF_BUFFER: { @@ -1831,19 +1592,15 @@ ECHO; { /* We're scanning a new file or input source. It's * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure + * just pointed evalin at a new source and called + * evallex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; -/* %if-c-only */ - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; -/* %endif */ -/* %if-c++-only */ -/* %endif */ + YY_CURRENT_BUFFER_LVALUE->yy_input_file = evalin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } @@ -1897,11 +1654,11 @@ ECHO; { (yy_did_buffer_switch_on_eof) = 0; - if ( yywrap( ) ) + if ( evalwrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up - * yytext, we can now set up + * evaltext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the @@ -1950,12 +1707,12 @@ ECHO; "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ +} /* end of evallex */ /* %ok-for-header */ /* %if-c++-only */ /* %not-for-header */ + /* %ok-for-header */ /* %endif */ @@ -1973,9 +1730,9 @@ static int yy_get_next_buffer (void) /* %if-c++-only */ /* %endif */ { - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -2004,7 +1761,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -2017,7 +1774,7 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -2043,7 +1800,7 @@ static int yy_get_next_buffer (void) if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); + evalrestart(evalin ); } else @@ -2057,15 +1814,12 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) evalrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; @@ -2081,13 +1835,14 @@ static int yy_get_next_buffer (void) /* %if-c-only */ /* %not-for-header */ + static yy_state_type yy_get_previous_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { - yy_state_type yy_current_state; - char *yy_cp; + register yy_state_type yy_current_state; + register char *yy_cp; /* %% [15.0] code to get the start state into yy_current_state goes here */ yy_current_state = (yy_start); @@ -2098,14 +1853,14 @@ static int yy_get_next_buffer (void) for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { /* %% [16.0] code to find the next state goes here */ - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 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 >= 207 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *(yy_state_ptr)++ = yy_current_state; } @@ -2123,17 +1878,17 @@ static int yy_get_next_buffer (void) /* %if-c++-only */ /* %endif */ { - int yy_is_jam; + register int yy_is_jam; /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */ - YY_CHAR yy_c = 1; + register YY_CHAR yy_c = 1; 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 >= 207 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 206); if ( ! yy_is_jam ) *(yy_state_ptr)++ = yy_current_state; @@ -2141,11 +1896,9 @@ static int yy_get_next_buffer (void) return yy_is_jam ? 0 : yy_current_state; } -#ifndef YY_NO_UNPUT /* %if-c-only */ /* %endif */ -#endif /* %if-c-only */ #ifndef YY_NO_INPUT @@ -2175,7 +1928,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -2192,14 +1945,14 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - yyrestart( yyin ); + evalrestart(evalin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap( ) ) - return 0; + if ( evalwrap( ) ) + return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -2218,13 +1971,13 @@ static int yy_get_next_buffer (void) } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ + *(yy_c_buf_p) = '\0'; /* preserve evaltext */ (yy_hold_char) = *++(yy_c_buf_p); -/* %% [19.0] update BOL and yylineno */ +/* %% [19.0] update BOL and evallineno */ if ( c == '\n' ) - - yylineno++; + + evallineno++; ; return c; @@ -2239,31 +1992,28 @@ static int yy_get_next_buffer (void) * @note This function does not reset the start condition to @c INITIAL . */ /* %if-c-only */ - void yyrestart (FILE * input_file ) + void evalrestart (FILE * input_file ) /* %endif */ /* %if-c++-only */ /* %endif */ { if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); + evalensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); + eval_create_buffer(evalin,YY_BUF_SIZE ); } - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); + eval_init_buffer(YY_CURRENT_BUFFER,input_file ); + eval_load_buffer_state( ); } -/* %if-c++-only */ -/* %endif */ - /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ /* %if-c-only */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) + void eval_switch_to_buffer (YY_BUFFER_STATE new_buffer ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2271,10 +2021,10 @@ static int yy_get_next_buffer (void) /* TODO. We should be able to replace this entire function body * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); + * evalpop_buffer_state(); + * evalpush_buffer_state(new_buffer); */ - yyensure_buffer_stack (); + evalensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; @@ -2287,29 +2037,25 @@ static int yy_get_next_buffer (void) } YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); + eval_load_buffer_state( ); /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe + * EOF (evalwrap()) processing, but the only time this flag + * is looked at is after evalwrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } /* %if-c-only */ -static void yy_load_buffer_state (void) +static void eval_load_buffer_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; -/* %if-c-only */ - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; -/* %endif */ -/* %if-c++-only */ -/* %endif */ + evalin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } @@ -2320,42 +2066,39 @@ static void yy_load_buffer_state (void) * @return the allocated buffer state. */ /* %if-c-only */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) + YY_BUFFER_STATE eval_create_buffer (FILE * file, int size ) /* %endif */ /* %if-c++-only */ /* %endif */ { YY_BUFFER_STATE b; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) evalalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in eval_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + b->yy_ch_buf = (char *) evalalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in eval_create_buffer()" ); b->yy_is_our_buffer = 1; - yy_init_buffer( b, file ); + eval_init_buffer(b,file ); return b; } -/* %if-c++-only */ -/* %endif */ - /** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() + * @param b a buffer created with eval_create_buffer() * */ /* %if-c-only */ - void yy_delete_buffer (YY_BUFFER_STATE b ) + void eval_delete_buffer (YY_BUFFER_STATE b ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2368,17 +2111,17 @@ static void yy_load_buffer_state (void) YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); + evalfree((void *) b->yy_ch_buf ); - yyfree( (void *) b ); + evalfree((void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. + * such as during a evalrestart() or at EOF. */ /* %if-c-only */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + static void eval_init_buffer (YY_BUFFER_STATE b, FILE * file ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2386,17 +2129,13 @@ static void yy_load_buffer_state (void) { int oerrno = errno; - yy_flush_buffer( b ); + eval_flush_buffer(b ); -/* %if-c-only */ b->yy_input_file = file; -/* %endif */ -/* %if-c++-only */ -/* %endif */ b->yy_fill_buffer = 1; - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. + /* If b is the current buffer, then eval_init_buffer was _probably_ + * called from evalrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ @@ -2419,7 +2158,7 @@ static void yy_load_buffer_state (void) * */ /* %if-c-only */ - void yy_flush_buffer (YY_BUFFER_STATE b ) + void eval_flush_buffer (YY_BUFFER_STATE b ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2442,7 +2181,7 @@ static void yy_load_buffer_state (void) b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); + eval_load_buffer_state( ); } /* %if-c-or-c++ */ @@ -2453,7 +2192,7 @@ static void yy_load_buffer_state (void) * */ /* %if-c-only */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +void evalpush_buffer_state (YY_BUFFER_STATE new_buffer ) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2461,9 +2200,9 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) if (new_buffer == NULL) return; - yyensure_buffer_stack(); + evalensure_buffer_stack(); - /* This block is copied from yy_switch_to_buffer. */ + /* This block is copied from eval_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ @@ -2477,8 +2216,8 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); + /* copied from eval_switch_to_buffer. */ + eval_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /* %endif */ @@ -2489,7 +2228,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) * */ /* %if-c-only */ -void yypop_buffer_state (void) +void evalpop_buffer_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2497,13 +2236,13 @@ void yypop_buffer_state (void) if (!YY_CURRENT_BUFFER) return; - yy_delete_buffer(YY_CURRENT_BUFFER ); + eval_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); + eval_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } @@ -2514,7 +2253,7 @@ void yypop_buffer_state (void) * Guarantees space for at least one push. */ /* %if-c-only */ -static void yyensure_buffer_stack (void) +static void evalensure_buffer_stack (void) /* %endif */ /* %if-c++-only */ /* %endif */ @@ -2527,15 +2266,15 @@ static void yyensure_buffer_stack (void) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)evalalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - + YY_FATAL_ERROR( "out of dynamic memory in evalensure_buffer_stack()" ); + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; @@ -2544,15 +2283,15 @@ static void yyensure_buffer_stack (void) if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; + int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + (yy_buffer_stack) = (struct yy_buffer_state**)evalrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + YY_FATAL_ERROR( "out of dynamic memory in evalensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); @@ -2566,9 +2305,9 @@ static void yyensure_buffer_stack (void) * @param base the character buffer * @param size the size in bytes of the character buffer * - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +YY_BUFFER_STATE eval_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; @@ -2576,53 +2315,53 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ - return NULL; + return 0; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) evalalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + YY_FATAL_ERROR( "out of dynamic memory in eval_scan_buffer()" ); - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; + b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - yy_switch_to_buffer( b ); + eval_switch_to_buffer(b ); return b; } /* %endif */ /* %if-c-only */ -/** Setup the input buffer state to scan a string. The next call to yylex() will +/** Setup the input buffer state to scan a string. The next call to evallex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. + * eval_scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) +YY_BUFFER_STATE eval_scan_string (yyconst char * yystr ) { - return yy_scan_bytes( yystr, (int) strlen(yystr) ); + return eval_scan_bytes(yystr,strlen(yystr) ); } /* %endif */ /* %if-c-only */ -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will +/** Setup the input buffer state to scan the given bytes. The next call to evallex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE eval_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -2630,19 +2369,19 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) int i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); + n = _yybytes_len + 2; + buf = (char *) evalalloc(n ); if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + YY_FATAL_ERROR( "out of dynamic memory in eval_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - b = yy_scan_buffer( buf, n ); + b = eval_scan_buffer(buf,n ); if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + YY_FATAL_ERROR( "bad buffer in eval_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. @@ -2658,9 +2397,9 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) #endif /* %if-c-only */ -static void yynoreturn yy_fatal_error (const char* msg ) +static void yy_fatal_error (yyconst char* msg ) { - fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* %endif */ @@ -2673,14 +2412,14 @@ static void yynoreturn yy_fatal_error (const char* msg ) #define yyless(n) \ do \ { \ - /* Undo effects of setting up yytext. */ \ + /* Undo effects of setting up evaltext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ + evaltext[evalleng] = (yy_hold_char); \ + (yy_c_buf_p) = evaltext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ + evalleng = yyless_macro_arg; \ } \ while ( 0 ) @@ -2693,82 +2432,82 @@ static void yynoreturn yy_fatal_error (const char* msg ) /** Get the current line number. * */ -int yyget_lineno (void) +int evalget_lineno (void) { - - return yylineno; + + return evallineno; } /** Get the input stream. * */ -FILE *yyget_in (void) +FILE *evalget_in (void) { - return yyin; + return evalin; } /** Get the output stream. * */ -FILE *yyget_out (void) +FILE *evalget_out (void) { - return yyout; + return evalout; } /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t evalget_leng (void) { - return yyleng; + return evalleng; } /** Get the current token. * */ -char *yyget_text (void) +char *evalget_text (void) { - return yytext; + return evaltext; } /* %if-reentrant */ /* %endif */ /** Set the current line number. - * @param _line_number line number + * @param line_number * */ -void yyset_lineno (int _line_number ) +void evalset_lineno (int line_number ) { - yylineno = _line_number; + evallineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param _in_str A readable stream. + * @param in_str A readable stream. * - * @see yy_switch_to_buffer + * @see eval_switch_to_buffer */ -void yyset_in (FILE * _in_str ) +void evalset_in (FILE * in_str ) { - yyin = _in_str ; + evalin = in_str ; } -void yyset_out (FILE * _out_str ) +void evalset_out (FILE * out_str ) { - yyout = _out_str ; + evalout = out_str ; } -int yyget_debug (void) +int evalget_debug (void) { - return yy_flex_debug; + return eval_flex_debug; } -void yyset_debug (int _bdebug ) +void evalset_debug (int bdebug ) { - yy_flex_debug = _bdebug ; + eval_flex_debug = bdebug ; } /* %endif */ @@ -2782,16 +2521,16 @@ void yyset_debug (int _bdebug ) static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. + * This function is called from evallex_destroy(), so don't allocate here. */ - /* We do not touch yylineno unless the option is enabled. */ - yylineno = 1; + /* We do not touch evallineno unless the option is enabled. */ + evallineno = 1; - (yy_buffer_stack) = NULL; + (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; + (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; @@ -2802,41 +2541,41 @@ static int yy_init_globals (void) /* Defined in main.c */ #ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; + evalin = stdin; + evalout = stdout; #else - yyin = NULL; - yyout = NULL; + evalin = (FILE *) 0; + evalout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by - * yylex_init() + * evallex_init() */ return 0; } /* %endif */ /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */ -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) +/* evallex_destroy is for both reentrant and non-reentrant scanners. */ +int evallex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); + eval_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); + evalpop_buffer_state(); } /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); + evalfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; - yyfree ( (yy_state_buf) ); + evalfree ( (yy_state_buf) ); (yy_state_buf) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ + * evallex() is called, initialization will occur. */ yy_init_globals( ); /* %if-reentrant */ @@ -2850,19 +2589,18 @@ int yylex_destroy (void) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { - - int i; + register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) +static int yy_flex_strlen (yyconst char * s ) { - int n; + register int n; for ( n = 0; s[n]; ++n ) ; @@ -2870,14 +2608,13 @@ static int yy_flex_strlen (const char * s ) } #endif -void *yyalloc (yy_size_t size ) +void *evalalloc (yy_size_t size ) { - return malloc(size); + return (void *) malloc( size ); } -void *yyrealloc (void * ptr, yy_size_t size ) +void *evalrealloc (void * ptr, yy_size_t size ) { - /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -2885,12 +2622,12 @@ void *yyrealloc (void * ptr, yy_size_t size ) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return realloc(ptr, size); + return (void *) realloc( (char *) ptr, size ); } -void yyfree (void * ptr ) +void evalfree (void * ptr ) { - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see evalrealloc() for (char *) cast */ } /* %if-tables-serialization definitions */ @@ -2900,7 +2637,8 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 218 "lexer.ll" +#line 217 "lexer.ll" + using namespace isc::eval; |