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__
112struct mbuf;
113struct 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
142struct tok {
143	int v;			/* value */
144	const char *s;		/* string */
145};
146
147static 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};
155static 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};
178static 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};
187static 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};
205static const struct tok llc_s_subtypes[] = {
206	{ LLC_RR, "rr" },
207	{ LLC_RNR, "rnr" },
208	{ LLC_REJ, "rej" },
209	{ 0, NULL }
210};
211static 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};
222struct type2tok {
223	int type;
224	const struct tok *tok;
225};
226static 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
233static int
234str2tok(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
245int n_errors = 0;
246
247static struct qual qerr = { Q_UNDEF, Q_UNDEF, Q_UNDEF, Q_UNDEF };
248
249static void
250yyerror(const char *msg)
251{
252	++n_errors;
253	bpf_error("%s", msg);
254	/* NOTREACHED */
255}
256
257#ifdef NEED_YYPARSE_WRAPPER
258int yyparse(void);
259
260int
261pcap_parse()
262{
263	return (yyparse());
264}
265#endif
266
267#ifdef HAVE_NET_PFVAR_H
268static int
269pfreason_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
282static int
283pfaction_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 */
307static int
308pfreason_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
317static int
318pfaction_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
355extern 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
607typedef union YYSTYPE YYSTYPE;
608union 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
633extern YYSTYPE pcap_lval;
634
635int 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
648typedef YYTYPE_UINT8 yytype_uint8;
649#else
650typedef unsigned char yytype_uint8;
651#endif
652
653#ifdef YYTYPE_INT8
654typedef YYTYPE_INT8 yytype_int8;
655#else
656typedef signed char yytype_int8;
657#endif
658
659#ifdef YYTYPE_UINT16
660typedef YYTYPE_UINT16 yytype_uint16;
661#else
662typedef unsigned short int yytype_uint16;
663#endif
664
665#ifdef YYTYPE_INT16
666typedef YYTYPE_INT16 yytype_int16;
667#else
668typedef 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
807void *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
813void 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.  */
825union 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.  */
904static 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.  */
948static 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.  */
979static 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).  */
1011static 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.  */
1042static 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.  */
1079static 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].  */
1114static 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].  */
1124static 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.  */
1136static 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
1219static 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.  */
1304static 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.  */
1339static 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.  */
1367static 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)                                  \
1408do                                                              \
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    }                                                           \
1422while (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)                        \
1439do {                                            \
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)                    \
1451do {                                                                      \
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
1466static void
1467yy_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
1485static void
1486yy_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
1500static void
1501yy_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)                            \
1513do {                                                            \
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
1523static void
1524yy_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)          \
1544do {                                    \
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.  */
1551int 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.  */
1584static YYSIZE_T
1585yystrlen (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.  */
1601static char *
1602yystpcpy (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.  */
1623static YYSIZE_T
1624yytnamerr (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.  */
1671static int
1672yysyntax_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
1803static void
1804yydestruct (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.  */
1820int yychar;
1821
1822/* The semantic value of the lookahead symbol.  */
1823YYSTYPE yylval;
1824/* Number of syntax errors so far.  */
1825int yynerrs;
1826
1827
1828/*----------.
1829| yyparse.  |
1830`----------*/
1831
1832int
1833yyparse (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`-----------*/
1973yybackup:
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`-----------------------------------------------------------*/
2039yydefault:
2040  yyn = yydefact[yystate];
2041  if (yyn == 0)
2042    goto yyerrlab;
2043  goto yyreduce;
2044
2045
2046/*-----------------------------.
2047| yyreduce -- Do a reduction.  |
2048`-----------------------------*/
2049yyreduce:
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`--------------------------------------*/
3464yyerrlab:
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`---------------------------------------------------*/
3538yyerrorlab:
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`-------------------------------------------------------------*/
3558yyerrlab1:
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`-------------------------------------*/
3602yyacceptlab:
3603  yyresult = 0;
3604  goto yyreturn;
3605
3606/*-----------------------------------.
3607| yyabortlab -- YYABORT comes here.  |
3608`-----------------------------------*/
3609yyabortlab:
3610  yyresult = 1;
3611  goto yyreturn;
3612
3613#if !defined yyoverflow || YYERROR_VERBOSE
3614/*-------------------------------------------------.
3615| yyexhaustedlab -- memory exhaustion comes here.  |
3616`-------------------------------------------------*/
3617yyexhaustedlab:
3618  yyerror (YY_("memory exhausted"));
3619  yyresult = 2;
3620  /* Fall through.  */
3621#endif
3622
3623yyreturn:
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