1 /* A Bison parser, made by GNU Bison 3.0.2. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2013 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.2"
48
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers. */
53 #define YYPURE 0
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 pcap_parse
64 #define yylex pcap_lex
65 #define yyerror pcap_error
66 #define yydebug pcap_debug
67 #define yynerrs pcap_nerrs
68
69 #define yylval pcap_lval
70 #define yychar pcap_char
71
72 /* Copy the first part of user declarations. */
73 #line 1 "grammar.y" /* yacc.c:339 */
74
75 /*
76 * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996
77 * The Regents of the University of California. All rights reserved.
78 *
79 * Redistribution and use in source and binary forms, with or without
80 * modification, are permitted provided that: (1) source code distributions
81 * retain the above copyright notice and this paragraph in its entirety, (2)
82 * distributions including binary code include the above copyright notice and
83 * this paragraph in its entirety in the documentation or other materials
84 * provided with the distribution, and (3) all advertising materials mentioning
85 * features or use of this software display the following acknowledgement:
86 * ``This product includes software developed by the University of California,
87 * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
88 * the University nor the names of its contributors may be used to endorse
89 * or promote products derived from this software without specific prior
90 * written permission.
91 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
92 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
93 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
94 *
95 */
96
97 #ifdef HAVE_CONFIG_H
98 #include "config.h"
99 #endif
100
101 #ifdef WIN32
102 #include <pcap-stdinc.h>
103 #else /* WIN32 */
104 #include <sys/types.h>
105 #include <sys/socket.h>
106 #endif /* WIN32 */
107
108 #include <stdlib.h>
109
110 #ifndef WIN32
111 #if __STDC__
112 struct mbuf;
113 struct rtentry;
114 #endif
115
116 #include <netinet/in.h>
117 #include <arpa/inet.h>
118 #endif /* WIN32 */
119
120 #include <stdio.h>
121
122 #include "pcap-int.h"
123
124 #include "gencode.h"
125 #ifdef HAVE_NET_PFVAR_H
126 #include <net/if.h>
127 #include <net/pfvar.h>
128 #include <net/if_pflog.h>
129 #endif
130 #include "llc.h"
131 #include "ieee80211.h"
132 #include <pcap/namedb.h>
133
134 #ifdef HAVE_OS_PROTO_H
135 #include "os-proto.h"
136 #endif
137
138 #define QSET(q, p, d, a) (q).proto = (p),\
139 (q).dir = (d),\
140 (q).addr = (a)
141
142 struct tok {
143 int v; /* value */
144 const char *s; /* string */
145 };
146
147 static const struct tok ieee80211_types[] = {
148 { IEEE80211_FC0_TYPE_DATA, "data" },
149 { IEEE80211_FC0_TYPE_MGT, "mgt" },
150 { IEEE80211_FC0_TYPE_MGT, "management" },
151 { IEEE80211_FC0_TYPE_CTL, "ctl" },
152 { IEEE80211_FC0_TYPE_CTL, "control" },
153 { 0, NULL }
154 };
155 static const struct tok ieee80211_mgt_subtypes[] = {
156 { IEEE80211_FC0_SUBTYPE_ASSOC_REQ, "assocreq" },
157 { IEEE80211_FC0_SUBTYPE_ASSOC_REQ, "assoc-req" },
158 { IEEE80211_FC0_SUBTYPE_ASSOC_RESP, "assocresp" },
159 { IEEE80211_FC0_SUBTYPE_ASSOC_RESP, "assoc-resp" },
160 { IEEE80211_FC0_SUBTYPE_REASSOC_REQ, "reassocreq" },
161 { IEEE80211_FC0_SUBTYPE_REASSOC_REQ, "reassoc-req" },
162 { IEEE80211_FC0_SUBTYPE_REASSOC_RESP, "reassocresp" },
163 { IEEE80211_FC0_SUBTYPE_REASSOC_RESP, "reassoc-resp" },
164 { IEEE80211_FC0_SUBTYPE_PROBE_REQ, "probereq" },
165 { IEEE80211_FC0_SUBTYPE_PROBE_REQ, "probe-req" },
166 { IEEE80211_FC0_SUBTYPE_PROBE_RESP, "proberesp" },
167 { IEEE80211_FC0_SUBTYPE_PROBE_RESP, "probe-resp" },
168 { IEEE80211_FC0_SUBTYPE_BEACON, "beacon" },
169 { IEEE80211_FC0_SUBTYPE_ATIM, "atim" },
170 { IEEE80211_FC0_SUBTYPE_DISASSOC, "disassoc" },
171 { IEEE80211_FC0_SUBTYPE_DISASSOC, "disassociation" },
172 { IEEE80211_FC0_SUBTYPE_AUTH, "auth" },
173 { IEEE80211_FC0_SUBTYPE_AUTH, "authentication" },
174 { IEEE80211_FC0_SUBTYPE_DEAUTH, "deauth" },
175 { IEEE80211_FC0_SUBTYPE_DEAUTH, "deauthentication" },
176 { 0, NULL }
177 };
178 static const struct tok ieee80211_ctl_subtypes[] = {
179 { IEEE80211_FC0_SUBTYPE_PS_POLL, "ps-poll" },
180 { IEEE80211_FC0_SUBTYPE_RTS, "rts" },
181 { IEEE80211_FC0_SUBTYPE_CTS, "cts" },
182 { IEEE80211_FC0_SUBTYPE_ACK, "ack" },
183 { IEEE80211_FC0_SUBTYPE_CF_END, "cf-end" },
184 { IEEE80211_FC0_SUBTYPE_CF_END_ACK, "cf-end-ack" },
185 { 0, NULL }
186 };
187 static const struct tok ieee80211_data_subtypes[] = {
188 { IEEE80211_FC0_SUBTYPE_DATA, "data" },
189 { IEEE80211_FC0_SUBTYPE_CF_ACK, "data-cf-ack" },
190 { IEEE80211_FC0_SUBTYPE_CF_POLL, "data-cf-poll" },
191 { IEEE80211_FC0_SUBTYPE_CF_ACPL, "data-cf-ack-poll" },
192 { IEEE80211_FC0_SUBTYPE_NODATA, "null" },
193 { IEEE80211_FC0_SUBTYPE_NODATA_CF_ACK, "cf-ack" },
194 { IEEE80211_FC0_SUBTYPE_NODATA_CF_POLL, "cf-poll" },
195 { IEEE80211_FC0_SUBTYPE_NODATA_CF_ACPL, "cf-ack-poll" },
196 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_DATA, "qos-data" },
197 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_CF_ACK, "qos-data-cf-ack" },
198 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_CF_POLL, "qos-data-cf-poll" },
199 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_CF_ACPL, "qos-data-cf-ack-poll" },
200 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_NODATA, "qos" },
201 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_NODATA_CF_POLL, "qos-cf-poll" },
202 { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_NODATA_CF_ACPL, "qos-cf-ack-poll" },
203 { 0, NULL }
204 };
205 static const struct tok llc_s_subtypes[] = {
206 { LLC_RR, "rr" },
207 { LLC_RNR, "rnr" },
208 { LLC_REJ, "rej" },
209 { 0, NULL }
210 };
211 static const struct tok llc_u_subtypes[] = {
212 { LLC_UI, "ui" },
213 { LLC_UA, "ua" },
214 { LLC_DISC, "disc" },
215 { LLC_DM, "dm" },
216 { LLC_SABME, "sabme" },
217 { LLC_TEST, "test" },
218 { LLC_XID, "xid" },
219 { LLC_FRMR, "frmr" },
220 { 0, NULL }
221 };
222 struct type2tok {
223 int type;
224 const struct tok *tok;
225 };
226 static const struct type2tok ieee80211_type_subtypes[] = {
227 { IEEE80211_FC0_TYPE_MGT, ieee80211_mgt_subtypes },
228 { IEEE80211_FC0_TYPE_CTL, ieee80211_ctl_subtypes },
229 { IEEE80211_FC0_TYPE_DATA, ieee80211_data_subtypes },
230 { 0, NULL }
231 };
232
233 static int
str2tok(const char * str,const struct tok * toks)234 str2tok(const char *str, const struct tok *toks)
235 {
236 int i;
237
238 for (i = 0; toks[i].s != NULL; i++) {
239 if (pcap_strcasecmp(toks[i].s, str) == 0)
240 return (toks[i].v);
241 }
242 return (-1);
243 }
244
245 int n_errors = 0;
246
247 static struct qual qerr = { Q_UNDEF, Q_UNDEF, Q_UNDEF, Q_UNDEF };
248
249 static void
yyerror(const char * msg)250 yyerror(const char *msg)
251 {
252 ++n_errors;
253 bpf_error("%s", msg);
254 /* NOTREACHED */
255 }
256
257 #ifdef NEED_YYPARSE_WRAPPER
258 int yyparse(void);
259
260 int
pcap_parse()261 pcap_parse()
262 {
263 return (yyparse());
264 }
265 #endif
266
267 #ifdef HAVE_NET_PFVAR_H
268 static int
pfreason_to_num(const char * reason)269 pfreason_to_num(const char *reason)
270 {
271 const char *reasons[] = PFRES_NAMES;
272 int i;
273
274 for (i = 0; reasons[i]; i++) {
275 if (pcap_strcasecmp(reason, reasons[i]) == 0)
276 return (i);
277 }
278 bpf_error("unknown PF reason");
279 /*NOTREACHED*/
280 }
281
282 static int
pfaction_to_num(const char * action)283 pfaction_to_num(const char *action)
284 {
285 if (pcap_strcasecmp(action, "pass") == 0 ||
286 pcap_strcasecmp(action, "accept") == 0)
287 return (PF_PASS);
288 else if (pcap_strcasecmp(action, "drop") == 0 ||
289 pcap_strcasecmp(action, "block") == 0)
290 return (PF_DROP);
291 #if HAVE_PF_NAT_THROUGH_PF_NORDR
292 else if (pcap_strcasecmp(action, "rdr") == 0)
293 return (PF_RDR);
294 else if (pcap_strcasecmp(action, "nat") == 0)
295 return (PF_NAT);
296 else if (pcap_strcasecmp(action, "binat") == 0)
297 return (PF_BINAT);
298 else if (pcap_strcasecmp(action, "nordr") == 0)
299 return (PF_NORDR);
300 #endif
301 else {
302 bpf_error("unknown PF action");
303 /*NOTREACHED*/
304 }
305 }
306 #else /* !HAVE_NET_PFVAR_H */
307 static int
pfreason_to_num(const char * reason)308 pfreason_to_num(const char *reason)
309 {
310 bpf_error("libpcap was compiled on a machine without pf support");
311 /*NOTREACHED*/
312
313 /* this is to make the VC compiler happy */
314 return -1;
315 }
316
317 static int
pfaction_to_num(const char * action)318 pfaction_to_num(const char *action)
319 {
320 bpf_error("libpcap was compiled on a machine without pf support");
321 /*NOTREACHED*/
322
323 /* this is to make the VC compiler happy */
324 return -1;
325 }
326 #endif /* HAVE_NET_PFVAR_H */
327
328 #line 329 "y.tab.c" /* yacc.c:339 */
329
330 # ifndef YY_NULLPTR
331 # if defined __cplusplus && 201103L <= __cplusplus
332 # define YY_NULLPTR nullptr
333 # else
334 # define YY_NULLPTR 0
335 # endif
336 # endif
337
338 /* Enabling verbose error messages. */
339 #ifdef YYERROR_VERBOSE
340 # undef YYERROR_VERBOSE
341 # define YYERROR_VERBOSE 1
342 #else
343 # define YYERROR_VERBOSE 0
344 #endif
345
346 /* In a future release of Bison, this section will be replaced
347 by #include "y.tab.h". */
348 #ifndef YY_PCAP_Y_TAB_H_INCLUDED
349 # define YY_PCAP_Y_TAB_H_INCLUDED
350 /* Debug traces. */
351 #ifndef YYDEBUG
352 # define YYDEBUG 0
353 #endif
354 #if YYDEBUG
355 extern int pcap_debug;
356 #endif
357
358 /* Token type. */
359 #ifndef YYTOKENTYPE
360 # define YYTOKENTYPE
361 enum yytokentype
362 {
363 DST = 258,
364 SRC = 259,
365 HOST = 260,
366 GATEWAY = 261,
367 NET = 262,
368 NETMASK = 263,
369 PORT = 264,
370 PORTRANGE = 265,
371 LESS = 266,
372 GREATER = 267,
373 PROTO = 268,
374 PROTOCHAIN = 269,
375 CBYTE = 270,
376 ARP = 271,
377 RARP = 272,
378 IP = 273,
379 SCTP = 274,
380 TCP = 275,
381 UDP = 276,
382 ICMP = 277,
383 IGMP = 278,
384 IGRP = 279,
385 PIM = 280,
386 VRRP = 281,
387 CARP = 282,
388 ATALK = 283,
389 AARP = 284,
390 DECNET = 285,
391 LAT = 286,
392 SCA = 287,
393 MOPRC = 288,
394 MOPDL = 289,
395 TK_BROADCAST = 290,
396 TK_MULTICAST = 291,
397 NUM = 292,
398 INBOUND = 293,
399 OUTBOUND = 294,
400 PF_IFNAME = 295,
401 PF_RSET = 296,
402 PF_RNR = 297,
403 PF_SRNR = 298,
404 PF_REASON = 299,
405 PF_ACTION = 300,
406 TYPE = 301,
407 SUBTYPE = 302,
408 DIR = 303,
409 ADDR1 = 304,
410 ADDR2 = 305,
411 ADDR3 = 306,
412 ADDR4 = 307,
413 RA = 308,
414 TA = 309,
415 LINK = 310,
416 GEQ = 311,
417 LEQ = 312,
418 NEQ = 313,
419 ID = 314,
420 EID = 315,
421 HID = 316,
422 HID6 = 317,
423 AID = 318,
424 LSH = 319,
425 RSH = 320,
426 LEN = 321,
427 IPV6 = 322,
428 ICMPV6 = 323,
429 AH = 324,
430 ESP = 325,
431 VLAN = 326,
432 MPLS = 327,
433 PPPOED = 328,
434 PPPOES = 329,
435 GENEVE = 330,
436 ISO = 331,
437 ESIS = 332,
438 CLNP = 333,
439 ISIS = 334,
440 L1 = 335,
441 L2 = 336,
442 IIH = 337,
443 LSP = 338,
444 SNP = 339,
445 CSNP = 340,
446 PSNP = 341,
447 STP = 342,
448 IPX = 343,
449 NETBEUI = 344,
450 LANE = 345,
451 LLC = 346,
452 METAC = 347,
453 BCC = 348,
454 SC = 349,
455 ILMIC = 350,
456 OAMF4EC = 351,
457 OAMF4SC = 352,
458 OAM = 353,
459 OAMF4 = 354,
460 CONNECTMSG = 355,
461 METACONNECT = 356,
462 VPI = 357,
463 VCI = 358,
464 RADIO = 359,
465 FISU = 360,
466 LSSU = 361,
467 MSU = 362,
468 HFISU = 363,
469 HLSSU = 364,
470 HMSU = 365,
471 SIO = 366,
472 OPC = 367,
473 DPC = 368,
474 SLS = 369,
475 HSIO = 370,
476 HOPC = 371,
477 HDPC = 372,
478 HSLS = 373,
479 OR = 374,
480 AND = 375,
481 UMINUS = 376
482 };
483 #endif
484 /* Tokens. */
485 #define DST 258
486 #define SRC 259
487 #define HOST 260
488 #define GATEWAY 261
489 #define NET 262
490 #define NETMASK 263
491 #define PORT 264
492 #define PORTRANGE 265
493 #define LESS 266
494 #define GREATER 267
495 #define PROTO 268
496 #define PROTOCHAIN 269
497 #define CBYTE 270
498 #define ARP 271
499 #define RARP 272
500 #define IP 273
501 #define SCTP 274
502 #define TCP 275
503 #define UDP 276
504 #define ICMP 277
505 #define IGMP 278
506 #define IGRP 279
507 #define PIM 280
508 #define VRRP 281
509 #define CARP 282
510 #define ATALK 283
511 #define AARP 284
512 #define DECNET 285
513 #define LAT 286
514 #define SCA 287
515 #define MOPRC 288
516 #define MOPDL 289
517 #define TK_BROADCAST 290
518 #define TK_MULTICAST 291
519 #define NUM 292
520 #define INBOUND 293
521 #define OUTBOUND 294
522 #define PF_IFNAME 295
523 #define PF_RSET 296
524 #define PF_RNR 297
525 #define PF_SRNR 298
526 #define PF_REASON 299
527 #define PF_ACTION 300
528 #define TYPE 301
529 #define SUBTYPE 302
530 #define DIR 303
531 #define ADDR1 304
532 #define ADDR2 305
533 #define ADDR3 306
534 #define ADDR4 307
535 #define RA 308
536 #define TA 309
537 #define LINK 310
538 #define GEQ 311
539 #define LEQ 312
540 #define NEQ 313
541 #define ID 314
542 #define EID 315
543 #define HID 316
544 #define HID6 317
545 #define AID 318
546 #define LSH 319
547 #define RSH 320
548 #define LEN 321
549 #define IPV6 322
550 #define ICMPV6 323
551 #define AH 324
552 #define ESP 325
553 #define VLAN 326
554 #define MPLS 327
555 #define PPPOED 328
556 #define PPPOES 329
557 #define GENEVE 330
558 #define ISO 331
559 #define ESIS 332
560 #define CLNP 333
561 #define ISIS 334
562 #define L1 335
563 #define L2 336
564 #define IIH 337
565 #define LSP 338
566 #define SNP 339
567 #define CSNP 340
568 #define PSNP 341
569 #define STP 342
570 #define IPX 343
571 #define NETBEUI 344
572 #define LANE 345
573 #define LLC 346
574 #define METAC 347
575 #define BCC 348
576 #define SC 349
577 #define ILMIC 350
578 #define OAMF4EC 351
579 #define OAMF4SC 352
580 #define OAM 353
581 #define OAMF4 354
582 #define CONNECTMSG 355
583 #define METACONNECT 356
584 #define VPI 357
585 #define VCI 358
586 #define RADIO 359
587 #define FISU 360
588 #define LSSU 361
589 #define MSU 362
590 #define HFISU 363
591 #define HLSSU 364
592 #define HMSU 365
593 #define SIO 366
594 #define OPC 367
595 #define DPC 368
596 #define SLS 369
597 #define HSIO 370
598 #define HOPC 371
599 #define HDPC 372
600 #define HSLS 373
601 #define OR 374
602 #define AND 375
603 #define UMINUS 376
604
605 /* Value type. */
606 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
607 typedef union YYSTYPE YYSTYPE;
608 union YYSTYPE
609 {
610 #line 256 "grammar.y" /* yacc.c:355 */
611
612 int i;
613 bpf_u_int32 h;
614 u_char *e;
615 char *s;
616 struct stmt *stmt;
617 struct arth *a;
618 struct {
619 struct qual q;
620 int atmfieldtype;
621 int mtp3fieldtype;
622 struct block *b;
623 } blk;
624 struct block *rblk;
625
626 #line 627 "y.tab.c" /* yacc.c:355 */
627 };
628 # define YYSTYPE_IS_TRIVIAL 1
629 # define YYSTYPE_IS_DECLARED 1
630 #endif
631
632
633 extern YYSTYPE pcap_lval;
634
635 int pcap_parse (void);
636
637 #endif /* !YY_PCAP_Y_TAB_H_INCLUDED */
638
639 /* Copy the second part of user declarations. */
640
641 #line 642 "y.tab.c" /* yacc.c:358 */
642
643 #ifdef short
644 # undef short
645 #endif
646
647 #ifdef YYTYPE_UINT8
648 typedef YYTYPE_UINT8 yytype_uint8;
649 #else
650 typedef unsigned char yytype_uint8;
651 #endif
652
653 #ifdef YYTYPE_INT8
654 typedef YYTYPE_INT8 yytype_int8;
655 #else
656 typedef signed char yytype_int8;
657 #endif
658
659 #ifdef YYTYPE_UINT16
660 typedef YYTYPE_UINT16 yytype_uint16;
661 #else
662 typedef unsigned short int yytype_uint16;
663 #endif
664
665 #ifdef YYTYPE_INT16
666 typedef YYTYPE_INT16 yytype_int16;
667 #else
668 typedef short int yytype_int16;
669 #endif
670
671 #ifndef YYSIZE_T
672 # ifdef __SIZE_TYPE__
673 # define YYSIZE_T __SIZE_TYPE__
674 # elif defined size_t
675 # define YYSIZE_T size_t
676 # elif ! defined YYSIZE_T
677 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
678 # define YYSIZE_T size_t
679 # else
680 # define YYSIZE_T unsigned int
681 # endif
682 #endif
683
684 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
685
686 #ifndef YY_
687 # if defined YYENABLE_NLS && YYENABLE_NLS
688 # if ENABLE_NLS
689 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
690 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
691 # endif
692 # endif
693 # ifndef YY_
694 # define YY_(Msgid) Msgid
695 # endif
696 #endif
697
698 #ifndef YY_ATTRIBUTE
699 # if (defined __GNUC__ \
700 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
701 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
702 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
703 # else
704 # define YY_ATTRIBUTE(Spec) /* empty */
705 # endif
706 #endif
707
708 #ifndef YY_ATTRIBUTE_PURE
709 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
710 #endif
711
712 #ifndef YY_ATTRIBUTE_UNUSED
713 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
714 #endif
715
716 #if !defined _Noreturn \
717 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
718 # if defined _MSC_VER && 1200 <= _MSC_VER
719 # define _Noreturn __declspec (noreturn)
720 # else
721 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
722 # endif
723 #endif
724
725 /* Suppress unused-variable warnings by "using" E. */
726 #if ! defined lint || defined __GNUC__
727 # define YYUSE(E) ((void) (E))
728 #else
729 # define YYUSE(E) /* empty */
730 #endif
731
732 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
733 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
734 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
735 _Pragma ("GCC diagnostic push") \
736 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
737 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
738 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
739 _Pragma ("GCC diagnostic pop")
740 #else
741 # define YY_INITIAL_VALUE(Value) Value
742 #endif
743 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
744 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
745 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
746 #endif
747 #ifndef YY_INITIAL_VALUE
748 # define YY_INITIAL_VALUE(Value) /* Nothing. */
749 #endif
750
751
752 #if ! defined yyoverflow || YYERROR_VERBOSE
753
754 /* The parser invokes alloca or malloc; define the necessary symbols. */
755
756 # ifdef YYSTACK_USE_ALLOCA
757 # if YYSTACK_USE_ALLOCA
758 # ifdef __GNUC__
759 # define YYSTACK_ALLOC __builtin_alloca
760 # elif defined __BUILTIN_VA_ARG_INCR
761 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
762 # elif defined _AIX
763 # define YYSTACK_ALLOC __alloca
764 # elif defined _MSC_VER
765 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
766 # define alloca _alloca
767 # else
768 # define YYSTACK_ALLOC alloca
769 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
770 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
771 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
772 # ifndef EXIT_SUCCESS
773 # define EXIT_SUCCESS 0
774 # endif
775 # endif
776 # endif
777 # endif
778 # endif
779
780 # ifdef YYSTACK_ALLOC
781 /* Pacify GCC's 'empty if-body' warning. */
782 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
783 # ifndef YYSTACK_ALLOC_MAXIMUM
784 /* The OS might guarantee only one guard page at the bottom of the stack,
785 and a page size can be as small as 4096 bytes. So we cannot safely
786 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
787 to allow for a few compiler-allocated temporary stack slots. */
788 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
789 # endif
790 # else
791 # define YYSTACK_ALLOC YYMALLOC
792 # define YYSTACK_FREE YYFREE
793 # ifndef YYSTACK_ALLOC_MAXIMUM
794 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
795 # endif
796 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
797 && ! ((defined YYMALLOC || defined malloc) \
798 && (defined YYFREE || defined free)))
799 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
800 # ifndef EXIT_SUCCESS
801 # define EXIT_SUCCESS 0
802 # endif
803 # endif
804 # ifndef YYMALLOC
805 # define YYMALLOC malloc
806 # if ! defined malloc && ! defined EXIT_SUCCESS
807 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
808 # endif
809 # endif
810 # ifndef YYFREE
811 # define YYFREE free
812 # if ! defined free && ! defined EXIT_SUCCESS
813 void free (void *); /* INFRINGES ON USER NAME SPACE */
814 # endif
815 # endif
816 # endif
817 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
818
819
820 #if (! defined yyoverflow \
821 && (! defined __cplusplus \
822 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
823
824 /* A type that is properly aligned for any stack member. */
825 union yyalloc
826 {
827 yytype_int16 yyss_alloc;
828 YYSTYPE yyvs_alloc;
829 };
830
831 /* The size of the maximum gap between one aligned stack and the next. */
832 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
833
834 /* The size of an array large to enough to hold all stacks, each with
835 N elements. */
836 # define YYSTACK_BYTES(N) \
837 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
838 + YYSTACK_GAP_MAXIMUM)
839
840 # define YYCOPY_NEEDED 1
841
842 /* Relocate STACK from its old location to the new one. The
843 local variables YYSIZE and YYSTACKSIZE give the old and new number of
844 elements in the stack, and YYPTR gives the new location of the
845 stack. Advance YYPTR to a properly aligned location for the next
846 stack. */
847 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
848 do \
849 { \
850 YYSIZE_T yynewbytes; \
851 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
852 Stack = &yyptr->Stack_alloc; \
853 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
854 yyptr += yynewbytes / sizeof (*yyptr); \
855 } \
856 while (0)
857
858 #endif
859
860 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
861 /* Copy COUNT objects from SRC to DST. The source and destination do
862 not overlap. */
863 # ifndef YYCOPY
864 # if defined __GNUC__ && 1 < __GNUC__
865 # define YYCOPY(Dst, Src, Count) \
866 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
867 # else
868 # define YYCOPY(Dst, Src, Count) \
869 do \
870 { \
871 YYSIZE_T yyi; \
872 for (yyi = 0; yyi < (Count); yyi++) \
873 (Dst)[yyi] = (Src)[yyi]; \
874 } \
875 while (0)
876 # endif
877 # endif
878 #endif /* !YYCOPY_NEEDED */
879
880 /* YYFINAL -- State number of the termination state. */
881 #define YYFINAL 3
882 /* YYLAST -- Last index in YYTABLE. */
883 #define YYLAST 788
884
885 /* YYNTOKENS -- Number of terminals. */
886 #define YYNTOKENS 139
887 /* YYNNTS -- Number of nonterminals. */
888 #define YYNNTS 47
889 /* YYNRULES -- Number of rules. */
890 #define YYNRULES 220
891 /* YYNSTATES -- Number of states. */
892 #define YYNSTATES 294
893
894 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
895 by yylex, with out-of-bounds checking. */
896 #define YYUNDEFTOK 2
897 #define YYMAXUTOK 376
898
899 #define YYTRANSLATE(YYX) \
900 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
901
902 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
903 as returned by yylex, without out-of-bounds checking. */
904 static const yytype_uint8 yytranslate[] =
905 {
906 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
907 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
908 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
909 2, 2, 2, 121, 2, 2, 2, 137, 123, 2,
910 130, 129, 126, 124, 2, 125, 2, 127, 2, 2,
911 2, 2, 2, 2, 2, 2, 2, 2, 136, 2,
912 133, 132, 131, 2, 2, 2, 2, 2, 2, 2,
913 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
914 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
915 2, 134, 2, 135, 138, 2, 2, 2, 2, 2,
916 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
917 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
918 2, 2, 2, 2, 122, 2, 2, 2, 2, 2,
919 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
920 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
921 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
922 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
923 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
924 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
925 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
926 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
927 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
928 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
929 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
930 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
931 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
932 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
933 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
934 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
935 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
936 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
937 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
938 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
939 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
940 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
941 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
942 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
943 115, 116, 117, 118, 119, 120, 128
944 };
945
946 #if YYDEBUG
947 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
948 static const yytype_uint16 yyrline[] =
949 {
950 0, 330, 330, 334, 336, 338, 339, 340, 341, 342,
951 344, 346, 348, 349, 351, 353, 354, 356, 358, 371,
952 380, 389, 398, 407, 409, 411, 413, 414, 415, 417,
953 419, 421, 422, 424, 425, 426, 427, 428, 429, 431,
954 432, 433, 434, 436, 438, 439, 440, 441, 442, 443,
955 446, 447, 450, 451, 452, 453, 454, 455, 456, 457,
956 458, 459, 460, 461, 464, 465, 466, 467, 470, 472,
957 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
958 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
959 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
960 503, 504, 505, 506, 507, 508, 509, 510, 512, 513,
961 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
962 524, 525, 526, 527, 528, 529, 530, 533, 534, 535,
963 536, 537, 538, 541, 546, 549, 553, 556, 557, 563,
964 564, 584, 600, 601, 622, 625, 626, 639, 640, 643,
965 646, 647, 648, 650, 651, 652, 654, 655, 657, 658,
966 659, 660, 661, 662, 663, 664, 665, 666, 667, 668,
967 669, 670, 671, 673, 674, 675, 676, 677, 679, 680,
968 682, 683, 684, 685, 686, 687, 688, 690, 691, 692,
969 693, 696, 697, 699, 700, 701, 702, 704, 711, 712,
970 715, 716, 717, 718, 719, 720, 723, 724, 725, 726,
971 727, 728, 729, 730, 732, 733, 734, 735, 737, 750,
972 751
973 };
974 #endif
975
976 #if YYDEBUG || YYERROR_VERBOSE || 0
977 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
978 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
979 static const char *const yytname[] =
980 {
981 "$end", "error", "$undefined", "DST", "SRC", "HOST", "GATEWAY", "NET",
982 "NETMASK", "PORT", "PORTRANGE", "LESS", "GREATER", "PROTO", "PROTOCHAIN",
983 "CBYTE", "ARP", "RARP", "IP", "SCTP", "TCP", "UDP", "ICMP", "IGMP",
984 "IGRP", "PIM", "VRRP", "CARP", "ATALK", "AARP", "DECNET", "LAT", "SCA",
985 "MOPRC", "MOPDL", "TK_BROADCAST", "TK_MULTICAST", "NUM", "INBOUND",
986 "OUTBOUND", "PF_IFNAME", "PF_RSET", "PF_RNR", "PF_SRNR", "PF_REASON",
987 "PF_ACTION", "TYPE", "SUBTYPE", "DIR", "ADDR1", "ADDR2", "ADDR3",
988 "ADDR4", "RA", "TA", "LINK", "GEQ", "LEQ", "NEQ", "ID", "EID", "HID",
989 "HID6", "AID", "LSH", "RSH", "LEN", "IPV6", "ICMPV6", "AH", "ESP",
990 "VLAN", "MPLS", "PPPOED", "PPPOES", "GENEVE", "ISO", "ESIS", "CLNP",
991 "ISIS", "L1", "L2", "IIH", "LSP", "SNP", "CSNP", "PSNP", "STP", "IPX",
992 "NETBEUI", "LANE", "LLC", "METAC", "BCC", "SC", "ILMIC", "OAMF4EC",
993 "OAMF4SC", "OAM", "OAMF4", "CONNECTMSG", "METACONNECT", "VPI", "VCI",
994 "RADIO", "FISU", "LSSU", "MSU", "HFISU", "HLSSU", "HMSU", "SIO", "OPC",
995 "DPC", "SLS", "HSIO", "HOPC", "HDPC", "HSLS", "OR", "AND", "'!'", "'|'",
996 "'&'", "'+'", "'-'", "'*'", "'/'", "UMINUS", "')'", "'('", "'>'", "'='",
997 "'<'", "'['", "']'", "':'", "'%'", "'^'", "$accept", "prog", "null",
998 "expr", "and", "or", "id", "nid", "not", "paren", "pid", "qid", "term",
999 "head", "rterm", "pqual", "dqual", "aqual", "ndaqual", "pname", "other",
1000 "pfvar", "p80211", "type", "subtype", "type_subtype", "pllc", "dir",
1001 "reason", "action", "relop", "irelop", "arth", "narth", "byteop", "pnum",
1002 "atmtype", "atmmultitype", "atmfield", "atmvalue", "atmfieldvalue",
1003 "atmlistvalue", "mtp2type", "mtp3field", "mtp3value", "mtp3fieldvalue",
1004 "mtp3listvalue", YY_NULLPTR
1005 };
1006 #endif
1007
1008 # ifdef YYPRINT
1009 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1010 (internal) symbol number NUM (which must be that of a token). */
1011 static const yytype_uint16 yytoknum[] =
1012 {
1013 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1014 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1015 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1016 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1017 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1018 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1019 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1020 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1021 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1022 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1023 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1024 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1025 375, 33, 124, 38, 43, 45, 42, 47, 376, 41,
1026 40, 62, 61, 60, 91, 93, 58, 37, 94
1027 };
1028 # endif
1029
1030 #define YYPACT_NINF -216
1031
1032 #define yypact_value_is_default(Yystate) \
1033 (!!((Yystate) == (-216)))
1034
1035 #define YYTABLE_NINF -42
1036
1037 #define yytable_value_is_error(Yytable_value) \
1038 0
1039
1040 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1041 STATE-NUM. */
1042 static const yytype_int16 yypact[] =
1043 {
1044 -216, 24, 257, -216, 0, 12, 17, -216, -216, -216,
1045 -216, -216, -216, -216, -216, -216, -216, -216, -216, -216,
1046 -216, -216, -216, -216, -216, -216, -216, -216, -216, 16,
1047 25, 29, 72, -18, 55, -216, -216, -216, -216, -216,
1048 -216, -25, -25, -216, -25, -25, -216, -216, -216, -216,
1049 -216, -216, -216, -216, -216, -216, -216, -216, -216, -216,
1050 -216, -24, -216, -216, -216, -216, -216, -216, -216, -216,
1051 -216, -216, -216, -216, -216, -216, -216, -216, -216, -216,
1052 -216, -216, -216, -216, -216, -216, -216, -216, -216, -216,
1053 604, -216, -30, 489, 489, -216, 125, -216, 734, 3,
1054 -216, -216, -216, 183, -216, -216, -216, -216, -5, -216,
1055 39, -216, -216, -54, -216, -216, -216, -216, -216, -216,
1056 -216, -216, -216, -25, -216, -216, -216, -216, -216, -216,
1057 604, -16, -108, -216, -216, 373, 373, -216, -103, -10,
1058 2, -216, -216, -7, 11, -216, -216, -216, 125, 125,
1059 -216, -3, 21, -216, -216, -216, -216, -216, -216, -216,
1060 -216, -216, -12, 77, -9, -216, -216, -216, -216, -216,
1061 -216, 78, -216, -216, -216, 604, -216, -216, -216, 604,
1062 604, 604, 604, 604, 604, 604, 604, -216, -216, -216,
1063 604, 604, 604, 604, -216, 111, 113, 114, -216, -216,
1064 -216, 115, 124, 126, -216, -216, -216, -216, -216, -216,
1065 -216, 131, 2, 575, -216, 373, 373, -216, 10, -216,
1066 -216, -216, -216, -216, 112, 137, 138, -216, -216, 47,
1067 -30, 2, 173, 176, 178, 186, -216, -216, 143, -216,
1068 -216, -216, -216, -216, -216, 127, -64, -64, 580, 598,
1069 -104, -104, -108, -108, 575, 575, 575, 575, -216, -98,
1070 -216, -216, -216, -47, -216, -216, -216, -49, -216, -216,
1071 -216, -216, 125, 125, -216, -216, -216, -216, -1, -216,
1072 156, -216, 111, -216, 115, -216, -216, -216, -216, -216,
1073 59, -216, -216, -216
1074 };
1075
1076 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1077 Performed when YYTABLE does not specify something else to do. Zero
1078 means the default is an error. */
1079 static const yytype_uint8 yydefact[] =
1080 {
1081 4, 0, 51, 1, 0, 0, 0, 71, 72, 70,
1082 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1083 83, 84, 85, 86, 88, 87, 178, 113, 114, 0,
1084 0, 0, 0, 0, 0, 69, 172, 89, 90, 91,
1085 92, 116, 118, 119, 121, 123, 93, 94, 103, 95,
1086 96, 97, 98, 99, 100, 102, 101, 104, 105, 106,
1087 180, 142, 181, 182, 185, 186, 183, 184, 187, 188,
1088 189, 190, 191, 192, 107, 200, 201, 202, 203, 204,
1089 205, 206, 207, 208, 209, 210, 211, 212, 213, 24,
1090 0, 25, 2, 51, 51, 5, 0, 31, 0, 50,
1091 44, 124, 126, 0, 157, 156, 45, 46, 0, 48,
1092 0, 110, 111, 0, 127, 128, 129, 130, 147, 148,
1093 131, 149, 132, 0, 115, 117, 120, 122, 144, 143,
1094 0, 0, 170, 11, 10, 51, 51, 32, 0, 157,
1095 156, 15, 21, 18, 20, 22, 39, 12, 0, 0,
1096 13, 53, 52, 64, 68, 65, 66, 67, 36, 37,
1097 108, 109, 0, 0, 0, 58, 59, 60, 61, 62,
1098 63, 34, 35, 38, 125, 0, 151, 153, 155, 0,
1099 0, 0, 0, 0, 0, 0, 0, 150, 152, 154,
1100 0, 0, 0, 0, 197, 0, 0, 0, 47, 193,
1101 218, 0, 0, 0, 49, 214, 174, 173, 176, 177,
1102 175, 0, 0, 0, 7, 51, 51, 6, 156, 9,
1103 8, 40, 171, 179, 0, 0, 0, 23, 26, 30,
1104 0, 29, 0, 0, 0, 0, 137, 138, 134, 141,
1105 135, 145, 146, 136, 33, 0, 168, 169, 166, 165,
1106 160, 161, 162, 163, 164, 167, 42, 43, 198, 0,
1107 194, 195, 219, 0, 215, 216, 112, 156, 17, 16,
1108 19, 14, 0, 0, 55, 57, 54, 56, 0, 158,
1109 0, 196, 0, 217, 0, 27, 28, 139, 140, 133,
1110 0, 199, 220, 159
1111 };
1112
1113 /* YYPGOTO[NTERM-NUM]. */
1114 static const yytype_int16 yypgoto[] =
1115 {
1116 -216, -216, -216, 193, -34, -215, -90, -135, 7, -2,
1117 -216, -216, -80, -216, -216, -216, -216, 26, -216, 9,
1118 -216, -216, -216, -216, -216, -216, -216, -216, -216, -216,
1119 -43, 5, -26, -92, -216, -37, -216, -216, -216, -216,
1120 -175, -216, -216, -216, -216, -174, -216
1121 };
1122
1123 /* YYDEFGOTO[NTERM-NUM]. */
1124 static const yytype_int16 yydefgoto[] =
1125 {
1126 -1, 1, 2, 138, 135, 136, 227, 147, 148, 130,
1127 229, 230, 95, 96, 97, 98, 171, 172, 173, 131,
1128 100, 101, 174, 238, 289, 240, 102, 243, 120, 122,
1129 192, 193, 103, 104, 211, 105, 106, 107, 108, 198,
1130 199, 259, 109, 110, 204, 205, 263
1131 };
1132
1133 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1134 positive, shift that token. If negative, reduce the rule whose
1135 number is the opposite. If YYTABLE_NINF, syntax error. */
1136 static const yytype_int16 yytable[] =
1137 {
1138 94, 224, 139, -41, 124, 125, 146, 126, 127, 93,
1139 -13, 99, 26, 137, 228, 273, 133, 134, 128, 118,
1140 258, 133, 185, 186, 3, 236, 221, 262, 241, 190,
1141 191, 281, 194, 190, 191, 129, 287, 111, 139, 123,
1142 123, 119, 123, 123, 282, 214, 219, 237, 284, 112,
1143 242, 176, 177, 178, 113, 217, 220, 140, 288, 150,
1144 183, 184, 185, 186, 132, 196, 116, 202, 206, 207,
1145 -29, -29, 133, 190, 191, 114, 200, 208, 209, 210,
1146 223, 228, 283, 153, 115, 155, 212, 156, 157, 133,
1147 134, 94, 94, 140, 149, 176, 177, 178, 218, 218,
1148 93, 93, 99, 99, 213, 91, 195, 291, 201, 117,
1149 292, 150, 231, 197, 121, 203, 232, 233, 175, 222,
1150 225, 123, -41, -41, 139, 91, 187, 188, 189, -13,
1151 -13, 223, -41, 216, 216, 137, 239, 175, 226, -13,
1152 234, 235, 215, 215, 99, 99, 149, 123, 194, 245,
1153 260, 261, 200, 246, 247, 248, 249, 250, 251, 252,
1154 253, 264, 26, 265, 254, 255, 256, 257, 266, 91,
1155 187, 188, 189, 268, 269, 270, 271, 274, 218, 267,
1156 275, 276, 285, 286, 141, 142, 143, 144, 145, 277,
1157 278, 179, 180, 290, 293, 92, 272, 244, 0, 0,
1158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1159 0, 0, 0, 216, 94, 0, 0, 0, 0, 0,
1160 0, 0, 215, 215, 99, 99, 0, 0, 0, 0,
1161 0, 0, 0, 0, 0, 150, 150, 0, 0, 176,
1162 177, 178, 0, 0, 0, 0, 89, 179, 180, 181,
1163 182, 183, 184, 185, 186, 91, 0, -3, 0, 0,
1164 0, 0, 279, 280, 190, 191, 0, 0, 4, 5,
1165 149, 149, 6, 7, 8, 9, 10, 11, 12, 13,
1166 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
1167 24, 25, 0, 0, 26, 27, 28, 29, 30, 31,
1168 32, 33, 34, 0, 0, 181, 182, 183, 184, 185,
1169 186, 0, 35, 0, 187, 188, 189, 0, 0, 0,
1170 190, 191, 0, 36, 37, 38, 39, 40, 41, 42,
1171 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1172 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1173 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
1174 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1175 83, 84, 85, 86, 87, 88, 0, 0, 89, 0,
1176 0, 0, 90, 0, 4, 5, 0, 91, 6, 7,
1177 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
1178 18, 19, 20, 21, 22, 23, 24, 25, 0, 0,
1179 26, 27, 28, 29, 30, 31, 32, 33, 34, 0,
1180 0, 0, 0, 0, 0, 0, 0, 0, 35, 0,
1181 0, 0, 141, 142, 143, 144, 145, 0, 0, 36,
1182 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
1183 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
1184 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
1185 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
1186 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
1187 87, 88, 0, 0, 89, 0, 0, 0, 90, 0,
1188 4, 5, 0, 91, 6, 7, 8, 9, 10, 11,
1189 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
1190 22, 23, 24, 25, 0, 0, 26, 27, 28, 29,
1191 30, 31, 32, 33, 34, 0, 0, 0, 0, 0,
1192 0, 0, 0, 0, 35, 0, 0, 0, 0, 0,
1193 0, 0, 0, 0, 0, 36, 37, 38, 39, 40,
1194 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1195 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
1196 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
1197 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
1198 81, 82, 83, 84, 85, 86, 87, 88, 0, 0,
1199 89, 0, 0, 0, 90, 0, 0, 0, 0, 91,
1200 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1201 17, 18, 19, 20, 21, 22, 23, 24, 25, 179,
1202 180, 26, 0, 0, 179, 180, 0, 0, 0, 0,
1203 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,
1204 0, 0, 179, 180, 0, 0, 0, 0, 0, 0,
1205 36, 37, 38, 39, 40, 0, 0, 0, 0, 0,
1206 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
1207 56, 57, 58, 59, 0, 0, 0, 181, 182, 183,
1208 184, 185, 186, 182, 183, 184, 185, 186, 74, 0,
1209 0, 0, 190, 191, 0, 0, 0, 190, 191, 0,
1210 0, 0, 183, 184, 185, 186, 0, 0, 0, 90,
1211 0, 0, 0, 0, 91, 190, 191, 151, 152, 153,
1212 154, 155, 0, 156, 157, 0, 0, 158, 159, 0,
1213 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1214 0, 0, 0, 0, 0, 0, 0, 0, 0, 160,
1215 161, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1216 162, 163, 164, 165, 166, 167, 168, 169, 170
1217 };
1218
1219 static const yytype_int16 yycheck[] =
1220 {
1221 2, 8, 94, 0, 41, 42, 96, 44, 45, 2,
1222 0, 2, 37, 93, 149, 230, 119, 120, 42, 37,
1223 195, 119, 126, 127, 0, 37, 129, 201, 37, 137,
1224 138, 129, 37, 137, 138, 59, 37, 37, 130, 41,
1225 42, 59, 44, 45, 259, 135, 136, 59, 263, 37,
1226 59, 56, 57, 58, 37, 135, 136, 94, 59, 96,
1227 124, 125, 126, 127, 90, 108, 37, 110, 122, 123,
1228 119, 120, 119, 137, 138, 59, 37, 131, 132, 133,
1229 129, 216, 129, 5, 59, 7, 123, 9, 10, 119,
1230 120, 93, 94, 130, 96, 56, 57, 58, 135, 136,
1231 93, 94, 93, 94, 130, 130, 108, 282, 110, 37,
1232 284, 148, 149, 108, 59, 110, 119, 120, 134, 129,
1233 127, 123, 119, 120, 216, 130, 131, 132, 133, 119,
1234 120, 129, 129, 135, 136, 215, 59, 134, 127, 129,
1235 119, 120, 135, 136, 135, 136, 148, 149, 37, 175,
1236 37, 37, 37, 179, 180, 181, 182, 183, 184, 185,
1237 186, 37, 37, 37, 190, 191, 192, 193, 37, 130,
1238 131, 132, 133, 61, 37, 37, 129, 4, 215, 216,
1239 4, 3, 272, 273, 59, 60, 61, 62, 63, 3,
1240 47, 64, 65, 37, 135, 2, 230, 171, -1, -1,
1241 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1242 -1, -1, -1, 215, 216, -1, -1, -1, -1, -1,
1243 -1, -1, 215, 216, 215, 216, -1, -1, -1, -1,
1244 -1, -1, -1, -1, -1, 272, 273, -1, -1, 56,
1245 57, 58, -1, -1, -1, -1, 121, 64, 65, 122,
1246 123, 124, 125, 126, 127, 130, -1, 0, -1, -1,
1247 -1, -1, 135, 136, 137, 138, -1, -1, 11, 12,
1248 272, 273, 15, 16, 17, 18, 19, 20, 21, 22,
1249 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1250 33, 34, -1, -1, 37, 38, 39, 40, 41, 42,
1251 43, 44, 45, -1, -1, 122, 123, 124, 125, 126,
1252 127, -1, 55, -1, 131, 132, 133, -1, -1, -1,
1253 137, 138, -1, 66, 67, 68, 69, 70, 71, 72,
1254 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1255 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
1256 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1257 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1258 113, 114, 115, 116, 117, 118, -1, -1, 121, -1,
1259 -1, -1, 125, -1, 11, 12, -1, 130, 15, 16,
1260 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1261 27, 28, 29, 30, 31, 32, 33, 34, -1, -1,
1262 37, 38, 39, 40, 41, 42, 43, 44, 45, -1,
1263 -1, -1, -1, -1, -1, -1, -1, -1, 55, -1,
1264 -1, -1, 59, 60, 61, 62, 63, -1, -1, 66,
1265 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
1266 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
1267 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
1268 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1269 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1270 117, 118, -1, -1, 121, -1, -1, -1, 125, -1,
1271 11, 12, -1, 130, 15, 16, 17, 18, 19, 20,
1272 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
1273 31, 32, 33, 34, -1, -1, 37, 38, 39, 40,
1274 41, 42, 43, 44, 45, -1, -1, -1, -1, -1,
1275 -1, -1, -1, -1, 55, -1, -1, -1, -1, -1,
1276 -1, -1, -1, -1, -1, 66, 67, 68, 69, 70,
1277 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
1278 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
1279 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
1280 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
1281 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
1282 121, -1, -1, -1, 125, -1, -1, -1, -1, 130,
1283 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1284 26, 27, 28, 29, 30, 31, 32, 33, 34, 64,
1285 65, 37, -1, -1, 64, 65, -1, -1, -1, -1,
1286 -1, -1, -1, -1, -1, -1, -1, -1, -1, 55,
1287 -1, -1, 64, 65, -1, -1, -1, -1, -1, -1,
1288 66, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1289 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1290 86, 87, 88, 89, -1, -1, -1, 122, 123, 124,
1291 125, 126, 127, 123, 124, 125, 126, 127, 104, -1,
1292 -1, -1, 137, 138, -1, -1, -1, 137, 138, -1,
1293 -1, -1, 124, 125, 126, 127, -1, -1, -1, 125,
1294 -1, -1, -1, -1, 130, 137, 138, 3, 4, 5,
1295 6, 7, -1, 9, 10, -1, -1, 13, 14, -1,
1296 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1297 -1, -1, -1, -1, -1, -1, -1, -1, -1, 35,
1298 36, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1299 46, 47, 48, 49, 50, 51, 52, 53, 54
1300 };
1301
1302 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1303 symbol of state STATE-NUM. */
1304 static const yytype_uint8 yystos[] =
1305 {
1306 0, 140, 141, 0, 11, 12, 15, 16, 17, 18,
1307 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1308 29, 30, 31, 32, 33, 34, 37, 38, 39, 40,
1309 41, 42, 43, 44, 45, 55, 66, 67, 68, 69,
1310 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1311 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1312 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1313 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
1314 110, 111, 112, 113, 114, 115, 116, 117, 118, 121,
1315 125, 130, 142, 147, 148, 151, 152, 153, 154, 158,
1316 159, 160, 165, 171, 172, 174, 175, 176, 177, 181,
1317 182, 37, 37, 37, 59, 59, 37, 37, 37, 59,
1318 167, 59, 168, 148, 174, 174, 174, 174, 42, 59,
1319 148, 158, 171, 119, 120, 143, 144, 151, 142, 172,
1320 174, 59, 60, 61, 62, 63, 145, 146, 147, 148,
1321 174, 3, 4, 5, 6, 7, 9, 10, 13, 14,
1322 35, 36, 46, 47, 48, 49, 50, 51, 52, 53,
1323 54, 155, 156, 157, 161, 134, 56, 57, 58, 64,
1324 65, 122, 123, 124, 125, 126, 127, 131, 132, 133,
1325 137, 138, 169, 170, 37, 148, 169, 170, 178, 179,
1326 37, 148, 169, 170, 183, 184, 122, 123, 131, 132,
1327 133, 173, 174, 171, 145, 147, 148, 151, 174, 145,
1328 151, 129, 129, 129, 8, 127, 127, 145, 146, 149,
1329 150, 174, 119, 120, 119, 120, 37, 59, 162, 59,
1330 164, 37, 59, 166, 156, 171, 171, 171, 171, 171,
1331 171, 171, 171, 171, 171, 171, 171, 171, 179, 180,
1332 37, 37, 184, 185, 37, 37, 37, 174, 61, 37,
1333 37, 129, 143, 144, 4, 4, 3, 3, 47, 135,
1334 136, 129, 144, 129, 144, 145, 145, 37, 59, 163,
1335 37, 179, 184, 135
1336 };
1337
1338 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1339 static const yytype_uint8 yyr1[] =
1340 {
1341 0, 139, 140, 140, 141, 142, 142, 142, 142, 142,
1342 143, 144, 145, 145, 145, 146, 146, 146, 146, 146,
1343 146, 146, 146, 146, 147, 148, 149, 149, 149, 150,
1344 150, 151, 151, 152, 152, 152, 152, 152, 152, 153,
1345 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1346 154, 154, 155, 155, 155, 155, 155, 155, 155, 155,
1347 155, 155, 155, 155, 156, 156, 156, 156, 157, 158,
1348 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
1349 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
1350 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
1351 158, 158, 158, 158, 158, 158, 158, 158, 159, 159,
1352 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
1353 159, 159, 159, 159, 159, 159, 159, 160, 160, 160,
1354 160, 160, 160, 161, 161, 161, 161, 162, 162, 163,
1355 163, 164, 165, 165, 165, 166, 166, 167, 167, 168,
1356 169, 169, 169, 170, 170, 170, 171, 171, 172, 172,
1357 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
1358 172, 172, 172, 173, 173, 173, 173, 173, 174, 174,
1359 175, 175, 175, 175, 175, 175, 175, 176, 176, 176,
1360 176, 177, 177, 178, 178, 178, 178, 179, 180, 180,
1361 181, 181, 181, 181, 181, 181, 182, 182, 182, 182,
1362 182, 182, 182, 182, 183, 183, 183, 183, 184, 185,
1363 185
1364 };
1365
1366 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
1367 static const yytype_uint8 yyr2[] =
1368 {
1369 0, 2, 2, 1, 0, 1, 3, 3, 3, 3,
1370 1, 1, 1, 1, 3, 1, 3, 3, 1, 3,
1371 1, 1, 1, 2, 1, 1, 1, 3, 3, 1,
1372 1, 1, 2, 3, 2, 2, 2, 2, 2, 2,
1373 3, 1, 3, 3, 1, 1, 1, 2, 1, 2,
1374 1, 0, 1, 1, 3, 3, 3, 3, 1, 1,
1375 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1376 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1377 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1378 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1379 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
1380 2, 2, 4, 1, 1, 2, 1, 2, 1, 1,
1381 2, 1, 2, 1, 1, 2, 1, 2, 2, 2,
1382 2, 2, 2, 4, 2, 2, 2, 1, 1, 1,
1383 1, 1, 1, 2, 2, 1, 1, 1, 1, 1,
1384 1, 1, 1, 1, 1, 1, 1, 1, 4, 6,
1385 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1386 2, 3, 1, 1, 1, 1, 1, 1, 1, 3,
1387 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1388 1, 1, 1, 1, 2, 2, 3, 1, 1, 3,
1389 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1390 1, 1, 1, 1, 1, 2, 2, 3, 1, 1,
1391 3
1392 };
1393
1394
1395 #define yyerrok (yyerrstatus = 0)
1396 #define yyclearin (yychar = YYEMPTY)
1397 #define YYEMPTY (-2)
1398 #define YYEOF 0
1399
1400 #define YYACCEPT goto yyacceptlab
1401 #define YYABORT goto yyabortlab
1402 #define YYERROR goto yyerrorlab
1403
1404
1405 #define YYRECOVERING() (!!yyerrstatus)
1406
1407 #define YYBACKUP(Token, Value) \
1408 do \
1409 if (yychar == YYEMPTY) \
1410 { \
1411 yychar = (Token); \
1412 yylval = (Value); \
1413 YYPOPSTACK (yylen); \
1414 yystate = *yyssp; \
1415 goto yybackup; \
1416 } \
1417 else \
1418 { \
1419 yyerror (YY_("syntax error: cannot back up")); \
1420 YYERROR; \
1421 } \
1422 while (0)
1423
1424 /* Error token number */
1425 #define YYTERROR 1
1426 #define YYERRCODE 256
1427
1428
1429
1430 /* Enable debugging if requested. */
1431 #if YYDEBUG
1432
1433 # ifndef YYFPRINTF
1434 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1435 # define YYFPRINTF fprintf
1436 # endif
1437
1438 # define YYDPRINTF(Args) \
1439 do { \
1440 if (yydebug) \
1441 YYFPRINTF Args; \
1442 } while (0)
1443
1444 /* This macro is provided for backward compatibility. */
1445 #ifndef YY_LOCATION_PRINT
1446 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1447 #endif
1448
1449
1450 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1451 do { \
1452 if (yydebug) \
1453 { \
1454 YYFPRINTF (stderr, "%s ", Title); \
1455 yy_symbol_print (stderr, \
1456 Type, Value); \
1457 YYFPRINTF (stderr, "\n"); \
1458 } \
1459 } while (0)
1460
1461
1462 /*----------------------------------------.
1463 | Print this symbol's value on YYOUTPUT. |
1464 `----------------------------------------*/
1465
1466 static void
yy_symbol_value_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)1467 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1468 {
1469 FILE *yyo = yyoutput;
1470 YYUSE (yyo);
1471 if (!yyvaluep)
1472 return;
1473 # ifdef YYPRINT
1474 if (yytype < YYNTOKENS)
1475 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1476 # endif
1477 YYUSE (yytype);
1478 }
1479
1480
1481 /*--------------------------------.
1482 | Print this symbol on YYOUTPUT. |
1483 `--------------------------------*/
1484
1485 static void
yy_symbol_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)1486 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1487 {
1488 YYFPRINTF (yyoutput, "%s %s (",
1489 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1490
1491 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1492 YYFPRINTF (yyoutput, ")");
1493 }
1494
1495 /*------------------------------------------------------------------.
1496 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1497 | TOP (included). |
1498 `------------------------------------------------------------------*/
1499
1500 static void
yy_stack_print(yytype_int16 * yybottom,yytype_int16 * yytop)1501 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1502 {
1503 YYFPRINTF (stderr, "Stack now");
1504 for (; yybottom <= yytop; yybottom++)
1505 {
1506 int yybot = *yybottom;
1507 YYFPRINTF (stderr, " %d", yybot);
1508 }
1509 YYFPRINTF (stderr, "\n");
1510 }
1511
1512 # define YY_STACK_PRINT(Bottom, Top) \
1513 do { \
1514 if (yydebug) \
1515 yy_stack_print ((Bottom), (Top)); \
1516 } while (0)
1517
1518
1519 /*------------------------------------------------.
1520 | Report that the YYRULE is going to be reduced. |
1521 `------------------------------------------------*/
1522
1523 static void
yy_reduce_print(yytype_int16 * yyssp,YYSTYPE * yyvsp,int yyrule)1524 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
1525 {
1526 unsigned long int yylno = yyrline[yyrule];
1527 int yynrhs = yyr2[yyrule];
1528 int yyi;
1529 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1530 yyrule - 1, yylno);
1531 /* The symbols being reduced. */
1532 for (yyi = 0; yyi < yynrhs; yyi++)
1533 {
1534 YYFPRINTF (stderr, " $%d = ", yyi + 1);
1535 yy_symbol_print (stderr,
1536 yystos[yyssp[yyi + 1 - yynrhs]],
1537 &(yyvsp[(yyi + 1) - (yynrhs)])
1538 );
1539 YYFPRINTF (stderr, "\n");
1540 }
1541 }
1542
1543 # define YY_REDUCE_PRINT(Rule) \
1544 do { \
1545 if (yydebug) \
1546 yy_reduce_print (yyssp, yyvsp, Rule); \
1547 } while (0)
1548
1549 /* Nonzero means print parse trace. It is left uninitialized so that
1550 multiple parsers can coexist. */
1551 int yydebug;
1552 #else /* !YYDEBUG */
1553 # define YYDPRINTF(Args)
1554 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1555 # define YY_STACK_PRINT(Bottom, Top)
1556 # define YY_REDUCE_PRINT(Rule)
1557 #endif /* !YYDEBUG */
1558
1559
1560 /* YYINITDEPTH -- initial size of the parser's stacks. */
1561 #ifndef YYINITDEPTH
1562 # define YYINITDEPTH 200
1563 #endif
1564
1565 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1566 if the built-in stack extension method is used).
1567
1568 Do not make this value too large; the results are undefined if
1569 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1570 evaluated with infinite-precision integer arithmetic. */
1571
1572 #ifndef YYMAXDEPTH
1573 # define YYMAXDEPTH 10000
1574 #endif
1575
1576
1577 #if YYERROR_VERBOSE
1578
1579 # ifndef yystrlen
1580 # if defined __GLIBC__ && defined _STRING_H
1581 # define yystrlen strlen
1582 # else
1583 /* Return the length of YYSTR. */
1584 static YYSIZE_T
yystrlen(const char * yystr)1585 yystrlen (const char *yystr)
1586 {
1587 YYSIZE_T yylen;
1588 for (yylen = 0; yystr[yylen]; yylen++)
1589 continue;
1590 return yylen;
1591 }
1592 # endif
1593 # endif
1594
1595 # ifndef yystpcpy
1596 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1597 # define yystpcpy stpcpy
1598 # else
1599 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1600 YYDEST. */
1601 static char *
yystpcpy(char * yydest,const char * yysrc)1602 yystpcpy (char *yydest, const char *yysrc)
1603 {
1604 char *yyd = yydest;
1605 const char *yys = yysrc;
1606
1607 while ((*yyd++ = *yys++) != '\0')
1608 continue;
1609
1610 return yyd - 1;
1611 }
1612 # endif
1613 # endif
1614
1615 # ifndef yytnamerr
1616 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1617 quotes and backslashes, so that it's suitable for yyerror. The
1618 heuristic is that double-quoting is unnecessary unless the string
1619 contains an apostrophe, a comma, or backslash (other than
1620 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1621 null, do not copy; instead, return the length of what the result
1622 would have been. */
1623 static YYSIZE_T
yytnamerr(char * yyres,const char * yystr)1624 yytnamerr (char *yyres, const char *yystr)
1625 {
1626 if (*yystr == '"')
1627 {
1628 YYSIZE_T yyn = 0;
1629 char const *yyp = yystr;
1630
1631 for (;;)
1632 switch (*++yyp)
1633 {
1634 case '\'':
1635 case ',':
1636 goto do_not_strip_quotes;
1637
1638 case '\\':
1639 if (*++yyp != '\\')
1640 goto do_not_strip_quotes;
1641 /* Fall through. */
1642 default:
1643 if (yyres)
1644 yyres[yyn] = *yyp;
1645 yyn++;
1646 break;
1647
1648 case '"':
1649 if (yyres)
1650 yyres[yyn] = '\0';
1651 return yyn;
1652 }
1653 do_not_strip_quotes: ;
1654 }
1655
1656 if (! yyres)
1657 return yystrlen (yystr);
1658
1659 return yystpcpy (yyres, yystr) - yyres;
1660 }
1661 # endif
1662
1663 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1664 about the unexpected token YYTOKEN for the state stack whose top is
1665 YYSSP.
1666
1667 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
1668 not large enough to hold the message. In that case, also set
1669 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
1670 required number of bytes is too large to store. */
1671 static int
yysyntax_error(YYSIZE_T * yymsg_alloc,char ** yymsg,yytype_int16 * yyssp,int yytoken)1672 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1673 yytype_int16 *yyssp, int yytoken)
1674 {
1675 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1676 YYSIZE_T yysize = yysize0;
1677 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1678 /* Internationalized format string. */
1679 const char *yyformat = YY_NULLPTR;
1680 /* Arguments of yyformat. */
1681 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1682 /* Number of reported tokens (one for the "unexpected", one per
1683 "expected"). */
1684 int yycount = 0;
1685
1686 /* There are many possibilities here to consider:
1687 - If this state is a consistent state with a default action, then
1688 the only way this function was invoked is if the default action
1689 is an error action. In that case, don't check for expected
1690 tokens because there are none.
1691 - The only way there can be no lookahead present (in yychar) is if
1692 this state is a consistent state with a default action. Thus,
1693 detecting the absence of a lookahead is sufficient to determine
1694 that there is no unexpected or expected token to report. In that
1695 case, just report a simple "syntax error".
1696 - Don't assume there isn't a lookahead just because this state is a
1697 consistent state with a default action. There might have been a
1698 previous inconsistent state, consistent state with a non-default
1699 action, or user semantic action that manipulated yychar.
1700 - Of course, the expected token list depends on states to have
1701 correct lookahead information, and it depends on the parser not
1702 to perform extra reductions after fetching a lookahead from the
1703 scanner and before detecting a syntax error. Thus, state merging
1704 (from LALR or IELR) and default reductions corrupt the expected
1705 token list. However, the list is correct for canonical LR with
1706 one exception: it will still contain any token that will not be
1707 accepted due to an error action in a later state.
1708 */
1709 if (yytoken != YYEMPTY)
1710 {
1711 int yyn = yypact[*yyssp];
1712 yyarg[yycount++] = yytname[yytoken];
1713 if (!yypact_value_is_default (yyn))
1714 {
1715 /* Start YYX at -YYN if negative to avoid negative indexes in
1716 YYCHECK. In other words, skip the first -YYN actions for
1717 this state because they are default actions. */
1718 int yyxbegin = yyn < 0 ? -yyn : 0;
1719 /* Stay within bounds of both yycheck and yytname. */
1720 int yychecklim = YYLAST - yyn + 1;
1721 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1722 int yyx;
1723
1724 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1725 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1726 && !yytable_value_is_error (yytable[yyx + yyn]))
1727 {
1728 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1729 {
1730 yycount = 1;
1731 yysize = yysize0;
1732 break;
1733 }
1734 yyarg[yycount++] = yytname[yyx];
1735 {
1736 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1737 if (! (yysize <= yysize1
1738 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1739 return 2;
1740 yysize = yysize1;
1741 }
1742 }
1743 }
1744 }
1745
1746 switch (yycount)
1747 {
1748 # define YYCASE_(N, S) \
1749 case N: \
1750 yyformat = S; \
1751 break
1752 YYCASE_(0, YY_("syntax error"));
1753 YYCASE_(1, YY_("syntax error, unexpected %s"));
1754 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1755 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1756 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1757 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1758 # undef YYCASE_
1759 }
1760
1761 {
1762 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1763 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1764 return 2;
1765 yysize = yysize1;
1766 }
1767
1768 if (*yymsg_alloc < yysize)
1769 {
1770 *yymsg_alloc = 2 * yysize;
1771 if (! (yysize <= *yymsg_alloc
1772 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1773 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1774 return 1;
1775 }
1776
1777 /* Avoid sprintf, as that infringes on the user's name space.
1778 Don't have undefined behavior even if the translation
1779 produced a string with the wrong number of "%s"s. */
1780 {
1781 char *yyp = *yymsg;
1782 int yyi = 0;
1783 while ((*yyp = *yyformat) != '\0')
1784 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1785 {
1786 yyp += yytnamerr (yyp, yyarg[yyi++]);
1787 yyformat += 2;
1788 }
1789 else
1790 {
1791 yyp++;
1792 yyformat++;
1793 }
1794 }
1795 return 0;
1796 }
1797 #endif /* YYERROR_VERBOSE */
1798
1799 /*-----------------------------------------------.
1800 | Release the memory associated to this symbol. |
1801 `-----------------------------------------------*/
1802
1803 static void
yydestruct(const char * yymsg,int yytype,YYSTYPE * yyvaluep)1804 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1805 {
1806 YYUSE (yyvaluep);
1807 if (!yymsg)
1808 yymsg = "Deleting";
1809 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1810
1811 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1812 YYUSE (yytype);
1813 YY_IGNORE_MAYBE_UNINITIALIZED_END
1814 }
1815
1816
1817
1818
1819 /* The lookahead symbol. */
1820 int yychar;
1821
1822 /* The semantic value of the lookahead symbol. */
1823 YYSTYPE yylval;
1824 /* Number of syntax errors so far. */
1825 int yynerrs;
1826
1827
1828 /*----------.
1829 | yyparse. |
1830 `----------*/
1831
1832 int
yyparse(void)1833 yyparse (void)
1834 {
1835 int yystate;
1836 /* Number of tokens to shift before error messages enabled. */
1837 int yyerrstatus;
1838
1839 /* The stacks and their tools:
1840 'yyss': related to states.
1841 'yyvs': related to semantic values.
1842
1843 Refer to the stacks through separate pointers, to allow yyoverflow
1844 to reallocate them elsewhere. */
1845
1846 /* The state stack. */
1847 yytype_int16 yyssa[YYINITDEPTH];
1848 yytype_int16 *yyss;
1849 yytype_int16 *yyssp;
1850
1851 /* The semantic value stack. */
1852 YYSTYPE yyvsa[YYINITDEPTH];
1853 YYSTYPE *yyvs;
1854 YYSTYPE *yyvsp;
1855
1856 YYSIZE_T yystacksize;
1857
1858 int yyn;
1859 int yyresult;
1860 /* Lookahead token as an internal (translated) token number. */
1861 int yytoken = 0;
1862 /* The variables used to return semantic value and location from the
1863 action routines. */
1864 YYSTYPE yyval;
1865
1866 #if YYERROR_VERBOSE
1867 /* Buffer for error messages, and its allocated size. */
1868 char yymsgbuf[128];
1869 char *yymsg = yymsgbuf;
1870 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1871 #endif
1872
1873 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1874
1875 /* The number of symbols on the RHS of the reduced rule.
1876 Keep to zero when no symbol should be popped. */
1877 int yylen = 0;
1878
1879 yyssp = yyss = yyssa;
1880 yyvsp = yyvs = yyvsa;
1881 yystacksize = YYINITDEPTH;
1882
1883 YYDPRINTF ((stderr, "Starting parse\n"));
1884
1885 yystate = 0;
1886 yyerrstatus = 0;
1887 yynerrs = 0;
1888 yychar = YYEMPTY; /* Cause a token to be read. */
1889 goto yysetstate;
1890
1891 /*------------------------------------------------------------.
1892 | yynewstate -- Push a new state, which is found in yystate. |
1893 `------------------------------------------------------------*/
1894 yynewstate:
1895 /* In all cases, when you get here, the value and location stacks
1896 have just been pushed. So pushing a state here evens the stacks. */
1897 yyssp++;
1898
1899 yysetstate:
1900 *yyssp = yystate;
1901
1902 if (yyss + yystacksize - 1 <= yyssp)
1903 {
1904 /* Get the current used size of the three stacks, in elements. */
1905 YYSIZE_T yysize = yyssp - yyss + 1;
1906
1907 #ifdef yyoverflow
1908 {
1909 /* Give user a chance to reallocate the stack. Use copies of
1910 these so that the &'s don't force the real ones into
1911 memory. */
1912 YYSTYPE *yyvs1 = yyvs;
1913 yytype_int16 *yyss1 = yyss;
1914
1915 /* Each stack pointer address is followed by the size of the
1916 data in use in that stack, in bytes. This used to be a
1917 conditional around just the two extra args, but that might
1918 be undefined if yyoverflow is a macro. */
1919 yyoverflow (YY_("memory exhausted"),
1920 &yyss1, yysize * sizeof (*yyssp),
1921 &yyvs1, yysize * sizeof (*yyvsp),
1922 &yystacksize);
1923
1924 yyss = yyss1;
1925 yyvs = yyvs1;
1926 }
1927 #else /* no yyoverflow */
1928 # ifndef YYSTACK_RELOCATE
1929 goto yyexhaustedlab;
1930 # else
1931 /* Extend the stack our own way. */
1932 if (YYMAXDEPTH <= yystacksize)
1933 goto yyexhaustedlab;
1934 yystacksize *= 2;
1935 if (YYMAXDEPTH < yystacksize)
1936 yystacksize = YYMAXDEPTH;
1937
1938 {
1939 yytype_int16 *yyss1 = yyss;
1940 union yyalloc *yyptr =
1941 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1942 if (! yyptr)
1943 goto yyexhaustedlab;
1944 YYSTACK_RELOCATE (yyss_alloc, yyss);
1945 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1946 # undef YYSTACK_RELOCATE
1947 if (yyss1 != yyssa)
1948 YYSTACK_FREE (yyss1);
1949 }
1950 # endif
1951 #endif /* no yyoverflow */
1952
1953 yyssp = yyss + yysize - 1;
1954 yyvsp = yyvs + yysize - 1;
1955
1956 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1957 (unsigned long int) yystacksize));
1958
1959 if (yyss + yystacksize - 1 <= yyssp)
1960 YYABORT;
1961 }
1962
1963 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1964
1965 if (yystate == YYFINAL)
1966 YYACCEPT;
1967
1968 goto yybackup;
1969
1970 /*-----------.
1971 | yybackup. |
1972 `-----------*/
1973 yybackup:
1974
1975 /* Do appropriate processing given the current state. Read a
1976 lookahead token if we need one and don't already have one. */
1977
1978 /* First try to decide what to do without reference to lookahead token. */
1979 yyn = yypact[yystate];
1980 if (yypact_value_is_default (yyn))
1981 goto yydefault;
1982
1983 /* Not known => get a lookahead token if don't already have one. */
1984
1985 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1986 if (yychar == YYEMPTY)
1987 {
1988 YYDPRINTF ((stderr, "Reading a token: "));
1989 yychar = yylex ();
1990 }
1991
1992 if (yychar <= YYEOF)
1993 {
1994 yychar = yytoken = YYEOF;
1995 YYDPRINTF ((stderr, "Now at end of input.\n"));
1996 }
1997 else
1998 {
1999 yytoken = YYTRANSLATE (yychar);
2000 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2001 }
2002
2003 /* If the proper action on seeing token YYTOKEN is to reduce or to
2004 detect an error, take that action. */
2005 yyn += yytoken;
2006 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2007 goto yydefault;
2008 yyn = yytable[yyn];
2009 if (yyn <= 0)
2010 {
2011 if (yytable_value_is_error (yyn))
2012 goto yyerrlab;
2013 yyn = -yyn;
2014 goto yyreduce;
2015 }
2016
2017 /* Count tokens shifted since error; after three, turn off error
2018 status. */
2019 if (yyerrstatus)
2020 yyerrstatus--;
2021
2022 /* Shift the lookahead token. */
2023 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2024
2025 /* Discard the shifted token. */
2026 yychar = YYEMPTY;
2027
2028 yystate = yyn;
2029 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2030 *++yyvsp = yylval;
2031 YY_IGNORE_MAYBE_UNINITIALIZED_END
2032
2033 goto yynewstate;
2034
2035
2036 /*-----------------------------------------------------------.
2037 | yydefault -- do the default action for the current state. |
2038 `-----------------------------------------------------------*/
2039 yydefault:
2040 yyn = yydefact[yystate];
2041 if (yyn == 0)
2042 goto yyerrlab;
2043 goto yyreduce;
2044
2045
2046 /*-----------------------------.
2047 | yyreduce -- Do a reduction. |
2048 `-----------------------------*/
2049 yyreduce:
2050 /* yyn is the number of a rule to reduce with. */
2051 yylen = yyr2[yyn];
2052
2053 /* If YYLEN is nonzero, implement the default value of the action:
2054 '$$ = $1'.
2055
2056 Otherwise, the following line sets YYVAL to garbage.
2057 This behavior is undocumented and Bison
2058 users should not rely upon it. Assigning to YYVAL
2059 unconditionally makes the parser a bit smaller, and it avoids a
2060 GCC warning that YYVAL may be used uninitialized. */
2061 yyval = yyvsp[1-yylen];
2062
2063
2064 YY_REDUCE_PRINT (yyn);
2065 switch (yyn)
2066 {
2067 case 2:
2068 #line 331 "grammar.y" /* yacc.c:1646 */
2069 {
2070 finish_parse((yyvsp[0].blk).b);
2071 }
2072 #line 2073 "y.tab.c" /* yacc.c:1646 */
2073 break;
2074
2075 case 4:
2076 #line 336 "grammar.y" /* yacc.c:1646 */
2077 { (yyval.blk).q = qerr; }
2078 #line 2079 "y.tab.c" /* yacc.c:1646 */
2079 break;
2080
2081 case 6:
2082 #line 339 "grammar.y" /* yacc.c:1646 */
2083 { gen_and((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); }
2084 #line 2085 "y.tab.c" /* yacc.c:1646 */
2085 break;
2086
2087 case 7:
2088 #line 340 "grammar.y" /* yacc.c:1646 */
2089 { gen_and((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); }
2090 #line 2091 "y.tab.c" /* yacc.c:1646 */
2091 break;
2092
2093 case 8:
2094 #line 341 "grammar.y" /* yacc.c:1646 */
2095 { gen_or((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); }
2096 #line 2097 "y.tab.c" /* yacc.c:1646 */
2097 break;
2098
2099 case 9:
2100 #line 342 "grammar.y" /* yacc.c:1646 */
2101 { gen_or((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); }
2102 #line 2103 "y.tab.c" /* yacc.c:1646 */
2103 break;
2104
2105 case 10:
2106 #line 344 "grammar.y" /* yacc.c:1646 */
2107 { (yyval.blk) = (yyvsp[-1].blk); }
2108 #line 2109 "y.tab.c" /* yacc.c:1646 */
2109 break;
2110
2111 case 11:
2112 #line 346 "grammar.y" /* yacc.c:1646 */
2113 { (yyval.blk) = (yyvsp[-1].blk); }
2114 #line 2115 "y.tab.c" /* yacc.c:1646 */
2115 break;
2116
2117 case 13:
2118 #line 349 "grammar.y" /* yacc.c:1646 */
2119 { (yyval.blk).b = gen_ncode(NULL, (bpf_u_int32)(yyvsp[0].i),
2120 (yyval.blk).q = (yyvsp[-1].blk).q); }
2121 #line 2122 "y.tab.c" /* yacc.c:1646 */
2122 break;
2123
2124 case 14:
2125 #line 351 "grammar.y" /* yacc.c:1646 */
2126 { (yyval.blk) = (yyvsp[-1].blk); }
2127 #line 2128 "y.tab.c" /* yacc.c:1646 */
2128 break;
2129
2130 case 15:
2131 #line 353 "grammar.y" /* yacc.c:1646 */
2132 { (yyval.blk).b = gen_scode((yyvsp[0].s), (yyval.blk).q = (yyvsp[-1].blk).q); }
2133 #line 2134 "y.tab.c" /* yacc.c:1646 */
2134 break;
2135
2136 case 16:
2137 #line 354 "grammar.y" /* yacc.c:1646 */
2138 { (yyval.blk).b = gen_mcode((yyvsp[-2].s), NULL, (yyvsp[0].i),
2139 (yyval.blk).q = (yyvsp[-3].blk).q); }
2140 #line 2141 "y.tab.c" /* yacc.c:1646 */
2141 break;
2142
2143 case 17:
2144 #line 356 "grammar.y" /* yacc.c:1646 */
2145 { (yyval.blk).b = gen_mcode((yyvsp[-2].s), (yyvsp[0].s), 0,
2146 (yyval.blk).q = (yyvsp[-3].blk).q); }
2147 #line 2148 "y.tab.c" /* yacc.c:1646 */
2148 break;
2149
2150 case 18:
2151 #line 358 "grammar.y" /* yacc.c:1646 */
2152 {
2153 /* Decide how to parse HID based on proto */
2154 (yyval.blk).q = (yyvsp[-1].blk).q;
2155 if ((yyval.blk).q.addr == Q_PORT)
2156 bpf_error("'port' modifier applied to ip host");
2157 else if ((yyval.blk).q.addr == Q_PORTRANGE)
2158 bpf_error("'portrange' modifier applied to ip host");
2159 else if ((yyval.blk).q.addr == Q_PROTO)
2160 bpf_error("'proto' modifier applied to ip host");
2161 else if ((yyval.blk).q.addr == Q_PROTOCHAIN)
2162 bpf_error("'protochain' modifier applied to ip host");
2163 (yyval.blk).b = gen_ncode((yyvsp[0].s), 0, (yyval.blk).q);
2164 }
2165 #line 2166 "y.tab.c" /* yacc.c:1646 */
2166 break;
2167
2168 case 19:
2169 #line 371 "grammar.y" /* yacc.c:1646 */
2170 {
2171 #ifdef INET6
2172 (yyval.blk).b = gen_mcode6((yyvsp[-2].s), NULL, (yyvsp[0].i),
2173 (yyval.blk).q = (yyvsp[-3].blk).q);
2174 #else
2175 bpf_error("'ip6addr/prefixlen' not supported "
2176 "in this configuration");
2177 #endif /*INET6*/
2178 }
2179 #line 2180 "y.tab.c" /* yacc.c:1646 */
2180 break;
2181
2182 case 20:
2183 #line 380 "grammar.y" /* yacc.c:1646 */
2184 {
2185 #ifdef INET6
2186 (yyval.blk).b = gen_mcode6((yyvsp[0].s), 0, 128,
2187 (yyval.blk).q = (yyvsp[-1].blk).q);
2188 #else
2189 bpf_error("'ip6addr' not supported "
2190 "in this configuration");
2191 #endif /*INET6*/
2192 }
2193 #line 2194 "y.tab.c" /* yacc.c:1646 */
2194 break;
2195
2196 case 21:
2197 #line 389 "grammar.y" /* yacc.c:1646 */
2198 {
2199 (yyval.blk).b = gen_ecode((yyvsp[0].e), (yyval.blk).q = (yyvsp[-1].blk).q);
2200 /*
2201 * $1 was allocated by "pcap_ether_aton()",
2202 * so we must free it now that we're done
2203 * with it.
2204 */
2205 free((yyvsp[0].e));
2206 }
2207 #line 2208 "y.tab.c" /* yacc.c:1646 */
2208 break;
2209
2210 case 22:
2211 #line 398 "grammar.y" /* yacc.c:1646 */
2212 {
2213 (yyval.blk).b = gen_acode((yyvsp[0].e), (yyval.blk).q = (yyvsp[-1].blk).q);
2214 /*
2215 * $1 was allocated by "pcap_ether_aton()",
2216 * so we must free it now that we're done
2217 * with it.
2218 */
2219 free((yyvsp[0].e));
2220 }
2221 #line 2222 "y.tab.c" /* yacc.c:1646 */
2222 break;
2223
2224 case 23:
2225 #line 407 "grammar.y" /* yacc.c:1646 */
2226 { gen_not((yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); }
2227 #line 2228 "y.tab.c" /* yacc.c:1646 */
2228 break;
2229
2230 case 24:
2231 #line 409 "grammar.y" /* yacc.c:1646 */
2232 { (yyval.blk) = (yyvsp[-1].blk); }
2233 #line 2234 "y.tab.c" /* yacc.c:1646 */
2234 break;
2235
2236 case 25:
2237 #line 411 "grammar.y" /* yacc.c:1646 */
2238 { (yyval.blk) = (yyvsp[-1].blk); }
2239 #line 2240 "y.tab.c" /* yacc.c:1646 */
2240 break;
2241
2242 case 27:
2243 #line 414 "grammar.y" /* yacc.c:1646 */
2244 { gen_and((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); }
2245 #line 2246 "y.tab.c" /* yacc.c:1646 */
2246 break;
2247
2248 case 28:
2249 #line 415 "grammar.y" /* yacc.c:1646 */
2250 { gen_or((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); }
2251 #line 2252 "y.tab.c" /* yacc.c:1646 */
2252 break;
2253
2254 case 29:
2255 #line 417 "grammar.y" /* yacc.c:1646 */
2256 { (yyval.blk).b = gen_ncode(NULL, (bpf_u_int32)(yyvsp[0].i),
2257 (yyval.blk).q = (yyvsp[-1].blk).q); }
2258 #line 2259 "y.tab.c" /* yacc.c:1646 */
2259 break;
2260
2261 case 32:
2262 #line 422 "grammar.y" /* yacc.c:1646 */
2263 { gen_not((yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); }
2264 #line 2265 "y.tab.c" /* yacc.c:1646 */
2265 break;
2266
2267 case 33:
2268 #line 424 "grammar.y" /* yacc.c:1646 */
2269 { QSET((yyval.blk).q, (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i)); }
2270 #line 2271 "y.tab.c" /* yacc.c:1646 */
2271 break;
2272
2273 case 34:
2274 #line 425 "grammar.y" /* yacc.c:1646 */
2275 { QSET((yyval.blk).q, (yyvsp[-1].i), (yyvsp[0].i), Q_DEFAULT); }
2276 #line 2277 "y.tab.c" /* yacc.c:1646 */
2277 break;
2278
2279 case 35:
2280 #line 426 "grammar.y" /* yacc.c:1646 */
2281 { QSET((yyval.blk).q, (yyvsp[-1].i), Q_DEFAULT, (yyvsp[0].i)); }
2282 #line 2283 "y.tab.c" /* yacc.c:1646 */
2283 break;
2284
2285 case 36:
2286 #line 427 "grammar.y" /* yacc.c:1646 */
2287 { QSET((yyval.blk).q, (yyvsp[-1].i), Q_DEFAULT, Q_PROTO); }
2288 #line 2289 "y.tab.c" /* yacc.c:1646 */
2289 break;
2290
2291 case 37:
2292 #line 428 "grammar.y" /* yacc.c:1646 */
2293 { QSET((yyval.blk).q, (yyvsp[-1].i), Q_DEFAULT, Q_PROTOCHAIN); }
2294 #line 2295 "y.tab.c" /* yacc.c:1646 */
2295 break;
2296
2297 case 38:
2298 #line 429 "grammar.y" /* yacc.c:1646 */
2299 { QSET((yyval.blk).q, (yyvsp[-1].i), Q_DEFAULT, (yyvsp[0].i)); }
2300 #line 2301 "y.tab.c" /* yacc.c:1646 */
2301 break;
2302
2303 case 39:
2304 #line 431 "grammar.y" /* yacc.c:1646 */
2305 { (yyval.blk) = (yyvsp[0].blk); }
2306 #line 2307 "y.tab.c" /* yacc.c:1646 */
2307 break;
2308
2309 case 40:
2310 #line 432 "grammar.y" /* yacc.c:1646 */
2311 { (yyval.blk).b = (yyvsp[-1].blk).b; (yyval.blk).q = (yyvsp[-2].blk).q; }
2312 #line 2313 "y.tab.c" /* yacc.c:1646 */
2313 break;
2314
2315 case 41:
2316 #line 433 "grammar.y" /* yacc.c:1646 */
2317 { (yyval.blk).b = gen_proto_abbrev((yyvsp[0].i)); (yyval.blk).q = qerr; }
2318 #line 2319 "y.tab.c" /* yacc.c:1646 */
2319 break;
2320
2321 case 42:
2322 #line 434 "grammar.y" /* yacc.c:1646 */
2323 { (yyval.blk).b = gen_relation((yyvsp[-1].i), (yyvsp[-2].a), (yyvsp[0].a), 0);
2324 (yyval.blk).q = qerr; }
2325 #line 2326 "y.tab.c" /* yacc.c:1646 */
2326 break;
2327
2328 case 43:
2329 #line 436 "grammar.y" /* yacc.c:1646 */
2330 { (yyval.blk).b = gen_relation((yyvsp[-1].i), (yyvsp[-2].a), (yyvsp[0].a), 1);
2331 (yyval.blk).q = qerr; }
2332 #line 2333 "y.tab.c" /* yacc.c:1646 */
2333 break;
2334
2335 case 44:
2336 #line 438 "grammar.y" /* yacc.c:1646 */
2337 { (yyval.blk).b = (yyvsp[0].rblk); (yyval.blk).q = qerr; }
2338 #line 2339 "y.tab.c" /* yacc.c:1646 */
2339 break;
2340
2341 case 45:
2342 #line 439 "grammar.y" /* yacc.c:1646 */
2343 { (yyval.blk).b = gen_atmtype_abbrev((yyvsp[0].i)); (yyval.blk).q = qerr; }
2344 #line 2345 "y.tab.c" /* yacc.c:1646 */
2345 break;
2346
2347 case 46:
2348 #line 440 "grammar.y" /* yacc.c:1646 */
2349 { (yyval.blk).b = gen_atmmulti_abbrev((yyvsp[0].i)); (yyval.blk).q = qerr; }
2350 #line 2351 "y.tab.c" /* yacc.c:1646 */
2351 break;
2352
2353 case 47:
2354 #line 441 "grammar.y" /* yacc.c:1646 */
2355 { (yyval.blk).b = (yyvsp[0].blk).b; (yyval.blk).q = qerr; }
2356 #line 2357 "y.tab.c" /* yacc.c:1646 */
2357 break;
2358
2359 case 48:
2360 #line 442 "grammar.y" /* yacc.c:1646 */
2361 { (yyval.blk).b = gen_mtp2type_abbrev((yyvsp[0].i)); (yyval.blk).q = qerr; }
2362 #line 2363 "y.tab.c" /* yacc.c:1646 */
2363 break;
2364
2365 case 49:
2366 #line 443 "grammar.y" /* yacc.c:1646 */
2367 { (yyval.blk).b = (yyvsp[0].blk).b; (yyval.blk).q = qerr; }
2368 #line 2369 "y.tab.c" /* yacc.c:1646 */
2369 break;
2370
2371 case 51:
2372 #line 447 "grammar.y" /* yacc.c:1646 */
2373 { (yyval.i) = Q_DEFAULT; }
2374 #line 2375 "y.tab.c" /* yacc.c:1646 */
2375 break;
2376
2377 case 52:
2378 #line 450 "grammar.y" /* yacc.c:1646 */
2379 { (yyval.i) = Q_SRC; }
2380 #line 2381 "y.tab.c" /* yacc.c:1646 */
2381 break;
2382
2383 case 53:
2384 #line 451 "grammar.y" /* yacc.c:1646 */
2385 { (yyval.i) = Q_DST; }
2386 #line 2387 "y.tab.c" /* yacc.c:1646 */
2387 break;
2388
2389 case 54:
2390 #line 452 "grammar.y" /* yacc.c:1646 */
2391 { (yyval.i) = Q_OR; }
2392 #line 2393 "y.tab.c" /* yacc.c:1646 */
2393 break;
2394
2395 case 55:
2396 #line 453 "grammar.y" /* yacc.c:1646 */
2397 { (yyval.i) = Q_OR; }
2398 #line 2399 "y.tab.c" /* yacc.c:1646 */
2399 break;
2400
2401 case 56:
2402 #line 454 "grammar.y" /* yacc.c:1646 */
2403 { (yyval.i) = Q_AND; }
2404 #line 2405 "y.tab.c" /* yacc.c:1646 */
2405 break;
2406
2407 case 57:
2408 #line 455 "grammar.y" /* yacc.c:1646 */
2409 { (yyval.i) = Q_AND; }
2410 #line 2411 "y.tab.c" /* yacc.c:1646 */
2411 break;
2412
2413 case 58:
2414 #line 456 "grammar.y" /* yacc.c:1646 */
2415 { (yyval.i) = Q_ADDR1; }
2416 #line 2417 "y.tab.c" /* yacc.c:1646 */
2417 break;
2418
2419 case 59:
2420 #line 457 "grammar.y" /* yacc.c:1646 */
2421 { (yyval.i) = Q_ADDR2; }
2422 #line 2423 "y.tab.c" /* yacc.c:1646 */
2423 break;
2424
2425 case 60:
2426 #line 458 "grammar.y" /* yacc.c:1646 */
2427 { (yyval.i) = Q_ADDR3; }
2428 #line 2429 "y.tab.c" /* yacc.c:1646 */
2429 break;
2430
2431 case 61:
2432 #line 459 "grammar.y" /* yacc.c:1646 */
2433 { (yyval.i) = Q_ADDR4; }
2434 #line 2435 "y.tab.c" /* yacc.c:1646 */
2435 break;
2436
2437 case 62:
2438 #line 460 "grammar.y" /* yacc.c:1646 */
2439 { (yyval.i) = Q_RA; }
2440 #line 2441 "y.tab.c" /* yacc.c:1646 */
2441 break;
2442
2443 case 63:
2444 #line 461 "grammar.y" /* yacc.c:1646 */
2445 { (yyval.i) = Q_TA; }
2446 #line 2447 "y.tab.c" /* yacc.c:1646 */
2447 break;
2448
2449 case 64:
2450 #line 464 "grammar.y" /* yacc.c:1646 */
2451 { (yyval.i) = Q_HOST; }
2452 #line 2453 "y.tab.c" /* yacc.c:1646 */
2453 break;
2454
2455 case 65:
2456 #line 465 "grammar.y" /* yacc.c:1646 */
2457 { (yyval.i) = Q_NET; }
2458 #line 2459 "y.tab.c" /* yacc.c:1646 */
2459 break;
2460
2461 case 66:
2462 #line 466 "grammar.y" /* yacc.c:1646 */
2463 { (yyval.i) = Q_PORT; }
2464 #line 2465 "y.tab.c" /* yacc.c:1646 */
2465 break;
2466
2467 case 67:
2468 #line 467 "grammar.y" /* yacc.c:1646 */
2469 { (yyval.i) = Q_PORTRANGE; }
2470 #line 2471 "y.tab.c" /* yacc.c:1646 */
2471 break;
2472
2473 case 68:
2474 #line 470 "grammar.y" /* yacc.c:1646 */
2475 { (yyval.i) = Q_GATEWAY; }
2476 #line 2477 "y.tab.c" /* yacc.c:1646 */
2477 break;
2478
2479 case 69:
2480 #line 472 "grammar.y" /* yacc.c:1646 */
2481 { (yyval.i) = Q_LINK; }
2482 #line 2483 "y.tab.c" /* yacc.c:1646 */
2483 break;
2484
2485 case 70:
2486 #line 473 "grammar.y" /* yacc.c:1646 */
2487 { (yyval.i) = Q_IP; }
2488 #line 2489 "y.tab.c" /* yacc.c:1646 */
2489 break;
2490
2491 case 71:
2492 #line 474 "grammar.y" /* yacc.c:1646 */
2493 { (yyval.i) = Q_ARP; }
2494 #line 2495 "y.tab.c" /* yacc.c:1646 */
2495 break;
2496
2497 case 72:
2498 #line 475 "grammar.y" /* yacc.c:1646 */
2499 { (yyval.i) = Q_RARP; }
2500 #line 2501 "y.tab.c" /* yacc.c:1646 */
2501 break;
2502
2503 case 73:
2504 #line 476 "grammar.y" /* yacc.c:1646 */
2505 { (yyval.i) = Q_SCTP; }
2506 #line 2507 "y.tab.c" /* yacc.c:1646 */
2507 break;
2508
2509 case 74:
2510 #line 477 "grammar.y" /* yacc.c:1646 */
2511 { (yyval.i) = Q_TCP; }
2512 #line 2513 "y.tab.c" /* yacc.c:1646 */
2513 break;
2514
2515 case 75:
2516 #line 478 "grammar.y" /* yacc.c:1646 */
2517 { (yyval.i) = Q_UDP; }
2518 #line 2519 "y.tab.c" /* yacc.c:1646 */
2519 break;
2520
2521 case 76:
2522 #line 479 "grammar.y" /* yacc.c:1646 */
2523 { (yyval.i) = Q_ICMP; }
2524 #line 2525 "y.tab.c" /* yacc.c:1646 */
2525 break;
2526
2527 case 77:
2528 #line 480 "grammar.y" /* yacc.c:1646 */
2529 { (yyval.i) = Q_IGMP; }
2530 #line 2531 "y.tab.c" /* yacc.c:1646 */
2531 break;
2532
2533 case 78:
2534 #line 481 "grammar.y" /* yacc.c:1646 */
2535 { (yyval.i) = Q_IGRP; }
2536 #line 2537 "y.tab.c" /* yacc.c:1646 */
2537 break;
2538
2539 case 79:
2540 #line 482 "grammar.y" /* yacc.c:1646 */
2541 { (yyval.i) = Q_PIM; }
2542 #line 2543 "y.tab.c" /* yacc.c:1646 */
2543 break;
2544
2545 case 80:
2546 #line 483 "grammar.y" /* yacc.c:1646 */
2547 { (yyval.i) = Q_VRRP; }
2548 #line 2549 "y.tab.c" /* yacc.c:1646 */
2549 break;
2550
2551 case 81:
2552 #line 484 "grammar.y" /* yacc.c:1646 */
2553 { (yyval.i) = Q_CARP; }
2554 #line 2555 "y.tab.c" /* yacc.c:1646 */
2555 break;
2556
2557 case 82:
2558 #line 485 "grammar.y" /* yacc.c:1646 */
2559 { (yyval.i) = Q_ATALK; }
2560 #line 2561 "y.tab.c" /* yacc.c:1646 */
2561 break;
2562
2563 case 83:
2564 #line 486 "grammar.y" /* yacc.c:1646 */
2565 { (yyval.i) = Q_AARP; }
2566 #line 2567 "y.tab.c" /* yacc.c:1646 */
2567 break;
2568
2569 case 84:
2570 #line 487 "grammar.y" /* yacc.c:1646 */
2571 { (yyval.i) = Q_DECNET; }
2572 #line 2573 "y.tab.c" /* yacc.c:1646 */
2573 break;
2574
2575 case 85:
2576 #line 488 "grammar.y" /* yacc.c:1646 */
2577 { (yyval.i) = Q_LAT; }
2578 #line 2579 "y.tab.c" /* yacc.c:1646 */
2579 break;
2580
2581 case 86:
2582 #line 489 "grammar.y" /* yacc.c:1646 */
2583 { (yyval.i) = Q_SCA; }
2584 #line 2585 "y.tab.c" /* yacc.c:1646 */
2585 break;
2586
2587 case 87:
2588 #line 490 "grammar.y" /* yacc.c:1646 */
2589 { (yyval.i) = Q_MOPDL; }
2590 #line 2591 "y.tab.c" /* yacc.c:1646 */
2591 break;
2592
2593 case 88:
2594 #line 491 "grammar.y" /* yacc.c:1646 */
2595 { (yyval.i) = Q_MOPRC; }
2596 #line 2597 "y.tab.c" /* yacc.c:1646 */
2597 break;
2598
2599 case 89:
2600 #line 492 "grammar.y" /* yacc.c:1646 */
2601 { (yyval.i) = Q_IPV6; }
2602 #line 2603 "y.tab.c" /* yacc.c:1646 */
2603 break;
2604
2605 case 90:
2606 #line 493 "grammar.y" /* yacc.c:1646 */
2607 { (yyval.i) = Q_ICMPV6; }
2608 #line 2609 "y.tab.c" /* yacc.c:1646 */
2609 break;
2610
2611 case 91:
2612 #line 494 "grammar.y" /* yacc.c:1646 */
2613 { (yyval.i) = Q_AH; }
2614 #line 2615 "y.tab.c" /* yacc.c:1646 */
2615 break;
2616
2617 case 92:
2618 #line 495 "grammar.y" /* yacc.c:1646 */
2619 { (yyval.i) = Q_ESP; }
2620 #line 2621 "y.tab.c" /* yacc.c:1646 */
2621 break;
2622
2623 case 93:
2624 #line 496 "grammar.y" /* yacc.c:1646 */
2625 { (yyval.i) = Q_ISO; }
2626 #line 2627 "y.tab.c" /* yacc.c:1646 */
2627 break;
2628
2629 case 94:
2630 #line 497 "grammar.y" /* yacc.c:1646 */
2631 { (yyval.i) = Q_ESIS; }
2632 #line 2633 "y.tab.c" /* yacc.c:1646 */
2633 break;
2634
2635 case 95:
2636 #line 498 "grammar.y" /* yacc.c:1646 */
2637 { (yyval.i) = Q_ISIS; }
2638 #line 2639 "y.tab.c" /* yacc.c:1646 */
2639 break;
2640
2641 case 96:
2642 #line 499 "grammar.y" /* yacc.c:1646 */
2643 { (yyval.i) = Q_ISIS_L1; }
2644 #line 2645 "y.tab.c" /* yacc.c:1646 */
2645 break;
2646
2647 case 97:
2648 #line 500 "grammar.y" /* yacc.c:1646 */
2649 { (yyval.i) = Q_ISIS_L2; }
2650 #line 2651 "y.tab.c" /* yacc.c:1646 */
2651 break;
2652
2653 case 98:
2654 #line 501 "grammar.y" /* yacc.c:1646 */
2655 { (yyval.i) = Q_ISIS_IIH; }
2656 #line 2657 "y.tab.c" /* yacc.c:1646 */
2657 break;
2658
2659 case 99:
2660 #line 502 "grammar.y" /* yacc.c:1646 */
2661 { (yyval.i) = Q_ISIS_LSP; }
2662 #line 2663 "y.tab.c" /* yacc.c:1646 */
2663 break;
2664
2665 case 100:
2666 #line 503 "grammar.y" /* yacc.c:1646 */
2667 { (yyval.i) = Q_ISIS_SNP; }
2668 #line 2669 "y.tab.c" /* yacc.c:1646 */
2669 break;
2670
2671 case 101:
2672 #line 504 "grammar.y" /* yacc.c:1646 */
2673 { (yyval.i) = Q_ISIS_PSNP; }
2674 #line 2675 "y.tab.c" /* yacc.c:1646 */
2675 break;
2676
2677 case 102:
2678 #line 505 "grammar.y" /* yacc.c:1646 */
2679 { (yyval.i) = Q_ISIS_CSNP; }
2680 #line 2681 "y.tab.c" /* yacc.c:1646 */
2681 break;
2682
2683 case 103:
2684 #line 506 "grammar.y" /* yacc.c:1646 */
2685 { (yyval.i) = Q_CLNP; }
2686 #line 2687 "y.tab.c" /* yacc.c:1646 */
2687 break;
2688
2689 case 104:
2690 #line 507 "grammar.y" /* yacc.c:1646 */
2691 { (yyval.i) = Q_STP; }
2692 #line 2693 "y.tab.c" /* yacc.c:1646 */
2693 break;
2694
2695 case 105:
2696 #line 508 "grammar.y" /* yacc.c:1646 */
2697 { (yyval.i) = Q_IPX; }
2698 #line 2699 "y.tab.c" /* yacc.c:1646 */
2699 break;
2700
2701 case 106:
2702 #line 509 "grammar.y" /* yacc.c:1646 */
2703 { (yyval.i) = Q_NETBEUI; }
2704 #line 2705 "y.tab.c" /* yacc.c:1646 */
2705 break;
2706
2707 case 107:
2708 #line 510 "grammar.y" /* yacc.c:1646 */
2709 { (yyval.i) = Q_RADIO; }
2710 #line 2711 "y.tab.c" /* yacc.c:1646 */
2711 break;
2712
2713 case 108:
2714 #line 512 "grammar.y" /* yacc.c:1646 */
2715 { (yyval.rblk) = gen_broadcast((yyvsp[-1].i)); }
2716 #line 2717 "y.tab.c" /* yacc.c:1646 */
2717 break;
2718
2719 case 109:
2720 #line 513 "grammar.y" /* yacc.c:1646 */
2721 { (yyval.rblk) = gen_multicast((yyvsp[-1].i)); }
2722 #line 2723 "y.tab.c" /* yacc.c:1646 */
2723 break;
2724
2725 case 110:
2726 #line 514 "grammar.y" /* yacc.c:1646 */
2727 { (yyval.rblk) = gen_less((yyvsp[0].i)); }
2728 #line 2729 "y.tab.c" /* yacc.c:1646 */
2729 break;
2730
2731 case 111:
2732 #line 515 "grammar.y" /* yacc.c:1646 */
2733 { (yyval.rblk) = gen_greater((yyvsp[0].i)); }
2734 #line 2735 "y.tab.c" /* yacc.c:1646 */
2735 break;
2736
2737 case 112:
2738 #line 516 "grammar.y" /* yacc.c:1646 */
2739 { (yyval.rblk) = gen_byteop((yyvsp[-1].i), (yyvsp[-2].i), (yyvsp[0].i)); }
2740 #line 2741 "y.tab.c" /* yacc.c:1646 */
2741 break;
2742
2743 case 113:
2744 #line 517 "grammar.y" /* yacc.c:1646 */
2745 { (yyval.rblk) = gen_inbound(0); }
2746 #line 2747 "y.tab.c" /* yacc.c:1646 */
2747 break;
2748
2749 case 114:
2750 #line 518 "grammar.y" /* yacc.c:1646 */
2751 { (yyval.rblk) = gen_inbound(1); }
2752 #line 2753 "y.tab.c" /* yacc.c:1646 */
2753 break;
2754
2755 case 115:
2756 #line 519 "grammar.y" /* yacc.c:1646 */
2757 { (yyval.rblk) = gen_vlan((yyvsp[0].i)); }
2758 #line 2759 "y.tab.c" /* yacc.c:1646 */
2759 break;
2760
2761 case 116:
2762 #line 520 "grammar.y" /* yacc.c:1646 */
2763 { (yyval.rblk) = gen_vlan(-1); }
2764 #line 2765 "y.tab.c" /* yacc.c:1646 */
2765 break;
2766
2767 case 117:
2768 #line 521 "grammar.y" /* yacc.c:1646 */
2769 { (yyval.rblk) = gen_mpls((yyvsp[0].i)); }
2770 #line 2771 "y.tab.c" /* yacc.c:1646 */
2771 break;
2772
2773 case 118:
2774 #line 522 "grammar.y" /* yacc.c:1646 */
2775 { (yyval.rblk) = gen_mpls(-1); }
2776 #line 2777 "y.tab.c" /* yacc.c:1646 */
2777 break;
2778
2779 case 119:
2780 #line 523 "grammar.y" /* yacc.c:1646 */
2781 { (yyval.rblk) = gen_pppoed(); }
2782 #line 2783 "y.tab.c" /* yacc.c:1646 */
2783 break;
2784
2785 case 120:
2786 #line 524 "grammar.y" /* yacc.c:1646 */
2787 { (yyval.rblk) = gen_pppoes((yyvsp[0].i)); }
2788 #line 2789 "y.tab.c" /* yacc.c:1646 */
2789 break;
2790
2791 case 121:
2792 #line 525 "grammar.y" /* yacc.c:1646 */
2793 { (yyval.rblk) = gen_pppoes(-1); }
2794 #line 2795 "y.tab.c" /* yacc.c:1646 */
2795 break;
2796
2797 case 122:
2798 #line 526 "grammar.y" /* yacc.c:1646 */
2799 { (yyval.rblk) = gen_geneve((yyvsp[0].i)); }
2800 #line 2801 "y.tab.c" /* yacc.c:1646 */
2801 break;
2802
2803 case 123:
2804 #line 527 "grammar.y" /* yacc.c:1646 */
2805 { (yyval.rblk) = gen_geneve(-1); }
2806 #line 2807 "y.tab.c" /* yacc.c:1646 */
2807 break;
2808
2809 case 124:
2810 #line 528 "grammar.y" /* yacc.c:1646 */
2811 { (yyval.rblk) = (yyvsp[0].rblk); }
2812 #line 2813 "y.tab.c" /* yacc.c:1646 */
2813 break;
2814
2815 case 125:
2816 #line 529 "grammar.y" /* yacc.c:1646 */
2817 { (yyval.rblk) = (yyvsp[0].rblk); }
2818 #line 2819 "y.tab.c" /* yacc.c:1646 */
2819 break;
2820
2821 case 126:
2822 #line 530 "grammar.y" /* yacc.c:1646 */
2823 { (yyval.rblk) = (yyvsp[0].rblk); }
2824 #line 2825 "y.tab.c" /* yacc.c:1646 */
2825 break;
2826
2827 case 127:
2828 #line 533 "grammar.y" /* yacc.c:1646 */
2829 { (yyval.rblk) = gen_pf_ifname((yyvsp[0].s)); }
2830 #line 2831 "y.tab.c" /* yacc.c:1646 */
2831 break;
2832
2833 case 128:
2834 #line 534 "grammar.y" /* yacc.c:1646 */
2835 { (yyval.rblk) = gen_pf_ruleset((yyvsp[0].s)); }
2836 #line 2837 "y.tab.c" /* yacc.c:1646 */
2837 break;
2838
2839 case 129:
2840 #line 535 "grammar.y" /* yacc.c:1646 */
2841 { (yyval.rblk) = gen_pf_rnr((yyvsp[0].i)); }
2842 #line 2843 "y.tab.c" /* yacc.c:1646 */
2843 break;
2844
2845 case 130:
2846 #line 536 "grammar.y" /* yacc.c:1646 */
2847 { (yyval.rblk) = gen_pf_srnr((yyvsp[0].i)); }
2848 #line 2849 "y.tab.c" /* yacc.c:1646 */
2849 break;
2850
2851 case 131:
2852 #line 537 "grammar.y" /* yacc.c:1646 */
2853 { (yyval.rblk) = gen_pf_reason((yyvsp[0].i)); }
2854 #line 2855 "y.tab.c" /* yacc.c:1646 */
2855 break;
2856
2857 case 132:
2858 #line 538 "grammar.y" /* yacc.c:1646 */
2859 { (yyval.rblk) = gen_pf_action((yyvsp[0].i)); }
2860 #line 2861 "y.tab.c" /* yacc.c:1646 */
2861 break;
2862
2863 case 133:
2864 #line 542 "grammar.y" /* yacc.c:1646 */
2865 { (yyval.rblk) = gen_p80211_type((yyvsp[-2].i) | (yyvsp[0].i),
2866 IEEE80211_FC0_TYPE_MASK |
2867 IEEE80211_FC0_SUBTYPE_MASK);
2868 }
2869 #line 2870 "y.tab.c" /* yacc.c:1646 */
2870 break;
2871
2872 case 134:
2873 #line 546 "grammar.y" /* yacc.c:1646 */
2874 { (yyval.rblk) = gen_p80211_type((yyvsp[0].i),
2875 IEEE80211_FC0_TYPE_MASK);
2876 }
2877 #line 2878 "y.tab.c" /* yacc.c:1646 */
2878 break;
2879
2880 case 135:
2881 #line 549 "grammar.y" /* yacc.c:1646 */
2882 { (yyval.rblk) = gen_p80211_type((yyvsp[0].i),
2883 IEEE80211_FC0_TYPE_MASK |
2884 IEEE80211_FC0_SUBTYPE_MASK);
2885 }
2886 #line 2887 "y.tab.c" /* yacc.c:1646 */
2887 break;
2888
2889 case 136:
2890 #line 553 "grammar.y" /* yacc.c:1646 */
2891 { (yyval.rblk) = gen_p80211_fcdir((yyvsp[0].i)); }
2892 #line 2893 "y.tab.c" /* yacc.c:1646 */
2893 break;
2894
2895 case 138:
2896 #line 557 "grammar.y" /* yacc.c:1646 */
2897 { (yyval.i) = str2tok((yyvsp[0].s), ieee80211_types);
2898 if ((yyval.i) == -1)
2899 bpf_error("unknown 802.11 type name");
2900 }
2901 #line 2902 "y.tab.c" /* yacc.c:1646 */
2902 break;
2903
2904 case 140:
2905 #line 564 "grammar.y" /* yacc.c:1646 */
2906 { const struct tok *types = NULL;
2907 int i;
2908 for (i = 0;; i++) {
2909 if (ieee80211_type_subtypes[i].tok == NULL) {
2910 /* Ran out of types */
2911 bpf_error("unknown 802.11 type");
2912 break;
2913 }
2914 if ((yyvsp[(-1) - (1)].i) == ieee80211_type_subtypes[i].type) {
2915 types = ieee80211_type_subtypes[i].tok;
2916 break;
2917 }
2918 }
2919
2920 (yyval.i) = str2tok((yyvsp[0].s), types);
2921 if ((yyval.i) == -1)
2922 bpf_error("unknown 802.11 subtype name");
2923 }
2924 #line 2925 "y.tab.c" /* yacc.c:1646 */
2925 break;
2926
2927 case 141:
2928 #line 584 "grammar.y" /* yacc.c:1646 */
2929 { int i;
2930 for (i = 0;; i++) {
2931 if (ieee80211_type_subtypes[i].tok == NULL) {
2932 /* Ran out of types */
2933 bpf_error("unknown 802.11 type name");
2934 break;
2935 }
2936 (yyval.i) = str2tok((yyvsp[0].s), ieee80211_type_subtypes[i].tok);
2937 if ((yyval.i) != -1) {
2938 (yyval.i) |= ieee80211_type_subtypes[i].type;
2939 break;
2940 }
2941 }
2942 }
2943 #line 2944 "y.tab.c" /* yacc.c:1646 */
2944 break;
2945
2946 case 142:
2947 #line 600 "grammar.y" /* yacc.c:1646 */
2948 { (yyval.rblk) = gen_llc(); }
2949 #line 2950 "y.tab.c" /* yacc.c:1646 */
2950 break;
2951
2952 case 143:
2953 #line 601 "grammar.y" /* yacc.c:1646 */
2954 { if (pcap_strcasecmp((yyvsp[0].s), "i") == 0)
2955 (yyval.rblk) = gen_llc_i();
2956 else if (pcap_strcasecmp((yyvsp[0].s), "s") == 0)
2957 (yyval.rblk) = gen_llc_s();
2958 else if (pcap_strcasecmp((yyvsp[0].s), "u") == 0)
2959 (yyval.rblk) = gen_llc_u();
2960 else {
2961 u_int subtype;
2962
2963 subtype = str2tok((yyvsp[0].s), llc_s_subtypes);
2964 if (subtype != -1)
2965 (yyval.rblk) = gen_llc_s_subtype(subtype);
2966 else {
2967 subtype = str2tok((yyvsp[0].s), llc_u_subtypes);
2968 if (subtype == -1)
2969 bpf_error("unknown LLC type name \"%s\"", (yyvsp[0].s));
2970 (yyval.rblk) = gen_llc_u_subtype(subtype);
2971 }
2972 }
2973 }
2974 #line 2975 "y.tab.c" /* yacc.c:1646 */
2975 break;
2976
2977 case 144:
2978 #line 622 "grammar.y" /* yacc.c:1646 */
2979 { (yyval.rblk) = gen_llc_s_subtype(LLC_RNR); }
2980 #line 2981 "y.tab.c" /* yacc.c:1646 */
2981 break;
2982
2983 case 146:
2984 #line 626 "grammar.y" /* yacc.c:1646 */
2985 { if (pcap_strcasecmp((yyvsp[0].s), "nods") == 0)
2986 (yyval.i) = IEEE80211_FC1_DIR_NODS;
2987 else if (pcap_strcasecmp((yyvsp[0].s), "tods") == 0)
2988 (yyval.i) = IEEE80211_FC1_DIR_TODS;
2989 else if (pcap_strcasecmp((yyvsp[0].s), "fromds") == 0)
2990 (yyval.i) = IEEE80211_FC1_DIR_FROMDS;
2991 else if (pcap_strcasecmp((yyvsp[0].s), "dstods") == 0)
2992 (yyval.i) = IEEE80211_FC1_DIR_DSTODS;
2993 else
2994 bpf_error("unknown 802.11 direction");
2995 }
2996 #line 2997 "y.tab.c" /* yacc.c:1646 */
2997 break;
2998
2999 case 147:
3000 #line 639 "grammar.y" /* yacc.c:1646 */
3001 { (yyval.i) = (yyvsp[0].i); }
3002 #line 3003 "y.tab.c" /* yacc.c:1646 */
3003 break;
3004
3005 case 148:
3006 #line 640 "grammar.y" /* yacc.c:1646 */
3007 { (yyval.i) = pfreason_to_num((yyvsp[0].s)); }
3008 #line 3009 "y.tab.c" /* yacc.c:1646 */
3009 break;
3010
3011 case 149:
3012 #line 643 "grammar.y" /* yacc.c:1646 */
3013 { (yyval.i) = pfaction_to_num((yyvsp[0].s)); }
3014 #line 3015 "y.tab.c" /* yacc.c:1646 */
3015 break;
3016
3017 case 150:
3018 #line 646 "grammar.y" /* yacc.c:1646 */
3019 { (yyval.i) = BPF_JGT; }
3020 #line 3021 "y.tab.c" /* yacc.c:1646 */
3021 break;
3022
3023 case 151:
3024 #line 647 "grammar.y" /* yacc.c:1646 */
3025 { (yyval.i) = BPF_JGE; }
3026 #line 3027 "y.tab.c" /* yacc.c:1646 */
3027 break;
3028
3029 case 152:
3030 #line 648 "grammar.y" /* yacc.c:1646 */
3031 { (yyval.i) = BPF_JEQ; }
3032 #line 3033 "y.tab.c" /* yacc.c:1646 */
3033 break;
3034
3035 case 153:
3036 #line 650 "grammar.y" /* yacc.c:1646 */
3037 { (yyval.i) = BPF_JGT; }
3038 #line 3039 "y.tab.c" /* yacc.c:1646 */
3039 break;
3040
3041 case 154:
3042 #line 651 "grammar.y" /* yacc.c:1646 */
3043 { (yyval.i) = BPF_JGE; }
3044 #line 3045 "y.tab.c" /* yacc.c:1646 */
3045 break;
3046
3047 case 155:
3048 #line 652 "grammar.y" /* yacc.c:1646 */
3049 { (yyval.i) = BPF_JEQ; }
3050 #line 3051 "y.tab.c" /* yacc.c:1646 */
3051 break;
3052
3053 case 156:
3054 #line 654 "grammar.y" /* yacc.c:1646 */
3055 { (yyval.a) = gen_loadi((yyvsp[0].i)); }
3056 #line 3057 "y.tab.c" /* yacc.c:1646 */
3057 break;
3058
3059 case 158:
3060 #line 657 "grammar.y" /* yacc.c:1646 */
3061 { (yyval.a) = gen_load((yyvsp[-3].i), (yyvsp[-1].a), 1); }
3062 #line 3063 "y.tab.c" /* yacc.c:1646 */
3063 break;
3064
3065 case 159:
3066 #line 658 "grammar.y" /* yacc.c:1646 */
3067 { (yyval.a) = gen_load((yyvsp[-5].i), (yyvsp[-3].a), (yyvsp[-1].i)); }
3068 #line 3069 "y.tab.c" /* yacc.c:1646 */
3069 break;
3070
3071 case 160:
3072 #line 659 "grammar.y" /* yacc.c:1646 */
3073 { (yyval.a) = gen_arth(BPF_ADD, (yyvsp[-2].a), (yyvsp[0].a)); }
3074 #line 3075 "y.tab.c" /* yacc.c:1646 */
3075 break;
3076
3077 case 161:
3078 #line 660 "grammar.y" /* yacc.c:1646 */
3079 { (yyval.a) = gen_arth(BPF_SUB, (yyvsp[-2].a), (yyvsp[0].a)); }
3080 #line 3081 "y.tab.c" /* yacc.c:1646 */
3081 break;
3082
3083 case 162:
3084 #line 661 "grammar.y" /* yacc.c:1646 */
3085 { (yyval.a) = gen_arth(BPF_MUL, (yyvsp[-2].a), (yyvsp[0].a)); }
3086 #line 3087 "y.tab.c" /* yacc.c:1646 */
3087 break;
3088
3089 case 163:
3090 #line 662 "grammar.y" /* yacc.c:1646 */
3091 { (yyval.a) = gen_arth(BPF_DIV, (yyvsp[-2].a), (yyvsp[0].a)); }
3092 #line 3093 "y.tab.c" /* yacc.c:1646 */
3093 break;
3094
3095 case 164:
3096 #line 663 "grammar.y" /* yacc.c:1646 */
3097 { (yyval.a) = gen_arth(BPF_MOD, (yyvsp[-2].a), (yyvsp[0].a)); }
3098 #line 3099 "y.tab.c" /* yacc.c:1646 */
3099 break;
3100
3101 case 165:
3102 #line 664 "grammar.y" /* yacc.c:1646 */
3103 { (yyval.a) = gen_arth(BPF_AND, (yyvsp[-2].a), (yyvsp[0].a)); }
3104 #line 3105 "y.tab.c" /* yacc.c:1646 */
3105 break;
3106
3107 case 166:
3108 #line 665 "grammar.y" /* yacc.c:1646 */
3109 { (yyval.a) = gen_arth(BPF_OR, (yyvsp[-2].a), (yyvsp[0].a)); }
3110 #line 3111 "y.tab.c" /* yacc.c:1646 */
3111 break;
3112
3113 case 167:
3114 #line 666 "grammar.y" /* yacc.c:1646 */
3115 { (yyval.a) = gen_arth(BPF_XOR, (yyvsp[-2].a), (yyvsp[0].a)); }
3116 #line 3117 "y.tab.c" /* yacc.c:1646 */
3117 break;
3118
3119 case 168:
3120 #line 667 "grammar.y" /* yacc.c:1646 */
3121 { (yyval.a) = gen_arth(BPF_LSH, (yyvsp[-2].a), (yyvsp[0].a)); }
3122 #line 3123 "y.tab.c" /* yacc.c:1646 */
3123 break;
3124
3125 case 169:
3126 #line 668 "grammar.y" /* yacc.c:1646 */
3127 { (yyval.a) = gen_arth(BPF_RSH, (yyvsp[-2].a), (yyvsp[0].a)); }
3128 #line 3129 "y.tab.c" /* yacc.c:1646 */
3129 break;
3130
3131 case 170:
3132 #line 669 "grammar.y" /* yacc.c:1646 */
3133 { (yyval.a) = gen_neg((yyvsp[0].a)); }
3134 #line 3135 "y.tab.c" /* yacc.c:1646 */
3135 break;
3136
3137 case 171:
3138 #line 670 "grammar.y" /* yacc.c:1646 */
3139 { (yyval.a) = (yyvsp[-1].a); }
3140 #line 3141 "y.tab.c" /* yacc.c:1646 */
3141 break;
3142
3143 case 172:
3144 #line 671 "grammar.y" /* yacc.c:1646 */
3145 { (yyval.a) = gen_loadlen(); }
3146 #line 3147 "y.tab.c" /* yacc.c:1646 */
3147 break;
3148
3149 case 173:
3150 #line 673 "grammar.y" /* yacc.c:1646 */
3151 { (yyval.i) = '&'; }
3152 #line 3153 "y.tab.c" /* yacc.c:1646 */
3153 break;
3154
3155 case 174:
3156 #line 674 "grammar.y" /* yacc.c:1646 */
3157 { (yyval.i) = '|'; }
3158 #line 3159 "y.tab.c" /* yacc.c:1646 */
3159 break;
3160
3161 case 175:
3162 #line 675 "grammar.y" /* yacc.c:1646 */
3163 { (yyval.i) = '<'; }
3164 #line 3165 "y.tab.c" /* yacc.c:1646 */
3165 break;
3166
3167 case 176:
3168 #line 676 "grammar.y" /* yacc.c:1646 */
3169 { (yyval.i) = '>'; }
3170 #line 3171 "y.tab.c" /* yacc.c:1646 */
3171 break;
3172
3173 case 177:
3174 #line 677 "grammar.y" /* yacc.c:1646 */
3175 { (yyval.i) = '='; }
3176 #line 3177 "y.tab.c" /* yacc.c:1646 */
3177 break;
3178
3179 case 179:
3180 #line 680 "grammar.y" /* yacc.c:1646 */
3181 { (yyval.i) = (yyvsp[-1].i); }
3182 #line 3183 "y.tab.c" /* yacc.c:1646 */
3183 break;
3184
3185 case 180:
3186 #line 682 "grammar.y" /* yacc.c:1646 */
3187 { (yyval.i) = A_LANE; }
3188 #line 3189 "y.tab.c" /* yacc.c:1646 */
3189 break;
3190
3191 case 181:
3192 #line 683 "grammar.y" /* yacc.c:1646 */
3193 { (yyval.i) = A_METAC; }
3194 #line 3195 "y.tab.c" /* yacc.c:1646 */
3195 break;
3196
3197 case 182:
3198 #line 684 "grammar.y" /* yacc.c:1646 */
3199 { (yyval.i) = A_BCC; }
3200 #line 3201 "y.tab.c" /* yacc.c:1646 */
3201 break;
3202
3203 case 183:
3204 #line 685 "grammar.y" /* yacc.c:1646 */
3205 { (yyval.i) = A_OAMF4EC; }
3206 #line 3207 "y.tab.c" /* yacc.c:1646 */
3207 break;
3208
3209 case 184:
3210 #line 686 "grammar.y" /* yacc.c:1646 */
3211 { (yyval.i) = A_OAMF4SC; }
3212 #line 3213 "y.tab.c" /* yacc.c:1646 */
3213 break;
3214
3215 case 185:
3216 #line 687 "grammar.y" /* yacc.c:1646 */
3217 { (yyval.i) = A_SC; }
3218 #line 3219 "y.tab.c" /* yacc.c:1646 */
3219 break;
3220
3221 case 186:
3222 #line 688 "grammar.y" /* yacc.c:1646 */
3223 { (yyval.i) = A_ILMIC; }
3224 #line 3225 "y.tab.c" /* yacc.c:1646 */
3225 break;
3226
3227 case 187:
3228 #line 690 "grammar.y" /* yacc.c:1646 */
3229 { (yyval.i) = A_OAM; }
3230 #line 3231 "y.tab.c" /* yacc.c:1646 */
3231 break;
3232
3233 case 188:
3234 #line 691 "grammar.y" /* yacc.c:1646 */
3235 { (yyval.i) = A_OAMF4; }
3236 #line 3237 "y.tab.c" /* yacc.c:1646 */
3237 break;
3238
3239 case 189:
3240 #line 692 "grammar.y" /* yacc.c:1646 */
3241 { (yyval.i) = A_CONNECTMSG; }
3242 #line 3243 "y.tab.c" /* yacc.c:1646 */
3243 break;
3244
3245 case 190:
3246 #line 693 "grammar.y" /* yacc.c:1646 */
3247 { (yyval.i) = A_METACONNECT; }
3248 #line 3249 "y.tab.c" /* yacc.c:1646 */
3249 break;
3250
3251 case 191:
3252 #line 696 "grammar.y" /* yacc.c:1646 */
3253 { (yyval.blk).atmfieldtype = A_VPI; }
3254 #line 3255 "y.tab.c" /* yacc.c:1646 */
3255 break;
3256
3257 case 192:
3258 #line 697 "grammar.y" /* yacc.c:1646 */
3259 { (yyval.blk).atmfieldtype = A_VCI; }
3260 #line 3261 "y.tab.c" /* yacc.c:1646 */
3261 break;
3262
3263 case 194:
3264 #line 700 "grammar.y" /* yacc.c:1646 */
3265 { (yyval.blk).b = gen_atmfield_code((yyvsp[-2].blk).atmfieldtype, (bpf_int32)(yyvsp[0].i), (bpf_u_int32)(yyvsp[-1].i), 0); }
3266 #line 3267 "y.tab.c" /* yacc.c:1646 */
3267 break;
3268
3269 case 195:
3270 #line 701 "grammar.y" /* yacc.c:1646 */
3271 { (yyval.blk).b = gen_atmfield_code((yyvsp[-2].blk).atmfieldtype, (bpf_int32)(yyvsp[0].i), (bpf_u_int32)(yyvsp[-1].i), 1); }
3272 #line 3273 "y.tab.c" /* yacc.c:1646 */
3273 break;
3274
3275 case 196:
3276 #line 702 "grammar.y" /* yacc.c:1646 */
3277 { (yyval.blk).b = (yyvsp[-1].blk).b; (yyval.blk).q = qerr; }
3278 #line 3279 "y.tab.c" /* yacc.c:1646 */
3279 break;
3280
3281 case 197:
3282 #line 704 "grammar.y" /* yacc.c:1646 */
3283 {
3284 (yyval.blk).atmfieldtype = (yyvsp[-1].blk).atmfieldtype;
3285 if ((yyval.blk).atmfieldtype == A_VPI ||
3286 (yyval.blk).atmfieldtype == A_VCI)
3287 (yyval.blk).b = gen_atmfield_code((yyval.blk).atmfieldtype, (bpf_int32) (yyvsp[0].i), BPF_JEQ, 0);
3288 }
3289 #line 3290 "y.tab.c" /* yacc.c:1646 */
3290 break;
3291
3292 case 199:
3293 #line 712 "grammar.y" /* yacc.c:1646 */
3294 { gen_or((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); }
3295 #line 3296 "y.tab.c" /* yacc.c:1646 */
3296 break;
3297
3298 case 200:
3299 #line 715 "grammar.y" /* yacc.c:1646 */
3300 { (yyval.i) = M_FISU; }
3301 #line 3302 "y.tab.c" /* yacc.c:1646 */
3302 break;
3303
3304 case 201:
3305 #line 716 "grammar.y" /* yacc.c:1646 */
3306 { (yyval.i) = M_LSSU; }
3307 #line 3308 "y.tab.c" /* yacc.c:1646 */
3308 break;
3309
3310 case 202:
3311 #line 717 "grammar.y" /* yacc.c:1646 */
3312 { (yyval.i) = M_MSU; }
3313 #line 3314 "y.tab.c" /* yacc.c:1646 */
3314 break;
3315
3316 case 203:
3317 #line 718 "grammar.y" /* yacc.c:1646 */
3318 { (yyval.i) = MH_FISU; }
3319 #line 3320 "y.tab.c" /* yacc.c:1646 */
3320 break;
3321
3322 case 204:
3323 #line 719 "grammar.y" /* yacc.c:1646 */
3324 { (yyval.i) = MH_LSSU; }
3325 #line 3326 "y.tab.c" /* yacc.c:1646 */
3326 break;
3327
3328 case 205:
3329 #line 720 "grammar.y" /* yacc.c:1646 */
3330 { (yyval.i) = MH_MSU; }
3331 #line 3332 "y.tab.c" /* yacc.c:1646 */
3332 break;
3333
3334 case 206:
3335 #line 723 "grammar.y" /* yacc.c:1646 */
3336 { (yyval.blk).mtp3fieldtype = M_SIO; }
3337 #line 3338 "y.tab.c" /* yacc.c:1646 */
3338 break;
3339
3340 case 207:
3341 #line 724 "grammar.y" /* yacc.c:1646 */
3342 { (yyval.blk).mtp3fieldtype = M_OPC; }
3343 #line 3344 "y.tab.c" /* yacc.c:1646 */
3344 break;
3345
3346 case 208:
3347 #line 725 "grammar.y" /* yacc.c:1646 */
3348 { (yyval.blk).mtp3fieldtype = M_DPC; }
3349 #line 3350 "y.tab.c" /* yacc.c:1646 */
3350 break;
3351
3352 case 209:
3353 #line 726 "grammar.y" /* yacc.c:1646 */
3354 { (yyval.blk).mtp3fieldtype = M_SLS; }
3355 #line 3356 "y.tab.c" /* yacc.c:1646 */
3356 break;
3357
3358 case 210:
3359 #line 727 "grammar.y" /* yacc.c:1646 */
3360 { (yyval.blk).mtp3fieldtype = MH_SIO; }
3361 #line 3362 "y.tab.c" /* yacc.c:1646 */
3362 break;
3363
3364 case 211:
3365 #line 728 "grammar.y" /* yacc.c:1646 */
3366 { (yyval.blk).mtp3fieldtype = MH_OPC; }
3367 #line 3368 "y.tab.c" /* yacc.c:1646 */
3368 break;
3369
3370 case 212:
3371 #line 729 "grammar.y" /* yacc.c:1646 */
3372 { (yyval.blk).mtp3fieldtype = MH_DPC; }
3373 #line 3374 "y.tab.c" /* yacc.c:1646 */
3374 break;
3375
3376 case 213:
3377 #line 730 "grammar.y" /* yacc.c:1646 */
3378 { (yyval.blk).mtp3fieldtype = MH_SLS; }
3379 #line 3380 "y.tab.c" /* yacc.c:1646 */
3380 break;
3381
3382 case 215:
3383 #line 733 "grammar.y" /* yacc.c:1646 */
3384 { (yyval.blk).b = gen_mtp3field_code((yyvsp[-2].blk).mtp3fieldtype, (u_int)(yyvsp[0].i), (u_int)(yyvsp[-1].i), 0); }
3385 #line 3386 "y.tab.c" /* yacc.c:1646 */
3386 break;
3387
3388 case 216:
3389 #line 734 "grammar.y" /* yacc.c:1646 */
3390 { (yyval.blk).b = gen_mtp3field_code((yyvsp[-2].blk).mtp3fieldtype, (u_int)(yyvsp[0].i), (u_int)(yyvsp[-1].i), 1); }
3391 #line 3392 "y.tab.c" /* yacc.c:1646 */
3392 break;
3393
3394 case 217:
3395 #line 735 "grammar.y" /* yacc.c:1646 */
3396 { (yyval.blk).b = (yyvsp[-1].blk).b; (yyval.blk).q = qerr; }
3397 #line 3398 "y.tab.c" /* yacc.c:1646 */
3398 break;
3399
3400 case 218:
3401 #line 737 "grammar.y" /* yacc.c:1646 */
3402 {
3403 (yyval.blk).mtp3fieldtype = (yyvsp[-1].blk).mtp3fieldtype;
3404 if ((yyval.blk).mtp3fieldtype == M_SIO ||
3405 (yyval.blk).mtp3fieldtype == M_OPC ||
3406 (yyval.blk).mtp3fieldtype == M_DPC ||
3407 (yyval.blk).mtp3fieldtype == M_SLS ||
3408 (yyval.blk).mtp3fieldtype == MH_SIO ||
3409 (yyval.blk).mtp3fieldtype == MH_OPC ||
3410 (yyval.blk).mtp3fieldtype == MH_DPC ||
3411 (yyval.blk).mtp3fieldtype == MH_SLS)
3412 (yyval.blk).b = gen_mtp3field_code((yyval.blk).mtp3fieldtype, (u_int) (yyvsp[0].i), BPF_JEQ, 0);
3413 }
3414 #line 3415 "y.tab.c" /* yacc.c:1646 */
3415 break;
3416
3417 case 220:
3418 #line 751 "grammar.y" /* yacc.c:1646 */
3419 { gen_or((yyvsp[-2].blk).b, (yyvsp[0].blk).b); (yyval.blk) = (yyvsp[0].blk); }
3420 #line 3421 "y.tab.c" /* yacc.c:1646 */
3421 break;
3422
3423
3424 #line 3425 "y.tab.c" /* yacc.c:1646 */
3425 default: break;
3426 }
3427 /* User semantic actions sometimes alter yychar, and that requires
3428 that yytoken be updated with the new translation. We take the
3429 approach of translating immediately before every use of yytoken.
3430 One alternative is translating here after every semantic action,
3431 but that translation would be missed if the semantic action invokes
3432 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3433 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
3434 incorrect destructor might then be invoked immediately. In the
3435 case of YYERROR or YYBACKUP, subsequent parser actions might lead
3436 to an incorrect destructor call or verbose syntax error message
3437 before the lookahead is translated. */
3438 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3439
3440 YYPOPSTACK (yylen);
3441 yylen = 0;
3442 YY_STACK_PRINT (yyss, yyssp);
3443
3444 *++yyvsp = yyval;
3445
3446 /* Now 'shift' the result of the reduction. Determine what state
3447 that goes to, based on the state we popped back to and the rule
3448 number reduced by. */
3449
3450 yyn = yyr1[yyn];
3451
3452 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3453 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3454 yystate = yytable[yystate];
3455 else
3456 yystate = yydefgoto[yyn - YYNTOKENS];
3457
3458 goto yynewstate;
3459
3460
3461 /*--------------------------------------.
3462 | yyerrlab -- here on detecting error. |
3463 `--------------------------------------*/
3464 yyerrlab:
3465 /* Make sure we have latest lookahead translation. See comments at
3466 user semantic actions for why this is necessary. */
3467 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
3468
3469 /* If not already recovering from an error, report this error. */
3470 if (!yyerrstatus)
3471 {
3472 ++yynerrs;
3473 #if ! YYERROR_VERBOSE
3474 yyerror (YY_("syntax error"));
3475 #else
3476 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
3477 yyssp, yytoken)
3478 {
3479 char const *yymsgp = YY_("syntax error");
3480 int yysyntax_error_status;
3481 yysyntax_error_status = YYSYNTAX_ERROR;
3482 if (yysyntax_error_status == 0)
3483 yymsgp = yymsg;
3484 else if (yysyntax_error_status == 1)
3485 {
3486 if (yymsg != yymsgbuf)
3487 YYSTACK_FREE (yymsg);
3488 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
3489 if (!yymsg)
3490 {
3491 yymsg = yymsgbuf;
3492 yymsg_alloc = sizeof yymsgbuf;
3493 yysyntax_error_status = 2;
3494 }
3495 else
3496 {
3497 yysyntax_error_status = YYSYNTAX_ERROR;
3498 yymsgp = yymsg;
3499 }
3500 }
3501 yyerror (yymsgp);
3502 if (yysyntax_error_status == 2)
3503 goto yyexhaustedlab;
3504 }
3505 # undef YYSYNTAX_ERROR
3506 #endif
3507 }
3508
3509
3510
3511 if (yyerrstatus == 3)
3512 {
3513 /* If just tried and failed to reuse lookahead token after an
3514 error, discard it. */
3515
3516 if (yychar <= YYEOF)
3517 {
3518 /* Return failure if at end of input. */
3519 if (yychar == YYEOF)
3520 YYABORT;
3521 }
3522 else
3523 {
3524 yydestruct ("Error: discarding",
3525 yytoken, &yylval);
3526 yychar = YYEMPTY;
3527 }
3528 }
3529
3530 /* Else will try to reuse lookahead token after shifting the error
3531 token. */
3532 goto yyerrlab1;
3533
3534
3535 /*---------------------------------------------------.
3536 | yyerrorlab -- error raised explicitly by YYERROR. |
3537 `---------------------------------------------------*/
3538 yyerrorlab:
3539
3540 /* Pacify compilers like GCC when the user code never invokes
3541 YYERROR and the label yyerrorlab therefore never appears in user
3542 code. */
3543 if (/*CONSTCOND*/ 0)
3544 goto yyerrorlab;
3545
3546 /* Do not reclaim the symbols of the rule whose action triggered
3547 this YYERROR. */
3548 YYPOPSTACK (yylen);
3549 yylen = 0;
3550 YY_STACK_PRINT (yyss, yyssp);
3551 yystate = *yyssp;
3552 goto yyerrlab1;
3553
3554
3555 /*-------------------------------------------------------------.
3556 | yyerrlab1 -- common code for both syntax error and YYERROR. |
3557 `-------------------------------------------------------------*/
3558 yyerrlab1:
3559 yyerrstatus = 3; /* Each real token shifted decrements this. */
3560
3561 for (;;)
3562 {
3563 yyn = yypact[yystate];
3564 if (!yypact_value_is_default (yyn))
3565 {
3566 yyn += YYTERROR;
3567 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3568 {
3569 yyn = yytable[yyn];
3570 if (0 < yyn)
3571 break;
3572 }
3573 }
3574
3575 /* Pop the current state because it cannot handle the error token. */
3576 if (yyssp == yyss)
3577 YYABORT;
3578
3579
3580 yydestruct ("Error: popping",
3581 yystos[yystate], yyvsp);
3582 YYPOPSTACK (1);
3583 yystate = *yyssp;
3584 YY_STACK_PRINT (yyss, yyssp);
3585 }
3586
3587 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3588 *++yyvsp = yylval;
3589 YY_IGNORE_MAYBE_UNINITIALIZED_END
3590
3591
3592 /* Shift the error token. */
3593 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3594
3595 yystate = yyn;
3596 goto yynewstate;
3597
3598
3599 /*-------------------------------------.
3600 | yyacceptlab -- YYACCEPT comes here. |
3601 `-------------------------------------*/
3602 yyacceptlab:
3603 yyresult = 0;
3604 goto yyreturn;
3605
3606 /*-----------------------------------.
3607 | yyabortlab -- YYABORT comes here. |
3608 `-----------------------------------*/
3609 yyabortlab:
3610 yyresult = 1;
3611 goto yyreturn;
3612
3613 #if !defined yyoverflow || YYERROR_VERBOSE
3614 /*-------------------------------------------------.
3615 | yyexhaustedlab -- memory exhaustion comes here. |
3616 `-------------------------------------------------*/
3617 yyexhaustedlab:
3618 yyerror (YY_("memory exhausted"));
3619 yyresult = 2;
3620 /* Fall through. */
3621 #endif
3622
3623 yyreturn:
3624 if (yychar != YYEMPTY)
3625 {
3626 /* Make sure we have latest lookahead translation. See comments at
3627 user semantic actions for why this is necessary. */
3628 yytoken = YYTRANSLATE (yychar);
3629 yydestruct ("Cleanup: discarding lookahead",
3630 yytoken, &yylval);
3631 }
3632 /* Do not reclaim the symbols of the rule whose action triggered
3633 this YYABORT or YYACCEPT. */
3634 YYPOPSTACK (yylen);
3635 YY_STACK_PRINT (yyss, yyssp);
3636 while (yyssp != yyss)
3637 {
3638 yydestruct ("Cleanup: popping",
3639 yystos[*yyssp], yyvsp);
3640 YYPOPSTACK (1);
3641 }
3642 #ifndef yyoverflow
3643 if (yyss != yyssa)
3644 YYSTACK_FREE (yyss);
3645 #endif
3646 #if YYERROR_VERBOSE
3647 if (yymsg != yymsgbuf)
3648 YYSTACK_FREE (yymsg);
3649 #endif
3650 return yyresult;
3651 }
3652 #line 753 "grammar.y" /* yacc.c:1906 */
3653
3654