Kea 3.3.1
dhcp6_parser.cc
Go to the documentation of this file.
1// A Bison parser, made by GNU Bison 3.8.2.
2
3// Skeleton implementation for Bison LALR(1) parsers in C++
4
5// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
6
7// This program is free software: you can redistribute it and/or modify
8// it under the terms of the GNU General Public License as published by
9// the Free Software Foundation, either version 3 of the License, or
10// (at your option) any later version.
11
12// This program is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16
17// You should have received a copy of the GNU General Public License
18// along with this program. If not, see <https://www.gnu.org/licenses/>.
19
20// As a special exception, you may create a larger work that contains
21// part or all of the Bison parser skeleton and distribute that work
22// under terms of your choice, so long as that work isn't itself a
23// parser generator using the skeleton or a modified version thereof
24// as a parser skeleton. Alternatively, if you modify or redistribute
25// the parser skeleton itself, you may (at your option) remove this
26// special exception, which will cause the skeleton and the resulting
27// Bison output files to be licensed under the GNU General Public
28// License without this special exception.
29
30// This special exception was added by the Free Software Foundation in
31// version 2.2 of Bison.
32
33// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
34// especially those whose name start with YY_ or yy_. They are
35// private implementation details that can be changed or removed.
36
37
38// Take the name prefix into account.
39#define yylex parser6_lex
40
41
42
43#include "dhcp6_parser.h"
44
45
46// Unqualified %code blocks.
47#line 34 "dhcp6_parser.yy"
48
50
51// Avoid warnings with the error counter.
52#if defined(__GNUC__) || defined(__clang__)
53#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
54#endif
55
56#line 57 "dhcp6_parser.cc"
57
58
59#ifndef YY_
60# if defined YYENABLE_NLS && YYENABLE_NLS
61# if ENABLE_NLS
62# include <libintl.h> // FIXME: INFRINGES ON USER NAME SPACE.
63# define YY_(msgid) dgettext ("bison-runtime", msgid)
64# endif
65# endif
66# ifndef YY_
67# define YY_(msgid) msgid
68# endif
69#endif
70
71
72// Whether we are compiled with exception support.
73#ifndef YY_EXCEPTIONS
74# if defined __GNUC__ && !defined __EXCEPTIONS
75# define YY_EXCEPTIONS 0
76# else
77# define YY_EXCEPTIONS 1
78# endif
79#endif
80
81#define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
82/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
83 If N is 0, then set CURRENT to the empty location which ends
84 the previous symbol: RHS[0] (always defined). */
85
86# ifndef YYLLOC_DEFAULT
87# define YYLLOC_DEFAULT(Current, Rhs, N) \
88 do \
89 if (N) \
90 { \
91 (Current).begin = YYRHSLOC (Rhs, 1).begin; \
92 (Current).end = YYRHSLOC (Rhs, N).end; \
93 } \
94 else \
95 { \
96 (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
97 } \
98 while (false)
99# endif
100
101
102// Enable debugging if requested.
103#if PARSER6_DEBUG
104
105// A pseudo ostream that takes yydebug_ into account.
106# define YYCDEBUG if (yydebug_) (*yycdebug_)
107
108# define YY_SYMBOL_PRINT(Title, Symbol) \
109 do { \
110 if (yydebug_) \
111 { \
112 *yycdebug_ << Title << ' '; \
113 yy_print_ (*yycdebug_, Symbol); \
114 *yycdebug_ << '\n'; \
115 } \
116 } while (false)
117
118# define YY_REDUCE_PRINT(Rule) \
119 do { \
120 if (yydebug_) \
121 yy_reduce_print_ (Rule); \
122 } while (false)
123
124# define YY_STACK_PRINT() \
125 do { \
126 if (yydebug_) \
127 yy_stack_print_ (); \
128 } while (false)
129
130#else // !PARSER6_DEBUG
131
132# define YYCDEBUG if (false) std::cerr
133# define YY_SYMBOL_PRINT(Title, Symbol) YY_USE (Symbol)
134# define YY_REDUCE_PRINT(Rule) static_cast<void> (0)
135# define YY_STACK_PRINT() static_cast<void> (0)
136
137#endif // !PARSER6_DEBUG
138
139#define yyerrok (yyerrstatus_ = 0)
140#define yyclearin (yyla.clear ())
141
142#define YYACCEPT goto yyacceptlab
143#define YYABORT goto yyabortlab
144#define YYERROR goto yyerrorlab
145#define YYRECOVERING() (!!yyerrstatus_)
146
147#line 14 "dhcp6_parser.yy"
148namespace isc { namespace dhcp {
149#line 150 "dhcp6_parser.cc"
150
153#if PARSER6_DEBUG
154 : yydebug_ (false),
155 yycdebug_ (&std::cerr),
156#else
157 :
158#endif
159 ctx (ctx_yyarg)
160 {}
161
164
167
168 /*---------.
169 | symbol. |
170 `---------*/
171
172
173
174 // by_state.
175 Dhcp6Parser::by_state::by_state () YY_NOEXCEPT
176 : state (empty_state)
177 {}
178
179 Dhcp6Parser::by_state::by_state (const by_state& that) YY_NOEXCEPT
180 : state (that.state)
181 {}
182
183 void
184 Dhcp6Parser::by_state::clear () YY_NOEXCEPT
185 {
186 state = empty_state;
187 }
188
189 void
190 Dhcp6Parser::by_state::move (by_state& that)
191 {
192 state = that.state;
193 that.clear ();
194 }
195
196 Dhcp6Parser::by_state::by_state (state_type s) YY_NOEXCEPT
197 : state (s)
198 {}
199
201 Dhcp6Parser::by_state::kind () const YY_NOEXCEPT
202 {
203 if (state == empty_state)
205 else
206 return YY_CAST (symbol_kind_type, yystos_[+state]);
207 }
208
209 Dhcp6Parser::stack_symbol_type::stack_symbol_type ()
210 {}
211
212 Dhcp6Parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that)
213 : super_type (YY_MOVE (that.state), YY_MOVE (that.location))
214 {
215 switch (that.kind ())
216 {
217 case symbol_kind::S_value: // value
218 case symbol_kind::S_map_value: // map_value
219 case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
220 case symbol_kind::S_ddns_conflict_resolution_mode_value: // ddns_conflict_resolution_mode_value
221 case symbol_kind::S_on_fail_mode: // on_fail_mode
222 case symbol_kind::S_ssl_mode: // ssl_mode
223 case symbol_kind::S_duid_type: // duid_type
224 case symbol_kind::S_control_socket_type_value: // control_socket_type_value
225 case symbol_kind::S_auth_type_value: // auth_type_value
226 case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
227 value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
228 break;
229
230 case symbol_kind::S_BOOLEAN: // "boolean"
231 value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
232 break;
233
234 case symbol_kind::S_FLOAT: // "floating point"
235 value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
236 break;
237
238 case symbol_kind::S_INTEGER: // "integer"
239 value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
240 break;
241
242 case symbol_kind::S_STRING: // "constant string"
243 value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
244 break;
245
246 default:
247 break;
248 }
249
250#if 201103L <= YY_CPLUSPLUS
251 // that is emptied.
252 that.state = empty_state;
253#endif
254 }
255
256 Dhcp6Parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that)
257 : super_type (s, YY_MOVE (that.location))
258 {
259 switch (that.kind ())
260 {
261 case symbol_kind::S_value: // value
262 case symbol_kind::S_map_value: // map_value
263 case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
264 case symbol_kind::S_ddns_conflict_resolution_mode_value: // ddns_conflict_resolution_mode_value
265 case symbol_kind::S_on_fail_mode: // on_fail_mode
266 case symbol_kind::S_ssl_mode: // ssl_mode
267 case symbol_kind::S_duid_type: // duid_type
268 case symbol_kind::S_control_socket_type_value: // control_socket_type_value
269 case symbol_kind::S_auth_type_value: // auth_type_value
270 case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
271 value.move< ElementPtr > (YY_MOVE (that.value));
272 break;
273
274 case symbol_kind::S_BOOLEAN: // "boolean"
275 value.move< bool > (YY_MOVE (that.value));
276 break;
277
278 case symbol_kind::S_FLOAT: // "floating point"
279 value.move< double > (YY_MOVE (that.value));
280 break;
281
282 case symbol_kind::S_INTEGER: // "integer"
283 value.move< int64_t > (YY_MOVE (that.value));
284 break;
285
286 case symbol_kind::S_STRING: // "constant string"
287 value.move< std::string > (YY_MOVE (that.value));
288 break;
289
290 default:
291 break;
292 }
293
294 // that is emptied.
295 that.kind_ = symbol_kind::S_YYEMPTY;
296 }
297
298#if YY_CPLUSPLUS < 201103L
299 Dhcp6Parser::stack_symbol_type&
300 Dhcp6Parser::stack_symbol_type::operator= (const stack_symbol_type& that)
301 {
302 state = that.state;
303 switch (that.kind ())
304 {
305 case symbol_kind::S_value: // value
306 case symbol_kind::S_map_value: // map_value
307 case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
308 case symbol_kind::S_ddns_conflict_resolution_mode_value: // ddns_conflict_resolution_mode_value
309 case symbol_kind::S_on_fail_mode: // on_fail_mode
310 case symbol_kind::S_ssl_mode: // ssl_mode
311 case symbol_kind::S_duid_type: // duid_type
312 case symbol_kind::S_control_socket_type_value: // control_socket_type_value
313 case symbol_kind::S_auth_type_value: // auth_type_value
314 case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
315 value.copy< ElementPtr > (that.value);
316 break;
317
318 case symbol_kind::S_BOOLEAN: // "boolean"
319 value.copy< bool > (that.value);
320 break;
321
322 case symbol_kind::S_FLOAT: // "floating point"
323 value.copy< double > (that.value);
324 break;
325
326 case symbol_kind::S_INTEGER: // "integer"
327 value.copy< int64_t > (that.value);
328 break;
329
330 case symbol_kind::S_STRING: // "constant string"
331 value.copy< std::string > (that.value);
332 break;
333
334 default:
335 break;
336 }
337
338 location = that.location;
339 return *this;
340 }
341
342 Dhcp6Parser::stack_symbol_type&
343 Dhcp6Parser::stack_symbol_type::operator= (stack_symbol_type& that)
344 {
345 state = that.state;
346 switch (that.kind ())
347 {
348 case symbol_kind::S_value: // value
349 case symbol_kind::S_map_value: // map_value
350 case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
351 case symbol_kind::S_ddns_conflict_resolution_mode_value: // ddns_conflict_resolution_mode_value
352 case symbol_kind::S_on_fail_mode: // on_fail_mode
353 case symbol_kind::S_ssl_mode: // ssl_mode
354 case symbol_kind::S_duid_type: // duid_type
355 case symbol_kind::S_control_socket_type_value: // control_socket_type_value
356 case symbol_kind::S_auth_type_value: // auth_type_value
357 case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
358 value.move< ElementPtr > (that.value);
359 break;
360
361 case symbol_kind::S_BOOLEAN: // "boolean"
362 value.move< bool > (that.value);
363 break;
364
365 case symbol_kind::S_FLOAT: // "floating point"
366 value.move< double > (that.value);
367 break;
368
369 case symbol_kind::S_INTEGER: // "integer"
370 value.move< int64_t > (that.value);
371 break;
372
373 case symbol_kind::S_STRING: // "constant string"
374 value.move< std::string > (that.value);
375 break;
376
377 default:
378 break;
379 }
380
381 location = that.location;
382 // that is emptied.
383 that.state = empty_state;
384 return *this;
385 }
386#endif
387
388 template <typename Base>
389 void
390 Dhcp6Parser::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
391 {
392 if (yymsg)
393 YY_SYMBOL_PRINT (yymsg, yysym);
394 }
395
396#if PARSER6_DEBUG
397 template <typename Base>
398 void
399 Dhcp6Parser::yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const
400 {
401 std::ostream& yyoutput = yyo;
402 YY_USE (yyoutput);
403 if (yysym.empty ())
404 yyo << "empty symbol";
405 else
406 {
407 symbol_kind_type yykind = yysym.kind ();
408 yyo << (yykind < YYNTOKENS ? "token" : "nterm")
409 << ' ' << yysym.name () << " ("
410 << yysym.location << ": ";
411 switch (yykind)
412 {
413 case symbol_kind::S_STRING: // "constant string"
414#line 331 "dhcp6_parser.yy"
415 { yyoutput << yysym.value.template as < std::string > (); }
416#line 417 "dhcp6_parser.cc"
417 break;
418
419 case symbol_kind::S_INTEGER: // "integer"
420#line 331 "dhcp6_parser.yy"
421 { yyoutput << yysym.value.template as < int64_t > (); }
422#line 423 "dhcp6_parser.cc"
423 break;
424
425 case symbol_kind::S_FLOAT: // "floating point"
426#line 331 "dhcp6_parser.yy"
427 { yyoutput << yysym.value.template as < double > (); }
428#line 429 "dhcp6_parser.cc"
429 break;
430
431 case symbol_kind::S_BOOLEAN: // "boolean"
432#line 331 "dhcp6_parser.yy"
433 { yyoutput << yysym.value.template as < bool > (); }
434#line 435 "dhcp6_parser.cc"
435 break;
436
437 case symbol_kind::S_value: // value
438#line 331 "dhcp6_parser.yy"
439 { yyoutput << yysym.value.template as < ElementPtr > (); }
440#line 441 "dhcp6_parser.cc"
441 break;
442
443 case symbol_kind::S_map_value: // map_value
444#line 331 "dhcp6_parser.yy"
445 { yyoutput << yysym.value.template as < ElementPtr > (); }
446#line 447 "dhcp6_parser.cc"
447 break;
448
449 case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
450#line 331 "dhcp6_parser.yy"
451 { yyoutput << yysym.value.template as < ElementPtr > (); }
452#line 453 "dhcp6_parser.cc"
453 break;
454
455 case symbol_kind::S_ddns_conflict_resolution_mode_value: // ddns_conflict_resolution_mode_value
456#line 331 "dhcp6_parser.yy"
457 { yyoutput << yysym.value.template as < ElementPtr > (); }
458#line 459 "dhcp6_parser.cc"
459 break;
460
461 case symbol_kind::S_on_fail_mode: // on_fail_mode
462#line 331 "dhcp6_parser.yy"
463 { yyoutput << yysym.value.template as < ElementPtr > (); }
464#line 465 "dhcp6_parser.cc"
465 break;
466
467 case symbol_kind::S_ssl_mode: // ssl_mode
468#line 331 "dhcp6_parser.yy"
469 { yyoutput << yysym.value.template as < ElementPtr > (); }
470#line 471 "dhcp6_parser.cc"
471 break;
472
473 case symbol_kind::S_duid_type: // duid_type
474#line 331 "dhcp6_parser.yy"
475 { yyoutput << yysym.value.template as < ElementPtr > (); }
476#line 477 "dhcp6_parser.cc"
477 break;
478
479 case symbol_kind::S_control_socket_type_value: // control_socket_type_value
480#line 331 "dhcp6_parser.yy"
481 { yyoutput << yysym.value.template as < ElementPtr > (); }
482#line 483 "dhcp6_parser.cc"
483 break;
484
485 case symbol_kind::S_auth_type_value: // auth_type_value
486#line 331 "dhcp6_parser.yy"
487 { yyoutput << yysym.value.template as < ElementPtr > (); }
488#line 489 "dhcp6_parser.cc"
489 break;
490
491 case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
492#line 331 "dhcp6_parser.yy"
493 { yyoutput << yysym.value.template as < ElementPtr > (); }
494#line 495 "dhcp6_parser.cc"
495 break;
496
497 default:
498 break;
499 }
500 yyo << ')';
501 }
502 }
503#endif
504
505 void
506 Dhcp6Parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym)
507 {
508 if (m)
509 YY_SYMBOL_PRINT (m, sym);
510 yystack_.push (YY_MOVE (sym));
511 }
512
513 void
514 Dhcp6Parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
515 {
516#if 201103L <= YY_CPLUSPLUS
517 yypush_ (m, stack_symbol_type (s, std::move (sym)));
518#else
519 stack_symbol_type ss (s, sym);
520 yypush_ (m, ss);
521#endif
522 }
523
524 void
525 Dhcp6Parser::yypop_ (int n) YY_NOEXCEPT
526 {
527 yystack_.pop (n);
528 }
529
530#if PARSER6_DEBUG
531 std::ostream&
532 Dhcp6Parser::debug_stream () const
533 {
534 return *yycdebug_;
535 }
536
537 void
538 Dhcp6Parser::set_debug_stream (std::ostream& o)
539 {
540 yycdebug_ = &o;
541 }
542
543
544 Dhcp6Parser::debug_level_type
545 Dhcp6Parser::debug_level () const
546 {
547 return yydebug_;
548 }
549
550 void
551 Dhcp6Parser::set_debug_level (debug_level_type l)
552 {
553 yydebug_ = l;
554 }
555#endif // PARSER6_DEBUG
556
557 Dhcp6Parser::state_type
558 Dhcp6Parser::yy_lr_goto_state_ (state_type yystate, int yysym)
559 {
560 int yyr = yypgoto_[yysym - YYNTOKENS] + yystate;
561 if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
562 return yytable_[yyr];
563 else
564 return yydefgoto_[yysym - YYNTOKENS];
565 }
566
567 bool
568 Dhcp6Parser::yy_pact_value_is_default_ (int yyvalue) YY_NOEXCEPT
569 {
570 return yyvalue == yypact_ninf_;
571 }
572
573 bool
574 Dhcp6Parser::yy_table_value_is_error_ (int yyvalue) YY_NOEXCEPT
575 {
576 return yyvalue == yytable_ninf_;
577 }
578
579 int
581 {
582 return parse ();
583 }
584
585 int
587 {
588 int yyn;
590 int yylen = 0;
591
592 // Error handling.
593 int yynerrs_ YY_ATTRIBUTE_UNUSED = 0;
594 int yyerrstatus_ = 0;
595
597 symbol_type yyla;
598
600 stack_symbol_type yyerror_range[3];
601
603 int yyresult;
604
605#if YY_EXCEPTIONS
606 try
607#endif // YY_EXCEPTIONS
608 {
609 YYCDEBUG << "Starting parse\n";
610
611
612 /* Initialize the stack. The initial state will be set in
613 yynewstate, since the latter expects the semantical and the
614 location values to have been already stored, initialize these
615 stacks with a primary value. */
616 yystack_.clear ();
617 yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
618
619 /*-----------------------------------------------.
620 | yynewstate -- push a new symbol on the stack. |
621 `-----------------------------------------------*/
622 yynewstate:
623 YYCDEBUG << "Entering state " << int (yystack_[0].state) << '\n';
625
626 // Accept?
627 if (yystack_[0].state == yyfinal_)
628 YYACCEPT;
629
630 goto yybackup;
631
632
633 /*-----------.
634 | yybackup. |
635 `-----------*/
636 yybackup:
637 // Try to take a decision without lookahead.
638 yyn = yypact_[+yystack_[0].state];
639 if (yy_pact_value_is_default_ (yyn))
640 goto yydefault;
641
642 // Read a lookahead token.
643 if (yyla.empty ())
644 {
645 YYCDEBUG << "Reading a token\n";
646#if YY_EXCEPTIONS
647 try
648#endif // YY_EXCEPTIONS
649 {
650 symbol_type yylookahead (yylex (ctx));
651 yyla.move (yylookahead);
652 }
653#if YY_EXCEPTIONS
654 catch (const syntax_error& yyexc)
655 {
656 YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
657 error (yyexc);
658 goto yyerrlab1;
659 }
660#endif // YY_EXCEPTIONS
661 }
662 YY_SYMBOL_PRINT ("Next token is", yyla);
663
664 if (yyla.kind () == symbol_kind::S_YYerror)
665 {
666 // The scanner already issued an error message, process directly
667 // to error recovery. But do not keep the error token as
668 // lookahead, it is too special and may lead us to an endless
669 // loop in error recovery. */
671 goto yyerrlab1;
672 }
673
674 /* If the proper action on seeing token YYLA.TYPE is to reduce or
675 to detect an error, take that action. */
676 yyn += yyla.kind ();
677 if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.kind ())
678 {
679 goto yydefault;
680 }
681
682 // Reduce or error.
683 yyn = yytable_[yyn];
684 if (yyn <= 0)
685 {
686 if (yy_table_value_is_error_ (yyn))
687 goto yyerrlab;
688 yyn = -yyn;
689 goto yyreduce;
690 }
691
692 // Count tokens shifted since error; after three, turn off error status.
693 if (yyerrstatus_)
694 --yyerrstatus_;
695
696 // Shift the lookahead token.
697 yypush_ ("Shifting", state_type (yyn), YY_MOVE (yyla));
698 goto yynewstate;
699
700
701 /*-----------------------------------------------------------.
702 | yydefault -- do the default action for the current state. |
703 `-----------------------------------------------------------*/
704 yydefault:
705 yyn = yydefact_[+yystack_[0].state];
706 if (yyn == 0)
707 goto yyerrlab;
708 goto yyreduce;
709
710
711 /*-----------------------------.
712 | yyreduce -- do a reduction. |
713 `-----------------------------*/
714 yyreduce:
715 yylen = yyr2_[yyn];
716 {
717 stack_symbol_type yylhs;
718 yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
719 /* Variants are always initialized to an empty instance of the
720 correct type. The default '$$ = $1' action is NOT applied
721 when using variants. */
722 switch (yyr1_[yyn])
723 {
724 case symbol_kind::S_value: // value
725 case symbol_kind::S_map_value: // map_value
726 case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
727 case symbol_kind::S_ddns_conflict_resolution_mode_value: // ddns_conflict_resolution_mode_value
728 case symbol_kind::S_on_fail_mode: // on_fail_mode
729 case symbol_kind::S_ssl_mode: // ssl_mode
730 case symbol_kind::S_duid_type: // duid_type
731 case symbol_kind::S_control_socket_type_value: // control_socket_type_value
732 case symbol_kind::S_auth_type_value: // auth_type_value
733 case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
734 yylhs.value.emplace< ElementPtr > ();
735 break;
736
737 case symbol_kind::S_BOOLEAN: // "boolean"
738 yylhs.value.emplace< bool > ();
739 break;
740
741 case symbol_kind::S_FLOAT: // "floating point"
742 yylhs.value.emplace< double > ();
743 break;
744
745 case symbol_kind::S_INTEGER: // "integer"
746 yylhs.value.emplace< int64_t > ();
747 break;
748
749 case symbol_kind::S_STRING: // "constant string"
750 yylhs.value.emplace< std::string > ();
751 break;
752
753 default:
754 break;
755 }
756
757
758 // Default location.
759 {
760 stack_type::slice range (yystack_, yylen);
761 YYLLOC_DEFAULT (yylhs.location, range, yylen);
762 yyerror_range[1].location = yylhs.location;
763 }
764
765 // Perform the reduction.
766 YY_REDUCE_PRINT (yyn);
767#if YY_EXCEPTIONS
768 try
769#endif // YY_EXCEPTIONS
770 {
771 switch (yyn)
772 {
773 case 2: // $@1: %empty
774#line 340 "dhcp6_parser.yy"
775 { ctx.ctx_ = ctx.NO_KEYWORD; }
776#line 777 "dhcp6_parser.cc"
777 break;
778
779 case 4: // $@2: %empty
780#line 341 "dhcp6_parser.yy"
781 { ctx.ctx_ = ctx.CONFIG; }
782#line 783 "dhcp6_parser.cc"
783 break;
784
785 case 6: // $@3: %empty
786#line 342 "dhcp6_parser.yy"
787 { ctx.ctx_ = ctx.DHCP6; }
788#line 789 "dhcp6_parser.cc"
789 break;
790
791 case 8: // $@4: %empty
792#line 343 "dhcp6_parser.yy"
793 { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
794#line 795 "dhcp6_parser.cc"
795 break;
796
797 case 10: // $@5: %empty
798#line 344 "dhcp6_parser.yy"
799 { ctx.ctx_ = ctx.SUBNET6; }
800#line 801 "dhcp6_parser.cc"
801 break;
802
803 case 12: // $@6: %empty
804#line 345 "dhcp6_parser.yy"
805 { ctx.ctx_ = ctx.POOLS; }
806#line 807 "dhcp6_parser.cc"
807 break;
808
809 case 14: // $@7: %empty
810#line 346 "dhcp6_parser.yy"
811 { ctx.ctx_ = ctx.PD_POOLS; }
812#line 813 "dhcp6_parser.cc"
813 break;
814
815 case 16: // $@8: %empty
816#line 347 "dhcp6_parser.yy"
817 { ctx.ctx_ = ctx.RESERVATIONS; }
818#line 819 "dhcp6_parser.cc"
819 break;
820
821 case 18: // $@9: %empty
822#line 348 "dhcp6_parser.yy"
823 { ctx.ctx_ = ctx.DHCP6; }
824#line 825 "dhcp6_parser.cc"
825 break;
826
827 case 20: // $@10: %empty
828#line 349 "dhcp6_parser.yy"
829 { ctx.ctx_ = ctx.OPTION_DEF; }
830#line 831 "dhcp6_parser.cc"
831 break;
832
833 case 22: // $@11: %empty
834#line 350 "dhcp6_parser.yy"
835 { ctx.ctx_ = ctx.OPTION_DATA; }
836#line 837 "dhcp6_parser.cc"
837 break;
838
839 case 24: // $@12: %empty
840#line 351 "dhcp6_parser.yy"
841 { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
842#line 843 "dhcp6_parser.cc"
843 break;
844
845 case 26: // $@13: %empty
846#line 352 "dhcp6_parser.yy"
847 { ctx.ctx_ = ctx.DHCP_DDNS; }
848#line 849 "dhcp6_parser.cc"
849 break;
850
851 case 28: // $@14: %empty
852#line 353 "dhcp6_parser.yy"
853 { ctx.ctx_ = ctx.CONFIG_CONTROL; }
854#line 855 "dhcp6_parser.cc"
855 break;
856
857 case 30: // value: "integer"
858#line 361 "dhcp6_parser.yy"
859 { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
860#line 861 "dhcp6_parser.cc"
861 break;
862
863 case 31: // value: "floating point"
864#line 362 "dhcp6_parser.yy"
865 { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
866#line 867 "dhcp6_parser.cc"
867 break;
868
869 case 32: // value: "boolean"
870#line 363 "dhcp6_parser.yy"
871 { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
872#line 873 "dhcp6_parser.cc"
873 break;
874
875 case 33: // value: "constant string"
876#line 364 "dhcp6_parser.yy"
877 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
878#line 879 "dhcp6_parser.cc"
879 break;
880
881 case 34: // value: "null"
882#line 365 "dhcp6_parser.yy"
883 { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
884#line 885 "dhcp6_parser.cc"
885 break;
886
887 case 35: // value: map2
888#line 366 "dhcp6_parser.yy"
889 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
890#line 891 "dhcp6_parser.cc"
891 break;
892
893 case 36: // value: list_generic
894#line 367 "dhcp6_parser.yy"
895 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
896#line 897 "dhcp6_parser.cc"
897 break;
898
899 case 37: // sub_json: value
900#line 370 "dhcp6_parser.yy"
901 {
902 // Push back the JSON value on the stack
903 ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
904}
905#line 906 "dhcp6_parser.cc"
906 break;
907
908 case 38: // $@15: %empty
909#line 375 "dhcp6_parser.yy"
910 {
911 // This code is executed when we're about to start parsing
912 // the content of the map
913 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
914 ctx.stack_.push_back(m);
915}
916#line 917 "dhcp6_parser.cc"
917 break;
918
919 case 39: // map2: "{" $@15 map_content "}"
920#line 380 "dhcp6_parser.yy"
921 {
922 // map parsing completed. If we ever want to do any wrap up
923 // (maybe some sanity checking), this would be the best place
924 // for it.
925}
926#line 927 "dhcp6_parser.cc"
927 break;
928
929 case 40: // map_value: map2
930#line 386 "dhcp6_parser.yy"
931 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
932#line 933 "dhcp6_parser.cc"
933 break;
934
935 case 43: // not_empty_map: "constant string" ":" value
936#line 393 "dhcp6_parser.yy"
937 {
938 // map containing a single entry
939 ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
940 ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
941 }
942#line 943 "dhcp6_parser.cc"
943 break;
944
945 case 44: // not_empty_map: not_empty_map "," "constant string" ":" value
946#line 398 "dhcp6_parser.yy"
947 {
948 // map consisting of a shorter map followed by
949 // comma and string:value
950 ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
951 ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
952 }
953#line 954 "dhcp6_parser.cc"
954 break;
955
956 case 45: // not_empty_map: not_empty_map ","
957#line 404 "dhcp6_parser.yy"
958 {
959 ctx.warnAboutExtraCommas(yystack_[0].location);
960 }
961#line 962 "dhcp6_parser.cc"
962 break;
963
964 case 46: // $@16: %empty
965#line 409 "dhcp6_parser.yy"
966 {
967 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
968 ctx.stack_.push_back(l);
969}
970#line 971 "dhcp6_parser.cc"
971 break;
972
973 case 47: // list_generic: "[" $@16 list_content "]"
974#line 412 "dhcp6_parser.yy"
975 {
976 // list parsing complete. Put any sanity checking here
977}
978#line 979 "dhcp6_parser.cc"
979 break;
980
981 case 50: // not_empty_list: value
982#line 420 "dhcp6_parser.yy"
983 {
984 // List consisting of a single element.
985 ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
986 }
987#line 988 "dhcp6_parser.cc"
988 break;
989
990 case 51: // not_empty_list: not_empty_list "," value
991#line 424 "dhcp6_parser.yy"
992 {
993 // List ending with , and a value.
994 ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
995 }
996#line 997 "dhcp6_parser.cc"
997 break;
998
999 case 52: // not_empty_list: not_empty_list ","
1000#line 428 "dhcp6_parser.yy"
1001 {
1002 ctx.warnAboutExtraCommas(yystack_[0].location);
1003 }
1004#line 1005 "dhcp6_parser.cc"
1005 break;
1006
1007 case 53: // $@17: %empty
1008#line 434 "dhcp6_parser.yy"
1009 {
1010 // List parsing about to start
1011}
1012#line 1013 "dhcp6_parser.cc"
1013 break;
1014
1015 case 54: // list_strings: "[" $@17 list_strings_content "]"
1016#line 436 "dhcp6_parser.yy"
1017 {
1018 // list parsing complete. Put any sanity checking here
1019 //ctx.stack_.pop_back();
1020}
1021#line 1022 "dhcp6_parser.cc"
1022 break;
1023
1024 case 57: // not_empty_list_strings: "constant string"
1025#line 445 "dhcp6_parser.yy"
1026 {
1027 ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1028 ctx.stack_.back()->add(s);
1029 }
1030#line 1031 "dhcp6_parser.cc"
1031 break;
1032
1033 case 58: // not_empty_list_strings: not_empty_list_strings "," "constant string"
1034#line 449 "dhcp6_parser.yy"
1035 {
1036 ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1037 ctx.stack_.back()->add(s);
1038 }
1039#line 1040 "dhcp6_parser.cc"
1040 break;
1041
1042 case 59: // not_empty_list_strings: not_empty_list_strings ","
1043#line 453 "dhcp6_parser.yy"
1044 {
1045 ctx.warnAboutExtraCommas(yystack_[0].location);
1046 }
1047#line 1048 "dhcp6_parser.cc"
1048 break;
1049
1050 case 60: // unknown_map_entry: "constant string" ":"
1051#line 463 "dhcp6_parser.yy"
1052 {
1053 const std::string& where = ctx.contextName();
1054 const std::string& keyword = yystack_[1].value.as < std::string > ();
1055 error(yystack_[1].location,
1056 "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
1057}
1058#line 1059 "dhcp6_parser.cc"
1059 break;
1060
1061 case 61: // $@18: %empty
1062#line 472 "dhcp6_parser.yy"
1063 {
1064 // This code is executed when we're about to start parsing
1065 // the content of the map
1066 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
1067 ctx.stack_.push_back(m);
1068}
1069#line 1070 "dhcp6_parser.cc"
1070 break;
1071
1072 case 62: // syntax_map: "{" $@18 global_object "}"
1073#line 477 "dhcp6_parser.yy"
1074 {
1075 // map parsing completed. If we ever want to do any wrap up
1076 // (maybe some sanity checking), this would be the best place
1077 // for it.
1078
1079 // Dhcp6 is required
1080 ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
1081}
1082#line 1083 "dhcp6_parser.cc"
1083 break;
1084
1085 case 63: // $@19: %empty
1086#line 487 "dhcp6_parser.yy"
1087 {
1088 // This code is executed when we're about to start parsing
1089 // the content of the map
1090 // Prevent against duplicate.
1091 ctx.unique("Dhcp6", ctx.loc2pos(yystack_[0].location));
1092 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
1093 ctx.stack_.back()->set("Dhcp6", m);
1094 ctx.stack_.push_back(m);
1095 ctx.enter(ctx.DHCP6);
1096}
1097#line 1098 "dhcp6_parser.cc"
1098 break;
1099
1100 case 64: // global_object: "Dhcp6" $@19 ":" "{" global_params "}"
1101#line 496 "dhcp6_parser.yy"
1102 {
1103 // No global parameter is required
1104 ctx.stack_.pop_back();
1105 ctx.leave();
1106}
1107#line 1108 "dhcp6_parser.cc"
1108 break;
1109
1110 case 66: // global_object_comma: global_object ","
1111#line 504 "dhcp6_parser.yy"
1112 {
1113 ctx.warnAboutExtraCommas(yystack_[0].location);
1114}
1115#line 1116 "dhcp6_parser.cc"
1116 break;
1117
1118 case 67: // $@20: %empty
1119#line 510 "dhcp6_parser.yy"
1120 {
1121 // Parse the Dhcp6 map
1122 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
1123 ctx.stack_.push_back(m);
1124}
1125#line 1126 "dhcp6_parser.cc"
1126 break;
1127
1128 case 68: // sub_dhcp6: "{" $@20 global_params "}"
1129#line 514 "dhcp6_parser.yy"
1130 {
1131 // No global parameter is required
1132 // parsing completed
1133}
1134#line 1135 "dhcp6_parser.cc"
1135 break;
1136
1137 case 71: // global_params: global_params ","
1138#line 521 "dhcp6_parser.yy"
1139 {
1140 ctx.warnAboutExtraCommas(yystack_[0].location);
1141 }
1142#line 1143 "dhcp6_parser.cc"
1143 break;
1144
1145 case 145: // $@21: %empty
1146#line 603 "dhcp6_parser.yy"
1147 {
1148 ctx.unique("data-directory", ctx.loc2pos(yystack_[0].location));
1149 ctx.enter(ctx.NO_KEYWORD);
1150}
1151#line 1152 "dhcp6_parser.cc"
1152 break;
1153
1154 case 146: // data_directory: "data-directory" $@21 ":" "constant string"
1155#line 606 "dhcp6_parser.yy"
1156 {
1157 ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1158 ctx.warning(yystack_[2].location, "data-directory is deprecated and will be ignored");
1159 ctx.stack_.back()->set("data-directory", datadir);
1160 ctx.leave();
1161}
1162#line 1163 "dhcp6_parser.cc"
1163 break;
1164
1165 case 147: // preferred_lifetime: "preferred-lifetime" ":" "integer"
1166#line 613 "dhcp6_parser.yy"
1167 {
1168 ctx.unique("preferred-lifetime", ctx.loc2pos(yystack_[2].location));
1169 ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1170 ctx.stack_.back()->set("preferred-lifetime", prf);
1171}
1172#line 1173 "dhcp6_parser.cc"
1173 break;
1174
1175 case 148: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer"
1176#line 619 "dhcp6_parser.yy"
1177 {
1178 ctx.unique("min-preferred-lifetime", ctx.loc2pos(yystack_[2].location));
1179 ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1180 ctx.stack_.back()->set("min-preferred-lifetime", prf);
1181}
1182#line 1183 "dhcp6_parser.cc"
1183 break;
1184
1185 case 149: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer"
1186#line 625 "dhcp6_parser.yy"
1187 {
1188 ctx.unique("max-preferred-lifetime", ctx.loc2pos(yystack_[2].location));
1189 ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1190 ctx.stack_.back()->set("max-preferred-lifetime", prf);
1191}
1192#line 1193 "dhcp6_parser.cc"
1193 break;
1194
1195 case 150: // valid_lifetime: "valid-lifetime" ":" "integer"
1196#line 631 "dhcp6_parser.yy"
1197 {
1198 ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location));
1199 ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1200 ctx.stack_.back()->set("valid-lifetime", prf);
1201}
1202#line 1203 "dhcp6_parser.cc"
1203 break;
1204
1205 case 151: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
1206#line 637 "dhcp6_parser.yy"
1207 {
1208 ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location));
1209 ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1210 ctx.stack_.back()->set("min-valid-lifetime", prf);
1211}
1212#line 1213 "dhcp6_parser.cc"
1213 break;
1214
1215 case 152: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
1216#line 643 "dhcp6_parser.yy"
1217 {
1218 ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location));
1219 ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1220 ctx.stack_.back()->set("max-valid-lifetime", prf);
1221}
1222#line 1223 "dhcp6_parser.cc"
1223 break;
1224
1225 case 153: // renew_timer: "renew-timer" ":" "integer"
1226#line 649 "dhcp6_parser.yy"
1227 {
1228 ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location));
1229 ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1230 ctx.stack_.back()->set("renew-timer", prf);
1231}
1232#line 1233 "dhcp6_parser.cc"
1233 break;
1234
1235 case 154: // rebind_timer: "rebind-timer" ":" "integer"
1236#line 655 "dhcp6_parser.yy"
1237 {
1238 ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location));
1239 ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1240 ctx.stack_.back()->set("rebind-timer", prf);
1241}
1242#line 1243 "dhcp6_parser.cc"
1243 break;
1244
1245 case 155: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
1246#line 661 "dhcp6_parser.yy"
1247 {
1248 ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location));
1249 ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1250 ctx.stack_.back()->set("calculate-tee-times", ctt);
1251}
1252#line 1253 "dhcp6_parser.cc"
1253 break;
1254
1255 case 156: // t1_percent: "t1-percent" ":" "floating point"
1256#line 667 "dhcp6_parser.yy"
1257 {
1258 ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location));
1259 ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
1260 ctx.stack_.back()->set("t1-percent", t1);
1261}
1262#line 1263 "dhcp6_parser.cc"
1263 break;
1264
1265 case 157: // t2_percent: "t2-percent" ":" "floating point"
1266#line 673 "dhcp6_parser.yy"
1267 {
1268 ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location));
1269 ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
1270 ctx.stack_.back()->set("t2-percent", t2);
1271}
1272#line 1273 "dhcp6_parser.cc"
1273 break;
1274
1275 case 158: // cache_threshold: "cache-threshold" ":" "floating point"
1276#line 679 "dhcp6_parser.yy"
1277 {
1278 ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location));
1279 ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
1280 ctx.stack_.back()->set("cache-threshold", ct);
1281}
1282#line 1283 "dhcp6_parser.cc"
1283 break;
1284
1285 case 159: // cache_max_age: "cache-max-age" ":" "integer"
1286#line 685 "dhcp6_parser.yy"
1287 {
1288 ctx.unique("cache-max-age", ctx.loc2pos(yystack_[2].location));
1289 ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1290 ctx.stack_.back()->set("cache-max-age", cm);
1291}
1292#line 1293 "dhcp6_parser.cc"
1293 break;
1294
1295 case 160: // adaptive_lease_time_threshold: "adaptive-lease-time-threshold" ":" "floating point"
1296#line 691 "dhcp6_parser.yy"
1297 {
1298 ctx.unique("adaptive-lease-time-threshold", ctx.loc2pos(yystack_[2].location));
1299 ElementPtr altt(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
1300 ctx.stack_.back()->set("adaptive-lease-time-threshold", altt);
1301}
1302#line 1303 "dhcp6_parser.cc"
1303 break;
1304
1305 case 161: // decline_probation_period: "decline-probation-period" ":" "integer"
1306#line 697 "dhcp6_parser.yy"
1307 {
1308 ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location));
1309 ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1310 ctx.stack_.back()->set("decline-probation-period", dpp);
1311}
1312#line 1313 "dhcp6_parser.cc"
1313 break;
1314
1315 case 162: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
1316#line 703 "dhcp6_parser.yy"
1317 {
1318 ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location));
1319 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1320 ctx.stack_.back()->set("ddns-send-updates", b);
1321}
1322#line 1323 "dhcp6_parser.cc"
1323 break;
1324
1325 case 163: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
1326#line 709 "dhcp6_parser.yy"
1327 {
1328 ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location));
1329 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1330 ctx.stack_.back()->set("ddns-override-no-update", b);
1331}
1332#line 1333 "dhcp6_parser.cc"
1333 break;
1334
1335 case 164: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
1336#line 715 "dhcp6_parser.yy"
1337 {
1338 ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location));
1339 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1340 ctx.stack_.back()->set("ddns-override-client-update", b);
1341}
1342#line 1343 "dhcp6_parser.cc"
1343 break;
1344
1345 case 165: // $@22: %empty
1346#line 721 "dhcp6_parser.yy"
1347 {
1348 ctx.enter(ctx.REPLACE_CLIENT_NAME);
1349 ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location));
1350}
1351#line 1352 "dhcp6_parser.cc"
1352 break;
1353
1354 case 166: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value
1355#line 724 "dhcp6_parser.yy"
1356 {
1357 ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
1358 ctx.leave();
1359}
1360#line 1361 "dhcp6_parser.cc"
1361 break;
1362
1363 case 167: // ddns_replace_client_name_value: "when-present"
1364#line 730 "dhcp6_parser.yy"
1365 {
1366 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
1367 }
1368#line 1369 "dhcp6_parser.cc"
1369 break;
1370
1371 case 168: // ddns_replace_client_name_value: "never"
1372#line 733 "dhcp6_parser.yy"
1373 {
1374 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
1375 }
1376#line 1377 "dhcp6_parser.cc"
1377 break;
1378
1379 case 169: // ddns_replace_client_name_value: "always"
1380#line 736 "dhcp6_parser.yy"
1381 {
1382 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
1383 }
1384#line 1385 "dhcp6_parser.cc"
1385 break;
1386
1387 case 170: // ddns_replace_client_name_value: "when-not-present"
1388#line 739 "dhcp6_parser.yy"
1389 {
1390 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
1391 }
1392#line 1393 "dhcp6_parser.cc"
1393 break;
1394
1395 case 171: // ddns_replace_client_name_value: "boolean"
1396#line 742 "dhcp6_parser.yy"
1397 {
1398 error(yystack_[0].location, "boolean values for the ddns-replace-client-name are "
1399 "no longer supported");
1400 }
1401#line 1402 "dhcp6_parser.cc"
1402 break;
1403
1404 case 172: // $@23: %empty
1405#line 748 "dhcp6_parser.yy"
1406 {
1407 ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location));
1408 ctx.enter(ctx.NO_KEYWORD);
1409}
1410#line 1411 "dhcp6_parser.cc"
1411 break;
1412
1413 case 173: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string"
1414#line 751 "dhcp6_parser.yy"
1415 {
1416 ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1417 ctx.stack_.back()->set("ddns-generated-prefix", s);
1418 ctx.leave();
1419}
1420#line 1421 "dhcp6_parser.cc"
1421 break;
1422
1423 case 174: // $@24: %empty
1424#line 757 "dhcp6_parser.yy"
1425 {
1426 ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location));
1427 ctx.enter(ctx.NO_KEYWORD);
1428}
1429#line 1430 "dhcp6_parser.cc"
1430 break;
1431
1432 case 175: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string"
1433#line 760 "dhcp6_parser.yy"
1434 {
1435 ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1436 ctx.stack_.back()->set("ddns-qualifying-suffix", s);
1437 ctx.leave();
1438}
1439#line 1440 "dhcp6_parser.cc"
1440 break;
1441
1442 case 176: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean"
1443#line 766 "dhcp6_parser.yy"
1444 {
1445 ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location));
1446 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1447 ctx.stack_.back()->set("ddns-update-on-renew", b);
1448}
1449#line 1450 "dhcp6_parser.cc"
1450 break;
1451
1452 case 177: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean"
1453#line 775 "dhcp6_parser.yy"
1454 {
1455 ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location));
1456 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1457 ctx.warning(yystack_[1].location, "ddns-use-conflict-resolution is deprecated. "
1458 "Substituting ddns-conflict-resolution-mode");
1459 ElementPtr mode(new StringElement(b->boolValue() ? "check-with-dhcid"
1460 : "no-check-with-dhcid"));
1461 ctx.stack_.back()->set("ddns-conflict-resolution-mode", mode);
1462}
1463#line 1464 "dhcp6_parser.cc"
1464 break;
1465
1466 case 178: // $@25: %empty
1467#line 785 "dhcp6_parser.yy"
1468 {
1469 ctx.unique("ddns-conflict-resolution-mode", ctx.loc2pos(yystack_[0].location));
1470 ctx.enter(ctx.DDNS_CONFLICT_RESOLUTION_MODE);
1471}
1472#line 1473 "dhcp6_parser.cc"
1473 break;
1474
1475 case 179: // ddns_conflict_resolution_mode: "ddns-conflict-resolution-mode" $@25 ":" ddns_conflict_resolution_mode_value
1476#line 788 "dhcp6_parser.yy"
1477 {
1478 ctx.stack_.back()->set("ddns-conflict-resolution-mode", yystack_[0].value.as < ElementPtr > ());
1479 ctx.leave();
1480}
1481#line 1482 "dhcp6_parser.cc"
1482 break;
1483
1484 case 180: // ddns_conflict_resolution_mode_value: "check-with-dhcid"
1485#line 794 "dhcp6_parser.yy"
1486 {
1487 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("check-with-dhcid", ctx.loc2pos(yystack_[0].location)));
1488 }
1489#line 1490 "dhcp6_parser.cc"
1490 break;
1491
1492 case 181: // ddns_conflict_resolution_mode_value: "no-check-with-dhcid"
1493#line 797 "dhcp6_parser.yy"
1494 {
1495 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("no-check-with-dhcid", ctx.loc2pos(yystack_[0].location)));
1496 }
1497#line 1498 "dhcp6_parser.cc"
1498 break;
1499
1500 case 182: // ddns_conflict_resolution_mode_value: "check-exists-with-dhcid"
1501#line 800 "dhcp6_parser.yy"
1502 {
1503 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("check-exists-with-dhcid", ctx.loc2pos(yystack_[0].location)));
1504 }
1505#line 1506 "dhcp6_parser.cc"
1506 break;
1507
1508 case 183: // ddns_conflict_resolution_mode_value: "no-check-without-dhcid"
1509#line 803 "dhcp6_parser.yy"
1510 {
1511 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("no-check-without-dhcid", ctx.loc2pos(yystack_[0].location)));
1512 }
1513#line 1514 "dhcp6_parser.cc"
1514 break;
1515
1516 case 184: // ddns_ttl_percent: "ddns-ttl-percent" ":" "floating point"
1517#line 808 "dhcp6_parser.yy"
1518 {
1519 ctx.unique("ddns-ttl-percent", ctx.loc2pos(yystack_[2].location));
1520 ElementPtr ttl(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
1521 ctx.stack_.back()->set("ddns-ttl-percent", ttl);
1522}
1523#line 1524 "dhcp6_parser.cc"
1524 break;
1525
1526 case 185: // ddns_ttl: "ddns-ttl" ":" "integer"
1527#line 814 "dhcp6_parser.yy"
1528 {
1529 ctx.unique("ddns-ttl", ctx.loc2pos(yystack_[2].location));
1530 ElementPtr ttl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1531 ctx.stack_.back()->set("ddns-ttl", ttl);
1532}
1533#line 1534 "dhcp6_parser.cc"
1534 break;
1535
1536 case 186: // ddns_ttl_min: "ddns-ttl-min" ":" "integer"
1537#line 820 "dhcp6_parser.yy"
1538 {
1539 ctx.unique("ddns-ttl-min", ctx.loc2pos(yystack_[2].location));
1540 ElementPtr ttl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1541 ctx.stack_.back()->set("ddns-ttl-min", ttl);
1542}
1543#line 1544 "dhcp6_parser.cc"
1544 break;
1545
1546 case 187: // ddns_ttl_max: "ddns-ttl-max" ":" "integer"
1547#line 826 "dhcp6_parser.yy"
1548 {
1549 ctx.unique("ddns-ttl-max", ctx.loc2pos(yystack_[2].location));
1550 ElementPtr ttl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1551 ctx.stack_.back()->set("ddns-ttl-max", ttl);
1552}
1553#line 1554 "dhcp6_parser.cc"
1554 break;
1555
1556 case 188: // $@26: %empty
1557#line 832 "dhcp6_parser.yy"
1558 {
1559 ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
1560 ctx.enter(ctx.NO_KEYWORD);
1561}
1562#line 1563 "dhcp6_parser.cc"
1563 break;
1564
1565 case 189: // hostname_char_set: "hostname-char-set" $@26 ":" "constant string"
1566#line 835 "dhcp6_parser.yy"
1567 {
1568 ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1569 ctx.stack_.back()->set("hostname-char-set", s);
1570 ctx.leave();
1571}
1572#line 1573 "dhcp6_parser.cc"
1573 break;
1574
1575 case 190: // $@27: %empty
1576#line 841 "dhcp6_parser.yy"
1577 {
1578 ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
1579 ctx.enter(ctx.NO_KEYWORD);
1580}
1581#line 1582 "dhcp6_parser.cc"
1582 break;
1583
1584 case 191: // hostname_char_replacement: "hostname-char-replacement" $@27 ":" "constant string"
1585#line 844 "dhcp6_parser.yy"
1586 {
1587 ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1588 ctx.stack_.back()->set("hostname-char-replacement", s);
1589 ctx.leave();
1590}
1591#line 1592 "dhcp6_parser.cc"
1592 break;
1593
1594 case 192: // store_extended_info: "store-extended-info" ":" "boolean"
1595#line 850 "dhcp6_parser.yy"
1596 {
1597 ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location));
1598 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1599 ctx.stack_.back()->set("store-extended-info", b);
1600}
1601#line 1602 "dhcp6_parser.cc"
1602 break;
1603
1604 case 193: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
1605#line 856 "dhcp6_parser.yy"
1606 {
1607 ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location));
1608 ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1609 ctx.stack_.back()->set("statistic-default-sample-count", count);
1610}
1611#line 1612 "dhcp6_parser.cc"
1612 break;
1613
1614 case 194: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
1615#line 862 "dhcp6_parser.yy"
1616 {
1617 ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location));
1618 ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1619 ctx.stack_.back()->set("statistic-default-sample-age", age);
1620}
1621#line 1622 "dhcp6_parser.cc"
1622 break;
1623
1624 case 195: // $@28: %empty
1625#line 868 "dhcp6_parser.yy"
1626 {
1627 ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location));
1628 ctx.enter(ctx.NO_KEYWORD);
1629}
1630#line 1631 "dhcp6_parser.cc"
1631 break;
1632
1633 case 196: // server_tag: "server-tag" $@28 ":" "constant string"
1634#line 871 "dhcp6_parser.yy"
1635 {
1636 ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1637 ctx.stack_.back()->set("server-tag", stag);
1638 ctx.leave();
1639}
1640#line 1641 "dhcp6_parser.cc"
1641 break;
1642
1643 case 197: // parked_packet_limit: "parked-packet-limit" ":" "integer"
1644#line 877 "dhcp6_parser.yy"
1645 {
1646 ctx.unique("parked-packet-limit", ctx.loc2pos(yystack_[2].location));
1647 ElementPtr ppl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1648 ctx.stack_.back()->set("parked-packet-limit", ppl);
1649}
1650#line 1651 "dhcp6_parser.cc"
1651 break;
1652
1653 case 198: // $@29: %empty
1654#line 883 "dhcp6_parser.yy"
1655 {
1656 ctx.unique("allocator", ctx.loc2pos(yystack_[0].location));
1657 ctx.enter(ctx.NO_KEYWORD);
1658}
1659#line 1660 "dhcp6_parser.cc"
1660 break;
1661
1662 case 199: // allocator: "allocator" $@29 ":" "constant string"
1663#line 886 "dhcp6_parser.yy"
1664 {
1665 ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1666 ctx.stack_.back()->set("allocator", al);
1667 ctx.leave();
1668}
1669#line 1670 "dhcp6_parser.cc"
1670 break;
1671
1672 case 200: // $@30: %empty
1673#line 892 "dhcp6_parser.yy"
1674 {
1675 ctx.unique("pd-allocator", ctx.loc2pos(yystack_[0].location));
1676 ctx.enter(ctx.NO_KEYWORD);
1677}
1678#line 1679 "dhcp6_parser.cc"
1679 break;
1680
1681 case 201: // pd_allocator: "pd-allocator" $@30 ":" "constant string"
1682#line 895 "dhcp6_parser.yy"
1683 {
1684 ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1685 ctx.stack_.back()->set("pd-allocator", al);
1686 ctx.leave();
1687}
1688#line 1689 "dhcp6_parser.cc"
1689 break;
1690
1691 case 202: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean"
1692#line 901 "dhcp6_parser.yy"
1693 {
1694 ctx.unique("early-global-reservations-lookup", ctx.loc2pos(yystack_[2].location));
1695 ElementPtr early(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1696 ctx.stack_.back()->set("early-global-reservations-lookup", early);
1697}
1698#line 1699 "dhcp6_parser.cc"
1699 break;
1700
1701 case 203: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean"
1702#line 907 "dhcp6_parser.yy"
1703 {
1704 ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location));
1705 ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1706 ctx.stack_.back()->set("ip-reservations-unique", unique);
1707}
1708#line 1709 "dhcp6_parser.cc"
1709 break;
1710
1711 case 204: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean"
1712#line 913 "dhcp6_parser.yy"
1713 {
1714 ctx.unique("reservations-lookup-first", ctx.loc2pos(yystack_[2].location));
1715 ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1716 ctx.stack_.back()->set("reservations-lookup-first", first);
1717}
1718#line 1719 "dhcp6_parser.cc"
1719 break;
1720
1721 case 205: // allow_address_registration: "allow-address-registration" ":" "boolean"
1722#line 919 "dhcp6_parser.yy"
1723 {
1724 ctx.unique("allow-address-registration", ctx.loc2pos(yystack_[2].location));
1725 ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1726 ctx.stack_.back()->set("allow-address-registration", first);
1727}
1728#line 1729 "dhcp6_parser.cc"
1729 break;
1730
1731 case 206: // $@31: %empty
1732#line 925 "dhcp6_parser.yy"
1733 {
1734 ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location));
1735 ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
1736 ctx.stack_.back()->set("interfaces-config", i);
1737 ctx.stack_.push_back(i);
1738 ctx.enter(ctx.INTERFACES_CONFIG);
1739}
1740#line 1741 "dhcp6_parser.cc"
1741 break;
1742
1743 case 207: // interfaces_config: "interfaces-config" $@31 ":" "{" interfaces_config_params "}"
1744#line 931 "dhcp6_parser.yy"
1745 {
1746 // No interfaces config param is required
1747 ctx.stack_.pop_back();
1748 ctx.leave();
1749}
1750#line 1751 "dhcp6_parser.cc"
1751 break;
1752
1753 case 208: // $@32: %empty
1754#line 937 "dhcp6_parser.yy"
1755 {
1756 // Parse the interfaces-config map
1757 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
1758 ctx.stack_.push_back(m);
1759}
1760#line 1761 "dhcp6_parser.cc"
1761 break;
1762
1763 case 209: // sub_interfaces6: "{" $@32 interfaces_config_params "}"
1764#line 941 "dhcp6_parser.yy"
1765 {
1766 // No interfaces config param is required
1767 // parsing completed
1768}
1769#line 1770 "dhcp6_parser.cc"
1770 break;
1771
1772 case 212: // interfaces_config_params: interfaces_config_params ","
1773#line 948 "dhcp6_parser.yy"
1774 {
1775 ctx.warnAboutExtraCommas(yystack_[0].location);
1776 }
1777#line 1778 "dhcp6_parser.cc"
1778 break;
1779
1780 case 221: // $@33: %empty
1781#line 963 "dhcp6_parser.yy"
1782 {
1783 ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location));
1784 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
1785 ctx.stack_.back()->set("interfaces", l);
1786 ctx.stack_.push_back(l);
1787 ctx.enter(ctx.NO_KEYWORD);
1788}
1789#line 1790 "dhcp6_parser.cc"
1790 break;
1791
1792 case 222: // interfaces_list: "interfaces" $@33 ":" list_strings
1793#line 969 "dhcp6_parser.yy"
1794 {
1795 ctx.stack_.pop_back();
1796 ctx.leave();
1797}
1798#line 1799 "dhcp6_parser.cc"
1799 break;
1800
1801 case 223: // re_detect: "re-detect" ":" "boolean"
1802#line 974 "dhcp6_parser.yy"
1803 {
1804 ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location));
1805 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1806 ctx.stack_.back()->set("re-detect", b);
1807}
1808#line 1809 "dhcp6_parser.cc"
1809 break;
1810
1811 case 224: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean"
1812#line 980 "dhcp6_parser.yy"
1813 {
1814 ctx.unique("service-sockets-require-all", ctx.loc2pos(yystack_[2].location));
1815 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
1816 ctx.stack_.back()->set("service-sockets-require-all", b);
1817}
1818#line 1819 "dhcp6_parser.cc"
1819 break;
1820
1821 case 225: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer"
1822#line 986 "dhcp6_parser.yy"
1823 {
1824 ctx.unique("service-sockets-retry-wait-time", ctx.loc2pos(yystack_[2].location));
1825 ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1826 ctx.stack_.back()->set("service-sockets-retry-wait-time", n);
1827}
1828#line 1829 "dhcp6_parser.cc"
1829 break;
1830
1831 case 226: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer"
1832#line 992 "dhcp6_parser.yy"
1833 {
1834 ctx.unique("service-sockets-max-retries", ctx.loc2pos(yystack_[2].location));
1835 ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
1836 ctx.stack_.back()->set("service-sockets-max-retries", n);
1837}
1838#line 1839 "dhcp6_parser.cc"
1839 break;
1840
1841 case 227: // $@34: %empty
1842#line 998 "dhcp6_parser.yy"
1843 {
1844 ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location));
1845 ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
1846 ctx.stack_.back()->set("lease-database", i);
1847 ctx.stack_.push_back(i);
1848 ctx.enter(ctx.LEASE_DATABASE);
1849}
1850#line 1851 "dhcp6_parser.cc"
1851 break;
1852
1853 case 228: // lease_database: "lease-database" $@34 ":" "{" database_map_params "}"
1854#line 1004 "dhcp6_parser.yy"
1855 {
1856 // The type parameter is required
1857 ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
1858 ctx.stack_.pop_back();
1859 ctx.leave();
1860}
1861#line 1862 "dhcp6_parser.cc"
1862 break;
1863
1864 case 229: // $@35: %empty
1865#line 1011 "dhcp6_parser.yy"
1866 {
1867 ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location));
1868 ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
1869 ctx.stack_.back()->set("hosts-database", i);
1870 ctx.stack_.push_back(i);
1871 ctx.enter(ctx.HOSTS_DATABASE);
1872}
1873#line 1874 "dhcp6_parser.cc"
1874 break;
1875
1876 case 230: // hosts_database: "hosts-database" $@35 ":" "{" database_map_params "}"
1877#line 1017 "dhcp6_parser.yy"
1878 {
1879 // The type parameter is required
1880 ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
1881 ctx.stack_.pop_back();
1882 ctx.leave();
1883}
1884#line 1885 "dhcp6_parser.cc"
1885 break;
1886
1887 case 231: // $@36: %empty
1888#line 1024 "dhcp6_parser.yy"
1889 {
1890 ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location));
1891 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
1892 ctx.stack_.back()->set("hosts-databases", l);
1893 ctx.stack_.push_back(l);
1894 ctx.enter(ctx.HOSTS_DATABASE);
1895}
1896#line 1897 "dhcp6_parser.cc"
1897 break;
1898
1899 case 232: // hosts_databases: "hosts-databases" $@36 ":" "[" database_list "]"
1900#line 1030 "dhcp6_parser.yy"
1901 {
1902 ctx.stack_.pop_back();
1903 ctx.leave();
1904}
1905#line 1906 "dhcp6_parser.cc"
1906 break;
1907
1908 case 237: // not_empty_database_list: not_empty_database_list ","
1909#line 1041 "dhcp6_parser.yy"
1910 {
1911 ctx.warnAboutExtraCommas(yystack_[0].location);
1912 }
1913#line 1914 "dhcp6_parser.cc"
1914 break;
1915
1916 case 238: // $@37: %empty
1917#line 1046 "dhcp6_parser.yy"
1918 {
1919 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
1920 ctx.stack_.back()->add(m);
1921 ctx.stack_.push_back(m);
1922}
1923#line 1924 "dhcp6_parser.cc"
1924 break;
1925
1926 case 239: // database: "{" $@37 database_map_params "}"
1927#line 1050 "dhcp6_parser.yy"
1928 {
1929 // The type parameter is required
1930 ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
1931 ctx.stack_.pop_back();
1932}
1933#line 1934 "dhcp6_parser.cc"
1934 break;
1935
1936 case 242: // database_map_params: database_map_params ","
1937#line 1058 "dhcp6_parser.yy"
1938 {
1939 ctx.warnAboutExtraCommas(yystack_[0].location);
1940 }
1941#line 1942 "dhcp6_parser.cc"
1942 break;
1943
1944 case 268: // $@38: %empty
1945#line 1090 "dhcp6_parser.yy"
1946 {
1947 ctx.unique("type", ctx.loc2pos(yystack_[0].location));
1948 ctx.enter(ctx.NO_KEYWORD);
1949}
1950#line 1951 "dhcp6_parser.cc"
1951 break;
1952
1953 case 269: // database_type: "type" $@38 ":" "constant string"
1954#line 1093 "dhcp6_parser.yy"
1955 {
1956 ElementPtr db_type(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1957 ctx.stack_.back()->set("type", db_type);
1958 ctx.leave();
1959}
1960#line 1961 "dhcp6_parser.cc"
1961 break;
1962
1963 case 270: // $@39: %empty
1964#line 1099 "dhcp6_parser.yy"
1965 {
1966 ctx.unique("user", ctx.loc2pos(yystack_[0].location));
1967 ctx.enter(ctx.NO_KEYWORD);
1968}
1969#line 1970 "dhcp6_parser.cc"
1970 break;
1971
1972 case 271: // user: "user" $@39 ":" "constant string"
1973#line 1102 "dhcp6_parser.yy"
1974 {
1975 ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1976 ctx.stack_.back()->set("user", user);
1977 ctx.leave();
1978}
1979#line 1980 "dhcp6_parser.cc"
1980 break;
1981
1982 case 272: // $@40: %empty
1983#line 1108 "dhcp6_parser.yy"
1984 {
1985 ctx.unique("password", ctx.loc2pos(yystack_[0].location));
1986 ctx.enter(ctx.NO_KEYWORD);
1987}
1988#line 1989 "dhcp6_parser.cc"
1989 break;
1990
1991 case 273: // password: "password" $@40 ":" "constant string"
1992#line 1111 "dhcp6_parser.yy"
1993 {
1994 ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
1995 ctx.stack_.back()->set("password", pwd);
1996 ctx.leave();
1997}
1998#line 1999 "dhcp6_parser.cc"
1999 break;
2000
2001 case 274: // $@41: %empty
2002#line 1117 "dhcp6_parser.yy"
2003 {
2004 ctx.unique("password-file", ctx.loc2pos(yystack_[0].location));
2005 ctx.enter(ctx.NO_KEYWORD);
2006}
2007#line 2008 "dhcp6_parser.cc"
2008 break;
2009
2010 case 275: // password_file: "password-file" $@41 ":" "constant string"
2011#line 1120 "dhcp6_parser.yy"
2012 {
2013 ElementPtr password(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2014 ctx.stack_.back()->set("password-file", password);
2015 ctx.leave();
2016}
2017#line 2018 "dhcp6_parser.cc"
2018 break;
2019
2020 case 276: // $@42: %empty
2021#line 1126 "dhcp6_parser.yy"
2022 {
2023 ctx.unique("host", ctx.loc2pos(yystack_[0].location));
2024 ctx.enter(ctx.NO_KEYWORD);
2025}
2026#line 2027 "dhcp6_parser.cc"
2027 break;
2028
2029 case 277: // host: "host" $@42 ":" "constant string"
2030#line 1129 "dhcp6_parser.yy"
2031 {
2032 ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2033 ctx.stack_.back()->set("host", h);
2034 ctx.leave();
2035}
2036#line 2037 "dhcp6_parser.cc"
2037 break;
2038
2039 case 278: // port: "port" ":" "integer"
2040#line 1135 "dhcp6_parser.yy"
2041 {
2042 ctx.unique("port", ctx.loc2pos(yystack_[2].location));
2043 ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2044 ctx.stack_.back()->set("port", p);
2045}
2046#line 2047 "dhcp6_parser.cc"
2047 break;
2048
2049 case 279: // $@43: %empty
2050#line 1141 "dhcp6_parser.yy"
2051 {
2052 ctx.unique("name", ctx.loc2pos(yystack_[0].location));
2053 ctx.enter(ctx.NO_KEYWORD);
2054}
2055#line 2056 "dhcp6_parser.cc"
2056 break;
2057
2058 case 280: // name: "name" $@43 ":" "constant string"
2059#line 1144 "dhcp6_parser.yy"
2060 {
2061 ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2062 ctx.stack_.back()->set("name", name);
2063 ctx.leave();
2064}
2065#line 2066 "dhcp6_parser.cc"
2066 break;
2067
2068 case 281: // persist: "persist" ":" "boolean"
2069#line 1150 "dhcp6_parser.yy"
2070 {
2071 ctx.unique("persist", ctx.loc2pos(yystack_[2].location));
2072 ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
2073 ctx.stack_.back()->set("persist", n);
2074}
2075#line 2076 "dhcp6_parser.cc"
2076 break;
2077
2078 case 282: // lfc_interval: "lfc-interval" ":" "integer"
2079#line 1156 "dhcp6_parser.yy"
2080 {
2081 ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location));
2082 ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2083 ctx.stack_.back()->set("lfc-interval", n);
2084}
2085#line 2086 "dhcp6_parser.cc"
2086 break;
2087
2088 case 283: // readonly: "readonly" ":" "boolean"
2089#line 1162 "dhcp6_parser.yy"
2090 {
2091 ctx.unique("readonly", ctx.loc2pos(yystack_[2].location));
2092 ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
2093 ctx.stack_.back()->set("readonly", n);
2094}
2095#line 2096 "dhcp6_parser.cc"
2096 break;
2097
2098 case 284: // connect_timeout: "connect-timeout" ":" "integer"
2099#line 1168 "dhcp6_parser.yy"
2100 {
2101 ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location));
2102 ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2103 ctx.stack_.back()->set("connect-timeout", n);
2104}
2105#line 2106 "dhcp6_parser.cc"
2106 break;
2107
2108 case 285: // read_timeout: "read-timeout" ":" "integer"
2109#line 1174 "dhcp6_parser.yy"
2110 {
2111 ctx.unique("read-timeout", ctx.loc2pos(yystack_[2].location));
2112 ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2113 ctx.stack_.back()->set("read-timeout", n);
2114}
2115#line 2116 "dhcp6_parser.cc"
2116 break;
2117
2118 case 286: // write_timeout: "write-timeout" ":" "integer"
2119#line 1180 "dhcp6_parser.yy"
2120 {
2121 ctx.unique("write-timeout", ctx.loc2pos(yystack_[2].location));
2122 ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2123 ctx.stack_.back()->set("write-timeout", n);
2124}
2125#line 2126 "dhcp6_parser.cc"
2126 break;
2127
2128 case 287: // tcp_user_timeout: "tcp-user-timeout" ":" "integer"
2129#line 1186 "dhcp6_parser.yy"
2130 {
2131 ctx.unique("tcp-user-timeout", ctx.loc2pos(yystack_[2].location));
2132 ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2133 ctx.stack_.back()->set("tcp-user-timeout", n);
2134}
2135#line 2136 "dhcp6_parser.cc"
2136 break;
2137
2138 case 288: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
2139#line 1192 "dhcp6_parser.yy"
2140 {
2141 ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location));
2142 ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2143 ctx.stack_.back()->set("reconnect-wait-time", n);
2144}
2145#line 2146 "dhcp6_parser.cc"
2146 break;
2147
2148 case 289: // $@44: %empty
2149#line 1198 "dhcp6_parser.yy"
2150 {
2151 ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location));
2152 ctx.enter(ctx.DATABASE_ON_FAIL);
2153}
2154#line 2155 "dhcp6_parser.cc"
2155 break;
2156
2157 case 290: // on_fail: "on-fail" $@44 ":" on_fail_mode
2158#line 1201 "dhcp6_parser.yy"
2159 {
2160 ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ());
2161 ctx.leave();
2162}
2163#line 2164 "dhcp6_parser.cc"
2164 break;
2165
2166 case 291: // on_fail_mode: "stop-retry-exit"
2167#line 1206 "dhcp6_parser.yy"
2168 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); }
2169#line 2170 "dhcp6_parser.cc"
2170 break;
2171
2172 case 292: // on_fail_mode: "serve-retry-exit"
2173#line 1207 "dhcp6_parser.yy"
2174 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); }
2175#line 2176 "dhcp6_parser.cc"
2176 break;
2177
2178 case 293: // on_fail_mode: "serve-retry-continue"
2179#line 1208 "dhcp6_parser.yy"
2180 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); }
2181#line 2182 "dhcp6_parser.cc"
2182 break;
2183
2184 case 294: // retry_on_startup: "retry-on-startup" ":" "boolean"
2185#line 1211 "dhcp6_parser.yy"
2186 {
2187 ctx.unique("retry-on-startup", ctx.loc2pos(yystack_[2].location));
2188 ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
2189 ctx.stack_.back()->set("retry-on-startup", n);
2190}
2191#line 2192 "dhcp6_parser.cc"
2192 break;
2193
2194 case 295: // max_row_errors: "max-row-errors" ":" "integer"
2195#line 1217 "dhcp6_parser.yy"
2196 {
2197 ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location));
2198 ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2199 ctx.stack_.back()->set("max-row-errors", n);
2200}
2201#line 2202 "dhcp6_parser.cc"
2202 break;
2203
2204 case 296: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
2205#line 1223 "dhcp6_parser.yy"
2206 {
2207 ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location));
2208 ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2209 ctx.stack_.back()->set("max-reconnect-tries", n);
2210}
2211#line 2212 "dhcp6_parser.cc"
2212 break;
2213
2214 case 297: // $@45: %empty
2215#line 1229 "dhcp6_parser.yy"
2216 {
2217 ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location));
2218 ctx.enter(ctx.NO_KEYWORD);
2219}
2220#line 2221 "dhcp6_parser.cc"
2221 break;
2222
2223 case 298: // trust_anchor: "trust-anchor" $@45 ":" "constant string"
2224#line 1232 "dhcp6_parser.yy"
2225 {
2226 ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2227 ctx.stack_.back()->set("trust-anchor", ca);
2228 ctx.leave();
2229}
2230#line 2231 "dhcp6_parser.cc"
2231 break;
2232
2233 case 299: // $@46: %empty
2234#line 1238 "dhcp6_parser.yy"
2235 {
2236 ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location));
2237 ctx.enter(ctx.NO_KEYWORD);
2238}
2239#line 2240 "dhcp6_parser.cc"
2240 break;
2241
2242 case 300: // cert_file: "cert-file" $@46 ":" "constant string"
2243#line 1241 "dhcp6_parser.yy"
2244 {
2245 ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2246 ctx.stack_.back()->set("cert-file", cert);
2247 ctx.leave();
2248}
2249#line 2250 "dhcp6_parser.cc"
2250 break;
2251
2252 case 301: // $@47: %empty
2253#line 1247 "dhcp6_parser.yy"
2254 {
2255 ctx.unique("key-file", ctx.loc2pos(yystack_[0].location));
2256 ctx.enter(ctx.NO_KEYWORD);
2257}
2258#line 2259 "dhcp6_parser.cc"
2259 break;
2260
2261 case 302: // key_file: "key-file" $@47 ":" "constant string"
2262#line 1250 "dhcp6_parser.yy"
2263 {
2264 ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2265 ctx.stack_.back()->set("key-file", key);
2266 ctx.leave();
2267}
2268#line 2269 "dhcp6_parser.cc"
2269 break;
2270
2271 case 303: // $@48: %empty
2272#line 1256 "dhcp6_parser.yy"
2273 {
2274 ctx.unique("ssl-mode", ctx.loc2pos(yystack_[0].location));
2275 ctx.enter(ctx.SSL_MODE);
2276}
2277#line 2278 "dhcp6_parser.cc"
2278 break;
2279
2280 case 304: // ssl_mode: "ssl-mode" $@48 ":" ssl_mode
2281#line 1259 "dhcp6_parser.yy"
2282 {
2283 ctx.stack_.back()->set("ssl-mode", yystack_[0].value.as < ElementPtr > ());
2284 ctx.leave();
2285}
2286#line 2287 "dhcp6_parser.cc"
2287 break;
2288
2289 case 305: // ssl_mode: "disable"
2290#line 1264 "dhcp6_parser.yy"
2291 {
2292 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disable", ctx.loc2pos(yystack_[0].location)));
2293 }
2294#line 2295 "dhcp6_parser.cc"
2295 break;
2296
2297 case 306: // ssl_mode: "prefer"
2298#line 1267 "dhcp6_parser.yy"
2299 {
2300 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("prefer", ctx.loc2pos(yystack_[0].location)));
2301 }
2302#line 2303 "dhcp6_parser.cc"
2303 break;
2304
2305 case 307: // ssl_mode: "require"
2306#line 1270 "dhcp6_parser.yy"
2307 {
2308 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("require", ctx.loc2pos(yystack_[0].location)));
2309 }
2310#line 2311 "dhcp6_parser.cc"
2311 break;
2312
2313 case 308: // ssl_mode: "verify-ca"
2314#line 1273 "dhcp6_parser.yy"
2315 {
2316 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("verify-ca", ctx.loc2pos(yystack_[0].location)));
2317 }
2318#line 2319 "dhcp6_parser.cc"
2319 break;
2320
2321 case 309: // ssl_mode: "verify-full"
2322#line 1276 "dhcp6_parser.yy"
2323 {
2324 yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("verify-full", ctx.loc2pos(yystack_[0].location)));
2325 }
2326#line 2327 "dhcp6_parser.cc"
2327 break;
2328
2329 case 310: // $@49: %empty
2330#line 1281 "dhcp6_parser.yy"
2331 {
2332 ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location));
2333 ctx.enter(ctx.NO_KEYWORD);
2334}
2335#line 2336 "dhcp6_parser.cc"
2336 break;
2337
2338 case 311: // cipher_list: "cipher-list" $@49 ":" "constant string"
2339#line 1284 "dhcp6_parser.yy"
2340 {
2341 ElementPtr cl(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2342 ctx.stack_.back()->set("cipher-list", cl);
2343 ctx.leave();
2344}
2345#line 2346 "dhcp6_parser.cc"
2346 break;
2347
2348 case 312: // $@50: %empty
2349#line 1290 "dhcp6_parser.yy"
2350 {
2351 ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location));
2352 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
2353 ctx.stack_.back()->set("sanity-checks", m);
2354 ctx.stack_.push_back(m);
2355 ctx.enter(ctx.SANITY_CHECKS);
2356}
2357#line 2358 "dhcp6_parser.cc"
2358 break;
2359
2360 case 313: // sanity_checks: "sanity-checks" $@50 ":" "{" sanity_checks_params "}"
2361#line 1296 "dhcp6_parser.yy"
2362 {
2363 ctx.stack_.pop_back();
2364 ctx.leave();
2365}
2366#line 2367 "dhcp6_parser.cc"
2367 break;
2368
2369 case 316: // sanity_checks_params: sanity_checks_params ","
2370#line 1303 "dhcp6_parser.yy"
2371 {
2372 ctx.warnAboutExtraCommas(yystack_[0].location);
2373 }
2374#line 2375 "dhcp6_parser.cc"
2375 break;
2376
2377 case 319: // $@51: %empty
2378#line 1312 "dhcp6_parser.yy"
2379 {
2380 ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location));
2381 ctx.enter(ctx.NO_KEYWORD);
2382}
2383#line 2384 "dhcp6_parser.cc"
2384 break;
2385
2386 case 320: // lease_checks: "lease-checks" $@51 ":" "constant string"
2387#line 1315 "dhcp6_parser.yy"
2388 {
2389
2390 if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
2391 (string(yystack_[0].value.as < std::string > ()) == "warn") ||
2392 (string(yystack_[0].value.as < std::string > ()) == "fix") ||
2393 (string(yystack_[0].value.as < std::string > ()) == "fix-del") ||
2394 (string(yystack_[0].value.as < std::string > ()) == "del")) {
2395 ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2396 ctx.stack_.back()->set("lease-checks", user);
2397 ctx.leave();
2398 } else {
2399 error(yystack_[0].location, "Unsupported 'lease-checks value: " + string(yystack_[0].value.as < std::string > ()) +
2400 ", supported values are: none, warn, fix, fix-del, del");
2401 }
2402}
2403#line 2404 "dhcp6_parser.cc"
2404 break;
2405
2406 case 321: // $@52: %empty
2407#line 1331 "dhcp6_parser.yy"
2408 {
2409 ctx.unique("extended-info-checks", ctx.loc2pos(yystack_[0].location));
2410 ctx.enter(ctx.NO_KEYWORD);
2411}
2412#line 2413 "dhcp6_parser.cc"
2413 break;
2414
2415 case 322: // extended_info_checks: "extended-info-checks" $@52 ":" "constant string"
2416#line 1334 "dhcp6_parser.yy"
2417 {
2418
2419 if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
2420 (string(yystack_[0].value.as < std::string > ()) == "fix") ||
2421 (string(yystack_[0].value.as < std::string > ()) == "strict") ||
2422 (string(yystack_[0].value.as < std::string > ()) == "pedantic")) {
2423 ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2424 ctx.stack_.back()->set("extended-info-checks", user);
2425 ctx.leave();
2426 } else {
2427 error(yystack_[0].location, "Unsupported 'extended-info-checks value: " + string(yystack_[0].value.as < std::string > ()) +
2428 ", supported values are: none, fix, strict, pedantic");
2429 }
2430}
2431#line 2432 "dhcp6_parser.cc"
2432 break;
2433
2434 case 323: // $@53: %empty
2435#line 1349 "dhcp6_parser.yy"
2436 {
2437 ctx.unique("mac-sources", ctx.loc2pos(yystack_[0].location));
2438 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
2439 ctx.stack_.back()->set("mac-sources", l);
2440 ctx.stack_.push_back(l);
2441 ctx.enter(ctx.MAC_SOURCES);
2442}
2443#line 2444 "dhcp6_parser.cc"
2444 break;
2445
2446 case 324: // mac_sources: "mac-sources" $@53 ":" "[" mac_sources_list "]"
2447#line 1355 "dhcp6_parser.yy"
2448 {
2449 ctx.stack_.pop_back();
2450 ctx.leave();
2451}
2452#line 2453 "dhcp6_parser.cc"
2453 break;
2454
2455 case 327: // mac_sources_list: mac_sources_list ","
2456#line 1362 "dhcp6_parser.yy"
2457 {
2458 ctx.warnAboutExtraCommas(yystack_[0].location);
2459 }
2460#line 2461 "dhcp6_parser.cc"
2461 break;
2462
2463 case 330: // duid_id: "duid"
2464#line 1371 "dhcp6_parser.yy"
2465 {
2466 ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
2467 ctx.stack_.back()->add(duid);
2468}
2469#line 2470 "dhcp6_parser.cc"
2470 break;
2471
2472 case 331: // string_id: "constant string"
2473#line 1376 "dhcp6_parser.yy"
2474 {
2475 ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2476 ctx.stack_.back()->add(duid);
2477}
2478#line 2479 "dhcp6_parser.cc"
2479 break;
2480
2481 case 332: // $@54: %empty
2482#line 1381 "dhcp6_parser.yy"
2483 {
2484 ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location));
2485 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
2486 ctx.stack_.back()->set("host-reservation-identifiers", l);
2487 ctx.stack_.push_back(l);
2488 ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
2489}
2490#line 2491 "dhcp6_parser.cc"
2491 break;
2492
2493 case 333: // host_reservation_identifiers: "host-reservation-identifiers" $@54 ":" "[" host_reservation_identifiers_list "]"
2494#line 1387 "dhcp6_parser.yy"
2495 {
2496 ctx.stack_.pop_back();
2497 ctx.leave();
2498}
2499#line 2500 "dhcp6_parser.cc"
2500 break;
2501
2502 case 336: // host_reservation_identifiers_list: host_reservation_identifiers_list ","
2503#line 1394 "dhcp6_parser.yy"
2504 {
2505 ctx.warnAboutExtraCommas(yystack_[0].location);
2506 }
2507#line 2508 "dhcp6_parser.cc"
2508 break;
2509
2510 case 340: // hw_address_id: "hw-address"
2511#line 1404 "dhcp6_parser.yy"
2512 {
2513 ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
2514 ctx.stack_.back()->add(hwaddr);
2515}
2516#line 2517 "dhcp6_parser.cc"
2517 break;
2518
2519 case 341: // flex_id: "flex-id"
2520#line 1409 "dhcp6_parser.yy"
2521 {
2522 ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
2523 ctx.stack_.back()->add(flex_id);
2524}
2525#line 2526 "dhcp6_parser.cc"
2526 break;
2527
2528 case 342: // $@55: %empty
2529#line 1416 "dhcp6_parser.yy"
2530 {
2531 ctx.unique("relay-supplied-options", ctx.loc2pos(yystack_[0].location));
2532 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
2533 ctx.stack_.back()->set("relay-supplied-options", l);
2534 ctx.stack_.push_back(l);
2535 ctx.enter(ctx.NO_KEYWORD);
2536}
2537#line 2538 "dhcp6_parser.cc"
2538 break;
2539
2540 case 343: // relay_supplied_options: "relay-supplied-options" $@55 ":" "[" list_content "]"
2541#line 1422 "dhcp6_parser.yy"
2542 {
2543 ctx.stack_.pop_back();
2544 ctx.leave();
2545}
2546#line 2547 "dhcp6_parser.cc"
2547 break;
2548
2549 case 344: // $@56: %empty
2550#line 1429 "dhcp6_parser.yy"
2551 {
2552 ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location));
2553 ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
2554 ctx.stack_.back()->set("multi-threading", mt);
2555 ctx.stack_.push_back(mt);
2556 ctx.enter(ctx.DHCP_MULTI_THREADING);
2557}
2558#line 2559 "dhcp6_parser.cc"
2559 break;
2560
2561 case 345: // dhcp_multi_threading: "multi-threading" $@56 ":" "{" multi_threading_params "}"
2562#line 1435 "dhcp6_parser.yy"
2563 {
2564 // The enable parameter is required.
2565 ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
2566 ctx.stack_.pop_back();
2567 ctx.leave();
2568}
2569#line 2570 "dhcp6_parser.cc"
2570 break;
2571
2572 case 348: // multi_threading_params: multi_threading_params ","
2573#line 1444 "dhcp6_parser.yy"
2574 {
2575 ctx.warnAboutExtraCommas(yystack_[0].location);
2576 }
2577#line 2578 "dhcp6_parser.cc"
2578 break;
2579
2580 case 355: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
2581#line 1457 "dhcp6_parser.yy"
2582 {
2583 ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location));
2584 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
2585 ctx.stack_.back()->set("enable-multi-threading", b);
2586}
2587#line 2588 "dhcp6_parser.cc"
2588 break;
2589
2590 case 356: // thread_pool_size: "thread-pool-size" ":" "integer"
2591#line 1463 "dhcp6_parser.yy"
2592 {
2593 ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location));
2594 ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2595 ctx.stack_.back()->set("thread-pool-size", prf);
2596}
2597#line 2598 "dhcp6_parser.cc"
2598 break;
2599
2600 case 357: // packet_queue_size: "packet-queue-size" ":" "integer"
2601#line 1469 "dhcp6_parser.yy"
2602 {
2603 ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location));
2604 ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2605 ctx.stack_.back()->set("packet-queue-size", prf);
2606}
2607#line 2608 "dhcp6_parser.cc"
2608 break;
2609
2610 case 358: // $@57: %empty
2611#line 1475 "dhcp6_parser.yy"
2612 {
2613 ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location));
2614 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
2615 ctx.stack_.back()->set("hooks-libraries", l);
2616 ctx.stack_.push_back(l);
2617 ctx.enter(ctx.HOOKS_LIBRARIES);
2618}
2619#line 2620 "dhcp6_parser.cc"
2620 break;
2621
2622 case 359: // hooks_libraries: "hooks-libraries" $@57 ":" "[" hooks_libraries_list "]"
2623#line 1481 "dhcp6_parser.yy"
2624 {
2625 ctx.stack_.pop_back();
2626 ctx.leave();
2627}
2628#line 2629 "dhcp6_parser.cc"
2629 break;
2630
2631 case 364: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list ","
2632#line 1492 "dhcp6_parser.yy"
2633 {
2634 ctx.warnAboutExtraCommas(yystack_[0].location);
2635 }
2636#line 2637 "dhcp6_parser.cc"
2637 break;
2638
2639 case 365: // $@58: %empty
2640#line 1497 "dhcp6_parser.yy"
2641 {
2642 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
2643 ctx.stack_.back()->add(m);
2644 ctx.stack_.push_back(m);
2645}
2646#line 2647 "dhcp6_parser.cc"
2647 break;
2648
2649 case 366: // hooks_library: "{" $@58 hooks_params "}"
2650#line 1501 "dhcp6_parser.yy"
2651 {
2652 // The library hooks parameter is required
2653 ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
2654 ctx.stack_.pop_back();
2655}
2656#line 2657 "dhcp6_parser.cc"
2657 break;
2658
2659 case 367: // $@59: %empty
2660#line 1507 "dhcp6_parser.yy"
2661 {
2662 // Parse the hooks-libraries list entry map
2663 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
2664 ctx.stack_.push_back(m);
2665}
2666#line 2667 "dhcp6_parser.cc"
2667 break;
2668
2669 case 368: // sub_hooks_library: "{" $@59 hooks_params "}"
2670#line 1511 "dhcp6_parser.yy"
2671 {
2672 // The library hooks parameter is required
2673 ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
2674 // parsing completed
2675}
2676#line 2677 "dhcp6_parser.cc"
2677 break;
2678
2679 case 371: // hooks_params: hooks_params ","
2680#line 1519 "dhcp6_parser.yy"
2681 {
2682 ctx.warnAboutExtraCommas(yystack_[0].location);
2683 }
2684#line 2685 "dhcp6_parser.cc"
2685 break;
2686
2687 case 375: // $@60: %empty
2688#line 1529 "dhcp6_parser.yy"
2689 {
2690 ctx.unique("library", ctx.loc2pos(yystack_[0].location));
2691 ctx.enter(ctx.NO_KEYWORD);
2692}
2693#line 2694 "dhcp6_parser.cc"
2694 break;
2695
2696 case 376: // library: "library" $@60 ":" "constant string"
2697#line 1532 "dhcp6_parser.yy"
2698 {
2699 ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2700 ctx.stack_.back()->set("library", lib);
2701 ctx.leave();
2702}
2703#line 2704 "dhcp6_parser.cc"
2704 break;
2705
2706 case 377: // $@61: %empty
2707#line 1538 "dhcp6_parser.yy"
2708 {
2709 ctx.unique("parameters", ctx.loc2pos(yystack_[0].location));
2710 ctx.enter(ctx.NO_KEYWORD);
2711}
2712#line 2713 "dhcp6_parser.cc"
2713 break;
2714
2715 case 378: // parameters: "parameters" $@61 ":" map_value
2716#line 1541 "dhcp6_parser.yy"
2717 {
2718 ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
2719 ctx.leave();
2720}
2721#line 2722 "dhcp6_parser.cc"
2722 break;
2723
2724 case 379: // $@62: %empty
2725#line 1547 "dhcp6_parser.yy"
2726 {
2727 ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location));
2728 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
2729 ctx.stack_.back()->set("expired-leases-processing", m);
2730 ctx.stack_.push_back(m);
2731 ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
2732}
2733#line 2734 "dhcp6_parser.cc"
2734 break;
2735
2736 case 380: // expired_leases_processing: "expired-leases-processing" $@62 ":" "{" expired_leases_params "}"
2737#line 1553 "dhcp6_parser.yy"
2738 {
2739 // No expired lease parameter is required
2740 ctx.stack_.pop_back();
2741 ctx.leave();
2742}
2743#line 2744 "dhcp6_parser.cc"
2744 break;
2745
2746 case 383: // expired_leases_params: expired_leases_params ","
2747#line 1561 "dhcp6_parser.yy"
2748 {
2749 ctx.warnAboutExtraCommas(yystack_[0].location);
2750 }
2751#line 2752 "dhcp6_parser.cc"
2752 break;
2753
2754 case 390: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
2755#line 1574 "dhcp6_parser.yy"
2756 {
2757 ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location));
2758 ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2759 ctx.stack_.back()->set("reclaim-timer-wait-time", value);
2760}
2761#line 2762 "dhcp6_parser.cc"
2762 break;
2763
2764 case 391: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
2765#line 1580 "dhcp6_parser.yy"
2766 {
2767 ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location));
2768 ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2769 ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
2770}
2771#line 2772 "dhcp6_parser.cc"
2772 break;
2773
2774 case 392: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
2775#line 1586 "dhcp6_parser.yy"
2776 {
2777 ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location));
2778 ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2779 ctx.stack_.back()->set("hold-reclaimed-time", value);
2780}
2781#line 2782 "dhcp6_parser.cc"
2782 break;
2783
2784 case 393: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
2785#line 1592 "dhcp6_parser.yy"
2786 {
2787 ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location));
2788 ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2789 ctx.stack_.back()->set("max-reclaim-leases", value);
2790}
2791#line 2792 "dhcp6_parser.cc"
2792 break;
2793
2794 case 394: // max_reclaim_time: "max-reclaim-time" ":" "integer"
2795#line 1598 "dhcp6_parser.yy"
2796 {
2797 ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location));
2798 ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2799 ctx.stack_.back()->set("max-reclaim-time", value);
2800}
2801#line 2802 "dhcp6_parser.cc"
2802 break;
2803
2804 case 395: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
2805#line 1604 "dhcp6_parser.yy"
2806 {
2807 ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location));
2808 ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
2809 ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
2810}
2811#line 2812 "dhcp6_parser.cc"
2812 break;
2813
2814 case 396: // $@63: %empty
2815#line 1613 "dhcp6_parser.yy"
2816 {
2817 ctx.unique("subnet6", ctx.loc2pos(yystack_[0].location));
2818 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
2819 ctx.stack_.back()->set("subnet6", l);
2820 ctx.stack_.push_back(l);
2821 ctx.enter(ctx.SUBNET6);
2822}
2823#line 2824 "dhcp6_parser.cc"
2824 break;
2825
2826 case 397: // subnet6_list: "subnet6" $@63 ":" "[" subnet6_list_content "]"
2827#line 1619 "dhcp6_parser.yy"
2828 {
2829 ctx.stack_.pop_back();
2830 ctx.leave();
2831}
2832#line 2833 "dhcp6_parser.cc"
2833 break;
2834
2835 case 402: // not_empty_subnet6_list: not_empty_subnet6_list ","
2836#line 1633 "dhcp6_parser.yy"
2837 {
2838 ctx.warnAboutExtraCommas(yystack_[0].location);
2839 }
2840#line 2841 "dhcp6_parser.cc"
2841 break;
2842
2843 case 403: // $@64: %empty
2844#line 1642 "dhcp6_parser.yy"
2845 {
2846 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
2847 ctx.stack_.back()->add(m);
2848 ctx.stack_.push_back(m);
2849}
2850#line 2851 "dhcp6_parser.cc"
2851 break;
2852
2853 case 404: // subnet6: "{" $@64 subnet6_params "}"
2854#line 1646 "dhcp6_parser.yy"
2855 {
2856 // Once we reached this place, the subnet parsing is now complete.
2857 // If we want to, we can implement default values here.
2858 // In particular we can do things like this:
2859 // if (!ctx.stack_.back()->get("interface")) {
2860 // ctx.stack_.back()->set("interface", StringElement("loopback"));
2861 // }
2862 //
2863 // We can also stack up one level (Dhcp6) and copy over whatever
2864 // global parameters we want to:
2865 // if (!ctx.stack_.back()->get("renew-timer")) {
2866 // ElementPtr renew = ctx_stack_[...].get("renew-timer");
2867 // if (renew) {
2868 // ctx.stack_.back()->set("renew-timer", renew);
2869 // }
2870 // }
2871
2872 // The subnet subnet6 parameter is required
2873 ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
2874 ctx.stack_.pop_back();
2875}
2876#line 2877 "dhcp6_parser.cc"
2877 break;
2878
2879 case 405: // $@65: %empty
2880#line 1668 "dhcp6_parser.yy"
2881 {
2882 // Parse the subnet6 list entry map
2883 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
2884 ctx.stack_.push_back(m);
2885}
2886#line 2887 "dhcp6_parser.cc"
2887 break;
2888
2889 case 406: // sub_subnet6: "{" $@65 subnet6_params "}"
2890#line 1672 "dhcp6_parser.yy"
2891 {
2892 // The subnet subnet6 parameter is required
2893 ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
2894 // parsing completed
2895}
2896#line 2897 "dhcp6_parser.cc"
2897 break;
2898
2899 case 409: // subnet6_params: subnet6_params ","
2900#line 1681 "dhcp6_parser.yy"
2901 {
2902 ctx.warnAboutExtraCommas(yystack_[0].location);
2903 }
2904#line 2905 "dhcp6_parser.cc"
2905 break;
2906
2907 case 462: // $@66: %empty
2908#line 1741 "dhcp6_parser.yy"
2909 {
2910 ctx.unique("subnet", ctx.loc2pos(yystack_[0].location));
2911 ctx.enter(ctx.NO_KEYWORD);
2912}
2913#line 2914 "dhcp6_parser.cc"
2914 break;
2915
2916 case 463: // subnet: "subnet" $@66 ":" "constant string"
2917#line 1744 "dhcp6_parser.yy"
2918 {
2919 ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2920 ctx.stack_.back()->set("subnet", subnet);
2921 ctx.leave();
2922}
2923#line 2924 "dhcp6_parser.cc"
2924 break;
2925
2926 case 464: // $@67: %empty
2927#line 1750 "dhcp6_parser.yy"
2928 {
2929 ctx.unique("interface", ctx.loc2pos(yystack_[0].location));
2930 ctx.enter(ctx.NO_KEYWORD);
2931}
2932#line 2933 "dhcp6_parser.cc"
2933 break;
2934
2935 case 465: // interface: "interface" $@67 ":" "constant string"
2936#line 1753 "dhcp6_parser.yy"
2937 {
2938 ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2939 ctx.stack_.back()->set("interface", iface);
2940 ctx.leave();
2941}
2942#line 2943 "dhcp6_parser.cc"
2943 break;
2944
2945 case 466: // $@68: %empty
2946#line 1759 "dhcp6_parser.yy"
2947 {
2948 ctx.unique("interface-id", ctx.loc2pos(yystack_[0].location));
2949 ctx.enter(ctx.NO_KEYWORD);
2950}
2951#line 2952 "dhcp6_parser.cc"
2952 break;
2953
2954 case 467: // interface_id: "interface-id" $@68 ":" "constant string"
2955#line 1762 "dhcp6_parser.yy"
2956 {
2957 ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2958 ctx.stack_.back()->set("interface-id", iface);
2959 ctx.leave();
2960}
2961#line 2962 "dhcp6_parser.cc"
2962 break;
2963
2964 case 468: // $@69: %empty
2965#line 1768 "dhcp6_parser.yy"
2966 {
2967 ctx.unique("client-class", ctx.loc2pos(yystack_[0].location));
2968 ctx.enter(ctx.NO_KEYWORD);
2969}
2970#line 2971 "dhcp6_parser.cc"
2971 break;
2972
2973 case 469: // client_class: "client-class" $@69 ":" "constant string"
2974#line 1771 "dhcp6_parser.yy"
2975 {
2976 ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
2977 ctx.stack_.back()->set("client-class", cls);
2978 ctx.leave();
2979}
2980#line 2981 "dhcp6_parser.cc"
2981 break;
2982
2983 case 470: // $@70: %empty
2984#line 1778 "dhcp6_parser.yy"
2985 {
2986 ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
2987 ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
2988 ctx.stack_.back()->set("client-classes", c);
2989 ctx.stack_.push_back(c);
2990 ctx.enter(ctx.NO_KEYWORD);
2991}
2992#line 2993 "dhcp6_parser.cc"
2993 break;
2994
2995 case 471: // network_client_classes: "client-classes" $@70 ":" list_strings
2996#line 1784 "dhcp6_parser.yy"
2997 {
2998 ctx.stack_.pop_back();
2999 ctx.leave();
3000}
3001#line 3002 "dhcp6_parser.cc"
3002 break;
3003
3004 case 472: // $@71: %empty
3005#line 1790 "dhcp6_parser.yy"
3006 {
3007 ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location));
3008 ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
3009 ctx.stack_.back()->set("require-client-classes", c);
3010 ctx.stack_.push_back(c);
3011 ctx.enter(ctx.NO_KEYWORD);
3012}
3013#line 3014 "dhcp6_parser.cc"
3014 break;
3015
3016 case 473: // require_client_classes: "require-client-classes" $@71 ":" list_strings
3017#line 1796 "dhcp6_parser.yy"
3018 {
3019 ctx.stack_.pop_back();
3020 ctx.leave();
3021}
3022#line 3023 "dhcp6_parser.cc"
3023 break;
3024
3025 case 474: // $@72: %empty
3026#line 1801 "dhcp6_parser.yy"
3027 {
3028 ctx.unique("evaluate-additional-classes", ctx.loc2pos(yystack_[0].location));
3029 ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
3030 ctx.stack_.back()->set("evaluate-additional-classes", c);
3031 ctx.stack_.push_back(c);
3032 ctx.enter(ctx.NO_KEYWORD);
3033}
3034#line 3035 "dhcp6_parser.cc"
3035 break;
3036
3037 case 475: // evaluate_additional_classes: "evaluate-additional-classes" $@72 ":" list_strings
3038#line 1807 "dhcp6_parser.yy"
3039 {
3040 ctx.stack_.pop_back();
3041 ctx.leave();
3042}
3043#line 3044 "dhcp6_parser.cc"
3044 break;
3045
3046 case 476: // reservations_global: "reservations-global" ":" "boolean"
3047#line 1812 "dhcp6_parser.yy"
3048 {
3049 ctx.unique("reservations-global", ctx.loc2pos(yystack_[2].location));
3050 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
3051 ctx.stack_.back()->set("reservations-global", b);
3052}
3053#line 3054 "dhcp6_parser.cc"
3054 break;
3055
3056 case 477: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean"
3057#line 1818 "dhcp6_parser.yy"
3058 {
3059 ctx.unique("reservations-in-subnet", ctx.loc2pos(yystack_[2].location));
3060 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
3061 ctx.stack_.back()->set("reservations-in-subnet", b);
3062}
3063#line 3064 "dhcp6_parser.cc"
3064 break;
3065
3066 case 478: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean"
3067#line 1824 "dhcp6_parser.yy"
3068 {
3069 ctx.unique("reservations-out-of-pool", ctx.loc2pos(yystack_[2].location));
3070 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
3071 ctx.stack_.back()->set("reservations-out-of-pool", b);
3072}
3073#line 3074 "dhcp6_parser.cc"
3074 break;
3075
3076 case 479: // id: "id" ":" "integer"
3077#line 1830 "dhcp6_parser.yy"
3078 {
3079 ctx.unique("id", ctx.loc2pos(yystack_[2].location));
3080 ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
3081 ctx.stack_.back()->set("id", id);
3082}
3083#line 3084 "dhcp6_parser.cc"
3084 break;
3085
3086 case 480: // rapid_commit: "rapid-commit" ":" "boolean"
3087#line 1836 "dhcp6_parser.yy"
3088 {
3089 ctx.unique("rapid-commit", ctx.loc2pos(yystack_[2].location));
3090 ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
3091 ctx.stack_.back()->set("rapid-commit", rc);
3092}
3093#line 3094 "dhcp6_parser.cc"
3094 break;
3095
3096 case 481: // $@73: %empty
3097#line 1844 "dhcp6_parser.yy"
3098 {
3099 ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location));
3100 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
3101 ctx.stack_.back()->set("shared-networks", l);
3102 ctx.stack_.push_back(l);
3103 ctx.enter(ctx.SHARED_NETWORK);
3104}
3105#line 3106 "dhcp6_parser.cc"
3106 break;
3107
3108 case 482: // shared_networks: "shared-networks" $@73 ":" "[" shared_networks_content "]"
3109#line 1850 "dhcp6_parser.yy"
3110 {
3111 ctx.stack_.pop_back();
3112 ctx.leave();
3113}
3114#line 3115 "dhcp6_parser.cc"
3115 break;
3116
3117 case 487: // shared_networks_list: shared_networks_list ","
3118#line 1863 "dhcp6_parser.yy"
3119 {
3120 ctx.warnAboutExtraCommas(yystack_[0].location);
3121 }
3122#line 3123 "dhcp6_parser.cc"
3123 break;
3124
3125 case 488: // $@74: %empty
3126#line 1868 "dhcp6_parser.yy"
3127 {
3128 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
3129 ctx.stack_.back()->add(m);
3130 ctx.stack_.push_back(m);
3131}
3132#line 3133 "dhcp6_parser.cc"
3133 break;
3134
3135 case 489: // shared_network: "{" $@74 shared_network_params "}"
3136#line 1872 "dhcp6_parser.yy"
3137 {
3138 ctx.stack_.pop_back();
3139}
3140#line 3141 "dhcp6_parser.cc"
3141 break;
3142
3143 case 492: // shared_network_params: shared_network_params ","
3144#line 1878 "dhcp6_parser.yy"
3145 {
3146 ctx.warnAboutExtraCommas(yystack_[0].location);
3147 }
3148#line 3149 "dhcp6_parser.cc"
3149 break;
3150
3151 case 542: // $@75: %empty
3152#line 1938 "dhcp6_parser.yy"
3153 {
3154 ctx.unique("option-def", ctx.loc2pos(yystack_[0].location));
3155 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
3156 ctx.stack_.back()->set("option-def", l);
3157 ctx.stack_.push_back(l);
3158 ctx.enter(ctx.OPTION_DEF);
3159}
3160#line 3161 "dhcp6_parser.cc"
3161 break;
3162
3163 case 543: // option_def_list: "option-def" $@75 ":" "[" option_def_list_content "]"
3164#line 1944 "dhcp6_parser.yy"
3165 {
3166 ctx.stack_.pop_back();
3167 ctx.leave();
3168}
3169#line 3170 "dhcp6_parser.cc"
3170 break;
3171
3172 case 544: // $@76: %empty
3173#line 1952 "dhcp6_parser.yy"
3174 {
3175 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
3176 ctx.stack_.push_back(m);
3177}
3178#line 3179 "dhcp6_parser.cc"
3179 break;
3180
3181 case 545: // sub_option_def_list: "{" $@76 option_def_list "}"
3182#line 1955 "dhcp6_parser.yy"
3183 {
3184 // parsing completed
3185}
3186#line 3187 "dhcp6_parser.cc"
3187 break;
3188
3189 case 550: // not_empty_option_def_list: not_empty_option_def_list ","
3190#line 1967 "dhcp6_parser.yy"
3191 {
3192 ctx.warnAboutExtraCommas(yystack_[0].location);
3193 }
3194#line 3195 "dhcp6_parser.cc"
3195 break;
3196
3197 case 551: // $@77: %empty
3198#line 1974 "dhcp6_parser.yy"
3199 {
3200 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
3201 ctx.stack_.back()->add(m);
3202 ctx.stack_.push_back(m);
3203}
3204#line 3205 "dhcp6_parser.cc"
3205 break;
3206
3207 case 552: // option_def_entry: "{" $@77 option_def_params "}"
3208#line 1978 "dhcp6_parser.yy"
3209 {
3210 // The name, code and type option def parameters are required.
3211 ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3212 ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3213 ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3214 ctx.stack_.pop_back();
3215}
3216#line 3217 "dhcp6_parser.cc"
3217 break;
3218
3219 case 553: // $@78: %empty
3220#line 1989 "dhcp6_parser.yy"
3221 {
3222 // Parse the option-def list entry map
3223 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
3224 ctx.stack_.push_back(m);
3225}
3226#line 3227 "dhcp6_parser.cc"
3227 break;
3228
3229 case 554: // sub_option_def: "{" $@78 option_def_params "}"
3230#line 1993 "dhcp6_parser.yy"
3231 {
3232 // The name, code and type option def parameters are required.
3233 ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3234 ctx.require("code", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3235 ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3236 // parsing completed
3237}
3238#line 3239 "dhcp6_parser.cc"
3239 break;
3240
3241 case 559: // not_empty_option_def_params: not_empty_option_def_params ","
3242#line 2009 "dhcp6_parser.yy"
3243 {
3244 ctx.warnAboutExtraCommas(yystack_[0].location);
3245 }
3246#line 3247 "dhcp6_parser.cc"
3247 break;
3248
3249 case 571: // code: "code" ":" "integer"
3250#line 2028 "dhcp6_parser.yy"
3251 {
3252 ctx.unique("code", ctx.loc2pos(yystack_[2].location));
3253 ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
3254 ctx.stack_.back()->set("code", code);
3255}
3256#line 3257 "dhcp6_parser.cc"
3257 break;
3258
3259 case 573: // $@79: %empty
3260#line 2036 "dhcp6_parser.yy"
3261 {
3262 ctx.unique("type", ctx.loc2pos(yystack_[0].location));
3263 ctx.enter(ctx.NO_KEYWORD);
3264}
3265#line 3266 "dhcp6_parser.cc"
3266 break;
3267
3268 case 574: // option_def_type: "type" $@79 ":" "constant string"
3269#line 2039 "dhcp6_parser.yy"
3270 {
3271 ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
3272 ctx.stack_.back()->set("type", prf);
3273 ctx.leave();
3274}
3275#line 3276 "dhcp6_parser.cc"
3276 break;
3277
3278 case 575: // $@80: %empty
3279#line 2045 "dhcp6_parser.yy"
3280 {
3281 ctx.unique("record-types", ctx.loc2pos(yystack_[0].location));
3282 ctx.enter(ctx.NO_KEYWORD);
3283}
3284#line 3285 "dhcp6_parser.cc"
3285 break;
3286
3287 case 576: // option_def_record_types: "record-types" $@80 ":" "constant string"
3288#line 2048 "dhcp6_parser.yy"
3289 {
3290 ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
3291 ctx.stack_.back()->set("record-types", rtypes);
3292 ctx.leave();
3293}
3294#line 3295 "dhcp6_parser.cc"
3295 break;
3296
3297 case 577: // $@81: %empty
3298#line 2054 "dhcp6_parser.yy"
3299 {
3300 ctx.unique("space", ctx.loc2pos(yystack_[0].location));
3301 ctx.enter(ctx.NO_KEYWORD);
3302}
3303#line 3304 "dhcp6_parser.cc"
3304 break;
3305
3306 case 578: // space: "space" $@81 ":" "constant string"
3307#line 2057 "dhcp6_parser.yy"
3308 {
3309 ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
3310 ctx.stack_.back()->set("space", space);
3311 ctx.leave();
3312}
3313#line 3314 "dhcp6_parser.cc"
3314 break;
3315
3316 case 580: // $@82: %empty
3317#line 2065 "dhcp6_parser.yy"
3318 {
3319 ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location));
3320 ctx.enter(ctx.NO_KEYWORD);
3321}
3322#line 3323 "dhcp6_parser.cc"
3323 break;
3324
3325 case 581: // option_def_encapsulate: "encapsulate" $@82 ":" "constant string"
3326#line 2068 "dhcp6_parser.yy"
3327 {
3328 ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
3329 ctx.stack_.back()->set("encapsulate", encap);
3330 ctx.leave();
3331}
3332#line 3333 "dhcp6_parser.cc"
3333 break;
3334
3335 case 582: // option_def_array: "array" ":" "boolean"
3336#line 2074 "dhcp6_parser.yy"
3337 {
3338 ctx.unique("array", ctx.loc2pos(yystack_[2].location));
3339 ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
3340 ctx.stack_.back()->set("array", array);
3341}
3342#line 3343 "dhcp6_parser.cc"
3343 break;
3344
3345 case 583: // $@83: %empty
3346#line 2084 "dhcp6_parser.yy"
3347 {
3348 ctx.unique("option-data", ctx.loc2pos(yystack_[0].location));
3349 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
3350 ctx.stack_.back()->set("option-data", l);
3351 ctx.stack_.push_back(l);
3352 ctx.enter(ctx.OPTION_DATA);
3353}
3354#line 3355 "dhcp6_parser.cc"
3355 break;
3356
3357 case 584: // option_data_list: "option-data" $@83 ":" "[" option_data_list_content "]"
3358#line 2090 "dhcp6_parser.yy"
3359 {
3360 ctx.stack_.pop_back();
3361 ctx.leave();
3362}
3363#line 3364 "dhcp6_parser.cc"
3364 break;
3365
3366 case 589: // not_empty_option_data_list: not_empty_option_data_list ","
3367#line 2105 "dhcp6_parser.yy"
3368 {
3369 ctx.warnAboutExtraCommas(yystack_[0].location);
3370 }
3371#line 3372 "dhcp6_parser.cc"
3372 break;
3373
3374 case 590: // $@84: %empty
3375#line 2112 "dhcp6_parser.yy"
3376 {
3377 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
3378 ctx.stack_.back()->add(m);
3379 ctx.stack_.push_back(m);
3380}
3381#line 3382 "dhcp6_parser.cc"
3382 break;
3383
3384 case 591: // option_data_entry: "{" $@84 option_data_params "}"
3385#line 2116 "dhcp6_parser.yy"
3386 {
3388 ctx.stack_.pop_back();
3389}
3390#line 3391 "dhcp6_parser.cc"
3391 break;
3392
3393 case 592: // $@85: %empty
3394#line 2124 "dhcp6_parser.yy"
3395 {
3396 // Parse the option-data list entry map
3397 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
3398 ctx.stack_.push_back(m);
3399}
3400#line 3401 "dhcp6_parser.cc"
3401 break;
3402
3403 case 593: // sub_option_data: "{" $@85 option_data_params "}"
3404#line 2128 "dhcp6_parser.yy"
3405 {
3407 // parsing completed
3408}
3409#line 3410 "dhcp6_parser.cc"
3410 break;
3411
3412 case 598: // not_empty_option_data_params: not_empty_option_data_params ","
3413#line 2144 "dhcp6_parser.yy"
3414 {
3415 ctx.warnAboutExtraCommas(yystack_[0].location);
3416 }
3417#line 3418 "dhcp6_parser.cc"
3418 break;
3419
3420 case 611: // $@86: %empty
3421#line 2166 "dhcp6_parser.yy"
3422 {
3423 ctx.unique("data", ctx.loc2pos(yystack_[0].location));
3424 ctx.enter(ctx.NO_KEYWORD);
3425}
3426#line 3427 "dhcp6_parser.cc"
3427 break;
3428
3429 case 612: // option_data_data: "data" $@86 ":" "constant string"
3430#line 2169 "dhcp6_parser.yy"
3431 {
3432 ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
3433 ctx.stack_.back()->set("data", data);
3434 ctx.leave();
3435}
3436#line 3437 "dhcp6_parser.cc"
3437 break;
3438
3439 case 615: // option_data_csv_format: "csv-format" ":" "boolean"
3440#line 2179 "dhcp6_parser.yy"
3441 {
3442 ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location));
3443 ElementPtr csv(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
3444 ctx.stack_.back()->set("csv-format", csv);
3445}
3446#line 3447 "dhcp6_parser.cc"
3447 break;
3448
3449 case 616: // option_data_always_send: "always-send" ":" "boolean"
3450#line 2185 "dhcp6_parser.yy"
3451 {
3452 ctx.unique("always-send", ctx.loc2pos(yystack_[2].location));
3453 ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
3454 ctx.stack_.back()->set("always-send", persist);
3455}
3456#line 3457 "dhcp6_parser.cc"
3457 break;
3458
3459 case 617: // option_data_never_send: "never-send" ":" "boolean"
3460#line 2191 "dhcp6_parser.yy"
3461 {
3462 ctx.unique("never-send", ctx.loc2pos(yystack_[2].location));
3463 ElementPtr cancel(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
3464 ctx.stack_.back()->set("never-send", cancel);
3465}
3466#line 3467 "dhcp6_parser.cc"
3467 break;
3468
3469 case 618: // $@87: %empty
3470#line 2197 "dhcp6_parser.yy"
3471 {
3472 ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
3473 ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
3474 ctx.stack_.back()->set("client-classes", c);
3475 ctx.stack_.push_back(c);
3476 ctx.enter(ctx.NO_KEYWORD);
3477}
3478#line 3479 "dhcp6_parser.cc"
3479 break;
3480
3481 case 619: // option_data_client_classes: "client-classes" $@87 ":" list_strings
3482#line 2203 "dhcp6_parser.yy"
3483 {
3484 ctx.stack_.pop_back();
3485 ctx.leave();
3486}
3487#line 3488 "dhcp6_parser.cc"
3488 break;
3489
3490 case 620: // $@88: %empty
3491#line 2211 "dhcp6_parser.yy"
3492 {
3493 ctx.unique("pools", ctx.loc2pos(yystack_[0].location));
3494 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
3495 ctx.stack_.back()->set("pools", l);
3496 ctx.stack_.push_back(l);
3497 ctx.enter(ctx.POOLS);
3498}
3499#line 3500 "dhcp6_parser.cc"
3500 break;
3501
3502 case 621: // pools_list: "pools" $@88 ":" "[" pools_list_content "]"
3503#line 2217 "dhcp6_parser.yy"
3504 {
3505 ctx.stack_.pop_back();
3506 ctx.leave();
3507}
3508#line 3509 "dhcp6_parser.cc"
3509 break;
3510
3511 case 626: // not_empty_pools_list: not_empty_pools_list ","
3512#line 2230 "dhcp6_parser.yy"
3513 {
3514 ctx.warnAboutExtraCommas(yystack_[0].location);
3515 }
3516#line 3517 "dhcp6_parser.cc"
3517 break;
3518
3519 case 627: // $@89: %empty
3520#line 2235 "dhcp6_parser.yy"
3521 {
3522 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
3523 ctx.stack_.back()->add(m);
3524 ctx.stack_.push_back(m);
3525}
3526#line 3527 "dhcp6_parser.cc"
3527 break;
3528
3529 case 628: // pool_list_entry: "{" $@89 pool_params "}"
3530#line 2239 "dhcp6_parser.yy"
3531 {
3532 // The pool parameter is required.
3533 ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3534 ctx.stack_.pop_back();
3535}
3536#line 3537 "dhcp6_parser.cc"
3537 break;
3538
3539 case 629: // $@90: %empty
3540#line 2245 "dhcp6_parser.yy"
3541 {
3542 // Parse the pool list entry map
3543 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
3544 ctx.stack_.push_back(m);
3545}
3546#line 3547 "dhcp6_parser.cc"
3547 break;
3548
3549 case 630: // sub_pool6: "{" $@90 pool_params "}"
3550#line 2249 "dhcp6_parser.yy"
3551 {
3552 // The pool parameter is required.
3553 ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3554 // parsing completed
3555}
3556#line 3557 "dhcp6_parser.cc"
3557 break;
3558
3559 case 633: // pool_params: pool_params ","
3560#line 2257 "dhcp6_parser.yy"
3561 {
3562 ctx.warnAboutExtraCommas(yystack_[0].location);
3563 }
3564#line 3565 "dhcp6_parser.cc"
3565 break;
3566
3567 case 658: // $@91: %empty
3568#line 2288 "dhcp6_parser.yy"
3569 {
3570 ctx.unique("pool", ctx.loc2pos(yystack_[0].location));
3571 ctx.enter(ctx.NO_KEYWORD);
3572}
3573#line 3574 "dhcp6_parser.cc"
3574 break;
3575
3576 case 659: // pool_entry: "pool" $@91 ":" "constant string"
3577#line 2291 "dhcp6_parser.yy"
3578 {
3579 ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
3580 ctx.stack_.back()->set("pool", pool);
3581 ctx.leave();
3582}
3583#line 3584 "dhcp6_parser.cc"
3584 break;
3585
3586 case 660: // pool_id: "pool-id" ":" "integer"
3587#line 2297 "dhcp6_parser.yy"
3588 {
3589 ctx.unique("pool-id", ctx.loc2pos(yystack_[2].location));
3590 ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
3591 ctx.stack_.back()->set("pool-id", id);
3592}
3593#line 3594 "dhcp6_parser.cc"
3594 break;
3595
3596 case 661: // $@92: %empty
3597#line 2303 "dhcp6_parser.yy"
3598 {
3599 ctx.enter(ctx.NO_KEYWORD);
3600}
3601#line 3602 "dhcp6_parser.cc"
3602 break;
3603
3604 case 662: // user_context: "user-context" $@92 ":" map_value
3605#line 2305 "dhcp6_parser.yy"
3606 {
3607 ElementPtr parent = ctx.stack_.back();
3608 ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
3609 ConstElementPtr old = parent->get("user-context");
3610
3611 // Handle already existing user context
3612 if (old) {
3613 // Check if it was a comment or a duplicate
3614 if ((old->size() != 1) || !old->contains("comment")) {
3615 std::stringstream msg;
3616 msg << "duplicate user-context entries (previous at "
3617 << old->getPosition().str() << ")";
3618 error(yystack_[3].location, msg.str());
3619 }
3620 // Merge the comment
3621 user_context->set("comment", old->get("comment"));
3622 }
3623
3624 // Set the user context
3625 parent->set("user-context", user_context);
3626 ctx.leave();
3627}
3628#line 3629 "dhcp6_parser.cc"
3629 break;
3630
3631 case 663: // $@93: %empty
3632#line 2328 "dhcp6_parser.yy"
3633 {
3634 ctx.enter(ctx.NO_KEYWORD);
3635}
3636#line 3637 "dhcp6_parser.cc"
3637 break;
3638
3639 case 664: // comment: "comment" $@93 ":" "constant string"
3640#line 2330 "dhcp6_parser.yy"
3641 {
3642 ElementPtr parent = ctx.stack_.back();
3643 ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
3644 ElementPtr comment(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
3645 user_context->set("comment", comment);
3646
3647 // Handle already existing user context
3648 ConstElementPtr old = parent->get("user-context");
3649 if (old) {
3650 // Check for duplicate comment
3651 if (old->contains("comment")) {
3652 std::stringstream msg;
3653 msg << "duplicate user-context/comment entries (previous at "
3654 << old->getPosition().str() << ")";
3655 error(yystack_[3].location, msg.str());
3656 }
3657 // Merge the user context in the comment
3658 merge(user_context, old);
3659 }
3660
3661 // Set the user context
3662 parent->set("user-context", user_context);
3663 ctx.leave();
3664}
3665#line 3666 "dhcp6_parser.cc"
3666 break;
3667
3668 case 665: // $@94: %empty
3669#line 2358 "dhcp6_parser.yy"
3670 {
3671 ctx.unique("pd-pools", ctx.loc2pos(yystack_[0].location));
3672 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
3673 ctx.stack_.back()->set("pd-pools", l);
3674 ctx.stack_.push_back(l);
3675 ctx.enter(ctx.PD_POOLS);
3676}
3677#line 3678 "dhcp6_parser.cc"
3678 break;
3679
3680 case 666: // pd_pools_list: "pd-pools" $@94 ":" "[" pd_pools_list_content "]"
3681#line 2364 "dhcp6_parser.yy"
3682 {
3683 ctx.stack_.pop_back();
3684 ctx.leave();
3685}
3686#line 3687 "dhcp6_parser.cc"
3687 break;
3688
3689 case 671: // not_empty_pd_pools_list: not_empty_pd_pools_list ","
3690#line 2377 "dhcp6_parser.yy"
3691 {
3692 ctx.warnAboutExtraCommas(yystack_[0].location);
3693 }
3694#line 3695 "dhcp6_parser.cc"
3695 break;
3696
3697 case 672: // $@95: %empty
3698#line 2382 "dhcp6_parser.yy"
3699 {
3700 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
3701 ctx.stack_.back()->add(m);
3702 ctx.stack_.push_back(m);
3703}
3704#line 3705 "dhcp6_parser.cc"
3705 break;
3706
3707 case 673: // pd_pool_entry: "{" $@95 pd_pool_params "}"
3708#line 2386 "dhcp6_parser.yy"
3709 {
3710 // The prefix, prefix len and delegated len parameters are required.
3711 ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3712 ctx.require("prefix-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3713 ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3714 ctx.stack_.pop_back();
3715}
3716#line 3717 "dhcp6_parser.cc"
3717 break;
3718
3719 case 674: // $@96: %empty
3720#line 2394 "dhcp6_parser.yy"
3721 {
3722 // Parse the pd-pool list entry map
3723 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
3724 ctx.stack_.push_back(m);
3725}
3726#line 3727 "dhcp6_parser.cc"
3727 break;
3728
3729 case 675: // sub_pd_pool: "{" $@96 pd_pool_params "}"
3730#line 2398 "dhcp6_parser.yy"
3731 {
3732 // The prefix, prefix len and delegated len parameters are required.
3733 ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3734 ctx.require("prefix-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3735 ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
3736 // parsing completed
3737}
3738#line 3739 "dhcp6_parser.cc"
3739 break;
3740
3741 case 678: // pd_pool_params: pd_pool_params ","
3742#line 2408 "dhcp6_parser.yy"
3743 {
3744 ctx.warnAboutExtraCommas(yystack_[0].location);
3745 }
3746#line 3747 "dhcp6_parser.cc"
3747 break;
3748
3749 case 693: // $@97: %empty
3750#line 2429 "dhcp6_parser.yy"
3751 {
3752 ctx.unique("prefix", ctx.loc2pos(yystack_[0].location));
3753 ctx.enter(ctx.NO_KEYWORD);
3754}
3755#line 3756 "dhcp6_parser.cc"
3756 break;
3757
3758 case 694: // pd_prefix: "prefix" $@97 ":" "constant string"
3759#line 2432 "dhcp6_parser.yy"
3760 {
3761 ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
3762 ctx.stack_.back()->set("prefix", prf);
3763 ctx.leave();
3764}
3765#line 3766 "dhcp6_parser.cc"
3766 break;
3767
3768 case 695: // pd_prefix_len: "prefix-len" ":" "integer"
3769#line 2438 "dhcp6_parser.yy"
3770 {
3771 ctx.unique("prefix-len", ctx.loc2pos(yystack_[2].location));
3772 ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
3773 ctx.stack_.back()->set("prefix-len", prf);
3774}
3775#line 3776 "dhcp6_parser.cc"
3776 break;
3777
3778 case 696: // $@98: %empty
3779#line 2444 "dhcp6_parser.yy"
3780 {
3781 ctx.unique("excluded-prefix", ctx.loc2pos(yystack_[0].location));
3782 ctx.enter(ctx.NO_KEYWORD);
3783}
3784#line 3785 "dhcp6_parser.cc"
3785 break;
3786
3787 case 697: // excluded_prefix: "excluded-prefix" $@98 ":" "constant string"
3788#line 2447 "dhcp6_parser.yy"
3789 {
3790 ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
3791 ctx.stack_.back()->set("excluded-prefix", prf);
3792 ctx.leave();
3793}
3794#line 3795 "dhcp6_parser.cc"
3795 break;
3796
3797 case 698: // excluded_prefix_len: "excluded-prefix-len" ":" "integer"
3798#line 2453 "dhcp6_parser.yy"
3799 {
3800 ctx.unique("excluded-prefix-len", ctx.loc2pos(yystack_[2].location));
3801 ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
3802 ctx.stack_.back()->set("excluded-prefix-len", prf);
3803}
3804#line 3805 "dhcp6_parser.cc"
3805 break;
3806
3807 case 699: // pd_delegated_len: "delegated-len" ":" "integer"
3808#line 2459 "dhcp6_parser.yy"
3809 {
3810 ctx.unique("delegated-len", ctx.loc2pos(yystack_[2].location));
3811 ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
3812 ctx.stack_.back()->set("delegated-len", deleg);
3813}
3814#line 3815 "dhcp6_parser.cc"
3815 break;
3816
3817 case 700: // $@99: %empty
3818#line 2468 "dhcp6_parser.yy"
3819 {
3820 ctx.unique("reservations", ctx.loc2pos(yystack_[0].location));
3821 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
3822 ctx.stack_.back()->set("reservations", l);
3823 ctx.stack_.push_back(l);
3824 ctx.enter(ctx.RESERVATIONS);
3825}
3826#line 3827 "dhcp6_parser.cc"
3827 break;
3828
3829 case 701: // reservations: "reservations" $@99 ":" "[" reservations_list "]"
3830#line 2474 "dhcp6_parser.yy"
3831 {
3832 ctx.stack_.pop_back();
3833 ctx.leave();
3834}
3835#line 3836 "dhcp6_parser.cc"
3836 break;
3837
3838 case 706: // not_empty_reservations_list: not_empty_reservations_list ","
3839#line 2485 "dhcp6_parser.yy"
3840 {
3841 ctx.warnAboutExtraCommas(yystack_[0].location);
3842 }
3843#line 3844 "dhcp6_parser.cc"
3844 break;
3845
3846 case 707: // $@100: %empty
3847#line 2490 "dhcp6_parser.yy"
3848 {
3849 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
3850 ctx.stack_.back()->add(m);
3851 ctx.stack_.push_back(m);
3852}
3853#line 3854 "dhcp6_parser.cc"
3854 break;
3855
3856 case 708: // reservation: "{" $@100 reservation_params "}"
3857#line 2494 "dhcp6_parser.yy"
3858 {
3860 ctx.stack_.pop_back();
3861}
3862#line 3863 "dhcp6_parser.cc"
3863 break;
3864
3865 case 709: // $@101: %empty
3866#line 2499 "dhcp6_parser.yy"
3867 {
3868 // Parse the reservations list entry map
3869 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
3870 ctx.stack_.push_back(m);
3871}
3872#line 3873 "dhcp6_parser.cc"
3873 break;
3874
3875 case 710: // sub_reservation: "{" $@101 reservation_params "}"
3876#line 2503 "dhcp6_parser.yy"
3877 {
3879 // parsing completed
3880}
3881#line 3882 "dhcp6_parser.cc"
3882 break;
3883
3884 case 715: // not_empty_reservation_params: not_empty_reservation_params ","
3885#line 2514 "dhcp6_parser.yy"
3886 {
3887 ctx.warnAboutExtraCommas(yystack_[0].location);
3888 }
3889#line 3890 "dhcp6_parser.cc"
3890 break;
3891
3892 case 728: // $@102: %empty
3893#line 2534 "dhcp6_parser.yy"
3894 {
3895 ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location));
3896 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
3897 ctx.stack_.back()->set("ip-addresses", l);
3898 ctx.stack_.push_back(l);
3899 ctx.enter(ctx.NO_KEYWORD);
3900}
3901#line 3902 "dhcp6_parser.cc"
3902 break;
3903
3904 case 729: // ip_addresses: "ip-addresses" $@102 ":" list_strings
3905#line 2540 "dhcp6_parser.yy"
3906 {
3907 ctx.stack_.pop_back();
3908 ctx.leave();
3909}
3910#line 3911 "dhcp6_parser.cc"
3911 break;
3912
3913 case 730: // $@103: %empty
3914#line 2545 "dhcp6_parser.yy"
3915 {
3916 ctx.unique("prefixes", ctx.loc2pos(yystack_[0].location));
3917 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
3918 ctx.stack_.back()->set("prefixes", l);
3919 ctx.stack_.push_back(l);
3920 ctx.enter(ctx.NO_KEYWORD);
3921}
3922#line 3923 "dhcp6_parser.cc"
3923 break;
3924
3925 case 731: // prefixes: "prefixes" $@103 ":" list_strings
3926#line 2551 "dhcp6_parser.yy"
3927 {
3928 ctx.stack_.pop_back();
3929 ctx.leave();
3930}
3931#line 3932 "dhcp6_parser.cc"
3932 break;
3933
3934 case 732: // $@104: %empty
3935#line 2556 "dhcp6_parser.yy"
3936 {
3937 ctx.unique("excluded-prefixes", ctx.loc2pos(yystack_[0].location));
3938 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
3939 ctx.stack_.back()->set("excluded-prefixes", l);
3940 ctx.stack_.push_back(l);
3941 ctx.enter(ctx.NO_KEYWORD);
3942}
3943#line 3944 "dhcp6_parser.cc"
3944 break;
3945
3946 case 733: // excluded_prefixes: "excluded-prefixes" $@104 ":" list_strings
3947#line 2562 "dhcp6_parser.yy"
3948 {
3949 ctx.stack_.pop_back();
3950 ctx.leave();
3951}
3952#line 3953 "dhcp6_parser.cc"
3953 break;
3954
3955 case 734: // $@105: %empty
3956#line 2567 "dhcp6_parser.yy"
3957 {
3958 ctx.unique("duid", ctx.loc2pos(yystack_[0].location));
3959 ctx.enter(ctx.NO_KEYWORD);
3960}
3961#line 3962 "dhcp6_parser.cc"
3962 break;
3963
3964 case 735: // duid: "duid" $@105 ":" "constant string"
3965#line 2570 "dhcp6_parser.yy"
3966 {
3967 ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
3968 ctx.stack_.back()->set("duid", d);
3969 ctx.leave();
3970}
3971#line 3972 "dhcp6_parser.cc"
3972 break;
3973
3974 case 736: // $@106: %empty
3975#line 2576 "dhcp6_parser.yy"
3976 {
3977 ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location));
3978 ctx.enter(ctx.NO_KEYWORD);
3979}
3980#line 3981 "dhcp6_parser.cc"
3981 break;
3982
3983 case 737: // hw_address: "hw-address" $@106 ":" "constant string"
3984#line 2579 "dhcp6_parser.yy"
3985 {
3986 ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
3987 ctx.stack_.back()->set("hw-address", hw);
3988 ctx.leave();
3989}
3990#line 3991 "dhcp6_parser.cc"
3991 break;
3992
3993 case 738: // $@107: %empty
3994#line 2585 "dhcp6_parser.yy"
3995 {
3996 ctx.unique("hostname", ctx.loc2pos(yystack_[0].location));
3997 ctx.enter(ctx.NO_KEYWORD);
3998}
3999#line 4000 "dhcp6_parser.cc"
4000 break;
4001
4002 case 739: // hostname: "hostname" $@107 ":" "constant string"
4003#line 2588 "dhcp6_parser.yy"
4004 {
4005 ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4006 ctx.stack_.back()->set("hostname", host);
4007 ctx.leave();
4008}
4009#line 4010 "dhcp6_parser.cc"
4010 break;
4011
4012 case 740: // $@108: %empty
4013#line 2594 "dhcp6_parser.yy"
4014 {
4015 ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location));
4016 ctx.enter(ctx.NO_KEYWORD);
4017}
4018#line 4019 "dhcp6_parser.cc"
4019 break;
4020
4021 case 741: // flex_id_value: "flex-id" $@108 ":" "constant string"
4022#line 2597 "dhcp6_parser.yy"
4023 {
4024 ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4025 ctx.stack_.back()->set("flex-id", hw);
4026 ctx.leave();
4027}
4028#line 4029 "dhcp6_parser.cc"
4029 break;
4030
4031 case 742: // $@109: %empty
4032#line 2603 "dhcp6_parser.yy"
4033 {
4034 ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
4035 ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
4036 ctx.stack_.back()->set("client-classes", c);
4037 ctx.stack_.push_back(c);
4038 ctx.enter(ctx.NO_KEYWORD);
4039}
4040#line 4041 "dhcp6_parser.cc"
4041 break;
4042
4043 case 743: // reservation_client_classes: "client-classes" $@109 ":" list_strings
4044#line 2609 "dhcp6_parser.yy"
4045 {
4046 ctx.stack_.pop_back();
4047 ctx.leave();
4048}
4049#line 4050 "dhcp6_parser.cc"
4050 break;
4051
4052 case 744: // $@110: %empty
4053#line 2617 "dhcp6_parser.yy"
4054 {
4055 ctx.unique("relay", ctx.loc2pos(yystack_[0].location));
4056 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
4057 ctx.stack_.back()->set("relay", m);
4058 ctx.stack_.push_back(m);
4059 ctx.enter(ctx.RELAY);
4060}
4061#line 4062 "dhcp6_parser.cc"
4062 break;
4063
4064 case 745: // relay: "relay" $@110 ":" "{" relay_map "}"
4065#line 2623 "dhcp6_parser.yy"
4066 {
4067 ctx.stack_.pop_back();
4068 ctx.leave();
4069}
4070#line 4071 "dhcp6_parser.cc"
4071 break;
4072
4073 case 747: // $@111: %empty
4074#line 2634 "dhcp6_parser.yy"
4075 {
4076 ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
4077 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
4078 ctx.stack_.back()->set("client-classes", l);
4079 ctx.stack_.push_back(l);
4080 ctx.enter(ctx.CLIENT_CLASSES);
4081}
4082#line 4083 "dhcp6_parser.cc"
4083 break;
4084
4085 case 748: // client_classes: "client-classes" $@111 ":" "[" client_classes_list "]"
4086#line 2640 "dhcp6_parser.yy"
4087 {
4088 ctx.stack_.pop_back();
4089 ctx.leave();
4090}
4091#line 4092 "dhcp6_parser.cc"
4092 break;
4093
4094 case 753: // not_empty_classes_list: not_empty_classes_list ","
4095#line 2651 "dhcp6_parser.yy"
4096 {
4097 ctx.warnAboutExtraCommas(yystack_[0].location);
4098 }
4099#line 4100 "dhcp6_parser.cc"
4100 break;
4101
4102 case 754: // $@112: %empty
4103#line 2656 "dhcp6_parser.yy"
4104 {
4105 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
4106 ctx.stack_.back()->add(m);
4107 ctx.stack_.push_back(m);
4108}
4109#line 4110 "dhcp6_parser.cc"
4110 break;
4111
4112 case 755: // client_class_entry: "{" $@112 client_class_params "}"
4113#line 2660 "dhcp6_parser.yy"
4114 {
4115 // The name client class parameter is required.
4116 ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
4117 ctx.stack_.pop_back();
4118}
4119#line 4120 "dhcp6_parser.cc"
4120 break;
4121
4122 case 760: // not_empty_client_class_params: not_empty_client_class_params ","
4123#line 2672 "dhcp6_parser.yy"
4124 {
4125 ctx.warnAboutExtraCommas(yystack_[0].location);
4126 }
4127#line 4128 "dhcp6_parser.cc"
4128 break;
4129
4130 case 777: // $@113: %empty
4131#line 2696 "dhcp6_parser.yy"
4132 {
4133 ctx.unique("test", ctx.loc2pos(yystack_[0].location));
4134 ctx.enter(ctx.NO_KEYWORD);
4135}
4136#line 4137 "dhcp6_parser.cc"
4137 break;
4138
4139 case 778: // client_class_test: "test" $@113 ":" "constant string"
4140#line 2699 "dhcp6_parser.yy"
4141 {
4142 ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4143 ctx.stack_.back()->set("test", test);
4144 ctx.leave();
4145}
4146#line 4147 "dhcp6_parser.cc"
4147 break;
4148
4149 case 779: // $@114: %empty
4150#line 2705 "dhcp6_parser.yy"
4151 {
4152 ctx.unique("template-test", ctx.loc2pos(yystack_[0].location));
4153 ctx.enter(ctx.NO_KEYWORD);
4154}
4155#line 4156 "dhcp6_parser.cc"
4156 break;
4157
4158 case 780: // client_class_template_test: "template-test" $@114 ":" "constant string"
4159#line 2708 "dhcp6_parser.yy"
4160 {
4161 ElementPtr template_test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4162 ctx.stack_.back()->set("template-test", template_test);
4163 ctx.leave();
4164}
4165#line 4166 "dhcp6_parser.cc"
4166 break;
4167
4168 case 781: // only_if_required: "only-if-required" ":" "boolean"
4169#line 2715 "dhcp6_parser.yy"
4170 {
4171 ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location));
4172 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
4173 ctx.stack_.back()->set("only-if-required", b);
4174}
4175#line 4176 "dhcp6_parser.cc"
4176 break;
4177
4178 case 782: // only_in_additional_list: "only-in-additional-list" ":" "boolean"
4179#line 2721 "dhcp6_parser.yy"
4180 {
4181 ctx.unique("only-in-additional-list", ctx.loc2pos(yystack_[2].location));
4182 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
4183 ctx.stack_.back()->set("only-in-additional-list", b);
4184}
4185#line 4186 "dhcp6_parser.cc"
4186 break;
4187
4188 case 783: // $@115: %empty
4189#line 2730 "dhcp6_parser.yy"
4190 {
4191 ctx.unique("server-id", ctx.loc2pos(yystack_[0].location));
4192 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
4193 ctx.stack_.back()->set("server-id", m);
4194 ctx.stack_.push_back(m);
4195 ctx.enter(ctx.SERVER_ID);
4196}
4197#line 4198 "dhcp6_parser.cc"
4198 break;
4199
4200 case 784: // server_id: "server-id" $@115 ":" "{" server_id_params "}"
4201#line 2736 "dhcp6_parser.yy"
4202 {
4203 // The type parameter is required.
4204 ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
4205 ctx.stack_.pop_back();
4206 ctx.leave();
4207}
4208#line 4209 "dhcp6_parser.cc"
4209 break;
4210
4211 case 787: // server_id_params: server_id_params ","
4212#line 2745 "dhcp6_parser.yy"
4213 {
4214 ctx.warnAboutExtraCommas(yystack_[0].location);
4215 }
4216#line 4217 "dhcp6_parser.cc"
4217 break;
4218
4219 case 797: // $@116: %empty
4220#line 2761 "dhcp6_parser.yy"
4221 {
4222 ctx.unique("type", ctx.loc2pos(yystack_[0].location));
4223 ctx.enter(ctx.DUID_TYPE);
4224}
4225#line 4226 "dhcp6_parser.cc"
4226 break;
4227
4228 case 798: // server_id_type: "type" $@116 ":" duid_type
4229#line 2764 "dhcp6_parser.yy"
4230 {
4231 ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
4232 ctx.leave();
4233}
4234#line 4235 "dhcp6_parser.cc"
4235 break;
4236
4237 case 799: // duid_type: "LLT"
4238#line 2769 "dhcp6_parser.yy"
4239 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
4240#line 4241 "dhcp6_parser.cc"
4241 break;
4242
4243 case 800: // duid_type: "EN"
4244#line 2770 "dhcp6_parser.yy"
4245 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
4246#line 4247 "dhcp6_parser.cc"
4247 break;
4248
4249 case 801: // duid_type: "LL"
4250#line 2771 "dhcp6_parser.yy"
4251 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
4252#line 4253 "dhcp6_parser.cc"
4253 break;
4254
4255 case 802: // htype: "htype" ":" "integer"
4256#line 2774 "dhcp6_parser.yy"
4257 {
4258 ctx.unique("htype", ctx.loc2pos(yystack_[2].location));
4259 ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
4260 ctx.stack_.back()->set("htype", htype);
4261}
4262#line 4263 "dhcp6_parser.cc"
4263 break;
4264
4265 case 803: // $@117: %empty
4266#line 2780 "dhcp6_parser.yy"
4267 {
4268 ctx.unique("identifier", ctx.loc2pos(yystack_[0].location));
4269 ctx.enter(ctx.NO_KEYWORD);
4270}
4271#line 4272 "dhcp6_parser.cc"
4272 break;
4273
4274 case 804: // identifier: "identifier" $@117 ":" "constant string"
4275#line 2783 "dhcp6_parser.yy"
4276 {
4277 ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4278 ctx.stack_.back()->set("identifier", id);
4279 ctx.leave();
4280}
4281#line 4282 "dhcp6_parser.cc"
4282 break;
4283
4284 case 805: // time: "time" ":" "integer"
4285#line 2789 "dhcp6_parser.yy"
4286 {
4287 ctx.unique("time", ctx.loc2pos(yystack_[2].location));
4288 ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
4289 ctx.stack_.back()->set("time", time);
4290}
4291#line 4292 "dhcp6_parser.cc"
4292 break;
4293
4294 case 806: // enterprise_id: "enterprise-id" ":" "integer"
4295#line 2795 "dhcp6_parser.yy"
4296 {
4297 ctx.unique("enterprise-id", ctx.loc2pos(yystack_[2].location));
4298 ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
4299 ctx.stack_.back()->set("enterprise-id", time);
4300}
4301#line 4302 "dhcp6_parser.cc"
4302 break;
4303
4304 case 807: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
4305#line 2803 "dhcp6_parser.yy"
4306 {
4307 ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location));
4308 ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
4309 ctx.stack_.back()->set("dhcp4o6-port", time);
4310}
4311#line 4312 "dhcp6_parser.cc"
4312 break;
4313
4314 case 808: // $@118: %empty
4315#line 2811 "dhcp6_parser.yy"
4316 {
4317 ctx.unique("control-sockets", ctx.loc2pos(yystack_[0].location));
4318 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
4319 ctx.stack_.back()->set("control-sockets", l);
4320 ctx.stack_.push_back(l);
4321 ctx.enter(ctx.CONTROL_SOCKETS);
4322}
4323#line 4324 "dhcp6_parser.cc"
4324 break;
4325
4326 case 809: // control_sockets: "control-sockets" $@118 ":" "[" control_socket_list "]"
4327#line 2817 "dhcp6_parser.yy"
4328 {
4329 ctx.stack_.pop_back();
4330 ctx.leave();
4331}
4332#line 4333 "dhcp6_parser.cc"
4333 break;
4334
4335 case 814: // not_empty_control_socket_list: not_empty_control_socket_list ","
4336#line 2828 "dhcp6_parser.yy"
4337 {
4338 ctx.warnAboutExtraCommas(yystack_[0].location);
4339 }
4340#line 4341 "dhcp6_parser.cc"
4341 break;
4342
4343 case 815: // $@119: %empty
4344#line 2833 "dhcp6_parser.yy"
4345 {
4346 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
4347 ctx.stack_.back()->add(m);
4348 ctx.stack_.push_back(m);
4349}
4350#line 4351 "dhcp6_parser.cc"
4351 break;
4352
4353 case 816: // control_socket_entry: "{" $@119 control_socket_params "}"
4354#line 2837 "dhcp6_parser.yy"
4355 {
4356 ctx.stack_.pop_back();
4357}
4358#line 4359 "dhcp6_parser.cc"
4359 break;
4360
4361 case 819: // control_socket_params: control_socket_params ","
4362#line 2843 "dhcp6_parser.yy"
4363 {
4364 ctx.warnAboutExtraCommas(yystack_[0].location);
4365 }
4366#line 4367 "dhcp6_parser.cc"
4367 break;
4368
4369 case 833: // $@120: %empty
4370#line 2863 "dhcp6_parser.yy"
4371 {
4372 ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
4373 ctx.enter(ctx.CONTROL_SOCKET_TYPE);
4374}
4375#line 4376 "dhcp6_parser.cc"
4376 break;
4377
4378 case 834: // control_socket_type: "socket-type" $@120 ":" control_socket_type_value
4379#line 2866 "dhcp6_parser.yy"
4380 {
4381 ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
4382 ctx.leave();
4383}
4384#line 4385 "dhcp6_parser.cc"
4385 break;
4386
4387 case 835: // control_socket_type_value: "unix"
4388#line 2872 "dhcp6_parser.yy"
4389 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
4390#line 4391 "dhcp6_parser.cc"
4391 break;
4392
4393 case 836: // control_socket_type_value: "http"
4394#line 2873 "dhcp6_parser.yy"
4395 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); }
4396#line 4397 "dhcp6_parser.cc"
4397 break;
4398
4399 case 837: // control_socket_type_value: "https"
4400#line 2874 "dhcp6_parser.yy"
4401 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("https", ctx.loc2pos(yystack_[0].location))); }
4402#line 4403 "dhcp6_parser.cc"
4403 break;
4404
4405 case 838: // $@121: %empty
4406#line 2877 "dhcp6_parser.yy"
4407 {
4408 ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
4409 ctx.enter(ctx.NO_KEYWORD);
4410}
4411#line 4412 "dhcp6_parser.cc"
4412 break;
4413
4414 case 839: // control_socket_name: "socket-name" $@121 ":" "constant string"
4415#line 2880 "dhcp6_parser.yy"
4416 {
4417 ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4418 ctx.stack_.back()->set("socket-name", name);
4419 ctx.leave();
4420}
4421#line 4422 "dhcp6_parser.cc"
4422 break;
4423
4424 case 840: // $@122: %empty
4425#line 2886 "dhcp6_parser.yy"
4426 {
4427 ctx.unique("socket-address", ctx.loc2pos(yystack_[0].location));
4428 ctx.enter(ctx.NO_KEYWORD);
4429}
4430#line 4431 "dhcp6_parser.cc"
4431 break;
4432
4433 case 841: // control_socket_address: "socket-address" $@122 ":" "constant string"
4434#line 2889 "dhcp6_parser.yy"
4435 {
4436 ElementPtr address(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4437 ctx.stack_.back()->set("socket-address", address);
4438 ctx.leave();
4439}
4440#line 4441 "dhcp6_parser.cc"
4441 break;
4442
4443 case 842: // control_socket_port: "socket-port" ":" "integer"
4444#line 2895 "dhcp6_parser.yy"
4445 {
4446 ctx.unique("socket-port", ctx.loc2pos(yystack_[2].location));
4447 ElementPtr port(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
4448 ctx.stack_.back()->set("socket-port", port);
4449}
4450#line 4451 "dhcp6_parser.cc"
4451 break;
4452
4453 case 843: // cert_required: "cert-required" ":" "boolean"
4454#line 2901 "dhcp6_parser.yy"
4455 {
4456 ctx.unique("cert-required", ctx.loc2pos(yystack_[2].location));
4457 ElementPtr req(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
4458 ctx.stack_.back()->set("cert-required", req);
4459}
4460#line 4461 "dhcp6_parser.cc"
4461 break;
4462
4463 case 844: // $@123: %empty
4464#line 2907 "dhcp6_parser.yy"
4465 {
4466 ctx.unique("http-headers", ctx.loc2pos(yystack_[0].location));
4467 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
4468 ctx.stack_.back()->set("http-headers", l);
4469 ctx.stack_.push_back(l);
4470 ctx.enter(ctx.HTTP_HEADERS);
4471}
4472#line 4473 "dhcp6_parser.cc"
4473 break;
4474
4475 case 845: // http_headers: "http-headers" $@123 ":" "[" http_header_list "]"
4476#line 2913 "dhcp6_parser.yy"
4477 {
4478 ctx.stack_.pop_back();
4479 ctx.leave();
4480}
4481#line 4482 "dhcp6_parser.cc"
4482 break;
4483
4484 case 850: // not_empty_http_header_list: not_empty_http_header_list ","
4485#line 2924 "dhcp6_parser.yy"
4486 {
4487 ctx.warnAboutExtraCommas(yystack_[0].location);
4488 }
4489#line 4490 "dhcp6_parser.cc"
4490 break;
4491
4492 case 851: // $@124: %empty
4493#line 2929 "dhcp6_parser.yy"
4494 {
4495 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
4496 ctx.stack_.back()->add(m);
4497 ctx.stack_.push_back(m);
4498}
4499#line 4500 "dhcp6_parser.cc"
4500 break;
4501
4502 case 852: // http_header: "{" $@124 http_header_params "}"
4503#line 2933 "dhcp6_parser.yy"
4504 {
4505 ctx.stack_.pop_back();
4506}
4507#line 4508 "dhcp6_parser.cc"
4508 break;
4509
4510 case 855: // http_header_params: http_header_params ","
4511#line 2939 "dhcp6_parser.yy"
4512 {
4513 ctx.warnAboutExtraCommas(yystack_[0].location);
4514 }
4515#line 4516 "dhcp6_parser.cc"
4516 break;
4517
4518 case 861: // $@125: %empty
4519#line 2951 "dhcp6_parser.yy"
4520 {
4521 ctx.unique("value", ctx.loc2pos(yystack_[0].location));
4522 ctx.enter(ctx.NO_KEYWORD);
4523}
4524#line 4525 "dhcp6_parser.cc"
4525 break;
4526
4527 case 862: // header_value: "value" $@125 ":" "constant string"
4528#line 2954 "dhcp6_parser.yy"
4529 {
4530 ElementPtr value(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4531 ctx.stack_.back()->set("value", value);
4532 ctx.leave();
4533}
4534#line 4535 "dhcp6_parser.cc"
4535 break;
4536
4537 case 863: // $@126: %empty
4538#line 2962 "dhcp6_parser.yy"
4539 {
4540 ctx.unique("authentication", ctx.loc2pos(yystack_[0].location));
4541 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
4542 ctx.stack_.back()->set("authentication", m);
4543 ctx.stack_.push_back(m);
4544 ctx.enter(ctx.AUTHENTICATION);
4545}
4546#line 4547 "dhcp6_parser.cc"
4547 break;
4548
4549 case 864: // authentication: "authentication" $@126 ":" "{" auth_params "}"
4550#line 2968 "dhcp6_parser.yy"
4551 {
4552 // The type parameter is required
4553 ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
4554 ctx.stack_.pop_back();
4555 ctx.leave();
4556}
4557#line 4558 "dhcp6_parser.cc"
4558 break;
4559
4560 case 867: // auth_params: auth_params ","
4561#line 2977 "dhcp6_parser.yy"
4562 {
4563 ctx.warnAboutExtraCommas(yystack_[0].location);
4564 }
4565#line 4566 "dhcp6_parser.cc"
4566 break;
4567
4568 case 875: // $@127: %empty
4569#line 2991 "dhcp6_parser.yy"
4570 {
4571 ctx.unique("type", ctx.loc2pos(yystack_[0].location));
4572 ctx.enter(ctx.AUTH_TYPE);
4573}
4574#line 4575 "dhcp6_parser.cc"
4575 break;
4576
4577 case 876: // auth_type: "type" $@127 ":" auth_type_value
4578#line 2994 "dhcp6_parser.yy"
4579 {
4580 ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
4581 ctx.leave();
4582}
4583#line 4584 "dhcp6_parser.cc"
4584 break;
4585
4586 case 877: // auth_type_value: "basic"
4587#line 2999 "dhcp6_parser.yy"
4588 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("basic", ctx.loc2pos(yystack_[0].location))); }
4589#line 4590 "dhcp6_parser.cc"
4590 break;
4591
4592 case 878: // $@128: %empty
4593#line 3002 "dhcp6_parser.yy"
4594 {
4595 ctx.unique("realm", ctx.loc2pos(yystack_[0].location));
4596 ctx.enter(ctx.NO_KEYWORD);
4597}
4598#line 4599 "dhcp6_parser.cc"
4599 break;
4600
4601 case 879: // realm: "realm" $@128 ":" "constant string"
4602#line 3005 "dhcp6_parser.yy"
4603 {
4604 ElementPtr realm(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4605 ctx.stack_.back()->set("realm", realm);
4606 ctx.leave();
4607}
4608#line 4609 "dhcp6_parser.cc"
4609 break;
4610
4611 case 880: // $@129: %empty
4612#line 3011 "dhcp6_parser.yy"
4613 {
4614 ctx.unique("directory", ctx.loc2pos(yystack_[0].location));
4615 ctx.enter(ctx.NO_KEYWORD);
4616}
4617#line 4618 "dhcp6_parser.cc"
4618 break;
4619
4620 case 881: // directory: "directory" $@129 ":" "constant string"
4621#line 3014 "dhcp6_parser.yy"
4622 {
4623 ElementPtr directory(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4624 ctx.stack_.back()->set("directory", directory);
4625 ctx.leave();
4626}
4627#line 4628 "dhcp6_parser.cc"
4628 break;
4629
4630 case 882: // $@130: %empty
4631#line 3020 "dhcp6_parser.yy"
4632 {
4633 ctx.unique("clients", ctx.loc2pos(yystack_[0].location));
4634 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
4635 ctx.stack_.back()->set("clients", l);
4636 ctx.stack_.push_back(l);
4637 ctx.enter(ctx.CLIENTS);
4638}
4639#line 4640 "dhcp6_parser.cc"
4640 break;
4641
4642 case 883: // clients: "clients" $@130 ":" "[" clients_list "]"
4643#line 3026 "dhcp6_parser.yy"
4644 {
4645 ctx.stack_.pop_back();
4646 ctx.leave();
4647}
4648#line 4649 "dhcp6_parser.cc"
4649 break;
4650
4651 case 888: // not_empty_clients_list: not_empty_clients_list ","
4652#line 3037 "dhcp6_parser.yy"
4653 {
4654 ctx.warnAboutExtraCommas(yystack_[0].location);
4655 }
4656#line 4657 "dhcp6_parser.cc"
4657 break;
4658
4659 case 889: // $@131: %empty
4660#line 3042 "dhcp6_parser.yy"
4661 {
4662 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
4663 ctx.stack_.back()->add(m);
4664 ctx.stack_.push_back(m);
4665}
4666#line 4667 "dhcp6_parser.cc"
4667 break;
4668
4669 case 890: // basic_auth: "{" $@131 clients_params "}"
4670#line 3046 "dhcp6_parser.yy"
4671 {
4672 ctx.stack_.pop_back();
4673}
4674#line 4675 "dhcp6_parser.cc"
4675 break;
4676
4677 case 893: // clients_params: clients_params ","
4678#line 3052 "dhcp6_parser.yy"
4679 {
4680 ctx.warnAboutExtraCommas(yystack_[0].location);
4681 }
4682#line 4683 "dhcp6_parser.cc"
4683 break;
4684
4685 case 901: // $@132: %empty
4686#line 3066 "dhcp6_parser.yy"
4687 {
4688 ctx.unique("user-file", ctx.loc2pos(yystack_[0].location));
4689 ctx.enter(ctx.NO_KEYWORD);
4690}
4691#line 4692 "dhcp6_parser.cc"
4692 break;
4693
4694 case 902: // user_file: "user-file" $@132 ":" "constant string"
4695#line 3069 "dhcp6_parser.yy"
4696 {
4697 ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4698 ctx.stack_.back()->set("user-file", user);
4699 ctx.leave();
4700}
4701#line 4702 "dhcp6_parser.cc"
4702 break;
4703
4704 case 903: // $@133: %empty
4705#line 3077 "dhcp6_parser.yy"
4706 {
4707 ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
4708 ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
4709 ctx.stack_.back()->set("dhcp-queue-control", qc);
4710 ctx.stack_.push_back(qc);
4711 ctx.enter(ctx.DHCP_QUEUE_CONTROL);
4712}
4713#line 4714 "dhcp6_parser.cc"
4714 break;
4715
4716 case 904: // dhcp_queue_control: "dhcp-queue-control" $@133 ":" "{" queue_control_params "}"
4717#line 3083 "dhcp6_parser.yy"
4718 {
4719 // The enable queue parameter is required.
4720 ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
4721 ctx.stack_.pop_back();
4722 ctx.leave();
4723}
4724#line 4725 "dhcp6_parser.cc"
4725 break;
4726
4727 case 907: // queue_control_params: queue_control_params ","
4728#line 3092 "dhcp6_parser.yy"
4729 {
4730 ctx.warnAboutExtraCommas(yystack_[0].location);
4731 }
4732#line 4733 "dhcp6_parser.cc"
4733 break;
4734
4735 case 914: // enable_queue: "enable-queue" ":" "boolean"
4736#line 3105 "dhcp6_parser.yy"
4737 {
4738 ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location));
4739 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
4740 ctx.stack_.back()->set("enable-queue", b);
4741}
4742#line 4743 "dhcp6_parser.cc"
4743 break;
4744
4745 case 915: // $@134: %empty
4746#line 3111 "dhcp6_parser.yy"
4747 {
4748 ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
4749 ctx.enter(ctx.NO_KEYWORD);
4750}
4751#line 4752 "dhcp6_parser.cc"
4752 break;
4753
4754 case 916: // queue_type: "queue-type" $@134 ":" "constant string"
4755#line 3114 "dhcp6_parser.yy"
4756 {
4757 ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4758 ctx.stack_.back()->set("queue-type", qt);
4759 ctx.leave();
4760}
4761#line 4762 "dhcp6_parser.cc"
4762 break;
4763
4764 case 917: // capacity: "capacity" ":" "integer"
4765#line 3120 "dhcp6_parser.yy"
4766 {
4767 ctx.unique("capacity", ctx.loc2pos(yystack_[2].location));
4768 ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
4769 ctx.stack_.back()->set("capacity", c);
4770}
4771#line 4772 "dhcp6_parser.cc"
4772 break;
4773
4774 case 918: // $@135: %empty
4775#line 3126 "dhcp6_parser.yy"
4776 {
4777 ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
4778 ctx.enter(ctx.NO_KEYWORD);
4779}
4780#line 4781 "dhcp6_parser.cc"
4781 break;
4782
4783 case 919: // arbitrary_map_entry: "constant string" $@135 ":" value
4784#line 3129 "dhcp6_parser.yy"
4785 {
4786 ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
4787 ctx.leave();
4788}
4789#line 4790 "dhcp6_parser.cc"
4790 break;
4791
4792 case 920: // $@136: %empty
4793#line 3136 "dhcp6_parser.yy"
4794 {
4795 ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
4796 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
4797 ctx.stack_.back()->set("dhcp-ddns", m);
4798 ctx.stack_.push_back(m);
4799 ctx.enter(ctx.DHCP_DDNS);
4800}
4801#line 4802 "dhcp6_parser.cc"
4802 break;
4803
4804 case 921: // dhcp_ddns: "dhcp-ddns" $@136 ":" "{" dhcp_ddns_params "}"
4805#line 3142 "dhcp6_parser.yy"
4806 {
4807 // The enable updates DHCP DDNS parameter is required.
4808 ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
4809 ctx.stack_.pop_back();
4810 ctx.leave();
4811}
4812#line 4813 "dhcp6_parser.cc"
4813 break;
4814
4815 case 922: // $@137: %empty
4816#line 3149 "dhcp6_parser.yy"
4817 {
4818 // Parse the dhcp-ddns map
4819 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
4820 ctx.stack_.push_back(m);
4821}
4822#line 4823 "dhcp6_parser.cc"
4823 break;
4824
4825 case 923: // sub_dhcp_ddns: "{" $@137 dhcp_ddns_params "}"
4826#line 3153 "dhcp6_parser.yy"
4827 {
4828 // The enable updates DHCP DDNS parameter is required.
4829 ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
4830 // parsing completed
4831}
4832#line 4833 "dhcp6_parser.cc"
4833 break;
4834
4835 case 926: // dhcp_ddns_params: dhcp_ddns_params ","
4836#line 3161 "dhcp6_parser.yy"
4837 {
4838 ctx.warnAboutExtraCommas(yystack_[0].location);
4839 }
4840#line 4841 "dhcp6_parser.cc"
4841 break;
4842
4843 case 938: // enable_updates: "enable-updates" ":" "boolean"
4844#line 3179 "dhcp6_parser.yy"
4845 {
4846 ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location));
4847 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
4848 ctx.stack_.back()->set("enable-updates", b);
4849}
4850#line 4851 "dhcp6_parser.cc"
4851 break;
4852
4853 case 939: // $@138: %empty
4854#line 3185 "dhcp6_parser.yy"
4855 {
4856 ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
4857 ctx.enter(ctx.NO_KEYWORD);
4858}
4859#line 4860 "dhcp6_parser.cc"
4860 break;
4861
4862 case 940: // server_ip: "server-ip" $@138 ":" "constant string"
4863#line 3188 "dhcp6_parser.yy"
4864 {
4865 ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4866 ctx.stack_.back()->set("server-ip", s);
4867 ctx.leave();
4868}
4869#line 4870 "dhcp6_parser.cc"
4870 break;
4871
4872 case 941: // server_port: "server-port" ":" "integer"
4873#line 3194 "dhcp6_parser.yy"
4874 {
4875 ctx.unique("server-port", ctx.loc2pos(yystack_[2].location));
4876 ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
4877 ctx.stack_.back()->set("server-port", i);
4878}
4879#line 4880 "dhcp6_parser.cc"
4880 break;
4881
4882 case 942: // $@139: %empty
4883#line 3200 "dhcp6_parser.yy"
4884 {
4885 ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
4886 ctx.enter(ctx.NO_KEYWORD);
4887}
4888#line 4889 "dhcp6_parser.cc"
4889 break;
4890
4891 case 943: // sender_ip: "sender-ip" $@139 ":" "constant string"
4892#line 3203 "dhcp6_parser.yy"
4893 {
4894 ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
4895 ctx.stack_.back()->set("sender-ip", s);
4896 ctx.leave();
4897}
4898#line 4899 "dhcp6_parser.cc"
4899 break;
4900
4901 case 944: // sender_port: "sender-port" ":" "integer"
4902#line 3209 "dhcp6_parser.yy"
4903 {
4904 ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location));
4905 ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
4906 ctx.stack_.back()->set("sender-port", i);
4907}
4908#line 4909 "dhcp6_parser.cc"
4909 break;
4910
4911 case 945: // max_queue_size: "max-queue-size" ":" "integer"
4912#line 3215 "dhcp6_parser.yy"
4913 {
4914 ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location));
4915 ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
4916 ctx.stack_.back()->set("max-queue-size", i);
4917}
4918#line 4919 "dhcp6_parser.cc"
4919 break;
4920
4921 case 946: // $@140: %empty
4922#line 3221 "dhcp6_parser.yy"
4923 {
4924 ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
4925 ctx.enter(ctx.NCR_PROTOCOL);
4926}
4927#line 4928 "dhcp6_parser.cc"
4928 break;
4929
4930 case 947: // ncr_protocol: "ncr-protocol" $@140 ":" ncr_protocol_value
4931#line 3224 "dhcp6_parser.yy"
4932 {
4933 ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
4934 ctx.leave();
4935}
4936#line 4937 "dhcp6_parser.cc"
4937 break;
4938
4939 case 948: // ncr_protocol_value: "UDP"
4940#line 3230 "dhcp6_parser.yy"
4941 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
4942#line 4943 "dhcp6_parser.cc"
4943 break;
4944
4945 case 949: // ncr_protocol_value: "TCP"
4946#line 3231 "dhcp6_parser.yy"
4947 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
4948#line 4949 "dhcp6_parser.cc"
4949 break;
4950
4951 case 950: // $@141: %empty
4952#line 3234 "dhcp6_parser.yy"
4953 {
4954 ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
4955 ctx.enter(ctx.NCR_FORMAT);
4956}
4957#line 4958 "dhcp6_parser.cc"
4958 break;
4959
4960 case 951: // ncr_format: "ncr-format" $@141 ":" "JSON"
4961#line 3237 "dhcp6_parser.yy"
4962 {
4963 ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
4964 ctx.stack_.back()->set("ncr-format", json);
4965 ctx.leave();
4966}
4967#line 4968 "dhcp6_parser.cc"
4968 break;
4969
4970 case 952: // $@142: %empty
4971#line 3245 "dhcp6_parser.yy"
4972 {
4973 ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
4974 ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
4975 ctx.stack_.back()->set("config-control", i);
4976 ctx.stack_.push_back(i);
4977 ctx.enter(ctx.CONFIG_CONTROL);
4978}
4979#line 4980 "dhcp6_parser.cc"
4980 break;
4981
4982 case 953: // config_control: "config-control" $@142 ":" "{" config_control_params "}"
4983#line 3251 "dhcp6_parser.yy"
4984 {
4985 // No config control params are required
4986 ctx.stack_.pop_back();
4987 ctx.leave();
4988}
4989#line 4990 "dhcp6_parser.cc"
4990 break;
4991
4992 case 954: // $@143: %empty
4993#line 3257 "dhcp6_parser.yy"
4994 {
4995 // Parse the config-control map
4996 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
4997 ctx.stack_.push_back(m);
4998}
4999#line 5000 "dhcp6_parser.cc"
5000 break;
5001
5002 case 955: // sub_config_control: "{" $@143 config_control_params "}"
5003#line 3261 "dhcp6_parser.yy"
5004 {
5005 // No config_control params are required
5006 // parsing completed
5007}
5008#line 5009 "dhcp6_parser.cc"
5009 break;
5010
5011 case 958: // config_control_params: config_control_params ","
5012#line 3269 "dhcp6_parser.yy"
5013 {
5014 ctx.warnAboutExtraCommas(yystack_[0].location);
5015 }
5016#line 5017 "dhcp6_parser.cc"
5017 break;
5018
5019 case 961: // $@144: %empty
5020#line 3279 "dhcp6_parser.yy"
5021 {
5022 ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
5023 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
5024 ctx.stack_.back()->set("config-databases", l);
5025 ctx.stack_.push_back(l);
5026 ctx.enter(ctx.CONFIG_DATABASE);
5027}
5028#line 5029 "dhcp6_parser.cc"
5029 break;
5030
5031 case 962: // config_databases: "config-databases" $@144 ":" "[" database_list "]"
5032#line 3285 "dhcp6_parser.yy"
5033 {
5034 ctx.stack_.pop_back();
5035 ctx.leave();
5036}
5037#line 5038 "dhcp6_parser.cc"
5038 break;
5039
5040 case 963: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
5041#line 3290 "dhcp6_parser.yy"
5042 {
5043 ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location));
5044 ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
5045 ctx.stack_.back()->set("config-fetch-wait-time", value);
5046}
5047#line 5048 "dhcp6_parser.cc"
5048 break;
5049
5050 case 964: // $@145: %empty
5051#line 3298 "dhcp6_parser.yy"
5052 {
5053 ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
5054 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
5055 ctx.stack_.back()->set("loggers", l);
5056 ctx.stack_.push_back(l);
5057 ctx.enter(ctx.LOGGERS);
5058}
5059#line 5060 "dhcp6_parser.cc"
5060 break;
5061
5062 case 965: // loggers: "loggers" $@145 ":" "[" loggers_entries "]"
5063#line 3304 "dhcp6_parser.yy"
5064 {
5065 ctx.stack_.pop_back();
5066 ctx.leave();
5067}
5068#line 5069 "dhcp6_parser.cc"
5069 break;
5070
5071 case 968: // loggers_entries: loggers_entries ","
5072#line 3313 "dhcp6_parser.yy"
5073 {
5074 ctx.warnAboutExtraCommas(yystack_[0].location);
5075 }
5076#line 5077 "dhcp6_parser.cc"
5077 break;
5078
5079 case 969: // $@146: %empty
5080#line 3319 "dhcp6_parser.yy"
5081 {
5082 ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
5083 ctx.stack_.back()->add(l);
5084 ctx.stack_.push_back(l);
5085}
5086#line 5087 "dhcp6_parser.cc"
5087 break;
5088
5089 case 970: // logger_entry: "{" $@146 logger_params "}"
5090#line 3323 "dhcp6_parser.yy"
5091 {
5092 ctx.stack_.pop_back();
5093}
5094#line 5095 "dhcp6_parser.cc"
5095 break;
5096
5097 case 973: // logger_params: logger_params ","
5098#line 3329 "dhcp6_parser.yy"
5099 {
5100 ctx.warnAboutExtraCommas(yystack_[0].location);
5101 }
5102#line 5103 "dhcp6_parser.cc"
5103 break;
5104
5105 case 981: // debuglevel: "debuglevel" ":" "integer"
5106#line 3343 "dhcp6_parser.yy"
5107 {
5108 ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location));
5109 ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
5110 ctx.stack_.back()->set("debuglevel", dl);
5111}
5112#line 5113 "dhcp6_parser.cc"
5113 break;
5114
5115 case 982: // $@147: %empty
5116#line 3349 "dhcp6_parser.yy"
5117 {
5118 ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
5119 ctx.enter(ctx.NO_KEYWORD);
5120}
5121#line 5122 "dhcp6_parser.cc"
5122 break;
5123
5124 case 983: // severity: "severity" $@147 ":" "constant string"
5125#line 3352 "dhcp6_parser.yy"
5126 {
5127 ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
5128 ctx.stack_.back()->set("severity", sev);
5129 ctx.leave();
5130}
5131#line 5132 "dhcp6_parser.cc"
5132 break;
5133
5134 case 984: // $@148: %empty
5135#line 3358 "dhcp6_parser.yy"
5136 {
5137 ctx.unique("output-options", ctx.loc2pos(yystack_[0].location));
5138 ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
5139 ctx.stack_.back()->set("output-options", l);
5140 ctx.stack_.push_back(l);
5141 ctx.enter(ctx.OUTPUT_OPTIONS);
5142}
5143#line 5144 "dhcp6_parser.cc"
5144 break;
5145
5146 case 985: // output_options_list: "output-options" $@148 ":" "[" output_options_list_content "]"
5147#line 3364 "dhcp6_parser.yy"
5148 {
5149 ctx.stack_.pop_back();
5150 ctx.leave();
5151}
5152#line 5153 "dhcp6_parser.cc"
5153 break;
5154
5155 case 988: // output_options_list_content: output_options_list_content ","
5156#line 3371 "dhcp6_parser.yy"
5157 {
5158 ctx.warnAboutExtraCommas(yystack_[0].location);
5159 }
5160#line 5161 "dhcp6_parser.cc"
5161 break;
5162
5163 case 989: // $@149: %empty
5164#line 3376 "dhcp6_parser.yy"
5165 {
5166 ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
5167 ctx.stack_.back()->add(m);
5168 ctx.stack_.push_back(m);
5169}
5170#line 5171 "dhcp6_parser.cc"
5171 break;
5172
5173 case 990: // output_entry: "{" $@149 output_params_list "}"
5174#line 3380 "dhcp6_parser.yy"
5175 {
5176 ctx.stack_.pop_back();
5177}
5178#line 5179 "dhcp6_parser.cc"
5179 break;
5180
5181 case 993: // output_params_list: output_params_list ","
5182#line 3386 "dhcp6_parser.yy"
5183 {
5184 ctx.warnAboutExtraCommas(yystack_[0].location);
5185 }
5186#line 5187 "dhcp6_parser.cc"
5187 break;
5188
5189 case 999: // $@150: %empty
5190#line 3398 "dhcp6_parser.yy"
5191 {
5192 ctx.unique("output", ctx.loc2pos(yystack_[0].location));
5193 ctx.enter(ctx.NO_KEYWORD);
5194}
5195#line 5196 "dhcp6_parser.cc"
5196 break;
5197
5198 case 1000: // output: "output" $@150 ":" "constant string"
5199#line 3401 "dhcp6_parser.yy"
5200 {
5201 ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
5202 ctx.stack_.back()->set("output", sev);
5203 ctx.leave();
5204}
5205#line 5206 "dhcp6_parser.cc"
5206 break;
5207
5208 case 1001: // flush: "flush" ":" "boolean"
5209#line 3407 "dhcp6_parser.yy"
5210 {
5211 ctx.unique("flush", ctx.loc2pos(yystack_[2].location));
5212 ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
5213 ctx.stack_.back()->set("flush", flush);
5214}
5215#line 5216 "dhcp6_parser.cc"
5216 break;
5217
5218 case 1002: // maxsize: "maxsize" ":" "integer"
5219#line 3413 "dhcp6_parser.yy"
5220 {
5221 ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location));
5222 ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
5223 ctx.stack_.back()->set("maxsize", maxsize);
5224}
5225#line 5226 "dhcp6_parser.cc"
5226 break;
5227
5228 case 1003: // maxver: "maxver" ":" "integer"
5229#line 3419 "dhcp6_parser.yy"
5230 {
5231 ctx.unique("maxver", ctx.loc2pos(yystack_[2].location));
5232 ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
5233 ctx.stack_.back()->set("maxver", maxver);
5234}
5235#line 5236 "dhcp6_parser.cc"
5236 break;
5237
5238 case 1004: // $@151: %empty
5239#line 3425 "dhcp6_parser.yy"
5240 {
5241 ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
5242 ctx.enter(ctx.NO_KEYWORD);
5243}
5244#line 5245 "dhcp6_parser.cc"
5245 break;
5246
5247 case 1005: // pattern: "pattern" $@151 ":" "constant string"
5248#line 3428 "dhcp6_parser.yy"
5249 {
5250 ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
5251 ctx.stack_.back()->set("pattern", sev);
5252 ctx.leave();
5253}
5254#line 5255 "dhcp6_parser.cc"
5255 break;
5256
5257 case 1006: // $@152: %empty
5258#line 3434 "dhcp6_parser.yy"
5259 {
5260 ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location));
5261 ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
5262 ctx.stack_.back()->set("compatibility", i);
5263 ctx.stack_.push_back(i);
5264 ctx.enter(ctx.COMPATIBILITY);
5265}
5266#line 5267 "dhcp6_parser.cc"
5267 break;
5268
5269 case 1007: // compatibility: "compatibility" $@152 ":" "{" compatibility_params "}"
5270#line 3440 "dhcp6_parser.yy"
5271 {
5272 ctx.stack_.pop_back();
5273 ctx.leave();
5274}
5275#line 5276 "dhcp6_parser.cc"
5276 break;
5277
5278 case 1010: // compatibility_params: compatibility_params ","
5279#line 3447 "dhcp6_parser.yy"
5280 {
5281 ctx.warnAboutExtraCommas(yystack_[0].location);
5282 }
5283#line 5284 "dhcp6_parser.cc"
5284 break;
5285
5286 case 1013: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
5287#line 3456 "dhcp6_parser.yy"
5288 {
5289 ctx.unique("lenient-option-parsing", ctx.loc2pos(yystack_[2].location));
5290 ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
5291 ctx.stack_.back()->set("lenient-option-parsing", b);
5292}
5293#line 5294 "dhcp6_parser.cc"
5294 break;
5295
5296
5297#line 5298 "dhcp6_parser.cc"
5298
5299 default:
5300 break;
5301 }
5302 }
5303#if YY_EXCEPTIONS
5304 catch (const syntax_error& yyexc)
5305 {
5306 YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
5307 error (yyexc);
5308 YYERROR;
5309 }
5310#endif // YY_EXCEPTIONS
5311 YY_SYMBOL_PRINT ("-> $$ =", yylhs);
5312 yypop_ (yylen);
5313 yylen = 0;
5314
5315 // Shift the result of the reduction.
5316 yypush_ (YY_NULLPTR, YY_MOVE (yylhs));
5317 }
5318 goto yynewstate;
5319
5320
5321 /*--------------------------------------.
5322 | yyerrlab -- here on detecting error. |
5323 `--------------------------------------*/
5324 yyerrlab:
5325 // If not already recovering from an error, report this error.
5326 if (!yyerrstatus_)
5327 {
5328 ++yynerrs_;
5329 context yyctx (*this, yyla);
5330 std::string msg = yysyntax_error_ (yyctx);
5331 error (yyla.location, YY_MOVE (msg));
5332 }
5333
5334
5335 yyerror_range[1].location = yyla.location;
5336 if (yyerrstatus_ == 3)
5337 {
5338 /* If just tried and failed to reuse lookahead token after an
5339 error, discard it. */
5340
5341 // Return failure if at end of input.
5342 if (yyla.kind () == symbol_kind::S_YYEOF)
5343 YYABORT;
5344 else if (!yyla.empty ())
5345 {
5346 yy_destroy_ ("Error: discarding", yyla);
5347 yyla.clear ();
5348 }
5349 }
5350
5351 // Else will try to reuse lookahead token after shifting the error token.
5352 goto yyerrlab1;
5353
5354
5355 /*---------------------------------------------------.
5356 | yyerrorlab -- error raised explicitly by YYERROR. |
5357 `---------------------------------------------------*/
5358 yyerrorlab:
5359 /* Pacify compilers when the user code never invokes YYERROR and
5360 the label yyerrorlab therefore never appears in user code. */
5361 if (false)
5362 YYERROR;
5363
5364 /* Do not reclaim the symbols of the rule whose action triggered
5365 this YYERROR. */
5366 yypop_ (yylen);
5367 yylen = 0;
5368 YY_STACK_PRINT ();
5369 goto yyerrlab1;
5370
5371
5372 /*-------------------------------------------------------------.
5373 | yyerrlab1 -- common code for both syntax error and YYERROR. |
5374 `-------------------------------------------------------------*/
5375 yyerrlab1:
5376 yyerrstatus_ = 3; // Each real token shifted decrements this.
5377 // Pop stack until we find a state that shifts the error token.
5378 for (;;)
5379 {
5380 yyn = yypact_[+yystack_[0].state];
5381 if (!yy_pact_value_is_default_ (yyn))
5382 {
5384 if (0 <= yyn && yyn <= yylast_
5385 && yycheck_[yyn] == symbol_kind::S_YYerror)
5386 {
5387 yyn = yytable_[yyn];
5388 if (0 < yyn)
5389 break;
5390 }
5391 }
5392
5393 // Pop the current state because it cannot handle the error token.
5394 if (yystack_.size () == 1)
5395 YYABORT;
5396
5397 yyerror_range[1].location = yystack_[0].location;
5398 yy_destroy_ ("Error: popping", yystack_[0]);
5399 yypop_ ();
5400 YY_STACK_PRINT ();
5401 }
5402 {
5403 stack_symbol_type error_token;
5404
5405 yyerror_range[2].location = yyla.location;
5406 YYLLOC_DEFAULT (error_token.location, yyerror_range, 2);
5407
5408 // Shift the error token.
5409 error_token.state = state_type (yyn);
5410 yypush_ ("Shifting", YY_MOVE (error_token));
5411 }
5412 goto yynewstate;
5413
5414
5415 /*-------------------------------------.
5416 | yyacceptlab -- YYACCEPT comes here. |
5417 `-------------------------------------*/
5418 yyacceptlab:
5419 yyresult = 0;
5420 goto yyreturn;
5421
5422
5423 /*-----------------------------------.
5424 | yyabortlab -- YYABORT comes here. |
5425 `-----------------------------------*/
5426 yyabortlab:
5427 yyresult = 1;
5428 goto yyreturn;
5429
5430
5431 /*-----------------------------------------------------.
5432 | yyreturn -- parsing is finished, return the result. |
5433 `-----------------------------------------------------*/
5434 yyreturn:
5435 if (!yyla.empty ())
5436 yy_destroy_ ("Cleanup: discarding lookahead", yyla);
5437
5438 /* Do not reclaim the symbols of the rule whose action triggered
5439 this YYABORT or YYACCEPT. */
5440 yypop_ (yylen);
5441 YY_STACK_PRINT ();
5442 while (1 < yystack_.size ())
5443 {
5444 yy_destroy_ ("Cleanup: popping", yystack_[0]);
5445 yypop_ ();
5446 }
5447
5448 return yyresult;
5449 }
5450#if YY_EXCEPTIONS
5451 catch (...)
5452 {
5453 YYCDEBUG << "Exception caught: cleaning lookahead and stack\n";
5454 // Do not try to display the values of the reclaimed symbols,
5455 // as their printers might throw an exception.
5456 if (!yyla.empty ())
5457 yy_destroy_ (YY_NULLPTR, yyla);
5458
5459 while (1 < yystack_.size ())
5460 {
5461 yy_destroy_ (YY_NULLPTR, yystack_[0]);
5462 yypop_ ();
5463 }
5464 throw;
5465 }
5466#endif // YY_EXCEPTIONS
5467 }
5468
5469 void
5471 {
5472 error (yyexc.location, yyexc.what ());
5473 }
5474
5475 /* Return YYSTR after stripping away unnecessary quotes and
5476 backslashes, so that it's suitable for yyerror. The heuristic is
5477 that double-quoting is unnecessary unless the string contains an
5478 apostrophe, a comma, or backslash (other than backslash-backslash).
5479 YYSTR is taken from yytname. */
5480 std::string
5481 Dhcp6Parser::yytnamerr_ (const char *yystr)
5482 {
5483 if (*yystr == '"')
5484 {
5485 std::string yyr;
5486 char const *yyp = yystr;
5487
5488 for (;;)
5489 switch (*++yyp)
5490 {
5491 case '\'':
5492 case ',':
5493 goto do_not_strip_quotes;
5494
5495 case '\\':
5496 if (*++yyp != '\\')
5497 goto do_not_strip_quotes;
5498 else
5499 goto append;
5500
5501 append:
5502 default:
5503 yyr += *yyp;
5504 break;
5505
5506 case '"':
5507 return yyr;
5508 }
5509 do_not_strip_quotes: ;
5510 }
5511
5512 return yystr;
5513 }
5514
5515 std::string
5517 {
5518 return yytnamerr_ (yytname_[yysymbol]);
5519 }
5520
5521
5522
5523 // Dhcp6Parser::context.
5525 : yyparser_ (yyparser)
5526 , yyla_ (yyla)
5527 {}
5528
5529 int
5531 {
5532 // Actual number of expected tokens
5533 int yycount = 0;
5534
5535 const int yyn = yypact_[+yyparser_.yystack_[0].state];
5536 if (!yy_pact_value_is_default_ (yyn))
5537 {
5538 /* Start YYX at -YYN if negative to avoid negative indexes in
5539 YYCHECK. In other words, skip the first -YYN actions for
5540 this state because they are default actions. */
5541 const int yyxbegin = yyn < 0 ? -yyn : 0;
5542 // Stay within bounds of both yycheck and yytname.
5543 const int yychecklim = yylast_ - yyn + 1;
5544 const int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
5545 for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
5546 if (yycheck_[yyx + yyn] == yyx && yyx != symbol_kind::S_YYerror
5547 && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
5548 {
5549 if (!yyarg)
5550 ++yycount;
5551 else if (yycount == yyargn)
5552 return 0;
5553 else
5554 yyarg[yycount++] = YY_CAST (symbol_kind_type, yyx);
5555 }
5556 }
5557
5558 if (yyarg && yycount == 0 && 0 < yyargn)
5559 yyarg[0] = symbol_kind::S_YYEMPTY;
5560 return yycount;
5561 }
5562
5563
5564
5565
5566
5567
5568 int
5569 Dhcp6Parser::yy_syntax_error_arguments_ (const context& yyctx,
5570 symbol_kind_type yyarg[], int yyargn) const
5571 {
5572 /* There are many possibilities here to consider:
5573 - If this state is a consistent state with a default action, then
5574 the only way this function was invoked is if the default action
5575 is an error action. In that case, don't check for expected
5576 tokens because there are none.
5577 - The only way there can be no lookahead present (in yyla) is
5578 if this state is a consistent state with a default action.
5579 Thus, detecting the absence of a lookahead is sufficient to
5580 determine that there is no unexpected or expected token to
5581 report. In that case, just report a simple "syntax error".
5582 - Don't assume there isn't a lookahead just because this state is
5583 a consistent state with a default action. There might have
5584 been a previous inconsistent state, consistent state with a
5585 non-default action, or user semantic action that manipulated
5586 yyla. (However, yyla is currently not documented for users.)
5587 - Of course, the expected token list depends on states to have
5588 correct lookahead information, and it depends on the parser not
5589 to perform extra reductions after fetching a lookahead from the
5590 scanner and before detecting a syntax error. Thus, state merging
5591 (from LALR or IELR) and default reductions corrupt the expected
5592 token list. However, the list is correct for canonical LR with
5593 one exception: it will still contain any token that will not be
5594 accepted due to an error action in a later state.
5595 */
5596
5597 if (!yyctx.lookahead ().empty ())
5598 {
5599 if (yyarg)
5600 yyarg[0] = yyctx.token ();
5601 int yyn = yyctx.expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1);
5602 return yyn + 1;
5603 }
5604 return 0;
5605 }
5606
5607 // Generate an error message.
5608 std::string
5609 Dhcp6Parser::yysyntax_error_ (const context& yyctx) const
5610 {
5611 // Its maximum.
5612 enum { YYARGS_MAX = 5 };
5613 // Arguments of yyformat.
5614 symbol_kind_type yyarg[YYARGS_MAX];
5615 int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX);
5616
5617 char const* yyformat = YY_NULLPTR;
5618 switch (yycount)
5619 {
5620#define YYCASE_(N, S) \
5621 case N: \
5622 yyformat = S; \
5623 break
5624 default: // Avoid compiler warnings.
5625 YYCASE_ (0, YY_("syntax error"));
5626 YYCASE_ (1, YY_("syntax error, unexpected %s"));
5627 YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s"));
5628 YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s"));
5629 YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
5630 YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
5631#undef YYCASE_
5632 }
5633
5634 std::string yyres;
5635 // Argument number.
5636 std::ptrdiff_t yyi = 0;
5637 for (char const* yyp = yyformat; *yyp; ++yyp)
5638 if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
5639 {
5640 yyres += symbol_name (yyarg[yyi++]);
5641 ++yyp;
5642 }
5643 else
5644 yyres += *yyp;
5645 return yyres;
5646 }
5647
5648
5649 const short Dhcp6Parser::yypact_ninf_ = -1471;
5650
5651 const signed char Dhcp6Parser::yytable_ninf_ = -1;
5652
5653 const short
5654 Dhcp6Parser::yypact_[] =
5655 {
5656 663, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5657 -1471, -1471, -1471, -1471, -1471, 127, 35, 57, 147, 166,
5658 184, 190, 191, 193, 200, 220, 247, 260, 264, 309,
5659 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5660 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5661 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5662 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 35, -125,
5663 134, 284, 90, 735, 1188, 306, 631, 98, 153, 648,
5664 -104, 716, 37, -1471, 181, 298, 308, 314, 311, -1471,
5665 82, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 332, 369,
5666 385, 391, 394, 397, 398, 401, 409, 410, 428, 437,
5667 438, 446, 449, -1471, 451, 453, 458, 459, 462, -1471,
5668 -1471, -1471, 463, 469, 478, 480, 485, 497, 498, -1471,
5669 -1471, -1471, 499, -1471, -1471, -1471, -1471, -1471, -1471, 501,
5670 503, 514, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5671 -1471, 515, -1471, -1471, -1471, -1471, -1471, -1471, 517, 519,
5672 524, 526, -1471, -1471, 528, -1471, 96, -1471, -1471, -1471,
5673 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5674 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5675 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5676 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5677 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5678 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5679 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5680 -1471, 529, 531, 535, 537, -1471, 110, -1471, -1471, -1471,
5681 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5682 538, 540, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5683 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5684 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5685 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5686 163, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5687 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5688 -1471, -1471, 541, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5689 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5690 -1471, -1471, -1471, 164, -1471, -1471, -1471, -1471, -1471, -1471,
5691 542, -1471, 544, 546, -1471, -1471, -1471, -1471, -1471, -1471,
5692 -1471, -1471, -1471, 171, -1471, -1471, -1471, -1471, -1471, -1471,
5693 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5694 -1471, -1471, 321, 374, -1471, -1471, -1471, -1471, -1471, -1471,
5695 -1471, -1471, -1471, 380, -1471, -1471, 548, -1471, -1471, -1471,
5696 549, -1471, -1471, 547, 555, -1471, -1471, -1471, -1471, -1471,
5697 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 557, 558,
5698 561, -1471, -1471, -1471, -1471, -1471, 560, 567, -1471, -1471,
5699 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5700 -1471, -1471, 177, -1471, -1471, -1471, 568, -1471, 570, -1471,
5701 571, 572, -1471, -1471, -1471, -1471, -1471, 180, -1471, -1471,
5702 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 574, 187,
5703 -1471, -1471, -1471, -1471, 35, 35, -1471, -47, 577, -1471,
5704 -1471, 581, 582, 584, 586, 587, 588, 351, 353, 354,
5705 356, 357, 358, 361, 362, 363, 328, 366, 367, 370,
5706 368, 376, 610, 379, 381, 382, 388, 389, 620, 621,
5707 624, 392, 395, 386, 396, 400, 403, 402, 636, 651,
5708 652, 415, 656, 658, 662, 664, 665, 666, 408, 427,
5709 429, 670, 671, 672, 675, 677, 678, 681, 682, 683,
5710 447, 686, 688, 689, 692, 693, 695, 456, 460, 461,
5711 464, 698, 699, -1471, 284, -1471, 706, 467, 468, 471,
5712 473, 90, -1471, 712, 713, 715, 717, 718, 487, 476,
5713 726, 727, 729, 730, 731, 735, -1471, 739, 507, 1188,
5714 -1471, 746, 509, 749, 512, 513, 306, -1471, 754, 755,
5715 756, 757, 761, 765, 776, 777, -1471, 631, -1471, 778,
5716 779, 545, 782, 816, 817, 585, -1471, 153, 821, 589,
5717 593, 594, 824, -1471, 648, 826, 835, -20, -1471, 596,
5718 837, 601, 841, 604, 605, 844, 845, 716, -1471, 865,
5719 628, 37, -1471, -1471, -1471, 867, 869, 633, 870, 871,
5720 872, 873, 876, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5721 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 641, -1471,
5722 -1471, -1471, -1471, -1471, 56, 643, 644, -1471, -1471, -1471,
5723 -1471, -1471, -1471, -1471, 881, 882, 883, -1471, 667, 668,
5724 344, 899, 898, 679, -1471, -1471, -1471, 901, 902, 914,
5725 915, 916, 918, 919, 920, 921, -1471, 922, 925, 924,
5726 926, 684, 685, -1471, -1471, -1471, -1471, 927, 928, -1471,
5727 929, -1471, -1471, -1471, -1471, -1471, 931, 932, 697, 700,
5728 701, -1471, -1471, 929, 929, 929, 702, 933, -1471, 703,
5729 -1471, -1471, 707, -1471, 708, -1471, -1471, -1471, 929, 929,
5730 929, 929, 709, 710, 711, 714, -1471, 719, 720, -1471,
5731 721, 722, 723, -1471, -1471, 724, -1471, -1471, -1471, 929,
5732 -1471, 725, 898, -1471, -1471, 728, -1471, 732, -1471, -1471,
5733 -53, 734, -1471, 942, -1471, -1471, 35, 284, -1471, 37,
5734 90, 186, 186, 946, -1471, -1471, -1471, -1471, -1471, -1471,
5735 -1471, -1471, -1471, 947, 949, 951, -1471, -1471, -1471, -1471,
5736 -1471, -1471, -1471, 952, -1471, -1471, -1471, -101, 35, -42,
5737 34, 960, 961, 963, 129, 93, -37, 964, 288, 716,
5738 -1471, -1471, 965, -170, -1471, -1471, 967, 968, -1471, -1471,
5739 -1471, -1471, -1471, -1471, -1471, 836, -1471, -1471, -1471, -1471,
5740 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5741 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5742 -1471, -1471, 946, -1471, 237, 239, 243, -1471, -1471, -1471,
5743 -1471, 974, 975, 976, 977, 978, 979, 980, 981, 982,
5744 983, -1471, 984, 985, -1471, -1471, -1471, -1471, -1471, -1471,
5745 -1471, -1471, -1471, -1471, -1471, -1471, 252, -1471, -1471, -1471,
5746 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5747 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5748 -1471, -1471, 258, -1471, 986, 987, -1471, -1471, 988, 990,
5749 -1471, -1471, 989, 993, -1471, -1471, 991, 995, -1471, -1471,
5750 994, 996, -1471, -1471, -1471, 54, -1471, -1471, -1471, 997,
5751 -1471, -1471, -1471, 71, -1471, -1471, -1471, -1471, -1471, 272,
5752 -1471, -1471, -1471, -1471, 998, 999, -1471, -1471, 1000, 1002,
5753 -1471, -1471, 1001, 1005, -1471, 1006, 1007, 1008, 1009, 1011,
5754 1012, 294, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5755 -1471, 1014, 1015, 1017, -1471, -1471, -1471, -1471, 301, -1471,
5756 -1471, -1471, -1471, -1471, -1471, 1018, 1021, 1025, -1471, 305,
5757 -1471, -1471, -1471, -1471, -1471, -1471, -1471, 1003, 1029, -1471,
5758 1030, -1471, 1038, -1471, -1471, -1471, 307, -1471, -1471, -1471,
5759 -1471, -1471, 315, -1471, 117, -1471, 1045, -1471, 325, -1471,
5760 -1471, 750, -1471, 1046, 1051, -1471, -1471, 1049, 1057, -1471,
5761 -1471, 1064, 1069, -1471, -1471, -1471, 1073, 1080, 1085, 1086,
5762 759, 847, 856, 857, 858, 861, 862, 863, 866, 868,
5763 1107, 874, 877, 1109, 1111, 1118, 1120, 1121, 1123, 186,
5764 -1471, -1471, 186, -1471, 946, 735, -1471, 947, 153, -1471,
5765 949, 648, -1471, 951, 1452, -1471, 952, -101, -1471, -1471,
5766 -42, -1471, 1125, 1126, 34, -1471, 669, -1471, 960, 631,
5767 -1471, 961, -104, -1471, 963, 891, 892, 896, 903, 930,
5768 943, 129, -1471, 1140, 1156, 958, 970, 973, 93, -1471,
5769 917, 992, 1004, -37, -1471, 281, -1471, 964, 923, 1166,
5770 1010, 1171, 288, -1471, -1471, 53, 965, -1471, 940, -170,
5771 -1471, -1471, 1183, 1216, 1188, -1471, 967, 306, -1471, 968,
5772 -1471, -1471, 1013, 1016, 1026, 1031, -1471, -1471, -1471, -1471,
5773 -1471, -1471, -1471, -1471, -1471, -1471, 436, -1471, -1471, 1032,
5774 1033, 1035, 813, 1036, 1037, -1471, 327, -1471, 329, -1471,
5775 1217, -1471, 1219, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5776 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5777 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5778 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5779 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 371,
5780 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 1039, 1040,
5781 -1471, -1471, -1471, 1220, 1225, -1471, -1471, -1471, -1471, -1471,
5782 -1471, -1471, -1471, -1471, -1471, -1471, 1222, 1228, -1471, -1471,
5783 -1471, -1471, -1471, -1471, -1471, 1224, -1471, 372, -1471, -1471,
5784 -1471, -1471, -1471, -1471, -1471, -1471, 331, 1042, -1471, -1471,
5785 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 1231,
5786 -1471, 1232, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 373,
5787 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5788 1043, -1471, 35, -1471, -1471, 1233, -1471, -1471, -1471, -1471,
5789 -1471, 383, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5790 1047, 384, -1471, 420, -1471, -1471, -1471, -1471, -1471, -1471,
5791 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5792 -1471, -1471, -1471, 1452, -1471, -1471, -1471, 1235, 1237, 1050,
5793 1053, -1471, 669, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5794 1238, 1239, 1240, 1044, 1241, 1054, 1243, 281, -1471, -1471,
5795 -1471, 1244, 1048, 1245, 53, -1471, -1471, -1471, -1471, -1471,
5796 1052, 1058, -1471, -1471, -1471, 336, 1059, 1065, -1471, 1246,
5797 -1471, 1250, -1471, 1251, -1471, 1066, -1471, -1471, -1471, -1471,
5798 -1471, -1471, -1471, -1471, -1471, 137, 1252, 1272, -1471, -1471,
5799 -1471, -1471, -1471, -1471, -1471, -1471, 422, -1471, -1471, -1471,
5800 -1471, -1471, -1471, 1281, 1247, -1471, -1471, 118, -1471, 1254,
5801 1287, 1291, 1305, 137, -1471, -40, -1471, 1252, -130, 1272,
5802 -1471, 1070, 1072, 1077, 1324, -1471, -1471, -1471, -1471, -1471,
5803 -1471, 423, -1471, -1471, -1471, -1471, 1306, 1326, 1328, -1471,
5804 426, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5805 -1471, -1471, 1329, 1331, -40, -1471, 1336, 1089, 1099, 1100,
5806 1339, -130, -1471, -1471, 1338, 1346, -1471, 1112, -1471, 1114,
5807 -1471, -1471, -1471, 1115, -1471, 40, -1471, 1329, -1471, -1471,
5808 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 432, -1471,
5809 -1471, -1471, 1348, 40, -1471, 1117, -1471, -1471
5810 };
5811
5812 const short
5813 Dhcp6Parser::yydefact_[] =
5814 {
5815 0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
5816 20, 22, 24, 26, 28, 0, 0, 0, 0, 0,
5817 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5818 1, 46, 38, 34, 33, 30, 31, 32, 37, 3,
5819 35, 36, 61, 5, 67, 7, 208, 9, 405, 11,
5820 629, 13, 674, 15, 709, 17, 544, 19, 553, 21,
5821 592, 23, 367, 25, 922, 27, 954, 29, 48, 41,
5822 0, 0, 0, 0, 0, 0, 711, 0, 555, 594,
5823 0, 0, 0, 50, 0, 49, 0, 0, 42, 63,
5824 0, 65, 145, 952, 206, 227, 229, 231, 0, 0,
5825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5826 0, 0, 0, 195, 0, 0, 0, 0, 0, 165,
5827 172, 174, 0, 0, 0, 0, 0, 0, 0, 396,
5828 542, 583, 0, 198, 200, 178, 481, 661, 663, 0,
5829 0, 0, 323, 342, 332, 312, 747, 700, 358, 379,
5830 783, 0, 344, 808, 903, 920, 188, 190, 0, 0,
5831 0, 0, 964, 1006, 0, 144, 0, 69, 72, 73,
5832 74, 75, 76, 77, 78, 79, 80, 110, 111, 112,
5833 113, 114, 115, 81, 119, 120, 121, 122, 123, 124,
5834 125, 126, 127, 128, 129, 130, 131, 117, 118, 132,
5835 133, 134, 106, 141, 142, 143, 136, 137, 138, 139,
5836 84, 85, 86, 87, 103, 88, 90, 89, 135, 94,
5837 95, 82, 107, 108, 109, 83, 92, 93, 101, 102,
5838 104, 91, 96, 97, 98, 99, 100, 105, 116, 140,
5839 221, 0, 0, 0, 0, 220, 0, 210, 213, 214,
5840 215, 216, 217, 218, 219, 620, 665, 462, 464, 466,
5841 0, 0, 470, 472, 474, 468, 744, 461, 410, 411,
5842 412, 413, 414, 415, 416, 417, 437, 438, 439, 440,
5843 441, 442, 445, 446, 447, 448, 449, 450, 451, 452,
5844 453, 454, 455, 456, 457, 443, 444, 458, 459, 460,
5845 0, 407, 421, 422, 423, 426, 427, 428, 429, 431,
5846 432, 433, 424, 425, 418, 419, 435, 436, 420, 430,
5847 434, 658, 0, 657, 641, 642, 643, 644, 645, 646,
5848 647, 648, 649, 650, 651, 652, 653, 654, 637, 638,
5849 639, 640, 636, 0, 631, 634, 635, 655, 656, 693,
5850 0, 696, 0, 0, 692, 684, 685, 686, 687, 683,
5851 682, 690, 691, 0, 676, 679, 680, 688, 689, 681,
5852 742, 728, 730, 732, 734, 736, 738, 740, 727, 724,
5853 725, 726, 0, 712, 713, 718, 719, 720, 716, 721,
5854 722, 723, 717, 0, 573, 279, 0, 577, 575, 580,
5855 0, 569, 570, 0, 556, 557, 560, 572, 561, 562,
5856 563, 579, 564, 565, 566, 567, 568, 611, 0, 0,
5857 0, 618, 609, 610, 613, 614, 0, 595, 596, 599,
5858 600, 601, 602, 603, 604, 605, 608, 606, 607, 375,
5859 377, 372, 0, 369, 373, 374, 0, 939, 0, 942,
5860 0, 0, 946, 950, 937, 935, 936, 0, 924, 927,
5861 928, 929, 930, 931, 932, 933, 934, 961, 0, 0,
5862 956, 959, 960, 47, 52, 0, 39, 45, 0, 66,
5863 62, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5870 0, 0, 0, 60, 71, 68, 0, 0, 0, 0,
5871 0, 212, 209, 0, 0, 0, 0, 0, 0, 0,
5872 0, 0, 0, 0, 0, 409, 406, 0, 0, 633,
5873 630, 0, 0, 0, 0, 0, 678, 675, 0, 0,
5874 0, 0, 0, 0, 0, 0, 710, 715, 545, 0,
5875 0, 0, 0, 0, 0, 0, 554, 559, 0, 0,
5876 0, 0, 0, 593, 598, 0, 0, 371, 368, 0,
5877 0, 0, 0, 0, 0, 0, 0, 926, 923, 0,
5878 0, 958, 955, 51, 43, 0, 0, 0, 0, 0,
5879 0, 0, 0, 147, 148, 149, 150, 151, 152, 153,
5880 154, 155, 156, 157, 158, 159, 160, 161, 0, 193,
5881 194, 162, 163, 164, 0, 0, 0, 176, 177, 184,
5882 185, 186, 187, 192, 0, 0, 0, 197, 0, 0,
5883 0, 0, 0, 0, 476, 477, 478, 0, 0, 0,
5884 0, 0, 0, 0, 0, 0, 807, 0, 0, 0,
5885 0, 0, 0, 202, 203, 204, 205, 0, 0, 70,
5886 0, 223, 224, 225, 226, 211, 0, 0, 0, 0,
5887 0, 479, 480, 0, 0, 0, 0, 0, 408, 0,
5888 660, 632, 0, 695, 0, 698, 699, 677, 0, 0,
5889 0, 0, 0, 0, 0, 0, 714, 0, 0, 571,
5890 0, 0, 0, 582, 558, 0, 615, 616, 617, 0,
5891 597, 0, 0, 370, 938, 0, 941, 0, 944, 945,
5892 0, 0, 925, 0, 963, 957, 0, 0, 146, 0,
5893 0, 0, 0, 233, 196, 167, 168, 169, 170, 171,
5894 166, 173, 175, 398, 546, 585, 199, 201, 180, 181,
5895 182, 183, 179, 483, 40, 662, 664, 0, 48, 0,
5896 0, 749, 702, 360, 0, 0, 0, 810, 0, 0,
5897 189, 191, 0, 0, 53, 222, 622, 667, 463, 465,
5898 467, 471, 473, 475, 469, 0, 659, 694, 697, 743,
5899 729, 731, 733, 735, 737, 739, 741, 574, 280, 578,
5900 576, 581, 612, 619, 376, 378, 940, 943, 948, 949,
5901 947, 951, 233, 44, 0, 0, 0, 268, 270, 272,
5902 276, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5903 0, 289, 0, 0, 297, 299, 301, 303, 305, 306,
5904 307, 308, 309, 310, 274, 267, 0, 240, 243, 244,
5905 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
5906 255, 256, 258, 259, 260, 261, 257, 262, 263, 264,
5907 265, 266, 0, 238, 0, 234, 235, 403, 0, 399,
5908 400, 551, 0, 547, 548, 590, 0, 586, 587, 488,
5909 0, 484, 485, 330, 331, 0, 325, 328, 329, 0,
5910 340, 341, 337, 0, 334, 338, 339, 319, 321, 0,
5911 314, 317, 318, 754, 0, 750, 751, 707, 0, 703,
5912 704, 365, 0, 361, 362, 0, 0, 0, 0, 0,
5913 0, 0, 381, 384, 385, 386, 387, 388, 389, 797,
5914 803, 0, 0, 0, 796, 793, 794, 795, 0, 785,
5915 788, 791, 789, 790, 792, 0, 0, 0, 354, 0,
5916 346, 349, 350, 351, 352, 353, 815, 0, 811, 812,
5917 0, 915, 0, 918, 911, 912, 0, 905, 908, 909,
5918 910, 913, 0, 969, 0, 966, 0, 1012, 0, 1008,
5919 1011, 55, 627, 0, 623, 624, 672, 0, 668, 669,
5920 746, 0, 0, 64, 953, 207, 0, 0, 0, 0,
5921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5922 0, 0, 0, 0, 0, 0, 0, 0, 0, 242,
5923 228, 230, 0, 232, 237, 0, 397, 402, 555, 543,
5924 550, 594, 584, 589, 0, 482, 487, 327, 324, 343,
5925 336, 333, 0, 0, 316, 313, 756, 748, 753, 711,
5926 701, 706, 0, 359, 364, 0, 0, 0, 0, 0,
5927 0, 383, 380, 0, 0, 0, 0, 0, 787, 784,
5928 0, 0, 0, 348, 345, 0, 809, 814, 0, 0,
5929 0, 0, 907, 904, 921, 0, 968, 965, 0, 1010,
5930 1007, 57, 0, 56, 0, 621, 626, 0, 666, 671,
5931 745, 962, 0, 0, 0, 0, 278, 281, 282, 283,
5932 284, 285, 286, 287, 296, 288, 0, 294, 295, 0,
5933 0, 0, 0, 0, 0, 241, 0, 236, 0, 401,
5934 0, 549, 0, 588, 541, 508, 509, 510, 512, 513,
5935 514, 497, 498, 517, 518, 519, 520, 521, 522, 525,
5936 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
5937 536, 537, 523, 524, 538, 539, 540, 493, 494, 495,
5938 496, 504, 505, 506, 507, 501, 502, 503, 511, 0,
5939 490, 499, 515, 516, 500, 486, 326, 335, 0, 0,
5940 315, 777, 779, 0, 0, 775, 769, 770, 771, 772,
5941 773, 774, 776, 766, 767, 768, 0, 757, 758, 761,
5942 762, 763, 764, 765, 752, 0, 705, 0, 363, 390,
5943 391, 392, 393, 394, 395, 382, 0, 0, 802, 805,
5944 806, 786, 355, 356, 357, 347, 833, 838, 840, 0,
5945 863, 0, 844, 832, 825, 826, 827, 830, 831, 0,
5946 817, 820, 821, 822, 823, 828, 829, 824, 813, 914,
5947 0, 917, 0, 906, 984, 0, 982, 980, 974, 978,
5948 979, 0, 971, 976, 977, 975, 967, 1013, 1009, 54,
5949 59, 0, 625, 0, 670, 269, 271, 273, 277, 291,
5950 292, 293, 290, 298, 300, 302, 304, 311, 275, 239,
5951 404, 552, 591, 492, 489, 320, 322, 0, 0, 0,
5952 0, 755, 760, 708, 366, 799, 800, 801, 798, 804,
5953 0, 0, 0, 0, 0, 0, 0, 819, 816, 916,
5954 919, 0, 0, 0, 973, 970, 58, 628, 673, 491,
5955 0, 0, 781, 782, 759, 0, 0, 0, 842, 0,
5956 843, 0, 818, 0, 981, 0, 972, 778, 780, 835,
5957 836, 837, 834, 839, 841, 0, 846, 0, 983, 875,
5958 878, 880, 882, 874, 873, 872, 0, 865, 868, 869,
5959 870, 871, 851, 0, 847, 848, 989, 0, 986, 0,
5960 0, 0, 0, 867, 864, 0, 845, 850, 0, 988,
5961 985, 0, 0, 0, 0, 866, 861, 860, 856, 858,
5962 859, 0, 853, 857, 849, 999, 0, 0, 0, 1004,
5963 0, 991, 994, 995, 996, 997, 998, 987, 877, 876,
5964 879, 881, 884, 0, 855, 852, 0, 0, 0, 0,
5965 0, 993, 990, 889, 0, 885, 886, 0, 854, 0,
5966 1001, 1002, 1003, 0, 992, 0, 883, 888, 862, 1000,
5967 1005, 901, 900, 894, 896, 897, 898, 899, 0, 891,
5968 895, 887, 0, 893, 890, 0, 892, 902
5969 };
5970
5971 const short
5972 Dhcp6Parser::yypgoto_[] =
5973 {
5974 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5975 -1471, -1471, -1471, -1471, -1471, -1471, -10, -1471, -643, -1471,
5976 597, -1471, -1471, -1471, -1471, 552, -1471, -253, -1471, -1471,
5977 -1471, -71, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 573,
5978 808, -1471, -1471, -61, -58, -55, -41, -38, -35, -18,
5979 89, 92, 97, 102, 103, 105, 108, -1471, -15, -12,
5980 27, 38, -1471, -1471, 41, -1471, 52, -1471, 55, 109,
5981 62, -1471, -1471, 69, 72, 74, 79, 84, -1471, 86,
5982 -1471, 113, -1471, -1471, -1471, -1471, -1471, 116, -1471, 119,
5983 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 583,
5984 803, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5985 -1471, -1471, -1471, 504, -1471, 283, -1471, -765, 286, -1471,
5986 -1471, -1470, -1471, -1466, -1471, -1463, -1471, -1471, -1471, -1471,
5987 -25, -1471, -804, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
5988 -1471, -1471, -1471, -1471, -1471, -1471, -1099, -1471, -1098, -1471,
5989 -1094, -1471, 188, -1471, -1471, -1471, -1471, -1471, -1471, 268,
5990 -1471, -1471, -1471, -1471, -1471, -1471, -1471, 271, -789, -1471,
5991 -1471, -1471, -1471, 273, -1471, -1471, -1471, -1471, -1471, -1471,
5992 -1471, 241, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 261,
5993 -1471, -1471, -1471, 266, 762, -1471, -1471, -1471, -1471, -1471,
5994 -1471, -1471, 255, -1471, -1471, -1471, -1471, -1471, -1471, -1073,
5995 -1471, -1471, -1471, 296, -1471, -1471, -1471, 302, 806, -1471,
5996 -1471, -1072, -1471, -1071, -1471, -6, -1471, -2, -1471, 64,
5997 -1471, 128, -1471, 120, 123, 126, -1471, -1065, -1471, -1471,
5998 -1471, -1471, 290, -1471, -1471, 25, 1312, -1471, -1471, -1471,
5999 -1471, -1471, 303, -1471, -1471, -1471, 304, -1471, 784, -1471,
6000 -63, -1471, -1471, -1471, -1471, -1471, -60, -1471, -1471, -1471,
6001 -1471, -1471, 22, -1471, -1471, -1471, 310, -1471, -1471, -1471,
6002 317, -1471, 783, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
6003 -1471, -1471, -1471, -1471, -1471, -1471, -1471, 240, -1471, -1471,
6004 -1471, 246, 827, -1471, -1471, -62, -48, -1471, 8, -1471,
6005 -1471, -1471, -1471, -1471, 250, -1471, -1471, -1471, 253, 825,
6006 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -59, -1471, -1471,
6007 -1471, 313, -1471, -1471, -1471, 312, -1471, 815, 578, -1471,
6008 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
6009 -1471, -1471, -1471, -1471, -1060, -1471, -1471, -1471, -1471, -1471,
6010 -1471, 318, -1471, -1471, -1471, 42, -1471, -1471, -1471, -1471,
6011 -1471, -1471, -1471, -1471, -1471, -1471, 289, -1471, -1471, -1471,
6012 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
6013 279, -1471, -1471, 32, -1471, -1471, -1471, -1471, -1471, -1471,
6014 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -29, -1471, -1471,
6015 -74, -1471, -1471, -1471, -1471, -1471, -31, -1471, -1471, -1471,
6016 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -86, -1471,
6017 -1471, -99, -1471, -1471, -1471, -1471, -1471, 297, -1471, -1471,
6018 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 617, 811,
6019 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471,
6020 -1471, -1471, -1471, -1471, -1471, -1471, -1471, 661, 810, -1471,
6021 -1471, -1471, -1471, -1471, -1471, 299, -1471, -1471, 49, -1471,
6022 -1471, -1471, -1471, -1471, -1471, -11, -1471, -1471, -51, -1471,
6023 -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, -1471, 324,
6024 -1471
6025 };
6026
6027 const short
6028 Dhcp6Parser::yydefgoto_[] =
6029 {
6030 0, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6031 24, 25, 26, 27, 28, 29, 83, 39, 40, 69,
6032 805, 87, 88, 41, 68, 84, 85, 825, 1041, 1152,
6033 1153, 895, 43, 70, 90, 478, 91, 45, 71, 166,
6034 167, 168, 481, 169, 170, 171, 172, 173, 174, 175,
6035 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
6036 186, 187, 508, 790, 188, 509, 189, 510, 190, 191,
6037 192, 524, 802, 193, 194, 195, 196, 197, 545, 198,
6038 546, 199, 200, 201, 202, 502, 203, 204, 522, 205,
6039 523, 206, 207, 208, 209, 210, 483, 47, 72, 246,
6040 247, 248, 556, 249, 250, 251, 252, 211, 484, 212,
6041 485, 213, 486, 924, 925, 926, 1082, 896, 897, 898,
6042 1056, 899, 1057, 900, 1058, 901, 1078, 902, 1059, 903,
6043 904, 600, 905, 906, 907, 908, 909, 910, 911, 912,
6044 913, 1070, 1352, 914, 915, 916, 917, 1073, 918, 1074,
6045 919, 1075, 920, 1076, 921, 1077, 214, 534, 959, 960,
6046 961, 1102, 962, 1103, 215, 531, 945, 946, 947, 948,
6047 216, 533, 953, 954, 955, 956, 217, 532, 218, 541,
6048 1009, 1010, 1011, 1012, 1013, 219, 537, 972, 973, 974,
6049 1112, 63, 80, 442, 443, 444, 615, 445, 616, 220,
6050 538, 981, 982, 983, 984, 985, 986, 987, 988, 221,
6051 518, 928, 929, 930, 1085, 49, 73, 300, 301, 302,
6052 565, 303, 566, 304, 567, 305, 573, 306, 570, 307,
6053 571, 308, 572, 222, 223, 224, 312, 313, 225, 525,
6054 940, 941, 942, 1094, 1239, 1240, 226, 519, 57, 77,
6055 932, 933, 934, 1088, 59, 78, 403, 404, 405, 406,
6056 407, 408, 409, 599, 410, 603, 411, 602, 412, 413,
6057 604, 414, 227, 520, 936, 937, 938, 1091, 61, 79,
6058 426, 427, 428, 429, 430, 608, 431, 432, 433, 434,
6059 435, 436, 612, 315, 563, 1043, 1044, 1045, 1154, 51,
6060 74, 343, 344, 345, 577, 346, 228, 526, 229, 527,
6061 318, 564, 1047, 1048, 1049, 1157, 53, 75, 363, 364,
6062 365, 581, 366, 367, 583, 368, 369, 230, 536, 968,
6063 969, 970, 1109, 55, 76, 382, 383, 384, 385, 589,
6064 386, 590, 387, 591, 388, 592, 389, 593, 390, 594,
6065 391, 595, 392, 588, 320, 574, 1051, 231, 535, 964,
6066 965, 966, 1106, 1266, 1267, 1268, 1269, 1270, 1367, 1271,
6067 1368, 1272, 1273, 232, 539, 998, 999, 1000, 1123, 1378,
6068 1001, 1002, 1124, 1003, 1004, 233, 234, 542, 1017, 1018,
6069 1019, 1135, 1309, 1310, 1311, 1380, 1422, 1312, 1381, 1313,
6070 1382, 1314, 1315, 1316, 1386, 1443, 1444, 1445, 1455, 1471,
6071 1472, 1473, 1493, 1317, 1384, 1436, 1437, 1438, 1449, 1489,
6072 1439, 1450, 1440, 1451, 1441, 1452, 1504, 1505, 1506, 1515,
6073 1528, 1529, 1530, 1532, 235, 543, 1026, 1027, 1028, 1029,
6074 1139, 1030, 1031, 1141, 236, 544, 65, 81, 457, 458,
6075 459, 460, 620, 461, 462, 622, 463, 464, 465, 625,
6076 860, 466, 626, 237, 482, 67, 82, 469, 470, 471,
6077 629, 472, 238, 551, 1034, 1035, 1145, 1331, 1332, 1333,
6078 1334, 1393, 1335, 1391, 1447, 1448, 1458, 1480, 1481, 1482,
6079 1496, 1483, 1484, 1485, 1486, 1500, 239, 552, 1038, 1039,
6080 1040
6081 };
6082
6083 const short
6084 Dhcp6Parser::yytable_[] =
6085 {
6086 165, 245, 267, 323, 354, 378, 38, 401, 422, 441,
6087 454, 995, 268, 360, 319, 269, 424, 922, 270, 425,
6088 952, 1228, 1229, 1230, 253, 316, 347, 361, 380, 1238,
6089 415, 437, 271, 455, 1244, 272, 1304, 1305, 273, 804,
6090 31, 1306, 32, 943, 33, 1523, 439, 440, 395, 1524,
6091 467, 468, 1525, 402, 423, 274, 1036, 1097, 282, 324,
6092 1098, 283, 325, 1523, 42, 868, 869, 1524, 338, 355,
6093 1525, 164, 339, 356, 1100, 137, 138, 1101, 137, 138,
6094 254, 317, 348, 362, 381, 479, 416, 438, 1475, 456,
6095 480, 1476, 1477, 1478, 1479, 314, 342, 359, 379, 554,
6096 284, 326, 943, 950, 555, 951, 240, 241, 242, 243,
6097 244, 285, 327, 561, 286, 328, 86, 989, 562, 804,
6098 1146, 1459, 872, 1147, 1460, 287, 329, 30, 288, 330,
6099 439, 440, 1005, 1006, 1007, 290, 331, 164, 340, 357,
6100 944, 395, 291, 332, 89, 292, 333, 293, 334, 1466,
6101 858, 859, 294, 335, 44, 137, 138, 295, 336, 296,
6102 337, 1429, 275, 957, 958, 276, 575, 579, 137, 138,
6103 277, 576, 580, 46, 586, 278, 279, 394, 280, 587,
6104 617, 281, 289, 627, 130, 618, 297, 473, 628, 298,
6105 631, 48, 299, 309, 635, 632, 310, 50, 52, 311,
6106 54, 164, 341, 358, 164, 137, 138, 56, 137, 138,
6107 867, 868, 869, 870, 871, 872, 873, 874, 875, 876,
6108 877, 878, 879, 880, 881, 1521, 894, 58, 882, 883,
6109 884, 885, 886, 887, 888, 889, 890, 891, 892, 893,
6110 554, 395, 631, 396, 397, 1053, 561, 1054, 398, 399,
6111 400, 1055, 137, 138, 60, 1079, 990, 991, 992, 993,
6112 1080, 1079, 785, 786, 787, 788, 1081, 62, 137, 138,
6113 1324, 64, 1325, 1326, 395, 1104, 34, 35, 36, 37,
6114 1105, 164, 975, 976, 977, 978, 979, 980, 1304, 1305,
6115 1228, 1229, 1230, 1306, 164, 92, 93, 1121, 1238, 94,
6116 789, 474, 1122, 1244, 1128, 95, 96, 97, 1133, 1129,
6117 1142, 952, 475, 1134, 477, 1143, 66, 1186, 627, 1430,
6118 1431, 1432, 476, 1144, 995, 884, 885, 886, 1149, 596,
6119 1079, 164, 575, 1150, 164, 1359, 487, 1360, 98, 99,
6120 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
6121 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6122 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
6123 130, 131, 894, 488, 1363, 617, 1387, 597, 164, 1364,
6124 1374, 1388, 132, 133, 134, 135, 1394, 579, 598, 489,
6125 136, 1395, 1397, 131, 164, 490, 137, 138, 491, 137,
6126 138, 492, 493, 137, 138, 494, 139, 140, 141, 142,
6127 143, 144, 145, 495, 496, 146, 349, 350, 351, 352,
6128 353, 137, 138, 586, 147, 1453, 1494, 164, 1398, 1501,
6129 1454, 1495, 497, 148, 1502, 1533, 149, 262, 263, 264,
6130 1534, 498, 499, 150, 265, 322, 798, 799, 800, 801,
6131 500, 151, 152, 501, 1296, 503, 153, 504, 1297, 1298,
6132 1299, 1300, 505, 506, 633, 634, 507, 511, 1301, 1302,
6133 831, 832, 833, 512, 154, 1349, 1350, 1351, 155, 1020,
6134 1021, 1022, 513, 165, 514, 839, 840, 841, 842, 515,
6135 245, 1375, 1376, 1377, 156, 157, 158, 159, 160, 161,
6136 162, 516, 517, 521, 267, 528, 853, 529, 323, 163,
6137 1419, 1420, 1421, 253, 268, 354, 319, 269, 530, 540,
6138 270, 547, 164, 548, 360, 164, 378, 316, 549, 1023,
6139 550, 347, 553, 557, 271, 558, 401, 272, 361, 559,
6140 273, 560, 568, 422, 569, 578, 582, 164, 584, 380,
6141 585, 424, 601, 605, 425, 606, 454, 274, 607, 415,
6142 282, 609, 610, 283, 324, 611, 437, 325, 613, 254,
6143 614, 652, 619, 338, 621, 623, 624, 339, 630, 455,
6144 355, 636, 402, 317, 356, 637, 638, 348, 639, 423,
6145 640, 641, 642, 643, 362, 644, 645, 314, 646, 647,
6146 648, 342, 284, 649, 650, 381, 326, 651, 359, 653,
6147 654, 656, 655, 285, 658, 416, 286, 327, 657, 379,
6148 328, 659, 438, 660, 664, 665, 661, 287, 666, 669,
6149 288, 329, 662, 663, 330, 456, 667, 290, 670, 668,
6150 674, 331, 671, 340, 291, 672, 673, 292, 332, 293,
6151 357, 333, 684, 334, 294, 675, 676, 677, 335, 295,
6152 678, 296, 679, 336, 275, 337, 680, 276, 681, 682,
6153 683, 685, 277, 686, 687, 688, 689, 278, 279, 690,
6154 280, 691, 692, 281, 289, 693, 694, 695, 297, 696,
6155 697, 298, 698, 699, 299, 309, 700, 701, 310, 702,
6156 703, 311, 707, 708, 704, 705, 165, 341, 706, 245,
6157 710, 711, 712, 713, 358, 714, 716, 717, 131, 718,
6158 722, 719, 720, 98, 99, 100, 101, 102, 103, 721,
6159 723, 724, 253, 725, 726, 727, 395, 417, 396, 397,
6160 418, 419, 420, 729, 994, 1008, 137, 138, 454, 730,
6161 732, 733, 1037, 734, 735, 736, 131, 395, 738, 739,
6162 740, 741, 370, 137, 138, 742, 863, 996, 1014, 743,
6163 1024, 455, 371, 372, 373, 374, 375, 376, 377, 421,
6164 744, 745, 747, 748, 137, 138, 750, 749, 254, 98,
6165 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
6166 109, 110, 111, 1251, 1252, 1253, 1254, 116, 117, 118,
6167 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
6168 751, 752, 131, 997, 1015, 755, 1025, 456, 759, 753,
6169 761, 137, 138, 756, 133, 134, 135, 757, 758, 762,
6170 764, 765, 255, 766, 256, 767, 768, 769, 770, 771,
6171 137, 138, 257, 258, 259, 260, 261, 139, 140, 141,
6172 887, 888, 889, 890, 891, 892, 262, 263, 264, 773,
6173 774, 776, 164, 265, 778, 147, 777, 779, 780, 781,
6174 782, 783, 784, 266, 791, 792, 793, 794, 795, 164,
6175 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
6176 11, 12, 13, 14, 803, 32, 807, 808, 796, 797,
6177 164, 446, 447, 448, 449, 450, 451, 452, 453, 809,
6178 806, 811, 810, 812, 813, 820, 821, 814, 815, 816,
6179 817, 818, 822, 819, 824, 823, 826, 827, 828, 861,
6180 835, 829, 830, 834, 836, 156, 157, 862, 837, 838,
6181 843, 844, 845, 923, 927, 846, 931, 164, 935, 939,
6182 847, 848, 849, 850, 851, 852, 854, 963, 967, 856,
6183 971, 1016, 1033, 857, 1042, 1046, 164, 371, 1060, 1061,
6184 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1071, 1072,
6185 1084, 1151, 1083, 1087, 1086, 1089, 1090, 1092, 1093, 1096,
6186 1095, 1166, 1108, 1099, 1107, 1111, 1110, 1113, 1114, 1136,
6187 1115, 1116, 1117, 1118, 267, 1119, 1120, 401, 1125, 1126,
6188 422, 1127, 1130, 1194, 268, 1131, 319, 269, 424, 1132,
6189 270, 425, 1137, 1195, 1138, 1255, 1196, 316, 378, 1197,
6190 415, 441, 1140, 437, 271, 1256, 1242, 272, 1257, 1148,
6191 273, 1258, 1155, 1198, 1156, 1158, 1199, 994, 1264, 1200,
6192 1159, 380, 1008, 402, 1303, 1259, 423, 274, 1260, 1227,
6193 282, 1261, 1160, 283, 1327, 1161, 1201, 1162, 1037, 1209,
6194 996, 1262, 1210, 323, 1163, 1014, 354, 1307, 1231, 1164,
6195 1165, 1167, 1232, 317, 1024, 360, 416, 1329, 1168, 438,
6196 1170, 1169, 1243, 1171, 1172, 1173, 347, 314, 1174, 361,
6197 1175, 1176, 284, 1179, 1265, 1180, 1241, 381, 1177, 1178,
6198 1328, 1211, 1181, 285, 1182, 1183, 286, 1184, 1263, 1248,
6199 1249, 379, 1212, 1279, 1280, 1213, 997, 287, 1281, 324,
6200 288, 1015, 325, 1308, 1286, 1282, 1214, 290, 338, 1215,
6201 1025, 355, 339, 1330, 291, 356, 1217, 292, 1233, 293,
6202 1287, 1292, 348, 1218, 294, 362, 1219, 1319, 1220, 295,
6203 1320, 296, 1283, 1221, 275, 1322, 342, 276, 1222, 359,
6204 1223, 326, 277, 1202, 1337, 1284, 1203, 278, 279, 1339,
6205 280, 1204, 327, 281, 289, 328, 1205, 1206, 297, 1207,
6206 1288, 298, 1208, 1216, 299, 309, 329, 1224, 310, 330,
6207 1225, 311, 1289, 1226, 1235, 1290, 331, 1236, 340, 1340,
6208 1237, 357, 1234, 332, 1369, 1361, 333, 1362, 334, 1370,
6209 1371, 1372, 1373, 335, 1293, 1383, 1385, 1392, 336, 1400,
6210 337, 1401, 1405, 1406, 1407, 1409, 1294, 1411, 1413, 1415,
6211 1457, 1488, 1321, 1425, 1345, 1426, 1427, 1346, 1461, 1442,
6212 116, 117, 118, 119, 120, 121, 122, 1347, 124, 125,
6213 126, 127, 1348, 1353, 1354, 131, 1355, 1357, 1358, 1446,
6214 1365, 1366, 341, 1379, 1389, 358, 1408, 1456, 1396, 135,
6215 1414, 1462, 1194, 1417, 1402, 1463, 321, 1403, 1410, 1418,
6216 1423, 1255, 1195, 137, 138, 1196, 1424, 1428, 1197, 1464,
6217 1497, 1256, 1390, 1490, 1257, 1242, 1303, 1258, 1491, 262,
6218 263, 264, 1198, 1327, 1264, 1199, 265, 322, 1200, 1492,
6219 1498, 1259, 1499, 1510, 1260, 1507, 1503, 1261, 1227, 1307,
6220 1509, 1511, 1512, 1513, 1516, 1201, 1329, 1262, 1209, 1517,
6221 864, 1210, 1535, 1518, 1433, 1519, 1520, 1231, 1537, 855,
6222 949, 1232, 709, 866, 715, 1185, 1052, 1187, 1246, 1328,
6223 1356, 1243, 1250, 1247, 1295, 1278, 1285, 1434, 1277, 763,
6224 1265, 728, 1433, 1189, 1467, 1241, 1245, 1188, 1399, 393,
6225 1211, 754, 1190, 1191, 1263, 1308, 1342, 760, 156, 157,
6226 1341, 1212, 1330, 1193, 1213, 1434, 731, 1469, 1192, 1344,
6227 1343, 737, 746, 1050, 1404, 1214, 1318, 1291, 1215, 1412,
6228 1508, 1275, 1465, 1467, 1276, 1217, 1274, 1233, 1474, 164,
6229 1468, 1531, 1218, 1435, 1536, 1219, 1032, 1220, 772, 1323,
6230 865, 775, 1221, 1416, 1522, 1336, 1469, 1222, 1487, 1223,
6231 1514, 0, 1202, 0, 0, 1203, 0, 0, 0, 0,
6232 1204, 1435, 1522, 1470, 0, 1205, 1206, 1526, 1207, 1468,
6233 0, 1208, 1216, 1338, 0, 0, 1224, 0, 0, 1225,
6234 0, 0, 1226, 1235, 0, 1526, 1236, 0, 0, 1237,
6235 0, 1234, 0, 0, 0, 0, 0, 0, 0, 0,
6236 0, 0, 1470, 0, 0, 0, 98, 99, 100, 101,
6237 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
6238 0, 0, 0, 1527, 116, 117, 118, 119, 120, 121,
6239 122, 123, 124, 125, 126, 127, 128, 129, 0, 131,
6240 395, 1527, 0, 0, 0, 0, 0, 0, 0, 0,
6241 0, 133, 134, 135, 0, 0, 0, 0, 0, 0,
6242 0, 0, 0, 0, 0, 0, 0, 137, 138, 0,
6243 258, 259, 0, 261, 139, 140, 141, 0, 0, 0,
6244 0, 0, 0, 262, 263, 264, 0, 0, 0, 0,
6245 265, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6246 266, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6247 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6252 0, 0, 156, 157, 0, 0, 0, 0, 0, 0,
6253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6254 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6255 0, 0, 0, 164
6256 };
6257
6258 const short
6259 Dhcp6Parser::yycheck_[] =
6260 {
6261 71, 72, 73, 74, 75, 76, 16, 78, 79, 80,
6262 81, 815, 73, 75, 73, 73, 79, 782, 73, 79,
6263 809, 1094, 1094, 1094, 72, 73, 74, 75, 76, 1094,
6264 78, 79, 73, 81, 1094, 73, 1135, 1135, 73, 682,
6265 5, 1135, 7, 144, 9, 1515, 150, 151, 88, 1515,
6266 13, 14, 1515, 78, 79, 73, 226, 3, 73, 74,
6267 6, 73, 74, 1533, 7, 25, 26, 1533, 74, 75,
6268 1533, 241, 74, 75, 3, 115, 116, 6, 115, 116,
6269 72, 73, 74, 75, 76, 3, 78, 79, 218, 81,
6270 8, 221, 222, 223, 224, 73, 74, 75, 76, 3,
6271 73, 74, 144, 145, 8, 147, 16, 17, 18, 19,
6272 20, 73, 74, 3, 73, 74, 241, 24, 8, 762,
6273 3, 3, 29, 6, 6, 73, 74, 0, 73, 74,
6274 150, 151, 169, 170, 171, 73, 74, 241, 74, 75,
6275 241, 88, 73, 74, 10, 73, 74, 73, 74, 189,
6276 203, 204, 73, 74, 7, 115, 116, 73, 74, 73,
6277 74, 24, 73, 129, 130, 73, 3, 3, 115, 116,
6278 73, 8, 8, 7, 3, 73, 73, 24, 73, 8,
6279 3, 73, 73, 3, 86, 8, 73, 6, 8, 73,
6280 3, 7, 73, 73, 241, 8, 73, 7, 7, 73,
6281 7, 241, 74, 75, 241, 115, 116, 7, 115, 116,
6282 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
6283 34, 35, 36, 37, 38, 185, 186, 7, 42, 43,
6284 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6285 3, 88, 3, 90, 91, 8, 3, 8, 95, 96,
6286 97, 8, 115, 116, 7, 3, 163, 164, 165, 166,
6287 8, 3, 206, 207, 208, 209, 8, 7, 115, 116,
6288 217, 7, 219, 220, 88, 3, 241, 242, 243, 244,
6289 8, 241, 153, 154, 155, 156, 157, 158, 1387, 1387,
6290 1363, 1363, 1363, 1387, 241, 11, 12, 3, 1363, 15,
6291 244, 3, 8, 1363, 3, 21, 22, 23, 3, 8,
6292 3, 1100, 4, 8, 3, 8, 7, 1082, 3, 182,
6293 183, 184, 8, 8, 1128, 44, 45, 46, 3, 8,
6294 3, 241, 3, 8, 241, 8, 4, 8, 54, 55,
6295 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
6296 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
6297 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
6298 86, 87, 186, 4, 3, 3, 3, 3, 241, 8,
6299 8, 8, 98, 99, 100, 101, 3, 3, 8, 4,
6300 106, 8, 8, 87, 241, 4, 115, 116, 4, 115,
6301 116, 4, 4, 115, 116, 4, 122, 123, 124, 125,
6302 126, 127, 128, 4, 4, 131, 110, 111, 112, 113,
6303 114, 115, 116, 3, 140, 3, 3, 241, 8, 3,
6304 8, 8, 4, 149, 8, 3, 152, 131, 132, 133,
6305 8, 4, 4, 159, 138, 139, 102, 103, 104, 105,
6306 4, 167, 168, 4, 173, 4, 172, 4, 177, 178,
6307 179, 180, 4, 4, 474, 475, 4, 4, 187, 188,
6308 723, 724, 725, 4, 190, 39, 40, 41, 194, 191,
6309 192, 193, 4, 554, 4, 738, 739, 740, 741, 4,
6310 561, 160, 161, 162, 210, 211, 212, 213, 214, 215,
6311 216, 4, 4, 4, 575, 4, 759, 4, 579, 225,
6312 174, 175, 176, 561, 575, 586, 575, 575, 4, 4,
6313 575, 4, 241, 4, 586, 241, 597, 575, 4, 241,
6314 4, 579, 4, 4, 575, 4, 607, 575, 586, 4,
6315 575, 4, 4, 614, 4, 4, 4, 241, 4, 597,
6316 4, 614, 4, 4, 614, 8, 627, 575, 3, 607,
6317 575, 4, 4, 575, 579, 4, 614, 579, 8, 561,
6318 3, 243, 4, 579, 4, 4, 4, 579, 4, 627,
6319 586, 4, 607, 575, 586, 4, 4, 579, 4, 614,
6320 4, 4, 4, 242, 586, 242, 242, 575, 242, 242,
6321 242, 579, 575, 242, 242, 597, 579, 244, 586, 243,
6322 243, 243, 242, 575, 4, 607, 575, 579, 242, 597,
6323 579, 242, 614, 242, 4, 4, 244, 575, 4, 243,
6324 575, 579, 244, 244, 579, 627, 244, 575, 242, 244,
6325 4, 579, 242, 579, 575, 242, 244, 575, 579, 575,
6326 586, 579, 244, 579, 575, 4, 4, 242, 579, 575,
6327 4, 575, 4, 579, 575, 579, 4, 575, 4, 4,
6328 4, 244, 575, 244, 4, 4, 4, 575, 575, 4,
6329 575, 4, 4, 575, 575, 4, 4, 4, 575, 242,
6330 4, 575, 4, 4, 575, 575, 4, 4, 575, 4,
6331 244, 575, 4, 4, 244, 244, 777, 579, 244, 780,
6332 4, 244, 244, 242, 586, 242, 4, 4, 87, 4,
6333 244, 4, 4, 54, 55, 56, 57, 58, 59, 242,
6334 4, 4, 780, 4, 4, 4, 88, 89, 90, 91,
6335 92, 93, 94, 4, 815, 816, 115, 116, 819, 242,
6336 4, 242, 823, 4, 242, 242, 87, 88, 4, 4,
6337 4, 4, 131, 115, 116, 4, 776, 815, 816, 4,
6338 818, 819, 141, 142, 143, 144, 145, 146, 147, 131,
6339 4, 4, 4, 4, 115, 116, 4, 242, 780, 54,
6340 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
6341 65, 66, 67, 134, 135, 136, 137, 72, 73, 74,
6342 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
6343 4, 4, 87, 815, 816, 4, 818, 819, 4, 244,
6344 4, 115, 116, 244, 99, 100, 101, 244, 244, 4,
6345 244, 4, 107, 242, 109, 4, 242, 242, 4, 4,
6346 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
6347 47, 48, 49, 50, 51, 52, 131, 132, 133, 4,
6348 242, 4, 241, 138, 241, 140, 7, 7, 7, 7,
6349 7, 5, 241, 148, 241, 241, 5, 5, 5, 241,
6350 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
6351 237, 238, 239, 240, 5, 7, 5, 5, 241, 241,
6352 241, 195, 196, 197, 198, 199, 200, 201, 202, 5,
6353 241, 5, 7, 5, 5, 241, 241, 7, 7, 7,
6354 5, 7, 5, 7, 5, 7, 5, 5, 241, 205,
6355 7, 241, 241, 241, 241, 210, 211, 5, 241, 241,
6356 241, 241, 241, 7, 7, 241, 7, 241, 7, 7,
6357 241, 241, 241, 241, 241, 241, 241, 7, 7, 241,
6358 7, 7, 7, 241, 7, 7, 241, 141, 4, 4,
6359 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
6360 3, 241, 6, 3, 6, 6, 3, 6, 3, 3,
6361 6, 242, 3, 6, 6, 3, 6, 6, 3, 6,
6362 4, 4, 4, 4, 1085, 4, 4, 1088, 4, 4,
6363 1091, 4, 4, 1094, 1085, 4, 1085, 1085, 1091, 4,
6364 1085, 1091, 3, 1094, 4, 1106, 1094, 1085, 1109, 1094,
6365 1088, 1112, 4, 1091, 1085, 1106, 1094, 1085, 1106, 4,
6366 1085, 1106, 6, 1094, 3, 6, 1094, 1128, 1106, 1094,
6367 3, 1109, 1133, 1088, 1135, 1106, 1091, 1085, 1106, 1094,
6368 1085, 1106, 8, 1085, 1145, 6, 1094, 4, 1149, 1094,
6369 1128, 1106, 1094, 1154, 4, 1133, 1157, 1135, 1094, 4,
6370 4, 244, 1094, 1085, 1142, 1157, 1088, 1145, 242, 1091,
6371 242, 244, 1094, 242, 242, 242, 1154, 1085, 242, 1157,
6372 242, 4, 1085, 4, 1106, 4, 1094, 1109, 244, 242,
6373 1145, 1094, 4, 1085, 4, 4, 1085, 4, 1106, 4,
6374 4, 1109, 1094, 242, 242, 1094, 1128, 1085, 242, 1154,
6375 1085, 1133, 1154, 1135, 4, 242, 1094, 1085, 1154, 1094,
6376 1142, 1157, 1154, 1145, 1085, 1157, 1094, 1085, 1094, 1085,
6377 4, 244, 1154, 1094, 1085, 1157, 1094, 244, 1094, 1085,
6378 4, 1085, 242, 1094, 1085, 4, 1154, 1085, 1094, 1157,
6379 1094, 1154, 1085, 1094, 244, 242, 1094, 1085, 1085, 6,
6380 1085, 1094, 1154, 1085, 1085, 1154, 1094, 1094, 1085, 1094,
6381 242, 1085, 1094, 1094, 1085, 1085, 1154, 1094, 1085, 1154,
6382 1094, 1085, 242, 1094, 1094, 242, 1154, 1094, 1154, 3,
6383 1094, 1157, 1094, 1154, 4, 8, 1154, 8, 1154, 4,
6384 8, 3, 8, 1154, 242, 4, 4, 4, 1154, 4,
6385 1154, 4, 4, 4, 4, 4, 242, 4, 4, 4,
6386 3, 181, 242, 7, 241, 5, 5, 241, 4, 7,
6387 72, 73, 74, 75, 76, 77, 78, 241, 80, 81,
6388 82, 83, 241, 241, 241, 87, 241, 241, 241, 7,
6389 241, 241, 1154, 241, 241, 1157, 242, 6, 241, 101,
6390 242, 4, 1363, 241, 244, 4, 108, 244, 244, 241,
6391 241, 1372, 1363, 115, 116, 1363, 241, 241, 1363, 4,
6392 4, 1372, 1322, 241, 1372, 1363, 1387, 1372, 241, 131,
6393 132, 133, 1363, 1394, 1372, 1363, 138, 139, 1363, 5,
6394 4, 1372, 4, 244, 1372, 4, 7, 1372, 1363, 1387,
6395 4, 242, 242, 4, 6, 1363, 1394, 1372, 1363, 3,
6396 777, 1363, 4, 241, 1425, 241, 241, 1363, 241, 762,
6397 808, 1363, 554, 780, 561, 1079, 862, 1084, 1097, 1394,
6398 1182, 1363, 1104, 1100, 1133, 1114, 1121, 1425, 1112, 617,
6399 1372, 575, 1453, 1087, 1455, 1363, 1096, 1085, 1363, 77,
6400 1363, 607, 1088, 1090, 1372, 1387, 1156, 614, 210, 211,
6401 1154, 1363, 1394, 1093, 1363, 1453, 579, 1455, 1091, 1159,
6402 1157, 586, 597, 835, 1372, 1363, 1137, 1128, 1363, 1387,
6403 1494, 1109, 1453, 1494, 1111, 1363, 1108, 1363, 1457, 241,
6404 1455, 1517, 1363, 1425, 1533, 1363, 819, 1363, 627, 1142,
6405 779, 631, 1363, 1394, 1515, 1146, 1494, 1363, 1459, 1363,
6406 1501, -1, 1363, -1, -1, 1363, -1, -1, -1, -1,
6407 1363, 1453, 1533, 1455, -1, 1363, 1363, 1515, 1363, 1494,
6408 -1, 1363, 1363, 1149, -1, -1, 1363, -1, -1, 1363,
6409 -1, -1, 1363, 1363, -1, 1533, 1363, -1, -1, 1363,
6410 -1, 1363, -1, -1, -1, -1, -1, -1, -1, -1,
6411 -1, -1, 1494, -1, -1, -1, 54, 55, 56, 57,
6412 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
6413 -1, -1, -1, 1515, 72, 73, 74, 75, 76, 77,
6414 78, 79, 80, 81, 82, 83, 84, 85, -1, 87,
6415 88, 1533, -1, -1, -1, -1, -1, -1, -1, -1,
6416 -1, 99, 100, 101, -1, -1, -1, -1, -1, -1,
6417 -1, -1, -1, -1, -1, -1, -1, 115, 116, -1,
6418 118, 119, -1, 121, 122, 123, 124, -1, -1, -1,
6419 -1, -1, -1, 131, 132, 133, -1, -1, -1, -1,
6420 138, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6421 148, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6422 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6423 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6424 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6425 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6426 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6427 -1, -1, 210, 211, -1, -1, -1, -1, -1, -1,
6428 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6429 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6430 -1, -1, -1, 241
6431 };
6432
6433 const short
6434 Dhcp6Parser::yystos_[] =
6435 {
6436 0, 227, 228, 229, 230, 231, 232, 233, 234, 235,
6437 236, 237, 238, 239, 240, 246, 247, 248, 249, 250,
6438 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
6439 0, 5, 7, 9, 241, 242, 243, 244, 261, 262,
6440 263, 268, 7, 277, 7, 282, 7, 342, 7, 460,
6441 7, 544, 7, 561, 7, 578, 7, 493, 7, 499,
6442 7, 523, 7, 436, 7, 691, 7, 710, 269, 264,
6443 278, 283, 343, 461, 545, 562, 579, 494, 500, 524,
6444 437, 692, 711, 261, 270, 271, 241, 266, 267, 10,
6445 279, 281, 11, 12, 15, 21, 22, 23, 54, 55,
6446 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
6447 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
6448 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
6449 86, 87, 98, 99, 100, 101, 106, 115, 116, 122,
6450 123, 124, 125, 126, 127, 128, 131, 140, 149, 152,
6451 159, 167, 168, 172, 190, 194, 210, 211, 212, 213,
6452 214, 215, 216, 225, 241, 276, 284, 285, 286, 288,
6453 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
6454 299, 300, 301, 302, 303, 304, 305, 306, 309, 311,
6455 313, 314, 315, 318, 319, 320, 321, 322, 324, 326,
6456 327, 328, 329, 331, 332, 334, 336, 337, 338, 339,
6457 340, 352, 354, 356, 401, 409, 415, 421, 423, 430,
6458 444, 454, 478, 479, 480, 483, 491, 517, 551, 553,
6459 572, 602, 618, 630, 631, 679, 689, 708, 717, 741,
6460 16, 17, 18, 19, 20, 276, 344, 345, 346, 348,
6461 349, 350, 351, 551, 553, 107, 109, 117, 118, 119,
6462 120, 121, 131, 132, 133, 138, 148, 276, 288, 289,
6463 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
6464 300, 301, 303, 304, 305, 306, 309, 311, 313, 314,
6465 315, 318, 319, 320, 321, 322, 324, 326, 332, 334,
6466 462, 463, 464, 466, 468, 470, 472, 474, 476, 478,
6467 479, 480, 481, 482, 517, 538, 551, 553, 555, 572,
6468 599, 108, 139, 276, 303, 304, 305, 306, 309, 311,
6469 313, 315, 318, 319, 320, 321, 322, 324, 470, 472,
6470 474, 476, 517, 546, 547, 548, 550, 551, 553, 110,
6471 111, 112, 113, 114, 276, 470, 472, 474, 476, 517,
6472 550, 551, 553, 563, 564, 565, 567, 568, 570, 571,
6473 131, 141, 142, 143, 144, 145, 146, 147, 276, 517,
6474 551, 553, 580, 581, 582, 583, 585, 587, 589, 591,
6475 593, 595, 597, 491, 24, 88, 90, 91, 95, 96,
6476 97, 276, 375, 501, 502, 503, 504, 505, 506, 507,
6477 509, 511, 513, 514, 516, 551, 553, 89, 92, 93,
6478 94, 131, 276, 375, 505, 511, 525, 526, 527, 528,
6479 529, 531, 532, 533, 534, 535, 536, 551, 553, 150,
6480 151, 276, 438, 439, 440, 442, 195, 196, 197, 198,
6481 199, 200, 201, 202, 276, 551, 553, 693, 694, 695,
6482 696, 698, 699, 701, 702, 703, 706, 13, 14, 712,
6483 713, 714, 716, 6, 3, 4, 8, 3, 280, 3,
6484 8, 287, 709, 341, 353, 355, 357, 4, 4, 4,
6485 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
6486 4, 4, 330, 4, 4, 4, 4, 4, 307, 310,
6487 312, 4, 4, 4, 4, 4, 4, 4, 455, 492,
6488 518, 4, 333, 335, 316, 484, 552, 554, 4, 4,
6489 4, 410, 422, 416, 402, 603, 573, 431, 445, 619,
6490 4, 424, 632, 680, 690, 323, 325, 4, 4, 4,
6491 4, 718, 742, 4, 3, 8, 347, 4, 4, 4,
6492 4, 3, 8, 539, 556, 465, 467, 469, 4, 4,
6493 473, 475, 477, 471, 600, 3, 8, 549, 4, 3,
6494 8, 566, 4, 569, 4, 4, 3, 8, 598, 584,
6495 586, 588, 590, 592, 594, 596, 8, 3, 8, 508,
6496 376, 4, 512, 510, 515, 4, 8, 3, 530, 4,
6497 4, 4, 537, 8, 3, 441, 443, 3, 8, 4,
6498 697, 4, 700, 4, 4, 704, 707, 3, 8, 715,
6499 4, 3, 8, 261, 261, 241, 4, 4, 4, 4,
6500 4, 4, 4, 242, 242, 242, 242, 242, 242, 242,
6501 242, 244, 243, 243, 243, 242, 243, 242, 4, 242,
6502 242, 244, 244, 244, 4, 4, 4, 244, 244, 243,
6503 242, 242, 242, 244, 4, 4, 4, 242, 4, 4,
6504 4, 4, 4, 4, 244, 244, 244, 4, 4, 4,
6505 4, 4, 4, 4, 4, 4, 242, 4, 4, 4,
6506 4, 4, 4, 244, 244, 244, 244, 4, 4, 285,
6507 4, 244, 244, 242, 242, 345, 4, 4, 4, 4,
6508 4, 242, 244, 4, 4, 4, 4, 4, 463, 4,
6509 242, 547, 4, 242, 4, 242, 242, 564, 4, 4,
6510 4, 4, 4, 4, 4, 4, 582, 4, 4, 242,
6511 4, 4, 4, 244, 503, 4, 244, 244, 244, 4,
6512 527, 4, 4, 439, 244, 4, 242, 4, 242, 242,
6513 4, 4, 694, 4, 242, 713, 4, 7, 241, 7,
6514 7, 7, 7, 5, 241, 206, 207, 208, 209, 244,
6515 308, 241, 241, 5, 5, 5, 241, 241, 102, 103,
6516 104, 105, 317, 5, 263, 265, 241, 5, 5, 5,
6517 7, 5, 5, 5, 7, 7, 7, 5, 7, 7,
6518 241, 241, 5, 7, 5, 272, 5, 5, 241, 241,
6519 241, 272, 272, 272, 241, 7, 241, 241, 241, 272,
6520 272, 272, 272, 241, 241, 241, 241, 241, 241, 241,
6521 241, 241, 241, 272, 241, 265, 241, 241, 203, 204,
6522 705, 205, 5, 261, 284, 712, 344, 24, 25, 26,
6523 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
6524 37, 38, 42, 43, 44, 45, 46, 47, 48, 49,
6525 50, 51, 52, 53, 186, 276, 362, 363, 364, 366,
6526 368, 370, 372, 374, 375, 377, 378, 379, 380, 381,
6527 382, 383, 384, 385, 388, 389, 390, 391, 393, 395,
6528 397, 399, 362, 7, 358, 359, 360, 7, 456, 457,
6529 458, 7, 495, 496, 497, 7, 519, 520, 521, 7,
6530 485, 486, 487, 144, 241, 411, 412, 413, 414, 270,
6531 145, 147, 413, 417, 418, 419, 420, 129, 130, 403,
6532 404, 405, 407, 7, 604, 605, 606, 7, 574, 575,
6533 576, 7, 432, 433, 434, 153, 154, 155, 156, 157,
6534 158, 446, 447, 448, 449, 450, 451, 452, 453, 24,
6535 163, 164, 165, 166, 276, 377, 551, 553, 620, 621,
6536 622, 625, 626, 628, 629, 169, 170, 171, 276, 425,
6537 426, 427, 428, 429, 551, 553, 7, 633, 634, 635,
6538 191, 192, 193, 241, 551, 553, 681, 682, 683, 684,
6539 686, 687, 693, 7, 719, 720, 226, 276, 743, 744,
6540 745, 273, 7, 540, 541, 542, 7, 557, 558, 559,
6541 583, 601, 358, 8, 8, 8, 365, 367, 369, 373,
6542 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
6543 386, 4, 4, 392, 394, 396, 398, 400, 371, 3,
6544 8, 8, 361, 6, 3, 459, 6, 3, 498, 6,
6545 3, 522, 6, 3, 488, 6, 3, 3, 6, 6,
6546 3, 6, 406, 408, 3, 8, 607, 6, 3, 577,
6547 6, 3, 435, 6, 3, 4, 4, 4, 4, 4,
6548 4, 3, 8, 623, 627, 4, 4, 4, 3, 8,
6549 4, 4, 4, 3, 8, 636, 6, 3, 4, 685,
6550 4, 688, 3, 8, 8, 721, 3, 6, 4, 3,
6551 8, 241, 274, 275, 543, 6, 3, 560, 6, 3,
6552 8, 6, 4, 4, 4, 4, 242, 244, 242, 244,
6553 242, 242, 242, 242, 242, 242, 4, 244, 242, 4,
6554 4, 4, 4, 4, 4, 363, 362, 360, 462, 458,
6555 501, 497, 525, 521, 276, 288, 289, 290, 291, 292,
6556 293, 294, 295, 296, 297, 298, 299, 300, 301, 303,
6557 304, 305, 306, 309, 311, 313, 314, 315, 318, 319,
6558 320, 321, 322, 324, 326, 332, 334, 375, 454, 466,
6559 468, 470, 472, 474, 476, 478, 479, 480, 482, 489,
6560 490, 517, 551, 553, 599, 487, 412, 418, 4, 4,
6561 404, 134, 135, 136, 137, 276, 288, 289, 290, 291,
6562 292, 293, 375, 517, 551, 553, 608, 609, 610, 611,
6563 612, 614, 616, 617, 606, 580, 576, 438, 434, 242,
6564 242, 242, 242, 242, 242, 447, 4, 4, 242, 242,
6565 242, 621, 244, 242, 242, 426, 173, 177, 178, 179,
6566 180, 187, 188, 276, 391, 393, 395, 551, 553, 637,
6567 638, 639, 642, 644, 646, 647, 648, 658, 635, 244,
6568 4, 242, 4, 682, 217, 219, 220, 276, 375, 551,
6569 553, 722, 723, 724, 725, 727, 720, 244, 744, 6,
6570 3, 546, 542, 563, 559, 241, 241, 241, 241, 39,
6571 40, 41, 387, 241, 241, 241, 397, 241, 241, 8,
6572 8, 8, 8, 3, 8, 241, 241, 613, 615, 4,
6573 4, 8, 3, 8, 8, 160, 161, 162, 624, 241,
6574 640, 643, 645, 4, 659, 4, 649, 3, 8, 241,
6575 261, 728, 4, 726, 3, 8, 241, 8, 8, 490,
6576 4, 4, 244, 244, 610, 4, 4, 4, 242, 4,
6577 244, 4, 638, 4, 242, 4, 723, 241, 241, 174,
6578 175, 176, 641, 241, 241, 7, 5, 5, 241, 24,
6579 182, 183, 184, 276, 551, 553, 660, 661, 662, 665,
6580 667, 669, 7, 650, 651, 652, 7, 729, 730, 663,
6581 666, 668, 670, 3, 8, 653, 6, 3, 731, 3,
6582 6, 4, 4, 4, 4, 661, 189, 276, 375, 551,
6583 553, 654, 655, 656, 652, 218, 221, 222, 223, 224,
6584 732, 733, 734, 736, 737, 738, 739, 730, 181, 664,
6585 241, 241, 5, 657, 3, 8, 735, 4, 4, 4,
6586 740, 3, 8, 7, 671, 672, 673, 4, 655, 4,
6587 244, 242, 242, 4, 733, 674, 6, 3, 241, 241,
6588 241, 185, 276, 366, 368, 370, 551, 553, 675, 676,
6589 677, 673, 678, 3, 8, 4, 676, 241
6590 };
6591
6592 const short
6593 Dhcp6Parser::yyr1_[] =
6594 {
6595 0, 245, 247, 246, 248, 246, 249, 246, 250, 246,
6596 251, 246, 252, 246, 253, 246, 254, 246, 255, 246,
6597 256, 246, 257, 246, 258, 246, 259, 246, 260, 246,
6598 261, 261, 261, 261, 261, 261, 261, 262, 264, 263,
6599 265, 266, 266, 267, 267, 267, 269, 268, 270, 270,
6600 271, 271, 271, 273, 272, 274, 274, 275, 275, 275,
6601 276, 278, 277, 280, 279, 279, 281, 283, 282, 284,
6602 284, 284, 285, 285, 285, 285, 285, 285, 285, 285,
6603 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
6604 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
6605 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
6606 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
6607 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
6608 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
6609 285, 285, 285, 285, 285, 287, 286, 288, 289, 290,
6610 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
6611 301, 302, 303, 304, 305, 307, 306, 308, 308, 308,
6612 308, 308, 310, 309, 312, 311, 313, 314, 316, 315,
6613 317, 317, 317, 317, 318, 319, 320, 321, 323, 322,
6614 325, 324, 326, 327, 328, 330, 329, 331, 333, 332,
6615 335, 334, 336, 337, 338, 339, 341, 340, 343, 342,
6616 344, 344, 344, 345, 345, 345, 345, 345, 345, 345,
6617 345, 347, 346, 348, 349, 350, 351, 353, 352, 355,
6618 354, 357, 356, 358, 358, 359, 359, 359, 361, 360,
6619 362, 362, 362, 363, 363, 363, 363, 363, 363, 363,
6620 363, 363, 363, 363, 363, 363, 363, 363, 363, 363,
6621 363, 363, 363, 363, 363, 363, 363, 363, 365, 364,
6622 367, 366, 369, 368, 371, 370, 373, 372, 374, 376,
6623 375, 377, 378, 379, 380, 381, 382, 383, 384, 386,
6624 385, 387, 387, 387, 388, 389, 390, 392, 391, 394,
6625 393, 396, 395, 398, 397, 397, 397, 397, 397, 397,
6626 400, 399, 402, 401, 403, 403, 403, 404, 404, 406,
6627 405, 408, 407, 410, 409, 411, 411, 411, 412, 412,
6628 413, 414, 416, 415, 417, 417, 417, 418, 418, 418,
6629 419, 420, 422, 421, 424, 423, 425, 425, 425, 426,
6630 426, 426, 426, 426, 426, 427, 428, 429, 431, 430,
6631 432, 432, 433, 433, 433, 435, 434, 437, 436, 438,
6632 438, 438, 438, 439, 439, 441, 440, 443, 442, 445,
6633 444, 446, 446, 446, 447, 447, 447, 447, 447, 447,
6634 448, 449, 450, 451, 452, 453, 455, 454, 456, 456,
6635 457, 457, 457, 459, 458, 461, 460, 462, 462, 462,
6636 463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
6637 463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
6638 463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
6639 463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
6640 463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
6641 463, 463, 465, 464, 467, 466, 469, 468, 471, 470,
6642 473, 472, 475, 474, 477, 476, 478, 479, 480, 481,
6643 482, 484, 483, 485, 485, 486, 486, 486, 488, 487,
6644 489, 489, 489, 490, 490, 490, 490, 490, 490, 490,
6645 490, 490, 490, 490, 490, 490, 490, 490, 490, 490,
6646 490, 490, 490, 490, 490, 490, 490, 490, 490, 490,
6647 490, 490, 490, 490, 490, 490, 490, 490, 490, 490,
6648 490, 490, 490, 490, 490, 490, 490, 490, 490, 490,
6649 490, 490, 492, 491, 494, 493, 495, 495, 496, 496,
6650 496, 498, 497, 500, 499, 501, 501, 502, 502, 502,
6651 503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
6652 504, 505, 506, 508, 507, 510, 509, 512, 511, 513,
6653 515, 514, 516, 518, 517, 519, 519, 520, 520, 520,
6654 522, 521, 524, 523, 525, 525, 526, 526, 526, 527,
6655 527, 527, 527, 527, 527, 527, 527, 527, 527, 527,
6656 528, 530, 529, 531, 532, 533, 534, 535, 537, 536,
6657 539, 538, 540, 540, 541, 541, 541, 543, 542, 545,
6658 544, 546, 546, 546, 547, 547, 547, 547, 547, 547,
6659 547, 547, 547, 547, 547, 547, 547, 547, 547, 547,
6660 547, 547, 547, 547, 547, 547, 547, 547, 549, 548,
6661 550, 552, 551, 554, 553, 556, 555, 557, 557, 558,
6662 558, 558, 560, 559, 562, 561, 563, 563, 563, 564,
6663 564, 564, 564, 564, 564, 564, 564, 564, 564, 564,
6664 564, 564, 564, 566, 565, 567, 569, 568, 570, 571,
6665 573, 572, 574, 574, 575, 575, 575, 577, 576, 579,
6666 578, 580, 580, 581, 581, 581, 582, 582, 582, 582,
6667 582, 582, 582, 582, 582, 582, 582, 582, 584, 583,
6668 586, 585, 588, 587, 590, 589, 592, 591, 594, 593,
6669 596, 595, 598, 597, 600, 599, 601, 603, 602, 604,
6670 604, 605, 605, 605, 607, 606, 608, 608, 609, 609,
6671 609, 610, 610, 610, 610, 610, 610, 610, 610, 610,
6672 610, 610, 610, 610, 610, 610, 611, 613, 612, 615,
6673 614, 616, 617, 619, 618, 620, 620, 620, 621, 621,
6674 621, 621, 621, 621, 621, 621, 621, 623, 622, 624,
6675 624, 624, 625, 627, 626, 628, 629, 630, 632, 631,
6676 633, 633, 634, 634, 634, 636, 635, 637, 637, 637,
6677 638, 638, 638, 638, 638, 638, 638, 638, 638, 638,
6678 638, 638, 638, 640, 639, 641, 641, 641, 643, 642,
6679 645, 644, 646, 647, 649, 648, 650, 650, 651, 651,
6680 651, 653, 652, 654, 654, 654, 655, 655, 655, 655,
6681 655, 657, 656, 659, 658, 660, 660, 660, 661, 661,
6682 661, 661, 661, 661, 661, 663, 662, 664, 666, 665,
6683 668, 667, 670, 669, 671, 671, 672, 672, 672, 674,
6684 673, 675, 675, 675, 676, 676, 676, 676, 676, 676,
6685 676, 678, 677, 680, 679, 681, 681, 681, 682, 682,
6686 682, 682, 682, 682, 683, 685, 684, 686, 688, 687,
6687 690, 689, 692, 691, 693, 693, 693, 694, 694, 694,
6688 694, 694, 694, 694, 694, 694, 694, 694, 695, 697,
6689 696, 698, 700, 699, 701, 702, 704, 703, 705, 705,
6690 707, 706, 709, 708, 711, 710, 712, 712, 712, 713,
6691 713, 715, 714, 716, 718, 717, 719, 719, 719, 721,
6692 720, 722, 722, 722, 723, 723, 723, 723, 723, 723,
6693 723, 724, 726, 725, 728, 727, 729, 729, 729, 731,
6694 730, 732, 732, 732, 733, 733, 733, 733, 733, 735,
6695 734, 736, 737, 738, 740, 739, 742, 741, 743, 743,
6696 743, 744, 744, 745
6697 };
6698
6699 const signed char
6700 Dhcp6Parser::yyr2_[] =
6701 {
6702 0, 2, 0, 3, 0, 3, 0, 3, 0, 3,
6703 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
6704 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
6705 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
6706 1, 0, 1, 3, 5, 2, 0, 4, 0, 1,
6707 1, 3, 2, 0, 4, 0, 1, 1, 3, 2,
6708 2, 0, 4, 0, 6, 1, 2, 0, 4, 1,
6709 3, 2, 1, 1, 1, 1, 1, 1, 1, 1,
6710 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6711 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6712 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6713 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6714 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6715 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6716 1, 1, 1, 1, 1, 0, 4, 3, 3, 3,
6717 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
6718 3, 3, 3, 3, 3, 0, 4, 1, 1, 1,
6719 1, 1, 0, 4, 0, 4, 3, 3, 0, 4,
6720 1, 1, 1, 1, 3, 3, 3, 3, 0, 4,
6721 0, 4, 3, 3, 3, 0, 4, 3, 0, 4,
6722 0, 4, 3, 3, 3, 3, 0, 6, 0, 4,
6723 1, 3, 2, 1, 1, 1, 1, 1, 1, 1,
6724 1, 0, 4, 3, 3, 3, 3, 0, 6, 0,
6725 6, 0, 6, 0, 1, 1, 3, 2, 0, 4,
6726 1, 3, 2, 1, 1, 1, 1, 1, 1, 1,
6727 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6728 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
6729 0, 4, 0, 4, 0, 4, 0, 4, 3, 0,
6730 4, 3, 3, 3, 3, 3, 3, 3, 3, 0,
6731 4, 1, 1, 1, 3, 3, 3, 0, 4, 0,
6732 4, 0, 4, 0, 4, 1, 1, 1, 1, 1,
6733 0, 4, 0, 6, 1, 3, 2, 1, 1, 0,
6734 4, 0, 4, 0, 6, 1, 3, 2, 1, 1,
6735 1, 1, 0, 6, 1, 3, 2, 1, 1, 1,
6736 1, 1, 0, 6, 0, 6, 1, 3, 2, 1,
6737 1, 1, 1, 1, 1, 3, 3, 3, 0, 6,
6738 0, 1, 1, 3, 2, 0, 4, 0, 4, 1,
6739 3, 2, 1, 1, 1, 0, 4, 0, 4, 0,
6740 6, 1, 3, 2, 1, 1, 1, 1, 1, 1,
6741 3, 3, 3, 3, 3, 3, 0, 6, 0, 1,
6742 1, 3, 2, 0, 4, 0, 4, 1, 3, 2,
6743 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6744 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6745 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6746 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6747 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6748 1, 1, 0, 4, 0, 4, 0, 4, 0, 4,
6749 0, 4, 0, 4, 0, 4, 3, 3, 3, 3,
6750 3, 0, 6, 0, 1, 1, 3, 2, 0, 4,
6751 1, 3, 2, 1, 1, 1, 1, 1, 1, 1,
6752 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6753 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6754 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6755 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6756 1, 1, 0, 6, 0, 4, 0, 1, 1, 3,
6757 2, 0, 4, 0, 4, 0, 1, 1, 3, 2,
6758 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6759 1, 3, 1, 0, 4, 0, 4, 0, 4, 1,
6760 0, 4, 3, 0, 6, 0, 1, 1, 3, 2,
6761 0, 4, 0, 4, 0, 1, 1, 3, 2, 1,
6762 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6763 1, 0, 4, 1, 1, 3, 3, 3, 0, 4,
6764 0, 6, 0, 1, 1, 3, 2, 0, 4, 0,
6765 4, 1, 3, 2, 1, 1, 1, 1, 1, 1,
6766 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6767 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
6768 3, 0, 4, 0, 4, 0, 6, 0, 1, 1,
6769 3, 2, 0, 4, 0, 4, 1, 3, 2, 1,
6770 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6771 1, 1, 1, 0, 4, 3, 0, 4, 3, 3,
6772 0, 6, 0, 1, 1, 3, 2, 0, 4, 0,
6773 4, 0, 1, 1, 3, 2, 1, 1, 1, 1,
6774 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
6775 0, 4, 0, 4, 0, 4, 0, 4, 0, 4,
6776 0, 4, 0, 4, 0, 6, 1, 0, 6, 0,
6777 1, 1, 3, 2, 0, 4, 0, 1, 1, 3,
6778 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6779 1, 1, 1, 1, 1, 1, 1, 0, 4, 0,
6780 4, 3, 3, 0, 6, 1, 3, 2, 1, 1,
6781 1, 1, 1, 1, 1, 1, 1, 0, 4, 1,
6782 1, 1, 3, 0, 4, 3, 3, 3, 0, 6,
6783 0, 1, 1, 3, 2, 0, 4, 1, 3, 2,
6784 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6785 1, 1, 1, 0, 4, 1, 1, 1, 0, 4,
6786 0, 4, 3, 3, 0, 6, 0, 1, 1, 3,
6787 2, 0, 4, 1, 3, 2, 1, 1, 1, 1,
6788 1, 0, 4, 0, 6, 1, 3, 2, 1, 1,
6789 1, 1, 1, 1, 1, 0, 4, 1, 0, 4,
6790 0, 4, 0, 6, 0, 1, 1, 3, 2, 0,
6791 4, 1, 3, 2, 1, 1, 1, 1, 1, 1,
6792 1, 0, 4, 0, 6, 1, 3, 2, 1, 1,
6793 1, 1, 1, 1, 3, 0, 4, 3, 0, 4,
6794 0, 6, 0, 4, 1, 3, 2, 1, 1, 1,
6795 1, 1, 1, 1, 1, 1, 1, 1, 3, 0,
6796 4, 3, 0, 4, 3, 3, 0, 4, 1, 1,
6797 0, 4, 0, 6, 0, 4, 1, 3, 2, 1,
6798 1, 0, 6, 3, 0, 6, 1, 3, 2, 0,
6799 4, 1, 3, 2, 1, 1, 1, 1, 1, 1,
6800 1, 3, 0, 4, 0, 6, 1, 3, 2, 0,
6801 4, 1, 3, 2, 1, 1, 1, 1, 1, 0,
6802 4, 3, 3, 3, 0, 4, 0, 6, 1, 3,
6803 2, 1, 1, 3
6804 };
6805
6806
6807#if PARSER6_DEBUG || 1
6808 // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
6809 // First, the terminals, then, starting at \a YYNTOKENS, nonterminals.
6810 const char*
6811 const Dhcp6Parser::yytname_[] =
6812 {
6813 "\"end of file\"", "error", "\"invalid token\"", "\",\"", "\":\"",
6814 "\"[\"", "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"",
6815 "\"data-directory\"", "\"config-control\"", "\"config-databases\"",
6816 "\"config-fetch-wait-time\"", "\"interfaces-config\"", "\"interfaces\"",
6817 "\"re-detect\"", "\"service-sockets-require-all\"",
6818 "\"service-sockets-retry-wait-time\"", "\"service-sockets-max-retries\"",
6819 "\"lease-database\"", "\"hosts-database\"", "\"hosts-databases\"",
6820 "\"type\"", "\"user\"", "\"password\"", "\"host\"", "\"port\"",
6821 "\"persist\"", "\"lfc-interval\"", "\"readonly\"", "\"connect-timeout\"",
6822 "\"read-timeout\"", "\"write-timeout\"", "\"tcp-user-timeout\"",
6823 "\"max-reconnect-tries\"", "\"reconnect-wait-time\"", "\"on-fail\"",
6824 "\"stop-retry-exit\"", "\"serve-retry-exit\"",
6825 "\"serve-retry-continue\"", "\"retry-on-startup\"", "\"max-row-errors\"",
6826 "\"trust-anchor\"", "\"cert-file\"", "\"key-file\"", "\"ssl-mode\"",
6827 "\"disable\"", "\"prefer\"", "\"require\"", "\"verify-ca\"",
6828 "\"verify-full\"", "\"cipher-list\"", "\"preferred-lifetime\"",
6829 "\"min-preferred-lifetime\"", "\"max-preferred-lifetime\"",
6830 "\"valid-lifetime\"", "\"min-valid-lifetime\"", "\"max-valid-lifetime\"",
6831 "\"renew-timer\"", "\"rebind-timer\"", "\"calculate-tee-times\"",
6832 "\"t1-percent\"", "\"t2-percent\"", "\"cache-threshold\"",
6833 "\"cache-max-age\"", "\"adaptive-lease-time-threshold\"",
6834 "\"decline-probation-period\"", "\"server-tag\"",
6835 "\"statistic-default-sample-count\"", "\"statistic-default-sample-age\"",
6836 "\"ddns-send-updates\"", "\"ddns-override-no-update\"",
6837 "\"ddns-override-client-update\"", "\"ddns-replace-client-name\"",
6838 "\"ddns-generated-prefix\"", "\"ddns-qualifying-suffix\"",
6839 "\"ddns-update-on-renew\"", "\"ddns-use-conflict-resolution\"",
6840 "\"ddns-ttl-percent\"", "\"ddns-ttl\"", "\"ddns-ttl-min\"",
6841 "\"ddns-ttl-max\"", "\"store-extended-info\"", "\"subnet6\"",
6842 "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
6843 "\"space\"", "\"csv-format\"", "\"always-send\"", "\"never-send\"",
6844 "\"record-types\"", "\"encapsulate\"", "\"array\"",
6845 "\"parked-packet-limit\"", "\"allocator\"", "\"pd-allocator\"",
6846 "\"ddns-conflict-resolution-mode\"", "\"check-with-dhcid\"",
6847 "\"no-check-with-dhcid\"", "\"check-exists-with-dhcid\"",
6848 "\"no-check-without-dhcid\"", "\"shared-networks\"", "\"pools\"",
6849 "\"pool\"", "\"pd-pools\"", "\"prefix\"", "\"prefix-len\"",
6850 "\"excluded-prefix\"", "\"excluded-prefix-len\"", "\"delegated-len\"",
6851 "\"user-context\"", "\"comment\"", "\"subnet\"", "\"interface\"",
6852 "\"interface-id\"", "\"id\"", "\"rapid-commit\"",
6853 "\"reservations-global\"", "\"reservations-in-subnet\"",
6854 "\"reservations-out-of-pool\"", "\"mac-sources\"",
6855 "\"relay-supplied-options\"", "\"host-reservation-identifiers\"",
6856 "\"sanity-checks\"", "\"lease-checks\"", "\"extended-info-checks\"",
6857 "\"client-classes\"", "\"require-client-classes\"",
6858 "\"evaluate-additional-classes\"", "\"test\"", "\"template-test\"",
6859 "\"only-if-required\"", "\"only-in-additional-list\"",
6860 "\"client-class\"", "\"pool-id\"", "\"reservations\"",
6861 "\"ip-addresses\"", "\"prefixes\"", "\"excluded-prefixes\"", "\"duid\"",
6862 "\"hw-address\"", "\"hostname\"", "\"flex-id\"", "\"relay\"",
6863 "\"hooks-libraries\"", "\"library\"", "\"parameters\"",
6864 "\"expired-leases-processing\"", "\"reclaim-timer-wait-time\"",
6865 "\"flush-reclaimed-timer-wait-time\"", "\"hold-reclaimed-time\"",
6866 "\"max-reclaim-leases\"", "\"max-reclaim-time\"",
6867 "\"unwarned-reclaim-cycles\"", "\"server-id\"", "\"LLT\"", "\"EN\"",
6868 "\"LL\"", "\"identifier\"", "\"htype\"", "\"time\"", "\"enterprise-id\"",
6869 "\"dhcp4o6-port\"", "\"multi-threading\"", "\"enable-multi-threading\"",
6870 "\"thread-pool-size\"", "\"packet-queue-size\"", "\"control-sockets\"",
6871 "\"socket-type\"", "\"unix\"", "\"http\"", "\"https\"",
6872 "\"socket-name\"", "\"socket-address\"", "\"socket-port\"",
6873 "\"authentication\"", "\"basic\"", "\"realm\"", "\"directory\"",
6874 "\"clients\"", "\"user-file\"", "\"password-file\"", "\"cert-required\"",
6875 "\"http-headers\"", "\"value\"", "\"dhcp-queue-control\"",
6876 "\"enable-queue\"", "\"queue-type\"", "\"capacity\"", "\"dhcp-ddns\"",
6877 "\"enable-updates\"", "\"server-ip\"", "\"server-port\"",
6878 "\"sender-ip\"", "\"sender-port\"", "\"max-queue-size\"",
6879 "\"ncr-protocol\"", "\"ncr-format\"", "\"UDP\"", "\"TCP\"", "\"JSON\"",
6880 "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"",
6881 "\"hostname-char-set\"", "\"hostname-char-replacement\"",
6882 "\"early-global-reservations-lookup\"", "\"ip-reservations-unique\"",
6883 "\"reservations-lookup-first\"", "\"allow-address-registration\"",
6884 "\"loggers\"", "\"output-options\"", "\"output\"", "\"debuglevel\"",
6885 "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"pattern\"",
6886 "\"compatibility\"", "\"lenient-option-parsing\"", "TOPLEVEL_JSON",
6887 "TOPLEVEL_DHCP6", "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6",
6888 "SUB_POOL6", "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEFS",
6889 "SUB_OPTION_DEF", "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY",
6890 "SUB_DHCP_DDNS", "SUB_CONFIG_CONTROL", "\"constant string\"",
6891 "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start",
6892 "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10",
6893 "$@11", "$@12", "$@13", "$@14", "value", "sub_json", "map2", "$@15",
6894 "map_value", "map_content", "not_empty_map", "list_generic", "$@16",
6895 "list_content", "not_empty_list", "list_strings", "$@17",
6896 "list_strings_content", "not_empty_list_strings", "unknown_map_entry",
6897 "syntax_map", "$@18", "global_object", "$@19", "global_object_comma",
6898 "sub_dhcp6", "$@20", "global_params", "global_param", "data_directory",
6899 "$@21", "preferred_lifetime", "min_preferred_lifetime",
6900 "max_preferred_lifetime", "valid_lifetime", "min_valid_lifetime",
6901 "max_valid_lifetime", "renew_timer", "rebind_timer",
6902 "calculate_tee_times", "t1_percent", "t2_percent", "cache_threshold",
6903 "cache_max_age", "adaptive_lease_time_threshold",
6904 "decline_probation_period", "ddns_send_updates",
6905 "ddns_override_no_update", "ddns_override_client_update",
6906 "ddns_replace_client_name", "$@22", "ddns_replace_client_name_value",
6907 "ddns_generated_prefix", "$@23", "ddns_qualifying_suffix", "$@24",
6908 "ddns_update_on_renew", "ddns_use_conflict_resolution",
6909 "ddns_conflict_resolution_mode", "$@25",
6910 "ddns_conflict_resolution_mode_value", "ddns_ttl_percent", "ddns_ttl",
6911 "ddns_ttl_min", "ddns_ttl_max", "hostname_char_set", "$@26",
6912 "hostname_char_replacement", "$@27", "store_extended_info",
6913 "statistic_default_sample_count", "statistic_default_sample_age",
6914 "server_tag", "$@28", "parked_packet_limit", "allocator", "$@29",
6915 "pd_allocator", "$@30", "early_global_reservations_lookup",
6916 "ip_reservations_unique", "reservations_lookup_first",
6917 "allow_address_registration", "interfaces_config", "$@31",
6918 "sub_interfaces6", "$@32", "interfaces_config_params",
6919 "interfaces_config_param", "interfaces_list", "$@33", "re_detect",
6920 "service_sockets_require_all", "service_sockets_retry_wait_time",
6921 "service_sockets_max_retries", "lease_database", "$@34",
6922 "hosts_database", "$@35", "hosts_databases", "$@36", "database_list",
6923 "not_empty_database_list", "database", "$@37", "database_map_params",
6924 "database_map_param", "database_type", "$@38", "user", "$@39",
6925 "password", "$@40", "password_file", "$@41", "host", "$@42", "port",
6926 "name", "$@43", "persist", "lfc_interval", "readonly", "connect_timeout",
6927 "read_timeout", "write_timeout", "tcp_user_timeout",
6928 "reconnect_wait_time", "on_fail", "$@44", "on_fail_mode",
6929 "retry_on_startup", "max_row_errors", "max_reconnect_tries",
6930 "trust_anchor", "$@45", "cert_file", "$@46", "key_file", "$@47",
6931 "ssl_mode", "$@48", "cipher_list", "$@49", "sanity_checks", "$@50",
6932 "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@51",
6933 "extended_info_checks", "$@52", "mac_sources", "$@53",
6934 "mac_sources_list", "mac_sources_value", "duid_id", "string_id",
6935 "host_reservation_identifiers", "$@54",
6936 "host_reservation_identifiers_list", "host_reservation_identifier",
6937 "hw_address_id", "flex_id", "relay_supplied_options", "$@55",
6938 "dhcp_multi_threading", "$@56", "multi_threading_params",
6939 "multi_threading_param", "enable_multi_threading", "thread_pool_size",
6940 "packet_queue_size", "hooks_libraries", "$@57", "hooks_libraries_list",
6941 "not_empty_hooks_libraries_list", "hooks_library", "$@58",
6942 "sub_hooks_library", "$@59", "hooks_params", "hooks_param", "library",
6943 "$@60", "parameters", "$@61", "expired_leases_processing", "$@62",
6944 "expired_leases_params", "expired_leases_param",
6945 "reclaim_timer_wait_time", "flush_reclaimed_timer_wait_time",
6946 "hold_reclaimed_time", "max_reclaim_leases", "max_reclaim_time",
6947 "unwarned_reclaim_cycles", "subnet6_list", "$@63",
6948 "subnet6_list_content", "not_empty_subnet6_list", "subnet6", "$@64",
6949 "sub_subnet6", "$@65", "subnet6_params", "subnet6_param", "subnet",
6950 "$@66", "interface", "$@67", "interface_id", "$@68", "client_class",
6951 "$@69", "network_client_classes", "$@70", "require_client_classes",
6952 "$@71", "evaluate_additional_classes", "$@72", "reservations_global",
6953 "reservations_in_subnet", "reservations_out_of_pool", "id",
6954 "rapid_commit", "shared_networks", "$@73", "shared_networks_content",
6955 "shared_networks_list", "shared_network", "$@74",
6956 "shared_network_params", "shared_network_param", "option_def_list",
6957 "$@75", "sub_option_def_list", "$@76", "option_def_list_content",
6958 "not_empty_option_def_list", "option_def_entry", "$@77",
6959 "sub_option_def", "$@78", "option_def_params",
6960 "not_empty_option_def_params", "option_def_param", "option_def_name",
6961 "code", "option_def_code", "option_def_type", "$@79",
6962 "option_def_record_types", "$@80", "space", "$@81", "option_def_space",
6963 "option_def_encapsulate", "$@82", "option_def_array", "option_data_list",
6964 "$@83", "option_data_list_content", "not_empty_option_data_list",
6965 "option_data_entry", "$@84", "sub_option_data", "$@85",
6966 "option_data_params", "not_empty_option_data_params",
6967 "option_data_param", "option_data_name", "option_data_data", "$@86",
6968 "option_data_code", "option_data_space", "option_data_csv_format",
6969 "option_data_always_send", "option_data_never_send",
6970 "option_data_client_classes", "$@87", "pools_list", "$@88",
6971 "pools_list_content", "not_empty_pools_list", "pool_list_entry", "$@89",
6972 "sub_pool6", "$@90", "pool_params", "pool_param", "pool_entry", "$@91",
6973 "pool_id", "user_context", "$@92", "comment", "$@93", "pd_pools_list",
6974 "$@94", "pd_pools_list_content", "not_empty_pd_pools_list",
6975 "pd_pool_entry", "$@95", "sub_pd_pool", "$@96", "pd_pool_params",
6976 "pd_pool_param", "pd_prefix", "$@97", "pd_prefix_len", "excluded_prefix",
6977 "$@98", "excluded_prefix_len", "pd_delegated_len", "reservations",
6978 "$@99", "reservations_list", "not_empty_reservations_list",
6979 "reservation", "$@100", "sub_reservation", "$@101", "reservation_params",
6980 "not_empty_reservation_params", "reservation_param", "ip_addresses",
6981 "$@102", "prefixes", "$@103", "excluded_prefixes", "$@104", "duid",
6982 "$@105", "hw_address", "$@106", "hostname", "$@107", "flex_id_value",
6983 "$@108", "reservation_client_classes", "$@109", "relay", "$@110",
6984 "relay_map", "client_classes", "$@111", "client_classes_list",
6985 "not_empty_classes_list", "client_class_entry", "$@112",
6986 "client_class_params", "not_empty_client_class_params",
6987 "client_class_param", "client_class_name", "client_class_test", "$@113",
6988 "client_class_template_test", "$@114", "only_if_required",
6989 "only_in_additional_list", "server_id", "$@115", "server_id_params",
6990 "server_id_param", "server_id_type", "$@116", "duid_type", "htype",
6991 "identifier", "$@117", "time", "enterprise_id", "dhcp4o6_port",
6992 "control_sockets", "$@118", "control_socket_list",
6993 "not_empty_control_socket_list", "control_socket_entry", "$@119",
6994 "control_socket_params", "control_socket_param", "control_socket_type",
6995 "$@120", "control_socket_type_value", "control_socket_name", "$@121",
6996 "control_socket_address", "$@122", "control_socket_port",
6997 "cert_required", "http_headers", "$@123", "http_header_list",
6998 "not_empty_http_header_list", "http_header", "$@124",
6999 "http_header_params", "http_header_param", "header_value", "$@125",
7000 "authentication", "$@126", "auth_params", "auth_param", "auth_type",
7001 "$@127", "auth_type_value", "realm", "$@128", "directory", "$@129",
7002 "clients", "$@130", "clients_list", "not_empty_clients_list",
7003 "basic_auth", "$@131", "clients_params", "clients_param", "user_file",
7004 "$@132", "dhcp_queue_control", "$@133", "queue_control_params",
7005 "queue_control_param", "enable_queue", "queue_type", "$@134", "capacity",
7006 "arbitrary_map_entry", "$@135", "dhcp_ddns", "$@136", "sub_dhcp_ddns",
7007 "$@137", "dhcp_ddns_params", "dhcp_ddns_param", "enable_updates",
7008 "server_ip", "$@138", "server_port", "sender_ip", "$@139", "sender_port",
7009 "max_queue_size", "ncr_protocol", "$@140", "ncr_protocol_value",
7010 "ncr_format", "$@141", "config_control", "$@142", "sub_config_control",
7011 "$@143", "config_control_params", "config_control_param",
7012 "config_databases", "$@144", "config_fetch_wait_time", "loggers",
7013 "$@145", "loggers_entries", "logger_entry", "$@146", "logger_params",
7014 "logger_param", "debuglevel", "severity", "$@147", "output_options_list",
7015 "$@148", "output_options_list_content", "output_entry", "$@149",
7016 "output_params_list", "output_params", "output", "$@150", "flush",
7017 "maxsize", "maxver", "pattern", "$@151", "compatibility", "$@152",
7018 "compatibility_params", "compatibility_param", "lenient_option_parsing", YY_NULLPTR
7019 };
7020#endif
7021
7022
7023#if PARSER6_DEBUG
7024 const short
7025 Dhcp6Parser::yyrline_[] =
7026 {
7027 0, 340, 340, 340, 341, 341, 342, 342, 343, 343,
7028 344, 344, 345, 345, 346, 346, 347, 347, 348, 348,
7029 349, 349, 350, 350, 351, 351, 352, 352, 353, 353,
7030 361, 362, 363, 364, 365, 366, 367, 370, 375, 375,
7031 386, 389, 390, 393, 398, 404, 409, 409, 416, 417,
7032 420, 424, 428, 434, 434, 441, 442, 445, 449, 453,
7033 463, 472, 472, 487, 487, 501, 504, 510, 510, 519,
7034 520, 521, 528, 529, 530, 531, 532, 533, 534, 535,
7035 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
7036 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
7037 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
7038 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
7039 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
7040 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
7041 596, 597, 598, 599, 600, 603, 603, 613, 619, 625,
7042 631, 637, 643, 649, 655, 661, 667, 673, 679, 685,
7043 691, 697, 703, 709, 715, 721, 721, 730, 733, 736,
7044 739, 742, 748, 748, 757, 757, 766, 775, 785, 785,
7045 794, 797, 800, 803, 808, 814, 820, 826, 832, 832,
7046 841, 841, 850, 856, 862, 868, 868, 877, 883, 883,
7047 892, 892, 901, 907, 913, 919, 925, 925, 937, 937,
7048 946, 947, 948, 953, 954, 955, 956, 957, 958, 959,
7049 960, 963, 963, 974, 980, 986, 992, 998, 998, 1011,
7050 1011, 1024, 1024, 1035, 1036, 1039, 1040, 1041, 1046, 1046,
7051 1056, 1057, 1058, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
7052 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079,
7053 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1090, 1090,
7054 1099, 1099, 1108, 1108, 1117, 1117, 1126, 1126, 1135, 1141,
7055 1141, 1150, 1156, 1162, 1168, 1174, 1180, 1186, 1192, 1198,
7056 1198, 1206, 1207, 1208, 1211, 1217, 1223, 1229, 1229, 1238,
7057 1238, 1247, 1247, 1256, 1256, 1264, 1267, 1270, 1273, 1276,
7058 1281, 1281, 1290, 1290, 1301, 1302, 1303, 1308, 1309, 1312,
7059 1312, 1331, 1331, 1349, 1349, 1360, 1361, 1362, 1367, 1368,
7060 1371, 1376, 1381, 1381, 1392, 1393, 1394, 1399, 1400, 1401,
7061 1404, 1409, 1416, 1416, 1429, 1429, 1442, 1443, 1444, 1449,
7062 1450, 1451, 1452, 1453, 1454, 1457, 1463, 1469, 1475, 1475,
7063 1486, 1487, 1490, 1491, 1492, 1497, 1497, 1507, 1507, 1517,
7064 1518, 1519, 1522, 1525, 1526, 1529, 1529, 1538, 1538, 1547,
7065 1547, 1559, 1560, 1561, 1566, 1567, 1568, 1569, 1570, 1571,
7066 1574, 1580, 1586, 1592, 1598, 1604, 1613, 1613, 1627, 1628,
7067 1631, 1632, 1633, 1642, 1642, 1668, 1668, 1679, 1680, 1681,
7068 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696,
7069 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706,
7070 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716,
7071 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726,
7072 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736,
7073 1737, 1738, 1741, 1741, 1750, 1750, 1759, 1759, 1768, 1768,
7074 1778, 1778, 1790, 1790, 1801, 1801, 1812, 1818, 1824, 1830,
7075 1836, 1844, 1844, 1856, 1857, 1861, 1862, 1863, 1868, 1868,
7076 1876, 1877, 1878, 1883, 1884, 1885, 1886, 1887, 1888, 1889,
7077 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899,
7078 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909,
7079 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919,
7080 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929,
7081 1930, 1931, 1938, 1938, 1952, 1952, 1961, 1962, 1965, 1966,
7082 1967, 1974, 1974, 1989, 1989, 2003, 2004, 2007, 2008, 2009,
7083 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
7084 2026, 2028, 2034, 2036, 2036, 2045, 2045, 2054, 2054, 2063,
7085 2065, 2065, 2074, 2084, 2084, 2097, 2098, 2103, 2104, 2105,
7086 2112, 2112, 2124, 2124, 2136, 2137, 2142, 2143, 2144, 2151,
7087 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161,
7088 2164, 2166, 2166, 2175, 2177, 2179, 2185, 2191, 2197, 2197,
7089 2211, 2211, 2224, 2225, 2228, 2229, 2230, 2235, 2235, 2245,
7090 2245, 2255, 2256, 2257, 2262, 2263, 2264, 2265, 2266, 2267,
7091 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277,
7092 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2288, 2288,
7093 2297, 2303, 2303, 2328, 2328, 2358, 2358, 2371, 2372, 2375,
7094 2376, 2377, 2382, 2382, 2394, 2394, 2406, 2407, 2408, 2413,
7095 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423,
7096 2424, 2425, 2426, 2429, 2429, 2438, 2444, 2444, 2453, 2459,
7097 2468, 2468, 2479, 2480, 2483, 2484, 2485, 2490, 2490, 2499,
7098 2499, 2508, 2509, 2512, 2513, 2514, 2520, 2521, 2522, 2523,
7099 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2534, 2534,
7100 2545, 2545, 2556, 2556, 2567, 2567, 2576, 2576, 2585, 2585,
7101 2594, 2594, 2603, 2603, 2617, 2617, 2628, 2634, 2634, 2645,
7102 2646, 2649, 2650, 2651, 2656, 2656, 2666, 2667, 2670, 2671,
7103 2672, 2677, 2678, 2679, 2680, 2681, 2682, 2683, 2684, 2685,
7104 2686, 2687, 2688, 2689, 2690, 2691, 2694, 2696, 2696, 2705,
7105 2705, 2715, 2721, 2730, 2730, 2743, 2744, 2745, 2750, 2751,
7106 2752, 2753, 2754, 2755, 2756, 2757, 2758, 2761, 2761, 2769,
7107 2770, 2771, 2774, 2780, 2780, 2789, 2795, 2803, 2811, 2811,
7108 2822, 2823, 2826, 2827, 2828, 2833, 2833, 2841, 2842, 2843,
7109 2848, 2849, 2850, 2851, 2852, 2853, 2854, 2855, 2856, 2857,
7110 2858, 2859, 2860, 2863, 2863, 2872, 2873, 2874, 2877, 2877,
7111 2886, 2886, 2895, 2901, 2907, 2907, 2918, 2919, 2922, 2923,
7112 2924, 2929, 2929, 2937, 2938, 2939, 2944, 2945, 2946, 2947,
7113 2948, 2951, 2951, 2962, 2962, 2975, 2976, 2977, 2982, 2983,
7114 2984, 2985, 2986, 2987, 2988, 2991, 2991, 2999, 3002, 3002,
7115 3011, 3011, 3020, 3020, 3031, 3032, 3035, 3036, 3037, 3042,
7116 3042, 3050, 3051, 3052, 3057, 3058, 3059, 3060, 3061, 3062,
7117 3063, 3066, 3066, 3077, 3077, 3090, 3091, 3092, 3097, 3098,
7118 3099, 3100, 3101, 3102, 3105, 3111, 3111, 3120, 3126, 3126,
7119 3136, 3136, 3149, 3149, 3159, 3160, 3161, 3166, 3167, 3168,
7120 3169, 3170, 3171, 3172, 3173, 3174, 3175, 3176, 3179, 3185,
7121 3185, 3194, 3200, 3200, 3209, 3215, 3221, 3221, 3230, 3231,
7122 3234, 3234, 3245, 3245, 3257, 3257, 3267, 3268, 3269, 3275,
7123 3276, 3279, 3279, 3290, 3298, 3298, 3311, 3312, 3313, 3319,
7124 3319, 3327, 3328, 3329, 3334, 3335, 3336, 3337, 3338, 3339,
7125 3340, 3343, 3349, 3349, 3358, 3358, 3369, 3370, 3371, 3376,
7126 3376, 3384, 3385, 3386, 3391, 3392, 3393, 3394, 3395, 3398,
7127 3398, 3407, 3413, 3419, 3425, 3425, 3434, 3434, 3445, 3446,
7128 3447, 3452, 3453, 3456
7129 };
7130
7131 void
7132 Dhcp6Parser::yy_stack_print_ () const
7133 {
7134 *yycdebug_ << "Stack now";
7135 for (stack_type::const_iterator
7136 i = yystack_.begin (),
7137 i_end = yystack_.end ();
7138 i != i_end; ++i)
7139 *yycdebug_ << ' ' << int (i->state);
7140 *yycdebug_ << '\n';
7141 }
7142
7143 void
7144 Dhcp6Parser::yy_reduce_print_ (int yyrule) const
7145 {
7146 int yylno = yyrline_[yyrule];
7147 int yynrhs = yyr2_[yyrule];
7148 // Print the symbols being reduced, and their result.
7149 *yycdebug_ << "Reducing stack by rule " << yyrule - 1
7150 << " (line " << yylno << "):\n";
7151 // The symbols being reduced.
7152 for (int yyi = 0; yyi < yynrhs; yyi++)
7153 YY_SYMBOL_PRINT (" $" << yyi + 1 << " =",
7154 yystack_[(yynrhs) - (yyi + 1)]);
7155 }
7156#endif // PARSER6_DEBUG
7157
7158
7159#line 14 "dhcp6_parser.yy"
7160} } // isc::dhcp
7161#line 7162 "dhcp6_parser.cc"
7162
7163#line 3462 "dhcp6_parser.yy"
7164
7165
7166void
7168 const std::string& what)
7169{
7170 ctx.error(loc, what);
7171}
Notes: IntElement type is changed to int64_t.
Definition data.h:776
symbol_kind_type token() const YY_NOEXCEPT
const symbol_type & lookahead() const YY_NOEXCEPT
context(const Dhcp6Parser &yyparser, const symbol_type &yyla)
int expected_tokens(symbol_kind_type yyarg[], int yyargn) const
Put in YYARG at most YYARGN of the expected tokens, and return the number of tokens stored in YYARG.
T & emplace()
Instantiate an empty T in here.
T & as() YY_NOEXCEPT
Accessor to a built T.
symbol_kind::symbol_kind_type symbol_kind_type
(Internal) symbol kind.
static const symbol_kind_type YYNTOKENS
The number of tokens.
Dhcp6Parser(isc::dhcp::Parser6Context &ctx_yyarg)
Build a parser object.
location location_type
Symbol locations.
virtual int parse()
Parse.
static std::string symbol_name(symbol_kind_type yysymbol)
The user-facing name of the symbol whose (internal) number is YYSYMBOL.
virtual void error(const location_type &loc, const std::string &msg)
Report a syntax error.
Evaluation context, an interface to the expression evaluation.
#define yylex
Definition d2_lexer.cc:27
#define YYCDEBUG
Definition d2_parser.cc:132
#define YYABORT
Definition d2_parser.cc:143
#define YYLLOC_DEFAULT(Current, Rhs, N)
Definition d2_parser.cc:87
#define YY_REDUCE_PRINT(Rule)
Definition d2_parser.cc:134
#define YY_SYMBOL_PRINT(Title, Symbol)
Definition d2_parser.cc:133
#define YYCASE_(N, S)
#define YY_STACK_PRINT()
Definition d2_parser.cc:135
#define YY_(msgid)
Definition d2_parser.cc:67
#define YYACCEPT
Definition d2_parser.cc:142
#define YYERROR
Definition d2_parser.cc:144
#define YY_RVREF(Type)
Definition d2_parser.h:87
#define YY_CPLUSPLUS
Definition d2_parser.h:73
#define YY_CAST(Type, Val)
Definition d2_parser.h:179
#define YY_MOVE_REF(Type)
Definition d2_parser.h:86
#define YY_NOEXCEPT
Definition d2_parser.h:96
#define YY_ATTRIBUTE_UNUSED
Definition d2_parser.h:126
#define YY_MOVE
Definition d2_parser.h:84
#define YY_NOTHROW
Definition d2_parser.h:97
#define YY_USE(E)
Definition d2_parser.h:132
Define the isc::dhcp::parser class.
void merge(ElementPtr element, ConstElementPtr other)
Merges the data from other into element. (on the first level).
Definition data.cc:1282
boost::shared_ptr< const Element > ConstElementPtr
Definition data.h:30
boost::shared_ptr< Element > ElementPtr
Definition data.h:29
@ error
Definition db_log.h:126
Defines the logger used by the top-level component of kea-lfc.
value_type value
The semantic value.
location_type location
The location.
void move(basic_symbol &s)
Destructive move, s is emptied into this.
void clear() YY_NOEXCEPT
Destroy contents, and record that is empty.
bool empty() const YY_NOEXCEPT
Whether empty.
symbol_kind_type kind() const YY_NOEXCEPT
The (internal) type number (corresponding to type).
symbol_kind_type kind_
The symbol kind.
"External" symbols: returned by the scanner.
Syntax errors thrown from user actions.
~syntax_error() YY_NOEXCEPT YY_NOTHROW