Nftables  0.9
Nftables like the firewall for Linux but next generation
parser_bison.c
1 /* A Bison parser, made by GNU Bison 3.0.4. */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5  Copyright (C) 1984, 1989-1990, 2000-2015 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 <http://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 /* C LALR(1) parser skeleton written by Richard Stallman, by
34  simplifying the original so-called "semantic" parser. */
35 
36 /* All symbols defined below should begin with yy or YY, to avoid
37  infringing on user name space. This should be done even for local
38  variables, as they might otherwise be expanded by user macros.
39  There are some unavoidable exceptions within include files to
40  define necessary library symbols; they are noted "INFRINGES ON
41  USER NAME SPACE" below. */
42 
43 /* Identify Bison output. */
44 #define YYBISON 1
45 
46 /* Bison version. */
47 #define YYBISON_VERSION "3.0.4"
48 
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51 
52 /* Pure parsers. */
53 #define YYPURE 1
54 
55 /* Push parsers. */
56 #define YYPUSH 0
57 
58 /* Pull parsers. */
59 #define YYPULL 1
60 
61 
62 /* Substitute the variable and function names. */
63 #define yyparse nft_parse
64 #define yylex nft_lex
65 #define yyerror nft_error
66 #define yydebug nft_debug
67 #define yynerrs nft_nerrs
68 
69 
70 /* Copy the first part of user declarations. */
71 #line 11 "parser_bison.y" /* yacc.c:339 */
72 
73 
74 #include <stddef.h>
75 #include <stdio.h>
76 #include <inttypes.h>
77 #include <syslog.h>
78 #include <netinet/ip.h>
79 #include <netinet/if_ether.h>
80 #include <linux/netfilter.h>
81 #include <linux/netfilter/nf_tables.h>
82 #include <linux/netfilter/nf_conntrack_tuple_common.h>
83 #include <linux/netfilter/nf_nat.h>
84 #include <linux/netfilter/nf_log.h>
85 #include <netinet/ip_icmp.h>
86 #include <netinet/icmp6.h>
87 #include <libnftnl/common.h>
88 #include <libnftnl/set.h>
89 
90 #include <rule.h>
91 #include <statement.h>
92 #include <expression.h>
93 #include <utils.h>
94 #include <parser.h>
95 #include <erec.h>
96 
97 #include "parser_bison.h"
98 
99 void parser_init(struct mnl_socket *nf_sock, struct nft_cache *cache,
100  struct parser_state *state, struct list_head *msgs)
101 {
102  memset(state, 0, sizeof(*state));
103  init_list_head(&state->cmds);
104  init_list_head(&state->top_scope.symbols);
105  state->msgs = msgs;
106  state->scopes[0] = scope_init(&state->top_scope, NULL);
107  state->ectx.cache = cache;
108  state->ectx.msgs = msgs;
109  state->ectx.nf_sock = nf_sock;
110 }
111 
112 static void yyerror(struct location *loc, void *scanner,
113  struct parser_state *state, const char *s)
114 {
115  erec_queue(error(loc, "%s", s), state->msgs);
116 }
117 
118 static struct scope *current_scope(const struct parser_state *state)
119 {
120  return state->scopes[state->scope];
121 }
122 
123 static void open_scope(struct parser_state *state, struct scope *scope)
124 {
125  assert(state->scope < array_size(state->scopes) - 1);
126  scope_init(scope, current_scope(state));
127  state->scopes[++state->scope] = scope;
128 }
129 
130 static void close_scope(struct parser_state *state)
131 {
132  assert(state->scope > 0);
133  state->scope--;
134 }
135 
136 static void location_init(void *scanner, struct parser_state *state,
137  struct location *loc)
138 {
139  memset(loc, 0, sizeof(*loc));
140  loc->indesc = state->indesc;
141 }
142 
143 static void location_update(struct location *loc, struct location *rhs, int n)
144 {
145  if (n) {
146  loc->indesc = rhs[n].indesc;
147  loc->token_offset = rhs[1].token_offset;
148  loc->line_offset = rhs[1].line_offset;
149  loc->first_line = rhs[1].first_line;
150  loc->first_column = rhs[1].first_column;
151  loc->last_line = rhs[n].last_line;
152  loc->last_column = rhs[n].last_column;
153  } else {
154  loc->indesc = rhs[0].indesc;
155  loc->token_offset = rhs[0].token_offset;
156  loc->line_offset = rhs[0].line_offset;
157  loc->first_line = loc->last_line = rhs[0].last_line;
158  loc->first_column = loc->last_column = rhs[0].last_column;
159  }
160 }
161 
162 #define YYLLOC_DEFAULT(Current, Rhs, N) location_update(&Current, Rhs, N)
163 
164 #define symbol_value(loc, str) \
165  symbol_expr_alloc(loc, SYMBOL_VALUE, current_scope(state), str)
166 
167 #line 168 "parser_bison.c" /* yacc.c:339 */
168 
169 # ifndef YY_NULLPTR
170 # if defined __cplusplus && 201103L <= __cplusplus
171 # define YY_NULLPTR nullptr
172 # else
173 # define YY_NULLPTR 0
174 # endif
175 # endif
176 
177 /* Enabling verbose error messages. */
178 #ifdef YYERROR_VERBOSE
179 # undef YYERROR_VERBOSE
180 # define YYERROR_VERBOSE 1
181 #else
182 # define YYERROR_VERBOSE 1
183 #endif
184 
185 /* In a future release of Bison, this section will be replaced
186  by #include "y.tab.h". */
187 #ifndef YY_NFT_PARSER_BISON_H_INCLUDED
188 # define YY_NFT_PARSER_BISON_H_INCLUDED
189 /* Debug traces. */
190 #ifndef YYDEBUG
191 # define YYDEBUG 1
192 #endif
193 #if YYDEBUG
194 extern int nft_debug;
195 #endif
196 
197 /* Token type. */
198 #ifndef YYTOKENTYPE
199 # define YYTOKENTYPE
200  enum yytokentype
201  {
202  TOKEN_EOF = 0,
203  JUNK = 258,
204  NEWLINE = 259,
205  COLON = 260,
206  SEMICOLON = 261,
207  COMMA = 262,
208  DOT = 263,
209  EQ = 264,
210  NEQ = 265,
211  LT = 266,
212  GT = 267,
213  GTE = 268,
214  LTE = 269,
215  LSHIFT = 270,
216  RSHIFT = 271,
217  AMPERSAND = 272,
218  CARET = 273,
219  NOT = 274,
220  SLASH = 275,
221  ASTERISK = 276,
222  DASH = 277,
223  AT = 278,
224  VMAP = 279,
225  LOOKUP = 280,
226  INCLUDE = 281,
227  DEFINE = 282,
228  FIB = 283,
229  HOOK = 284,
230  DEVICE = 285,
231  TABLE = 286,
232  TABLES = 287,
233  CHAIN = 288,
234  CHAINS = 289,
235  RULE = 290,
236  RULES = 291,
237  SETS = 292,
238  SET = 293,
239  ELEMENT = 294,
240  MAP = 295,
241  MAPS = 296,
242  HANDLE = 297,
243  RULESET = 298,
244  TRACE = 299,
245  INET = 300,
246  NETDEV = 301,
247  ADD = 302,
248  UPDATE = 303,
249  REPLACE = 304,
250  CREATE = 305,
251  INSERT = 306,
252  DELETE = 307,
253  LIST = 308,
254  RESET = 309,
255  FLUSH = 310,
256  RENAME = 311,
257  DESCRIBE = 312,
258  EXPORT = 313,
259  MONITOR = 314,
260  ALL = 315,
261  ACCEPT = 316,
262  DROP = 317,
263  CONTINUE = 318,
264  JUMP = 319,
265  GOTO = 320,
266  RETURN = 321,
267  TO = 322,
268  CONSTANT = 323,
269  INTERVAL = 324,
270  TIMEOUT = 325,
271  GC_INTERVAL = 326,
272  ELEMENTS = 327,
273  POLICY = 328,
274  MEMORY = 329,
275  PERFORMANCE = 330,
276  SIZE = 331,
277  FLOW = 332,
278  NUM = 333,
279  STRING = 334,
280  QUOTED_STRING = 335,
281  ASTERISK_STRING = 336,
282  LL_HDR = 337,
283  NETWORK_HDR = 338,
284  TRANSPORT_HDR = 339,
285  BRIDGE = 340,
286  ETHER = 341,
287  SADDR = 342,
288  DADDR = 343,
289  TYPE = 344,
290  VLAN = 345,
291  ID = 346,
292  CFI = 347,
293  PCP = 348,
294  ARP = 349,
295  HTYPE = 350,
296  PTYPE = 351,
297  HLEN = 352,
298  PLEN = 353,
299  OPERATION = 354,
300  IP = 355,
301  HDRVERSION = 356,
302  HDRLENGTH = 357,
303  DSCP = 358,
304  ECN = 359,
305  LENGTH = 360,
306  FRAG_OFF = 361,
307  TTL = 362,
308  PROTOCOL = 363,
309  CHECKSUM = 364,
310  ICMP = 365,
311  CODE = 366,
312  SEQUENCE = 367,
313  GATEWAY = 368,
314  MTU = 369,
315  OPTIONS = 370,
316  IP6 = 371,
317  PRIORITY = 372,
318  FLOWLABEL = 373,
319  NEXTHDR = 374,
320  HOPLIMIT = 375,
321  ICMP6 = 376,
322  PPTR = 377,
323  MAXDELAY = 378,
324  AH = 379,
325  RESERVED = 380,
326  SPI = 381,
327  ESP = 382,
328  COMP = 383,
329  FLAGS = 384,
330  CPI = 385,
331  UDP = 386,
332  SPORT = 387,
333  DPORT = 388,
334  UDPLITE = 389,
335  CSUMCOV = 390,
336  TCP = 391,
337  ACKSEQ = 392,
338  DOFF = 393,
339  WINDOW = 394,
340  URGPTR = 395,
341  OPTION = 396,
342  ECHO = 397,
343  EOL = 398,
344  MAXSEG = 399,
345  NOOP = 400,
346  SACK = 401,
347  SACK0 = 402,
348  SACK1 = 403,
349  SACK2 = 404,
350  SACK3 = 405,
351  SACK_PERMITTED = 406,
352  TIMESTAMP = 407,
353  KIND = 408,
354  COUNT = 409,
355  LEFT = 410,
356  RIGHT = 411,
357  TSVAL = 412,
358  TSECR = 413,
359  DCCP = 414,
360  SCTP = 415,
361  VTAG = 416,
362  RT = 417,
363  RT0 = 418,
364  RT2 = 419,
365  SEG_LEFT = 420,
366  ADDR = 421,
367  HBH = 422,
368  FRAG = 423,
369  RESERVED2 = 424,
370  MORE_FRAGMENTS = 425,
371  DST = 426,
372  MH = 427,
373  META = 428,
374  MARK = 429,
375  IIF = 430,
376  IIFNAME = 431,
377  IIFTYPE = 432,
378  OIF = 433,
379  OIFNAME = 434,
380  OIFTYPE = 435,
381  SKUID = 436,
382  SKGID = 437,
383  NFTRACE = 438,
384  RTCLASSID = 439,
385  IBRIPORT = 440,
386  OBRIPORT = 441,
387  PKTTYPE = 442,
388  CPU = 443,
389  IIFGROUP = 444,
390  OIFGROUP = 445,
391  CGROUP = 446,
392  CLASSID = 447,
393  NEXTHOP = 448,
394  CT = 449,
395  L3PROTOCOL = 450,
396  PROTO_SRC = 451,
397  PROTO_DST = 452,
398  ZONE = 453,
399  COUNTER = 454,
400  NAME = 455,
401  PACKETS = 456,
402  BYTES = 457,
403  AVGPKT = 458,
404  COUNTERS = 459,
405  QUOTAS = 460,
406  LOG = 461,
407  PREFIX = 462,
408  GROUP = 463,
409  SNAPLEN = 464,
410  QUEUE_THRESHOLD = 465,
411  LEVEL = 466,
412  LIMIT = 467,
413  RATE = 468,
414  BURST = 469,
415  OVER = 470,
416  UNTIL = 471,
417  QUOTA = 472,
418  USED = 473,
419  NANOSECOND = 474,
420  MICROSECOND = 475,
421  MILLISECOND = 476,
422  SECOND = 477,
423  MINUTE = 478,
424  HOUR = 479,
425  DAY = 480,
426  WEEK = 481,
427  _REJECT = 482,
428  WITH = 483,
429  ICMPX = 484,
430  SNAT = 485,
431  DNAT = 486,
432  MASQUERADE = 487,
433  REDIRECT = 488,
434  RANDOM = 489,
435  FULLY_RANDOM = 490,
436  PERSISTENT = 491,
437  QUEUE = 492,
438  QUEUENUM = 493,
439  BYPASS = 494,
440  FANOUT = 495,
441  DUP = 496,
442  FWD = 497,
443  NUMGEN = 498,
444  INC = 499,
445  MOD = 500,
446  OFFSET = 501,
447  JHASH = 502,
448  SYMHASH = 503,
449  SEED = 504,
450  POSITION = 505,
451  COMMENT = 506,
452  XML = 507,
453  JSON = 508,
454  NOTRACK = 509,
455  EXISTS = 510,
456  MISSING = 511,
457  EXTHDR = 512
458  };
459 #endif
460 /* Tokens. */
461 #define TOKEN_EOF 0
462 #define JUNK 258
463 #define NEWLINE 259
464 #define COLON 260
465 #define SEMICOLON 261
466 #define COMMA 262
467 #define DOT 263
468 #define EQ 264
469 #define NEQ 265
470 #define LT 266
471 #define GT 267
472 #define GTE 268
473 #define LTE 269
474 #define LSHIFT 270
475 #define RSHIFT 271
476 #define AMPERSAND 272
477 #define CARET 273
478 #define NOT 274
479 #define SLASH 275
480 #define ASTERISK 276
481 #define DASH 277
482 #define AT 278
483 #define VMAP 279
484 #define LOOKUP 280
485 #define INCLUDE 281
486 #define DEFINE 282
487 #define FIB 283
488 #define HOOK 284
489 #define DEVICE 285
490 #define TABLE 286
491 #define TABLES 287
492 #define CHAIN 288
493 #define CHAINS 289
494 #define RULE 290
495 #define RULES 291
496 #define SETS 292
497 #define SET 293
498 #define ELEMENT 294
499 #define MAP 295
500 #define MAPS 296
501 #define HANDLE 297
502 #define RULESET 298
503 #define TRACE 299
504 #define INET 300
505 #define NETDEV 301
506 #define ADD 302
507 #define UPDATE 303
508 #define REPLACE 304
509 #define CREATE 305
510 #define INSERT 306
511 #define DELETE 307
512 #define LIST 308
513 #define RESET 309
514 #define FLUSH 310
515 #define RENAME 311
516 #define DESCRIBE 312
517 #define EXPORT 313
518 #define MONITOR 314
519 #define ALL 315
520 #define ACCEPT 316
521 #define DROP 317
522 #define CONTINUE 318
523 #define JUMP 319
524 #define GOTO 320
525 #define RETURN 321
526 #define TO 322
527 #define CONSTANT 323
528 #define INTERVAL 324
529 #define TIMEOUT 325
530 #define GC_INTERVAL 326
531 #define ELEMENTS 327
532 #define POLICY 328
533 #define MEMORY 329
534 #define PERFORMANCE 330
535 #define SIZE 331
536 #define FLOW 332
537 #define NUM 333
538 #define STRING 334
539 #define QUOTED_STRING 335
540 #define ASTERISK_STRING 336
541 #define LL_HDR 337
542 #define NETWORK_HDR 338
543 #define TRANSPORT_HDR 339
544 #define BRIDGE 340
545 #define ETHER 341
546 #define SADDR 342
547 #define DADDR 343
548 #define TYPE 344
549 #define VLAN 345
550 #define ID 346
551 #define CFI 347
552 #define PCP 348
553 #define ARP 349
554 #define HTYPE 350
555 #define PTYPE 351
556 #define HLEN 352
557 #define PLEN 353
558 #define OPERATION 354
559 #define IP 355
560 #define HDRVERSION 356
561 #define HDRLENGTH 357
562 #define DSCP 358
563 #define ECN 359
564 #define LENGTH 360
565 #define FRAG_OFF 361
566 #define TTL 362
567 #define PROTOCOL 363
568 #define CHECKSUM 364
569 #define ICMP 365
570 #define CODE 366
571 #define SEQUENCE 367
572 #define GATEWAY 368
573 #define MTU 369
574 #define OPTIONS 370
575 #define IP6 371
576 #define PRIORITY 372
577 #define FLOWLABEL 373
578 #define NEXTHDR 374
579 #define HOPLIMIT 375
580 #define ICMP6 376
581 #define PPTR 377
582 #define MAXDELAY 378
583 #define AH 379
584 #define RESERVED 380
585 #define SPI 381
586 #define ESP 382
587 #define COMP 383
588 #define FLAGS 384
589 #define CPI 385
590 #define UDP 386
591 #define SPORT 387
592 #define DPORT 388
593 #define UDPLITE 389
594 #define CSUMCOV 390
595 #define TCP 391
596 #define ACKSEQ 392
597 #define DOFF 393
598 #define WINDOW 394
599 #define URGPTR 395
600 #define OPTION 396
601 #define ECHO 397
602 #define EOL 398
603 #define MAXSEG 399
604 #define NOOP 400
605 #define SACK 401
606 #define SACK0 402
607 #define SACK1 403
608 #define SACK2 404
609 #define SACK3 405
610 #define SACK_PERMITTED 406
611 #define TIMESTAMP 407
612 #define KIND 408
613 #define COUNT 409
614 #define LEFT 410
615 #define RIGHT 411
616 #define TSVAL 412
617 #define TSECR 413
618 #define DCCP 414
619 #define SCTP 415
620 #define VTAG 416
621 #define RT 417
622 #define RT0 418
623 #define RT2 419
624 #define SEG_LEFT 420
625 #define ADDR 421
626 #define HBH 422
627 #define FRAG 423
628 #define RESERVED2 424
629 #define MORE_FRAGMENTS 425
630 #define DST 426
631 #define MH 427
632 #define META 428
633 #define MARK 429
634 #define IIF 430
635 #define IIFNAME 431
636 #define IIFTYPE 432
637 #define OIF 433
638 #define OIFNAME 434
639 #define OIFTYPE 435
640 #define SKUID 436
641 #define SKGID 437
642 #define NFTRACE 438
643 #define RTCLASSID 439
644 #define IBRIPORT 440
645 #define OBRIPORT 441
646 #define PKTTYPE 442
647 #define CPU 443
648 #define IIFGROUP 444
649 #define OIFGROUP 445
650 #define CGROUP 446
651 #define CLASSID 447
652 #define NEXTHOP 448
653 #define CT 449
654 #define L3PROTOCOL 450
655 #define PROTO_SRC 451
656 #define PROTO_DST 452
657 #define ZONE 453
658 #define COUNTER 454
659 #define NAME 455
660 #define PACKETS 456
661 #define BYTES 457
662 #define AVGPKT 458
663 #define COUNTERS 459
664 #define QUOTAS 460
665 #define LOG 461
666 #define PREFIX 462
667 #define GROUP 463
668 #define SNAPLEN 464
669 #define QUEUE_THRESHOLD 465
670 #define LEVEL 466
671 #define LIMIT 467
672 #define RATE 468
673 #define BURST 469
674 #define OVER 470
675 #define UNTIL 471
676 #define QUOTA 472
677 #define USED 473
678 #define NANOSECOND 474
679 #define MICROSECOND 475
680 #define MILLISECOND 476
681 #define SECOND 477
682 #define MINUTE 478
683 #define HOUR 479
684 #define DAY 480
685 #define WEEK 481
686 #define _REJECT 482
687 #define WITH 483
688 #define ICMPX 484
689 #define SNAT 485
690 #define DNAT 486
691 #define MASQUERADE 487
692 #define REDIRECT 488
693 #define RANDOM 489
694 #define FULLY_RANDOM 490
695 #define PERSISTENT 491
696 #define QUEUE 492
697 #define QUEUENUM 493
698 #define BYPASS 494
699 #define FANOUT 495
700 #define DUP 496
701 #define FWD 497
702 #define NUMGEN 498
703 #define INC 499
704 #define MOD 500
705 #define OFFSET 501
706 #define JHASH 502
707 #define SYMHASH 503
708 #define SEED 504
709 #define POSITION 505
710 #define COMMENT 506
711 #define XML 507
712 #define JSON 508
713 #define NOTRACK 509
714 #define EXISTS 510
715 #define MISSING 511
716 #define EXTHDR 512
717 
718 /* Value type. */
719 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
720 
721 union YYSTYPE
722 {
723 #line 128 "parser_bison.y" /* yacc.c:355 */
724 
725  uint64_t val;
726  const char * string;
727 
728  struct list_head *list;
729  struct cmd *cmd;
730  struct handle handle;
731  struct table *table;
732  struct chain *chain;
733  struct rule *rule;
734  struct stmt *stmt;
735  struct expr *expr;
736  struct set *set;
737  struct obj *obj;
738  struct counter *counter;
739  struct quota *quota;
740  struct ct *ct;
741  const struct datatype *datatype;
742  struct handle_spec handle_spec;
743  struct position_spec position_spec;
744  const struct exthdr_desc *exthdr_desc;
745 
746 #line 747 "parser_bison.c" /* yacc.c:355 */
747 };
748 
749 typedef union YYSTYPE YYSTYPE;
750 # define YYSTYPE_IS_TRIVIAL 1
751 # define YYSTYPE_IS_DECLARED 1
752 #endif
753 
754 /* Location type. */
755 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
756 typedef struct YYLTYPE YYLTYPE;
757 struct YYLTYPE
758 {
759  int first_line;
760  int first_column;
761  int last_line;
762  int last_column;
763 };
764 # define YYLTYPE_IS_DECLARED 1
765 # define YYLTYPE_IS_TRIVIAL 1
766 #endif
767 
768 
769 
770 int nft_parse (void *scanner, struct parser_state *state);
771 
772 #endif /* !YY_NFT_PARSER_BISON_H_INCLUDED */
773 
774 /* Copy the second part of user declarations. */
775 
776 #line 777 "parser_bison.c" /* yacc.c:358 */
777 
778 #ifdef short
779 # undef short
780 #endif
781 
782 #ifdef YYTYPE_UINT8
783 typedef YYTYPE_UINT8 yytype_uint8;
784 #else
785 typedef unsigned char yytype_uint8;
786 #endif
787 
788 #ifdef YYTYPE_INT8
789 typedef YYTYPE_INT8 yytype_int8;
790 #else
791 typedef signed char yytype_int8;
792 #endif
793 
794 #ifdef YYTYPE_UINT16
795 typedef YYTYPE_UINT16 yytype_uint16;
796 #else
797 typedef unsigned short int yytype_uint16;
798 #endif
799 
800 #ifdef YYTYPE_INT16
801 typedef YYTYPE_INT16 yytype_int16;
802 #else
803 typedef short int yytype_int16;
804 #endif
805 
806 #ifndef YYSIZE_T
807 # ifdef __SIZE_TYPE__
808 # define YYSIZE_T __SIZE_TYPE__
809 # elif defined size_t
810 # define YYSIZE_T size_t
811 # elif ! defined YYSIZE_T
812 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
813 # define YYSIZE_T size_t
814 # else
815 # define YYSIZE_T unsigned int
816 # endif
817 #endif
818 
819 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
820 
821 #ifndef YY_
822 # if defined YYENABLE_NLS && YYENABLE_NLS
823 # if ENABLE_NLS
824 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
825 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
826 # endif
827 # endif
828 # ifndef YY_
829 # define YY_(Msgid) Msgid
830 # endif
831 #endif
832 
833 #ifndef YY_ATTRIBUTE
834 # if (defined __GNUC__ \
835  && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
836  || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
837 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
838 # else
839 # define YY_ATTRIBUTE(Spec) /* empty */
840 # endif
841 #endif
842 
843 #ifndef YY_ATTRIBUTE_PURE
844 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
845 #endif
846 
847 #ifndef YY_ATTRIBUTE_UNUSED
848 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
849 #endif
850 
851 #if !defined _Noreturn \
852  && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
853 # if defined _MSC_VER && 1200 <= _MSC_VER
854 # define _Noreturn __declspec (noreturn)
855 # else
856 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
857 # endif
858 #endif
859 
860 /* Suppress unused-variable warnings by "using" E. */
861 #if ! defined lint || defined __GNUC__
862 # define YYUSE(E) ((void) (E))
863 #else
864 # define YYUSE(E) /* empty */
865 #endif
866 
867 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
868 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
869 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
870  _Pragma ("GCC diagnostic push") \
871  _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
872  _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
873 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
874  _Pragma ("GCC diagnostic pop")
875 #else
876 # define YY_INITIAL_VALUE(Value) Value
877 #endif
878 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
879 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
880 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
881 #endif
882 #ifndef YY_INITIAL_VALUE
883 # define YY_INITIAL_VALUE(Value) /* Nothing. */
884 #endif
885 
886 
887 #if ! defined yyoverflow || YYERROR_VERBOSE
888 
889 /* The parser invokes alloca or malloc; define the necessary symbols. */
890 
891 # ifdef YYSTACK_USE_ALLOCA
892 # if YYSTACK_USE_ALLOCA
893 # ifdef __GNUC__
894 # define YYSTACK_ALLOC __builtin_alloca
895 # elif defined __BUILTIN_VA_ARG_INCR
896 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
897 # elif defined _AIX
898 # define YYSTACK_ALLOC __alloca
899 # elif defined _MSC_VER
900 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
901 # define alloca _alloca
902 # else
903 # define YYSTACK_ALLOC alloca
904 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
905 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
906  /* Use EXIT_SUCCESS as a witness for stdlib.h. */
907 # ifndef EXIT_SUCCESS
908 # define EXIT_SUCCESS 0
909 # endif
910 # endif
911 # endif
912 # endif
913 # endif
914 
915 # ifdef YYSTACK_ALLOC
916  /* Pacify GCC's 'empty if-body' warning. */
917 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
918 # ifndef YYSTACK_ALLOC_MAXIMUM
919  /* The OS might guarantee only one guard page at the bottom of the stack,
920  and a page size can be as small as 4096 bytes. So we cannot safely
921  invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
922  to allow for a few compiler-allocated temporary stack slots. */
923 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
924 # endif
925 # else
926 # define YYSTACK_ALLOC YYMALLOC
927 # define YYSTACK_FREE YYFREE
928 # ifndef YYSTACK_ALLOC_MAXIMUM
929 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
930 # endif
931 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
932  && ! ((defined YYMALLOC || defined malloc) \
933  && (defined YYFREE || defined free)))
934 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
935 # ifndef EXIT_SUCCESS
936 # define EXIT_SUCCESS 0
937 # endif
938 # endif
939 # ifndef YYMALLOC
940 # define YYMALLOC malloc
941 # if ! defined malloc && ! defined EXIT_SUCCESS
942 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
943 # endif
944 # endif
945 # ifndef YYFREE
946 # define YYFREE free
947 # if ! defined free && ! defined EXIT_SUCCESS
948 void free (void *); /* INFRINGES ON USER NAME SPACE */
949 # endif
950 # endif
951 # endif
952 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
953 
954 
955 #if (! defined yyoverflow \
956  && (! defined __cplusplus \
957  || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
958  && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
959 
960 /* A type that is properly aligned for any stack member. */
961 union yyalloc
962 {
963  yytype_int16 yyss_alloc;
964  YYSTYPE yyvs_alloc;
965  YYLTYPE yyls_alloc;
966 };
967 
968 /* The size of the maximum gap between one aligned stack and the next. */
969 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
970 
971 /* The size of an array large to enough to hold all stacks, each with
972  N elements. */
973 # define YYSTACK_BYTES(N) \
974  ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
975  + 2 * YYSTACK_GAP_MAXIMUM)
976 
977 # define YYCOPY_NEEDED 1
978 
979 /* Relocate STACK from its old location to the new one. The
980  local variables YYSIZE and YYSTACKSIZE give the old and new number of
981  elements in the stack, and YYPTR gives the new location of the
982  stack. Advance YYPTR to a properly aligned location for the next
983  stack. */
984 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
985  do \
986  { \
987  YYSIZE_T yynewbytes; \
988  YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
989  Stack = &yyptr->Stack_alloc; \
990  yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
991  yyptr += yynewbytes / sizeof (*yyptr); \
992  } \
993  while (0)
994 
995 #endif
996 
997 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
998 /* Copy COUNT objects from SRC to DST. The source and destination do
999  not overlap. */
1000 # ifndef YYCOPY
1001 # if defined __GNUC__ && 1 < __GNUC__
1002 # define YYCOPY(Dst, Src, Count) \
1003  __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
1004 # else
1005 # define YYCOPY(Dst, Src, Count) \
1006  do \
1007  { \
1008  YYSIZE_T yyi; \
1009  for (yyi = 0; yyi < (Count); yyi++) \
1010  (Dst)[yyi] = (Src)[yyi]; \
1011  } \
1012  while (0)
1013 # endif
1014 # endif
1015 #endif /* !YYCOPY_NEEDED */
1016 
1017 /* YYFINAL -- State number of the termination state. */
1018 #define YYFINAL 2
1019 /* YYLAST -- Last index in YYTABLE. */
1020 #define YYLAST 3836
1021 
1022 /* YYNTOKENS -- Number of terminals. */
1023 #define YYNTOKENS 267
1024 /* YYNNTS -- Number of nonterminals. */
1025 #define YYNNTS 256
1026 /* YYNRULES -- Number of rules. */
1027 #define YYNRULES 764
1028 /* YYNSTATES -- Number of states. */
1029 #define YYNSTATES 1181
1030 
1031 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
1032  by yylex, with out-of-bounds checking. */
1033 #define YYUNDEFTOK 2
1034 #define YYMAXUTOK 512
1035 
1036 #define YYTRANSLATE(YYX) \
1037  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1038 
1039 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1040  as returned by yylex, without out-of-bounds checking. */
1041 static const yytype_uint16 yytranslate[] =
1042 {
1043  0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1044  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1045  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1046  2, 2, 2, 2, 2, 2, 261, 2, 2, 2,
1047  262, 263, 2, 2, 2, 2, 2, 2, 2, 2,
1048  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1049  2, 258, 2, 2, 2, 2, 2, 2, 2, 2,
1050  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1051  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1052  2, 265, 2, 266, 2, 2, 2, 2, 2, 2,
1053  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1054  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1055  2, 2, 2, 259, 264, 260, 2, 2, 2, 2,
1056  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1057  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1058  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1059  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1060  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1061  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1062  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1063  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1064  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1065  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1066  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1067  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1068  2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1069  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1070  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1071  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1072  35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1073  45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1074  55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1075  65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1076  75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1077  85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1078  95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1079  105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1080  115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1081  125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1082  135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1083  145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1084  155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1085  165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1086  175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1087  185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1088  195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1089  205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1090  215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1091  225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
1092  235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
1093  245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1094  255, 256, 257
1095 };
1096 
1097 #if YYDEBUG
1098  /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1099 static const yytype_uint16 yyrline[] =
1100 {
1101  0, 684, 684, 685, 702, 703, 706, 707, 710, 718,
1102  731, 739, 740, 741, 742, 773, 774, 775, 776, 777,
1103  778, 779, 780, 781, 782, 783, 784, 785, 788, 792,
1104  799, 803, 811, 815, 819, 826, 833, 837, 846, 850,
1105  854, 869, 875, 879, 886, 890, 898, 905, 912, 916,
1106  925, 929, 933, 948, 954, 958, 962, 966, 970, 974,
1107  978, 982, 986, 1001, 1005, 1009, 1013, 1017, 1021, 1025,
1108  1029, 1033, 1037, 1041, 1045, 1049, 1053, 1057, 1061, 1065,
1109  1069, 1073, 1086, 1108, 1112, 1116, 1120, 1124, 1128, 1134,
1110  1138, 1142, 1146, 1150, 1154, 1160, 1167, 1173, 1181, 1190,
1111  1191, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1204,
1112  1205, 1208, 1209, 1212, 1221, 1227, 1239, 1240, 1241, 1242,
1113  1243, 1254, 1264, 1274, 1285, 1296, 1317, 1323, 1324, 1325,
1114  1326, 1327, 1328, 1336, 1341, 1342, 1343, 1344, 1349, 1354,
1115  1359, 1364, 1369, 1372, 1373, 1376, 1380, 1383, 1384, 1385,
1116  1389, 1394, 1395, 1396, 1397, 1406, 1415, 1424, 1429, 1434,
1117  1437, 1441, 1447, 1448, 1451, 1460, 1472, 1485, 1490, 1491,
1118  1492, 1493, 1500, 1501, 1502, 1503, 1510, 1511, 1512, 1513,
1119  1520, 1521, 1522, 1523, 1526, 1552, 1553, 1556, 1557, 1560,
1120  1571, 1572, 1575, 1578, 1579, 1580, 1583, 1597, 1598, 1601,
1121  1602, 1603, 1604, 1605, 1606, 1609, 1617, 1624, 1631, 1638,
1122  1645, 1652, 1659, 1667, 1675, 1679, 1686, 1693, 1705, 1709,
1123  1716, 1720, 1726, 1738, 1744, 1751, 1752, 1753, 1754, 1755,
1124  1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765,
1125  1766, 1767, 1768, 1771, 1775, 1781, 1787, 1792, 1801, 1806,
1126  1811, 1814, 1820, 1821, 1823, 1827, 1835, 1839, 1842, 1846,
1127  1852, 1853, 1856, 1862, 1866, 1869, 1874, 1879, 1884, 1889,
1128  1894, 1900, 1926, 1930, 1934, 1938, 1942, 1948, 1952, 1955,
1129  1959, 1965, 1974, 1994, 1995, 1996, 1999, 2000, 2003, 2004,
1130  2018, 2033, 2041, 2042, 2043, 2046, 2047, 2048, 2049, 2063,
1131  2064, 2065, 2066, 2067, 2070, 2073, 2080, 2084, 2094, 2104,
1132  2113, 2119, 2122, 2127, 2134, 2135, 2154, 2160, 2161, 2162,
1133  2165, 2169, 2173, 2178, 2183, 2187, 2191, 2197, 2198, 2201,
1134  2204, 2208, 2213, 2219, 2220, 2223, 2226, 2230, 2234, 2238,
1135  2243, 2250, 2255, 2263, 2270, 2271, 2277, 2278, 2279, 2282,
1136  2283, 2286, 2292, 2296, 2299, 2304, 2310, 2311, 2317, 2318,
1137  2321, 2322, 2325, 2331, 2340, 2341, 2344, 2351, 2360, 2366,
1138  2370, 2373, 2379, 2385, 2401, 2402, 2409, 2418, 2429, 2430,
1139  2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, 2440,
1140  2443, 2466, 2467, 2468, 2471, 2472, 2473, 2474, 2475, 2478,
1141  2482, 2485, 2486, 2490, 2496, 2497, 2503, 2504, 2510, 2511,
1142  2517, 2520, 2521, 2540, 2546, 2552, 2563, 2564, 2565, 2568,
1143  2574, 2575, 2576, 2579, 2586, 2591, 2596, 2599, 2603, 2607,
1144  2613, 2614, 2621, 2627, 2628, 2631, 2637, 2641, 2644, 2648,
1145  2654, 2655, 2658, 2659, 2662, 2663, 2666, 2677, 2685, 2705,
1146  2713, 2716, 2717, 2720, 2735, 2742, 2748, 2752, 2756, 2760,
1147  2766, 2772, 2780, 2781, 2782, 2785, 2786, 2790, 2796, 2797,
1148  2803, 2804, 2810, 2811, 2817, 2820, 2821, 2840, 2841, 2844,
1149  2852, 2853, 2854, 2855, 2856, 2857, 2858, 2859, 2860, 2863,
1150  2864, 2865, 2866, 2867, 2874, 2881, 2888, 2895, 2902, 2909,
1151  2916, 2923, 2930, 2937, 2946, 2947, 2948, 2949, 2950, 2951,
1152  2954, 2958, 2962, 2966, 2970, 2974, 2980, 2984, 2988, 3002,
1153  3003, 3006, 3007, 3008, 3009, 3012, 3013, 3014, 3015, 3016,
1154  3017, 3018, 3019, 3020, 3021, 3022, 3023, 3024, 3025, 3026,
1155  3027, 3028, 3029, 3032, 3036, 3040, 3053, 3059, 3060, 3063,
1156  3064, 3067, 3073, 3078, 3083, 3089, 3095, 3096, 3099, 3103,
1157  3116, 3131, 3132, 3133, 3134, 3136, 3137, 3138, 3139, 3140,
1158  3141, 3142, 3145, 3146, 3147, 3148, 3151, 3157, 3165, 3166,
1159  3169, 3173, 3195, 3210, 3216, 3217, 3218, 3219, 3220, 3221,
1160  3222, 3223, 3224, 3225, 3226, 3227, 3228, 3229, 3230, 3231,
1161  3234, 3244, 3245, 3246, 3249, 3255, 3256, 3257, 3260, 3266,
1162  3267, 3268, 3269, 3272, 3278, 3279, 3280, 3281, 3282, 3285,
1163  3291, 3292, 3293, 3294, 3295, 3296, 3297, 3298, 3299, 3300,
1164  3301, 3302, 3305, 3311, 3312, 3313, 3314, 3315, 3316, 3317,
1165  3320, 3326, 3327, 3328, 3329, 3330, 3331, 3332, 3333, 3334,
1166  3336, 3342, 3343, 3344, 3345, 3346, 3347, 3348, 3349, 3352,
1167  3358, 3359, 3360, 3361, 3362, 3365, 3371, 3372, 3375, 3381,
1168  3382, 3383, 3386, 3392, 3393, 3394, 3395, 3398, 3404, 3405,
1169  3406, 3407, 3410, 3414, 3418, 3425, 3426, 3427, 3428, 3429,
1170  3430, 3431, 3432, 3433, 3434, 3437, 3438, 3439, 3440, 3441,
1171  3442, 3443, 3444, 3445, 3446, 3447, 3448, 3451, 3452, 3453,
1172  3454, 3455, 3456, 3457, 3458, 3461, 3467, 3468, 3469, 3472,
1173  3478, 3479, 3480, 3481, 3484, 3485, 3486, 3487, 3488, 3489,
1174  3490, 3493, 3499, 3500, 3503, 3509, 3510, 3511, 3512, 3515,
1175  3521, 3527, 3533, 3536, 3542, 3543, 3544, 3545, 3546, 3547,
1176  3550, 3556, 3557, 3560, 3566, 3567, 3568, 3569, 3570, 3573,
1177  3587, 3588, 3589, 3590, 3591
1178 };
1179 #endif
1180 
1181 #if YYDEBUG || YYERROR_VERBOSE || 1
1182 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1183  First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1184 static const char *const yytname[] =
1185 {
1186  "\"end of file\"", "error", "$undefined", "\"junk\"", "\"newline\"",
1187  "\"colon\"", "\"semicolon\"", "\"comma\"", "\".\"", "\"==\"", "\"!=\"",
1188  "\"<\"", "\">\"", "\">=\"", "\"<=\"", "\"<<\"", "\">>\"", "\"&\"",
1189  "\"^\"", "\"!\"", "\"/\"", "\"*\"", "\"-\"", "\"@\"", "\"vmap\"",
1190  "\"lookup\"", "\"include\"", "\"define\"", "\"fib\"", "\"hook\"",
1191  "\"device\"", "\"table\"", "\"tables\"", "\"chain\"", "\"chains\"",
1192  "\"rule\"", "\"rules\"", "\"sets\"", "\"set\"", "\"element\"", "\"map\"",
1193  "\"maps\"", "\"handle\"", "\"ruleset\"", "\"trace\"", "\"inet\"",
1194  "\"netdev\"", "\"add\"", "\"update\"", "\"replace\"", "\"create\"",
1195  "\"insert\"", "\"delete\"", "\"list\"", "\"reset\"", "\"flush\"",
1196  "\"rename\"", "\"describe\"", "\"export\"", "\"monitor\"", "\"all\"",
1197  "\"accept\"", "\"drop\"", "\"continue\"", "\"jump\"", "\"goto\"",
1198  "\"return\"", "\"to\"", "\"constant\"", "\"interval\"", "\"timeout\"",
1199  "\"gc-interval\"", "\"elements\"", "\"policy\"", "\"memory\"",
1200  "\"performance\"", "\"size\"", "\"flow\"", "\"number\"", "\"string\"",
1201  "\"quoted string\"", "\"string with a trailing asterisk\"", "\"ll\"",
1202  "\"nh\"", "\"th\"", "\"bridge\"", "\"ether\"", "\"saddr\"", "\"daddr\"",
1203  "\"type\"", "\"vlan\"", "\"id\"", "\"cfi\"", "\"pcp\"", "\"arp\"",
1204  "\"htype\"", "\"ptype\"", "\"hlen\"", "\"plen\"", "\"operation\"",
1205  "\"ip\"", "\"version\"", "\"hdrlength\"", "\"dscp\"", "\"ecn\"",
1206  "\"length\"", "\"frag-off\"", "\"ttl\"", "\"protocol\"", "\"checksum\"",
1207  "\"icmp\"", "\"code\"", "\"seq\"", "\"gateway\"", "\"mtu\"",
1208  "\"options\"", "\"ip6\"", "\"priority\"", "\"flowlabel\"", "\"nexthdr\"",
1209  "\"hoplimit\"", "\"icmpv6\"", "\"param-problem\"", "\"max-delay\"",
1210  "\"ah\"", "\"reserved\"", "\"spi\"", "\"esp\"", "\"comp\"", "\"flags\"",
1211  "\"cpi\"", "\"udp\"", "\"sport\"", "\"dport\"", "\"udplite\"",
1212  "\"csumcov\"", "\"tcp\"", "\"ackseq\"", "\"doff\"", "\"window\"",
1213  "\"urgptr\"", "\"option\"", "\"echo\"", "\"eol\"", "\"maxseg\"",
1214  "\"noop\"", "\"sack\"", "\"sack0\"", "\"sack1\"", "\"sack2\"",
1215  "\"sack3\"", "\"sack-permitted\"", "\"timestamp\"", "\"kind\"",
1216  "\"count\"", "\"left\"", "\"right\"", "\"tsval\"", "\"tsecr\"",
1217  "\"dccp\"", "\"sctp\"", "\"vtag\"", "\"rt\"", "\"rt0\"", "\"rt2\"",
1218  "\"seg-left\"", "\"addr\"", "\"hbh\"", "\"frag\"", "\"reserved2\"",
1219  "\"more-fragments\"", "\"dst\"", "\"mh\"", "\"meta\"", "\"mark\"",
1220  "\"iif\"", "\"iifname\"", "\"iiftype\"", "\"oif\"", "\"oifname\"",
1221  "\"oiftype\"", "\"skuid\"", "\"skgid\"", "\"nftrace\"", "\"rtclassid\"",
1222  "\"ibriport\"", "\"obriport\"", "\"pkttype\"", "\"cpu\"", "\"iifgroup\"",
1223  "\"oifgroup\"", "\"cgroup\"", "\"classid\"", "\"nexthop\"", "\"ct\"",
1224  "\"l3proto\"", "\"proto-src\"", "\"proto-dst\"", "\"zone\"",
1225  "\"counter\"", "\"name\"", "\"packets\"", "\"bytes\"", "\"avgpkt\"",
1226  "\"counters\"", "\"quotas\"", "\"log\"", "\"prefix\"", "\"group\"",
1227  "\"snaplen\"", "\"queue-threshold\"", "\"level\"", "\"limit\"",
1228  "\"rate\"", "\"burst\"", "\"over\"", "\"until\"", "\"quota\"",
1229  "\"used\"", "\"nanosecond\"", "\"microsecond\"", "\"millisecond\"",
1230  "\"second\"", "\"minute\"", "\"hour\"", "\"day\"", "\"week\"",
1231  "\"reject\"", "\"with\"", "\"icmpx\"", "\"snat\"", "\"dnat\"",
1232  "\"masquerade\"", "\"redirect\"", "\"random\"", "\"fully-random\"",
1233  "\"persistent\"", "\"queue\"", "\"num\"", "\"bypass\"", "\"fanout\"",
1234  "\"dup\"", "\"fwd\"", "\"numgen\"", "\"inc\"", "\"mod\"", "\"offset\"",
1235  "\"jhash\"", "\"symhash\"", "\"seed\"", "\"position\"", "\"comment\"",
1236  "\"xml\"", "\"json\"", "\"notrack\"", "\"exists\"", "\"missing\"",
1237  "\"exthdr\"", "'='", "'{'", "'}'", "'$'", "'('", "')'", "'|'", "'['",
1238  "']'", "$accept", "input", "stmt_seperator", "opt_newline",
1239  "common_block", "line", "base_cmd", "add_cmd", "replace_cmd",
1240  "create_cmd", "insert_cmd", "delete_cmd", "list_cmd", "reset_cmd",
1241  "flush_cmd", "rename_cmd", "export_cmd", "monitor_cmd", "monitor_event",
1242  "monitor_object", "monitor_format", "export_format", "describe_cmd",
1243  "table_block_alloc", "table_options", "table_block", "chain_block_alloc",
1244  "chain_block", "set_block_alloc", "set_block", "set_block_expr",
1245  "set_flag_list", "set_flag", "map_block_alloc", "map_block",
1246  "set_mechanism", "set_policy_spec", "data_type", "type_identifier_list",
1247  "obj_block_alloc", "counter_block", "quota_block", "ct_block",
1248  "type_identifier", "hook_spec", "prio_spec", "dev_spec", "policy_spec",
1249  "chain_policy", "identifier", "string", "time_spec", "family_spec",
1250  "family_spec_explicit", "table_spec", "chain_spec", "chain_identifier",
1251  "set_spec", "set_identifier", "obj_spec", "obj_identifier",
1252  "handle_spec", "position_spec", "rule_position", "ruleid_spec",
1253  "comment_spec", "ruleset_spec", "rule", "rule_alloc", "stmt_list",
1254  "stmt", "verdict_stmt", "verdict_map_stmt", "verdict_map_expr",
1255  "verdict_map_list_expr", "verdict_map_list_member_expr", "counter_stmt",
1256  "counter_stmt_alloc", "counter_args", "counter_arg", "log_stmt",
1257  "log_stmt_alloc", "log_args", "log_arg", "level_type", "log_flags",
1258  "log_flags_tcp", "log_flag_tcp", "limit_stmt", "quota_mode",
1259  "quota_unit", "quota_used", "quota_stmt", "limit_mode", "limit_burst",
1260  "time_unit", "reject_stmt", "reject_stmt_alloc", "reject_opts",
1261  "nat_stmt", "nat_stmt_alloc", "concat_stmt_expr", "map_stmt_expr",
1262  "stmt_expr", "nat_stmt_args", "masq_stmt", "masq_stmt_alloc",
1263  "masq_stmt_args", "redir_stmt", "redir_stmt_alloc", "redir_stmt_arg",
1264  "dup_stmt", "fwd_stmt", "nf_nat_flags", "nf_nat_flag", "queue_stmt",
1265  "queue_stmt_alloc", "queue_stmt_args", "queue_stmt_arg",
1266  "queue_stmt_flags", "queue_stmt_flag", "set_elem_expr_stmt",
1267  "set_elem_expr_stmt_alloc", "set_stmt", "set_stmt_op", "flow_stmt",
1268  "flow_stmt_alloc", "flow_stmt_opts", "flow_stmt_opt", "match_stmt",
1269  "variable_expr", "symbol_expr", "integer_expr", "primary_expr",
1270  "fib_expr", "fib_result", "fib_flag", "fib_tuple", "shift_expr",
1271  "and_expr", "exclusive_or_expr", "inclusive_or_expr", "basic_expr",
1272  "concat_expr", "prefix_rhs_expr", "range_rhs_expr", "wildcard_rhs_expr",
1273  "multiton_rhs_expr", "map_expr", "expr", "set_expr", "set_list_expr",
1274  "set_list_member_expr", "flow_key_expr", "flow_key_expr_alloc",
1275  "set_elem_expr", "set_elem_expr_alloc", "set_elem_options",
1276  "set_elem_option", "set_lhs_expr", "set_rhs_expr", "initializer_expr",
1277  "counter_config", "counter_obj", "quota_config", "quota_obj",
1278  "ct_obj_kind", "ct_l4protoname", "ct_config", "ct_obj_alloc",
1279  "relational_expr", "list_rhs_expr", "rhs_expr", "shift_rhs_expr",
1280  "and_rhs_expr", "exclusive_or_rhs_expr", "inclusive_or_rhs_expr",
1281  "basic_rhs_expr", "concat_rhs_expr", "boolean_keys", "boolean_expr",
1282  "keyword_rhs_expr", "primary_rhs_expr", "relational_op", "verdict_expr",
1283  "meta_expr", "meta_key", "meta_key_qualified", "meta_key_unqualified",
1284  "meta_stmt", "offset_opt", "numgen_type", "numgen_expr", "hash_expr",
1285  "rt_expr", "rt_key", "ct_expr", "ct_key", "ct_key_dir",
1286  "ct_key_dir_optional", "list_stmt_expr", "ct_stmt_expr", "ct_stmt",
1287  "payload_stmt", "payload_expr", "payload_raw_expr", "payload_base_spec",
1288  "eth_hdr_expr", "eth_hdr_field", "vlan_hdr_expr", "vlan_hdr_field",
1289  "arp_hdr_expr", "arp_hdr_field", "ip_hdr_expr", "ip_hdr_field",
1290  "icmp_hdr_expr", "icmp_hdr_field", "ip6_hdr_expr", "ip6_hdr_field",
1291  "icmp6_hdr_expr", "icmp6_hdr_field", "auth_hdr_expr", "auth_hdr_field",
1292  "esp_hdr_expr", "esp_hdr_field", "comp_hdr_expr", "comp_hdr_field",
1293  "udp_hdr_expr", "udp_hdr_field", "udplite_hdr_expr", "udplite_hdr_field",
1294  "tcp_hdr_expr", "tcp_hdr_field", "tcp_hdr_option_type",
1295  "tcp_hdr_option_field", "dccp_hdr_expr", "dccp_hdr_field",
1296  "sctp_hdr_expr", "sctp_hdr_field", "exthdr_expr", "hbh_hdr_expr",
1297  "hbh_hdr_field", "rt_hdr_expr", "rt_hdr_field", "rt0_hdr_expr",
1298  "rt0_hdr_field", "rt2_hdr_expr", "rt2_hdr_field", "frag_hdr_expr",
1299  "frag_hdr_field", "dst_hdr_expr", "dst_hdr_field", "mh_hdr_expr",
1300  "mh_hdr_field", "exthdr_exists_expr", "exthdr_key", YY_NULLPTR
1301 };
1302 #endif
1303 
1304 # ifdef YYPRINT
1305 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1306  (internal) symbol number NUM (which must be that of a token). */
1307 static const yytype_uint16 yytoknum[] =
1308 {
1309  0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1310  265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1311  275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1312  285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1313  295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1314  305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1315  315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1316  325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1317  335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1318  345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1319  355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1320  365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1321  375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1322  385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1323  395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1324  405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1325  415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1326  425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1327  435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1328  445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1329  455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1330  465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1331  475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
1332  485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
1333  495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
1334  505, 506, 507, 508, 509, 510, 511, 512, 61, 123,
1335  125, 36, 40, 41, 124, 91, 93
1336 };
1337 # endif
1338 
1339 #define YYPACT_NINF -941
1340 
1341 #define yypact_value_is_default(Yystate) \
1342  (!!((Yystate) == (-941)))
1343 
1344 #define YYTABLE_NINF -466
1345 
1346 #define yytable_value_is_error(Yytable_value) \
1347  0
1348 
1349  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1350  STATE-NUM. */
1351 static const yytype_int16 yypact[] =
1352 {
1353  -941, 3619, -941, 254, -941, -941, 20, 36, 1183, 1183,
1354  1183, 1183, 1183, 1183, -941, -941, 991, 44, 741, 88,
1355  526, 977, 266, 773, 155, 3264, 25, 93, -941, -941,
1356  -941, -941, 156, 1183, 1183, -941, -941, -941, 473, -941,
1357  36, -941, 36, -101, 2961, -941, 254, -941, 17, 23,
1358  30, 2961, 36, -941, 205, -941, -941, 1183, -941, 1183,
1359  1183, 1183, 1183, 1183, 163, 1183, 1183, -941, 1183, -941,
1360  1183, 1183, 1183, 1183, 1183, 1183, 229, 1183, 1183, -941,
1361  1183, 1183, 1183, 1183, 353, 1183, 1183, 1183, 1183, 348,
1362  256, 1183, 652, 961, 1183, -941, 1183, 994, 1002, 1183,
1363  -941, 1183, 1183, 1183, 1183, 1183, 295, -941, 1183, -941,
1364  529, 373, -941, -941, -941, -941, 549, 820, 722, 1749,
1365  463, 1536, 1015, 630, 139, 356, 371, 233, 1592, 204,
1366  113, 231, 186, 189, 1, 597, 95, 403, 1126, -941,
1367  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1368  -941, -941, -941, -941, -941, -941, -941, 640, 167, 3146,
1369  99, 438, 36, 3264, -941, -941, -941, -941, -941, -941,
1370  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1371  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1372  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1373  -941, -941, -941, 191, -941, -941, -941, -941, -941, -941,
1374  1163, 1183, 36, 162, 275, -941, -941, -941, -941, 294,
1375  -941, 434, -941, -941, -941, 36, 36, -941, -941, 1339,
1376  768, 195, -941, 170, 221, -941, -941, -941, -941, -941,
1377  -941, 319, 336, -941, 409, -941, 166, 2961, -941, -941,
1378  -941, -941, 307, -941, 247, -941, -941, -941, 198, -941,
1379  1781, -941, 125, -941, 197, -941, -941, -941, 466, -941,
1380  -941, 33, -941, -941, 524, 422, 469, 234, -941, 213,
1381  -941, 2341, -941, -941, -941, 480, -941, -941, -941, 485,
1382  -941, 2703, 242, 268, -941, -941, 274, -941, -941, -941,
1383  283, 507, 2961, 23, 30, -941, 205, -941, 1183, 162,
1384  275, 2961, -941, -941, -941, -941, 205, -941, 1183, -941,
1385  -941, -941, -941, -941, -941, -941, 1183, -941, -941, -941,
1386  -941, -941, 1183, 1183, 1173, -941, 1183, -941, 1183, -941,
1387  -941, -941, 1183, -941, 1183, -941, -941, -941, -941, -941,
1388  -941, -941, 1183, 36, -941, -941, -941, -941, 548, -941,
1389  -941, -941, -941, -941, 552, 32, -941, -941, -941, -941,
1390  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1391  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1392  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1393  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1394  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1395  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1396  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1397  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1398  -941, -941, -941, -941, 1777, -941, -941, -941, -941, -941,
1399  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1400  -941, -941, -941, 302, -941, -941, -941, -941, -941, -941,
1401  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1402  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1403  -941, -941, -941, -941, 972, -941, -941, -941, -941, -941,
1404  -941, -941, -941, -941, -941, -941, 318, 98, 328, 501,
1405  -941, -941, -941, -941, -941, -941, -941, 338, -941, -941,
1406  -941, -941, -941, -941, -941, -941, 191, -941, -941, 541,
1407  -941, -941, -941, -941, 551, -941, -941, -941, -941, -941,
1408  3264, -941, -941, 602, 604, 869, 620, 2457, 433, 2457,
1409  582, 2457, 3146, -941, 2703, 43, -941, 649, -941, -941,
1410  584, 591, 307, -941, 402, 649, 593, 601, 603, 649,
1411  247, -941, 119, -941, 2457, -941, -941, 1968, 549, 820,
1412  722, 1749, -941, 463, 1536, 1015, 630, 139, 356, 371,
1413  233, 1592, 204, 113, -941, -941, -941, -941, -941, 101,
1414  -941, 680, 542, 159, 305, -941, -941, -941, -941, -941,
1415  637, 673, 674, 430, 249, -941, -941, -941, 178, 691,
1416  -941, -941, -941, -941, 701, -941, 2155, -941, 701, 2457,
1417  -941, -941, 466, -941, 714, -941, 36, 3264, 41, -941,
1418  3264, 3264, 3264, 3264, 3264, 3264, 21, 2703, -941, -941,
1419  -941, -941, -941, -941, 36, -941, -941, -941, -941, -941,
1420  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1421  -941, -941, -941, -941, 724, -941, 210, 731, -941, 2642,
1422  3146, 3146, 254, 724, -941, -941, -941, -941, -941, 667,
1423  -941, -941, 492, 495, 500, -941, 514, -941, -941, -941,
1424  -941, -941, -941, -941, -941, -941, 1183, -941, -941, -941,
1425  -941, -941, -941, -941, 710, 373, -941, -941, -941, -941,
1426  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1427  -941, -941, 441, 713, -941, -941, -941, -941, -941, -941,
1428  -941, -941, 715, 717, 553, -941, -941, -941, 543, 598,
1429  26, 260, -17, 801, 3146, 3146, 3146, 777, 3146, -941,
1430  -941, -941, 744, -941, 26, 795, -941, -941, 409, 669,
1431  -17, -941, 249, 731, 409, -941, -941, -941, -941, -941,
1432  -941, -941, 718, 183, -941, -941, -941, -941, -941, -941,
1433  -941, -941, -941, 742, 745, 776, 747, -941, 2457, 832,
1434  3264, 2703, 2457, 701, 3470, 3470, 3470, 3470, 3470, 766,
1435  3470, 2457, 542, 2457, 542, -941, -941, 461, -941, 801,
1436  2961, -17, 3264, -941, -941, -941, 524, 422, 469, -941,
1437  36, 409, -941, -941, 3470, 3470, 3470, 2703, -941, -941,
1438  -941, -941, 246, 1160, 54, 797, -941, -941, -941, -941,
1439  -941, 587, -941, -941, 841, -941, -941, -941, -941, -941,
1440  -941, -941, -941, -941, -941, 583, 553, 69, 774, -941,
1441  -941, 778, -941, -941, 643, -941, 779, -941, -17, -941,
1442  -941, -941, 856, -941, 859, -941, 3146, -941, 39, 643,
1443  2457, -941, 3406, -941, -17, 2703, -941, -941, -941, -941,
1444  864, -941, 789, 793, -941, 796, -941, 2457, -941, -941,
1445  -941, -941, -941, 637, 673, 674, -941, -941, 542, -941,
1446  542, 701, -941, 614, -17, 2961, -941, 2845, 50, -941,
1447  -941, -941, -941, 615, 36, 36, 36, 800, 802, 36,
1448  36, -941, -941, -941, 254, 656, 804, -941, -941, -941,
1449  254, 254, 254, 779, 779, 631, 660, 812, 145, 716,
1450  -941, -941, -941, 254, 633, 145, 716, -941, -941, -941,
1451  254, 290, 1372, 424, 861, -941, 815, -941, -941, 827,
1452  -941, -941, 154, -941, 828, -941, -941, -941, -941, 260,
1453  260, -941, 696, 694, -941, -941, 409, -941, 731, -941,
1454  183, -941, -941, -941, -941, 701, 701, -941, 664, 922,
1455  409, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1456  36, -941, -941, -941, -941, -941, -941, -941, 899, -941,
1457  -941, -941, 254, 254, 205, -941, -941, -941, -941, -941,
1458  -941, -941, -941, 254, 921, -941, -941, -941, -941, 528,
1459  -941, -941, 205, 925, 528, -941, -941, -941, -941, -941,
1460  212, -941, 553, 851, 1183, 254, -941, -941, -941, 26,
1461  -941, -941, -941, -941, -941, -941, -941, 694, 854, -941,
1462  -941, -941, -941, 834, 2845, -941, 677, 679, 684, -941,
1463  688, 692, 875, -941, -941, -941, -941, 145, 716, -941,
1464  -941, 10, -941, 254, -941, 847, 254, -941, -941, -941,
1465  6, 409, -941, -941, -941, 703, -941, -941, 934, -941,
1466  -941, 254, 254, 254, -941, 215, -941, -941, -941, -941,
1467  -941, 1584, 756, 876, -941, 61, 72, 888, 857, -941,
1468  -941, -941, -941, -941, 254, 254, 254, 254, 298, 254,
1469  -941, -941, -941, 254, -941, -941, -941, -941, 75, -941,
1470  -941, -941, -941, 254, -941, -941, 890, -941, -941, -941,
1471  -941
1472 };
1473 
1474  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1475  Performed when YYTABLE does not specify something else to do. Zero
1476  means the default is an error. */
1477 static const yytype_uint16 yydefact[] =
1478 {
1479  2, 0, 1, 0, 4, 5, 0, 0, 197, 197,
1480  197, 197, 197, 197, 201, 204, 197, 0, 0, 0,
1481  0, 0, 0, 0, 0, 0, 0, 99, 203, 202,
1482  199, 200, 0, 197, 197, 12, 11, 3, 0, 15,
1483  0, 198, 0, 214, 0, 10, 0, 192, 0, 28,
1484  30, 0, 0, 133, 0, 150, 16, 197, 17, 197,
1485  197, 197, 197, 197, 0, 197, 197, 18, 197, 19,
1486  197, 197, 197, 197, 197, 197, 0, 197, 197, 20,
1487  197, 218, 197, 218, 218, 197, 197, 218, 218, 0,
1488  0, 197, 218, 218, 197, 21, 197, 218, 218, 197,
1489  22, 197, 197, 197, 197, 218, 0, 23, 197, 24,
1490  0, 0, 377, 193, 194, 195, 0, 0, 0, 0,
1491  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1492  0, 0, 0, 0, 0, 0, 0, 0, 0, 525,
1493  526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
1494  536, 537, 538, 539, 540, 541, 542, 0, 0, 0,
1495  0, 0, 0, 0, 27, 375, 374, 378, 379, 113,
1496  388, 383, 517, 386, 387, 384, 385, 380, 584, 585,
1497  586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
1498  596, 597, 598, 599, 381, 724, 725, 726, 727, 728,
1499  729, 730, 382, 0, 111, 112, 25, 97, 100, 26,
1500  101, 197, 0, 37, 285, 14, 13, 205, 206, 0,
1501  215, 0, 510, 511, 512, 0, 0, 515, 368, 0,
1502  0, 254, 262, 0, 285, 305, 312, 313, 329, 335,
1503  351, 0, 0, 546, 7, 33, 220, 222, 223, 225,
1504  244, 228, 252, 231, 260, 232, 233, 234, 306, 235,
1505  0, 238, 328, 239, 334, 240, 241, 236, 349, 242,
1506  227, 0, 226, 401, 404, 406, 408, 410, 411, 420,
1507  422, 0, 421, 372, 243, 517, 230, 237, 229, 380,
1508  8, 0, 0, 0, 32, 208, 0, 36, 144, 143,
1509  0, 0, 0, 42, 44, 133, 0, 150, 197, 49,
1510  285, 0, 54, 55, 56, 57, 0, 58, 197, 60,
1511  61, 63, 219, 64, 65, 66, 197, 67, 69, 80,
1512  79, 76, 197, 218, 197, 72, 197, 70, 197, 73,
1513  75, 85, 197, 83, 197, 86, 88, 89, 90, 91,
1514  92, 94, 197, 0, 601, 602, 603, 376, 0, 394,
1515  395, 396, 397, 398, 400, 0, 605, 606, 607, 604,
1516  612, 609, 610, 611, 608, 614, 615, 616, 617, 618,
1517  613, 630, 631, 625, 620, 621, 622, 623, 624, 626,
1518  627, 628, 629, 619, 633, 636, 635, 634, 637, 638,
1519  639, 632, 648, 649, 641, 642, 643, 645, 644, 646,
1520  647, 640, 651, 656, 653, 652, 657, 655, 654, 658,
1521  650, 661, 664, 660, 662, 663, 659, 667, 666, 665,
1522  669, 670, 671, 668, 675, 676, 673, 674, 672, 681,
1523  678, 679, 680, 677, 693, 687, 690, 691, 685, 686,
1524  688, 689, 692, 694, 0, 682, 718, 716, 717, 715,
1525  723, 720, 721, 722, 719, 737, 736, 735, 738, 556,
1526  557, 555, 734, 0, 739, 742, 741, 733, 732, 731,
1527  749, 746, 744, 745, 747, 748, 743, 752, 751, 750,
1528  756, 755, 758, 754, 757, 753, 518, 521, 522, 523,
1529  524, 516, 519, 520, 559, 562, 563, 561, 575, 573,
1530  572, 574, 558, 564, 550, 549, 0, 420, 0, 0,
1531  761, 760, 762, 763, 764, 759, 373, 0, 96, 102,
1532  103, 105, 104, 107, 108, 106, 109, 455, 210, 0,
1533  447, 38, 283, 284, 0, 449, 39, 213, 364, 365,
1534  0, 513, 514, 518, 516, 559, 558, 0, 294, 0,
1535  0, 0, 0, 6, 0, 0, 424, 0, 221, 224,
1536  0, 0, 253, 256, 0, 0, 0, 0, 0, 0,
1537  261, 263, 0, 304, 0, 415, 488, 0, 480, 483,
1538  484, 481, 487, 498, 482, 499, 497, 496, 500, 494,
1539  495, 493, 501, 502, 486, 485, 503, 477, 478, 0,
1540  317, 320, 311, 489, 490, 314, 416, 417, 418, 318,
1541  468, 470, 472, 474, 0, 479, 491, 492, 319, 0,
1542  346, 347, 348, 327, 332, 344, 0, 333, 338, 0,
1543  358, 359, 350, 352, 355, 356, 0, 0, 0, 369,
1544  0, 0, 0, 0, 0, 0, 0, 0, 504, 505,
1545  506, 507, 508, 509, 0, 480, 483, 484, 481, 498,
1546  482, 499, 497, 496, 500, 494, 495, 493, 501, 502,
1547  489, 490, 463, 464, 457, 456, 475, 462, 465, 0,
1548  0, 0, 0, 445, 444, 116, 127, 134, 151, 0,
1549  216, 41, 0, 0, 0, 48, 0, 455, 50, 51,
1550  53, 59, 455, 68, 78, 77, 197, 81, 71, 74,
1551  84, 87, 93, 95, 0, 0, 393, 391, 392, 390,
1552  698, 705, 695, 697, 696, 700, 701, 702, 703, 704,
1553  699, 706, 684, 0, 565, 566, 568, 567, 569, 570,
1554  560, 571, 0, 0, 547, 389, 98, 110, 0, 0,
1555  0, 0, 360, 362, 0, 0, 0, 571, 0, 255,
1556  292, 293, 0, 291, 0, 341, 343, 441, 7, 7,
1557  433, 435, 475, 440, 7, 423, 217, 258, 259, 257,
1558  276, 275, 0, 0, 274, 270, 265, 266, 267, 268,
1559  271, 269, 264, 0, 0, 0, 0, 324, 0, 321,
1560  0, 0, 0, 326, 0, 0, 0, 0, 0, 0,
1561  0, 0, 0, 0, 336, 354, 353, 0, 371, 432,
1562  0, 430, 0, 370, 402, 403, 405, 407, 409, 412,
1563  0, 7, 245, 419, 0, 0, 0, 0, 458, 544,
1564  583, 9, 0, 0, 0, 0, 212, 116, 127, 134,
1565  151, 0, 62, 82, 0, 399, 709, 708, 707, 710,
1566  711, 712, 713, 714, 683, 0, 547, 547, 0, 554,
1567  176, 0, 287, 286, 288, 363, 0, 439, 361, 436,
1568  545, 543, 378, 578, 579, 581, 0, 580, 0, 288,
1569  0, 427, 0, 428, 434, 426, 425, 273, 279, 280,
1570  272, 278, 0, 0, 310, 0, 325, 0, 315, 316,
1571  322, 466, 467, 469, 471, 473, 413, 414, 330, 345,
1572  337, 339, 357, 0, 431, 0, 247, 0, 0, 248,
1573  461, 460, 476, 0, 0, 0, 0, 0, 0, 0,
1574  0, 29, 118, 117, 0, 0, 0, 31, 129, 128,
1575  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1576  34, 136, 135, 0, 0, 0, 0, 35, 153, 152,
1577  0, 0, 0, 0, 0, 176, 0, 740, 551, 0,
1578  553, 548, 0, 446, 0, 448, 196, 438, 437, 0,
1579  0, 582, 0, 295, 290, 342, 7, 475, 442, 443,
1580  0, 307, 308, 309, 323, 331, 340, 367, 0, 0,
1581  7, 246, 459, 207, 126, 209, 133, 150, 115, 450,
1582  0, 211, 167, 167, 119, 190, 191, 189, 0, 130,
1583  131, 132, 0, 0, 0, 163, 162, 160, 161, 180,
1584  182, 183, 181, 0, 164, 165, 147, 148, 149, 0,
1585  146, 142, 0, 0, 0, 159, 43, 45, 46, 47,
1586  0, 600, 547, 0, 0, 0, 178, 177, 179, 0,
1587  576, 577, 299, 300, 301, 302, 303, 295, 0, 282,
1588  429, 277, 366, 0, 250, 249, 0, 0, 0, 167,
1589  0, 0, 0, 139, 140, 141, 137, 0, 0, 138,
1590  158, 0, 157, 0, 552, 0, 0, 40, 289, 281,
1591  0, 7, 127, 134, 151, 0, 168, 172, 188, 166,
1592  145, 0, 0, 0, 52, 0, 454, 298, 296, 297,
1593  251, 0, 0, 0, 176, 0, 0, 0, 0, 155,
1594  156, 154, 452, 451, 0, 0, 0, 0, 0, 0,
1595  170, 169, 171, 0, 174, 173, 175, 187, 0, 453,
1596  120, 121, 122, 0, 123, 124, 0, 185, 184, 125,
1597  186
1598 };
1599 
1600  /* YYPGOTO[NTERM-NUM]. */
1601 static const yytype_int16 yypgoto[] =
1602 {
1603  -941, -941, -1, -730, 5, -941, -941, 957, -941, -941,
1604  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1605  -941, -172, -941, 672, -941, 121, -288, -817, -293, -816,
1606  -291, 8, -132, -287, -813, -821, -941, -906, -941, -940,
1607  -941, -941, -929, -126, -941, -941, -941, -941, -941, 0,
1608  -186, -200, -941, -70, 74, 642, -941, 116, 47, 70,
1609  -873, -941, -941, 64, 913, 750, 432, -5, -941, -941,
1610  -226, -941, -941, -941, -941, -33, -941, -941, -941, 426,
1611  -941, -941, -941, 419, -941, -941, -941, -10, -941, 767,
1612  -741, 104, -941, -941, -66, -941, -941, -941, -941, -941,
1613  -941, -941, -941, -465, -941, -941, -941, -941, -941, -941,
1614  -941, -941, -941, -235, 201, -941, -941, -941, 385, -941,
1615  207, -941, -941, -941, -941, -941, -941, -941, 380, -941,
1616  -49, -230, -190, -16, -941, -941, -941, 310, 386, 379,
1617  389, -941, -144, -121, -941, -941, -941, -255, -941, -88,
1618  -50, -941, 261, 217, -941, -871, -941, -694, -701, -941,
1619  -941, -941, -95, 735, -93, 746, -941, -941, -941, -292,
1620  -941, 760, -267, 252, 245, 255, -941, -179, -532, -941,
1621  -941, -941, 102, -941, -839, -941, 849, -941, -43, -941,
1622  -760, -941, -941, -941, -941, -941, -941, 852, -941, -319,
1623  -941, -941, -941, -941, -41, -941, -941, -941, -941, -941,
1624  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1625  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1626  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1627  -941, -941, -941, -941, -941, -941, -941, -941, -941, -941,
1628  -941, -941, -941, -941, -941, -941
1629 };
1630 
1631  /* YYDEFGOTO[NTERM-NUM]. */
1632 static const yytype_int16 yydefgoto[] =
1633 {
1634  -1, 1, 958, 564, 959, 37, 38, 39, 58, 67,
1635  69, 79, 95, 100, 107, 109, 206, 209, 210, 536,
1636  756, 207, 164, 292, 954, 852, 293, 853, 296, 854,
1637  297, 1059, 1060, 300, 855, 973, 1047, 1053, 1054, 1100,
1638  1145, 1146, 992, 1055, 960, 1178, 1148, 961, 1037, 1031,
1639  165, 997, 40, 41, 52, 43, 1024, 53, 1026, 213,
1640  1032, 700, 220, 44, 302, 887, 323, 962, 246, 247,
1641  248, 249, 250, 842, 938, 939, 251, 252, 572, 573,
1642  253, 254, 580, 581, 801, 795, 910, 911, 255, 544,
1643  884, 995, 256, 772, 1089, 1087, 257, 258, 583, 259,
1644  260, 609, 610, 611, 612, 261, 262, 633, 263, 264,
1645  637, 265, 266, 634, 635, 267, 268, 642, 643, 644,
1646  645, 761, 762, 269, 550, 270, 271, 648, 649, 272,
1647  166, 167, 168, 273, 170, 729, 364, 365, 274, 275,
1648  276, 277, 278, 279, 616, 617, 618, 619, 280, 281,
1649  282, 565, 566, 830, 831, 779, 780, 888, 889, 781,
1650  1006, 692, 540, 541, 545, 546, 1030, 1154, 1078, 758,
1651  283, 684, 685, 620, 621, 622, 623, 624, 687, 625,
1652  626, 627, 688, 689, 284, 171, 501, 502, 172, 286,
1653  879, 516, 173, 174, 175, 471, 176, 512, 750, 513,
1654  894, 895, 287, 288, 177, 178, 358, 179, 369, 180,
1655  374, 181, 380, 182, 393, 183, 401, 184, 411, 185,
1656  420, 186, 426, 187, 429, 188, 433, 189, 438, 190,
1657  443, 191, 455, 742, 874, 192, 459, 193, 464, 194,
1658  195, 479, 196, 472, 197, 474, 198, 476, 199, 486,
1659  200, 489, 201, 495, 202, 525
1660 };
1661 
1662  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1663  positive, shift that token. If negative, reduce the rule whose
1664  number is the opposite. If YYTABLE_NINF, syntax error. */
1665 static const yytype_int16 yytable[] =
1666 {
1667  35, 285, 45, 289, 299, 298, 36, 48, 285, 169,
1668  289, 322, 704, 322, 322, 705, 703, 322, 322, 527,
1669  706, 569, 322, 322, 694, 711, 682, 322, 322, 638,
1670  613, 528, 783, 899, 980, 322, 682, 216, 517, 245,
1671  217, 982, 218, 983, 840, 290, 294, 984, 901, 903,
1672  784, 680, 295, 886, 905, 3, 1070, 1020, 4, 1002,
1673  5, 680, 3, 1009, 646, 4, 1019, 5, 203, 1063,
1674  614, 518, 646, 3, 51, 42, 4, 1033, 5, 57,
1675  6, 7, 49, 42, 42, 1137, 904, 6, 7, 1049,
1676  42, 681, 769, 1101, 773, 503, 775, 1176, 6, 7,
1677  46, 681, 686, 477, 214, 882, 655, 212, 212, 810,
1678  357, 937, 686, 1050, 1051, 47, 988, 990, 1003, 807,
1679  478, 726, 809, 68, 963, 964, 965, 966, 54, 55,
1680  967, 42, 311, 303, 42, 309, 310, 934, 657, 212,
1681  212, 811, 42, 968, 312, 42, 42, 319, 320, 219,
1682  -285, 212, 212, 1177, 321, 3, 42, 1099, 4, 1125,
1683  5, 335, 526, 980, 340, 212, 341, -378, 212, 346,
1684  212, 824, 208, 212, 825, 347, 42, 305, 306, 307,
1685  6, 7, 42, 969, 1052, 751, 503, 998, 108, 315,
1686  316, 317, 629, -465, -465, -465, -465, 487, -465, -378,
1687  -465, 328, 329, 998, 285, 1133, 289, 1138, 1139, 1131,
1688  727, 728, 538, 3, 488, 1158, 4, 845, 5, 349,
1689  350, 655, 460, 1019, 1049, 551, 552, 1132, 883, 803,
1690  819, 683, 820, 998, 567, 211, 767, 656, 6, 7,
1691  804, 683, 308, 1073, 615, 461, 462, 3, 1050, 1051,
1692  4, 427, 5, 657, 1121, 805, 299, 298, 4, 285,
1693  5, 289, 539, 322, 636, 428, 299, 298, 285, 819,
1694  289, 820, 6, 7, 463, 291, 1090, 204, 205, 944,
1695  841, 537, -114, 664, 945, 212, 946, 542, 543, -126,
1696  1094, 3, 647, 456, 4, 908, 5, 701, 909, 3,
1697  832, 1073, 4, 785, 5, 1141, 710, 1142, 318, 777,
1698  1021, 1143, 1114, -379, 970, 878, 6, 7, 989, 1052,
1699  465, 1159, 980, 944, 6, 7, 352, 613, 945, 613,
1700  946, 613, 1163, 466, 680, 334, 457, 458, 1118, 113,
1701  114, 115, 439, 916, 519, -379, 1152, 920, 806, 1074,
1702  467, 1153, 473, 723, 613, 475, 928, 613, 930, 630,
1703  631, 632, 628, 539, 757, 440, 441, 614, 442, 614,
1704  1008, 614, 547, 783, 681, 947, 574, 813, 707, 332,
1705  333, 786, 212, 558, 326, 782, 561, 1073, 712, 796,
1706  843, 1140, 212, 800, 614, 557, 468, 614, 14, 15,
1707  713, 514, 682, 562, 717, 783, 613, 1074, 212, 613,
1708  718, 515, 719, 563, 1075, 861, 720, 567, 721, 947,
1709  862, 559, 848, 469, 470, 3, 582, 680, 4, 763,
1710  5, 630, 631, 632, 682, 1005, 542, 543, 28, 652,
1711  948, 517, -465, 204, 205, 949, 614, 29, 714, 614,
1712  6, 7, 1014, 30, 575, 576, 577, 578, 579, 680,
1713  359, 360, 790, 950, 244, 96, 162, 681, 722, 31,
1714  97, 98, 1113, 215, 776, 430, 434, 4, 782, 5,
1715  435, 548, 549, 99, 948, 431, 432, 653, 791, 949,
1716  542, 543, 490, 1074, 963, 964, 965, 966, 654, 681,
1717  967, 695, 792, 436, 437, 491, 951, 950, 570, 571,
1718  782, 839, 492, 968, 778, 325, 327, 866, 690, 330,
1719  331, 162, 493, 691, 337, 339, 829, 696, 494, 343,
1720  345, 885, 4, 697, 5, 1108, 892, 351, 793, 650,
1721  651, 615, 698, 615, 919, 615, 867, 361, 362, 699,
1722  1066, 363, 394, 969, 395, 724, 682, 70, 1173, 71,
1723  725, 72, 783, 752, 73, 74, 75, 743, 615, 517,
1724  517, 615, 396, 753, 397, 398, 399, 400, 613, 754,
1725  943, 680, 613, 794, 680, 680, 680, 680, 680, 931,
1726  680, 613, 682, 613, 868, 869, 870, 871, 872, 873,
1727  520, 755, 849, 850, 933, 521, 522, 683, 47, 523,
1728  524, 354, 355, 356, 680, 680, 680, 680, 614, 759,
1729  615, 681, 614, 615, 681, 681, 681, 681, 681, 760,
1730  681, 614, 782, 614, 834, 835, 366, 367, 368, 683,
1731  764, 927, 765, 517, 517, 517, 828, 517, 770, 771,
1732  777, 50, 814, 815, 681, 681, 681, 681, 768, 628,
1733  774, 628, 787, 628, 357, 940, 941, 942, 782, 788,
1734  613, 797, 680, 563, 902, 680, 890, 891, 893, 798,
1735  897, 799, 777, 336, 1068, 812, 628, 613, 480, 628,
1736  816, 851, 817, 1015, 818, 1016, 821, 14, 15, 301,
1737  640, 641, 304, 481, 639, 640, 641, 680, 822, 1018,
1738  614, 829, 681, 313, 301, 681, 482, 1035, 1036, 504,
1739  76, 827, 483, 1007, 324, 77, 782, 614, 113, 114,
1740  115, 844, 421, 1097, 1045, 1046, 1096, 28, 628, 846,
1741  1098, 628, 422, 78, 348, 856, 29, 681, 505, 423,
1742  353, 857, 30, 1105, 858, 424, 425, 3, 782, 859,
1743  4, 683, 5, 1042, 1043, 715, 484, 485, 31, 1080,
1744  1081, 1110, 59, 860, 60, 517, 630, 631, 632, 61,
1745  62, 63, 6, 7, 1056, 1057, 1058, 285, 864, 289,
1746  863, 875, 615, 876, 918, 877, 615, 683, 3, 878,
1747  881, 4, 880, 5, 101, 615, 102, 615, 1001, 655,
1748  285, 103, 289, 104, 506, 896, 105, 375, 376, 377,
1749  378, 379, 898, 6, 7, 900, 963, 964, 965, 966,
1750  914, 912, 967, 907, 913, 507, 915, 917, 508, 777,
1751  936, 509, 510, 511, 926, 968, 985, 555, 986, 987,
1752  106, 952, 991, 971, 978, 778, 993, 953, 996, 972,
1753  979, 994, 3, 999, 680, 4, 1000, 5, 1011, 974,
1754  966, 1010, 1012, 967, 1017, 1013, 505, 3, 1022, 1028,
1755  4, 1029, 5, 1038, 615, 969, 975, 6, 7, 1044,
1756  1048, 1062, 285, 1071, 289, 222, 223, 224, 225, 226,
1757  227, 615, 6, 7, 681, 1072, 1079, 766, 1088, 370,
1758  628, 371, 372, 373, 628, 782, 921, 922, 1082, 1083,
1759  1084, 1085, 1086, 628, 1092, 628, 976, 1093, 1102, 1107,
1760  1111, 1115, 1120, 974, 966, 64, 1122, 967, 1123, 285,
1761  65, 289, 506, 1124, 1023, 1025, 1025, 1126, 974, 966,
1762  975, 1127, 967, 1034, 1128, 1135, 744, 745, 66, 1039,
1763  1040, 1041, 1144, 507, 1147, 975, 508, 1167, 1180, 509,
1764  510, 511, 1061, 56, 1168, 702, 1130, 746, 981, 1065,
1765  952, 1129, 971, 978, 1064, 314, 953, 1095, 972, 979,
1766  976, 1076, 338, 1027, 299, 298, 568, 1077, 789, 802,
1767  1091, 560, 628, 1004, 1116, 976, 14, 15, 80, 81,
1768  82, 83, 299, 298, 84, 85, 1156, 86, 87, 628,
1769  88, 1119, 8, 929, 9, 342, 10, 826, 833, 11,
1770  12, 13, 837, 344, 932, 865, 14, 15, 836, 14,
1771  15, 1103, 1104, 838, 708, 906, 28, 14, 15, 935,
1772  1162, 693, 1106, 1166, 89, 29, 709, 977, 1109, 744,
1773  745, 30, 924, 1112, 747, 748, 749, 508, 923, 1076,
1774  509, 510, 511, 925, 1117, 1077, 28, 31, 554, 28,
1775  746, 0, 556, 0, 0, 29, 0, 28, 29, 0,
1776  0, 30, 0, 0, 30, 0, 29, 0, 285, 0,
1777  289, 0, 30, 0, 412, 0, 413, 31, 0, 0,
1778  31, 0, 1134, 0, 0, 1136, 0, 0, 31, 0,
1779  0, 1069, 0, 0, 414, 0, 415, 416, 0, 417,
1780  1149, 1150, 1151, 0, 0, 0, 1157, 418, 419, 0,
1781  0, 971, 978, 0, 1160, 1164, 0, 972, 979, 0,
1782  1161, 1165, 0, 1169, 1170, 1171, 1172, 1076, 1174, 0,
1783  0, 3, 1175, 1077, 4, 0, 5, 747, 748, 749,
1784  508, 90, 1179, 509, 510, 511, 91, 0, 0, 0,
1785  0, 92, 93, 110, 0, 32, 6, 7, 111, 0,
1786  33, 0, 0, 0, 94, 529, 0, 530, 221, 531,
1787  532, 0, 0, 0, 716, 496, 533, 534, 34, 0,
1788  0, 0, 0, 0, 0, 0, 0, 0, 14, 15,
1789  0, 222, 223, 224, 225, 226, 227, 0, 14, 15,
1790  0, 497, 0, 955, 498, 535, 0, 228, 112, 113,
1791  114, 115, 0, 499, 0, 0, 116, 0, 0, 956,
1792  117, 0, 0, 0, 118, 0, 0, 0, 28, 0,
1793  119, 0, 0, 0, 0, 0, 0, 29, 28, 0,
1794  120, 0, 0, 30, 0, 0, 121, 29, 0, 0,
1795  0, 122, 0, 30, 123, 0, 0, 124, 125, 31,
1796  0, 126, 0, 0, 127, 0, 128, 0, 0, 31,
1797  139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
1798  149, 150, 151, 152, 153, 154, 155, 156, 0, 129,
1799  130, 0, 131, 132, 133, 0, 0, 134, 135, 0,
1800  0, 136, 137, 229, 139, 140, 141, 142, 143, 144,
1801  145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1802  155, 156, 0, 0, 230, 0, 0, 0, 0, 231,
1803  500, 0, 0, 0, 0, 0, 232, 0, 0, 0,
1804  0, 0, 233, 3, 0, 0, 4, 234, 5, 0,
1805  0, 0, 0, 0, 0, 0, 0, 235, 0, 0,
1806  236, 237, 238, 239, 0, 110, 0, 240, 6, 7,
1807  111, 241, 242, 158, 0, 0, 0, 159, 160, 0,
1808  221, 0, 0, 0, 243, 0, 0, 161, 553, 244,
1809  957, 162, 163, 0, 0, 0, 0, 0, 0, 0,
1810  0, 0, 0, 222, 223, 224, 225, 226, 227, 0,
1811  0, 0, 0, 0, 497, 955, 0, 498, 0, 228,
1812  112, 113, 114, 115, 0, 0, 499, 0, 116, 0,
1813  0, 956, 117, 0, 0, 0, 118, 0, 0, 0,
1814  0, 0, 119, 0, 0, 0, 0, 0, 0, 0,
1815  0, 0, 120, 0, 0, 0, 0, 0, 121, 0,
1816  0, 0, 0, 122, 0, 0, 123, 0, 0, 124,
1817  125, 0, 0, 126, 0, 0, 127, 0, 128, 0,
1818  0, 0, 0, 139, 140, 141, 142, 143, 144, 145,
1819  146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
1820  156, 129, 130, 0, 131, 132, 133, 0, 0, 134,
1821  135, 0, 0, 136, 137, 229, 139, 140, 141, 142,
1822  143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
1823  153, 154, 155, 156, 0, 0, 230, 0, 0, 0,
1824  0, 231, 0, 500, 0, 0, 0, 0, 232, 0,
1825  0, 0, 0, 0, 233, 3, 0, 0, 4, 234,
1826  5, 0, 0, 0, 0, 0, 0, 0, 0, 235,
1827  0, 0, 236, 237, 238, 239, 0, 110, 0, 240,
1828  6, 7, 111, 241, 242, 158, 0, 0, 0, 159,
1829  160, 0, 221, 402, 403, 0, 243, 0, 0, 161,
1830  0, 244, 1067, 162, 163, 0, 0, 404, 0, 405,
1831  406, 407, 0, 0, 0, 222, 223, 224, 225, 226,
1832  227, 0, 0, 0, 408, 409, 410, 955, 0, 0,
1833  0, 228, 112, 113, 114, 115, 0, 0, 0, 0,
1834  116, 0, 0, 956, 117, 0, 0, 0, 118, 0,
1835  0, 0, 0, 0, 119, 0, 0, 0, 0, 0,
1836  0, 0, 0, 0, 120, 0, 0, 0, 0, 0,
1837  121, 444, 0, 0, 445, 122, 0, 0, 123, 0,
1838  0, 124, 125, 0, 0, 126, 0, 446, 127, 0,
1839  128, 447, 0, 0, 448, 449, 0, 0, 0, 450,
1840  451, 452, 453, 454, 0, 0, 0, 0, 0, 0,
1841  0, 0, 0, 129, 130, 0, 131, 132, 133, 0,
1842  0, 134, 135, 0, 0, 136, 137, 229, 139, 140,
1843  141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
1844  151, 152, 153, 154, 155, 156, 0, 0, 230, 0,
1845  0, 0, 0, 231, 0, 0, 584, 0, 0, 0,
1846  232, 0, 0, 0, 0, 0, 233, 0, 0, 0,
1847  0, 234, 585, 0, 110, 0, 0, 0, 0, 111,
1848  0, 235, 0, 0, 236, 237, 238, 239, 0, 0,
1849  0, 240, 0, 0, 0, 241, 242, 158, 0, 0,
1850  0, 159, 160, 0, 0, 586, 381, 382, 243, 0,
1851  383, 161, 0, 244, 1155, 162, 163, 0, 587, 0,
1852  384, 385, 386, 387, 388, 389, 390, 391, 392, 112,
1853  113, 114, 115, 0, 0, 0, 0, 588, 0, 0,
1854  0, 589, 0, 0, 0, 590, 0, 0, 0, 0,
1855  0, 591, 0, 0, 0, 592, 0, 0, 0, 0,
1856  0, 593, 0, 0, 0, 0, 0, 594, 0, 0,
1857  0, 0, 595, 0, 0, 596, 0, 0, 597, 598,
1858  0, 0, 599, 0, 0, 600, 730, 601, 0, 731,
1859  732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
1860  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1861  602, 603, 0, 131, 132, 133, 0, 0, 134, 135,
1862  0, 0, 136, 137, 138, 139, 140, 141, 142, 143,
1863  144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
1864  154, 155, 156, 808, 0, 157, 0, 0, 0, 0,
1865  0, 0, 0, 0, 0, 0, 0, 0, 0, 585,
1866  0, 110, 0, 0, 0, 0, 111, 0, 0, 0,
1867  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1868  0, 604, 605, 0, 606, 0, 0, 0, 0, 0,
1869  0, 0, 586, 0, 158, 0, 0, 0, 159, 160,
1870  0, 0, 0, 0, 0, 0, 607, 608, 161, 0,
1871  0, 0, 162, 163, 0, 0, 112, 113, 114, 115,
1872  0, 0, 0, 0, 588, 0, 0, 0, 589, 0,
1873  0, 0, 590, 0, 0, 0, 0, 0, 591, 0,
1874  0, 0, 592, 0, 0, 0, 0, 0, 593, 0,
1875  0, 0, 0, 0, 594, 0, 0, 0, 0, 595,
1876  0, 0, 596, 0, 0, 597, 598, 0, 0, 599,
1877  0, 0, 600, 0, 601, 0, 0, 0, 0, 0,
1878  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1879  0, 0, 0, 0, 0, 0, 0, 602, 603, 0,
1880  131, 132, 133, 0, 0, 134, 135, 0, 0, 136,
1881  137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
1882  147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
1883  823, 0, 157, 0, 0, 0, 0, 0, 0, 0,
1884  0, 0, 0, 0, 0, 0, 585, 0, 110, 0,
1885  0, 0, 0, 111, 0, 0, 0, 0, 0, 0,
1886  0, 0, 0, 0, 0, 0, 0, 0, 604, 605,
1887  0, 606, 0, 0, 0, 0, 0, 0, 0, 586,
1888  0, 158, 0, 0, 0, 159, 160, 0, 0, 0,
1889  0, 0, 0, 607, 608, 161, 0, 0, 0, 162,
1890  163, 0, 0, 112, 113, 114, 115, 0, 0, 0,
1891  0, 588, 0, 0, 0, 589, 0, 0, 0, 590,
1892  0, 0, 0, 0, 0, 591, 0, 0, 0, 592,
1893  0, 0, 0, 0, 0, 593, 0, 0, 0, 0,
1894  0, 594, 0, 0, 0, 0, 595, 0, 0, 596,
1895  0, 0, 597, 598, 0, 0, 599, 0, 0, 600,
1896  0, 601, 0, 0, 0, 0, 0, 0, 0, 0,
1897  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1898  0, 0, 0, 0, 602, 603, 0, 131, 132, 133,
1899  0, 0, 134, 135, 0, 0, 136, 137, 138, 139,
1900  140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
1901  150, 151, 152, 153, 154, 155, 156, 0, 0, 157,
1902  658, 659, 660, 661, 662, 663, 0, 0, 0, 0,
1903  0, 0, 585, 0, 664, 0, 0, 0, 0, 0,
1904  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1905  0, 0, 0, 0, 0, 604, 605, 0, 606, 0,
1906  0, 0, 0, 0, 0, 586, 0, 0, 158, 0,
1907  0, 0, 159, 160, 0, 0, 0, 0, 0, 0,
1908  607, 608, 161, 0, 0, 0, 162, 163, 0, 112,
1909  113, 114, 115, 0, 0, 0, 0, 665, 0, 0,
1910  0, 666, 0, 0, 0, 667, 0, 0, 0, 0,
1911  0, 668, 0, 0, 0, 592, 0, 0, 0, 0,
1912  0, 669, 0, 0, 0, 0, 0, 670, 0, 0,
1913  0, 0, 671, 0, 0, 672, 0, 0, 673, 674,
1914  0, 0, 675, 0, 0, 676, 0, 677, 585, 0,
1915  110, 0, 0, 0, 0, 111, 0, 0, 0, 0,
1916  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1917  678, 679, 0, 0, 0, 0, 0, 0, 0, 0,
1918  0, 586, 0, 0, 0, 0, 0, 0, 0, 0,
1919  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1920  0, 0, 0, 0, 0, 112, 113, 114, 115, 0,
1921  0, 0, 0, 588, 0, 0, 0, 589, 0, 0,
1922  0, 590, 0, 0, 0, 0, 0, 591, 0, 0,
1923  0, 592, 0, 0, 0, 0, 0, 593, 0, 0,
1924  0, 604, 605, 594, 606, 0, 0, 0, 595, 0,
1925  0, 596, 0, 0, 597, 598, 0, 0, 599, 0,
1926  0, 600, 0, 601, 0, 0, 607, 608, 0, 0,
1927  244, 0, 162, 0, 0, 0, 0, 0, 0, 0,
1928  0, 0, 0, 0, 0, 0, 602, 603, 0, 131,
1929  132, 133, 0, 0, 134, 135, 0, 0, 136, 137,
1930  138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
1931  148, 149, 150, 151, 152, 153, 154, 155, 156, 0,
1932  0, 157, 0, 0, 0, 0, 0, 0, 0, 0,
1933  0, 0, 0, 585, 0, 664, 0, 0, 0, 0,
1934  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1935  0, 0, 0, 0, 0, 0, 0, 604, 605, 0,
1936  606, 0, 0, 0, 0, 0, 586, 0, 0, 0,
1937  158, 0, 0, 0, 159, 160, 0, 0, 0, 0,
1938  0, 0, 607, 608, 161, 0, 0, 0, 162, 163,
1939  112, 113, 114, 115, 585, 0, 664, 0, 665, 0,
1940  0, 0, 666, 0, 0, 0, 667, 0, 0, 0,
1941  0, 0, 668, 0, 0, 0, 592, 0, 0, 0,
1942  0, 0, 669, 0, 0, 0, 0, 586, 670, 0,
1943  0, 0, 0, 671, 0, 0, 672, 0, 0, 673,
1944  674, 0, 0, 675, 0, 0, 676, 0, 677, 0,
1945  0, 112, 113, 114, 115, 0, 0, 0, 0, 665,
1946  0, 0, 0, 666, 0, 0, 0, 667, 0, 0,
1947  0, 678, 679, 668, 0, 0, 0, 592, 0, 0,
1948  0, 0, 0, 669, 0, 0, 0, 0, 0, 670,
1949  0, 0, 0, 0, 671, 0, 0, 672, 0, 0,
1950  673, 674, 0, 0, 675, 0, 0, 676, 0, 677,
1951  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1952  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1953  0, 0, 678, 679, 0, 0, 585, 0, 664, 0,
1954  0, 0, 604, 605, 0, 606, 0, 0, 0, 0,
1955  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1956  0, 0, 0, 0, 0, 0, 0, 607, 608, 586,
1957  0, 244, 0, 162, 847, 0, 0, 0, 0, 0,
1958  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1959  0, 0, 0, 112, 113, 114, 115, 0, 0, 0,
1960  0, 665, 0, 604, 605, 666, 606, 0, 0, 667,
1961  0, 0, 0, 0, 0, 668, 0, 0, 0, 592,
1962  0, 0, 0, 0, 0, 669, 0, 0, 607, 608,
1963  0, 670, 244, 0, 162, 0, 671, 0, 0, 672,
1964  0, 0, 673, 674, 0, 0, 675, 0, 0, 676,
1965  0, 677, 0, 0, 110, 0, 0, 0, 0, 111,
1966  0, 0, 0, 0, 0, 0, 0, 0, 0, 221,
1967  0, 0, 0, 0, 678, 679, 0, 0, 0, 0,
1968  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1969  0, 0, 222, 223, 224, 225, 226, 227, 0, 0,
1970  0, 0, 0, 0, 0, 0, 0, 0, 228, 112,
1971  113, 114, 115, 0, 0, 0, 0, 116, 0, 0,
1972  0, 117, 0, 0, 0, 118, 0, 0, 0, 0,
1973  0, 119, 0, 0, 0, 0, 0, 0, 0, 0,
1974  0, 120, 0, 0, 0, 604, 605, 121, 606, 0,
1975  0, 0, 122, 0, 0, 123, 0, 0, 124, 125,
1976  0, 0, 126, 0, 0, 127, 0, 128, 0, 0,
1977  607, 608, 0, 0, 0, 0, 162, 0, 0, 0,
1978  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1979  129, 130, 0, 131, 132, 133, 0, 0, 134, 135,
1980  0, 0, 136, 137, 229, 139, 140, 141, 142, 143,
1981  144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
1982  154, 155, 156, 0, 0, 230, 0, 0, 0, 0,
1983  231, 0, 0, 0, 0, 0, 0, 232, 0, 110,
1984  0, 0, 0, 233, 111, 0, 0, 0, 234, 0,
1985  0, 0, 0, 0, 0, 0, 0, 0, 235, 0,
1986  0, 236, 237, 238, 239, 0, 0, 0, 240, 0,
1987  0, 0, 241, 242, 158, 0, 0, 0, 159, 160,
1988  0, 0, 0, 0, 0, 243, 0, 0, 161, 0,
1989  244, 0, 162, 163, 112, 113, 114, 115, 0, 0,
1990  0, 0, 116, 0, 0, 0, 117, 0, 0, 0,
1991  118, 0, 0, 0, 0, 0, 119, 0, 0, 0,
1992  0, 0, 0, 0, 0, 0, 120, 0, 0, 0,
1993  0, 0, 121, 0, 0, 0, 0, 122, 0, 0,
1994  123, 0, 0, 124, 125, 0, 0, 126, 0, 0,
1995  127, 0, 128, 0, 0, 0, 0, 110, 0, 0,
1996  0, 0, 111, 0, 0, 0, 0, 0, 0, 0,
1997  0, 0, 0, 0, 0, 129, 130, 0, 131, 132,
1998  133, 0, 0, 134, 135, 0, 0, 136, 137, 138,
1999  139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
2000  149, 150, 151, 152, 153, 154, 155, 156, 0, 0,
2001  157, 0, 112, 113, 114, 115, 0, 0, 0, 0,
2002  116, 0, 0, 0, 117, 0, 0, 0, 118, 0,
2003  0, 0, 0, 0, 119, 0, 0, 0, 0, 0,
2004  0, 0, 0, 0, 120, 0, 0, 0, 0, 0,
2005  121, 0, 0, 0, 0, 122, 0, 0, 123, 158,
2006  0, 124, 125, 159, 160, 126, 0, 0, 127, 0,
2007  128, 0, 0, 161, 0, 244, 0, 162, 163, 0,
2008  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2009  0, 0, 0, 129, 130, 0, 131, 132, 133, 664,
2010  0, 134, 135, 0, 0, 136, 137, 138, 139, 140,
2011  141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
2012  151, 152, 153, 154, 155, 156, 0, 0, 157, 0,
2013  586, 0, 0, 0, 0, 0, 0, 222, 223, 224,
2014  225, 226, 227, 0, 0, 0, 0, 0, 0, 0,
2015  0, 0, 0, 0, 112, 113, 114, 115, 0, 0,
2016  0, 0, 665, 664, 0, 0, 666, 0, 0, 0,
2017  667, 0, 0, 0, 0, 0, 668, 158, 0, 0,
2018  592, 159, 160, 0, 0, 0, 669, 0, 0, 0,
2019  0, 161, 670, 0, 586, 162, 163, 671, 0, 0,
2020  672, 0, 0, 673, 674, 0, 0, 675, 0, 0,
2021  676, 0, 677, 0, 0, 0, 0, 0, 112, 113,
2022  114, 115, 0, 0, 0, 0, 665, 0, 0, 0,
2023  666, 0, 0, 0, 667, 678, 679, 0, 0, 0,
2024  668, 0, 0, 0, 592, 0, 0, 0, 0, 0,
2025  669, 0, 0, 0, 0, 0, 670, 0, 0, 0,
2026  0, 671, 0, 0, 672, 0, 0, 673, 674, 0,
2027  0, 675, 0, 0, 676, 0, 677, 0, 0, 0,
2028  0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
2029  3, 0, 0, 4, 0, 5, 0, 0, 0, 678,
2030  679, 0, 0, 0, 0, 0, 604, 605, 0, 606,
2031  0, 0, 0, 0, 0, 6, 7, 0, 0, 0,
2032  8, 0, 9, 0, 10, 0, 0, 11, 12, 13,
2033  0, 607, 608, 0, 14, 15, 16, 162, 17, 18,
2034  19, 20, 21, 22, 23, 24, 25, 26, 27, 0,
2035  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2036  0, 0, 0, 0, 0, 0, 0, 0, -197, 0,
2037  604, 605, 0, 606, 28, 0, 0, 0, 0, 0,
2038  0, 0, 0, 29, 0, 0, 0, 0, 0, 30,
2039  0, 0, 0, 0, 0, 607, 608, 0, 0, 0,
2040  0, 162, 0, 0, 0, 31, 0, 0, 0, 0,
2041  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2042  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2043  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2044  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2045  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2046  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2047  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2048  0, 0, 0, 32, 0, 0, 0, 0, 33, 0,
2049  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2050  0, 0, 0, 0, 0, 0, 34
2051 };
2052 
2053 static const yytype_int16 yycheck[] =
2054 {
2055  1, 44, 3, 44, 54, 54, 1, 7, 51, 25,
2056  51, 81, 305, 83, 84, 306, 304, 87, 88, 163,
2057  307, 247, 92, 93, 291, 316, 281, 97, 98, 264,
2058  260, 203, 564, 774, 855, 105, 291, 38, 159, 44,
2059  40, 858, 42, 859, 23, 46, 51, 860, 778, 779,
2060  7, 281, 52, 70, 784, 1, 985, 7, 4, 20,
2061  6, 291, 1, 902, 31, 4, 937, 6, 43, 975,
2062  260, 159, 31, 1, 10, 1, 4, 950, 6, 35,
2063  26, 27, 8, 9, 10, 79, 780, 26, 27, 79,
2064  16, 281, 557, 1033, 559, 138, 561, 22, 26, 27,
2065  80, 291, 281, 102, 34, 79, 8, 33, 34, 8,
2066  110, 841, 291, 103, 104, 79, 876, 877, 79, 584,
2067  119, 89, 587, 35, 70, 71, 72, 73, 12, 13,
2068  76, 57, 68, 59, 60, 65, 66, 831, 40, 65,
2069  66, 40, 68, 89, 70, 71, 72, 77, 78, 250,
2070  78, 77, 78, 78, 80, 1, 82, 1030, 4, 1099,
2071  6, 91, 162, 984, 94, 91, 96, 8, 94, 99,
2072  96, 636, 79, 99, 639, 101, 102, 61, 62, 63,
2073  26, 27, 108, 129, 174, 504, 229, 888, 33, 73,
2074  74, 75, 67, 15, 16, 17, 18, 102, 20, 40,
2075  22, 85, 86, 904, 247, 1111, 247, 201, 202, 199,
2076  178, 179, 212, 1, 119, 1144, 4, 7, 6, 103,
2077  104, 8, 109, 1094, 79, 225, 226, 217, 202, 110,
2078  20, 281, 22, 934, 251, 79, 555, 24, 26, 27,
2079  121, 291, 79, 89, 260, 132, 133, 1, 103, 104,
2080  4, 112, 6, 40, 1093, 136, 306, 306, 4, 302,
2081  6, 302, 201, 333, 67, 126, 316, 316, 311, 20,
2082  311, 22, 26, 27, 161, 258, 1006, 252, 253, 33,
2083  259, 211, 259, 23, 38, 211, 40, 215, 216, 259,
2084  1020, 1, 259, 89, 4, 112, 6, 302, 115, 1,
2085  259, 89, 4, 260, 6, 1122, 311, 1123, 79, 564,
2086  260, 1124, 1072, 8, 260, 246, 26, 27, 249, 174,
2087  89, 260, 1143, 33, 26, 27, 31, 557, 38, 559,
2088  40, 561, 260, 102, 564, 79, 132, 133, 1079, 79,
2089  80, 81, 109, 808, 245, 40, 131, 812, 229, 195,
2090  119, 136, 166, 353, 584, 166, 821, 587, 823, 234,
2091  235, 236, 260, 201, 536, 132, 133, 557, 135, 559,
2092  902, 561, 78, 905, 564, 129, 129, 612, 308, 31,
2093  32, 567, 308, 213, 31, 564, 67, 89, 318, 575,
2094  657, 1121, 318, 579, 584, 200, 165, 587, 45, 46,
2095  326, 234, 657, 67, 334, 937, 636, 195, 334, 639,
2096  336, 244, 338, 4, 260, 707, 342, 251, 344, 129,
2097  712, 200, 689, 192, 193, 1, 228, 657, 4, 550,
2098  6, 234, 235, 236, 689, 900, 215, 216, 85, 17,
2099  194, 562, 264, 252, 253, 199, 636, 94, 332, 639,
2100  26, 27, 917, 100, 207, 208, 209, 210, 211, 689,
2101  87, 88, 60, 217, 259, 199, 261, 657, 352, 116,
2102  204, 205, 260, 0, 562, 119, 105, 4, 657, 6,
2103  109, 47, 48, 217, 194, 129, 130, 18, 86, 199,
2104  215, 216, 89, 195, 70, 71, 72, 73, 264, 689,
2105  76, 259, 100, 132, 133, 102, 260, 217, 201, 202,
2106  689, 655, 109, 89, 564, 83, 84, 76, 38, 87,
2107  88, 261, 119, 38, 92, 93, 647, 259, 125, 97,
2108  98, 761, 4, 259, 6, 7, 766, 105, 136, 15,
2109  16, 557, 259, 559, 811, 561, 105, 174, 175, 42,
2110  260, 178, 89, 129, 91, 7, 811, 31, 260, 33,
2111  8, 35, 1094, 245, 38, 39, 40, 265, 584, 690,
2112  691, 587, 109, 245, 111, 112, 113, 114, 808, 78,
2113  847, 811, 812, 181, 814, 815, 816, 817, 818, 824,
2114  820, 821, 847, 823, 153, 154, 155, 156, 157, 158,
2115  162, 263, 690, 691, 830, 167, 168, 657, 79, 171,
2116  172, 82, 83, 84, 844, 845, 846, 847, 808, 78,
2117  636, 811, 812, 639, 814, 815, 816, 817, 818, 78,
2118  820, 821, 811, 823, 650, 651, 87, 88, 89, 689,
2119  38, 820, 38, 764, 765, 766, 646, 768, 215, 216,
2120  905, 9, 15, 16, 844, 845, 846, 847, 38, 557,
2121  78, 559, 78, 561, 664, 844, 845, 846, 847, 78,
2122  900, 78, 902, 4, 5, 905, 764, 765, 766, 78,
2123  768, 78, 937, 31, 260, 5, 584, 917, 91, 587,
2124  17, 692, 18, 928, 264, 930, 5, 45, 46, 57,
2125  239, 240, 60, 106, 238, 239, 240, 937, 7, 935,
2126  900, 832, 902, 71, 72, 905, 119, 61, 62, 79,
2127  194, 7, 125, 902, 82, 199, 905, 917, 79, 80,
2128  81, 7, 102, 1026, 74, 75, 1024, 85, 636, 8,
2129  1027, 639, 112, 217, 102, 78, 94, 937, 108, 119,
2130  108, 259, 100, 1044, 259, 125, 126, 1, 937, 259,
2131  4, 811, 6, 963, 964, 333, 169, 170, 116, 999,
2132  1000, 1062, 31, 259, 33, 896, 234, 235, 236, 38,
2133  39, 40, 26, 27, 68, 69, 70, 830, 78, 830,
2134  716, 78, 808, 78, 810, 78, 812, 847, 1, 246,
2135  202, 4, 259, 6, 31, 821, 33, 823, 896, 8,
2136  853, 38, 853, 40, 174, 38, 43, 95, 96, 97,
2137  98, 99, 78, 26, 27, 30, 70, 71, 72, 73,
2138  54, 89, 76, 115, 89, 195, 89, 5, 198, 1094,
2139  840, 201, 202, 203, 78, 89, 259, 79, 7, 266,
2140  77, 852, 78, 854, 855, 905, 78, 852, 79, 854,
2141  855, 218, 1, 7, 1094, 4, 7, 6, 79, 72,
2142  73, 7, 79, 76, 260, 79, 108, 1, 263, 79,
2143  4, 79, 6, 79, 900, 129, 89, 26, 27, 258,
2144  78, 258, 935, 78, 935, 61, 62, 63, 64, 65,
2145  66, 917, 26, 27, 1094, 78, 78, 38, 214, 89,
2146  808, 91, 92, 93, 812, 1094, 814, 815, 222, 223,
2147  224, 225, 226, 821, 260, 823, 129, 5, 29, 8,
2148  5, 80, 78, 72, 73, 194, 259, 76, 259, 982,
2149  199, 982, 174, 259, 944, 945, 946, 259, 72, 73,
2150  89, 259, 76, 954, 79, 108, 87, 88, 217, 960,
2151  961, 962, 259, 195, 30, 89, 198, 79, 78, 201,
2152  202, 203, 973, 16, 117, 303, 1108, 108, 857, 980,
2153  981, 1107, 983, 984, 976, 72, 981, 1020, 983, 984,
2154  129, 992, 31, 946, 1044, 1044, 246, 992, 572, 580,
2155  1010, 234, 900, 899, 1074, 129, 45, 46, 31, 32,
2156  33, 34, 1062, 1062, 37, 38, 260, 40, 41, 917,
2157  43, 1087, 31, 822, 33, 31, 35, 642, 648, 38,
2158  39, 40, 653, 31, 827, 725, 45, 46, 652, 45,
2159  46, 1042, 1043, 654, 309, 784, 85, 45, 46, 832,
2160  1145, 291, 1053, 1146, 77, 94, 310, 260, 1059, 87,
2161  88, 100, 817, 1064, 195, 196, 197, 198, 816, 1070,
2162  201, 202, 203, 818, 1075, 1070, 85, 116, 229, 85,
2163  108, -1, 230, -1, -1, 94, -1, 85, 94, -1,
2164  -1, 100, -1, -1, 100, -1, 94, -1, 1141, -1,
2165  1141, -1, 100, -1, 89, -1, 91, 116, -1, -1,
2166  116, -1, 1113, -1, -1, 1116, -1, -1, 116, -1,
2167  -1, 260, -1, -1, 109, -1, 111, 112, -1, 114,
2168  1131, 1132, 1133, -1, -1, -1, 260, 122, 123, -1,
2169  -1, 1142, 1143, -1, 1145, 1146, -1, 1142, 1143, -1,
2170  1145, 1146, -1, 1154, 1155, 1156, 1157, 1158, 1159, -1,
2171  -1, 1, 1163, 1158, 4, -1, 6, 195, 196, 197,
2172  198, 194, 1173, 201, 202, 203, 199, -1, -1, -1,
2173  -1, 204, 205, 23, -1, 194, 26, 27, 28, -1,
2174  199, -1, -1, -1, 217, 32, -1, 34, 38, 36,
2175  37, -1, -1, -1, 31, 79, 43, 44, 217, -1,
2176  -1, -1, -1, -1, -1, -1, -1, -1, 45, 46,
2177  -1, 61, 62, 63, 64, 65, 66, -1, 45, 46,
2178  -1, 105, -1, 73, 108, 72, -1, 77, 78, 79,
2179  80, 81, -1, 117, -1, -1, 86, -1, -1, 89,
2180  90, -1, -1, -1, 94, -1, -1, -1, 85, -1,
2181  100, -1, -1, -1, -1, -1, -1, 94, 85, -1,
2182  110, -1, -1, 100, -1, -1, 116, 94, -1, -1,
2183  -1, 121, -1, 100, 124, -1, -1, 127, 128, 116,
2184  -1, 131, -1, -1, 134, -1, 136, -1, -1, 116,
2185  174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
2186  184, 185, 186, 187, 188, 189, 190, 191, -1, 159,
2187  160, -1, 162, 163, 164, -1, -1, 167, 168, -1,
2188  -1, 171, 172, 173, 174, 175, 176, 177, 178, 179,
2189  180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
2190  190, 191, -1, -1, 194, -1, -1, -1, -1, 199,
2191  234, -1, -1, -1, -1, -1, 206, -1, -1, -1,
2192  -1, -1, 212, 1, -1, -1, 4, 217, 6, -1,
2193  -1, -1, -1, -1, -1, -1, -1, 227, -1, -1,
2194  230, 231, 232, 233, -1, 23, -1, 237, 26, 27,
2195  28, 241, 242, 243, -1, -1, -1, 247, 248, -1,
2196  38, -1, -1, -1, 254, -1, -1, 257, 79, 259,
2197  260, 261, 262, -1, -1, -1, -1, -1, -1, -1,
2198  -1, -1, -1, 61, 62, 63, 64, 65, 66, -1,
2199  -1, -1, -1, -1, 105, 73, -1, 108, -1, 77,
2200  78, 79, 80, 81, -1, -1, 117, -1, 86, -1,
2201  -1, 89, 90, -1, -1, -1, 94, -1, -1, -1,
2202  -1, -1, 100, -1, -1, -1, -1, -1, -1, -1,
2203  -1, -1, 110, -1, -1, -1, -1, -1, 116, -1,
2204  -1, -1, -1, 121, -1, -1, 124, -1, -1, 127,
2205  128, -1, -1, 131, -1, -1, 134, -1, 136, -1,
2206  -1, -1, -1, 174, 175, 176, 177, 178, 179, 180,
2207  181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
2208  191, 159, 160, -1, 162, 163, 164, -1, -1, 167,
2209  168, -1, -1, 171, 172, 173, 174, 175, 176, 177,
2210  178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
2211  188, 189, 190, 191, -1, -1, 194, -1, -1, -1,
2212  -1, 199, -1, 234, -1, -1, -1, -1, 206, -1,
2213  -1, -1, -1, -1, 212, 1, -1, -1, 4, 217,
2214  6, -1, -1, -1, -1, -1, -1, -1, -1, 227,
2215  -1, -1, 230, 231, 232, 233, -1, 23, -1, 237,
2216  26, 27, 28, 241, 242, 243, -1, -1, -1, 247,
2217  248, -1, 38, 87, 88, -1, 254, -1, -1, 257,
2218  -1, 259, 260, 261, 262, -1, -1, 101, -1, 103,
2219  104, 105, -1, -1, -1, 61, 62, 63, 64, 65,
2220  66, -1, -1, -1, 118, 119, 120, 73, -1, -1,
2221  -1, 77, 78, 79, 80, 81, -1, -1, -1, -1,
2222  86, -1, -1, 89, 90, -1, -1, -1, 94, -1,
2223  -1, -1, -1, -1, 100, -1, -1, -1, -1, -1,
2224  -1, -1, -1, -1, 110, -1, -1, -1, -1, -1,
2225  116, 109, -1, -1, 112, 121, -1, -1, 124, -1,
2226  -1, 127, 128, -1, -1, 131, -1, 125, 134, -1,
2227  136, 129, -1, -1, 132, 133, -1, -1, -1, 137,
2228  138, 139, 140, 141, -1, -1, -1, -1, -1, -1,
2229  -1, -1, -1, 159, 160, -1, 162, 163, 164, -1,
2230  -1, 167, 168, -1, -1, 171, 172, 173, 174, 175,
2231  176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
2232  186, 187, 188, 189, 190, 191, -1, -1, 194, -1,
2233  -1, -1, -1, 199, -1, -1, 5, -1, -1, -1,
2234  206, -1, -1, -1, -1, -1, 212, -1, -1, -1,
2235  -1, 217, 21, -1, 23, -1, -1, -1, -1, 28,
2236  -1, 227, -1, -1, 230, 231, 232, 233, -1, -1,
2237  -1, 237, -1, -1, -1, 241, 242, 243, -1, -1,
2238  -1, 247, 248, -1, -1, 54, 87, 88, 254, -1,
2239  91, 257, -1, 259, 260, 261, 262, -1, 67, -1,
2240  101, 102, 103, 104, 105, 106, 107, 108, 109, 78,
2241  79, 80, 81, -1, -1, -1, -1, 86, -1, -1,
2242  -1, 90, -1, -1, -1, 94, -1, -1, -1, -1,
2243  -1, 100, -1, -1, -1, 104, -1, -1, -1, -1,
2244  -1, 110, -1, -1, -1, -1, -1, 116, -1, -1,
2245  -1, -1, 121, -1, -1, 124, -1, -1, 127, 128,
2246  -1, -1, 131, -1, -1, 134, 139, 136, -1, 142,
2247  143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
2248  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2249  159, 160, -1, 162, 163, 164, -1, -1, 167, 168,
2250  -1, -1, 171, 172, 173, 174, 175, 176, 177, 178,
2251  179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
2252  189, 190, 191, 5, -1, 194, -1, -1, -1, -1,
2253  -1, -1, -1, -1, -1, -1, -1, -1, -1, 21,
2254  -1, 23, -1, -1, -1, -1, 28, -1, -1, -1,
2255  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2256  -1, 230, 231, -1, 233, -1, -1, -1, -1, -1,
2257  -1, -1, 54, -1, 243, -1, -1, -1, 247, 248,
2258  -1, -1, -1, -1, -1, -1, 255, 256, 257, -1,
2259  -1, -1, 261, 262, -1, -1, 78, 79, 80, 81,
2260  -1, -1, -1, -1, 86, -1, -1, -1, 90, -1,
2261  -1, -1, 94, -1, -1, -1, -1, -1, 100, -1,
2262  -1, -1, 104, -1, -1, -1, -1, -1, 110, -1,
2263  -1, -1, -1, -1, 116, -1, -1, -1, -1, 121,
2264  -1, -1, 124, -1, -1, 127, 128, -1, -1, 131,
2265  -1, -1, 134, -1, 136, -1, -1, -1, -1, -1,
2266  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2267  -1, -1, -1, -1, -1, -1, -1, 159, 160, -1,
2268  162, 163, 164, -1, -1, 167, 168, -1, -1, 171,
2269  172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
2270  182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
2271  5, -1, 194, -1, -1, -1, -1, -1, -1, -1,
2272  -1, -1, -1, -1, -1, -1, 21, -1, 23, -1,
2273  -1, -1, -1, 28, -1, -1, -1, -1, -1, -1,
2274  -1, -1, -1, -1, -1, -1, -1, -1, 230, 231,
2275  -1, 233, -1, -1, -1, -1, -1, -1, -1, 54,
2276  -1, 243, -1, -1, -1, 247, 248, -1, -1, -1,
2277  -1, -1, -1, 255, 256, 257, -1, -1, -1, 261,
2278  262, -1, -1, 78, 79, 80, 81, -1, -1, -1,
2279  -1, 86, -1, -1, -1, 90, -1, -1, -1, 94,
2280  -1, -1, -1, -1, -1, 100, -1, -1, -1, 104,
2281  -1, -1, -1, -1, -1, 110, -1, -1, -1, -1,
2282  -1, 116, -1, -1, -1, -1, 121, -1, -1, 124,
2283  -1, -1, 127, 128, -1, -1, 131, -1, -1, 134,
2284  -1, 136, -1, -1, -1, -1, -1, -1, -1, -1,
2285  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2286  -1, -1, -1, -1, 159, 160, -1, 162, 163, 164,
2287  -1, -1, 167, 168, -1, -1, 171, 172, 173, 174,
2288  175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
2289  185, 186, 187, 188, 189, 190, 191, -1, -1, 194,
2290  9, 10, 11, 12, 13, 14, -1, -1, -1, -1,
2291  -1, -1, 21, -1, 23, -1, -1, -1, -1, -1,
2292  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2293  -1, -1, -1, -1, -1, 230, 231, -1, 233, -1,
2294  -1, -1, -1, -1, -1, 54, -1, -1, 243, -1,
2295  -1, -1, 247, 248, -1, -1, -1, -1, -1, -1,
2296  255, 256, 257, -1, -1, -1, 261, 262, -1, 78,
2297  79, 80, 81, -1, -1, -1, -1, 86, -1, -1,
2298  -1, 90, -1, -1, -1, 94, -1, -1, -1, -1,
2299  -1, 100, -1, -1, -1, 104, -1, -1, -1, -1,
2300  -1, 110, -1, -1, -1, -1, -1, 116, -1, -1,
2301  -1, -1, 121, -1, -1, 124, -1, -1, 127, 128,
2302  -1, -1, 131, -1, -1, 134, -1, 136, 21, -1,
2303  23, -1, -1, -1, -1, 28, -1, -1, -1, -1,
2304  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2305  159, 160, -1, -1, -1, -1, -1, -1, -1, -1,
2306  -1, 54, -1, -1, -1, -1, -1, -1, -1, -1,
2307  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2308  -1, -1, -1, -1, -1, 78, 79, 80, 81, -1,
2309  -1, -1, -1, 86, -1, -1, -1, 90, -1, -1,
2310  -1, 94, -1, -1, -1, -1, -1, 100, -1, -1,
2311  -1, 104, -1, -1, -1, -1, -1, 110, -1, -1,
2312  -1, 230, 231, 116, 233, -1, -1, -1, 121, -1,
2313  -1, 124, -1, -1, 127, 128, -1, -1, 131, -1,
2314  -1, 134, -1, 136, -1, -1, 255, 256, -1, -1,
2315  259, -1, 261, -1, -1, -1, -1, -1, -1, -1,
2316  -1, -1, -1, -1, -1, -1, 159, 160, -1, 162,
2317  163, 164, -1, -1, 167, 168, -1, -1, 171, 172,
2318  173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
2319  183, 184, 185, 186, 187, 188, 189, 190, 191, -1,
2320  -1, 194, -1, -1, -1, -1, -1, -1, -1, -1,
2321  -1, -1, -1, 21, -1, 23, -1, -1, -1, -1,
2322  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2323  -1, -1, -1, -1, -1, -1, -1, 230, 231, -1,
2324  233, -1, -1, -1, -1, -1, 54, -1, -1, -1,
2325  243, -1, -1, -1, 247, 248, -1, -1, -1, -1,
2326  -1, -1, 255, 256, 257, -1, -1, -1, 261, 262,
2327  78, 79, 80, 81, 21, -1, 23, -1, 86, -1,
2328  -1, -1, 90, -1, -1, -1, 94, -1, -1, -1,
2329  -1, -1, 100, -1, -1, -1, 104, -1, -1, -1,
2330  -1, -1, 110, -1, -1, -1, -1, 54, 116, -1,
2331  -1, -1, -1, 121, -1, -1, 124, -1, -1, 127,
2332  128, -1, -1, 131, -1, -1, 134, -1, 136, -1,
2333  -1, 78, 79, 80, 81, -1, -1, -1, -1, 86,
2334  -1, -1, -1, 90, -1, -1, -1, 94, -1, -1,
2335  -1, 159, 160, 100, -1, -1, -1, 104, -1, -1,
2336  -1, -1, -1, 110, -1, -1, -1, -1, -1, 116,
2337  -1, -1, -1, -1, 121, -1, -1, 124, -1, -1,
2338  127, 128, -1, -1, 131, -1, -1, 134, -1, 136,
2339  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2340  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2341  -1, -1, 159, 160, -1, -1, 21, -1, 23, -1,
2342  -1, -1, 230, 231, -1, 233, -1, -1, -1, -1,
2343  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2344  -1, -1, -1, -1, -1, -1, -1, 255, 256, 54,
2345  -1, 259, -1, 261, 262, -1, -1, -1, -1, -1,
2346  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2347  -1, -1, -1, 78, 79, 80, 81, -1, -1, -1,
2348  -1, 86, -1, 230, 231, 90, 233, -1, -1, 94,
2349  -1, -1, -1, -1, -1, 100, -1, -1, -1, 104,
2350  -1, -1, -1, -1, -1, 110, -1, -1, 255, 256,
2351  -1, 116, 259, -1, 261, -1, 121, -1, -1, 124,
2352  -1, -1, 127, 128, -1, -1, 131, -1, -1, 134,
2353  -1, 136, -1, -1, 23, -1, -1, -1, -1, 28,
2354  -1, -1, -1, -1, -1, -1, -1, -1, -1, 38,
2355  -1, -1, -1, -1, 159, 160, -1, -1, -1, -1,
2356  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2357  -1, -1, 61, 62, 63, 64, 65, 66, -1, -1,
2358  -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
2359  79, 80, 81, -1, -1, -1, -1, 86, -1, -1,
2360  -1, 90, -1, -1, -1, 94, -1, -1, -1, -1,
2361  -1, 100, -1, -1, -1, -1, -1, -1, -1, -1,
2362  -1, 110, -1, -1, -1, 230, 231, 116, 233, -1,
2363  -1, -1, 121, -1, -1, 124, -1, -1, 127, 128,
2364  -1, -1, 131, -1, -1, 134, -1, 136, -1, -1,
2365  255, 256, -1, -1, -1, -1, 261, -1, -1, -1,
2366  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2367  159, 160, -1, 162, 163, 164, -1, -1, 167, 168,
2368  -1, -1, 171, 172, 173, 174, 175, 176, 177, 178,
2369  179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
2370  189, 190, 191, -1, -1, 194, -1, -1, -1, -1,
2371  199, -1, -1, -1, -1, -1, -1, 206, -1, 23,
2372  -1, -1, -1, 212, 28, -1, -1, -1, 217, -1,
2373  -1, -1, -1, -1, -1, -1, -1, -1, 227, -1,
2374  -1, 230, 231, 232, 233, -1, -1, -1, 237, -1,
2375  -1, -1, 241, 242, 243, -1, -1, -1, 247, 248,
2376  -1, -1, -1, -1, -1, 254, -1, -1, 257, -1,
2377  259, -1, 261, 262, 78, 79, 80, 81, -1, -1,
2378  -1, -1, 86, -1, -1, -1, 90, -1, -1, -1,
2379  94, -1, -1, -1, -1, -1, 100, -1, -1, -1,
2380  -1, -1, -1, -1, -1, -1, 110, -1, -1, -1,
2381  -1, -1, 116, -1, -1, -1, -1, 121, -1, -1,
2382  124, -1, -1, 127, 128, -1, -1, 131, -1, -1,
2383  134, -1, 136, -1, -1, -1, -1, 23, -1, -1,
2384  -1, -1, 28, -1, -1, -1, -1, -1, -1, -1,
2385  -1, -1, -1, -1, -1, 159, 160, -1, 162, 163,
2386  164, -1, -1, 167, 168, -1, -1, 171, 172, 173,
2387  174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
2388  184, 185, 186, 187, 188, 189, 190, 191, -1, -1,
2389  194, -1, 78, 79, 80, 81, -1, -1, -1, -1,
2390  86, -1, -1, -1, 90, -1, -1, -1, 94, -1,
2391  -1, -1, -1, -1, 100, -1, -1, -1, -1, -1,
2392  -1, -1, -1, -1, 110, -1, -1, -1, -1, -1,
2393  116, -1, -1, -1, -1, 121, -1, -1, 124, 243,
2394  -1, 127, 128, 247, 248, 131, -1, -1, 134, -1,
2395  136, -1, -1, 257, -1, 259, -1, 261, 262, -1,
2396  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2397  -1, -1, -1, 159, 160, -1, 162, 163, 164, 23,
2398  -1, 167, 168, -1, -1, 171, 172, 173, 174, 175,
2399  176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
2400  186, 187, 188, 189, 190, 191, -1, -1, 194, -1,
2401  54, -1, -1, -1, -1, -1, -1, 61, 62, 63,
2402  64, 65, 66, -1, -1, -1, -1, -1, -1, -1,
2403  -1, -1, -1, -1, 78, 79, 80, 81, -1, -1,
2404  -1, -1, 86, 23, -1, -1, 90, -1, -1, -1,
2405  94, -1, -1, -1, -1, -1, 100, 243, -1, -1,
2406  104, 247, 248, -1, -1, -1, 110, -1, -1, -1,
2407  -1, 257, 116, -1, 54, 261, 262, 121, -1, -1,
2408  124, -1, -1, 127, 128, -1, -1, 131, -1, -1,
2409  134, -1, 136, -1, -1, -1, -1, -1, 78, 79,
2410  80, 81, -1, -1, -1, -1, 86, -1, -1, -1,
2411  90, -1, -1, -1, 94, 159, 160, -1, -1, -1,
2412  100, -1, -1, -1, 104, -1, -1, -1, -1, -1,
2413  110, -1, -1, -1, -1, -1, 116, -1, -1, -1,
2414  -1, 121, -1, -1, 124, -1, -1, 127, 128, -1,
2415  -1, 131, -1, -1, 134, -1, 136, -1, -1, -1,
2416  -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
2417  1, -1, -1, 4, -1, 6, -1, -1, -1, 159,
2418  160, -1, -1, -1, -1, -1, 230, 231, -1, 233,
2419  -1, -1, -1, -1, -1, 26, 27, -1, -1, -1,
2420  31, -1, 33, -1, 35, -1, -1, 38, 39, 40,
2421  -1, 255, 256, -1, 45, 46, 47, 261, 49, 50,
2422  51, 52, 53, 54, 55, 56, 57, 58, 59, -1,
2423  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2424  -1, -1, -1, -1, -1, -1, -1, -1, 79, -1,
2425  230, 231, -1, 233, 85, -1, -1, -1, -1, -1,
2426  -1, -1, -1, 94, -1, -1, -1, -1, -1, 100,
2427  -1, -1, -1, -1, -1, 255, 256, -1, -1, -1,
2428  -1, 261, -1, -1, -1, 116, -1, -1, -1, -1,
2429  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2430  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2431  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2432  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2433  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2434  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2435  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2436  -1, -1, -1, 194, -1, -1, -1, -1, 199, -1,
2437  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2438  -1, -1, -1, -1, -1, -1, 217
2439 };
2440 
2441  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2442  symbol of state STATE-NUM. */
2443 static const yytype_uint16 yystos[] =
2444 {
2445  0, 268, 0, 1, 4, 6, 26, 27, 31, 33,
2446  35, 38, 39, 40, 45, 46, 47, 49, 50, 51,
2447  52, 53, 54, 55, 56, 57, 58, 59, 85, 94,
2448  100, 116, 194, 199, 217, 269, 271, 272, 273, 274,
2449  319, 320, 321, 322, 330, 269, 80, 79, 316, 321,
2450  322, 330, 321, 324, 324, 324, 274, 35, 275, 31,
2451  33, 38, 39, 40, 194, 199, 217, 276, 35, 277,
2452  31, 33, 35, 38, 39, 40, 194, 199, 217, 278,
2453  31, 32, 33, 34, 37, 38, 40, 41, 43, 77,
2454  194, 199, 204, 205, 217, 279, 199, 204, 205, 217,
2455  280, 31, 33, 38, 40, 43, 77, 281, 33, 282,
2456  23, 28, 78, 79, 80, 81, 86, 90, 94, 100,
2457  110, 116, 121, 124, 127, 128, 131, 134, 136, 159,
2458  160, 162, 163, 164, 167, 168, 171, 172, 173, 174,
2459  175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
2460  185, 186, 187, 188, 189, 190, 191, 194, 243, 247,
2461  248, 257, 261, 262, 289, 317, 397, 398, 399, 400,
2462  401, 452, 455, 459, 460, 461, 463, 471, 472, 474,
2463  476, 478, 480, 482, 484, 486, 488, 490, 492, 494,
2464  496, 498, 502, 504, 506, 507, 509, 511, 513, 515,
2465  517, 519, 521, 43, 252, 253, 283, 288, 79, 284,
2466  285, 79, 321, 326, 326, 0, 269, 316, 316, 250,
2467  329, 38, 61, 62, 63, 64, 65, 66, 77, 173,
2468  194, 199, 206, 212, 217, 227, 230, 231, 232, 233,
2469  237, 241, 242, 254, 259, 334, 335, 336, 337, 338,
2470  339, 343, 344, 347, 348, 355, 359, 363, 364, 366,
2471  367, 372, 373, 375, 376, 378, 379, 382, 383, 390,
2472  392, 393, 396, 400, 405, 406, 407, 408, 409, 410,
2473  415, 416, 417, 437, 451, 455, 456, 469, 470, 471,
2474  269, 258, 290, 293, 334, 316, 295, 297, 397, 417,
2475  300, 322, 331, 321, 322, 324, 324, 324, 79, 326,
2476  326, 330, 321, 322, 331, 324, 324, 324, 79, 326,
2477  326, 321, 320, 333, 322, 333, 31, 333, 324, 324,
2478  333, 333, 31, 32, 79, 326, 31, 333, 31, 333,
2479  326, 326, 31, 333, 31, 333, 326, 321, 322, 324,
2480  324, 333, 31, 322, 82, 83, 84, 316, 473, 87,
2481  88, 174, 175, 178, 403, 404, 87, 88, 89, 475,
2482  89, 91, 92, 93, 477, 95, 96, 97, 98, 99,
2483  479, 87, 88, 91, 101, 102, 103, 104, 105, 106,
2484  107, 108, 109, 481, 89, 91, 109, 111, 112, 113,
2485  114, 483, 87, 88, 101, 103, 104, 105, 118, 119,
2486  120, 485, 89, 91, 109, 111, 112, 114, 122, 123,
2487  487, 102, 112, 119, 125, 126, 489, 112, 126, 491,
2488  119, 129, 130, 493, 105, 109, 132, 133, 495, 109,
2489  132, 133, 135, 497, 109, 112, 125, 129, 132, 133,
2490  137, 138, 139, 140, 141, 499, 89, 132, 133, 503,
2491  109, 132, 133, 161, 505, 89, 102, 119, 165, 192,
2492  193, 462, 510, 166, 512, 166, 514, 102, 119, 508,
2493  91, 106, 119, 125, 169, 170, 516, 102, 119, 518,
2494  89, 102, 109, 119, 125, 520, 79, 105, 108, 117,
2495  234, 453, 454, 455, 79, 108, 174, 195, 198, 201,
2496  202, 203, 464, 466, 234, 244, 458, 410, 416, 245,
2497  162, 167, 168, 171, 172, 522, 316, 409, 288, 32,
2498  34, 36, 37, 43, 44, 72, 286, 326, 316, 201,
2499  429, 430, 215, 216, 356, 431, 432, 78, 47, 48,
2500  391, 316, 316, 79, 453, 79, 464, 200, 213, 200,
2501  356, 67, 67, 4, 270, 418, 419, 251, 332, 337,
2502  201, 202, 345, 346, 129, 207, 208, 209, 210, 211,
2503  349, 350, 228, 365, 5, 21, 54, 67, 86, 90,
2504  94, 100, 104, 110, 116, 121, 124, 127, 128, 131,
2505  134, 136, 159, 160, 230, 231, 233, 255, 256, 368,
2506  369, 370, 371, 398, 399, 400, 411, 412, 413, 414,
2507  440, 441, 442, 443, 444, 446, 447, 448, 449, 67,
2508  234, 235, 236, 374, 380, 381, 67, 377, 380, 238,
2509  239, 240, 384, 385, 386, 387, 31, 259, 394, 395,
2510  15, 16, 17, 18, 264, 8, 24, 40, 9, 10,
2511  11, 12, 13, 14, 23, 86, 90, 94, 100, 110,
2512  116, 121, 124, 127, 128, 131, 134, 136, 159, 160,
2513  398, 399, 414, 417, 438, 439, 444, 445, 449, 450,
2514  38, 38, 428, 438, 439, 259, 259, 259, 259, 42,
2515  328, 334, 290, 293, 295, 297, 300, 326, 430, 432,
2516  334, 297, 326, 321, 324, 333, 31, 326, 321, 321,
2517  321, 321, 324, 316, 7, 8, 89, 178, 179, 402,
2518  139, 142, 143, 144, 145, 146, 147, 148, 149, 150,
2519  151, 152, 500, 265, 87, 88, 108, 195, 196, 197,
2520  465, 466, 245, 245, 78, 263, 287, 288, 436, 78,
2521  78, 388, 389, 410, 38, 38, 38, 466, 38, 370,
2522  215, 216, 360, 370, 78, 370, 416, 414, 417, 422,
2523  423, 426, 444, 445, 7, 260, 317, 78, 78, 346,
2524  60, 86, 100, 136, 181, 352, 317, 78, 78, 78,
2525  317, 351, 350, 110, 121, 136, 229, 370, 5, 370,
2526  8, 40, 5, 380, 15, 16, 17, 18, 264, 20,
2527  22, 5, 7, 5, 370, 370, 385, 7, 316, 410,
2528  420, 421, 259, 395, 400, 400, 405, 406, 407, 409,
2529  23, 259, 340, 439, 7, 7, 8, 262, 439, 416,
2530  416, 269, 292, 294, 296, 301, 78, 259, 259, 259,
2531  259, 436, 436, 321, 78, 404, 76, 105, 153, 154,
2532  155, 156, 157, 158, 501, 78, 78, 78, 246, 457,
2533  259, 202, 79, 202, 357, 398, 70, 332, 424, 425,
2534  416, 416, 398, 416, 467, 468, 38, 416, 78, 357,
2535  30, 270, 5, 270, 424, 270, 419, 115, 112, 115,
2536  353, 354, 89, 89, 54, 89, 370, 5, 400, 439,
2537  370, 449, 449, 440, 441, 442, 78, 444, 370, 381,
2538  370, 380, 387, 337, 424, 420, 316, 270, 341, 342,
2539  444, 444, 444, 439, 33, 38, 40, 129, 194, 199,
2540  217, 260, 269, 271, 291, 73, 89, 260, 269, 271,
2541  311, 314, 334, 70, 71, 72, 73, 76, 89, 129,
2542  260, 269, 271, 302, 72, 89, 129, 260, 269, 271,
2543  302, 292, 294, 296, 301, 259, 7, 266, 457, 249,
2544  457, 78, 309, 78, 218, 358, 79, 318, 425, 7,
2545  7, 416, 20, 79, 358, 370, 427, 444, 445, 451,
2546  7, 79, 79, 79, 370, 380, 380, 260, 337, 422,
2547  7, 260, 263, 316, 323, 316, 325, 325, 79, 79,
2548  433, 316, 327, 327, 269, 61, 62, 315, 79, 269,
2549  269, 269, 318, 318, 258, 74, 75, 303, 78, 79,
2550  103, 104, 174, 304, 305, 310, 68, 69, 70, 298,
2551  299, 269, 258, 304, 298, 269, 260, 260, 260, 260,
2552  309, 78, 78, 89, 195, 260, 269, 271, 435, 78,
2553  398, 398, 222, 223, 224, 225, 226, 362, 214, 361,
2554  270, 354, 260, 5, 270, 342, 293, 295, 300, 327,
2555  306, 306, 29, 269, 269, 297, 269, 8, 7, 269,
2556  297, 5, 269, 260, 457, 80, 320, 269, 357, 361,
2557  78, 451, 259, 259, 259, 306, 259, 259, 79, 310,
2558  299, 199, 217, 304, 269, 108, 269, 79, 201, 202,
2559  270, 294, 296, 301, 259, 307, 308, 30, 313, 269,
2560  269, 269, 131, 136, 434, 260, 260, 260, 309, 260,
2561  269, 271, 429, 260, 269, 271, 431, 79, 117, 269,
2562  269, 269, 269, 260, 269, 269, 22, 78, 312, 269,
2563  78
2564 };
2565 
2566  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
2567 static const yytype_uint16 yyr1[] =
2568 {
2569  0, 267, 268, 268, 269, 269, 270, 270, 271, 271,
2570  271, 272, 272, 272, 272, 273, 273, 273, 273, 273,
2571  273, 273, 273, 273, 273, 273, 273, 273, 274, 274,
2572  274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
2573  274, 275, 276, 276, 276, 276, 276, 276, 276, 276,
2574  276, 276, 276, 277, 278, 278, 278, 278, 278, 278,
2575  278, 278, 278, 279, 279, 279, 279, 279, 279, 279,
2576  279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
2577  279, 279, 279, 280, 280, 280, 280, 280, 280, 281,
2578  281, 281, 281, 281, 281, 282, 283, 283, 284, 285,
2579  285, 286, 286, 286, 286, 286, 286, 286, 286, 287,
2580  287, 288, 288, 289, 290, 291, 292, 292, 292, 292,
2581  292, 292, 292, 292, 292, 292, 293, 294, 294, 294,
2582  294, 294, 294, 295, 296, 296, 296, 296, 296, 296,
2583  296, 296, 296, 297, 297, 298, 298, 299, 299, 299,
2584  300, 301, 301, 301, 301, 301, 301, 301, 301, 301,
2585  302, 302, 303, 303, 304, 305, 305, 306, 307, 307,
2586  307, 307, 308, 308, 308, 308, 309, 309, 309, 309,
2587  310, 310, 310, 310, 311, 312, 312, 313, 313, 314,
2588  315, 315, 316, 317, 317, 317, 318, 319, 319, 320,
2589  320, 320, 320, 320, 320, 321, 322, 323, 324, 325,
2590  326, 327, 328, 329, 330, 330, 331, 332, 333, 333,
2591  334, 334, 335, 336, 336, 337, 337, 337, 337, 337,
2592  337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
2593  337, 337, 337, 338, 338, 339, 340, 340, 341, 341,
2594  341, 342, 343, 343, 344, 344, 345, 345, 346, 346,
2595  347, 347, 348, 349, 349, 350, 350, 350, 350, 350,
2596  350, 351, 352, 352, 352, 352, 352, 353, 353, 354,
2597  354, 355, 355, 356, 356, 356, 357, 357, 358, 358,
2598  359, 359, 360, 360, 360, 361, 361, 361, 361, 362,
2599  362, 362, 362, 362, 363, 364, 365, 365, 365, 365,
2600  365, 366, 367, 367, 368, 368, 369, 370, 370, 370,
2601  371, 371, 371, 371, 371, 371, 371, 372, 372, 373,
2602  374, 374, 374, 375, 375, 376, 377, 377, 377, 377,
2603  377, 378, 378, 379, 380, 380, 381, 381, 381, 382,
2604  382, 383, 384, 384, 385, 385, 386, 386, 387, 387,
2605  388, 388, 389, 390, 391, 391, 392, 392, 393, 394,
2606  394, 395, 396, 397, 398, 398, 398, 399, 400, 400,
2607  400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
2608  401, 402, 402, 402, 403, 403, 403, 403, 403, 404,
2609  404, 405, 405, 405, 406, 406, 407, 407, 408, 408,
2610  409, 410, 410, 411, 412, 413, 414, 414, 414, 415,
2611  416, 416, 416, 417, 418, 418, 418, 419, 419, 419,
2612  420, 420, 421, 422, 422, 423, 424, 424, 425, 425,
2613  426, 426, 427, 427, 428, 428, 429, 430, 431, 432,
2614  433, 434, 434, 435, 435, 436, 437, 437, 437, 437,
2615  438, 438, 439, 439, 439, 440, 440, 440, 441, 441,
2616  442, 442, 443, 443, 444, 445, 445, 446, 446, 447,
2617  448, 448, 448, 448, 448, 448, 448, 448, 448, 449,
2618  449, 449, 449, 449, 449, 449, 449, 449, 449, 449,
2619  449, 449, 449, 449, 450, 450, 450, 450, 450, 450,
2620  451, 451, 451, 451, 451, 451, 452, 452, 452, 453,
2621  453, 454, 454, 454, 454, 455, 455, 455, 455, 455,
2622  455, 455, 455, 455, 455, 455, 455, 455, 455, 455,
2623  455, 455, 455, 456, 456, 456, 456, 457, 457, 458,
2624  458, 459, 460, 460, 460, 461, 462, 462, 463, 463,
2625  463, 464, 464, 464, 464, 465, 465, 465, 465, 465,
2626  465, 465, 466, 466, 466, 466, 467, 467, 468, 468,
2627  469, 469, 469, 470, 471, 471, 471, 471, 471, 471,
2628  471, 471, 471, 471, 471, 471, 471, 471, 471, 471,
2629  472, 473, 473, 473, 474, 475, 475, 475, 476, 477,
2630  477, 477, 477, 478, 479, 479, 479, 479, 479, 480,
2631  481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
2632  481, 481, 482, 483, 483, 483, 483, 483, 483, 483,
2633  484, 485, 485, 485, 485, 485, 485, 485, 485, 485,
2634  486, 487, 487, 487, 487, 487, 487, 487, 487, 488,
2635  489, 489, 489, 489, 489, 490, 491, 491, 492, 493,
2636  493, 493, 494, 495, 495, 495, 495, 496, 497, 497,
2637  497, 497, 498, 498, 498, 499, 499, 499, 499, 499,
2638  499, 499, 499, 499, 499, 500, 500, 500, 500, 500,
2639  500, 500, 500, 500, 500, 500, 500, 501, 501, 501,
2640  501, 501, 501, 501, 501, 502, 503, 503, 503, 504,
2641  505, 505, 505, 505, 506, 506, 506, 506, 506, 506,
2642  506, 507, 508, 508, 509, 510, 510, 510, 510, 511,
2643  512, 513, 514, 515, 516, 516, 516, 516, 516, 516,
2644  517, 518, 518, 519, 520, 520, 520, 520, 520, 521,
2645  522, 522, 522, 522, 522
2646 };
2647 
2648  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
2649 static const yytype_uint8 yyr2[] =
2650 {
2651  0, 2, 0, 2, 1, 1, 1, 0, 3, 5,
2652  2, 1, 1, 2, 2, 1, 2, 2, 2, 2,
2653  2, 2, 2, 2, 2, 2, 2, 2, 2, 6,
2654  2, 6, 3, 2, 6, 6, 3, 2, 3, 3,
2655  8, 3, 2, 6, 2, 6, 6, 6, 3, 2,
2656  3, 3, 8, 3, 2, 2, 2, 2, 2, 3,
2657  2, 2, 4, 2, 2, 2, 2, 2, 3, 2,
2658  2, 3, 2, 2, 3, 2, 2, 3, 3, 2,
2659  2, 3, 4, 2, 3, 2, 2, 3, 2, 2,
2660  2, 2, 2, 3, 2, 3, 2, 1, 3, 0,
2661  1, 0, 1, 1, 1, 1, 1, 1, 1, 0,
2662  1, 1, 1, 1, 0, 2, 0, 2, 2, 3,
2663  8, 8, 8, 8, 8, 9, 0, 0, 2, 2,
2664  3, 3, 3, 0, 0, 2, 2, 4, 4, 4,
2665  4, 4, 3, 1, 1, 3, 1, 1, 1, 1,
2666  0, 0, 2, 2, 6, 6, 6, 4, 4, 3,
2667  2, 2, 1, 1, 1, 1, 3, 0, 0, 2,
2668  2, 2, 0, 2, 2, 2, 0, 2, 2, 2,
2669  1, 1, 1, 1, 7, 1, 2, 2, 0, 2,
2670  1, 1, 1, 1, 1, 1, 1, 0, 1, 1,
2671  1, 1, 1, 1, 1, 2, 2, 1, 2, 1,
2672  2, 1, 2, 2, 1, 2, 2, 2, 0, 1,
2673  1, 2, 1, 1, 2, 1, 1, 1, 1, 1,
2674  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2675  1, 1, 1, 1, 1, 3, 3, 2, 1, 3,
2676  3, 5, 1, 2, 1, 3, 1, 2, 2, 2,
2677  1, 2, 1, 1, 2, 2, 2, 2, 2, 2,
2678  2, 1, 2, 2, 1, 1, 1, 3, 1, 1,
2679  1, 7, 6, 1, 1, 0, 1, 1, 0, 3,
2680  5, 3, 1, 1, 0, 0, 3, 3, 3, 1,
2681  1, 1, 1, 1, 2, 1, 0, 4, 4, 4,
2682  3, 2, 1, 1, 1, 3, 3, 1, 1, 1,
2683  1, 2, 3, 4, 2, 3, 2, 2, 1, 1,
2684  3, 4, 1, 2, 1, 1, 2, 3, 1, 3,
2685  4, 3, 5, 3, 1, 3, 1, 1, 1, 1,
2686  2, 1, 1, 2, 2, 1, 1, 3, 1, 1,
2687  1, 2, 1, 4, 1, 1, 6, 5, 1, 1,
2688  2, 2, 1, 2, 1, 1, 2, 1, 1, 1,
2689  1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
2690  3, 1, 1, 1, 1, 1, 1, 1, 1, 3,
2691  1, 1, 3, 3, 1, 3, 1, 3, 1, 3,
2692  1, 1, 3, 3, 3, 1, 1, 1, 1, 3,
2693  1, 1, 1, 3, 1, 3, 3, 3, 3, 5,
2694  1, 2, 1, 1, 2, 1, 1, 2, 2, 1,
2695  1, 1, 1, 1, 1, 1, 4, 1, 4, 1,
2696  1, 1, 1, 5, 3, 0, 2, 2, 3, 5,
2697  3, 3, 1, 1, 1, 1, 3, 3, 1, 3,
2698  1, 3, 1, 3, 1, 1, 3, 1, 1, 1,
2699  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2700  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2701  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2702  1, 1, 1, 2, 2, 1, 2, 1, 2, 1,
2703  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2704  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2705  1, 1, 1, 4, 3, 4, 1, 0, 2, 1,
2706  1, 5, 7, 5, 4, 2, 1, 1, 2, 2,
2707  3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2708  1, 1, 1, 1, 1, 1, 3, 3, 1, 1,
2709  4, 4, 5, 3, 1, 1, 1, 1, 1, 1,
2710  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2711  6, 1, 1, 1, 2, 1, 1, 1, 2, 1,
2712  1, 1, 1, 2, 1, 1, 1, 1, 1, 2,
2713  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2714  1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
2715  2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2716  2, 1, 1, 1, 1, 1, 1, 1, 1, 2,
2717  1, 1, 1, 1, 1, 2, 1, 1, 2, 1,
2718  1, 1, 2, 1, 1, 1, 1, 2, 1, 1,
2719  1, 1, 2, 4, 3, 1, 1, 1, 1, 1,
2720  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2721  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2722  1, 1, 1, 1, 1, 2, 1, 1, 1, 2,
2723  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2724  1, 2, 1, 1, 2, 1, 1, 1, 1, 2,
2725  4, 2, 1, 2, 1, 1, 1, 1, 1, 1,
2726  2, 1, 1, 2, 1, 1, 1, 1, 1, 2,
2727  1, 1, 1, 1, 1
2728 };
2729 
2730 
2731 #define yyerrok (yyerrstatus = 0)
2732 #define yyclearin (yychar = YYEMPTY)
2733 #define YYEMPTY (-2)
2734 #define YYEOF 0
2735 
2736 #define YYACCEPT goto yyacceptlab
2737 #define YYABORT goto yyabortlab
2738 #define YYERROR goto yyerrorlab
2739 
2740 
2741 #define YYRECOVERING() (!!yyerrstatus)
2742 
2743 #define YYBACKUP(Token, Value) \
2744 do \
2745  if (yychar == YYEMPTY) \
2746  { \
2747  yychar = (Token); \
2748  yylval = (Value); \
2749  YYPOPSTACK (yylen); \
2750  yystate = *yyssp; \
2751  goto yybackup; \
2752  } \
2753  else \
2754  { \
2755  yyerror (&yylloc, scanner, state, YY_("syntax error: cannot back up")); \
2756  YYERROR; \
2757  } \
2758 while (0)
2759 
2760 /* Error token number */
2761 #define YYTERROR 1
2762 #define YYERRCODE 256
2763 
2764 
2765 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2766  If N is 0, then set CURRENT to the empty location which ends
2767  the previous symbol: RHS[0] (always defined). */
2768 
2769 #ifndef YYLLOC_DEFAULT
2770 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2771  do \
2772  if (N) \
2773  { \
2774  (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2775  (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2776  (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2777  (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2778  } \
2779  else \
2780  { \
2781  (Current).first_line = (Current).last_line = \
2782  YYRHSLOC (Rhs, 0).last_line; \
2783  (Current).first_column = (Current).last_column = \
2784  YYRHSLOC (Rhs, 0).last_column; \
2785  } \
2786  while (0)
2787 #endif
2788 
2789 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2790 
2791 
2792 /* Enable debugging if requested. */
2793 #if YYDEBUG
2794 
2795 # ifndef YYFPRINTF
2796 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2797 # define YYFPRINTF fprintf
2798 # endif
2799 
2800 # define YYDPRINTF(Args) \
2801 do { \
2802  if (yydebug) \
2803  YYFPRINTF Args; \
2804 } while (0)
2805 
2806 
2807 /* YY_LOCATION_PRINT -- Print the location on the stream.
2808  This macro was not mandated originally: define only if we know
2809  we won't break user code: when these are the locations we know. */
2810 
2811 #ifndef YY_LOCATION_PRINT
2812 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2813 
2814 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2815 
2816 YY_ATTRIBUTE_UNUSED
2817 static unsigned
2818 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2819 {
2820  unsigned res = 0;
2821  int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2822  if (0 <= yylocp->first_line)
2823  {
2824  res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2825  if (0 <= yylocp->first_column)
2826  res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2827  }
2828  if (0 <= yylocp->last_line)
2829  {
2830  if (yylocp->first_line < yylocp->last_line)
2831  {
2832  res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2833  if (0 <= end_col)
2834  res += YYFPRINTF (yyo, ".%d", end_col);
2835  }
2836  else if (0 <= end_col && yylocp->first_column < end_col)
2837  res += YYFPRINTF (yyo, "-%d", end_col);
2838  }
2839  return res;
2840  }
2841 
2842 # define YY_LOCATION_PRINT(File, Loc) \
2843  yy_location_print_ (File, &(Loc))
2844 
2845 # else
2846 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2847 # endif
2848 #endif
2849 
2850 
2851 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2852 do { \
2853  if (yydebug) \
2854  { \
2855  YYFPRINTF (stderr, "%s ", Title); \
2856  yy_symbol_print (stderr, \
2857  Type, Value, Location, scanner, state); \
2858  YYFPRINTF (stderr, "\n"); \
2859  } \
2860 } while (0)
2861 
2862 
2863 /*----------------------------------------.
2864 | Print this symbol's value on YYOUTPUT. |
2865 `----------------------------------------*/
2866 
2867 static void
2868 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, void *scanner, struct parser_state *state)
2869 {
2870  FILE *yyo = yyoutput;
2871  YYUSE (yyo);
2872  YYUSE (yylocationp);
2873  YYUSE (scanner);
2874  YYUSE (state);
2875  if (!yyvaluep)
2876  return;
2877 # ifdef YYPRINT
2878  if (yytype < YYNTOKENS)
2879  YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2880 # endif
2881  YYUSE (yytype);
2882 }
2883 
2884 
2885 /*--------------------------------.
2886 | Print this symbol on YYOUTPUT. |
2887 `--------------------------------*/
2888 
2889 static void
2890 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, void *scanner, struct parser_state *state)
2891 {
2892  YYFPRINTF (yyoutput, "%s %s (",
2893  yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2894 
2895  YY_LOCATION_PRINT (yyoutput, *yylocationp);
2896  YYFPRINTF (yyoutput, ": ");
2897  yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, scanner, state);
2898  YYFPRINTF (yyoutput, ")");
2899 }
2900 
2901 /*------------------------------------------------------------------.
2902 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2903 | TOP (included). |
2904 `------------------------------------------------------------------*/
2905 
2906 static void
2907 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2908 {
2909  YYFPRINTF (stderr, "Stack now");
2910  for (; yybottom <= yytop; yybottom++)
2911  {
2912  int yybot = *yybottom;
2913  YYFPRINTF (stderr, " %d", yybot);
2914  }
2915  YYFPRINTF (stderr, "\n");
2916 }
2917 
2918 # define YY_STACK_PRINT(Bottom, Top) \
2919 do { \
2920  if (yydebug) \
2921  yy_stack_print ((Bottom), (Top)); \
2922 } while (0)
2923 
2924 
2925 /*------------------------------------------------.
2926 | Report that the YYRULE is going to be reduced. |
2927 `------------------------------------------------*/
2928 
2929 static void
2930 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, void *scanner, struct parser_state *state)
2931 {
2932  unsigned long int yylno = yyrline[yyrule];
2933  int yynrhs = yyr2[yyrule];
2934  int yyi;
2935  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2936  yyrule - 1, yylno);
2937  /* The symbols being reduced. */
2938  for (yyi = 0; yyi < yynrhs; yyi++)
2939  {
2940  YYFPRINTF (stderr, " $%d = ", yyi + 1);
2941  yy_symbol_print (stderr,
2942  yystos[yyssp[yyi + 1 - yynrhs]],
2943  &(yyvsp[(yyi + 1) - (yynrhs)])
2944  , &(yylsp[(yyi + 1) - (yynrhs)]) , scanner, state);
2945  YYFPRINTF (stderr, "\n");
2946  }
2947 }
2948 
2949 # define YY_REDUCE_PRINT(Rule) \
2950 do { \
2951  if (yydebug) \
2952  yy_reduce_print (yyssp, yyvsp, yylsp, Rule, scanner, state); \
2953 } while (0)
2954 
2955 /* Nonzero means print parse trace. It is left uninitialized so that
2956  multiple parsers can coexist. */
2957 int yydebug;
2958 #else /* !YYDEBUG */
2959 # define YYDPRINTF(Args)
2960 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2961 # define YY_STACK_PRINT(Bottom, Top)
2962 # define YY_REDUCE_PRINT(Rule)
2963 #endif /* !YYDEBUG */
2964 
2965 
2966 /* YYINITDEPTH -- initial size of the parser's stacks. */
2967 #ifndef YYINITDEPTH
2968 # define YYINITDEPTH 200
2969 #endif
2970 
2971 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2972  if the built-in stack extension method is used).
2973 
2974  Do not make this value too large; the results are undefined if
2975  YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2976  evaluated with infinite-precision integer arithmetic. */
2977 
2978 #ifndef YYMAXDEPTH
2979 # define YYMAXDEPTH 10000
2980 #endif
2981 
2982 
2983 #if YYERROR_VERBOSE
2984 
2985 # ifndef yystrlen
2986 # if defined __GLIBC__ && defined _STRING_H
2987 # define yystrlen strlen
2988 # else
2989 /* Return the length of YYSTR. */
2990 static YYSIZE_T
2991 yystrlen (const char *yystr)
2992 {
2993  YYSIZE_T yylen;
2994  for (yylen = 0; yystr[yylen]; yylen++)
2995  continue;
2996  return yylen;
2997 }
2998 # endif
2999 # endif
3000 
3001 # ifndef yystpcpy
3002 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
3003 # define yystpcpy stpcpy
3004 # else
3005 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
3006  YYDEST. */
3007 static char *
3008 yystpcpy (char *yydest, const char *yysrc)
3009 {
3010  char *yyd = yydest;
3011  const char *yys = yysrc;
3012 
3013  while ((*yyd++ = *yys++) != '\0')
3014  continue;
3015 
3016  return yyd - 1;
3017 }
3018 # endif
3019 # endif
3020 
3021 # ifndef yytnamerr
3022 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
3023  quotes and backslashes, so that it's suitable for yyerror. The
3024  heuristic is that double-quoting is unnecessary unless the string
3025  contains an apostrophe, a comma, or backslash (other than
3026  backslash-backslash). YYSTR is taken from yytname. If YYRES is
3027  null, do not copy; instead, return the length of what the result
3028  would have been. */
3029 static YYSIZE_T
3030 yytnamerr (char *yyres, const char *yystr)
3031 {
3032  if (*yystr == '"')
3033  {
3034  YYSIZE_T yyn = 0;
3035  char const *yyp = yystr;
3036 
3037  for (;;)
3038  switch (*++yyp)
3039  {
3040  case '\'':
3041  case ',':
3042  goto do_not_strip_quotes;
3043 
3044  case '\\':
3045  if (*++yyp != '\\')
3046  goto do_not_strip_quotes;
3047  /* Fall through. */
3048  default:
3049  if (yyres)
3050  yyres[yyn] = *yyp;
3051  yyn++;
3052  break;
3053 
3054  case '"':
3055  if (yyres)
3056  yyres[yyn] = '\0';
3057  return yyn;
3058  }
3059  do_not_strip_quotes: ;
3060  }
3061 
3062  if (! yyres)
3063  return yystrlen (yystr);
3064 
3065  return yystpcpy (yyres, yystr) - yyres;
3066 }
3067 # endif
3068 
3069 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
3070  about the unexpected token YYTOKEN for the state stack whose top is
3071  YYSSP.
3072 
3073  Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
3074  not large enough to hold the message. In that case, also set
3075  *YYMSG_ALLOC to the required number of bytes. Return 2 if the
3076  required number of bytes is too large to store. */
3077 static int
3078 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
3079  yytype_int16 *yyssp, int yytoken)
3080 {
3081  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
3082  YYSIZE_T yysize = yysize0;
3083  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
3084  /* Internationalized format string. */
3085  const char *yyformat = YY_NULLPTR;
3086  /* Arguments of yyformat. */
3087  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
3088  /* Number of reported tokens (one for the "unexpected", one per
3089  "expected"). */
3090  int yycount = 0;
3091 
3092  /* There are many possibilities here to consider:
3093  - If this state is a consistent state with a default action, then
3094  the only way this function was invoked is if the default action
3095  is an error action. In that case, don't check for expected
3096  tokens because there are none.
3097  - The only way there can be no lookahead present (in yychar) is if
3098  this state is a consistent state with a default action. Thus,
3099  detecting the absence of a lookahead is sufficient to determine
3100  that there is no unexpected or expected token to report. In that
3101  case, just report a simple "syntax error".
3102  - Don't assume there isn't a lookahead just because this state is a
3103  consistent state with a default action. There might have been a
3104  previous inconsistent state, consistent state with a non-default
3105  action, or user semantic action that manipulated yychar.
3106  - Of course, the expected token list depends on states to have
3107  correct lookahead information, and it depends on the parser not
3108  to perform extra reductions after fetching a lookahead from the
3109  scanner and before detecting a syntax error. Thus, state merging
3110  (from LALR or IELR) and default reductions corrupt the expected
3111  token list. However, the list is correct for canonical LR with
3112  one exception: it will still contain any token that will not be
3113  accepted due to an error action in a later state.
3114  */
3115  if (yytoken != YYEMPTY)
3116  {
3117  int yyn = yypact[*yyssp];
3118  yyarg[yycount++] = yytname[yytoken];
3119  if (!yypact_value_is_default (yyn))
3120  {
3121  /* Start YYX at -YYN if negative to avoid negative indexes in
3122  YYCHECK. In other words, skip the first -YYN actions for
3123  this state because they are default actions. */
3124  int yyxbegin = yyn < 0 ? -yyn : 0;
3125  /* Stay within bounds of both yycheck and yytname. */
3126  int yychecklim = YYLAST - yyn + 1;
3127  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
3128  int yyx;
3129 
3130  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
3131  if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
3132  && !yytable_value_is_error (yytable[yyx + yyn]))
3133  {
3134  if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
3135  {
3136  yycount = 1;
3137  yysize = yysize0;
3138  break;
3139  }
3140  yyarg[yycount++] = yytname[yyx];
3141  {
3142  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
3143  if (! (yysize <= yysize1
3144  && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
3145  return 2;
3146  yysize = yysize1;
3147  }
3148  }
3149  }
3150  }
3151 
3152  switch (yycount)
3153  {
3154 # define YYCASE_(N, S) \
3155  case N: \
3156  yyformat = S; \
3157  break
3158  YYCASE_(0, YY_("syntax error"));
3159  YYCASE_(1, YY_("syntax error, unexpected %s"));
3160  YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
3161  YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
3162  YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
3163  YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
3164 # undef YYCASE_
3165  }
3166 
3167  {
3168  YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
3169  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
3170  return 2;
3171  yysize = yysize1;
3172  }
3173 
3174  if (*yymsg_alloc < yysize)
3175  {
3176  *yymsg_alloc = 2 * yysize;
3177  if (! (yysize <= *yymsg_alloc
3178  && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
3179  *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
3180  return 1;
3181  }
3182 
3183  /* Avoid sprintf, as that infringes on the user's name space.
3184  Don't have undefined behavior even if the translation
3185  produced a string with the wrong number of "%s"s. */
3186  {
3187  char *yyp = *yymsg;
3188  int yyi = 0;
3189  while ((*yyp = *yyformat) != '\0')
3190  if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
3191  {
3192  yyp += yytnamerr (yyp, yyarg[yyi++]);
3193  yyformat += 2;
3194  }
3195  else
3196  {
3197  yyp++;
3198  yyformat++;
3199  }
3200  }
3201  return 0;
3202 }
3203 #endif /* YYERROR_VERBOSE */
3204 
3205 /*-----------------------------------------------.
3206 | Release the memory associated to this symbol. |
3207 `-----------------------------------------------*/
3208 
3209 static void
3210 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, void *scanner, struct parser_state *state)
3211 {
3212  YYUSE (yyvaluep);
3213  YYUSE (yylocationp);
3214  YYUSE (scanner);
3215  YYUSE (state);
3216  if (!yymsg)
3217  yymsg = "Deleting";
3218  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
3219 
3220  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3221  switch (yytype)
3222  {
3223  case 79: /* "string" */
3224 #line 244 "parser_bison.y" /* yacc.c:1257 */
3225  { xfree(((*yyvaluep).string)); }
3226 #line 3227 "parser_bison.c" /* yacc.c:1257 */
3227  break;
3228 
3229  case 80: /* "quoted string" */
3230 #line 244 "parser_bison.y" /* yacc.c:1257 */
3231  { xfree(((*yyvaluep).string)); }
3232 #line 3233 "parser_bison.c" /* yacc.c:1257 */
3233  break;
3234 
3235  case 81: /* "string with a trailing asterisk" */
3236 #line 244 "parser_bison.y" /* yacc.c:1257 */
3237  { xfree(((*yyvaluep).string)); }
3238 #line 3239 "parser_bison.c" /* yacc.c:1257 */
3239  break;
3240 
3241  case 272: /* line */
3242 #line 473 "parser_bison.y" /* yacc.c:1257 */
3243  { cmd_free(((*yyvaluep).cmd)); }
3244 #line 3245 "parser_bison.c" /* yacc.c:1257 */
3245  break;
3246 
3247  case 273: /* base_cmd */
3248 #line 476 "parser_bison.y" /* yacc.c:1257 */
3249  { cmd_free(((*yyvaluep).cmd)); }
3250 #line 3251 "parser_bison.c" /* yacc.c:1257 */
3251  break;
3252 
3253  case 274: /* add_cmd */
3254 #line 476 "parser_bison.y" /* yacc.c:1257 */
3255  { cmd_free(((*yyvaluep).cmd)); }
3256 #line 3257 "parser_bison.c" /* yacc.c:1257 */
3257  break;
3258 
3259  case 275: /* replace_cmd */
3260 #line 476 "parser_bison.y" /* yacc.c:1257 */
3261  { cmd_free(((*yyvaluep).cmd)); }
3262 #line 3263 "parser_bison.c" /* yacc.c:1257 */
3263  break;
3264 
3265  case 276: /* create_cmd */
3266 #line 476 "parser_bison.y" /* yacc.c:1257 */
3267  { cmd_free(((*yyvaluep).cmd)); }
3268 #line 3269 "parser_bison.c" /* yacc.c:1257 */
3269  break;
3270 
3271  case 277: /* insert_cmd */
3272 #line 476 "parser_bison.y" /* yacc.c:1257 */
3273  { cmd_free(((*yyvaluep).cmd)); }
3274 #line 3275 "parser_bison.c" /* yacc.c:1257 */
3275  break;
3276 
3277  case 278: /* delete_cmd */
3278 #line 476 "parser_bison.y" /* yacc.c:1257 */
3279  { cmd_free(((*yyvaluep).cmd)); }
3280 #line 3281 "parser_bison.c" /* yacc.c:1257 */
3281  break;
3282 
3283  case 279: /* list_cmd */
3284 #line 476 "parser_bison.y" /* yacc.c:1257 */
3285  { cmd_free(((*yyvaluep).cmd)); }
3286 #line 3287 "parser_bison.c" /* yacc.c:1257 */
3287  break;
3288 
3289  case 280: /* reset_cmd */
3290 #line 476 "parser_bison.y" /* yacc.c:1257 */
3291  { cmd_free(((*yyvaluep).cmd)); }
3292 #line 3293 "parser_bison.c" /* yacc.c:1257 */
3293  break;
3294 
3295  case 281: /* flush_cmd */
3296 #line 476 "parser_bison.y" /* yacc.c:1257 */
3297  { cmd_free(((*yyvaluep).cmd)); }
3298 #line 3299 "parser_bison.c" /* yacc.c:1257 */
3299  break;
3300 
3301  case 282: /* rename_cmd */
3302 #line 476 "parser_bison.y" /* yacc.c:1257 */
3303  { cmd_free(((*yyvaluep).cmd)); }
3304 #line 3305 "parser_bison.c" /* yacc.c:1257 */
3305  break;
3306 
3307  case 283: /* export_cmd */
3308 #line 476 "parser_bison.y" /* yacc.c:1257 */
3309  { cmd_free(((*yyvaluep).cmd)); }
3310 #line 3311 "parser_bison.c" /* yacc.c:1257 */
3311  break;
3312 
3313  case 284: /* monitor_cmd */
3314 #line 476 "parser_bison.y" /* yacc.c:1257 */
3315  { cmd_free(((*yyvaluep).cmd)); }
3316 #line 3317 "parser_bison.c" /* yacc.c:1257 */
3317  break;
3318 
3319  case 285: /* monitor_event */
3320 #line 657 "parser_bison.y" /* yacc.c:1257 */
3321  { xfree(((*yyvaluep).string)); }
3322 #line 3323 "parser_bison.c" /* yacc.c:1257 */
3323  break;
3324 
3325  case 289: /* describe_cmd */
3326 #line 476 "parser_bison.y" /* yacc.c:1257 */
3327  { cmd_free(((*yyvaluep).cmd)); }
3328 #line 3329 "parser_bison.c" /* yacc.c:1257 */
3329  break;
3330 
3331  case 290: /* table_block_alloc */
3332 #line 488 "parser_bison.y" /* yacc.c:1257 */
3333  { close_scope(state); table_free(((*yyvaluep).table)); }
3334 #line 3335 "parser_bison.c" /* yacc.c:1257 */
3335  break;
3336 
3337  case 293: /* chain_block_alloc */
3338 #line 490 "parser_bison.y" /* yacc.c:1257 */
3339  { close_scope(state); chain_free(((*yyvaluep).chain)); }
3340 #line 3341 "parser_bison.c" /* yacc.c:1257 */
3341  break;
3342 
3343  case 295: /* set_block_alloc */
3344 #line 499 "parser_bison.y" /* yacc.c:1257 */
3345  { set_free(((*yyvaluep).set)); }
3346 #line 3347 "parser_bison.c" /* yacc.c:1257 */
3347  break;
3348 
3349  case 297: /* set_block_expr */
3350 #line 573 "parser_bison.y" /* yacc.c:1257 */
3351  { expr_free(((*yyvaluep).expr)); }
3352 #line 3353 "parser_bison.c" /* yacc.c:1257 */
3353  break;
3354 
3355  case 300: /* map_block_alloc */
3356 #line 502 "parser_bison.y" /* yacc.c:1257 */
3357  { set_free(((*yyvaluep).set)); }
3358 #line 3359 "parser_bison.c" /* yacc.c:1257 */
3359  break;
3360 
3361  case 306: /* obj_block_alloc */
3362 #line 505 "parser_bison.y" /* yacc.c:1257 */
3363  { obj_free(((*yyvaluep).obj)); }
3364 #line 3365 "parser_bison.c" /* yacc.c:1257 */
3365  break;
3366 
3367  case 310: /* type_identifier */
3368 #line 465 "parser_bison.y" /* yacc.c:1257 */
3369  { xfree(((*yyvaluep).string)); }
3370 #line 3371 "parser_bison.c" /* yacc.c:1257 */
3371  break;
3372 
3373  case 313: /* dev_spec */
3374 #line 485 "parser_bison.y" /* yacc.c:1257 */
3375  { xfree(((*yyvaluep).string)); }
3376 #line 3377 "parser_bison.c" /* yacc.c:1257 */
3377  break;
3378 
3379  case 316: /* identifier */
3380 #line 465 "parser_bison.y" /* yacc.c:1257 */
3381  { xfree(((*yyvaluep).string)); }
3382 #line 3383 "parser_bison.c" /* yacc.c:1257 */
3383  break;
3384 
3385  case 317: /* string */
3386 #line 465 "parser_bison.y" /* yacc.c:1257 */
3387  { xfree(((*yyvaluep).string)); }
3388 #line 3389 "parser_bison.c" /* yacc.c:1257 */
3389  break;
3390 
3391  case 321: /* table_spec */
3392 #line 479 "parser_bison.y" /* yacc.c:1257 */
3393  { handle_free(&((*yyvaluep).handle)); }
3394 #line 3395 "parser_bison.c" /* yacc.c:1257 */
3395  break;
3396 
3397  case 322: /* chain_spec */
3398 #line 479 "parser_bison.y" /* yacc.c:1257 */
3399  { handle_free(&((*yyvaluep).handle)); }
3400 #line 3401 "parser_bison.c" /* yacc.c:1257 */
3401  break;
3402 
3403  case 323: /* chain_identifier */
3404 #line 479 "parser_bison.y" /* yacc.c:1257 */
3405  { handle_free(&((*yyvaluep).handle)); }
3406 #line 3407 "parser_bison.c" /* yacc.c:1257 */
3407  break;
3408 
3409  case 324: /* set_spec */
3410 #line 481 "parser_bison.y" /* yacc.c:1257 */
3411  { handle_free(&((*yyvaluep).handle)); }
3412 #line 3413 "parser_bison.c" /* yacc.c:1257 */
3413  break;
3414 
3415  case 325: /* set_identifier */
3416 #line 481 "parser_bison.y" /* yacc.c:1257 */
3417  { handle_free(&((*yyvaluep).handle)); }
3418 #line 3419 "parser_bison.c" /* yacc.c:1257 */
3419  break;
3420 
3421  case 326: /* obj_spec */
3422 #line 481 "parser_bison.y" /* yacc.c:1257 */
3423  { handle_free(&((*yyvaluep).handle)); }
3424 #line 3425 "parser_bison.c" /* yacc.c:1257 */
3425  break;
3426 
3427  case 327: /* obj_identifier */
3428 #line 481 "parser_bison.y" /* yacc.c:1257 */
3429  { handle_free(&((*yyvaluep).handle)); }
3430 #line 3431 "parser_bison.c" /* yacc.c:1257 */
3431  break;
3432 
3433  case 328: /* handle_spec */
3434 #line 479 "parser_bison.y" /* yacc.c:1257 */
3435  { handle_free(&((*yyvaluep).handle)); }
3436 #line 3437 "parser_bison.c" /* yacc.c:1257 */
3437  break;
3438 
3439  case 329: /* position_spec */
3440 #line 479 "parser_bison.y" /* yacc.c:1257 */
3441  { handle_free(&((*yyvaluep).handle)); }
3442 #line 3443 "parser_bison.c" /* yacc.c:1257 */
3443  break;
3444 
3445  case 330: /* rule_position */
3446 #line 479 "parser_bison.y" /* yacc.c:1257 */
3447  { handle_free(&((*yyvaluep).handle)); }
3448 #line 3449 "parser_bison.c" /* yacc.c:1257 */
3449  break;
3450 
3451  case 331: /* ruleid_spec */
3452 #line 479 "parser_bison.y" /* yacc.c:1257 */
3453  { handle_free(&((*yyvaluep).handle)); }
3454 #line 3455 "parser_bison.c" /* yacc.c:1257 */
3455  break;
3456 
3457  case 332: /* comment_spec */
3458 #line 465 "parser_bison.y" /* yacc.c:1257 */
3459  { xfree(((*yyvaluep).string)); }
3460 #line 3461 "parser_bison.c" /* yacc.c:1257 */
3461  break;
3462 
3463  case 333: /* ruleset_spec */
3464 #line 479 "parser_bison.y" /* yacc.c:1257 */
3465  { handle_free(&((*yyvaluep).handle)); }
3466 #line 3467 "parser_bison.c" /* yacc.c:1257 */
3467  break;
3468 
3469  case 334: /* rule */
3470 #line 492 "parser_bison.y" /* yacc.c:1257 */
3471  { rule_free(((*yyvaluep).rule)); }
3472 #line 3473 "parser_bison.c" /* yacc.c:1257 */
3473  break;
3474 
3475  case 336: /* stmt_list */
3476 #line 508 "parser_bison.y" /* yacc.c:1257 */
3477  { stmt_list_free(((*yyvaluep).list)); xfree(((*yyvaluep).list)); }
3478 #line 3479 "parser_bison.c" /* yacc.c:1257 */
3479  break;
3480 
3481  case 337: /* stmt */
3482 #line 510 "parser_bison.y" /* yacc.c:1257 */
3483  { stmt_free(((*yyvaluep).stmt)); }
3484 #line 3485 "parser_bison.c" /* yacc.c:1257 */
3485  break;
3486 
3487  case 338: /* verdict_stmt */
3488 #line 510 "parser_bison.y" /* yacc.c:1257 */
3489  { stmt_free(((*yyvaluep).stmt)); }
3490 #line 3491 "parser_bison.c" /* yacc.c:1257 */
3491  break;
3492 
3493  case 339: /* verdict_map_stmt */
3494 #line 567 "parser_bison.y" /* yacc.c:1257 */
3495  { expr_free(((*yyvaluep).expr)); }
3496 #line 3497 "parser_bison.c" /* yacc.c:1257 */
3497  break;
3498 
3499  case 340: /* verdict_map_expr */
3500 #line 570 "parser_bison.y" /* yacc.c:1257 */
3501  { expr_free(((*yyvaluep).expr)); }
3502 #line 3503 "parser_bison.c" /* yacc.c:1257 */
3503  break;
3504 
3505  case 341: /* verdict_map_list_expr */
3506 #line 570 "parser_bison.y" /* yacc.c:1257 */
3507  { expr_free(((*yyvaluep).expr)); }
3508 #line 3509 "parser_bison.c" /* yacc.c:1257 */
3509  break;
3510 
3511  case 342: /* verdict_map_list_member_expr */
3512 #line 570 "parser_bison.y" /* yacc.c:1257 */
3513  { expr_free(((*yyvaluep).expr)); }
3514 #line 3515 "parser_bison.c" /* yacc.c:1257 */
3515  break;
3516 
3517  case 343: /* counter_stmt */
3518 #line 512 "parser_bison.y" /* yacc.c:1257 */
3519  { stmt_free(((*yyvaluep).stmt)); }
3520 #line 3521 "parser_bison.c" /* yacc.c:1257 */
3521  break;
3522 
3523  case 344: /* counter_stmt_alloc */
3524 #line 512 "parser_bison.y" /* yacc.c:1257 */
3525  { stmt_free(((*yyvaluep).stmt)); }
3526 #line 3527 "parser_bison.c" /* yacc.c:1257 */
3527  break;
3528 
3529  case 347: /* log_stmt */
3530 #line 520 "parser_bison.y" /* yacc.c:1257 */
3531  { stmt_free(((*yyvaluep).stmt)); }
3532 #line 3533 "parser_bison.c" /* yacc.c:1257 */
3533  break;
3534 
3535  case 348: /* log_stmt_alloc */
3536 #line 520 "parser_bison.y" /* yacc.c:1257 */
3537  { stmt_free(((*yyvaluep).stmt)); }
3538 #line 3539 "parser_bison.c" /* yacc.c:1257 */
3539  break;
3540 
3541  case 355: /* limit_stmt */
3542 #line 523 "parser_bison.y" /* yacc.c:1257 */
3543  { stmt_free(((*yyvaluep).stmt)); }
3544 #line 3545 "parser_bison.c" /* yacc.c:1257 */
3545  break;
3546 
3547  case 357: /* quota_unit */
3548 #line 485 "parser_bison.y" /* yacc.c:1257 */
3549  { xfree(((*yyvaluep).string)); }
3550 #line 3551 "parser_bison.c" /* yacc.c:1257 */
3551  break;
3552 
3553  case 359: /* quota_stmt */
3554 #line 523 "parser_bison.y" /* yacc.c:1257 */
3555  { stmt_free(((*yyvaluep).stmt)); }
3556 #line 3557 "parser_bison.c" /* yacc.c:1257 */
3557  break;
3558 
3559  case 363: /* reject_stmt */
3560 #line 526 "parser_bison.y" /* yacc.c:1257 */
3561  { stmt_free(((*yyvaluep).stmt)); }
3562 #line 3563 "parser_bison.c" /* yacc.c:1257 */
3563  break;
3564 
3565  case 364: /* reject_stmt_alloc */
3566 #line 526 "parser_bison.y" /* yacc.c:1257 */
3567  { stmt_free(((*yyvaluep).stmt)); }
3568 #line 3569 "parser_bison.c" /* yacc.c:1257 */
3569  break;
3570 
3571  case 366: /* nat_stmt */
3572 #line 528 "parser_bison.y" /* yacc.c:1257 */
3573  { stmt_free(((*yyvaluep).stmt)); }
3574 #line 3575 "parser_bison.c" /* yacc.c:1257 */
3575  break;
3576 
3577  case 367: /* nat_stmt_alloc */
3578 #line 528 "parser_bison.y" /* yacc.c:1257 */
3579  { stmt_free(((*yyvaluep).stmt)); }
3580 #line 3581 "parser_bison.c" /* yacc.c:1257 */
3581  break;
3582 
3583  case 368: /* concat_stmt_expr */
3584 #line 558 "parser_bison.y" /* yacc.c:1257 */
3585  { expr_free(((*yyvaluep).expr)); }
3586 #line 3587 "parser_bison.c" /* yacc.c:1257 */
3587  break;
3588 
3589  case 369: /* map_stmt_expr */
3590 #line 558 "parser_bison.y" /* yacc.c:1257 */
3591  { expr_free(((*yyvaluep).expr)); }
3592 #line 3593 "parser_bison.c" /* yacc.c:1257 */
3593  break;
3594 
3595  case 370: /* stmt_expr */
3596 #line 558 "parser_bison.y" /* yacc.c:1257 */
3597  { expr_free(((*yyvaluep).expr)); }
3598 #line 3599 "parser_bison.c" /* yacc.c:1257 */
3599  break;
3600 
3601  case 372: /* masq_stmt */
3602 #line 528 "parser_bison.y" /* yacc.c:1257 */
3603  { stmt_free(((*yyvaluep).stmt)); }
3604 #line 3605 "parser_bison.c" /* yacc.c:1257 */
3605  break;
3606 
3607  case 373: /* masq_stmt_alloc */
3608 #line 528 "parser_bison.y" /* yacc.c:1257 */
3609  { stmt_free(((*yyvaluep).stmt)); }
3610 #line 3611 "parser_bison.c" /* yacc.c:1257 */
3611  break;
3612 
3613  case 375: /* redir_stmt */
3614 #line 528 "parser_bison.y" /* yacc.c:1257 */
3615  { stmt_free(((*yyvaluep).stmt)); }
3616 #line 3617 "parser_bison.c" /* yacc.c:1257 */
3617  break;
3618 
3619  case 376: /* redir_stmt_alloc */
3620 #line 528 "parser_bison.y" /* yacc.c:1257 */
3621  { stmt_free(((*yyvaluep).stmt)); }
3622 #line 3623 "parser_bison.c" /* yacc.c:1257 */
3623  break;
3624 
3625  case 378: /* dup_stmt */
3626 #line 534 "parser_bison.y" /* yacc.c:1257 */
3627  { stmt_free(((*yyvaluep).stmt)); }
3628 #line 3629 "parser_bison.c" /* yacc.c:1257 */
3629  break;
3630 
3631  case 379: /* fwd_stmt */
3632 #line 536 "parser_bison.y" /* yacc.c:1257 */
3633  { stmt_free(((*yyvaluep).stmt)); }
3634 #line 3635 "parser_bison.c" /* yacc.c:1257 */
3635  break;
3636 
3637  case 382: /* queue_stmt */
3638 #line 531 "parser_bison.y" /* yacc.c:1257 */
3639  { stmt_free(((*yyvaluep).stmt)); }
3640 #line 3641 "parser_bison.c" /* yacc.c:1257 */
3641  break;
3642 
3643  case 383: /* queue_stmt_alloc */
3644 #line 531 "parser_bison.y" /* yacc.c:1257 */
3645  { stmt_free(((*yyvaluep).stmt)); }
3646 #line 3647 "parser_bison.c" /* yacc.c:1257 */
3647  break;
3648 
3649  case 388: /* set_elem_expr_stmt */
3650 #line 577 "parser_bison.y" /* yacc.c:1257 */
3651  { expr_free(((*yyvaluep).expr)); }
3652 #line 3653 "parser_bison.c" /* yacc.c:1257 */
3653  break;
3654 
3655  case 389: /* set_elem_expr_stmt_alloc */
3656 #line 577 "parser_bison.y" /* yacc.c:1257 */
3657  { expr_free(((*yyvaluep).expr)); }
3658 #line 3659 "parser_bison.c" /* yacc.c:1257 */
3659  break;
3660 
3661  case 390: /* set_stmt */
3662 #line 538 "parser_bison.y" /* yacc.c:1257 */
3663  { stmt_free(((*yyvaluep).stmt)); }
3664 #line 3665 "parser_bison.c" /* yacc.c:1257 */
3665  break;
3666 
3667  case 392: /* flow_stmt */
3668 #line 541 "parser_bison.y" /* yacc.c:1257 */
3669  { stmt_free(((*yyvaluep).stmt)); }
3670 #line 3671 "parser_bison.c" /* yacc.c:1257 */
3671  break;
3672 
3673  case 393: /* flow_stmt_alloc */
3674 #line 541 "parser_bison.y" /* yacc.c:1257 */
3675  { stmt_free(((*yyvaluep).stmt)); }
3676 #line 3677 "parser_bison.c" /* yacc.c:1257 */
3677  break;
3678 
3679  case 396: /* match_stmt */
3680 #line 510 "parser_bison.y" /* yacc.c:1257 */
3681  { stmt_free(((*yyvaluep).stmt)); }
3682 #line 3683 "parser_bison.c" /* yacc.c:1257 */
3683  break;
3684 
3685  case 397: /* variable_expr */
3686 #line 544 "parser_bison.y" /* yacc.c:1257 */
3687  { expr_free(((*yyvaluep).expr)); }
3688 #line 3689 "parser_bison.c" /* yacc.c:1257 */
3689  break;
3690 
3691  case 398: /* symbol_expr */
3692 #line 544 "parser_bison.y" /* yacc.c:1257 */
3693  { expr_free(((*yyvaluep).expr)); }
3694 #line 3695 "parser_bison.c" /* yacc.c:1257 */
3695  break;
3696 
3697  case 399: /* integer_expr */
3698 #line 544 "parser_bison.y" /* yacc.c:1257 */
3699  { expr_free(((*yyvaluep).expr)); }
3700 #line 3701 "parser_bison.c" /* yacc.c:1257 */
3701  break;
3702 
3703  case 400: /* primary_expr */
3704 #line 546 "parser_bison.y" /* yacc.c:1257 */
3705  { expr_free(((*yyvaluep).expr)); }
3706 #line 3707 "parser_bison.c" /* yacc.c:1257 */
3707  break;
3708 
3709  case 401: /* fib_expr */
3710 #line 652 "parser_bison.y" /* yacc.c:1257 */
3711  { expr_free(((*yyvaluep).expr)); }
3712 #line 3713 "parser_bison.c" /* yacc.c:1257 */
3713  break;
3714 
3715  case 405: /* shift_expr */
3716 #line 546 "parser_bison.y" /* yacc.c:1257 */
3717  { expr_free(((*yyvaluep).expr)); }
3718 #line 3719 "parser_bison.c" /* yacc.c:1257 */
3719  break;
3720 
3721  case 406: /* and_expr */
3722 #line 546 "parser_bison.y" /* yacc.c:1257 */
3723  { expr_free(((*yyvaluep).expr)); }
3724 #line 3725 "parser_bison.c" /* yacc.c:1257 */
3725  break;
3726 
3727  case 407: /* exclusive_or_expr */
3728 #line 548 "parser_bison.y" /* yacc.c:1257 */
3729  { expr_free(((*yyvaluep).expr)); }
3730 #line 3731 "parser_bison.c" /* yacc.c:1257 */
3731  break;
3732 
3733  case 408: /* inclusive_or_expr */
3734 #line 548 "parser_bison.y" /* yacc.c:1257 */
3735  { expr_free(((*yyvaluep).expr)); }
3736 #line 3737 "parser_bison.c" /* yacc.c:1257 */
3737  break;
3738 
3739  case 409: /* basic_expr */
3740 #line 550 "parser_bison.y" /* yacc.c:1257 */
3741  { expr_free(((*yyvaluep).expr)); }
3742 #line 3743 "parser_bison.c" /* yacc.c:1257 */
3743  break;
3744 
3745  case 410: /* concat_expr */
3746 #line 561 "parser_bison.y" /* yacc.c:1257 */
3747  { expr_free(((*yyvaluep).expr)); }
3748 #line 3749 "parser_bison.c" /* yacc.c:1257 */
3749  break;
3750 
3751  case 411: /* prefix_rhs_expr */
3752 #line 555 "parser_bison.y" /* yacc.c:1257 */
3753  { expr_free(((*yyvaluep).expr)); }
3754 #line 3755 "parser_bison.c" /* yacc.c:1257 */
3755  break;
3756 
3757  case 412: /* range_rhs_expr */
3758 #line 555 "parser_bison.y" /* yacc.c:1257 */
3759  { expr_free(((*yyvaluep).expr)); }
3760 #line 3761 "parser_bison.c" /* yacc.c:1257 */
3761  break;
3762 
3763  case 413: /* wildcard_rhs_expr */
3764 #line 555 "parser_bison.y" /* yacc.c:1257 */
3765  { expr_free(((*yyvaluep).expr)); }
3766 #line 3767 "parser_bison.c" /* yacc.c:1257 */
3767  break;
3768 
3769  case 414: /* multiton_rhs_expr */
3770 #line 553 "parser_bison.y" /* yacc.c:1257 */
3771  { expr_free(((*yyvaluep).expr)); }
3772 #line 3773 "parser_bison.c" /* yacc.c:1257 */
3773  break;
3774 
3775  case 415: /* map_expr */
3776 #line 564 "parser_bison.y" /* yacc.c:1257 */
3777  { expr_free(((*yyvaluep).expr)); }
3778 #line 3779 "parser_bison.c" /* yacc.c:1257 */
3779  break;
3780 
3781  case 416: /* expr */
3782 #line 583 "parser_bison.y" /* yacc.c:1257 */
3783  { expr_free(((*yyvaluep).expr)); }
3784 #line 3785 "parser_bison.c" /* yacc.c:1257 */
3785  break;
3786 
3787  case 417: /* set_expr */
3788 #line 573 "parser_bison.y" /* yacc.c:1257 */
3789  { expr_free(((*yyvaluep).expr)); }
3790 #line 3791 "parser_bison.c" /* yacc.c:1257 */
3791  break;
3792 
3793  case 418: /* set_list_expr */
3794 #line 573 "parser_bison.y" /* yacc.c:1257 */
3795  { expr_free(((*yyvaluep).expr)); }
3796 #line 3797 "parser_bison.c" /* yacc.c:1257 */
3797  break;
3798 
3799  case 419: /* set_list_member_expr */
3800 #line 573 "parser_bison.y" /* yacc.c:1257 */
3801  { expr_free(((*yyvaluep).expr)); }
3802 #line 3803 "parser_bison.c" /* yacc.c:1257 */
3803  break;
3804 
3805  case 420: /* flow_key_expr */
3806 #line 580 "parser_bison.y" /* yacc.c:1257 */
3807  { expr_free(((*yyvaluep).expr)); }
3808 #line 3809 "parser_bison.c" /* yacc.c:1257 */
3809  break;
3810 
3811  case 421: /* flow_key_expr_alloc */
3812 #line 580 "parser_bison.y" /* yacc.c:1257 */
3813  { expr_free(((*yyvaluep).expr)); }
3814 #line 3815 "parser_bison.c" /* yacc.c:1257 */
3815  break;
3816 
3817  case 422: /* set_elem_expr */
3818 #line 575 "parser_bison.y" /* yacc.c:1257 */
3819  { expr_free(((*yyvaluep).expr)); }
3820 #line 3821 "parser_bison.c" /* yacc.c:1257 */
3821  break;
3822 
3823  case 423: /* set_elem_expr_alloc */
3824 #line 575 "parser_bison.y" /* yacc.c:1257 */
3825  { expr_free(((*yyvaluep).expr)); }
3826 #line 3827 "parser_bison.c" /* yacc.c:1257 */
3827  break;
3828 
3829  case 426: /* set_lhs_expr */
3830 #line 575 "parser_bison.y" /* yacc.c:1257 */
3831  { expr_free(((*yyvaluep).expr)); }
3832 #line 3833 "parser_bison.c" /* yacc.c:1257 */
3833  break;
3834 
3835  case 427: /* set_rhs_expr */
3836 #line 575 "parser_bison.y" /* yacc.c:1257 */
3837  { expr_free(((*yyvaluep).expr)); }
3838 #line 3839 "parser_bison.c" /* yacc.c:1257 */
3839  break;
3840 
3841  case 428: /* initializer_expr */
3842 #line 583 "parser_bison.y" /* yacc.c:1257 */
3843  { expr_free(((*yyvaluep).expr)); }
3844 #line 3845 "parser_bison.c" /* yacc.c:1257 */
3845  break;
3846 
3847  case 429: /* counter_config */
3848 #line 661 "parser_bison.y" /* yacc.c:1257 */
3849  { xfree(((*yyvaluep).counter)); }
3850 #line 3851 "parser_bison.c" /* yacc.c:1257 */
3851  break;
3852 
3853  case 430: /* counter_obj */
3854 #line 593 "parser_bison.y" /* yacc.c:1257 */
3855  { obj_free(((*yyvaluep).obj)); }
3856 #line 3857 "parser_bison.c" /* yacc.c:1257 */
3857  break;
3858 
3859  case 431: /* quota_config */
3860 #line 663 "parser_bison.y" /* yacc.c:1257 */
3861  { xfree(((*yyvaluep).quota)); }
3862 #line 3863 "parser_bison.c" /* yacc.c:1257 */
3863  break;
3864 
3865  case 432: /* quota_obj */
3866 #line 593 "parser_bison.y" /* yacc.c:1257 */
3867  { obj_free(((*yyvaluep).obj)); }
3868 #line 3869 "parser_bison.c" /* yacc.c:1257 */
3869  break;
3870 
3871  case 433: /* ct_obj_kind */
3872 #line 680 "parser_bison.y" /* yacc.c:1257 */
3873  { xfree(((*yyvaluep).string)); }
3874 #line 3875 "parser_bison.c" /* yacc.c:1257 */
3875  break;
3876 
3877  case 436: /* ct_obj_alloc */
3878 #line 593 "parser_bison.y" /* yacc.c:1257 */
3879  { obj_free(((*yyvaluep).obj)); }
3880 #line 3881 "parser_bison.c" /* yacc.c:1257 */
3881  break;
3882 
3883  case 437: /* relational_expr */
3884 #line 596 "parser_bison.y" /* yacc.c:1257 */
3885  { expr_free(((*yyvaluep).expr)); }
3886 #line 3887 "parser_bison.c" /* yacc.c:1257 */
3887  break;
3888 
3889  case 438: /* list_rhs_expr */
3890 #line 588 "parser_bison.y" /* yacc.c:1257 */
3891  { expr_free(((*yyvaluep).expr)); }
3892 #line 3893 "parser_bison.c" /* yacc.c:1257 */
3893  break;
3894 
3895  case 439: /* rhs_expr */
3896 #line 586 "parser_bison.y" /* yacc.c:1257 */
3897  { expr_free(((*yyvaluep).expr)); }
3898 #line 3899 "parser_bison.c" /* yacc.c:1257 */
3899  break;
3900 
3901  case 440: /* shift_rhs_expr */
3902 #line 588 "parser_bison.y" /* yacc.c:1257 */
3903  { expr_free(((*yyvaluep).expr)); }
3904 #line 3905 "parser_bison.c" /* yacc.c:1257 */
3905  break;
3906 
3907  case 441: /* and_rhs_expr */
3908 #line 590 "parser_bison.y" /* yacc.c:1257 */
3909  { expr_free(((*yyvaluep).expr)); }
3910 #line 3911 "parser_bison.c" /* yacc.c:1257 */
3911  break;
3912 
3913  case 442: /* exclusive_or_rhs_expr */
3914 #line 590 "parser_bison.y" /* yacc.c:1257 */
3915  { expr_free(((*yyvaluep).expr)); }
3916 #line 3917 "parser_bison.c" /* yacc.c:1257 */
3917  break;
3918 
3919  case 443: /* inclusive_or_rhs_expr */
3920 #line 590 "parser_bison.y" /* yacc.c:1257 */
3921  { expr_free(((*yyvaluep).expr)); }
3922 #line 3923 "parser_bison.c" /* yacc.c:1257 */
3923  break;
3924 
3925  case 444: /* basic_rhs_expr */
3926 #line 586 "parser_bison.y" /* yacc.c:1257 */
3927  { expr_free(((*yyvaluep).expr)); }
3928 #line 3929 "parser_bison.c" /* yacc.c:1257 */
3929  break;
3930 
3931  case 445: /* concat_rhs_expr */
3932 #line 586 "parser_bison.y" /* yacc.c:1257 */
3933  { expr_free(((*yyvaluep).expr)); }
3934 #line 3935 "parser_bison.c" /* yacc.c:1257 */
3935  break;
3936 
3937  case 447: /* boolean_expr */
3938 #line 671 "parser_bison.y" /* yacc.c:1257 */
3939  { expr_free(((*yyvaluep).expr)); }
3940 #line 3941 "parser_bison.c" /* yacc.c:1257 */
3941  break;
3942 
3943  case 448: /* keyword_rhs_expr */
3944 #line 583 "parser_bison.y" /* yacc.c:1257 */
3945  { expr_free(((*yyvaluep).expr)); }
3946 #line 3947 "parser_bison.c" /* yacc.c:1257 */
3947  break;
3948 
3949  case 449: /* primary_rhs_expr */
3950 #line 588 "parser_bison.y" /* yacc.c:1257 */
3951  { expr_free(((*yyvaluep).expr)); }
3952 #line 3953 "parser_bison.c" /* yacc.c:1257 */
3953  break;
3954 
3955  case 451: /* verdict_expr */
3956 #line 544 "parser_bison.y" /* yacc.c:1257 */
3957  { expr_free(((*yyvaluep).expr)); }
3958 #line 3959 "parser_bison.c" /* yacc.c:1257 */
3959  break;
3960 
3961  case 452: /* meta_expr */
3962 #line 637 "parser_bison.y" /* yacc.c:1257 */
3963  { expr_free(((*yyvaluep).expr)); }
3964 #line 3965 "parser_bison.c" /* yacc.c:1257 */
3965  break;
3966 
3967  case 456: /* meta_stmt */
3968 #line 518 "parser_bison.y" /* yacc.c:1257 */
3969  { stmt_free(((*yyvaluep).stmt)); }
3970 #line 3971 "parser_bison.c" /* yacc.c:1257 */
3971  break;
3972 
3973  case 459: /* numgen_expr */
3974 #line 609 "parser_bison.y" /* yacc.c:1257 */
3975  { expr_free(((*yyvaluep).expr)); }
3976 #line 3977 "parser_bison.c" /* yacc.c:1257 */
3977  break;
3978 
3979  case 460: /* hash_expr */
3980 #line 609 "parser_bison.y" /* yacc.c:1257 */
3981  { expr_free(((*yyvaluep).expr)); }
3982 #line 3983 "parser_bison.c" /* yacc.c:1257 */
3983  break;
3984 
3985  case 461: /* rt_expr */
3986 #line 641 "parser_bison.y" /* yacc.c:1257 */
3987  { expr_free(((*yyvaluep).expr)); }
3988 #line 3989 "parser_bison.c" /* yacc.c:1257 */
3989  break;
3990 
3991  case 463: /* ct_expr */
3992 #line 648 "parser_bison.y" /* yacc.c:1257 */
3993  { expr_free(((*yyvaluep).expr)); }
3994 #line 3995 "parser_bison.c" /* yacc.c:1257 */
3995  break;
3996 
3997  case 467: /* list_stmt_expr */
3998 #line 645 "parser_bison.y" /* yacc.c:1257 */
3999  { expr_free(((*yyvaluep).expr)); }
4000 #line 4001 "parser_bison.c" /* yacc.c:1257 */
4001  break;
4002 
4003  case 468: /* ct_stmt_expr */
4004 #line 648 "parser_bison.y" /* yacc.c:1257 */
4005  { expr_free(((*yyvaluep).expr)); }
4006 #line 4007 "parser_bison.c" /* yacc.c:1257 */
4007  break;
4008 
4009  case 469: /* ct_stmt */
4010 #line 516 "parser_bison.y" /* yacc.c:1257 */
4011  { stmt_free(((*yyvaluep).stmt)); }
4012 #line 4013 "parser_bison.c" /* yacc.c:1257 */
4013  break;
4014 
4015  case 470: /* payload_stmt */
4016 #line 514 "parser_bison.y" /* yacc.c:1257 */
4017  { stmt_free(((*yyvaluep).stmt)); }
4018 #line 4019 "parser_bison.c" /* yacc.c:1257 */
4019  break;
4020 
4021  case 471: /* payload_expr */
4022 #line 600 "parser_bison.y" /* yacc.c:1257 */
4023  { expr_free(((*yyvaluep).expr)); }
4024 #line 4025 "parser_bison.c" /* yacc.c:1257 */
4025  break;
4026 
4027  case 472: /* payload_raw_expr */
4028 #line 600 "parser_bison.y" /* yacc.c:1257 */
4029  { expr_free(((*yyvaluep).expr)); }
4030 #line 4031 "parser_bison.c" /* yacc.c:1257 */
4031  break;
4032 
4033  case 474: /* eth_hdr_expr */
4034 #line 603 "parser_bison.y" /* yacc.c:1257 */
4035  { expr_free(((*yyvaluep).expr)); }
4036 #line 4037 "parser_bison.c" /* yacc.c:1257 */
4037  break;
4038 
4039  case 476: /* vlan_hdr_expr */
4040 #line 603 "parser_bison.y" /* yacc.c:1257 */
4041  { expr_free(((*yyvaluep).expr)); }
4042 #line 4043 "parser_bison.c" /* yacc.c:1257 */
4043  break;
4044 
4045  case 478: /* arp_hdr_expr */
4046 #line 606 "parser_bison.y" /* yacc.c:1257 */
4047  { expr_free(((*yyvaluep).expr)); }
4048 #line 4049 "parser_bison.c" /* yacc.c:1257 */
4049  break;
4050 
4051  case 480: /* ip_hdr_expr */
4052 #line 609 "parser_bison.y" /* yacc.c:1257 */
4053  { expr_free(((*yyvaluep).expr)); }
4054 #line 4055 "parser_bison.c" /* yacc.c:1257 */
4055  break;
4056 
4057  case 482: /* icmp_hdr_expr */
4058 #line 609 "parser_bison.y" /* yacc.c:1257 */
4059  { expr_free(((*yyvaluep).expr)); }
4060 #line 4061 "parser_bison.c" /* yacc.c:1257 */
4061  break;
4062 
4063  case 484: /* ip6_hdr_expr */
4064 #line 612 "parser_bison.y" /* yacc.c:1257 */
4065  { expr_free(((*yyvaluep).expr)); }
4066 #line 4067 "parser_bison.c" /* yacc.c:1257 */
4067  break;
4068 
4069  case 486: /* icmp6_hdr_expr */
4070 #line 612 "parser_bison.y" /* yacc.c:1257 */
4071  { expr_free(((*yyvaluep).expr)); }
4072 #line 4073 "parser_bison.c" /* yacc.c:1257 */
4073  break;
4074 
4075  case 488: /* auth_hdr_expr */
4076 #line 615 "parser_bison.y" /* yacc.c:1257 */
4077  { expr_free(((*yyvaluep).expr)); }
4078 #line 4079 "parser_bison.c" /* yacc.c:1257 */
4079  break;
4080 
4081  case 490: /* esp_hdr_expr */
4082 #line 615 "parser_bison.y" /* yacc.c:1257 */
4083  { expr_free(((*yyvaluep).expr)); }
4084 #line 4085 "parser_bison.c" /* yacc.c:1257 */
4085  break;
4086 
4087  case 492: /* comp_hdr_expr */
4088 #line 615 "parser_bison.y" /* yacc.c:1257 */
4089  { expr_free(((*yyvaluep).expr)); }
4090 #line 4091 "parser_bison.c" /* yacc.c:1257 */
4091  break;
4092 
4093  case 494: /* udp_hdr_expr */
4094 #line 618 "parser_bison.y" /* yacc.c:1257 */
4095  { expr_free(((*yyvaluep).expr)); }
4096 #line 4097 "parser_bison.c" /* yacc.c:1257 */
4097  break;
4098 
4099  case 496: /* udplite_hdr_expr */
4100 #line 618 "parser_bison.y" /* yacc.c:1257 */
4101  { expr_free(((*yyvaluep).expr)); }
4102 #line 4103 "parser_bison.c" /* yacc.c:1257 */
4103  break;
4104 
4105  case 498: /* tcp_hdr_expr */
4106 #line 666 "parser_bison.y" /* yacc.c:1257 */
4107  { expr_free(((*yyvaluep).expr)); }
4108 #line 4109 "parser_bison.c" /* yacc.c:1257 */
4109  break;
4110 
4111  case 502: /* dccp_hdr_expr */
4112 #line 621 "parser_bison.y" /* yacc.c:1257 */
4113  { expr_free(((*yyvaluep).expr)); }
4114 #line 4115 "parser_bison.c" /* yacc.c:1257 */
4115  break;
4116 
4117  case 504: /* sctp_hdr_expr */
4118 #line 621 "parser_bison.y" /* yacc.c:1257 */
4119  { expr_free(((*yyvaluep).expr)); }
4120 #line 4121 "parser_bison.c" /* yacc.c:1257 */
4121  break;
4122 
4123  case 506: /* exthdr_expr */
4124 #line 625 "parser_bison.y" /* yacc.c:1257 */
4125  { expr_free(((*yyvaluep).expr)); }
4126 #line 4127 "parser_bison.c" /* yacc.c:1257 */
4127  break;
4128 
4129  case 507: /* hbh_hdr_expr */
4130 #line 627 "parser_bison.y" /* yacc.c:1257 */
4131  { expr_free(((*yyvaluep).expr)); }
4132 #line 4133 "parser_bison.c" /* yacc.c:1257 */
4133  break;
4134 
4135  case 509: /* rt_hdr_expr */
4136 #line 630 "parser_bison.y" /* yacc.c:1257 */
4137  { expr_free(((*yyvaluep).expr)); }
4138 #line 4139 "parser_bison.c" /* yacc.c:1257 */
4139  break;
4140 
4141  case 511: /* rt0_hdr_expr */
4142 #line 630 "parser_bison.y" /* yacc.c:1257 */
4143  { expr_free(((*yyvaluep).expr)); }
4144 #line 4145 "parser_bison.c" /* yacc.c:1257 */
4145  break;
4146 
4147  case 513: /* rt2_hdr_expr */
4148 #line 630 "parser_bison.y" /* yacc.c:1257 */
4149  { expr_free(((*yyvaluep).expr)); }
4150 #line 4151 "parser_bison.c" /* yacc.c:1257 */
4151  break;
4152 
4153  case 515: /* frag_hdr_expr */
4154 #line 627 "parser_bison.y" /* yacc.c:1257 */
4155  { expr_free(((*yyvaluep).expr)); }
4156 #line 4157 "parser_bison.c" /* yacc.c:1257 */
4157  break;
4158 
4159  case 517: /* dst_hdr_expr */
4160 #line 627 "parser_bison.y" /* yacc.c:1257 */
4161  { expr_free(((*yyvaluep).expr)); }
4162 #line 4163 "parser_bison.c" /* yacc.c:1257 */
4163  break;
4164 
4165  case 519: /* mh_hdr_expr */
4166 #line 633 "parser_bison.y" /* yacc.c:1257 */
4167  { expr_free(((*yyvaluep).expr)); }
4168 #line 4169 "parser_bison.c" /* yacc.c:1257 */
4169  break;
4170 
4171  case 521: /* exthdr_exists_expr */
4172 #line 675 "parser_bison.y" /* yacc.c:1257 */
4173  { expr_free(((*yyvaluep).expr)); }
4174 #line 4175 "parser_bison.c" /* yacc.c:1257 */
4175  break;
4176 
4177 
4178  default:
4179  break;
4180  }
4181  YY_IGNORE_MAYBE_UNINITIALIZED_END
4182 }
4183 
4184 
4185 
4186 
4187 /*----------.
4188 | yyparse. |
4189 `----------*/
4190 
4191 int
4192 yyparse (void *scanner, struct parser_state *state)
4193 {
4194 /* The lookahead symbol. */
4195 int yychar;
4196 
4197 
4198 /* The semantic value of the lookahead symbol. */
4199 /* Default value used for initialization, for pacifying older GCCs
4200  or non-GCC compilers. */
4201 YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
4202 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
4203 
4204 /* Location data for the lookahead symbol. */
4205 static YYLTYPE yyloc_default
4206 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
4207  = { 1, 1, 1, 1 }
4208 # endif
4209 ;
4210 YYLTYPE yylloc = yyloc_default;
4211 
4212  /* Number of syntax errors so far. */
4213  int yynerrs;
4214 
4215  int yystate;
4216  /* Number of tokens to shift before error messages enabled. */
4217  int yyerrstatus;
4218 
4219  /* The stacks and their tools:
4220  'yyss': related to states.
4221  'yyvs': related to semantic values.
4222  'yyls': related to locations.
4223 
4224  Refer to the stacks through separate pointers, to allow yyoverflow
4225  to reallocate them elsewhere. */
4226 
4227  /* The state stack. */
4228  yytype_int16 yyssa[YYINITDEPTH];
4229  yytype_int16 *yyss;
4230  yytype_int16 *yyssp;
4231 
4232  /* The semantic value stack. */
4233  YYSTYPE yyvsa[YYINITDEPTH];
4234  YYSTYPE *yyvs;
4235  YYSTYPE *yyvsp;
4236 
4237  /* The location stack. */
4238  YYLTYPE yylsa[YYINITDEPTH];
4239  YYLTYPE *yyls;
4240  YYLTYPE *yylsp;
4241 
4242  /* The locations where the error started and ended. */
4243  YYLTYPE yyerror_range[3];
4244 
4245  YYSIZE_T yystacksize;
4246 
4247  int yyn;
4248  int yyresult;
4249  /* Lookahead token as an internal (translated) token number. */
4250  int yytoken = 0;
4251  /* The variables used to return semantic value and location from the
4252  action routines. */
4253  YYSTYPE yyval;
4254  YYLTYPE yyloc;
4255 
4256 #if YYERROR_VERBOSE
4257  /* Buffer for error messages, and its allocated size. */
4258  char yymsgbuf[128];
4259  char *yymsg = yymsgbuf;
4260  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
4261 #endif
4262 
4263 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
4264 
4265  /* The number of symbols on the RHS of the reduced rule.
4266  Keep to zero when no symbol should be popped. */
4267  int yylen = 0;
4268 
4269  yyssp = yyss = yyssa;
4270  yyvsp = yyvs = yyvsa;
4271  yylsp = yyls = yylsa;
4272  yystacksize = YYINITDEPTH;
4273 
4274  YYDPRINTF ((stderr, "Starting parse\n"));
4275 
4276  yystate = 0;
4277  yyerrstatus = 0;
4278  yynerrs = 0;
4279  yychar = YYEMPTY; /* Cause a token to be read. */
4280 
4281 /* User initialization code. */
4282 #line 118 "parser_bison.y" /* yacc.c:1429 */
4283 {
4284  location_init(scanner, state, &yylloc);
4285 #ifdef DEBUG
4286  if (debug_level & DEBUG_SCANNER)
4287  nft_set_debug(1, scanner);
4288  if (debug_level & DEBUG_PARSER)
4289  yydebug = 1;
4290 #endif
4291 }
4292 
4293 #line 4294 "parser_bison.c" /* yacc.c:1429 */
4294  yylsp[0] = yylloc;
4295  goto yysetstate;
4296 
4297 /*------------------------------------------------------------.
4298 | yynewstate -- Push a new state, which is found in yystate. |
4299 `------------------------------------------------------------*/
4300  yynewstate:
4301  /* In all cases, when you get here, the value and location stacks
4302  have just been pushed. So pushing a state here evens the stacks. */
4303  yyssp++;
4304 
4305  yysetstate:
4306  *yyssp = yystate;
4307 
4308  if (yyss + yystacksize - 1 <= yyssp)
4309  {
4310  /* Get the current used size of the three stacks, in elements. */
4311  YYSIZE_T yysize = yyssp - yyss + 1;
4312 
4313 #ifdef yyoverflow
4314  {
4315  /* Give user a chance to reallocate the stack. Use copies of
4316  these so that the &'s don't force the real ones into
4317  memory. */
4318  YYSTYPE *yyvs1 = yyvs;
4319  yytype_int16 *yyss1 = yyss;
4320  YYLTYPE *yyls1 = yyls;
4321 
4322  /* Each stack pointer address is followed by the size of the
4323  data in use in that stack, in bytes. This used to be a
4324  conditional around just the two extra args, but that might
4325  be undefined if yyoverflow is a macro. */
4326  yyoverflow (YY_("memory exhausted"),
4327  &yyss1, yysize * sizeof (*yyssp),
4328  &yyvs1, yysize * sizeof (*yyvsp),
4329  &yyls1, yysize * sizeof (*yylsp),
4330  &yystacksize);
4331 
4332  yyls = yyls1;
4333  yyss = yyss1;
4334  yyvs = yyvs1;
4335  }
4336 #else /* no yyoverflow */
4337 # ifndef YYSTACK_RELOCATE
4338  goto yyexhaustedlab;
4339 # else
4340  /* Extend the stack our own way. */
4341  if (YYMAXDEPTH <= yystacksize)
4342  goto yyexhaustedlab;
4343  yystacksize *= 2;
4344  if (YYMAXDEPTH < yystacksize)
4345  yystacksize = YYMAXDEPTH;
4346 
4347  {
4348  yytype_int16 *yyss1 = yyss;
4349  union yyalloc *yyptr =
4350  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
4351  if (! yyptr)
4352  goto yyexhaustedlab;
4353  YYSTACK_RELOCATE (yyss_alloc, yyss);
4354  YYSTACK_RELOCATE (yyvs_alloc, yyvs);
4355  YYSTACK_RELOCATE (yyls_alloc, yyls);
4356 # undef YYSTACK_RELOCATE
4357  if (yyss1 != yyssa)
4358  YYSTACK_FREE (yyss1);
4359  }
4360 # endif
4361 #endif /* no yyoverflow */
4362 
4363  yyssp = yyss + yysize - 1;
4364  yyvsp = yyvs + yysize - 1;
4365  yylsp = yyls + yysize - 1;
4366 
4367  YYDPRINTF ((stderr, "Stack size increased to %lu\n",
4368  (unsigned long int) yystacksize));
4369 
4370  if (yyss + yystacksize - 1 <= yyssp)
4371  YYABORT;
4372  }
4373 
4374  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
4375 
4376  if (yystate == YYFINAL)
4377  YYACCEPT;
4378 
4379  goto yybackup;
4380 
4381 /*-----------.
4382 | yybackup. |
4383 `-----------*/
4384 yybackup:
4385 
4386  /* Do appropriate processing given the current state. Read a
4387  lookahead token if we need one and don't already have one. */
4388 
4389  /* First try to decide what to do without reference to lookahead token. */
4390  yyn = yypact[yystate];
4391  if (yypact_value_is_default (yyn))
4392  goto yydefault;
4393 
4394  /* Not known => get a lookahead token if don't already have one. */
4395 
4396  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
4397  if (yychar == YYEMPTY)
4398  {
4399  YYDPRINTF ((stderr, "Reading a token: "));
4400  yychar = yylex (&yylval, &yylloc, scanner);
4401  }
4402 
4403  if (yychar <= YYEOF)
4404  {
4405  yychar = yytoken = YYEOF;
4406  YYDPRINTF ((stderr, "Now at end of input.\n"));
4407  }
4408  else
4409  {
4410  yytoken = YYTRANSLATE (yychar);
4411  YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
4412  }
4413 
4414  /* If the proper action on seeing token YYTOKEN is to reduce or to
4415  detect an error, take that action. */
4416  yyn += yytoken;
4417  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
4418  goto yydefault;
4419  yyn = yytable[yyn];
4420  if (yyn <= 0)
4421  {
4422  if (yytable_value_is_error (yyn))
4423  goto yyerrlab;
4424  yyn = -yyn;
4425  goto yyreduce;
4426  }
4427 
4428  /* Count tokens shifted since error; after three, turn off error
4429  status. */
4430  if (yyerrstatus)
4431  yyerrstatus--;
4432 
4433  /* Shift the lookahead token. */
4434  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
4435 
4436  /* Discard the shifted token. */
4437  yychar = YYEMPTY;
4438 
4439  yystate = yyn;
4440  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
4441  *++yyvsp = yylval;
4442  YY_IGNORE_MAYBE_UNINITIALIZED_END
4443  *++yylsp = yylloc;
4444  goto yynewstate;
4445 
4446 
4447 /*-----------------------------------------------------------.
4448 | yydefault -- do the default action for the current state. |
4449 `-----------------------------------------------------------*/
4450 yydefault:
4451  yyn = yydefact[yystate];
4452  if (yyn == 0)
4453  goto yyerrlab;
4454  goto yyreduce;
4455 
4456 
4457 /*-----------------------------.
4458 | yyreduce -- Do a reduction. |
4459 `-----------------------------*/
4460 yyreduce:
4461  /* yyn is the number of a rule to reduce with. */
4462  yylen = yyr2[yyn];
4463 
4464  /* If YYLEN is nonzero, implement the default value of the action:
4465  '$$ = $1'.
4466 
4467  Otherwise, the following line sets YYVAL to garbage.
4468  This behavior is undocumented and Bison
4469  users should not rely upon it. Assigning to YYVAL
4470  unconditionally makes the parser a bit smaller, and it avoids a
4471  GCC warning that YYVAL may be used uninitialized. */
4472  yyval = yyvsp[1-yylen];
4473 
4474  /* Default location. */
4475  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
4476  YY_REDUCE_PRINT (yyn);
4477  switch (yyn)
4478  {
4479  case 3:
4480 #line 686 "parser_bison.y" /* yacc.c:1646 */
4481  {
4482  if ((yyvsp[0].cmd) != NULL) {
4483  LIST_HEAD(list);
4484 
4485  (yyvsp[0].cmd)->location = (yylsp[0]);
4486 
4487  list_add_tail(&(yyvsp[0].cmd)->list, &list);
4488  if (cmd_evaluate(&state->ectx, (yyvsp[0].cmd)) < 0) {
4489  if (++state->nerrs == max_errors)
4490  YYABORT;
4491  } else
4492  list_splice_tail(&list, &state->cmds);
4493  }
4494  }
4495 #line 4496 "parser_bison.c" /* yacc.c:1646 */
4496  break;
4497 
4498  case 8:
4499 #line 711 "parser_bison.y" /* yacc.c:1646 */
4500  {
4501  if (scanner_include_file(scanner, (yyvsp[-1].string), &(yyloc)) < 0) {
4502  xfree((yyvsp[-1].string));
4503  YYERROR;
4504  }
4505  xfree((yyvsp[-1].string));
4506  }
4507 #line 4508 "parser_bison.c" /* yacc.c:1646 */
4508  break;
4509 
4510  case 9:
4511 #line 719 "parser_bison.y" /* yacc.c:1646 */
4512  {
4513  struct scope *scope = current_scope(state);
4514 
4515  if (symbol_lookup(scope, (yyvsp[-3].string)) != NULL) {
4516  erec_queue(error(&(yylsp[-3]), "redefinition of symbol '%s'", (yyvsp[-3].string)),
4517  state->msgs);
4518  YYERROR;
4519  }
4520 
4521  symbol_bind(scope, (yyvsp[-3].string), (yyvsp[-1].expr));
4522  xfree((yyvsp[-3].string));
4523  }
4524 #line 4525 "parser_bison.c" /* yacc.c:1646 */
4525  break;
4526 
4527  case 10:
4528 #line 732 "parser_bison.y" /* yacc.c:1646 */
4529  {
4530  if (++state->nerrs == max_errors)
4531  YYABORT;
4532  yyerrok;
4533  }
4534 #line 4535 "parser_bison.c" /* yacc.c:1646 */
4535  break;
4536 
4537  case 11:
4538 #line 739 "parser_bison.y" /* yacc.c:1646 */
4539  { (yyval.cmd) = NULL; }
4540 #line 4541 "parser_bison.c" /* yacc.c:1646 */
4541  break;
4542 
4543  case 12:
4544 #line 740 "parser_bison.y" /* yacc.c:1646 */
4545  { (yyval.cmd) = NULL; }
4546 #line 4547 "parser_bison.c" /* yacc.c:1646 */
4547  break;
4548 
4549  case 13:
4550 #line 741 "parser_bison.y" /* yacc.c:1646 */
4551  { (yyval.cmd) = (yyvsp[-1].cmd); }
4552 #line 4553 "parser_bison.c" /* yacc.c:1646 */
4553  break;
4554 
4555  case 14:
4556 #line 743 "parser_bison.y" /* yacc.c:1646 */
4557  {
4558  /*
4559  * Very hackish workaround for bison >= 2.4: previous versions
4560  * terminated parsing after EOF, 2.4+ tries to get further input
4561  * in 'input' and calls the scanner again, causing a crash when
4562  * the final input buffer has been popped. Terminate manually to
4563  * avoid this. The correct fix should be to adjust the grammar
4564  * to accept EOF in input, but for unknown reasons it does not
4565  * work.
4566  */
4567  if ((yyvsp[-1].cmd) != NULL) {
4568  LIST_HEAD(list);
4569 
4570  (yyvsp[-1].cmd)->location = (yylsp[-1]);
4571 
4572  list_add_tail(&(yyvsp[-1].cmd)->list, &list);
4573  if (cmd_evaluate(&state->ectx, (yyvsp[-1].cmd)) < 0) {
4574  if (++state->nerrs == max_errors)
4575  YYABORT;
4576  } else
4577  list_splice_tail(&list, &state->cmds);
4578  }
4579  if (state->nerrs)
4580  YYABORT;
4581  (yyval.cmd) = NULL;
4582 
4583  YYACCEPT;
4584  }
4585 #line 4586 "parser_bison.c" /* yacc.c:1646 */
4586  break;
4587 
4588  case 15:
4589 #line 773 "parser_bison.y" /* yacc.c:1646 */
4590  { (yyval.cmd) = (yyvsp[0].cmd); }
4591 #line 4592 "parser_bison.c" /* yacc.c:1646 */
4592  break;
4593 
4594  case 16:
4595 #line 774 "parser_bison.y" /* yacc.c:1646 */
4596  { (yyval.cmd) = (yyvsp[0].cmd); }
4597 #line 4598 "parser_bison.c" /* yacc.c:1646 */
4598  break;
4599 
4600  case 17:
4601 #line 775 "parser_bison.y" /* yacc.c:1646 */
4602  { (yyval.cmd) = (yyvsp[0].cmd); }
4603 #line 4604 "parser_bison.c" /* yacc.c:1646 */
4604  break;
4605 
4606  case 18:
4607 #line 776 "parser_bison.y" /* yacc.c:1646 */
4608  { (yyval.cmd) = (yyvsp[0].cmd); }
4609 #line 4610 "parser_bison.c" /* yacc.c:1646 */
4610  break;
4611 
4612  case 19:
4613 #line 777 "parser_bison.y" /* yacc.c:1646 */
4614  { (yyval.cmd) = (yyvsp[0].cmd); }
4615 #line 4616 "parser_bison.c" /* yacc.c:1646 */
4616  break;
4617 
4618  case 20:
4619 #line 778 "parser_bison.y" /* yacc.c:1646 */
4620  { (yyval.cmd) = (yyvsp[0].cmd); }
4621 #line 4622 "parser_bison.c" /* yacc.c:1646 */
4622  break;
4623 
4624  case 21:
4625 #line 779 "parser_bison.y" /* yacc.c:1646 */
4626  { (yyval.cmd) = (yyvsp[0].cmd); }
4627 #line 4628 "parser_bison.c" /* yacc.c:1646 */
4628  break;
4629 
4630  case 22:
4631 #line 780 "parser_bison.y" /* yacc.c:1646 */
4632  { (yyval.cmd) = (yyvsp[0].cmd); }
4633 #line 4634 "parser_bison.c" /* yacc.c:1646 */
4634  break;
4635 
4636  case 23:
4637 #line 781 "parser_bison.y" /* yacc.c:1646 */
4638  { (yyval.cmd) = (yyvsp[0].cmd); }
4639 #line 4640 "parser_bison.c" /* yacc.c:1646 */
4640  break;
4641 
4642  case 24:
4643 #line 782 "parser_bison.y" /* yacc.c:1646 */
4644  { (yyval.cmd) = (yyvsp[0].cmd); }
4645 #line 4646 "parser_bison.c" /* yacc.c:1646 */
4646  break;
4647 
4648  case 25:
4649 #line 783 "parser_bison.y" /* yacc.c:1646 */
4650  { (yyval.cmd) = (yyvsp[0].cmd); }
4651 #line 4652 "parser_bison.c" /* yacc.c:1646 */
4652  break;
4653 
4654  case 26:
4655 #line 784 "parser_bison.y" /* yacc.c:1646 */
4656  { (yyval.cmd) = (yyvsp[0].cmd); }
4657 #line 4658 "parser_bison.c" /* yacc.c:1646 */
4658  break;
4659 
4660  case 27:
4661 #line 785 "parser_bison.y" /* yacc.c:1646 */
4662  { (yyval.cmd) = (yyvsp[0].cmd); }
4663 #line 4664 "parser_bison.c" /* yacc.c:1646 */
4664  break;
4665 
4666  case 28:
4667 #line 789 "parser_bison.y" /* yacc.c:1646 */
4668  {
4669  (yyval.cmd) = cmd_alloc(CMD_ADD, CMD_OBJ_TABLE, &(yyvsp[0].handle), &(yyloc), NULL);
4670  }
4671 #line 4672 "parser_bison.c" /* yacc.c:1646 */
4672  break;
4673 
4674  case 29:
4675 #line 794 "parser_bison.y" /* yacc.c:1646 */
4676  {
4677  handle_merge(&(yyvsp[-3].table)->handle, &(yyvsp[-4].handle));
4678  close_scope(state);
4679  (yyval.cmd) = cmd_alloc(CMD_ADD, CMD_OBJ_TABLE, &(yyvsp[-4].handle), &(yyloc), (yyvsp[-1].table));
4680  }
4681 #line 4682 "parser_bison.c" /* yacc.c:1646 */
4682  break;
4683 
4684  case 30:
4685 #line 800 "parser_bison.y" /* yacc.c:1646 */
4686  {
4687  (yyval.cmd) = cmd_alloc(CMD_ADD, CMD_OBJ_CHAIN, &(yyvsp[0].handle), &(yyloc), NULL);
4688  }
4689 #line 4690 "parser_bison.c" /* yacc.c:1646 */
4690  break;
4691 
4692  case 31:
4693 #line 805 "parser_bison.y" /* yacc.c:1646 */
4694  {
4695  (yyvsp[-1].chain)->location = (yylsp[-1]);
4696  handle_merge(&(yyvsp[-3].chain)->handle, &(yyvsp[-4].handle));
4697  close_scope(state);
4698  (yyval.cmd) = cmd_alloc(CMD_ADD, CMD_OBJ_CHAIN, &(yyvsp[-4].handle), &(yyloc), (yyvsp[-1].chain));
4699  }
4700 #line 4701 "parser_bison.c" /* yacc.c:1646 */
4701  break;
4702 
4703  case 32:
4704 #line 812 "parser_bison.y" /* yacc.c:1646 */
4705  {
4706  (yyval.cmd) = cmd_alloc(CMD_ADD, CMD_OBJ_RULE, &(yyvsp[-1].handle), &(yyloc), (yyvsp[0].rule));
4707  }
4708 #line 4709 "parser_bison.c" /* yacc.c:1646 */
4709  break;
4710 
4711  case 33:
4712 #line 816 "parser_bison.y" /* yacc.c:1646 */
4713  {
4714  (yyval.cmd) = cmd_alloc(CMD_ADD, CMD_OBJ_RULE, &(yyvsp[-1].handle), &(yyloc), (yyvsp[0].rule));
4715  }
4716 #line 4717 "parser_bison.c" /* yacc.c:1646 */
4717  break;
4718 
4719  case 34:
4720 #line 821 "parser_bison.y" /* yacc.c:1646 */
4721  {
4722  (yyvsp[-1].set)->location = (yylsp[-1]);
4723  handle_merge(&(yyvsp[-3].set)->handle, &(yyvsp[-4].handle));
4724  (yyval.cmd) = cmd_alloc(CMD_ADD, CMD_OBJ_SET, &(yyvsp[-4].handle), &(yyloc), (yyvsp[-1].set));
4725  }
4726 #line 4727 "parser_bison.c" /* yacc.c:1646 */
4727  break;
4728 
4729  case 35:
4730 #line 828 "parser_bison.y" /* yacc.c:1646 */
4731  {
4732  (yyvsp[-1].set)->location = (yylsp[-1]);
4733  handle_merge(&(yyvsp[-3].set)->handle, &(yyvsp[-4].handle));
4734  (yyval.cmd) = cmd_alloc(CMD_ADD, CMD_OBJ_SET, &(yyvsp[-4].handle), &(yyloc), (yyvsp[-1].set));
4735  }
4736 #line 4737 "parser_bison.c" /* yacc.c:1646 */
4737  break;
4738 
4739  case 36:
4740 #line 834 "parser_bison.y" /* yacc.c:1646 */
4741  {
4742  (yyval.cmd) = cmd_alloc(CMD_ADD, CMD_OBJ_SETELEM, &(yyvsp[-1].handle), &(yyloc), (yyvsp[0].expr));
4743  }
4744 #line 4745 "parser_bison.c" /* yacc.c:1646 */
4745  break;
4746 
4747  case 37:
4748 #line 838 "parser_bison.y" /* yacc.c:1646 */
4749  {
4750  struct obj *obj;
4751 
4752  obj = obj_alloc(&(yyloc));
4753  obj->type = NFT_OBJECT_COUNTER;
4754  handle_merge(&obj->handle, &(yyvsp[0].handle));
4755  (yyval.cmd) = cmd_alloc(CMD_ADD, CMD_OBJ_COUNTER, &(yyvsp[0].handle), &(yyloc), obj);
4756  }
4757 #line 4758 "parser_bison.c" /* yacc.c:1646 */
4758  break;
4759 
4760  case 38:
4761 #line 847 "parser_bison.y" /* yacc.c:1646 */
4762  {
4763  (yyval.cmd) = cmd_alloc(CMD_ADD, CMD_OBJ_COUNTER, &(yyvsp[-1].handle), &(yyloc), (yyvsp[0].obj));
4764  }
4765 #line 4766 "parser_bison.c" /* yacc.c:1646 */
4766  break;
4767 
4768  case 39:
4769 #line 851 "parser_bison.y" /* yacc.c:1646 */
4770  {
4771  (yyval.cmd) = cmd_alloc(CMD_ADD, CMD_OBJ_QUOTA, &(yyvsp[-1].handle), &(yyloc), (yyvsp[0].obj));
4772  }
4773 #line 4774 "parser_bison.c" /* yacc.c:1646 */
4774  break;
4775 
4776  case 40:
4777 #line 855 "parser_bison.y" /* yacc.c:1646 */
4778  {
4779  struct error_record *erec;
4780  int type;
4781 
4782  erec = ct_objtype_parse(&(yyloc), (yyvsp[-6].string), &type);
4783  if (erec != NULL) {
4784  erec_queue(erec, state->msgs);
4785  YYERROR;
4786  }
4787 
4788  (yyval.cmd) = cmd_alloc_obj_ct(CMD_ADD, type, &(yyvsp[-5].handle), &(yyloc), (yyvsp[-4].obj));
4789  }
4790 #line 4791 "parser_bison.c" /* yacc.c:1646 */
4791  break;
4792 
4793  case 41:
4794 #line 870 "parser_bison.y" /* yacc.c:1646 */
4795  {
4796  (yyval.cmd) = cmd_alloc(CMD_REPLACE, CMD_OBJ_RULE, &(yyvsp[-1].handle), &(yyloc), (yyvsp[0].rule));
4797  }
4798 #line 4799 "parser_bison.c" /* yacc.c:1646 */
4799  break;
4800 
4801  case 42:
4802 #line 876 "parser_bison.y" /* yacc.c:1646 */
4803  {
4804  (yyval.cmd) = cmd_alloc(CMD_CREATE, CMD_OBJ_TABLE, &(yyvsp[0].handle), &(yyloc), NULL);
4805  }
4806 #line 4807 "parser_bison.c" /* yacc.c:1646 */
4807  break;
4808 
4809  case 43:
4810 #line 881 "parser_bison.y" /* yacc.c:1646 */
4811  {
4812  handle_merge(&(yyvsp[-3].table)->handle, &(yyvsp[-4].handle));
4813  close_scope(state);
4814  (yyval.cmd) = cmd_alloc(CMD_CREATE, CMD_OBJ_TABLE, &(yyvsp[-4].handle), &(yyloc), (yyvsp[-1].table));
4815  }
4816 #line 4817 "parser_bison.c" /* yacc.c:1646 */
4817  break;
4818 
4819  case 44:
4820 #line 887 "parser_bison.y" /* yacc.c:1646 */
4821  {
4822  (yyval.cmd) = cmd_alloc(CMD_CREATE, CMD_OBJ_CHAIN, &(yyvsp[0].handle), &(yyloc), NULL);
4823  }
4824 #line 4825 "parser_bison.c" /* yacc.c:1646 */
4825  break;
4826 
4827  case 45:
4828 #line 892 "parser_bison.y" /* yacc.c:1646 */
4829  {
4830  (yyvsp[-1].chain)->location = (yylsp[-1]);
4831  handle_merge(&(yyvsp[-3].chain)->handle, &(yyvsp[-4].handle));
4832  close_scope(state);
4833  (yyval.cmd) = cmd_alloc(CMD_CREATE, CMD_OBJ_CHAIN, &(yyvsp[-4].handle), &(yyloc), (yyvsp[-1].chain));
4834  }
4835 #line 4836 "parser_bison.c" /* yacc.c:1646 */
4836  break;
4837 
4838  case 46:
4839 #line 900 "parser_bison.y" /* yacc.c:1646 */
4840  {
4841  (yyvsp[-1].set)->location = (yylsp[-1]);
4842  handle_merge(&(yyvsp[-3].set)->handle, &(yyvsp[-4].handle));
4843  (yyval.cmd) = cmd_alloc(CMD_CREATE, CMD_OBJ_SET, &(yyvsp[-4].handle), &(yyloc), (yyvsp[-1].set));
4844  }
4845 #line 4846 "parser_bison.c" /* yacc.c:1646 */
4846  break;
4847 
4848  case 47:
4849 #line 907 "parser_bison.y" /* yacc.c:1646 */
4850  {
4851  (yyvsp[-1].set)->location = (yylsp[-1]);
4852  handle_merge(&(yyvsp[-3].set)->handle, &(yyvsp[-4].handle));
4853  (yyval.cmd) = cmd_alloc(CMD_CREATE, CMD_OBJ_SET, &(yyvsp[-4].handle), &(yyloc), (yyvsp[-1].set));
4854  }
4855 #line 4856 "parser_bison.c" /* yacc.c:1646 */
4856  break;
4857 
4858  case 48:
4859 #line 913 "parser_bison.y" /* yacc.c:1646 */
4860  {
4861  (yyval.cmd) = cmd_alloc(CMD_CREATE, CMD_OBJ_SETELEM, &(yyvsp[-1].handle), &(yyloc), (yyvsp[0].expr));
4862  }
4863 #line 4864 "parser_bison.c" /* yacc.c:1646 */
4864  break;
4865 
4866  case 49:
4867 #line 917 "parser_bison.y" /* yacc.c:1646 */
4868  {
4869  struct obj *obj;
4870 
4871  obj = obj_alloc(&(yyloc));
4872  obj->type = NFT_OBJECT_COUNTER;
4873  handle_merge(&obj->handle, &(yyvsp[0].handle));
4874  (yyval.cmd) = cmd_alloc(CMD_CREATE, CMD_OBJ_COUNTER, &(yyvsp[0].handle), &(yyloc), obj);
4875  }
4876 #line 4877 "parser_bison.c" /* yacc.c:1646 */
4877  break;
4878 
4879  case 50:
4880 #line 926 "parser_bison.y" /* yacc.c:1646 */
4881  {
4882  (yyval.cmd) = cmd_alloc(CMD_CREATE, CMD_OBJ_COUNTER, &(yyvsp[-1].handle), &(yyloc), (yyvsp[0].obj));
4883  }
4884 #line 4885 "parser_bison.c" /* yacc.c:1646 */
4885  break;
4886 
4887  case 51:
4888 #line 930 "parser_bison.y" /* yacc.c:1646 */
4889  {
4890  (yyval.cmd) = cmd_alloc(CMD_CREATE, CMD_OBJ_QUOTA, &(yyvsp[-1].handle), &(yyloc), (yyvsp[0].obj));
4891  }
4892 #line 4893 "parser_bison.c" /* yacc.c:1646 */
4893  break;
4894 
4895  case 52:
4896 #line 934 "parser_bison.y" /* yacc.c:1646 */
4897  {
4898  struct error_record *erec;
4899  int type;
4900 
4901  erec = ct_objtype_parse(&(yyloc), (yyvsp[-6].string), &type);
4902  if (erec != NULL) {
4903  erec_queue(erec, state->msgs);
4904  YYERROR;
4905  }
4906 
4907  (yyval.cmd) = cmd_alloc_obj_ct(CMD_CREATE, type, &(yyvsp[-5].handle), &(yyloc), (yyvsp[-4].obj));
4908  }
4909 #line 4910 "parser_bison.c" /* yacc.c:1646 */
4910  break;
4911 
4912  case 53:
4913 #line 949 "parser_bison.y" /* yacc.c:1646 */
4914  {
4915  (yyval.cmd) = cmd_alloc(CMD_INSERT, CMD_OBJ_RULE, &(yyvsp[-1].handle), &(yyloc), (yyvsp[0].rule));
4916  }
4917 #line 4918 "parser_bison.c" /* yacc.c:1646 */
4918  break;
4919 
4920  case 54:
4921 #line 955 "parser_bison.y" /* yacc.c:1646 */
4922  {
4923  (yyval.cmd) = cmd_alloc(CMD_DELETE, CMD_OBJ_TABLE, &(yyvsp[0].handle), &(yyloc), NULL);
4924  }
4925 #line 4926 "parser_bison.c" /* yacc.c:1646 */
4926  break;
4927 
4928  case 55:
4929 #line 959 "parser_bison.y" /* yacc.c:1646 */
4930  {
4931  (yyval.cmd) = cmd_alloc(CMD_DELETE, CMD_OBJ_CHAIN, &(yyvsp[0].handle), &(yyloc), NULL);
4932  }
4933 #line 4934 "parser_bison.c" /* yacc.c:1646 */
4934  break;
4935 
4936  case 56:
4937 #line 963 "parser_bison.y" /* yacc.c:1646 */
4938  {
4939  (yyval.cmd) = cmd_alloc(CMD_DELETE, CMD_OBJ_RULE, &(yyvsp[0].handle), &(yyloc), NULL);
4940  }
4941 #line 4942 "parser_bison.c" /* yacc.c:1646 */
4942  break;
4943 
4944  case 57:
4945 #line 967 "parser_bison.y" /* yacc.c:1646 */
4946  {
4947  (yyval.cmd) = cmd_alloc(CMD_DELETE, CMD_OBJ_SET, &(yyvsp[0].handle), &(yyloc), NULL);
4948  }
4949 #line 4950 "parser_bison.c" /* yacc.c:1646 */
4950  break;
4951 
4952  case 58:
4953 #line 971 "parser_bison.y" /* yacc.c:1646 */
4954  {
4955  (yyval.cmd) = cmd_alloc(CMD_DELETE, CMD_OBJ_SET, &(yyvsp[0].handle), &(yyloc), NULL);
4956  }
4957 #line 4958 "parser_bison.c" /* yacc.c:1646 */
4958  break;
4959 
4960  case 59:
4961 #line 975 "parser_bison.y" /* yacc.c:1646 */
4962  {
4963  (yyval.cmd) = cmd_alloc(CMD_DELETE, CMD_OBJ_SETELEM, &(yyvsp[-1].handle), &(yyloc), (yyvsp[0].expr));
4964  }
4965 #line 4966 "parser_bison.c" /* yacc.c:1646 */
4966  break;
4967 
4968  case 60:
4969 #line 979 "parser_bison.y" /* yacc.c:1646 */
4970  {
4971  (yyval.cmd) = cmd_alloc(CMD_DELETE, CMD_OBJ_COUNTER, &(yyvsp[0].handle), &(yyloc), NULL);
4972  }
4973 #line 4974 "parser_bison.c" /* yacc.c:1646 */
4974  break;
4975 
4976  case 61:
4977 #line 983 "parser_bison.y" /* yacc.c:1646 */
4978  {
4979  (yyval.cmd) = cmd_alloc(CMD_DELETE, CMD_OBJ_QUOTA, &(yyvsp[0].handle), &(yyloc), NULL);
4980  }
4981 #line 4982 "parser_bison.c" /* yacc.c:1646 */
4982  break;
4983 
4984  case 62:
4985 #line 987 "parser_bison.y" /* yacc.c:1646 */
4986  {
4987  struct error_record *erec;
4988  int type;
4989 
4990  erec = ct_objtype_parse(&(yyloc), (yyvsp[-2].string), &type);
4991  if (erec != NULL) {
4992  erec_queue(erec, state->msgs);
4993  YYERROR;
4994  }
4995 
4996  (yyval.cmd) = cmd_alloc_obj_ct(CMD_DELETE, type, &(yyvsp[-1].handle), &(yyloc), (yyvsp[0].obj));
4997  }
4998 #line 4999 "parser_bison.c" /* yacc.c:1646 */
4999  break;
5000 
5001  case 63:
5002 #line 1002 "parser_bison.y" /* yacc.c:1646 */
5003  {
5004  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_TABLE, &(yyvsp[0].handle), &(yyloc), NULL);
5005  }
5006 #line 5007 "parser_bison.c" /* yacc.c:1646 */
5007  break;
5008 
5009  case 64:
5010 #line 1006 "parser_bison.y" /* yacc.c:1646 */
5011  {
5012  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_TABLE, &(yyvsp[0].handle), &(yyloc), NULL);
5013  }
5014 #line 5015 "parser_bison.c" /* yacc.c:1646 */
5015  break;
5016 
5017  case 65:
5018 #line 1010 "parser_bison.y" /* yacc.c:1646 */
5019  {
5020  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_CHAIN, &(yyvsp[0].handle), &(yyloc), NULL);
5021  }
5022 #line 5023 "parser_bison.c" /* yacc.c:1646 */
5023  break;
5024 
5025  case 66:
5026 #line 1014 "parser_bison.y" /* yacc.c:1646 */
5027  {
5028  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_CHAINS, &(yyvsp[0].handle), &(yyloc), NULL);
5029  }
5030 #line 5031 "parser_bison.c" /* yacc.c:1646 */
5031  break;
5032 
5033  case 67:
5034 #line 1018 "parser_bison.y" /* yacc.c:1646 */
5035  {
5036  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_SETS, &(yyvsp[0].handle), &(yyloc), NULL);
5037  }
5038 #line 5039 "parser_bison.c" /* yacc.c:1646 */
5039  break;
5040 
5041  case 68:
5042 #line 1022 "parser_bison.y" /* yacc.c:1646 */
5043  {
5044  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_SETS, &(yyvsp[0].handle), &(yyloc), NULL);
5045  }
5046 #line 5047 "parser_bison.c" /* yacc.c:1646 */
5047  break;
5048 
5049  case 69:
5050 #line 1026 "parser_bison.y" /* yacc.c:1646 */
5051  {
5052  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_SET, &(yyvsp[0].handle), &(yyloc), NULL);
5053  }
5054 #line 5055 "parser_bison.c" /* yacc.c:1646 */
5055  break;
5056 
5057  case 70:
5058 #line 1030 "parser_bison.y" /* yacc.c:1646 */
5059  {
5060  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_COUNTERS, &(yyvsp[0].handle), &(yyloc), NULL);
5061  }
5062 #line 5063 "parser_bison.c" /* yacc.c:1646 */
5063  break;
5064 
5065  case 71:
5066 #line 1034 "parser_bison.y" /* yacc.c:1646 */
5067  {
5068  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_COUNTERS, &(yyvsp[0].handle), &(yyloc), NULL);
5069  }
5070 #line 5071 "parser_bison.c" /* yacc.c:1646 */
5071  break;
5072 
5073  case 72:
5074 #line 1038 "parser_bison.y" /* yacc.c:1646 */
5075  {
5076  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_COUNTER, &(yyvsp[0].handle), &(yyloc), NULL);
5077  }
5078 #line 5079 "parser_bison.c" /* yacc.c:1646 */
5079  break;
5080 
5081  case 73:
5082 #line 1042 "parser_bison.y" /* yacc.c:1646 */
5083  {
5084  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_QUOTAS, &(yyvsp[0].handle), &(yyloc), NULL);
5085  }
5086 #line 5087 "parser_bison.c" /* yacc.c:1646 */
5087  break;
5088 
5089  case 74:
5090 #line 1046 "parser_bison.y" /* yacc.c:1646 */
5091  {
5092  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_QUOTAS, &(yyvsp[0].handle), &(yyloc), NULL);
5093  }
5094 #line 5095 "parser_bison.c" /* yacc.c:1646 */
5095  break;
5096 
5097  case 75:
5098 #line 1050 "parser_bison.y" /* yacc.c:1646 */
5099  {
5100  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_QUOTA, &(yyvsp[0].handle), &(yyloc), NULL);
5101  }
5102 #line 5103 "parser_bison.c" /* yacc.c:1646 */
5103  break;
5104 
5105  case 76:
5106 #line 1054 "parser_bison.y" /* yacc.c:1646 */
5107  {
5108  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_RULESET, &(yyvsp[0].handle), &(yyloc), NULL);
5109  }
5110 #line 5111 "parser_bison.c" /* yacc.c:1646 */
5111  break;
5112 
5113  case 77:
5114 #line 1058 "parser_bison.y" /* yacc.c:1646 */
5115  {
5116  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_FLOWTABLES, &(yyvsp[0].handle), &(yyloc), NULL);
5117  }
5118 #line 5119 "parser_bison.c" /* yacc.c:1646 */
5119  break;
5120 
5121  case 78:
5122 #line 1062 "parser_bison.y" /* yacc.c:1646 */
5123  {
5124  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_FLOWTABLE, &(yyvsp[0].handle), &(yyloc), NULL);
5125  }
5126 #line 5127 "parser_bison.c" /* yacc.c:1646 */
5127  break;
5128 
5129  case 79:
5130 #line 1066 "parser_bison.y" /* yacc.c:1646 */
5131  {
5132  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_MAPS, &(yyvsp[0].handle), &(yyloc), NULL);
5133  }
5134 #line 5135 "parser_bison.c" /* yacc.c:1646 */
5135  break;
5136 
5137  case 80:
5138 #line 1070 "parser_bison.y" /* yacc.c:1646 */
5139  {
5140  (yyval.cmd) = cmd_alloc(CMD_LIST, CMD_OBJ_MAP, &(yyvsp[0].handle), &(yyloc), NULL);
5141  }
5142 #line 5143 "parser_bison.c" /* yacc.c:1646 */
5143  break;
5144 
5145  case 81:
5146 #line 1074 "parser_bison.y" /* yacc.c:1646 */
5147  {
5148  struct error_record *erec;
5149  int type;
5150 
5151  erec = ct_objtype_parse(&(yyloc), (yyvsp[-1].string), &type);
5152  if (erec != NULL) {
5153  erec_queue(erec, state->msgs);
5154  YYERROR;
5155  }
5156 
5157  (yyval.cmd) = cmd_alloc_obj_ct(CMD_LIST, type, &(yyvsp[0].handle), &(yyloc), NULL);
5158  }
5159 #line 5160 "parser_bison.c" /* yacc.c:1646 */
5160  break;
5161 
5162  case 82:
5163 #line 1087 "parser_bison.y" /* yacc.c:1646 */
5164  {
5165  int cmd;
5166 
5167  if (strcmp((yyvsp[-2].string), "helpers") == 0) {
5168  cmd = CMD_OBJ_CT_HELPERS;
5169  } else {
5170  struct error_record *erec;
5171 
5172  erec = error(&(yyloc), "unknown ct class '%s', want 'helpers'", (yyvsp[-2].string));
5173 
5174  if (erec != NULL) {
5175  erec_queue(erec, state->msgs);
5176  YYERROR;
5177  } else
5178  YYERROR;
5179  }
5180 
5181  (yyval.cmd) = cmd_alloc(CMD_LIST, cmd, &(yyvsp[0].handle), &(yyloc), NULL);
5182  }
5183 #line 5184 "parser_bison.c" /* yacc.c:1646 */
5184  break;
5185 
5186  case 83:
5187 #line 1109 "parser_bison.y" /* yacc.c:1646 */
5188  {
5189  (yyval.cmd) = cmd_alloc(CMD_RESET, CMD_OBJ_COUNTERS, &(yyvsp[0].handle), &(yyloc), NULL);
5190  }
5191 #line 5192 "parser_bison.c" /* yacc.c:1646 */
5192  break;
5193 
5194  case 84:
5195 #line 1113 "parser_bison.y" /* yacc.c:1646 */
5196  {
5197  (yyval.cmd) = cmd_alloc(CMD_RESET, CMD_OBJ_COUNTERS, &(yyvsp[0].handle), &(yyloc), NULL);
5198  }
5199 #line 5200 "parser_bison.c" /* yacc.c:1646 */
5200  break;
5201 
5202  case 85:
5203 #line 1117 "parser_bison.y" /* yacc.c:1646 */
5204  {
5205  (yyval.cmd) = cmd_alloc(CMD_RESET, CMD_OBJ_COUNTER, &(yyvsp[0].handle),&(yyloc), NULL);
5206  }
5207 #line 5208 "parser_bison.c" /* yacc.c:1646 */
5208  break;
5209 
5210  case 86:
5211 #line 1121 "parser_bison.y" /* yacc.c:1646 */
5212  {
5213  (yyval.cmd) = cmd_alloc(CMD_RESET, CMD_OBJ_QUOTAS, &(yyvsp[0].handle), &(yyloc), NULL);
5214  }
5215 #line 5216 "parser_bison.c" /* yacc.c:1646 */
5216  break;
5217 
5218  case 87:
5219 #line 1125 "parser_bison.y" /* yacc.c:1646 */
5220  {
5221  (yyval.cmd) = cmd_alloc(CMD_RESET, CMD_OBJ_QUOTAS, &(yyvsp[0].handle), &(yyloc), NULL);
5222  }
5223 #line 5224 "parser_bison.c" /* yacc.c:1646 */
5224  break;
5225 
5226  case 88:
5227 #line 1129 "parser_bison.y" /* yacc.c:1646 */
5228  {
5229  (yyval.cmd) = cmd_alloc(CMD_RESET, CMD_OBJ_QUOTA, &(yyvsp[0].handle), &(yyloc), NULL);
5230  }
5231 #line 5232 "parser_bison.c" /* yacc.c:1646 */
5232  break;
5233 
5234  case 89:
5235 #line 1135 "parser_bison.y" /* yacc.c:1646 */
5236  {
5237  (yyval.cmd) = cmd_alloc(CMD_FLUSH, CMD_OBJ_TABLE, &(yyvsp[0].handle), &(yyloc), NULL);
5238  }
5239 #line 5240 "parser_bison.c" /* yacc.c:1646 */
5240  break;
5241 
5242  case 90:
5243 #line 1139 "parser_bison.y" /* yacc.c:1646 */
5244  {
5245  (yyval.cmd) = cmd_alloc(CMD_FLUSH, CMD_OBJ_CHAIN, &(yyvsp[0].handle), &(yyloc), NULL);
5246  }
5247 #line 5248 "parser_bison.c" /* yacc.c:1646 */
5248  break;
5249 
5250  case 91:
5251 #line 1143 "parser_bison.y" /* yacc.c:1646 */
5252  {
5253  (yyval.cmd) = cmd_alloc(CMD_FLUSH, CMD_OBJ_SET, &(yyvsp[0].handle), &(yyloc), NULL);
5254  }
5255 #line 5256 "parser_bison.c" /* yacc.c:1646 */
5256  break;
5257 
5258  case 92:
5259 #line 1147 "parser_bison.y" /* yacc.c:1646 */
5260  {
5261  (yyval.cmd) = cmd_alloc(CMD_FLUSH, CMD_OBJ_MAP, &(yyvsp[0].handle), &(yyloc), NULL);
5262  }
5263 #line 5264 "parser_bison.c" /* yacc.c:1646 */
5264  break;
5265 
5266  case 93:
5267 #line 1151 "parser_bison.y" /* yacc.c:1646 */
5268  {
5269  (yyval.cmd) = cmd_alloc(CMD_FLUSH, CMD_OBJ_FLOWTABLE, &(yyvsp[0].handle), &(yyloc), NULL);
5270  }
5271 #line 5272 "parser_bison.c" /* yacc.c:1646 */
5272  break;
5273 
5274  case 94:
5275 #line 1155 "parser_bison.y" /* yacc.c:1646 */
5276  {
5277  (yyval.cmd) = cmd_alloc(CMD_FLUSH, CMD_OBJ_RULESET, &(yyvsp[0].handle), &(yyloc), NULL);
5278  }
5279 #line 5280 "parser_bison.c" /* yacc.c:1646 */
5280  break;
5281 
5282  case 95:
5283 #line 1161 "parser_bison.y" /* yacc.c:1646 */
5284  {
5285  (yyval.cmd) = cmd_alloc(CMD_RENAME, CMD_OBJ_CHAIN, &(yyvsp[-1].handle), &(yyloc), NULL);
5286  (yyval.cmd)->arg = (yyvsp[0].string);
5287  }
5288 #line 5289 "parser_bison.c" /* yacc.c:1646 */
5289  break;
5290 
5291  case 96:
5292 #line 1168 "parser_bison.y" /* yacc.c:1646 */
5293  {
5294  struct handle h = { .family = NFPROTO_UNSPEC };
5295  struct export *export = export_alloc((yyvsp[0].val));
5296  (yyval.cmd) = cmd_alloc(CMD_EXPORT, CMD_OBJ_EXPORT, &h, &(yyloc), export);
5297  }
5298 #line 5299 "parser_bison.c" /* yacc.c:1646 */
5299  break;
5300 
5301  case 97:
5302 #line 1174 "parser_bison.y" /* yacc.c:1646 */
5303  {
5304  struct handle h = { .family = NFPROTO_UNSPEC };
5305  struct export *export = export_alloc((yyvsp[0].val));
5306  (yyval.cmd) = cmd_alloc(CMD_EXPORT, CMD_OBJ_EXPORT, &h, &(yyloc), export);
5307  }
5308 #line 5309 "parser_bison.c" /* yacc.c:1646 */
5309  break;
5310 
5311  case 98:
5312 #line 1182 "parser_bison.y" /* yacc.c:1646 */
5313  {
5314  struct handle h = { .family = NFPROTO_UNSPEC };
5315  struct monitor *m = monitor_alloc((yyvsp[0].val), (yyvsp[-1].val), (yyvsp[-2].string));
5316  m->location = (yylsp[-2]);
5317  (yyval.cmd) = cmd_alloc(CMD_MONITOR, CMD_OBJ_MONITOR, &h, &(yyloc), m);
5318  }
5319 #line 5320 "parser_bison.c" /* yacc.c:1646 */
5320  break;
5321 
5322  case 99:
5323 #line 1190 "parser_bison.y" /* yacc.c:1646 */
5324  { (yyval.string) = NULL; }
5325 #line 5326 "parser_bison.c" /* yacc.c:1646 */
5326  break;
5327 
5328  case 100:
5329 #line 1191 "parser_bison.y" /* yacc.c:1646 */
5330  { (yyval.string) = (yyvsp[0].string); }
5331 #line 5332 "parser_bison.c" /* yacc.c:1646 */
5332  break;
5333 
5334  case 101:
5335 #line 1194 "parser_bison.y" /* yacc.c:1646 */
5336  { (yyval.val) = CMD_MONITOR_OBJ_ANY; }
5337 #line 5338 "parser_bison.c" /* yacc.c:1646 */
5338  break;
5339 
5340  case 102:
5341 #line 1195 "parser_bison.y" /* yacc.c:1646 */
5342  { (yyval.val) = CMD_MONITOR_OBJ_TABLES; }
5343 #line 5344 "parser_bison.c" /* yacc.c:1646 */
5344  break;
5345 
5346  case 103:
5347 #line 1196 "parser_bison.y" /* yacc.c:1646 */
5348  { (yyval.val) = CMD_MONITOR_OBJ_CHAINS; }
5349 #line 5350 "parser_bison.c" /* yacc.c:1646 */
5350  break;
5351 
5352  case 104:
5353 #line 1197 "parser_bison.y" /* yacc.c:1646 */
5354  { (yyval.val) = CMD_MONITOR_OBJ_SETS; }
5355 #line 5356 "parser_bison.c" /* yacc.c:1646 */
5356  break;
5357 
5358  case 105:
5359 #line 1198 "parser_bison.y" /* yacc.c:1646 */
5360  { (yyval.val) = CMD_MONITOR_OBJ_RULES; }
5361 #line 5362 "parser_bison.c" /* yacc.c:1646 */
5362  break;
5363 
5364  case 106:
5365 #line 1199 "parser_bison.y" /* yacc.c:1646 */
5366  { (yyval.val) = CMD_MONITOR_OBJ_ELEMS; }
5367 #line 5368 "parser_bison.c" /* yacc.c:1646 */
5368  break;
5369 
5370  case 107:
5371 #line 1200 "parser_bison.y" /* yacc.c:1646 */
5372  { (yyval.val) = CMD_MONITOR_OBJ_RULESET; }
5373 #line 5374 "parser_bison.c" /* yacc.c:1646 */
5374  break;
5375 
5376  case 108:
5377 #line 1201 "parser_bison.y" /* yacc.c:1646 */
5378  { (yyval.val) = CMD_MONITOR_OBJ_TRACE; }
5379 #line 5380 "parser_bison.c" /* yacc.c:1646 */
5380  break;
5381 
5382  case 109:
5383 #line 1204 "parser_bison.y" /* yacc.c:1646 */
5384  { (yyval.val) = NFTNL_OUTPUT_DEFAULT; }
5385 #line 5386 "parser_bison.c" /* yacc.c:1646 */
5386  break;
5387 
5388  case 111:
5389 #line 1208 "parser_bison.y" /* yacc.c:1646 */
5390  { (yyval.val) = NFTNL_OUTPUT_XML; }
5391 #line 5392 "parser_bison.c" /* yacc.c:1646 */
5392  break;
5393 
5394  case 112:
5395 #line 1209 "parser_bison.y" /* yacc.c:1646 */
5396  { (yyval.val) = NFTNL_OUTPUT_JSON; }
5397 #line 5398 "parser_bison.c" /* yacc.c:1646 */
5398  break;
5399 
5400  case 113:
5401 #line 1213 "parser_bison.y" /* yacc.c:1646 */
5402  {
5403  struct handle h = { .family = NFPROTO_UNSPEC };
5404  (yyval.cmd) = cmd_alloc(CMD_DESCRIBE, CMD_OBJ_EXPR, &h, &(yyloc), NULL);
5405  (yyval.cmd)->expr = (yyvsp[0].expr);
5406  }
5407 #line 5408 "parser_bison.c" /* yacc.c:1646 */
5408  break;
5409 
5410  case 114:
5411 #line 1221 "parser_bison.y" /* yacc.c:1646 */
5412  {
5413  (yyval.table) = table_alloc();
5414  open_scope(state, &(yyval.table)->scope);
5415  }
5416 #line 5417 "parser_bison.c" /* yacc.c:1646 */
5417  break;
5418 
5419  case 115:
5420 #line 1228 "parser_bison.y" /* yacc.c:1646 */
5421  {
5422  if (strcmp((yyvsp[0].string), "dormant") == 0) {
5423  (yyvsp[-2].table)->flags = TABLE_F_DORMANT;
5424  } else {
5425  erec_queue(error(&(yylsp[0]), "unknown table option %s", (yyvsp[0].string)),
5426  state->msgs);
5427  YYERROR;
5428  }
5429  }
5430 #line 5431 "parser_bison.c" /* yacc.c:1646 */
5431  break;
5432 
5433  case 116:
5434 #line 1239 "parser_bison.y" /* yacc.c:1646 */
5435  { (yyval.table) = (yyvsp[(-1) - (0)].table); }
5436 #line 5437 "parser_bison.c" /* yacc.c:1646 */
5437  break;
5438 
5439  case 120:
5440 #line 1246 "parser_bison.y" /* yacc.c:1646 */
5441  {
5442  (yyvsp[-4].chain)->location = (yylsp[-5]);
5443  handle_merge(&(yyvsp[-4].chain)->handle, &(yyvsp[-5].handle));
5444  handle_free(&(yyvsp[-5].handle));
5445  close_scope(state);
5446  list_add_tail(&(yyvsp[-4].chain)->list, &(yyvsp[-7].table)->chains);
5447  (yyval.table) = (yyvsp[-7].table);
5448  }
5449 #line 5450 "parser_bison.c" /* yacc.c:1646 */
5450  break;
5451 
5452  case 121:
5453 #line 1257 "parser_bison.y" /* yacc.c:1646 */
5454  {
5455  (yyvsp[-4].set)->location = (yylsp[-5]);
5456  handle_merge(&(yyvsp[-4].set)->handle, &(yyvsp[-5].handle));
5457  handle_free(&(yyvsp[-5].handle));
5458  list_add_tail(&(yyvsp[-4].set)->list, &(yyvsp[-7].table)->sets);
5459  (yyval.table) = (yyvsp[-7].table);
5460  }
5461 #line 5462 "parser_bison.c" /* yacc.c:1646 */
5462  break;
5463 
5464  case 122:
5465 #line 1267 "parser_bison.y" /* yacc.c:1646 */
5466  {
5467  (yyvsp[-4].set)->location = (yylsp[-5]);
5468  handle_merge(&(yyvsp[-4].set)->handle, &(yyvsp[-5].handle));
5469  handle_free(&(yyvsp[-5].handle));
5470  list_add_tail(&(yyvsp[-4].set)->list, &(yyvsp[-7].table)->sets);
5471  (yyval.table) = (yyvsp[-7].table);
5472  }
5473 #line 5474 "parser_bison.c" /* yacc.c:1646 */
5474  break;
5475 
5476  case 123:
5477 #line 1277 "parser_bison.y" /* yacc.c:1646 */
5478  {
5479  (yyvsp[-4].obj)->location = (yylsp[-5]);
5480  (yyvsp[-4].obj)->type = NFT_OBJECT_COUNTER;
5481  handle_merge(&(yyvsp[-4].obj)->handle, &(yyvsp[-5].handle));
5482  handle_free(&(yyvsp[-5].handle));
5483  list_add_tail(&(yyvsp[-4].obj)->list, &(yyvsp[-7].table)->objs);
5484  (yyval.table) = (yyvsp[-7].table);
5485  }
5486 #line 5487 "parser_bison.c" /* yacc.c:1646 */
5487  break;
5488 
5489  case 124:
5490 #line 1288 "parser_bison.y" /* yacc.c:1646 */
5491  {
5492  (yyvsp[-4].obj)->location = (yylsp[-5]);
5493  (yyvsp[-4].obj)->type = NFT_OBJECT_QUOTA;
5494  handle_merge(&(yyvsp[-4].obj)->handle, &(yyvsp[-5].handle));
5495  handle_free(&(yyvsp[-5].handle));
5496  list_add_tail(&(yyvsp[-4].obj)->list, &(yyvsp[-7].table)->objs);
5497  (yyval.table) = (yyvsp[-7].table);
5498  }
5499 #line 5500 "parser_bison.c" /* yacc.c:1646 */
5500  break;
5501 
5502  case 125:
5503 #line 1297 "parser_bison.y" /* yacc.c:1646 */
5504  {
5505  struct error_record *erec;
5506  int type;
5507 
5508  erec = ct_objtype_parse(&(yyloc), (yyvsp[-6].string), &type);
5509  if (erec != NULL) {
5510  erec_queue(erec, state->msgs);
5511  YYERROR;
5512  }
5513 
5514  (yyvsp[-4].obj)->location = (yylsp[-5]);
5515  (yyvsp[-4].obj)->type = type;
5516  handle_merge(&(yyvsp[-4].obj)->handle, &(yyvsp[-5].handle));
5517  handle_free(&(yyvsp[-5].handle));
5518  list_add_tail(&(yyvsp[-4].obj)->list, &(yyvsp[-8].table)->objs);
5519  (yyval.table) = (yyvsp[-8].table);
5520  }
5521 #line 5522 "parser_bison.c" /* yacc.c:1646 */
5522  break;
5523 
5524  case 126:
5525 #line 1317 "parser_bison.y" /* yacc.c:1646 */
5526  {
5527  (yyval.chain) = chain_alloc(NULL);
5528  open_scope(state, &(yyval.chain)->scope);
5529  }
5530 #line 5531 "parser_bison.c" /* yacc.c:1646 */
5531  break;
5532 
5533  case 127:
5534 #line 1323 "parser_bison.y" /* yacc.c:1646 */
5535  { (yyval.chain) = (yyvsp[(-1) - (0)].chain); }
5536 #line 5537 "parser_bison.c" /* yacc.c:1646 */
5537  break;
5538 
5539  case 132:
5540 #line 1329 "parser_bison.y" /* yacc.c:1646 */
5541  {
5542  list_add_tail(&(yyvsp[-1].rule)->list, &(yyvsp[-2].chain)->rules);
5543  (yyval.chain) = (yyvsp[-2].chain);
5544  }
5545 #line 5546 "parser_bison.c" /* yacc.c:1646 */
5546  break;
5547 
5548  case 133:
5549 #line 1336 "parser_bison.y" /* yacc.c:1646 */
5550  {
5551  (yyval.set) = set_alloc(NULL);
5552  }
5553 #line 5554 "parser_bison.c" /* yacc.c:1646 */
5554  break;
5555 
5556  case 134:
5557 #line 1341 "parser_bison.y" /* yacc.c:1646 */
5558  { (yyval.set) = (yyvsp[(-1) - (0)].set); }
5559 #line 5560 "parser_bison.c" /* yacc.c:1646 */
5560  break;
5561 
5562  case 137:
5563 #line 1345 "parser_bison.y" /* yacc.c:1646 */
5564  {
5565  (yyvsp[-3].set)->keytype = (yyvsp[-1].datatype);
5566  (yyval.set) = (yyvsp[-3].set);
5567  }
5568 #line 5569 "parser_bison.c" /* yacc.c:1646 */
5569  break;
5570 
5571  case 138:
5572 #line 1350 "parser_bison.y" /* yacc.c:1646 */
5573  {
5574  (yyvsp[-3].set)->flags = (yyvsp[-1].val);
5575  (yyval.set) = (yyvsp[-3].set);
5576  }
5577 #line 5578 "parser_bison.c" /* yacc.c:1646 */
5578  break;
5579 
5580  case 139:
5581 #line 1355 "parser_bison.y" /* yacc.c:1646 */
5582  {
5583  (yyvsp[-3].set)->timeout = (yyvsp[-1].val) * 1000;
5584  (yyval.set) = (yyvsp[-3].set);
5585  }
5586 #line 5587 "parser_bison.c" /* yacc.c:1646 */
5587  break;
5588 
5589  case 140:
5590 #line 1360 "parser_bison.y" /* yacc.c:1646 */
5591  {
5592  (yyvsp[-3].set)->gc_int = (yyvsp[-1].val) * 1000;
5593  (yyval.set) = (yyvsp[-3].set);
5594  }
5595 #line 5596 "parser_bison.c" /* yacc.c:1646 */
5596  break;
5597 
5598  case 141:
5599 #line 1365 "parser_bison.y" /* yacc.c:1646 */
5600  {
5601  (yyvsp[-3].set)->init = (yyvsp[0].expr);
5602  (yyval.set) = (yyvsp[-3].set);
5603  }
5604 #line 5605 "parser_bison.c" /* yacc.c:1646 */
5605  break;
5606 
5607  case 145:
5608 #line 1377 "parser_bison.y" /* yacc.c:1646 */
5609  {
5610  (yyval.val) = (yyvsp[-2].val) | (yyvsp[0].val);
5611  }
5612 #line 5613 "parser_bison.c" /* yacc.c:1646 */
5613  break;
5614 
5615  case 147:
5616 #line 1383 "parser_bison.y" /* yacc.c:1646 */
5617  { (yyval.val) = NFT_SET_CONSTANT; }
5618 #line 5619 "parser_bison.c" /* yacc.c:1646 */
5619  break;
5620 
5621  case 148:
5622 #line 1384 "parser_bison.y" /* yacc.c:1646 */
5623  { (yyval.val) = NFT_SET_INTERVAL; }
5624 #line 5625 "parser_bison.c" /* yacc.c:1646 */
5625  break;
5626 
5627  case 149:
5628 #line 1385 "parser_bison.y" /* yacc.c:1646 */
5629  { (yyval.val) = NFT_SET_TIMEOUT; }
5630 #line 5631 "parser_bison.c" /* yacc.c:1646 */
5631  break;
5632 
5633  case 150:
5634 #line 1389 "parser_bison.y" /* yacc.c:1646 */
5635  {
5636  (yyval.set) = set_alloc(NULL);
5637  }
5638 #line 5639 "parser_bison.c" /* yacc.c:1646 */
5639  break;
5640 
5641  case 151:
5642 #line 1394 "parser_bison.y" /* yacc.c:1646 */
5643  { (yyval.set) = (yyvsp[(-1) - (0)].set); }
5644 #line 5645 "parser_bison.c" /* yacc.c:1646 */
5645  break;
5646 
5647  case 154:
5648 #line 1400 "parser_bison.y" /* yacc.c:1646 */
5649  {
5650  (yyvsp[-5].set)->keytype = (yyvsp[-3].datatype);
5651  (yyvsp[-5].set)->datatype = (yyvsp[-1].datatype);
5652  (yyvsp[-5].set)->flags |= NFT_SET_MAP;
5653  (yyval.set) = (yyvsp[-5].set);
5654  }
5655 #line 5656 "parser_bison.c" /* yacc.c:1646 */
5656  break;
5657 
5658  case 155:
5659 #line 1409 "parser_bison.y" /* yacc.c:1646 */
5660  {
5661  (yyvsp[-5].set)->keytype = (yyvsp[-3].datatype);
5662  (yyvsp[-5].set)->objtype = NFT_OBJECT_COUNTER;
5663  (yyvsp[-5].set)->flags |= NFT_SET_OBJECT;
5664  (yyval.set) = (yyvsp[-5].set);
5665  }
5666 #line 5667 "parser_bison.c" /* yacc.c:1646 */
5667  break;
5668 
5669  case 156:
5670 #line 1418 "parser_bison.y" /* yacc.c:1646 */
5671  {
5672  (yyvsp[-5].set)->keytype = (yyvsp[-3].datatype);
5673  (yyvsp[-5].set)->objtype = NFT_OBJECT_QUOTA;
5674  (yyvsp[-5].set)->flags |= NFT_SET_OBJECT;
5675  (yyval.set) = (yyvsp[-5].set);
5676  }
5677 #line 5678 "parser_bison.c" /* yacc.c:1646 */
5678  break;
5679 
5680  case 157:
5681 #line 1425 "parser_bison.y" /* yacc.c:1646 */
5682  {
5683  (yyvsp[-3].set)->flags |= (yyvsp[-1].val);
5684  (yyval.set) = (yyvsp[-3].set);
5685  }
5686 #line 5687 "parser_bison.c" /* yacc.c:1646 */
5687  break;
5688 
5689  case 158:
5690 #line 1430 "parser_bison.y" /* yacc.c:1646 */
5691  {
5692  (yyvsp[-3].set)->init = (yyvsp[0].expr);
5693  (yyval.set) = (yyvsp[-3].set);
5694  }
5695 #line 5696 "parser_bison.c" /* yacc.c:1646 */
5696  break;
5697 
5698  case 160:
5699 #line 1438 "parser_bison.y" /* yacc.c:1646 */
5700  {
5701  (yyvsp[-2].set)->policy = (yyvsp[0].val);
5702  }
5703 #line 5704 "parser_bison.c" /* yacc.c:1646 */
5704  break;
5705 
5706  case 161:
5707 #line 1442 "parser_bison.y" /* yacc.c:1646 */
5708  {
5709  (yyvsp[-2].set)->desc.size = (yyvsp[0].val);
5710  }
5711 #line 5712 "parser_bison.c" /* yacc.c:1646 */
5712  break;
5713 
5714  case 162:
5715 #line 1447 "parser_bison.y" /* yacc.c:1646 */
5716  { (yyval.val) = NFT_SET_POL_PERFORMANCE; }
5717 #line 5718 "parser_bison.c" /* yacc.c:1646 */
5718  break;
5719 
5720  case 163:
5721 #line 1448 "parser_bison.y" /* yacc.c:1646 */
5722  { (yyval.val) = NFT_SET_POL_MEMORY; }
5723 #line 5724 "parser_bison.c" /* yacc.c:1646 */
5724  break;
5725 
5726  case 164:
5727 #line 1452 "parser_bison.y" /* yacc.c:1646 */
5728  {
5729  if ((yyvsp[0].val) & ~TYPE_MASK)
5730  (yyval.datatype) = concat_type_alloc((yyvsp[0].val));
5731  else
5732  (yyval.datatype) = datatype_lookup((yyvsp[0].val));
5733  }
5734 #line 5735 "parser_bison.c" /* yacc.c:1646 */
5735  break;
5736 
5737  case 165:
5738 #line 1461 "parser_bison.y" /* yacc.c:1646 */
5739  {
5740  const struct datatype *dtype = datatype_lookup_byname((yyvsp[0].string));
5741  if (dtype == NULL) {
5742  erec_queue(error(&(yylsp[0]), "unknown datatype %s", (yyvsp[0].string)),
5743  state->msgs);
5744  xfree((yyvsp[0].string));
5745  YYERROR;
5746  }
5747  xfree((yyvsp[0].string));
5748  (yyval.val) = dtype->type;
5749  }
5750 #line 5751 "parser_bison.c" /* yacc.c:1646 */
5751  break;
5752 
5753  case 166:
5754 #line 1473 "parser_bison.y" /* yacc.c:1646 */
5755  {
5756  const struct datatype *dtype = datatype_lookup_byname((yyvsp[0].string));
5757  if (dtype == NULL) {
5758  erec_queue(error(&(yylsp[0]), "unknown datatype %s", (yyvsp[0].string)),
5759  state->msgs);
5760  YYERROR;
5761  }
5762  (yyval.val) = concat_subtype_add((yyval.val), dtype->type);
5763  }
5764 #line 5765 "parser_bison.c" /* yacc.c:1646 */
5765  break;
5766 
5767  case 167:
5768 #line 1485 "parser_bison.y" /* yacc.c:1646 */
5769  {
5770  (yyval.obj) = obj_alloc(NULL);
5771  }
5772 #line 5773 "parser_bison.c" /* yacc.c:1646 */
5773  break;
5774 
5775  case 168:
5776 #line 1490 "parser_bison.y" /* yacc.c:1646 */
5777  { (yyval.obj) = (yyvsp[(-1) - (0)].obj); }
5778 #line 5779 "parser_bison.c" /* yacc.c:1646 */
5779  break;
5780 
5781  case 171:
5782 #line 1494 "parser_bison.y" /* yacc.c:1646 */
5783  {
5784  (yyvsp[-1].obj)->counter = *(yyvsp[0].counter);
5785  (yyval.obj) = (yyvsp[-1].obj);
5786  }
5787 #line 5788 "parser_bison.c" /* yacc.c:1646 */
5788  break;
5789 
5790  case 172:
5791 #line 1500 "parser_bison.y" /* yacc.c:1646 */
5792  { (yyval.obj) = (yyvsp[(-1) - (0)].obj); }
5793 #line 5794 "parser_bison.c" /* yacc.c:1646 */
5794  break;
5795 
5796  case 175:
5797 #line 1504 "parser_bison.y" /* yacc.c:1646 */
5798  {
5799  (yyvsp[-1].obj)->quota = *(yyvsp[0].quota);
5800  (yyval.obj) = (yyvsp[-1].obj);
5801  }
5802 #line 5803 "parser_bison.c" /* yacc.c:1646 */
5803  break;
5804 
5805  case 176:
5806 #line 1510 "parser_bison.y" /* yacc.c:1646 */
5807  { (yyval.obj) = (yyvsp[(-1) - (0)].obj); }
5808 #line 5809 "parser_bison.c" /* yacc.c:1646 */
5809  break;
5810 
5811  case 179:
5812 #line 1514 "parser_bison.y" /* yacc.c:1646 */
5813  {
5814  (yyval.obj) = (yyvsp[-1].obj);
5815  }
5816 #line 5817 "parser_bison.c" /* yacc.c:1646 */
5817  break;
5818 
5819  case 180:
5820 #line 1520 "parser_bison.y" /* yacc.c:1646 */
5821  { (yyval.string) = (yyvsp[0].string); }
5822 #line 5823 "parser_bison.c" /* yacc.c:1646 */
5823  break;
5824 
5825  case 181:
5826 #line 1521 "parser_bison.y" /* yacc.c:1646 */
5827  { (yyval.string) = xstrdup("mark"); }
5828 #line 5829 "parser_bison.c" /* yacc.c:1646 */
5829  break;
5830 
5831  case 182:
5832 #line 1522 "parser_bison.y" /* yacc.c:1646 */
5833  { (yyval.string) = xstrdup("dscp"); }
5834 #line 5835 "parser_bison.c" /* yacc.c:1646 */
5835  break;
5836 
5837  case 183:
5838 #line 1523 "parser_bison.y" /* yacc.c:1646 */
5839  { (yyval.string) = xstrdup("ecn"); }
5840 #line 5841 "parser_bison.c" /* yacc.c:1646 */
5841  break;
5842 
5843  case 184:
5844 #line 1527 "parser_bison.y" /* yacc.c:1646 */
5845  {
5846  const char *chain_type = chain_type_name_lookup((yyvsp[-5].string));
5847 
5848  if (chain_type == NULL) {
5849  erec_queue(error(&(yylsp[-5]), "unknown chain type %s", (yyvsp[-5].string)),
5850  state->msgs);
5851  YYERROR;
5852  }
5853  (yyvsp[-7].chain)->type = xstrdup(chain_type);
5854  xfree((yyvsp[-5].string));
5855 
5856  (yyvsp[-7].chain)->hookstr = chain_hookname_lookup((yyvsp[-3].string));
5857  if ((yyvsp[-7].chain)->hookstr == NULL) {
5858  erec_queue(error(&(yylsp[-3]), "unknown chain hook %s", (yyvsp[-3].string)),
5859  state->msgs);
5860  YYERROR;
5861  }
5862  xfree((yyvsp[-3].string));
5863 
5864  (yyvsp[-7].chain)->dev = (yyvsp[-2].string);
5865  (yyvsp[-7].chain)->priority = (yyvsp[0].val);
5866  (yyvsp[-7].chain)->flags |= CHAIN_F_BASECHAIN;
5867  }
5868 #line 5869 "parser_bison.c" /* yacc.c:1646 */
5869  break;
5870 
5871  case 185:
5872 #line 1552 "parser_bison.y" /* yacc.c:1646 */
5873  { (yyval.val) = (yyvsp[0].val); }
5874 #line 5875 "parser_bison.c" /* yacc.c:1646 */
5875  break;
5876 
5877  case 186:
5878 #line 1553 "parser_bison.y" /* yacc.c:1646 */
5879  { (yyval.val) = -(yyvsp[0].val); }
5880 #line 5881 "parser_bison.c" /* yacc.c:1646 */
5881  break;
5882 
5883  case 187:
5884 #line 1556 "parser_bison.y" /* yacc.c:1646 */
5885  { (yyval.string) = (yyvsp[0].string); }
5886 #line 5887 "parser_bison.c" /* yacc.c:1646 */
5887  break;
5888 
5889  case 188:
5890 #line 1557 "parser_bison.y" /* yacc.c:1646 */
5891  { (yyval.string) = NULL; }
5892 #line 5893 "parser_bison.c" /* yacc.c:1646 */
5893  break;
5894 
5895  case 189:
5896 #line 1561 "parser_bison.y" /* yacc.c:1646 */
5897  {
5898  if ((yyvsp[-2].chain)->policy != -1) {
5899  erec_queue(error(&(yyloc), "you cannot set chain policy twice"),
5900  state->msgs);
5901  YYERROR;
5902  }
5903  (yyvsp[-2].chain)->policy = (yyvsp[0].val);
5904  }
5905 #line 5906 "parser_bison.c" /* yacc.c:1646 */
5906  break;
5907 
5908  case 190:
5909 #line 1571 "parser_bison.y" /* yacc.c:1646 */
5910  { (yyval.val) = NF_ACCEPT; }
5911 #line 5912 "parser_bison.c" /* yacc.c:1646 */
5912  break;
5913 
5914  case 191:
5915 #line 1572 "parser_bison.y" /* yacc.c:1646 */
5916  { (yyval.val) = NF_DROP; }
5917 #line 5918 "parser_bison.c" /* yacc.c:1646 */
5918  break;
5919 
5920  case 196:
5921 #line 1584 "parser_bison.y" /* yacc.c:1646 */
5922  {
5923  struct error_record *erec;
5924  uint64_t res;
5925 
5926  erec = time_parse(&(yylsp[0]), (yyvsp[0].string), &res);
5927  if (erec != NULL) {
5928  erec_queue(erec, state->msgs);
5929  YYERROR;
5930  }
5931  (yyval.val) = res;
5932  }
5933 #line 5934 "parser_bison.c" /* yacc.c:1646 */
5934  break;
5935 
5936  case 197:
5937 #line 1597 "parser_bison.y" /* yacc.c:1646 */
5938  { (yyval.val) = NFPROTO_IPV4; }
5939 #line 5940 "parser_bison.c" /* yacc.c:1646 */
5940  break;
5941 
5942  case 199:
5943 #line 1601 "parser_bison.y" /* yacc.c:1646 */
5944  { (yyval.val) = NFPROTO_IPV4; }
5945 #line 5946 "parser_bison.c" /* yacc.c:1646 */
5946  break;
5947 
5948  case 200:
5949 #line 1602 "parser_bison.y" /* yacc.c:1646 */
5950  { (yyval.val) = NFPROTO_IPV6; }
5951 #line 5952 "parser_bison.c" /* yacc.c:1646 */
5952  break;
5953 
5954  case 201:
5955 #line 1603 "parser_bison.y" /* yacc.c:1646 */
5956  { (yyval.val) = NFPROTO_INET; }
5957 #line 5958 "parser_bison.c" /* yacc.c:1646 */
5958  break;
5959 
5960  case 202:
5961 #line 1604 "parser_bison.y" /* yacc.c:1646 */
5962  { (yyval.val) = NFPROTO_ARP; }
5963 #line 5964 "parser_bison.c" /* yacc.c:1646 */
5964  break;
5965 
5966  case 203:
5967 #line 1605 "parser_bison.y" /* yacc.c:1646 */
5968  { (yyval.val) = NFPROTO_BRIDGE; }
5969 #line 5970 "parser_bison.c" /* yacc.c:1646 */
5970  break;
5971 
5972  case 204:
5973 #line 1606 "parser_bison.y" /* yacc.c:1646 */
5974  { (yyval.val) = NFPROTO_NETDEV; }
5975 #line 5976 "parser_bison.c" /* yacc.c:1646 */
5976  break;
5977 
5978  case 205:
5979 #line 1610 "parser_bison.y" /* yacc.c:1646 */
5980  {
5981  memset(&(yyval.handle), 0, sizeof((yyval.handle)));
5982  (yyval.handle).family = (yyvsp[-1].val);
5983  (yyval.handle).table = (yyvsp[0].string);
5984  }
5985 #line 5986 "parser_bison.c" /* yacc.c:1646 */
5986  break;
5987 
5988  case 206:
5989 #line 1618 "parser_bison.y" /* yacc.c:1646 */
5990  {
5991  (yyval.handle) = (yyvsp[-1].handle);
5992  (yyval.handle).chain = (yyvsp[0].string);
5993  }
5994 #line 5995 "parser_bison.c" /* yacc.c:1646 */
5995  break;
5996 
5997  case 207:
5998 #line 1625 "parser_bison.y" /* yacc.c:1646 */
5999  {
6000  memset(&(yyval.handle), 0, sizeof((yyval.handle)));
6001  (yyval.handle).chain = (yyvsp[0].string);
6002  }
6003 #line 6004 "parser_bison.c" /* yacc.c:1646 */
6004  break;
6005 
6006  case 208:
6007 #line 1632 "parser_bison.y" /* yacc.c:1646 */
6008  {
6009  (yyval.handle) = (yyvsp[-1].handle);
6010  (yyval.handle).set = (yyvsp[0].string);
6011  }
6012 #line 6013 "parser_bison.c" /* yacc.c:1646 */
6013  break;
6014 
6015  case 209:
6016 #line 1639 "parser_bison.y" /* yacc.c:1646 */
6017  {
6018  memset(&(yyval.handle), 0, sizeof((yyval.handle)));
6019  (yyval.handle).set = (yyvsp[0].string);
6020  }
6021 #line 6022 "parser_bison.c" /* yacc.c:1646 */
6022  break;
6023 
6024  case 210:
6025 #line 1646 "parser_bison.y" /* yacc.c:1646 */
6026  {
6027  (yyval.handle) = (yyvsp[-1].handle);
6028  (yyval.handle).obj = (yyvsp[0].string);
6029  }
6030 #line 6031 "parser_bison.c" /* yacc.c:1646 */
6031  break;
6032 
6033  case 211:
6034 #line 1653 "parser_bison.y" /* yacc.c:1646 */
6035  {
6036  memset(&(yyval.handle), 0, sizeof((yyval.handle)));
6037  (yyval.handle).obj = (yyvsp[0].string);
6038  }
6039 #line 6040 "parser_bison.c" /* yacc.c:1646 */
6040  break;
6041 
6042  case 212:
6043 #line 1660 "parser_bison.y" /* yacc.c:1646 */
6044  {
6045  memset(&(yyval.handle), 0, sizeof((yyval.handle)));
6046  (yyval.handle).handle.location = (yyloc);
6047  (yyval.handle).handle.id = (yyvsp[0].val);
6048  }
6049 #line 6050 "parser_bison.c" /* yacc.c:1646 */
6050  break;
6051 
6052  case 213:
6053 #line 1668 "parser_bison.y" /* yacc.c:1646 */
6054  {
6055  memset(&(yyval.handle), 0, sizeof((yyval.handle)));
6056  (yyval.handle).position.location = (yyloc);
6057  (yyval.handle).position.id = (yyvsp[0].val);
6058  }
6059 #line 6060 "parser_bison.c" /* yacc.c:1646 */
6060  break;
6061 
6062  case 214:
6063 #line 1676 "parser_bison.y" /* yacc.c:1646 */
6064  {
6065  (yyval.handle) = (yyvsp[0].handle);
6066  }
6067 #line 6068 "parser_bison.c" /* yacc.c:1646 */
6068  break;
6069 
6070  case 215:
6071 #line 1680 "parser_bison.y" /* yacc.c:1646 */
6072  {
6073  handle_merge(&(yyvsp[-1].handle), &(yyvsp[0].handle));
6074  (yyval.handle) = (yyvsp[-1].handle);
6075  }
6076 #line 6077 "parser_bison.c" /* yacc.c:1646 */
6077  break;
6078 
6079  case 216:
6080 #line 1687 "parser_bison.y" /* yacc.c:1646 */
6081  {
6082  handle_merge(&(yyvsp[-1].handle), &(yyvsp[0].handle));
6083  (yyval.handle) = (yyvsp[-1].handle);
6084  }
6085 #line 6086 "parser_bison.c" /* yacc.c:1646 */
6086  break;
6087 
6088  case 217:
6089 #line 1694 "parser_bison.y" /* yacc.c:1646 */
6090  {
6091  if (strlen((yyvsp[0].string)) > UDATA_COMMENT_MAXLEN) {
6092  erec_queue(error(&(yylsp[0]), "comment too long, %d characters maximum allowed", UDATA_COMMENT_MAXLEN),
6093  state->msgs);
6094  YYERROR;
6095  }
6096  (yyval.string) = (yyvsp[0].string);
6097  }
6098 #line 6099 "parser_bison.c" /* yacc.c:1646 */
6099  break;
6100 
6101  case 218:
6102 #line 1705 "parser_bison.y" /* yacc.c:1646 */
6103  {
6104  memset(&(yyval.handle), 0, sizeof((yyval.handle)));
6105  (yyval.handle).family = NFPROTO_UNSPEC;
6106  }
6107 #line 6108 "parser_bison.c" /* yacc.c:1646 */
6108  break;
6109 
6110  case 219:
6111 #line 1710 "parser_bison.y" /* yacc.c:1646 */
6112  {
6113  memset(&(yyval.handle), 0, sizeof((yyval.handle)));
6114  (yyval.handle).family = (yyvsp[0].val);
6115  }
6116 #line 6117 "parser_bison.c" /* yacc.c:1646 */
6117  break;
6118 
6119  case 220:
6120 #line 1717 "parser_bison.y" /* yacc.c:1646 */
6121  {
6122  (yyval.rule)->comment = NULL;
6123  }
6124 #line 6125 "parser_bison.c" /* yacc.c:1646 */
6125  break;
6126 
6127  case 221:
6128 #line 1721 "parser_bison.y" /* yacc.c:1646 */
6129  {
6130  (yyval.rule)->comment = (yyvsp[0].string);
6131  }
6132 #line 6133 "parser_bison.c" /* yacc.c:1646 */
6133  break;
6134 
6135  case 222:
6136 #line 1727 "parser_bison.y" /* yacc.c:1646 */
6137  {
6138  struct stmt *i;
6139 
6140  (yyval.rule) = rule_alloc(&(yyloc), NULL);
6141  list_for_each_entry(i, (yyvsp[0].list), list)
6142  (yyval.rule)->num_stmts++;
6143  list_splice_tail((yyvsp[0].list), &(yyval.rule)->stmts);
6144  xfree((yyvsp[0].list));
6145  }
6146 #line 6147 "parser_bison.c" /* yacc.c:1646 */
6147  break;
6148 
6149  case 223:
6150 #line 1739 "parser_bison.y" /* yacc.c:1646 */
6151  {
6152  (yyval.list) = xmalloc(sizeof(*(yyval.list)));
6153  init_list_head((yyval.list));
6154  list_add_tail(&(yyvsp[0].stmt)->list, (yyval.list));
6155  }
6156 #line 6157 "parser_bison.c" /* yacc.c:1646 */
6157  break;
6158 
6159  case 224:
6160 #line 1745 "parser_bison.y" /* yacc.c:1646 */
6161  {
6162  (yyval.list) = (yyvsp[-1].list);
6163  list_add_tail(&(yyvsp[0].stmt)->list, (yyvsp[-1].list));
6164  }
6165 #line 6166 "parser_bison.c" /* yacc.c:1646 */
6166  break;
6167 
6168  case 243:
6169 #line 1772 "parser_bison.y" /* yacc.c:1646 */
6170  {
6171  (yyval.stmt) = verdict_stmt_alloc(&(yyloc), (yyvsp[0].expr));
6172  }
6173 #line 6174 "parser_bison.c" /* yacc.c:1646 */
6174  break;
6175 
6176  case 244:
6177 #line 1776 "parser_bison.y" /* yacc.c:1646 */
6178  {
6179  (yyval.stmt) = verdict_stmt_alloc(&(yyloc), (yyvsp[0].expr));
6180  }
6181 #line 6182 "parser_bison.c" /* yacc.c:1646 */
6182  break;
6183 
6184  case 245:
6185 #line 1782 "parser_bison.y" /* yacc.c:1646 */
6186  {
6187  (yyval.expr) = map_expr_alloc(&(yyloc), (yyvsp[-2].expr), (yyvsp[0].expr));
6188  }
6189 #line 6190 "parser_bison.c" /* yacc.c:1646 */
6190  break;
6191 
6192  case 246:
6193 #line 1788 "parser_bison.y" /* yacc.c:1646 */
6194  {
6195  (yyvsp[-1].expr)->location = (yyloc);
6196  (yyval.expr) = (yyvsp[-1].expr);
6197  }
6198 #line 6199 "parser_bison.c" /* yacc.c:1646 */
6199  break;
6200 
6201  case 247:
6202 #line 1793 "parser_bison.y" /* yacc.c:1646 */
6203  {
6204  (yyval.expr) = symbol_expr_alloc(&(yyloc), SYMBOL_SET,
6205  current_scope(state),
6206  (yyvsp[0].string));
6207  xfree((yyvsp[0].string));
6208  }
6209 #line 6210 "parser_bison.c" /* yacc.c:1646 */
6210  break;
6211 
6212  case 248:
6213 #line 1802 "parser_bison.y" /* yacc.c:1646 */
6214  {
6215  (yyval.expr) = set_expr_alloc(&(yyloc), NULL);
6216  compound_expr_add((yyval.expr), (yyvsp[0].expr));
6217  }
6218 #line 6219 "parser_bison.c" /* yacc.c:1646 */
6219  break;
6220 
6221  case 249:
6222 #line 1807 "parser_bison.y" /* yacc.c:1646 */
6223  {
6224  compound_expr_add((yyvsp[-2].expr), (yyvsp[0].expr));
6225  (yyval.expr) = (yyvsp[-2].expr);
6226  }
6227 #line 6228 "parser_bison.c" /* yacc.c:1646 */
6228  break;
6229 
6230  case 251:
6231 #line 1815 "parser_bison.y" /* yacc.c:1646 */
6232  {
6233  (yyval.expr) = mapping_expr_alloc(&(yyloc), (yyvsp[-3].expr), (yyvsp[-1].expr));
6234  }
6235 #line 6236 "parser_bison.c" /* yacc.c:1646 */
6236  break;
6237 
6238  case 254:
6239 #line 1824 "parser_bison.y" /* yacc.c:1646 */
6240  {
6241  (yyval.stmt) = counter_stmt_alloc(&(yyloc));
6242  }
6243 #line 6244 "parser_bison.c" /* yacc.c:1646 */
6244  break;
6245 
6246  case 255:
6247 #line 1828 "parser_bison.y" /* yacc.c:1646 */
6248  {
6249  (yyval.stmt) = objref_stmt_alloc(&(yyloc));
6250  (yyval.stmt)->objref.type = NFT_OBJECT_COUNTER;
6251  (yyval.stmt)->objref.expr = (yyvsp[0].expr);
6252  }
6253 #line 6254 "parser_bison.c" /* yacc.c:1646 */
6254  break;
6255 
6256  case 256:
6257 #line 1836 "parser_bison.y" /* yacc.c:1646 */
6258  {
6259  (yyval.stmt) = (yyvsp[-1].stmt);
6260  }
6261 #line 6262 "parser_bison.c" /* yacc.c:1646 */
6262  break;
6263 
6264  case 258:
6265 #line 1843 "parser_bison.y" /* yacc.c:1646 */
6266  {
6267  (yyvsp[-2].stmt)->counter.packets = (yyvsp[0].val);
6268  }
6269 #line 6270 "parser_bison.c" /* yacc.c:1646 */
6270  break;
6271 
6272  case 259:
6273 #line 1847 "parser_bison.y" /* yacc.c:1646 */
6274  {
6275  (yyvsp[-2].stmt)->counter.bytes = (yyvsp[0].val);
6276  }
6277 #line 6278 "parser_bison.c" /* yacc.c:1646 */
6278  break;
6279 
6280  case 262:
6281 #line 1857 "parser_bison.y" /* yacc.c:1646 */
6282  {
6283  (yyval.stmt) = log_stmt_alloc(&(yyloc));
6284  }
6285 #line 6286 "parser_bison.c" /* yacc.c:1646 */
6286  break;
6287 
6288  case 263:
6289 #line 1863 "parser_bison.y" /* yacc.c:1646 */
6290  {
6291  (yyval.stmt) = (yyvsp[-1].stmt);
6292  }
6293 #line 6294 "parser_bison.c" /* yacc.c:1646 */
6294  break;
6295 
6296  case 265:
6297 #line 1870 "parser_bison.y" /* yacc.c:1646 */
6298  {
6299  (yyvsp[-2].stmt)->log.prefix = (yyvsp[0].string);
6300  (yyvsp[-2].stmt)->log.flags |= STMT_LOG_PREFIX;
6301  }
6302 #line 6303 "parser_bison.c" /* yacc.c:1646 */
6303  break;
6304 
6305  case 266:
6306 #line 1875 "parser_bison.y" /* yacc.c:1646 */
6307  {
6308  (yyvsp[-2].stmt)->log.group = (yyvsp[0].val);
6309  (yyvsp[-2].stmt)->log.flags |= STMT_LOG_GROUP;
6310  }
6311 #line 6312 "parser_bison.c" /* yacc.c:1646 */
6312  break;
6313 
6314  case 267:
6315 #line 1880 "parser_bison.y" /* yacc.c:1646 */
6316  {
6317  (yyvsp[-2].stmt)->log.snaplen = (yyvsp[0].val);
6318  (yyvsp[-2].stmt)->log.flags |= STMT_LOG_SNAPLEN;
6319  }
6320 #line 6321 "parser_bison.c" /* yacc.c:1646 */
6321  break;
6322 
6323  case 268:
6324 #line 1885 "parser_bison.y" /* yacc.c:1646 */
6325  {
6326  (yyvsp[-2].stmt)->log.qthreshold = (yyvsp[0].val);
6327  (yyvsp[-2].stmt)->log.flags |= STMT_LOG_QTHRESHOLD;
6328  }
6329 #line 6330 "parser_bison.c" /* yacc.c:1646 */
6330  break;
6331 
6332  case 269:
6333 #line 1890 "parser_bison.y" /* yacc.c:1646 */
6334  {
6335  (yyvsp[-2].stmt)->log.level = (yyvsp[0].val);
6336  (yyvsp[-2].stmt)->log.flags |= STMT_LOG_LEVEL;
6337  }
6338 #line 6339 "parser_bison.c" /* yacc.c:1646 */
6339  break;
6340 
6341  case 270:
6342 #line 1895 "parser_bison.y" /* yacc.c:1646 */
6343  {
6344  (yyvsp[-2].stmt)->log.logflags |= (yyvsp[0].val);
6345  }
6346 #line 6347 "parser_bison.c" /* yacc.c:1646 */
6347  break;
6348 
6349  case 271:
6350 #line 1901 "parser_bison.y" /* yacc.c:1646 */
6351  {
6352  if (!strcmp("emerg", (yyvsp[0].string)))
6353  (yyval.val) = LOG_EMERG;
6354  else if (!strcmp("alert", (yyvsp[0].string)))
6355  (yyval.val) = LOG_ALERT;
6356  else if (!strcmp("crit", (yyvsp[0].string)))
6357  (yyval.val) = LOG_CRIT;
6358  else if (!strcmp("err", (yyvsp[0].string)))
6359  (yyval.val) = LOG_ERR;
6360  else if (!strcmp("warn", (yyvsp[0].string)))
6361  (yyval.val) = LOG_WARNING;
6362  else if (!strcmp("notice", (yyvsp[0].string)))
6363  (yyval.val) = LOG_NOTICE;
6364  else if (!strcmp("info", (yyvsp[0].string)))
6365  (yyval.val) = LOG_INFO;
6366  else if (!strcmp("debug", (yyvsp[0].string)))
6367  (yyval.val) = LOG_DEBUG;
6368  else {
6369  erec_queue(error(&(yylsp[0]), "invalid log level", (yyvsp[0].string)),
6370  state->msgs);
6371  YYERROR;
6372  }
6373  }
6374 #line 6375 "parser_bison.c" /* yacc.c:1646 */
6375  break;
6376 
6377  case 272:
6378 #line 1927 "parser_bison.y" /* yacc.c:1646 */
6379  {
6380  (yyval.val) = (yyvsp[0].val);
6381  }
6382 #line 6383 "parser_bison.c" /* yacc.c:1646 */
6383  break;
6384 
6385  case 273:
6386 #line 1931 "parser_bison.y" /* yacc.c:1646 */
6387  {
6388  (yyval.val) = NF_LOG_IPOPT;
6389  }
6390 #line 6391 "parser_bison.c" /* yacc.c:1646 */
6391  break;
6392 
6393  case 274:
6394 #line 1935 "parser_bison.y" /* yacc.c:1646 */
6395  {
6396  (yyval.val) = NF_LOG_UID;
6397  }
6398 #line 6399 "parser_bison.c" /* yacc.c:1646 */
6399  break;
6400 
6401  case 275:
6402 #line 1939 "parser_bison.y" /* yacc.c:1646 */
6403  {
6404  (yyval.val) = NF_LOG_MACDECODE;
6405  }
6406 #line 6407 "parser_bison.c" /* yacc.c:1646 */
6407  break;
6408 
6409  case 276:
6410 #line 1943 "parser_bison.y" /* yacc.c:1646 */
6411  {
6412  (yyval.val) = NF_LOG_MASK;
6413  }
6414 #line 6415 "parser_bison.c" /* yacc.c:1646 */
6415  break;
6416 
6417  case 277:
6418 #line 1949 "parser_bison.y" /* yacc.c:1646 */
6419  {
6420  (yyval.val) = (yyvsp[-2].val) | (yyvsp[0].val);
6421  }
6422 #line 6423 "parser_bison.c" /* yacc.c:1646 */
6423  break;
6424 
6425  case 279:
6426 #line 1956 "parser_bison.y" /* yacc.c:1646 */
6427  {
6428  (yyval.val) = NF_LOG_TCPSEQ;
6429  }
6430 #line 6431 "parser_bison.c" /* yacc.c:1646 */
6431  break;
6432 
6433  case 280:
6434 #line 1960 "parser_bison.y" /* yacc.c:1646 */
6435  {
6436  (yyval.val) = NF_LOG_TCPOPT;
6437  }
6438 #line 6439 "parser_bison.c" /* yacc.c:1646 */
6439  break;
6440 
6441  case 281:
6442 #line 1966 "parser_bison.y" /* yacc.c:1646 */
6443  {
6444  (yyval.stmt) = limit_stmt_alloc(&(yyloc));
6445  (yyval.stmt)->limit.rate = (yyvsp[-3].val);
6446  (yyval.stmt)->limit.unit = (yyvsp[-1].val);
6447  (yyval.stmt)->limit.burst = (yyvsp[0].val);
6448  (yyval.stmt)->limit.type = NFT_LIMIT_PKTS;
6449  (yyval.stmt)->limit.flags = (yyvsp[-4].val);
6450  }
6451 #line 6452 "parser_bison.c" /* yacc.c:1646 */
6452  break;
6453 
6454  case 282:
6455 #line 1975 "parser_bison.y" /* yacc.c:1646 */
6456  {
6457  struct error_record *erec;
6458  uint64_t rate, unit;
6459 
6460  erec = rate_parse(&(yyloc), (yyvsp[-1].string), &rate, &unit);
6461  if (erec != NULL) {
6462  erec_queue(erec, state->msgs);
6463  YYERROR;
6464  }
6465 
6466  (yyval.stmt) = limit_stmt_alloc(&(yyloc));
6467  (yyval.stmt)->limit.rate = rate * (yyvsp[-2].val);
6468  (yyval.stmt)->limit.unit = unit;
6469  (yyval.stmt)->limit.burst = (yyvsp[0].val);
6470  (yyval.stmt)->limit.type = NFT_LIMIT_PKT_BYTES;
6471  (yyval.stmt)->limit.flags = (yyvsp[-3].val);
6472  }
6473 #line 6474 "parser_bison.c" /* yacc.c:1646 */
6474  break;
6475 
6476  case 283:
6477 #line 1994 "parser_bison.y" /* yacc.c:1646 */
6478  { (yyval.val) = NFT_QUOTA_F_INV; }
6479 #line 6480 "parser_bison.c" /* yacc.c:1646 */
6480  break;
6481 
6482  case 284:
6483 #line 1995 "parser_bison.y" /* yacc.c:1646 */
6484  { (yyval.val) = 0; }
6485 #line 6486 "parser_bison.c" /* yacc.c:1646 */
6486  break;
6487 
6488  case 285:
6489 #line 1996 "parser_bison.y" /* yacc.c:1646 */
6490  { (yyval.val) = 0; }
6491 #line 6492 "parser_bison.c" /* yacc.c:1646 */
6492  break;
6493 
6494  case 286:
6495 #line 1999 "parser_bison.y" /* yacc.c:1646 */
6496  { (yyval.string) = xstrdup("bytes"); }
6497 #line 6498 "parser_bison.c" /* yacc.c:1646 */
6498  break;
6499 
6500  case 287:
6501 #line 2000 "parser_bison.y" /* yacc.c:1646 */
6502  { (yyval.string) = (yyvsp[0].string); }
6503 #line 6504 "parser_bison.c" /* yacc.c:1646 */
6504  break;
6505 
6506  case 288:
6507 #line 2003 "parser_bison.y" /* yacc.c:1646 */
6508  { (yyval.val) = 0; }
6509 #line 6510 "parser_bison.c" /* yacc.c:1646 */
6510  break;
6511 
6512  case 289:
6513 #line 2005 "parser_bison.y" /* yacc.c:1646 */
6514  {
6515  struct error_record *erec;
6516  uint64_t rate;
6517 
6518  erec = data_unit_parse(&(yyloc), (yyvsp[0].string), &rate);
6519  if (erec != NULL) {
6520  erec_queue(erec, state->msgs);
6521  YYERROR;
6522  }
6523  (yyval.val) = (yyvsp[-1].val) * rate;
6524  }
6525 #line 6526 "parser_bison.c" /* yacc.c:1646 */
6526  break;
6527 
6528  case 290:
6529 #line 2019 "parser_bison.y" /* yacc.c:1646 */
6530  {
6531  struct error_record *erec;
6532  uint64_t rate;
6533 
6534  erec = data_unit_parse(&(yyloc), (yyvsp[-1].string), &rate);
6535  if (erec != NULL) {
6536  erec_queue(erec, state->msgs);
6537  YYERROR;
6538  }
6539  (yyval.stmt) = quota_stmt_alloc(&(yyloc));
6540  (yyval.stmt)->quota.bytes = (yyvsp[-2].val) * rate;
6541  (yyval.stmt)->quota.used = (yyvsp[0].val);
6542  (yyval.stmt)->quota.flags = (yyvsp[-3].val);
6543  }
6544 #line 6545 "parser_bison.c" /* yacc.c:1646 */
6545  break;
6546 
6547  case 291:
6548 #line 2034 "parser_bison.y" /* yacc.c:1646 */
6549  {
6550  (yyval.stmt) = objref_stmt_alloc(&(yyloc));
6551  (yyval.stmt)->objref.type = NFT_OBJECT_QUOTA;
6552  (yyval.stmt)->objref.expr = (yyvsp[0].expr);
6553  }
6554 #line 6555 "parser_bison.c" /* yacc.c:1646 */
6555  break;
6556 
6557  case 292:
6558 #line 2041 "parser_bison.y" /* yacc.c:1646 */
6559  { (yyval.val) = NFT_LIMIT_F_INV; }
6560 #line 6561 "parser_bison.c" /* yacc.c:1646 */
6561  break;
6562 
6563  case 293:
6564 #line 2042 "parser_bison.y" /* yacc.c:1646 */
6565  { (yyval.val) = 0; }
6566 #line 6567 "parser_bison.c" /* yacc.c:1646 */
6567  break;
6568 
6569  case 294:
6570 #line 2043 "parser_bison.y" /* yacc.c:1646 */
6571  { (yyval.val) = 0; }
6572 #line 6573 "parser_bison.c" /* yacc.c:1646 */
6573  break;
6574 
6575  case 295:
6576 #line 2046 "parser_bison.y" /* yacc.c:1646 */
6577  { (yyval.val) = 0; }
6578 #line 6579 "parser_bison.c" /* yacc.c:1646 */
6579  break;
6580 
6581  case 296:
6582 #line 2047 "parser_bison.y" /* yacc.c:1646 */
6583  { (yyval.val) = (yyvsp[-1].val); }
6584 #line 6585 "parser_bison.c" /* yacc.c:1646 */
6585  break;
6586 
6587  case 297:
6588 #line 2048 "parser_bison.y" /* yacc.c:1646 */
6589  { (yyval.val) = (yyvsp[-1].val); }
6590 #line 6591 "parser_bison.c" /* yacc.c:1646 */
6591  break;
6592 
6593  case 298:
6594 #line 2050 "parser_bison.y" /* yacc.c:1646 */
6595  {
6596  struct error_record *erec;
6597  uint64_t rate;
6598 
6599  erec = data_unit_parse(&(yyloc), (yyvsp[0].string), &rate);
6600  if (erec != NULL) {
6601  erec_queue(erec, state->msgs);
6602  YYERROR;
6603  }
6604  (yyval.val) = (yyvsp[-1].val) * rate;
6605  }
6606 #line 6607 "parser_bison.c" /* yacc.c:1646 */
6607  break;
6608 
6609  case 299:
6610 #line 2063 "parser_bison.y" /* yacc.c:1646 */
6611  { (yyval.val) = 1ULL; }
6612 #line 6613 "parser_bison.c" /* yacc.c:1646 */
6613  break;
6614 
6615  case 300:
6616 #line 2064 "parser_bison.y" /* yacc.c:1646 */
6617  { (yyval.val) = 1ULL * 60; }
6618 #line 6619 "parser_bison.c" /* yacc.c:1646 */
6619  break;
6620 
6621  case 301:
6622 #line 2065 "parser_bison.y" /* yacc.c:1646 */
6623  { (yyval.val) = 1ULL * 60 * 60; }
6624 #line 6625 "parser_bison.c" /* yacc.c:1646 */
6625  break;
6626 
6627  case 302:
6628 #line 2066 "parser_bison.y" /* yacc.c:1646 */
6629  { (yyval.val) = 1ULL * 60 * 60 * 24; }
6630 #line 6631 "parser_bison.c" /* yacc.c:1646 */
6631  break;
6632 
6633  case 303:
6634 #line 2067 "parser_bison.y" /* yacc.c:1646 */
6635  { (yyval.val) = 1ULL * 60 * 60 * 24 * 7; }
6636 #line 6637 "parser_bison.c" /* yacc.c:1646 */
6637  break;
6638 
6639  case 305:
6640 #line 2074 "parser_bison.y" /* yacc.c:1646 */
6641  {
6642  (yyval.stmt) = reject_stmt_alloc(&(yyloc));
6643  }
6644 #line 6645 "parser_bison.c" /* yacc.c:1646 */
6645  break;
6646 
6647  case 306:
6648 #line 2080 "parser_bison.y" /* yacc.c:1646 */
6649  {
6650  (yyvsp[0].stmt)->reject.type = -1;
6651  (yyvsp[0].stmt)->reject.icmp_code = -1;
6652  }
6653 #line 6654 "parser_bison.c" /* yacc.c:1646 */
6654  break;
6655 
6656  case 307:
6657 #line 2085 "parser_bison.y" /* yacc.c:1646 */
6658  {
6659  (yyvsp[-4].stmt)->reject.family = NFPROTO_IPV4;
6660  (yyvsp[-4].stmt)->reject.type = NFT_REJECT_ICMP_UNREACH;
6661  (yyvsp[-4].stmt)->reject.expr =
6662  symbol_expr_alloc(&(yyloc), SYMBOL_VALUE,
6663  current_scope(state),
6664  (yyvsp[0].string));
6665  (yyvsp[-4].stmt)->reject.expr->dtype = &icmp_code_type;
6666  }
6667 #line 6668 "parser_bison.c" /* yacc.c:1646 */
6668  break;
6669 
6670  case 308:
6671 #line 2095 "parser_bison.y" /* yacc.c:1646 */
6672  {
6673  (yyvsp[-4].stmt)->reject.family = NFPROTO_IPV6;
6674  (yyvsp[-4].stmt)->reject.type = NFT_REJECT_ICMP_UNREACH;
6675  (yyvsp[-4].stmt)->reject.expr =
6676  symbol_expr_alloc(&(yyloc), SYMBOL_VALUE,
6677  current_scope(state),
6678  (yyvsp[0].string));
6679  (yyvsp[-4].stmt)->reject.expr->dtype = &icmpv6_code_type;
6680  }
6681 #line 6682 "parser_bison.c" /* yacc.c:1646 */
6682  break;
6683 
6684  case 309:
6685 #line 2105 "parser_bison.y" /* yacc.c:1646 */
6686  {
6687  (yyvsp[-4].stmt)->reject.type = NFT_REJECT_ICMPX_UNREACH;
6688  (yyvsp[-4].stmt)->reject.expr =
6689  symbol_expr_alloc(&(yyloc), SYMBOL_VALUE,
6690  current_scope(state),
6691  (yyvsp[0].string));
6692  (yyvsp[-4].stmt)->reject.expr->dtype = &icmpx_code_type;
6693  }
6694 #line 6695 "parser_bison.c" /* yacc.c:1646 */
6695  break;
6696 
6697  case 310:
6698 #line 2114 "parser_bison.y" /* yacc.c:1646 */
6699  {
6700  (yyvsp[-3].stmt)->reject.type = NFT_REJECT_TCP_RST;
6701  }
6702 #line 6703 "parser_bison.c" /* yacc.c:1646 */
6703  break;
6704 
6705  case 312:
6706 #line 2123 "parser_bison.y" /* yacc.c:1646 */
6707  {
6708  (yyval.stmt) = nat_stmt_alloc(&(yyloc));
6709  (yyval.stmt)->nat.type = NFT_NAT_SNAT;
6710  }
6711 #line 6712 "parser_bison.c" /* yacc.c:1646 */
6712  break;
6713 
6714  case 313:
6715 #line 2128 "parser_bison.y" /* yacc.c:1646 */
6716  {
6717  (yyval.stmt) = nat_stmt_alloc(&(yyloc));
6718  (yyval.stmt)->nat.type = NFT_NAT_DNAT;
6719  }
6720 #line 6721 "parser_bison.c" /* yacc.c:1646 */
6721  break;
6722 
6723  case 315:
6724 #line 2136 "parser_bison.y" /* yacc.c:1646 */
6725  {
6726  if ((yyval.expr)->ops->type != EXPR_CONCAT) {
6727  (yyval.expr) = concat_expr_alloc(&(yyloc));
6728  compound_expr_add((yyval.expr), (yyvsp[-2].expr));
6729  } else {
6730  struct location rhs[] = {
6731  [1] = (yylsp[-1]),
6732  [2] = (yylsp[0]),
6733  };
6734  location_update(&(yyvsp[0].expr)->location, rhs, 2);
6735 
6736  (yyval.expr) = (yyvsp[-2].expr);
6737  (yyval.expr)->location = (yyloc);
6738  }
6739  compound_expr_add((yyval.expr), (yyvsp[0].expr));
6740  }
6741 #line 6742 "parser_bison.c" /* yacc.c:1646 */
6742  break;
6743 
6744  case 316:
6745 #line 2155 "parser_bison.y" /* yacc.c:1646 */
6746  {
6747  (yyval.expr) = map_expr_alloc(&(yyloc), (yyvsp[-2].expr), (yyvsp[0].expr));
6748  }
6749 #line 6750 "parser_bison.c" /* yacc.c:1646 */
6750  break;
6751 
6752  case 320:
6753 #line 2166 "parser_bison.y" /* yacc.c:1646 */
6754  {
6755  (yyvsp[-1].stmt)->nat.addr = (yyvsp[0].expr);
6756  }
6757 #line 6758 "parser_bison.c" /* yacc.c:1646 */
6758  break;
6759 
6760  case 321:
6761 #line 2170 "parser_bison.y" /* yacc.c:1646 */
6762  {
6763  (yyvsp[-2].stmt)->nat.addr = (yyvsp[0].expr);
6764  }
6765 #line 6766 "parser_bison.c" /* yacc.c:1646 */
6766  break;
6767 
6768  case 322:
6769 #line 2174 "parser_bison.y" /* yacc.c:1646 */
6770  {
6771  (yyvsp[-3].stmt)->nat.addr = (yyvsp[-2].expr);
6772  (yyvsp[-3].stmt)->nat.proto = (yyvsp[0].expr);
6773  }
6774 #line 6775 "parser_bison.c" /* yacc.c:1646 */
6775  break;
6776 
6777  case 323:
6778 #line 2179 "parser_bison.y" /* yacc.c:1646 */
6779  {
6780  (yyvsp[-4].stmt)->nat.addr = (yyvsp[-2].expr);
6781  (yyvsp[-4].stmt)->nat.proto = (yyvsp[0].expr);
6782  }
6783 #line 6784 "parser_bison.c" /* yacc.c:1646 */
6784  break;
6785 
6786  case 324:
6787 #line 2184 "parser_bison.y" /* yacc.c:1646 */
6788  {
6789  (yyvsp[-2].stmt)->nat.proto = (yyvsp[0].expr);
6790  }
6791 #line 6792 "parser_bison.c" /* yacc.c:1646 */
6792  break;
6793 
6794  case 325:
6795 #line 2188 "parser_bison.y" /* yacc.c:1646 */
6796  {
6797  (yyvsp[-3].stmt)->nat.proto = (yyvsp[0].expr);
6798  }
6799 #line 6800 "parser_bison.c" /* yacc.c:1646 */
6800  break;
6801 
6802  case 326:
6803 #line 2192 "parser_bison.y" /* yacc.c:1646 */
6804  {
6805  (yyvsp[-2].stmt)->nat.flags = (yyvsp[0].val);
6806  }
6807 #line 6808 "parser_bison.c" /* yacc.c:1646 */
6808  break;
6809 
6810  case 329:
6811 #line 2201 "parser_bison.y" /* yacc.c:1646 */
6812  { (yyval.stmt) = masq_stmt_alloc(&(yyloc)); }
6813 #line 6814 "parser_bison.c" /* yacc.c:1646 */
6814  break;
6815 
6816  case 330:
6817 #line 2205 "parser_bison.y" /* yacc.c:1646 */
6818  {
6819  (yyvsp[-3].stmt)->masq.proto = (yyvsp[0].expr);
6820  }
6821 #line 6822 "parser_bison.c" /* yacc.c:1646 */
6822  break;
6823 
6824  case 331:
6825 #line 2209 "parser_bison.y" /* yacc.c:1646 */
6826  {
6827  (yyvsp[-4].stmt)->masq.proto = (yyvsp[-1].expr);
6828  (yyvsp[-4].stmt)->masq.flags = (yyvsp[0].val);
6829  }
6830 #line 6831 "parser_bison.c" /* yacc.c:1646 */
6831  break;
6832 
6833  case 332:
6834 #line 2214 "parser_bison.y" /* yacc.c:1646 */
6835  {
6836  (yyvsp[-1].stmt)->masq.flags = (yyvsp[0].val);
6837  }
6838 #line 6839 "parser_bison.c" /* yacc.c:1646 */
6839  break;
6840 
6841  case 335:
6842 #line 2223 "parser_bison.y" /* yacc.c:1646 */
6843  { (yyval.stmt) = redir_stmt_alloc(&(yyloc)); }
6844 #line 6845 "parser_bison.c" /* yacc.c:1646 */
6845  break;
6846 
6847  case 336:
6848 #line 2227 "parser_bison.y" /* yacc.c:1646 */
6849  {
6850  (yyvsp[-2].stmt)->redir.proto = (yyvsp[0].expr);
6851  }
6852 #line 6853 "parser_bison.c" /* yacc.c:1646 */
6853  break;
6854 
6855  case 337:
6856 #line 2231 "parser_bison.y" /* yacc.c:1646 */
6857  {
6858  (yyvsp[-3].stmt)->redir.proto = (yyvsp[0].expr);
6859  }
6860 #line 6861 "parser_bison.c" /* yacc.c:1646 */
6861  break;
6862 
6863  case 338:
6864 #line 2235 "parser_bison.y" /* yacc.c:1646 */
6865  {
6866  (yyvsp[-1].stmt)->redir.flags = (yyvsp[0].val);
6867  }
6868 #line 6869 "parser_bison.c" /* yacc.c:1646 */
6869  break;
6870 
6871  case 339:
6872 #line 2239 "parser_bison.y" /* yacc.c:1646 */
6873  {
6874  (yyvsp[-3].stmt)->redir.proto = (yyvsp[-1].expr);
6875  (yyvsp[-3].stmt)->redir.flags = (yyvsp[0].val);
6876  }
6877 #line 6878 "parser_bison.c" /* yacc.c:1646 */
6878  break;
6879 
6880  case 340:
6881 #line 2244 "parser_bison.y" /* yacc.c:1646 */
6882  {
6883  (yyvsp[-4].stmt)->redir.proto = (yyvsp[-1].expr);
6884  (yyvsp[-4].stmt)->redir.flags = (yyvsp[0].val);
6885  }
6886 #line 6887 "parser_bison.c" /* yacc.c:1646 */
6887  break;
6888 
6889  case 341:
6890 #line 2251 "parser_bison.y" /* yacc.c:1646 */
6891  {
6892  (yyval.stmt) = dup_stmt_alloc(&(yyloc));
6893  (yyval.stmt)->dup.to = (yyvsp[0].expr);
6894  }
6895 #line 6896 "parser_bison.c" /* yacc.c:1646 */
6896  break;
6897 
6898  case 342:
6899 #line 2256 "parser_bison.y" /* yacc.c:1646 */
6900  {
6901  (yyval.stmt) = dup_stmt_alloc(&(yyloc));
6902  (yyval.stmt)->dup.to = (yyvsp[-2].expr);
6903  (yyval.stmt)->dup.dev = (yyvsp[0].expr);
6904  }
6905 #line 6906 "parser_bison.c" /* yacc.c:1646 */
6906  break;
6907 
6908  case 343:
6909 #line 2264 "parser_bison.y" /* yacc.c:1646 */
6910  {
6911  (yyval.stmt) = fwd_stmt_alloc(&(yyloc));
6912  (yyval.stmt)->fwd.to = (yyvsp[0].expr);
6913  }
6914 #line 6915 "parser_bison.c" /* yacc.c:1646 */
6915  break;
6916 
6917  case 345:
6918 #line 2272 "parser_bison.y" /* yacc.c:1646 */
6919  {
6920  (yyval.val) = (yyvsp[-2].val) | (yyvsp[0].val);
6921  }
6922 #line 6923 "parser_bison.c" /* yacc.c:1646 */
6923  break;
6924 
6925  case 346:
6926 #line 2277 "parser_bison.y" /* yacc.c:1646 */
6927  { (yyval.val) = NF_NAT_RANGE_PROTO_RANDOM; }
6928 #line 6929 "parser_bison.c" /* yacc.c:1646 */
6929  break;
6930 
6931  case 347:
6932 #line 2278 "parser_bison.y" /* yacc.c:1646 */
6933  { (yyval.val) = NF_NAT_RANGE_PROTO_RANDOM_FULLY; }
6934 #line 6935 "parser_bison.c" /* yacc.c:1646 */
6935  break;
6936 
6937  case 348:
6938 #line 2279 "parser_bison.y" /* yacc.c:1646 */
6939  { (yyval.val) = NF_NAT_RANGE_PERSISTENT; }
6940 #line 6941 "parser_bison.c" /* yacc.c:1646 */
6941  break;
6942 
6943  case 351:
6944 #line 2287 "parser_bison.y" /* yacc.c:1646 */
6945  {
6946  (yyval.stmt) = queue_stmt_alloc(&(yyloc));
6947  }
6948 #line 6949 "parser_bison.c" /* yacc.c:1646 */
6949  break;
6950 
6951  case 352:
6952 #line 2293 "parser_bison.y" /* yacc.c:1646 */
6953  {
6954  (yyval.stmt) = (yyvsp[-1].stmt);
6955  }
6956 #line 6957 "parser_bison.c" /* yacc.c:1646 */
6957  break;
6958 
6959  case 354:
6960 #line 2300 "parser_bison.y" /* yacc.c:1646 */
6961  {
6962  (yyvsp[-2].stmt)->queue.queue = (yyvsp[0].expr);
6963  (yyvsp[-2].stmt)->queue.queue->location = (yyloc);
6964  }
6965 #line 6966 "parser_bison.c" /* yacc.c:1646 */
6966  break;
6967 
6968  case 355:
6969 #line 2305 "parser_bison.y" /* yacc.c:1646 */
6970  {
6971  (yyvsp[-1].stmt)->queue.flags |= (yyvsp[0].val);
6972  }
6973 #line 6974 "parser_bison.c" /* yacc.c:1646 */
6974  break;
6975 
6976  case 357:
6977 #line 2312 "parser_bison.y" /* yacc.c:1646 */
6978  {
6979  (yyval.val) = (yyvsp[-2].val) | (yyvsp[0].val);
6980  }
6981 #line 6982 "parser_bison.c" /* yacc.c:1646 */
6982  break;
6983 
6984  case 358:
6985 #line 2317 "parser_bison.y" /* yacc.c:1646 */
6986  { (yyval.val) = NFT_QUEUE_FLAG_BYPASS; }
6987 #line 6988 "parser_bison.c" /* yacc.c:1646 */
6988  break;
6989 
6990  case 359:
6991 #line 2318 "parser_bison.y" /* yacc.c:1646 */
6992  { (yyval.val) = NFT_QUEUE_FLAG_CPU_FANOUT; }
6993 #line 6994 "parser_bison.c" /* yacc.c:1646 */
6994  break;
6995 
6996  case 362:
6997 #line 2326 "parser_bison.y" /* yacc.c:1646 */
6998  {
6999  (yyval.expr) = set_elem_expr_alloc(&(yylsp[0]), (yyvsp[0].expr));
7000  }
7001 #line 7002 "parser_bison.c" /* yacc.c:1646 */
7002  break;
7003 
7004  case 363:
7005 #line 2332 "parser_bison.y" /* yacc.c:1646 */
7006  {
7007  (yyval.stmt) = set_stmt_alloc(&(yyloc));
7008  (yyval.stmt)->set.op = (yyvsp[-2].val);
7009  (yyval.stmt)->set.key = (yyvsp[-1].expr);
7010  (yyval.stmt)->set.set = (yyvsp[0].expr);
7011  }
7012 #line 7013 "parser_bison.c" /* yacc.c:1646 */
7013  break;
7014 
7015  case 364:
7016 #line 2340 "parser_bison.y" /* yacc.c:1646 */
7017  { (yyval.val) = NFT_DYNSET_OP_ADD; }
7018 #line 7019 "parser_bison.c" /* yacc.c:1646 */
7019  break;
7020 
7021  case 365:
7022 #line 2341 "parser_bison.y" /* yacc.c:1646 */
7023  { (yyval.val) = NFT_DYNSET_OP_UPDATE; }
7024 #line 7025 "parser_bison.c" /* yacc.c:1646 */
7025  break;
7026 
7027  case 366:
7028 #line 2345 "parser_bison.y" /* yacc.c:1646 */
7029  {
7030  (yyvsp[-5].stmt)->flow.key = (yyvsp[-2].expr);
7031  (yyvsp[-5].stmt)->flow.stmt = (yyvsp[-1].stmt);
7032  (yyval.stmt)->location = (yyloc);
7033  (yyval.stmt) = (yyvsp[-5].stmt);
7034  }
7035 #line 7036 "parser_bison.c" /* yacc.c:1646 */
7036  break;
7037 
7038  case 367:
7039 #line 2352 "parser_bison.y" /* yacc.c:1646 */
7040  {
7041  (yyvsp[-4].stmt)->flow.key = (yyvsp[-2].expr);
7042  (yyvsp[-4].stmt)->flow.stmt = (yyvsp[-1].stmt);
7043  (yyval.stmt)->location = (yyloc);
7044  (yyval.stmt) = (yyvsp[-4].stmt);
7045  }
7046 #line 7047 "parser_bison.c" /* yacc.c:1646 */
7047  break;
7048 
7049  case 368:
7050 #line 2361 "parser_bison.y" /* yacc.c:1646 */
7051  {
7052  (yyval.stmt) = flow_stmt_alloc(&(yyloc));
7053  }
7054 #line 7055 "parser_bison.c" /* yacc.c:1646 */
7055  break;
7056 
7057  case 369:
7058 #line 2367 "parser_bison.y" /* yacc.c:1646 */
7059  {
7060  (yyval.stmt) = (yyvsp[-1].stmt);
7061  }
7062 #line 7063 "parser_bison.c" /* yacc.c:1646 */
7063  break;
7064 
7065  case 371:
7066 #line 2374 "parser_bison.y" /* yacc.c:1646 */
7067  {
7068  (yyvsp[-2].stmt)->flow.table = (yyvsp[0].string);
7069  }
7070 #line 7071 "parser_bison.c" /* yacc.c:1646 */
7071  break;
7072 
7073  case 372:
7074 #line 2380 "parser_bison.y" /* yacc.c:1646 */
7075  {
7076  (yyval.stmt) = expr_stmt_alloc(&(yyloc), (yyvsp[0].expr));
7077  }
7078 #line 7079 "parser_bison.c" /* yacc.c:1646 */
7079  break;
7080 
7081  case 373:
7082 #line 2386 "parser_bison.y" /* yacc.c:1646 */
7083  {
7084  struct scope *scope = current_scope(state);
7085 
7086  if (symbol_lookup(scope, (yyvsp[0].string)) == NULL) {
7087  erec_queue(error(&(yylsp[0]), "unknown identifier '%s'", (yyvsp[0].string)),
7088  state->msgs);
7089  YYERROR;
7090  }
7091 
7092  (yyval.expr) = symbol_expr_alloc(&(yyloc), SYMBOL_DEFINE,
7093  scope, (yyvsp[0].string));
7094  xfree((yyvsp[0].string));
7095  }
7096 #line 7097 "parser_bison.c" /* yacc.c:1646 */
7097  break;
7098 
7099  case 375:
7100 #line 2403 "parser_bison.y" /* yacc.c:1646 */
7101  {
7102  (yyval.expr) = symbol_expr_alloc(&(yyloc), SYMBOL_VALUE,
7103  current_scope(state),
7104  (yyvsp[0].string));
7105  xfree((yyvsp[0].string));
7106  }
7107 #line 7108 "parser_bison.c" /* yacc.c:1646 */
7108  break;
7109 
7110  case 376:
7111 #line 2410 "parser_bison.y" /* yacc.c:1646 */
7112  {
7113  (yyval.expr) = symbol_expr_alloc(&(yyloc), SYMBOL_SET,
7114  current_scope(state),
7115  (yyvsp[0].string));
7116  xfree((yyvsp[0].string));
7117  }
7118 #line 7119 "parser_bison.c" /* yacc.c:1646 */
7119  break;
7120 
7121  case 377:
7122 #line 2419 "parser_bison.y" /* yacc.c:1646 */
7123  {
7124  char str[64];
7125 
7126  snprintf(str, sizeof(str), "%" PRIu64, (yyvsp[0].val));
7127  (yyval.expr) = symbol_expr_alloc(&(yyloc), SYMBOL_VALUE,
7128  current_scope(state),
7129  str);
7130  }
7131 #line 7132 "parser_bison.c" /* yacc.c:1646 */
7132  break;
7133 
7134  case 378:
7135 #line 2429 "parser_bison.y" /* yacc.c:1646 */
7136  { (yyval.expr) = (yyvsp[0].expr); }
7137 #line 7138 "parser_bison.c" /* yacc.c:1646 */
7138  break;
7139 
7140  case 379:
7141 #line 2430 "parser_bison.y" /* yacc.c:1646 */
7142  { (yyval.expr) = (yyvsp[0].expr); }
7143 #line 7144 "parser_bison.c" /* yacc.c:1646 */
7144  break;
7145 
7146  case 380:
7147 #line 2431 "parser_bison.y" /* yacc.c:1646 */
7148  { (yyval.expr) = (yyvsp[0].expr); }
7149 #line 7150 "parser_bison.c" /* yacc.c:1646 */
7150  break;
7151 
7152  case 381:
7153 #line 2432 "parser_bison.y" /* yacc.c:1646 */
7154  { (yyval.expr) = (yyvsp[0].expr); }
7155 #line 7156 "parser_bison.c" /* yacc.c:1646 */
7156  break;
7157 
7158  case 382:
7159 #line 2433 "parser_bison.y" /* yacc.c:1646 */
7160  { (yyval.expr) = (yyvsp[0].expr); }
7161 #line 7162 "parser_bison.c" /* yacc.c:1646 */
7162  break;
7163 
7164  case 383:
7165 #line 2434 "parser_bison.y" /* yacc.c:1646 */
7166  { (yyval.expr) = (yyvsp[0].expr); }
7167 #line 7168 "parser_bison.c" /* yacc.c:1646 */
7168  break;
7169 
7170  case 384:
7171 #line 2435 "parser_bison.y" /* yacc.c:1646 */
7172  { (yyval.expr) = (yyvsp[0].expr); }
7173 #line 7174 "parser_bison.c" /* yacc.c:1646 */
7174  break;
7175 
7176  case 385:
7177 #line 2436 "parser_bison.y" /* yacc.c:1646 */
7178  { (yyval.expr) = (yyvsp[0].expr); }
7179 #line 7180 "parser_bison.c" /* yacc.c:1646 */
7180  break;
7181 
7182  case 386:
7183 #line 2437 "parser_bison.y" /* yacc.c:1646 */
7184  { (yyval.expr) = (yyvsp[0].expr); }
7185 #line 7186 "parser_bison.c" /* yacc.c:1646 */
7186  break;
7187 
7188  case 387:
7189 #line 2438 "parser_bison.y" /* yacc.c:1646 */
7190  { (yyval.expr) = (yyvsp[0].expr); }
7191 #line 7192 "parser_bison.c" /* yacc.c:1646 */
7192  break;
7193 
7194  case 388:
7195 #line 2439 "parser_bison.y" /* yacc.c:1646 */
7196  { (yyval.expr) = (yyvsp[0].expr); }
7197 #line 7198 "parser_bison.c" /* yacc.c:1646 */
7198  break;
7199 
7200  case 389:
7201 #line 2440 "parser_bison.y" /* yacc.c:1646 */
7202  { (yyval.expr) = (yyvsp[-1].expr); }
7203 #line 7204 "parser_bison.c" /* yacc.c:1646 */
7204  break;
7205 
7206  case 390:
7207 #line 2444 "parser_bison.y" /* yacc.c:1646 */
7208  {
7209  if (((yyvsp[-1].val) & (NFTA_FIB_F_SADDR|NFTA_FIB_F_DADDR)) == 0) {
7210  erec_queue(error(&(yylsp[-1]), "fib: need either saddr or daddr"), state->msgs);
7211  YYERROR;
7212  }
7213 
7214  if (((yyvsp[-1].val) & (NFTA_FIB_F_SADDR|NFTA_FIB_F_DADDR)) ==
7215  (NFTA_FIB_F_SADDR|NFTA_FIB_F_DADDR)) {
7216  erec_queue(error(&(yylsp[-1]), "fib: saddr and daddr are mutually exclusive"), state->msgs);
7217  YYERROR;
7218  }
7219 
7220  if (((yyvsp[-1].val) & (NFTA_FIB_F_IIF|NFTA_FIB_F_OIF)) ==
7221  (NFTA_FIB_F_IIF|NFTA_FIB_F_OIF)) {
7222  erec_queue(error(&(yylsp[-1]), "fib: iif and oif are mutually exclusive"), state->msgs);
7223  YYERROR;
7224  }
7225 
7226  (yyval.expr) = fib_expr_alloc(&(yyloc), (yyvsp[-1].val), (yyvsp[0].val));
7227  }
7228 #line 7229 "parser_bison.c" /* yacc.c:1646 */
7229  break;
7230 
7231  case 391:
7232 #line 2466 "parser_bison.y" /* yacc.c:1646 */
7233  { (yyval.val) =NFT_FIB_RESULT_OIF; }
7234 #line 7235 "parser_bison.c" /* yacc.c:1646 */
7235  break;
7236 
7237  case 392:
7238 #line 2467 "parser_bison.y" /* yacc.c:1646 */
7239  { (yyval.val) =NFT_FIB_RESULT_OIFNAME; }
7240 #line 7241 "parser_bison.c" /* yacc.c:1646 */
7241  break;
7242 
7243  case 393:
7244 #line 2468 "parser_bison.y" /* yacc.c:1646 */
7245  { (yyval.val) =NFT_FIB_RESULT_ADDRTYPE; }
7246 #line 7247 "parser_bison.c" /* yacc.c:1646 */
7247  break;
7248 
7249  case 394:
7250 #line 2471 "parser_bison.y" /* yacc.c:1646 */
7251  { (yyval.val) = NFTA_FIB_F_SADDR; }
7252 #line 7253 "parser_bison.c" /* yacc.c:1646 */
7253  break;
7254 
7255  case 395:
7256 #line 2472 "parser_bison.y" /* yacc.c:1646 */
7257  { (yyval.val) = NFTA_FIB_F_DADDR; }
7258 #line 7259 "parser_bison.c" /* yacc.c:1646 */
7259  break;
7260 
7261  case 396:
7262 #line 2473 "parser_bison.y" /* yacc.c:1646 */
7263  { (yyval.val) = NFTA_FIB_F_MARK; }
7264 #line 7265 "parser_bison.c" /* yacc.c:1646 */
7265  break;
7266 
7267  case 397:
7268 #line 2474 "parser_bison.y" /* yacc.c:1646 */
7269  { (yyval.val) = NFTA_FIB_F_IIF; }
7270 #line 7271 "parser_bison.c" /* yacc.c:1646 */
7271  break;
7272 
7273  case 398:
7274 #line 2475 "parser_bison.y" /* yacc.c:1646 */
7275  { (yyval.val) = NFTA_FIB_F_OIF; }
7276 #line 7277 "parser_bison.c" /* yacc.c:1646 */
7277  break;
7278 
7279  case 399:
7280 #line 2479 "parser_bison.y" /* yacc.c:1646 */
7281  {
7282  (yyval.val) = (yyvsp[-2].val) | (yyvsp[0].val);
7283  }
7284 #line 7285 "parser_bison.c" /* yacc.c:1646 */
7285  break;
7286 
7287  case 402:
7288 #line 2487 "parser_bison.y" /* yacc.c:1646 */
7289  {
7290  (yyval.expr) = binop_expr_alloc(&(yyloc), OP_LSHIFT, (yyvsp[-2].expr), (yyvsp[0].expr));
7291  }
7292 #line 7293 "parser_bison.c" /* yacc.c:1646 */
7293  break;
7294 
7295  case 403:
7296 #line 2491 "parser_bison.y" /* yacc.c:1646 */
7297  {
7298  (yyval.expr) = binop_expr_alloc(&(yyloc), OP_RSHIFT, (yyvsp[-2].expr), (yyvsp[0].expr));
7299  }
7300 #line 7301 "parser_bison.c" /* yacc.c:1646 */
7301  break;
7302 
7303  case 405:
7304 #line 2498 "parser_bison.y" /* yacc.c:1646 */
7305  {
7306  (yyval.expr) = binop_expr_alloc(&(yyloc), OP_AND, (yyvsp[-2].expr), (yyvsp[0].expr));
7307  }
7308 #line 7309 "parser_bison.c" /* yacc.c:1646 */
7309  break;
7310 
7311  case 407:
7312 #line 2505 "parser_bison.y" /* yacc.c:1646 */
7313  {
7314  (yyval.expr) = binop_expr_alloc(&(yyloc), OP_XOR, (yyvsp[-2].expr), (yyvsp[0].expr));
7315  }
7316 #line 7317 "parser_bison.c" /* yacc.c:1646 */
7317  break;
7318 
7319  case 409:
7320 #line 2512 "parser_bison.y" /* yacc.c:1646 */
7321  {
7322  (yyval.expr) = binop_expr_alloc(&(yyloc), OP_OR, (yyvsp[-2].expr), (yyvsp[0].expr));
7323  }
7324 #line 7325 "parser_bison.c" /* yacc.c:1646 */
7325  break;
7326 
7327  case 412:
7328 #line 2522 "parser_bison.y" /* yacc.c:1646 */
7329  {
7330  if ((yyval.expr)->ops->type != EXPR_CONCAT) {
7331  (yyval.expr) = concat_expr_alloc(&(yyloc));
7332  compound_expr_add((yyval.expr), (yyvsp[-2].expr));
7333  } else {
7334  struct location rhs[] = {
7335  [1] = (yylsp[-1]),
7336  [2] = (yylsp[0]),
7337  };
7338  location_update(&(yyvsp[0].expr)->location, rhs, 2);
7339 
7340  (yyval.expr) = (yyvsp[-2].expr);
7341  (yyval.expr)->location = (yyloc);
7342  }
7343  compound_expr_add((yyval.expr), (yyvsp[0].expr));
7344  }
7345 #line 7346 "parser_bison.c" /* yacc.c:1646 */
7346  break;
7347 
7348  case 413:
7349 #line 2541 "parser_bison.y" /* yacc.c:1646 */
7350  {
7351  (yyval.expr) = prefix_expr_alloc(&(yyloc), (yyvsp[-2].expr), (yyvsp[0].val));
7352  }
7353 #line 7354 "parser_bison.c" /* yacc.c:1646 */
7354  break;
7355 
7356  case 414:
7357 #line 2547 "parser_bison.y" /* yacc.c:1646 */
7358  {
7359  (yyval.expr) = range_expr_alloc(&(yyloc), (yyvsp[-2].expr), (yyvsp[0].expr));
7360  }
7361 #line 7362 "parser_bison.c" /* yacc.c:1646 */
7362  break;
7363 
7364  case 415:
7365 #line 2553 "parser_bison.y" /* yacc.c:1646 */
7366  {
7367  struct expr *expr;
7368 
7369  expr = constant_expr_alloc(&(yyloc), &integer_type,
7370  BYTEORDER_HOST_ENDIAN,
7371  0, NULL);
7372  (yyval.expr) = prefix_expr_alloc(&(yyloc), expr, 0);
7373  }
7374 #line 7375 "parser_bison.c" /* yacc.c:1646 */
7375  break;
7376 
7377  case 419:
7378 #line 2569 "parser_bison.y" /* yacc.c:1646 */
7379  {
7380  (yyval.expr) = map_expr_alloc(&(yyloc), (yyvsp[-2].expr), (yyvsp[0].expr));
7381  }
7382 #line 7383 "parser_bison.c" /* yacc.c:1646 */
7383  break;
7384 
7385  case 423:
7386 #line 2580 "parser_bison.y" /* yacc.c:1646 */
7387  {
7388  (yyvsp[-1].expr)->location = (yyloc);
7389  (yyval.expr) = (yyvsp[-1].expr);
7390  }
7391 #line 7392 "parser_bison.c" /* yacc.c:1646 */
7392  break;
7393 
7394  case 424:
7395 #line 2587 "parser_bison.y" /* yacc.c:1646 */
7396  {
7397  (yyval.expr) = set_expr_alloc(&(yyloc), NULL);
7398  compound_expr_add((yyval.expr), (yyvsp[0].expr));
7399  }
7400 #line 7401 "parser_bison.c" /* yacc.c:1646 */
7401  break;
7402 
7403  case 425:
7404 #line 2592 "parser_bison.y" /* yacc.c:1646 */
7405  {
7406  compound_expr_add((yyvsp[-2].expr), (yyvsp[0].expr));
7407  (yyval.expr) = (yyvsp[-2].expr);
7408  }
7409 #line 7410 "parser_bison.c" /* yacc.c:1646 */
7410  break;
7411 
7412  case 427:
7413 #line 2600 "parser_bison.y" /* yacc.c:1646 */
7414  {
7415  (yyval.expr) = (yyvsp[-1].expr);
7416  }
7417 #line 7418 "parser_bison.c" /* yacc.c:1646 */
7418  break;
7419 
7420  case 428:
7421 #line 2604 "parser_bison.y" /* yacc.c:1646 */
7422  {
7423  (yyval.expr) = (yyvsp[-1].expr);
7424  }
7425 #line 7426 "parser_bison.c" /* yacc.c:1646 */
7426  break;
7427 
7428  case 429:
7429 #line 2608 "parser_bison.y" /* yacc.c:1646 */
7430  {
7431  (yyval.expr) = mapping_expr_alloc(&(yyloc), (yyvsp[-3].expr), (yyvsp[-1].expr));
7432  }
7433 #line 7434 "parser_bison.c" /* yacc.c:1646 */
7434  break;
7435 
7436  case 431:
7437 #line 2615 "parser_bison.y" /* yacc.c:1646 */
7438  {
7439  (yyval.expr)->location = (yyloc);
7440  (yyval.expr) = (yyvsp[-1].expr);
7441  }
7442 #line 7443 "parser_bison.c" /* yacc.c:1646 */
7443  break;
7444 
7445  case 432:
7446 #line 2622 "parser_bison.y" /* yacc.c:1646 */
7447  {
7448  (yyval.expr) = set_elem_expr_alloc(&(yylsp[0]), (yyvsp[0].expr));
7449  }
7450 #line 7451 "parser_bison.c" /* yacc.c:1646 */
7451  break;
7452 
7453  case 435:
7454 #line 2632 "parser_bison.y" /* yacc.c:1646 */
7455  {
7456  (yyval.expr) = set_elem_expr_alloc(&(yylsp[0]), (yyvsp[0].expr));
7457  }
7458 #line 7459 "parser_bison.c" /* yacc.c:1646 */
7459  break;
7460 
7461  case 436:
7462 #line 2638 "parser_bison.y" /* yacc.c:1646 */
7463  {
7464  (yyval.expr) = (yyvsp[-1].expr);
7465  }
7466 #line 7467 "parser_bison.c" /* yacc.c:1646 */
7467  break;
7468 
7469  case 438:
7470 #line 2645 "parser_bison.y" /* yacc.c:1646 */
7471  {
7472  (yyvsp[-2].expr)->timeout = (yyvsp[0].val) * 1000;
7473  }
7474 #line 7475 "parser_bison.c" /* yacc.c:1646 */
7475  break;
7476 
7477  case 439:
7478 #line 2649 "parser_bison.y" /* yacc.c:1646 */
7479  {
7480  (yyvsp[-1].expr)->comment = (yyvsp[0].string);
7481  }
7482 #line 7483 "parser_bison.c" /* yacc.c:1646 */
7483  break;
7484 
7485  case 446:
7486 #line 2667 "parser_bison.y" /* yacc.c:1646 */
7487  {
7488  struct counter *counter;
7489 
7490  counter = xzalloc(sizeof(*counter));
7491  counter->packets = (yyvsp[-2].val);
7492  counter->bytes = (yyvsp[0].val);
7493  (yyval.counter) = counter;
7494  }
7495 #line 7496 "parser_bison.c" /* yacc.c:1646 */
7496  break;
7497 
7498  case 447:
7499 #line 2678 "parser_bison.y" /* yacc.c:1646 */
7500  {
7501  (yyval.obj) = obj_alloc(&(yyloc));
7502  (yyval.obj)->type = NFT_OBJECT_COUNTER;
7503  (yyval.obj)->counter = *(yyvsp[0].counter);
7504  }
7505 #line 7506 "parser_bison.c" /* yacc.c:1646 */
7506  break;
7507 
7508  case 448:
7509 #line 2686 "parser_bison.y" /* yacc.c:1646 */
7510  {
7511  struct error_record *erec;
7512  struct quota *quota;
7513  uint64_t rate;
7514 
7515  erec = data_unit_parse(&(yyloc), (yyvsp[-1].string), &rate);
7516  if (erec != NULL) {
7517  erec_queue(erec, state->msgs);
7518  YYERROR;
7519  }
7520 
7521  quota = xzalloc(sizeof(*quota));
7522  quota->bytes = (yyvsp[-2].val) * rate;
7523  quota->used = (yyvsp[0].val);
7524  quota->flags = (yyvsp[-3].val);
7525  (yyval.quota) = quota;
7526  }
7527 #line 7528 "parser_bison.c" /* yacc.c:1646 */
7528  break;
7529 
7530  case 449:
7531 #line 2706 "parser_bison.y" /* yacc.c:1646 */
7532  {
7533  (yyval.obj) = obj_alloc(&(yyloc));
7534  (yyval.obj)->type = NFT_OBJECT_QUOTA;
7535  (yyval.obj)->quota = *(yyvsp[0].quota);
7536  }
7537 #line 7538 "parser_bison.c" /* yacc.c:1646 */
7538  break;
7539 
7540  case 450:
7541 #line 2713 "parser_bison.y" /* yacc.c:1646 */
7542  { (yyval.string) = (yyvsp[0].string); }
7543 #line 7544 "parser_bison.c" /* yacc.c:1646 */
7544  break;
7545 
7546  case 451:
7547 #line 2716 "parser_bison.y" /* yacc.c:1646 */
7548  { (yyval.val) = IPPROTO_TCP; }
7549 #line 7550 "parser_bison.c" /* yacc.c:1646 */
7550  break;
7551 
7552  case 452:
7553 #line 2717 "parser_bison.y" /* yacc.c:1646 */
7554  { (yyval.val) = IPPROTO_UDP; }
7555 #line 7556 "parser_bison.c" /* yacc.c:1646 */
7556  break;
7557 
7558  case 453:
7559 #line 2721 "parser_bison.y" /* yacc.c:1646 */
7560  {
7561  struct ct_helper *ct;
7562  int ret;
7563 
7564  ct = &(yyvsp[-5].obj)->ct_helper;
7565 
7566  ret = snprintf(ct->name, sizeof(ct->name), "%s", (yyvsp[-3].string));
7567  if (ret <= 0 || ret >= (int)sizeof(ct->name)) {
7568  erec_queue(error(&(yylsp[-3]), "invalid name '%s', max length is %u\n", (yyvsp[-3].string), (int)sizeof(ct->name)), state->msgs);
7569  YYERROR;
7570  }
7571 
7572  ct->l4proto = (yyvsp[-1].val);
7573  }
7574 #line 7575 "parser_bison.c" /* yacc.c:1646 */
7575  break;
7576 
7577  case 454:
7578 #line 2736 "parser_bison.y" /* yacc.c:1646 */
7579  {
7580  (yyvsp[-3].obj)->ct_helper.l3proto = (yyvsp[-1].val);
7581  }
7582 #line 7583 "parser_bison.c" /* yacc.c:1646 */
7583  break;
7584 
7585  case 455:
7586 #line 2742 "parser_bison.y" /* yacc.c:1646 */
7587  {
7588  (yyval.obj) = obj_alloc(&(yyloc));
7589  (yyval.obj)->type = NFT_OBJECT_CT_HELPER;
7590  }
7591 #line 7592 "parser_bison.c" /* yacc.c:1646 */
7592  break;
7593 
7594  case 456:
7595 #line 2749 "parser_bison.y" /* yacc.c:1646 */
7596  {
7597  (yyval.expr) = relational_expr_alloc(&(yyloc), OP_IMPLICIT, (yyvsp[-1].expr), (yyvsp[0].expr));
7598  }
7599 #line 7600 "parser_bison.c" /* yacc.c:1646 */
7600  break;
7601 
7602  case 457:
7603 #line 2753 "parser_bison.y" /* yacc.c:1646 */
7604  {
7605  (yyval.expr) = relational_expr_alloc(&(yyloc), OP_FLAGCMP, (yyvsp[-1].expr), (yyvsp[0].expr));
7606  }
7607 #line 7608 "parser_bison.c" /* yacc.c:1646 */
7608  break;
7609 
7610  case 458:
7611 #line 2757 "parser_bison.y" /* yacc.c:1646 */
7612  {
7613  (yyval.expr) = relational_expr_alloc(&(yylsp[-1]), (yyvsp[-1].val), (yyvsp[-2].expr), (yyvsp[0].expr));
7614  }
7615 #line 7616 "parser_bison.c" /* yacc.c:1646 */
7616  break;
7617 
7618  case 459:
7619 #line 2761 "parser_bison.y" /* yacc.c:1646 */
7620  {
7621  (yyval.expr) = relational_expr_alloc(&(yylsp[-3]), (yyvsp[-3].val), (yyvsp[-4].expr), (yyvsp[-1].expr));
7622  }
7623 #line 7624 "parser_bison.c" /* yacc.c:1646 */
7624  break;
7625 
7626  case 460:
7627 #line 2767 "parser_bison.y" /* yacc.c:1646 */
7628  {
7629  (yyval.expr) = list_expr_alloc(&(yyloc));
7630  compound_expr_add((yyval.expr), (yyvsp[-2].expr));
7631  compound_expr_add((yyval.expr), (yyvsp[0].expr));
7632  }
7633 #line 7634 "parser_bison.c" /* yacc.c:1646 */
7634  break;
7635 
7636  case 461:
7637 #line 2773 "parser_bison.y" /* yacc.c:1646 */
7638  {
7639  (yyvsp[-2].expr)->location = (yyloc);
7640  compound_expr_add((yyvsp[-2].expr), (yyvsp[0].expr));
7641  (yyval.expr) = (yyvsp[-2].expr);
7642  }
7643 #line 7644 "parser_bison.c" /* yacc.c:1646 */
7644  break;
7645 
7646  case 462:
7647 #line 2780 "parser_bison.y" /* yacc.c:1646 */
7648  { (yyval.expr) = (yyvsp[0].expr); }
7649 #line 7650 "parser_bison.c" /* yacc.c:1646 */
7650  break;
7651 
7652  case 463:
7653 #line 2781 "parser_bison.y" /* yacc.c:1646 */
7654  { (yyval.expr) = (yyvsp[0].expr); }
7655 #line 7656 "parser_bison.c" /* yacc.c:1646 */
7656  break;
7657 
7658  case 464:
7659 #line 2782 "parser_bison.y" /* yacc.c:1646 */
7660  { (yyval.expr) = (yyvsp[0].expr); }
7661 #line 7662 "parser_bison.c" /* yacc.c:1646 */
7662  break;
7663 
7664  case 466:
7665 #line 2787 "parser_bison.y" /* yacc.c:1646 */
7666  {
7667  (yyval.expr) = binop_expr_alloc(&(yyloc), OP_LSHIFT, (yyvsp[-2].expr), (yyvsp[0].expr));
7668  }
7669 #line 7670 "parser_bison.c" /* yacc.c:1646 */
7670  break;
7671 
7672  case 467:
7673 #line 2791 "parser_bison.y" /* yacc.c:1646 */
7674  {
7675  (yyval.expr) = binop_expr_alloc(&(yyloc), OP_RSHIFT, (yyvsp[-2].expr), (yyvsp[0].expr));
7676  }
7677 #line 7678 "parser_bison.c" /* yacc.c:1646 */
7678  break;
7679 
7680  case 469:
7681 #line 2798 "parser_bison.y" /* yacc.c:1646 */
7682  {
7683  (yyval.expr) = binop_expr_alloc(&(yyloc), OP_AND, (yyvsp[-2].expr), (yyvsp[0].expr));
7684  }
7685 #line 7686 "parser_bison.c" /* yacc.c:1646 */
7686  break;
7687 
7688  case 471:
7689 #line 2805 "parser_bison.y" /* yacc.c:1646 */
7690  {
7691  (yyval.expr) = binop_expr_alloc(&(yyloc), OP_XOR, (yyvsp[-2].expr), (yyvsp[0].expr));
7692  }
7693 #line 7694 "parser_bison.c" /* yacc.c:1646 */
7694  break;
7695 
7696  case 473:
7697 #line 2812 "parser_bison.y" /* yacc.c:1646 */
7698  {
7699  (yyval.expr) = binop_expr_alloc(&(yyloc), OP_OR, (yyvsp[-2].expr), (yyvsp[0].expr));
7700  }
7701 #line 7702 "parser_bison.c" /* yacc.c:1646 */
7702  break;
7703 
7704  case 476:
7705 #line 2822 "parser_bison.y" /* yacc.c:1646 */
7706  {
7707  if ((yyval.expr)->ops->type != EXPR_CONCAT) {
7708  (yyval.expr) = concat_expr_alloc(&(yyloc));
7709  compound_expr_add((yyval.expr), (yyvsp[-2].expr));
7710  } else {
7711  struct location rhs[] = {
7712  [1] = (yylsp[-1]),
7713  [2] = (yylsp[0]),
7714  };
7715  location_update(&(yyvsp[0].expr)->location, rhs, 2);
7716 
7717  (yyval.expr) = (yyvsp[-2].expr);
7718  (yyval.expr)->location = (yyloc);
7719  }
7720  compound_expr_add((yyval.expr), (yyvsp[0].expr));
7721  }
7722 #line 7723 "parser_bison.c" /* yacc.c:1646 */
7723  break;
7724 
7725  case 477:
7726 #line 2840 "parser_bison.y" /* yacc.c:1646 */
7727  { (yyval.val) = true; }
7728 #line 7729 "parser_bison.c" /* yacc.c:1646 */
7729  break;
7730 
7731  case 478:
7732 #line 2841 "parser_bison.y" /* yacc.c:1646 */
7733  { (yyval.val) = false; }
7734 #line 7735 "parser_bison.c" /* yacc.c:1646 */
7735  break;
7736 
7737  case 479:
7738 #line 2845 "parser_bison.y" /* yacc.c:1646 */
7739  {
7740  (yyval.expr) = constant_expr_alloc(&(yyloc), &boolean_type,
7741  BYTEORDER_HOST_ENDIAN,
7742  1, &(yyvsp[0].val));
7743  }
7744 #line 7745 "parser_bison.c" /* yacc.c:1646 */
7745  break;
7746 
7747  case 480:
7748 #line 2852 "parser_bison.y" /* yacc.c:1646 */
7749  { (yyval.expr) = symbol_value(&(yyloc), "ether"); }
7750 #line 7751 "parser_bison.c" /* yacc.c:1646 */
7751  break;
7752 
7753  case 481:
7754 #line 2853 "parser_bison.y" /* yacc.c:1646 */
7755  { (yyval.expr) = symbol_value(&(yyloc), "ip"); }
7756 #line 7757 "parser_bison.c" /* yacc.c:1646 */
7757  break;
7758 
7759  case 482:
7760 #line 2854 "parser_bison.y" /* yacc.c:1646 */
7761  { (yyval.expr) = symbol_value(&(yyloc), "ip6"); }
7762 #line 7763 "parser_bison.c" /* yacc.c:1646 */
7763  break;
7764 
7765  case 483:
7766 #line 2855 "parser_bison.y" /* yacc.c:1646 */
7767  { (yyval.expr) = symbol_value(&(yyloc), "vlan"); }
7768 #line 7769 "parser_bison.c" /* yacc.c:1646 */
7769  break;
7770 
7771  case 484:
7772 #line 2856 "parser_bison.y" /* yacc.c:1646 */
7773  { (yyval.expr) = symbol_value(&(yyloc), "arp"); }
7774 #line 7775 "parser_bison.c" /* yacc.c:1646 */
7775  break;
7776 
7777  case 485:
7778 #line 2857 "parser_bison.y" /* yacc.c:1646 */
7779  { (yyval.expr) = symbol_value(&(yyloc), "dnat"); }
7780 #line 7781 "parser_bison.c" /* yacc.c:1646 */
7781  break;
7782 
7783  case 486:
7784 #line 2858 "parser_bison.y" /* yacc.c:1646 */
7785  { (yyval.expr) = symbol_value(&(yyloc), "snat"); }
7786 #line 7787 "parser_bison.c" /* yacc.c:1646 */
7787  break;
7788 
7789  case 487:
7790 #line 2859 "parser_bison.y" /* yacc.c:1646 */
7791  { (yyval.expr) = symbol_value(&(yyloc), "ecn"); }
7792 #line 7793 "parser_bison.c" /* yacc.c:1646 */
7793  break;
7794 
7795  case 488:
7796 #line 2860 "parser_bison.y" /* yacc.c:1646 */
7797  { (yyval.expr) = symbol_value(&(yyloc), "reset"); }
7798 #line 7799 "parser_bison.c" /* yacc.c:1646 */
7799  break;
7800 
7801  case 489:
7802 #line 2863 "parser_bison.y" /* yacc.c:1646 */
7803  { (yyval.expr) = (yyvsp[0].expr); }
7804 #line 7805 "parser_bison.c" /* yacc.c:1646 */
7805  break;
7806 
7807  case 490:
7808 #line 2864 "parser_bison.y" /* yacc.c:1646 */
7809  { (yyval.expr) = (yyvsp[0].expr); }
7810 #line 7811 "parser_bison.c" /* yacc.c:1646 */
7811  break;
7812 
7813  case 491:
7814 #line 2865 "parser_bison.y" /* yacc.c:1646 */
7815  { (yyval.expr) = (yyvsp[0].expr); }
7816 #line 7817 "parser_bison.c" /* yacc.c:1646 */
7817  break;
7818 
7819  case 492:
7820 #line 2866 "parser_bison.y" /* yacc.c:1646 */
7821  { (yyval.expr) = (yyvsp[0].expr); }
7822 #line 7823 "parser_bison.c" /* yacc.c:1646 */
7823  break;
7824 
7825  case 493:
7826 #line 2868 "parser_bison.y" /* yacc.c:1646 */
7827  {
7828  uint8_t data = IPPROTO_TCP;
7829  (yyval.expr) = constant_expr_alloc(&(yyloc), &inet_protocol_type,
7830  BYTEORDER_HOST_ENDIAN,
7831  sizeof(data) * BITS_PER_BYTE, &data);
7832  }
7833 #line 7834 "parser_bison.c" /* yacc.c:1646 */
7834  break;
7835 
7836  case 494:
7837 #line 2875 "parser_bison.y" /* yacc.c:1646 */
7838  {
7839  uint8_t data = IPPROTO_UDP;
7840  (yyval.expr) = constant_expr_alloc(&(yyloc), &inet_protocol_type,
7841  BYTEORDER_HOST_ENDIAN,
7842  sizeof(data) * BITS_PER_BYTE, &data);
7843  }
7844 #line 7845 "parser_bison.c" /* yacc.c:1646 */
7845  break;
7846 
7847  case 495:
7848 #line 2882 "parser_bison.y" /* yacc.c:1646 */
7849  {
7850  uint8_t data = IPPROTO_UDPLITE;
7851  (yyval.expr) = constant_expr_alloc(&(yyloc), &inet_protocol_type,
7852  BYTEORDER_HOST_ENDIAN,
7853  sizeof(data) * BITS_PER_BYTE, &data);
7854  }
7855 #line 7856 "parser_bison.c" /* yacc.c:1646 */
7856  break;
7857 
7858  case 496:
7859 #line 2889 "parser_bison.y" /* yacc.c:1646 */
7860  {
7861  uint8_t data = IPPROTO_ESP;
7862  (yyval.expr) = constant_expr_alloc(&(yyloc), &inet_protocol_type,
7863  BYTEORDER_HOST_ENDIAN,
7864  sizeof(data) * BITS_PER_BYTE, &data);
7865  }
7866 #line 7867 "parser_bison.c" /* yacc.c:1646 */
7867  break;
7868 
7869  case 497:
7870 #line 2896 "parser_bison.y" /* yacc.c:1646 */
7871  {
7872  uint8_t data = IPPROTO_AH;
7873  (yyval.expr) = constant_expr_alloc(&(yyloc), &inet_protocol_type,
7874  BYTEORDER_HOST_ENDIAN,
7875  sizeof(data) * BITS_PER_BYTE, &data);
7876  }
7877 #line 7878 "parser_bison.c" /* yacc.c:1646 */
7878  break;
7879 
7880  case 498:
7881 #line 2903 "parser_bison.y" /* yacc.c:1646 */
7882  {
7883  uint8_t data = IPPROTO_ICMP;
7884  (yyval.expr) = constant_expr_alloc(&(yyloc), &inet_protocol_type,
7885  BYTEORDER_HOST_ENDIAN,
7886  sizeof(data) * BITS_PER_BYTE, &data);
7887  }
7888 #line 7889 "parser_bison.c" /* yacc.c:1646 */
7889  break;
7890 
7891  case 499:
7892 #line 2910 "parser_bison.y" /* yacc.c:1646 */
7893  {
7894  uint8_t data = IPPROTO_ICMPV6;
7895  (yyval.expr) = constant_expr_alloc(&(yyloc), &inet_protocol_type,
7896  BYTEORDER_HOST_ENDIAN,
7897  sizeof(data) * BITS_PER_BYTE, &data);
7898  }
7899 #line 7900 "parser_bison.c" /* yacc.c:1646 */
7900  break;
7901 
7902  case 500:
7903 #line 2917 "parser_bison.y" /* yacc.c:1646 */
7904  {
7905  uint8_t data = IPPROTO_COMP;
7906  (yyval.expr) = constant_expr_alloc(&(yyloc), &inet_protocol_type,
7907  BYTEORDER_HOST_ENDIAN,
7908  sizeof(data) * BITS_PER_BYTE, &data);
7909  }
7910 #line 7911 "parser_bison.c" /* yacc.c:1646 */
7911  break;
7912 
7913  case 501:
7914 #line 2924 "parser_bison.y" /* yacc.c:1646 */
7915  {
7916  uint8_t data = IPPROTO_DCCP;
7917  (yyval.expr) = constant_expr_alloc(&(yyloc), &inet_protocol_type,
7918  BYTEORDER_HOST_ENDIAN,
7919  sizeof(data) * BITS_PER_BYTE, &data);
7920  }
7921 #line 7922 "parser_bison.c" /* yacc.c:1646 */
7922  break;
7923 
7924  case 502:
7925 #line 2931 "parser_bison.y" /* yacc.c:1646 */
7926  {
7927  uint8_t data = IPPROTO_SCTP;
7928  (yyval.expr) = constant_expr_alloc(&(yyloc), &inet_protocol_type,
7929  BYTEORDER_HOST_ENDIAN,
7930  sizeof(data) * BITS_PER_BYTE, &data);
7931  }
7932 #line 7933 "parser_bison.c" /* yacc.c:1646 */
7933  break;
7934 
7935  case 503:
7936 #line 2938 "parser_bison.y" /* yacc.c:1646 */
7937  {
7938  uint8_t data = ICMP_REDIRECT;
7939  (yyval.expr) = constant_expr_alloc(&(yyloc), &icmp_type_type,
7940  BYTEORDER_HOST_ENDIAN,
7941  sizeof(data) * BITS_PER_BYTE, &data);
7942  }
7943 #line 7944 "parser_bison.c" /* yacc.c:1646 */
7944  break;
7945 
7946  case 504:
7947 #line 2946 "parser_bison.y" /* yacc.c:1646 */
7948  { (yyval.val) = OP_EQ; }
7949 #line 7950 "parser_bison.c" /* yacc.c:1646 */
7950  break;
7951 
7952  case 505:
7953 #line 2947 "parser_bison.y" /* yacc.c:1646 */
7954  { (yyval.val) = OP_NEQ; }
7955 #line 7956 "parser_bison.c" /* yacc.c:1646 */
7956  break;
7957 
7958  case 506:
7959 #line 2948 "parser_bison.y" /* yacc.c:1646 */
7960  { (yyval.val) = OP_LT; }
7961 #line 7962 "parser_bison.c" /* yacc.c:1646 */
7962  break;
7963 
7964  case 507:
7965 #line 2949 "parser_bison.y" /* yacc.c:1646 */
7966  { (yyval.val) = OP_GT; }
7967 #line 7968 "parser_bison.c" /* yacc.c:1646 */
7968  break;
7969 
7970  case 508:
7971 #line 2950 "parser_bison.y" /* yacc.c:1646 */
7972  { (yyval.val) = OP_GTE; }
7973 #line 7974 "parser_bison.c" /* yacc.c:1646 */
7974  break;
7975 
7976  case 509:
7977 #line 2951 "parser_bison.y" /* yacc.c:1646 */
7978  { (yyval.val) = OP_LTE; }
7979 #line 7980 "parser_bison.c" /* yacc.c:1646 */
7980  break;
7981 
7982  case 510:
7983 #line 2955 "parser_bison.y" /* yacc.c:1646 */
7984  {
7985  (yyval.expr) = verdict_expr_alloc(&(yyloc), NF_ACCEPT, NULL);
7986  }
7987 #line 7988 "parser_bison.c" /* yacc.c:1646 */
7988  break;
7989 
7990  case 511:
7991 #line 2959 "parser_bison.y" /* yacc.c:1646 */
7992  {
7993  (yyval.expr) = verdict_expr_alloc(&(yyloc), NF_DROP, NULL);
7994  }
7995 #line 7996 "parser_bison.c" /* yacc.c:1646 */
7996  break;
7997 
7998  case 512:
7999 #line 2963 "parser_bison.y" /* yacc.c:1646 */
8000  {
8001  (yyval.expr) = verdict_expr_alloc(&(yyloc), NFT_CONTINUE, NULL);
8002  }
8003 #line 8004 "parser_bison.c" /* yacc.c:1646 */
8004  break;
8005 
8006  case 513:
8007 #line 2967 "parser_bison.y" /* yacc.c:1646 */
8008  {
8009  (yyval.expr) = verdict_expr_alloc(&(yyloc), NFT_JUMP, (yyvsp[0].string));
8010  }
8011 #line 8012 "parser_bison.c" /* yacc.c:1646 */
8012  break;
8013 
8014  case 514:
8015 #line 2971 "parser_bison.y" /* yacc.c:1646 */
8016  {
8017  (yyval.expr) = verdict_expr_alloc(&(yyloc), NFT_GOTO, (yyvsp[0].string));
8018  }
8019 #line 8020 "parser_bison.c" /* yacc.c:1646 */
8020  break;
8021 
8022  case 515:
8023 #line 2975 "parser_bison.y" /* yacc.c:1646 */
8024  {
8025  (yyval.expr) = verdict_expr_alloc(&(yyloc), NFT_RETURN, NULL);
8026  }
8027 #line 8028 "parser_bison.c" /* yacc.c:1646 */
8028  break;
8029 
8030  case 516:
8031 #line 2981 "parser_bison.y" /* yacc.c:1646 */
8032  {
8033  (yyval.expr) = meta_expr_alloc(&(yyloc), (yyvsp[0].val));
8034  }
8035 #line 8036 "parser_bison.c" /* yacc.c:1646 */
8036  break;
8037 
8038  case 517:
8039 #line 2985 "parser_bison.y" /* yacc.c:1646 */
8040  {
8041  (yyval.expr) = meta_expr_alloc(&(yyloc), (yyvsp[0].val));
8042  }
8043 #line 8044 "parser_bison.c" /* yacc.c:1646 */
8044  break;
8045 
8046  case 518:
8047 #line 2989 "parser_bison.y" /* yacc.c:1646 */
8048  {
8049  struct error_record *erec;
8050  unsigned int key;
8051 
8052  erec = meta_key_parse(&(yyloc), (yyvsp[0].string), &key);
8053  if (erec != NULL) {
8054  erec_queue(erec, state->msgs);
8055  YYERROR;
8056  }
8057 
8058  (yyval.expr) = meta_expr_alloc(&(yyloc), key);
8059  }
8060 #line 8061 "parser_bison.c" /* yacc.c:1646 */
8061  break;
8062 
8063  case 521:
8064 #line 3006 "parser_bison.y" /* yacc.c:1646 */
8065  { (yyval.val) = NFT_META_LEN; }
8066 #line 8067 "parser_bison.c" /* yacc.c:1646 */
8067  break;
8068 
8069  case 522:
8070 #line 3007 "parser_bison.y" /* yacc.c:1646 */
8071  { (yyval.val) = NFT_META_PROTOCOL; }
8072 #line 8073 "parser_bison.c" /* yacc.c:1646 */
8073  break;
8074 
8075  case 523:
8076 #line 3008 "parser_bison.y" /* yacc.c:1646 */
8077  { (yyval.val) = NFT_META_PRIORITY; }
8078 #line 8079 "parser_bison.c" /* yacc.c:1646 */
8079  break;
8080 
8081  case 524:
8082 #line 3009 "parser_bison.y" /* yacc.c:1646 */
8083  { (yyval.val) = NFT_META_PRANDOM; }
8084 #line 8085 "parser_bison.c" /* yacc.c:1646 */
8085  break;
8086 
8087  case 525:
8088 #line 3012 "parser_bison.y" /* yacc.c:1646 */
8089  { (yyval.val) = NFT_META_MARK; }
8090 #line 8091 "parser_bison.c" /* yacc.c:1646 */
8091  break;
8092 
8093  case 526:
8094 #line 3013 "parser_bison.y" /* yacc.c:1646 */
8095  { (yyval.val) = NFT_META_IIF; }
8096 #line 8097 "parser_bison.c" /* yacc.c:1646 */
8097  break;
8098 
8099  case 527:
8100 #line 3014 "parser_bison.y" /* yacc.c:1646 */
8101  { (yyval.val) = NFT_META_IIFNAME; }
8102 #line 8103 "parser_bison.c" /* yacc.c:1646 */
8103  break;
8104 
8105  case 528:
8106 #line 3015 "parser_bison.y" /* yacc.c:1646 */
8107  { (yyval.val) = NFT_META_IIFTYPE; }
8108 #line 8109 "parser_bison.c" /* yacc.c:1646 */
8109  break;
8110 
8111  case 529:
8112 #line 3016 "parser_bison.y" /* yacc.c:1646 */
8113  { (yyval.val) = NFT_META_OIF; }
8114 #line 8115 "parser_bison.c" /* yacc.c:1646 */
8115  break;
8116 
8117  case 530:
8118 #line 3017 "parser_bison.y" /* yacc.c:1646 */
8119  { (yyval.val) = NFT_META_OIFNAME; }
8120 #line 8121 "parser_bison.c" /* yacc.c:1646 */
8121  break;
8122 
8123  case 531:
8124 #line 3018 "parser_bison.y" /* yacc.c:1646 */
8125  { (yyval.val) = NFT_META_OIFTYPE; }
8126 #line 8127 "parser_bison.c" /* yacc.c:1646 */
8127  break;
8128 
8129  case 532:
8130 #line 3019 "parser_bison.y" /* yacc.c:1646 */
8131  { (yyval.val) = NFT_META_SKUID; }
8132 #line 8133 "parser_bison.c" /* yacc.c:1646 */
8133  break;
8134 
8135  case 533:
8136 #line 3020 "parser_bison.y" /* yacc.c:1646 */
8137  { (yyval.val) = NFT_META_SKGID; }
8138 #line 8139 "parser_bison.c" /* yacc.c:1646 */
8139  break;
8140 
8141  case 534:
8142 #line 3021 "parser_bison.y" /* yacc.c:1646 */
8143  { (yyval.val) = NFT_META_NFTRACE; }
8144 #line 8145 "parser_bison.c" /* yacc.c:1646 */
8145  break;
8146 
8147  case 535:
8148 #line 3022 "parser_bison.y" /* yacc.c:1646 */
8149  { (yyval.val) = NFT_META_RTCLASSID; }
8150 #line 8151 "parser_bison.c" /* yacc.c:1646 */
8151  break;
8152 
8153  case 536:
8154 #line 3023 "parser_bison.y" /* yacc.c:1646 */
8155  { (yyval.val) = NFT_META_BRI_IIFNAME; }
8156 #line 8157 "parser_bison.c" /* yacc.c:1646 */
8157  break;
8158 
8159  case 537:
8160 #line 3024 "parser_bison.y" /* yacc.c:1646 */
8161  { (yyval.val) = NFT_META_BRI_OIFNAME; }
8162 #line 8163 "parser_bison.c" /* yacc.c:1646 */
8163  break;
8164 
8165  case 538:
8166 #line 3025 "parser_bison.y" /* yacc.c:1646 */
8167  { (yyval.val) = NFT_META_PKTTYPE; }
8168 #line 8169 "parser_bison.c" /* yacc.c:1646 */
8169  break;
8170 
8171  case 539:
8172 #line 3026 "parser_bison.y" /* yacc.c:1646 */
8173  { (yyval.val) = NFT_META_CPU; }
8174 #line 8175 "parser_bison.c" /* yacc.c:1646 */
8175  break;
8176 
8177  case 540:
8178 #line 3027 "parser_bison.y" /* yacc.c:1646 */
8179  { (yyval.val) = NFT_META_IIFGROUP; }
8180 #line 8181 "parser_bison.c" /* yacc.c:1646 */
8181  break;
8182 
8183  case 541:
8184 #line 3028 "parser_bison.y" /* yacc.c:1646 */
8185  { (yyval.val) = NFT_META_OIFGROUP; }
8186 #line 8187 "parser_bison.c" /* yacc.c:1646 */
8187  break;
8188 
8189  case 542:
8190 #line 3029 "parser_bison.y" /* yacc.c:1646 */
8191  { (yyval.val) = NFT_META_CGROUP; }
8192 #line 8193 "parser_bison.c" /* yacc.c:1646 */
8193  break;
8194 
8195  case 543:
8196 #line 3033 "parser_bison.y" /* yacc.c:1646 */
8197  {
8198  (yyval.stmt) = meta_stmt_alloc(&(yyloc), (yyvsp[-2].val), (yyvsp[0].expr));
8199  }
8200 #line 8201 "parser_bison.c" /* yacc.c:1646 */
8201  break;
8202 
8203  case 544:
8204 #line 3037 "parser_bison.y" /* yacc.c:1646 */
8205  {
8206  (yyval.stmt) = meta_stmt_alloc(&(yyloc), (yyvsp[-2].val), (yyvsp[0].expr));
8207  }
8208 #line 8209 "parser_bison.c" /* yacc.c:1646 */
8209  break;
8210 
8211  case 545:
8212 #line 3041 "parser_bison.y" /* yacc.c:1646 */
8213  {
8214  struct error_record *erec;
8215  unsigned int key;
8216 
8217  erec = meta_key_parse(&(yyloc), (yyvsp[-2].string), &key);
8218  if (erec != NULL) {
8219  erec_queue(erec, state->msgs);
8220  YYERROR;
8221  }
8222 
8223  (yyval.stmt) = meta_stmt_alloc(&(yyloc), key, (yyvsp[0].expr));
8224  }
8225 #line 8226 "parser_bison.c" /* yacc.c:1646 */
8226  break;
8227 
8228  case 546:
8229 #line 3054 "parser_bison.y" /* yacc.c:1646 */
8230  {
8231  (yyval.stmt) = notrack_stmt_alloc(&(yyloc));
8232  }
8233 #line 8234 "parser_bison.c" /* yacc.c:1646 */
8234  break;
8235 
8236  case 547:
8237 #line 3059 "parser_bison.y" /* yacc.c:1646 */
8238  { (yyval.val) = 0; }
8239 #line 8240 "parser_bison.c" /* yacc.c:1646 */
8240  break;
8241 
8242  case 548:
8243 #line 3060 "parser_bison.y" /* yacc.c:1646 */
8244  { (yyval.val) = (yyvsp[0].val); }
8245 #line 8246 "parser_bison.c" /* yacc.c:1646 */
8246  break;
8247 
8248  case 549:
8249 #line 3063 "parser_bison.y" /* yacc.c:1646 */
8250  { (yyval.val) = NFT_NG_INCREMENTAL; }
8251 #line 8252 "parser_bison.c" /* yacc.c:1646 */
8252  break;
8253 
8254  case 550:
8255 #line 3064 "parser_bison.y" /* yacc.c:1646 */
8256  { (yyval.val) = NFT_NG_RANDOM; }
8257 #line 8258 "parser_bison.c" /* yacc.c:1646 */
8258  break;
8259 
8260  case 551:
8261 #line 3068 "parser_bison.y" /* yacc.c:1646 */
8262  {
8263  (yyval.expr) = numgen_expr_alloc(&(yyloc), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val));
8264  }
8265 #line 8266 "parser_bison.c" /* yacc.c:1646 */
8266  break;
8267 
8268  case 552:
8269 #line 3074 "parser_bison.y" /* yacc.c:1646 */
8270  {
8271  (yyval.expr) = hash_expr_alloc(&(yyloc), (yyvsp[-3].val), true, (yyvsp[-1].val), (yyvsp[0].val), NFT_HASH_JENKINS);
8272  (yyval.expr)->hash.expr = (yyvsp[-5].expr);
8273  }
8274 #line 8275 "parser_bison.c" /* yacc.c:1646 */
8275  break;
8276 
8277  case 553:
8278 #line 3079 "parser_bison.y" /* yacc.c:1646 */
8279  {
8280  (yyval.expr) = hash_expr_alloc(&(yyloc), (yyvsp[-1].val), false, 0, (yyvsp[0].val), NFT_HASH_JENKINS);
8281  (yyval.expr)->hash.expr = (yyvsp[-3].expr);
8282  }
8283 #line 8284 "parser_bison.c" /* yacc.c:1646 */
8284  break;
8285 
8286  case 554:
8287 #line 3084 "parser_bison.y" /* yacc.c:1646 */
8288  {
8289  (yyval.expr) = hash_expr_alloc(&(yyloc), (yyvsp[-1].val), false, 0, (yyvsp[0].val), NFT_HASH_SYM);
8290  }
8291 #line 8292 "parser_bison.c" /* yacc.c:1646 */
8292  break;
8293 
8294  case 555:
8295 #line 3090 "parser_bison.y" /* yacc.c:1646 */
8296  {
8297  (yyval.expr) = rt_expr_alloc(&(yyloc), (yyvsp[0].val), true);
8298  }
8299 #line 8300 "parser_bison.c" /* yacc.c:1646 */
8300  break;
8301 
8302  case 556:
8303 #line 3095 "parser_bison.y" /* yacc.c:1646 */
8304  { (yyval.val) = NFT_RT_CLASSID; }
8305 #line 8306 "parser_bison.c" /* yacc.c:1646 */
8306  break;
8307 
8308  case 557:
8309 #line 3096 "parser_bison.y" /* yacc.c:1646 */
8310  { (yyval.val) = NFT_RT_NEXTHOP4; }
8311 #line 8312 "parser_bison.c" /* yacc.c:1646 */
8312  break;
8313 
8314  case 558:
8315 #line 3100 "parser_bison.y" /* yacc.c:1646 */
8316  {
8317  (yyval.expr) = ct_expr_alloc(&(yyloc), (yyvsp[0].val), -1);
8318  }
8319 #line 8320 "parser_bison.c" /* yacc.c:1646 */
8320  break;
8321 
8322  case 559:
8323 #line 3104 "parser_bison.y" /* yacc.c:1646 */
8324  {
8325  struct error_record *erec;
8326  unsigned int key;
8327 
8328  erec = ct_key_parse(&(yyloc), (yyvsp[0].string), &key);
8329  if (erec != NULL) {
8330  erec_queue(erec, state->msgs);
8331  YYERROR;
8332  }
8333 
8334  (yyval.expr) = ct_expr_alloc(&(yyloc), key, -1);
8335  }
8336 #line 8337 "parser_bison.c" /* yacc.c:1646 */
8337  break;
8338 
8339  case 560:
8340 #line 3117 "parser_bison.y" /* yacc.c:1646 */
8341  {
8342  struct error_record *erec;
8343  int8_t direction;
8344 
8345  erec = ct_dir_parse(&(yyloc), (yyvsp[-1].string), &direction);
8346  if (erec != NULL) {
8347  erec_queue(erec, state->msgs);
8348  YYERROR;
8349  }
8350 
8351  (yyval.expr) = ct_expr_alloc(&(yyloc), (yyvsp[0].val), direction);
8352  }
8353 #line 8354 "parser_bison.c" /* yacc.c:1646 */
8354  break;
8355 
8356  case 561:
8357 #line 3131 "parser_bison.y" /* yacc.c:1646 */
8358  { (yyval.val) = NFT_CT_L3PROTOCOL; }
8359 #line 8360 "parser_bison.c" /* yacc.c:1646 */
8360  break;
8361 
8362  case 562:
8363 #line 3132 "parser_bison.y" /* yacc.c:1646 */
8364  { (yyval.val) = NFT_CT_PROTOCOL; }
8365 #line 8366 "parser_bison.c" /* yacc.c:1646 */
8366  break;
8367 
8368  case 563:
8369 #line 3133 "parser_bison.y" /* yacc.c:1646 */
8370  { (yyval.val) = NFT_CT_MARK; }
8371 #line 8372 "parser_bison.c" /* yacc.c:1646 */
8372  break;
8373 
8374  case 565:
8375 #line 3136 "parser_bison.y" /* yacc.c:1646 */
8376  { (yyval.val) = NFT_CT_SRC; }
8377 #line 8378 "parser_bison.c" /* yacc.c:1646 */
8378  break;
8379 
8380  case 566:
8381 #line 3137 "parser_bison.y" /* yacc.c:1646 */
8382  { (yyval.val) = NFT_CT_DST; }
8383 #line 8384 "parser_bison.c" /* yacc.c:1646 */
8384  break;
8385 
8386  case 567:
8387 #line 3138 "parser_bison.y" /* yacc.c:1646 */
8388  { (yyval.val) = NFT_CT_L3PROTOCOL; }
8389 #line 8390 "parser_bison.c" /* yacc.c:1646 */
8390  break;
8391 
8392  case 568:
8393 #line 3139 "parser_bison.y" /* yacc.c:1646 */
8394  { (yyval.val) = NFT_CT_PROTOCOL; }
8395 #line 8396 "parser_bison.c" /* yacc.c:1646 */
8396  break;
8397 
8398  case 569:
8399 #line 3140 "parser_bison.y" /* yacc.c:1646 */
8400  { (yyval.val) = NFT_CT_PROTO_SRC; }
8401 #line 8402 "parser_bison.c" /* yacc.c:1646 */
8402  break;
8403 
8404  case 570:
8405 #line 3141 "parser_bison.y" /* yacc.c:1646 */
8406  { (yyval.val) = NFT_CT_PROTO_DST; }
8407 #line 8408 "parser_bison.c" /* yacc.c:1646 */
8408  break;
8409 
8410  case 572:
8411 #line 3145 "parser_bison.y" /* yacc.c:1646 */
8412  { (yyval.val) = NFT_CT_BYTES; }
8413 #line 8414 "parser_bison.c" /* yacc.c:1646 */
8414  break;
8415 
8416  case 573:
8417 #line 3146 "parser_bison.y" /* yacc.c:1646 */
8418  { (yyval.val) = NFT_CT_PKTS; }
8419 #line 8420 "parser_bison.c" /* yacc.c:1646 */
8420  break;
8421 
8422  case 574:
8423 #line 3147 "parser_bison.y" /* yacc.c:1646 */
8424  { (yyval.val) = NFT_CT_AVGPKT; }
8425 #line 8426 "parser_bison.c" /* yacc.c:1646 */
8426  break;
8427 
8428  case 575:
8429 #line 3148 "parser_bison.y" /* yacc.c:1646 */
8430  { (yyval.val) = NFT_CT_ZONE; }
8431 #line 8432 "parser_bison.c" /* yacc.c:1646 */
8432  break;
8433 
8434  case 576:
8435 #line 3152 "parser_bison.y" /* yacc.c:1646 */
8436  {
8437  (yyval.expr) = list_expr_alloc(&(yyloc));
8438  compound_expr_add((yyval.expr), (yyvsp[-2].expr));
8439  compound_expr_add((yyval.expr), (yyvsp[0].expr));
8440  }
8441 #line 8442 "parser_bison.c" /* yacc.c:1646 */
8442  break;
8443 
8444  case 577:
8445 #line 3158 "parser_bison.y" /* yacc.c:1646 */
8446  {
8447  (yyvsp[-2].expr)->location = (yyloc);
8448  compound_expr_add((yyvsp[-2].expr), (yyvsp[0].expr));
8449  (yyval.expr) = (yyvsp[-2].expr);
8450  }
8451 #line 8452 "parser_bison.c" /* yacc.c:1646 */
8452  break;
8453 
8454  case 580:
8455 #line 3170 "parser_bison.y" /* yacc.c:1646 */
8456  {
8457  (yyval.stmt) = ct_stmt_alloc(&(yyloc), (yyvsp[-2].val), -1, (yyvsp[0].expr));
8458  }
8459 #line 8460 "parser_bison.c" /* yacc.c:1646 */
8460  break;
8461 
8462  case 581:
8463 #line 3174 "parser_bison.y" /* yacc.c:1646 */
8464  {
8465  struct error_record *erec;
8466  unsigned int key;
8467 
8468  erec = ct_key_parse(&(yyloc), (yyvsp[-2].string), &key);
8469  if (erec != NULL) {
8470  erec_queue(erec, state->msgs);
8471  YYERROR;
8472  }
8473 
8474  switch (key) {
8475  case NFT_CT_HELPER:
8476  (yyval.stmt) = objref_stmt_alloc(&(yyloc));
8477  (yyval.stmt)->objref.type = NFT_OBJECT_CT_HELPER;
8478  (yyval.stmt)->objref.expr = (yyvsp[0].expr);
8479  break;
8480  default:
8481  (yyval.stmt) = ct_stmt_alloc(&(yyloc), key, -1, (yyvsp[0].expr));
8482  break;
8483  }
8484  }
8485 #line 8486 "parser_bison.c" /* yacc.c:1646 */
8486  break;
8487 
8488  case 582:
8489 #line 3196 "parser_bison.y" /* yacc.c:1646 */
8490  {
8491  struct error_record *erec;
8492  int8_t direction;
8493 
8494  erec = ct_dir_parse(&(yyloc), (yyvsp[-3].string), &direction);
8495  if (erec != NULL) {
8496  erec_queue(erec, state->msgs);
8497  YYERROR;
8498  }
8499 
8500  (yyval.stmt) = ct_stmt_alloc(&(yyloc), (yyvsp[-2].val), direction, (yyvsp[0].expr));
8501  }
8502 #line 8503 "parser_bison.c" /* yacc.c:1646 */
8503  break;
8504 
8505  case 583:
8506 #line 3211 "parser_bison.y" /* yacc.c:1646 */
8507  {
8508  (yyval.stmt) = payload_stmt_alloc(&(yyloc), (yyvsp[-2].expr), (yyvsp[0].expr));
8509  }
8510 #line 8511 "parser_bison.c" /* yacc.c:1646 */
8511  break;
8512 
8513  case 600:
8514 #line 3235 "parser_bison.y" /* yacc.c:1646 */
8515  {
8516  (yyval.expr) = payload_expr_alloc(&(yyloc), NULL, 0);
8517  (yyval.expr)->payload.base = (yyvsp[-4].val);
8518  (yyval.expr)->payload.offset = (yyvsp[-2].val);
8519  (yyval.expr)->len = (yyvsp[0].val);
8520  (yyval.expr)->dtype = &integer_type;
8521  }
8522 #line 8523 "parser_bison.c" /* yacc.c:1646 */
8523  break;
8524 
8525  case 601:
8526 #line 3244 "parser_bison.y" /* yacc.c:1646 */
8527  { (yyval.val) = PROTO_BASE_LL_HDR; }
8528 #line 8529 "parser_bison.c" /* yacc.c:1646 */
8529  break;
8530 
8531  case 602:
8532 #line 3245 "parser_bison.y" /* yacc.c:1646 */
8533  { (yyval.val) = PROTO_BASE_NETWORK_HDR; }
8534 #line 8535 "parser_bison.c" /* yacc.c:1646 */
8535  break;
8536 
8537  case 603:
8538 #line 3246 "parser_bison.y" /* yacc.c:1646 */
8539  { (yyval.val) = PROTO_BASE_TRANSPORT_HDR; }
8540 #line 8541 "parser_bison.c" /* yacc.c:1646 */
8541  break;
8542 
8543  case 604:
8544 #line 3250 "parser_bison.y" /* yacc.c:1646 */
8545  {
8546  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_eth, (yyvsp[0].val));
8547  }
8548 #line 8549 "parser_bison.c" /* yacc.c:1646 */
8549  break;
8550 
8551  case 605:
8552 #line 3255 "parser_bison.y" /* yacc.c:1646 */
8553  { (yyval.val) = ETHHDR_SADDR; }
8554 #line 8555 "parser_bison.c" /* yacc.c:1646 */
8555  break;
8556 
8557  case 606:
8558 #line 3256 "parser_bison.y" /* yacc.c:1646 */
8559  { (yyval.val) = ETHHDR_DADDR; }
8560 #line 8561 "parser_bison.c" /* yacc.c:1646 */
8561  break;
8562 
8563  case 607:
8564 #line 3257 "parser_bison.y" /* yacc.c:1646 */
8565  { (yyval.val) = ETHHDR_TYPE; }
8566 #line 8567 "parser_bison.c" /* yacc.c:1646 */
8567  break;
8568 
8569  case 608:
8570 #line 3261 "parser_bison.y" /* yacc.c:1646 */
8571  {
8572  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_vlan, (yyvsp[0].val));
8573  }
8574 #line 8575 "parser_bison.c" /* yacc.c:1646 */
8575  break;
8576 
8577  case 609:
8578 #line 3266 "parser_bison.y" /* yacc.c:1646 */
8579  { (yyval.val) = VLANHDR_VID; }
8580 #line 8581 "parser_bison.c" /* yacc.c:1646 */
8581  break;
8582 
8583  case 610:
8584 #line 3267 "parser_bison.y" /* yacc.c:1646 */
8585  { (yyval.val) = VLANHDR_CFI; }
8586 #line 8587 "parser_bison.c" /* yacc.c:1646 */
8587  break;
8588 
8589  case 611:
8590 #line 3268 "parser_bison.y" /* yacc.c:1646 */
8591  { (yyval.val) = VLANHDR_PCP; }
8592 #line 8593 "parser_bison.c" /* yacc.c:1646 */
8593  break;
8594 
8595  case 612:
8596 #line 3269 "parser_bison.y" /* yacc.c:1646 */
8597  { (yyval.val) = VLANHDR_TYPE; }
8598 #line 8599 "parser_bison.c" /* yacc.c:1646 */
8599  break;
8600 
8601  case 613:
8602 #line 3273 "parser_bison.y" /* yacc.c:1646 */
8603  {
8604  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_arp, (yyvsp[0].val));
8605  }
8606 #line 8607 "parser_bison.c" /* yacc.c:1646 */
8607  break;
8608 
8609  case 614:
8610 #line 3278 "parser_bison.y" /* yacc.c:1646 */
8611  { (yyval.val) = ARPHDR_HRD; }
8612 #line 8613 "parser_bison.c" /* yacc.c:1646 */
8613  break;
8614 
8615  case 615:
8616 #line 3279 "parser_bison.y" /* yacc.c:1646 */
8617  { (yyval.val) = ARPHDR_PRO; }
8618 #line 8619 "parser_bison.c" /* yacc.c:1646 */
8619  break;
8620 
8621  case 616:
8622 #line 3280 "parser_bison.y" /* yacc.c:1646 */
8623  { (yyval.val) = ARPHDR_HLN; }
8624 #line 8625 "parser_bison.c" /* yacc.c:1646 */
8625  break;
8626 
8627  case 617:
8628 #line 3281 "parser_bison.y" /* yacc.c:1646 */
8629  { (yyval.val) = ARPHDR_PLN; }
8630 #line 8631 "parser_bison.c" /* yacc.c:1646 */
8631  break;
8632 
8633  case 618:
8634 #line 3282 "parser_bison.y" /* yacc.c:1646 */
8635  { (yyval.val) = ARPHDR_OP; }
8636 #line 8637 "parser_bison.c" /* yacc.c:1646 */
8637  break;
8638 
8639  case 619:
8640 #line 3286 "parser_bison.y" /* yacc.c:1646 */
8641  {
8642  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_ip, (yyvsp[0].val));
8643  }
8644 #line 8645 "parser_bison.c" /* yacc.c:1646 */
8645  break;
8646 
8647  case 620:
8648 #line 3291 "parser_bison.y" /* yacc.c:1646 */
8649  { (yyval.val) = IPHDR_VERSION; }
8650 #line 8651 "parser_bison.c" /* yacc.c:1646 */
8651  break;
8652 
8653  case 621:
8654 #line 3292 "parser_bison.y" /* yacc.c:1646 */
8655  { (yyval.val) = IPHDR_HDRLENGTH; }
8656 #line 8657 "parser_bison.c" /* yacc.c:1646 */
8657  break;
8658 
8659  case 622:
8660 #line 3293 "parser_bison.y" /* yacc.c:1646 */
8661  { (yyval.val) = IPHDR_DSCP; }
8662 #line 8663 "parser_bison.c" /* yacc.c:1646 */
8663  break;
8664 
8665  case 623:
8666 #line 3294 "parser_bison.y" /* yacc.c:1646 */
8667  { (yyval.val) = IPHDR_ECN; }
8668 #line 8669 "parser_bison.c" /* yacc.c:1646 */
8669  break;
8670 
8671  case 624:
8672 #line 3295 "parser_bison.y" /* yacc.c:1646 */
8673  { (yyval.val) = IPHDR_LENGTH; }
8674 #line 8675 "parser_bison.c" /* yacc.c:1646 */
8675  break;
8676 
8677  case 625:
8678 #line 3296 "parser_bison.y" /* yacc.c:1646 */
8679  { (yyval.val) = IPHDR_ID; }
8680 #line 8681 "parser_bison.c" /* yacc.c:1646 */
8681  break;
8682 
8683  case 626:
8684 #line 3297 "parser_bison.y" /* yacc.c:1646 */
8685  { (yyval.val) = IPHDR_FRAG_OFF; }
8686 #line 8687 "parser_bison.c" /* yacc.c:1646 */
8687  break;
8688 
8689  case 627:
8690 #line 3298 "parser_bison.y" /* yacc.c:1646 */
8691  { (yyval.val) = IPHDR_TTL; }
8692 #line 8693 "parser_bison.c" /* yacc.c:1646 */
8693  break;
8694 
8695  case 628:
8696 #line 3299 "parser_bison.y" /* yacc.c:1646 */
8697  { (yyval.val) = IPHDR_PROTOCOL; }
8698 #line 8699 "parser_bison.c" /* yacc.c:1646 */
8699  break;
8700 
8701  case 629:
8702 #line 3300 "parser_bison.y" /* yacc.c:1646 */
8703  { (yyval.val) = IPHDR_CHECKSUM; }
8704 #line 8705 "parser_bison.c" /* yacc.c:1646 */
8705  break;
8706 
8707  case 630:
8708 #line 3301 "parser_bison.y" /* yacc.c:1646 */
8709  { (yyval.val) = IPHDR_SADDR; }
8710 #line 8711 "parser_bison.c" /* yacc.c:1646 */
8711  break;
8712 
8713  case 631:
8714 #line 3302 "parser_bison.y" /* yacc.c:1646 */
8715  { (yyval.val) = IPHDR_DADDR; }
8716 #line 8717 "parser_bison.c" /* yacc.c:1646 */
8717  break;
8718 
8719  case 632:
8720 #line 3306 "parser_bison.y" /* yacc.c:1646 */
8721  {
8722  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_icmp, (yyvsp[0].val));
8723  }
8724 #line 8725 "parser_bison.c" /* yacc.c:1646 */
8725  break;
8726 
8727  case 633:
8728 #line 3311 "parser_bison.y" /* yacc.c:1646 */
8729  { (yyval.val) = ICMPHDR_TYPE; }
8730 #line 8731 "parser_bison.c" /* yacc.c:1646 */
8731  break;
8732 
8733  case 634:
8734 #line 3312 "parser_bison.y" /* yacc.c:1646 */
8735  { (yyval.val) = ICMPHDR_CODE; }
8736 #line 8737 "parser_bison.c" /* yacc.c:1646 */
8737  break;
8738 
8739  case 635:
8740 #line 3313 "parser_bison.y" /* yacc.c:1646 */
8741  { (yyval.val) = ICMPHDR_CHECKSUM; }
8742 #line 8743 "parser_bison.c" /* yacc.c:1646 */
8743  break;
8744 
8745  case 636:
8746 #line 3314 "parser_bison.y" /* yacc.c:1646 */
8747  { (yyval.val) = ICMPHDR_ID; }
8748 #line 8749 "parser_bison.c" /* yacc.c:1646 */
8749  break;
8750 
8751  case 637:
8752 #line 3315 "parser_bison.y" /* yacc.c:1646 */
8753  { (yyval.val) = ICMPHDR_SEQ; }
8754 #line 8755 "parser_bison.c" /* yacc.c:1646 */
8755  break;
8756 
8757  case 638:
8758 #line 3316 "parser_bison.y" /* yacc.c:1646 */
8759  { (yyval.val) = ICMPHDR_GATEWAY; }
8760 #line 8761 "parser_bison.c" /* yacc.c:1646 */
8761  break;
8762 
8763  case 639:
8764 #line 3317 "parser_bison.y" /* yacc.c:1646 */
8765  { (yyval.val) = ICMPHDR_MTU; }
8766 #line 8767 "parser_bison.c" /* yacc.c:1646 */
8767  break;
8768 
8769  case 640:
8770 #line 3321 "parser_bison.y" /* yacc.c:1646 */
8771  {
8772  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_ip6, (yyvsp[0].val));
8773  }
8774 #line 8775 "parser_bison.c" /* yacc.c:1646 */
8775  break;
8776 
8777  case 641:
8778 #line 3326 "parser_bison.y" /* yacc.c:1646 */
8779  { (yyval.val) = IP6HDR_VERSION; }
8780 #line 8781 "parser_bison.c" /* yacc.c:1646 */
8781  break;
8782 
8783  case 642:
8784 #line 3327 "parser_bison.y" /* yacc.c:1646 */
8785  { (yyval.val) = IP6HDR_DSCP; }
8786 #line 8787 "parser_bison.c" /* yacc.c:1646 */
8787  break;
8788 
8789  case 643:
8790 #line 3328 "parser_bison.y" /* yacc.c:1646 */
8791  { (yyval.val) = IP6HDR_ECN; }
8792 #line 8793 "parser_bison.c" /* yacc.c:1646 */
8793  break;
8794 
8795  case 644:
8796 #line 3329 "parser_bison.y" /* yacc.c:1646 */
8797  { (yyval.val) = IP6HDR_FLOWLABEL; }
8798 #line 8799 "parser_bison.c" /* yacc.c:1646 */
8799  break;
8800 
8801  case 645:
8802 #line 3330 "parser_bison.y" /* yacc.c:1646 */
8803  { (yyval.val) = IP6HDR_LENGTH; }
8804 #line 8805 "parser_bison.c" /* yacc.c:1646 */
8805  break;
8806 
8807  case 646:
8808 #line 3331 "parser_bison.y" /* yacc.c:1646 */
8809  { (yyval.val) = IP6HDR_NEXTHDR; }
8810 #line 8811 "parser_bison.c" /* yacc.c:1646 */
8811  break;
8812 
8813  case 647:
8814 #line 3332 "parser_bison.y" /* yacc.c:1646 */
8815  { (yyval.val) = IP6HDR_HOPLIMIT; }
8816 #line 8817 "parser_bison.c" /* yacc.c:1646 */
8817  break;
8818 
8819  case 648:
8820 #line 3333 "parser_bison.y" /* yacc.c:1646 */
8821  { (yyval.val) = IP6HDR_SADDR; }
8822 #line 8823 "parser_bison.c" /* yacc.c:1646 */
8823  break;
8824 
8825  case 649:
8826 #line 3334 "parser_bison.y" /* yacc.c:1646 */
8827  { (yyval.val) = IP6HDR_DADDR; }
8828 #line 8829 "parser_bison.c" /* yacc.c:1646 */
8829  break;
8830 
8831  case 650:
8832 #line 3337 "parser_bison.y" /* yacc.c:1646 */
8833  {
8834  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_icmp6, (yyvsp[0].val));
8835  }
8836 #line 8837 "parser_bison.c" /* yacc.c:1646 */
8837  break;
8838 
8839  case 651:
8840 #line 3342 "parser_bison.y" /* yacc.c:1646 */
8841  { (yyval.val) = ICMP6HDR_TYPE; }
8842 #line 8843 "parser_bison.c" /* yacc.c:1646 */
8843  break;
8844 
8845  case 652:
8846 #line 3343 "parser_bison.y" /* yacc.c:1646 */
8847  { (yyval.val) = ICMP6HDR_CODE; }
8848 #line 8849 "parser_bison.c" /* yacc.c:1646 */
8849  break;
8850 
8851  case 653:
8852 #line 3344 "parser_bison.y" /* yacc.c:1646 */
8853  { (yyval.val) = ICMP6HDR_CHECKSUM; }
8854 #line 8855 "parser_bison.c" /* yacc.c:1646 */
8855  break;
8856 
8857  case 654:
8858 #line 3345 "parser_bison.y" /* yacc.c:1646 */
8859  { (yyval.val) = ICMP6HDR_PPTR; }
8860 #line 8861 "parser_bison.c" /* yacc.c:1646 */
8861  break;
8862 
8863  case 655:
8864 #line 3346 "parser_bison.y" /* yacc.c:1646 */
8865  { (yyval.val) = ICMP6HDR_MTU; }
8866 #line 8867 "parser_bison.c" /* yacc.c:1646 */
8867  break;
8868 
8869  case 656:
8870 #line 3347 "parser_bison.y" /* yacc.c:1646 */
8871  { (yyval.val) = ICMP6HDR_ID; }
8872 #line 8873 "parser_bison.c" /* yacc.c:1646 */
8873  break;
8874 
8875  case 657:
8876 #line 3348 "parser_bison.y" /* yacc.c:1646 */
8877  { (yyval.val) = ICMP6HDR_SEQ; }
8878 #line 8879 "parser_bison.c" /* yacc.c:1646 */
8879  break;
8880 
8881  case 658:
8882 #line 3349 "parser_bison.y" /* yacc.c:1646 */
8883  { (yyval.val) = ICMP6HDR_MAXDELAY; }
8884 #line 8885 "parser_bison.c" /* yacc.c:1646 */
8885  break;
8886 
8887  case 659:
8888 #line 3353 "parser_bison.y" /* yacc.c:1646 */
8889  {
8890  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_ah, (yyvsp[0].val));
8891  }
8892 #line 8893 "parser_bison.c" /* yacc.c:1646 */
8893  break;
8894 
8895  case 660:
8896 #line 3358 "parser_bison.y" /* yacc.c:1646 */
8897  { (yyval.val) = AHHDR_NEXTHDR; }
8898 #line 8899 "parser_bison.c" /* yacc.c:1646 */
8899  break;
8900 
8901  case 661:
8902 #line 3359 "parser_bison.y" /* yacc.c:1646 */
8903  { (yyval.val) = AHHDR_HDRLENGTH; }
8904 #line 8905 "parser_bison.c" /* yacc.c:1646 */
8905  break;
8906 
8907  case 662:
8908 #line 3360 "parser_bison.y" /* yacc.c:1646 */
8909  { (yyval.val) = AHHDR_RESERVED; }
8910 #line 8911 "parser_bison.c" /* yacc.c:1646 */
8911  break;
8912 
8913  case 663:
8914 #line 3361 "parser_bison.y" /* yacc.c:1646 */
8915  { (yyval.val) = AHHDR_SPI; }
8916 #line 8917 "parser_bison.c" /* yacc.c:1646 */
8917  break;
8918 
8919  case 664:
8920 #line 3362 "parser_bison.y" /* yacc.c:1646 */
8921  { (yyval.val) = AHHDR_SEQUENCE; }
8922 #line 8923 "parser_bison.c" /* yacc.c:1646 */
8923  break;
8924 
8925  case 665:
8926 #line 3366 "parser_bison.y" /* yacc.c:1646 */
8927  {
8928  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_esp, (yyvsp[0].val));
8929  }
8930 #line 8931 "parser_bison.c" /* yacc.c:1646 */
8931  break;
8932 
8933  case 666:
8934 #line 3371 "parser_bison.y" /* yacc.c:1646 */
8935  { (yyval.val) = ESPHDR_SPI; }
8936 #line 8937 "parser_bison.c" /* yacc.c:1646 */
8937  break;
8938 
8939  case 667:
8940 #line 3372 "parser_bison.y" /* yacc.c:1646 */
8941  { (yyval.val) = ESPHDR_SEQUENCE; }
8942 #line 8943 "parser_bison.c" /* yacc.c:1646 */
8943  break;
8944 
8945  case 668:
8946 #line 3376 "parser_bison.y" /* yacc.c:1646 */
8947  {
8948  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_comp, (yyvsp[0].val));
8949  }
8950 #line 8951 "parser_bison.c" /* yacc.c:1646 */
8951  break;
8952 
8953  case 669:
8954 #line 3381 "parser_bison.y" /* yacc.c:1646 */
8955  { (yyval.val) = COMPHDR_NEXTHDR; }
8956 #line 8957 "parser_bison.c" /* yacc.c:1646 */
8957  break;
8958 
8959  case 670:
8960 #line 3382 "parser_bison.y" /* yacc.c:1646 */
8961  { (yyval.val) = COMPHDR_FLAGS; }
8962 #line 8963 "parser_bison.c" /* yacc.c:1646 */
8963  break;
8964 
8965  case 671:
8966 #line 3383 "parser_bison.y" /* yacc.c:1646 */
8967  { (yyval.val) = COMPHDR_CPI; }
8968 #line 8969 "parser_bison.c" /* yacc.c:1646 */
8969  break;
8970 
8971  case 672:
8972 #line 3387 "parser_bison.y" /* yacc.c:1646 */
8973  {
8974  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_udp, (yyvsp[0].val));
8975  }
8976 #line 8977 "parser_bison.c" /* yacc.c:1646 */
8977  break;
8978 
8979  case 673:
8980 #line 3392 "parser_bison.y" /* yacc.c:1646 */
8981  { (yyval.val) = UDPHDR_SPORT; }
8982 #line 8983 "parser_bison.c" /* yacc.c:1646 */
8983  break;
8984 
8985  case 674:
8986 #line 3393 "parser_bison.y" /* yacc.c:1646 */
8987  { (yyval.val) = UDPHDR_DPORT; }
8988 #line 8989 "parser_bison.c" /* yacc.c:1646 */
8989  break;
8990 
8991  case 675:
8992 #line 3394 "parser_bison.y" /* yacc.c:1646 */
8993  { (yyval.val) = UDPHDR_LENGTH; }
8994 #line 8995 "parser_bison.c" /* yacc.c:1646 */
8995  break;
8996 
8997  case 676:
8998 #line 3395 "parser_bison.y" /* yacc.c:1646 */
8999  { (yyval.val) = UDPHDR_CHECKSUM; }
9000 #line 9001 "parser_bison.c" /* yacc.c:1646 */
9001  break;
9002 
9003  case 677:
9004 #line 3399 "parser_bison.y" /* yacc.c:1646 */
9005  {
9006  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_udplite, (yyvsp[0].val));
9007  }
9008 #line 9009 "parser_bison.c" /* yacc.c:1646 */
9009  break;
9010 
9011  case 678:
9012 #line 3404 "parser_bison.y" /* yacc.c:1646 */
9013  { (yyval.val) = UDPHDR_SPORT; }
9014 #line 9015 "parser_bison.c" /* yacc.c:1646 */
9015  break;
9016 
9017  case 679:
9018 #line 3405 "parser_bison.y" /* yacc.c:1646 */
9019  { (yyval.val) = UDPHDR_DPORT; }
9020 #line 9021 "parser_bison.c" /* yacc.c:1646 */
9021  break;
9022 
9023  case 680:
9024 #line 3406 "parser_bison.y" /* yacc.c:1646 */
9025  { (yyval.val) = UDPHDR_LENGTH; }
9026 #line 9027 "parser_bison.c" /* yacc.c:1646 */
9027  break;
9028 
9029  case 681:
9030 #line 3407 "parser_bison.y" /* yacc.c:1646 */
9031  { (yyval.val) = UDPHDR_CHECKSUM; }
9032 #line 9033 "parser_bison.c" /* yacc.c:1646 */
9033  break;
9034 
9035  case 682:
9036 #line 3411 "parser_bison.y" /* yacc.c:1646 */
9037  {
9038  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_tcp, (yyvsp[0].val));
9039  }
9040 #line 9041 "parser_bison.c" /* yacc.c:1646 */
9041  break;
9042 
9043  case 683:
9044 #line 3415 "parser_bison.y" /* yacc.c:1646 */
9045  {
9046  (yyval.expr) = tcpopt_expr_alloc(&(yyloc), (yyvsp[-1].val), (yyvsp[0].val));
9047  }
9048 #line 9049 "parser_bison.c" /* yacc.c:1646 */
9049  break;
9050 
9051  case 684:
9052 #line 3419 "parser_bison.y" /* yacc.c:1646 */
9053  {
9054  (yyval.expr) = tcpopt_expr_alloc(&(yyloc), (yyvsp[0].val), TCPOPTHDR_FIELD_KIND);
9055  (yyval.expr)->exthdr.flags = NFT_EXTHDR_F_PRESENT;
9056  }
9057 #line 9058 "parser_bison.c" /* yacc.c:1646 */
9058  break;
9059 
9060  case 685:
9061 #line 3425 "parser_bison.y" /* yacc.c:1646 */
9062  { (yyval.val) = TCPHDR_SPORT; }
9063 #line 9064 "parser_bison.c" /* yacc.c:1646 */
9064  break;
9065 
9066  case 686:
9067 #line 3426 "parser_bison.y" /* yacc.c:1646 */
9068  { (yyval.val) = TCPHDR_DPORT; }
9069 #line 9070 "parser_bison.c" /* yacc.c:1646 */
9070  break;
9071 
9072  case 687:
9073 #line 3427 "parser_bison.y" /* yacc.c:1646 */
9074  { (yyval.val) = TCPHDR_SEQ; }
9075 #line 9076 "parser_bison.c" /* yacc.c:1646 */
9076  break;
9077 
9078  case 688:
9079 #line 3428 "parser_bison.y" /* yacc.c:1646 */
9080  { (yyval.val) = TCPHDR_ACKSEQ; }
9081 #line 9082 "parser_bison.c" /* yacc.c:1646 */
9082  break;
9083 
9084  case 689:
9085 #line 3429 "parser_bison.y" /* yacc.c:1646 */
9086  { (yyval.val) = TCPHDR_DOFF; }
9087 #line 9088 "parser_bison.c" /* yacc.c:1646 */
9088  break;
9089 
9090  case 690:
9091 #line 3430 "parser_bison.y" /* yacc.c:1646 */
9092  { (yyval.val) = TCPHDR_RESERVED; }
9093 #line 9094 "parser_bison.c" /* yacc.c:1646 */
9094  break;
9095 
9096  case 691:
9097 #line 3431 "parser_bison.y" /* yacc.c:1646 */
9098  { (yyval.val) = TCPHDR_FLAGS; }
9099 #line 9100 "parser_bison.c" /* yacc.c:1646 */
9100  break;
9101 
9102  case 692:
9103 #line 3432 "parser_bison.y" /* yacc.c:1646 */
9104  { (yyval.val) = TCPHDR_WINDOW; }
9105 #line 9106 "parser_bison.c" /* yacc.c:1646 */
9106  break;
9107 
9108  case 693:
9109 #line 3433 "parser_bison.y" /* yacc.c:1646 */
9110  { (yyval.val) = TCPHDR_CHECKSUM; }
9111 #line 9112 "parser_bison.c" /* yacc.c:1646 */
9112  break;
9113 
9114  case 694:
9115 #line 3434 "parser_bison.y" /* yacc.c:1646 */
9116  { (yyval.val) = TCPHDR_URGPTR; }
9117 #line 9118 "parser_bison.c" /* yacc.c:1646 */
9118  break;
9119 
9120  case 695:
9121 #line 3437 "parser_bison.y" /* yacc.c:1646 */
9122  { (yyval.val) = TCPOPTHDR_EOL; }
9123 #line 9124 "parser_bison.c" /* yacc.c:1646 */
9124  break;
9125 
9126  case 696:
9127 #line 3438 "parser_bison.y" /* yacc.c:1646 */
9128  { (yyval.val) = TCPOPTHDR_NOOP; }
9129 #line 9130 "parser_bison.c" /* yacc.c:1646 */
9130  break;
9131 
9132  case 697:
9133 #line 3439 "parser_bison.y" /* yacc.c:1646 */
9134  { (yyval.val) = TCPOPTHDR_MAXSEG; }
9135 #line 9136 "parser_bison.c" /* yacc.c:1646 */
9136  break;
9137 
9138  case 698:
9139 #line 3440 "parser_bison.y" /* yacc.c:1646 */
9140  { (yyval.val) = TCPOPTHDR_WINDOW; }
9141 #line 9142 "parser_bison.c" /* yacc.c:1646 */
9142  break;
9143 
9144  case 699:
9145 #line 3441 "parser_bison.y" /* yacc.c:1646 */
9146  { (yyval.val) = TCPOPTHDR_SACK_PERMITTED; }
9147 #line 9148 "parser_bison.c" /* yacc.c:1646 */
9148  break;
9149 
9150  case 700:
9151 #line 3442 "parser_bison.y" /* yacc.c:1646 */
9152  { (yyval.val) = TCPOPTHDR_SACK0; }
9153 #line 9154 "parser_bison.c" /* yacc.c:1646 */
9154  break;
9155 
9156  case 701:
9157 #line 3443 "parser_bison.y" /* yacc.c:1646 */
9158  { (yyval.val) = TCPOPTHDR_SACK0; }
9159 #line 9160 "parser_bison.c" /* yacc.c:1646 */
9160  break;
9161 
9162  case 702:
9163 #line 3444 "parser_bison.y" /* yacc.c:1646 */
9164  { (yyval.val) = TCPOPTHDR_SACK1; }
9165 #line 9166 "parser_bison.c" /* yacc.c:1646 */
9166  break;
9167 
9168  case 703:
9169 #line 3445 "parser_bison.y" /* yacc.c:1646 */
9170  { (yyval.val) = TCPOPTHDR_SACK2; }
9171 #line 9172 "parser_bison.c" /* yacc.c:1646 */
9172  break;
9173 
9174  case 704:
9175 #line 3446 "parser_bison.y" /* yacc.c:1646 */
9176  { (yyval.val) = TCPOPTHDR_SACK3; }
9177 #line 9178 "parser_bison.c" /* yacc.c:1646 */
9178  break;
9179 
9180  case 705:
9181 #line 3447 "parser_bison.y" /* yacc.c:1646 */
9182  { (yyval.val) = TCPOPTHDR_ECHO; }
9183 #line 9184 "parser_bison.c" /* yacc.c:1646 */
9184  break;
9185 
9186  case 706:
9187 #line 3448 "parser_bison.y" /* yacc.c:1646 */
9188  { (yyval.val) = TCPOPTHDR_TIMESTAMP; }
9189 #line 9190 "parser_bison.c" /* yacc.c:1646 */
9190  break;
9191 
9192  case 707:
9193 #line 3451 "parser_bison.y" /* yacc.c:1646 */
9194  { (yyval.val) = TCPOPTHDR_FIELD_KIND; }
9195 #line 9196 "parser_bison.c" /* yacc.c:1646 */
9196  break;
9197 
9198  case 708:
9199 #line 3452 "parser_bison.y" /* yacc.c:1646 */
9200  { (yyval.val) = TCPOPTHDR_FIELD_LENGTH; }
9201 #line 9202 "parser_bison.c" /* yacc.c:1646 */
9202  break;
9203 
9204  case 709:
9205 #line 3453 "parser_bison.y" /* yacc.c:1646 */
9206  { (yyval.val) = TCPOPTHDR_FIELD_SIZE; }
9207 #line 9208 "parser_bison.c" /* yacc.c:1646 */
9208  break;
9209 
9210  case 710:
9211 #line 3454 "parser_bison.y" /* yacc.c:1646 */
9212  { (yyval.val) = TCPOPTHDR_FIELD_COUNT; }
9213 #line 9214 "parser_bison.c" /* yacc.c:1646 */
9214  break;
9215 
9216  case 711:
9217 #line 3455 "parser_bison.y" /* yacc.c:1646 */
9218  { (yyval.val) = TCPOPTHDR_FIELD_LEFT; }
9219 #line 9220 "parser_bison.c" /* yacc.c:1646 */
9220  break;
9221 
9222  case 712:
9223 #line 3456 "parser_bison.y" /* yacc.c:1646 */
9224  { (yyval.val) = TCPOPTHDR_FIELD_RIGHT; }
9225 #line 9226 "parser_bison.c" /* yacc.c:1646 */
9226  break;
9227 
9228  case 713:
9229 #line 3457 "parser_bison.y" /* yacc.c:1646 */
9230  { (yyval.val) = TCPOPTHDR_FIELD_TSVAL; }
9231 #line 9232 "parser_bison.c" /* yacc.c:1646 */
9232  break;
9233 
9234  case 714:
9235 #line 3458 "parser_bison.y" /* yacc.c:1646 */
9236  { (yyval.val) = TCPOPTHDR_FIELD_TSECR; }
9237 #line 9238 "parser_bison.c" /* yacc.c:1646 */
9238  break;
9239 
9240  case 715:
9241 #line 3462 "parser_bison.y" /* yacc.c:1646 */
9242  {
9243  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_dccp, (yyvsp[0].val));
9244  }
9245 #line 9246 "parser_bison.c" /* yacc.c:1646 */
9246  break;
9247 
9248  case 716:
9249 #line 3467 "parser_bison.y" /* yacc.c:1646 */
9250  { (yyval.val) = DCCPHDR_SPORT; }
9251 #line 9252 "parser_bison.c" /* yacc.c:1646 */
9252  break;
9253 
9254  case 717:
9255 #line 3468 "parser_bison.y" /* yacc.c:1646 */
9256  { (yyval.val) = DCCPHDR_DPORT; }
9257 #line 9258 "parser_bison.c" /* yacc.c:1646 */
9258  break;
9259 
9260  case 718:
9261 #line 3469 "parser_bison.y" /* yacc.c:1646 */
9262  { (yyval.val) = DCCPHDR_TYPE; }
9263 #line 9264 "parser_bison.c" /* yacc.c:1646 */
9264  break;
9265 
9266  case 719:
9267 #line 3473 "parser_bison.y" /* yacc.c:1646 */
9268  {
9269  (yyval.expr) = payload_expr_alloc(&(yyloc), &proto_sctp, (yyvsp[0].val));
9270  }
9271 #line 9272 "parser_bison.c" /* yacc.c:1646 */
9272  break;
9273 
9274  case 720:
9275 #line 3478 "parser_bison.y" /* yacc.c:1646 */
9276  { (yyval.val) = SCTPHDR_SPORT; }
9277 #line 9278 "parser_bison.c" /* yacc.c:1646 */
9278  break;
9279 
9280  case 721:
9281 #line 3479 "parser_bison.y" /* yacc.c:1646 */
9282  { (yyval.val) = SCTPHDR_DPORT; }
9283 #line 9284 "parser_bison.c" /* yacc.c:1646 */
9284  break;
9285 
9286  case 722:
9287 #line 3480 "parser_bison.y" /* yacc.c:1646 */
9288  { (yyval.val) = SCTPHDR_VTAG; }
9289 #line 9290 "parser_bison.c" /* yacc.c:1646 */
9290  break;
9291 
9292  case 723:
9293 #line 3481 "parser_bison.y" /* yacc.c:1646 */
9294  { (yyval.val) = SCTPHDR_CHECKSUM; }
9295 #line 9296 "parser_bison.c" /* yacc.c:1646 */
9296  break;
9297 
9298  case 731:
9299 #line 3494 "parser_bison.y" /* yacc.c:1646 */
9300  {
9301  (yyval.expr) = exthdr_expr_alloc(&(yyloc), &exthdr_hbh, (yyvsp[0].val));
9302  }
9303 #line 9304 "parser_bison.c" /* yacc.c:1646 */
9304  break;
9305 
9306  case 732:
9307 #line 3499 "parser_bison.y" /* yacc.c:1646 */
9308  { (yyval.val) = HBHHDR_NEXTHDR; }
9309 #line 9310 "parser_bison.c" /* yacc.c:1646 */
9310  break;
9311 
9312  case 733:
9313 #line 3500 "parser_bison.y" /* yacc.c:1646 */
9314  { (yyval.val) = HBHHDR_HDRLENGTH; }
9315 #line 9316 "parser_bison.c" /* yacc.c:1646 */
9316  break;
9317 
9318  case 734:
9319 #line 3504 "parser_bison.y" /* yacc.c:1646 */
9320  {
9321  (yyval.expr) = exthdr_expr_alloc(&(yyloc), &exthdr_rt, (yyvsp[0].val));
9322  }
9323 #line 9324 "parser_bison.c" /* yacc.c:1646 */
9324  break;
9325 
9326  case 735:
9327 #line 3509 "parser_bison.y" /* yacc.c:1646 */
9328  { (yyval.val) = RTHDR_NEXTHDR; }
9329 #line 9330 "parser_bison.c" /* yacc.c:1646 */
9330  break;
9331 
9332  case 736:
9333 #line 3510 "parser_bison.y" /* yacc.c:1646 */
9334  { (yyval.val) = RTHDR_HDRLENGTH; }
9335 #line 9336 "parser_bison.c" /* yacc.c:1646 */
9336  break;
9337 
9338  case 737:
9339 #line 3511 "parser_bison.y" /* yacc.c:1646 */
9340  { (yyval.val) = RTHDR_TYPE; }
9341 #line 9342 "parser_bison.c" /* yacc.c:1646 */
9342  break;
9343 
9344  case 738:
9345 #line 3512 "parser_bison.y" /* yacc.c:1646 */
9346  { (yyval.val) = RTHDR_SEG_LEFT; }
9347 #line 9348 "parser_bison.c" /* yacc.c:1646 */
9348  break;
9349 
9350  case 739:
9351 #line 3516 "parser_bison.y" /* yacc.c:1646 */
9352  {
9353  (yyval.expr) = exthdr_expr_alloc(&(yyloc), &exthdr_rt0, (yyvsp[0].val));
9354  }
9355 #line 9356 "parser_bison.c" /* yacc.c:1646 */
9356  break;
9357 
9358  case 740:
9359 #line 3522 "parser_bison.y" /* yacc.c:1646 */
9360  {
9361  (yyval.val) = RT0HDR_ADDR_1 + (yyvsp[-1].val) - 1;
9362  }
9363 #line 9364 "parser_bison.c" /* yacc.c:1646 */
9364  break;
9365 
9366  case 741:
9367 #line 3528 "parser_bison.y" /* yacc.c:1646 */
9368  {
9369  (yyval.expr) = exthdr_expr_alloc(&(yyloc), &exthdr_rt2, (yyvsp[0].val));
9370  }
9371 #line 9372 "parser_bison.c" /* yacc.c:1646 */
9372  break;
9373 
9374  case 742:
9375 #line 3533 "parser_bison.y" /* yacc.c:1646 */
9376  { (yyval.val) = RT2HDR_ADDR; }
9377 #line 9378 "parser_bison.c" /* yacc.c:1646 */
9378  break;
9379 
9380  case 743:
9381 #line 3537 "parser_bison.y" /* yacc.c:1646 */
9382  {
9383  (yyval.expr) = exthdr_expr_alloc(&(yyloc), &exthdr_frag, (yyvsp[0].val));
9384  }
9385 #line 9386 "parser_bison.c" /* yacc.c:1646 */
9386  break;
9387 
9388  case 744:
9389 #line 3542 "parser_bison.y" /* yacc.c:1646 */
9390  { (yyval.val) = FRAGHDR_NEXTHDR; }
9391 #line 9392 "parser_bison.c" /* yacc.c:1646 */
9392  break;
9393 
9394  case 745:
9395 #line 3543 "parser_bison.y" /* yacc.c:1646 */
9396  { (yyval.val) = FRAGHDR_RESERVED; }
9397 #line 9398 "parser_bison.c" /* yacc.c:1646 */
9398  break;
9399 
9400  case 746:
9401 #line 3544 "parser_bison.y" /* yacc.c:1646 */
9402  { (yyval.val) = FRAGHDR_FRAG_OFF; }
9403 #line 9404 "parser_bison.c" /* yacc.c:1646 */
9404  break;
9405 
9406  case 747:
9407 #line 3545 "parser_bison.y" /* yacc.c:1646 */
9408  { (yyval.val) = FRAGHDR_RESERVED2; }
9409 #line 9410 "parser_bison.c" /* yacc.c:1646 */
9410  break;
9411 
9412  case 748:
9413 #line 3546 "parser_bison.y" /* yacc.c:1646 */
9414  { (yyval.val) = FRAGHDR_MFRAGS; }
9415 #line 9416 "parser_bison.c" /* yacc.c:1646 */
9416  break;
9417 
9418  case 749:
9419 #line 3547 "parser_bison.y" /* yacc.c:1646 */
9420  { (yyval.val) = FRAGHDR_ID; }
9421 #line 9422 "parser_bison.c" /* yacc.c:1646 */
9422  break;
9423 
9424  case 750:
9425 #line 3551 "parser_bison.y" /* yacc.c:1646 */
9426  {
9427  (yyval.expr) = exthdr_expr_alloc(&(yyloc), &exthdr_dst, (yyvsp[0].val));
9428  }
9429 #line 9430 "parser_bison.c" /* yacc.c:1646 */
9430  break;
9431 
9432  case 751:
9433 #line 3556 "parser_bison.y" /* yacc.c:1646 */
9434  { (yyval.val) = DSTHDR_NEXTHDR; }
9435 #line 9436 "parser_bison.c" /* yacc.c:1646 */
9436  break;
9437 
9438  case 752:
9439 #line 3557 "parser_bison.y" /* yacc.c:1646 */
9440  { (yyval.val) = DSTHDR_HDRLENGTH; }
9441 #line 9442 "parser_bison.c" /* yacc.c:1646 */
9442  break;
9443 
9444  case 753:
9445 #line 3561 "parser_bison.y" /* yacc.c:1646 */
9446  {
9447  (yyval.expr) = exthdr_expr_alloc(&(yyloc), &exthdr_mh, (yyvsp[0].val));
9448  }
9449 #line 9450 "parser_bison.c" /* yacc.c:1646 */
9450  break;
9451 
9452  case 754:
9453 #line 3566 "parser_bison.y" /* yacc.c:1646 */
9454  { (yyval.val) = MHHDR_NEXTHDR; }
9455 #line 9456 "parser_bison.c" /* yacc.c:1646 */
9456  break;
9457 
9458  case 755:
9459 #line 3567 "parser_bison.y" /* yacc.c:1646 */
9460  { (yyval.val) = MHHDR_HDRLENGTH; }
9461 #line 9462 "parser_bison.c" /* yacc.c:1646 */
9462  break;
9463 
9464  case 756:
9465 #line 3568 "parser_bison.y" /* yacc.c:1646 */
9466  { (yyval.val) = MHHDR_TYPE; }
9467 #line 9468 "parser_bison.c" /* yacc.c:1646 */
9468  break;
9469 
9470  case 757:
9471 #line 3569 "parser_bison.y" /* yacc.c:1646 */
9472  { (yyval.val) = MHHDR_RESERVED; }
9473 #line 9474 "parser_bison.c" /* yacc.c:1646 */
9474  break;
9475 
9476  case 758:
9477 #line 3570 "parser_bison.y" /* yacc.c:1646 */
9478  { (yyval.val) = MHHDR_CHECKSUM; }
9479 #line 9480 "parser_bison.c" /* yacc.c:1646 */
9480  break;
9481 
9482  case 759:
9483 #line 3574 "parser_bison.y" /* yacc.c:1646 */
9484  {
9485  const struct exthdr_desc *desc;
9486 
9487  desc = exthdr_find_proto((yyvsp[0].val));
9488 
9489  /* Assume that NEXTHDR template is always
9490  * the fist one in list of templates.
9491  */
9492  (yyval.expr) = exthdr_expr_alloc(&(yyloc), desc, 1);
9493  (yyval.expr)->exthdr.flags = NFT_EXTHDR_F_PRESENT;
9494  }
9495 #line 9496 "parser_bison.c" /* yacc.c:1646 */
9496  break;
9497 
9498  case 760:
9499 #line 3587 "parser_bison.y" /* yacc.c:1646 */
9500  { (yyval.val) = IPPROTO_HOPOPTS; }
9501 #line 9502 "parser_bison.c" /* yacc.c:1646 */
9502  break;
9503 
9504  case 761:
9505 #line 3588 "parser_bison.y" /* yacc.c:1646 */
9506  { (yyval.val) = IPPROTO_ROUTING; }
9507 #line 9508 "parser_bison.c" /* yacc.c:1646 */
9508  break;
9509 
9510  case 762:
9511 #line 3589 "parser_bison.y" /* yacc.c:1646 */
9512  { (yyval.val) = IPPROTO_FRAGMENT; }
9513 #line 9514 "parser_bison.c" /* yacc.c:1646 */
9514  break;
9515 
9516  case 763:
9517 #line 3590 "parser_bison.y" /* yacc.c:1646 */
9518  { (yyval.val) = IPPROTO_DSTOPTS; }
9519 #line 9520 "parser_bison.c" /* yacc.c:1646 */
9520  break;
9521 
9522  case 764:
9523 #line 3591 "parser_bison.y" /* yacc.c:1646 */
9524  { (yyval.val) = IPPROTO_MH; }
9525 #line 9526 "parser_bison.c" /* yacc.c:1646 */
9526  break;
9527 
9528 
9529 #line 9530 "parser_bison.c" /* yacc.c:1646 */
9530  default: break;
9531  }
9532  /* User semantic actions sometimes alter yychar, and that requires
9533  that yytoken be updated with the new translation. We take the
9534  approach of translating immediately before every use of yytoken.
9535  One alternative is translating here after every semantic action,
9536  but that translation would be missed if the semantic action invokes
9537  YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
9538  if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
9539  incorrect destructor might then be invoked immediately. In the
9540  case of YYERROR or YYBACKUP, subsequent parser actions might lead
9541  to an incorrect destructor call or verbose syntax error message
9542  before the lookahead is translated. */
9543  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
9544 
9545  YYPOPSTACK (yylen);
9546  yylen = 0;
9547  YY_STACK_PRINT (yyss, yyssp);
9548 
9549  *++yyvsp = yyval;
9550  *++yylsp = yyloc;
9551 
9552  /* Now 'shift' the result of the reduction. Determine what state
9553  that goes to, based on the state we popped back to and the rule
9554  number reduced by. */
9555 
9556  yyn = yyr1[yyn];
9557 
9558  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
9559  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
9560  yystate = yytable[yystate];
9561  else
9562  yystate = yydefgoto[yyn - YYNTOKENS];
9563 
9564  goto yynewstate;
9565 
9566 
9567 /*--------------------------------------.
9568 | yyerrlab -- here on detecting error. |
9569 `--------------------------------------*/
9570 yyerrlab:
9571  /* Make sure we have latest lookahead translation. See comments at
9572  user semantic actions for why this is necessary. */
9573  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
9574 
9575  /* If not already recovering from an error, report this error. */
9576  if (!yyerrstatus)
9577  {
9578  ++yynerrs;
9579 #if ! YYERROR_VERBOSE
9580  yyerror (&yylloc, scanner, state, YY_("syntax error"));
9581 #else
9582 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
9583  yyssp, yytoken)
9584  {
9585  char const *yymsgp = YY_("syntax error");
9586  int yysyntax_error_status;
9587  yysyntax_error_status = YYSYNTAX_ERROR;
9588  if (yysyntax_error_status == 0)
9589  yymsgp = yymsg;
9590  else if (yysyntax_error_status == 1)
9591  {
9592  if (yymsg != yymsgbuf)
9593  YYSTACK_FREE (yymsg);
9594  yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
9595  if (!yymsg)
9596  {
9597  yymsg = yymsgbuf;
9598  yymsg_alloc = sizeof yymsgbuf;
9599  yysyntax_error_status = 2;
9600  }
9601  else
9602  {
9603  yysyntax_error_status = YYSYNTAX_ERROR;
9604  yymsgp = yymsg;
9605  }
9606  }
9607  yyerror (&yylloc, scanner, state, yymsgp);
9608  if (yysyntax_error_status == 2)
9609  goto yyexhaustedlab;
9610  }
9611 # undef YYSYNTAX_ERROR
9612 #endif
9613  }
9614 
9615  yyerror_range[1] = yylloc;
9616 
9617  if (yyerrstatus == 3)
9618  {
9619  /* If just tried and failed to reuse lookahead token after an
9620  error, discard it. */
9621 
9622  if (yychar <= YYEOF)
9623  {
9624  /* Return failure if at end of input. */
9625  if (yychar == YYEOF)
9626  YYABORT;
9627  }
9628  else
9629  {
9630  yydestruct ("Error: discarding",
9631  yytoken, &yylval, &yylloc, scanner, state);
9632  yychar = YYEMPTY;
9633  }
9634  }
9635 
9636  /* Else will try to reuse lookahead token after shifting the error
9637  token. */
9638  goto yyerrlab1;
9639 
9640 
9641 /*---------------------------------------------------.
9642 | yyerrorlab -- error raised explicitly by YYERROR. |
9643 `---------------------------------------------------*/
9644 yyerrorlab:
9645 
9646  /* Pacify compilers like GCC when the user code never invokes
9647  YYERROR and the label yyerrorlab therefore never appears in user
9648  code. */
9649  if (/*CONSTCOND*/ 0)
9650  goto yyerrorlab;
9651 
9652  yyerror_range[1] = yylsp[1-yylen];
9653  /* Do not reclaim the symbols of the rule whose action triggered
9654  this YYERROR. */
9655  YYPOPSTACK (yylen);
9656  yylen = 0;
9657  YY_STACK_PRINT (yyss, yyssp);
9658  yystate = *yyssp;
9659  goto yyerrlab1;
9660 
9661 
9662 /*-------------------------------------------------------------.
9663 | yyerrlab1 -- common code for both syntax error and YYERROR. |
9664 `-------------------------------------------------------------*/
9665 yyerrlab1:
9666  yyerrstatus = 3; /* Each real token shifted decrements this. */
9667 
9668  for (;;)
9669  {
9670  yyn = yypact[yystate];
9671  if (!yypact_value_is_default (yyn))
9672  {
9673  yyn += YYTERROR;
9674  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
9675  {
9676  yyn = yytable[yyn];
9677  if (0 < yyn)
9678  break;
9679  }
9680  }
9681 
9682  /* Pop the current state because it cannot handle the error token. */
9683  if (yyssp == yyss)
9684  YYABORT;
9685 
9686  yyerror_range[1] = *yylsp;
9687  yydestruct ("Error: popping",
9688  yystos[yystate], yyvsp, yylsp, scanner, state);
9689  YYPOPSTACK (1);
9690  yystate = *yyssp;
9691  YY_STACK_PRINT (yyss, yyssp);
9692  }
9693 
9694  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
9695  *++yyvsp = yylval;
9696  YY_IGNORE_MAYBE_UNINITIALIZED_END
9697 
9698  yyerror_range[2] = yylloc;
9699  /* Using YYLLOC is tempting, but would change the location of
9700  the lookahead. YYLOC is available though. */
9701  YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
9702  *++yylsp = yyloc;
9703 
9704  /* Shift the error token. */
9705  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
9706 
9707  yystate = yyn;
9708  goto yynewstate;
9709 
9710 
9711 /*-------------------------------------.
9712 | yyacceptlab -- YYACCEPT comes here. |
9713 `-------------------------------------*/
9714 yyacceptlab:
9715  yyresult = 0;
9716  goto yyreturn;
9717 
9718 /*-----------------------------------.
9719 | yyabortlab -- YYABORT comes here. |
9720 `-----------------------------------*/
9721 yyabortlab:
9722  yyresult = 1;
9723  goto yyreturn;
9724 
9725 #if !defined yyoverflow || YYERROR_VERBOSE
9726 /*-------------------------------------------------.
9727 | yyexhaustedlab -- memory exhaustion comes here. |
9728 `-------------------------------------------------*/
9729 yyexhaustedlab:
9730  yyerror (&yylloc, scanner, state, YY_("memory exhausted"));
9731  yyresult = 2;
9732  /* Fall through. */
9733 #endif
9734 
9735 yyreturn:
9736  if (yychar != YYEMPTY)
9737  {
9738  /* Make sure we have latest lookahead translation. See comments at
9739  user semantic actions for why this is necessary. */
9740  yytoken = YYTRANSLATE (yychar);
9741  yydestruct ("Cleanup: discarding lookahead",
9742  yytoken, &yylval, &yylloc, scanner, state);
9743  }
9744  /* Do not reclaim the symbols of the rule whose action triggered
9745  this YYABORT or YYACCEPT. */
9746  YYPOPSTACK (yylen);
9747  YY_STACK_PRINT (yyss, yyssp);
9748  while (yyssp != yyss)
9749  {
9750  yydestruct ("Cleanup: popping",
9751  yystos[*yyssp], yyvsp, yylsp, scanner, state);
9752  YYPOPSTACK (1);
9753  }
9754 #ifndef yyoverflow
9755  if (yyss != yyssa)
9756  YYSTACK_FREE (yyss);
9757 #endif
9758 #if YYERROR_VERBOSE
9759  if (yymsg != yymsgbuf)
9760  YYSTACK_FREE (yymsg);
9761 #endif
9762  return yyresult;
9763 }
9764 #line 3594 "parser_bison.y" /* yacc.c:1906 */
9765