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