diff --git a/doc/guide/dhcp4-srv.xml b/doc/guide/dhcp4-srv.xml
index 9629f67b95..b17cd80b86 100644
--- a/doc/guide/dhcp4-srv.xml
+++ b/doc/guide/dhcp4-srv.xml
@@ -3995,20 +3995,20 @@ for each subnet. Here's an example:
{
"name": "kakapo",
"relay": {
- "ip-address": "192.3.5.6"
+ "ip-addresses": [ "192.3.5.6" ]
},
"subnet4": [
{
"subnet": "192.0.2.0/26",
"relay": {
- "ip-address": "192.1.1.1"
+ "ip-addresses": [ "192.1.1.1" ]
},
"pools": [ { "pool": "192.0.2.63 - 192.0.2.63" } ]
},
{
"subnet": "10.0.0.0/24",
"relay": {
- "ip-address": "192.2.2.2"
+ "ip-addresses": [ "192.2.2.2" ]
},
"pools": [ { "pool": "10.0.0.16 - 10.0.0.16" } ]
}
@@ -4138,7 +4138,6 @@ desired outcome if one desires to service only clients of known properties
"interface" or "relay" parameter. All subnets belonging to this shared
network will inherit those parameters.
-
@@ -4311,7 +4310,7 @@ autogenerated IDs are not stable across configuration changes.
"subnet": "192.0.2.0/24",
"pools": [ { "pool": "192.0.2.10 - 192.0.2.20" } ],
"relay": {
- "ip-address": "10.0.0.1"
+ "ip-addresses": [ "10.0.0.1" ]
},
...
}
@@ -4321,8 +4320,17 @@ autogenerated IDs are not stable across configuration changes.
- If "relay" is specified, the "ip-address" parameter within
+ If "relay" is specified, the "ip-addresses" parameter within
it is mandatory.
+
+
+
+ As of Kea 1.4, the "ip-address" parameter has been deprecated in favor
+ of "ip-addresses" which supports specifying a list of addresses.
+ Configuration parsing, will honor the singular form for now but users are
+ encouraged to migrate.
+
+
@@ -4351,14 +4359,14 @@ autogenerated IDs are not stable across configuration changes.
"pools": [ { "pool": "10.1.1.2 - 10.1.1.20" } ],
"client-class" "docsis3.0",
"relay": {
- "ip-address": "10.1.1.1"
+ "ip-addresses": [ "10.1.1.1 ]"
}
},
{
"subnet": "192.0.2.0/24",
"pools": [ { "pool": "192.0.2.10 - 192.0.2.20" } ],
"relay": {
- "ip-address": "10.1.1.1"
+ "ip-addresses": [ "10.1.1.1" ]
}
}
],
diff --git a/doc/guide/dhcp6-srv.xml b/doc/guide/dhcp6-srv.xml
index a7bd2902d6..f1e8d8b3da 100644
--- a/doc/guide/dhcp6-srv.xml
+++ b/doc/guide/dhcp6-srv.xml
@@ -3496,7 +3496,7 @@ If not specified, the default value is:
// Subnets from this shared network will be selected for clients
// communicating via relay agent having the specified IP address.
"relay": {
- "ip-address": "2001:db8:2:34::1"
+ "ip-addresses": [ "2001:db8:2:34::1" ]
},
// This starts a list of subnets in this shared network.
@@ -3523,7 +3523,7 @@ If not specified, the default value is:
"subnet": "2001:db9::/48",
"pools": [ { "pool": "2001:db9::/64" } ],
"relay": {
- "ip-address": "2001:db8:1:2::1"
+ "ip-addresses": [ "2001:db8:1:2::1" ]
}
}
]
@@ -3555,7 +3555,7 @@ If not specified, the default value is:
{
"name": "lab-network3",
"relay": {
- "ip-address": "2001:db8:2:34::1"
+ "ip-addresses": [ "2001:db8:2:34::1" ]
},
// This applies to all subnets in this shared network, unless
@@ -3671,13 +3671,13 @@ for each subnet. Here's an example:
{
"name": "kakapo",
"relay": {
- "ip-address": "2001:db8::abcd"
+ "ip-addresses": [ "2001:db8::abcd" ]
},
"subnet6": [
{
"subnet": "2001:db8::/64",
"relay": {
- "ip-address": "2001:db8::1234"
+ "ip-addresses": [ "2001:db8::1234" ]
},
"pools": [ { "pool": "2001:db8::1 - 2001:db8::ffff" } ]
},
@@ -3685,7 +3685,7 @@ for each subnet. Here's an example:
"subnet": "3ffe:abcd::/64",
"pools": [ { "pool": "3ffe:abcd::1 - 3ffe:abcd::ffff" } ],
"relay": {
- "ip-address": "3ffe:abcd::cafe"
+ "ip-addresses": [ "3ffe:abcd::cafe" ]
}
}
]
@@ -3730,7 +3730,7 @@ as long as it is valid IPv6 address.
{
"name": "galah",
"relay": {
- "ip-address": "2001:db8:2:34::1"
+ "ip-address": [ "2001:db8:2:34::1" ]
},
"subnet6": [
{
@@ -3781,7 +3781,7 @@ as long as it is valid IPv6 address.
{
"name": "galah",
"relay": {
- "ip-address": "2001:db8:2:34::1"
+ "ip-addresses": [ "2001:db8:2:34::1" ]
},
"subnet6": [
{
@@ -3833,7 +3833,7 @@ desired outcome if one desires to service only clients of known properties
{
"name": "frog",
"relay": {
- "ip-address": "2001:db8:2:34::1"
+ "ip-addresses": [ "2001:db8:2:34::1" ]
},
"subnet6": [
{
@@ -4252,7 +4252,7 @@ autogenerated IDs are not stable across configuration changes.
}
],
"relay": {
- "ip-address": "3000::1"
+ "ip-addresses": [ "3000::1" ]
}
}
]
@@ -4260,9 +4260,18 @@ autogenerated IDs are not stable across configuration changes.
- If "relay" is specified, the "ip-address" parameter within
+ If "relay" is specified, the "ip-addresses" parameter within
it is mandatory.
+
+
+ As of Kea 1.4, the "ip-address" parameter in "relay" has been deprecated
+ in favor of "ip-addresses" which supports specifying a list of addresses.
+ Configuration parsing, will honor the singular form for now but users are
+ encouraged to migrate.
+
+
+
@@ -4293,7 +4302,7 @@ autogenerated IDs are not stable across configuration changes.
],
"client-class": "VENDOR_CLASS_docsis3.0",
"relay": {
- "ip-address": "3000::1"
+ "ip-addresses": [ "3000::1" ]
}
},
@@ -4305,7 +4314,7 @@ autogenerated IDs are not stable across configuration changes.
}
],
"relay": {
- "ip-address": "3000::1"
+ "ip-addresses": [ "3000::1" ]
}
}
]
diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc
index 989843297c..63aa9cf038 100644
--- a/src/bin/dhcp4/dhcp4_lexer.cc
+++ b/src/bin/dhcp4/dhcp4_lexer.cc
@@ -1,27 +1,22 @@
-#line 1 "dhcp4_lexer.cc"
+#line 2 "dhcp4_lexer.cc"
-#line 3 "dhcp4_lexer.cc"
+#line 4 "dhcp4_lexer.cc"
#define YY_INT_ALIGNED short int
/* 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
@@ -41,7 +36,7 @@
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 4
+#define YY_FLEX_SUBMINOR_VERSION 0
#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
-#if defined(__GNUC__) && __GNUC__ >= 3
-#define yynoreturn __attribute__((__noreturn__))
+/* 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
+
+#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,16 +185,20 @@ 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. */
@@ -452,19 +229,19 @@ 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)
@@ -472,15 +249,16 @@ extern FILE *yyin, *yyout;
#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,7 +278,7 @@ 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.
@@ -528,7 +306,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 +323,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 +333,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 +354,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,115 +364,126 @@ 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;
+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 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 parser4_ensure_buffer_stack (void );
+static void parser4__load_buffer_state (void );
+static void parser4__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 parser4__flush_buffer(YY_CURRENT_BUFFER )
+
+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 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;
+int parser4_lineno = 1;
+
+extern char *parser4_text;
#ifdef yytext_ptr
#undef yytext_ptr
#endif
-#define yytext_ptr yytext
+#define yytext_ptr parser4_text
/* %% [1.5] DFA */
/* %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 );
+#if defined(__GNUC__) && __GNUC__ >= 3
+__attribute__((__noreturn__))
+#endif
+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 167
-#define YY_END_OF_BUFFER 168
+#define YY_NUM_RULES 168
+#define YY_END_OF_BUFFER 169
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -700,21 +491,21 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[1393] =
+static yyconst flex_int16_t yy_accept[1396] =
{ 0,
- 160, 160, 0, 0, 0, 0, 0, 0, 0, 0,
- 168, 166, 10, 11, 166, 1, 160, 157, 160, 160,
- 166, 159, 158, 166, 166, 166, 166, 166, 153, 154,
- 166, 166, 166, 155, 156, 5, 5, 5, 166, 166,
- 166, 10, 11, 0, 0, 149, 0, 0, 0, 0,
+ 161, 161, 0, 0, 0, 0, 0, 0, 0, 0,
+ 169, 167, 10, 11, 167, 1, 161, 158, 161, 161,
+ 167, 160, 159, 167, 167, 167, 167, 167, 154, 155,
+ 167, 167, 167, 156, 157, 5, 5, 5, 167, 167,
+ 167, 10, 11, 0, 0, 150, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 160, 160, 0, 159, 160, 3, 2, 6, 0, 160,
+ 161, 161, 0, 160, 161, 3, 2, 6, 0, 161,
0, 0, 0, 0, 0, 0, 4, 0, 0, 9,
- 0, 150, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 152, 0, 0, 0,
+ 0, 151, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 153, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -722,7 +513,7 @@ static const flex_int16_t yy_accept[1393] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 8, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 151,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 152,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -732,10 +523,10 @@ static const flex_int16_t yy_accept[1393] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 165, 163, 0, 162, 161, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 130, 0,
+ 0, 0, 0, 166, 164, 0, 163, 162, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 131, 0,
- 129, 0, 0, 69, 0, 0, 0, 0, 0, 0,
+ 130, 0, 0, 69, 0, 0, 0, 0, 0, 0,
0, 0, 0, 30, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -744,9 +535,9 @@ static const flex_int16_t yy_accept[1393] =
0, 0, 0, 15, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 16, 0, 0, 0, 0,
- 164, 161, 0, 0, 0, 0, 0, 0, 0, 0,
+ 165, 162, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 131, 0, 0, 133, 0, 0, 0, 0,
+ 0, 0, 132, 0, 0, 134, 0, 0, 0, 0,
0, 0, 0, 70, 0, 0, 0, 0, 0, 54,
0, 0, 0, 0, 0, 87, 0, 0, 0, 0,
0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
@@ -757,8 +548,8 @@ static const flex_int16_t yy_accept[1393] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 84, 26, 0, 0, 31,
- 0, 0, 0, 0, 0, 0, 0, 0, 12, 138,
- 0, 135, 0, 134, 0, 0, 0, 97, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 12, 139,
+ 0, 136, 0, 135, 0, 0, 0, 97, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 77, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -768,7 +559,7 @@ static const flex_int16_t yy_accept[1393] =
0, 0, 98, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 93, 0, 0, 0, 0, 0,
- 0, 0, 7, 0, 0, 136, 0, 0, 0, 0,
+ 0, 0, 7, 0, 0, 137, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -782,12 +573,12 @@ static const flex_int16_t yy_accept[1393] =
0, 0, 0, 0, 0, 0, 59, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 91, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 102, 73, 0, 0, 0,
+ 0, 0, 0, 0, 0, 103, 73, 0, 0, 0,
0, 78, 27, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 35, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 139,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 140,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 66, 0, 0,
@@ -798,67 +589,67 @@ static const flex_int16_t yy_accept[1393] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 89, 0, 0, 0, 0, 0, 0, 114, 0,
+ 0, 89, 0, 0, 0, 0, 0, 0, 115, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 61, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 119, 0,
- 0, 117, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 143, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 120, 0,
+ 0, 118, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 144, 0, 0, 0, 0, 0, 0,
90, 0, 0, 0, 0, 94, 76, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
88, 0, 20, 0, 99, 0, 0, 0, 0, 0,
- 0, 123, 0, 0, 0, 0, 51, 0, 0, 0,
+ 0, 0, 124, 0, 0, 0, 0, 51, 0, 0,
- 0, 0, 101, 29, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 102, 29, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 96, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 55, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 96, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 146, 0, 52, 68, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 46, 0, 0, 0, 0,
- 0, 0, 120, 0, 118, 0, 113, 112, 0, 42,
- 0, 19, 0, 0, 0, 0, 0, 132, 0, 0,
+ 0, 0, 0, 147, 0, 52, 68, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 46, 0, 0,
+ 0, 0, 0, 0, 121, 0, 119, 0, 114, 113,
+ 0, 42, 0, 19, 0, 0, 0, 0, 0, 133,
- 83, 0, 0, 0, 0, 0, 0, 110, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 62, 0, 0,
- 36, 0, 0, 0, 0, 0, 122, 0, 0, 0,
- 0, 0, 0, 64, 47, 0, 0, 95, 0, 0,
- 0, 0, 86, 0, 0, 0, 0, 0, 58, 0,
- 141, 0, 140, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 83, 0, 0, 0, 0, 0, 0, 111,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,
+ 0, 100, 0, 36, 0, 0, 0, 0, 0, 123,
+ 0, 0, 0, 0, 0, 0, 64, 47, 0, 0,
+ 95, 0, 0, 0, 0, 86, 0, 0, 0, 0,
+ 0, 58, 0, 142, 0, 141, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 41, 0, 0, 0, 0, 0, 148,
+ 0, 0, 0, 0, 0, 0, 41, 0, 0, 0,
- 81, 0, 43, 111, 0, 0, 144, 115, 0, 0,
- 0, 0, 0, 0, 23, 0, 0, 22, 0, 121,
- 0, 0, 0, 0, 0, 74, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,
- 0, 0, 0, 37, 0, 0, 0, 0, 0, 0,
- 100, 0, 24, 0, 145, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 40, 0, 0, 18,
- 147, 50, 0, 142, 137, 0, 0, 14, 0, 0,
- 128, 0, 0, 0, 0, 108, 0, 85, 0, 0,
- 0, 0, 0, 0, 0, 0, 65, 0, 0, 0,
-
- 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
- 116, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 107, 0, 17, 0, 125, 0, 0, 0,
- 0, 0, 124, 0, 0, 0, 106, 0, 44, 0,
- 0, 39, 127, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 149, 81, 0, 43, 112, 0, 0, 145,
+ 116, 0, 0, 0, 0, 0, 0, 23, 0, 0,
+ 22, 0, 122, 0, 0, 0, 0, 0, 74, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 126, 0, 82, 0, 0,
- 0, 0, 0, 104, 109, 48, 0, 0, 0, 103,
- 0, 0, 0, 0, 0, 0, 0, 71, 0, 0,
- 105, 0
+ 0, 0, 45, 0, 0, 0, 37, 0, 0, 0,
+ 0, 0, 0, 101, 0, 24, 0, 146, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
+ 0, 0, 18, 148, 50, 0, 143, 138, 0, 0,
+ 14, 0, 0, 129, 0, 0, 0, 0, 109, 0,
+ 85, 0, 0, 0, 0, 0, 0, 0, 0, 65,
+
+ 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
+ 0, 0, 0, 117, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 108, 0, 17, 0, 126,
+ 0, 0, 0, 0, 0, 125, 0, 0, 0, 107,
+ 0, 44, 0, 0, 39, 128, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 127, 0,
+ 82, 0, 0, 0, 0, 0, 105, 110, 48, 0,
+ 0, 0, 104, 0, 0, 0, 0, 0, 0, 0,
+ 71, 0, 0, 106, 0
} ;
-static const YY_CHAR yy_ec[256] =
+static yyconst YY_CHAR yy_ec[256] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
@@ -890,7 +681,7 @@ static const YY_CHAR yy_ec[256] =
5, 5, 5, 5, 5
} ;
-static const YY_CHAR yy_meta[72] =
+static yyconst YY_CHAR yy_meta[72] =
{ 0,
1, 1, 2, 3, 3, 4, 3, 3, 3, 3,
3, 3, 3, 5, 5, 5, 3, 3, 3, 3,
@@ -902,329 +693,329 @@ static const YY_CHAR yy_meta[72] =
3
} ;
-static const flex_int16_t yy_base[1405] =
+static yyconst flex_uint16_t yy_base[1408] =
{ 0,
0, 70, 19, 29, 41, 49, 52, 58, 87, 95,
- 1755, 1756, 32, 1751, 141, 0, 201, 1756, 206, 88,
- 11, 213, 1756, 1733, 114, 25, 2, 6, 1756, 1756,
- 73, 11, 17, 1756, 1756, 1756, 104, 1739, 1694, 0,
- 1731, 107, 1746, 217, 247, 1756, 1690, 185, 1689, 1695,
- 93, 58, 1687, 91, 211, 195, 14, 273, 195, 1686,
- 181, 275, 202, 209, 1695, 66, 188, 1694, 232, 219,
- 296, 284, 207, 1677, 78, 287, 324, 305, 1696, 0,
- 339, 359, 367, 374, 379, 1756, 0, 1756, 301, 344,
- 223, 295, 196, 336, 348, 210, 1756, 1693, 1732, 1756,
+ 1758, 1759, 32, 1754, 141, 0, 201, 1759, 206, 88,
+ 11, 213, 1759, 1736, 114, 25, 2, 6, 1759, 1759,
+ 73, 11, 17, 1759, 1759, 1759, 104, 1742, 1697, 0,
+ 1734, 107, 1749, 217, 247, 1759, 1693, 185, 1692, 1698,
+ 93, 58, 1690, 91, 211, 195, 14, 273, 195, 1689,
+ 181, 275, 202, 209, 1698, 66, 188, 1697, 232, 219,
+ 296, 284, 207, 1680, 78, 287, 324, 305, 1699, 0,
+ 339, 359, 367, 374, 379, 1759, 0, 1759, 301, 344,
+ 223, 295, 196, 336, 348, 210, 1759, 1696, 1735, 1759,
- 322, 1756, 392, 1721, 330, 1679, 1689, 351, 366, 1684,
- 363, 370, 372, 379, 241, 1727, 0, 443, 376, 1671,
- 1673, 1669, 1677, 362, 1673, 1662, 1663, 89, 1679, 1662,
- 1671, 1671, 366, 1662, 353, 1663, 358, 1708, 1712, 1654,
- 1705, 1647, 1670, 1667, 1667, 1661, 358, 1654, 1647, 1652,
- 1646, 378, 1657, 1650, 1641, 1640, 1654, 373, 1640, 386,
- 1656, 72, 439, 1643, 413, 1654, 1651, 1652, 1650, 414,
- 1632, 1634, 420, 1626, 1643, 1635, 0, 389, 425, 331,
- 398, 442, 414, 1634, 1756, 0, 1677, 419, 1624, 1627,
- 438, 445, 1635, 456, 1678, 457, 1677, 446, 1676, 1756,
+ 322, 1759, 392, 1724, 330, 1682, 1692, 351, 366, 1687,
+ 363, 370, 372, 379, 241, 1730, 0, 443, 376, 1674,
+ 1676, 1672, 1680, 362, 1676, 1665, 1666, 89, 1682, 1665,
+ 1674, 1674, 366, 1665, 353, 1666, 358, 1711, 1715, 1657,
+ 1708, 1650, 1673, 1670, 1670, 1664, 358, 1657, 1650, 1655,
+ 1649, 378, 1660, 1653, 1644, 1643, 1657, 373, 1643, 386,
+ 1659, 72, 439, 1646, 413, 1657, 1654, 1655, 1653, 414,
+ 1635, 1637, 420, 1629, 1646, 1638, 0, 389, 425, 331,
+ 398, 442, 414, 1637, 1759, 0, 1680, 419, 1627, 1630,
+ 438, 445, 1638, 456, 1681, 457, 1680, 446, 1679, 1759,
- 492, 1675, 465, 1636, 1616, 1632, 1629, 1628, 1619, 462,
- 1668, 1662, 1628, 1607, 1615, 1610, 1624, 1620, 1608, 1620,
- 1620, 1611, 1595, 1599, 1612, 1612, 1604, 1594, 1612, 1756,
- 1607, 1610, 1591, 1590, 1640, 1589, 1599, 1602, 466, 1598,
- 1586, 1597, 1633, 1580, 1636, 1573, 1588, 484, 1578, 1594,
- 1575, 1574, 1580, 1571, 1570, 1577, 1579, 1624, 1582, 1581,
- 1575, 311, 1582, 1577, 1569, 1559, 1574, 1573, 1573, 1554,
- 1570, 1556, 1562, 1569, 1557, 314, 1550, 1564, 1605, 1566,
- 450, 1557, 485, 1756, 1756, 487, 1756, 1756, 1544, 0,
- 468, 293, 1546, 508, 496, 1600, 1553, 489, 1756, 1598,
+ 492, 1678, 465, 1639, 1619, 1635, 1632, 1631, 1622, 462,
+ 1671, 1665, 1631, 1610, 1618, 1613, 1627, 1623, 1611, 1623,
+ 1623, 1614, 1598, 1602, 1615, 1615, 1607, 1597, 1615, 1759,
+ 1610, 1613, 1594, 1593, 1643, 1592, 1602, 1605, 466, 1601,
+ 1589, 1600, 1636, 1583, 1639, 1576, 1591, 484, 1581, 1597,
+ 1578, 1577, 1583, 1574, 1573, 1580, 1582, 1627, 1585, 1584,
+ 1578, 311, 1585, 1580, 1572, 1562, 1577, 1576, 1576, 1557,
+ 1573, 1559, 1565, 1572, 1560, 314, 1553, 1567, 1608, 1569,
+ 450, 1560, 485, 1759, 1759, 487, 1759, 1759, 1547, 0,
+ 468, 293, 1549, 508, 496, 1603, 1556, 489, 1759, 1601,
- 1756, 1592, 537, 1756, 487, 1534, 1590, 1536, 1542, 1592,
- 1549, 1548, 503, 1756, 1546, 1588, 1543, 1540, 415, 1546,
- 1584, 1578, 1533, 1528, 1525, 1574, 1533, 1522, 1571, 1519,
- 543, 1533, 1518, 1531, 1518, 1528, 1523, 1530, 1525, 1521,
- 485, 1519, 1522, 1517, 1513, 1561, 507, 1555, 1756, 1554,
- 1506, 1505, 1504, 1497, 1499, 1503, 1492, 1505, 528, 1550,
- 1505, 1502, 1506, 1756, 1504, 1493, 1493, 1505, 508, 1480,
- 1481, 1502, 519, 1484, 1533, 1495, 1494, 1480, 1492, 1491,
- 1490, 1489, 516, 1530, 1529, 1756, 1473, 1472, 566, 1485,
- 1756, 1756, 1484, 0, 1473, 1465, 514, 1470, 1521, 1520,
+ 1759, 1595, 537, 1759, 487, 1537, 1593, 1539, 1545, 1595,
+ 1552, 1551, 503, 1759, 1549, 1591, 1546, 1543, 415, 1549,
+ 1587, 1581, 1536, 1531, 1528, 1577, 1536, 1525, 1574, 1522,
+ 543, 1536, 1521, 1534, 1521, 1531, 1526, 1533, 1528, 1524,
+ 485, 1522, 1525, 1520, 1516, 1564, 507, 1558, 1759, 1557,
+ 1509, 1508, 1507, 1500, 1502, 1506, 1495, 1508, 528, 1553,
+ 1508, 1505, 1509, 1759, 1507, 1496, 1496, 1508, 508, 1483,
+ 1484, 1505, 519, 1487, 1536, 1498, 1497, 1483, 1495, 1494,
+ 1493, 1492, 516, 1533, 1532, 1759, 1476, 1475, 566, 1488,
+ 1759, 1759, 1487, 0, 1476, 1468, 514, 1473, 1524, 1523,
- 1478, 1518, 1756, 1466, 1516, 1756, 557, 603, 534, 1515,
- 1471, 1467, 1455, 1756, 1460, 1470, 1469, 1456, 1455, 1756,
- 1457, 1454, 480, 1452, 1454, 1756, 1462, 1459, 1444, 1457,
- 1452, 568, 1459, 1441, 1490, 1756, 1439, 1455, 1487, 1450,
- 1447, 1448, 1450, 1482, 1435, 1430, 1429, 1478, 1424, 1439,
- 1417, 1424, 1429, 1477, 1756, 1424, 1420, 1418, 1427, 1421,
- 1428, 1412, 1412, 1422, 1425, 1414, 1409, 1756, 1464, 1756,
- 1408, 1419, 1456, 1403, 1408, 1417, 1411, 1405, 1414, 1454,
- 1448, 1412, 1395, 1395, 1390, 1410, 1392, 1391, 1399, 1403,
- 1386, 1442, 1384, 1398, 1387, 1756, 1756, 1387, 1385, 1756,
+ 1481, 1521, 1759, 1469, 1519, 1759, 557, 603, 534, 1518,
+ 1474, 1470, 1458, 1759, 1463, 1473, 1472, 1459, 1458, 1759,
+ 1460, 1457, 480, 1455, 1457, 1759, 1465, 1462, 1447, 1460,
+ 1455, 568, 1462, 1444, 1493, 1759, 1442, 1458, 1490, 1453,
+ 1450, 1451, 1453, 1485, 1438, 1433, 1432, 1481, 1427, 1442,
+ 1420, 1427, 1432, 1480, 1759, 1427, 1423, 1421, 1430, 1424,
+ 1431, 1415, 1415, 1425, 1428, 1417, 1412, 1759, 1467, 1759,
+ 1411, 1422, 1459, 1406, 1411, 1420, 1414, 1408, 1417, 1457,
+ 1451, 1415, 1398, 1398, 1393, 1413, 1395, 1394, 1402, 1406,
+ 1389, 1445, 1387, 1401, 1390, 1759, 1759, 1390, 1388, 1759,
- 1396, 1430, 1392, 0, 1376, 1393, 1431, 1381, 1756, 1756,
- 1378, 1756, 1384, 1756, 544, 545, 582, 1756, 1381, 1369,
- 1420, 1367, 1366, 1365, 1372, 1365, 1377, 1376, 1376, 1364,
- 1405, 1372, 1364, 1407, 1353, 1369, 1368, 1756, 1353, 1350,
- 1364, 1356, 1362, 1353, 1361, 1346, 1362, 1344, 1358, 1356,
- 1339, 1333, 1338, 1353, 1350, 1351, 1348, 1389, 1346, 1756,
- 1332, 1334, 1343, 1341, 1378, 1377, 1330, 551, 1339, 1322,
- 1323, 1320, 1756, 1334, 1313, 1334, 1331, 1323, 1366, 1320,
- 1327, 1363, 1756, 1310, 1324, 1308, 1322, 1325, 1306, 1356,
- 1355, 1302, 1353, 1352, 1756, 14, 1314, 1314, 1312, 1295,
+ 1399, 1433, 1395, 0, 1379, 1396, 1434, 1384, 1759, 1759,
+ 1381, 1759, 1387, 1759, 544, 545, 582, 1759, 1384, 1372,
+ 1423, 1370, 1369, 1368, 1375, 1368, 1380, 1379, 1379, 1367,
+ 1408, 1375, 1367, 1410, 1356, 1372, 1371, 1759, 1356, 1353,
+ 1367, 1359, 1365, 1356, 1364, 1349, 1365, 1347, 1361, 1359,
+ 1342, 1336, 1341, 1356, 1353, 1354, 1351, 1392, 1349, 1759,
+ 1335, 1337, 1346, 1344, 1381, 1380, 1333, 551, 1342, 1325,
+ 1326, 1323, 1759, 1337, 1316, 1337, 1334, 1326, 1369, 1323,
+ 1330, 1366, 1759, 1313, 1327, 1311, 1325, 1328, 1309, 1359,
+ 1358, 1305, 1356, 1355, 1759, 14, 1317, 1317, 1315, 1298,
- 1300, 1302, 1756, 1308, 1298, 1756, 1343, 1291, 1346, 545,
- 567, 539, 1296, 1339, 551, 1343, 1337, 1336, 1335, 1289,
- 1279, 1332, 1285, 1295, 1329, 1292, 1286, 1273, 1281, 1324,
- 1328, 1285, 1284, 1285, 1278, 1267, 1280, 1283, 1278, 1279,
- 1276, 1275, 1278, 1273, 1314, 1313, 1263, 1253, 540, 1310,
- 1756, 1309, 1258, 1250, 1251, 1300, 1263, 1250, 1261, 1756,
- 1249, 1258, 1257, 1257, 1297, 1240, 1249, 1242, 1253, 1230,
- 1234, 1285, 1249, 1231, 1241, 1281, 1280, 1279, 1226, 1277,
- 552, 561, 1219, 1229, 573, 1756, 1279, 1225, 1235, 1235,
- 1218, 1223, 1227, 1217, 1229, 1232, 1269, 1756, 1263, 573,
+ 1303, 1305, 1759, 1311, 1301, 1759, 1346, 1294, 1349, 545,
+ 567, 539, 1299, 1342, 551, 1346, 1340, 1339, 1338, 1292,
+ 1282, 1335, 1288, 1298, 1332, 1295, 1289, 1276, 1284, 1327,
+ 1331, 1288, 1287, 1288, 1281, 1270, 1283, 1286, 1281, 1282,
+ 1279, 1278, 1281, 1276, 1317, 1316, 1266, 1256, 540, 1313,
+ 1759, 1312, 1261, 1253, 1254, 1303, 1266, 1253, 1264, 1759,
+ 1252, 1261, 1260, 1260, 1300, 1243, 1252, 1245, 1256, 1233,
+ 1237, 1288, 1252, 1234, 1244, 1284, 1283, 1282, 1229, 1280,
+ 552, 561, 1222, 1232, 573, 1759, 1282, 1228, 1238, 1238,
+ 1221, 1226, 1230, 1220, 1232, 1235, 1272, 1759, 1266, 573,
- 1216, 1224, 1223, 1218, 1214, 1221, 1756, 1204, 1207, 1203,
- 1220, 1215, 1203, 1199, 1206, 1200, 1252, 1209, 0, 24,
- 66, 1756, 191, 241, 438, 554, 561, 604, 558, 560,
- 575, 569, 626, 570, 573, 1756, 1756, 585, 590, 595,
- 583, 1756, 1756, 597, 584, 578, 583, 609, 587, 635,
- 595, 644, 595, 652, 1756, 599, 603, 605, 599, 657,
+ 1219, 1227, 1226, 1221, 1217, 1224, 1759, 1207, 1210, 1206,
+ 1223, 1218, 1206, 1202, 1209, 1203, 1255, 1212, 0, 24,
+ 66, 1759, 191, 241, 438, 554, 561, 604, 558, 560,
+ 575, 569, 626, 570, 573, 1759, 1759, 585, 590, 595,
+ 583, 1759, 1759, 597, 584, 578, 583, 609, 587, 635,
+ 595, 644, 595, 652, 1759, 599, 603, 605, 599, 657,
612, 602, 603, 599, 612, 623, 607, 625, 620, 621,
- 615, 617, 618, 618, 620, 673, 632, 637, 614, 1756,
- 639, 629, 674, 634, 624, 639, 640, 627, 641, 1756,
+ 615, 617, 618, 618, 620, 673, 632, 637, 614, 1759,
+ 639, 629, 674, 634, 624, 639, 640, 627, 641, 1759,
660, 668, 648, 638, 685, 650, 654, 693, 648, 643,
- 644, 640, 649, 644, 700, 659, 650, 1756, 652, 663,
- 648, 664, 658, 703, 671, 656, 657, 1756, 676, 659,
- 716, 661, 1756, 680, 660, 678, 717, 677, 673, 668,
+ 644, 640, 649, 644, 700, 659, 650, 1759, 652, 663,
+ 648, 664, 658, 703, 671, 656, 657, 1759, 676, 659,
+ 716, 661, 1759, 680, 660, 678, 717, 677, 673, 668,
686, 685, 686, 672, 687, 679, 686, 676, 694, 679,
- 1756, 687, 693, 688, 739, 1756, 690, 695, 737, 690,
+ 1759, 687, 693, 688, 739, 1759, 690, 695, 737, 690,
702, 697, 701, 699, 697, 699, 751, 697, 697, 754,
- 700, 1756, 699, 707, 705, 710, 722, 706, 711, 721,
+ 700, 1759, 699, 707, 705, 710, 722, 706, 711, 721,
722, 727, 766, 725, 741, 746, 720, 730, 722, 774,
- 719, 1756, 726, 731, 738, 779, 780, 729, 1756, 725,
+ 719, 1759, 726, 731, 738, 779, 780, 729, 1759, 725,
728, 727, 747, 744, 749, 750, 736, 744, 753, 733,
- 754, 794, 1756, 749, 798, 799, 761, 763, 751, 748,
+ 754, 794, 1759, 749, 798, 799, 761, 763, 751, 748,
755, 764, 807, 756, 754, 756, 773, 812, 764, 763,
- 769, 767, 765, 818, 819, 815, 775, 1756, 780, 773,
- 764, 783, 771, 781, 778, 783, 779, 792, 1756, 775,
- 776, 1756, 777, 775, 794, 795, 792, 777, 798, 797,
- 781, 786, 804, 1756, 794, 827, 818, 790, 849, 812,
- 1756, 795, 810, 802, 806, 1756, 1756, 816, 851, 800,
- 853, 802, 860, 805, 816, 808, 814, 810, 828, 829,
- 1756, 827, 1756, 830, 1756, 833, 823, 816, 828, 871,
- 837, 1756, 829, 879, 822, 881, 1756, 882, 826, 832,
+ 769, 767, 765, 818, 819, 815, 775, 1759, 780, 773,
+ 764, 783, 771, 781, 778, 783, 779, 792, 1759, 775,
+ 776, 1759, 777, 775, 794, 795, 792, 777, 798, 798,
+ 782, 787, 805, 1759, 795, 828, 819, 791, 850, 813,
+ 1759, 796, 811, 803, 807, 1759, 1759, 817, 852, 801,
+ 854, 803, 861, 806, 817, 809, 815, 811, 829, 830,
+ 1759, 828, 1759, 831, 1759, 816, 835, 825, 818, 831,
+ 873, 839, 1759, 831, 881, 824, 883, 1759, 884, 828,
- 839, 881, 1756, 1756, 831, 831, 834, 848, 853, 836,
- 893, 852, 853, 854, 892, 846, 899, 849, 901, 850,
- 903, 904, 846, 906, 867, 908, 852, 864, 869, 855,
- 885, 914, 874, 1756, 866, 917, 866, 862, 878, 883,
- 865, 923, 878, 883, 1756, 884, 877, 886, 887, 884,
- 874, 876, 933, 882, 879, 936, 932, 875, 890, 883,
- 942, 1756, 897, 1756, 1756, 902, 894, 904, 891, 892,
- 951, 952, 898, 908, 955, 1756, 905, 905, 907, 910,
- 961, 904, 1756, 925, 1756, 909, 1756, 1756, 923, 1756,
- 917, 1756, 967, 918, 969, 970, 952, 1756, 930, 931,
+ 834, 841, 883, 1759, 1759, 833, 833, 836, 850, 855,
+ 838, 895, 854, 855, 856, 894, 848, 901, 851, 903,
+ 852, 905, 906, 848, 908, 869, 910, 854, 866, 871,
+ 857, 887, 916, 876, 1759, 868, 919, 868, 864, 880,
+ 885, 867, 925, 880, 885, 1759, 886, 879, 888, 889,
+ 886, 876, 878, 935, 884, 937, 882, 939, 935, 878,
+ 895, 885, 945, 1759, 900, 1759, 1759, 905, 897, 907,
+ 893, 895, 954, 955, 901, 911, 958, 1759, 908, 908,
+ 911, 913, 964, 907, 1759, 928, 1759, 912, 1759, 1759,
+ 926, 1759, 920, 1759, 970, 921, 972, 973, 955, 1759,
- 1756, 919, 918, 921, 921, 922, 918, 1756, 940, 926,
- 927, 942, 942, 945, 945, 942, 947, 1756, 939, 949,
- 1756, 946, 951, 953, 950, 992, 1756, 943, 944, 944,
- 950, 949, 960, 1756, 1756, 999, 948, 1756, 949, 949,
- 951, 957, 1756, 959, 961, 964, 1013, 976, 1756, 973,
- 1756, 970, 1756, 993, 1013, 1019, 1020, 964, 1022, 1023,
- 978, 972, 1026, 1027, 1023, 988, 984, 1026, 976, 981,
- 1034, 992, 1036, 996, 1038, 1001, 990, 984, 1000, 1000,
- 1045, 989, 1006, 1005, 989, 1045, 1046, 995, 1048, 1013,
- 1014, 1014, 1001, 1756, 1012, 1059, 1019, 1032, 1019, 1756,
+ 933, 934, 1759, 922, 921, 924, 924, 925, 921, 1759,
+ 943, 929, 930, 945, 945, 948, 948, 945, 950, 1759,
+ 942, 1759, 952, 1759, 949, 954, 956, 953, 995, 1759,
+ 946, 947, 947, 953, 952, 963, 1759, 1759, 1002, 951,
+ 1759, 952, 952, 954, 960, 1759, 962, 964, 967, 1016,
+ 979, 1759, 976, 1759, 973, 1759, 996, 1016, 1022, 1023,
+ 967, 1025, 1026, 981, 975, 1029, 1030, 1026, 991, 987,
+ 1029, 979, 984, 1037, 995, 1039, 999, 1041, 1004, 993,
+ 987, 1003, 1003, 1048, 992, 1009, 1008, 992, 1048, 1049,
+ 998, 1051, 1016, 1017, 1017, 1004, 1759, 1015, 1062, 1022,
- 1756, 1063, 1756, 1756, 1012, 1023, 1756, 1756, 1013, 1062,
- 1007, 1012, 1070, 1020, 1756, 1072, 1027, 1756, 1074, 1756,
- 1019, 1034, 1022, 1037, 1041, 1756, 1075, 1043, 1036, 1045,
- 1027, 1034, 1086, 1047, 1046, 1091, 1092, 1093, 1044, 1756,
- 1095, 1096, 1043, 1756, 1047, 1099, 1045, 1044, 1102, 1057,
- 1756, 1099, 1756, 1061, 1756, 1064, 1107, 1062, 1109, 1070,
- 1053, 1055, 1052, 1068, 1069, 1078, 1756, 1068, 1118, 1756,
- 1756, 1756, 1114, 1756, 1756, 1079, 1116, 1756, 1070, 1077,
- 1756, 1074, 1079, 1126, 1071, 1756, 1086, 1756, 1087, 1077,
- 1089, 1132, 1076, 1084, 1085, 1098, 1756, 1097, 1087, 1086,
+ 1035, 1022, 1759, 1759, 1066, 1759, 1759, 1015, 1026, 1759,
+ 1759, 1016, 1065, 1010, 1015, 1073, 1023, 1759, 1075, 1030,
+ 1759, 1077, 1759, 1022, 1037, 1025, 1040, 1044, 1759, 1078,
+ 1046, 1039, 1048, 1030, 1037, 1089, 1050, 1049, 1094, 1095,
+ 1096, 1047, 1759, 1098, 1099, 1046, 1759, 1050, 1102, 1048,
+ 1047, 1105, 1060, 1759, 1102, 1759, 1064, 1759, 1067, 1110,
+ 1065, 1112, 1073, 1056, 1058, 1055, 1071, 1072, 1081, 1759,
+ 1071, 1121, 1759, 1759, 1759, 1117, 1759, 1759, 1082, 1119,
+ 1759, 1073, 1080, 1759, 1077, 1082, 1129, 1074, 1759, 1089,
+ 1759, 1090, 1080, 1092, 1135, 1079, 1087, 1088, 1101, 1759,
- 1100, 1091, 1100, 1102, 1756, 1144, 1089, 1146, 1106, 1148,
- 1756, 1144, 1108, 1109, 1096, 1091, 1154, 1113, 1114, 1115,
- 1158, 1117, 1756, 1160, 1756, 1123, 1756, 1105, 1163, 1164,
- 1109, 1126, 1756, 1112, 1112, 1114, 1756, 1119, 1756, 1114,
- 1126, 1756, 1756, 1131, 1125, 1129, 1120, 1172, 1121, 1137,
- 1130, 1125, 1140, 1131, 1138, 1125, 1140, 1187, 1146, 1189,
- 1134, 1150, 1141, 1155, 1151, 1756, 1195, 1756, 1196, 1197,
- 1154, 1153, 1154, 1756, 1756, 1756, 1201, 1145, 1161, 1756,
- 1199, 1150, 1149, 1151, 1162, 1209, 1160, 1756, 1169, 1212,
- 1756, 1756, 1218, 1223, 1228, 1233, 1238, 1243, 1248, 1251,
+ 1100, 1090, 1089, 1103, 1094, 1103, 1105, 1759, 1147, 1092,
+ 1149, 1109, 1151, 1759, 1147, 1111, 1112, 1099, 1094, 1157,
+ 1116, 1117, 1118, 1161, 1120, 1759, 1163, 1759, 1126, 1759,
+ 1108, 1166, 1167, 1112, 1129, 1759, 1115, 1115, 1117, 1759,
+ 1122, 1759, 1117, 1129, 1759, 1759, 1134, 1128, 1132, 1123,
+ 1175, 1124, 1140, 1133, 1128, 1143, 1134, 1141, 1128, 1143,
+ 1190, 1149, 1192, 1137, 1153, 1144, 1158, 1154, 1759, 1198,
+ 1759, 1199, 1200, 1157, 1156, 1157, 1759, 1759, 1759, 1204,
+ 1148, 1164, 1759, 1202, 1153, 1152, 1154, 1165, 1212, 1163,
+ 1759, 1172, 1215, 1759, 1759, 1221, 1226, 1231, 1236, 1241,
- 1225, 1230, 1232, 1245
+ 1246, 1251, 1254, 1228, 1233, 1235, 1248
} ;
-static const flex_int16_t yy_def[1405] =
+static yyconst flex_int16_t yy_def[1408] =
{ 0,
- 1393, 1393, 1394, 1394, 1393, 1393, 1393, 1393, 1393, 1393,
- 1392, 1392, 1392, 1392, 1392, 1395, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1396,
- 1392, 1392, 1392, 1397, 15, 1392, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1398, 45, 45,
+ 1396, 1396, 1397, 1397, 1396, 1396, 1396, 1396, 1396, 1396,
+ 1395, 1395, 1395, 1395, 1395, 1398, 1395, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1399,
+ 1395, 1395, 1395, 1400, 15, 1395, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1401, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1398,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1402, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1399, 1395,
+
+ 1400, 1395, 1395, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1403, 45, 1401, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1402, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1404, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1403, 1395,
+
+ 1401, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 1395,
- 1392, 1392, 1392, 1392, 1392, 1392, 1399, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1396, 1392,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1405,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1395, 45,
- 1397, 1392, 1392, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1400, 45, 1398, 45, 45,
+ 1395, 45, 1401, 1395, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1395, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1395, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1395, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1399, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1401, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1400, 1392,
+ 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45,
+ 1395, 1395, 1395, 1406, 45, 45, 45, 45, 45, 45,
- 1398, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1395, 45, 45, 1395, 45, 1401, 45, 45,
+ 45, 45, 45, 1395, 45, 45, 45, 45, 45, 1395,
+ 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1392,
+ 45, 45, 45, 45, 1395, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1395, 45, 1395,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1402,
- 45, 45, 45, 45, 45, 45, 45, 45, 1392, 45,
+ 45, 45, 45, 45, 45, 1395, 1395, 45, 45, 1395,
- 1392, 45, 1398, 1392, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1395, 1407, 45, 45, 45, 45, 1395, 1395,
+ 45, 1395, 45, 1395, 45, 45, 45, 1395, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1392, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45,
- 1392, 1392, 1392, 1403, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1395, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1395, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1395, 45, 45, 45, 45, 45,
- 45, 45, 1392, 45, 45, 1392, 45, 1398, 45, 45,
- 45, 45, 45, 1392, 45, 45, 45, 45, 45, 1392,
- 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1392, 45, 1392,
+ 45, 45, 1395, 45, 45, 1395, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1392, 1392, 45, 45, 1392,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 1395, 45, 45, 45, 45, 45, 45, 45, 45, 1395,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45,
- 45, 45, 1392, 1404, 45, 45, 45, 45, 1392, 1392,
- 45, 1392, 45, 1392, 45, 45, 45, 1392, 45, 45,
+ 45, 45, 45, 45, 45, 45, 1395, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45,
+ 45, 1395, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1395, 1395, 45, 45, 45,
+ 45, 1395, 1395, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1395, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1392,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1392, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1392, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45,
-
- 45, 45, 1392, 45, 45, 1392, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1392, 45, 45, 45, 45, 45, 45, 45, 45, 1392,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45,
-
- 45, 45, 45, 45, 45, 45, 1392, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1392, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1392, 1392, 45, 45, 45,
- 45, 1392, 1392, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1392,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1392,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45,
- 45, 45, 1392, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45,
+ 45, 45, 1395, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1392, 45, 45, 45, 45, 1392, 45, 45, 45, 45,
+ 1395, 45, 45, 45, 45, 1395, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1392, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 1395, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1392, 45, 45, 45, 45, 45, 45, 1392, 45,
+ 45, 1395, 45, 45, 45, 45, 45, 45, 1395, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1392, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1395, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 1392, 45,
- 45, 1392, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45,
- 1392, 45, 45, 45, 45, 1392, 1392, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1395, 45,
+ 45, 1395, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1395, 45, 45, 45, 45, 45, 45,
+ 1395, 45, 45, 45, 45, 1395, 1395, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 1392, 45, 1392, 45, 1392, 45, 45, 45, 45, 45,
- 45, 1392, 45, 45, 45, 45, 1392, 45, 45, 45,
+ 1395, 45, 1395, 45, 1395, 45, 45, 45, 45, 45,
+ 45, 45, 1395, 45, 45, 45, 45, 1395, 45, 45,
- 45, 45, 1392, 1392, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 1395, 1395, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 1395, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 1392, 45, 1392, 1392, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45,
- 45, 45, 1392, 45, 1392, 45, 1392, 1392, 45, 1392,
- 45, 1392, 45, 45, 45, 45, 45, 1392, 45, 45,
+ 45, 45, 45, 1395, 45, 1395, 1395, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45,
+ 45, 45, 45, 45, 1395, 45, 1395, 45, 1395, 1395,
+ 45, 1395, 45, 1395, 45, 45, 45, 45, 45, 1395,
- 1392, 45, 45, 45, 45, 45, 45, 1392, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45,
- 1392, 45, 45, 45, 45, 45, 1392, 45, 45, 45,
- 45, 45, 45, 1392, 1392, 45, 45, 1392, 45, 45,
- 45, 45, 1392, 45, 45, 45, 45, 45, 1392, 45,
- 1392, 45, 1392, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1395, 45, 45, 45, 45, 45, 45, 1395,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395,
+ 45, 1395, 45, 1395, 45, 45, 45, 45, 45, 1395,
+ 45, 45, 45, 45, 45, 45, 1395, 1395, 45, 45,
+ 1395, 45, 45, 45, 45, 1395, 45, 45, 45, 45,
+ 45, 1395, 45, 1395, 45, 1395, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 1392, 45, 45, 45, 45, 45, 1392,
+ 45, 45, 45, 45, 45, 45, 1395, 45, 45, 45,
- 1392, 45, 1392, 1392, 45, 45, 1392, 1392, 45, 45,
- 45, 45, 45, 45, 1392, 45, 45, 1392, 45, 1392,
- 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 1392,
- 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45,
- 1392, 45, 1392, 45, 1392, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 1392, 45, 45, 1392,
- 1392, 1392, 45, 1392, 1392, 45, 45, 1392, 45, 45,
- 1392, 45, 45, 45, 45, 1392, 45, 1392, 45, 45,
- 45, 45, 45, 45, 45, 45, 1392, 45, 45, 45,
-
- 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45,
- 1392, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 1392, 45, 1392, 45, 1392, 45, 45, 45,
- 45, 45, 1392, 45, 45, 45, 1392, 45, 1392, 45,
- 45, 1392, 1392, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 1395, 1395, 45, 1395, 1395, 45, 45, 1395,
+ 1395, 45, 45, 45, 45, 45, 45, 1395, 45, 45,
+ 1395, 45, 1395, 45, 45, 45, 45, 45, 1395, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 1392, 45, 1392, 45, 45,
- 45, 45, 45, 1392, 1392, 1392, 45, 45, 45, 1392,
- 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45,
- 1392, 0, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
+ 45, 45, 1395, 45, 45, 45, 1395, 45, 45, 45,
+ 45, 45, 45, 1395, 45, 1395, 45, 1395, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395,
+ 45, 45, 1395, 1395, 1395, 45, 1395, 1395, 45, 45,
+ 1395, 45, 45, 1395, 45, 45, 45, 45, 1395, 45,
+ 1395, 45, 45, 45, 45, 45, 45, 45, 45, 1395,
- 1392, 1392, 1392, 1392
+ 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45,
+ 45, 45, 45, 1395, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 1395, 45, 1395, 45, 1395,
+ 45, 45, 45, 45, 45, 1395, 45, 45, 45, 1395,
+ 45, 1395, 45, 45, 1395, 1395, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 1395, 45,
+ 1395, 45, 45, 45, 45, 45, 1395, 1395, 1395, 45,
+ 45, 45, 1395, 45, 45, 45, 45, 45, 45, 45,
+ 1395, 45, 45, 1395, 0, 1395, 1395, 1395, 1395, 1395,
+
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395
} ;
-static const flex_int16_t yy_nxt[1828] =
+static yyconst flex_uint16_t yy_nxt[1831] =
{ 0,
- 1392, 13, 14, 13, 1392, 15, 16, 1392, 17, 18,
+ 1395, 13, 14, 13, 1395, 15, 16, 1395, 17, 18,
19, 20, 21, 22, 22, 22, 23, 24, 86, 686,
- 37, 14, 37, 87, 25, 26, 38, 1392, 687, 27,
+ 37, 14, 37, 87, 25, 26, 38, 1395, 687, 27,
37, 14, 37, 42, 28, 42, 38, 92, 93, 29,
115, 30, 13, 14, 13, 91, 92, 25, 31, 93,
13, 14, 13, 13, 14, 13, 32, 40, 810, 13,
@@ -1310,38 +1101,38 @@ static const flex_int16_t yy_nxt[1828] =
962, 963, 964, 965, 966, 967, 968, 969, 970, 971,
972, 973, 974, 975, 976, 977, 978, 979, 980, 981,
- 982, 956, 957, 983, 985, 986, 987, 988, 984, 989,
- 990, 991, 992, 993, 994, 995, 996, 997, 998, 999,
- 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
- 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019,
- 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
+ 982, 956, 957, 983, 985, 987, 988, 989, 984, 990,
+ 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000,
+ 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
+ 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020,
+ 1021, 1022, 1023, 1024, 1025, 1026, 986, 1027, 1028, 1029,
1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049,
- 1050, 1051, 1052, 1053, 1031, 1054, 1055, 1056, 1057, 1058,
- 1032, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067,
+ 1050, 1051, 1052, 1053, 1054, 1032, 1055, 1056, 1057, 1058,
+ 1059, 1033, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067,
1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077,
- 1078, 1079, 1080, 1082, 1083, 1084, 1085, 1086, 1087, 1088,
+ 1078, 1079, 1080, 1081, 1082, 1084, 1085, 1086, 1087, 1088,
1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
- 1099, 1100, 1101, 1103, 1104, 1105, 1106, 1107, 1108, 1109,
+ 1099, 1100, 1101, 1102, 1103, 1105, 1106, 1107, 1108, 1109,
1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119,
- 1120, 1121, 1122, 1123, 1124, 1126, 1097, 1127, 1128, 1129,
- 1130, 1131, 1125, 1081, 1132, 1133, 1134, 1135, 1136, 1137,
- 1138, 1139, 1140, 1141, 1102, 1142, 1143, 1144, 1145, 1146,
- 1147, 1148, 1149, 1150, 1151, 1153, 1154, 1155, 1156, 1152,
- 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
- 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1154,
+ 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1129, 1099, 1127,
+ 1130, 1131, 1132, 1133, 1134, 1083, 1135, 1128, 1136, 1137,
+ 1138, 1139, 1140, 1141, 1142, 1143, 1104, 1144, 1145, 1146,
+ 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1156, 1157,
+ 1158, 1159, 1155, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
+ 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176,
- 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185,
+ 1177, 1178, 1157, 1179, 1180, 1181, 1182, 1183, 1184, 1185,
1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195,
1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205,
1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215,
- 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1198,
- 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235,
+ 1216, 1217, 1218, 1220, 1221, 1222, 1223, 1224, 1225, 1226,
+ 1227, 1228, 1201, 1229, 1230, 1231, 1232, 1233, 1234, 1235,
1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245,
1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255,
1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265,
- 1266, 1267, 1268, 1269, 1242, 1216, 1270, 1271, 1272, 1273,
+ 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1245, 1219, 1273,
1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283,
1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293,
@@ -1355,77 +1146,77 @@ static const flex_int16_t yy_nxt[1828] =
1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373,
1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383,
- 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 12, 12,
- 12, 12, 12, 36, 36, 36, 36, 36, 80, 290,
- 80, 80, 80, 99, 394, 99, 504, 99, 101, 101,
- 101, 101, 101, 116, 116, 116, 116, 116, 177, 101,
- 177, 177, 177, 199, 199, 199, 809, 808, 807, 806,
- 805, 804, 803, 802, 801, 800, 799, 798, 797, 796,
- 795, 794, 793, 791, 790, 789, 788, 787, 786, 785,
- 784, 783, 782, 781, 780, 777, 776, 770, 769, 768,
- 767, 766, 765, 764, 763, 762, 761, 760, 759, 758,
+ 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393,
+ 1394, 12, 12, 12, 12, 12, 36, 36, 36, 36,
+ 36, 80, 290, 80, 80, 80, 99, 394, 99, 504,
+ 99, 101, 101, 101, 101, 101, 116, 116, 116, 116,
+ 116, 177, 101, 177, 177, 177, 199, 199, 199, 809,
+ 808, 807, 806, 805, 804, 803, 802, 801, 800, 799,
+ 798, 797, 796, 795, 794, 793, 791, 790, 789, 788,
+ 787, 786, 785, 784, 783, 782, 781, 780, 777, 776,
+ 770, 769, 768, 767, 766, 765, 764, 763, 762, 761,
- 757, 756, 755, 754, 753, 752, 751, 750, 749, 748,
- 747, 746, 745, 744, 743, 742, 739, 738, 737, 736,
- 735, 734, 733, 732, 731, 730, 729, 728, 727, 726,
- 725, 724, 723, 722, 721, 720, 719, 718, 717, 716,
- 715, 714, 713, 712, 711, 710, 709, 708, 707, 704,
- 703, 698, 697, 696, 695, 694, 693, 692, 691, 690,
- 689, 688, 685, 684, 683, 682, 681, 680, 679, 678,
- 677, 676, 675, 674, 673, 672, 671, 670, 669, 668,
- 667, 666, 665, 664, 663, 662, 659, 658, 657, 656,
- 655, 654, 653, 652, 651, 650, 649, 648, 647, 646,
+ 760, 759, 758, 757, 756, 755, 754, 753, 752, 751,
+ 750, 749, 748, 747, 746, 745, 744, 743, 742, 739,
+ 738, 737, 736, 735, 734, 733, 732, 731, 730, 729,
+ 728, 727, 726, 725, 724, 723, 722, 721, 720, 719,
+ 718, 717, 716, 715, 714, 713, 712, 711, 710, 709,
+ 708, 707, 704, 703, 698, 697, 696, 695, 694, 693,
+ 692, 691, 690, 689, 688, 685, 684, 683, 682, 681,
+ 680, 679, 678, 677, 676, 675, 674, 673, 672, 671,
+ 670, 669, 668, 667, 666, 665, 664, 663, 662, 659,
+ 658, 657, 656, 655, 654, 653, 652, 651, 650, 649,
- 645, 644, 643, 642, 641, 640, 639, 638, 637, 636,
- 635, 634, 633, 632, 631, 630, 629, 628, 627, 626,
- 625, 624, 623, 622, 621, 620, 619, 618, 617, 616,
- 615, 614, 613, 609, 608, 607, 606, 605, 604, 603,
- 602, 601, 600, 599, 598, 597, 596, 595, 594, 593,
- 592, 591, 590, 589, 588, 587, 586, 585, 584, 583,
- 582, 581, 580, 579, 578, 577, 576, 575, 574, 573,
- 572, 571, 570, 569, 568, 567, 566, 565, 564, 563,
- 562, 561, 560, 559, 558, 557, 556, 555, 554, 553,
- 552, 551, 550, 549, 548, 547, 546, 545, 544, 543,
+ 648, 647, 646, 645, 644, 643, 642, 641, 640, 639,
+ 638, 637, 636, 635, 634, 633, 632, 631, 630, 629,
+ 628, 627, 626, 625, 624, 623, 622, 621, 620, 619,
+ 618, 617, 616, 615, 614, 613, 609, 608, 607, 606,
+ 605, 604, 603, 602, 601, 600, 599, 598, 597, 596,
+ 595, 594, 593, 592, 591, 590, 589, 588, 587, 586,
+ 585, 584, 583, 582, 581, 580, 579, 578, 577, 576,
+ 575, 574, 573, 572, 571, 570, 569, 568, 567, 566,
+ 565, 564, 563, 562, 561, 560, 559, 558, 557, 556,
+ 555, 554, 553, 552, 551, 550, 549, 548, 547, 546,
- 542, 541, 540, 537, 536, 535, 534, 533, 532, 531,
- 528, 527, 526, 525, 524, 523, 522, 521, 520, 519,
- 518, 514, 513, 512, 511, 510, 509, 508, 506, 505,
- 503, 502, 499, 498, 497, 496, 493, 492, 491, 490,
- 489, 488, 487, 486, 485, 482, 481, 480, 477, 476,
- 475, 474, 473, 472, 471, 470, 467, 466, 465, 464,
- 463, 462, 461, 460, 459, 458, 455, 454, 453, 452,
- 451, 448, 447, 446, 445, 444, 443, 442, 441, 440,
- 435, 434, 433, 432, 431, 430, 429, 428, 427, 426,
- 425, 422, 421, 420, 419, 416, 415, 414, 413, 412,
+ 545, 544, 543, 542, 541, 540, 537, 536, 535, 534,
+ 533, 532, 531, 528, 527, 526, 525, 524, 523, 522,
+ 521, 520, 519, 518, 514, 513, 512, 511, 510, 509,
+ 508, 506, 505, 503, 502, 499, 498, 497, 496, 493,
+ 492, 491, 490, 489, 488, 487, 486, 485, 482, 481,
+ 480, 477, 476, 475, 474, 473, 472, 471, 470, 467,
+ 466, 465, 464, 463, 462, 461, 460, 459, 458, 455,
+ 454, 453, 452, 451, 448, 447, 446, 445, 444, 443,
+ 442, 441, 440, 435, 434, 433, 432, 431, 430, 429,
+ 428, 427, 426, 425, 422, 421, 420, 419, 416, 415,
- 411, 410, 407, 406, 404, 403, 398, 393, 390, 387,
- 386, 385, 384, 382, 381, 380, 379, 378, 377, 376,
- 375, 374, 373, 372, 371, 370, 367, 366, 365, 364,
- 363, 362, 361, 360, 359, 358, 357, 356, 355, 351,
- 350, 349, 348, 347, 346, 345, 344, 340, 339, 338,
- 337, 336, 335, 334, 333, 332, 331, 330, 329, 328,
- 327, 326, 325, 324, 323, 322, 321, 320, 319, 318,
- 317, 316, 315, 314, 311, 310, 309, 308, 307, 306,
- 304, 200, 301, 299, 297, 294, 293, 291, 289, 282,
- 281, 280, 278, 277, 275, 274, 273, 272, 268, 256,
+ 414, 413, 412, 411, 410, 407, 406, 404, 403, 398,
+ 393, 390, 387, 386, 385, 384, 382, 381, 380, 379,
+ 378, 377, 376, 375, 374, 373, 372, 371, 370, 367,
+ 366, 365, 364, 363, 362, 361, 360, 359, 358, 357,
+ 356, 355, 351, 350, 349, 348, 347, 346, 345, 344,
+ 340, 339, 338, 337, 336, 335, 334, 333, 332, 331,
+ 330, 329, 328, 327, 326, 325, 324, 323, 322, 321,
+ 320, 319, 318, 317, 316, 315, 314, 311, 310, 309,
+ 308, 307, 306, 304, 200, 301, 299, 297, 294, 293,
+ 291, 289, 282, 281, 280, 278, 277, 275, 274, 273,
- 252, 249, 248, 247, 246, 245, 243, 242, 241, 240,
- 237, 236, 235, 234, 233, 232, 231, 230, 229, 225,
- 222, 219, 218, 217, 216, 213, 212, 211, 207, 206,
- 205, 204, 200, 193, 190, 189, 187, 185, 184, 176,
- 161, 142, 136, 121, 110, 107, 106, 104, 43, 100,
- 98, 97, 88, 43, 1392, 11, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
+ 272, 268, 256, 252, 249, 248, 247, 246, 245, 243,
+ 242, 241, 240, 237, 236, 235, 234, 233, 232, 231,
+ 230, 229, 225, 222, 219, 218, 217, 216, 213, 212,
+ 211, 207, 206, 205, 204, 200, 193, 190, 189, 187,
+ 185, 184, 176, 161, 142, 136, 121, 110, 107, 106,
+ 104, 43, 100, 98, 97, 88, 43, 1395, 11, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395
} ;
-static const flex_int16_t yy_chk[1828] =
+static yyconst flex_int16_t yy_chk[1831] =
{ 0,
0, 1, 1, 1, 0, 1, 1, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 21, 596,
@@ -1519,143 +1310,143 @@ static const flex_int16_t yy_chk[1828] =
911, 912, 913, 914, 915, 916, 917, 918, 919, 920,
921, 922, 923, 924, 925, 926, 927, 929, 930, 931,
932, 933, 934, 935, 936, 937, 938, 940, 941, 943,
- 944, 945, 946, 947, 948, 949, 950, 951, 952, 953,
- 955, 956, 957, 958, 959, 960, 962, 963, 964, 965,
- 968, 969, 970, 971, 972, 973, 974, 975, 976, 977,
- 978, 979, 980, 982, 956, 984, 986, 987, 988, 989,
- 957, 990, 991, 993, 994, 995, 996, 998, 999, 1000,
- 1001, 1002, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
+ 944, 945, 946, 947, 948, 949, 906, 950, 951, 952,
+ 953, 955, 956, 957, 958, 959, 960, 962, 963, 964,
+ 965, 968, 969, 970, 971, 972, 973, 974, 975, 976,
+ 977, 978, 979, 980, 982, 956, 984, 986, 987, 988,
+ 989, 957, 990, 991, 992, 994, 995, 996, 997, 999,
+ 1000, 1001, 1002, 1003, 1006, 1007, 1008, 1009, 1010, 1011,
- 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022,
- 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032,
- 1033, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
- 1044, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054,
- 1055, 1056, 1057, 1058, 1059, 1060, 1031, 1061, 1063, 1066,
- 1067, 1068, 1059, 1015, 1069, 1070, 1071, 1072, 1073, 1074,
- 1075, 1077, 1078, 1079, 1036, 1080, 1081, 1082, 1084, 1086,
- 1089, 1091, 1093, 1094, 1095, 1096, 1097, 1099, 1100, 1095,
- 1102, 1103, 1104, 1105, 1106, 1107, 1109, 1110, 1111, 1112,
- 1113, 1114, 1115, 1116, 1117, 1119, 1120, 1122, 1123, 1097,
+ 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
+ 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031,
+ 1032, 1033, 1034, 1036, 1037, 1038, 1039, 1040, 1041, 1042,
+ 1043, 1044, 1045, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
+ 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1062, 1032, 1061,
+ 1063, 1065, 1068, 1069, 1070, 1016, 1071, 1061, 1072, 1073,
+ 1074, 1075, 1076, 1077, 1079, 1080, 1037, 1081, 1082, 1083,
+ 1084, 1086, 1088, 1091, 1093, 1095, 1096, 1097, 1098, 1099,
+ 1101, 1102, 1097, 1104, 1105, 1106, 1107, 1108, 1109, 1111,
+ 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1121, 1123,
- 1124, 1125, 1126, 1128, 1129, 1130, 1131, 1132, 1133, 1136,
- 1137, 1139, 1140, 1141, 1142, 1144, 1145, 1146, 1147, 1148,
- 1150, 1152, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161,
+ 1125, 1126, 1099, 1127, 1128, 1129, 1131, 1132, 1133, 1134,
+ 1135, 1136, 1139, 1140, 1142, 1143, 1144, 1145, 1147, 1148,
+ 1149, 1150, 1151, 1153, 1155, 1157, 1158, 1159, 1160, 1161,
1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171,
- 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1154,
- 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190,
- 1191, 1192, 1193, 1195, 1196, 1197, 1198, 1199, 1202, 1205,
- 1206, 1209, 1210, 1211, 1212, 1213, 1214, 1216, 1217, 1219,
- 1221, 1222, 1223, 1224, 1225, 1227, 1228, 1229, 1230, 1231,
- 1232, 1233, 1234, 1235, 1198, 1171, 1236, 1237, 1238, 1239,
+ 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181,
+ 1182, 1183, 1157, 1184, 1185, 1186, 1187, 1188, 1189, 1190,
+ 1191, 1192, 1193, 1194, 1195, 1196, 1198, 1199, 1200, 1201,
+ 1202, 1205, 1208, 1209, 1212, 1213, 1214, 1215, 1216, 1217,
+ 1219, 1220, 1222, 1224, 1225, 1226, 1227, 1228, 1230, 1231,
+ 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1201, 1174, 1239,
- 1241, 1242, 1243, 1245, 1246, 1247, 1248, 1249, 1250, 1252,
- 1254, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264,
- 1265, 1266, 1268, 1269, 1273, 1276, 1277, 1279, 1280, 1282,
- 1283, 1284, 1285, 1287, 1289, 1290, 1291, 1292, 1293, 1294,
- 1295, 1296, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1306,
- 1307, 1308, 1309, 1310, 1312, 1313, 1314, 1315, 1316, 1317,
- 1318, 1319, 1320, 1321, 1322, 1324, 1326, 1328, 1329, 1330,
- 1331, 1332, 1334, 1335, 1336, 1338, 1340, 1341, 1344, 1345,
- 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355,
+ 1240, 1241, 1242, 1244, 1245, 1246, 1248, 1249, 1250, 1251,
+ 1252, 1253, 1255, 1257, 1259, 1260, 1261, 1262, 1263, 1264,
+ 1265, 1266, 1267, 1268, 1269, 1271, 1272, 1276, 1279, 1280,
+ 1282, 1283, 1285, 1286, 1287, 1288, 1290, 1292, 1293, 1294,
+ 1295, 1296, 1297, 1298, 1299, 1301, 1302, 1303, 1304, 1305,
+ 1306, 1307, 1309, 1310, 1311, 1312, 1313, 1315, 1316, 1317,
+ 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1327, 1329,
+ 1331, 1332, 1333, 1334, 1335, 1337, 1338, 1339, 1341, 1343,
+ 1344, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355,
1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365,
- 1367, 1369, 1370, 1371, 1372, 1373, 1377, 1378, 1379, 1381,
- 1382, 1383, 1384, 1385, 1386, 1387, 1389, 1390, 1393, 1393,
- 1393, 1393, 1393, 1394, 1394, 1394, 1394, 1394, 1395, 1401,
- 1395, 1395, 1395, 1396, 1402, 1396, 1403, 1396, 1397, 1397,
- 1397, 1397, 1397, 1398, 1398, 1398, 1398, 1398, 1399, 1404,
- 1399, 1399, 1399, 1400, 1400, 1400, 718, 717, 716, 715,
- 714, 713, 712, 711, 710, 709, 708, 706, 705, 704,
- 703, 702, 701, 699, 697, 696, 695, 694, 693, 692,
- 691, 690, 689, 688, 687, 684, 683, 680, 679, 678,
- 677, 676, 675, 674, 673, 672, 671, 670, 669, 668,
+ 1366, 1367, 1368, 1370, 1372, 1373, 1374, 1375, 1376, 1380,
+ 1381, 1382, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1392,
+ 1393, 1396, 1396, 1396, 1396, 1396, 1397, 1397, 1397, 1397,
+ 1397, 1398, 1404, 1398, 1398, 1398, 1399, 1405, 1399, 1406,
+ 1399, 1400, 1400, 1400, 1400, 1400, 1401, 1401, 1401, 1401,
+ 1401, 1402, 1407, 1402, 1402, 1402, 1403, 1403, 1403, 718,
+ 717, 716, 715, 714, 713, 712, 711, 710, 709, 708,
+ 706, 705, 704, 703, 702, 701, 699, 697, 696, 695,
+ 694, 693, 692, 691, 690, 689, 688, 687, 684, 683,
+ 680, 679, 678, 677, 676, 675, 674, 673, 672, 671,
- 667, 666, 665, 664, 663, 662, 661, 659, 658, 657,
- 656, 655, 654, 653, 652, 650, 648, 647, 646, 645,
- 644, 643, 642, 641, 640, 639, 638, 637, 636, 635,
- 634, 633, 632, 631, 630, 629, 628, 627, 626, 625,
- 624, 623, 622, 621, 620, 619, 618, 617, 616, 614,
- 613, 609, 608, 607, 605, 604, 602, 601, 600, 599,
- 598, 597, 594, 593, 592, 591, 590, 589, 588, 587,
- 586, 585, 584, 582, 581, 580, 579, 578, 577, 576,
- 575, 574, 572, 571, 570, 569, 567, 566, 565, 564,
- 563, 562, 561, 559, 558, 557, 556, 555, 554, 553,
+ 670, 669, 668, 667, 666, 665, 664, 663, 662, 661,
+ 659, 658, 657, 656, 655, 654, 653, 652, 650, 648,
+ 647, 646, 645, 644, 643, 642, 641, 640, 639, 638,
+ 637, 636, 635, 634, 633, 632, 631, 630, 629, 628,
+ 627, 626, 625, 624, 623, 622, 621, 620, 619, 618,
+ 617, 616, 614, 613, 609, 608, 607, 605, 604, 602,
+ 601, 600, 599, 598, 597, 594, 593, 592, 591, 590,
+ 589, 588, 587, 586, 585, 584, 582, 581, 580, 579,
+ 578, 577, 576, 575, 574, 572, 571, 570, 569, 567,
+ 566, 565, 564, 563, 562, 561, 559, 558, 557, 556,
- 552, 551, 550, 549, 548, 547, 546, 545, 544, 543,
- 542, 541, 540, 539, 537, 536, 535, 534, 533, 532,
- 531, 530, 529, 528, 527, 526, 525, 524, 523, 522,
- 521, 520, 519, 513, 511, 508, 507, 506, 505, 503,
- 502, 501, 499, 498, 495, 494, 493, 492, 491, 490,
- 489, 488, 487, 486, 485, 484, 483, 482, 481, 480,
- 479, 478, 477, 476, 475, 474, 473, 472, 471, 469,
- 467, 466, 465, 464, 463, 462, 461, 460, 459, 458,
- 457, 456, 454, 453, 452, 451, 450, 449, 448, 447,
- 446, 445, 444, 443, 442, 441, 440, 439, 438, 437,
+ 555, 554, 553, 552, 551, 550, 549, 548, 547, 546,
+ 545, 544, 543, 542, 541, 540, 539, 537, 536, 535,
+ 534, 533, 532, 531, 530, 529, 528, 527, 526, 525,
+ 524, 523, 522, 521, 520, 519, 513, 511, 508, 507,
+ 506, 505, 503, 502, 501, 499, 498, 495, 494, 493,
+ 492, 491, 490, 489, 488, 487, 486, 485, 484, 483,
+ 482, 481, 480, 479, 478, 477, 476, 475, 474, 473,
+ 472, 471, 469, 467, 466, 465, 464, 463, 462, 461,
+ 460, 459, 458, 457, 456, 454, 453, 452, 451, 450,
+ 449, 448, 447, 446, 445, 444, 443, 442, 441, 440,
- 435, 434, 433, 431, 430, 429, 428, 427, 425, 424,
- 422, 421, 419, 418, 417, 416, 415, 413, 412, 411,
- 410, 405, 404, 402, 401, 400, 399, 398, 396, 395,
- 393, 390, 388, 387, 385, 384, 382, 381, 380, 379,
- 378, 377, 376, 375, 374, 372, 371, 370, 368, 367,
- 366, 365, 363, 362, 361, 360, 358, 357, 356, 355,
- 354, 353, 352, 351, 350, 348, 346, 345, 344, 343,
- 342, 340, 339, 338, 337, 336, 335, 334, 333, 332,
- 330, 329, 328, 327, 326, 325, 324, 323, 322, 321,
- 320, 318, 317, 316, 315, 312, 311, 310, 309, 308,
+ 439, 438, 437, 435, 434, 433, 431, 430, 429, 428,
+ 427, 425, 424, 422, 421, 419, 418, 417, 416, 415,
+ 413, 412, 411, 410, 405, 404, 402, 401, 400, 399,
+ 398, 396, 395, 393, 390, 388, 387, 385, 384, 382,
+ 381, 380, 379, 378, 377, 376, 375, 374, 372, 371,
+ 370, 368, 367, 366, 365, 363, 362, 361, 360, 358,
+ 357, 356, 355, 354, 353, 352, 351, 350, 348, 346,
+ 345, 344, 343, 342, 340, 339, 338, 337, 336, 335,
+ 334, 333, 332, 330, 329, 328, 327, 326, 325, 324,
+ 323, 322, 321, 320, 318, 317, 316, 315, 312, 311,
- 307, 306, 302, 300, 297, 296, 293, 289, 282, 280,
- 279, 278, 277, 275, 274, 273, 272, 271, 270, 269,
- 268, 267, 266, 265, 264, 263, 261, 260, 259, 258,
- 257, 256, 255, 254, 253, 252, 251, 250, 249, 247,
- 246, 245, 244, 243, 242, 241, 240, 238, 237, 236,
- 235, 234, 233, 232, 231, 229, 228, 227, 226, 225,
- 224, 223, 222, 221, 220, 219, 218, 217, 216, 215,
- 214, 213, 212, 211, 209, 208, 207, 206, 205, 204,
- 202, 199, 197, 195, 193, 190, 189, 187, 184, 176,
- 175, 174, 172, 171, 169, 168, 167, 166, 164, 161,
+ 310, 309, 308, 307, 306, 302, 300, 297, 296, 293,
+ 289, 282, 280, 279, 278, 277, 275, 274, 273, 272,
+ 271, 270, 269, 268, 267, 266, 265, 264, 263, 261,
+ 260, 259, 258, 257, 256, 255, 254, 253, 252, 251,
+ 250, 249, 247, 246, 245, 244, 243, 242, 241, 240,
+ 238, 237, 236, 235, 234, 233, 232, 231, 229, 228,
+ 227, 226, 225, 224, 223, 222, 221, 220, 219, 218,
+ 217, 216, 215, 214, 213, 212, 211, 209, 208, 207,
+ 206, 205, 204, 202, 199, 197, 195, 193, 190, 189,
+ 187, 184, 176, 175, 174, 172, 171, 169, 168, 167,
- 159, 157, 156, 155, 154, 153, 151, 150, 149, 148,
- 146, 145, 144, 143, 142, 141, 140, 139, 138, 136,
- 134, 132, 131, 130, 129, 127, 126, 125, 123, 122,
- 121, 120, 116, 110, 107, 106, 104, 99, 98, 79,
- 74, 68, 65, 60, 53, 50, 49, 47, 43, 41,
- 39, 38, 24, 14, 11, 1392, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
+ 166, 164, 161, 159, 157, 156, 155, 154, 153, 151,
+ 150, 149, 148, 146, 145, 144, 143, 142, 141, 140,
+ 139, 138, 136, 134, 132, 131, 130, 129, 127, 126,
+ 125, 123, 122, 121, 120, 116, 110, 107, 106, 104,
+ 99, 98, 79, 74, 68, 65, 60, 53, 50, 49,
+ 47, 43, 41, 39, 38, 24, 14, 11, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392,
- 1392, 1392, 1392, 1392, 1392, 1392, 1392
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
+ 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395
} ;
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[167] =
+static yyconst flex_int16_t yy_rule_linenum[168] =
{ 0,
- 145, 147, 149, 154, 155, 160, 161, 162, 174, 177,
- 182, 189, 198, 207, 216, 225, 235, 244, 253, 262,
- 271, 280, 289, 298, 307, 316, 327, 336, 345, 354,
- 363, 373, 383, 393, 403, 413, 423, 433, 443, 453,
- 463, 473, 483, 493, 503, 514, 525, 536, 545, 555,
- 564, 574, 588, 603, 612, 621, 630, 639, 659, 679,
- 688, 698, 707, 716, 725, 735, 744, 753, 762, 771,
- 781, 790, 799, 808, 817, 826, 835, 844, 853, 862,
- 871, 881, 892, 904, 913, 922, 931, 941, 951, 961,
- 971, 981, 990, 1000, 1009, 1018, 1027, 1036, 1046, 1056,
+ 144, 146, 148, 153, 154, 159, 160, 161, 173, 176,
+ 181, 188, 197, 206, 215, 224, 234, 243, 252, 261,
+ 270, 279, 288, 297, 306, 315, 326, 335, 344, 353,
+ 362, 372, 382, 392, 402, 412, 422, 432, 442, 452,
+ 462, 472, 482, 492, 502, 513, 524, 535, 544, 554,
+ 563, 573, 587, 602, 611, 620, 629, 638, 658, 678,
+ 687, 697, 706, 715, 724, 734, 743, 752, 761, 770,
+ 780, 789, 798, 807, 816, 825, 834, 843, 852, 861,
+ 870, 880, 891, 903, 912, 921, 930, 940, 950, 960,
+ 970, 980, 989, 999, 1008, 1017, 1026, 1035, 1045, 1055,
- 1066, 1075, 1084, 1093, 1102, 1111, 1120, 1129, 1138, 1147,
- 1156, 1165, 1174, 1183, 1192, 1201, 1210, 1219, 1228, 1237,
- 1246, 1255, 1264, 1273, 1282, 1291, 1300, 1309, 1318, 1328,
- 1338, 1348, 1358, 1368, 1378, 1388, 1398, 1408, 1417, 1426,
- 1435, 1444, 1453, 1462, 1471, 1482, 1495, 1508, 1523, 1622,
- 1627, 1632, 1637, 1638, 1639, 1640, 1641, 1642, 1644, 1662,
- 1675, 1680, 1684, 1686, 1688, 1690
+ 1064, 1074, 1083, 1092, 1101, 1110, 1119, 1128, 1137, 1146,
+ 1155, 1164, 1173, 1182, 1191, 1200, 1209, 1218, 1227, 1236,
+ 1245, 1254, 1263, 1272, 1281, 1290, 1299, 1308, 1317, 1326,
+ 1336, 1346, 1356, 1366, 1376, 1386, 1396, 1406, 1416, 1425,
+ 1434, 1443, 1452, 1461, 1470, 1479, 1490, 1503, 1516, 1531,
+ 1630, 1635, 1640, 1645, 1646, 1647, 1648, 1649, 1650, 1652,
+ 1670, 1683, 1688, 1692, 1694, 1696, 1698
} ;
/* The intent behind this definition is that it'll catch
@@ -1665,7 +1456,7 @@ static const flex_int16_t yy_rule_linenum[167] =
#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")
@@ -1692,8 +1483,8 @@ char *yytext;
2.5.31 through 2.5.33): it generates code that does
not conform to C89. See Debian bug 333231
. */
-# undef yywrap
-# define yywrap() 1
+# undef parser4_wrap
+# define parser4_wrap() 1
namespace {
@@ -1708,10 +1499,9 @@ using namespace isc::dhcp;
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1711 "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. */
@@ -1719,23 +1509,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 1737 "dhcp4_lexer.cc"
-#line 1738 "dhcp4_lexer.cc"
+#define YY_USER_ACTION driver.loc_.columns(parser4_leng);
+#line 1529 "dhcp4_lexer.cc"
#define INITIAL 0
#define COMMENT 1
@@ -1763,7 +1553,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 */
@@ -1773,31 +1563,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 */
@@ -1808,13 +1598,14 @@ 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
@@ -1823,20 +1614,21 @@ extern int yywrap ( void );
/* %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 */
@@ -1863,7 +1655,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 */
@@ -1878,20 +1670,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) \
{ \
@@ -1899,7 +1691,7 @@ static int input ( void );
break; \
} \
errno=0; \
- clearerr(yyin); \
+ clearerr(parser4_in); \
} \
}\
\
@@ -1932,9 +1724,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 */
@@ -1948,15 +1742,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
@@ -1973,6 +1767,7 @@ extern int yylex (void);
YY_USER_ACTION
/* %not-for-header */
+
/** The main scanner function which does all the work.
*/
YY_DECL
@@ -1992,27 +1787,27 @@ YY_DECL
if ( ! (yy_start) )
(yy_start) = 1; /* first start state */
- if ( ! yyin )
+ if ( ! parser4_in )
/* %if-c-only */
- yyin = stdin;
+ parser4_in = stdin;
/* %endif */
/* %if-c++-only */
/* %endif */
- if ( ! yyout )
+ if ( ! parser4_out )
/* %if-c-only */
- yyout = stdout;
+ parser4_out = stdout;
/* %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_load_buffer_state( );
+ parser4__load_buffer_state( );
}
{
@@ -2021,12 +1816,11 @@ YY_DECL
-#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) {
@@ -2063,14 +1857,14 @@ YY_DECL
}
-#line 2066 "dhcp4_lexer.cc"
+#line 1861 "dhcp4_lexer.cc"
while ( /*CONSTCOND*/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
@@ -2092,13 +1886,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1393 )
- yy_c = yy_meta[yy_c];
+ if ( yy_current_state >= 1396 )
+ 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 != 1392 );
+ while ( yy_current_state != 1395 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -2108,22 +1902,22 @@ 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 < 167 )
+ else if ( yy_act < 168 )
fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
- (long)yy_rule_linenum[yy_act], yytext );
- else if ( yy_act == 167 )
- fprintf( stderr, "--accepting default rule (\"%s\")\n",
- yytext );
+ (long)yy_rule_linenum[yy_act], parser4_text );
else if ( yy_act == 168 )
+ fprintf( stderr, "--accepting default rule (\"%s\")\n",
+ parser4_text );
+ else if ( yy_act == 169 )
fprintf( stderr, "--(end of buffer or a NUL)\n" );
else
fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2141,17 +1935,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;;
@@ -2159,38 +1953,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);
@@ -2199,19 +1993,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();
@@ -2220,16 +2014,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:
@@ -2241,7 +2035,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:
@@ -2253,7 +2047,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::INTERFACES_CONFIG:
@@ -2265,7 +2059,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::DHCP_SOCKET_TYPE:
@@ -2277,7 +2071,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::DHCP_SOCKET_TYPE:
@@ -2290,7 +2084,7 @@ YY_RULE_SETUP
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 235 "dhcp4_lexer.ll"
+#line 234 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case Parser4Context::INTERFACES_CONFIG:
@@ -2302,7 +2096,7 @@ YY_RULE_SETUP
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 244 "dhcp4_lexer.ll"
+#line 243 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case Parser4Context::OUTBOUND_INTERFACE:
@@ -2314,7 +2108,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::OUTBOUND_INTERFACE:
@@ -2326,7 +2120,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 isc::dhcp::Parser4Context::INTERFACES_CONFIG:
@@ -2338,7 +2132,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 isc::dhcp::Parser4Context::INTERFACES_CONFIG:
@@ -2350,7 +2144,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::DHCP4:
@@ -2362,7 +2156,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::DHCP4:
@@ -2374,7 +2168,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:
@@ -2386,7 +2180,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::HOSTS_DATABASE:
@@ -2398,7 +2192,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::LEASE_DATABASE:
@@ -2412,7 +2206,7 @@ YY_RULE_SETUP
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 327 "dhcp4_lexer.ll"
+#line 326 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DATABASE_TYPE:
@@ -2424,7 +2218,7 @@ YY_RULE_SETUP
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 336 "dhcp4_lexer.ll"
+#line 335 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DATABASE_TYPE:
@@ -2436,7 +2230,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:
@@ -2448,7 +2242,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:
@@ -2460,7 +2254,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::LEASE_DATABASE:
@@ -2473,7 +2267,7 @@ YY_RULE_SETUP
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 373 "dhcp4_lexer.ll"
+#line 372 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2486,7 +2280,7 @@ YY_RULE_SETUP
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 383 "dhcp4_lexer.ll"
+#line 382 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2499,7 +2293,7 @@ YY_RULE_SETUP
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 393 "dhcp4_lexer.ll"
+#line 392 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2512,7 +2306,7 @@ YY_RULE_SETUP
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 403 "dhcp4_lexer.ll"
+#line 402 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2525,7 +2319,7 @@ YY_RULE_SETUP
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 413 "dhcp4_lexer.ll"
+#line 412 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2538,7 +2332,7 @@ YY_RULE_SETUP
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 423 "dhcp4_lexer.ll"
+#line 422 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2551,7 +2345,7 @@ YY_RULE_SETUP
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 433 "dhcp4_lexer.ll"
+#line 432 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2564,7 +2358,7 @@ YY_RULE_SETUP
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 443 "dhcp4_lexer.ll"
+#line 442 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2577,7 +2371,7 @@ YY_RULE_SETUP
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 453 "dhcp4_lexer.ll"
+#line 452 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2590,7 +2384,7 @@ YY_RULE_SETUP
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 463 "dhcp4_lexer.ll"
+#line 462 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2603,7 +2397,7 @@ YY_RULE_SETUP
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 473 "dhcp4_lexer.ll"
+#line 472 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2616,7 +2410,7 @@ YY_RULE_SETUP
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 483 "dhcp4_lexer.ll"
+#line 482 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2629,7 +2423,7 @@ YY_RULE_SETUP
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 493 "dhcp4_lexer.ll"
+#line 492 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2642,7 +2436,7 @@ YY_RULE_SETUP
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 503 "dhcp4_lexer.ll"
+#line 502 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -2656,7 +2450,7 @@ YY_RULE_SETUP
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 514 "dhcp4_lexer.ll"
+#line 513 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -2670,7 +2464,7 @@ YY_RULE_SETUP
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 525 "dhcp4_lexer.ll"
+#line 524 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -2684,7 +2478,7 @@ YY_RULE_SETUP
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 536 "dhcp4_lexer.ll"
+#line 535 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -2696,7 +2490,7 @@ YY_RULE_SETUP
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 545 "dhcp4_lexer.ll"
+#line 544 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -2709,7 +2503,7 @@ YY_RULE_SETUP
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 555 "dhcp4_lexer.ll"
+#line 554 "dhcp4_lexer.ll"
{
switch (driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -2721,7 +2515,7 @@ YY_RULE_SETUP
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 564 "dhcp4_lexer.ll"
+#line 563 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -2734,7 +2528,7 @@ YY_RULE_SETUP
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 574 "dhcp4_lexer.ll"
+#line 573 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -2751,7 +2545,7 @@ YY_RULE_SETUP
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 588 "dhcp4_lexer.ll"
+#line 587 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2769,7 +2563,7 @@ YY_RULE_SETUP
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 603 "dhcp4_lexer.ll"
+#line 602 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -2781,7 +2575,7 @@ YY_RULE_SETUP
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 612 "dhcp4_lexer.ll"
+#line 611 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -2793,7 +2587,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::SUBNET4:
@@ -2805,7 +2599,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::POOLS:
@@ -2817,7 +2611,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::DHCP4:
@@ -2840,7 +2634,7 @@ YY_RULE_SETUP
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 659 "dhcp4_lexer.ll"
+#line 658 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -2863,7 +2657,7 @@ YY_RULE_SETUP
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 679 "dhcp4_lexer.ll"
+#line 678 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
@@ -2875,7 +2669,7 @@ YY_RULE_SETUP
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 688 "dhcp4_lexer.ll"
+#line 687 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
@@ -2888,7 +2682,7 @@ YY_RULE_SETUP
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 698 "dhcp4_lexer.ll"
+#line 697 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
@@ -2900,7 +2694,7 @@ YY_RULE_SETUP
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 707 "dhcp4_lexer.ll"
+#line 706 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
@@ -2912,7 +2706,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:
@@ -2924,7 +2718,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:
@@ -2937,7 +2731,7 @@ YY_RULE_SETUP
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 735 "dhcp4_lexer.ll"
+#line 734 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -2949,7 +2743,7 @@ YY_RULE_SETUP
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 744 "dhcp4_lexer.ll"
+#line 743 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -2961,7 +2755,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:
@@ -2973,7 +2767,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:
@@ -2985,7 +2779,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::OPTION_DEF:
@@ -2998,7 +2792,7 @@ YY_RULE_SETUP
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 781 "dhcp4_lexer.ll"
+#line 780 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -3010,7 +2804,7 @@ YY_RULE_SETUP
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 790 "dhcp4_lexer.ll"
+#line 789 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
@@ -3022,7 +2816,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::LOGGING:
@@ -3034,7 +2828,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::LOGGERS:
@@ -3046,7 +2840,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::OUTPUT_OPTIONS:
@@ -3058,7 +2852,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:
@@ -3070,7 +2864,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:
@@ -3082,7 +2876,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::OUTPUT_OPTIONS:
@@ -3094,7 +2888,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:
@@ -3106,7 +2900,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::LOGGERS:
@@ -3118,7 +2912,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::DHCP4:
@@ -3131,7 +2925,7 @@ YY_RULE_SETUP
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 881 "dhcp4_lexer.ll"
+#line 880 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
@@ -3145,7 +2939,7 @@ YY_RULE_SETUP
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 892 "dhcp4_lexer.ll"
+#line 891 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
@@ -3160,7 +2954,7 @@ YY_RULE_SETUP
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 904 "dhcp4_lexer.ll"
+#line 903 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3172,7 +2966,7 @@ YY_RULE_SETUP
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 913 "dhcp4_lexer.ll"
+#line 912 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3184,7 +2978,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::SUBNET4:
@@ -3196,7 +2990,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::HOST_RESERVATION_IDENTIFIERS:
@@ -3209,7 +3003,7 @@ YY_RULE_SETUP
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 941 "dhcp4_lexer.ll"
+#line 940 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3222,7 +3016,7 @@ YY_RULE_SETUP
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 951 "dhcp4_lexer.ll"
+#line 950 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3235,7 +3029,7 @@ YY_RULE_SETUP
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 961 "dhcp4_lexer.ll"
+#line 960 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3248,7 +3042,7 @@ YY_RULE_SETUP
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 971 "dhcp4_lexer.ll"
+#line 970 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3261,7 +3055,7 @@ YY_RULE_SETUP
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 981 "dhcp4_lexer.ll"
+#line 980 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RESERVATIONS:
@@ -3273,7 +3067,7 @@ YY_RULE_SETUP
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 990 "dhcp4_lexer.ll"
+#line 989 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3286,7 +3080,7 @@ YY_RULE_SETUP
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 1000 "dhcp4_lexer.ll"
+#line 999 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -3298,7 +3092,7 @@ YY_RULE_SETUP
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 1009 "dhcp4_lexer.ll"
+#line 1008 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3310,7 +3104,7 @@ YY_RULE_SETUP
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 1018 "dhcp4_lexer.ll"
+#line 1017 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3322,7 +3116,7 @@ YY_RULE_SETUP
YY_BREAK
case 97:
YY_RULE_SETUP
-#line 1027 "dhcp4_lexer.ll"
+#line 1026 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3334,7 +3128,7 @@ YY_RULE_SETUP
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 1036 "dhcp4_lexer.ll"
+#line 1035 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
@@ -3347,7 +3141,7 @@ YY_RULE_SETUP
YY_BREAK
case 99:
YY_RULE_SETUP
-#line 1046 "dhcp4_lexer.ll"
+#line 1045 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::RELAY:
@@ -3360,7 +3154,19 @@ YY_RULE_SETUP
YY_BREAK
case 100:
YY_RULE_SETUP
-#line 1056 "dhcp4_lexer.ll"
+#line 1055 "dhcp4_lexer.ll"
+{
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::RELAY:
+ return isc::dhcp::Dhcp4Parser::make_IP_ADDRESSES(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("ip-addresses", driver.loc_);
+ }
+}
+ YY_BREAK
+case 101:
+YY_RULE_SETUP
+#line 1064 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -3370,9 +3176,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 101:
+case 102:
YY_RULE_SETUP
-#line 1066 "dhcp4_lexer.ll"
+#line 1074 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3382,9 +3188,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 102:
+case 103:
YY_RULE_SETUP
-#line 1075 "dhcp4_lexer.ll"
+#line 1083 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3394,9 +3200,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 103:
+case 104:
YY_RULE_SETUP
-#line 1084 "dhcp4_lexer.ll"
+#line 1092 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -3406,9 +3212,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 104:
+case 105:
YY_RULE_SETUP
-#line 1093 "dhcp4_lexer.ll"
+#line 1101 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3418,9 +3224,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 105:
+case 106:
YY_RULE_SETUP
-#line 1102 "dhcp4_lexer.ll"
+#line 1110 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3430,9 +3236,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 106:
+case 107:
YY_RULE_SETUP
-#line 1111 "dhcp4_lexer.ll"
+#line 1119 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3442,9 +3248,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 107:
+case 108:
YY_RULE_SETUP
-#line 1120 "dhcp4_lexer.ll"
+#line 1128 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3454,9 +3260,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 108:
+case 109:
YY_RULE_SETUP
-#line 1129 "dhcp4_lexer.ll"
+#line 1137 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3466,9 +3272,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 109:
+case 110:
YY_RULE_SETUP
-#line 1138 "dhcp4_lexer.ll"
+#line 1146 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3478,9 +3284,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 110:
+case 111:
YY_RULE_SETUP
-#line 1147 "dhcp4_lexer.ll"
+#line 1155 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -3490,9 +3296,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 111:
+case 112:
YY_RULE_SETUP
-#line 1156 "dhcp4_lexer.ll"
+#line 1164 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -3502,9 +3308,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 112:
+case 113:
YY_RULE_SETUP
-#line 1165 "dhcp4_lexer.ll"
+#line 1173 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -3514,9 +3320,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 113:
+case 114:
YY_RULE_SETUP
-#line 1174 "dhcp4_lexer.ll"
+#line 1182 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -3526,9 +3332,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 114:
+case 115:
YY_RULE_SETUP
-#line 1183 "dhcp4_lexer.ll"
+#line 1191 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -3538,9 +3344,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 115:
+case 116:
YY_RULE_SETUP
-#line 1192 "dhcp4_lexer.ll"
+#line 1200 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3550,9 +3356,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 116:
+case 117:
YY_RULE_SETUP
-#line 1201 "dhcp4_lexer.ll"
+#line 1209 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3562,9 +3368,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 117:
+case 118:
YY_RULE_SETUP
-#line 1210 "dhcp4_lexer.ll"
+#line 1218 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3574,9 +3380,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 118:
+case 119:
YY_RULE_SETUP
-#line 1219 "dhcp4_lexer.ll"
+#line 1227 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3586,9 +3392,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 119:
+case 120:
YY_RULE_SETUP
-#line 1228 "dhcp4_lexer.ll"
+#line 1236 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3598,9 +3404,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 120:
+case 121:
YY_RULE_SETUP
-#line 1237 "dhcp4_lexer.ll"
+#line 1245 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3610,9 +3416,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 121:
+case 122:
YY_RULE_SETUP
-#line 1246 "dhcp4_lexer.ll"
+#line 1254 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3622,9 +3428,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 122:
+case 123:
YY_RULE_SETUP
-#line 1255 "dhcp4_lexer.ll"
+#line 1263 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3634,9 +3440,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 123:
+case 124:
YY_RULE_SETUP
-#line 1264 "dhcp4_lexer.ll"
+#line 1272 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3646,9 +3452,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 124:
+case 125:
YY_RULE_SETUP
-#line 1273 "dhcp4_lexer.ll"
+#line 1281 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3658,9 +3464,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 125:
+case 126:
YY_RULE_SETUP
-#line 1282 "dhcp4_lexer.ll"
+#line 1290 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3670,9 +3476,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 126:
+case 127:
YY_RULE_SETUP
-#line 1291 "dhcp4_lexer.ll"
+#line 1299 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3682,9 +3488,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 127:
+case 128:
YY_RULE_SETUP
-#line 1300 "dhcp4_lexer.ll"
+#line 1308 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3694,9 +3500,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 128:
+case 129:
YY_RULE_SETUP
-#line 1309 "dhcp4_lexer.ll"
+#line 1317 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3706,126 +3512,126 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 129:
+case 130:
YY_RULE_SETUP
-#line 1318 "dhcp4_lexer.ll"
+#line 1326 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_);
}
- std::string tmp(yytext+1);
- tmp.resize(tmp.size() - 1);
- return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
-}
- YY_BREAK
-case 130:
-YY_RULE_SETUP
-#line 1328 "dhcp4_lexer.ll"
-{
- /* dhcp-ddns value keywords are case insensitive */
- 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_);
}
YY_BREAK
case 131:
YY_RULE_SETUP
-#line 1338 "dhcp4_lexer.ll"
+#line 1336 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
- if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
- return isc::dhcp::Dhcp4Parser::make_JSON(driver.loc_);
+ 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_);
}
YY_BREAK
case 132:
YY_RULE_SETUP
-#line 1348 "dhcp4_lexer.ll"
+#line 1346 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
- if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
- return isc::dhcp::Dhcp4Parser::make_WHEN_PRESENT(driver.loc_);
+ 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_);
}
YY_BREAK
case 133:
YY_RULE_SETUP
-#line 1358 "dhcp4_lexer.ll"
+#line 1356 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
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_);
}
YY_BREAK
case 134:
YY_RULE_SETUP
-#line 1368 "dhcp4_lexer.ll"
+#line 1366 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
- return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_);
+ 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_);
}
YY_BREAK
case 135:
YY_RULE_SETUP
-#line 1378 "dhcp4_lexer.ll"
+#line 1376 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
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_);
}
YY_BREAK
case 136:
YY_RULE_SETUP
-#line 1388 "dhcp4_lexer.ll"
+#line 1386 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
- return isc::dhcp::Dhcp4Parser::make_ALWAYS(driver.loc_);
+ 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_);
}
YY_BREAK
case 137:
YY_RULE_SETUP
-#line 1398 "dhcp4_lexer.ll"
+#line 1396 "dhcp4_lexer.ll"
{
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
- return isc::dhcp::Dhcp4Parser::make_WHEN_NOT_PRESENT(driver.loc_);
+ 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_);
}
YY_BREAK
case 138:
YY_RULE_SETUP
-#line 1408 "dhcp4_lexer.ll"
+#line 1406 "dhcp4_lexer.ll"
+{
+ /* dhcp-ddns value keywords are case insensitive */
+ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
+ return isc::dhcp::Dhcp4Parser::make_WHEN_NOT_PRESENT(driver.loc_);
+ }
+ std::string tmp(parser4_text+1);
+ tmp.resize(tmp.size() - 1);
+ return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
+}
+ YY_BREAK
+case 139:
+YY_RULE_SETUP
+#line 1416 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
@@ -3835,9 +3641,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 139:
+case 140:
YY_RULE_SETUP
-#line 1417 "dhcp4_lexer.ll"
+#line 1425 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
@@ -3847,9 +3653,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 140:
+case 141:
YY_RULE_SETUP
-#line 1426 "dhcp4_lexer.ll"
+#line 1434 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::CONFIG:
@@ -3859,9 +3665,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 141:
+case 142:
YY_RULE_SETUP
-#line 1435 "dhcp4_lexer.ll"
+#line 1443 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
@@ -3871,9 +3677,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 142:
+case 143:
YY_RULE_SETUP
-#line 1444 "dhcp4_lexer.ll"
+#line 1452 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
@@ -3883,9 +3689,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 143:
+case 144:
YY_RULE_SETUP
-#line 1453 "dhcp4_lexer.ll"
+#line 1461 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
@@ -3895,9 +3701,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 144:
+case 145:
YY_RULE_SETUP
-#line 1462 "dhcp4_lexer.ll"
+#line 1470 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -3907,9 +3713,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 145:
+case 146:
YY_RULE_SETUP
-#line 1471 "dhcp4_lexer.ll"
+#line 1479 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -3921,9 +3727,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 146:
+case 147:
YY_RULE_SETUP
-#line 1482 "dhcp4_lexer.ll"
+#line 1490 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -3937,9 +3743,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 147:
+case 148:
YY_RULE_SETUP
-#line 1495 "dhcp4_lexer.ll"
+#line 1503 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -3953,9 +3759,9 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 148:
+case 149:
YY_RULE_SETUP
-#line 1508 "dhcp4_lexer.ll"
+#line 1516 "dhcp4_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
@@ -3969,14 +3775,14 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 149:
+case 150:
YY_RULE_SETUP
-#line 1523 "dhcp4_lexer.ll"
+#line 1531 "dhcp4_lexer.ll"
{
/* A string has been matched. It contains the actual string and single quotes.
We need to get those quotes out of the way and just use its content, e.g.
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;
@@ -4071,68 +3877,68 @@ YY_RULE_SETUP
return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
}
YY_BREAK
-case 150:
-/* rule 150 can match eol */
-YY_RULE_SETUP
-#line 1622 "dhcp4_lexer.ll"
-{
- /* Bad string with a forbidden control character inside */
- driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
-}
- YY_BREAK
case 151:
/* rule 151 can match eol */
YY_RULE_SETUP
-#line 1627 "dhcp4_lexer.ll"
+#line 1630 "dhcp4_lexer.ll"
{
- /* Bad string with a bad escape inside */
- driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
+ /* Bad string with a forbidden control character inside */
+ driver.error(driver.loc_, "Invalid control in " + std::string(parser4_text));
}
YY_BREAK
case 152:
+/* rule 152 can match eol */
YY_RULE_SETUP
-#line 1632 "dhcp4_lexer.ll"
+#line 1635 "dhcp4_lexer.ll"
{
- /* Bad string with an open escape at the end */
- driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
+ /* Bad string with a bad escape inside */
+ driver.error(driver.loc_, "Bad escape in " + std::string(parser4_text));
}
YY_BREAK
case 153:
YY_RULE_SETUP
-#line 1637 "dhcp4_lexer.ll"
-{ return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
+#line 1640 "dhcp4_lexer.ll"
+{
+ /* Bad string with an open escape at the end */
+ driver.error(driver.loc_, "Overflow escape in " + std::string(parser4_text));
+}
YY_BREAK
case 154:
YY_RULE_SETUP
-#line 1638 "dhcp4_lexer.ll"
-{ return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
+#line 1645 "dhcp4_lexer.ll"
+{ return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 155:
YY_RULE_SETUP
-#line 1639 "dhcp4_lexer.ll"
-{ return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
+#line 1646 "dhcp4_lexer.ll"
+{ return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
YY_BREAK
case 156:
YY_RULE_SETUP
-#line 1640 "dhcp4_lexer.ll"
-{ return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
+#line 1647 "dhcp4_lexer.ll"
+{ return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 157:
YY_RULE_SETUP
-#line 1641 "dhcp4_lexer.ll"
-{ return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
+#line 1648 "dhcp4_lexer.ll"
+{ return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
YY_BREAK
case 158:
YY_RULE_SETUP
-#line 1642 "dhcp4_lexer.ll"
-{ return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
+#line 1649 "dhcp4_lexer.ll"
+{ return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
YY_BREAK
case 159:
YY_RULE_SETUP
-#line 1644 "dhcp4_lexer.ll"
+#line 1650 "dhcp4_lexer.ll"
+{ return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
+ YY_BREAK
+case 160:
+YY_RULE_SETUP
+#line 1652 "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).
@@ -4148,12 +3954,12 @@ YY_RULE_SETUP
return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
}
YY_BREAK
-case 160:
+case 161:
YY_RULE_SETUP
-#line 1662 "dhcp4_lexer.ll"
+#line 1670 "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(tmp);
@@ -4164,43 +3970,43 @@ YY_RULE_SETUP
return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
}
YY_BREAK
-case 161:
-YY_RULE_SETUP
-#line 1675 "dhcp4_lexer.ll"
-{
- string tmp(yytext);
- return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
-}
- YY_BREAK
case 162:
YY_RULE_SETUP
-#line 1680 "dhcp4_lexer.ll"
+#line 1683 "dhcp4_lexer.ll"
{
- return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
+ string tmp(parser4_text);
+ return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
}
YY_BREAK
case 163:
YY_RULE_SETUP
-#line 1684 "dhcp4_lexer.ll"
-driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
+#line 1688 "dhcp4_lexer.ll"
+{
+ return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
+}
YY_BREAK
case 164:
YY_RULE_SETUP
-#line 1686 "dhcp4_lexer.ll"
-driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
+#line 1692 "dhcp4_lexer.ll"
+driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
YY_BREAK
case 165:
YY_RULE_SETUP
-#line 1688 "dhcp4_lexer.ll"
-driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
+#line 1694 "dhcp4_lexer.ll"
+driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
YY_BREAK
case 166:
YY_RULE_SETUP
-#line 1690 "dhcp4_lexer.ll"
-driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
+#line 1696 "dhcp4_lexer.ll"
+driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
+ YY_BREAK
+case 167:
+YY_RULE_SETUP
+#line 1698 "dhcp4_lexer.ll"
+driver.error (driver.loc_, "Invalid character: " + std::string(parser4_text));
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 1692 "dhcp4_lexer.ll"
+#line 1700 "dhcp4_lexer.ll"
{
if (driver.states_.empty()) {
return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -4224,12 +4030,12 @@ case YY_STATE_EOF(INITIAL):
BEGIN(DIR_EXIT);
}
YY_BREAK
-case 167:
+case 168:
YY_RULE_SETUP
-#line 1715 "dhcp4_lexer.ll"
+#line 1723 "dhcp4_lexer.ll"
ECHO;
YY_BREAK
-#line 4232 "dhcp4_lexer.cc"
+#line 4039 "dhcp4_lexer.cc"
case YY_END_OF_BUFFER:
{
@@ -4244,8 +4050,8 @@ 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
@@ -4253,7 +4059,7 @@ ECHO;
*/
(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
/* %if-c-only */
- YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = parser4_in;
/* %endif */
/* %if-c++-only */
/* %endif */
@@ -4311,11 +4117,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
@@ -4365,11 +4171,12 @@ ECHO;
} /* 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 */
@@ -4389,7 +4196,7 @@ static int yy_get_next_buffer (void)
{
char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
char *source = (yytext_ptr);
- int number_to_move, i;
+ yy_size_t number_to_move, i;
int ret_val;
if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -4418,7 +4225,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 = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1;
for ( i = 0; i < number_to_move; ++i )
*(dest++) = *(source++);
@@ -4431,7 +4238,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 )
@@ -4445,7 +4252,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;
@@ -4454,12 +4261,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(
@@ -4487,7 +4293,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
@@ -4501,15 +4307,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 ((int) ((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_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;
@@ -4525,6 +4328,7 @@ 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 */
@@ -4548,10 +4352,10 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1393 )
- yy_c = yy_meta[yy_c];
+ if ( yy_current_state >= 1396 )
+ 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;
@@ -4581,11 +4385,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 1393 )
- yy_c = yy_meta[yy_c];
+ if ( yy_current_state >= 1396 )
+ yy_c = yy_meta[(unsigned int) yy_c];
}
- yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 1392);
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ yy_is_jam = (yy_current_state == 1395);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -4624,7 +4428,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( ) )
@@ -4641,14 +4445,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;
@@ -4667,10 +4471,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;
}
@@ -4684,20 +4488,20 @@ 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 */
@@ -4708,7 +4512,7 @@ static int yy_get_next_buffer (void)
*
*/
/* %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 */
@@ -4716,10 +4520,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;
@@ -4732,18 +4536,18 @@ 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 */
@@ -4751,7 +4555,7 @@ static void yy_load_buffer_state (void)
(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;
+ parser4_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
/* %endif */
/* %if-c++-only */
/* %endif */
@@ -4765,29 +4569,29 @@ 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;
+ b->yy_buf_size = (yy_size_t)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;
}
@@ -4796,11 +4600,11 @@ static void yy_load_buffer_state (void)
/* %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 */
@@ -4813,17 +4617,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 */
@@ -4831,7 +4635,7 @@ 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;
@@ -4840,8 +4644,8 @@ static void yy_load_buffer_state (void)
/* %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){
@@ -4864,7 +4668,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 */
@@ -4887,7 +4691,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++ */
@@ -4898,7 +4702,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 */
@@ -4906,9 +4710,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. */
@@ -4922,8 +4726,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 */
@@ -4934,7 +4738,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 */
@@ -4942,13 +4746,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;
}
}
@@ -4959,7 +4763,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 */
@@ -4972,15 +4776,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; /* After all that talk, this was set to 1 anyways... */
+ (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;
@@ -4992,12 +4796,12 @@ static void yyensure_buffer_stack (void)
yy_size_t 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*));
@@ -5011,9 +4815,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;
@@ -5021,73 +4825,73 @@ 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;
yy_size_t n;
- int i;
+ yy_size_t i;
/* Get memory for full buffer, including space for trailing EOB's. */
- n = (yy_size_t) (_yybytes_len + 2);
- 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.
@@ -5103,9 +4907,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 */
@@ -5118,14 +4922,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 )
@@ -5138,43 +4942,43 @@ 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 */
@@ -5184,36 +4988,36 @@ char *yyget_text (void)
* @param _line_number 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.
*
- * @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 */
@@ -5227,50 +5031,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 */
@@ -5284,7 +5088,7 @@ 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;
@@ -5294,7 +5098,7 @@ static void yy_flex_strncpy (char* s1, const char * s2, int n )
#endif
#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (const char * s )
+static int yy_flex_strlen (yyconst char * s )
{
int n;
for ( n = 0; s[n]; ++n )
@@ -5304,12 +5108,12 @@ 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
@@ -5319,12 +5123,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 */
@@ -5334,7 +5138,8 @@ void yyfree (void * ptr )
/* %ok-for-header */
-#line 1715 "dhcp4_lexer.ll"
+#line 1723 "dhcp4_lexer.ll"
+
using namespace isc::dhcp;
@@ -5348,7 +5153,7 @@ Parser4Context::scanStringBegin(const std::string& str, ParserType parser_type)
file_ = "";
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) {
@@ -5368,7 +5173,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 6dd8dd6a02..6650d75f95 100644
--- a/src/bin/dhcp4/dhcp4_lexer.ll
+++ b/src/bin/dhcp4/dhcp4_lexer.ll
@@ -1052,6 +1052,15 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence}
}
}
+\"ip-addresses\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::RELAY:
+ return isc::dhcp::Dhcp4Parser::make_IP_ADDRESSES(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("ip-addresses", driver.loc_);
+ }
+}
+
\"hooks-libraries\" {
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc
index ce05094ff6..cb76fa5bab 100644
--- a/src/bin/dhcp4/dhcp4_parser.cc
+++ b/src/bin/dhcp4/dhcp4_parser.cc
@@ -253,30 +253,30 @@ namespace isc { namespace dhcp {
{
switch (that.type_get ())
{
- case 175: // value
- case 179: // map_value
- case 217: // socket_type
- case 220: // outbound_interface_value
- case 236: // db_type
- case 320: // hr_mode
- case 467: // ncr_protocol_value
- case 475: // replace_client_name_value
+ case 176: // value
+ case 180: // map_value
+ case 218: // socket_type
+ case 221: // outbound_interface_value
+ case 237: // db_type
+ case 321: // hr_mode
+ case 469: // ncr_protocol_value
+ case 477: // replace_client_name_value
value.move< ElementPtr > (that.value);
break;
- case 159: // "boolean"
+ case 160: // "boolean"
value.move< bool > (that.value);
break;
- case 158: // "floating point"
+ case 159: // "floating point"
value.move< double > (that.value);
break;
- case 157: // "integer"
+ case 158: // "integer"
value.move< int64_t > (that.value);
break;
- case 156: // "constant string"
+ case 157: // "constant string"
value.move< std::string > (that.value);
break;
@@ -295,30 +295,30 @@ namespace isc { namespace dhcp {
state = that.state;
switch (that.type_get ())
{
- case 175: // value
- case 179: // map_value
- case 217: // socket_type
- case 220: // outbound_interface_value
- case 236: // db_type
- case 320: // hr_mode
- case 467: // ncr_protocol_value
- case 475: // replace_client_name_value
+ case 176: // value
+ case 180: // map_value
+ case 218: // socket_type
+ case 221: // outbound_interface_value
+ case 237: // db_type
+ case 321: // hr_mode
+ case 469: // ncr_protocol_value
+ case 477: // replace_client_name_value
value.copy< ElementPtr > (that.value);
break;
- case 159: // "boolean"
+ case 160: // "boolean"
value.copy< bool > (that.value);
break;
- case 158: // "floating point"
+ case 159: // "floating point"
value.copy< double > (that.value);
break;
- case 157: // "integer"
+ case 158: // "integer"
value.copy< int64_t > (that.value);
break;
- case 156: // "constant string"
+ case 157: // "constant string"
value.copy< std::string > (that.value);
break;
@@ -358,86 +358,86 @@ namespace isc { namespace dhcp {
<< yysym.location << ": ";
switch (yytype)
{
- case 156: // "constant string"
+ case 157: // "constant string"
-#line 234 "dhcp4_parser.yy" // lalr1.cc:636
+#line 235 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< std::string > (); }
#line 366 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 157: // "integer"
+ case 158: // "integer"
-#line 234 "dhcp4_parser.yy" // lalr1.cc:636
+#line 235 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< int64_t > (); }
#line 373 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 158: // "floating point"
+ case 159: // "floating point"
-#line 234 "dhcp4_parser.yy" // lalr1.cc:636
+#line 235 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< double > (); }
#line 380 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 159: // "boolean"
+ case 160: // "boolean"
-#line 234 "dhcp4_parser.yy" // lalr1.cc:636
+#line 235 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< bool > (); }
#line 387 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 175: // value
+ case 176: // value
-#line 234 "dhcp4_parser.yy" // lalr1.cc:636
+#line 235 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
#line 394 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 179: // map_value
+ case 180: // map_value
-#line 234 "dhcp4_parser.yy" // lalr1.cc:636
+#line 235 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
#line 401 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 217: // socket_type
+ case 218: // socket_type
-#line 234 "dhcp4_parser.yy" // lalr1.cc:636
+#line 235 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
#line 408 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 220: // outbound_interface_value
+ case 221: // outbound_interface_value
-#line 234 "dhcp4_parser.yy" // lalr1.cc:636
+#line 235 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
#line 415 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 236: // db_type
+ case 237: // db_type
-#line 234 "dhcp4_parser.yy" // lalr1.cc:636
+#line 235 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
#line 422 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 320: // hr_mode
+ case 321: // hr_mode
-#line 234 "dhcp4_parser.yy" // lalr1.cc:636
+#line 235 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
#line 429 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 467: // ncr_protocol_value
+ case 469: // ncr_protocol_value
-#line 234 "dhcp4_parser.yy" // lalr1.cc:636
+#line 235 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
#line 436 "dhcp4_parser.cc" // lalr1.cc:636
break;
- case 475: // replace_client_name_value
+ case 477: // replace_client_name_value
-#line 234 "dhcp4_parser.yy" // lalr1.cc:636
+#line 235 "dhcp4_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
#line 443 "dhcp4_parser.cc" // lalr1.cc:636
break;
@@ -639,30 +639,30 @@ namespace isc { namespace dhcp {
when using variants. */
switch (yyr1_[yyn])
{
- case 175: // value
- case 179: // map_value
- case 217: // socket_type
- case 220: // outbound_interface_value
- case 236: // db_type
- case 320: // hr_mode
- case 467: // ncr_protocol_value
- case 475: // replace_client_name_value
+ case 176: // value
+ case 180: // map_value
+ case 218: // socket_type
+ case 221: // outbound_interface_value
+ case 237: // db_type
+ case 321: // hr_mode
+ case 469: // ncr_protocol_value
+ case 477: // replace_client_name_value
yylhs.value.build< ElementPtr > ();
break;
- case 159: // "boolean"
+ case 160: // "boolean"
yylhs.value.build< bool > ();
break;
- case 158: // "floating point"
+ case 159: // "floating point"
yylhs.value.build< double > ();
break;
- case 157: // "integer"
+ case 158: // "integer"
yylhs.value.build< int64_t > ();
break;
- case 156: // "constant string"
+ case 157: // "constant string"
yylhs.value.build< std::string > ();
break;
@@ -684,127 +684,127 @@ namespace isc { namespace dhcp {
switch (yyn)
{
case 2:
-#line 243 "dhcp4_parser.yy" // lalr1.cc:859
+#line 244 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.NO_KEYWORD; }
#line 690 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 4:
-#line 244 "dhcp4_parser.yy" // lalr1.cc:859
+#line 245 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.CONFIG; }
#line 696 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 6:
-#line 245 "dhcp4_parser.yy" // lalr1.cc:859
+#line 246 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.DHCP4; }
#line 702 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 8:
-#line 246 "dhcp4_parser.yy" // lalr1.cc:859
+#line 247 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.INTERFACES_CONFIG; }
#line 708 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 10:
-#line 247 "dhcp4_parser.yy" // lalr1.cc:859
+#line 248 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.SUBNET4; }
#line 714 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 12:
-#line 248 "dhcp4_parser.yy" // lalr1.cc:859
+#line 249 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.POOLS; }
#line 720 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 14:
-#line 249 "dhcp4_parser.yy" // lalr1.cc:859
+#line 250 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.RESERVATIONS; }
#line 726 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 16:
-#line 250 "dhcp4_parser.yy" // lalr1.cc:859
+#line 251 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.DHCP4; }
#line 732 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 18:
-#line 251 "dhcp4_parser.yy" // lalr1.cc:859
+#line 252 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.OPTION_DEF; }
#line 738 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 20:
-#line 252 "dhcp4_parser.yy" // lalr1.cc:859
+#line 253 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.OPTION_DATA; }
#line 744 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 22:
-#line 253 "dhcp4_parser.yy" // lalr1.cc:859
+#line 254 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
#line 750 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 24:
-#line 254 "dhcp4_parser.yy" // lalr1.cc:859
+#line 255 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.DHCP_DDNS; }
#line 756 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 26:
-#line 255 "dhcp4_parser.yy" // lalr1.cc:859
+#line 256 "dhcp4_parser.yy" // lalr1.cc:859
{ ctx.ctx_ = ctx.LOGGING; }
#line 762 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 28:
-#line 263 "dhcp4_parser.yy" // lalr1.cc:859
+#line 264 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
#line 768 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 29:
-#line 264 "dhcp4_parser.yy" // lalr1.cc:859
+#line 265 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
#line 774 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 30:
-#line 265 "dhcp4_parser.yy" // lalr1.cc:859
+#line 266 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
#line 780 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 31:
-#line 266 "dhcp4_parser.yy" // lalr1.cc:859
+#line 267 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
#line 786 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 32:
-#line 267 "dhcp4_parser.yy" // lalr1.cc:859
+#line 268 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
#line 792 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 33:
-#line 268 "dhcp4_parser.yy" // lalr1.cc:859
+#line 269 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 798 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 34:
-#line 269 "dhcp4_parser.yy" // lalr1.cc:859
+#line 270 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 804 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 35:
-#line 272 "dhcp4_parser.yy" // lalr1.cc:859
+#line 273 "dhcp4_parser.yy" // lalr1.cc:859
{
// Push back the JSON value on the stack
ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -813,7 +813,7 @@ namespace isc { namespace dhcp {
break;
case 36:
-#line 277 "dhcp4_parser.yy" // lalr1.cc:859
+#line 278 "dhcp4_parser.yy" // lalr1.cc:859
{
// This code is executed when we're about to start parsing
// the content of the map
@@ -824,7 +824,7 @@ namespace isc { namespace dhcp {
break;
case 37:
-#line 282 "dhcp4_parser.yy" // lalr1.cc:859
+#line 283 "dhcp4_parser.yy" // lalr1.cc:859
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
@@ -834,13 +834,13 @@ namespace isc { namespace dhcp {
break;
case 38:
-#line 288 "dhcp4_parser.yy" // lalr1.cc:859
+#line 289 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 840 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 41:
-#line 295 "dhcp4_parser.yy" // lalr1.cc:859
+#line 296 "dhcp4_parser.yy" // lalr1.cc:859
{
// map containing a single entry
ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
@@ -849,7 +849,7 @@ namespace isc { namespace dhcp {
break;
case 42:
-#line 299 "dhcp4_parser.yy" // lalr1.cc:859
+#line 300 "dhcp4_parser.yy" // lalr1.cc:859
{
// map consisting of a shorter map followed by
// comma and string:value
@@ -859,7 +859,7 @@ namespace isc { namespace dhcp {
break;
case 43:
-#line 306 "dhcp4_parser.yy" // lalr1.cc:859
+#line 307 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
@@ -868,7 +868,7 @@ namespace isc { namespace dhcp {
break;
case 44:
-#line 309 "dhcp4_parser.yy" // lalr1.cc:859
+#line 310 "dhcp4_parser.yy" // lalr1.cc:859
{
// list parsing complete. Put any sanity checking here
}
@@ -876,7 +876,7 @@ namespace isc { namespace dhcp {
break;
case 47:
-#line 317 "dhcp4_parser.yy" // lalr1.cc:859
+#line 318 "dhcp4_parser.yy" // lalr1.cc:859
{
// List consisting of a single element.
ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -885,7 +885,7 @@ namespace isc { namespace dhcp {
break;
case 48:
-#line 321 "dhcp4_parser.yy" // lalr1.cc:859
+#line 322 "dhcp4_parser.yy" // lalr1.cc:859
{
// List ending with , and a value.
ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -894,7 +894,7 @@ namespace isc { namespace dhcp {
break;
case 49:
-#line 328 "dhcp4_parser.yy" // lalr1.cc:859
+#line 329 "dhcp4_parser.yy" // lalr1.cc:859
{
// List parsing about to start
}
@@ -902,7 +902,7 @@ namespace isc { namespace dhcp {
break;
case 50:
-#line 330 "dhcp4_parser.yy" // lalr1.cc:859
+#line 331 "dhcp4_parser.yy" // lalr1.cc:859
{
// list parsing complete. Put any sanity checking here
//ctx.stack_.pop_back();
@@ -911,7 +911,7 @@ namespace isc { namespace dhcp {
break;
case 53:
-#line 339 "dhcp4_parser.yy" // lalr1.cc:859
+#line 340 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(s);
@@ -920,7 +920,7 @@ namespace isc { namespace dhcp {
break;
case 54:
-#line 343 "dhcp4_parser.yy" // lalr1.cc:859
+#line 344 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(s);
@@ -929,7 +929,7 @@ namespace isc { namespace dhcp {
break;
case 55:
-#line 354 "dhcp4_parser.yy" // lalr1.cc:859
+#line 355 "dhcp4_parser.yy" // lalr1.cc:859
{
const std::string& where = ctx.contextName();
const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -940,7 +940,7 @@ namespace isc { namespace dhcp {
break;
case 56:
-#line 364 "dhcp4_parser.yy" // lalr1.cc:859
+#line 365 "dhcp4_parser.yy" // lalr1.cc:859
{
// This code is executed when we're about to start parsing
// the content of the map
@@ -951,7 +951,7 @@ namespace isc { namespace dhcp {
break;
case 57:
-#line 369 "dhcp4_parser.yy" // lalr1.cc:859
+#line 370 "dhcp4_parser.yy" // lalr1.cc:859
{
// map parsing completed. If we ever want to do any wrap up
// (maybe some sanity checking), this would be the best place
@@ -964,7 +964,7 @@ namespace isc { namespace dhcp {
break;
case 66:
-#line 393 "dhcp4_parser.yy" // lalr1.cc:859
+#line 394 "dhcp4_parser.yy" // lalr1.cc:859
{
// This code is executed when we're about to start parsing
// the content of the map
@@ -977,7 +977,7 @@ namespace isc { namespace dhcp {
break;
case 67:
-#line 400 "dhcp4_parser.yy" // lalr1.cc:859
+#line 401 "dhcp4_parser.yy" // lalr1.cc:859
{
// No global parameter is required
ctx.stack_.pop_back();
@@ -987,7 +987,7 @@ namespace isc { namespace dhcp {
break;
case 68:
-#line 408 "dhcp4_parser.yy" // lalr1.cc:859
+#line 409 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the Dhcp4 map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -997,7 +997,7 @@ namespace isc { namespace dhcp {
break;
case 69:
-#line 412 "dhcp4_parser.yy" // lalr1.cc:859
+#line 413 "dhcp4_parser.yy" // lalr1.cc:859
{
// No global parameter is required
// parsing completed
@@ -1006,7 +1006,7 @@ namespace isc { namespace dhcp {
break;
case 99:
-#line 452 "dhcp4_parser.yy" // lalr1.cc:859
+#line 453 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("valid-lifetime", prf);
@@ -1015,7 +1015,7 @@ namespace isc { namespace dhcp {
break;
case 100:
-#line 457 "dhcp4_parser.yy" // lalr1.cc:859
+#line 458 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("renew-timer", prf);
@@ -1024,7 +1024,7 @@ namespace isc { namespace dhcp {
break;
case 101:
-#line 462 "dhcp4_parser.yy" // lalr1.cc:859
+#line 463 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("rebind-timer", prf);
@@ -1033,7 +1033,7 @@ namespace isc { namespace dhcp {
break;
case 102:
-#line 467 "dhcp4_parser.yy" // lalr1.cc:859
+#line 468 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("decline-probation-period", dpp);
@@ -1042,7 +1042,7 @@ namespace isc { namespace dhcp {
break;
case 103:
-#line 472 "dhcp4_parser.yy" // lalr1.cc:859
+#line 473 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("echo-client-id", echo);
@@ -1051,7 +1051,7 @@ namespace isc { namespace dhcp {
break;
case 104:
-#line 477 "dhcp4_parser.yy" // lalr1.cc:859
+#line 478 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("match-client-id", match);
@@ -1060,7 +1060,7 @@ namespace isc { namespace dhcp {
break;
case 105:
-#line 483 "dhcp4_parser.yy" // lalr1.cc:859
+#line 484 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interfaces-config", i);
@@ -1071,7 +1071,7 @@ namespace isc { namespace dhcp {
break;
case 106:
-#line 488 "dhcp4_parser.yy" // lalr1.cc:859
+#line 489 "dhcp4_parser.yy" // lalr1.cc:859
{
// No interfaces config param is required
ctx.stack_.pop_back();
@@ -1081,7 +1081,7 @@ namespace isc { namespace dhcp {
break;
case 116:
-#line 507 "dhcp4_parser.yy" // lalr1.cc:859
+#line 508 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the interfaces-config map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1091,7 +1091,7 @@ namespace isc { namespace dhcp {
break;
case 117:
-#line 511 "dhcp4_parser.yy" // lalr1.cc:859
+#line 512 "dhcp4_parser.yy" // lalr1.cc:859
{
// No interfaces config param is required
// parsing completed
@@ -1100,7 +1100,7 @@ namespace isc { namespace dhcp {
break;
case 118:
-#line 516 "dhcp4_parser.yy" // lalr1.cc:859
+#line 517 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interfaces", l);
@@ -1111,7 +1111,7 @@ namespace isc { namespace dhcp {
break;
case 119:
-#line 521 "dhcp4_parser.yy" // lalr1.cc:859
+#line 522 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -1120,7 +1120,7 @@ namespace isc { namespace dhcp {
break;
case 120:
-#line 526 "dhcp4_parser.yy" // lalr1.cc:859
+#line 527 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.DHCP_SOCKET_TYPE);
}
@@ -1128,7 +1128,7 @@ namespace isc { namespace dhcp {
break;
case 121:
-#line 528 "dhcp4_parser.yy" // lalr1.cc:859
+#line 529 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -1137,19 +1137,19 @@ namespace isc { namespace dhcp {
break;
case 122:
-#line 533 "dhcp4_parser.yy" // lalr1.cc:859
+#line 534 "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 123:
-#line 534 "dhcp4_parser.yy" // lalr1.cc:859
+#line 535 "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 124:
-#line 537 "dhcp4_parser.yy" // lalr1.cc:859
+#line 538 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.OUTBOUND_INTERFACE);
}
@@ -1157,7 +1157,7 @@ namespace isc { namespace dhcp {
break;
case 125:
-#line 539 "dhcp4_parser.yy" // lalr1.cc:859
+#line 540 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -1166,7 +1166,7 @@ namespace isc { namespace dhcp {
break;
case 126:
-#line 544 "dhcp4_parser.yy" // lalr1.cc:859
+#line 545 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
}
@@ -1174,7 +1174,7 @@ namespace isc { namespace dhcp {
break;
case 127:
-#line 546 "dhcp4_parser.yy" // lalr1.cc:859
+#line 547 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
}
@@ -1182,7 +1182,7 @@ namespace isc { namespace dhcp {
break;
case 128:
-#line 550 "dhcp4_parser.yy" // lalr1.cc:859
+#line 551 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("re-detect", b);
@@ -1191,7 +1191,7 @@ namespace isc { namespace dhcp {
break;
case 129:
-#line 556 "dhcp4_parser.yy" // lalr1.cc:859
+#line 557 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lease-database", i);
@@ -1202,7 +1202,7 @@ namespace isc { namespace dhcp {
break;
case 130:
-#line 561 "dhcp4_parser.yy" // lalr1.cc:859
+#line 562 "dhcp4_parser.yy" // lalr1.cc:859
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -1213,7 +1213,7 @@ namespace isc { namespace dhcp {
break;
case 131:
-#line 568 "dhcp4_parser.yy" // lalr1.cc:859
+#line 569 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hosts-database", i);
@@ -1224,7 +1224,7 @@ namespace isc { namespace dhcp {
break;
case 132:
-#line 573 "dhcp4_parser.yy" // lalr1.cc:859
+#line 574 "dhcp4_parser.yy" // lalr1.cc:859
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -1235,7 +1235,7 @@ namespace isc { namespace dhcp {
break;
case 133:
-#line 580 "dhcp4_parser.yy" // lalr1.cc:859
+#line 581 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hosts-databases", l);
@@ -1246,7 +1246,7 @@ namespace isc { namespace dhcp {
break;
case 134:
-#line 585 "dhcp4_parser.yy" // lalr1.cc:859
+#line 586 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -1255,7 +1255,7 @@ namespace isc { namespace dhcp {
break;
case 139:
-#line 598 "dhcp4_parser.yy" // lalr1.cc:859
+#line 599 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
@@ -1265,7 +1265,7 @@ namespace isc { namespace dhcp {
break;
case 140:
-#line 602 "dhcp4_parser.yy" // lalr1.cc:859
+#line 603 "dhcp4_parser.yy" // lalr1.cc:859
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -1275,7 +1275,7 @@ namespace isc { namespace dhcp {
break;
case 161:
-#line 632 "dhcp4_parser.yy" // lalr1.cc:859
+#line 633 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.DATABASE_TYPE);
}
@@ -1283,7 +1283,7 @@ namespace isc { namespace dhcp {
break;
case 162:
-#line 634 "dhcp4_parser.yy" // lalr1.cc:859
+#line 635 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -1292,31 +1292,31 @@ namespace isc { namespace dhcp {
break;
case 163:
-#line 639 "dhcp4_parser.yy" // lalr1.cc:859
+#line 640 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
#line 1298 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 164:
-#line 640 "dhcp4_parser.yy" // lalr1.cc:859
+#line 641 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
#line 1304 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 165:
-#line 641 "dhcp4_parser.yy" // lalr1.cc:859
+#line 642 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
#line 1310 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 166:
-#line 642 "dhcp4_parser.yy" // lalr1.cc:859
+#line 643 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
#line 1316 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 167:
-#line 645 "dhcp4_parser.yy" // lalr1.cc:859
+#line 646 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1324,7 +1324,7 @@ namespace isc { namespace dhcp {
break;
case 168:
-#line 647 "dhcp4_parser.yy" // lalr1.cc:859
+#line 648 "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);
@@ -1334,7 +1334,7 @@ namespace isc { namespace dhcp {
break;
case 169:
-#line 653 "dhcp4_parser.yy" // lalr1.cc:859
+#line 654 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1342,7 +1342,7 @@ namespace isc { namespace dhcp {
break;
case 170:
-#line 655 "dhcp4_parser.yy" // lalr1.cc:859
+#line 656 "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);
@@ -1352,7 +1352,7 @@ namespace isc { namespace dhcp {
break;
case 171:
-#line 661 "dhcp4_parser.yy" // lalr1.cc:859
+#line 662 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1360,7 +1360,7 @@ namespace isc { namespace dhcp {
break;
case 172:
-#line 663 "dhcp4_parser.yy" // lalr1.cc:859
+#line 664 "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);
@@ -1370,7 +1370,7 @@ namespace isc { namespace dhcp {
break;
case 173:
-#line 669 "dhcp4_parser.yy" // lalr1.cc:859
+#line 670 "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);
@@ -1379,7 +1379,7 @@ namespace isc { namespace dhcp {
break;
case 174:
-#line 674 "dhcp4_parser.yy" // lalr1.cc:859
+#line 675 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1387,7 +1387,7 @@ namespace isc { namespace dhcp {
break;
case 175:
-#line 676 "dhcp4_parser.yy" // lalr1.cc:859
+#line 677 "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);
@@ -1397,7 +1397,7 @@ namespace isc { namespace dhcp {
break;
case 176:
-#line 682 "dhcp4_parser.yy" // lalr1.cc:859
+#line 683 "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);
@@ -1406,7 +1406,7 @@ namespace isc { namespace dhcp {
break;
case 177:
-#line 687 "dhcp4_parser.yy" // lalr1.cc:859
+#line 688 "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);
@@ -1415,7 +1415,7 @@ namespace isc { namespace dhcp {
break;
case 178:
-#line 692 "dhcp4_parser.yy" // lalr1.cc:859
+#line 693 "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);
@@ -1424,7 +1424,7 @@ namespace isc { namespace dhcp {
break;
case 179:
-#line 697 "dhcp4_parser.yy" // lalr1.cc:859
+#line 698 "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);
@@ -1433,7 +1433,7 @@ namespace isc { namespace dhcp {
break;
case 180:
-#line 702 "dhcp4_parser.yy" // lalr1.cc:859
+#line 703 "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);
@@ -1442,7 +1442,7 @@ namespace isc { namespace dhcp {
break;
case 181:
-#line 707 "dhcp4_parser.yy" // lalr1.cc:859
+#line 708 "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);
@@ -1451,7 +1451,7 @@ namespace isc { namespace dhcp {
break;
case 182:
-#line 712 "dhcp4_parser.yy" // lalr1.cc:859
+#line 713 "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);
@@ -1460,7 +1460,7 @@ namespace isc { namespace dhcp {
break;
case 183:
-#line 717 "dhcp4_parser.yy" // lalr1.cc:859
+#line 718 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1468,7 +1468,7 @@ namespace isc { namespace dhcp {
break;
case 184:
-#line 719 "dhcp4_parser.yy" // lalr1.cc:859
+#line 720 "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);
@@ -1478,7 +1478,7 @@ namespace isc { namespace dhcp {
break;
case 185:
-#line 725 "dhcp4_parser.yy" // lalr1.cc:859
+#line 726 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1486,7 +1486,7 @@ namespace isc { namespace dhcp {
break;
case 186:
-#line 727 "dhcp4_parser.yy" // lalr1.cc:859
+#line 728 "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);
@@ -1496,7 +1496,7 @@ namespace isc { namespace dhcp {
break;
case 187:
-#line 733 "dhcp4_parser.yy" // lalr1.cc:859
+#line 734 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reconnect-tries", n);
@@ -1505,7 +1505,7 @@ namespace isc { namespace dhcp {
break;
case 188:
-#line 738 "dhcp4_parser.yy" // lalr1.cc:859
+#line 739 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reconnect-wait-time", n);
@@ -1514,7 +1514,7 @@ namespace isc { namespace dhcp {
break;
case 189:
-#line 743 "dhcp4_parser.yy" // lalr1.cc:859
+#line 744 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("host-reservation-identifiers", l);
@@ -1525,7 +1525,7 @@ namespace isc { namespace dhcp {
break;
case 190:
-#line 748 "dhcp4_parser.yy" // lalr1.cc:859
+#line 749 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -1534,7 +1534,7 @@ namespace isc { namespace dhcp {
break;
case 198:
-#line 764 "dhcp4_parser.yy" // lalr1.cc:859
+#line 765 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(duid);
@@ -1543,7 +1543,7 @@ namespace isc { namespace dhcp {
break;
case 199:
-#line 769 "dhcp4_parser.yy" // lalr1.cc:859
+#line 770 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(hwaddr);
@@ -1552,7 +1552,7 @@ namespace isc { namespace dhcp {
break;
case 200:
-#line 774 "dhcp4_parser.yy" // lalr1.cc:859
+#line 775 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(circuit);
@@ -1561,7 +1561,7 @@ namespace isc { namespace dhcp {
break;
case 201:
-#line 779 "dhcp4_parser.yy" // lalr1.cc:859
+#line 780 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(client);
@@ -1570,7 +1570,7 @@ namespace isc { namespace dhcp {
break;
case 202:
-#line 784 "dhcp4_parser.yy" // lalr1.cc:859
+#line 785 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(flex_id);
@@ -1579,7 +1579,7 @@ namespace isc { namespace dhcp {
break;
case 203:
-#line 789 "dhcp4_parser.yy" // lalr1.cc:859
+#line 790 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hooks-libraries", l);
@@ -1590,7 +1590,7 @@ namespace isc { namespace dhcp {
break;
case 204:
-#line 794 "dhcp4_parser.yy" // lalr1.cc:859
+#line 795 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -1599,7 +1599,7 @@ namespace isc { namespace dhcp {
break;
case 209:
-#line 807 "dhcp4_parser.yy" // lalr1.cc:859
+#line 808 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
@@ -1609,7 +1609,7 @@ namespace isc { namespace dhcp {
break;
case 210:
-#line 811 "dhcp4_parser.yy" // lalr1.cc:859
+#line 812 "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));
@@ -1619,7 +1619,7 @@ namespace isc { namespace dhcp {
break;
case 211:
-#line 817 "dhcp4_parser.yy" // lalr1.cc:859
+#line 818 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the hooks-libraries list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1629,7 +1629,7 @@ namespace isc { namespace dhcp {
break;
case 212:
-#line 821 "dhcp4_parser.yy" // lalr1.cc:859
+#line 822 "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));
@@ -1639,7 +1639,7 @@ namespace isc { namespace dhcp {
break;
case 218:
-#line 836 "dhcp4_parser.yy" // lalr1.cc:859
+#line 837 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1647,7 +1647,7 @@ namespace isc { namespace dhcp {
break;
case 219:
-#line 838 "dhcp4_parser.yy" // lalr1.cc:859
+#line 839 "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);
@@ -1657,7 +1657,7 @@ namespace isc { namespace dhcp {
break;
case 220:
-#line 844 "dhcp4_parser.yy" // lalr1.cc:859
+#line 845 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1665,7 +1665,7 @@ namespace isc { namespace dhcp {
break;
case 221:
-#line 846 "dhcp4_parser.yy" // lalr1.cc:859
+#line 847 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -1674,7 +1674,7 @@ namespace isc { namespace dhcp {
break;
case 222:
-#line 852 "dhcp4_parser.yy" // lalr1.cc:859
+#line 853 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("expired-leases-processing", m);
@@ -1685,7 +1685,7 @@ namespace isc { namespace dhcp {
break;
case 223:
-#line 857 "dhcp4_parser.yy" // lalr1.cc:859
+#line 858 "dhcp4_parser.yy" // lalr1.cc:859
{
// No expired lease parameter is required
ctx.stack_.pop_back();
@@ -1695,7 +1695,7 @@ namespace isc { namespace dhcp {
break;
case 232:
-#line 875 "dhcp4_parser.yy" // lalr1.cc:859
+#line 876 "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);
@@ -1704,7 +1704,7 @@ namespace isc { namespace dhcp {
break;
case 233:
-#line 880 "dhcp4_parser.yy" // lalr1.cc:859
+#line 881 "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);
@@ -1713,7 +1713,7 @@ namespace isc { namespace dhcp {
break;
case 234:
-#line 885 "dhcp4_parser.yy" // lalr1.cc:859
+#line 886 "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);
@@ -1722,7 +1722,7 @@ namespace isc { namespace dhcp {
break;
case 235:
-#line 890 "dhcp4_parser.yy" // lalr1.cc:859
+#line 891 "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);
@@ -1731,7 +1731,7 @@ namespace isc { namespace dhcp {
break;
case 236:
-#line 895 "dhcp4_parser.yy" // lalr1.cc:859
+#line 896 "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);
@@ -1740,7 +1740,7 @@ namespace isc { namespace dhcp {
break;
case 237:
-#line 900 "dhcp4_parser.yy" // lalr1.cc:859
+#line 901 "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);
@@ -1749,7 +1749,7 @@ namespace isc { namespace dhcp {
break;
case 238:
-#line 908 "dhcp4_parser.yy" // lalr1.cc:859
+#line 909 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet4", l);
@@ -1760,7 +1760,7 @@ namespace isc { namespace dhcp {
break;
case 239:
-#line 913 "dhcp4_parser.yy" // lalr1.cc:859
+#line 914 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -1769,7 +1769,7 @@ namespace isc { namespace dhcp {
break;
case 244:
-#line 933 "dhcp4_parser.yy" // lalr1.cc:859
+#line 934 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
@@ -1779,7 +1779,7 @@ namespace isc { namespace dhcp {
break;
case 245:
-#line 937 "dhcp4_parser.yy" // lalr1.cc:859
+#line 938 "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.
@@ -1805,7 +1805,7 @@ namespace isc { namespace dhcp {
break;
case 246:
-#line 959 "dhcp4_parser.yy" // lalr1.cc:859
+#line 960 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the subnet4 list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1815,7 +1815,7 @@ namespace isc { namespace dhcp {
break;
case 247:
-#line 963 "dhcp4_parser.yy" // lalr1.cc:859
+#line 964 "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));
@@ -1825,7 +1825,7 @@ namespace isc { namespace dhcp {
break;
case 275:
-#line 1002 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1003 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1833,7 +1833,7 @@ namespace isc { namespace dhcp {
break;
case 276:
-#line 1004 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1005 "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);
@@ -1843,7 +1843,7 @@ namespace isc { namespace dhcp {
break;
case 277:
-#line 1010 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1011 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1851,7 +1851,7 @@ namespace isc { namespace dhcp {
break;
case 278:
-#line 1012 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1013 "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);
@@ -1861,7 +1861,7 @@ namespace isc { namespace dhcp {
break;
case 279:
-#line 1018 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1019 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1869,7 +1869,7 @@ namespace isc { namespace dhcp {
break;
case 280:
-#line 1020 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1021 "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);
@@ -1879,7 +1879,7 @@ namespace isc { namespace dhcp {
break;
case 281:
-#line 1026 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1027 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1887,7 +1887,7 @@ namespace isc { namespace dhcp {
break;
case 282:
-#line 1028 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1029 "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);
@@ -1897,7 +1897,7 @@ namespace isc { namespace dhcp {
break;
case 283:
-#line 1034 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1035 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1905,7 +1905,7 @@ namespace isc { namespace dhcp {
break;
case 284:
-#line 1036 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1037 "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);
@@ -1915,7 +1915,7 @@ namespace isc { namespace dhcp {
break;
case 285:
-#line 1042 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1043 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1923,7 +1923,7 @@ namespace isc { namespace dhcp {
break;
case 286:
-#line 1044 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1045 "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);
@@ -1933,7 +1933,7 @@ namespace isc { namespace dhcp {
break;
case 287:
-#line 1050 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1051 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -1941,7 +1941,7 @@ namespace isc { namespace dhcp {
break;
case 288:
-#line 1052 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1053 "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);
@@ -1951,7 +1951,7 @@ namespace isc { namespace dhcp {
break;
case 289:
-#line 1058 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1059 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("require-client-classes", c);
@@ -1962,7 +1962,7 @@ namespace isc { namespace dhcp {
break;
case 290:
-#line 1063 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1064 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -1971,7 +1971,7 @@ namespace isc { namespace dhcp {
break;
case 291:
-#line 1068 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1069 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.RESERVATION_MODE);
}
@@ -1979,7 +1979,7 @@ namespace isc { namespace dhcp {
break;
case 292:
-#line 1070 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1071 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -1988,25 +1988,25 @@ namespace isc { namespace dhcp {
break;
case 293:
-#line 1075 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1076 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
#line 1994 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 294:
-#line 1076 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1077 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
#line 2000 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 295:
-#line 1077 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1078 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
#line 2006 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 296:
-#line 1080 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1081 "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);
@@ -2015,7 +2015,7 @@ namespace isc { namespace dhcp {
break;
case 297:
-#line 1085 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1086 "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);
@@ -2024,7 +2024,7 @@ namespace isc { namespace dhcp {
break;
case 298:
-#line 1092 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1093 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("shared-networks", l);
@@ -2035,7 +2035,7 @@ namespace isc { namespace dhcp {
break;
case 299:
-#line 1097 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1098 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -2044,7 +2044,7 @@ namespace isc { namespace dhcp {
break;
case 304:
-#line 1112 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1113 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
@@ -2054,7 +2054,7 @@ namespace isc { namespace dhcp {
break;
case 305:
-#line 1116 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1117 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
@@ -2062,7 +2062,7 @@ namespace isc { namespace dhcp {
break;
case 326:
-#line 1148 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1149 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-def", l);
@@ -2073,7 +2073,7 @@ namespace isc { namespace dhcp {
break;
case 327:
-#line 1153 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1154 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -2082,7 +2082,7 @@ namespace isc { namespace dhcp {
break;
case 328:
-#line 1161 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1162 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
@@ -2091,7 +2091,7 @@ namespace isc { namespace dhcp {
break;
case 329:
-#line 1164 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1165 "dhcp4_parser.yy" // lalr1.cc:859
{
// parsing completed
}
@@ -2099,7 +2099,7 @@ namespace isc { namespace dhcp {
break;
case 334:
-#line 1180 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1181 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
@@ -2109,7 +2109,7 @@ namespace isc { namespace dhcp {
break;
case 335:
-#line 1184 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1185 "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));
@@ -2121,7 +2121,7 @@ namespace isc { namespace dhcp {
break;
case 336:
-#line 1195 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1196 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the option-def list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2131,7 +2131,7 @@ namespace isc { namespace dhcp {
break;
case 337:
-#line 1199 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1200 "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));
@@ -2143,7 +2143,7 @@ namespace isc { namespace dhcp {
break;
case 353:
-#line 1231 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1232 "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);
@@ -2152,7 +2152,7 @@ namespace isc { namespace dhcp {
break;
case 355:
-#line 1238 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1239 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2160,7 +2160,7 @@ namespace isc { namespace dhcp {
break;
case 356:
-#line 1240 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1241 "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);
@@ -2170,7 +2170,7 @@ namespace isc { namespace dhcp {
break;
case 357:
-#line 1246 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1247 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2178,7 +2178,7 @@ namespace isc { namespace dhcp {
break;
case 358:
-#line 1248 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1249 "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);
@@ -2188,7 +2188,7 @@ namespace isc { namespace dhcp {
break;
case 359:
-#line 1254 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1255 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2196,7 +2196,7 @@ namespace isc { namespace dhcp {
break;
case 360:
-#line 1256 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1257 "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);
@@ -2206,7 +2206,7 @@ namespace isc { namespace dhcp {
break;
case 362:
-#line 1264 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1265 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2214,7 +2214,7 @@ namespace isc { namespace dhcp {
break;
case 363:
-#line 1266 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1267 "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);
@@ -2224,7 +2224,7 @@ namespace isc { namespace dhcp {
break;
case 364:
-#line 1272 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1273 "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);
@@ -2233,7 +2233,7 @@ namespace isc { namespace dhcp {
break;
case 365:
-#line 1281 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1282 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-data", l);
@@ -2244,7 +2244,7 @@ namespace isc { namespace dhcp {
break;
case 366:
-#line 1286 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1287 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -2253,7 +2253,7 @@ namespace isc { namespace dhcp {
break;
case 371:
-#line 1305 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1306 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
@@ -2263,7 +2263,7 @@ namespace isc { namespace dhcp {
break;
case 372:
-#line 1309 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1310 "dhcp4_parser.yy" // lalr1.cc:859
{
/// @todo: the code or name parameters are required.
ctx.stack_.pop_back();
@@ -2272,7 +2272,7 @@ namespace isc { namespace dhcp {
break;
case 373:
-#line 1317 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1318 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the option-data list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2282,7 +2282,7 @@ namespace isc { namespace dhcp {
break;
case 374:
-#line 1321 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1322 "dhcp4_parser.yy" // lalr1.cc:859
{
/// @todo: the code or name parameters are required.
// parsing completed
@@ -2291,7 +2291,7 @@ namespace isc { namespace dhcp {
break;
case 389:
-#line 1354 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1355 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2299,7 +2299,7 @@ namespace isc { namespace dhcp {
break;
case 390:
-#line 1356 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1357 "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);
@@ -2309,7 +2309,7 @@ namespace isc { namespace dhcp {
break;
case 393:
-#line 1366 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1367 "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);
@@ -2318,7 +2318,7 @@ namespace isc { namespace dhcp {
break;
case 394:
-#line 1371 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1372 "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);
@@ -2327,7 +2327,7 @@ namespace isc { namespace dhcp {
break;
case 395:
-#line 1379 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1380 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pools", l);
@@ -2338,7 +2338,7 @@ namespace isc { namespace dhcp {
break;
case 396:
-#line 1384 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1385 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -2347,7 +2347,7 @@ namespace isc { namespace dhcp {
break;
case 401:
-#line 1399 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1400 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
@@ -2357,7 +2357,7 @@ namespace isc { namespace dhcp {
break;
case 402:
-#line 1403 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1404 "dhcp4_parser.yy" // lalr1.cc:859
{
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2367,7 +2367,7 @@ namespace isc { namespace dhcp {
break;
case 403:
-#line 1409 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1410 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2377,7 +2377,7 @@ namespace isc { namespace dhcp {
break;
case 404:
-#line 1413 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1414 "dhcp4_parser.yy" // lalr1.cc:859
{
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2387,7 +2387,7 @@ namespace isc { namespace dhcp {
break;
case 414:
-#line 1432 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1433 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2395,7 +2395,7 @@ namespace isc { namespace dhcp {
break;
case 415:
-#line 1434 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1435 "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);
@@ -2405,7 +2405,7 @@ namespace isc { namespace dhcp {
break;
case 416:
-#line 1440 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1441 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2413,7 +2413,7 @@ namespace isc { namespace dhcp {
break;
case 417:
-#line 1442 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1443 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
@@ -2440,7 +2440,7 @@ namespace isc { namespace dhcp {
break;
case 418:
-#line 1465 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1466 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2448,7 +2448,7 @@ namespace isc { namespace dhcp {
break;
case 419:
-#line 1467 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1468 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2477,7 +2477,7 @@ namespace isc { namespace dhcp {
break;
case 420:
-#line 1495 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1496 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations", l);
@@ -2488,7 +2488,7 @@ namespace isc { namespace dhcp {
break;
case 421:
-#line 1500 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1501 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -2497,7 +2497,7 @@ namespace isc { namespace dhcp {
break;
case 426:
-#line 1513 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1514 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
@@ -2507,7 +2507,7 @@ namespace isc { namespace dhcp {
break;
case 427:
-#line 1517 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1518 "dhcp4_parser.yy" // lalr1.cc:859
{
/// @todo: an identifier parameter is required.
ctx.stack_.pop_back();
@@ -2516,7 +2516,7 @@ namespace isc { namespace dhcp {
break;
case 428:
-#line 1522 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1523 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the reservations list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2526,7 +2526,7 @@ namespace isc { namespace dhcp {
break;
case 429:
-#line 1526 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1527 "dhcp4_parser.yy" // lalr1.cc:859
{
/// @todo: an identifier parameter is required.
// parsing completed
@@ -2535,7 +2535,7 @@ namespace isc { namespace dhcp {
break;
case 449:
-#line 1557 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1558 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2543,7 +2543,7 @@ namespace isc { namespace dhcp {
break;
case 450:
-#line 1559 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1560 "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);
@@ -2553,7 +2553,7 @@ namespace isc { namespace dhcp {
break;
case 451:
-#line 1565 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1566 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2561,7 +2561,7 @@ namespace isc { namespace dhcp {
break;
case 452:
-#line 1567 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1568 "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);
@@ -2571,7 +2571,7 @@ namespace isc { namespace dhcp {
break;
case 453:
-#line 1573 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1574 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2579,7 +2579,7 @@ namespace isc { namespace dhcp {
break;
case 454:
-#line 1575 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1576 "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);
@@ -2589,7 +2589,7 @@ namespace isc { namespace dhcp {
break;
case 455:
-#line 1581 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1582 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
@@ -2597,7 +2597,7 @@ namespace isc { namespace dhcp {
break;
case 456:
-#line 1583 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1584 "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);
@@ -2607,146 +2607,146 @@ namespace isc { namespace dhcp {
break;
case 457:
-#line 1589 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1590 "dhcp4_parser.yy" // lalr1.cc:859
{
+ ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("ip-addresses", l);
+ ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2615 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2618 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 458:
-#line 1591 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1595 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ctx.stack_.pop_back();
+ ctx.leave();
+}
+#line 2627 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 459:
+#line 1600 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ctx.enter(ctx.NO_KEYWORD);
+}
+#line 2635 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 460:
+#line 1602 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("duid", d);
ctx.leave();
}
-#line 2625 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2645 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 459:
-#line 1597 "dhcp4_parser.yy" // lalr1.cc:859
+ case 461:
+#line 1608 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2633 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2653 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 460:
-#line 1599 "dhcp4_parser.yy" // lalr1.cc:859
+ case 462:
+#line 1610 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hw-address", hw);
ctx.leave();
}
-#line 2643 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2663 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 461:
-#line 1605 "dhcp4_parser.yy" // lalr1.cc:859
+ case 463:
+#line 1616 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2651 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2671 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 462:
-#line 1607 "dhcp4_parser.yy" // lalr1.cc:859
+ case 464:
+#line 1618 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-id", hw);
ctx.leave();
}
-#line 2661 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2681 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 463:
-#line 1613 "dhcp4_parser.yy" // lalr1.cc:859
+ case 465:
+#line 1624 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2669 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2689 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 464:
-#line 1615 "dhcp4_parser.yy" // lalr1.cc:859
+ case 466:
+#line 1626 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("circuit-id", hw);
ctx.leave();
}
-#line 2679 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2699 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 465:
-#line 1621 "dhcp4_parser.yy" // lalr1.cc:859
+ case 467:
+#line 1632 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2687 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2707 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 466:
-#line 1623 "dhcp4_parser.yy" // lalr1.cc:859
+ case 468:
+#line 1634 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flex-id", hw);
ctx.leave();
}
-#line 2697 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 467:
-#line 1629 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.enter(ctx.NO_KEYWORD);
-}
-#line 2705 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 468:
-#line 1631 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("hostname", host);
- ctx.leave();
-}
-#line 2715 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2717 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 469:
-#line 1637 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1640 "dhcp4_parser.yy" // lalr1.cc:859
{
- ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("client-classes", c);
- ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2726 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2725 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 470:
#line 1642 "dhcp4_parser.yy" // lalr1.cc:859
{
- ctx.stack_.pop_back();
+ ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("hostname", host);
ctx.leave();
}
#line 2735 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 471:
-#line 1650 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1648 "dhcp4_parser.yy" // lalr1.cc:859
{
- ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("relay", m);
- ctx.stack_.push_back(m);
- ctx.enter(ctx.RELAY);
+ ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("client-classes", c);
+ ctx.stack_.push_back(c);
+ ctx.enter(ctx.NO_KEYWORD);
}
#line 2746 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 472:
-#line 1655 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1653 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -2755,452 +2755,437 @@ namespace isc { namespace dhcp {
break;
case 473:
-#line 1660 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1661 "dhcp4_parser.yy" // lalr1.cc:859
{
- ctx.enter(ctx.NO_KEYWORD);
+ ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("relay", m);
+ ctx.stack_.push_back(m);
+ ctx.enter(ctx.RELAY);
}
-#line 2763 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2766 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 474:
-#line 1662 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1666 "dhcp4_parser.yy" // lalr1.cc:859
{
- ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("ip-address", ip);
+ ctx.stack_.pop_back();
ctx.leave();
}
-#line 2773 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2775 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 475:
-#line 1671 "dhcp4_parser.yy" // lalr1.cc:859
+ case 477:
+#line 1678 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.CLIENT_CLASSES);
}
-#line 2784 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2786 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 476:
-#line 1676 "dhcp4_parser.yy" // lalr1.cc:859
+ case 478:
+#line 1683 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2793 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2795 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 479:
-#line 1685 "dhcp4_parser.yy" // lalr1.cc:859
+ case 481:
+#line 1692 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2803 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2805 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 480:
-#line 1689 "dhcp4_parser.yy" // lalr1.cc:859
+ case 482:
+#line 1696 "dhcp4_parser.yy" // lalr1.cc:859
{
// The name client class parameter is required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2813 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2815 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 497:
-#line 1718 "dhcp4_parser.yy" // lalr1.cc:859
+ case 499:
+#line 1725 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2821 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2823 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 498:
-#line 1720 "dhcp4_parser.yy" // lalr1.cc:859
+ case 500:
+#line 1727 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("test", test);
ctx.leave();
}
-#line 2831 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2833 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 499:
-#line 1726 "dhcp4_parser.yy" // lalr1.cc:859
+ case 501:
+#line 1733 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("only-if-required", b);
}
-#line 2840 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2842 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 500:
-#line 1735 "dhcp4_parser.yy" // lalr1.cc:859
+ case 502:
+#line 1742 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4o6-port", time);
}
-#line 2849 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2851 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 501:
-#line 1742 "dhcp4_parser.yy" // lalr1.cc:859
+ case 503:
+#line 1749 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("control-socket", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKET);
}
-#line 2860 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2862 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 502:
-#line 1747 "dhcp4_parser.yy" // lalr1.cc:859
+ case 504:
+#line 1754 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2869 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2871 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 510:
-#line 1763 "dhcp4_parser.yy" // lalr1.cc:859
+ case 512:
+#line 1770 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2877 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2879 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 511:
-#line 1765 "dhcp4_parser.yy" // lalr1.cc:859
+ case 513:
+#line 1772 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-type", stype);
ctx.leave();
}
-#line 2887 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2889 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 512:
-#line 1771 "dhcp4_parser.yy" // lalr1.cc:859
+ case 514:
+#line 1778 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2895 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2897 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 513:
-#line 1773 "dhcp4_parser.yy" // lalr1.cc:859
+ case 515:
+#line 1780 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-name", name);
ctx.leave();
}
-#line 2905 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2907 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 514:
-#line 1781 "dhcp4_parser.yy" // lalr1.cc:859
+ case 516:
+#line 1788 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp-ddns", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP_DDNS);
}
-#line 2916 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2918 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 515:
-#line 1786 "dhcp4_parser.yy" // lalr1.cc:859
+ case 517:
+#line 1793 "dhcp4_parser.yy" // lalr1.cc:859
{
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2927 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2929 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 516:
-#line 1793 "dhcp4_parser.yy" // lalr1.cc:859
+ case 518:
+#line 1800 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the dhcp-ddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2937 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2939 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 517:
-#line 1797 "dhcp4_parser.yy" // lalr1.cc:859
+ case 519:
+#line 1804 "dhcp4_parser.yy" // lalr1.cc:859
{
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2947 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 537:
-#line 1826 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("enable-updates", b);
-}
-#line 2956 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 538:
-#line 1831 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.enter(ctx.NO_KEYWORD);
-}
-#line 2964 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2949 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 539:
#line 1833 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("enable-updates", b);
+}
+#line 2958 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 540:
+#line 1838 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ctx.enter(ctx.NO_KEYWORD);
+}
+#line 2966 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 541:
+#line 1840 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("qualifying-suffix", s);
ctx.leave();
}
-#line 2974 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2976 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 540:
-#line 1839 "dhcp4_parser.yy" // lalr1.cc:859
+ case 542:
+#line 1846 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2982 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2984 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 541:
-#line 1841 "dhcp4_parser.yy" // lalr1.cc:859
+ case 543:
+#line 1848 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-ip", s);
ctx.leave();
}
-#line 2992 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 542:
-#line 1847 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("server-port", i);
-}
-#line 3001 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 543:
-#line 1852 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.enter(ctx.NO_KEYWORD);
-}
-#line 3009 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2994 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 544:
#line 1854 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("server-port", i);
+}
+#line 3003 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 545:
+#line 1859 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ctx.enter(ctx.NO_KEYWORD);
+}
+#line 3011 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 546:
+#line 1861 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-ip", s);
ctx.leave();
}
-#line 3019 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3021 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 545:
-#line 1860 "dhcp4_parser.yy" // lalr1.cc:859
+ case 547:
+#line 1867 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-port", i);
}
-#line 3028 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 546:
-#line 1865 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("max-queue-size", i);
-}
-#line 3037 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 547:
-#line 1870 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.enter(ctx.NCR_PROTOCOL);
-}
-#line 3045 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3030 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 548:
#line 1872 "dhcp4_parser.yy" // lalr1.cc:859
{
- ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
- ctx.leave();
+ ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("max-queue-size", i);
}
-#line 3054 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3039 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 549:
-#line 1878 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3060 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1877 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ctx.enter(ctx.NCR_PROTOCOL);
+}
+#line 3047 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 550:
#line 1879 "dhcp4_parser.yy" // lalr1.cc:859
- { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3066 "dhcp4_parser.cc" // lalr1.cc:859
+ {
+ ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
+ ctx.leave();
+}
+#line 3056 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 551:
-#line 1882 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.enter(ctx.NCR_FORMAT);
-}
-#line 3074 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1885 "dhcp4_parser.yy" // lalr1.cc:859
+ { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
+#line 3062 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 552:
-#line 1884 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1886 "dhcp4_parser.yy" // lalr1.cc:859
+ { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
+#line 3068 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 553:
+#line 1889 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ctx.enter(ctx.NCR_FORMAT);
+}
+#line 3076 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 554:
+#line 1891 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
ctx.leave();
}
-#line 3084 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3086 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 553:
-#line 1890 "dhcp4_parser.yy" // lalr1.cc:859
+ case 555:
+#line 1897 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-include-fqdn", b);
}
-#line 3093 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3095 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 554:
-#line 1895 "dhcp4_parser.yy" // lalr1.cc:859
+ case 556:
+#line 1902 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-no-update", b);
}
-#line 3102 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 555:
-#line 1900 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("override-client-update", b);
-}
-#line 3111 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 556:
-#line 1905 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.enter(ctx.REPLACE_CLIENT_NAME);
-}
-#line 3119 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3104 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 557:
#line 1907 "dhcp4_parser.yy" // lalr1.cc:859
{
- ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
- ctx.leave();
+ ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("override-client-update", b);
}
-#line 3128 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3113 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 558:
-#line 1913 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1912 "dhcp4_parser.yy" // lalr1.cc:859
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
- }
-#line 3136 "dhcp4_parser.cc" // lalr1.cc:859
+ ctx.enter(ctx.REPLACE_CLIENT_NAME);
+}
+#line 3121 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 559:
-#line 1916 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1914 "dhcp4_parser.yy" // lalr1.cc:859
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
- }
-#line 3144 "dhcp4_parser.cc" // lalr1.cc:859
+ ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
+ ctx.leave();
+}
+#line 3130 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 560:
-#line 1919 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1920 "dhcp4_parser.yy" // lalr1.cc:859
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
+ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 3152 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3138 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 561:
-#line 1922 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1923 "dhcp4_parser.yy" // lalr1.cc:859
{
- yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
+ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
}
-#line 3160 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3146 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 562:
-#line 1925 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1926 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
+ }
+#line 3154 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 563:
+#line 1929 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
+ }
+#line 3162 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 564:
+#line 1932 "dhcp4_parser.yy" // lalr1.cc:859
{
error(yystack_[0].location, "boolean values for the replace-client-name are "
"no longer supported");
}
-#line 3169 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3171 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 563:
-#line 1931 "dhcp4_parser.yy" // lalr1.cc:859
+ case 565:
+#line 1938 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3177 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3179 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 564:
-#line 1933 "dhcp4_parser.yy" // lalr1.cc:859
+ case 566:
+#line 1940 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("generated-prefix", s);
ctx.leave();
}
-#line 3187 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 565:
-#line 1941 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.enter(ctx.NO_KEYWORD);
-}
-#line 3195 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 566:
-#line 1943 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
- ctx.leave();
-}
-#line 3204 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3189 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 567:
@@ -3208,16 +3193,16 @@ namespace isc { namespace dhcp {
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3212 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3197 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 568:
#line 1950 "dhcp4_parser.yy" // lalr1.cc:859
{
- ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 3221 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3206 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 569:
@@ -3225,206 +3210,223 @@ namespace isc { namespace dhcp {
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3229 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3214 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 570:
#line 1957 "dhcp4_parser.yy" // lalr1.cc:859
{
- ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
+ ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 3238 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3223 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 571:
-#line 1967 "dhcp4_parser.yy" // lalr1.cc:859
+#line 1962 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ctx.enter(ctx.NO_KEYWORD);
+}
+#line 3231 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 572:
+#line 1964 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
+ ctx.leave();
+}
+#line 3240 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 573:
+#line 1974 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("Logging", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.LOGGING);
}
-#line 3249 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3251 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 572:
-#line 1972 "dhcp4_parser.yy" // lalr1.cc:859
+ case 574:
+#line 1979 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3258 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3260 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 573:
-#line 1977 "dhcp4_parser.yy" // lalr1.cc:859
+ case 575:
+#line 1984 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the Logging map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3268 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3270 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 574:
-#line 1981 "dhcp4_parser.yy" // lalr1.cc:859
+ case 576:
+#line 1988 "dhcp4_parser.yy" // lalr1.cc:859
{
// parsing completed
}
-#line 3276 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3278 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 578:
-#line 1997 "dhcp4_parser.yy" // lalr1.cc:859
+ case 580:
+#line 2004 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.LOGGERS);
}
-#line 3287 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3289 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 579:
-#line 2002 "dhcp4_parser.yy" // lalr1.cc:859
+ case 581:
+#line 2009 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3296 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3298 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 582:
-#line 2014 "dhcp4_parser.yy" // lalr1.cc:859
+ case 584:
+#line 2021 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 3306 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3308 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 583:
-#line 2018 "dhcp4_parser.yy" // lalr1.cc:859
+ case 585:
+#line 2025 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
-#line 3314 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 593:
-#line 2035 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("debuglevel", dl);
-}
-#line 3323 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 594:
-#line 2040 "dhcp4_parser.yy" // lalr1.cc:859
- {
- ctx.enter(ctx.NO_KEYWORD);
-}
-#line 3331 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3316 "dhcp4_parser.cc" // lalr1.cc:859
break;
case 595:
#line 2042 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("debuglevel", dl);
+}
+#line 3325 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 596:
+#line 2047 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ctx.enter(ctx.NO_KEYWORD);
+}
+#line 3333 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 597:
+#line 2049 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 3341 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3343 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 596:
-#line 2048 "dhcp4_parser.yy" // lalr1.cc:859
+ case 598:
+#line 2055 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OUTPUT_OPTIONS);
}
-#line 3352 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3354 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 597:
-#line 2053 "dhcp4_parser.yy" // lalr1.cc:859
+ case 599:
+#line 2060 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3361 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3363 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 600:
-#line 2062 "dhcp4_parser.yy" // lalr1.cc:859
+ case 602:
+#line 2069 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3371 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3373 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 601:
-#line 2066 "dhcp4_parser.yy" // lalr1.cc:859
+ case 603:
+#line 2073 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
-#line 3379 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3381 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 608:
-#line 2080 "dhcp4_parser.yy" // lalr1.cc:859
+ case 610:
+#line 2087 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3387 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3389 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 609:
-#line 2082 "dhcp4_parser.yy" // lalr1.cc:859
+ case 611:
+#line 2089 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 3397 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3399 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 610:
-#line 2088 "dhcp4_parser.yy" // lalr1.cc:859
+ case 612:
+#line 2095 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 3406 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3408 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 611:
-#line 2093 "dhcp4_parser.yy" // lalr1.cc:859
+ case 613:
+#line 2100 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 3415 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3417 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 612:
-#line 2098 "dhcp4_parser.yy" // lalr1.cc:859
+ case 614:
+#line 2105 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 3424 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3426 "dhcp4_parser.cc" // lalr1.cc:859
break;
-#line 3428 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3430 "dhcp4_parser.cc" // lalr1.cc:859
default:
break;
}
@@ -3679,112 +3681,112 @@ namespace isc { namespace dhcp {
}
- const short int Dhcp4Parser::yypact_ninf_ = -763;
+ const short int Dhcp4Parser::yypact_ninf_ = -765;
const signed char Dhcp4Parser::yytable_ninf_ = -1;
const short int
Dhcp4Parser::yypact_[] =
{
- 391, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, 30, 22, 54, 62, 66, 70,
- 170, 213, 214, 221, 223, 231, 240, 250, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, 22, -81, 43, 59, 75, 169,
- 210, 32, 48, 73, 271, -50, 349, 4, -763, 157,
- 255, 261, 268, 281, -763, -763, -763, -763, -763, 282,
- -763, 41, -763, -763, -763, -763, -763, -763, -763, 293,
- 299, -763, -763, -763, -763, -763, -763, 300, 311, 315,
- 322, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, 324, -763, -763, -763, 68, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, 331, -763, 87, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, 333, 339, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, 97, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, 144, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, 280,
- 298, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, 310, -763, -763, 341, -763, -763, -763,
- 342, -763, -763, 344, 304, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, 343, 345,
- -763, -763, -763, -763, 346, 352, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, 145, -763,
- -763, -763, 358, -763, -763, 365, -763, 367, 371, -763,
- -763, 373, 378, 379, -763, -763, -763, -763, -763, 146,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, 153, -763, -763, -763,
- 22, 22, -763, 220, 385, 387, 394, 396, 398, -763,
- 43, -763, 399, 227, 246, 402, 411, 412, 413, 414,
- 417, 266, 267, 274, 275, 418, 421, 422, 429, 430,
- 431, 433, 436, 437, 440, 288, 442, 443, 59, -763,
- 444, 445, 446, 292, 75, -763, 448, 449, 450, 451,
- 454, 470, 471, 319, 320, 474, 476, 477, 480, 481,
- 169, -763, 482, 210, -763, 483, 484, 485, 486, 487,
- 488, 489, 491, -763, 32, -763, 492, 493, 347, 494,
- 495, 499, 348, -763, 73, 502, 350, 351, -763, 271,
- 504, 507, 89, -763, 356, 512, 513, 361, 515, 363,
- 364, 518, 519, 366, 368, 370, 520, 522, 349, -763,
- 526, 4, -763, -763, -763, 527, 540, 541, 22, 22,
- 22, -763, 542, -763, -763, 395, 397, 400, 543, 545,
- 549, -763, -763, -763, -763, 550, 552, 553, 554, 555,
- 404, 556, 558, 559, 560, -763, 561, 562, -763, 565,
- 78, 179, -763, -763, 409, 410, 415, 567, 419, 420,
- 423, -763, -763, 39, 565, 424, 568, 570, -763, 425,
- -763, 565, 426, 427, 428, 432, 434, 435, 438, -763,
- 439, 441, -763, 447, 452, 453, -763, -763, 455, -763,
- -763, -763, 456, 22, -763, -763, 457, 458, -763, 459,
- -763, -763, 17, 460, -763, -763, -763, -31, 461, -763,
- 569, -763, 22, 59, 4, -763, -763, -763, 75, -763,
- -763, -763, 167, 167, 571, 578, 580, 582, 585, -763,
- -763, -763, 160, 586, 589, 209, 42, 349, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, 591,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, 592,
- 505, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, 594, -763, 156, 164, 165, -763, -763, -763,
- -763, 598, 600, 601, 602, 603, -763, -763, 606, 612,
- 614, 615, 616, -763, 168, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, 186, -763, 617, 618, -763, -763, 619,
- 621, -763, -763, 620, 624, -763, -763, 622, 626, -763,
- -763, 625, 627, -763, -763, -763, -763, -763, -763, 35,
- -763, -763, -763, -763, -763, -763, -763, 129, -763, -763,
- 628, 629, -763, 631, 632, 633, 634, 635, 636, 224,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, 251, -763, -763, -763, 263, 466, -763, 637,
- 630, -763, -763, 638, 639, -763, -763, 640, -763, 154,
- -763, -763, -763, -763, 641, 642, 643, 645, 496, 497,
- 498, 500, 501, 646, 647, 503, 506, 508, 509, 510,
- 167, -763, -763, 167, -763, 571, 169, -763, 578, 73,
- -763, 580, 271, -763, 582, 212, -763, 585, 160, -763,
- 372, 586, -763, -50, -763, 589, 511, 514, 516, 517,
- 521, 523, 209, -763, 648, 650, 42, -763, -763, -763,
- 651, 658, 210, -763, 591, 32, -763, 592, 660, -763,
- 303, 594, -763, 382, 525, 528, 529, -763, -763, -763,
- -763, -763, 530, 531, -763, -763, -763, -763, -763, -763,
- 265, -763, 269, -763, 654, -763, 659, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, 284,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, 666, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, 664, 672, -763, -763, -763, -763, -763, 291, -763,
- -763, -763, -763, -763, -763, -763, -763, 532, 533, -763,
- -763, 534, 297, -763, 668, -763, 535, -763, 673, -763,
- -763, -763, -763, -763, 313, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, 212, -763, 675, 524, -763, 372,
- -763, -763, -763, -763, -763, -763, -763, 678, 536, 688,
- 303, -763, -763, 538, -763, -763, 690, -763, 546, -763,
- -763, 689, -763, -763, 272, -763, -75, 689, -763, -763,
- 693, 694, 695, 314, -763, -763, -763, -763, -763, -763,
- 697, 548, 547, 551, -75, -763, 557, -763, -763, -763,
- -763, -763
+ 310, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, 30, 22, 66, 72, 108, 111,
+ 125, 154, 195, 216, 233, 242, 249, 257, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, 22, 1, 34, 60, 43, 171,
+ 6, 115, 157, 368, 382, -51, 428, 82, -765, 271,
+ 273, 279, 281, 289, -765, -765, -765, -765, -765, 291,
+ -765, 46, -765, -765, -765, -765, -765, -765, -765, 292,
+ 294, -765, -765, -765, -765, -765, -765, 297, 299, 300,
+ 302, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, 303, -765, -765, -765, 126, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, 314, -765, 137, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, 315, 317, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, 141, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, 143, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, 285,
+ 319, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, 318, -765, -765, 321, -765, -765, -765,
+ 325, -765, -765, 322, 320, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, 327, 328,
+ -765, -765, -765, -765, 326, 330, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, 144, -765,
+ -765, -765, 331, -765, -765, 333, -765, 337, 338, -765,
+ -765, 339, 341, 342, -765, -765, -765, -765, -765, 145,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, 147, -765, -765, -765,
+ 22, 22, -765, 190, 345, 348, 350, 351, 357, -765,
+ 34, -765, 358, 209, 213, 362, 367, 370, 371, 372,
+ 373, 224, 225, 231, 236, 387, 391, 394, 396, 398,
+ 399, 401, 423, 427, 431, 288, 433, 443, 60, -765,
+ 444, 445, 446, 307, 43, -765, 447, 464, 465, 466,
+ 467, 468, 469, 316, 324, 471, 472, 474, 475, 476,
+ 171, -765, 477, 6, -765, 481, 482, 483, 484, 485,
+ 486, 487, 488, -765, 115, -765, 489, 491, 346, 492,
+ 493, 499, 347, -765, 368, 501, 349, 355, -765, 382,
+ 502, 504, 100, -765, 356, 506, 507, 359, 514, 361,
+ 363, 516, 518, 364, 366, 369, 519, 523, 428, -765,
+ 524, 82, -765, -765, -765, 526, 527, 529, 22, 22,
+ 22, -765, 530, -765, -765, 374, 381, 397, 548, 549,
+ 552, -765, -765, -765, -765, 553, 554, 555, 556, 557,
+ 405, 558, 560, 561, 562, -765, 563, 564, -765, 567,
+ 215, 220, -765, -765, 410, 411, 416, 569, 418, 419,
+ 420, -765, -765, 237, 567, 421, 574, 573, -765, 424,
+ -765, 567, 425, 426, 429, 430, 432, 434, 435, -765,
+ 436, 437, -765, 438, 439, 440, -765, -765, 441, -765,
+ -765, -765, 442, 22, -765, -765, 448, 449, -765, 450,
+ -765, -765, 17, 457, -765, -765, -765, -32, 451, -765,
+ 583, -765, 22, 60, 82, -765, -765, -765, 43, -765,
+ -765, -765, 378, 378, 593, 594, 595, 596, 597, -765,
+ -765, -765, 12, 602, 603, 18, 55, 428, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, 604,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, 605,
+ 184, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, 606, -765, 151, 166, 170, -765, -765, -765,
+ -765, 586, 610, 611, 612, 613, -765, -765, 614, 615,
+ 616, 617, 618, -765, 180, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, 181, -765, 619, 620, -765, -765, 621,
+ 623, -765, -765, 622, 626, -765, -765, 624, 628, -765,
+ -765, 627, 629, -765, -765, -765, -765, -765, -765, 47,
+ -765, -765, -765, -765, -765, -765, -765, 58, -765, -765,
+ 630, 631, -765, 633, 634, 635, 636, 637, 638, 193,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, 206, -765, -765, -765, 208, 478, -765, 639,
+ 640, -765, -765, 641, 643, -765, -765, -765, -765, 642,
+ -765, 85, -765, -765, -765, -765, 644, 645, 647, 648,
+ 495, 494, 497, 496, 500, 653, 655, 503, 505, 508,
+ 509, 510, 378, -765, -765, 378, -765, 593, 171, -765,
+ 594, 368, -765, 595, 382, -765, 596, 211, -765, 597,
+ 12, -765, 229, 602, -765, -51, -765, 603, 511, 513,
+ 515, 517, 520, 521, 18, -765, 656, 658, 55, -765,
+ -765, -765, 659, 661, 6, -765, 604, 115, -765, 605,
+ 664, -765, -1, 606, -765, 280, 525, 528, 531, -765,
+ -765, -765, -765, -765, 532, 533, -765, -765, -765, -765,
+ -765, -765, 219, -765, 228, -765, 666, -765, 668, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, 247, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, 673, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, 672, 669, -765, -765, -765, -765, -765,
+ 259, -765, -765, -765, -765, -765, -765, -765, -765, 534,
+ 535, -765, -765, 536, 263, -765, 675, -765, 567, -765,
+ 677, -765, -765, -765, -765, -765, 267, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, 211, -765, 680, 537,
+ -765, 229, -765, -765, -765, -765, -765, -765, -765, 682,
+ 538, 683, -1, -765, -765, 541, -765, -765, 689, -765,
+ 542, -765, -765, 688, -765, -765, 101, -765, -45, 688,
+ -765, -765, 696, 697, 699, 270, -765, -765, -765, -765,
+ -765, -765, 700, 546, 551, 566, -45, -765, 550, -765,
+ -765, -765, -765, -765
};
const unsigned short int
@@ -3796,33 +3798,33 @@ namespace isc { namespace dhcp {
36, 32, 31, 28, 29, 30, 35, 3, 33, 34,
56, 5, 68, 7, 116, 9, 246, 11, 403, 13,
428, 15, 328, 17, 336, 19, 373, 21, 211, 23,
- 516, 25, 573, 27, 45, 39, 0, 0, 0, 0,
+ 518, 25, 575, 27, 45, 39, 0, 0, 0, 0,
0, 430, 0, 338, 375, 0, 0, 0, 47, 0,
- 46, 0, 0, 40, 66, 571, 565, 567, 569, 0,
+ 46, 0, 0, 40, 66, 573, 567, 569, 571, 0,
65, 0, 58, 60, 62, 63, 64, 61, 105, 0,
0, 449, 451, 453, 129, 131, 133, 0, 0, 0,
- 0, 238, 326, 365, 298, 416, 418, 189, 475, 203,
- 222, 0, 501, 514, 98, 0, 70, 72, 73, 74,
+ 0, 238, 326, 365, 298, 416, 418, 189, 477, 203,
+ 222, 0, 503, 516, 98, 0, 70, 72, 73, 74,
75, 91, 92, 78, 79, 80, 81, 82, 86, 87,
76, 77, 84, 85, 96, 97, 93, 94, 95, 83,
88, 89, 90, 118, 120, 124, 0, 115, 0, 107,
109, 110, 111, 112, 113, 114, 277, 279, 281, 395,
- 275, 283, 285, 0, 0, 291, 289, 287, 420, 471,
+ 275, 283, 285, 0, 0, 291, 289, 287, 420, 473,
274, 250, 251, 252, 265, 0, 248, 255, 269, 270,
271, 256, 257, 260, 261, 263, 258, 259, 253, 254,
272, 273, 262, 266, 267, 268, 264, 414, 413, 409,
- 410, 408, 0, 405, 407, 411, 412, 469, 457, 459,
- 463, 461, 467, 465, 455, 448, 442, 446, 447, 0,
+ 410, 408, 0, 405, 407, 411, 412, 471, 459, 461,
+ 465, 463, 469, 467, 455, 448, 442, 446, 447, 0,
431, 432, 443, 444, 445, 439, 434, 440, 436, 437,
438, 441, 435, 0, 355, 174, 0, 359, 357, 362,
0, 351, 352, 0, 339, 340, 342, 354, 343, 344,
345, 361, 346, 347, 348, 349, 350, 389, 0, 0,
387, 388, 391, 392, 0, 376, 377, 379, 380, 381,
382, 383, 384, 385, 386, 218, 220, 215, 0, 213,
- 216, 217, 0, 538, 540, 0, 543, 0, 0, 547,
- 551, 0, 0, 0, 556, 563, 536, 534, 535, 0,
- 518, 520, 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 578, 0, 575, 577, 44,
+ 216, 217, 0, 540, 542, 0, 545, 0, 0, 549,
+ 553, 0, 0, 0, 558, 565, 538, 536, 537, 0,
+ 520, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ 531, 532, 533, 534, 535, 580, 0, 577, 579, 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,
@@ -3833,103 +3835,103 @@ namespace isc { namespace dhcp {
0, 0, 0, 429, 0, 329, 0, 0, 0, 0,
0, 0, 0, 337, 0, 0, 0, 0, 374, 0,
0, 0, 0, 212, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 517,
- 0, 0, 574, 48, 41, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 519,
+ 0, 0, 576, 48, 41, 0, 0, 0, 0, 0,
0, 59, 0, 103, 104, 0, 0, 0, 0, 0,
0, 99, 100, 101, 102, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 500, 0, 0, 71, 0,
+ 0, 0, 0, 0, 0, 502, 0, 0, 71, 0,
0, 0, 128, 108, 0, 0, 0, 0, 0, 0,
0, 296, 297, 0, 0, 0, 0, 0, 249, 0,
406, 0, 0, 0, 0, 0, 0, 0, 0, 433,
0, 0, 353, 0, 0, 0, 364, 341, 0, 393,
- 394, 378, 0, 0, 214, 537, 0, 0, 542, 0,
- 545, 546, 0, 0, 553, 554, 555, 0, 0, 519,
- 0, 576, 0, 0, 0, 566, 568, 570, 0, 450,
+ 394, 378, 0, 0, 214, 539, 0, 0, 544, 0,
+ 547, 548, 0, 0, 555, 556, 557, 0, 0, 521,
+ 0, 578, 0, 0, 0, 568, 570, 572, 0, 450,
452, 454, 0, 0, 135, 240, 330, 367, 300, 38,
417, 419, 0, 0, 205, 0, 0, 0, 49, 119,
122, 123, 121, 126, 127, 125, 278, 280, 282, 397,
276, 284, 286, 293, 294, 295, 292, 290, 288, 422,
- 0, 415, 470, 458, 460, 464, 462, 468, 466, 456,
- 356, 175, 360, 358, 363, 390, 219, 221, 539, 541,
- 544, 549, 550, 548, 552, 558, 559, 560, 561, 562,
- 557, 564, 0, 42, 0, 0, 0, 161, 167, 169,
+ 0, 415, 472, 460, 462, 466, 464, 470, 468, 456,
+ 356, 175, 360, 358, 363, 390, 219, 221, 541, 543,
+ 546, 551, 552, 550, 554, 560, 561, 562, 563, 564,
+ 559, 566, 0, 42, 0, 0, 0, 161, 167, 169,
171, 0, 0, 0, 0, 0, 183, 185, 0, 0,
0, 0, 0, 160, 0, 141, 143, 144, 145, 146,
147, 148, 149, 150, 151, 152, 156, 157, 158, 153,
159, 154, 155, 0, 139, 0, 136, 137, 244, 0,
241, 242, 334, 0, 331, 332, 371, 0, 368, 369,
304, 0, 301, 302, 198, 199, 200, 201, 202, 0,
- 191, 193, 194, 195, 196, 197, 479, 0, 477, 209,
+ 191, 193, 194, 195, 196, 197, 481, 0, 479, 209,
0, 206, 207, 0, 0, 0, 0, 0, 0, 0,
- 224, 226, 227, 228, 229, 230, 231, 510, 512, 509,
- 507, 508, 0, 503, 505, 506, 0, 51, 401, 0,
- 398, 399, 426, 0, 423, 424, 473, 0, 582, 0,
- 580, 67, 572, 106, 0, 0, 0, 0, 0, 0,
+ 224, 226, 227, 228, 229, 230, 231, 512, 514, 511,
+ 509, 510, 0, 505, 507, 508, 0, 51, 401, 0,
+ 398, 399, 426, 0, 423, 424, 457, 475, 476, 0,
+ 584, 0, 582, 67, 574, 106, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 130, 132, 0, 134, 0, 0, 239, 0, 338,
- 327, 0, 375, 366, 0, 0, 299, 0, 0, 190,
- 481, 0, 476, 0, 204, 0, 0, 0, 0, 0,
- 0, 0, 0, 223, 0, 0, 0, 502, 515, 53,
- 0, 52, 0, 396, 0, 430, 421, 0, 0, 472,
- 0, 0, 579, 0, 0, 0, 0, 173, 176, 177,
- 178, 179, 0, 0, 187, 188, 180, 181, 182, 142,
- 0, 138, 0, 243, 0, 333, 0, 370, 325, 322,
- 311, 312, 314, 308, 309, 310, 320, 321, 319, 0,
- 306, 313, 323, 324, 315, 316, 317, 318, 303, 192,
- 497, 0, 495, 496, 488, 489, 493, 494, 490, 491,
- 492, 0, 482, 483, 485, 486, 487, 478, 0, 208,
- 232, 233, 234, 235, 236, 237, 225, 0, 0, 504,
- 50, 0, 0, 400, 0, 425, 0, 596, 0, 594,
- 592, 586, 590, 591, 0, 584, 588, 589, 587, 581,
- 163, 164, 165, 166, 162, 168, 170, 172, 184, 186,
- 140, 245, 335, 372, 0, 305, 0, 0, 480, 0,
- 210, 511, 513, 54, 402, 427, 474, 0, 0, 0,
- 0, 583, 307, 0, 499, 484, 0, 593, 0, 585,
- 498, 0, 595, 600, 0, 598, 0, 0, 597, 608,
- 0, 0, 0, 0, 602, 604, 605, 606, 607, 599,
- 0, 0, 0, 0, 0, 601, 0, 610, 611, 612,
- 603, 609
+ 0, 0, 0, 130, 132, 0, 134, 0, 0, 239,
+ 0, 338, 327, 0, 375, 366, 0, 0, 299, 0,
+ 0, 190, 483, 0, 478, 0, 204, 0, 0, 0,
+ 0, 0, 0, 0, 0, 223, 0, 0, 0, 504,
+ 517, 53, 0, 52, 0, 396, 0, 430, 421, 0,
+ 0, 474, 0, 0, 581, 0, 0, 0, 0, 173,
+ 176, 177, 178, 179, 0, 0, 187, 188, 180, 181,
+ 182, 142, 0, 138, 0, 243, 0, 333, 0, 370,
+ 325, 322, 311, 312, 314, 308, 309, 310, 320, 321,
+ 319, 0, 306, 313, 323, 324, 315, 316, 317, 318,
+ 303, 192, 499, 0, 497, 498, 490, 491, 495, 496,
+ 492, 493, 494, 0, 484, 485, 487, 488, 489, 480,
+ 0, 208, 232, 233, 234, 235, 236, 237, 225, 0,
+ 0, 506, 50, 0, 0, 400, 0, 425, 0, 598,
+ 0, 596, 594, 588, 592, 593, 0, 586, 590, 591,
+ 589, 583, 163, 164, 165, 166, 162, 168, 170, 172,
+ 184, 186, 140, 245, 335, 372, 0, 305, 0, 0,
+ 482, 0, 210, 513, 515, 54, 402, 427, 458, 0,
+ 0, 0, 0, 585, 307, 0, 501, 486, 0, 595,
+ 0, 587, 500, 0, 597, 602, 0, 600, 0, 0,
+ 599, 610, 0, 0, 0, 0, 604, 606, 607, 608,
+ 609, 601, 0, 0, 0, 0, 0, 603, 0, 612,
+ 613, 614, 605, 611
};
const short int
Dhcp4Parser::yypgoto_[] =
{
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -40, -763, 172, -763, -763,
- -763, -763, -763, -763, -763, -763, -444, -763, -763, -763,
- -66, -763, -763, -763, 383, -763, -763, -763, -763, 162,
- 354, -23, -11, -9, -763, -763, 9, -763, -763, 163,
- 353, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -41, -763, -547, -35, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -22, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -47, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -57, -763, -763, -763, -38, 359, -763, -763,
- -763, -763, -763, -763, -763, -55, -763, -763, -763, -763,
- -763, -763, -762, -763, -763, -763, -7, -763, -763, -763,
- -1, 377, -763, -763, -763, -763, -763, -763, -763, -763,
- -754, -763, -763, -763, -42, -763, -5, -763, -749, -763,
- -763, -763, -763, -763, -763, -763, -763, -4, -763, -763,
- -150, -61, -763, -763, -763, -763, -763, 11, -763, -763,
- -763, 16, -763, 375, -763, -62, -763, -763, -763, -763,
- -763, -56, -763, -763, -763, -763, -763, -3, -763, -763,
- -763, 6, -763, -763, -763, 14, -763, 374, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -17,
- -763, -763, -763, -12, 401, -763, -763, -54, -763, -34,
- -763, -763, -763, -763, -763, -16, -763, -763, -763, -13,
- -763, 392, -46, -763, -26, -763, 3, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -742, -763, -763, -763, -763, -763,
- -763, 19, -763, -763, -763, -134, -763, -763, -763, -763,
- -763, -763, -763, -763, 2, -763, -763, -763, -763, -763,
- -763, -763, -763, 234, 369, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
- -763, -763, -763, -763, -763, -763, -763, -763, 259, 376,
- -763, -763, -763, -6, -763, -763, -136, -763, -763, -763,
- -763, -763, -763, -151, -763, -763, -165, -763, -763, -763,
- -763, -763
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -40, -765, 155, -765, -765,
+ -765, -765, -765, -765, -765, -765, -468, -765, -765, -765,
+ -66, -765, -765, -765, 304, -765, -765, -765, -765, 167,
+ 365, -23, -11, -9, -765, -765, 9, -765, -765, 165,
+ 352, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -52, -765, -547, -37, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -22, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -53, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -58, -765, -765, -765, -55, 353, -765, -765,
+ -765, -765, -765, -765, -765, -47, -765, -765, -765, -765,
+ -765, -765, -764, -765, -765, -765, -31, -765, -765, -765,
+ 8, 377, -765, -765, -765, -765, -765, -765, -765, -765,
+ -756, -765, -765, -765, -42, -765, -5, -765, -739, -765,
+ -765, -765, -765, -765, -765, -765, -765, -16, -765, -765,
+ -157, -61, -765, -765, -765, -765, -765, 10, -765, -765,
+ -765, 11, -765, 375, -765, -62, -765, -765, -765, -765,
+ -765, -56, -765, -765, -765, -765, -765, -3, -765, -765,
+ -765, 15, -765, -765, -765, 13, -765, 376, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -18,
+ -765, -765, -765, -20, 400, -765, -765, -54, -765, -34,
+ -765, -765, -765, -765, -765, -17, -765, -765, -765, -13,
+ -765, 392, -46, -765, -26, -765, 3, -765, 207, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -736, -765, -765, -765,
+ -765, -765, 19, -765, -765, -765, -133, -765, -765, -765,
+ -765, -765, -765, -765, -765, 2, -765, -765, -765, -765,
+ -765, -765, -765, -765, 238, 379, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, -765,
+ -765, -765, -765, -765, -765, -765, -765, -765, -765, 262,
+ 380, -765, -765, -765, -10, -765, -765, -135, -765, -765,
+ -765, -765, -765, -765, -151, -765, -765, -167, -765, -765,
+ -765, -765, -765
};
const short int
@@ -3937,409 +3939,409 @@ namespace isc { namespace dhcp {
{
-1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 36, 37, 38, 65, 560,
- 82, 83, 39, 64, 79, 80, 569, 727, 800, 801,
+ 82, 83, 39, 64, 79, 80, 569, 727, 802, 803,
643, 41, 66, 91, 92, 93, 334, 43, 67, 125,
126, 127, 128, 129, 130, 131, 132, 133, 342, 158,
159, 45, 68, 160, 370, 161, 371, 572, 162, 372,
575, 163, 134, 348, 135, 349, 136, 350, 665, 666,
- 667, 763, 644, 645, 646, 744, 914, 647, 745, 648,
- 746, 649, 747, 650, 651, 407, 652, 653, 654, 655,
- 656, 657, 658, 659, 753, 660, 754, 661, 662, 137,
+ 667, 765, 644, 645, 646, 746, 916, 647, 747, 648,
+ 748, 649, 749, 650, 651, 407, 652, 653, 654, 655,
+ 656, 657, 658, 659, 755, 660, 756, 661, 662, 137,
361, 689, 690, 691, 692, 693, 694, 695, 138, 363,
- 700, 701, 702, 783, 59, 75, 288, 289, 290, 420,
+ 700, 701, 702, 785, 59, 75, 288, 289, 290, 420,
291, 421, 139, 364, 709, 710, 711, 712, 713, 714,
- 715, 716, 140, 355, 669, 670, 671, 766, 47, 69,
+ 715, 716, 140, 355, 669, 670, 671, 768, 47, 69,
185, 186, 187, 380, 188, 376, 189, 377, 190, 378,
191, 381, 192, 382, 193, 387, 194, 386, 195, 385,
- 586, 196, 197, 141, 358, 681, 682, 683, 775, 849,
- 850, 142, 356, 53, 72, 673, 674, 675, 769, 55,
+ 586, 196, 197, 141, 358, 681, 682, 683, 777, 851,
+ 852, 142, 356, 53, 72, 673, 674, 675, 771, 55,
73, 253, 254, 255, 256, 257, 258, 259, 406, 260,
410, 261, 409, 262, 263, 411, 264, 143, 357, 677,
- 678, 679, 772, 57, 74, 274, 275, 276, 277, 278,
+ 678, 679, 774, 57, 74, 274, 275, 276, 277, 278,
415, 279, 280, 281, 282, 199, 379, 729, 730, 731,
- 802, 49, 70, 212, 213, 214, 392, 144, 359, 145,
- 360, 202, 388, 733, 734, 735, 805, 51, 71, 229,
+ 804, 49, 70, 212, 213, 214, 392, 144, 359, 145,
+ 360, 202, 388, 733, 734, 735, 807, 51, 71, 229,
230, 231, 146, 345, 147, 346, 148, 347, 235, 402,
- 236, 396, 237, 397, 238, 399, 239, 398, 240, 401,
- 241, 400, 242, 395, 206, 389, 737, 808, 149, 362,
- 697, 698, 780, 871, 872, 873, 874, 875, 926, 876,
- 150, 151, 366, 722, 723, 724, 794, 725, 795, 152,
- 367, 61, 76, 309, 310, 311, 312, 425, 313, 426,
- 314, 315, 428, 316, 317, 318, 431, 613, 319, 432,
- 320, 321, 322, 323, 436, 620, 324, 437, 94, 336,
- 95, 337, 96, 338, 97, 335, 63, 77, 326, 327,
- 328, 440, 739, 740, 810, 904, 905, 906, 907, 939,
- 908, 937, 954, 955, 956, 963, 964, 965, 970, 966,
- 967, 968
+ 738, 810, 236, 396, 237, 397, 238, 399, 239, 398,
+ 240, 401, 241, 400, 242, 395, 206, 389, 739, 149,
+ 362, 697, 698, 782, 873, 874, 875, 876, 877, 928,
+ 878, 150, 151, 366, 722, 723, 724, 796, 725, 797,
+ 152, 367, 61, 76, 309, 310, 311, 312, 425, 313,
+ 426, 314, 315, 428, 316, 317, 318, 431, 613, 319,
+ 432, 320, 321, 322, 323, 436, 620, 324, 437, 94,
+ 336, 95, 337, 96, 338, 97, 335, 63, 77, 326,
+ 327, 328, 440, 741, 742, 812, 906, 907, 908, 909,
+ 941, 910, 939, 956, 957, 958, 965, 966, 967, 972,
+ 968, 969, 970
};
const unsigned short int
Dhcp4Parser::yytable_[] =
{
90, 124, 157, 180, 208, 225, 663, 251, 270, 287,
- 306, 243, 272, 844, 164, 200, 215, 227, 273, 265,
- 283, 845, 307, 203, 78, 232, 848, 29, 209, 30,
- 28, 31, 611, 857, 165, 201, 216, 228, 778, 266,
- 284, 779, 308, 204, 340, 233, 181, 285, 286, 341,
- 587, 252, 271, 84, 101, 102, 103, 592, 182, 959,
- 183, 40, 960, 961, 962, 210, 198, 211, 226, 42,
- 98, 368, 205, 44, 234, 81, 369, 46, 184, 99,
- 100, 101, 102, 103, 104, 105, 106, 153, 154, 113,
- 374, 155, 570, 571, 156, 375, 615, 616, 617, 618,
- 390, 244, 115, 116, 112, 391, 89, 107, 108, 109,
- 110, 111, 115, 116, 217, 112, 113, 583, 584, 585,
- 218, 219, 220, 221, 222, 223, 114, 224, 619, 115,
- 116, 245, 781, 246, 247, 782, 325, 248, 249, 250,
- 117, 118, 612, 115, 116, 115, 116, 393, 422, 438,
- 717, 718, 394, 423, 439, 119, 441, 811, 120, 368,
- 812, 442, 844, 329, 741, 121, 122, 441, 374, 123,
- 845, 760, 742, 743, 85, 848, 761, 48, 32, 33,
- 34, 35, 857, 86, 87, 88, 285, 286, 89, 760,
- 100, 101, 102, 103, 762, 627, 573, 574, 89, 89,
- 628, 629, 630, 631, 632, 633, 634, 635, 636, 637,
- 638, 639, 640, 641, 642, 89, 830, 107, 108, 109,
- 50, 52, 166, 167, 168, 245, 113, 792, 54, 89,
- 56, 89, 793, 100, 101, 102, 103, 169, 58, 115,
- 116, 170, 171, 172, 173, 174, 175, 60, 684, 685,
- 686, 687, 176, 688, 796, 177, 178, 62, 330, 797,
- 107, 108, 109, 179, 111, 331, 438, 113, 760, 113,
- 245, 798, 390, 920, 90, 957, 332, 921, 958, 207,
- 115, 116, 115, 116, 333, 171, 339, 924, 403, 175,
- 443, 444, 925, 176, 422, 176, 177, 343, 177, 930,
- 393, 404, 124, 344, 351, 934, 179, 414, 157, 703,
- 704, 705, 706, 707, 708, 352, 940, 974, 405, 353,
- 164, 941, 975, 89, 180, 89, 354, 208, 365, 245,
- 267, 246, 247, 268, 269, 373, 200, 383, 225, 215,
- 165, 115, 116, 384, 203, 408, 412, 416, 251, 417,
- 227, 209, 413, 270, 418, 419, 201, 272, 232, 216,
- 265, 245, 424, 273, 204, 283, 89, 181, 89, 427,
- 228, 429, 306, 115, 116, 430, 445, 433, 233, 182,
- 266, 183, 434, 435, 307, 284, 453, 198, 210, 446,
- 211, 447, 252, 205, 101, 102, 103, 271, 448, 184,
- 449, 226, 450, 452, 308, 454, 455, 234, 545, 546,
- 547, 910, 911, 912, 913, 456, 457, 458, 459, 115,
- 116, 460, 465, 461, 462, 466, 467, 89, 112, 113,
- 245, 463, 464, 468, 469, 470, 897, 471, 898, 899,
- 472, 473, 115, 116, 474, 475, 476, 477, 479, 480,
- 481, 482, 484, 485, 486, 487, 860, 861, 488, 89,
+ 306, 243, 272, 846, 164, 200, 215, 227, 273, 265,
+ 283, 847, 307, 203, 78, 232, 587, 29, 209, 30,
+ 28, 31, 611, 592, 165, 201, 216, 228, 850, 266,
+ 284, 859, 308, 204, 84, 233, 181, 285, 286, 340,
+ 780, 252, 271, 781, 341, 153, 154, 245, 182, 155,
+ 183, 783, 156, 113, 784, 210, 198, 211, 226, 115,
+ 116, 98, 205, 40, 234, 207, 115, 116, 184, 42,
+ 99, 100, 101, 102, 103, 104, 105, 106, 813, 176,
+ 961, 814, 177, 962, 963, 964, 615, 616, 617, 618,
+ 684, 685, 686, 687, 959, 688, 89, 960, 107, 108,
+ 109, 110, 111, 115, 116, 44, 112, 113, 46, 703,
+ 704, 705, 706, 707, 708, 115, 116, 114, 619, 368,
+ 115, 116, 48, 899, 369, 900, 901, 101, 102, 103,
+ 374, 117, 118, 612, 390, 375, 393, 422, 438, 391,
+ 441, 394, 423, 439, 368, 442, 89, 119, 81, 743,
+ 120, 50, 846, 89, 717, 718, 85, 121, 122, 441,
+ 847, 123, 113, 374, 744, 86, 87, 88, 745, 32,
+ 33, 34, 35, 762, 762, 115, 116, 850, 763, 764,
+ 859, 89, 100, 101, 102, 103, 794, 217, 285, 286,
+ 89, 795, 52, 218, 219, 220, 221, 222, 223, 798,
+ 224, 438, 89, 112, 799, 325, 800, 89, 832, 107,
+ 108, 109, 762, 54, 166, 167, 168, 922, 113, 570,
+ 571, 390, 100, 101, 102, 103, 923, 573, 574, 169,
+ 56, 115, 116, 170, 171, 172, 173, 174, 175, 58,
+ 926, 101, 102, 103, 176, 927, 60, 177, 178, 107,
+ 108, 109, 422, 111, 62, 179, 393, 932, 113, 245,
+ 942, 936, 89, 976, 90, 943, 330, 329, 977, 224,
+ 736, 115, 116, 331, 171, 112, 113, 245, 175, 332,
+ 443, 444, 333, 403, 176, 339, 343, 177, 344, 115,
+ 116, 351, 124, 352, 353, 179, 354, 365, 157, 912,
+ 913, 914, 915, 862, 863, 583, 584, 585, 373, 383,
+ 164, 384, 404, 414, 180, 408, 405, 208, 89, 412,
+ 413, 416, 417, 419, 418, 424, 200, 427, 225, 215,
+ 165, 429, 430, 433, 203, 434, 435, 445, 251, 446,
+ 227, 209, 447, 270, 448, 449, 201, 272, 232, 216,
+ 265, 450, 452, 273, 204, 283, 455, 181, 89, 453,
+ 228, 456, 306, 454, 457, 458, 459, 460, 233, 182,
+ 266, 183, 461, 462, 307, 284, 89, 198, 210, 463,
+ 211, 465, 252, 205, 464, 466, 244, 271, 467, 184,
+ 468, 226, 469, 470, 308, 471, 627, 234, 545, 546,
+ 547, 628, 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 638, 639, 640, 641, 642, 245, 472, 246, 247,
+ 938, 473, 248, 249, 250, 474, 245, 476, 115, 116,
+ 245, 267, 246, 247, 268, 269, 475, 477, 479, 480,
+ 481, 484, 115, 116, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 482, 485, 486,
+ 487, 488, 489, 490, 491, 493, 494, 124, 495, 496,
+ 497, 499, 157, 607, 492, 501, 502, 503, 504, 505,
+ 506, 507, 508, 510, 164, 511, 513, 514, 115, 116,
+ 719, 306, 623, 515, 512, 518, 522, 516, 523, 519,
+ 526, 527, 720, 307, 165, 520, 525, 528, 529, 530,
+ 532, 531, 533, 537, 534, 89, 535, 538, 540, 536,
+ 542, 549, 721, 308, 543, 89, 544, 548, 550, 89,
292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 489, 490, 491, 124, 493, 492,
- 494, 495, 157, 607, 496, 497, 499, 501, 502, 503,
- 504, 505, 506, 507, 164, 508, 510, 511, 513, 514,
- 719, 306, 623, 515, 512, 89, 518, 516, 522, 519,
- 520, 523, 720, 307, 165, 525, 526, 527, 528, 529,
- 530, 531, 532, 533, 537, 534, 538, 535, 89, 536,
- 540, 542, 721, 308, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 543, 544, 548,
- 552, 549, 553, 550, 554, 555, 551, 556, 557, 558,
- 561, 562, 30, 563, 564, 576, 577, 565, 566, 567,
- 568, 578, 579, 589, 622, 580, 581, 590, 664, 582,
- 588, 591, 593, 594, 595, 668, 614, 672, 596, 676,
- 597, 598, 680, 696, 599, 600, 699, 601, 728, 732,
- 736, 738, 748, 602, 749, 750, 751, 752, 603, 604,
- 755, 605, 606, 608, 609, 610, 756, 621, 757, 758,
- 759, 765, 799, 764, 768, 767, 770, 771, 773, 774,
- 777, 776, 785, 804, 784, 786, 787, 788, 789, 790,
- 791, 559, 807, 803, 806, 813, 814, 815, 809, 816,
- 822, 823, 887, 817, 888, 819, 818, 890, 821, 820,
- 824, 891, 922, 825, 896, 826, 827, 923, 880, 828,
- 927, 881, 928, 882, 883, 929, 935, 938, 884, 943,
- 885, 915, 946, 944, 916, 917, 918, 919, 931, 932,
- 933, 936, 948, 947, 950, 951, 953, 971, 972, 973,
- 180, 976, 952, 251, 978, 624, 270, 977, 979, 838,
- 272, 626, 200, 981, 862, 265, 273, 287, 283, 864,
- 203, 852, 478, 451, 831, 829, 866, 483, 879, 854,
- 719, 859, 201, 846, 868, 266, 208, 886, 284, 225,
- 204, 853, 720, 181, 900, 878, 867, 252, 215, 855,
- 271, 227, 839, 843, 869, 182, 902, 183, 863, 232,
- 209, 833, 721, 198, 840, 832, 841, 498, 216, 205,
- 847, 228, 851, 858, 942, 184, 903, 865, 856, 233,
- 837, 524, 835, 870, 842, 834, 836, 893, 901, 517,
- 892, 895, 894, 521, 500, 945, 509, 210, 889, 211,
- 877, 726, 226, 625, 949, 909, 969, 539, 234, 980,
- 0, 0, 0, 0, 0, 0, 0, 541, 0, 0,
+ 302, 303, 304, 305, 551, 552, 553, 554, 555, 556,
+ 557, 558, 561, 562, 30, 563, 564, 576, 577, 565,
+ 566, 567, 568, 578, 579, 580, 581, 582, 588, 589,
+ 590, 591, 593, 594, 614, 89, 595, 596, 622, 597,
+ 750, 598, 599, 600, 601, 602, 603, 604, 605, 606,
+ 664, 668, 672, 676, 680, 608, 609, 610, 621, 696,
+ 699, 728, 732, 740, 751, 752, 753, 754, 757, 758,
+ 759, 760, 761, 767, 559, 766, 770, 769, 772, 773,
+ 775, 776, 779, 778, 787, 801, 786, 788, 789, 790,
+ 791, 792, 793, 806, 451, 805, 809, 808, 815, 816,
+ 811, 817, 818, 819, 820, 821, 822, 824, 823, 825,
+ 889, 826, 890, 827, 893, 892, 828, 829, 898, 882,
+ 830, 883, 931, 884, 924, 885, 925, 929, 886, 887,
+ 930, 940, 917, 937, 945, 918, 948, 950, 919, 920,
+ 921, 933, 934, 935, 953, 955, 949, 946, 952, 954,
+ 973, 974, 180, 975, 978, 251, 979, 983, 270, 980,
+ 624, 840, 272, 626, 200, 833, 864, 265, 273, 287,
+ 283, 866, 203, 854, 981, 831, 483, 861, 868, 881,
+ 880, 856, 719, 478, 201, 848, 870, 266, 208, 835,
+ 284, 225, 204, 855, 720, 181, 902, 888, 869, 252,
+ 215, 857, 271, 227, 841, 845, 871, 182, 904, 183,
+ 865, 232, 209, 860, 721, 198, 842, 498, 843, 944,
+ 216, 205, 849, 228, 853, 524, 834, 184, 905, 867,
+ 858, 233, 836, 837, 894, 872, 844, 838, 895, 517,
+ 903, 839, 897, 500, 896, 521, 509, 737, 947, 210,
+ 891, 211, 879, 911, 226, 726, 625, 951, 971, 982,
+ 234, 0, 0, 0, 0, 0, 0, 539, 0, 0,
+ 0, 541, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 838, 0,
- 0, 0, 0, 862, 0, 0, 0, 0, 864, 0,
- 852, 0, 0, 0, 900, 866, 0, 0, 854, 0,
- 0, 0, 846, 868, 0, 0, 902, 0, 0, 0,
- 853, 0, 0, 0, 0, 867, 0, 0, 855, 0,
- 0, 839, 843, 869, 0, 0, 903, 863, 0, 0,
- 0, 0, 0, 840, 0, 841, 0, 0, 901, 847,
- 0, 851, 0, 0, 0, 0, 865, 856, 0, 0,
- 0, 0, 870, 842
+ 840, 0, 0, 0, 0, 864, 0, 0, 0, 0,
+ 866, 0, 854, 0, 0, 0, 902, 868, 0, 0,
+ 856, 0, 0, 0, 848, 870, 0, 0, 904, 0,
+ 0, 0, 855, 0, 0, 0, 0, 869, 0, 0,
+ 857, 0, 0, 841, 845, 871, 0, 0, 905, 865,
+ 0, 0, 0, 0, 0, 842, 0, 843, 0, 0,
+ 903, 849, 0, 853, 0, 0, 0, 0, 867, 858,
+ 0, 0, 0, 0, 872, 844
};
const short int
Dhcp4Parser::yycheck_[] =
{
66, 67, 68, 69, 70, 71, 553, 73, 74, 75,
- 76, 72, 74, 775, 68, 69, 70, 71, 74, 73,
- 74, 775, 76, 69, 64, 71, 775, 5, 70, 7,
- 0, 9, 15, 775, 68, 69, 70, 71, 3, 73,
- 74, 6, 76, 69, 3, 71, 69, 97, 98, 8,
- 494, 73, 74, 10, 22, 23, 24, 501, 69, 134,
- 69, 7, 137, 138, 139, 70, 69, 70, 71, 7,
- 11, 3, 69, 7, 71, 156, 8, 7, 69, 20,
- 21, 22, 23, 24, 25, 26, 27, 12, 13, 57,
- 3, 16, 14, 15, 19, 8, 127, 128, 129, 130,
- 3, 28, 70, 71, 56, 8, 156, 48, 49, 50,
- 51, 52, 70, 71, 82, 56, 57, 78, 79, 80,
- 88, 89, 90, 91, 92, 93, 67, 95, 159, 70,
- 71, 58, 3, 60, 61, 6, 132, 64, 65, 66,
- 81, 82, 125, 70, 71, 70, 71, 3, 3, 3,
- 108, 109, 8, 8, 8, 96, 3, 3, 99, 3,
- 6, 8, 924, 6, 8, 106, 107, 3, 3, 110,
- 924, 3, 8, 8, 131, 924, 8, 7, 156, 157,
- 158, 159, 924, 140, 141, 142, 97, 98, 156, 3,
- 21, 22, 23, 24, 8, 28, 17, 18, 156, 156,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 156, 763, 48, 49, 50,
- 7, 7, 53, 54, 55, 58, 57, 3, 7, 156,
- 7, 156, 8, 21, 22, 23, 24, 68, 7, 70,
- 71, 72, 73, 74, 75, 76, 77, 7, 88, 89,
- 90, 91, 83, 93, 3, 86, 87, 7, 3, 8,
- 48, 49, 50, 94, 52, 4, 3, 57, 3, 57,
- 58, 8, 3, 8, 340, 3, 8, 8, 6, 69,
- 70, 71, 70, 71, 3, 73, 4, 3, 8, 77,
- 330, 331, 8, 83, 3, 83, 86, 4, 86, 8,
- 3, 3, 368, 4, 4, 8, 94, 3, 374, 100,
- 101, 102, 103, 104, 105, 4, 3, 3, 8, 4,
- 374, 8, 8, 156, 390, 156, 4, 393, 4, 58,
- 59, 60, 61, 62, 63, 4, 390, 4, 404, 393,
- 374, 70, 71, 4, 390, 4, 4, 4, 414, 4,
- 404, 393, 8, 419, 8, 3, 390, 419, 404, 393,
- 414, 58, 4, 419, 390, 419, 156, 390, 156, 4,
- 404, 4, 438, 70, 71, 4, 156, 4, 404, 390,
- 414, 390, 4, 4, 438, 419, 159, 390, 393, 4,
- 393, 4, 414, 390, 22, 23, 24, 419, 4, 390,
- 4, 404, 4, 4, 438, 159, 4, 404, 448, 449,
- 450, 29, 30, 31, 32, 4, 4, 4, 4, 70,
- 71, 4, 4, 157, 157, 4, 4, 156, 56, 57,
- 58, 157, 157, 4, 4, 4, 133, 4, 135, 136,
- 4, 4, 70, 71, 4, 157, 4, 4, 4, 4,
- 4, 159, 4, 4, 4, 4, 84, 85, 4, 156,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 4, 4, 157, 543, 4, 159,
- 4, 4, 548, 523, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 548, 4, 4, 4, 4, 4,
- 566, 567, 542, 4, 157, 156, 4, 159, 4, 159,
- 159, 4, 566, 567, 548, 159, 4, 4, 157, 4,
- 157, 157, 4, 4, 4, 159, 4, 159, 156, 159,
- 4, 4, 566, 567, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 7, 7, 7,
- 7, 156, 7, 156, 5, 5, 156, 5, 5, 5,
- 156, 5, 7, 5, 5, 156, 156, 7, 7, 7,
- 5, 156, 5, 5, 5, 156, 156, 7, 7, 156,
- 156, 156, 156, 156, 156, 7, 126, 7, 156, 7,
- 156, 156, 7, 7, 156, 156, 7, 156, 7, 7,
- 95, 7, 4, 156, 4, 4, 4, 4, 156, 156,
- 4, 156, 156, 156, 156, 156, 4, 156, 4, 4,
- 4, 3, 156, 6, 3, 6, 6, 3, 6, 3,
- 3, 6, 3, 3, 6, 4, 4, 4, 4, 4,
- 4, 469, 3, 6, 6, 4, 4, 4, 8, 4,
- 4, 4, 4, 157, 4, 157, 159, 6, 157, 159,
- 157, 3, 8, 157, 4, 157, 157, 8, 157, 159,
- 4, 157, 8, 157, 157, 3, 8, 4, 157, 4,
- 157, 156, 4, 159, 156, 156, 156, 156, 156, 156,
- 156, 156, 4, 157, 156, 5, 7, 4, 4, 4,
- 766, 4, 156, 769, 157, 543, 772, 159, 157, 775,
- 772, 548, 766, 156, 780, 769, 772, 783, 772, 780,
- 766, 775, 368, 340, 765, 760, 780, 374, 785, 775,
- 796, 778, 766, 775, 780, 769, 802, 792, 772, 805,
- 766, 775, 796, 766, 810, 783, 780, 769, 802, 775,
- 772, 805, 775, 775, 780, 766, 810, 766, 780, 805,
- 802, 768, 796, 766, 775, 766, 775, 390, 802, 766,
- 775, 805, 775, 777, 924, 766, 810, 780, 775, 805,
- 774, 422, 771, 780, 775, 769, 772, 804, 810, 414,
- 802, 807, 805, 419, 393, 929, 404, 802, 796, 802,
- 781, 567, 805, 544, 940, 811, 957, 438, 805, 974,
- -1, -1, -1, -1, -1, -1, -1, 441, -1, -1,
+ 76, 72, 74, 777, 68, 69, 70, 71, 74, 73,
+ 74, 777, 76, 69, 64, 71, 494, 5, 70, 7,
+ 0, 9, 15, 501, 68, 69, 70, 71, 777, 73,
+ 74, 777, 76, 69, 10, 71, 69, 98, 99, 3,
+ 3, 73, 74, 6, 8, 12, 13, 58, 69, 16,
+ 69, 3, 19, 57, 6, 70, 69, 70, 71, 70,
+ 71, 11, 69, 7, 71, 69, 70, 71, 69, 7,
+ 20, 21, 22, 23, 24, 25, 26, 27, 3, 83,
+ 135, 6, 86, 138, 139, 140, 128, 129, 130, 131,
+ 88, 89, 90, 91, 3, 93, 157, 6, 48, 49,
+ 50, 51, 52, 70, 71, 7, 56, 57, 7, 101,
+ 102, 103, 104, 105, 106, 70, 71, 67, 160, 3,
+ 70, 71, 7, 134, 8, 136, 137, 22, 23, 24,
+ 3, 81, 82, 126, 3, 8, 3, 3, 3, 8,
+ 3, 8, 8, 8, 3, 8, 157, 97, 157, 8,
+ 100, 7, 926, 157, 109, 110, 132, 107, 108, 3,
+ 926, 111, 57, 3, 8, 141, 142, 143, 8, 157,
+ 158, 159, 160, 3, 3, 70, 71, 926, 8, 8,
+ 926, 157, 21, 22, 23, 24, 3, 82, 98, 99,
+ 157, 8, 7, 88, 89, 90, 91, 92, 93, 3,
+ 95, 3, 157, 56, 8, 133, 8, 157, 765, 48,
+ 49, 50, 3, 7, 53, 54, 55, 8, 57, 14,
+ 15, 3, 21, 22, 23, 24, 8, 17, 18, 68,
+ 7, 70, 71, 72, 73, 74, 75, 76, 77, 7,
+ 3, 22, 23, 24, 83, 8, 7, 86, 87, 48,
+ 49, 50, 3, 52, 7, 94, 3, 8, 57, 58,
+ 3, 8, 157, 3, 340, 8, 3, 6, 8, 95,
+ 96, 70, 71, 4, 73, 56, 57, 58, 77, 8,
+ 330, 331, 3, 8, 83, 4, 4, 86, 4, 70,
+ 71, 4, 368, 4, 4, 94, 4, 4, 374, 29,
+ 30, 31, 32, 84, 85, 78, 79, 80, 4, 4,
+ 374, 4, 3, 3, 390, 4, 8, 393, 157, 4,
+ 8, 4, 4, 3, 8, 4, 390, 4, 404, 393,
+ 374, 4, 4, 4, 390, 4, 4, 157, 414, 4,
+ 404, 393, 4, 419, 4, 4, 390, 419, 404, 393,
+ 414, 4, 4, 419, 390, 419, 4, 390, 157, 160,
+ 404, 4, 438, 160, 4, 4, 4, 4, 404, 390,
+ 414, 390, 158, 158, 438, 419, 157, 390, 393, 158,
+ 393, 4, 414, 390, 158, 4, 28, 419, 4, 390,
+ 4, 404, 4, 4, 438, 4, 28, 404, 448, 449,
+ 450, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 58, 4, 60, 61,
+ 898, 4, 64, 65, 66, 4, 58, 4, 70, 71,
+ 58, 59, 60, 61, 62, 63, 158, 4, 4, 4,
+ 4, 4, 70, 71, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 160, 4, 4,
+ 4, 4, 4, 4, 158, 4, 4, 543, 4, 4,
+ 4, 4, 548, 523, 160, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 548, 4, 4, 4, 70, 71,
+ 566, 567, 542, 4, 158, 4, 4, 160, 4, 160,
+ 4, 4, 566, 567, 548, 160, 160, 158, 4, 158,
+ 4, 158, 4, 4, 160, 157, 160, 4, 4, 160,
+ 4, 157, 566, 567, 7, 157, 7, 7, 157, 157,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 157, 7, 7, 5, 5, 5,
+ 5, 5, 157, 5, 7, 5, 5, 157, 157, 7,
+ 7, 7, 5, 157, 5, 157, 157, 157, 157, 5,
+ 7, 157, 157, 157, 127, 157, 157, 157, 5, 157,
+ 4, 157, 157, 157, 157, 157, 157, 157, 157, 157,
+ 7, 7, 7, 7, 7, 157, 157, 157, 157, 7,
+ 7, 7, 7, 7, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 3, 469, 6, 3, 6, 6, 3,
+ 6, 3, 3, 6, 3, 157, 6, 4, 4, 4,
+ 4, 4, 4, 3, 340, 6, 3, 6, 4, 4,
+ 8, 4, 4, 158, 160, 158, 160, 4, 158, 4,
+ 4, 158, 4, 158, 3, 6, 158, 158, 4, 158,
+ 160, 158, 3, 158, 8, 158, 8, 4, 158, 158,
+ 8, 4, 157, 8, 4, 157, 4, 4, 157, 157,
+ 157, 157, 157, 157, 5, 7, 158, 160, 157, 157,
+ 4, 4, 768, 4, 4, 771, 160, 157, 774, 158,
+ 543, 777, 774, 548, 768, 767, 782, 771, 774, 785,
+ 774, 782, 768, 777, 158, 762, 374, 780, 782, 787,
+ 785, 777, 798, 368, 768, 777, 782, 771, 804, 770,
+ 774, 807, 768, 777, 798, 768, 812, 794, 782, 771,
+ 804, 777, 774, 807, 777, 777, 782, 768, 812, 768,
+ 782, 807, 804, 779, 798, 768, 777, 390, 777, 926,
+ 804, 768, 777, 807, 777, 422, 768, 768, 812, 782,
+ 777, 807, 771, 773, 804, 782, 777, 774, 806, 414,
+ 812, 776, 809, 393, 807, 419, 404, 590, 931, 804,
+ 798, 804, 783, 813, 807, 567, 544, 942, 959, 976,
+ 807, -1, -1, -1, -1, -1, -1, 438, -1, -1,
+ -1, 441, -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, 924, -1,
- -1, -1, -1, 929, -1, -1, -1, -1, 929, -1,
- 924, -1, -1, -1, 940, 929, -1, -1, 924, -1,
- -1, -1, 924, 929, -1, -1, 940, -1, -1, -1,
- 924, -1, -1, -1, -1, 929, -1, -1, 924, -1,
- -1, 924, 924, 929, -1, -1, 940, 929, -1, -1,
- -1, -1, -1, 924, -1, 924, -1, -1, 940, 924,
- -1, 924, -1, -1, -1, -1, 929, 924, -1, -1,
- -1, -1, 929, 924
+ 926, -1, -1, -1, -1, 931, -1, -1, -1, -1,
+ 931, -1, 926, -1, -1, -1, 942, 931, -1, -1,
+ 926, -1, -1, -1, 926, 931, -1, -1, 942, -1,
+ -1, -1, 926, -1, -1, -1, -1, 931, -1, -1,
+ 926, -1, -1, 926, 926, 931, -1, -1, 942, 931,
+ -1, -1, -1, -1, -1, 926, -1, 926, -1, -1,
+ 942, 926, -1, 926, -1, -1, -1, -1, 931, 926,
+ -1, -1, -1, -1, 931, 926
};
const unsigned short int
Dhcp4Parser::yystos_[] =
{
- 0, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 0, 5,
- 7, 9, 156, 157, 158, 159, 175, 176, 177, 182,
- 7, 191, 7, 197, 7, 211, 7, 298, 7, 381,
- 7, 397, 7, 333, 7, 339, 7, 363, 7, 274,
- 7, 451, 7, 486, 183, 178, 192, 198, 212, 299,
- 382, 398, 334, 340, 364, 275, 452, 487, 175, 184,
- 185, 156, 180, 181, 10, 131, 140, 141, 142, 156,
- 190, 193, 194, 195, 478, 480, 482, 484, 11, 20,
+ 0, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 0, 5,
+ 7, 9, 157, 158, 159, 160, 176, 177, 178, 183,
+ 7, 192, 7, 198, 7, 212, 7, 299, 7, 382,
+ 7, 398, 7, 334, 7, 340, 7, 364, 7, 275,
+ 7, 453, 7, 488, 184, 179, 193, 199, 213, 300,
+ 383, 399, 335, 341, 365, 276, 454, 489, 176, 185,
+ 186, 157, 181, 182, 10, 132, 141, 142, 143, 157,
+ 191, 194, 195, 196, 480, 482, 484, 486, 11, 20,
21, 22, 23, 24, 25, 26, 27, 48, 49, 50,
- 51, 52, 56, 57, 67, 70, 71, 81, 82, 96,
- 99, 106, 107, 110, 190, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 222, 224, 226, 259, 268, 282,
- 292, 323, 331, 357, 387, 389, 402, 404, 406, 428,
- 440, 441, 449, 12, 13, 16, 19, 190, 209, 210,
- 213, 215, 218, 221, 387, 389, 53, 54, 55, 68,
+ 51, 52, 56, 57, 67, 70, 71, 81, 82, 97,
+ 100, 107, 108, 111, 191, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 223, 225, 227, 260, 269, 283,
+ 293, 324, 332, 358, 388, 390, 403, 405, 407, 430,
+ 442, 443, 451, 12, 13, 16, 19, 191, 210, 211,
+ 214, 216, 219, 222, 388, 390, 53, 54, 55, 68,
72, 73, 74, 75, 76, 77, 83, 86, 87, 94,
- 190, 201, 202, 203, 206, 300, 301, 302, 304, 306,
- 308, 310, 312, 314, 316, 318, 321, 322, 357, 375,
- 387, 389, 391, 402, 404, 406, 424, 69, 190, 314,
- 316, 357, 383, 384, 385, 387, 389, 82, 88, 89,
- 90, 91, 92, 93, 95, 190, 357, 387, 389, 399,
- 400, 401, 402, 404, 406, 408, 410, 412, 414, 416,
- 418, 420, 422, 331, 28, 58, 60, 61, 64, 65,
- 66, 190, 244, 341, 342, 343, 344, 345, 346, 347,
- 349, 351, 353, 354, 356, 387, 389, 59, 62, 63,
- 190, 244, 345, 351, 365, 366, 367, 368, 369, 371,
- 372, 373, 374, 387, 389, 97, 98, 190, 276, 277,
- 278, 280, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 190, 387, 389, 453,
- 454, 455, 456, 458, 460, 461, 463, 464, 465, 468,
- 470, 471, 472, 473, 476, 132, 488, 489, 490, 6,
- 3, 4, 8, 3, 196, 485, 479, 481, 483, 4,
- 3, 8, 208, 4, 4, 403, 405, 407, 223, 225,
- 227, 4, 4, 4, 4, 293, 332, 358, 324, 388,
- 390, 260, 429, 269, 283, 4, 442, 450, 3, 8,
- 214, 216, 219, 4, 3, 8, 305, 307, 309, 376,
- 303, 311, 313, 4, 4, 319, 317, 315, 392, 425,
- 3, 8, 386, 3, 8, 423, 411, 413, 417, 415,
- 421, 419, 409, 8, 3, 8, 348, 245, 4, 352,
- 350, 355, 4, 8, 3, 370, 4, 4, 8, 3,
- 279, 281, 3, 8, 4, 457, 459, 4, 462, 4,
- 4, 466, 469, 4, 4, 4, 474, 477, 3, 8,
- 491, 3, 8, 175, 175, 156, 4, 4, 4, 4,
- 4, 194, 4, 159, 159, 4, 4, 4, 4, 4,
- 4, 157, 157, 157, 157, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 157, 4, 4, 200, 4,
- 4, 4, 159, 210, 4, 4, 4, 4, 4, 4,
- 4, 157, 159, 4, 4, 4, 4, 4, 301, 4,
- 384, 4, 4, 4, 4, 4, 4, 4, 4, 401,
- 4, 4, 157, 4, 4, 4, 159, 343, 4, 159,
- 159, 367, 4, 4, 277, 159, 4, 4, 157, 4,
- 157, 157, 4, 4, 159, 159, 159, 4, 4, 454,
- 4, 489, 4, 7, 7, 175, 175, 175, 7, 156,
- 156, 156, 7, 7, 5, 5, 5, 5, 5, 177,
- 179, 156, 5, 5, 5, 7, 7, 7, 5, 186,
- 14, 15, 217, 17, 18, 220, 156, 156, 156, 5,
- 156, 156, 156, 78, 79, 80, 320, 186, 156, 5,
- 7, 156, 186, 156, 156, 156, 156, 156, 156, 156,
- 156, 156, 156, 156, 156, 156, 156, 175, 156, 156,
- 156, 15, 125, 467, 126, 127, 128, 129, 130, 159,
- 475, 156, 5, 175, 199, 488, 209, 28, 33, 34,
+ 191, 202, 203, 204, 207, 301, 302, 303, 305, 307,
+ 309, 311, 313, 315, 317, 319, 322, 323, 358, 376,
+ 388, 390, 392, 403, 405, 407, 427, 69, 191, 315,
+ 317, 358, 384, 385, 386, 388, 390, 82, 88, 89,
+ 90, 91, 92, 93, 95, 191, 358, 388, 390, 400,
+ 401, 402, 403, 405, 407, 409, 413, 415, 417, 419,
+ 421, 423, 425, 332, 28, 58, 60, 61, 64, 65,
+ 66, 191, 245, 342, 343, 344, 345, 346, 347, 348,
+ 350, 352, 354, 355, 357, 388, 390, 59, 62, 63,
+ 191, 245, 346, 352, 366, 367, 368, 369, 370, 372,
+ 373, 374, 375, 388, 390, 98, 99, 191, 277, 278,
+ 279, 281, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 191, 388, 390, 455,
+ 456, 457, 458, 460, 462, 463, 465, 466, 467, 470,
+ 472, 473, 474, 475, 478, 133, 490, 491, 492, 6,
+ 3, 4, 8, 3, 197, 487, 481, 483, 485, 4,
+ 3, 8, 209, 4, 4, 404, 406, 408, 224, 226,
+ 228, 4, 4, 4, 4, 294, 333, 359, 325, 389,
+ 391, 261, 431, 270, 284, 4, 444, 452, 3, 8,
+ 215, 217, 220, 4, 3, 8, 306, 308, 310, 377,
+ 304, 312, 314, 4, 4, 320, 318, 316, 393, 428,
+ 3, 8, 387, 3, 8, 426, 414, 416, 420, 418,
+ 424, 422, 410, 8, 3, 8, 349, 246, 4, 353,
+ 351, 356, 4, 8, 3, 371, 4, 4, 8, 3,
+ 280, 282, 3, 8, 4, 459, 461, 4, 464, 4,
+ 4, 468, 471, 4, 4, 4, 476, 479, 3, 8,
+ 493, 3, 8, 176, 176, 157, 4, 4, 4, 4,
+ 4, 195, 4, 160, 160, 4, 4, 4, 4, 4,
+ 4, 158, 158, 158, 158, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 158, 4, 4, 201, 4,
+ 4, 4, 160, 211, 4, 4, 4, 4, 4, 4,
+ 4, 158, 160, 4, 4, 4, 4, 4, 302, 4,
+ 385, 4, 4, 4, 4, 4, 4, 4, 4, 402,
+ 4, 4, 158, 4, 4, 4, 160, 344, 4, 160,
+ 160, 368, 4, 4, 278, 160, 4, 4, 158, 4,
+ 158, 158, 4, 4, 160, 160, 160, 4, 4, 456,
+ 4, 491, 4, 7, 7, 176, 176, 176, 7, 157,
+ 157, 157, 7, 7, 5, 5, 5, 5, 5, 178,
+ 180, 157, 5, 5, 5, 7, 7, 7, 5, 187,
+ 14, 15, 218, 17, 18, 221, 157, 157, 157, 5,
+ 157, 157, 157, 78, 79, 80, 321, 187, 157, 5,
+ 7, 157, 187, 157, 157, 157, 157, 157, 157, 157,
+ 157, 157, 157, 157, 157, 157, 157, 176, 157, 157,
+ 157, 15, 126, 469, 127, 128, 129, 130, 131, 160,
+ 477, 157, 5, 176, 200, 490, 210, 28, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 190, 232, 233, 234, 237, 239, 241,
- 243, 244, 246, 247, 248, 249, 250, 251, 252, 253,
- 255, 257, 258, 232, 7, 228, 229, 230, 7, 294,
- 295, 296, 7, 335, 336, 337, 7, 359, 360, 361,
- 7, 325, 326, 327, 88, 89, 90, 91, 93, 261,
- 262, 263, 264, 265, 266, 267, 7, 430, 431, 7,
- 270, 271, 272, 100, 101, 102, 103, 104, 105, 284,
- 285, 286, 287, 288, 289, 290, 291, 108, 109, 190,
- 387, 389, 443, 444, 445, 447, 453, 187, 7, 377,
- 378, 379, 7, 393, 394, 395, 95, 426, 7, 492,
- 493, 8, 8, 8, 235, 238, 240, 242, 4, 4,
- 4, 4, 4, 254, 256, 4, 4, 4, 4, 4,
- 3, 8, 8, 231, 6, 3, 297, 6, 3, 338,
- 6, 3, 362, 6, 3, 328, 6, 3, 3, 6,
- 432, 3, 6, 273, 6, 3, 4, 4, 4, 4,
- 4, 4, 3, 8, 446, 448, 3, 8, 8, 156,
- 188, 189, 380, 6, 3, 396, 6, 3, 427, 8,
- 494, 3, 6, 4, 4, 4, 4, 157, 159, 157,
- 159, 157, 4, 4, 157, 157, 157, 157, 159, 233,
- 232, 230, 300, 296, 341, 337, 365, 361, 190, 201,
- 202, 203, 206, 244, 292, 310, 314, 316, 318, 329,
- 330, 357, 387, 389, 402, 404, 406, 424, 327, 262,
- 84, 85, 190, 244, 331, 357, 387, 389, 402, 404,
- 406, 433, 434, 435, 436, 437, 439, 431, 276, 272,
- 157, 157, 157, 157, 157, 157, 285, 4, 4, 444,
- 6, 3, 383, 379, 399, 395, 4, 133, 135, 136,
- 190, 244, 387, 389, 495, 496, 497, 498, 500, 493,
- 29, 30, 31, 32, 236, 156, 156, 156, 156, 156,
- 8, 8, 8, 8, 3, 8, 438, 4, 8, 3,
- 8, 156, 156, 156, 8, 8, 156, 501, 4, 499,
- 3, 8, 330, 4, 159, 435, 4, 157, 4, 496,
- 156, 5, 156, 7, 502, 503, 504, 3, 6, 134,
- 137, 138, 139, 505, 506, 507, 509, 510, 511, 503,
- 508, 4, 4, 4, 3, 8, 4, 159, 157, 157,
- 506, 156
+ 45, 46, 47, 191, 233, 234, 235, 238, 240, 242,
+ 244, 245, 247, 248, 249, 250, 251, 252, 253, 254,
+ 256, 258, 259, 233, 7, 229, 230, 231, 7, 295,
+ 296, 297, 7, 336, 337, 338, 7, 360, 361, 362,
+ 7, 326, 327, 328, 88, 89, 90, 91, 93, 262,
+ 263, 264, 265, 266, 267, 268, 7, 432, 433, 7,
+ 271, 272, 273, 101, 102, 103, 104, 105, 106, 285,
+ 286, 287, 288, 289, 290, 291, 292, 109, 110, 191,
+ 388, 390, 445, 446, 447, 449, 455, 188, 7, 378,
+ 379, 380, 7, 394, 395, 396, 96, 409, 411, 429,
+ 7, 494, 495, 8, 8, 8, 236, 239, 241, 243,
+ 4, 4, 4, 4, 4, 255, 257, 4, 4, 4,
+ 4, 4, 3, 8, 8, 232, 6, 3, 298, 6,
+ 3, 339, 6, 3, 363, 6, 3, 329, 6, 3,
+ 3, 6, 434, 3, 6, 274, 6, 3, 4, 4,
+ 4, 4, 4, 4, 3, 8, 448, 450, 3, 8,
+ 8, 157, 189, 190, 381, 6, 3, 397, 6, 3,
+ 412, 8, 496, 3, 6, 4, 4, 4, 4, 158,
+ 160, 158, 160, 158, 4, 4, 158, 158, 158, 158,
+ 160, 234, 233, 231, 301, 297, 342, 338, 366, 362,
+ 191, 202, 203, 204, 207, 245, 293, 311, 315, 317,
+ 319, 330, 331, 358, 388, 390, 403, 405, 407, 427,
+ 328, 263, 84, 85, 191, 245, 332, 358, 388, 390,
+ 403, 405, 407, 435, 436, 437, 438, 439, 441, 433,
+ 277, 273, 158, 158, 158, 158, 158, 158, 286, 4,
+ 4, 446, 6, 3, 384, 380, 400, 396, 4, 134,
+ 136, 137, 191, 245, 388, 390, 497, 498, 499, 500,
+ 502, 495, 29, 30, 31, 32, 237, 157, 157, 157,
+ 157, 157, 8, 8, 8, 8, 3, 8, 440, 4,
+ 8, 3, 8, 157, 157, 157, 8, 8, 187, 503,
+ 4, 501, 3, 8, 331, 4, 160, 437, 4, 158,
+ 4, 498, 157, 5, 157, 7, 504, 505, 506, 3,
+ 6, 135, 138, 139, 140, 507, 508, 509, 511, 512,
+ 513, 505, 510, 4, 4, 4, 3, 8, 4, 160,
+ 158, 158, 508, 157
};
const unsigned short int
Dhcp4Parser::yyr1_[] =
{
- 0, 160, 162, 161, 163, 161, 164, 161, 165, 161,
- 166, 161, 167, 161, 168, 161, 169, 161, 170, 161,
- 171, 161, 172, 161, 173, 161, 174, 161, 175, 175,
- 175, 175, 175, 175, 175, 176, 178, 177, 179, 180,
- 180, 181, 181, 183, 182, 184, 184, 185, 185, 187,
- 186, 188, 188, 189, 189, 190, 192, 191, 193, 193,
- 194, 194, 194, 194, 194, 194, 196, 195, 198, 197,
- 199, 199, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 200, 200, 201,
- 202, 203, 204, 205, 206, 208, 207, 209, 209, 210,
- 210, 210, 210, 210, 210, 210, 212, 211, 214, 213,
- 216, 215, 217, 217, 219, 218, 220, 220, 221, 223,
- 222, 225, 224, 227, 226, 228, 228, 229, 229, 231,
- 230, 232, 232, 233, 233, 233, 233, 233, 233, 233,
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
- 233, 235, 234, 236, 236, 236, 236, 238, 237, 240,
- 239, 242, 241, 243, 245, 244, 246, 247, 248, 249,
- 250, 251, 252, 254, 253, 256, 255, 257, 258, 260,
- 259, 261, 261, 262, 262, 262, 262, 262, 263, 264,
- 265, 266, 267, 269, 268, 270, 270, 271, 271, 273,
- 272, 275, 274, 276, 276, 276, 277, 277, 279, 278,
- 281, 280, 283, 282, 284, 284, 285, 285, 285, 285,
- 285, 285, 286, 287, 288, 289, 290, 291, 293, 292,
- 294, 294, 295, 295, 297, 296, 299, 298, 300, 300,
- 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
- 301, 301, 301, 301, 301, 301, 301, 301, 301, 301,
- 301, 301, 301, 301, 301, 303, 302, 305, 304, 307,
- 306, 309, 308, 311, 310, 313, 312, 315, 314, 317,
- 316, 319, 318, 320, 320, 320, 321, 322, 324, 323,
- 325, 325, 326, 326, 328, 327, 329, 329, 330, 330,
- 330, 330, 330, 330, 330, 330, 330, 330, 330, 330,
- 330, 330, 330, 330, 330, 330, 332, 331, 334, 333,
- 335, 335, 336, 336, 338, 337, 340, 339, 341, 341,
- 342, 342, 343, 343, 343, 343, 343, 343, 343, 343,
- 343, 343, 344, 345, 346, 348, 347, 350, 349, 352,
- 351, 353, 355, 354, 356, 358, 357, 359, 359, 360,
- 360, 362, 361, 364, 363, 365, 365, 366, 366, 367,
- 367, 367, 367, 367, 367, 367, 367, 367, 368, 370,
- 369, 371, 372, 373, 374, 376, 375, 377, 377, 378,
- 378, 380, 379, 382, 381, 383, 383, 384, 384, 384,
- 384, 384, 384, 384, 386, 385, 388, 387, 390, 389,
- 392, 391, 393, 393, 394, 394, 396, 395, 398, 397,
- 399, 399, 400, 400, 401, 401, 401, 401, 401, 401,
- 401, 401, 401, 401, 401, 401, 401, 401, 401, 403,
- 402, 405, 404, 407, 406, 409, 408, 411, 410, 413,
- 412, 415, 414, 417, 416, 419, 418, 421, 420, 423,
- 422, 425, 424, 427, 426, 429, 428, 430, 430, 432,
- 431, 433, 433, 434, 434, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 436, 438, 437, 439,
- 440, 442, 441, 443, 443, 444, 444, 444, 444, 444,
- 446, 445, 448, 447, 450, 449, 452, 451, 453, 453,
- 454, 454, 454, 454, 454, 454, 454, 454, 454, 454,
- 454, 454, 454, 454, 454, 454, 454, 455, 457, 456,
- 459, 458, 460, 462, 461, 463, 464, 466, 465, 467,
- 467, 469, 468, 470, 471, 472, 474, 473, 475, 475,
- 475, 475, 475, 477, 476, 479, 478, 481, 480, 483,
- 482, 485, 484, 487, 486, 488, 488, 489, 491, 490,
- 492, 492, 494, 493, 495, 495, 496, 496, 496, 496,
- 496, 496, 496, 497, 499, 498, 501, 500, 502, 502,
- 504, 503, 505, 505, 506, 506, 506, 506, 508, 507,
- 509, 510, 511
+ 0, 161, 163, 162, 164, 162, 165, 162, 166, 162,
+ 167, 162, 168, 162, 169, 162, 170, 162, 171, 162,
+ 172, 162, 173, 162, 174, 162, 175, 162, 176, 176,
+ 176, 176, 176, 176, 176, 177, 179, 178, 180, 181,
+ 181, 182, 182, 184, 183, 185, 185, 186, 186, 188,
+ 187, 189, 189, 190, 190, 191, 193, 192, 194, 194,
+ 195, 195, 195, 195, 195, 195, 197, 196, 199, 198,
+ 200, 200, 201, 201, 201, 201, 201, 201, 201, 201,
+ 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
+ 201, 201, 201, 201, 201, 201, 201, 201, 201, 202,
+ 203, 204, 205, 206, 207, 209, 208, 210, 210, 211,
+ 211, 211, 211, 211, 211, 211, 213, 212, 215, 214,
+ 217, 216, 218, 218, 220, 219, 221, 221, 222, 224,
+ 223, 226, 225, 228, 227, 229, 229, 230, 230, 232,
+ 231, 233, 233, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 236, 235, 237, 237, 237, 237, 239, 238, 241,
+ 240, 243, 242, 244, 246, 245, 247, 248, 249, 250,
+ 251, 252, 253, 255, 254, 257, 256, 258, 259, 261,
+ 260, 262, 262, 263, 263, 263, 263, 263, 264, 265,
+ 266, 267, 268, 270, 269, 271, 271, 272, 272, 274,
+ 273, 276, 275, 277, 277, 277, 278, 278, 280, 279,
+ 282, 281, 284, 283, 285, 285, 286, 286, 286, 286,
+ 286, 286, 287, 288, 289, 290, 291, 292, 294, 293,
+ 295, 295, 296, 296, 298, 297, 300, 299, 301, 301,
+ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
+ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
+ 302, 302, 302, 302, 302, 304, 303, 306, 305, 308,
+ 307, 310, 309, 312, 311, 314, 313, 316, 315, 318,
+ 317, 320, 319, 321, 321, 321, 322, 323, 325, 324,
+ 326, 326, 327, 327, 329, 328, 330, 330, 331, 331,
+ 331, 331, 331, 331, 331, 331, 331, 331, 331, 331,
+ 331, 331, 331, 331, 331, 331, 333, 332, 335, 334,
+ 336, 336, 337, 337, 339, 338, 341, 340, 342, 342,
+ 343, 343, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 345, 346, 347, 349, 348, 351, 350, 353,
+ 352, 354, 356, 355, 357, 359, 358, 360, 360, 361,
+ 361, 363, 362, 365, 364, 366, 366, 367, 367, 368,
+ 368, 368, 368, 368, 368, 368, 368, 368, 369, 371,
+ 370, 372, 373, 374, 375, 377, 376, 378, 378, 379,
+ 379, 381, 380, 383, 382, 384, 384, 385, 385, 385,
+ 385, 385, 385, 385, 387, 386, 389, 388, 391, 390,
+ 393, 392, 394, 394, 395, 395, 397, 396, 399, 398,
+ 400, 400, 401, 401, 402, 402, 402, 402, 402, 402,
+ 402, 402, 402, 402, 402, 402, 402, 402, 402, 404,
+ 403, 406, 405, 408, 407, 410, 409, 412, 411, 414,
+ 413, 416, 415, 418, 417, 420, 419, 422, 421, 424,
+ 423, 426, 425, 428, 427, 429, 429, 431, 430, 432,
+ 432, 434, 433, 435, 435, 436, 436, 437, 437, 437,
+ 437, 437, 437, 437, 437, 437, 437, 437, 438, 440,
+ 439, 441, 442, 444, 443, 445, 445, 446, 446, 446,
+ 446, 446, 448, 447, 450, 449, 452, 451, 454, 453,
+ 455, 455, 456, 456, 456, 456, 456, 456, 456, 456,
+ 456, 456, 456, 456, 456, 456, 456, 456, 456, 457,
+ 459, 458, 461, 460, 462, 464, 463, 465, 466, 468,
+ 467, 469, 469, 471, 470, 472, 473, 474, 476, 475,
+ 477, 477, 477, 477, 477, 479, 478, 481, 480, 483,
+ 482, 485, 484, 487, 486, 489, 488, 490, 490, 491,
+ 493, 492, 494, 494, 496, 495, 497, 497, 498, 498,
+ 498, 498, 498, 498, 498, 499, 501, 500, 503, 502,
+ 504, 504, 506, 505, 507, 507, 508, 508, 508, 508,
+ 510, 509, 511, 512, 513
};
const unsigned char
@@ -4392,21 +4394,21 @@ namespace isc { namespace dhcp {
1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
4, 0, 4, 0, 4, 0, 4, 0, 4, 0,
4, 0, 4, 0, 4, 0, 4, 0, 4, 0,
- 4, 0, 6, 0, 4, 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, 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, 6, 0, 4, 1, 3, 1, 0, 6,
+ 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, 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, 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,
- 1, 1, 1, 3, 0, 4, 0, 6, 1, 3,
- 0, 4, 1, 3, 1, 1, 1, 1, 0, 4,
- 3, 3, 3
+ 0, 4, 3, 3, 3
};
@@ -4442,8 +4444,8 @@ namespace isc { namespace dhcp {
"\"require-client-classes\"", "\"test\"", "\"only-if-required\"",
"\"client-class\"", "\"reservations\"", "\"duid\"", "\"hw-address\"",
"\"circuit-id\"", "\"client-id\"", "\"hostname\"", "\"flex-id\"",
- "\"relay\"", "\"ip-address\"", "\"hooks-libraries\"", "\"library\"",
- "\"parameters\"", "\"expired-leases-processing\"",
+ "\"relay\"", "\"ip-address\"", "\"ip-addresses\"", "\"hooks-libraries\"",
+ "\"library\"", "\"parameters\"", "\"expired-leases-processing\"",
"\"reclaim-timer-wait-time\"", "\"flush-reclaimed-timer-wait-time\"",
"\"hold-reclaimed-time\"", "\"max-reclaim-leases\"",
"\"max-reclaim-time\"", "\"unwarned-reclaim-cycles\"",
@@ -4522,21 +4524,20 @@ namespace isc { namespace dhcp {
"not_empty_reservations_list", "reservation", "$@76", "sub_reservation",
"$@77", "reservation_params", "not_empty_reservation_params",
"reservation_param", "next_server", "$@78", "server_hostname", "$@79",
- "boot_file_name", "$@80", "ip_address", "$@81", "duid", "$@82",
- "hw_address", "$@83", "client_id_value", "$@84", "circuit_id_value",
- "$@85", "flex_id_value", "$@86", "hostname", "$@87",
- "reservation_client_classes", "$@88", "relay", "$@89", "relay_map",
- "$@90", "client_classes", "$@91", "client_classes_list",
- "client_class_entry", "$@92", "client_class_params",
- "not_empty_client_class_params", "client_class_param",
- "client_class_name", "client_class_test", "$@93", "only_if_required",
- "dhcp4o6_port", "control_socket", "$@94", "control_socket_params",
- "control_socket_param", "control_socket_type", "$@95",
- "control_socket_name", "$@96", "dhcp_ddns", "$@97", "sub_dhcp_ddns",
- "$@98", "dhcp_ddns_params", "dhcp_ddns_param", "enable_updates",
- "qualifying_suffix", "$@99", "server_ip", "$@100", "server_port",
- "sender_ip", "$@101", "sender_port", "max_queue_size", "ncr_protocol",
- "$@102", "ncr_protocol_value", "ncr_format", "$@103",
+ "boot_file_name", "$@80", "ip_address", "$@81", "ip_addresses", "$@82",
+ "duid", "$@83", "hw_address", "$@84", "client_id_value", "$@85",
+ "circuit_id_value", "$@86", "flex_id_value", "$@87", "hostname", "$@88",
+ "reservation_client_classes", "$@89", "relay", "$@90", "relay_map",
+ "client_classes", "$@91", "client_classes_list", "client_class_entry",
+ "$@92", "client_class_params", "not_empty_client_class_params",
+ "client_class_param", "client_class_name", "client_class_test", "$@93",
+ "only_if_required", "dhcp4o6_port", "control_socket", "$@94",
+ "control_socket_params", "control_socket_param", "control_socket_type",
+ "$@95", "control_socket_name", "$@96", "dhcp_ddns", "$@97",
+ "sub_dhcp_ddns", "$@98", "dhcp_ddns_params", "dhcp_ddns_param",
+ "enable_updates", "qualifying_suffix", "$@99", "server_ip", "$@100",
+ "server_port", "sender_ip", "$@101", "sender_port", "max_queue_size",
+ "ncr_protocol", "$@102", "ncr_protocol_value", "ncr_format", "$@103",
"always_include_fqdn", "override_no_update", "override_client_update",
"replace_client_name", "$@104", "replace_client_name_value",
"generated_prefix", "$@105", "dhcp6_json_object", "$@106",
@@ -4553,68 +4554,68 @@ namespace isc { namespace dhcp {
const unsigned short int
Dhcp4Parser::yyrline_[] =
{
- 0, 243, 243, 243, 244, 244, 245, 245, 246, 246,
- 247, 247, 248, 248, 249, 249, 250, 250, 251, 251,
- 252, 252, 253, 253, 254, 254, 255, 255, 263, 264,
- 265, 266, 267, 268, 269, 272, 277, 277, 288, 291,
- 292, 295, 299, 306, 306, 313, 314, 317, 321, 328,
- 328, 335, 336, 339, 343, 354, 364, 364, 380, 381,
- 385, 386, 387, 388, 389, 390, 393, 393, 408, 408,
- 417, 418, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, 443, 444, 445, 446, 447, 448, 449, 452,
- 457, 462, 467, 472, 477, 483, 483, 494, 495, 498,
- 499, 500, 501, 502, 503, 504, 507, 507, 516, 516,
- 526, 526, 533, 534, 537, 537, 544, 546, 550, 556,
- 556, 568, 568, 580, 580, 590, 591, 594, 595, 598,
- 598, 608, 609, 612, 613, 614, 615, 616, 617, 618,
- 619, 620, 621, 622, 623, 624, 625, 626, 627, 628,
- 629, 632, 632, 639, 640, 641, 642, 645, 645, 653,
- 653, 661, 661, 669, 674, 674, 682, 687, 692, 697,
- 702, 707, 712, 717, 717, 725, 725, 733, 738, 743,
- 743, 753, 754, 757, 758, 759, 760, 761, 764, 769,
- 774, 779, 784, 789, 789, 799, 800, 803, 804, 807,
- 807, 817, 817, 827, 828, 829, 832, 833, 836, 836,
- 844, 844, 852, 852, 863, 864, 867, 868, 869, 870,
- 871, 872, 875, 880, 885, 890, 895, 900, 908, 908,
- 921, 922, 925, 926, 933, 933, 959, 959, 970, 971,
- 975, 976, 977, 978, 979, 980, 981, 982, 983, 984,
- 985, 986, 987, 988, 989, 990, 991, 992, 993, 994,
- 995, 996, 997, 998, 999, 1002, 1002, 1010, 1010, 1018,
- 1018, 1026, 1026, 1034, 1034, 1042, 1042, 1050, 1050, 1058,
- 1058, 1068, 1068, 1075, 1076, 1077, 1080, 1085, 1092, 1092,
- 1103, 1104, 1108, 1109, 1112, 1112, 1120, 1121, 1124, 1125,
- 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
- 1136, 1137, 1138, 1139, 1140, 1141, 1148, 1148, 1161, 1161,
- 1170, 1171, 1174, 1175, 1180, 1180, 1195, 1195, 1209, 1210,
- 1213, 1214, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224,
- 1225, 1226, 1229, 1231, 1236, 1238, 1238, 1246, 1246, 1254,
- 1254, 1262, 1264, 1264, 1272, 1281, 1281, 1293, 1294, 1299,
- 1300, 1305, 1305, 1317, 1317, 1329, 1330, 1335, 1336, 1341,
- 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1352, 1354,
- 1354, 1362, 1364, 1366, 1371, 1379, 1379, 1391, 1392, 1395,
- 1396, 1399, 1399, 1409, 1409, 1419, 1420, 1423, 1424, 1425,
- 1426, 1427, 1428, 1429, 1432, 1432, 1440, 1440, 1465, 1465,
- 1495, 1495, 1505, 1506, 1509, 1510, 1513, 1513, 1522, 1522,
- 1531, 1532, 1535, 1536, 1540, 1541, 1542, 1543, 1544, 1545,
- 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1557,
- 1557, 1565, 1565, 1573, 1573, 1581, 1581, 1589, 1589, 1597,
- 1597, 1605, 1605, 1613, 1613, 1621, 1621, 1629, 1629, 1637,
- 1637, 1650, 1650, 1660, 1660, 1671, 1671, 1681, 1682, 1685,
- 1685, 1695, 1696, 1699, 1700, 1703, 1704, 1705, 1706, 1707,
- 1708, 1709, 1710, 1711, 1712, 1713, 1716, 1718, 1718, 1726,
- 1735, 1742, 1742, 1752, 1753, 1756, 1757, 1758, 1759, 1760,
- 1763, 1763, 1771, 1771, 1781, 1781, 1793, 1793, 1803, 1804,
- 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816,
- 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1826, 1831, 1831,
- 1839, 1839, 1847, 1852, 1852, 1860, 1865, 1870, 1870, 1878,
- 1879, 1882, 1882, 1890, 1895, 1900, 1905, 1905, 1913, 1916,
- 1919, 1922, 1925, 1931, 1931, 1941, 1941, 1948, 1948, 1955,
- 1955, 1967, 1967, 1977, 1977, 1988, 1989, 1993, 1997, 1997,
- 2009, 2010, 2014, 2014, 2022, 2023, 2026, 2027, 2028, 2029,
- 2030, 2031, 2032, 2035, 2040, 2040, 2048, 2048, 2058, 2059,
- 2062, 2062, 2070, 2071, 2074, 2075, 2076, 2077, 2080, 2080,
- 2088, 2093, 2098
+ 0, 244, 244, 244, 245, 245, 246, 246, 247, 247,
+ 248, 248, 249, 249, 250, 250, 251, 251, 252, 252,
+ 253, 253, 254, 254, 255, 255, 256, 256, 264, 265,
+ 266, 267, 268, 269, 270, 273, 278, 278, 289, 292,
+ 293, 296, 300, 307, 307, 314, 315, 318, 322, 329,
+ 329, 336, 337, 340, 344, 355, 365, 365, 381, 382,
+ 386, 387, 388, 389, 390, 391, 394, 394, 409, 409,
+ 418, 419, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, 443, 444, 445, 446, 447, 448, 449, 450, 453,
+ 458, 463, 468, 473, 478, 484, 484, 495, 496, 499,
+ 500, 501, 502, 503, 504, 505, 508, 508, 517, 517,
+ 527, 527, 534, 535, 538, 538, 545, 547, 551, 557,
+ 557, 569, 569, 581, 581, 591, 592, 595, 596, 599,
+ 599, 609, 610, 613, 614, 615, 616, 617, 618, 619,
+ 620, 621, 622, 623, 624, 625, 626, 627, 628, 629,
+ 630, 633, 633, 640, 641, 642, 643, 646, 646, 654,
+ 654, 662, 662, 670, 675, 675, 683, 688, 693, 698,
+ 703, 708, 713, 718, 718, 726, 726, 734, 739, 744,
+ 744, 754, 755, 758, 759, 760, 761, 762, 765, 770,
+ 775, 780, 785, 790, 790, 800, 801, 804, 805, 808,
+ 808, 818, 818, 828, 829, 830, 833, 834, 837, 837,
+ 845, 845, 853, 853, 864, 865, 868, 869, 870, 871,
+ 872, 873, 876, 881, 886, 891, 896, 901, 909, 909,
+ 922, 923, 926, 927, 934, 934, 960, 960, 971, 972,
+ 976, 977, 978, 979, 980, 981, 982, 983, 984, 985,
+ 986, 987, 988, 989, 990, 991, 992, 993, 994, 995,
+ 996, 997, 998, 999, 1000, 1003, 1003, 1011, 1011, 1019,
+ 1019, 1027, 1027, 1035, 1035, 1043, 1043, 1051, 1051, 1059,
+ 1059, 1069, 1069, 1076, 1077, 1078, 1081, 1086, 1093, 1093,
+ 1104, 1105, 1109, 1110, 1113, 1113, 1121, 1122, 1125, 1126,
+ 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136,
+ 1137, 1138, 1139, 1140, 1141, 1142, 1149, 1149, 1162, 1162,
+ 1171, 1172, 1175, 1176, 1181, 1181, 1196, 1196, 1210, 1211,
+ 1214, 1215, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225,
+ 1226, 1227, 1230, 1232, 1237, 1239, 1239, 1247, 1247, 1255,
+ 1255, 1263, 1265, 1265, 1273, 1282, 1282, 1294, 1295, 1300,
+ 1301, 1306, 1306, 1318, 1318, 1330, 1331, 1336, 1337, 1342,
+ 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1353, 1355,
+ 1355, 1363, 1365, 1367, 1372, 1380, 1380, 1392, 1393, 1396,
+ 1397, 1400, 1400, 1410, 1410, 1420, 1421, 1424, 1425, 1426,
+ 1427, 1428, 1429, 1430, 1433, 1433, 1441, 1441, 1466, 1466,
+ 1496, 1496, 1506, 1507, 1510, 1511, 1514, 1514, 1523, 1523,
+ 1532, 1533, 1536, 1537, 1541, 1542, 1543, 1544, 1545, 1546,
+ 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1558,
+ 1558, 1566, 1566, 1574, 1574, 1582, 1582, 1590, 1590, 1600,
+ 1600, 1608, 1608, 1616, 1616, 1624, 1624, 1632, 1632, 1640,
+ 1640, 1648, 1648, 1661, 1661, 1671, 1672, 1678, 1678, 1688,
+ 1689, 1692, 1692, 1702, 1703, 1706, 1707, 1710, 1711, 1712,
+ 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1723, 1725,
+ 1725, 1733, 1742, 1749, 1749, 1759, 1760, 1763, 1764, 1765,
+ 1766, 1767, 1770, 1770, 1778, 1778, 1788, 1788, 1800, 1800,
+ 1810, 1811, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821,
+ 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1833,
+ 1838, 1838, 1846, 1846, 1854, 1859, 1859, 1867, 1872, 1877,
+ 1877, 1885, 1886, 1889, 1889, 1897, 1902, 1907, 1912, 1912,
+ 1920, 1923, 1926, 1929, 1932, 1938, 1938, 1948, 1948, 1955,
+ 1955, 1962, 1962, 1974, 1974, 1984, 1984, 1995, 1996, 2000,
+ 2004, 2004, 2016, 2017, 2021, 2021, 2029, 2030, 2033, 2034,
+ 2035, 2036, 2037, 2038, 2039, 2042, 2047, 2047, 2055, 2055,
+ 2065, 2066, 2069, 2069, 2077, 2078, 2081, 2082, 2083, 2084,
+ 2087, 2087, 2095, 2100, 2105
};
// Print the state stack on the debug stream.
@@ -4649,8 +4650,8 @@ namespace isc { namespace dhcp {
#line 14 "dhcp4_parser.yy" // lalr1.cc:1167
} } // isc::dhcp
-#line 4653 "dhcp4_parser.cc" // lalr1.cc:1167
-#line 2103 "dhcp4_parser.yy" // lalr1.cc:1168
+#line 4654 "dhcp4_parser.cc" // lalr1.cc:1167
+#line 2110 "dhcp4_parser.yy" // lalr1.cc:1168
void
diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h
index f5e0a12b9e..c7e972a12b 100644
--- a/src/bin/dhcp4/dhcp4_parser.h
+++ b/src/bin/dhcp4/dhcp4_parser.h
@@ -441,70 +441,71 @@ namespace isc { namespace dhcp {
TOKEN_FLEX_ID = 348,
TOKEN_RELAY = 349,
TOKEN_IP_ADDRESS = 350,
- TOKEN_HOOKS_LIBRARIES = 351,
- TOKEN_LIBRARY = 352,
- TOKEN_PARAMETERS = 353,
- TOKEN_EXPIRED_LEASES_PROCESSING = 354,
- TOKEN_RECLAIM_TIMER_WAIT_TIME = 355,
- TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 356,
- TOKEN_HOLD_RECLAIMED_TIME = 357,
- TOKEN_MAX_RECLAIM_LEASES = 358,
- TOKEN_MAX_RECLAIM_TIME = 359,
- TOKEN_UNWARNED_RECLAIM_CYCLES = 360,
- TOKEN_DHCP4O6_PORT = 361,
- TOKEN_CONTROL_SOCKET = 362,
- TOKEN_SOCKET_TYPE = 363,
- TOKEN_SOCKET_NAME = 364,
- TOKEN_DHCP_DDNS = 365,
- TOKEN_ENABLE_UPDATES = 366,
- TOKEN_QUALIFYING_SUFFIX = 367,
- TOKEN_SERVER_IP = 368,
- TOKEN_SERVER_PORT = 369,
- TOKEN_SENDER_IP = 370,
- TOKEN_SENDER_PORT = 371,
- TOKEN_MAX_QUEUE_SIZE = 372,
- TOKEN_NCR_PROTOCOL = 373,
- TOKEN_NCR_FORMAT = 374,
- TOKEN_ALWAYS_INCLUDE_FQDN = 375,
- TOKEN_OVERRIDE_NO_UPDATE = 376,
- TOKEN_OVERRIDE_CLIENT_UPDATE = 377,
- TOKEN_REPLACE_CLIENT_NAME = 378,
- TOKEN_GENERATED_PREFIX = 379,
- TOKEN_TCP = 380,
- TOKEN_JSON = 381,
- TOKEN_WHEN_PRESENT = 382,
- TOKEN_NEVER = 383,
- TOKEN_ALWAYS = 384,
- TOKEN_WHEN_NOT_PRESENT = 385,
- TOKEN_LOGGING = 386,
- TOKEN_LOGGERS = 387,
- TOKEN_OUTPUT_OPTIONS = 388,
- TOKEN_OUTPUT = 389,
- TOKEN_DEBUGLEVEL = 390,
- TOKEN_SEVERITY = 391,
- TOKEN_FLUSH = 392,
- TOKEN_MAXSIZE = 393,
- TOKEN_MAXVER = 394,
- TOKEN_DHCP6 = 395,
- TOKEN_DHCPDDNS = 396,
- TOKEN_CONTROL_AGENT = 397,
- TOKEN_TOPLEVEL_JSON = 398,
- TOKEN_TOPLEVEL_DHCP4 = 399,
- TOKEN_SUB_DHCP4 = 400,
- TOKEN_SUB_INTERFACES4 = 401,
- TOKEN_SUB_SUBNET4 = 402,
- TOKEN_SUB_POOL4 = 403,
- TOKEN_SUB_RESERVATION = 404,
- TOKEN_SUB_OPTION_DEFS = 405,
- TOKEN_SUB_OPTION_DEF = 406,
- TOKEN_SUB_OPTION_DATA = 407,
- TOKEN_SUB_HOOKS_LIBRARY = 408,
- TOKEN_SUB_DHCP_DDNS = 409,
- TOKEN_SUB_LOGGING = 410,
- TOKEN_STRING = 411,
- TOKEN_INTEGER = 412,
- TOKEN_FLOAT = 413,
- TOKEN_BOOLEAN = 414
+ TOKEN_IP_ADDRESSES = 351,
+ TOKEN_HOOKS_LIBRARIES = 352,
+ TOKEN_LIBRARY = 353,
+ TOKEN_PARAMETERS = 354,
+ TOKEN_EXPIRED_LEASES_PROCESSING = 355,
+ TOKEN_RECLAIM_TIMER_WAIT_TIME = 356,
+ TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 357,
+ TOKEN_HOLD_RECLAIMED_TIME = 358,
+ TOKEN_MAX_RECLAIM_LEASES = 359,
+ TOKEN_MAX_RECLAIM_TIME = 360,
+ TOKEN_UNWARNED_RECLAIM_CYCLES = 361,
+ TOKEN_DHCP4O6_PORT = 362,
+ TOKEN_CONTROL_SOCKET = 363,
+ TOKEN_SOCKET_TYPE = 364,
+ TOKEN_SOCKET_NAME = 365,
+ TOKEN_DHCP_DDNS = 366,
+ TOKEN_ENABLE_UPDATES = 367,
+ TOKEN_QUALIFYING_SUFFIX = 368,
+ TOKEN_SERVER_IP = 369,
+ TOKEN_SERVER_PORT = 370,
+ TOKEN_SENDER_IP = 371,
+ TOKEN_SENDER_PORT = 372,
+ TOKEN_MAX_QUEUE_SIZE = 373,
+ TOKEN_NCR_PROTOCOL = 374,
+ TOKEN_NCR_FORMAT = 375,
+ TOKEN_ALWAYS_INCLUDE_FQDN = 376,
+ TOKEN_OVERRIDE_NO_UPDATE = 377,
+ TOKEN_OVERRIDE_CLIENT_UPDATE = 378,
+ TOKEN_REPLACE_CLIENT_NAME = 379,
+ TOKEN_GENERATED_PREFIX = 380,
+ TOKEN_TCP = 381,
+ TOKEN_JSON = 382,
+ TOKEN_WHEN_PRESENT = 383,
+ TOKEN_NEVER = 384,
+ TOKEN_ALWAYS = 385,
+ TOKEN_WHEN_NOT_PRESENT = 386,
+ TOKEN_LOGGING = 387,
+ TOKEN_LOGGERS = 388,
+ TOKEN_OUTPUT_OPTIONS = 389,
+ TOKEN_OUTPUT = 390,
+ TOKEN_DEBUGLEVEL = 391,
+ TOKEN_SEVERITY = 392,
+ TOKEN_FLUSH = 393,
+ TOKEN_MAXSIZE = 394,
+ TOKEN_MAXVER = 395,
+ TOKEN_DHCP6 = 396,
+ TOKEN_DHCPDDNS = 397,
+ TOKEN_CONTROL_AGENT = 398,
+ TOKEN_TOPLEVEL_JSON = 399,
+ TOKEN_TOPLEVEL_DHCP4 = 400,
+ TOKEN_SUB_DHCP4 = 401,
+ TOKEN_SUB_INTERFACES4 = 402,
+ TOKEN_SUB_SUBNET4 = 403,
+ TOKEN_SUB_POOL4 = 404,
+ TOKEN_SUB_RESERVATION = 405,
+ TOKEN_SUB_OPTION_DEFS = 406,
+ TOKEN_SUB_OPTION_DEF = 407,
+ TOKEN_SUB_OPTION_DATA = 408,
+ TOKEN_SUB_HOOKS_LIBRARY = 409,
+ TOKEN_SUB_DHCP_DDNS = 410,
+ TOKEN_SUB_LOGGING = 411,
+ TOKEN_STRING = 412,
+ TOKEN_INTEGER = 413,
+ TOKEN_FLOAT = 414,
+ TOKEN_BOOLEAN = 415
};
};
@@ -995,6 +996,10 @@ namespace isc { namespace dhcp {
symbol_type
make_IP_ADDRESS (const location_type& l);
+ static inline
+ symbol_type
+ make_IP_ADDRESSES (const location_type& l);
+
static inline
symbol_type
make_HOOKS_LIBRARIES (const location_type& l);
@@ -1456,12 +1461,12 @@ namespace isc { namespace dhcp {
enum
{
yyeof_ = 0,
- yylast_ = 933, ///< Last index in yytable_.
- yynnts_ = 352, ///< Number of nonterminal symbols.
+ yylast_ = 935, ///< Last index in yytable_.
+ yynnts_ = 353, ///< Number of nonterminal symbols.
yyfinal_ = 28, ///< Termination state number.
yyterror_ = 1,
yyerrcode_ = 256,
- yyntokens_ = 160 ///< Number of tokens.
+ yyntokens_ = 161 ///< Number of tokens.
};
@@ -1519,9 +1524,9 @@ namespace isc { namespace dhcp {
125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159
+ 155, 156, 157, 158, 159, 160
};
- const unsigned int user_token_number_max_ = 414;
+ const unsigned int user_token_number_max_ = 415;
const token_number_type undef_token_ = 2;
if (static_cast(t) <= yyeof_)
@@ -1554,30 +1559,30 @@ namespace isc { namespace dhcp {
{
switch (other.type_get ())
{
- case 175: // value
- case 179: // map_value
- case 217: // socket_type
- case 220: // outbound_interface_value
- case 236: // db_type
- case 320: // hr_mode
- case 467: // ncr_protocol_value
- case 475: // replace_client_name_value
+ case 176: // value
+ case 180: // map_value
+ case 218: // socket_type
+ case 221: // outbound_interface_value
+ case 237: // db_type
+ case 321: // hr_mode
+ case 469: // ncr_protocol_value
+ case 477: // replace_client_name_value
value.copy< ElementPtr > (other.value);
break;
- case 159: // "boolean"
+ case 160: // "boolean"
value.copy< bool > (other.value);
break;
- case 158: // "floating point"
+ case 159: // "floating point"
value.copy< double > (other.value);
break;
- case 157: // "integer"
+ case 158: // "integer"
value.copy< int64_t > (other.value);
break;
- case 156: // "constant string"
+ case 157: // "constant string"
value.copy< std::string > (other.value);
break;
@@ -1598,30 +1603,30 @@ namespace isc { namespace dhcp {
(void) v;
switch (this->type_get ())
{
- case 175: // value
- case 179: // map_value
- case 217: // socket_type
- case 220: // outbound_interface_value
- case 236: // db_type
- case 320: // hr_mode
- case 467: // ncr_protocol_value
- case 475: // replace_client_name_value
+ case 176: // value
+ case 180: // map_value
+ case 218: // socket_type
+ case 221: // outbound_interface_value
+ case 237: // db_type
+ case 321: // hr_mode
+ case 469: // ncr_protocol_value
+ case 477: // replace_client_name_value
value.copy< ElementPtr > (v);
break;
- case 159: // "boolean"
+ case 160: // "boolean"
value.copy< bool > (v);
break;
- case 158: // "floating point"
+ case 159: // "floating point"
value.copy< double > (v);
break;
- case 157: // "integer"
+ case 158: // "integer"
value.copy< int64_t > (v);
break;
- case 156: // "constant string"
+ case 157: // "constant string"
value.copy< std::string > (v);
break;
@@ -1701,30 +1706,30 @@ namespace isc { namespace dhcp {
// Type destructor.
switch (yytype)
{
- case 175: // value
- case 179: // map_value
- case 217: // socket_type
- case 220: // outbound_interface_value
- case 236: // db_type
- case 320: // hr_mode
- case 467: // ncr_protocol_value
- case 475: // replace_client_name_value
+ case 176: // value
+ case 180: // map_value
+ case 218: // socket_type
+ case 221: // outbound_interface_value
+ case 237: // db_type
+ case 321: // hr_mode
+ case 469: // ncr_protocol_value
+ case 477: // replace_client_name_value
value.template destroy< ElementPtr > ();
break;
- case 159: // "boolean"
+ case 160: // "boolean"
value.template destroy< bool > ();
break;
- case 158: // "floating point"
+ case 159: // "floating point"
value.template destroy< double > ();
break;
- case 157: // "integer"
+ case 158: // "integer"
value.template destroy< int64_t > ();
break;
- case 156: // "constant string"
+ case 157: // "constant string"
value.template destroy< std::string > ();
break;
@@ -1751,30 +1756,30 @@ namespace isc { namespace dhcp {
super_type::move(s);
switch (this->type_get ())
{
- case 175: // value
- case 179: // map_value
- case 217: // socket_type
- case 220: // outbound_interface_value
- case 236: // db_type
- case 320: // hr_mode
- case 467: // ncr_protocol_value
- case 475: // replace_client_name_value
+ case 176: // value
+ case 180: // map_value
+ case 218: // socket_type
+ case 221: // outbound_interface_value
+ case 237: // db_type
+ case 321: // hr_mode
+ case 469: // ncr_protocol_value
+ case 477: // replace_client_name_value
value.move< ElementPtr > (s.value);
break;
- case 159: // "boolean"
+ case 160: // "boolean"
value.move< bool > (s.value);
break;
- case 158: // "floating point"
+ case 159: // "floating point"
value.move< double > (s.value);
break;
- case 157: // "integer"
+ case 158: // "integer"
value.move< int64_t > (s.value);
break;
- case 156: // "constant string"
+ case 157: // "constant string"
value.move< std::string > (s.value);
break;
@@ -1848,7 +1853,8 @@ namespace isc { namespace dhcp {
375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415
};
return static_cast (yytoken_number_[type]);
}
@@ -2417,6 +2423,12 @@ namespace isc { namespace dhcp {
return symbol_type (token::TOKEN_IP_ADDRESS, l);
}
+ Dhcp4Parser::symbol_type
+ Dhcp4Parser::make_IP_ADDRESSES (const location_type& l)
+ {
+ return symbol_type (token::TOKEN_IP_ADDRESSES, l);
+ }
+
Dhcp4Parser::symbol_type
Dhcp4Parser::make_HOOKS_LIBRARIES (const location_type& l)
{
@@ -2804,7 +2816,7 @@ namespace isc { namespace dhcp {
#line 14 "dhcp4_parser.yy" // lalr1.cc:377
} } // isc::dhcp
-#line 2808 "dhcp4_parser.h" // lalr1.cc:377
+#line 2820 "dhcp4_parser.h" // lalr1.cc:377
diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy
index 8606eb1e6a..555cb965f3 100644
--- a/src/bin/dhcp4/dhcp4_parser.yy
+++ b/src/bin/dhcp4/dhcp4_parser.yy
@@ -145,6 +145,7 @@ using namespace std;
RELAY "relay"
IP_ADDRESS "ip-address"
+ IP_ADDRESSES "ip-addresses"
HOOKS_LIBRARIES "hooks-libraries"
LIBRARY "library"
@@ -1586,6 +1587,16 @@ ip_address: IP_ADDRESS {
ctx.leave();
};
+ip_addresses: IP_ADDRESSES {
+ ElementPtr l(new ListElement(ctx.loc2pos(@1)));
+ ctx.stack_.back()->set("ip-addresses", l);
+ ctx.stack_.push_back(l);
+ ctx.enter(ctx.NO_KEYWORD);
+} COLON list_strings {
+ ctx.stack_.pop_back();
+ ctx.leave();
+};
+
duid: DUID {
ctx.enter(ctx.NO_KEYWORD);
} COLON STRING {
@@ -1657,13 +1668,9 @@ relay: RELAY {
ctx.leave();
};
-relay_map: IP_ADDRESS {
- ctx.enter(ctx.NO_KEYWORD);
-} COLON STRING {
- ElementPtr ip(new StringElement($4, ctx.loc2pos(@4)));
- ctx.stack_.back()->set("ip-address", ip);
- ctx.leave();
-};
+relay_map: ip_address
+ | ip_addresses
+ ;
// --- end of relay definitions ------------------------------
diff --git a/src/bin/dhcp4/location.hh b/src/bin/dhcp4/location.hh
index 5bbfc189fc..7e23a2ccac 100644
--- a/src/bin/dhcp4/location.hh
+++ b/src/bin/dhcp4/location.hh
@@ -1,4 +1,3 @@
-// Generated 201804111443
// A Bison parser, made by GNU Bison 3.0.4.
// Locations for Bison parsers in C++
diff --git a/src/bin/dhcp4/position.hh b/src/bin/dhcp4/position.hh
index 478d2535d5..c60fabbdf8 100644
--- a/src/bin/dhcp4/position.hh
+++ b/src/bin/dhcp4/position.hh
@@ -1,4 +1,3 @@
-// Generated 201804111443
// A Bison parser, made by GNU Bison 3.0.4.
// Positions for Bison parsers in C++
diff --git a/src/bin/dhcp4/stack.hh b/src/bin/dhcp4/stack.hh
index ca204fb6e9..3dd2a2a393 100644
--- a/src/bin/dhcp4/stack.hh
+++ b/src/bin/dhcp4/stack.hh
@@ -1,4 +1,3 @@
-// Generated 201804111443
// A Bison parser, made by GNU Bison 3.0.4.
// Stack handling for Bison parsers in C++
diff --git a/src/bin/dhcp4/tests/config_parser_unittest.cc b/src/bin/dhcp4/tests/config_parser_unittest.cc
index 61fc5ffbfe..e1e291e815 100644
--- a/src/bin/dhcp4/tests/config_parser_unittest.cc
+++ b/src/bin/dhcp4/tests/config_parser_unittest.cc
@@ -260,7 +260,7 @@ public:
void checkResult(ConstElementPtr status, int expected_code) {
ASSERT_TRUE(status);
comment_ = parseAnswer(rcode_, status);
- EXPECT_EQ(expected_code, rcode_);
+ EXPECT_EQ(expected_code, rcode_) << "error text:" << comment_->stringValue();
}
/// @brief Convenience method for running configuration
@@ -1377,7 +1377,7 @@ TEST_F(Dhcp4ParserTest, nextServerOverride) {
"\"renew-timer\": 1000, "
"\"next-server\": \"192.0.0.1\", "
"\"server-hostname\": \"nohost\","
- "\"boot-file-name\": \"nofile\","
+ "\"boot-file-name\": \"nofile\","
"\"subnet4\": [ { "
" \"pools\": [ { \"pool\": \"192.0.2.1 - 192.0.2.100\" } ],"
" \"next-server\": \"1.2.3.4\", "
@@ -4089,9 +4089,53 @@ TEST_F(Dhcp4ParserTest, subnetRelayInfo) {
Subnet4Ptr subnet = CfgMgr::instance().getStagingCfg()->
getCfgSubnets4()->selectSubnet(IOAddress("192.0.2.200"));
ASSERT_TRUE(subnet);
- EXPECT_EQ("192.0.2.123", subnet->getRelayInfo().addr_.toText());
+
+ EXPECT_TRUE(subnet->hasRelays());
+ EXPECT_TRUE(subnet->hasRelayAddress(IOAddress("192.0.2.123")));
}
+// This test checks if it is possible to specify a list of relays
+TEST_F(Dhcp4ParserTest, subnetRelayInfoList) {
+
+ ConstElementPtr status;
+
+ // A config with relay information.
+ string config = "{ " + genIfaceConfig() + "," +
+ "\"rebind-timer\": 2000, "
+ "\"renew-timer\": 1000, "
+ "\"subnet4\": [ { "
+ " \"pools\": [ { \"pool\": \"192.0.2.1 - 192.0.2.100\" } ],"
+ " \"renew-timer\": 1, "
+ " \"rebind-timer\": 2, "
+ " \"valid-lifetime\": 4,"
+ " \"relay\": { "
+ " \"ip-addresses\": [ \"192.0.3.123\", \"192.0.3.124\" ]"
+ " },"
+ " \"subnet\": \"192.0.2.0/24\" } ],"
+ "\"valid-lifetime\": 4000 }";
+
+ ConstElementPtr json;
+ ASSERT_NO_THROW(json = parseDHCP4(config));
+ extractConfig(config);
+
+ EXPECT_NO_THROW(status = configureDhcp4Server(*srv_, json));
+
+ // returned value should be 0 (configuration success)
+ checkResult(status, 0);
+
+ SubnetSelector selector;
+ selector.giaddr_ = IOAddress("192.0.2.200");
+
+ Subnet4Ptr subnet = CfgMgr::instance().getStagingCfg()->
+ getCfgSubnets4()->selectSubnet(selector);
+ ASSERT_TRUE(subnet);
+
+ EXPECT_TRUE(subnet->hasRelays());
+ EXPECT_TRUE(subnet->hasRelayAddress(IOAddress("192.0.3.123")));
+ EXPECT_TRUE(subnet->hasRelayAddress(IOAddress("192.0.3.124")));
+}
+
+
// Goal of this test is to verify that multiple subnets can be configured
// with defined client classes.
TEST_F(Dhcp4ParserTest, classifySubnets) {
@@ -5652,7 +5696,7 @@ TEST_F(Dhcp4ParserTest, sharedNetworksDerive) {
EXPECT_EQ(IOAddress("1.2.3.4"), s->getSiaddr());
EXPECT_EQ("foo", s->getSname());
EXPECT_EQ("bar", s->getFilename());
- EXPECT_EQ(IOAddress("5.6.7.8"), s->getRelayInfo().addr_);
+ EXPECT_TRUE(s->hasRelayAddress(IOAddress("5.6.7.8")));
EXPECT_EQ(Network::HR_OUT_OF_POOL, s->getHostReservationMode());
// For the second subnet, the renew-timer should be 100, because it
@@ -5667,7 +5711,7 @@ TEST_F(Dhcp4ParserTest, sharedNetworksDerive) {
EXPECT_EQ(IOAddress("11.22.33.44"), s->getSiaddr());
EXPECT_EQ("some-name.example.org", s->getSname());
EXPECT_EQ("bootfile.efi", s->getFilename());
- EXPECT_EQ(IOAddress("55.66.77.88"), s->getRelayInfo().addr_);
+ EXPECT_TRUE(s->hasRelayAddress(IOAddress("55.66.77.88")));
EXPECT_EQ(Network::HR_DISABLED, s->getHostReservationMode());
// Ok, now check the second shared subnet.
@@ -5686,7 +5730,7 @@ TEST_F(Dhcp4ParserTest, sharedNetworksDerive) {
EXPECT_EQ(IOAddress("0.0.0.0"), s->getSiaddr());
EXPECT_TRUE(s->getSname().empty());
EXPECT_TRUE(s->getFilename().empty());
- EXPECT_EQ(IOAddress("0.0.0.0"), s->getRelayInfo().addr_);
+ EXPECT_FALSE(s->hasRelays());
EXPECT_EQ(Network::HR_ALL, s->getHostReservationMode());
}
diff --git a/src/bin/dhcp4/tests/get_config_unittest.cc b/src/bin/dhcp4/tests/get_config_unittest.cc
index 6cca3383df..064d61909d 100644
--- a/src/bin/dhcp4/tests/get_config_unittest.cc
+++ b/src/bin/dhcp4/tests/get_config_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2018 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2017-2018 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
@@ -1196,6 +1196,32 @@ const char* EXTRACTED_CONFIGS[] = {
" \"renew-timer\": 1000,\n"
" \"subnet4\": [\n"
" {\n"
+" \"pools\": [\n"
+" {\n"
+" \"pool\": \"192.0.2.1 - 192.0.2.100\"\n"
+" }\n"
+" ],\n"
+" \"rebind-timer\": 2,\n"
+" \"relay\": {\n"
+" \"ip-addresses\": [ \"192.0.2.123\", \"192.0.2.124\" ]\n"
+" },\n"
+" \"renew-timer\": 1,\n"
+" \"subnet\": \"192.0.2.0/24\",\n"
+" \"valid-lifetime\": 4\n"
+" }\n"
+" ],\n"
+" \"valid-lifetime\": 4000\n"
+" }\n",
+ // CONFIGURATION 42
+"{\n"
+" \"interfaces-config\": {\n"
+" \"interfaces\": [ \"*\" ],\n"
+" \"re-detect\": false\n"
+" },\n"
+" \"rebind-timer\": 2000,\n"
+" \"renew-timer\": 1000,\n"
+" \"subnet4\": [\n"
+" {\n"
" \"client-class\": \"alpha\",\n"
" \"pools\": [\n"
" {\n"
@@ -1233,7 +1259,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 42
+ // CONFIGURATION 43
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1265,7 +1291,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 43
+ // CONFIGURATION 44
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1364,7 +1390,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 44
+ // CONFIGURATION 45
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1406,7 +1432,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 45
+ // CONFIGURATION 46
"{\n"
" \"rebind-timer\": 2000,\n"
" \"renew-timer\": 1000,\n"
@@ -1448,14 +1474,6 @@ const char* EXTRACTED_CONFIGS[] = {
" }\n"
" ],\n"
" \"valid-lifetime\": 4000\n"
-" }\n",
- // CONFIGURATION 46
-"{\n"
-" \"interfaces-config\": {\n"
-" \"interfaces\": [ \"*\" ],\n"
-" \"re-detect\": false\n"
-" },\n"
-" \"subnet4\": [ ]\n"
" }\n",
// CONFIGURATION 47
"{\n"
@@ -1467,7 +1485,6 @@ const char* EXTRACTED_CONFIGS[] = {
" }\n",
// CONFIGURATION 48
"{\n"
-" \"decline-probation-period\": 12345,\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
" \"re-detect\": false\n"
@@ -1476,6 +1493,15 @@ const char* EXTRACTED_CONFIGS[] = {
" }\n",
// CONFIGURATION 49
"{\n"
+" \"decline-probation-period\": 12345,\n"
+" \"interfaces-config\": {\n"
+" \"interfaces\": [ \"*\" ],\n"
+" \"re-detect\": false\n"
+" },\n"
+" \"subnet4\": [ ]\n"
+" }\n",
+ // CONFIGURATION 50
+"{\n"
" \"expired-leases-processing\": {\n"
" \"flush-reclaimed-timer-wait-time\": 35,\n"
" \"hold-reclaimed-time\": 1800,\n"
@@ -1489,26 +1515,6 @@ const char* EXTRACTED_CONFIGS[] = {
" \"re-detect\": false\n"
" },\n"
" \"subnet4\": [ ]\n"
-" }\n",
- // CONFIGURATION 50
-"{\n"
-" \"interfaces-config\": {\n"
-" \"interfaces\": [ \"*\" ],\n"
-" \"re-detect\": false\n"
-" },\n"
-" \"rebind-timer\": 2000,\n"
-" \"renew-timer\": 1000,\n"
-" \"subnet4\": [\n"
-" {\n"
-" \"pools\": [\n"
-" {\n"
-" \"pool\": \"192.0.2.1 - 192.0.2.100\"\n"
-" }\n"
-" ],\n"
-" \"subnet\": \"192.0.2.0/24\"\n"
-" }\n"
-" ],\n"
-" \"valid-lifetime\": 4000\n"
" }\n",
// CONFIGURATION 51
"{\n"
@@ -1520,7 +1526,6 @@ const char* EXTRACTED_CONFIGS[] = {
" \"renew-timer\": 1000,\n"
" \"subnet4\": [\n"
" {\n"
-" \"4o6-subnet\": \"2001:db8::123/45\",\n"
" \"pools\": [\n"
" {\n"
" \"pool\": \"192.0.2.1 - 192.0.2.100\"\n"
@@ -1541,7 +1546,7 @@ const char* EXTRACTED_CONFIGS[] = {
" \"renew-timer\": 1000,\n"
" \"subnet4\": [\n"
" {\n"
-" \"4o6-interface\": \"ethX\",\n"
+" \"4o6-subnet\": \"2001:db8::123/45\",\n"
" \"pools\": [\n"
" {\n"
" \"pool\": \"192.0.2.1 - 192.0.2.100\"\n"
@@ -1563,7 +1568,6 @@ const char* EXTRACTED_CONFIGS[] = {
" \"subnet4\": [\n"
" {\n"
" \"4o6-interface\": \"ethX\",\n"
-" \"4o6-subnet\": \"2001:db8::543/21\",\n"
" \"pools\": [\n"
" {\n"
" \"pool\": \"192.0.2.1 - 192.0.2.100\"\n"
@@ -1584,7 +1588,8 @@ const char* EXTRACTED_CONFIGS[] = {
" \"renew-timer\": 1000,\n"
" \"subnet4\": [\n"
" {\n"
-" \"4o6-interface-id\": \"vlan123\",\n"
+" \"4o6-interface\": \"ethX\",\n"
+" \"4o6-subnet\": \"2001:db8::543/21\",\n"
" \"pools\": [\n"
" {\n"
" \"pool\": \"192.0.2.1 - 192.0.2.100\"\n"
@@ -1597,6 +1602,27 @@ const char* EXTRACTED_CONFIGS[] = {
" }\n",
// CONFIGURATION 55
"{\n"
+" \"interfaces-config\": {\n"
+" \"interfaces\": [ \"*\" ],\n"
+" \"re-detect\": false\n"
+" },\n"
+" \"rebind-timer\": 2000,\n"
+" \"renew-timer\": 1000,\n"
+" \"subnet4\": [\n"
+" {\n"
+" \"4o6-interface-id\": \"vlan123\",\n"
+" \"pools\": [\n"
+" {\n"
+" \"pool\": \"192.0.2.1 - 192.0.2.100\"\n"
+" }\n"
+" ],\n"
+" \"subnet\": \"192.0.2.0/24\"\n"
+" }\n"
+" ],\n"
+" \"valid-lifetime\": 4000\n"
+" }\n",
+ // CONFIGURATION 56
+"{\n"
" \"client-classes\": [\n"
" {\n"
" \"name\": \"one\"\n"
@@ -1626,7 +1652,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 56
+ // CONFIGURATION 57
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1646,7 +1672,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 57
+ // CONFIGURATION 58
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1667,7 +1693,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 58
+ // CONFIGURATION 59
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1692,7 +1718,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 59
+ // CONFIGURATION 60
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1717,7 +1743,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 60
+ // CONFIGURATION 61
"{\n"
" \"hosts-databases\": [\n"
" {\n"
@@ -1741,7 +1767,7 @@ const char* EXTRACTED_CONFIGS[] = {
" \"renew-timer\": 1000,\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 61
+ // CONFIGURATION 62
"{\n"
" \"comment\": \"A DHCPv4 server\",\n"
" \"client-classes\": [\n"
@@ -1932,7 +1958,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 900,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2002,7 +2028,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 1800,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2072,7 +2098,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2142,7 +2168,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2168,7 +2194,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2194,7 +2220,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2220,7 +2246,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2290,7 +2316,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2316,7 +2342,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2342,7 +2368,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2368,7 +2394,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2438,7 +2464,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2508,7 +2534,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2578,7 +2604,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2648,7 +2674,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2718,7 +2744,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2788,7 +2814,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2814,7 +2840,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2884,7 +2910,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2910,7 +2936,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2980,7 +3006,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1,\n"
" \"reservation-mode\": \"all\",\n"
@@ -3054,7 +3080,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -3084,7 +3110,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -3154,7 +3180,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -3621,7 +3647,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -3708,7 +3734,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -3805,7 +3831,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4007,7 +4033,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4103,7 +4129,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4182,7 +4208,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4217,7 +4243,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4304,7 +4330,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4396,7 +4422,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4483,7 +4509,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4676,7 +4702,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4761,7 +4787,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4850,7 +4876,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5006,7 +5032,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5076,7 +5102,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2,\n"
" \"relay\": {\n"
-" \"ip-address\": \"192.0.2.123\"\n"
+" \"ip-addresses\": [ \"192.0.2.123\" ]\n"
" },\n"
" \"renew-timer\": 1,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5134,6 +5160,76 @@ const char* UNPARSED_CONFIGS[] = {
" \"4o6-interface-id\": \"\",\n"
" \"4o6-subnet\": \"\",\n"
" \"boot-file-name\": \"\",\n"
+" \"id\": 1,\n"
+" \"match-client-id\": true,\n"
+" \"next-server\": \"0.0.0.0\",\n"
+" \"option-data\": [ ],\n"
+" \"pools\": [\n"
+" {\n"
+" \"option-data\": [ ],\n"
+" \"pool\": \"192.0.2.1-192.0.2.100\"\n"
+" }\n"
+" ],\n"
+" \"rebind-timer\": 2,\n"
+" \"relay\": {\n"
+" \"ip-addresses\": [ \"192.0.2.123\", \"192.0.2.124\" ]\n"
+" },\n"
+" \"renew-timer\": 1,\n"
+" \"reservation-mode\": \"all\",\n"
+" \"reservations\": [ ],\n"
+" \"server-hostname\": \"\",\n"
+" \"subnet\": \"192.0.2.0/24\",\n"
+" \"valid-lifetime\": 4\n"
+" }\n"
+" ]\n"
+" }\n",
+ // CONFIGURATION 42
+"{\n"
+" \"decline-probation-period\": 86400,\n"
+" \"dhcp-ddns\": {\n"
+" \"always-include-fqdn\": false,\n"
+" \"enable-updates\": false,\n"
+" \"generated-prefix\": \"myhost\",\n"
+" \"max-queue-size\": 1024,\n"
+" \"ncr-format\": \"JSON\",\n"
+" \"ncr-protocol\": \"UDP\",\n"
+" \"override-client-update\": false,\n"
+" \"override-no-update\": false,\n"
+" \"qualifying-suffix\": \"\",\n"
+" \"replace-client-name\": \"never\",\n"
+" \"sender-ip\": \"0.0.0.0\",\n"
+" \"sender-port\": 0,\n"
+" \"server-ip\": \"127.0.0.1\",\n"
+" \"server-port\": 53001\n"
+" },\n"
+" \"dhcp4o6-port\": 0,\n"
+" \"echo-client-id\": true,\n"
+" \"expired-leases-processing\": {\n"
+" \"flush-reclaimed-timer-wait-time\": 25,\n"
+" \"hold-reclaimed-time\": 3600,\n"
+" \"max-reclaim-leases\": 100,\n"
+" \"max-reclaim-time\": 250,\n"
+" \"reclaim-timer-wait-time\": 10,\n"
+" \"unwarned-reclaim-cycles\": 5\n"
+" },\n"
+" \"hooks-libraries\": [ ],\n"
+" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
+" \"interfaces-config\": {\n"
+" \"interfaces\": [ \"*\" ],\n"
+" \"re-detect\": false\n"
+" },\n"
+" \"lease-database\": {\n"
+" \"type\": \"memfile\"\n"
+" },\n"
+" \"option-data\": [ ],\n"
+" \"option-def\": [ ],\n"
+" \"shared-networks\": [ ],\n"
+" \"subnet4\": [\n"
+" {\n"
+" \"4o6-interface\": \"\",\n"
+" \"4o6-interface-id\": \"\",\n"
+" \"4o6-subnet\": \"\",\n"
+" \"boot-file-name\": \"\",\n"
" \"client-class\": \"alpha\",\n"
" \"id\": 1,\n"
" \"match-client-id\": true,\n"
@@ -5147,7 +5243,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5174,7 +5270,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5201,7 +5297,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5227,7 +5323,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5238,7 +5334,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 42
+ // CONFIGURATION 43
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -5312,7 +5408,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5323,7 +5419,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 43
+ // CONFIGURATION 44
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -5382,7 +5478,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5408,7 +5504,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5489,7 +5585,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5548,7 +5644,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 44
+ // CONFIGURATION 45
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -5617,7 +5713,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5648,7 +5744,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 45
+ // CONFIGURATION 46
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -5707,7 +5803,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5733,7 +5829,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"out-of-pool\",\n"
@@ -5759,7 +5855,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"disabled\",\n"
@@ -5785,7 +5881,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5795,49 +5891,6 @@ const char* UNPARSED_CONFIGS[] = {
" \"valid-lifetime\": 4000\n"
" }\n"
" ]\n"
-" }\n",
- // CONFIGURATION 46
-"{\n"
-" \"decline-probation-period\": 86400,\n"
-" \"dhcp-ddns\": {\n"
-" \"always-include-fqdn\": false,\n"
-" \"enable-updates\": false,\n"
-" \"generated-prefix\": \"myhost\",\n"
-" \"max-queue-size\": 1024,\n"
-" \"ncr-format\": \"JSON\",\n"
-" \"ncr-protocol\": \"UDP\",\n"
-" \"override-client-update\": false,\n"
-" \"override-no-update\": false,\n"
-" \"qualifying-suffix\": \"\",\n"
-" \"replace-client-name\": \"never\",\n"
-" \"sender-ip\": \"0.0.0.0\",\n"
-" \"sender-port\": 0,\n"
-" \"server-ip\": \"127.0.0.1\",\n"
-" \"server-port\": 53001\n"
-" },\n"
-" \"dhcp4o6-port\": 0,\n"
-" \"echo-client-id\": true,\n"
-" \"expired-leases-processing\": {\n"
-" \"flush-reclaimed-timer-wait-time\": 25,\n"
-" \"hold-reclaimed-time\": 3600,\n"
-" \"max-reclaim-leases\": 100,\n"
-" \"max-reclaim-time\": 250,\n"
-" \"reclaim-timer-wait-time\": 10,\n"
-" \"unwarned-reclaim-cycles\": 5\n"
-" },\n"
-" \"hooks-libraries\": [ ],\n"
-" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
-" \"interfaces-config\": {\n"
-" \"interfaces\": [ \"*\" ],\n"
-" \"re-detect\": false\n"
-" },\n"
-" \"lease-database\": {\n"
-" \"type\": \"memfile\"\n"
-" },\n"
-" \"option-data\": [ ],\n"
-" \"option-def\": [ ],\n"
-" \"shared-networks\": [ ],\n"
-" \"subnet4\": [ ]\n"
" }\n",
// CONFIGURATION 47
"{\n"
@@ -5884,7 +5937,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n",
// CONFIGURATION 48
"{\n"
-" \"decline-probation-period\": 12345,\n"
+" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
" \"always-include-fqdn\": false,\n"
" \"enable-updates\": false,\n"
@@ -5927,6 +5980,49 @@ const char* UNPARSED_CONFIGS[] = {
" }\n",
// CONFIGURATION 49
"{\n"
+" \"decline-probation-period\": 12345,\n"
+" \"dhcp-ddns\": {\n"
+" \"always-include-fqdn\": false,\n"
+" \"enable-updates\": false,\n"
+" \"generated-prefix\": \"myhost\",\n"
+" \"max-queue-size\": 1024,\n"
+" \"ncr-format\": \"JSON\",\n"
+" \"ncr-protocol\": \"UDP\",\n"
+" \"override-client-update\": false,\n"
+" \"override-no-update\": false,\n"
+" \"qualifying-suffix\": \"\",\n"
+" \"replace-client-name\": \"never\",\n"
+" \"sender-ip\": \"0.0.0.0\",\n"
+" \"sender-port\": 0,\n"
+" \"server-ip\": \"127.0.0.1\",\n"
+" \"server-port\": 53001\n"
+" },\n"
+" \"dhcp4o6-port\": 0,\n"
+" \"echo-client-id\": true,\n"
+" \"expired-leases-processing\": {\n"
+" \"flush-reclaimed-timer-wait-time\": 25,\n"
+" \"hold-reclaimed-time\": 3600,\n"
+" \"max-reclaim-leases\": 100,\n"
+" \"max-reclaim-time\": 250,\n"
+" \"reclaim-timer-wait-time\": 10,\n"
+" \"unwarned-reclaim-cycles\": 5\n"
+" },\n"
+" \"hooks-libraries\": [ ],\n"
+" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
+" \"interfaces-config\": {\n"
+" \"interfaces\": [ \"*\" ],\n"
+" \"re-detect\": false\n"
+" },\n"
+" \"lease-database\": {\n"
+" \"type\": \"memfile\"\n"
+" },\n"
+" \"option-data\": [ ],\n"
+" \"option-def\": [ ],\n"
+" \"shared-networks\": [ ],\n"
+" \"subnet4\": [ ]\n"
+" }\n",
+ // CONFIGURATION 50
+"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
" \"always-include-fqdn\": false,\n"
@@ -5968,7 +6064,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"shared-networks\": [ ],\n"
" \"subnet4\": [ ]\n"
" }\n",
- // CONFIGURATION 50
+ // CONFIGURATION 51
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -6027,7 +6123,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6038,7 +6134,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 51
+ // CONFIGURATION 52
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -6097,7 +6193,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6108,7 +6204,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 52
+ // CONFIGURATION 53
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -6167,7 +6263,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6178,7 +6274,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 53
+ // CONFIGURATION 54
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -6237,7 +6333,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6248,7 +6344,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 54
+ // CONFIGURATION 55
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -6307,7 +6403,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6318,7 +6414,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 55
+ // CONFIGURATION 56
"{\n"
" \"client-classes\": [\n"
" {\n"
@@ -6403,77 +6499,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
-" },\n"
-" \"renew-timer\": 1000,\n"
-" \"reservation-mode\": \"all\",\n"
-" \"reservations\": [ ],\n"
-" \"server-hostname\": \"\",\n"
-" \"subnet\": \"192.0.2.0/24\",\n"
-" \"valid-lifetime\": 4000\n"
-" }\n"
-" ]\n"
-" }\n",
- // CONFIGURATION 56
-"{\n"
-" \"decline-probation-period\": 86400,\n"
-" \"dhcp-ddns\": {\n"
-" \"always-include-fqdn\": false,\n"
-" \"enable-updates\": false,\n"
-" \"generated-prefix\": \"myhost\",\n"
-" \"max-queue-size\": 1024,\n"
-" \"ncr-format\": \"JSON\",\n"
-" \"ncr-protocol\": \"UDP\",\n"
-" \"override-client-update\": false,\n"
-" \"override-no-update\": false,\n"
-" \"qualifying-suffix\": \"\",\n"
-" \"replace-client-name\": \"never\",\n"
-" \"sender-ip\": \"0.0.0.0\",\n"
-" \"sender-port\": 0,\n"
-" \"server-ip\": \"127.0.0.1\",\n"
-" \"server-port\": 53001\n"
-" },\n"
-" \"dhcp4o6-port\": 0,\n"
-" \"echo-client-id\": true,\n"
-" \"expired-leases-processing\": {\n"
-" \"flush-reclaimed-timer-wait-time\": 25,\n"
-" \"hold-reclaimed-time\": 3600,\n"
-" \"max-reclaim-leases\": 100,\n"
-" \"max-reclaim-time\": 250,\n"
-" \"reclaim-timer-wait-time\": 10,\n"
-" \"unwarned-reclaim-cycles\": 5\n"
-" },\n"
-" \"hooks-libraries\": [ ],\n"
-" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
-" \"interfaces-config\": {\n"
-" \"interfaces\": [ \"*\" ],\n"
-" \"re-detect\": false\n"
-" },\n"
-" \"lease-database\": {\n"
-" \"type\": \"memfile\"\n"
-" },\n"
-" \"option-data\": [ ],\n"
-" \"option-def\": [ ],\n"
-" \"shared-networks\": [ ],\n"
-" \"subnet4\": [\n"
-" {\n"
-" \"4o6-interface\": \"\",\n"
-" \"4o6-interface-id\": \"\",\n"
-" \"4o6-subnet\": \"\",\n"
-" \"boot-file-name\": \"\",\n"
-" \"id\": 1,\n"
-" \"match-client-id\": true,\n"
-" \"next-server\": \"0.0.0.0\",\n"
-" \"option-data\": [ ],\n"
-" \"pools\": [\n"
-" {\n"
-" \"option-data\": [ ],\n"
-" \"pool\": \"192.0.2.0/28\"\n"
-" }\n"
-" ],\n"
-" \"rebind-timer\": 2000,\n"
-" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6538,13 +6564,12 @@ const char* UNPARSED_CONFIGS[] = {
" \"pools\": [\n"
" {\n"
" \"option-data\": [ ],\n"
-" \"pool\": \"192.0.2.0/28\",\n"
-" \"user-context\": { }\n"
+" \"pool\": \"192.0.2.0/28\"\n"
" }\n"
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6610,16 +6635,12 @@ const char* UNPARSED_CONFIGS[] = {
" {\n"
" \"option-data\": [ ],\n"
" \"pool\": \"192.0.2.0/28\",\n"
-" \"user-context\": {\n"
-" \"bool-param\": true,\n"
-" \"integer-param\": 42,\n"
-" \"string-param\": \"Sagittarius\"\n"
-" }\n"
+" \"user-context\": { }\n"
" }\n"
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6694,7 +6715,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6736,6 +6757,81 @@ const char* UNPARSED_CONFIGS[] = {
" },\n"
" \"hooks-libraries\": [ ],\n"
" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
+" \"interfaces-config\": {\n"
+" \"interfaces\": [ \"*\" ],\n"
+" \"re-detect\": false\n"
+" },\n"
+" \"lease-database\": {\n"
+" \"type\": \"memfile\"\n"
+" },\n"
+" \"option-data\": [ ],\n"
+" \"option-def\": [ ],\n"
+" \"shared-networks\": [ ],\n"
+" \"subnet4\": [\n"
+" {\n"
+" \"4o6-interface\": \"\",\n"
+" \"4o6-interface-id\": \"\",\n"
+" \"4o6-subnet\": \"\",\n"
+" \"boot-file-name\": \"\",\n"
+" \"id\": 1,\n"
+" \"match-client-id\": true,\n"
+" \"next-server\": \"0.0.0.0\",\n"
+" \"option-data\": [ ],\n"
+" \"pools\": [\n"
+" {\n"
+" \"option-data\": [ ],\n"
+" \"pool\": \"192.0.2.0/28\",\n"
+" \"user-context\": {\n"
+" \"bool-param\": true,\n"
+" \"integer-param\": 42,\n"
+" \"string-param\": \"Sagittarius\"\n"
+" }\n"
+" }\n"
+" ],\n"
+" \"rebind-timer\": 2000,\n"
+" \"relay\": {\n"
+" \"ip-addresses\": [ ]\n"
+" },\n"
+" \"renew-timer\": 1000,\n"
+" \"reservation-mode\": \"all\",\n"
+" \"reservations\": [ ],\n"
+" \"server-hostname\": \"\",\n"
+" \"subnet\": \"192.0.2.0/24\",\n"
+" \"valid-lifetime\": 4000\n"
+" }\n"
+" ]\n"
+" }\n",
+ // CONFIGURATION 61
+"{\n"
+" \"decline-probation-period\": 86400,\n"
+" \"dhcp-ddns\": {\n"
+" \"always-include-fqdn\": false,\n"
+" \"enable-updates\": false,\n"
+" \"generated-prefix\": \"myhost\",\n"
+" \"max-queue-size\": 1024,\n"
+" \"ncr-format\": \"JSON\",\n"
+" \"ncr-protocol\": \"UDP\",\n"
+" \"override-client-update\": false,\n"
+" \"override-no-update\": false,\n"
+" \"qualifying-suffix\": \"\",\n"
+" \"replace-client-name\": \"never\",\n"
+" \"sender-ip\": \"0.0.0.0\",\n"
+" \"sender-port\": 0,\n"
+" \"server-ip\": \"127.0.0.1\",\n"
+" \"server-port\": 53001\n"
+" },\n"
+" \"dhcp4o6-port\": 0,\n"
+" \"echo-client-id\": true,\n"
+" \"expired-leases-processing\": {\n"
+" \"flush-reclaimed-timer-wait-time\": 25,\n"
+" \"hold-reclaimed-time\": 3600,\n"
+" \"max-reclaim-leases\": 100,\n"
+" \"max-reclaim-time\": 250,\n"
+" \"reclaim-timer-wait-time\": 10,\n"
+" \"unwarned-reclaim-cycles\": 5\n"
+" },\n"
+" \"hooks-libraries\": [ ],\n"
+" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\", \"circuit-id\", \"client-id\" ],\n"
" \"hosts-databases\": [\n"
" {\n"
" \"name\": \"keatest1\",\n"
@@ -6762,7 +6858,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"shared-networks\": [ ],\n"
" \"subnet4\": [ ]\n"
" }\n",
- // CONFIGURATION 61
+ // CONFIGURATION 62
"{\n"
" \"comment\": \"A DHCPv4 server\",\n"
" \"client-classes\": [\n"
@@ -6871,7 +6967,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"option-data\": [ ],\n"
" \"rebind-timer\": 0,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 0,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6895,7 +6991,7 @@ const char* UNPARSED_CONFIGS[] = {
" ],\n"
" \"rebind-timer\": 1800,\n"
" \"relay\": {\n"
-" \"ip-address\": \"0.0.0.0\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 900,\n"
" \"reservation-mode\": \"all\",\n"
@@ -7175,12 +7271,17 @@ TEST_P(Dhcp4GetConfigTest, run) {
ASSERT_NO_THROW(outputFormatted(dhcp->str()));
} else {
expected = UNPARSED_CONFIGS[config_counter];
+ // get the expected config using the dhcpv4 syntax parser
ElementPtr jsond;
ASSERT_NO_THROW(jsond = parseDHCP4(expected, true));
ElementPtr jsonj;
+ // get the expected config using the generic JSON syntax parser
ASSERT_NO_THROW(jsonj = parseJSON(expected));
- EXPECT_TRUE(isEquivalent(dhcp, jsonj));
+ // the generic JSON parser does not handle comments
EXPECT_TRUE(isEquivalent(jsond, moveComments(jsonj)));
+ // check that unparsed and expected values match
+ EXPECT_TRUE(isEquivalent(dhcp, jsonj));
+ // check on pretty prints too
std::string current = prettyPrint(dhcp, 4, 4) + "\n";
EXPECT_EQ(expected, current);
if (expected != current) {
diff --git a/src/bin/dhcp6/dhcp6_lexer.cc b/src/bin/dhcp6/dhcp6_lexer.cc
index 60ac92295d..25d548e897 100644
--- a/src/bin/dhcp6/dhcp6_lexer.cc
+++ b/src/bin/dhcp6/dhcp6_lexer.cc
@@ -1,27 +1,22 @@
-#line 1 "dhcp6_lexer.cc"
+#line 2 "dhcp6_lexer.cc"
-#line 3 "dhcp6_lexer.cc"
+#line 4 "dhcp6_lexer.cc"
#define YY_INT_ALIGNED short int
/* 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
@@ -41,7 +36,7 @@
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 4
+#define YY_FLEX_SUBMINOR_VERSION 0
#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
-#if defined(__GNUC__) && __GNUC__ >= 3
-#define yynoreturn __attribute__((__noreturn__))
+/* 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
+
+#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,16 +185,20 @@ 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. */
@@ -452,19 +229,19 @@ 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)
@@ -472,15 +249,16 @@ extern FILE *yyin, *yyout;
#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,7 +278,7 @@ 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.
@@ -528,7 +306,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 +323,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 +333,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 +354,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 +364,123 @@ 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;
+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 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 parser6_ensure_buffer_stack (void );
+static void parser6__load_buffer_state (void );
+static void parser6__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 parser6__flush_buffer(YY_CURRENT_BUFFER )
+
+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 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;
+int parser6_lineno = 1;
+
+extern char *parser6_text;
#ifdef yytext_ptr
#undef yytext_ptr
#endif
-#define yytext_ptr yytext
+#define yytext_ptr parser6_text
/* %% [1.5] DFA */
/* %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 );
+#if defined(__GNUC__) && __GNUC__ >= 3
+__attribute__((__noreturn__))
+#endif
+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 171
#define YY_END_OF_BUFFER 172
@@ -700,7 +491,7 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[1378] =
+static yyconst flex_int16_t yy_accept[1378] =
{ 0,
164, 164, 0, 0, 0, 0, 0, 0, 0, 0,
172, 170, 10, 11, 170, 1, 164, 161, 164, 164,
@@ -855,7 +646,7 @@ static const flex_int16_t yy_accept[1378] =
0, 0, 98, 0, 0, 140, 0
} ;
-static const YY_CHAR yy_ec[256] =
+static yyconst YY_CHAR yy_ec[256] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
@@ -887,7 +678,7 @@ static const YY_CHAR yy_ec[256] =
5, 5, 5, 5, 5
} ;
-static const YY_CHAR yy_meta[72] =
+static yyconst YY_CHAR yy_meta[72] =
{ 0,
1, 1, 2, 3, 3, 4, 3, 3, 3, 3,
3, 3, 3, 5, 5, 5, 3, 3, 3, 3,
@@ -899,7 +690,7 @@ static const YY_CHAR yy_meta[72] =
3
} ;
-static const flex_int16_t yy_base[1390] =
+static yyconst flex_uint16_t yy_base[1390] =
{ 0,
0, 70, 19, 29, 41, 49, 52, 58, 87, 95,
1742, 1743, 32, 1738, 141, 0, 201, 1743, 206, 88,
@@ -1055,7 +846,7 @@ static const flex_int16_t yy_base[1390] =
1220, 1225, 1230, 1235, 1238, 1212, 1217, 1219, 1232
} ;
-static const flex_int16_t yy_def[1390] =
+static yyconst flex_int16_t yy_def[1390] =
{ 0,
1378, 1378, 1379, 1379, 1378, 1378, 1378, 1378, 1378, 1378,
1377, 1377, 1377, 1377, 1377, 1380, 1377, 1377, 1377, 1377,
@@ -1211,7 +1002,7 @@ static const flex_int16_t yy_def[1390] =
1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377
} ;
-static const flex_int16_t yy_nxt[1815] =
+static yyconst flex_uint16_t yy_nxt[1815] =
{ 0,
1377, 13, 14, 13, 1377, 15, 16, 815, 17, 18,
19, 20, 21, 22, 22, 22, 23, 24, 85, 357,
@@ -1415,7 +1206,7 @@ static const flex_int16_t yy_nxt[1815] =
1377, 1377, 1377, 1377
} ;
-static const flex_int16_t yy_chk[1815] =
+static yyconst flex_int16_t yy_chk[1815] =
{ 0,
0, 1, 1, 1, 0, 1, 1, 728, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 21, 251,
@@ -1622,24 +1413,24 @@ static const flex_int16_t yy_chk[1815] =
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[171] =
+static yyconst flex_int16_t yy_rule_linenum[171] =
{ 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, 327, 337, 347, 357,
- 367, 376, 386, 396, 406, 416, 425, 434, 443, 452,
- 461, 470, 479, 488, 500, 509, 518, 527, 536, 546,
- 556, 566, 576, 587, 597, 607, 617, 627, 637, 647,
- 657, 667, 677, 688, 699, 710, 721, 730, 740, 749,
- 758, 773, 788, 797, 806, 815, 824, 833, 842, 851,
- 860, 869, 878, 900, 922, 931, 941, 951, 960, 970,
- 980, 989, 998, 1007, 1016, 1026, 1035, 1044, 1053, 1062,
+ 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, 326, 336, 346, 356,
+ 366, 375, 385, 395, 405, 415, 424, 433, 442, 451,
+ 460, 469, 478, 487, 499, 508, 517, 526, 535, 545,
+ 555, 565, 575, 586, 596, 606, 616, 626, 636, 646,
+ 656, 666, 676, 687, 698, 709, 720, 729, 739, 748,
+ 757, 772, 787, 796, 805, 814, 823, 832, 841, 850,
+ 859, 868, 877, 899, 921, 930, 940, 950, 959, 969,
+ 979, 988, 997, 1006, 1015, 1025, 1034, 1043, 1052, 1061,
- 1071, 1080, 1089, 1098, 1107, 1117, 1126, 1135, 1145, 1157,
- 1170, 1179, 1188, 1197, 1206, 1215, 1226, 1236, 1245, 1255,
+ 1070, 1079, 1088, 1097, 1106, 1116, 1125, 1134, 1144, 1156,
+ 1169, 1178, 1187, 1196, 1206, 1215, 1226, 1236, 1245, 1255,
1265, 1274, 1283, 1292, 1301, 1311, 1320, 1330, 1339, 1348,
1357, 1366, 1375, 1384, 1393, 1402, 1411, 1420, 1429, 1438,
1447, 1456, 1465, 1474, 1483, 1492, 1501, 1510, 1519, 1528,
@@ -1654,7 +1445,7 @@ static const flex_int16_t yy_rule_linenum[171] =
#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")
@@ -1681,8 +1472,8 @@ char *yytext;
2.5.31 through 2.5.33): it generates code that does
not conform to C89. See Debian bug 333231
. */
-# undef yywrap
-# define yywrap() 1
+# undef parser6_wrap
+# define parser6_wrap() 1
namespace {
@@ -1697,10 +1488,9 @@ using namespace isc::dhcp;
/* To avoid the call to exit... oops! */
#define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1700 "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. */
@@ -1708,23 +1498,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 1726 "dhcp6_lexer.cc"
-#line 1727 "dhcp6_lexer.cc"
+#define YY_USER_ACTION driver.loc_.columns(parser6_leng);
+#line 1518 "dhcp6_lexer.cc"
#define INITIAL 0
#define COMMENT 1
@@ -1752,7 +1542,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 */
@@ -1762,31 +1552,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 */
@@ -1797,13 +1587,14 @@ 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
@@ -1812,20 +1603,21 @@ extern int yywrap ( void );
/* %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 */
@@ -1852,7 +1644,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 */
@@ -1867,20 +1659,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) \
{ \
@@ -1888,7 +1680,7 @@ static int input ( void );
break; \
} \
errno=0; \
- clearerr(yyin); \
+ clearerr(parser6_in); \
} \
}\
\
@@ -1921,9 +1713,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 */
@@ -1937,15 +1731,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
@@ -1962,6 +1756,7 @@ extern int yylex (void);
YY_USER_ACTION
/* %not-for-header */
+
/** The main scanner function which does all the work.
*/
YY_DECL
@@ -1981,27 +1776,27 @@ YY_DECL
if ( ! (yy_start) )
(yy_start) = 1; /* first start state */
- if ( ! yyin )
+ if ( ! parser6_in )
/* %if-c-only */
- yyin = stdin;
+ parser6_in = stdin;
/* %endif */
/* %if-c++-only */
/* %endif */
- if ( ! yyout )
+ if ( ! parser6_out )
/* %if-c-only */
- yyout = stdout;
+ parser6_out = stdout;
/* %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_load_buffer_state( );
+ parser6__load_buffer_state( );
}
{
@@ -2010,12 +1805,11 @@ YY_DECL
-#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) {
@@ -2054,14 +1848,14 @@ YY_DECL
}
-#line 2057 "dhcp6_lexer.cc"
+#line 1852 "dhcp6_lexer.cc"
while ( /*CONSTCOND*/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
@@ -2084,9 +1878,9 @@ yy_match:
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 1378 )
- 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 != 1377 );
@@ -2099,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 < 171 )
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 == 171 )
fprintf( stderr, "--accepting default rule (\"%s\")\n",
- yytext );
+ parser6_text );
else if ( yy_act == 172 )
fprintf( stderr, "--(end of buffer or a NUL)\n" );
else
@@ -2132,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;;
@@ -2150,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);
@@ -2190,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();
@@ -2211,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:
@@ -2232,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:
@@ -2244,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:
@@ -2256,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:
@@ -2268,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:
@@ -2280,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:
@@ -2292,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:
@@ -2304,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:
@@ -2316,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:
@@ -2328,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:
@@ -2340,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:
@@ -2352,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:
@@ -2364,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:
@@ -2376,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:
@@ -2388,72 +2182,72 @@ YY_RULE_SETUP
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 317 "dhcp6_lexer.ll"
+#line 316 "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 27:
YY_RULE_SETUP
-#line 327 "dhcp6_lexer.ll"
+#line 326 "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 28:
YY_RULE_SETUP
-#line 337 "dhcp6_lexer.ll"
+#line 336 "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 29:
YY_RULE_SETUP
-#line 347 "dhcp6_lexer.ll"
+#line 346 "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 30:
YY_RULE_SETUP
-#line 357 "dhcp6_lexer.ll"
+#line 356 "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 31:
YY_RULE_SETUP
-#line 367 "dhcp6_lexer.ll"
+#line 366 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME:
@@ -2465,59 +2259,59 @@ YY_RULE_SETUP
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 376 "dhcp6_lexer.ll"
+#line 375 "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 33:
YY_RULE_SETUP
-#line 386 "dhcp6_lexer.ll"
+#line 385 "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 34:
YY_RULE_SETUP
-#line 396 "dhcp6_lexer.ll"
+#line 395 "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 35:
YY_RULE_SETUP
-#line 406 "dhcp6_lexer.ll"
+#line 405 "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 36:
YY_RULE_SETUP
-#line 416 "dhcp6_lexer.ll"
+#line 415 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG:
@@ -2529,7 +2323,7 @@ YY_RULE_SETUP
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 425 "dhcp6_lexer.ll"
+#line 424 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -2541,7 +2335,7 @@ YY_RULE_SETUP
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 434 "dhcp6_lexer.ll"
+#line 433 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
@@ -2553,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::INTERFACES_CONFIG:
@@ -2565,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::DHCP6:
@@ -2577,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::DHCP6:
@@ -2589,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:
@@ -2601,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::HOSTS_DATABASE:
@@ -2613,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::LEASE_DATABASE:
@@ -2628,7 +2422,7 @@ YY_RULE_SETUP
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 500 "dhcp6_lexer.ll"
+#line 499 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2640,7 +2434,7 @@ YY_RULE_SETUP
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 509 "dhcp6_lexer.ll"
+#line 508 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2652,7 +2446,7 @@ YY_RULE_SETUP
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 518 "dhcp6_lexer.ll"
+#line 517 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2664,7 +2458,7 @@ YY_RULE_SETUP
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 527 "dhcp6_lexer.ll"
+#line 526 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2676,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::LEASE_DATABASE:
@@ -2689,7 +2483,7 @@ YY_RULE_SETUP
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 546 "dhcp6_lexer.ll"
+#line 545 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2702,7 +2496,7 @@ YY_RULE_SETUP
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 556 "dhcp6_lexer.ll"
+#line 555 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2715,7 +2509,7 @@ YY_RULE_SETUP
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 566 "dhcp6_lexer.ll"
+#line 565 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2728,7 +2522,7 @@ YY_RULE_SETUP
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 576 "dhcp6_lexer.ll"
+#line 575 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2742,7 +2536,7 @@ YY_RULE_SETUP
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 587 "dhcp6_lexer.ll"
+#line 586 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2755,7 +2549,7 @@ YY_RULE_SETUP
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 597 "dhcp6_lexer.ll"
+#line 596 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2768,7 +2562,7 @@ YY_RULE_SETUP
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 607 "dhcp6_lexer.ll"
+#line 606 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2781,7 +2575,7 @@ YY_RULE_SETUP
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 617 "dhcp6_lexer.ll"
+#line 616 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2794,7 +2588,7 @@ YY_RULE_SETUP
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 627 "dhcp6_lexer.ll"
+#line 626 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2807,7 +2601,7 @@ YY_RULE_SETUP
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 637 "dhcp6_lexer.ll"
+#line 636 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2820,7 +2614,7 @@ YY_RULE_SETUP
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 647 "dhcp6_lexer.ll"
+#line 646 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2833,7 +2627,7 @@ YY_RULE_SETUP
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 657 "dhcp6_lexer.ll"
+#line 656 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2846,7 +2640,7 @@ YY_RULE_SETUP
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 667 "dhcp6_lexer.ll"
+#line 666 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2859,7 +2653,7 @@ YY_RULE_SETUP
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 677 "dhcp6_lexer.ll"
+#line 676 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -2873,7 +2667,7 @@ YY_RULE_SETUP
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 688 "dhcp6_lexer.ll"
+#line 687 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -2887,7 +2681,7 @@ YY_RULE_SETUP
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 699 "dhcp6_lexer.ll"
+#line 698 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -2901,7 +2695,7 @@ YY_RULE_SETUP
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 710 "dhcp6_lexer.ll"
+#line 709 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -2915,7 +2709,7 @@ YY_RULE_SETUP
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 721 "dhcp6_lexer.ll"
+#line 720 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -2927,7 +2721,7 @@ YY_RULE_SETUP
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 730 "dhcp6_lexer.ll"
+#line 729 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -2940,7 +2734,7 @@ YY_RULE_SETUP
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 740 "dhcp6_lexer.ll"
+#line 739 "dhcp6_lexer.ll"
{
switch (driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -2952,7 +2746,7 @@ YY_RULE_SETUP
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 749 "dhcp6_lexer.ll"
+#line 748 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -2964,7 +2758,7 @@ YY_RULE_SETUP
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 758 "dhcp6_lexer.ll"
+#line 757 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -2982,7 +2776,7 @@ YY_RULE_SETUP
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 773 "dhcp6_lexer.ll"
+#line 772 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3000,7 +2794,7 @@ YY_RULE_SETUP
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 788 "dhcp6_lexer.ll"
+#line 787 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3012,7 +2806,7 @@ YY_RULE_SETUP
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 797 "dhcp6_lexer.ll"
+#line 796 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3024,7 +2818,7 @@ YY_RULE_SETUP
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 806 "dhcp6_lexer.ll"
+#line 805 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
@@ -3036,7 +2830,7 @@ YY_RULE_SETUP
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 815 "dhcp6_lexer.ll"
+#line 814 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
@@ -3048,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::PD_POOLS:
@@ -3060,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::PD_POOLS:
@@ -3072,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::PD_POOLS:
@@ -3084,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::PD_POOLS:
@@ -3096,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:
@@ -3108,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::POOLS:
@@ -3120,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::DHCP6:
@@ -3145,7 +2939,7 @@ YY_RULE_SETUP
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 900 "dhcp6_lexer.ll"
+#line 899 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -3170,7 +2964,7 @@ YY_RULE_SETUP
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 922 "dhcp6_lexer.ll"
+#line 921 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
@@ -3182,7 +2976,7 @@ YY_RULE_SETUP
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 931 "dhcp6_lexer.ll"
+#line 930 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
@@ -3195,7 +2989,7 @@ YY_RULE_SETUP
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 941 "dhcp6_lexer.ll"
+#line 940 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
@@ -3208,7 +3002,7 @@ YY_RULE_SETUP
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 951 "dhcp6_lexer.ll"
+#line 950 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
@@ -3220,7 +3014,7 @@ YY_RULE_SETUP
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 960 "dhcp6_lexer.ll"
+#line 959 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
@@ -3233,7 +3027,7 @@ YY_RULE_SETUP
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 970 "dhcp6_lexer.ll"
+#line 969 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
@@ -3246,7 +3040,7 @@ YY_RULE_SETUP
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 980 "dhcp6_lexer.ll"
+#line 979 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3258,7 +3052,7 @@ YY_RULE_SETUP
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 989 "dhcp6_lexer.ll"
+#line 988 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3270,7 +3064,7 @@ YY_RULE_SETUP
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 998 "dhcp6_lexer.ll"
+#line 997 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3282,7 +3076,7 @@ YY_RULE_SETUP
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 1007 "dhcp6_lexer.ll"
+#line 1006 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3294,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::OPTION_DEF:
@@ -3307,7 +3101,7 @@ YY_RULE_SETUP
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 1026 "dhcp6_lexer.ll"
+#line 1025 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -3319,7 +3113,7 @@ YY_RULE_SETUP
YY_BREAK
case 97:
YY_RULE_SETUP
-#line 1035 "dhcp6_lexer.ll"
+#line 1034 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -3331,7 +3125,7 @@ YY_RULE_SETUP
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 1044 "dhcp6_lexer.ll"
+#line 1043 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -3343,7 +3137,7 @@ YY_RULE_SETUP
YY_BREAK
case 99:
YY_RULE_SETUP
-#line 1053 "dhcp6_lexer.ll"
+#line 1052 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CONFIG:
@@ -3355,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::LOGGING:
@@ -3367,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::LOGGERS:
@@ -3379,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::OUTPUT_OPTIONS:
@@ -3391,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::OUTPUT_OPTIONS:
@@ -3403,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::OUTPUT_OPTIONS:
@@ -3415,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::OUTPUT_OPTIONS:
@@ -3427,7 +3221,7 @@ YY_RULE_SETUP
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 1117 "dhcp6_lexer.ll"
+#line 1116 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LOGGERS:
@@ -3439,7 +3233,7 @@ YY_RULE_SETUP
YY_BREAK
case 107:
YY_RULE_SETUP
-#line 1126 "dhcp6_lexer.ll"
+#line 1125 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::LOGGERS:
@@ -3451,7 +3245,7 @@ YY_RULE_SETUP
YY_BREAK
case 108:
YY_RULE_SETUP
-#line 1135 "dhcp6_lexer.ll"
+#line 1134 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
@@ -3464,7 +3258,7 @@ YY_RULE_SETUP
YY_BREAK
case 109:
YY_RULE_SETUP
-#line 1145 "dhcp6_lexer.ll"
+#line 1144 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
@@ -3479,7 +3273,7 @@ YY_RULE_SETUP
YY_BREAK
case 110:
YY_RULE_SETUP
-#line 1157 "dhcp6_lexer.ll"
+#line 1156 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
@@ -3495,7 +3289,7 @@ YY_RULE_SETUP
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 1170 "dhcp6_lexer.ll"
+#line 1169 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3507,7 +3301,7 @@ YY_RULE_SETUP
YY_BREAK
case 112:
YY_RULE_SETUP
-#line 1179 "dhcp6_lexer.ll"
+#line 1178 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3519,7 +3313,7 @@ YY_RULE_SETUP
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 1188 "dhcp6_lexer.ll"
+#line 1187 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
@@ -3531,10 +3325,11 @@ YY_RULE_SETUP
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 1197 "dhcp6_lexer.ll"
+#line 1196 "dhcp6_lexer.ll"
{
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATIONS:
+ case isc::dhcp::Parser6Context::RELAY:
return isc::dhcp::Dhcp6Parser::make_IP_ADDRESSES(driver.loc_);
default:
return isc::dhcp::Dhcp6Parser::make_STRING("ip-addresses", driver.loc_);
@@ -4010,7 +3805,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;
@@ -4111,7 +3906,7 @@ YY_RULE_SETUP
#line 1655 "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 155:
@@ -4120,7 +3915,7 @@ YY_RULE_SETUP
#line 1660 "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 156:
@@ -4128,7 +3923,7 @@ YY_RULE_SETUP
#line 1665 "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 157:
@@ -4166,7 +3961,7 @@ YY_RULE_SETUP
#line 1677 "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).
@@ -4187,7 +3982,7 @@ YY_RULE_SETUP
#line 1695 "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(tmp);
@@ -4202,7 +3997,7 @@ case 165:
YY_RULE_SETUP
#line 1708 "dhcp6_lexer.ll"
{
- string tmp(yytext);
+ string tmp(parser6_text);
return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
}
YY_BREAK
@@ -4231,7 +4026,7 @@ driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
case 170:
YY_RULE_SETUP
#line 1723 "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 1725 "dhcp6_lexer.ll"
@@ -4263,7 +4058,7 @@ YY_RULE_SETUP
#line 1748 "dhcp6_lexer.ll"
ECHO;
YY_BREAK
-#line 4266 "dhcp6_lexer.cc"
+#line 4062 "dhcp6_lexer.cc"
case YY_END_OF_BUFFER:
{
@@ -4278,8 +4073,8 @@ 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
@@ -4287,7 +4082,7 @@ ECHO;
*/
(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
/* %if-c-only */
- YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = parser6_in;
/* %endif */
/* %if-c++-only */
/* %endif */
@@ -4345,11 +4140,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
@@ -4399,11 +4194,12 @@ ECHO;
} /* 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 */
@@ -4423,7 +4219,7 @@ static int yy_get_next_buffer (void)
{
char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
char *source = (yytext_ptr);
- int number_to_move, i;
+ yy_size_t number_to_move, i;
int ret_val;
if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -4452,7 +4248,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 = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1;
for ( i = 0; i < number_to_move; ++i )
*(dest++) = *(source++);
@@ -4465,7 +4261,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 )
@@ -4479,7 +4275,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;
@@ -4488,12 +4284,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(
@@ -4521,7 +4316,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
@@ -4535,15 +4330,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 ((int) ((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_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;
@@ -4559,6 +4351,7 @@ 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 */
@@ -4583,9 +4376,9 @@ static int yy_get_next_buffer (void)
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 1378 )
- 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;
@@ -4616,9 +4409,9 @@ static int yy_get_next_buffer (void)
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 1378 )
- 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 == 1377);
return yy_is_jam ? 0 : yy_current_state;
@@ -4658,7 +4451,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( ) )
@@ -4675,14 +4468,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;
@@ -4701,10 +4494,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;
}
@@ -4718,20 +4511,20 @@ 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 */
@@ -4742,7 +4535,7 @@ static int yy_get_next_buffer (void)
*
*/
/* %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 */
@@ -4750,10 +4543,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;
@@ -4766,18 +4559,18 @@ 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 */
@@ -4785,7 +4578,7 @@ static void yy_load_buffer_state (void)
(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;
+ parser6_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
/* %endif */
/* %if-c++-only */
/* %endif */
@@ -4799,29 +4592,29 @@ 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;
+ b->yy_buf_size = (yy_size_t)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;
}
@@ -4830,11 +4623,11 @@ static void yy_load_buffer_state (void)
/* %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 */
@@ -4847,17 +4640,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 */
@@ -4865,7 +4658,7 @@ 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;
@@ -4874,8 +4667,8 @@ static void yy_load_buffer_state (void)
/* %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){
@@ -4898,7 +4691,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 */
@@ -4921,7 +4714,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++ */
@@ -4932,7 +4725,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 */
@@ -4940,9 +4733,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. */
@@ -4956,8 +4749,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 */
@@ -4968,7 +4761,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 */
@@ -4976,13 +4769,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;
}
}
@@ -4993,7 +4786,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 */
@@ -5006,15 +4799,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; /* After all that talk, this was set to 1 anyways... */
+ (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;
@@ -5026,12 +4819,12 @@ static void yyensure_buffer_stack (void)
yy_size_t 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*));
@@ -5045,9 +4838,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;
@@ -5055,73 +4848,73 @@ 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;
yy_size_t n;
- int i;
+ yy_size_t i;
/* Get memory for full buffer, including space for trailing EOB's. */
- n = (yy_size_t) (_yybytes_len + 2);
- 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.
@@ -5137,9 +4930,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 */
@@ -5152,14 +4945,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 )
@@ -5172,43 +4965,43 @@ 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 */
@@ -5218,36 +5011,36 @@ char *yyget_text (void)
* @param _line_number 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.
*
- * @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 */
@@ -5261,50 +5054,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 */
@@ -5318,7 +5111,7 @@ 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;
@@ -5328,7 +5121,7 @@ static void yy_flex_strncpy (char* s1, const char * s2, int n )
#endif
#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (const char * s )
+static int yy_flex_strlen (yyconst char * s )
{
int n;
for ( n = 0; s[n]; ++n )
@@ -5338,12 +5131,12 @@ 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
@@ -5353,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 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 */
@@ -5371,6 +5164,7 @@ void yyfree (void * ptr )
#line 1748 "dhcp6_lexer.ll"
+
using namespace isc::dhcp;
void
@@ -5382,7 +5176,7 @@ Parser6Context::scanStringBegin(const std::string& str, ParserType parser_type)
file_ = "";
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) {
@@ -5402,7 +5196,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 f02b9b58b6..a6194d8ea3 100644
--- a/src/bin/dhcp6/dhcp6_lexer.ll
+++ b/src/bin/dhcp6/dhcp6_lexer.ll
@@ -1196,6 +1196,7 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence}
\"ip-addresses\" {
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::RESERVATIONS:
+ case isc::dhcp::Parser6Context::RELAY:
return isc::dhcp::Dhcp6Parser::make_IP_ADDRESSES(driver.loc_);
default:
return isc::dhcp::Dhcp6Parser::make_STRING("ip-addresses", driver.loc_);
diff --git a/src/bin/dhcp6/dhcp6_parser.cc b/src/bin/dhcp6/dhcp6_parser.cc
index 82f21804d5..cc4ce305f0 100644
--- a/src/bin/dhcp6/dhcp6_parser.cc
+++ b/src/bin/dhcp6/dhcp6_parser.cc
@@ -257,9 +257,9 @@ namespace isc { namespace dhcp {
case 185: // map_value
case 235: // db_type
case 318: // hr_mode
- case 453: // duid_type
- case 486: // ncr_protocol_value
- case 494: // replace_client_name_value
+ case 454: // duid_type
+ case 487: // ncr_protocol_value
+ case 495: // replace_client_name_value
value.move< ElementPtr > (that.value);
break;
@@ -298,9 +298,9 @@ namespace isc { namespace dhcp {
case 185: // map_value
case 235: // db_type
case 318: // hr_mode
- case 453: // duid_type
- case 486: // ncr_protocol_value
- case 494: // replace_client_name_value
+ case 454: // duid_type
+ case 487: // ncr_protocol_value
+ case 495: // replace_client_name_value
value.copy< ElementPtr > (that.value);
break;
@@ -412,21 +412,21 @@ namespace isc { namespace dhcp {
#line 413 "dhcp6_parser.cc" // lalr1.cc:636
break;
- case 453: // duid_type
+ case 454: // duid_type
#line 237 "dhcp6_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
#line 420 "dhcp6_parser.cc" // lalr1.cc:636
break;
- case 486: // ncr_protocol_value
+ case 487: // ncr_protocol_value
#line 237 "dhcp6_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
#line 427 "dhcp6_parser.cc" // lalr1.cc:636
break;
- case 494: // replace_client_name_value
+ case 495: // replace_client_name_value
#line 237 "dhcp6_parser.yy" // lalr1.cc:636
{ yyoutput << yysym.value.template as< ElementPtr > (); }
@@ -634,9 +634,9 @@ namespace isc { namespace dhcp {
case 185: // map_value
case 235: // db_type
case 318: // hr_mode
- case 453: // duid_type
- case 486: // ncr_protocol_value
- case 494: // replace_client_name_value
+ case 454: // duid_type
+ case 487: // ncr_protocol_value
+ case 495: // replace_client_name_value
yylhs.value.build< ElementPtr > ();
break;
@@ -2714,26 +2714,26 @@ namespace isc { namespace dhcp {
#line 2715 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 474:
-#line 1687 "dhcp6_parser.yy" // lalr1.cc:859
+ case 476:
+#line 1691 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 2723 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 475:
-#line 1689 "dhcp6_parser.yy" // lalr1.cc:859
+ case 477:
+#line 1693 "dhcp6_parser.yy" // lalr1.cc:859
{
- ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("ip-address", ip);
+ ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.back()->set("ip-address", addr);
ctx.leave();
}
#line 2733 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 476:
-#line 1698 "dhcp6_parser.yy" // lalr1.cc:859
+ case 478:
+#line 1702 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", l);
@@ -2743,8 +2743,8 @@ namespace isc { namespace dhcp {
#line 2744 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 477:
-#line 1703 "dhcp6_parser.yy" // lalr1.cc:859
+ case 479:
+#line 1707 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -2752,8 +2752,8 @@ namespace isc { namespace dhcp {
#line 2753 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 480:
-#line 1712 "dhcp6_parser.yy" // lalr1.cc:859
+ case 482:
+#line 1716 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
@@ -2762,8 +2762,8 @@ namespace isc { namespace dhcp {
#line 2763 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 481:
-#line 1716 "dhcp6_parser.yy" // lalr1.cc:859
+ case 483:
+#line 1720 "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));
@@ -2772,16 +2772,16 @@ namespace isc { namespace dhcp {
#line 2773 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 494:
-#line 1741 "dhcp6_parser.yy" // lalr1.cc:859
+ case 496:
+#line 1745 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 2781 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 495:
-#line 1743 "dhcp6_parser.yy" // lalr1.cc:859
+ case 497:
+#line 1747 "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);
@@ -2790,8 +2790,8 @@ namespace isc { namespace dhcp {
#line 2791 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 496:
-#line 1749 "dhcp6_parser.yy" // lalr1.cc:859
+ case 498:
+#line 1753 "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);
@@ -2799,8 +2799,8 @@ namespace isc { namespace dhcp {
#line 2800 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 497:
-#line 1757 "dhcp6_parser.yy" // lalr1.cc:859
+ case 499:
+#line 1761 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-id", m);
@@ -2810,8 +2810,8 @@ namespace isc { namespace dhcp {
#line 2811 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 498:
-#line 1762 "dhcp6_parser.yy" // lalr1.cc:859
+ case 500:
+#line 1766 "dhcp6_parser.yy" // lalr1.cc:859
{
// The type parameter is required.
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -2821,16 +2821,16 @@ namespace isc { namespace dhcp {
#line 2822 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 510:
-#line 1784 "dhcp6_parser.yy" // lalr1.cc:859
+ case 512:
+#line 1788 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.DUID_TYPE);
}
#line 2830 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 511:
-#line 1786 "dhcp6_parser.yy" // lalr1.cc:859
+ case 513:
+#line 1790 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -2838,26 +2838,26 @@ namespace isc { namespace dhcp {
#line 2839 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 512:
-#line 1791 "dhcp6_parser.yy" // lalr1.cc:859
+ case 514:
+#line 1795 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
#line 2845 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 513:
-#line 1792 "dhcp6_parser.yy" // lalr1.cc:859
+ case 515:
+#line 1796 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
#line 2851 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 514:
-#line 1793 "dhcp6_parser.yy" // lalr1.cc:859
+ case 516:
+#line 1797 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
#line 2857 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 515:
-#line 1796 "dhcp6_parser.yy" // lalr1.cc:859
+ case 517:
+#line 1800 "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);
@@ -2865,16 +2865,16 @@ namespace isc { namespace dhcp {
#line 2866 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 516:
-#line 1801 "dhcp6_parser.yy" // lalr1.cc:859
+ case 518:
+#line 1805 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 2874 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 517:
-#line 1803 "dhcp6_parser.yy" // lalr1.cc:859
+ case 519:
+#line 1807 "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);
@@ -2883,8 +2883,8 @@ namespace isc { namespace dhcp {
#line 2884 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 518:
-#line 1809 "dhcp6_parser.yy" // lalr1.cc:859
+ case 520:
+#line 1813 "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);
@@ -2892,8 +2892,8 @@ namespace isc { namespace dhcp {
#line 2893 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 519:
-#line 1814 "dhcp6_parser.yy" // lalr1.cc:859
+ case 521:
+#line 1818 "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);
@@ -2901,8 +2901,8 @@ namespace isc { namespace dhcp {
#line 2902 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 520:
-#line 1821 "dhcp6_parser.yy" // lalr1.cc:859
+ case 522:
+#line 1825 "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);
@@ -2910,8 +2910,8 @@ namespace isc { namespace dhcp {
#line 2911 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 521:
-#line 1828 "dhcp6_parser.yy" // lalr1.cc:859
+ case 523:
+#line 1832 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("control-socket", m);
@@ -2921,8 +2921,8 @@ namespace isc { namespace dhcp {
#line 2922 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 522:
-#line 1833 "dhcp6_parser.yy" // lalr1.cc:859
+ case 524:
+#line 1837 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -2930,16 +2930,16 @@ namespace isc { namespace dhcp {
#line 2931 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 530:
-#line 1849 "dhcp6_parser.yy" // lalr1.cc:859
+ case 532:
+#line 1853 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 2939 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 531:
-#line 1851 "dhcp6_parser.yy" // lalr1.cc:859
+ case 533:
+#line 1855 "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);
@@ -2948,16 +2948,16 @@ namespace isc { namespace dhcp {
#line 2949 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 532:
-#line 1857 "dhcp6_parser.yy" // lalr1.cc:859
+ case 534:
+#line 1861 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 2957 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 533:
-#line 1859 "dhcp6_parser.yy" // lalr1.cc:859
+ case 535:
+#line 1863 "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);
@@ -2966,8 +2966,8 @@ namespace isc { namespace dhcp {
#line 2967 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 534:
-#line 1867 "dhcp6_parser.yy" // lalr1.cc:859
+ case 536:
+#line 1871 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp-ddns", m);
@@ -2977,8 +2977,8 @@ namespace isc { namespace dhcp {
#line 2978 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 535:
-#line 1872 "dhcp6_parser.yy" // lalr1.cc:859
+ case 537:
+#line 1876 "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));
@@ -2988,8 +2988,8 @@ namespace isc { namespace dhcp {
#line 2989 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 536:
-#line 1879 "dhcp6_parser.yy" // lalr1.cc:859
+ case 538:
+#line 1883 "dhcp6_parser.yy" // lalr1.cc:859
{
// Parse the dhcp-ddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2998,8 +2998,8 @@ namespace isc { namespace dhcp {
#line 2999 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 537:
-#line 1883 "dhcp6_parser.yy" // lalr1.cc:859
+ case 539:
+#line 1887 "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));
@@ -3008,8 +3008,8 @@ namespace isc { namespace dhcp {
#line 3009 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 557:
-#line 1912 "dhcp6_parser.yy" // lalr1.cc:859
+ case 559:
+#line 1916 "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);
@@ -3017,16 +3017,16 @@ namespace isc { namespace dhcp {
#line 3018 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 558:
-#line 1917 "dhcp6_parser.yy" // lalr1.cc:859
+ case 560:
+#line 1921 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3026 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 559:
-#line 1919 "dhcp6_parser.yy" // lalr1.cc:859
+ case 561:
+#line 1923 "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);
@@ -3035,16 +3035,16 @@ namespace isc { namespace dhcp {
#line 3036 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 560:
-#line 1925 "dhcp6_parser.yy" // lalr1.cc:859
+ case 562:
+#line 1929 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3044 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 561:
-#line 1927 "dhcp6_parser.yy" // lalr1.cc:859
+ case 563:
+#line 1931 "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);
@@ -3053,8 +3053,8 @@ namespace isc { namespace dhcp {
#line 3054 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 562:
-#line 1933 "dhcp6_parser.yy" // lalr1.cc:859
+ case 564:
+#line 1937 "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);
@@ -3062,16 +3062,16 @@ namespace isc { namespace dhcp {
#line 3063 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 563:
-#line 1938 "dhcp6_parser.yy" // lalr1.cc:859
+ case 565:
+#line 1942 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3071 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 564:
-#line 1940 "dhcp6_parser.yy" // lalr1.cc:859
+ case 566:
+#line 1944 "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);
@@ -3080,8 +3080,8 @@ namespace isc { namespace dhcp {
#line 3081 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 565:
-#line 1946 "dhcp6_parser.yy" // lalr1.cc:859
+ case 567:
+#line 1950 "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);
@@ -3089,8 +3089,8 @@ namespace isc { namespace dhcp {
#line 3090 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 566:
-#line 1951 "dhcp6_parser.yy" // lalr1.cc:859
+ case 568:
+#line 1955 "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);
@@ -3098,16 +3098,16 @@ namespace isc { namespace dhcp {
#line 3099 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 567:
-#line 1956 "dhcp6_parser.yy" // lalr1.cc:859
+ case 569:
+#line 1960 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NCR_PROTOCOL);
}
#line 3107 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 568:
-#line 1958 "dhcp6_parser.yy" // lalr1.cc:859
+ case 570:
+#line 1962 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -3115,28 +3115,28 @@ namespace isc { namespace dhcp {
#line 3116 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 569:
-#line 1964 "dhcp6_parser.yy" // lalr1.cc:859
+ case 571:
+#line 1968 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
#line 3122 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 570:
-#line 1965 "dhcp6_parser.yy" // lalr1.cc:859
+ case 572:
+#line 1969 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
#line 3128 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 571:
-#line 1968 "dhcp6_parser.yy" // lalr1.cc:859
+ case 573:
+#line 1972 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NCR_FORMAT);
}
#line 3136 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 572:
-#line 1970 "dhcp6_parser.yy" // lalr1.cc:859
+ case 574:
+#line 1974 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
@@ -3145,8 +3145,8 @@ namespace isc { namespace dhcp {
#line 3146 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 573:
-#line 1976 "dhcp6_parser.yy" // lalr1.cc:859
+ case 575:
+#line 1980 "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);
@@ -3154,8 +3154,8 @@ namespace isc { namespace dhcp {
#line 3155 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 574:
-#line 1981 "dhcp6_parser.yy" // lalr1.cc:859
+ case 576:
+#line 1985 "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);
@@ -3163,8 +3163,8 @@ namespace isc { namespace dhcp {
#line 3164 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 575:
-#line 1986 "dhcp6_parser.yy" // lalr1.cc:859
+ case 577:
+#line 1990 "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);
@@ -3172,16 +3172,16 @@ namespace isc { namespace dhcp {
#line 3173 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 576:
-#line 1991 "dhcp6_parser.yy" // lalr1.cc:859
+ case 578:
+#line 1995 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
#line 3181 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 577:
-#line 1993 "dhcp6_parser.yy" // lalr1.cc:859
+ case 579:
+#line 1997 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -3189,40 +3189,40 @@ namespace isc { namespace dhcp {
#line 3190 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 578:
-#line 1999 "dhcp6_parser.yy" // lalr1.cc:859
+ case 580:
+#line 2003 "dhcp6_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
}
#line 3198 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 579:
-#line 2002 "dhcp6_parser.yy" // lalr1.cc:859
+ case 581:
+#line 2006 "dhcp6_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
}
#line 3206 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 580:
-#line 2005 "dhcp6_parser.yy" // lalr1.cc:859
+ case 582:
+#line 2009 "dhcp6_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
}
#line 3214 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 581:
-#line 2008 "dhcp6_parser.yy" // lalr1.cc:859
+ case 583:
+#line 2012 "dhcp6_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
}
#line 3222 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 582:
-#line 2011 "dhcp6_parser.yy" // lalr1.cc:859
+ case 584:
+#line 2015 "dhcp6_parser.yy" // lalr1.cc:859
{
error(yystack_[0].location, "boolean values for the replace-client-name are "
"no longer supported");
@@ -3230,16 +3230,16 @@ namespace isc { namespace dhcp {
#line 3231 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 583:
-#line 2017 "dhcp6_parser.yy" // lalr1.cc:859
+ case 585:
+#line 2021 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3239 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 584:
-#line 2019 "dhcp6_parser.yy" // lalr1.cc:859
+ case 586:
+#line 2023 "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);
@@ -3248,16 +3248,16 @@ namespace isc { namespace dhcp {
#line 3249 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 585:
-#line 2027 "dhcp6_parser.yy" // lalr1.cc:859
+ case 587:
+#line 2031 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3257 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 586:
-#line 2029 "dhcp6_parser.yy" // lalr1.cc:859
+ case 588:
+#line 2033 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -3265,16 +3265,16 @@ namespace isc { namespace dhcp {
#line 3266 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 587:
-#line 2034 "dhcp6_parser.yy" // lalr1.cc:859
+ case 589:
+#line 2038 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3274 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 588:
-#line 2036 "dhcp6_parser.yy" // lalr1.cc:859
+ case 590:
+#line 2040 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -3282,16 +3282,16 @@ namespace isc { namespace dhcp {
#line 3283 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 589:
-#line 2041 "dhcp6_parser.yy" // lalr1.cc:859
+ case 591:
+#line 2045 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3291 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 590:
-#line 2043 "dhcp6_parser.yy" // lalr1.cc:859
+ case 592:
+#line 2047 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
@@ -3299,8 +3299,8 @@ namespace isc { namespace dhcp {
#line 3300 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 591:
-#line 2054 "dhcp6_parser.yy" // lalr1.cc:859
+ case 593:
+#line 2058 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("Logging", m);
@@ -3310,8 +3310,8 @@ namespace isc { namespace dhcp {
#line 3311 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 592:
-#line 2059 "dhcp6_parser.yy" // lalr1.cc:859
+ case 594:
+#line 2063 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -3319,8 +3319,8 @@ namespace isc { namespace dhcp {
#line 3320 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 593:
-#line 2064 "dhcp6_parser.yy" // lalr1.cc:859
+ case 595:
+#line 2068 "dhcp6_parser.yy" // lalr1.cc:859
{
// Parse the Logging map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3329,16 +3329,16 @@ namespace isc { namespace dhcp {
#line 3330 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 594:
-#line 2068 "dhcp6_parser.yy" // lalr1.cc:859
+ case 596:
+#line 2072 "dhcp6_parser.yy" // lalr1.cc:859
{
// parsing completed
}
#line 3338 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 598:
-#line 2084 "dhcp6_parser.yy" // lalr1.cc:859
+ case 600:
+#line 2088 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
@@ -3348,8 +3348,8 @@ namespace isc { namespace dhcp {
#line 3349 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 599:
-#line 2089 "dhcp6_parser.yy" // lalr1.cc:859
+ case 601:
+#line 2093 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -3357,8 +3357,8 @@ namespace isc { namespace dhcp {
#line 3358 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 602:
-#line 2101 "dhcp6_parser.yy" // lalr1.cc:859
+ case 604:
+#line 2105 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
@@ -3367,16 +3367,16 @@ namespace isc { namespace dhcp {
#line 3368 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 603:
-#line 2105 "dhcp6_parser.yy" // lalr1.cc:859
+ case 605:
+#line 2109 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
#line 3376 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 613:
-#line 2122 "dhcp6_parser.yy" // lalr1.cc:859
+ case 615:
+#line 2126 "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);
@@ -3384,16 +3384,16 @@ namespace isc { namespace dhcp {
#line 3385 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 614:
-#line 2127 "dhcp6_parser.yy" // lalr1.cc:859
+ case 616:
+#line 2131 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3393 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 615:
-#line 2129 "dhcp6_parser.yy" // lalr1.cc:859
+ case 617:
+#line 2133 "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);
@@ -3402,8 +3402,8 @@ namespace isc { namespace dhcp {
#line 3403 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 616:
-#line 2135 "dhcp6_parser.yy" // lalr1.cc:859
+ case 618:
+#line 2139 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
@@ -3413,8 +3413,8 @@ namespace isc { namespace dhcp {
#line 3414 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 617:
-#line 2140 "dhcp6_parser.yy" // lalr1.cc:859
+ case 619:
+#line 2144 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
@@ -3422,8 +3422,8 @@ namespace isc { namespace dhcp {
#line 3423 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 620:
-#line 2149 "dhcp6_parser.yy" // lalr1.cc:859
+ case 622:
+#line 2153 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
@@ -3432,24 +3432,24 @@ namespace isc { namespace dhcp {
#line 3433 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 621:
-#line 2153 "dhcp6_parser.yy" // lalr1.cc:859
+ case 623:
+#line 2157 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
#line 3441 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 628:
-#line 2167 "dhcp6_parser.yy" // lalr1.cc:859
+ case 630:
+#line 2171 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3449 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 629:
-#line 2169 "dhcp6_parser.yy" // lalr1.cc:859
+ case 631:
+#line 2173 "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);
@@ -3458,8 +3458,8 @@ namespace isc { namespace dhcp {
#line 3459 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 630:
-#line 2175 "dhcp6_parser.yy" // lalr1.cc:859
+ case 632:
+#line 2179 "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);
@@ -3467,8 +3467,8 @@ namespace isc { namespace dhcp {
#line 3468 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 631:
-#line 2180 "dhcp6_parser.yy" // lalr1.cc:859
+ case 633:
+#line 2184 "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);
@@ -3476,8 +3476,8 @@ namespace isc { namespace dhcp {
#line 3477 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 632:
-#line 2185 "dhcp6_parser.yy" // lalr1.cc:859
+ case 634:
+#line 2189 "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);
@@ -3741,116 +3741,116 @@ namespace isc { namespace dhcp {
}
- const short int Dhcp6Parser::yypact_ninf_ = -781;
+ const short int Dhcp6Parser::yypact_ninf_ = -783;
const signed char Dhcp6Parser::yytable_ninf_ = -1;
const short int
Dhcp6Parser::yypact_[] =
{
- 435, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, 38, 41, 40, 42, 85,
- 92, 101, 107, 108, 116, 124, 128, 146, 158, 174,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, 41, -2,
- 17, 63, 27, 214, 67, 227, 403, 140, 65, 266,
- -41, 454, 64, -781, 215, 220, 221, 239, 256, -781,
- -781, -781, -781, -781, 259, -781, 33, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, 265, 269, 270,
- 287, 297, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, 303, -781, -781, -781, 68,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, 306, -781, 138,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- 315, 321, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, 139, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, 148, -781, -781, -781, -781, -781,
- 323, -781, 327, 333, -781, -781, -781, -781, -781, -781,
- 152, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, 290, 348,
- -781, -781, -781, -781, -781, -781, -781, -781, 310, -781,
- -781, 359, -781, -781, -781, 367, -781, -781, 357, 370,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, 373, 374, -781, -781, -781, -781, 372,
- 379, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, 172, -781, -781, -781, 381, -781, -781,
- 385, -781, 388, 389, -781, -781, 394, 395, 397, -781,
- -781, -781, -781, -781, 219, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, 233, -781, -781, -781, 41, 41, -781, 222, 399,
- 402, 404, 405, 406, -781, 17, -781, 407, 409, 411,
- 412, 228, 245, 255, 258, 267, 414, 417, 428, 429,
- 430, 431, 432, 433, 436, 437, 438, 439, 440, 277,
- 441, 442, 63, -781, 446, 289, 27, -781, 452, 453,
- 455, 459, 464, 296, 305, 466, 467, 468, 469, 470,
- 214, -781, 472, 67, -781, 473, 316, 477, 320, 331,
- 227, -781, 479, 481, 488, 490, 491, 492, 493, -781,
- 403, -781, 494, 495, 338, 500, 501, 502, 343, -781,
- 65, 504, 345, 347, -781, 266, 508, 509, -28, -781,
- 355, 510, 511, 356, 516, 360, 362, 517, 519, 366,
- 368, 369, 521, 522, 454, -781, 527, 64, -781, -781,
- -781, 530, 529, 531, 41, 41, 41, -781, 532, 533,
- 534, 537, -781, -781, -781, -781, -781, 538, 539, 540,
- 542, 376, 541, 545, 546, 547, 548, 550, 549, 551,
- -781, 552, 553, -781, 556, -781, -781, 557, 558, 396,
- 443, 444, -781, -781, -15, 556, 445, 591, 590, -781,
- 447, -781, 448, -781, 449, -781, -781, -781, 556, 556,
- 556, 450, 451, 456, 457, -781, 458, 460, -781, 461,
- 462, 463, -781, -781, 465, -781, -781, -781, 471, 41,
- -781, -781, 474, 475, -781, 476, -781, -781, -45, 483,
- -781, -781, -781, -73, 478, -781, 593, -781, 41, 63,
- 64, -781, -781, -781, 27, 184, 184, 592, 594, 595,
- 596, -781, -781, -781, 600, -52, 41, 99, 607, 609,
- 135, 132, 32, 454, -781, -781, 613, 618, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, 620, 543, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, 621, -781, 247, 253, 254, -781, -781, -781, -781,
- 625, 626, 627, 630, 634, -781, 636, 637, -781, 638,
- 639, 640, -781, 257, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, 264, -781, 641, 597, -781, -781, 642, 643,
- -781, -781, 644, 646, -781, -781, 645, 649, -781, -781,
- 647, 651, -781, -781, -781, 90, -781, -781, -781, 650,
- -781, -781, -781, 118, -781, -781, -781, -781, 171, -781,
- -781, 652, 654, -781, 655, 656, 657, 658, 659, 660,
- 291, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- 661, 662, 663, -781, -781, -781, -781, 301, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, 314,
- -781, -781, -781, 318, 484, -781, 664, 665, -781, -781,
- 666, 668, -781, -781, 667, 671, -781, -781, 669, -781,
- 243, -781, -781, -781, -781, 672, 674, 675, 676, 507,
- 518, 513, 520, 523, 677, 524, 525, 679, 526, 528,
- 535, 184, -781, -781, 184, -781, 592, 214, -781, 594,
- 65, -781, 595, 266, -781, 596, 386, -781, 600, -52,
- -781, -781, 99, -781, 18, 607, -781, -41, -781, 609,
- 536, 544, 554, 560, 562, 563, 135, -781, 685, 687,
- 565, 567, 574, 132, -781, 688, 689, 32, -781, -781,
- -781, 690, 691, 67, -781, 613, 227, -781, 618, 403,
- -781, 620, 693, -781, 105, 621, -781, 178, 577, 578,
- 583, -781, -781, -781, -781, -781, 584, -781, -781, 586,
- -781, -781, -781, -781, 330, -781, 336, -781, 692, -781,
- 694, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, 340, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, 697, -781, -781, -781, -781,
- -781, 695, 701, -781, -781, -781, -781, -781, 344, -781,
- -781, -781, -781, -781, -781, -781, -781, 293, 587, -781,
- -781, -781, -781, 589, 604, -781, -781, 606, 350, -781,
- 351, -781, 699, -781, 610, -781, 704, -781, -781, -781,
- -781, -781, 354, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, 386, -781, 705, 555, -781, 18, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, 706, 599, 707, 105, -781, -781, 611, -781, -781,
- 700, -781, 612, -781, -781, 648, -781, -781, 294, -781,
- 28, 648, -781, -781, 708, 709, 710, 361, -781, -781,
- -781, -781, -781, -781, 711, 614, 615, 623, 28, -781,
- 619, -781, -781, -781, -781, -781
+ 435, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, 38, 41, 40, 58, 85,
+ 92, 101, 107, 108, 116, 124, 128, 146, 152, 153,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, 41, -112,
+ 17, 63, 27, 214, 67, 227, 403, 144, 65, 186,
+ -41, 454, 35, -783, 175, 197, 217, 215, 240, -783,
+ -783, -783, -783, -783, 255, -783, 33, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, 259, 269, 270,
+ 287, 309, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, 310, -783, -783, -783, 68,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, 321, -783, 138,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ 323, 327, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, 139, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, 147, -783, -783, -783, -783, -783,
+ 333, -783, 353, 354, -783, -783, -783, -783, -783, -783,
+ 148, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, 236, 262,
+ -783, -783, -783, -783, -783, -783, -783, -783, 290, -783,
+ -783, 365, -783, -783, -783, 367, -783, -783, 344, 326,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, 369, 373, -783, -783, -783, -783, 370,
+ 377, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, 219, -783, -783, -783, 378, -783, -783,
+ 379, -783, 381, 385, -783, -783, 388, 397, 399, -783,
+ -783, -783, -783, -783, 222, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, 238, -783, -783, -783, 41, 41, -783, 229, 402,
+ 404, 405, 406, 407, -783, 17, -783, 409, 411, 412,
+ 414, 245, 258, 265, 267, 271, 417, 428, 430, 431,
+ 432, 433, 436, 437, 438, 439, 440, 441, 442, 277,
+ 446, 449, 63, -783, 452, 299, 27, -783, 453, 455,
+ 464, 465, 466, 296, 312, 467, 468, 469, 470, 473,
+ 214, -783, 474, 67, -783, 477, 320, 479, 330, 331,
+ 227, -783, 481, 490, 491, 492, 493, 494, 495, -783,
+ 403, -783, 496, 500, 343, 502, 503, 504, 347, -783,
+ 65, 505, 349, 350, -783, 186, 508, 511, -37, -783,
+ 355, 514, 516, 359, 518, 361, 362, 521, 522, 366,
+ 368, 372, 527, 529, 454, -783, 530, 35, -783, -783,
+ -783, 533, 531, 532, 41, 41, 41, -783, 534, 535,
+ 536, 539, -783, -783, -783, -783, -783, 540, 541, 544,
+ 543, 390, 547, 548, 550, 551, 552, 553, 554, 555,
+ -783, 556, 589, -783, 592, -783, -783, 593, 594, 398,
+ 443, 444, -783, -783, 293, 592, 445, 595, 596, -783,
+ 447, -783, 448, -783, 450, -783, -783, -783, 592, 592,
+ 592, 451, 456, 457, 458, -783, 459, 460, -783, 461,
+ 462, 463, -783, -783, 471, -783, -783, -783, 472, 41,
+ -783, -783, 475, 476, -783, 478, -783, -783, -45, 410,
+ -783, -783, -783, -73, 480, -783, 597, -783, 41, 63,
+ 35, -783, -783, -783, 27, 184, 184, 600, 603, 606,
+ 607, -783, -783, -783, 609, -52, 41, 89, 618, 619,
+ 70, 132, 32, 454, -783, -783, 620, 621, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, 622, -26, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, 623, -783, 239, 252, 253, -783, -783, -783, -783,
+ 627, 630, 631, 634, 636, -783, 638, 639, -783, 640,
+ 641, 642, -783, 254, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, 261, -783, 643, 557, -783, -783, 644, 598,
+ -783, -783, 645, 649, -783, -783, 647, 651, -783, -783,
+ 650, 652, -783, -783, -783, 90, -783, -783, -783, 653,
+ -783, -783, -783, 118, -783, -783, -783, -783, 294, -783,
+ -783, 654, 655, -783, 657, 658, 659, 660, 661, 662,
+ 264, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ 663, 664, 665, -783, -783, -783, -783, 291, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, 301,
+ -783, -783, -783, 304, 486, -783, 666, 667, -783, -783,
+ 668, 670, -783, -783, 669, 673, -783, -783, -783, 671,
+ -783, -783, 348, -783, -783, -783, -783, 674, 676, 677,
+ 678, 509, 484, 515, 519, 523, 680, 524, 525, 684,
+ 528, 537, 538, 184, -783, -783, 184, -783, 600, 214,
+ -783, 603, 65, -783, 606, 186, -783, 607, 386, -783,
+ 609, -52, -783, -783, 89, -783, 18, 618, -783, -41,
+ -783, 619, 542, 545, 546, 549, 558, 559, 70, -783,
+ 685, 687, 562, 564, 565, 132, -783, 688, 689, 32,
+ -783, -783, -783, 690, 691, 67, -783, 620, 227, -783,
+ 621, 403, -783, 622, 693, -783, 256, 623, -783, 178,
+ 568, 570, 577, -783, -783, -783, -783, -783, 579, -783,
+ -783, 580, -783, -783, -783, -783, 307, -783, 308, -783,
+ 692, -783, 695, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, 314, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, 694, -783, -783,
+ -783, -783, -783, 697, 698, -783, -783, -783, -783, -783,
+ 318, -783, -783, -783, -783, -783, -783, -783, -783, 295,
+ 585, -783, -783, -783, -783, 586, 588, -783, -783, 591,
+ 325, -783, 335, -783, 701, -783, 599, -783, 702, -783,
+ -783, -783, -783, -783, 336, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, 386, -783, 706, 605, -783, 18,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, 708, 601, 709, 256, -783, -783, 612,
+ -783, -783, 710, -783, 613, -783, -783, 707, -783, -783,
+ 356, -783, 42, 707, -783, -783, 712, 713, 714, 345,
+ -783, -783, -783, -783, -783, -783, 746, 611, 608, 616,
+ 42, -783, 626, -783, -783, -783, -783, -783
};
const unsigned short int
@@ -3862,13 +3862,13 @@ namespace isc { namespace dhcp {
1, 45, 38, 34, 33, 30, 31, 32, 37, 3,
35, 36, 58, 5, 70, 7, 107, 9, 241, 11,
386, 13, 411, 15, 441, 17, 311, 19, 319, 21,
- 356, 23, 206, 25, 536, 27, 593, 29, 47, 41,
+ 356, 23, 206, 25, 538, 27, 595, 29, 47, 41,
0, 0, 0, 0, 0, 0, 443, 0, 321, 358,
0, 0, 0, 49, 0, 48, 0, 0, 42, 68,
- 591, 585, 587, 589, 0, 67, 0, 60, 62, 64,
+ 593, 587, 589, 591, 0, 67, 0, 60, 62, 64,
65, 66, 63, 105, 119, 121, 123, 0, 0, 0,
0, 0, 233, 309, 348, 399, 401, 282, 179, 196,
- 187, 476, 198, 217, 497, 0, 521, 534, 99, 0,
+ 187, 478, 198, 217, 499, 0, 523, 536, 99, 0,
72, 74, 75, 76, 77, 78, 81, 82, 83, 84,
85, 87, 86, 91, 92, 79, 80, 89, 90, 97,
98, 88, 93, 94, 95, 96, 116, 0, 115, 0,
@@ -3885,11 +3885,11 @@ namespace isc { namespace dhcp {
323, 325, 337, 326, 327, 328, 344, 329, 330, 331,
332, 333, 372, 0, 0, 370, 371, 374, 375, 0,
359, 360, 362, 363, 364, 365, 366, 367, 368, 369,
- 213, 215, 210, 0, 208, 211, 212, 0, 558, 560,
- 0, 563, 0, 0, 567, 571, 0, 0, 0, 576,
- 583, 556, 554, 555, 0, 538, 540, 541, 542, 543,
- 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
- 598, 0, 595, 597, 46, 0, 0, 39, 0, 0,
+ 213, 215, 210, 0, 208, 211, 212, 0, 560, 562,
+ 0, 565, 0, 0, 569, 573, 0, 0, 0, 578,
+ 585, 558, 556, 557, 0, 540, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 600, 0, 597, 599, 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,
@@ -3900,107 +3900,107 @@ namespace isc { namespace dhcp {
0, 312, 0, 0, 0, 0, 0, 0, 0, 320,
0, 0, 0, 0, 357, 0, 0, 0, 0, 207,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 537, 0, 0, 594, 50,
+ 0, 0, 0, 0, 0, 539, 0, 0, 596, 50,
43, 0, 0, 0, 0, 0, 0, 61, 0, 0,
0, 0, 100, 101, 102, 103, 104, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 520, 0, 0, 73, 0, 118, 110, 0, 0, 0,
+ 522, 0, 0, 73, 0, 118, 110, 0, 0, 0,
0, 0, 280, 281, 0, 0, 0, 0, 0, 244,
0, 389, 0, 428, 0, 431, 432, 414, 0, 0,
0, 0, 0, 0, 0, 446, 0, 0, 336, 0,
0, 0, 347, 324, 0, 376, 377, 361, 0, 0,
- 209, 557, 0, 0, 562, 0, 565, 566, 0, 0,
- 573, 574, 575, 0, 0, 539, 0, 596, 0, 0,
- 0, 586, 588, 590, 0, 0, 0, 125, 235, 313,
+ 209, 559, 0, 0, 564, 0, 567, 568, 0, 0,
+ 575, 576, 577, 0, 0, 541, 0, 598, 0, 0,
+ 0, 588, 590, 592, 0, 0, 0, 125, 235, 313,
350, 40, 400, 402, 284, 0, 47, 0, 0, 200,
0, 0, 0, 0, 51, 117, 380, 405, 266, 268,
270, 277, 278, 279, 276, 274, 272, 435, 0, 398,
427, 430, 471, 459, 461, 463, 465, 467, 469, 339,
- 165, 343, 341, 346, 373, 214, 216, 559, 561, 564,
- 569, 570, 568, 572, 578, 579, 580, 581, 582, 577,
- 584, 0, 44, 0, 0, 0, 151, 157, 159, 161,
+ 165, 343, 341, 346, 373, 214, 216, 561, 563, 566,
+ 571, 572, 570, 574, 580, 581, 582, 583, 584, 579,
+ 586, 0, 44, 0, 0, 0, 151, 157, 159, 161,
0, 0, 0, 0, 0, 174, 0, 0, 177, 0,
0, 0, 150, 0, 131, 133, 134, 135, 136, 137,
138, 139, 140, 141, 142, 145, 146, 147, 148, 143,
144, 149, 0, 129, 0, 126, 127, 239, 0, 236,
237, 317, 0, 314, 315, 354, 0, 351, 352, 288,
0, 285, 286, 185, 186, 0, 181, 183, 184, 0,
- 194, 195, 191, 0, 189, 192, 193, 480, 0, 478,
+ 194, 195, 191, 0, 189, 192, 193, 482, 0, 480,
204, 0, 201, 202, 0, 0, 0, 0, 0, 0,
- 0, 219, 221, 222, 223, 224, 225, 226, 510, 516,
- 0, 0, 0, 509, 506, 507, 508, 0, 499, 501,
- 504, 502, 503, 505, 530, 532, 529, 527, 528, 0,
- 523, 525, 526, 0, 53, 384, 0, 381, 382, 409,
- 0, 406, 407, 439, 0, 436, 437, 474, 0, 602,
- 0, 600, 69, 592, 106, 0, 0, 0, 0, 0,
+ 0, 219, 221, 222, 223, 224, 225, 226, 512, 518,
+ 0, 0, 0, 511, 508, 509, 510, 0, 501, 503,
+ 506, 504, 505, 507, 532, 534, 531, 529, 530, 0,
+ 525, 527, 528, 0, 53, 384, 0, 381, 382, 409,
+ 0, 406, 407, 439, 0, 436, 437, 476, 475, 0,
+ 474, 604, 0, 602, 69, 594, 106, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 120, 122, 0, 124, 0, 0, 234, 0,
- 321, 310, 0, 358, 349, 0, 0, 283, 0, 0,
- 180, 197, 0, 188, 482, 0, 477, 0, 199, 0,
- 0, 0, 0, 0, 0, 0, 0, 218, 0, 0,
- 0, 0, 0, 0, 498, 0, 0, 0, 522, 535,
- 55, 0, 54, 0, 379, 0, 0, 404, 0, 443,
- 434, 0, 0, 473, 0, 0, 599, 0, 0, 0,
- 0, 163, 166, 167, 168, 169, 0, 176, 170, 0,
- 171, 172, 173, 132, 0, 128, 0, 238, 0, 316,
- 0, 353, 308, 303, 305, 296, 297, 292, 293, 294,
- 295, 301, 302, 300, 304, 0, 290, 298, 306, 307,
- 299, 287, 182, 190, 494, 0, 492, 493, 489, 490,
- 491, 0, 483, 484, 486, 487, 488, 479, 0, 203,
- 227, 228, 229, 230, 231, 232, 220, 0, 0, 515,
- 518, 519, 500, 0, 0, 524, 52, 0, 0, 383,
- 0, 408, 0, 438, 0, 616, 0, 614, 612, 606,
- 610, 611, 0, 604, 608, 609, 607, 601, 153, 154,
- 155, 156, 152, 158, 160, 162, 175, 178, 130, 240,
- 318, 355, 0, 289, 0, 0, 481, 0, 205, 512,
- 513, 514, 511, 517, 531, 533, 56, 385, 410, 440,
- 475, 0, 0, 0, 0, 603, 291, 0, 496, 485,
- 0, 613, 0, 605, 495, 0, 615, 620, 0, 618,
- 0, 0, 617, 628, 0, 0, 0, 0, 622, 624,
- 625, 626, 627, 619, 0, 0, 0, 0, 0, 621,
- 0, 630, 631, 632, 623, 629
+ 0, 0, 0, 0, 120, 122, 0, 124, 0, 0,
+ 234, 0, 321, 310, 0, 358, 349, 0, 0, 283,
+ 0, 0, 180, 197, 0, 188, 484, 0, 479, 0,
+ 199, 0, 0, 0, 0, 0, 0, 0, 0, 218,
+ 0, 0, 0, 0, 0, 0, 500, 0, 0, 0,
+ 524, 537, 55, 0, 54, 0, 379, 0, 0, 404,
+ 0, 443, 434, 0, 0, 473, 0, 0, 601, 0,
+ 0, 0, 0, 163, 166, 167, 168, 169, 0, 176,
+ 170, 0, 171, 172, 173, 132, 0, 128, 0, 238,
+ 0, 316, 0, 353, 308, 303, 305, 296, 297, 292,
+ 293, 294, 295, 301, 302, 300, 304, 0, 290, 298,
+ 306, 307, 299, 287, 182, 190, 496, 0, 494, 495,
+ 491, 492, 493, 0, 485, 486, 488, 489, 490, 481,
+ 0, 203, 227, 228, 229, 230, 231, 232, 220, 0,
+ 0, 517, 520, 521, 502, 0, 0, 526, 52, 0,
+ 0, 383, 0, 408, 0, 438, 0, 618, 0, 616,
+ 614, 608, 612, 613, 0, 606, 610, 611, 609, 603,
+ 153, 154, 155, 156, 152, 158, 160, 162, 175, 178,
+ 130, 240, 318, 355, 0, 289, 0, 0, 483, 0,
+ 205, 514, 515, 516, 513, 519, 533, 535, 56, 385,
+ 410, 440, 477, 0, 0, 0, 0, 605, 291, 0,
+ 498, 487, 0, 615, 0, 607, 497, 0, 617, 622,
+ 0, 620, 0, 0, 619, 630, 0, 0, 0, 0,
+ 624, 626, 627, 628, 629, 621, 0, 0, 0, 0,
+ 0, 623, 0, 632, 633, 634, 625, 631
};
const short int
Dhcp6Parser::yypgoto_[] =
{
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, 6, -781, 225, -781,
- -781, -781, -781, -781, -781, 185, -781, -376, -781, -781,
- -781, -70, -781, -781, -781, 410, -781, -781, -781, -781,
- 169, 382, -66, -56, -55, -54, -781, -781, -781, -781,
- -781, 204, 392, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -10, -781, -541, 1, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -34, -781,
- -559, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -13, -554, -781, -781,
- -781, -781, -14, -781, -781, -781, -781, -781, -781, -781,
- -781, -18, -781, -781, -781, -11, 365, -781, -781, -781,
- -781, -781, -781, -781, -22, -781, -781, -781, -781, -781,
- -781, -780, -781, -781, -781, 8, -781, -781, -781, 15,
- 413, -781, -781, -776, -781, -773, -781, -32, -781, -21,
- -781, -772, -781, -781, -781, -771, -781, -781, -781, -781,
- 7, -781, -781, -156, 730, -781, -781, -781, -781, -781,
- 19, -781, -781, -781, 23, -781, 398, -781, -65, -781,
- -781, -781, -781, -781, -58, -781, -781, -781, -781, -781,
- 12, -781, -781, -781, 14, -781, -781, -781, 21, -781,
- 400, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -16, -781, -781, -781, -9, 427, -781, -781,
- -44, -781, -6, -781, -781, -781, -781, -781, -12, -781,
- -781, -781, -8, 422, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -7, -781, -781, -781, -4,
- -781, 419, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -770, -781, -781, -781,
- -781, -781, -781, 26, -781, -781, -781, -144, -781, -781,
- -781, -781, -781, -781, -781, 9, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, 10, -781,
- -781, -781, -781, -781, -781, -781, -781, 263, 408, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, -781, -781, -781, -781, -781, -781, -781, -781,
- -781, -781, 292, 393, -781, -781, -781, -1, -781, -781,
- -145, -781, -781, -781, -781, -781, -781, -160, -781, -781,
- -175, -781, -781, -781, -781, -781
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, 6, -783, 187, -783,
+ -783, -783, -783, -783, -783, 129, -783, -376, -783, -783,
+ -783, -70, -783, -783, -783, 408, -783, -783, -783, -783,
+ 207, 395, -66, -56, -55, -54, -783, -783, -783, -783,
+ -783, 203, 419, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -9, -783, -541, -3, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -34, -783,
+ -559, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -19, -554, -783, -783,
+ -783, -783, -20, -783, -783, -783, -783, -783, -783, -783,
+ -783, -23, -783, -783, -783, -16, 371, -783, -783, -783,
+ -783, -783, -783, -783, -28, -783, -783, -783, -783, -783,
+ -783, -782, -783, -783, -783, 5, -783, -783, -783, 9,
+ 415, -783, -783, -778, -783, -775, -783, -32, -783, -21,
+ -783, -774, -783, -783, -783, -773, -783, -783, -783, -783,
+ 4, -783, -783, -157, 731, -783, -783, -783, -783, -783,
+ 15, -783, -783, -783, 19, -783, 393, -783, -65, -783,
+ -783, -783, -783, -783, -58, -783, -783, -783, -783, -783,
+ 12, -783, -783, -783, 23, -783, -783, -783, 20, -783,
+ 391, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -15, -783, -783, -783, -14, 434, -783, -783,
+ -44, -783, -6, -783, -783, -783, -783, -783, -12, -783,
+ -783, -783, -13, 424, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -17, -783, -783, -783, -11,
+ -783, 421, 246, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -772, -783, -783, -783,
+ -783, -783, -783, -783, 26, -783, -783, -783, -133, -783,
+ -783, -783, -783, -783, -783, -783, 13, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, 8,
+ -783, -783, -783, -783, -783, -783, -783, -783, 266, 400,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
+ -783, -783, -783, 292, 394, -783, -783, -783, -4, -783,
+ -783, -141, -783, -783, -783, -783, -783, -783, -155, -783,
+ -783, -174, -783, -783, -783, -783, -783
};
const short int
@@ -4008,156 +4008,157 @@ namespace isc { namespace dhcp {
{
-1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 83, 39, 40, 69,
- 562, 87, 88, 41, 68, 84, 85, 575, 744, 831,
- 832, 642, 43, 70, 96, 97, 98, 339, 45, 71,
+ 562, 87, 88, 41, 68, 84, 85, 575, 744, 833,
+ 834, 642, 43, 70, 96, 97, 98, 339, 45, 71,
129, 130, 131, 132, 133, 134, 135, 136, 347, 47,
72, 159, 160, 161, 374, 162, 137, 348, 138, 349,
- 139, 350, 664, 665, 666, 784, 643, 644, 645, 765,
- 952, 646, 766, 647, 767, 648, 768, 649, 650, 413,
- 651, 652, 653, 654, 655, 656, 657, 658, 659, 774,
- 660, 661, 777, 140, 362, 685, 686, 687, 688, 141,
+ 139, 350, 664, 665, 666, 786, 643, 644, 645, 767,
+ 954, 646, 768, 647, 769, 648, 770, 649, 650, 413,
+ 651, 652, 653, 654, 655, 656, 657, 658, 659, 776,
+ 660, 661, 779, 140, 362, 685, 686, 687, 688, 141,
364, 693, 694, 695, 696, 142, 363, 143, 366, 701,
- 702, 703, 807, 63, 80, 293, 294, 295, 426, 296,
+ 702, 703, 809, 63, 80, 293, 294, 295, 426, 296,
427, 144, 367, 710, 711, 712, 713, 714, 715, 716,
- 717, 145, 356, 668, 669, 670, 787, 49, 73, 182,
+ 717, 145, 356, 668, 669, 670, 789, 49, 73, 182,
183, 184, 380, 185, 381, 186, 382, 187, 387, 188,
386, 189, 385, 584, 190, 191, 146, 361, 680, 681,
- 682, 796, 885, 886, 147, 357, 57, 77, 672, 673,
- 674, 790, 59, 78, 258, 259, 260, 261, 262, 263,
+ 682, 798, 887, 888, 147, 357, 57, 77, 672, 673,
+ 674, 792, 59, 78, 258, 259, 260, 261, 262, 263,
264, 412, 265, 416, 266, 415, 267, 268, 417, 269,
- 148, 358, 676, 677, 678, 793, 61, 79, 279, 280,
+ 148, 358, 676, 677, 678, 795, 61, 79, 279, 280,
281, 282, 283, 421, 284, 285, 286, 287, 193, 378,
- 746, 747, 748, 833, 51, 74, 204, 205, 206, 392,
- 149, 359, 150, 360, 196, 379, 750, 751, 752, 836,
+ 746, 747, 748, 835, 51, 74, 204, 205, 206, 392,
+ 149, 359, 150, 360, 196, 379, 750, 751, 752, 838,
53, 75, 220, 221, 222, 395, 223, 224, 397, 225,
- 226, 197, 388, 754, 755, 756, 839, 55, 76, 238,
+ 226, 197, 388, 754, 755, 756, 841, 55, 76, 238,
239, 240, 241, 403, 242, 404, 243, 405, 244, 406,
- 245, 407, 246, 408, 247, 402, 198, 389, 758, 842,
- 151, 365, 698, 699, 804, 901, 902, 903, 904, 905,
- 964, 906, 152, 368, 727, 728, 729, 818, 972, 730,
- 731, 819, 732, 733, 153, 154, 370, 739, 740, 741,
- 825, 742, 826, 155, 371, 65, 81, 314, 315, 316,
- 317, 431, 318, 432, 319, 320, 434, 321, 322, 323,
- 437, 612, 324, 438, 325, 326, 327, 328, 442, 619,
- 329, 443, 99, 341, 100, 342, 101, 343, 102, 340,
- 67, 82, 331, 332, 333, 446, 760, 761, 844, 942,
- 943, 944, 945, 983, 946, 981, 998, 999, 1000, 1007,
- 1008, 1009, 1014, 1010, 1011, 1012
+ 245, 407, 246, 408, 247, 402, 198, 389, 759, 760,
+ 844, 151, 365, 698, 699, 806, 903, 904, 905, 906,
+ 907, 966, 908, 152, 368, 727, 728, 729, 820, 974,
+ 730, 731, 821, 732, 733, 153, 154, 370, 739, 740,
+ 741, 827, 742, 828, 155, 371, 65, 81, 314, 315,
+ 316, 317, 431, 318, 432, 319, 320, 434, 321, 322,
+ 323, 437, 612, 324, 438, 325, 326, 327, 328, 442,
+ 619, 329, 443, 99, 341, 100, 342, 101, 343, 102,
+ 340, 67, 82, 331, 332, 333, 446, 762, 763, 846,
+ 944, 945, 946, 947, 985, 948, 983, 1000, 1001, 1002,
+ 1009, 1010, 1011, 1016, 1012, 1013, 1014
};
const unsigned short int
Dhcp6Parser::yytable_[] =
{
95, 128, 158, 177, 200, 214, 234, 178, 256, 275,
- 292, 311, 724, 692, 277, 662, 878, 179, 180, 181,
- 879, 278, 38, 880, 883, 884, 890, 89, 163, 194,
+ 292, 311, 724, 692, 277, 662, 880, 179, 180, 181,
+ 881, 278, 38, 882, 885, 886, 892, 89, 163, 194,
207, 218, 236, 683, 270, 288, 345, 312, 30, 156,
- 157, 346, 201, 215, 257, 276, 31, 42, 32, 44,
- 33, 290, 291, 202, 216, 581, 582, 583, 614, 615,
- 616, 617, 114, 250, 290, 291, 164, 195, 208, 219,
+ 157, 346, 201, 215, 257, 276, 31, 42, 32, 86,
+ 33, 290, 291, 202, 216, 290, 291, 228, 614, 615,
+ 616, 617, 114, 250, 757, 44, 164, 195, 208, 219,
237, 372, 271, 289, 103, 313, 373, 104, 105, 106,
115, 116, 249, 610, 611, 192, 203, 217, 235, 115,
- 116, 618, 46, 799, 115, 116, 800, 894, 895, 48,
+ 116, 618, 46, 801, 115, 116, 802, 896, 897, 48,
107, 108, 109, 110, 111, 112, 113, 114, 50, 684,
250, 114, 251, 252, 52, 54, 253, 254, 255, 585,
- 94, 802, 199, 56, 803, 115, 116, 115, 116, 115,
+ 94, 804, 199, 56, 805, 115, 116, 115, 116, 115,
116, 58, 592, 593, 594, 60, 117, 118, 119, 120,
121, 376, 390, 734, 735, 173, 377, 391, 174, 718,
- 250, 393, 90, 62, 122, 400, 394, 123, 631, 86,
- 401, 91, 92, 93, 124, 64, 1003, 115, 116, 1004,
- 1005, 1006, 125, 126, 805, 428, 127, 806, 94, 94,
- 429, 66, 878, 113, 683, 690, 879, 691, 94, 880,
- 883, 884, 890, 94, 115, 116, 948, 949, 950, 951,
- 330, 626, 34, 35, 36, 37, 627, 628, 629, 630,
+ 393, 400, 90, 62, 122, 394, 401, 123, 631, 64,
+ 66, 91, 92, 93, 124, 704, 705, 706, 707, 708,
+ 709, 330, 125, 126, 683, 690, 127, 691, 94, 94,
+ 1005, 334, 880, 1006, 1007, 1008, 881, 113, 94, 882,
+ 885, 886, 892, 94, 115, 116, 950, 951, 952, 953,
+ 335, 626, 34, 35, 36, 37, 627, 628, 629, 630,
631, 632, 633, 634, 635, 636, 637, 638, 639, 640,
- 641, 334, 444, 335, 94, 336, 94, 445, 94, 250,
- 704, 705, 706, 707, 708, 709, 447, 719, 720, 721,
- 722, 448, 935, 864, 936, 937, 845, 337, 692, 846,
- 372, 107, 108, 109, 110, 762, 447, 376, 114, 338,
- 781, 763, 764, 344, 724, 782, 94, 781, 165, 351,
- 166, 114, 783, 352, 353, 95, 115, 116, 167, 168,
+ 641, 336, 428, 337, 94, 444, 94, 429, 94, 250,
+ 445, 250, 272, 251, 252, 273, 274, 719, 720, 721,
+ 722, 447, 372, 338, 409, 866, 448, 764, 115, 116,
+ 692, 107, 108, 109, 110, 447, 376, 783, 114, 344,
+ 765, 766, 784, 351, 783, 410, 724, 818, 165, 785,
+ 166, 114, 819, 352, 353, 95, 115, 116, 167, 168,
169, 170, 171, 172, 209, 210, 211, 212, 213, 115,
- 116, 354, 173, 94, 816, 174, 175, 1001, 409, 817,
- 1002, 355, 128, 176, 823, 173, 158, 369, 174, 824,
- 375, 250, 272, 251, 252, 273, 274, 827, 411, 383,
- 177, 444, 828, 200, 178, 384, 829, 396, 115, 116,
- 214, 398, 163, 781, 179, 180, 181, 399, 958, 390,
- 234, 449, 450, 962, 959, 94, 194, 428, 963, 207,
- 256, 410, 968, 393, 400, 275, 218, 984, 977, 978,
- 277, 201, 985, 414, 1018, 419, 236, 278, 215, 1019,
- 164, 418, 202, 420, 311, 94, 270, 422, 423, 216,
- 424, 288, 425, 451, 195, 430, 257, 208, 94, 433,
- 462, 276, 435, 436, 219, 969, 970, 971, 439, 440,
- 312, 441, 192, 452, 237, 203, 453, 463, 454, 455,
- 456, 458, 217, 459, 271, 460, 461, 464, 467, 289,
- 465, 468, 235, 107, 108, 109, 110, 94, 112, 466,
- 114, 250, 469, 470, 471, 472, 473, 474, 313, 480,
- 475, 476, 477, 478, 479, 481, 482, 114, 115, 116,
- 484, 168, 169, 485, 171, 172, 487, 488, 492, 489,
- 551, 552, 553, 490, 173, 115, 116, 174, 491, 493,
- 494, 495, 496, 497, 498, 176, 500, 502, 503, 128,
- 227, 504, 505, 508, 158, 509, 228, 229, 230, 231,
- 232, 233, 510, 506, 511, 512, 513, 514, 516, 517,
- 518, 723, 736, 311, 519, 520, 521, 522, 524, 525,
- 163, 526, 528, 529, 532, 533, 115, 116, 534, 531,
- 535, 538, 536, 539, 537, 543, 544, 725, 737, 312,
- 540, 546, 541, 542, 548, 606, 549, 563, 550, 554,
- 555, 556, 557, 558, 559, 560, 564, 94, 164, 32,
- 565, 566, 567, 568, 622, 569, 570, 578, 571, 572,
- 573, 574, 576, 577, 94, 726, 738, 313, 297, 298,
+ 116, 354, 173, 94, 825, 174, 175, 807, 411, 826,
+ 808, 250, 128, 176, 829, 173, 158, 444, 174, 830,
+ 783, 390, 831, 355, 369, 960, 961, 964, 115, 116,
+ 177, 428, 965, 200, 178, 375, 970, 383, 393, 420,
+ 214, 384, 163, 979, 179, 180, 181, 396, 400, 986,
+ 234, 449, 450, 980, 987, 94, 194, 94, 1020, 207,
+ 256, 847, 419, 1021, 848, 275, 218, 398, 399, 1003,
+ 277, 201, 1004, 581, 582, 583, 236, 278, 215, 414,
+ 164, 418, 202, 422, 311, 94, 270, 423, 424, 216,
+ 425, 288, 430, 433, 195, 435, 257, 208, 94, 436,
+ 451, 276, 439, 937, 219, 938, 939, 971, 972, 973,
+ 312, 440, 192, 441, 237, 203, 452, 462, 453, 454,
+ 455, 456, 217, 458, 271, 459, 460, 94, 461, 289,
+ 463, 467, 235, 107, 108, 109, 110, 464, 112, 465,
+ 114, 250, 468, 466, 469, 470, 471, 472, 313, 480,
+ 473, 474, 475, 476, 477, 478, 479, 114, 115, 116,
+ 481, 168, 169, 482, 171, 172, 484, 487, 492, 488,
+ 551, 552, 553, 485, 173, 115, 116, 174, 489, 490,
+ 491, 494, 495, 496, 497, 176, 493, 498, 500, 128,
+ 227, 502, 503, 504, 158, 508, 228, 229, 230, 231,
+ 232, 233, 505, 506, 509, 510, 511, 512, 513, 514,
+ 516, 723, 736, 311, 517, 518, 519, 520, 521, 524,
+ 163, 522, 528, 525, 526, 529, 115, 116, 532, 531,
+ 533, 534, 535, 536, 537, 538, 539, 725, 737, 312,
+ 540, 543, 541, 544, 546, 606, 542, 548, 549, 550,
+ 613, 554, 555, 556, 557, 558, 559, 94, 164, 560,
+ 32, 563, 564, 565, 622, 566, 567, 568, 569, 578,
+ 788, 570, 571, 572, 94, 726, 738, 313, 297, 298,
299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
309, 310, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 587, 588, 621, 663,
- 786, 667, 671, 675, 579, 580, 586, 679, 589, 590,
- 591, 595, 596, 613, 697, 94, 700, 597, 598, 599,
- 745, 600, 601, 602, 603, 749, 604, 753, 759, 769,
- 770, 771, 605, 757, 772, 607, 608, 609, 773, 620,
- 775, 776, 778, 779, 780, 830, 789, 785, 788, 792,
- 791, 794, 795, 797, 798, 997, 801, 809, 808, 810,
- 811, 812, 813, 814, 815, 820, 821, 822, 835, 851,
- 834, 838, 837, 840, 841, 853, 847, 843, 848, 849,
- 850, 856, 852, 859, 854, 855, 857, 858, 860, 917,
- 861, 918, 923, 924, 927, 561, 926, 934, 910, 862,
- 960, 965, 961, 966, 967, 995, 911, 979, 982, 987,
- 990, 992, 1015, 1016, 1017, 1020, 912, 177, 623, 988,
- 256, 178, 913, 275, 914, 915, 872, 919, 277, 920,
- 873, 179, 180, 181, 896, 278, 921, 292, 953, 954,
- 874, 875, 876, 194, 955, 956, 270, 957, 973, 288,
- 974, 689, 888, 723, 483, 457, 257, 736, 625, 276,
- 899, 991, 877, 200, 881, 975, 214, 976, 486, 234,
- 897, 980, 994, 996, 938, 882, 865, 1022, 1021, 725,
- 1025, 195, 863, 737, 271, 1023, 892, 289, 893, 207,
- 889, 909, 218, 530, 916, 236, 908, 867, 900, 192,
- 940, 201, 866, 499, 215, 891, 986, 248, 887, 871,
- 939, 869, 202, 868, 870, 216, 898, 726, 523, 929,
- 501, 738, 507, 989, 928, 527, 931, 208, 930, 515,
- 219, 907, 922, 237, 933, 932, 743, 925, 941, 993,
- 547, 1013, 624, 1024, 947, 203, 0, 0, 217, 0,
- 0, 235, 545, 0, 0, 0, 0, 0, 0, 0,
+ 9, 10, 11, 12, 13, 14, 573, 574, 576, 577,
+ 587, 791, 621, 588, 579, 580, 586, 663, 589, 590,
+ 667, 591, 595, 671, 675, 94, 679, 596, 597, 598,
+ 599, 600, 601, 602, 603, 697, 700, 745, 749, 753,
+ 761, 771, 604, 605, 772, 773, 607, 608, 774, 609,
+ 775, 620, 777, 778, 780, 781, 782, 832, 854, 787,
+ 790, 793, 794, 796, 797, 800, 799, 561, 811, 803,
+ 810, 812, 813, 814, 815, 816, 817, 822, 823, 824,
+ 837, 853, 836, 840, 839, 842, 843, 855, 849, 845,
+ 850, 851, 852, 856, 858, 857, 859, 860, 861, 919,
+ 862, 920, 925, 926, 929, 689, 928, 936, 967, 863,
+ 962, 969, 864, 963, 912, 968, 984, 913, 914, 981,
+ 989, 915, 992, 994, 999, 997, 1017, 1018, 1019, 177,
+ 916, 917, 256, 178, 921, 275, 922, 923, 874, 955,
+ 277, 956, 875, 179, 180, 181, 898, 278, 957, 292,
+ 958, 959, 876, 877, 878, 194, 975, 976, 270, 977,
+ 1022, 288, 978, 457, 890, 723, 623, 625, 257, 736,
+ 982, 276, 901, 993, 879, 200, 883, 483, 214, 990,
+ 1024, 234, 899, 996, 998, 1023, 940, 884, 1025, 867,
+ 865, 725, 894, 195, 895, 737, 271, 1027, 911, 289,
+ 918, 207, 891, 910, 218, 486, 869, 236, 868, 530,
+ 902, 192, 942, 201, 893, 499, 215, 988, 248, 871,
+ 889, 870, 941, 523, 202, 872, 527, 216, 900, 726,
+ 873, 930, 931, 738, 507, 932, 935, 501, 933, 208,
+ 934, 515, 219, 909, 758, 237, 991, 927, 924, 743,
+ 943, 547, 624, 949, 545, 995, 1026, 203, 1015, 0,
+ 217, 0, 0, 235, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 872, 0, 0, 0, 873, 896, 0, 0,
- 0, 0, 0, 0, 0, 0, 874, 875, 876, 0,
- 0, 0, 0, 0, 938, 0, 0, 0, 888, 0,
- 0, 0, 0, 899, 0, 0, 0, 0, 877, 0,
- 881, 0, 0, 897, 0, 0, 0, 0, 0, 0,
- 940, 882, 0, 0, 0, 0, 0, 0, 0, 0,
- 939, 0, 0, 0, 0, 0, 889, 0, 0, 0,
- 0, 900, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 887, 0, 0, 0, 941, 898
+ 0, 0, 0, 0, 874, 0, 0, 0, 875, 898,
+ 0, 0, 0, 0, 0, 0, 0, 0, 876, 877,
+ 878, 0, 0, 0, 0, 0, 940, 0, 0, 0,
+ 890, 0, 0, 0, 0, 901, 0, 0, 0, 0,
+ 879, 0, 883, 0, 0, 899, 0, 0, 0, 0,
+ 0, 0, 942, 884, 0, 0, 0, 0, 0, 0,
+ 0, 0, 941, 0, 0, 0, 0, 0, 891, 0,
+ 0, 0, 0, 902, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 889, 0, 0, 0,
+ 943, 900
};
const short int
Dhcp6Parser::yycheck_[] =
{
70, 71, 72, 73, 74, 75, 76, 73, 78, 79,
- 80, 81, 571, 567, 79, 556, 796, 73, 73, 73,
- 796, 79, 16, 796, 796, 796, 796, 10, 72, 73,
+ 80, 81, 571, 567, 79, 556, 798, 73, 73, 73,
+ 798, 79, 16, 798, 798, 798, 798, 10, 72, 73,
74, 75, 76, 85, 78, 79, 3, 81, 0, 12,
- 13, 8, 74, 75, 78, 79, 5, 7, 7, 7,
- 9, 92, 93, 74, 75, 70, 71, 72, 131, 132,
- 133, 134, 44, 45, 92, 93, 72, 73, 74, 75,
+ 13, 8, 74, 75, 78, 79, 5, 7, 7, 161,
+ 9, 92, 93, 74, 75, 92, 93, 83, 131, 132,
+ 133, 134, 44, 45, 90, 7, 72, 73, 74, 75,
76, 3, 78, 79, 11, 81, 8, 14, 15, 16,
62, 63, 17, 128, 129, 73, 74, 75, 76, 62,
63, 164, 7, 3, 62, 63, 6, 79, 80, 7,
@@ -4166,89 +4167,90 @@ namespace isc { namespace dhcp {
161, 3, 55, 7, 6, 62, 63, 62, 63, 62,
63, 7, 508, 509, 510, 7, 73, 74, 75, 76,
77, 3, 3, 111, 112, 78, 8, 8, 81, 17,
- 45, 3, 135, 7, 91, 3, 8, 94, 26, 161,
- 8, 144, 145, 146, 101, 7, 138, 62, 63, 141,
- 142, 143, 109, 110, 3, 3, 113, 6, 161, 161,
- 8, 7, 962, 43, 85, 86, 962, 88, 161, 962,
- 962, 962, 962, 161, 62, 63, 18, 19, 20, 21,
- 136, 17, 161, 162, 163, 164, 22, 23, 24, 25,
+ 3, 3, 135, 7, 91, 8, 8, 94, 26, 7,
+ 7, 144, 145, 146, 101, 95, 96, 97, 98, 99,
+ 100, 136, 109, 110, 85, 86, 113, 88, 161, 161,
+ 138, 6, 964, 141, 142, 143, 964, 43, 161, 964,
+ 964, 964, 964, 161, 62, 63, 18, 19, 20, 21,
+ 3, 17, 161, 162, 163, 164, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 6, 3, 3, 161, 4, 161, 8, 161, 45,
- 95, 96, 97, 98, 99, 100, 3, 105, 106, 107,
- 108, 8, 137, 784, 139, 140, 3, 8, 802, 6,
- 3, 37, 38, 39, 40, 8, 3, 3, 44, 3,
- 3, 8, 8, 4, 823, 8, 161, 3, 54, 4,
+ 36, 4, 3, 8, 161, 3, 161, 8, 161, 45,
+ 8, 45, 46, 47, 48, 49, 50, 105, 106, 107,
+ 108, 3, 3, 3, 8, 786, 8, 8, 62, 63,
+ 804, 37, 38, 39, 40, 3, 3, 3, 44, 4,
+ 8, 8, 8, 4, 3, 3, 825, 3, 54, 8,
56, 44, 8, 4, 4, 345, 62, 63, 64, 65,
66, 67, 68, 69, 57, 58, 59, 60, 61, 62,
63, 4, 78, 161, 3, 81, 82, 3, 8, 8,
- 6, 4, 372, 89, 3, 78, 376, 4, 81, 8,
- 4, 45, 46, 47, 48, 49, 50, 3, 8, 4,
- 390, 3, 8, 393, 390, 4, 8, 4, 62, 63,
- 400, 4, 376, 3, 390, 390, 390, 4, 8, 3,
- 410, 335, 336, 3, 8, 161, 390, 3, 8, 393,
- 420, 3, 8, 3, 3, 425, 400, 3, 8, 8,
- 425, 393, 8, 4, 3, 8, 410, 425, 400, 8,
- 376, 4, 393, 3, 444, 161, 420, 4, 4, 400,
- 8, 425, 3, 161, 390, 4, 420, 393, 161, 4,
- 162, 425, 4, 4, 400, 102, 103, 104, 4, 4,
+ 6, 45, 372, 89, 3, 78, 376, 3, 81, 8,
+ 3, 3, 8, 4, 4, 8, 8, 3, 62, 63,
+ 390, 3, 8, 393, 390, 4, 8, 4, 3, 3,
+ 400, 4, 376, 8, 390, 390, 390, 4, 3, 3,
+ 410, 335, 336, 8, 8, 161, 390, 161, 3, 393,
+ 420, 3, 8, 8, 6, 425, 400, 4, 4, 3,
+ 425, 393, 6, 70, 71, 72, 410, 425, 400, 4,
+ 376, 4, 393, 4, 444, 161, 420, 4, 8, 400,
+ 3, 425, 4, 4, 390, 4, 420, 393, 161, 4,
+ 161, 425, 4, 137, 400, 139, 140, 102, 103, 104,
444, 4, 390, 4, 410, 393, 4, 162, 4, 4,
- 4, 4, 400, 4, 420, 4, 4, 162, 4, 425,
- 162, 4, 410, 37, 38, 39, 40, 161, 42, 162,
- 44, 45, 4, 4, 4, 4, 4, 4, 444, 162,
+ 4, 4, 400, 4, 420, 4, 4, 161, 4, 425,
+ 162, 4, 410, 37, 38, 39, 40, 162, 42, 162,
+ 44, 45, 4, 162, 4, 4, 4, 4, 444, 162,
4, 4, 4, 4, 4, 4, 4, 44, 62, 63,
- 4, 65, 66, 164, 68, 69, 4, 4, 162, 4,
- 454, 455, 456, 4, 78, 62, 63, 81, 4, 164,
- 4, 4, 4, 4, 4, 89, 4, 4, 162, 549,
+ 4, 65, 66, 4, 68, 69, 4, 4, 162, 4,
+ 454, 455, 456, 164, 78, 62, 63, 81, 4, 4,
+ 4, 4, 4, 4, 4, 89, 164, 4, 4, 549,
77, 4, 162, 4, 554, 4, 83, 84, 85, 86,
- 87, 88, 4, 162, 4, 4, 4, 4, 4, 4,
- 162, 571, 572, 573, 4, 4, 4, 164, 4, 164,
- 554, 164, 4, 4, 4, 4, 62, 63, 162, 164,
- 4, 4, 162, 4, 162, 4, 4, 571, 572, 573,
- 164, 4, 164, 164, 4, 529, 7, 161, 7, 7,
- 7, 7, 5, 5, 5, 5, 5, 161, 554, 7,
- 5, 5, 5, 5, 548, 5, 7, 161, 7, 7,
- 7, 5, 5, 5, 161, 571, 572, 573, 114, 115,
+ 87, 88, 162, 162, 4, 4, 4, 4, 4, 4,
+ 4, 571, 572, 573, 4, 162, 4, 4, 4, 4,
+ 554, 164, 4, 164, 164, 4, 62, 63, 4, 164,
+ 4, 162, 4, 162, 162, 4, 4, 571, 572, 573,
+ 164, 4, 164, 4, 4, 529, 164, 4, 7, 7,
+ 130, 7, 7, 7, 5, 5, 5, 161, 554, 5,
+ 7, 161, 5, 5, 548, 5, 5, 5, 5, 161,
+ 3, 7, 7, 7, 161, 571, 572, 573, 114, 115,
116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
126, 127, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 5, 7, 5, 7,
- 3, 7, 7, 7, 161, 161, 161, 7, 161, 161,
- 161, 161, 161, 130, 7, 161, 7, 161, 161, 161,
- 7, 161, 161, 161, 161, 7, 161, 7, 7, 4,
- 4, 4, 161, 90, 4, 161, 161, 161, 4, 161,
- 4, 4, 4, 4, 4, 161, 3, 6, 6, 3,
- 6, 6, 3, 6, 3, 7, 6, 3, 6, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 3, 162,
- 6, 3, 6, 6, 3, 162, 4, 8, 4, 4,
- 4, 4, 164, 4, 164, 162, 162, 162, 162, 4,
- 162, 4, 4, 4, 3, 470, 6, 4, 162, 164,
- 8, 4, 8, 8, 3, 5, 162, 8, 4, 4,
- 4, 4, 4, 4, 4, 4, 162, 787, 549, 164,
- 790, 787, 162, 793, 162, 162, 796, 162, 793, 162,
- 796, 787, 787, 787, 804, 793, 162, 807, 161, 161,
- 796, 796, 796, 787, 161, 161, 790, 161, 161, 793,
- 161, 566, 796, 823, 372, 345, 790, 827, 554, 793,
- 804, 162, 796, 833, 796, 161, 836, 161, 376, 839,
- 804, 161, 161, 161, 844, 796, 786, 162, 164, 823,
- 161, 787, 781, 827, 790, 162, 799, 793, 802, 833,
- 796, 809, 836, 428, 816, 839, 807, 789, 804, 787,
- 844, 833, 787, 390, 836, 798, 962, 77, 796, 795,
- 844, 792, 833, 790, 793, 836, 804, 823, 420, 835,
- 393, 827, 400, 967, 833, 425, 838, 833, 836, 410,
- 836, 805, 823, 839, 841, 839, 573, 827, 844, 984,
- 447, 1001, 550, 1018, 845, 833, -1, -1, 836, -1,
- -1, 839, 444, -1, -1, -1, -1, -1, -1, -1,
+ 155, 156, 157, 158, 159, 160, 7, 5, 5, 5,
+ 5, 3, 5, 7, 161, 161, 161, 7, 161, 161,
+ 7, 161, 161, 7, 7, 161, 7, 161, 161, 161,
+ 161, 161, 161, 161, 161, 7, 7, 7, 7, 7,
+ 7, 4, 161, 161, 4, 4, 161, 161, 4, 161,
+ 4, 161, 4, 4, 4, 4, 4, 161, 164, 6,
+ 6, 6, 3, 6, 3, 3, 6, 470, 3, 6,
+ 6, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 3, 162, 6, 3, 6, 6, 3, 162, 4, 8,
+ 4, 4, 4, 164, 4, 162, 162, 162, 4, 4,
+ 162, 4, 4, 4, 3, 566, 6, 4, 4, 162,
+ 8, 3, 164, 8, 162, 8, 4, 162, 162, 8,
+ 4, 162, 4, 4, 7, 5, 4, 4, 4, 789,
+ 162, 162, 792, 789, 162, 795, 162, 162, 798, 161,
+ 795, 161, 798, 789, 789, 789, 806, 795, 161, 809,
+ 161, 161, 798, 798, 798, 789, 161, 161, 792, 161,
+ 4, 795, 161, 345, 798, 825, 549, 554, 792, 829,
+ 161, 795, 806, 162, 798, 835, 798, 372, 838, 164,
+ 162, 841, 806, 161, 161, 164, 846, 798, 162, 788,
+ 783, 825, 801, 789, 804, 829, 792, 161, 811, 795,
+ 818, 835, 798, 809, 838, 376, 791, 841, 789, 428,
+ 806, 789, 846, 835, 800, 390, 838, 964, 77, 794,
+ 798, 792, 846, 420, 835, 795, 425, 838, 806, 825,
+ 797, 835, 837, 829, 400, 838, 843, 393, 840, 835,
+ 841, 410, 838, 807, 588, 841, 969, 829, 825, 573,
+ 846, 447, 550, 847, 444, 986, 1020, 835, 1003, -1,
+ 838, -1, -1, 841, -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, 962, -1, -1, -1, 962, 967, -1, -1,
- -1, -1, -1, -1, -1, -1, 962, 962, 962, -1,
- -1, -1, -1, -1, 984, -1, -1, -1, 962, -1,
- -1, -1, -1, 967, -1, -1, -1, -1, 962, -1,
- 962, -1, -1, 967, -1, -1, -1, -1, -1, -1,
- 984, 962, -1, -1, -1, -1, -1, -1, -1, -1,
- 984, -1, -1, -1, -1, -1, 962, -1, -1, -1,
- -1, 967, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 962, -1, -1, -1, 984, 967
+ -1, -1, -1, -1, 964, -1, -1, -1, 964, 969,
+ -1, -1, -1, -1, -1, -1, -1, -1, 964, 964,
+ 964, -1, -1, -1, -1, -1, 986, -1, -1, -1,
+ 964, -1, -1, -1, -1, 969, -1, -1, -1, -1,
+ 964, -1, 964, -1, -1, 969, -1, -1, -1, -1,
+ -1, -1, 986, 964, -1, -1, -1, -1, -1, -1,
+ -1, -1, 986, -1, -1, -1, -1, -1, 964, -1,
+ -1, -1, -1, 969, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 964, -1, -1, -1,
+ 986, 969
};
const unsigned short int
@@ -4260,16 +4262,16 @@ namespace isc { namespace dhcp {
0, 5, 7, 9, 161, 162, 163, 164, 181, 182,
183, 188, 7, 197, 7, 203, 7, 214, 7, 302,
7, 379, 7, 395, 7, 412, 7, 331, 7, 337,
- 7, 361, 7, 278, 7, 470, 7, 505, 189, 184,
+ 7, 361, 7, 278, 7, 471, 7, 506, 189, 184,
198, 204, 215, 303, 380, 396, 413, 332, 338, 362,
- 279, 471, 506, 181, 190, 191, 161, 186, 187, 10,
- 135, 144, 145, 146, 161, 196, 199, 200, 201, 497,
- 499, 501, 503, 11, 14, 15, 16, 37, 38, 39,
+ 279, 472, 507, 181, 190, 191, 161, 186, 187, 10,
+ 135, 144, 145, 146, 161, 196, 199, 200, 201, 498,
+ 500, 502, 504, 11, 14, 15, 16, 37, 38, 39,
40, 41, 42, 43, 44, 62, 63, 73, 74, 75,
76, 77, 91, 94, 101, 109, 110, 113, 196, 205,
206, 207, 208, 209, 210, 211, 212, 221, 223, 225,
258, 264, 270, 272, 286, 296, 321, 329, 355, 385,
- 387, 435, 447, 459, 460, 468, 12, 13, 196, 216,
+ 387, 436, 448, 460, 461, 469, 12, 13, 196, 216,
217, 218, 220, 385, 387, 54, 56, 64, 65, 66,
67, 68, 69, 78, 81, 82, 89, 196, 207, 208,
209, 210, 304, 305, 306, 308, 310, 312, 314, 316,
@@ -4285,20 +4287,20 @@ namespace isc { namespace dhcp {
364, 365, 366, 367, 369, 370, 371, 372, 385, 387,
92, 93, 196, 280, 281, 282, 284, 114, 115, 116,
117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 196, 385, 387, 472, 473, 474, 475, 477, 479,
- 480, 482, 483, 484, 487, 489, 490, 491, 492, 495,
- 136, 507, 508, 509, 6, 3, 4, 8, 3, 202,
- 504, 498, 500, 502, 4, 3, 8, 213, 222, 224,
+ 127, 196, 385, 387, 473, 474, 475, 476, 478, 480,
+ 481, 483, 484, 485, 488, 490, 491, 492, 493, 496,
+ 136, 508, 509, 510, 6, 3, 4, 8, 3, 202,
+ 505, 499, 501, 503, 4, 3, 8, 213, 222, 224,
226, 4, 4, 4, 4, 4, 297, 330, 356, 386,
- 388, 322, 259, 271, 265, 436, 273, 287, 448, 4,
- 461, 469, 3, 8, 219, 4, 3, 8, 374, 390,
+ 388, 322, 259, 271, 265, 437, 273, 287, 449, 4,
+ 462, 470, 3, 8, 219, 4, 3, 8, 374, 390,
307, 309, 311, 4, 4, 317, 315, 313, 407, 432,
3, 8, 384, 3, 8, 400, 4, 403, 4, 4,
3, 8, 430, 418, 420, 422, 424, 426, 428, 8,
3, 8, 346, 244, 4, 350, 348, 353, 4, 8,
3, 368, 4, 4, 8, 3, 283, 285, 3, 8,
- 4, 476, 478, 4, 481, 4, 4, 485, 488, 4,
- 4, 4, 493, 496, 3, 8, 510, 3, 8, 181,
+ 4, 477, 479, 4, 482, 4, 4, 486, 489, 4,
+ 4, 4, 494, 497, 3, 8, 511, 3, 8, 181,
181, 161, 4, 4, 4, 4, 4, 200, 4, 4,
4, 4, 162, 162, 162, 162, 162, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
@@ -4308,55 +4310,55 @@ namespace isc { namespace dhcp {
4, 4, 4, 4, 4, 416, 4, 4, 162, 4,
4, 4, 164, 341, 4, 164, 164, 365, 4, 4,
281, 164, 4, 4, 162, 4, 162, 162, 4, 4,
- 164, 164, 164, 4, 4, 473, 4, 508, 4, 7,
+ 164, 164, 164, 4, 4, 474, 4, 509, 4, 7,
7, 181, 181, 181, 7, 7, 7, 5, 5, 5,
5, 183, 185, 161, 5, 5, 5, 5, 5, 5,
7, 7, 7, 7, 5, 192, 5, 5, 161, 161,
161, 70, 71, 72, 318, 192, 161, 5, 7, 161,
161, 161, 192, 192, 192, 161, 161, 161, 161, 161,
161, 161, 161, 161, 161, 161, 181, 161, 161, 161,
- 128, 129, 486, 130, 131, 132, 133, 134, 164, 494,
- 161, 5, 181, 205, 507, 216, 17, 22, 23, 24,
+ 128, 129, 487, 130, 131, 132, 133, 134, 164, 495,
+ 161, 5, 181, 205, 508, 216, 17, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 196, 231, 232, 233, 236, 238, 240, 242,
243, 245, 246, 247, 248, 249, 250, 251, 252, 253,
255, 256, 231, 7, 227, 228, 229, 7, 298, 299,
300, 7, 333, 334, 335, 7, 357, 358, 359, 7,
323, 324, 325, 85, 161, 260, 261, 262, 263, 190,
- 86, 88, 262, 266, 267, 268, 269, 7, 437, 438,
+ 86, 88, 262, 266, 267, 268, 269, 7, 438, 439,
7, 274, 275, 276, 95, 96, 97, 98, 99, 100,
288, 289, 290, 291, 292, 293, 294, 295, 17, 105,
- 106, 107, 108, 196, 245, 385, 387, 449, 450, 451,
- 454, 455, 457, 458, 111, 112, 196, 385, 387, 462,
- 463, 464, 466, 472, 193, 7, 375, 376, 377, 7,
- 391, 392, 393, 7, 408, 409, 410, 90, 433, 7,
- 511, 512, 8, 8, 8, 234, 237, 239, 241, 4,
- 4, 4, 4, 4, 254, 4, 4, 257, 4, 4,
- 4, 3, 8, 8, 230, 6, 3, 301, 6, 3,
- 336, 6, 3, 360, 6, 3, 326, 6, 3, 3,
- 6, 6, 3, 6, 439, 3, 6, 277, 6, 3,
- 4, 4, 4, 4, 4, 4, 3, 8, 452, 456,
- 4, 4, 4, 3, 8, 465, 467, 3, 8, 8,
- 161, 194, 195, 378, 6, 3, 394, 6, 3, 411,
- 6, 3, 434, 8, 513, 3, 6, 4, 4, 4,
- 4, 162, 164, 162, 164, 162, 4, 162, 162, 4,
- 162, 162, 164, 232, 231, 229, 304, 300, 339, 335,
- 363, 359, 196, 207, 208, 209, 210, 243, 296, 308,
- 310, 312, 314, 316, 320, 327, 328, 355, 385, 387,
- 431, 325, 261, 267, 79, 80, 196, 243, 355, 385,
- 387, 440, 441, 442, 443, 444, 446, 438, 280, 276,
- 162, 162, 162, 162, 162, 162, 289, 4, 4, 162,
- 162, 162, 450, 4, 4, 463, 6, 3, 381, 377,
- 397, 393, 414, 410, 4, 137, 139, 140, 196, 243,
- 385, 387, 514, 515, 516, 517, 519, 512, 18, 19,
- 20, 21, 235, 161, 161, 161, 161, 161, 8, 8,
- 8, 8, 3, 8, 445, 4, 8, 3, 8, 102,
- 103, 104, 453, 161, 161, 161, 161, 8, 8, 8,
- 161, 520, 4, 518, 3, 8, 328, 4, 164, 442,
- 4, 162, 4, 515, 161, 5, 161, 7, 521, 522,
- 523, 3, 6, 138, 141, 142, 143, 524, 525, 526,
- 528, 529, 530, 522, 527, 4, 4, 4, 3, 8,
- 4, 164, 162, 162, 525, 161
+ 106, 107, 108, 196, 245, 385, 387, 450, 451, 452,
+ 455, 456, 458, 459, 111, 112, 196, 385, 387, 463,
+ 464, 465, 467, 473, 193, 7, 375, 376, 377, 7,
+ 391, 392, 393, 7, 408, 409, 410, 90, 417, 433,
+ 434, 7, 512, 513, 8, 8, 8, 234, 237, 239,
+ 241, 4, 4, 4, 4, 4, 254, 4, 4, 257,
+ 4, 4, 4, 3, 8, 8, 230, 6, 3, 301,
+ 6, 3, 336, 6, 3, 360, 6, 3, 326, 6,
+ 3, 3, 6, 6, 3, 6, 440, 3, 6, 277,
+ 6, 3, 4, 4, 4, 4, 4, 4, 3, 8,
+ 453, 457, 4, 4, 4, 3, 8, 466, 468, 3,
+ 8, 8, 161, 194, 195, 378, 6, 3, 394, 6,
+ 3, 411, 6, 3, 435, 8, 514, 3, 6, 4,
+ 4, 4, 4, 162, 164, 162, 164, 162, 4, 162,
+ 162, 4, 162, 162, 164, 232, 231, 229, 304, 300,
+ 339, 335, 363, 359, 196, 207, 208, 209, 210, 243,
+ 296, 308, 310, 312, 314, 316, 320, 327, 328, 355,
+ 385, 387, 431, 325, 261, 267, 79, 80, 196, 243,
+ 355, 385, 387, 441, 442, 443, 444, 445, 447, 439,
+ 280, 276, 162, 162, 162, 162, 162, 162, 289, 4,
+ 4, 162, 162, 162, 451, 4, 4, 464, 6, 3,
+ 381, 377, 397, 393, 414, 410, 4, 137, 139, 140,
+ 196, 243, 385, 387, 515, 516, 517, 518, 520, 513,
+ 18, 19, 20, 21, 235, 161, 161, 161, 161, 161,
+ 8, 8, 8, 8, 3, 8, 446, 4, 8, 3,
+ 8, 102, 103, 104, 454, 161, 161, 161, 161, 8,
+ 8, 8, 161, 521, 4, 519, 3, 8, 328, 4,
+ 164, 443, 4, 162, 4, 516, 161, 5, 161, 7,
+ 522, 523, 524, 3, 6, 138, 141, 142, 143, 525,
+ 526, 527, 529, 530, 531, 523, 528, 4, 4, 4,
+ 3, 8, 4, 164, 162, 162, 526, 161
};
const unsigned short int
@@ -4409,23 +4411,23 @@ namespace isc { namespace dhcp {
410, 413, 412, 414, 414, 415, 415, 416, 416, 416,
416, 416, 416, 416, 416, 416, 416, 416, 418, 417,
420, 419, 422, 421, 424, 423, 426, 425, 428, 427,
- 430, 429, 432, 431, 434, 433, 436, 435, 437, 437,
- 439, 438, 440, 440, 441, 441, 442, 442, 442, 442,
- 442, 442, 442, 443, 445, 444, 446, 448, 447, 449,
- 449, 450, 450, 450, 450, 450, 450, 450, 450, 450,
- 452, 451, 453, 453, 453, 454, 456, 455, 457, 458,
- 459, 461, 460, 462, 462, 463, 463, 463, 463, 463,
- 465, 464, 467, 466, 469, 468, 471, 470, 472, 472,
- 473, 473, 473, 473, 473, 473, 473, 473, 473, 473,
- 473, 473, 473, 473, 473, 473, 473, 474, 476, 475,
- 478, 477, 479, 481, 480, 482, 483, 485, 484, 486,
- 486, 488, 487, 489, 490, 491, 493, 492, 494, 494,
- 494, 494, 494, 496, 495, 498, 497, 500, 499, 502,
- 501, 504, 503, 506, 505, 507, 507, 508, 510, 509,
- 511, 511, 513, 512, 514, 514, 515, 515, 515, 515,
- 515, 515, 515, 516, 518, 517, 520, 519, 521, 521,
- 523, 522, 524, 524, 525, 525, 525, 525, 527, 526,
- 528, 529, 530
+ 430, 429, 432, 431, 433, 433, 435, 434, 437, 436,
+ 438, 438, 440, 439, 441, 441, 442, 442, 443, 443,
+ 443, 443, 443, 443, 443, 444, 446, 445, 447, 449,
+ 448, 450, 450, 451, 451, 451, 451, 451, 451, 451,
+ 451, 451, 453, 452, 454, 454, 454, 455, 457, 456,
+ 458, 459, 460, 462, 461, 463, 463, 464, 464, 464,
+ 464, 464, 466, 465, 468, 467, 470, 469, 472, 471,
+ 473, 473, 474, 474, 474, 474, 474, 474, 474, 474,
+ 474, 474, 474, 474, 474, 474, 474, 474, 474, 475,
+ 477, 476, 479, 478, 480, 482, 481, 483, 484, 486,
+ 485, 487, 487, 489, 488, 490, 491, 492, 494, 493,
+ 495, 495, 495, 495, 495, 497, 496, 499, 498, 501,
+ 500, 503, 502, 505, 504, 507, 506, 508, 508, 509,
+ 511, 510, 512, 512, 514, 513, 515, 515, 516, 516,
+ 516, 516, 516, 516, 516, 517, 519, 518, 521, 520,
+ 522, 522, 524, 523, 525, 525, 526, 526, 526, 526,
+ 528, 527, 529, 530, 531
};
const unsigned char
@@ -4478,23 +4480,23 @@ namespace isc { namespace dhcp {
4, 0, 4, 0, 1, 1, 3, 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, 6, 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, 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, 6, 0, 4, 1, 3, 1, 0, 6,
+ 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, 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, 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,
- 1, 1, 1, 3, 0, 4, 0, 6, 1, 3,
- 0, 4, 1, 3, 1, 1, 1, 1, 0, 4,
- 3, 3, 3
+ 0, 4, 3, 3, 3
};
@@ -4615,7 +4617,7 @@ namespace isc { namespace dhcp {
"$@81", "prefixes", "$@82", "duid", "$@83", "hw_address", "$@84",
"hostname", "$@85", "flex_id_value", "$@86",
"reservation_client_classes", "$@87", "relay", "$@88", "relay_map",
- "$@89", "client_classes", "$@90", "client_classes_list",
+ "ip_address", "$@89", "client_classes", "$@90", "client_classes_list",
"client_class_entry", "$@91", "client_class_params",
"not_empty_client_class_params", "client_class_param",
"client_class_name", "client_class_test", "$@92", "only_if_required",
@@ -4691,23 +4693,23 @@ namespace isc { namespace dhcp {
1572, 1581, 1581, 1590, 1591, 1594, 1595, 1599, 1600, 1601,
1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1612, 1612,
1622, 1622, 1632, 1632, 1640, 1640, 1648, 1648, 1656, 1656,
- 1664, 1664, 1677, 1677, 1687, 1687, 1698, 1698, 1708, 1709,
- 1712, 1712, 1722, 1723, 1726, 1727, 1730, 1731, 1732, 1733,
- 1734, 1735, 1736, 1739, 1741, 1741, 1749, 1757, 1757, 1769,
- 1770, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781,
- 1784, 1784, 1791, 1792, 1793, 1796, 1801, 1801, 1809, 1814,
- 1821, 1828, 1828, 1838, 1839, 1842, 1843, 1844, 1845, 1846,
- 1849, 1849, 1857, 1857, 1867, 1867, 1879, 1879, 1889, 1890,
- 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902,
- 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1912, 1917, 1917,
- 1925, 1925, 1933, 1938, 1938, 1946, 1951, 1956, 1956, 1964,
- 1965, 1968, 1968, 1976, 1981, 1986, 1991, 1991, 1999, 2002,
- 2005, 2008, 2011, 2017, 2017, 2027, 2027, 2034, 2034, 2041,
- 2041, 2054, 2054, 2064, 2064, 2075, 2076, 2080, 2084, 2084,
- 2096, 2097, 2101, 2101, 2109, 2110, 2113, 2114, 2115, 2116,
- 2117, 2118, 2119, 2122, 2127, 2127, 2135, 2135, 2145, 2146,
- 2149, 2149, 2157, 2158, 2161, 2162, 2163, 2164, 2167, 2167,
- 2175, 2180, 2185
+ 1664, 1664, 1677, 1677, 1687, 1688, 1691, 1691, 1702, 1702,
+ 1712, 1713, 1716, 1716, 1726, 1727, 1730, 1731, 1734, 1735,
+ 1736, 1737, 1738, 1739, 1740, 1743, 1745, 1745, 1753, 1761,
+ 1761, 1773, 1774, 1777, 1778, 1779, 1780, 1781, 1782, 1783,
+ 1784, 1785, 1788, 1788, 1795, 1796, 1797, 1800, 1805, 1805,
+ 1813, 1818, 1825, 1832, 1832, 1842, 1843, 1846, 1847, 1848,
+ 1849, 1850, 1853, 1853, 1861, 1861, 1871, 1871, 1883, 1883,
+ 1893, 1894, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904,
+ 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1916,
+ 1921, 1921, 1929, 1929, 1937, 1942, 1942, 1950, 1955, 1960,
+ 1960, 1968, 1969, 1972, 1972, 1980, 1985, 1990, 1995, 1995,
+ 2003, 2006, 2009, 2012, 2015, 2021, 2021, 2031, 2031, 2038,
+ 2038, 2045, 2045, 2058, 2058, 2068, 2068, 2079, 2080, 2084,
+ 2088, 2088, 2100, 2101, 2105, 2105, 2113, 2114, 2117, 2118,
+ 2119, 2120, 2121, 2122, 2123, 2126, 2131, 2131, 2139, 2139,
+ 2149, 2150, 2153, 2153, 2161, 2162, 2165, 2166, 2167, 2168,
+ 2171, 2171, 2179, 2184, 2189
};
// Print the state stack on the debug stream.
@@ -4742,8 +4744,8 @@ namespace isc { namespace dhcp {
#line 14 "dhcp6_parser.yy" // lalr1.cc:1167
} } // isc::dhcp
-#line 4746 "dhcp6_parser.cc" // lalr1.cc:1167
-#line 2190 "dhcp6_parser.yy" // lalr1.cc:1168
+#line 4748 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 2194 "dhcp6_parser.yy" // lalr1.cc:1168
void
diff --git a/src/bin/dhcp6/dhcp6_parser.h b/src/bin/dhcp6/dhcp6_parser.h
index 43e675e604..9d54ba18e6 100644
--- a/src/bin/dhcp6/dhcp6_parser.h
+++ b/src/bin/dhcp6/dhcp6_parser.h
@@ -1480,8 +1480,8 @@ namespace isc { namespace dhcp {
enum
{
yyeof_ = 0,
- yylast_ = 979, ///< Last index in yytable_.
- yynnts_ = 366, ///< Number of nonterminal symbols.
+ yylast_ = 981, ///< Last index in yytable_.
+ yynnts_ = 367, ///< Number of nonterminal symbols.
yyfinal_ = 30, ///< Termination state number.
yyterror_ = 1,
yyerrcode_ = 256,
@@ -1582,9 +1582,9 @@ namespace isc { namespace dhcp {
case 185: // map_value
case 235: // db_type
case 318: // hr_mode
- case 453: // duid_type
- case 486: // ncr_protocol_value
- case 494: // replace_client_name_value
+ case 454: // duid_type
+ case 487: // ncr_protocol_value
+ case 495: // replace_client_name_value
value.copy< ElementPtr > (other.value);
break;
@@ -1625,9 +1625,9 @@ namespace isc { namespace dhcp {
case 185: // map_value
case 235: // db_type
case 318: // hr_mode
- case 453: // duid_type
- case 486: // ncr_protocol_value
- case 494: // replace_client_name_value
+ case 454: // duid_type
+ case 487: // ncr_protocol_value
+ case 495: // replace_client_name_value
value.copy< ElementPtr > (v);
break;
@@ -1727,9 +1727,9 @@ namespace isc { namespace dhcp {
case 185: // map_value
case 235: // db_type
case 318: // hr_mode
- case 453: // duid_type
- case 486: // ncr_protocol_value
- case 494: // replace_client_name_value
+ case 454: // duid_type
+ case 487: // ncr_protocol_value
+ case 495: // replace_client_name_value
value.template destroy< ElementPtr > ();
break;
@@ -1776,9 +1776,9 @@ namespace isc { namespace dhcp {
case 185: // map_value
case 235: // db_type
case 318: // hr_mode
- case 453: // duid_type
- case 486: // ncr_protocol_value
- case 494: // replace_client_name_value
+ case 454: // duid_type
+ case 487: // ncr_protocol_value
+ case 495: // replace_client_name_value
value.move< ElementPtr > (s.value);
break;
diff --git a/src/bin/dhcp6/dhcp6_parser.yy b/src/bin/dhcp6/dhcp6_parser.yy
index 38337d8bde..32febb744a 100644
--- a/src/bin/dhcp6/dhcp6_parser.yy
+++ b/src/bin/dhcp6/dhcp6_parser.yy
@@ -1684,11 +1684,15 @@ relay: RELAY {
ctx.leave();
};
-relay_map: IP_ADDRESS {
+relay_map: ip_address
+ | ip_addresses
+ ;
+
+ip_address: IP_ADDRESS {
ctx.enter(ctx.NO_KEYWORD);
} COLON STRING {
- ElementPtr ip(new StringElement($4, ctx.loc2pos(@4)));
- ctx.stack_.back()->set("ip-address", ip);
+ ElementPtr addr(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("ip-address", addr);
ctx.leave();
};
diff --git a/src/bin/dhcp6/location.hh b/src/bin/dhcp6/location.hh
index 1e2f5db4bd..239704683c 100644
--- a/src/bin/dhcp6/location.hh
+++ b/src/bin/dhcp6/location.hh
@@ -1,4 +1,3 @@
-// Generated 201804111534
// A Bison parser, made by GNU Bison 3.0.4.
// Locations for Bison parsers in C++
diff --git a/src/bin/dhcp6/position.hh b/src/bin/dhcp6/position.hh
index c37a989a18..2ee80e6d0a 100644
--- a/src/bin/dhcp6/position.hh
+++ b/src/bin/dhcp6/position.hh
@@ -1,4 +1,3 @@
-// Generated 201804111534
// A Bison parser, made by GNU Bison 3.0.4.
// Positions for Bison parsers in C++
diff --git a/src/bin/dhcp6/stack.hh b/src/bin/dhcp6/stack.hh
index d690601d9b..db2863a06e 100644
--- a/src/bin/dhcp6/stack.hh
+++ b/src/bin/dhcp6/stack.hh
@@ -1,4 +1,3 @@
-// Generated 201804111534
// A Bison parser, made by GNU Bison 3.0.4.
// Stack handling for Bison parsers in C++
diff --git a/src/bin/dhcp6/tests/config_parser_unittest.cc b/src/bin/dhcp6/tests/config_parser_unittest.cc
index 120e41d27a..a954d6adcb 100644
--- a/src/bin/dhcp6/tests/config_parser_unittest.cc
+++ b/src/bin/dhcp6/tests/config_parser_unittest.cc
@@ -4142,7 +4142,43 @@ TEST_F(Dhcp6ParserTest, subnetRelayInfo) {
Subnet6Ptr subnet = CfgMgr::instance().getStagingCfg()->getCfgSubnets6()->
selectSubnet(IOAddress("2001:db8:1::1"), classify_);
ASSERT_TRUE(subnet);
- EXPECT_EQ("2001:db8:1::abcd", subnet->getRelayInfo().addr_.toText());
+
+ EXPECT_TRUE(subnet->hasRelays());
+ EXPECT_TRUE(subnet->hasRelayAddress(IOAddress("2001:db8:1::abcd")));
+}
+
+// This test checks if it is possible to specify a list of relays
+TEST_F(Dhcp6ParserTest, subnetRelayInfoList) {
+ // A config with relay information.
+ string config = "{ " + genIfaceConfig() + ","
+ "\"rebind-timer\": 2000, "
+ "\"renew-timer\": 1000, "
+ "\"subnet6\": [ { "
+ " \"pools\": [ { \"pool\": \"2001:db8:1::1 - 2001:db8:1::ffff\" } ],"
+ " \"relay\": { "
+ " \"ip-addresses\": [ \"2001:db9::abcd\", \"2001:db9::abce\" ]"
+ " },"
+ " \"subnet\": \"2001:db8:1::/64\" } ],"
+ "\"preferred-lifetime\": 3000, "
+ "\"valid-lifetime\": 4000 }";
+
+ ConstElementPtr json;
+ ASSERT_NO_THROW(json = parseDHCP6(config));
+ extractConfig(config);
+
+ ConstElementPtr status;
+ EXPECT_NO_THROW(status = configureDhcp6Server(srv_, json));
+
+ // returned value should be 0 (configuration success)
+ checkResult(status, 0);
+
+ Subnet6Ptr subnet = CfgMgr::instance().getStagingCfg()->getCfgSubnets6()->
+ selectSubnet(IOAddress("2001:db9::abcd"), classify_, true);
+ ASSERT_TRUE(subnet);
+
+ EXPECT_TRUE(subnet->hasRelays());
+ EXPECT_TRUE(subnet->hasRelayAddress(IOAddress("2001:db9::abcd")));
+ EXPECT_TRUE(subnet->hasRelayAddress(IOAddress("2001:db9::abce")));
}
// Goal of this test is to verify that multiple subnets can be configured
@@ -6008,7 +6044,7 @@ TEST_F(Dhcp6ParserTest, sharedNetworksDerive) {
ASSERT_TRUE(s);
ASSERT_TRUE(s->getInterfaceId());
EXPECT_TRUE(iface_id1.equals(s->getInterfaceId()));
- EXPECT_EQ(IOAddress("1111::1"), s->getRelayInfo().addr_);
+ EXPECT_TRUE(s->hasRelayAddress(IOAddress("1111::1")));
EXPECT_TRUE(s->getRapidCommit());
EXPECT_EQ(Network::HR_DISABLED, s->getHostReservationMode());
@@ -6019,7 +6055,7 @@ TEST_F(Dhcp6ParserTest, sharedNetworksDerive) {
s = checkSubnet(*subs, "2001:db2::/48", 100, 200, 300, 400);
ASSERT_TRUE(s->getInterfaceId());
EXPECT_TRUE(iface_id2.equals(s->getInterfaceId()));
- EXPECT_EQ(IOAddress("2222::2"), s->getRelayInfo().addr_);
+ EXPECT_TRUE(s->hasRelayAddress(IOAddress("2222::2")));
EXPECT_TRUE(s->getRapidCommit());
EXPECT_EQ(Network::HR_OUT_OF_POOL, s->getHostReservationMode());
@@ -6034,7 +6070,7 @@ TEST_F(Dhcp6ParserTest, sharedNetworksDerive) {
// This subnet should derive its renew-timer from global scope.
s = checkSubnet(*subs, "2001:db3::/48", 1, 2, 3, 4);
EXPECT_FALSE(s->getInterfaceId());
- EXPECT_EQ(IOAddress("::"), s->getRelayInfo().addr_);
+ EXPECT_FALSE(s->hasRelays());
EXPECT_FALSE(s->getRapidCommit());
EXPECT_EQ(Network::HR_ALL, s->getHostReservationMode());
}
diff --git a/src/bin/dhcp6/tests/get_config_unittest.cc b/src/bin/dhcp6/tests/get_config_unittest.cc
index 5f3ddccdd6..46db37bf34 100644
--- a/src/bin/dhcp6/tests/get_config_unittest.cc
+++ b/src/bin/dhcp6/tests/get_config_unittest.cc
@@ -978,6 +978,30 @@ const char* EXTRACTED_CONFIGS[] = {
" \"renew-timer\": 1000,\n"
" \"subnet6\": [\n"
" {\n"
+" \"pools\": [\n"
+" {\n"
+" \"pool\": \"2001:db8:1::1 - 2001:db8:1::ffff\"\n"
+" }\n"
+" ],\n"
+" \"relay\": {\n"
+" \"ip-addresses\": [ \"2001:db8:1::abcd\", \"2001:db8:1::abce\" ]\n"
+" },\n"
+" \"subnet\": \"2001:db8:1::/64\"\n"
+" }\n"
+" ],\n"
+" \"valid-lifetime\": 4000\n"
+" }\n",
+ // CONFIGURATION 32
+"{\n"
+" \"interfaces-config\": {\n"
+" \"interfaces\": [ \"*\" ],\n"
+" \"re-detect\": false\n"
+" },\n"
+" \"preferred-lifetime\": 3000,\n"
+" \"rebind-timer\": 2000,\n"
+" \"renew-timer\": 1000,\n"
+" \"subnet6\": [\n"
+" {\n"
" \"client-class\": \"alpha\",\n"
" \"pools\": [\n"
" {\n"
@@ -1015,7 +1039,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 32
+ // CONFIGURATION 33
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1048,7 +1072,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 33
+ // CONFIGURATION 34
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1089,7 +1113,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 34
+ // CONFIGURATION 35
"{\n"
" \"dhcp-ddns\": {\n"
" \"always-include-fqdn\": true,\n"
@@ -1126,7 +1150,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 35
+ // CONFIGURATION 36
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1213,7 +1237,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 36
+ // CONFIGURATION 37
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1253,7 +1277,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 37
+ // CONFIGURATION 38
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1266,7 +1290,7 @@ const char* EXTRACTED_CONFIGS[] = {
" \"subnet6\": [ ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 38
+ // CONFIGURATION 39
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1279,7 +1303,7 @@ const char* EXTRACTED_CONFIGS[] = {
" \"subnet6\": [ ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 39
+ // CONFIGURATION 40
"{\n"
" \"preferred-lifetime\": 3000,\n"
" \"rebind-timer\": 2000,\n"
@@ -1323,7 +1347,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 40
+ // CONFIGURATION 41
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1335,14 +1359,6 @@ const char* EXTRACTED_CONFIGS[] = {
" \"renew-timer\": 1000,\n"
" \"subnet6\": [ ],\n"
" \"valid-lifetime\": 4000\n"
-" }\n",
- // CONFIGURATION 41
-"{\n"
-" \"interfaces-config\": {\n"
-" \"interfaces\": [ \"*\" ],\n"
-" \"re-detect\": false\n"
-" },\n"
-" \"subnet6\": [ ]\n"
" }\n",
// CONFIGURATION 42
"{\n"
@@ -1354,7 +1370,6 @@ const char* EXTRACTED_CONFIGS[] = {
" }\n",
// CONFIGURATION 43
"{\n"
-" \"decline-probation-period\": 12345,\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
" \"re-detect\": false\n"
@@ -1363,6 +1378,15 @@ const char* EXTRACTED_CONFIGS[] = {
" }\n",
// CONFIGURATION 44
"{\n"
+" \"decline-probation-period\": 12345,\n"
+" \"interfaces-config\": {\n"
+" \"interfaces\": [ \"*\" ],\n"
+" \"re-detect\": false\n"
+" },\n"
+" \"subnet6\": [ ]\n"
+" }\n",
+ // CONFIGURATION 45
+"{\n"
" \"expired-leases-processing\": {\n"
" \"flush-reclaimed-timer-wait-time\": 35,\n"
" \"hold-reclaimed-time\": 1800,\n"
@@ -1377,7 +1401,7 @@ const char* EXTRACTED_CONFIGS[] = {
" },\n"
" \"subnet6\": [ ]\n"
" }\n",
- // CONFIGURATION 45
+ // CONFIGURATION 46
"{\n"
" \"client-classes\": [\n"
" {\n"
@@ -1409,7 +1433,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 46
+ // CONFIGURATION 47
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1430,7 +1454,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 47
+ // CONFIGURATION 48
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1452,7 +1476,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 48
+ // CONFIGURATION 49
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1479,7 +1503,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 49
+ // CONFIGURATION 50
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1506,7 +1530,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 50
+ // CONFIGURATION 51
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1529,7 +1553,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 51
+ // CONFIGURATION 52
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1553,7 +1577,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 52
+ // CONFIGURATION 53
"{\n"
" \"interfaces-config\": {\n"
" \"interfaces\": [ \"*\" ],\n"
@@ -1582,7 +1606,7 @@ const char* EXTRACTED_CONFIGS[] = {
" ],\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 53
+ // CONFIGURATION 54
"{\n"
" \"hosts-databases\": [\n"
" {\n"
@@ -1607,7 +1631,7 @@ const char* EXTRACTED_CONFIGS[] = {
" \"renew-timer\": 1000,\n"
" \"valid-lifetime\": 4000\n"
" }\n",
- // CONFIGURATION 54
+ // CONFIGURATION 55
"{\n"
" \"comment\": \"A DHCPv6 server\",\n"
" \"client-classes\": [\n"
@@ -1825,7 +1849,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -1900,7 +1924,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -1922,7 +1946,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -1944,7 +1968,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -1966,7 +1990,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2041,7 +2065,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2063,7 +2087,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2085,7 +2109,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2107,7 +2131,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2182,7 +2206,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2204,7 +2228,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2226,7 +2250,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2248,7 +2272,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2323,7 +2347,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2399,7 +2423,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2475,7 +2499,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2554,7 +2578,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2580,7 +2604,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2655,7 +2679,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2732,7 +2756,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2811,7 +2835,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2905,7 +2929,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -2982,7 +3006,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -3393,7 +3417,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -3485,7 +3509,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -3587,7 +3611,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -3803,7 +3827,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -3887,7 +3911,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -3918,7 +3942,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4046,7 +4070,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4136,7 +4160,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4230,7 +4254,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4409,7 +4433,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"2001:db8:1::abcd\"\n"
+" \"ip-addresses\": [ \"2001:db8:1::abcd\" ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4471,6 +4495,81 @@ const char* UNPARSED_CONFIGS[] = {
" \"shared-networks\": [ ],\n"
" \"subnet6\": [\n"
" {\n"
+" \"id\": 1,\n"
+" \"option-data\": [ ],\n"
+" \"pd-pools\": [ ],\n"
+" \"pools\": [\n"
+" {\n"
+" \"option-data\": [ ],\n"
+" \"pool\": \"2001:db8:1::1-2001:db8:1::ffff\"\n"
+" }\n"
+" ],\n"
+" \"preferred-lifetime\": 3000,\n"
+" \"rapid-commit\": false,\n"
+" \"rebind-timer\": 2000,\n"
+" \"relay\": {\n"
+" \"ip-addresses\": [ \"2001:db8:1::abcd\", \"2001:db8:1::abce\" ]\n"
+" },\n"
+" \"renew-timer\": 1000,\n"
+" \"reservation-mode\": \"all\",\n"
+" \"reservations\": [ ],\n"
+" \"subnet\": \"2001:db8:1::/64\",\n"
+" \"valid-lifetime\": 4000\n"
+" }\n"
+" ]\n"
+" }\n",
+ // CONFIGURATION 32
+"{\n"
+" \"decline-probation-period\": 86400,\n"
+" \"dhcp-ddns\": {\n"
+" \"always-include-fqdn\": false,\n"
+" \"enable-updates\": false,\n"
+" \"generated-prefix\": \"myhost\",\n"
+" \"max-queue-size\": 1024,\n"
+" \"ncr-format\": \"JSON\",\n"
+" \"ncr-protocol\": \"UDP\",\n"
+" \"override-client-update\": false,\n"
+" \"override-no-update\": false,\n"
+" \"qualifying-suffix\": \"\",\n"
+" \"replace-client-name\": \"never\",\n"
+" \"sender-ip\": \"0.0.0.0\",\n"
+" \"sender-port\": 0,\n"
+" \"server-ip\": \"127.0.0.1\",\n"
+" \"server-port\": 53001\n"
+" },\n"
+" \"dhcp4o6-port\": 0,\n"
+" \"expired-leases-processing\": {\n"
+" \"flush-reclaimed-timer-wait-time\": 25,\n"
+" \"hold-reclaimed-time\": 3600,\n"
+" \"max-reclaim-leases\": 100,\n"
+" \"max-reclaim-time\": 250,\n"
+" \"reclaim-timer-wait-time\": 10,\n"
+" \"unwarned-reclaim-cycles\": 5\n"
+" },\n"
+" \"hooks-libraries\": [ ],\n"
+" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\" ],\n"
+" \"interfaces-config\": {\n"
+" \"interfaces\": [ \"*\" ],\n"
+" \"re-detect\": false\n"
+" },\n"
+" \"lease-database\": {\n"
+" \"type\": \"memfile\"\n"
+" },\n"
+" \"mac-sources\": [ \"any\" ],\n"
+" \"option-data\": [ ],\n"
+" \"option-def\": [ ],\n"
+" \"relay-supplied-options\": [ \"65\" ],\n"
+" \"server-id\": {\n"
+" \"enterprise-id\": 0,\n"
+" \"htype\": 0,\n"
+" \"identifier\": \"\",\n"
+" \"persist\": true,\n"
+" \"time\": 0,\n"
+" \"type\": \"LLT\"\n"
+" },\n"
+" \"shared-networks\": [ ],\n"
+" \"subnet6\": [\n"
+" {\n"
" \"client-class\": \"alpha\",\n"
" \"id\": 1,\n"
" \"option-data\": [ ],\n"
@@ -4485,7 +4584,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4508,7 +4607,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4531,7 +4630,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4553,7 +4652,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4563,7 +4662,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 32
+ // CONFIGURATION 33
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -4643,7 +4742,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4653,7 +4752,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 33
+ // CONFIGURATION 34
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -4741,7 +4840,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4751,7 +4850,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 34
+ // CONFIGURATION 35
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -4816,7 +4915,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4826,7 +4925,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 35
+ // CONFIGURATION 36
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -4891,7 +4990,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4908,7 +5007,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -4976,7 +5075,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5020,7 +5119,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 36
+ // CONFIGURATION 37
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -5090,7 +5189,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5117,58 +5216,6 @@ const char* UNPARSED_CONFIGS[] = {
" \"valid-lifetime\": 4000\n"
" }\n"
" ]\n"
-" }\n",
- // CONFIGURATION 37
-"{\n"
-" \"decline-probation-period\": 86400,\n"
-" \"dhcp-ddns\": {\n"
-" \"always-include-fqdn\": false,\n"
-" \"enable-updates\": false,\n"
-" \"generated-prefix\": \"myhost\",\n"
-" \"max-queue-size\": 1024,\n"
-" \"ncr-format\": \"JSON\",\n"
-" \"ncr-protocol\": \"UDP\",\n"
-" \"override-client-update\": false,\n"
-" \"override-no-update\": false,\n"
-" \"qualifying-suffix\": \"\",\n"
-" \"replace-client-name\": \"never\",\n"
-" \"sender-ip\": \"0.0.0.0\",\n"
-" \"sender-port\": 0,\n"
-" \"server-ip\": \"127.0.0.1\",\n"
-" \"server-port\": 53001\n"
-" },\n"
-" \"dhcp4o6-port\": 0,\n"
-" \"expired-leases-processing\": {\n"
-" \"flush-reclaimed-timer-wait-time\": 25,\n"
-" \"hold-reclaimed-time\": 3600,\n"
-" \"max-reclaim-leases\": 100,\n"
-" \"max-reclaim-time\": 250,\n"
-" \"reclaim-timer-wait-time\": 10,\n"
-" \"unwarned-reclaim-cycles\": 5\n"
-" },\n"
-" \"hooks-libraries\": [ ],\n"
-" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\" ],\n"
-" \"interfaces-config\": {\n"
-" \"interfaces\": [ \"*\" ],\n"
-" \"re-detect\": false\n"
-" },\n"
-" \"lease-database\": {\n"
-" \"type\": \"memfile\"\n"
-" },\n"
-" \"mac-sources\": [ \"client-link-addr-option\", \"remote-id\", \"subscriber-id\" ],\n"
-" \"option-data\": [ ],\n"
-" \"option-def\": [ ],\n"
-" \"relay-supplied-options\": [ \"65\" ],\n"
-" \"server-id\": {\n"
-" \"enterprise-id\": 0,\n"
-" \"htype\": 0,\n"
-" \"identifier\": \"\",\n"
-" \"persist\": true,\n"
-" \"time\": 0,\n"
-" \"type\": \"LLT\"\n"
-" },\n"
-" \"shared-networks\": [ ],\n"
-" \"subnet6\": [ ]\n"
" }\n",
// CONFIGURATION 38
"{\n"
@@ -5253,6 +5300,58 @@ const char* UNPARSED_CONFIGS[] = {
" \"hooks-libraries\": [ ],\n"
" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\" ],\n"
" \"interfaces-config\": {\n"
+" \"interfaces\": [ \"*\" ],\n"
+" \"re-detect\": false\n"
+" },\n"
+" \"lease-database\": {\n"
+" \"type\": \"memfile\"\n"
+" },\n"
+" \"mac-sources\": [ \"client-link-addr-option\", \"remote-id\", \"subscriber-id\" ],\n"
+" \"option-data\": [ ],\n"
+" \"option-def\": [ ],\n"
+" \"relay-supplied-options\": [ \"65\" ],\n"
+" \"server-id\": {\n"
+" \"enterprise-id\": 0,\n"
+" \"htype\": 0,\n"
+" \"identifier\": \"\",\n"
+" \"persist\": true,\n"
+" \"time\": 0,\n"
+" \"type\": \"LLT\"\n"
+" },\n"
+" \"shared-networks\": [ ],\n"
+" \"subnet6\": [ ]\n"
+" }\n",
+ // CONFIGURATION 40
+"{\n"
+" \"decline-probation-period\": 86400,\n"
+" \"dhcp-ddns\": {\n"
+" \"always-include-fqdn\": false,\n"
+" \"enable-updates\": false,\n"
+" \"generated-prefix\": \"myhost\",\n"
+" \"max-queue-size\": 1024,\n"
+" \"ncr-format\": \"JSON\",\n"
+" \"ncr-protocol\": \"UDP\",\n"
+" \"override-client-update\": false,\n"
+" \"override-no-update\": false,\n"
+" \"qualifying-suffix\": \"\",\n"
+" \"replace-client-name\": \"never\",\n"
+" \"sender-ip\": \"0.0.0.0\",\n"
+" \"sender-port\": 0,\n"
+" \"server-ip\": \"127.0.0.1\",\n"
+" \"server-port\": 53001\n"
+" },\n"
+" \"dhcp4o6-port\": 0,\n"
+" \"expired-leases-processing\": {\n"
+" \"flush-reclaimed-timer-wait-time\": 25,\n"
+" \"hold-reclaimed-time\": 3600,\n"
+" \"max-reclaim-leases\": 100,\n"
+" \"max-reclaim-time\": 250,\n"
+" \"reclaim-timer-wait-time\": 10,\n"
+" \"unwarned-reclaim-cycles\": 5\n"
+" },\n"
+" \"hooks-libraries\": [ ],\n"
+" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\" ],\n"
+" \"interfaces-config\": {\n"
" \"interfaces\": [ ],\n"
" \"re-detect\": false\n"
" },\n"
@@ -5287,7 +5386,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5309,7 +5408,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"out-of-pool\",\n"
@@ -5331,7 +5430,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"disabled\",\n"
@@ -5353,7 +5452,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5362,58 +5461,6 @@ const char* UNPARSED_CONFIGS[] = {
" \"valid-lifetime\": 4000\n"
" }\n"
" ]\n"
-" }\n",
- // CONFIGURATION 40
-"{\n"
-" \"decline-probation-period\": 86400,\n"
-" \"dhcp-ddns\": {\n"
-" \"always-include-fqdn\": false,\n"
-" \"enable-updates\": false,\n"
-" \"generated-prefix\": \"myhost\",\n"
-" \"max-queue-size\": 1024,\n"
-" \"ncr-format\": \"JSON\",\n"
-" \"ncr-protocol\": \"UDP\",\n"
-" \"override-client-update\": false,\n"
-" \"override-no-update\": false,\n"
-" \"qualifying-suffix\": \"\",\n"
-" \"replace-client-name\": \"never\",\n"
-" \"sender-ip\": \"0.0.0.0\",\n"
-" \"sender-port\": 0,\n"
-" \"server-ip\": \"127.0.0.1\",\n"
-" \"server-port\": 53001\n"
-" },\n"
-" \"dhcp4o6-port\": 0,\n"
-" \"expired-leases-processing\": {\n"
-" \"flush-reclaimed-timer-wait-time\": 25,\n"
-" \"hold-reclaimed-time\": 3600,\n"
-" \"max-reclaim-leases\": 100,\n"
-" \"max-reclaim-time\": 250,\n"
-" \"reclaim-timer-wait-time\": 10,\n"
-" \"unwarned-reclaim-cycles\": 5\n"
-" },\n"
-" \"hooks-libraries\": [ ],\n"
-" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\" ],\n"
-" \"interfaces-config\": {\n"
-" \"interfaces\": [ \"*\" ],\n"
-" \"re-detect\": false\n"
-" },\n"
-" \"lease-database\": {\n"
-" \"type\": \"memfile\"\n"
-" },\n"
-" \"mac-sources\": [ \"any\" ],\n"
-" \"option-data\": [ ],\n"
-" \"option-def\": [ ],\n"
-" \"relay-supplied-options\": [ \"23\", \"37\", \"65\" ],\n"
-" \"server-id\": {\n"
-" \"enterprise-id\": 0,\n"
-" \"htype\": 0,\n"
-" \"identifier\": \"\",\n"
-" \"persist\": true,\n"
-" \"time\": 0,\n"
-" \"type\": \"LLT\"\n"
-" },\n"
-" \"shared-networks\": [ ],\n"
-" \"subnet6\": [ ]\n"
" }\n",
// CONFIGURATION 41
"{\n"
@@ -5455,7 +5502,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"mac-sources\": [ \"any\" ],\n"
" \"option-data\": [ ],\n"
" \"option-def\": [ ],\n"
-" \"relay-supplied-options\": [ \"65\" ],\n"
+" \"relay-supplied-options\": [ \"23\", \"37\", \"65\" ],\n"
" \"server-id\": {\n"
" \"enterprise-id\": 0,\n"
" \"htype\": 0,\n"
@@ -5521,7 +5568,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n",
// CONFIGURATION 43
"{\n"
-" \"decline-probation-period\": 12345,\n"
+" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
" \"always-include-fqdn\": false,\n"
" \"enable-updates\": false,\n"
@@ -5573,6 +5620,58 @@ const char* UNPARSED_CONFIGS[] = {
" }\n",
// CONFIGURATION 44
"{\n"
+" \"decline-probation-period\": 12345,\n"
+" \"dhcp-ddns\": {\n"
+" \"always-include-fqdn\": false,\n"
+" \"enable-updates\": false,\n"
+" \"generated-prefix\": \"myhost\",\n"
+" \"max-queue-size\": 1024,\n"
+" \"ncr-format\": \"JSON\",\n"
+" \"ncr-protocol\": \"UDP\",\n"
+" \"override-client-update\": false,\n"
+" \"override-no-update\": false,\n"
+" \"qualifying-suffix\": \"\",\n"
+" \"replace-client-name\": \"never\",\n"
+" \"sender-ip\": \"0.0.0.0\",\n"
+" \"sender-port\": 0,\n"
+" \"server-ip\": \"127.0.0.1\",\n"
+" \"server-port\": 53001\n"
+" },\n"
+" \"dhcp4o6-port\": 0,\n"
+" \"expired-leases-processing\": {\n"
+" \"flush-reclaimed-timer-wait-time\": 25,\n"
+" \"hold-reclaimed-time\": 3600,\n"
+" \"max-reclaim-leases\": 100,\n"
+" \"max-reclaim-time\": 250,\n"
+" \"reclaim-timer-wait-time\": 10,\n"
+" \"unwarned-reclaim-cycles\": 5\n"
+" },\n"
+" \"hooks-libraries\": [ ],\n"
+" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\" ],\n"
+" \"interfaces-config\": {\n"
+" \"interfaces\": [ \"*\" ],\n"
+" \"re-detect\": false\n"
+" },\n"
+" \"lease-database\": {\n"
+" \"type\": \"memfile\"\n"
+" },\n"
+" \"mac-sources\": [ \"any\" ],\n"
+" \"option-data\": [ ],\n"
+" \"option-def\": [ ],\n"
+" \"relay-supplied-options\": [ \"65\" ],\n"
+" \"server-id\": {\n"
+" \"enterprise-id\": 0,\n"
+" \"htype\": 0,\n"
+" \"identifier\": \"\",\n"
+" \"persist\": true,\n"
+" \"time\": 0,\n"
+" \"type\": \"LLT\"\n"
+" },\n"
+" \"shared-networks\": [ ],\n"
+" \"subnet6\": [ ]\n"
+" }\n",
+ // CONFIGURATION 45
+"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
" \"always-include-fqdn\": false,\n"
@@ -5623,7 +5722,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"shared-networks\": [ ],\n"
" \"subnet6\": [ ]\n"
" }\n",
- // CONFIGURATION 45
+ // CONFIGURATION 46
"{\n"
" \"client-classes\": [\n"
" {\n"
@@ -5702,7 +5801,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5712,7 +5811,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 46
+ // CONFIGURATION 47
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -5777,83 +5876,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
-" },\n"
-" \"renew-timer\": 1000,\n"
-" \"reservation-mode\": \"all\",\n"
-" \"reservations\": [ ],\n"
-" \"subnet\": \"2001:db8::/32\",\n"
-" \"valid-lifetime\": 4000\n"
-" }\n"
-" ]\n"
-" }\n",
- // CONFIGURATION 47
-"{\n"
-" \"decline-probation-period\": 86400,\n"
-" \"dhcp-ddns\": {\n"
-" \"always-include-fqdn\": false,\n"
-" \"enable-updates\": false,\n"
-" \"generated-prefix\": \"myhost\",\n"
-" \"max-queue-size\": 1024,\n"
-" \"ncr-format\": \"JSON\",\n"
-" \"ncr-protocol\": \"UDP\",\n"
-" \"override-client-update\": false,\n"
-" \"override-no-update\": false,\n"
-" \"qualifying-suffix\": \"\",\n"
-" \"replace-client-name\": \"never\",\n"
-" \"sender-ip\": \"0.0.0.0\",\n"
-" \"sender-port\": 0,\n"
-" \"server-ip\": \"127.0.0.1\",\n"
-" \"server-port\": 53001\n"
-" },\n"
-" \"dhcp4o6-port\": 0,\n"
-" \"expired-leases-processing\": {\n"
-" \"flush-reclaimed-timer-wait-time\": 25,\n"
-" \"hold-reclaimed-time\": 3600,\n"
-" \"max-reclaim-leases\": 100,\n"
-" \"max-reclaim-time\": 250,\n"
-" \"reclaim-timer-wait-time\": 10,\n"
-" \"unwarned-reclaim-cycles\": 5\n"
-" },\n"
-" \"hooks-libraries\": [ ],\n"
-" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\" ],\n"
-" \"interfaces-config\": {\n"
-" \"interfaces\": [ \"*\" ],\n"
-" \"re-detect\": false\n"
-" },\n"
-" \"lease-database\": {\n"
-" \"type\": \"memfile\"\n"
-" },\n"
-" \"mac-sources\": [ \"any\" ],\n"
-" \"option-data\": [ ],\n"
-" \"option-def\": [ ],\n"
-" \"relay-supplied-options\": [ \"65\" ],\n"
-" \"server-id\": {\n"
-" \"enterprise-id\": 0,\n"
-" \"htype\": 0,\n"
-" \"identifier\": \"\",\n"
-" \"persist\": true,\n"
-" \"time\": 0,\n"
-" \"type\": \"LLT\"\n"
-" },\n"
-" \"shared-networks\": [ ],\n"
-" \"subnet6\": [\n"
-" {\n"
-" \"id\": 1,\n"
-" \"option-data\": [ ],\n"
-" \"pd-pools\": [ ],\n"
-" \"pools\": [\n"
-" {\n"
-" \"option-data\": [ ],\n"
-" \"pool\": \"2001:db8::/64\",\n"
-" \"user-context\": { }\n"
-" }\n"
-" ],\n"
-" \"preferred-lifetime\": 3000,\n"
-" \"rapid-commit\": false,\n"
-" \"rebind-timer\": 2000,\n"
-" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -5922,19 +5945,14 @@ const char* UNPARSED_CONFIGS[] = {
" {\n"
" \"option-data\": [ ],\n"
" \"pool\": \"2001:db8::/64\",\n"
-" \"user-context\": {\n"
-" \"lw4over6-bind-prefix-len\": 56,\n"
-" \"lw4over6-sharing-ratio\": 64,\n"
-" \"lw4over6-sysports-exclude\": true,\n"
-" \"lw4over6-v4-pool\": \"192.0.2.0/24\"\n"
-" }\n"
+" \"user-context\": { }\n"
" }\n"
" ],\n"
" \"preferred-lifetime\": 3000,\n"
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6015,7 +6033,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6079,20 +6097,24 @@ const char* UNPARSED_CONFIGS[] = {
" {\n"
" \"id\": 1,\n"
" \"option-data\": [ ],\n"
-" \"pd-pools\": [\n"
+" \"pd-pools\": [ ],\n"
+" \"pools\": [\n"
" {\n"
-" \"delegated-len\": 64,\n"
" \"option-data\": [ ],\n"
-" \"prefix\": \"2001:db8::\",\n"
-" \"prefix-len\": 56\n"
+" \"pool\": \"2001:db8::/64\",\n"
+" \"user-context\": {\n"
+" \"lw4over6-bind-prefix-len\": 56,\n"
+" \"lw4over6-sharing-ratio\": 64,\n"
+" \"lw4over6-sysports-exclude\": true,\n"
+" \"lw4over6-v4-pool\": \"192.0.2.0/24\"\n"
+" }\n"
" }\n"
" ],\n"
-" \"pools\": [ ],\n"
" \"preferred-lifetime\": 3000,\n"
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6161,8 +6183,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"delegated-len\": 64,\n"
" \"option-data\": [ ],\n"
" \"prefix\": \"2001:db8::\",\n"
-" \"prefix-len\": 56,\n"
-" \"user-context\": { }\n"
+" \"prefix-len\": 56\n"
" }\n"
" ],\n"
" \"pools\": [ ],\n"
@@ -6170,7 +6191,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6240,6 +6261,84 @@ const char* UNPARSED_CONFIGS[] = {
" \"option-data\": [ ],\n"
" \"prefix\": \"2001:db8::\",\n"
" \"prefix-len\": 56,\n"
+" \"user-context\": { }\n"
+" }\n"
+" ],\n"
+" \"pools\": [ ],\n"
+" \"preferred-lifetime\": 3000,\n"
+" \"rapid-commit\": false,\n"
+" \"rebind-timer\": 2000,\n"
+" \"relay\": {\n"
+" \"ip-addresses\": [ ]\n"
+" },\n"
+" \"renew-timer\": 1000,\n"
+" \"reservation-mode\": \"all\",\n"
+" \"reservations\": [ ],\n"
+" \"subnet\": \"2001:db8::/32\",\n"
+" \"valid-lifetime\": 4000\n"
+" }\n"
+" ]\n"
+" }\n",
+ // CONFIGURATION 53
+"{\n"
+" \"decline-probation-period\": 86400,\n"
+" \"dhcp-ddns\": {\n"
+" \"always-include-fqdn\": false,\n"
+" \"enable-updates\": false,\n"
+" \"generated-prefix\": \"myhost\",\n"
+" \"max-queue-size\": 1024,\n"
+" \"ncr-format\": \"JSON\",\n"
+" \"ncr-protocol\": \"UDP\",\n"
+" \"override-client-update\": false,\n"
+" \"override-no-update\": false,\n"
+" \"qualifying-suffix\": \"\",\n"
+" \"replace-client-name\": \"never\",\n"
+" \"sender-ip\": \"0.0.0.0\",\n"
+" \"sender-port\": 0,\n"
+" \"server-ip\": \"127.0.0.1\",\n"
+" \"server-port\": 53001\n"
+" },\n"
+" \"dhcp4o6-port\": 0,\n"
+" \"expired-leases-processing\": {\n"
+" \"flush-reclaimed-timer-wait-time\": 25,\n"
+" \"hold-reclaimed-time\": 3600,\n"
+" \"max-reclaim-leases\": 100,\n"
+" \"max-reclaim-time\": 250,\n"
+" \"reclaim-timer-wait-time\": 10,\n"
+" \"unwarned-reclaim-cycles\": 5\n"
+" },\n"
+" \"hooks-libraries\": [ ],\n"
+" \"host-reservation-identifiers\": [ \"hw-address\", \"duid\" ],\n"
+" \"interfaces-config\": {\n"
+" \"interfaces\": [ \"*\" ],\n"
+" \"re-detect\": false\n"
+" },\n"
+" \"lease-database\": {\n"
+" \"type\": \"memfile\"\n"
+" },\n"
+" \"mac-sources\": [ \"any\" ],\n"
+" \"option-data\": [ ],\n"
+" \"option-def\": [ ],\n"
+" \"relay-supplied-options\": [ \"65\" ],\n"
+" \"server-id\": {\n"
+" \"enterprise-id\": 0,\n"
+" \"htype\": 0,\n"
+" \"identifier\": \"\",\n"
+" \"persist\": true,\n"
+" \"time\": 0,\n"
+" \"type\": \"LLT\"\n"
+" },\n"
+" \"shared-networks\": [ ],\n"
+" \"subnet6\": [\n"
+" {\n"
+" \"id\": 1,\n"
+" \"option-data\": [ ],\n"
+" \"pd-pools\": [\n"
+" {\n"
+" \"delegated-len\": 64,\n"
+" \"option-data\": [ ],\n"
+" \"prefix\": \"2001:db8::\",\n"
+" \"prefix-len\": 56,\n"
" \"user-context\": {\n"
" \"lw4over6-bind-prefix-len\": 56,\n"
" \"lw4over6-sharing-ratio\": 64,\n"
@@ -6253,7 +6352,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 2000,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 1000,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6263,7 +6362,7 @@ const char* UNPARSED_CONFIGS[] = {
" }\n"
" ]\n"
" }\n",
- // CONFIGURATION 53
+ // CONFIGURATION 54
"{\n"
" \"decline-probation-period\": 86400,\n"
" \"dhcp-ddns\": {\n"
@@ -6329,7 +6428,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"shared-networks\": [ ],\n"
" \"subnet6\": [ ]\n"
" }\n",
- // CONFIGURATION 54
+ // CONFIGURATION 55
"{\n"
" \"comment\": \"A DHCPv6 server\",\n"
" \"client-classes\": [\n"
@@ -6437,7 +6536,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 0,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 0,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6466,7 +6565,7 @@ const char* UNPARSED_CONFIGS[] = {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 1800,\n"
" \"relay\": {\n"
-" \"ip-address\": \"::\"\n"
+" \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 900,\n"
" \"reservation-mode\": \"all\",\n"
@@ -6747,12 +6846,17 @@ TEST_P(Dhcp6GetConfigTest, run) {
ASSERT_NO_THROW(outputFormatted(dhcp->str()));
} else {
expected = UNPARSED_CONFIGS[config_counter];
+ // get the expected config using the dhcpv6 syntax parser
ElementPtr jsond;
ASSERT_NO_THROW(jsond = parseDHCP6(expected, true));
+ // get the expected config using the generic JSON syntax parser
ElementPtr jsonj;
ASSERT_NO_THROW(jsonj = parseJSON(expected));
- EXPECT_TRUE(isEquivalent(dhcp, jsonj));
+ // the generic JSON parser does not handle comments
EXPECT_TRUE(isEquivalent(jsond, moveComments(jsonj)));
+ // check that unparsed and expected values match
+ EXPECT_TRUE(isEquivalent(dhcp, jsonj));
+ // check on pretty prints too
std::string current = prettyPrint(dhcp, 4, 4) + "\n";
EXPECT_EQ(expected, current);
if (expected != current) {
diff --git a/src/lib/dhcpsrv/cfg_subnets4.cc b/src/lib/dhcpsrv/cfg_subnets4.cc
index 0e47c6d0fc..21c188ae30 100644
--- a/src/lib/dhcpsrv/cfg_subnets4.cc
+++ b/src/lib/dhcpsrv/cfg_subnets4.cc
@@ -137,17 +137,16 @@ CfgSubnets4::selectSubnet(const SubnetSelector& selector) const {
// If relay information is specified for this subnet, it must match.
// Otherwise, we ignore this subnet.
- if (!(*subnet)->getRelayInfo().addr_.isV4Zero()) {
- if (selector.giaddr_ != (*subnet)->getRelayInfo().addr_) {
+ if ((*subnet)->hasRelays()) {
+ if (!(*subnet)->hasRelayAddress(selector.giaddr_)) {
continue;
}
-
} else {
// Relay information is not specified on the subnet level,
// so let's try matching on the shared network level.
SharedNetwork4Ptr network;
(*subnet)->getSharedNetwork(network);
- if (!network || (selector.giaddr_ != network->getRelayInfo().addr_)) {
+ if (!network || !(network->hasRelayAddress(selector.giaddr_))) {
continue;
}
}
diff --git a/src/lib/dhcpsrv/cfg_subnets6.cc b/src/lib/dhcpsrv/cfg_subnets6.cc
index e35b3773d4..9db6aa4fee 100644
--- a/src/lib/dhcpsrv/cfg_subnets6.cc
+++ b/src/lib/dhcpsrv/cfg_subnets6.cc
@@ -116,16 +116,17 @@ CfgSubnets6::selectSubnet(const asiolink::IOAddress& address,
for (Subnet6Collection::const_iterator subnet = subnets_.begin();
subnet != subnets_.end(); ++subnet) {
- // If the specified address matches the relay address, return this
+ // If the specified address matches a relay address, return this
// subnet.
if (is_relay_address &&
- ((*subnet)->getRelayInfo().addr_ == address) &&
+ ((*subnet)->hasRelayAddress(address)) &&
(*subnet)->clientSupported(client_classes)) {
LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE,
DHCPSRV_CFGMGR_SUBNET6_RELAY)
.arg((*subnet)->toText()).arg(address.toText());
return (*subnet);
}
+
}
}
diff --git a/src/lib/dhcpsrv/dhcpsrv_messages.mes b/src/lib/dhcpsrv/dhcpsrv_messages.mes
index 6f51007ef9..104bf38031 100644
--- a/src/lib/dhcpsrv/dhcpsrv_messages.mes
+++ b/src/lib/dhcpsrv/dhcpsrv_messages.mes
@@ -84,6 +84,12 @@ This warning message is issued on an attempt to configure multiple options with
same option code for the particular subnet. Adding multiple options is uncommon
for DHCPv6, but it is not prohibited.
+% DHCPSRV_CFGMGR_RELAY_IP_ADDRESS_DEPRECATED "relay" uses "ip-address", which has been deprecated, please use "ip-addresses": %1
+This is debug message issued when the "relay" element being parse
+contains "ip-address" rather than its replacement, "ip-addresses".
+The server will still honor the value but users are encouraged to
+move to the new list parameter.
+
% DHCPSRV_CFGMGR_SOCKET_RAW_UNSUPPORTED use of raw sockets is unsupported on this OS, UDP sockets will be used
This warning message is logged when the user specified that the
DHCPv4 server should use the raw sockets to receive the DHCP
diff --git a/src/lib/dhcpsrv/network.cc b/src/lib/dhcpsrv/network.cc
index 1071ec3096..fbd7d35539 100644
--- a/src/lib/dhcpsrv/network.cc
+++ b/src/lib/dhcpsrv/network.cc
@@ -16,8 +16,56 @@ using namespace isc::data;
namespace isc {
namespace dhcp {
-Network::RelayInfo::RelayInfo(const isc::asiolink::IOAddress& addr)
- :addr_(addr) {
+void
+Network::RelayInfo::addAddress(const asiolink::IOAddress& addr) {
+ if (containsAddress(addr)) {
+ isc_throw (BadValue, "RelayInfo already contains address: "
+ << addr.toText());
+ }
+
+ addresses_.push_back(addr);
+}
+
+bool
+Network::RelayInfo::hasAddresses() const {
+ return (!addresses_.empty());
+}
+
+bool
+Network::RelayInfo::containsAddress(const asiolink::IOAddress& addr) const {
+ for (auto address = addresses_.begin(); address != addresses_.end();
+ ++address) {
+ if ((*address) == addr) {
+ return (true);
+ }
+ }
+
+ return (false);
+}
+
+const IOAddressList&
+Network::RelayInfo::getAddresses() const {
+ return (addresses_);
+}
+
+void
+Network::addRelayAddress(const asiolink::IOAddress& addr) {
+ relay_.addAddress(addr);
+}
+
+bool
+Network::hasRelays() const {
+ return (relay_.hasAddresses());
+}
+
+bool
+Network::hasRelayAddress(const asiolink::IOAddress& addr) const {
+ return (relay_.containsAddress(addr));
+}
+
+const IOAddressList&
+Network::getRelayAddresses() const {
+ return (relay_.getAddresses());
}
bool
@@ -61,11 +109,15 @@ Network::toElement() const {
map->set("interface", Element::create(iface));
}
- // Set relay info
- const RelayInfo& relay_info = getRelayInfo();
- ElementPtr relay = Element::createMap();
- relay->set("ip-address", Element::create(relay_info.addr_.toText()));
- map->set("relay", relay);
+ ElementPtr relay_map = Element::createMap();
+ ElementPtr address_list = Element::createList();
+ const IOAddressList addresses = getRelayAddresses();
+ for (auto address = addresses.begin(); address != addresses.end(); ++address) {
+ address_list->add(Element::create((*address).toText()));
+ }
+
+ relay_map->set("ip-addresses", address_list);
+ map->set("relay", relay_map);
// Set client-class
const ClientClass& cclass = getClientClass();
diff --git a/src/lib/dhcpsrv/network.h b/src/lib/dhcpsrv/network.h
index 815826a0e7..161afedc45 100644
--- a/src/lib/dhcpsrv/network.h
+++ b/src/lib/dhcpsrv/network.h
@@ -24,6 +24,9 @@
namespace isc {
namespace dhcp {
+/// List of IOAddresses
+typedef std::vector IOAddressList;
+
/// @brief Common interface representing a network to which the DHCP clients
/// are connected.
///
@@ -44,24 +47,42 @@ namespace dhcp {
/// derived classes.
class Network : public virtual UserContext, public data::CfgToElement {
public:
-
/// @brief Holds optional information about relay.
///
/// In some cases it is beneficial to have additional information about
/// a relay configured in the subnet. For now, the structure holds only
- /// IP address, but there may potentially be additional parameters added
+ /// IP addresses, but there may potentially be additional parameters added
/// later, e.g. relay interface-id or relay-id.
- struct RelayInfo {
+ class RelayInfo {
+ public:
- /// @brief default and the only constructor
+ /// @brief Adds an address to the list of addresses
///
- /// @param addr an IP address of the relay (may be :: or 0.0.0.0)
- RelayInfo(const isc::asiolink::IOAddress& addr);
+ /// @param addr address to add
+ /// @throw BadValue if the address is already in the list
+ void addAddress(const asiolink::IOAddress& addr);
- /// @brief IP address of the relay
- isc::asiolink::IOAddress addr_;
+ /// @brief Returns const reference to the list of addresses
+ ///
+ /// @return const reference to the list of addresses
+ const IOAddressList& getAddresses() const;
+
+ /// @brief Indicates whether or not the address list has entries
+ ///
+ /// @return True if the address list is not empty
+ bool hasAddresses() const;
+
+ /// @brief Checks the address list for the given address
+ ///
+ /// @return True if the address is found in the address list
+ bool containsAddress(const asiolink::IOAddress& addr) const;
+
+ private:
+ /// @brief List of relay IP addresses
+ IOAddressList addresses_;
};
+
/// @brief Specifies allowed host reservation mode.
///
typedef enum {
@@ -88,8 +109,7 @@ public:
/// @brief Constructor.
Network()
- : iface_name_(), relay_(asiolink::IOAddress::IPV4_ZERO_ADDRESS()),
- client_class_(""), t1_(0), t2_(0), valid_(0),
+ : iface_name_(), client_class_(""), t1_(0), t2_(0), valid_(0),
host_reservation_mode_(HR_ALL), cfg_option_(new CfgOption()) {
}
@@ -151,6 +171,28 @@ public:
return (relay_);
}
+ /// @brief Adds an address to the list addresses in the network's relay info
+ ///
+ /// @param addr address of the relay
+ /// @throw BadValue if the address is already in the list
+ void addRelayAddress(const asiolink::IOAddress& addr);
+
+ /// @brief Returns the list of relay addresses from the network's relay info
+ ///
+ /// @return const reference to the list of addresses
+ const IOAddressList& getRelayAddresses() const;
+
+ /// @brief Indicates if network's relay info has relay addresses
+ ///
+ /// @return True the relay list is not empty, false otherwise
+ bool hasRelays() const;
+
+ /// @brief Tests if the network's relay info contains the given address
+ ///
+ /// @param address address to search for in the relay list
+ /// @return True if a relay with the given address is found, false otherwise
+ bool hasRelayAddress(const asiolink::IOAddress& address) const;
+
/// @brief Checks whether this network supports client that belongs to
/// specified classes.
///
@@ -363,7 +405,6 @@ public:
/// @brief Constructor.
Network6()
: Network(), preferred_(0), interface_id_(), rapid_commit_(false) {
- setRelayInfo(asiolink::IOAddress::IPV6_ZERO_ADDRESS());
}
/// @brief Returns preferred lifetime (in seconds)
diff --git a/src/lib/dhcpsrv/parsers/dhcp_parsers.cc b/src/lib/dhcpsrv/parsers/dhcp_parsers.cc
index 8b3f2efdcd..aec0ed2645 100644
--- a/src/lib/dhcpsrv/parsers/dhcp_parsers.cc
+++ b/src/lib/dhcpsrv/parsers/dhcp_parsers.cc
@@ -233,23 +233,81 @@ RelayInfoParser::RelayInfoParser(const Option::Universe& family)
};
void
-RelayInfoParser::parse(const isc::dhcp::Network::RelayInfoPtr& cfg,
- ConstElementPtr relay_info) {
- // There is only one parameter which is mandatory
- IOAddress ip = getAddress(relay_info, "ip-address");
+RelayInfoParser::parse(const isc::dhcp::Network::RelayInfoPtr& relay_info,
+ ConstElementPtr relay_elem) {
- // Check if the address family matches.
- if ((ip.isV4() && family_ != Option::V4) ||
- (ip.isV6() && family_ != Option::V6) ) {
- isc_throw(DhcpConfigError, "ip-address field " << ip.toText()
- << " does not have IP address of expected family type: "
- << (family_ == Option::V4 ? "IPv4" : "IPv6")
- << " (" << getPosition("ip-address", relay_info) << ")");
+ if (relay_elem->getType() != Element::map) {
+ isc_throw(DhcpConfigError, "relay must be a map");
}
- // Ok, we're done with parsing. Let's store the result in the structure
- // we were given as configuration storage.
- *cfg = isc::dhcp::Network::RelayInfo(ip);
+ ConstElementPtr address = relay_elem->get("ip-address");
+ ConstElementPtr addresses = relay_elem->get("ip-addresses");
+
+ if (address && addresses) {
+ isc_throw(DhcpConfigError,
+ "specify either ip-address or ip-addresses, not both");
+ }
+
+ if (!address && !addresses) {
+ isc_throw(DhcpConfigError, "ip-addresses is required");
+ }
+
+ // Create our resultant RelayInfo structure
+ *relay_info = isc::dhcp::Network::RelayInfo();
+
+ if (address) {
+ addAddress("ip-address", getString(relay_elem, "ip-address"),
+ relay_elem, relay_info);
+ LOG_DEBUG(dhcpsrv_logger, DHCPSRV_DBG_TRACE_DETAIL,
+ DHCPSRV_CFGMGR_RELAY_IP_ADDRESS_DEPRECATED)
+ .arg(getPosition("ip-address", relay_elem));
+ return;
+ }
+
+ if (addresses->getType() != Element::list) {
+ isc_throw(DhcpConfigError, "ip-addresses must be a list "
+ << " (" << getPosition("ip-addresses", relay_elem) << ")");
+ }
+
+ BOOST_FOREACH(ConstElementPtr address_element, addresses->listValue()) {
+ addAddress("ip-addresses", address_element->stringValue(),
+ relay_elem, relay_info);
+ }
+}
+
+void
+RelayInfoParser::addAddress(const std::string& name,
+ const std::string& address_str,
+ ConstElementPtr relay_elem,
+ const isc::dhcp::Network::RelayInfoPtr& relay_info) {
+ boost::scoped_ptr ip;
+ try {
+ ip.reset(new isc::asiolink::IOAddress(address_str));
+ } catch (const std::exception& ex) {
+ isc_throw(DhcpConfigError, "address " << address_str
+ << " is not a valid: "
+ << (family_ == Option::V4 ? "IPv4" : "IPv6")
+ << "address"
+ << " (" << getPosition(name, relay_elem) << ")");
+ }
+
+ // Check if the address family matches.
+ if ((ip->isV4() && family_ != Option::V4) ||
+ (ip->isV6() && family_ != Option::V6) ) {
+ isc_throw(DhcpConfigError, "address " << address_str
+ << " is not a: "
+ << (family_ == Option::V4 ? "IPv4" : "IPv6")
+ << "address"
+ << " (" << getPosition(name, relay_elem) << ")");
+ }
+
+ try {
+ relay_info->addAddress(*ip);
+ } catch (const std::exception& ex) {
+ isc_throw(DhcpConfigError, "cannot add address: " << address_str
+ << "to relay info: " << ex.what()
+ << " (" << getPosition(name, relay_elem) << ")");
+ }
}
//****************************** PoolParser ********************************
@@ -431,8 +489,7 @@ SubnetConfigParser::SubnetConfigParser(uint16_t family)
: pools_(new PoolStorage()),
address_family_(family),
options_(new CfgOption()) {
- string addr = family == AF_INET ? "0.0.0.0" : "::";
- relay_info_.reset(new isc::dhcp::Network::RelayInfo(IOAddress(addr)));
+ relay_info_.reset(new isc::dhcp::Network::RelayInfo());
}
SubnetPtr
@@ -698,7 +755,7 @@ Subnet4ConfigParser::initSubnet(data::ConstElementPtr params,
try {
std::string hr_mode = getString(params, "reservation-mode");
subnet4->setHostReservationMode(hrModeFromText(hr_mode));
- } catch (const BadValue& ex) {
+ } catch (const BadValue& ex) {
isc_throw(DhcpConfigError, "Failed to process specified value "
" of reservation-mode parameter: " << ex.what()
<< "(" << getPosition("reservation-mode", params) << ")");
@@ -879,7 +936,7 @@ PdPoolParser::parse(PoolStoragePtr pools, ConstElementPtr pd_pool_) {
OptionDataListParser opts_parser(AF_INET6);
opts_parser.parse(options_, option_data);
}
-
+
ConstElementPtr user_context = pd_pool_->get("user-context");
if (user_context) {
user_context_ = user_context;
@@ -921,7 +978,7 @@ PdPoolParser::parse(PoolStoragePtr pools, ConstElementPtr pd_pool_) {
pool_->allowClientClass(cclass);
}
}
-
+
if (class_list) {
const std::vector& classes = class_list->listValue();
for (auto cclass = classes.cbegin();
@@ -991,7 +1048,6 @@ Subnet6ConfigParser::parse(ConstElementPtr subnet) {
sn6ptr->setRelayInfo(*relay_info_);
}
-
// Parse Host Reservations for this subnet if any.
ConstElementPtr reservations = subnet->get("reservations");
if (reservations) {
@@ -1097,7 +1153,7 @@ Subnet6ConfigParser::initSubnet(data::ConstElementPtr params,
try {
std::string hr_mode = getString(params, "reservation-mode");
subnet6->setHostReservationMode(hrModeFromText(hr_mode));
- } catch (const BadValue& ex) {
+ } catch (const BadValue& ex) {
isc_throw(DhcpConfigError, "Failed to process specified value "
" of reservation-mode parameter: " << ex.what()
<< "(" << getPosition("reservation-mode", params) << ")");
@@ -1214,9 +1270,9 @@ D2ClientConfigParser::parse(isc::data::ConstElementPtr client_config) {
std::string sender_ip_str = getString(client_config, "sender-ip");
- uint32_t sender_port = getUint32(client_config, "sender-port");
+ uint32_t sender_port = getUint32(client_config, "sender-port");
- uint32_t max_queue_size = getUint32(client_config, "max-queue-size");
+ uint32_t max_queue_size = getUint32(client_config, "max-queue-size");
dhcp_ddns::NameChangeProtocol ncr_protocol =
getProtocol(client_config, "ncr-protocol");
@@ -1245,7 +1301,7 @@ D2ClientConfigParser::parse(isc::data::ConstElementPtr client_config) {
if (client_config->contains("qualifying-suffix")) {
qualifying_suffix = getString(client_config, "qualifying-suffix");
found_qualifying_suffix = true;
- }
+ }
IOAddress sender_ip(0);
if (sender_ip_str.empty()) {
diff --git a/src/lib/dhcpsrv/parsers/dhcp_parsers.h b/src/lib/dhcpsrv/parsers/dhcp_parsers.h
index abf1e57a02..b323eb4b87 100644
--- a/src/lib/dhcpsrv/parsers/dhcp_parsers.h
+++ b/src/lib/dhcpsrv/parsers/dhcp_parsers.h
@@ -397,12 +397,32 @@ public:
///
/// The elements currently supported are:
/// -# ip-address
+ /// -# ip-addresses
///
- /// @param cfg configuration will be stored here
- /// @param relay_info JSON structure holding relay parameters to parse
- void parse(const isc::dhcp::Network::RelayInfoPtr& cfg,
- isc::data::ConstElementPtr relay_info);
+ /// Note that ip-address and ip-addresses are mutually exclusive, with
+ /// former being deprecated. The use of ip-address will cause an debug
+ /// log to be emitted, reminded users to switch.
+ ///
+ /// @param relay_info configuration will be stored here
+ /// @param relay_elem Element tree containing the relay and its members
+ /// @throw isc::dhcp::DhcpConfigError if both or neither of ip-address
+ /// and ip-addresses are specified.
+ void parse(const isc::dhcp::Network::RelayInfoPtr& relay_info,
+ isc::data::ConstElementPtr relay_elem);
+ /// @brief Attempts to add an IP address to list of relay addresses
+ ///
+ /// @param name name of the element supplying the address string, (either
+ /// "ip-address" or "ip-addresses")
+ /// @param address string form of the IP address to add
+ /// @param relay_elem parent relay element (needed for position info)
+ /// @param relay_info RelayInfo to which the address should be added
+ /// @throw isc::dhcp::DhcpConfigError if the address string is not a valid
+ /// IP address, is an address of the wrong family, or is already in the
+ /// relay address list
+ void addAddress(const std::string& name, const std::string& address_str,
+ isc::data::ConstElementPtr relay_elem,
+ const isc::dhcp::Network::RelayInfoPtr& relay_info);
private:
/// Protocol family (IPv4 or IPv6)
diff --git a/src/lib/dhcpsrv/parsers/shared_network_parser.cc b/src/lib/dhcpsrv/parsers/shared_network_parser.cc
index ad395683b2..693b0f271a 100644
--- a/src/lib/dhcpsrv/parsers/shared_network_parser.cc
+++ b/src/lib/dhcpsrv/parsers/shared_network_parser.cc
@@ -89,6 +89,15 @@ SharedNetwork4Parser::parse(const data::ConstElementPtr& shared_network_data) {
}
}
+ if (shared_network_data->contains("relay")) {
+ auto relay_parms = shared_network_data->get("relay");
+ if (relay_parms) {
+ RelayInfoParser parser(Option::V4);
+ Network::RelayInfoPtr relay_info(new Network::RelayInfo());
+ parser.parse(relay_info, relay_parms);
+ shared_network->setRelayInfo(*relay_info);
+ }
+ }
} catch (const DhcpConfigError&) {
// Position was already added
throw;
@@ -164,6 +173,15 @@ SharedNetwork6Parser::parse(const data::ConstElementPtr& shared_network_data) {
}
}
+ if (shared_network_data->contains("relay")) {
+ auto relay_parms = shared_network_data->get("relay");
+ if (relay_parms) {
+ RelayInfoParser parser(Option::V6);
+ Network::RelayInfoPtr relay_info(new Network::RelayInfo());
+ parser.parse(relay_info, relay_parms);
+ shared_network->setRelayInfo(*relay_info);
+ }
+ }
} catch (const std::exception& ex) {
isc_throw(DhcpConfigError, ex.what() << " ("
<< shared_network_data->getPosition() << ")");
diff --git a/src/lib/dhcpsrv/subnet.cc b/src/lib/dhcpsrv/subnet.cc
index 1e25f15714..ae4aefe306 100644
--- a/src/lib/dhcpsrv/subnet.cc
+++ b/src/lib/dhcpsrv/subnet.cc
@@ -231,8 +231,7 @@ Subnet4::Subnet4(const isc::asiolink::IOAddress& prefix, uint8_t length,
isc_throw(BadValue, "Non IPv4 prefix " << prefix.toText()
<< " specified in subnet4");
}
- // Relay info.
- setRelayInfo(IOAddress::IPV4_ZERO_ADDRESS());
+
// Timers.
setT1(t1);
setT2(t2);
@@ -602,8 +601,6 @@ Subnet6::Subnet6(const isc::asiolink::IOAddress& prefix, uint8_t length,
<< " specified in subnet6");
}
- // Relay info.
- setRelayInfo(RelayInfo(IOAddress::IPV6_ZERO_ADDRESS()));
// Timers.
setT1(t1);
setT2(t2);
diff --git a/src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc b/src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc
index cd82ab3797..80896223ec 100644
--- a/src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc
+++ b/src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc
@@ -111,6 +111,9 @@ TEST(CfgSharedNetworks4Test, unparse) {
SharedNetwork4Ptr network2(new SharedNetwork4("dog"));
network1->setIface("eth0");
+ network1->addRelayAddress(IOAddress("198.16.1.1"));
+ network1->addRelayAddress(IOAddress("198.16.1.2"));
+
network2->setIface("eth1");
CfgSharedNetworks4 cfg;
@@ -125,9 +128,7 @@ TEST(CfgSharedNetworks4Test, unparse) {
" \"name\": \"dog\",\n"
" \"option-data\": [ ],\n"
" \"rebind-timer\": 0,\n"
- " \"relay\": {\n"
- " \"ip-address\": \"0.0.0.0\"\n"
- " },\n"
+ " \"relay\": { \"ip-addresses\": [ ] },\n"
" \"renew-timer\": 0,\n"
" \"reservation-mode\": \"all\","
" \"subnet4\": [ ],\n"
@@ -139,9 +140,7 @@ TEST(CfgSharedNetworks4Test, unparse) {
" \"name\": \"frog\",\n"
" \"option-data\": [ ],\n"
" \"rebind-timer\": 0,\n"
- " \"relay\": {\n"
- " \"ip-address\": \"0.0.0.0\"\n"
- " },\n"
+ " \"relay\": { \"ip-addresses\": [ \"198.16.1.1\", \"198.16.1.2\" ] },\n"
" \"renew-timer\": 0,\n"
" \"reservation-mode\": \"all\","
" \"subnet4\": [ ],\n"
diff --git a/src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc b/src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc
index 92e84ad3d9..f24069c744 100644
--- a/src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc
+++ b/src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc
@@ -111,6 +111,8 @@ TEST(CfgSharedNetworks6Test, unparse) {
SharedNetwork6Ptr network2(new SharedNetwork6("dog"));
network1->setIface("eth0");
+ network1->addRelayAddress(IOAddress("2001:db8:1::1"));
+ network1->addRelayAddress(IOAddress("2001:db8:1::2"));
network2->setIface("eth1");
CfgSharedNetworks6 cfg;
@@ -126,9 +128,7 @@ TEST(CfgSharedNetworks6Test, unparse) {
" \"preferred-lifetime\": 0,\n"
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 0,\n"
- " \"relay\": {\n"
- " \"ip-address\": \"::\"\n"
- " },\n"
+ " \"relay\": { \"ip-addresses\": [ ] },\n"
" \"renew-timer\": 0,\n"
" \"reservation-mode\": \"all\","
" \"subnet6\": [ ],\n"
@@ -141,9 +141,7 @@ TEST(CfgSharedNetworks6Test, unparse) {
" \"preferred-lifetime\": 0,\n"
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 0,\n"
- " \"relay\": {\n"
- " \"ip-address\": \"::\"\n"
- " },\n"
+ " \"relay\": { \"ip-addresses\": [ \"2001:db8:1::1\", \"2001:db8:1::2\" ] },\n"
" \"renew-timer\": 0,\n"
" \"reservation-mode\": \"all\","
" \"subnet6\": [ ],\n"
diff --git a/src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc b/src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc
index 6cd404aed5..c02b4f5247 100644
--- a/src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc
+++ b/src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc
@@ -414,7 +414,7 @@ TEST(CfgSubnets4Test, selectSubnetByOptionSelect) {
// Over relay-info too
selector.giaddr_ = IOAddress("10.0.0.1");
- subnet2->setRelayInfo(IOAddress("10.0.0.1"));
+ subnet2->addRelayAddress(IOAddress("10.0.0.1"));
EXPECT_EQ(subnet3, cfg.selectSubnet(selector));
selector.option_select_ = IOAddress("0.0.0.0");
EXPECT_EQ(subnet2, cfg.selectSubnet(selector));
@@ -450,9 +450,9 @@ TEST(CfgSubnets4Test, selectSubnetByRelayAddress) {
EXPECT_FALSE(cfg.selectSubnet(selector));
// Now specify relay info
- subnet1->setRelayInfo(IOAddress("10.0.0.1"));
- subnet2->setRelayInfo(IOAddress("10.0.0.2"));
- subnet3->setRelayInfo(IOAddress("10.0.0.3"));
+ subnet1->addRelayAddress(IOAddress("10.0.0.1"));
+ subnet2->addRelayAddress(IOAddress("10.0.0.2"));
+ subnet3->addRelayAddress(IOAddress("10.0.0.3"));
// And try again. This time relay-info is there and should match.
selector.giaddr_ = IOAddress("10.0.0.1");
@@ -485,9 +485,9 @@ TEST(CfgSubnets4Test, selectSharedNetworkByRelayAddressNetworkLevel) {
// Now specify relay info. Note that for the second subnet we specify
// relay info on the network level.
- subnet1->setRelayInfo(IOAddress("10.0.0.1"));
- network->setRelayInfo(IOAddress("10.0.0.2"));
- subnet3->setRelayInfo(IOAddress("10.0.0.3"));
+ subnet1->addRelayAddress(IOAddress("10.0.0.1"));
+ network->addRelayAddress(IOAddress("10.0.0.2"));
+ subnet3->addRelayAddress(IOAddress("10.0.0.3"));
// And try again. This time relay-info is there and should match.
selector.giaddr_ = IOAddress("10.0.0.1");
@@ -524,9 +524,9 @@ TEST(CfgSubnets4Test, selectSharedNetworkByRelayAddressSubnetLevel) {
// Now specify relay info. Note that for the second subnet we specify
// relay info on the network level.
- subnet1->setRelayInfo(IOAddress("10.0.0.1"));
- subnet2->setRelayInfo(IOAddress("10.0.0.2"));
- subnet3->setRelayInfo(IOAddress("10.0.0.3"));
+ subnet1->addRelayAddress(IOAddress("10.0.0.1"));
+ subnet2->addRelayAddress(IOAddress("10.0.0.2"));
+ subnet3->addRelayAddress(IOAddress("10.0.0.3"));
// And try again. This time relay-info is there and should match.
selector.giaddr_ = IOAddress("10.0.0.1");
@@ -737,7 +737,7 @@ TEST(CfgSubnets4Test, unparseSubnet) {
Subnet4Ptr subnet3(new Subnet4(IOAddress("192.0.2.128"), 26, 1, 2, 3, 125));
subnet1->allowClientClass("foo");
subnet2->setIface("lo");
- subnet2->setRelayInfo(IOAddress("10.0.0.1"));
+ subnet2->addRelayAddress(IOAddress("10.0.0.1"));
subnet3->setIface("eth1");
subnet3->requireClientClass("foo");
subnet3->requireClientClass("bar");
@@ -757,13 +757,13 @@ TEST(CfgSubnets4Test, unparseSubnet) {
" \"comment\": \"foo\",\n"
" \"id\": 123,\n"
" \"subnet\": \"192.0.2.0/26\",\n"
- " \"relay\": { \"ip-address\": \"0.0.0.0\" },\n"
" \"match-client-id\": true,\n"
" \"next-server\": \"0.0.0.0\",\n"
" \"server-hostname\": \"\",\n"
" \"boot-file-name\": \"\",\n"
" \"renew-timer\": 1,\n"
" \"rebind-timer\": 2,\n"
+ " \"relay\": { \"ip-addresses\": [ ] },\n"
" \"valid-lifetime\": 3,\n"
" \"client-class\": \"foo\",\n"
" \"4o6-interface\": \"\",\n"
@@ -775,7 +775,6 @@ TEST(CfgSubnets4Test, unparseSubnet) {
"},{\n"
" \"id\": 124,\n"
" \"subnet\": \"192.0.2.64/26\",\n"
- " \"relay\": { \"ip-address\": \"10.0.0.1\" },\n"
" \"interface\": \"lo\",\n"
" \"match-client-id\": true,\n"
" \"next-server\": \"0.0.0.0\",\n"
@@ -783,6 +782,7 @@ TEST(CfgSubnets4Test, unparseSubnet) {
" \"boot-file-name\": \"\",\n"
" \"renew-timer\": 1,\n"
" \"rebind-timer\": 2,\n"
+ " \"relay\": { \"ip-addresses\": [ \"10.0.0.1\" ] },\n"
" \"valid-lifetime\": 3,\n"
" \"4o6-interface\": \"\",\n"
" \"4o6-interface-id\": \"\",\n"
@@ -794,7 +794,6 @@ TEST(CfgSubnets4Test, unparseSubnet) {
"},{\n"
" \"id\": 125,\n"
" \"subnet\": \"192.0.2.128/26\",\n"
- " \"relay\": { \"ip-address\": \"0.0.0.0\" },\n"
" \"interface\": \"eth1\",\n"
" \"match-client-id\": true,\n"
" \"next-server\": \"0.0.0.0\",\n"
@@ -802,6 +801,7 @@ TEST(CfgSubnets4Test, unparseSubnet) {
" \"boot-file-name\": \"\",\n"
" \"renew-timer\": 1,\n"
" \"rebind-timer\": 2,\n"
+ " \"relay\": { \"ip-addresses\": [ ] },\n"
" \"valid-lifetime\": 3,\n"
" \"4o6-interface\": \"\",\n"
" \"4o6-interface-id\": \"\",\n"
@@ -840,13 +840,13 @@ TEST(CfgSubnets4Test, unparsePool) {
"{\n"
" \"id\": 123,\n"
" \"subnet\": \"192.0.2.0/24\",\n"
- " \"relay\": { \"ip-address\": \"0.0.0.0\" },\n"
" \"match-client-id\": true,\n"
" \"next-server\": \"0.0.0.0\",\n"
" \"server-hostname\": \"\",\n"
" \"boot-file-name\": \"\",\n"
" \"renew-timer\": 1,\n"
" \"rebind-timer\": 2,\n"
+ " \"relay\": { \"ip-addresses\": [ ] },\n"
" \"valid-lifetime\": 3,\n"
" \"4o6-interface\": \"\",\n"
" \"4o6-interface-id\": \"\",\n"
diff --git a/src/lib/dhcpsrv/tests/cfg_subnets6_unittest.cc b/src/lib/dhcpsrv/tests/cfg_subnets6_unittest.cc
index c9dd4b0fd0..f640299b5e 100644
--- a/src/lib/dhcpsrv/tests/cfg_subnets6_unittest.cc
+++ b/src/lib/dhcpsrv/tests/cfg_subnets6_unittest.cc
@@ -132,9 +132,9 @@ TEST(CfgSubnets6Test, selectSubnetByRelayAddress) {
EXPECT_FALSE(cfg.selectSubnet(selector));
// Now specify relay information.
- subnet1->setRelayInfo(IOAddress("2001:db8:ff::1"));
- subnet2->setRelayInfo(IOAddress("2001:db8:ff::2"));
- subnet3->setRelayInfo(IOAddress("2001:db8:ff::3"));
+ subnet1->addRelayAddress(IOAddress("2001:db8:ff::1"));
+ subnet2->addRelayAddress(IOAddress("2001:db8:ff::2"));
+ subnet3->addRelayAddress(IOAddress("2001:db8:ff::3"));
// And try again. This time relay-info is there and should match.
selector.first_relay_linkaddr_ = IOAddress("2001:db8:ff::1");
@@ -436,7 +436,7 @@ TEST(CfgSubnets6Test, unparseSubnet) {
subnet1->setInterfaceId(ifaceid);
subnet1->allowClientClass("foo");
subnet2->setIface("lo");
- subnet2->setRelayInfo(IOAddress("2001:db8:ff::2"));
+ subnet2->addRelayAddress(IOAddress("2001:db8:ff::2"));
subnet3->setIface("eth1");
subnet3->requireClientClass("foo");
subnet3->requireClientClass("bar");
@@ -456,10 +456,10 @@ TEST(CfgSubnets6Test, unparseSubnet) {
" \"comment\": \"foo\",\n"
" \"id\": 123,\n"
" \"subnet\": \"2001:db8:1::/48\",\n"
- " \"relay\": { \"ip-address\": \"::\" },\n"
" \"interface-id\": \"relay.eth0\",\n"
" \"renew-timer\": 1,\n"
" \"rebind-timer\": 2,\n"
+ " \"relay\": { \"ip-addresses\": [ ] },\n"
" \"preferred-lifetime\": 3,\n"
" \"valid-lifetime\": 4,\n"
" \"rapid-commit\": false,\n"
@@ -471,10 +471,10 @@ TEST(CfgSubnets6Test, unparseSubnet) {
"},{\n"
" \"id\": 124,\n"
" \"subnet\": \"2001:db8:2::/48\",\n"
- " \"relay\": { \"ip-address\": \"2001:db8:ff::2\" },\n"
" \"interface\": \"lo\",\n"
" \"renew-timer\": 1,\n"
" \"rebind-timer\": 2,\n"
+ " \"relay\": { \"ip-addresses\": [ \"2001:db8:ff::2\" ] },\n"
" \"preferred-lifetime\": 3,\n"
" \"valid-lifetime\": 4,\n"
" \"rapid-commit\": false,\n"
@@ -486,10 +486,10 @@ TEST(CfgSubnets6Test, unparseSubnet) {
"},{\n"
" \"id\": 125,\n"
" \"subnet\": \"2001:db8:3::/48\",\n"
- " \"relay\": { \"ip-address\": \"::\" },\n"
" \"interface\": \"eth1\",\n"
" \"renew-timer\": 1,\n"
" \"rebind-timer\": 2,\n"
+ " \"relay\": { \"ip-addresses\": [ ] },\n"
" \"preferred-lifetime\": 3,\n"
" \"valid-lifetime\": 4,\n"
" \"rapid-commit\": false,\n"
@@ -531,9 +531,9 @@ TEST(CfgSubnets6Test, unparsePool) {
"{\n"
" \"id\": 123,\n"
" \"subnet\": \"2001:db8:1::/48\",\n"
- " \"relay\": { \"ip-address\": \"::\" },\n"
" \"renew-timer\": 1,\n"
" \"rebind-timer\": 2,\n"
+ " \"relay\": { \"ip-addresses\": [ ] },\n"
" \"preferred-lifetime\": 3,\n"
" \"valid-lifetime\": 4,\n"
" \"rapid-commit\": false,\n"
@@ -586,9 +586,9 @@ TEST(CfgSubnets6Test, unparsePdPool) {
"{\n"
" \"id\": 123,\n"
" \"subnet\": \"2001:db8:1::/48\",\n"
- " \"relay\": { \"ip-address\": \"::\" },\n"
" \"renew-timer\": 1,\n"
" \"rebind-timer\": 2,\n"
+ " \"relay\": { \"ip-addresses\": [ ] },\n"
" \"preferred-lifetime\": 3,\n"
" \"valid-lifetime\": 4,\n"
" \"rapid-commit\": false,\n"
diff --git a/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc b/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc
index d79d6d2877..4651d504bb 100644
--- a/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc
+++ b/src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc
@@ -2220,14 +2220,13 @@ TEST_F(ParseConfigTest, validRelayInfo4) {
" }";
ElementPtr json = Element::fromJSON(config_str);
- // We need to set the default ip-address to something.
- Network::RelayInfoPtr result(new Network::RelayInfo(asiolink::IOAddress("0.0.0.0")));
+ // Create an "empty" RelayInfo to hold the parsed result.
+ Network::RelayInfoPtr result(new Network::RelayInfo());
RelayInfoParser parser(Option::V4);
- // Subnet4 parser will pass 0.0.0.0 to the RelayInfoParser
EXPECT_NO_THROW(parser.parse(result, json));
- EXPECT_EQ("192.0.2.1", result->addr_.toText());
+ EXPECT_TRUE(result->containsAddress(IOAddress("192.0.2.1")));
}
/// @brief Checks that a bogus relay info structure for IPv4 is rejected.
@@ -2253,8 +2252,8 @@ TEST_F(ParseConfigTest, bogusRelayInfo4) {
" }";
ElementPtr json_bogus3 = Element::fromJSON(config_str_bogus3);
- // We need to set the default ip-address to something.
- Network::RelayInfoPtr result(new Network::RelayInfo(IOAddress::IPV4_ZERO_ADDRESS()));
+ // Create an "empty" RelayInfo to hold the parsed result.
+ Network::RelayInfoPtr result(new Network::RelayInfo());
RelayInfoParser parser(Option::V4);
@@ -2278,13 +2277,13 @@ TEST_F(ParseConfigTest, validRelayInfo6) {
" }";
ElementPtr json = Element::fromJSON(config_str);
- // We need to set the default ip-address to something.
- Network::RelayInfoPtr result(new Network::RelayInfo(asiolink::IOAddress("::")));
+ // Create an "empty" RelayInfo to hold the parsed result.
+ Network::RelayInfoPtr result(new Network::RelayInfo());
RelayInfoParser parser(Option::V6);
- // Subnet4 parser will pass :: to the RelayInfoParser
+
EXPECT_NO_THROW(parser.parse(result, json));
- EXPECT_EQ("2001:db8::1", result->addr_.toText());
+ EXPECT_TRUE(result->containsAddress(IOAddress("2001:db8::1")));
}
/// @brief Checks that a valid relay info structure for IPv6 can be handled
@@ -2310,8 +2309,8 @@ TEST_F(ParseConfigTest, bogusRelayInfo6) {
" }";
ElementPtr json_bogus3 = Element::fromJSON(config_str_bogus3);
- // We need to set the default ip-address to something.
- Network::RelayInfoPtr result(new Network::RelayInfo(asiolink::IOAddress("::")));
+ // Create an "empty" RelayInfo to hold the parsed result.
+ Network::RelayInfoPtr result(new Network::RelayInfo());
RelayInfoParser parser(Option::V6);
diff --git a/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc b/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc
index d54ffe8b63..4842fbd37d 100644
--- a/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc
+++ b/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc
@@ -21,15 +21,97 @@ using namespace isc::data;
using namespace isc::dhcp;
namespace {
+class SharedNetworkParserTest : public ::testing::Test {
+public:
+
+ /// @brief Structure for describing a single relay test scenario
+ struct RelayTest {
+ /// @brief Description of the test scenario, used for logging
+ std::string description_;
+ /// @brief JSON configuration body of the "relay" element
+ std::string json_content_;
+ /// @brief indicates if parsing should pass or fail
+ bool should_parse_;
+ /// @brief list of addresses expected after parsing
+ IOAddressList addresses_;
+ };
+
+ /// @brief virtual destructor
+ virtual ~SharedNetworkParserTest(){};
+
+ /// @brief Fetch valid shared network configuration JSON text
+ virtual std::string getWorkingConfig() const = 0;
+ ElementPtr makeTestConfig(const std::string& name, const std::string& json_content) {
+ // Create working config element tree
+ ElementPtr config = Element::fromJSON(getWorkingConfig());
+
+ // Create test element contents
+ ElementPtr content = Element::fromJSON(json_content);
+
+ // Add the test element to working config
+ config->set(name, content);
+ return (config);
+ }
+
+ /// @brief Executes a single "relay" parsing scenario
+ ///
+ /// Each test pass consists of the following steps:
+ /// -# Attempt to parse the given JSON text
+ /// -# If parsing is expected to fail and it does return otherwise fatal fail
+ /// -# If parsing is expected to succeed, fatal fail if it does not
+ /// -# Verify the network's relay address list matches the expected list
+ /// in size and content.
+ ///
+ /// @param test RelayTest which describes the test to conduct
+ void relayTest(const RelayTest& test) {
+ ElementPtr test_config;
+ ASSERT_NO_THROW(test_config =
+ makeTestConfig("relay", test.json_content_));
+
+ // Init our ref to a place holder
+ Network4 dummy;
+ Network& network = dummy;
+
+ // If parsing should fail, call parse expecting a throw.
+ if (!test.should_parse_) {
+ ASSERT_THROW(network = parseIntoNetwork(test_config), DhcpConfigError);
+ // No throw so test outcome is correct, nothing else to do.
+ return;
+ }
+
+ // Should parse without error, let's see if it does.
+ ASSERT_NO_THROW(network = parseIntoNetwork(test_config));
+
+ // It parsed, are the number of entries correct?
+ ASSERT_EQ(test.addresses_.size(), network.getRelayAddresses().size());
+
+ // Are the expected addresses in the list?
+ for (auto exp_address = test.addresses_.begin(); exp_address != test.addresses_.end();
+ ++exp_address) {
+ EXPECT_TRUE(network.hasRelayAddress(*exp_address))
+ << " expected address: " << (*exp_address).toText() << " not found" ;
+ }
+ }
+
+ /// @brief Attempts to parse the given configuration into a shared network
+ ///
+ /// Virtual function used by relayTest() to parse a test configuration.
+ /// Implementation should not catch parsing exceptions.
+ ///
+ /// @param test_config JSON configuration text to parse
+ /// @return A reference to the Network created if parsing is successful
+ virtual Network& parseIntoNetwork(ConstElementPtr test_config) = 0;
+};
+
/// @brief Test fixture class for SharedNetwork4Parser class.
-class SharedNetwork4ParserTest : public ::testing::Test {
+class SharedNetwork4ParserTest : public SharedNetworkParserTest {
public:
/// @brief Creates valid shared network configuration.
///
/// @return Valid shared network configuration.
- std::string getWorkingConfig() const {
+ virtual std::string getWorkingConfig() const {
std::string config = "{"
" \"user-context\": { \"comment\": \"example\" },"
" \"name\": \"bird\","
@@ -88,6 +170,16 @@ public:
return (config);
}
+
+ virtual Network& parseIntoNetwork(ConstElementPtr test_config) {
+ // Parse configuration.
+ SharedNetwork4Parser parser;
+ network_ = parser.parse(test_config);
+ return (*network_);
+ }
+
+private:
+ SharedNetwork4Ptr network_;
};
// This test verifies that shared network parser for IPv4 works properly
@@ -172,14 +264,96 @@ TEST_F(SharedNetwork4ParserTest, clientClassMatchClientId) {
EXPECT_FALSE(network->getMatchClientId());
}
+// This test verifies that parsing of the "relay" element.
+// It checks both valid and invalid scenarios.
+TEST_F(SharedNetwork4ParserTest, relayInfoTests) {
+
+ // Create the vector of test scenarios.
+ std::vector tests = {
+ {
+ "valid ip-address #1",
+ "{ \"ip-address\": \"192.168.2.1\" }",
+ true,
+ { asiolink::IOAddress("192.168.2.1") }
+ },
+ {
+ "invalid ip-address #1",
+ "{ \"ip-address\": \"not an address\" }",
+ false,
+ { }
+ },
+ {
+ "invalid ip-address #2",
+ "{ \"ip-address\": \"2001:db8::1\" }",
+ false,
+ { }
+ },
+ {
+ "valid ip-addresses #1",
+ "{ \"ip-addresses\": [ ] }",
+ true,
+ {}
+ },
+ {
+ "valid ip-addresses #2",
+ "{ \"ip-addresses\": [ \"192.168.2.1\" ] }",
+ true,
+ { asiolink::IOAddress("192.168.2.1") }
+ },
+ {
+ "valid ip-addresses #3",
+ "{ \"ip-addresses\": [ \"192.168.2.1\", \"192.168.2.2\" ] }",
+ true,
+ { asiolink::IOAddress("192.168.2.1"), asiolink::IOAddress("192.168.2.2") }
+ },
+ {
+ "invalid ip-addresses #1",
+ "{ \"ip-addresses\": [ \"not an address\" ] }",
+ false,
+ { }
+ },
+ {
+ "invalid ip-addresses #2",
+ "{ \"ip-addresses\": [ \"2001:db8::1\" ] }",
+ false,
+ { }
+ },
+ {
+ "invalid both ip-address and ip-addresses",
+ "{"
+ " \"ip-address\": \"192.168.2.1\", "
+ " \"ip-addresses\": [ \"192.168.2.1\", \"192.168.2.2\" ]"
+ " }",
+ false,
+ { }
+ },
+ {
+ "invalid neither ip-address nor ip-addresses",
+ "{}",
+ false,
+ { }
+ }
+ };
+
+ // Iterate over the test scenarios, verifying each prescribed
+ // outcome.
+ for (auto test = tests.begin(); test != tests.end(); ++test) {
+ {
+ SCOPED_TRACE((*test).description_);
+ relayTest(*test);
+ }
+ }
+}
+
+
/// @brief Test fixture class for SharedNetwork6Parser class.
-class SharedNetwork6ParserTest : public ::testing::Test {
+class SharedNetwork6ParserTest : public SharedNetworkParserTest {
public:
/// @brief Creates valid shared network configuration.
///
/// @return Valid shared network configuration.
- std::string getWorkingConfig() const {
+ virtual std::string getWorkingConfig() const {
std::string config = "{"
" \"name\": \"bird\","
" \"interface\": \"eth1\","
@@ -228,6 +402,16 @@ public:
return (config);
}
+
+ virtual Network& parseIntoNetwork(ConstElementPtr test_config) {
+ // Parse configuration.
+ SharedNetwork6Parser parser;
+ network_ = parser.parse(test_config);
+ return (*network_);
+ }
+
+private:
+ SharedNetwork6Ptr network_;
};
// This test verifies that shared network parser for IPv4 works properly
@@ -346,4 +530,85 @@ TEST_F(SharedNetwork6ParserTest, badEvalClientClasses) {
EXPECT_THROW(network = parser.parse(config_element), DhcpConfigError);
}
+// This test verifies that v6 parsing of the "relay" element.
+// It checks both valid and invalid scenarios.
+TEST_F(SharedNetwork6ParserTest, relayInfoTests) {
+
+ // Create the vector of test scenarios.
+ std::vector tests = {
+ {
+ "valid ip-address #1",
+ "{ \"ip-address\": \"2001:db8::1\" }",
+ true,
+ { asiolink::IOAddress("2001:db8::1") }
+ },
+ {
+ "invalid ip-address #1",
+ "{ \"ip-address\": \"not an address\" }",
+ false,
+ { }
+ },
+ {
+ "invalid ip-address #2",
+ "{ \"ip-address\": \"192.168.2.1\" }",
+ false,
+ { }
+ },
+ {
+ "valid ip-addresses #1",
+ "{ \"ip-addresses\": [ ] }",
+ true,
+ {}
+ },
+ {
+ "valid ip-addresses #2",
+ "{ \"ip-addresses\": [ \"2001:db8::1\" ] }",
+ true,
+ { asiolink::IOAddress("2001:db8::1") }
+ },
+ {
+ "valid ip-addresses #3",
+ "{ \"ip-addresses\": [ \"2001:db8::1\", \"2001:db8::2\" ] }",
+ true,
+ { asiolink::IOAddress("2001:db8::1"), asiolink::IOAddress("2001:db8::2") }
+ },
+ {
+ "invalid ip-addresses #1",
+ "{ \"ip-addresses\": [ \"not an address\" ] }",
+ false,
+ { }
+ },
+ {
+ "invalid ip-addresses #2",
+ "{ \"ip-addresses\": [ \"192.168.1.1\" ] }",
+ false,
+ { }
+ },
+ {
+ "invalid both ip-address and ip-addresses",
+ "{"
+ " \"ip-address\": \"2001:db8::1\", "
+ " \"ip-addresses\": [ \"2001:db8::1\", \"2001:db8::2\" ]"
+ " }",
+ false,
+ { }
+ },
+ {
+ "invalid neither ip-address nor ip-addresses",
+ "{}",
+ false,
+ { }
+ }
+ };
+
+ // Iterate over the test scenarios, verifying each prescribed
+ // outcome.
+ for (auto test = tests.begin(); test != tests.end(); ++test) {
+ {
+ SCOPED_TRACE((*test).description_);
+ relayTest(*test);
+ }
+ }
+}
+
} // end of anonymous namespace
diff --git a/src/lib/dhcpsrv/tests/shared_network_unittest.cc b/src/lib/dhcpsrv/tests/shared_network_unittest.cc
index 2649289b8f..77159241a6 100644
--- a/src/lib/dhcpsrv/tests/shared_network_unittest.cc
+++ b/src/lib/dhcpsrv/tests/shared_network_unittest.cc
@@ -265,6 +265,26 @@ TEST(SharedNetwork4Test, getPreferredSubnet) {
EXPECT_EQ(subnet3->getID(), preferred->getID());
}
+// This test verifies operations on the network's relay list
+TEST(SharedNetwork4Test, relayInfoList) {
+ SharedNetwork4Ptr network(new SharedNetwork4("frog"));
+
+ EXPECT_FALSE(network->hasRelays());
+ EXPECT_FALSE(network->hasRelayAddress(IOAddress("192.168.2.1")));
+
+ // Add relay addresses to the network.
+ network->addRelayAddress(IOAddress("192.168.2.1"));
+ network->addRelayAddress(IOAddress("192.168.2.2"));
+ network->addRelayAddress(IOAddress("192.168.2.3"));
+
+ // Verify we believe we have relays and we can match them accordingly.
+ EXPECT_TRUE(network->hasRelays());
+ EXPECT_TRUE(network->hasRelayAddress(IOAddress("192.168.2.1")));
+ EXPECT_TRUE(network->hasRelayAddress(IOAddress("192.168.2.2")));
+ EXPECT_TRUE(network->hasRelayAddress(IOAddress("192.168.2.3")));
+ EXPECT_FALSE(network->hasRelayAddress(IOAddress("192.168.2.4")));
+}
+
// This test verifies that unparsing shared network returns valid structure.
TEST(SharedNetwork4Test, unparse) {
SharedNetwork4Ptr network(new SharedNetwork4("frog"));
@@ -281,10 +301,14 @@ TEST(SharedNetwork4Test, unparse) {
data::ElementPtr ctx = data::Element::fromJSON(uc);
network->setContext(ctx);
network->requireClientClass("foo");
+ network->addRelayAddress(IOAddress("192.168.2.1"));
// Add several subnets.
Subnet4Ptr subnet1(new Subnet4(IOAddress("10.0.0.0"), 8, 10, 20, 30,
SubnetID(1)));
+ subnet1->addRelayAddress(IOAddress("10.0.0.1"));
+ subnet1->addRelayAddress(IOAddress("10.0.0.2"));
+
Subnet4Ptr subnet2(new Subnet4(IOAddress("192.0.2.0"), 24, 10, 20, 30,
SubnetID(2)));
network->add(subnet1);
@@ -298,7 +322,7 @@ TEST(SharedNetwork4Test, unparse) {
" \"option-data\": [ ],\n"
" \"rebind-timer\": 150,\n"
" \"relay\": {\n"
- " \"ip-address\": \"0.0.0.0\"\n"
+ " \"ip-addresses\": [ \"192.168.2.1\" ]\n"
" },\n"
" \"renew-timer\": 100,\n"
" \"require-client-classes\": [ \"foo\" ],\n"
@@ -317,7 +341,7 @@ TEST(SharedNetwork4Test, unparse) {
" \"pools\": [ ],\n"
" \"rebind-timer\": 20,\n"
" \"relay\": {\n"
- " \"ip-address\": \"0.0.0.0\"\n"
+ " \"ip-addresses\": [ \"10.0.0.1\", \"10.0.0.2\" ]\n"
" },\n"
" \"renew-timer\": 10,\n"
" \"reservation-mode\": \"all\",\n"
@@ -337,7 +361,7 @@ TEST(SharedNetwork4Test, unparse) {
" \"pools\": [ ],\n"
" \"rebind-timer\": 20,\n"
" \"relay\": {\n"
- " \"ip-address\": \"0.0.0.0\"\n"
+ " \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 10,\n"
" \"reservation-mode\": \"all\",\n"
@@ -658,6 +682,26 @@ TEST(SharedNetwork6Test, getPreferredSubnet) {
EXPECT_EQ(subnet3->getID(), preferred->getID());
}
+// This test verifies operations on the network's relay list
+TEST(SharedNetwork6Test, relayInfoList) {
+ SharedNetwork6Ptr network(new SharedNetwork6("frog"));
+
+ EXPECT_FALSE(network->hasRelays());
+ EXPECT_FALSE(network->hasRelayAddress(IOAddress("2001:db8:2::1")));
+
+ // Add realy addresses to the network.
+ network->addRelayAddress(IOAddress("2001:db8:2::1"));
+ network->addRelayAddress(IOAddress("2001:db8:2::2"));
+ network->addRelayAddress(IOAddress("2001:db8:2::3"));
+
+ // Verify we believe we have relays and we can match them accordingly.
+ EXPECT_TRUE(network->hasRelays());
+ EXPECT_TRUE(network->hasRelayAddress(IOAddress("2001:db8:2::1")));
+ EXPECT_TRUE(network->hasRelayAddress(IOAddress("2001:db8:2::2")));
+ EXPECT_TRUE(network->hasRelayAddress(IOAddress("2001:db8:2::3")));
+ EXPECT_FALSE(network->hasRelayAddress(IOAddress("2001:db8:2::4")));
+}
+
// This test verifies that unparsing shared network returns valid structure.
TEST(SharedNetwork6Test, unparse) {
SharedNetwork6Ptr network(new SharedNetwork6("frog"));
@@ -673,11 +717,16 @@ TEST(SharedNetwork6Test, unparse) {
network->setContext(ctx);
network->requireClientClass("foo");
+ network->addRelayAddress(IOAddress("2001:db8:1::7"));
+ network->addRelayAddress(IOAddress("2001:db8:1::8"));
+
// Add several subnets.
Subnet6Ptr subnet1(new Subnet6(IOAddress("2001:db8:1::"), 64, 10, 20, 30,
40, SubnetID(1)));
Subnet6Ptr subnet2(new Subnet6(IOAddress("3000::"), 16, 10, 20, 30, 40,
SubnetID(2)));
+ subnet2->addRelayAddress(IOAddress("2001:db8:1::8"));
+
network->add(subnet1);
network->add(subnet2);
@@ -689,7 +738,7 @@ TEST(SharedNetwork6Test, unparse) {
" \"rapid-commit\": true,\n"
" \"rebind-timer\": 150,\n"
" \"relay\": {\n"
- " \"ip-address\": \"::\"\n"
+ " \"ip-addresses\": [ \"2001:db8:1::7\", \"2001:db8:1::8\" ]\n"
" },\n"
" \"renew-timer\": 100,\n"
" \"require-client-classes\": [ \"foo\" ],\n"
@@ -704,7 +753,7 @@ TEST(SharedNetwork6Test, unparse) {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 20,\n"
" \"relay\": {\n"
- " \"ip-address\": \"::\"\n"
+ " \"ip-addresses\": [ ]\n"
" },\n"
" \"renew-timer\": 10,\n"
" \"reservation-mode\": \"all\",\n"
@@ -720,7 +769,7 @@ TEST(SharedNetwork6Test, unparse) {
" \"rapid-commit\": false,\n"
" \"rebind-timer\": 20,\n"
" \"relay\": {\n"
- " \"ip-address\": \"::\"\n"
+ " \"ip-addresses\": [ \"2001:db8:1::8\" ]\n"
" },\n"
" \"renew-timer\": 10,\n"
" \"reservation-mode\": \"all\",\n"
diff --git a/src/lib/dhcpsrv/tests/subnet_unittest.cc b/src/lib/dhcpsrv/tests/subnet_unittest.cc
index 979d4e04b9..9d444be237 100644
--- a/src/lib/dhcpsrv/tests/subnet_unittest.cc
+++ b/src/lib/dhcpsrv/tests/subnet_unittest.cc
@@ -76,7 +76,7 @@ TEST(Subnet4Test, inRange) {
EXPECT_EQ(2000, subnet.getT2());
EXPECT_EQ(3000, subnet.getValid());
- EXPECT_EQ("0.0.0.0", subnet.getRelayInfo().addr_.toText());
+ EXPECT_FALSE(subnet.hasRelays());
EXPECT_FALSE(subnet.inRange(IOAddress("192.0.0.0")));
EXPECT_TRUE(subnet.inRange(IOAddress("192.0.2.0")));
@@ -87,15 +87,34 @@ TEST(Subnet4Test, inRange) {
EXPECT_FALSE(subnet.inRange(IOAddress("255.255.255.255")));
}
-// Checks whether the relay field has sane default and if it can
-// be changed, stored and retrieved
+// Checks whether the relay list is empty by default
+// and basic operations function
TEST(Subnet4Test, relay) {
Subnet4 subnet(IOAddress("192.0.2.1"), 24, 1000, 2000, 3000);
- EXPECT_EQ("0.0.0.0", subnet.getRelayInfo().addr_.toText());
+ // Should be empty.
+ EXPECT_FALSE(subnet.hasRelays());
+ EXPECT_EQ(0, subnet.getRelayAddresses().size());
- subnet.setRelayInfo(IOAddress("192.0.123.45"));
- EXPECT_EQ("192.0.123.45", subnet.getRelayInfo().addr_.toText());
+ // Matching should fail.
+ EXPECT_FALSE(subnet.hasRelayAddress(IOAddress("192.0.123.45")));
+
+ // Should be able to add them.
+ subnet.addRelayAddress(IOAddress("192.0.123.45"));
+ subnet.addRelayAddress(IOAddress("192.0.123.46"));
+
+ // Should not be empty.
+ EXPECT_TRUE(subnet.hasRelays());
+
+ // Should be two in the list.
+ EXPECT_EQ(2, subnet.getRelayAddresses().size());
+
+ // Should be able to match them if they are there.
+ EXPECT_TRUE(subnet.hasRelayAddress(IOAddress("192.0.123.45")));
+ EXPECT_TRUE(subnet.hasRelayAddress(IOAddress("192.0.123.46")));
+
+ // Should not match those that are not.
+ EXPECT_FALSE(subnet.hasRelayAddress(IOAddress("192.0.123.47")));
}
// Checks whether siaddr field can be set and retrieved correctly.
@@ -681,16 +700,34 @@ TEST(Subnet6Test, inRange) {
EXPECT_FALSE(subnet.inRange(IOAddress("::")));
}
-// Checks whether the relay field has sane default and if it can
-// be changed, stored and retrieved
+// Checks whether the relay list is empty by default
+// and basic operations function
TEST(Subnet6Test, relay) {
Subnet6 subnet(IOAddress("2001:db8:1::"), 64, 1000, 2000, 3000, 4000);
- EXPECT_EQ("::", subnet.getRelayInfo().addr_.toText());
+ // Should be empty.
+ EXPECT_FALSE(subnet.hasRelays());
+ EXPECT_EQ(0, subnet.getRelayAddresses().size());
- subnet.setRelayInfo(IOAddress("2001:ffff::1"));
+ // Matching should fail.
+ EXPECT_FALSE(subnet.hasRelayAddress(IOAddress("2001:ffff::45")));
- EXPECT_EQ("2001:ffff::1", subnet.getRelayInfo().addr_.toText());
+ // Should be able to add them.
+ subnet.addRelayAddress(IOAddress("2001:ffff::45"));
+ subnet.addRelayAddress(IOAddress("2001:ffff::46"));
+
+ // Should not be empty.
+ EXPECT_TRUE(subnet.hasRelays());
+
+ // Should be two in the list.
+ EXPECT_EQ(2, subnet.getRelayAddresses().size());
+
+ // Should be able to match them if they are there.
+ EXPECT_TRUE(subnet.hasRelayAddress(IOAddress("2001:ffff::45")));
+ EXPECT_TRUE(subnet.hasRelayAddress(IOAddress("2001:ffff::46")));
+
+ // Should not match those that are not.
+ EXPECT_FALSE(subnet.hasRelayAddress(IOAddress("2001:ffff::47")));
}
// Test checks whether the number of addresses available in the pools are
diff --git a/src/lib/eval/location.hh b/src/lib/eval/location.hh
index e53cccdeeb..291696d580 100644
--- a/src/lib/eval/location.hh
+++ b/src/lib/eval/location.hh
@@ -1,4 +1,3 @@
-// Generated 201804111443
// A Bison parser, made by GNU Bison 3.0.4.
// Locations for Bison parsers in C++
diff --git a/src/lib/eval/position.hh b/src/lib/eval/position.hh
index 4dda707c42..6d547f2746 100644
--- a/src/lib/eval/position.hh
+++ b/src/lib/eval/position.hh
@@ -1,4 +1,3 @@
-// Generated 201804111443
// A Bison parser, made by GNU Bison 3.0.4.
// Positions for Bison parsers in C++
diff --git a/src/lib/eval/stack.hh b/src/lib/eval/stack.hh
index f57b7ff5b2..e0d2dfe10f 100644
--- a/src/lib/eval/stack.hh
+++ b/src/lib/eval/stack.hh
@@ -1,4 +1,3 @@
-// Generated 201804111443
// A Bison parser, made by GNU Bison 3.0.4.
// Stack handling for Bison parsers in C++