source: rtems-libbsd/freebsd/contrib/libpcap/grammar.c @ 084d4db

4.11
Last change on this file since 084d4db was 8440506, checked in by Chris Johns <chrisj@…>, on 06/15/15 at 07:42:23

Add tcpdump and libpcap.

  • Update the file builder generator to handle generator specific cflags and includes. The tcpdump and libpcap have localised headers and need specific headers paths to see them. There are also module specific flags and these need to be passed to the lex and yacc generators.
  • Add the tcpdump support.
  • Property mode set to 100644
File size: 70.3 KB
Line 
1/* original parser id follows */
2/* yysccsid[] = "@(#)yaccpar    1.9 (Berkeley) 02/21/93" */
3/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
4
5#define YYBYACC 1
6#define YYMAJOR 1
7#define YYMINOR 9
8
9#define YYEMPTY        (-1)
10#define yyclearin      (yychar = YYEMPTY)
11#define yyerrok        (yyerrflag = 0)
12#define YYRECOVERING() (yyerrflag != 0)
13#define YYENOMEM       (-2)
14#define YYEOF          0
15
16#ifndef yyparse
17#define yyparse    pcapparse
18#endif /* yyparse */
19
20#ifndef yylex
21#define yylex      pcaplex
22#endif /* yylex */
23
24#ifndef yyerror
25#define yyerror    pcaperror
26#endif /* yyerror */
27
28#ifndef yychar
29#define yychar     pcapchar
30#endif /* yychar */
31
32#ifndef yyval
33#define yyval      pcapval
34#endif /* yyval */
35
36#ifndef yylval
37#define yylval     pcaplval
38#endif /* yylval */
39
40#ifndef yydebug
41#define yydebug    pcapdebug
42#endif /* yydebug */
43
44#ifndef yynerrs
45#define yynerrs    pcapnerrs
46#endif /* yynerrs */
47
48#ifndef yyerrflag
49#define yyerrflag  pcaperrflag
50#endif /* yyerrflag */
51
52#ifndef yylhs
53#define yylhs      pcaplhs
54#endif /* yylhs */
55
56#ifndef yylen
57#define yylen      pcaplen
58#endif /* yylen */
59
60#ifndef yydefred
61#define yydefred   pcapdefred
62#endif /* yydefred */
63
64#ifndef yydgoto
65#define yydgoto    pcapdgoto
66#endif /* yydgoto */
67
68#ifndef yysindex
69#define yysindex   pcapsindex
70#endif /* yysindex */
71
72#ifndef yyrindex
73#define yyrindex   pcaprindex
74#endif /* yyrindex */
75
76#ifndef yygindex
77#define yygindex   pcapgindex
78#endif /* yygindex */
79
80#ifndef yytable
81#define yytable    pcaptable
82#endif /* yytable */
83
84#ifndef yycheck
85#define yycheck    pcapcheck
86#endif /* yycheck */
87
88#ifndef yyname
89#define yyname     pcapname
90#endif /* yyname */
91
92#ifndef yyrule
93#define yyrule     pcaprule
94#endif /* yyrule */
95#define YYPREFIX "pcap"
96
97#define YYPURE 0
98
99#line 2 "../../freebsd/contrib/libpcap/grammar.y"
100/*
101 * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996
102 *      The Regents of the University of California.  All rights reserved.
103 *
104 * Redistribution and use in source and binary forms, with or without
105 * modification, are permitted provided that: (1) source code distributions
106 * retain the above copyright notice and this paragraph in its entirety, (2)
107 * distributions including binary code include the above copyright notice and
108 * this paragraph in its entirety in the documentation or other materials
109 * provided with the distribution, and (3) all advertising materials mentioning
110 * features or use of this software display the following acknowledgement:
111 * ``This product includes software developed by the University of California,
112 * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
113 * the University nor the names of its contributors may be used to endorse
114 * or promote products derived from this software without specific prior
115 * written permission.
116 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
117 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
118 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
119 *
120 * $FreeBSD$
121 */
122#ifndef lint
123static const char rcsid[] _U_ =
124    "@(#) $Header: /tcpdump/master/libpcap/grammar.y,v 1.101 2007-11-18 02:03:52 guy Exp $ (LBL)";
125#endif
126
127#ifdef HAVE_CONFIG_H
128#include "config.h"
129#endif
130
131#ifdef WIN32
132#include <pcap-stdinc.h>
133#else /* WIN32 */
134#include <sys/types.h>
135#include <sys/socket.h>
136#endif /* WIN32 */
137
138#include <stdlib.h>
139
140#ifndef WIN32
141#if __STDC__
142struct mbuf;
143struct rtentry;
144#endif
145
146#include <netinet/in.h>
147#include <arpa/inet.h>
148#endif /* WIN32 */
149
150#include <stdio.h>
151
152#include "pcap-int.h"
153
154#include "gencode.h"
155#ifdef HAVE_NET_PFVAR_H
156#include <net/if.h>
157#include <net/pfvar.h>
158#include <net/if_pflog.h>
159#endif
160#include "ieee80211.h"
161#include <pcap/namedb.h>
162
163#ifdef HAVE_OS_PROTO_H
164#include "os-proto.h"
165#endif
166
167#define QSET(q, p, d, a) (q).proto = (p),\
168                         (q).dir = (d),\
169                         (q).addr = (a)
170
171struct tok {
172        int v;                  /* value */
173        const char *s;          /* string */
174};
175
176static const struct tok ieee80211_types[] = {
177        { IEEE80211_FC0_TYPE_DATA, "data" },
178        { IEEE80211_FC0_TYPE_MGT, "mgt" },
179        { IEEE80211_FC0_TYPE_MGT, "management" },
180        { IEEE80211_FC0_TYPE_CTL, "ctl" },
181        { IEEE80211_FC0_TYPE_CTL, "control" },
182        { 0, NULL }
183};
184static const struct tok ieee80211_mgt_subtypes[] = {
185        { IEEE80211_FC0_SUBTYPE_ASSOC_REQ, "assocreq" },
186        { IEEE80211_FC0_SUBTYPE_ASSOC_REQ, "assoc-req" },
187        { IEEE80211_FC0_SUBTYPE_ASSOC_RESP, "assocresp" },
188        { IEEE80211_FC0_SUBTYPE_ASSOC_RESP, "assoc-resp" },
189        { IEEE80211_FC0_SUBTYPE_REASSOC_REQ, "reassocreq" },
190        { IEEE80211_FC0_SUBTYPE_REASSOC_REQ, "reassoc-req" },
191        { IEEE80211_FC0_SUBTYPE_REASSOC_RESP, "reassocresp" },
192        { IEEE80211_FC0_SUBTYPE_REASSOC_RESP, "reassoc-resp" },
193        { IEEE80211_FC0_SUBTYPE_PROBE_REQ, "probereq" },
194        { IEEE80211_FC0_SUBTYPE_PROBE_REQ, "probe-req" },
195        { IEEE80211_FC0_SUBTYPE_PROBE_RESP, "proberesp" },
196        { IEEE80211_FC0_SUBTYPE_PROBE_RESP, "probe-resp" },
197        { IEEE80211_FC0_SUBTYPE_BEACON, "beacon" },
198        { IEEE80211_FC0_SUBTYPE_ATIM, "atim" },
199        { IEEE80211_FC0_SUBTYPE_DISASSOC, "disassoc" },
200        { IEEE80211_FC0_SUBTYPE_DISASSOC, "disassociation" },
201        { IEEE80211_FC0_SUBTYPE_AUTH, "auth" },
202        { IEEE80211_FC0_SUBTYPE_AUTH, "authentication" },
203        { IEEE80211_FC0_SUBTYPE_DEAUTH, "deauth" },
204        { IEEE80211_FC0_SUBTYPE_DEAUTH, "deauthentication" },
205        { 0, NULL }
206};
207static const struct tok ieee80211_ctl_subtypes[] = {
208        { IEEE80211_FC0_SUBTYPE_PS_POLL, "ps-poll" },
209        { IEEE80211_FC0_SUBTYPE_RTS, "rts" },
210        { IEEE80211_FC0_SUBTYPE_CTS, "cts" },
211        { IEEE80211_FC0_SUBTYPE_ACK, "ack" },
212        { IEEE80211_FC0_SUBTYPE_CF_END, "cf-end" },
213        { IEEE80211_FC0_SUBTYPE_CF_END_ACK, "cf-end-ack" },
214        { 0, NULL }
215};
216static const struct tok ieee80211_data_subtypes[] = {
217        { IEEE80211_FC0_SUBTYPE_DATA, "data" },
218        { IEEE80211_FC0_SUBTYPE_CF_ACK, "data-cf-ack" },
219        { IEEE80211_FC0_SUBTYPE_CF_POLL, "data-cf-poll" },
220        { IEEE80211_FC0_SUBTYPE_CF_ACPL, "data-cf-ack-poll" },
221        { IEEE80211_FC0_SUBTYPE_NODATA, "null" },
222        { IEEE80211_FC0_SUBTYPE_NODATA_CF_ACK, "cf-ack" },
223        { IEEE80211_FC0_SUBTYPE_NODATA_CF_POLL, "cf-poll"  },
224        { IEEE80211_FC0_SUBTYPE_NODATA_CF_ACPL, "cf-ack-poll" },
225        { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_DATA, "qos-data" },
226        { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_CF_ACK, "qos-data-cf-ack" },
227        { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_CF_POLL, "qos-data-cf-poll" },
228        { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_CF_ACPL, "qos-data-cf-ack-poll" },
229        { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_NODATA, "qos" },
230        { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_NODATA_CF_POLL, "qos-cf-poll" },
231        { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_NODATA_CF_ACPL, "qos-cf-ack-poll" },
232        { 0, NULL }
233};
234struct type2tok {
235        int type;
236        const struct tok *tok;
237};
238static const struct type2tok ieee80211_type_subtypes[] = {
239        { IEEE80211_FC0_TYPE_MGT, ieee80211_mgt_subtypes },
240        { IEEE80211_FC0_TYPE_CTL, ieee80211_ctl_subtypes },
241        { IEEE80211_FC0_TYPE_DATA, ieee80211_data_subtypes },
242        { 0, NULL }
243};
244
245static int
246str2tok(const char *str, const struct tok *toks)
247{
248        int i;
249
250        for (i = 0; toks[i].s != NULL; i++) {
251                if (pcap_strcasecmp(toks[i].s, str) == 0)
252                        return (toks[i].v);
253        }
254        return (-1);
255}
256
257int n_errors = 0;
258
259static struct qual qerr = { Q_UNDEF, Q_UNDEF, Q_UNDEF, Q_UNDEF };
260
261static void
262yyerror(const char *msg)
263{
264        ++n_errors;
265        bpf_error("%s", msg);
266        /* NOTREACHED */
267}
268
269#ifdef NEED_YYPARSE_WRAPPER
270int yyparse(void);
271
272int
273pcap_parse()
274{
275        return (yyparse());
276}
277#endif
278
279#ifdef HAVE_NET_PFVAR_H
280static int
281pfreason_to_num(const char *reason)
282{
283        const char *reasons[] = PFRES_NAMES;
284        int i;
285
286        for (i = 0; reasons[i]; i++) {
287                if (pcap_strcasecmp(reason, reasons[i]) == 0)
288                        return (i);
289        }
290        bpf_error("unknown PF reason");
291        /*NOTREACHED*/
292}
293
294static int
295pfaction_to_num(const char *action)
296{
297        if (pcap_strcasecmp(action, "pass") == 0 ||
298            pcap_strcasecmp(action, "accept") == 0)
299                return (PF_PASS);
300        else if (pcap_strcasecmp(action, "drop") == 0 ||
301                pcap_strcasecmp(action, "block") == 0)
302                return (PF_DROP);
303#if HAVE_PF_NAT_THROUGH_PF_NORDR
304        else if (pcap_strcasecmp(action, "rdr") == 0)
305                return (PF_RDR);
306        else if (pcap_strcasecmp(action, "nat") == 0)
307                return (PF_NAT);
308        else if (pcap_strcasecmp(action, "binat") == 0)
309                return (PF_BINAT);
310        else if (pcap_strcasecmp(action, "nordr") == 0)
311                return (PF_NORDR);
312#endif
313        else {
314                bpf_error("unknown PF action");
315                /*NOTREACHED*/
316        }
317}
318#else /* !HAVE_NET_PFVAR_H */
319static int
320pfreason_to_num(const char *reason)
321{
322        bpf_error("libpcap was compiled on a machine without pf support");
323        /*NOTREACHED*/
324
325        /* this is to make the VC compiler happy */
326        return -1;
327}
328
329static int
330pfaction_to_num(const char *action)
331{
332        bpf_error("libpcap was compiled on a machine without pf support");
333        /*NOTREACHED*/
334
335        /* this is to make the VC compiler happy */
336        return -1;
337}
338#endif /* HAVE_NET_PFVAR_H */
339#line 243 "../../freebsd/contrib/libpcap/grammar.y"
340#ifdef YYSTYPE
341#undef  YYSTYPE_IS_DECLARED
342#define YYSTYPE_IS_DECLARED 1
343#endif
344#ifndef YYSTYPE_IS_DECLARED
345#define YYSTYPE_IS_DECLARED 1
346typedef union {
347        int i;
348        bpf_u_int32 h;
349        u_char *e;
350        char *s;
351        struct stmt *stmt;
352        struct arth *a;
353        struct {
354                struct qual q;
355                int atmfieldtype;
356                int mtp3fieldtype;
357                struct block *b;
358        } blk;
359        struct block *rblk;
360} YYSTYPE;
361#endif /* !YYSTYPE_IS_DECLARED */
362#line 363 "pcap.tab.c"
363
364/* compatibility with bison */
365#ifdef YYPARSE_PARAM
366/* compatibility with FreeBSD */
367# ifdef YYPARSE_PARAM_TYPE
368#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
369# else
370#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
371# endif
372#else
373# define YYPARSE_DECL() yyparse(void)
374#endif
375
376/* Parameters sent to lex. */
377#ifdef YYLEX_PARAM
378# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
379# define YYLEX yylex(YYLEX_PARAM)
380#else
381# define YYLEX_DECL() yylex(void)
382# define YYLEX yylex()
383#endif
384
385/* Parameters sent to yyerror. */
386#ifndef YYERROR_DECL
387#define YYERROR_DECL() yyerror(const char *s)
388#endif
389#ifndef YYERROR_CALL
390#define YYERROR_CALL(msg) yyerror(msg)
391#endif
392
393extern int YYPARSE_DECL();
394
395#define DST 257
396#define SRC 258
397#define HOST 259
398#define GATEWAY 260
399#define NET 261
400#define NETMASK 262
401#define PORT 263
402#define PORTRANGE 264
403#define LESS 265
404#define GREATER 266
405#define PROTO 267
406#define PROTOCHAIN 268
407#define CBYTE 269
408#define ARP 270
409#define RARP 271
410#define IP 272
411#define SCTP 273
412#define TCP 274
413#define UDP 275
414#define ICMP 276
415#define IGMP 277
416#define IGRP 278
417#define PIM 279
418#define VRRP 280
419#define CARP 281
420#define ATALK 282
421#define AARP 283
422#define DECNET 284
423#define LAT 285
424#define SCA 286
425#define MOPRC 287
426#define MOPDL 288
427#define TK_BROADCAST 289
428#define TK_MULTICAST 290
429#define NUM 291
430#define INBOUND 292
431#define OUTBOUND 293
432#define PF_IFNAME 294
433#define PF_RSET 295
434#define PF_RNR 296
435#define PF_SRNR 297
436#define PF_REASON 298
437#define PF_ACTION 299
438#define TYPE 300
439#define SUBTYPE 301
440#define DIR 302
441#define ADDR1 303
442#define ADDR2 304
443#define ADDR3 305
444#define ADDR4 306
445#define RA 307
446#define TA 308
447#define LINK 309
448#define GEQ 310
449#define LEQ 311
450#define NEQ 312
451#define ID 313
452#define EID 314
453#define HID 315
454#define HID6 316
455#define AID 317
456#define LSH 318
457#define RSH 319
458#define LEN 320
459#define IPV6 321
460#define ICMPV6 322
461#define AH 323
462#define ESP 324
463#define VLAN 325
464#define MPLS 326
465#define PPPOED 327
466#define PPPOES 328
467#define ISO 329
468#define ESIS 330
469#define CLNP 331
470#define ISIS 332
471#define L1 333
472#define L2 334
473#define IIH 335
474#define LSP 336
475#define SNP 337
476#define CSNP 338
477#define PSNP 339
478#define STP 340
479#define IPX 341
480#define NETBEUI 342
481#define LANE 343
482#define LLC 344
483#define METAC 345
484#define BCC 346
485#define SC 347
486#define ILMIC 348
487#define OAMF4EC 349
488#define OAMF4SC 350
489#define OAM 351
490#define OAMF4 352
491#define CONNECTMSG 353
492#define METACONNECT 354
493#define VPI 355
494#define VCI 356
495#define RADIO 357
496#define FISU 358
497#define LSSU 359
498#define MSU 360
499#define SIO 361
500#define OPC 362
501#define DPC 363
502#define SLS 364
503#define OR 365
504#define AND 366
505#define UMINUS 367
506#define YYERRCODE 256
507typedef short YYINT;
508static const YYINT pcaplhs[] = {                         -1,
509    0,    0,   24,    1,    1,    1,    1,    1,   20,   21,
510    2,    2,    2,    3,    3,    3,    3,    3,    3,    3,
511    3,    3,   23,   22,    4,    4,    4,    7,    7,    5,
512    5,    8,    8,    8,    8,    8,    8,    6,    6,    6,
513    6,    6,    6,    6,    6,    6,    6,    6,    9,    9,
514   10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
515   10,   10,   11,   11,   11,   11,   12,   16,   16,   16,
516   16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
517   16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
518   16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
519   16,   16,   16,   16,   16,   16,   25,   25,   25,   25,
520   25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
521   25,   26,   26,   26,   26,   26,   26,   27,   27,   27,
522   27,   41,   41,   42,   42,   43,   44,   44,   40,   40,
523   39,   18,   18,   18,   19,   19,   19,   13,   13,   14,
524   14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
525   14,   14,   15,   15,   15,   15,   15,   17,   17,   28,
526   28,   28,   28,   28,   28,   28,   28,   29,   29,   29,
527   29,   30,   30,   32,   32,   32,   32,   31,   33,   33,
528   34,   34,   34,   35,   35,   35,   35,   37,   37,   37,
529   37,   36,   38,   38,
530};
531static const YYINT pcaplen[] = {                          2,
532    2,    1,    0,    1,    3,    3,    3,    3,    1,    1,
533    1,    1,    3,    1,    3,    3,    1,    3,    1,    1,
534    1,    2,    1,    1,    1,    3,    3,    1,    1,    1,
535    2,    3,    2,    2,    2,    2,    2,    2,    3,    1,
536    3,    3,    1,    1,    1,    2,    1,    2,    1,    0,
537    1,    1,    3,    3,    3,    3,    1,    1,    1,    1,
538    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
539    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
540    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
541    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
542    1,    1,    1,    1,    1,    1,    2,    2,    2,    2,
543    4,    1,    1,    2,    1,    2,    1,    1,    1,    1,
544    2,    2,    2,    2,    2,    2,    2,    4,    2,    2,
545    2,    1,    1,    1,    1,    1,    1,    1,    1,    1,
546    1,    1,    1,    1,    1,    1,    1,    1,    1,    4,
547    6,    3,    3,    3,    3,    3,    3,    3,    3,    2,
548    3,    1,    1,    1,    1,    1,    1,    1,    3,    1,
549    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
550    1,    1,    1,    1,    2,    2,    3,    1,    1,    3,
551    1,    1,    1,    1,    1,    1,    1,    1,    2,    2,
552    3,    1,    1,    3,
553};
554static const YYINT pcapdefred[] = {                       3,
555    0,    0,    0,    0,    0,   70,   71,   69,   72,   73,
556   74,   75,   76,   77,   78,   79,   80,   81,   82,   83,
557   84,   85,   87,   86,  168,  112,  113,    0,    0,    0,
558    0,    0,    0,   68,  162,   88,   89,   90,   91,    0,
559    0,  118,  119,   92,   93,  102,   94,   95,   96,   97,
560   98,   99,  101,  100,  103,  104,  105,  170,  171,  172,
561  173,  176,  177,  174,  175,  178,  179,  180,  181,  182,
562  183,  106,  191,  192,  193,  194,  195,  196,  197,   23,
563    0,   24,    0,    4,   30,    0,    0,    0,  149,    0,
564  148,    0,    0,   43,  120,   44,   45,    0,   47,    0,
565  109,  110,    0,  122,  123,  124,  125,  139,  140,  126,
566  141,  127,  114,    0,  116,  160,    0,    0,   10,    9,
567    0,    0,   14,   20,    0,    0,   21,   38,   11,   12,
568    0,    0,    0,    0,   63,   67,   64,   65,   66,   35,
569   36,  107,  108,    0,    0,    0,   57,   58,   59,   60,
570   61,   62,    0,   34,   37,  121,  143,  145,  147,    0,
571    0,    0,    0,    0,    0,    0,    0,  142,  144,  146,
572    0,    0,    0,    0,    0,    0,   31,  188,    0,    0,
573    0,  184,   46,  202,    0,    0,    0,  198,   48,  164,
574  163,  166,  167,  165,    0,    0,    0,    6,    5,    0,
575    0,    0,    8,    7,    0,    0,    0,   25,    0,    0,
576    0,   22,    0,    0,    0,    0,  132,  133,    0,  136,
577  130,  137,  138,  131,   32,    0,    0,    0,    0,    0,
578    0,  154,  155,    0,    0,    0,   39,  161,  169,  185,
579  186,  189,    0,  199,  200,  203,    0,  111,    0,   16,
580   15,   18,   13,    0,    0,   54,   56,   53,   55,    0,
581  150,    0,  187,    0,  201,    0,   26,   27,  134,  135,
582  128,    0,  190,  204,  151,
583};
584static const YYINT pcapdgoto[] = {                        1,
585  174,  212,  129,  209,   84,   85,  210,   86,   87,  153,
586  154,  155,   88,   89,  195,  117,   91,  171,  172,  121,
587  122,  118,  132,    2,   94,   95,  156,   96,   97,   98,
588  182,  183,  243,   99,  100,  188,  189,  247,  112,  110,
589  219,  271,  221,  224,
590};
591static const YYINT pcapsindex[] = {                       0,
592    0,  296, -268, -231, -223,    0,    0,    0,    0,    0,
593    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
594    0,    0,    0,    0,    0,    0,    0, -216, -204, -174,
595 -169, -284, -193,    0,    0,    0,    0,    0,    0,  -40,
596  -40,    0,    0,    0,    0,    0,    0,    0,    0,    0,
597    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
598    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
599    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
600  396,    0, -334,    0,    0,  -19,  611,  647,    0,   34,
601    0,  296,  296,    0,    0,    0,    0,   42,    0,  651,
602    0,    0,   96,    0,    0,    0,    0,    0,    0,    0,
603    0,    0,    0,  -40,    0,    0,   34,  396,    0,    0,
604  185,  185,    0,    0,  -38,   88,    0,    0,    0,    0,
605  -19,  -19, -236, -233,    0,    0,    0,    0,    0,    0,
606    0,    0,    0, -258, -172, -251,    0,    0,    0,    0,
607    0,    0,  -85,    0,    0,    0,    0,    0,    0,  396,
608  396,  396,  396,  396,  396,  396,  396,    0,    0,    0,
609  396,  396,  396,  -39,  113,  126,    0,    0, -122, -121,
610 -118,    0,    0,    0,  -99,  -98,  -91,    0,    0,    0,
611    0,    0,    0,    0,  -86,  126,  236,    0,    0,    0,
612  185,  185,    0,    0, -140,  -84,  -81,    0,  165, -334,
613  126,    0,  -42,  -36,  -34,  -31,    0,    0,  -82,    0,
614    0,    0,    0,    0,    0,  170,  170,   -8,  108,  -23,
615  -23,    0,    0,  236,  236,  156,    0,    0,    0,    0,
616    0,    0,  -37,    0,    0,    0,  -35,    0,  126,    0,
617    0,    0,    0,  -19,  -19,    0,    0,    0,    0, -221,
618    0,  -70,    0, -118,    0,  -91,    0,    0,    0,    0,
619    0,  134,    0,    0,    0,
620};
621static const YYINT pcaprindex[] = {                       0,
622    0,  488,    0,    0,    0,    0,    0,    0,    0,    0,
623    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
624    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
625    0,    0,    0,    0,    0,    0,    0,    0,    0,    8,
626   11,    0,    0,    0,    0,    0,    0,    0,    0,    0,
627    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
628    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
629    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
630    0,    0,  228,    0,    0,    0,    0,    0,    0,    1,
631    0,  686,  686,    0,    0,    0,    0,    0,    0,    0,
632    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
633    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
634  686,  686,    0,    0,   16,   18,    0,    0,    0,    0,
635    0,    0,  -28,  520,    0,    0,    0,    0,    0,    0,
636    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
637    0,    0,  132,    0,    0,    0,    0,    0,    0,    0,
638    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
639    0,    0,    0,    0,  725,  759,    0,    0,    0,    0,
640    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
641    0,    0,    0,    0,    0,    0,    0,    0,    0,    3,
642  686,  686,    0,    0,    0,    0,    0,    0, -222,    0,
643 -205,    0,    0,    0,    0,    0,    0,    0,   20,    0,
644    0,    0,    0,    0,    0,   28,   53,   87,   78,   13,
645   38,    0,    0,   26,   36,    0,    0,    0,    0,    0,
646    0,    0,    0,    0,    0,    0,    0,    0,  121,    0,
647    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
648    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
649    0,    0,    0,    0,    0,
650};
651static const YYINT pcapgindex[] = {                       0,
652  227,  -14, -116,    0,    2,    0,    0,    0,    0,    0,
653   79,    0,   24,  -75,    0,  116,  724,  -73,   12,   29,
654 -163,  767,  722,    0,    0,    0,    0,    0,    0,    0,
655 -171,    0,    0,    0,    0, -165,    0,    0,    0,    0,
656    0,    0,    0,    0,
657};
658#define YYTABLESIZE 1078
659static const YYINT pcaptable[] = {                       82,
660   40,  237,   12,  263,   52,  265,  108,  115,  206,  242,
661  117,   52,  152,   80,  208,   17,  175,   19,  166,  129,
662   82,  246,  101,  167,  179,   41,  185,  158,  109,  163,
663  119,  120,  217,  166,  164,   42,  165,  153,  167,  222,
664  148,   40,  175,   12,  148,  148,  255,  148,  115,  148,
665  152,  117,  159,  152,  218,  152,   17,  152,   19,  102,
666  129,  223,  148,  148,  148,  158,   41,  103,  158,  269,
667  152,  128,  152,  152,  152,  153,   42,  156,  153,  264,
668  153,   82,  153,  266,  208,  158,  157,  158,  158,  158,
669  159,  270,  273,  159,  177,  153,  104,  153,  153,  153,
670  274,  170,  169,  168,  116,  152,  198,  203,  105,  180,
671  159,  186,  159,  159,  159,  156,  106,   90,  156,  111,
672  158,  107,  199,  204,  173,  175,  148,  157,  213,  214,
673  153,  215,  216,  191,  207,  156,  152,  156,  156,  156,
674  220,  197,   29,   29,  157,  159,  157,  157,  157,  166,
675  164,  158,  165,  238,  167,  194,  193,  192,  148,   28,
676   28,  153,  148,  148,   33,  148,  239,  148,  240,  241,
677  156,   33,  178,  135,  250,  137,  159,  138,  139,  157,
678  148,  148,  148,  226,  227,  228,  229,  230,  231,  232,
679  233,  244,  245,  163,  234,  235,  236,  166,  164,  184,
680  165,  156,  167,  177,  248,  253,  251,   90,   90,  252,
681  157,  166,  164,  262,  165,  256,  167,   80,  260,  190,
682  272,  257,  258,  205,   82,  259,  275,    1,   83,   81,
683   52,  225,   52,    0,   52,   52,   90,   90,  254,  267,
684  268,    0,    0,    0,  148,    0,    0,    0,  261,    0,
685   25,    0,    0,    0,    0,    0,    0,   49,   49,   49,
686   49,   49,   52,   49,   49,    0,    0,   49,   49,    0,
687    0,   25,    0,  163,    0,    0,    0,  166,  164,  162,
688  165,    0,  167,    0,   52,   52,   52,   52,   52,   49,
689   49,    0,    0,  123,  124,  125,  126,  127,    0,    0,
690   49,   49,   49,   49,   49,   49,   49,   49,   49,  160,
691  161,    0,  148,  148,  148,    0,   90,   90,    0,    0,
692  148,  148,  152,  152,  152,  119,  120,  119,   80,  119,
693  152,  152,  178,    0,    0,   82,    0,  158,  158,  158,
694   81,    0,    0,    0,    0,  158,  158,  153,  153,  153,
695    0,  157,  158,  159,    0,  153,  153,    0,    0,  162,
696    0,    0,  159,  159,  159,   40,   40,   12,   12,    0,
697  159,  159,  115,  115,    0,  117,  117,  152,  152,    0,
698   17,   17,   19,   19,  129,  129,    0,  156,  156,  156,
699   41,   41,  158,  158,    0,    0,  157,  157,  157,    0,
700   42,   42,  153,  153,    0,    0,    0,    0,    0,    0,
701    0,    0,    0,    0,    0,    0,    0,  159,  159,    0,
702    0,    0,   33,    0,    0,  160,  161,    0,    0,    0,
703  148,  148,  148,    0,    0,   82,    0,    0,  148,  148,
704   81,    0,  156,  156,   33,   33,   33,   33,   33,    3,
705    4,  157,  157,    5,    6,    7,    8,    9,   10,   11,
706   12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
707   22,   23,   24,  160,  161,   25,   26,   27,   28,   29,
708   30,   31,   32,   33,    0,   28,   28,    2,    0,    0,
709    0,    0,    0,   34,    0,    0,    0,  123,  124,  125,
710  126,  127,    0,    0,   35,   36,   37,   38,   39,   40,
711   41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
712   51,   52,   53,   54,   55,   56,   57,   58,   59,   60,
713   61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
714   71,   72,   73,   74,   75,   76,   77,   78,   79,    0,
715    0,    0,   51,  160,  161,    0,    0,    0,    0,   51,
716    3,    4,    0,    0,    5,    6,    7,    8,    9,   10,
717   11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
718   21,   22,   23,   24,    0,    0,   25,   26,   27,   28,
719   29,   30,   31,   32,   33,    0,    0,    0,    0,    0,
720    0,    0,    0,    0,   34,    0,    0,    0,    0,    0,
721    0,    0,    0,    0,    0,   35,   36,   37,   38,   39,
722   40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
723   50,   51,   52,   53,   54,   55,   56,   57,   58,   59,
724   60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
725   70,   71,   72,   73,   74,   75,   76,   77,   78,   79,
726    0,    0,    0,    0,    0,    6,    7,    8,    9,   10,
727   11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
728   21,   22,   23,   24,  163,    0,   25,    0,  166,  164,
729   82,  165,    0,  167,    0,    0,    0,    0,    0,    0,
730    0,    0,    0,    0,   34,    0,  170,  169,  168,    0,
731  170,  169,  168,    0,    0,   35,   36,   37,   38,   39,
732    0,    0,    0,   93,   44,   45,   46,   47,   48,   49,
733   50,   51,   52,   53,   54,   55,   56,   57,    0,    0,
734    0,    0,    0,    0,   50,   50,   50,   50,   50,    0,
735   50,   50,   72,    0,   50,   50,    0,    0,    0,    0,
736    0,    0,  149,  113,  115,    0,  149,  149,   92,  149,
737  162,  149,    0,    0,    0,    0,   50,   50,   51,    0,
738   51,    0,   51,   51,  149,  149,  149,   50,   50,   50,
739   50,   50,   50,   50,   50,   50,  148,    0,    0,    0,
740  148,  148,    0,  148,    0,  148,  114,  114,    0,  130,
741   51,    0,    0,   93,   93,  176,    0,    0,  148,  148,
742  148,    0,    0,    0,    0,    0,    0,    0,    0,    0,
743    0,    0,   51,   51,   51,   51,   51,  196,    0,    0,
744    0,  176,  202,  202,  200,  200,    0,    0,  149,    0,
745    0,    0,  131,    0,  211,  130,    0,    0,   92,   92,
746    0,    0,    0,    0,  181,    0,  187,  133,  134,  135,
747  136,  137,    0,  138,  139,    0,    0,  140,  141,    0,
748  114,    0,  148,    0,    0,    0,    0,  201,  201,    0,
749    0,    0,    0,    0,    0,    0,    0,  114,  131,  142,
750  143,    0,    0,    0,    0,    0,    0,    0,    0,    0,
751  144,  145,  146,  147,  148,  149,  150,  151,  152,    0,
752    0,    0,  202,  202,  249,  200,    0,    0,    0,    0,
753    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
754    0,  184,   50,   50,   50,   50,   50,    0,   50,   50,
755    0,    0,   50,   50,    0,    0,  157,  158,  159,    0,
756  157,  158,  159,    0,  160,  161,    0,   92,  201,    0,
757    0,    0,    0,    0,   50,   50,    0,  130,  130,    0,
758    0,    0,    0,    0,    0,   50,   50,   50,   50,   50,
759   50,   50,   50,   50,    0,    0,    0,    0,    0,    0,
760    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
761    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
762  131,  131,    0,    0,    0,    0,    0,    0,    0,    0,
763    0,    0,    0,    0,  149,  149,  149,    0,    0,    0,
764    0,    0,  149,  149,    0,    0,    0,    0,    0,    0,
765    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
766    0,    0,    0,    0,    0,    0,    0,    0,  148,  148,
767  148,    0,    0,    0,    0,    0,  148,  148,
768};
769static const YYINT pcapcheck[] = {                       40,
770    0,   41,    0,   41,   33,   41,  291,    0,   47,  181,
771    0,   40,    0,   33,  131,    0,   92,    0,   42,    0,
772   40,  187,  291,   47,   98,    0,  100,    0,  313,   38,
773  365,  366,  291,   42,   43,    0,   45,    0,   47,  291,
774   38,   41,  118,   41,   42,   43,  210,   45,   41,   47,
775   38,   41,    0,   41,  313,   43,   41,   45,   41,  291,
776   41,  313,   60,   61,   62,   38,   41,  291,   41,  291,
777   58,   86,   60,   61,   62,   38,   41,    0,   41,  243,
778   43,   40,   45,  247,  201,   58,    0,   60,   61,   62,
779   38,  313,  264,   41,   93,   58,  313,   60,   61,   62,
780  266,   60,   61,   62,   81,   93,  121,  122,  313,   98,
781   58,  100,   60,   61,   62,   38,  291,    2,   41,  313,
782   93,  291,  121,  122,   91,  201,  124,   41,  365,  366,
783   93,  365,  366,   38,   47,   58,  124,   60,   61,   62,
784  313,  118,  365,  366,   58,   93,   60,   61,   62,   42,
785   43,  124,   45,   41,   47,   60,   61,   62,   38,  365,
786  366,  124,   42,   43,   33,   45,   41,   47,  291,  291,
787   93,   40,  291,  259,  315,  261,  124,  263,  264,   93,
788   60,   61,   62,  160,  161,  162,  163,  164,  165,  166,
789  167,  291,  291,   38,  171,  172,  173,   42,   43,  291,
790   45,  124,   47,  202,  291,   41,  291,   92,   93,  291,
791  124,   42,   43,   58,   45,  258,   47,   33,  301,  124,
792  291,  258,  257,  262,   40,  257,   93,    0,    2,   45,
793  259,  153,  261,   -1,  263,  264,  121,  122,  210,  254,
794  255,   -1,   -1,   -1,  124,   -1,   -1,   -1,   93,   -1,
795  291,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,
796  260,  261,  291,  263,  264,   -1,   -1,  267,  268,   -1,
797   -1,  291,   -1,   38,   -1,   -1,   -1,   42,   43,  124,
798   45,   -1,   47,   -1,  313,  314,  315,  316,  317,  289,
799  290,   -1,   -1,  313,  314,  315,  316,  317,   -1,   -1,
800  300,  301,  302,  303,  304,  305,  306,  307,  308,  318,
801  319,   -1,  310,  311,  312,   -1,  201,  202,   -1,   -1,
802  318,  319,  310,  311,  312,  365,  366,  365,   33,  365,
803  318,  319,  291,   -1,   -1,   40,   -1,  310,  311,  312,
804   45,   -1,   -1,   -1,   -1,  318,  319,  310,  311,  312,
805   -1,  310,  311,  312,   -1,  318,  319,   -1,   -1,  124,
806   -1,   -1,  310,  311,  312,  365,  366,  365,  366,   -1,
807  318,  319,  365,  366,   -1,  365,  366,  365,  366,   -1,
808  365,  366,  365,  366,  365,  366,   -1,  310,  311,  312,
809  365,  366,  365,  366,   -1,   -1,  310,  311,  312,   -1,
810  365,  366,  365,  366,   -1,   -1,   -1,   -1,   -1,   -1,
811   -1,   -1,   -1,   -1,   -1,   -1,   -1,  365,  366,   -1,
812   -1,   -1,  291,   -1,   -1,  318,  319,   -1,   -1,   -1,
813  310,  311,  312,   -1,   -1,   40,   -1,   -1,  318,  319,
814   45,   -1,  365,  366,  313,  314,  315,  316,  317,  265,
815  266,  365,  366,  269,  270,  271,  272,  273,  274,  275,
816  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
817  286,  287,  288,  318,  319,  291,  292,  293,  294,  295,
818  296,  297,  298,  299,   -1,  365,  366,    0,   -1,   -1,
819   -1,   -1,   -1,  309,   -1,   -1,   -1,  313,  314,  315,
820  316,  317,   -1,   -1,  320,  321,  322,  323,  324,  325,
821  326,  327,  328,  329,  330,  331,  332,  333,  334,  335,
822  336,  337,  338,  339,  340,  341,  342,  343,  344,  345,
823  346,  347,  348,  349,  350,  351,  352,  353,  354,  355,
824  356,  357,  358,  359,  360,  361,  362,  363,  364,   -1,
825   -1,   -1,   33,  318,  319,   -1,   -1,   -1,   -1,   40,
826  265,  266,   -1,   -1,  269,  270,  271,  272,  273,  274,
827  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,
828  285,  286,  287,  288,   -1,   -1,  291,  292,  293,  294,
829  295,  296,  297,  298,  299,   -1,   -1,   -1,   -1,   -1,
830   -1,   -1,   -1,   -1,  309,   -1,   -1,   -1,   -1,   -1,
831   -1,   -1,   -1,   -1,   -1,  320,  321,  322,  323,  324,
832  325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
833  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
834  345,  346,  347,  348,  349,  350,  351,  352,  353,  354,
835  355,  356,  357,  358,  359,  360,  361,  362,  363,  364,
836   -1,   -1,   -1,   -1,   -1,  270,  271,  272,  273,  274,
837  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,
838  285,  286,  287,  288,   38,   -1,  291,   -1,   42,   43,
839   40,   45,   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,
840   -1,   -1,   -1,   -1,  309,   -1,   60,   61,   62,   -1,
841   60,   61,   62,   -1,   -1,  320,  321,  322,  323,  324,
842   -1,   -1,   -1,    2,  329,  330,  331,  332,  333,  334,
843  335,  336,  337,  338,  339,  340,  341,  342,   -1,   -1,
844   -1,   -1,   -1,   -1,  257,  258,  259,  260,  261,   -1,
845  263,  264,  357,   -1,  267,  268,   -1,   -1,   -1,   -1,
846   -1,   -1,   38,   40,   41,   -1,   42,   43,    2,   45,
847  124,   47,   -1,   -1,   -1,   -1,  289,  290,  259,   -1,
848  261,   -1,  263,  264,   60,   61,   62,  300,  301,  302,
849  303,  304,  305,  306,  307,  308,   38,   -1,   -1,   -1,
850   42,   43,   -1,   45,   -1,   47,   40,   41,   -1,   86,
851  291,   -1,   -1,   92,   93,   92,   -1,   -1,   60,   61,
852   62,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
853   -1,   -1,  313,  314,  315,  316,  317,  114,   -1,   -1,
854   -1,  118,  121,  122,  121,  122,   -1,   -1,  124,   -1,
855   -1,   -1,   86,   -1,  131,  132,   -1,   -1,   92,   93,
856   -1,   -1,   -1,   -1,   98,   -1,  100,  257,  258,  259,
857  260,  261,   -1,  263,  264,   -1,   -1,  267,  268,   -1,
858  114,   -1,  124,   -1,   -1,   -1,   -1,  121,  122,   -1,
859   -1,   -1,   -1,   -1,   -1,   -1,   -1,  131,  132,  289,
860  290,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
861  300,  301,  302,  303,  304,  305,  306,  307,  308,   -1,
862   -1,   -1,  201,  202,  201,  202,   -1,   -1,   -1,   -1,
863   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
864   -1,  291,  257,  258,  259,  260,  261,   -1,  263,  264,
865   -1,   -1,  267,  268,   -1,   -1,  310,  311,  312,   -1,
866  310,  311,  312,   -1,  318,  319,   -1,  201,  202,   -1,
867   -1,   -1,   -1,   -1,  289,  290,   -1,  254,  255,   -1,
868   -1,   -1,   -1,   -1,   -1,  300,  301,  302,  303,  304,
869  305,  306,  307,  308,   -1,   -1,   -1,   -1,   -1,   -1,
870   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
871   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
872  254,  255,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
873   -1,   -1,   -1,   -1,  310,  311,  312,   -1,   -1,   -1,
874   -1,   -1,  318,  319,   -1,   -1,   -1,   -1,   -1,   -1,
875   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
876   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  310,  311,
877  312,   -1,   -1,   -1,   -1,   -1,  318,  319,
878};
879#define YYFINAL 1
880#ifndef YYDEBUG
881#define YYDEBUG 0
882#endif
883#define YYMAXTOKEN 367
884#define YYUNDFTOKEN 414
885#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
886#if YYDEBUG
887static const char *const pcapname[] = {
888
889"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
890"'!'",0,0,0,0,"'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,
8910,"':'",0,"'<'","'='","'>'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8920,0,"'['",0,"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
893"'|'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8940,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8950,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
8960,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"DST","SRC","HOST","GATEWAY","NET","NETMASK",
897"PORT","PORTRANGE","LESS","GREATER","PROTO","PROTOCHAIN","CBYTE","ARP","RARP",
898"IP","SCTP","TCP","UDP","ICMP","IGMP","IGRP","PIM","VRRP","CARP","ATALK","AARP",
899"DECNET","LAT","SCA","MOPRC","MOPDL","TK_BROADCAST","TK_MULTICAST","NUM",
900"INBOUND","OUTBOUND","PF_IFNAME","PF_RSET","PF_RNR","PF_SRNR","PF_REASON",
901"PF_ACTION","TYPE","SUBTYPE","DIR","ADDR1","ADDR2","ADDR3","ADDR4","RA","TA",
902"LINK","GEQ","LEQ","NEQ","ID","EID","HID","HID6","AID","LSH","RSH","LEN","IPV6",
903"ICMPV6","AH","ESP","VLAN","MPLS","PPPOED","PPPOES","ISO","ESIS","CLNP","ISIS",
904"L1","L2","IIH","LSP","SNP","CSNP","PSNP","STP","IPX","NETBEUI","LANE","LLC",
905"METAC","BCC","SC","ILMIC","OAMF4EC","OAMF4SC","OAM","OAMF4","CONNECTMSG",
906"METACONNECT","VPI","VCI","RADIO","FISU","LSSU","MSU","SIO","OPC","DPC","SLS",
907"OR","AND","UMINUS",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
9080,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"illegal-symbol",
909};
910static const char *const pcaprule[] = {
911"$accept : prog",
912"prog : null expr",
913"prog : null",
914"null :",
915"expr : term",
916"expr : expr and term",
917"expr : expr and id",
918"expr : expr or term",
919"expr : expr or id",
920"and : AND",
921"or : OR",
922"id : nid",
923"id : pnum",
924"id : paren pid ')'",
925"nid : ID",
926"nid : HID '/' NUM",
927"nid : HID NETMASK HID",
928"nid : HID",
929"nid : HID6 '/' NUM",
930"nid : HID6",
931"nid : EID",
932"nid : AID",
933"nid : not id",
934"not : '!'",
935"paren : '('",
936"pid : nid",
937"pid : qid and id",
938"pid : qid or id",
939"qid : pnum",
940"qid : pid",
941"term : rterm",
942"term : not term",
943"head : pqual dqual aqual",
944"head : pqual dqual",
945"head : pqual aqual",
946"head : pqual PROTO",
947"head : pqual PROTOCHAIN",
948"head : pqual ndaqual",
949"rterm : head id",
950"rterm : paren expr ')'",
951"rterm : pname",
952"rterm : arth relop arth",
953"rterm : arth irelop arth",
954"rterm : other",
955"rterm : atmtype",
956"rterm : atmmultitype",
957"rterm : atmfield atmvalue",
958"rterm : mtp2type",
959"rterm : mtp3field mtp3value",
960"pqual : pname",
961"pqual :",
962"dqual : SRC",
963"dqual : DST",
964"dqual : SRC OR DST",
965"dqual : DST OR SRC",
966"dqual : SRC AND DST",
967"dqual : DST AND SRC",
968"dqual : ADDR1",
969"dqual : ADDR2",
970"dqual : ADDR3",
971"dqual : ADDR4",
972"dqual : RA",
973"dqual : TA",
974"aqual : HOST",
975"aqual : NET",
976"aqual : PORT",
977"aqual : PORTRANGE",
978"ndaqual : GATEWAY",
979"pname : LINK",
980"pname : IP",
981"pname : ARP",
982"pname : RARP",
983"pname : SCTP",
984"pname : TCP",
985"pname : UDP",
986"pname : ICMP",
987"pname : IGMP",
988"pname : IGRP",
989"pname : PIM",
990"pname : VRRP",
991"pname : CARP",
992"pname : ATALK",
993"pname : AARP",
994"pname : DECNET",
995"pname : LAT",
996"pname : SCA",
997"pname : MOPDL",
998"pname : MOPRC",
999"pname : IPV6",
1000"pname : ICMPV6",
1001"pname : AH",
1002"pname : ESP",
1003"pname : ISO",
1004"pname : ESIS",
1005"pname : ISIS",
1006"pname : L1",
1007"pname : L2",
1008"pname : IIH",
1009"pname : LSP",
1010"pname : SNP",
1011"pname : PSNP",
1012"pname : CSNP",
1013"pname : CLNP",
1014"pname : STP",
1015"pname : IPX",
1016"pname : NETBEUI",
1017"pname : RADIO",
1018"other : pqual TK_BROADCAST",
1019"other : pqual TK_MULTICAST",
1020"other : LESS NUM",
1021"other : GREATER NUM",
1022"other : CBYTE NUM byteop NUM",
1023"other : INBOUND",
1024"other : OUTBOUND",
1025"other : VLAN pnum",
1026"other : VLAN",
1027"other : MPLS pnum",
1028"other : MPLS",
1029"other : PPPOED",
1030"other : PPPOES",
1031"other : pfvar",
1032"other : pqual p80211",
1033"pfvar : PF_IFNAME ID",
1034"pfvar : PF_RSET ID",
1035"pfvar : PF_RNR NUM",
1036"pfvar : PF_SRNR NUM",
1037"pfvar : PF_REASON reason",
1038"pfvar : PF_ACTION action",
1039"p80211 : TYPE type SUBTYPE subtype",
1040"p80211 : TYPE type",
1041"p80211 : SUBTYPE type_subtype",
1042"p80211 : DIR dir",
1043"type : NUM",
1044"type : ID",
1045"subtype : NUM",
1046"subtype : ID",
1047"type_subtype : ID",
1048"dir : NUM",
1049"dir : ID",
1050"reason : NUM",
1051"reason : ID",
1052"action : ID",
1053"relop : '>'",
1054"relop : GEQ",
1055"relop : '='",
1056"irelop : LEQ",
1057"irelop : '<'",
1058"irelop : NEQ",
1059"arth : pnum",
1060"arth : narth",
1061"narth : pname '[' arth ']'",
1062"narth : pname '[' arth ':' NUM ']'",
1063"narth : arth '+' arth",
1064"narth : arth '-' arth",
1065"narth : arth '*' arth",
1066"narth : arth '/' arth",
1067"narth : arth '&' arth",
1068"narth : arth '|' arth",
1069"narth : arth LSH arth",
1070"narth : arth RSH arth",
1071"narth : '-' arth",
1072"narth : paren narth ')'",
1073"narth : LEN",
1074"byteop : '&'",
1075"byteop : '|'",
1076"byteop : '<'",
1077"byteop : '>'",
1078"byteop : '='",
1079"pnum : NUM",
1080"pnum : paren pnum ')'",
1081"atmtype : LANE",
1082"atmtype : LLC",
1083"atmtype : METAC",
1084"atmtype : BCC",
1085"atmtype : OAMF4EC",
1086"atmtype : OAMF4SC",
1087"atmtype : SC",
1088"atmtype : ILMIC",
1089"atmmultitype : OAM",
1090"atmmultitype : OAMF4",
1091"atmmultitype : CONNECTMSG",
1092"atmmultitype : METACONNECT",
1093"atmfield : VPI",
1094"atmfield : VCI",
1095"atmvalue : atmfieldvalue",
1096"atmvalue : relop NUM",
1097"atmvalue : irelop NUM",
1098"atmvalue : paren atmlistvalue ')'",
1099"atmfieldvalue : NUM",
1100"atmlistvalue : atmfieldvalue",
1101"atmlistvalue : atmlistvalue or atmfieldvalue",
1102"mtp2type : FISU",
1103"mtp2type : LSSU",
1104"mtp2type : MSU",
1105"mtp3field : SIO",
1106"mtp3field : OPC",
1107"mtp3field : DPC",
1108"mtp3field : SLS",
1109"mtp3value : mtp3fieldvalue",
1110"mtp3value : relop NUM",
1111"mtp3value : irelop NUM",
1112"mtp3value : paren mtp3listvalue ')'",
1113"mtp3fieldvalue : NUM",
1114"mtp3listvalue : mtp3fieldvalue",
1115"mtp3listvalue : mtp3listvalue or mtp3fieldvalue",
1116
1117};
1118#endif
1119
1120int      yydebug;
1121int      yynerrs;
1122
1123int      yyerrflag;
1124int      yychar;
1125YYSTYPE  yyval;
1126YYSTYPE  yylval;
1127
1128/* define the initial stack-sizes */
1129#ifdef YYSTACKSIZE
1130#undef YYMAXDEPTH
1131#define YYMAXDEPTH  YYSTACKSIZE
1132#else
1133#ifdef YYMAXDEPTH
1134#define YYSTACKSIZE YYMAXDEPTH
1135#else
1136#define YYSTACKSIZE 10000
1137#define YYMAXDEPTH  10000
1138#endif
1139#endif
1140
1141#define YYINITSTACKSIZE 200
1142
1143typedef struct {
1144    unsigned stacksize;
1145    YYINT    *s_base;
1146    YYINT    *s_mark;
1147    YYINT    *s_last;
1148    YYSTYPE  *l_base;
1149    YYSTYPE  *l_mark;
1150} YYSTACKDATA;
1151/* variables for the parser stack */
1152static YYSTACKDATA yystack;
1153
1154#if YYDEBUG
1155#include <stdio.h>              /* needed for printf */
1156#endif
1157
1158#include <stdlib.h>     /* needed for malloc, etc */
1159#include <string.h>     /* needed for memset */
1160
1161/* allocate initial stack or double stack size, up to YYMAXDEPTH */
1162static int yygrowstack(YYSTACKDATA *data)
1163{
1164    int i;
1165    unsigned newsize;
1166    YYINT *newss;
1167    YYSTYPE *newvs;
1168
1169    if ((newsize = data->stacksize) == 0)
1170        newsize = YYINITSTACKSIZE;
1171    else if (newsize >= YYMAXDEPTH)
1172        return YYENOMEM;
1173    else if ((newsize *= 2) > YYMAXDEPTH)
1174        newsize = YYMAXDEPTH;
1175
1176    i = (int) (data->s_mark - data->s_base);
1177    newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
1178    if (newss == 0)
1179        return YYENOMEM;
1180
1181    data->s_base = newss;
1182    data->s_mark = newss + i;
1183
1184    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
1185    if (newvs == 0)
1186        return YYENOMEM;
1187
1188    data->l_base = newvs;
1189    data->l_mark = newvs + i;
1190
1191    data->stacksize = newsize;
1192    data->s_last = data->s_base + newsize - 1;
1193    return 0;
1194}
1195
1196#if YYPURE || defined(YY_NO_LEAKS)
1197static void yyfreestack(YYSTACKDATA *data)
1198{
1199    free(data->s_base);
1200    free(data->l_base);
1201    memset(data, 0, sizeof(*data));
1202}
1203#else
1204#define yyfreestack(data) /* nothing */
1205#endif
1206
1207#define YYABORT  goto yyabort
1208#define YYREJECT goto yyabort
1209#define YYACCEPT goto yyaccept
1210#define YYERROR  goto yyerrlab
1211
1212int
1213YYPARSE_DECL()
1214{
1215    int yym, yyn, yystate;
1216#if YYDEBUG
1217    const char *yys;
1218
1219    if ((yys = getenv("YYDEBUG")) != 0)
1220    {
1221        yyn = *yys;
1222        if (yyn >= '0' && yyn <= '9')
1223            yydebug = yyn - '0';
1224    }
1225#endif
1226
1227    yynerrs = 0;
1228    yyerrflag = 0;
1229    yychar = YYEMPTY;
1230    yystate = 0;
1231
1232#if YYPURE
1233    memset(&yystack, 0, sizeof(yystack));
1234#endif
1235
1236    if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1237    yystack.s_mark = yystack.s_base;
1238    yystack.l_mark = yystack.l_base;
1239    yystate = 0;
1240    *yystack.s_mark = 0;
1241
1242yyloop:
1243    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
1244    if (yychar < 0)
1245    {
1246        if ((yychar = YYLEX) < 0) yychar = YYEOF;
1247#if YYDEBUG
1248        if (yydebug)
1249        {
1250            yys = yyname[YYTRANSLATE(yychar)];
1251            printf("%sdebug: state %d, reading %d (%s)\n",
1252                    YYPREFIX, yystate, yychar, yys);
1253        }
1254#endif
1255    }
1256    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
1257            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
1258    {
1259#if YYDEBUG
1260        if (yydebug)
1261            printf("%sdebug: state %d, shifting to state %d\n",
1262                    YYPREFIX, yystate, yytable[yyn]);
1263#endif
1264        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
1265        {
1266            goto yyoverflow;
1267        }
1268        yystate = yytable[yyn];
1269        *++yystack.s_mark = yytable[yyn];
1270        *++yystack.l_mark = yylval;
1271        yychar = YYEMPTY;
1272        if (yyerrflag > 0)  --yyerrflag;
1273        goto yyloop;
1274    }
1275    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
1276            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
1277    {
1278        yyn = yytable[yyn];
1279        goto yyreduce;
1280    }
1281    if (yyerrflag) goto yyinrecovery;
1282
1283    YYERROR_CALL("syntax error");
1284
1285    goto yyerrlab;
1286
1287yyerrlab:
1288    ++yynerrs;
1289
1290yyinrecovery:
1291    if (yyerrflag < 3)
1292    {
1293        yyerrflag = 3;
1294        for (;;)
1295        {
1296            if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
1297                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
1298            {
1299#if YYDEBUG
1300                if (yydebug)
1301                    printf("%sdebug: state %d, error recovery shifting\
1302 to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
1303#endif
1304                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
1305                {
1306                    goto yyoverflow;
1307                }
1308                yystate = yytable[yyn];
1309                *++yystack.s_mark = yytable[yyn];
1310                *++yystack.l_mark = yylval;
1311                goto yyloop;
1312            }
1313            else
1314            {
1315#if YYDEBUG
1316                if (yydebug)
1317                    printf("%sdebug: error recovery discarding state %d\n",
1318                            YYPREFIX, *yystack.s_mark);
1319#endif
1320                if (yystack.s_mark <= yystack.s_base) goto yyabort;
1321                --yystack.s_mark;
1322                --yystack.l_mark;
1323            }
1324        }
1325    }
1326    else
1327    {
1328        if (yychar == YYEOF) goto yyabort;
1329#if YYDEBUG
1330        if (yydebug)
1331        {
1332            yys = yyname[YYTRANSLATE(yychar)];
1333            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
1334                    YYPREFIX, yystate, yychar, yys);
1335        }
1336#endif
1337        yychar = YYEMPTY;
1338        goto yyloop;
1339    }
1340
1341yyreduce:
1342#if YYDEBUG
1343    if (yydebug)
1344        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
1345                YYPREFIX, yystate, yyn, yyrule[yyn]);
1346#endif
1347    yym = yylen[yyn];
1348    if (yym)
1349        yyval = yystack.l_mark[1-yym];
1350    else
1351        memset(&yyval, 0, sizeof yyval);
1352    switch (yyn)
1353    {
1354case 1:
1355#line 317 "../../freebsd/contrib/libpcap/grammar.y"
1356        {
1357        finish_parse(yystack.l_mark[0].blk.b);
1358}
1359break;
1360case 3:
1361#line 322 "../../freebsd/contrib/libpcap/grammar.y"
1362        { yyval.blk.q = qerr; }
1363break;
1364case 5:
1365#line 325 "../../freebsd/contrib/libpcap/grammar.y"
1366        { gen_and(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; }
1367break;
1368case 6:
1369#line 326 "../../freebsd/contrib/libpcap/grammar.y"
1370        { gen_and(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; }
1371break;
1372case 7:
1373#line 327 "../../freebsd/contrib/libpcap/grammar.y"
1374        { gen_or(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; }
1375break;
1376case 8:
1377#line 328 "../../freebsd/contrib/libpcap/grammar.y"
1378        { gen_or(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; }
1379break;
1380case 9:
1381#line 330 "../../freebsd/contrib/libpcap/grammar.y"
1382        { yyval.blk = yystack.l_mark[-1].blk; }
1383break;
1384case 10:
1385#line 332 "../../freebsd/contrib/libpcap/grammar.y"
1386        { yyval.blk = yystack.l_mark[-1].blk; }
1387break;
1388case 12:
1389#line 335 "../../freebsd/contrib/libpcap/grammar.y"
1390        { yyval.blk.b = gen_ncode(NULL, (bpf_u_int32)yystack.l_mark[0].i,
1391                                                   yyval.blk.q = yystack.l_mark[-1].blk.q); }
1392break;
1393case 13:
1394#line 337 "../../freebsd/contrib/libpcap/grammar.y"
1395        { yyval.blk = yystack.l_mark[-1].blk; }
1396break;
1397case 14:
1398#line 339 "../../freebsd/contrib/libpcap/grammar.y"
1399        { yyval.blk.b = gen_scode(yystack.l_mark[0].s, yyval.blk.q = yystack.l_mark[-1].blk.q); }
1400break;
1401case 15:
1402#line 340 "../../freebsd/contrib/libpcap/grammar.y"
1403        { yyval.blk.b = gen_mcode(yystack.l_mark[-2].s, NULL, yystack.l_mark[0].i,
1404                                    yyval.blk.q = yystack.l_mark[-3].blk.q); }
1405break;
1406case 16:
1407#line 342 "../../freebsd/contrib/libpcap/grammar.y"
1408        { yyval.blk.b = gen_mcode(yystack.l_mark[-2].s, yystack.l_mark[0].s, 0,
1409                                    yyval.blk.q = yystack.l_mark[-3].blk.q); }
1410break;
1411case 17:
1412#line 344 "../../freebsd/contrib/libpcap/grammar.y"
1413        {
1414                                  /* Decide how to parse HID based on proto */
1415                                  yyval.blk.q = yystack.l_mark[-1].blk.q;
1416                                  if (yyval.blk.q.addr == Q_PORT)
1417                                        bpf_error("'port' modifier applied to ip host");
1418                                  else if (yyval.blk.q.addr == Q_PORTRANGE)
1419                                        bpf_error("'portrange' modifier applied to ip host");
1420                                  else if (yyval.blk.q.addr == Q_PROTO)
1421                                        bpf_error("'proto' modifier applied to ip host");
1422                                  else if (yyval.blk.q.addr == Q_PROTOCHAIN)
1423                                        bpf_error("'protochain' modifier applied to ip host");
1424                                  yyval.blk.b = gen_ncode(yystack.l_mark[0].s, 0, yyval.blk.q);
1425                                }
1426break;
1427case 18:
1428#line 357 "../../freebsd/contrib/libpcap/grammar.y"
1429        {
1430#ifdef INET6
1431                                  yyval.blk.b = gen_mcode6(yystack.l_mark[-2].s, NULL, yystack.l_mark[0].i,
1432                                    yyval.blk.q = yystack.l_mark[-3].blk.q);
1433#else
1434                                  bpf_error("'ip6addr/prefixlen' not supported "
1435                                        "in this configuration");
1436#endif /*INET6*/
1437                                }
1438break;
1439case 19:
1440#line 366 "../../freebsd/contrib/libpcap/grammar.y"
1441        {
1442#ifdef INET6
1443                                  yyval.blk.b = gen_mcode6(yystack.l_mark[0].s, 0, 128,
1444                                    yyval.blk.q = yystack.l_mark[-1].blk.q);
1445#else
1446                                  bpf_error("'ip6addr' not supported "
1447                                        "in this configuration");
1448#endif /*INET6*/
1449                                }
1450break;
1451case 20:
1452#line 375 "../../freebsd/contrib/libpcap/grammar.y"
1453        {
1454                                  yyval.blk.b = gen_ecode(yystack.l_mark[0].e, yyval.blk.q = yystack.l_mark[-1].blk.q);
1455                                  /*
1456                                   * $1 was allocated by "pcap_ether_aton()",
1457                                   * so we must free it now that we're done
1458                                   * with it.
1459                                   */
1460                                  free(yystack.l_mark[0].e);
1461                                }
1462break;
1463case 21:
1464#line 384 "../../freebsd/contrib/libpcap/grammar.y"
1465        {
1466                                  yyval.blk.b = gen_acode(yystack.l_mark[0].e, yyval.blk.q = yystack.l_mark[-1].blk.q);
1467                                  /*
1468                                   * $1 was allocated by "pcap_ether_aton()",
1469                                   * so we must free it now that we're done
1470                                   * with it.
1471                                   */
1472                                  free(yystack.l_mark[0].e);
1473                                }
1474break;
1475case 22:
1476#line 393 "../../freebsd/contrib/libpcap/grammar.y"
1477        { gen_not(yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; }
1478break;
1479case 23:
1480#line 395 "../../freebsd/contrib/libpcap/grammar.y"
1481        { yyval.blk = yystack.l_mark[-1].blk; }
1482break;
1483case 24:
1484#line 397 "../../freebsd/contrib/libpcap/grammar.y"
1485        { yyval.blk = yystack.l_mark[-1].blk; }
1486break;
1487case 26:
1488#line 400 "../../freebsd/contrib/libpcap/grammar.y"
1489        { gen_and(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; }
1490break;
1491case 27:
1492#line 401 "../../freebsd/contrib/libpcap/grammar.y"
1493        { gen_or(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; }
1494break;
1495case 28:
1496#line 403 "../../freebsd/contrib/libpcap/grammar.y"
1497        { yyval.blk.b = gen_ncode(NULL, (bpf_u_int32)yystack.l_mark[0].i,
1498                                                   yyval.blk.q = yystack.l_mark[-1].blk.q); }
1499break;
1500case 31:
1501#line 408 "../../freebsd/contrib/libpcap/grammar.y"
1502        { gen_not(yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; }
1503break;
1504case 32:
1505#line 410 "../../freebsd/contrib/libpcap/grammar.y"
1506        { QSET(yyval.blk.q, yystack.l_mark[-2].i, yystack.l_mark[-1].i, yystack.l_mark[0].i); }
1507break;
1508case 33:
1509#line 411 "../../freebsd/contrib/libpcap/grammar.y"
1510        { QSET(yyval.blk.q, yystack.l_mark[-1].i, yystack.l_mark[0].i, Q_DEFAULT); }
1511break;
1512case 34:
1513#line 412 "../../freebsd/contrib/libpcap/grammar.y"
1514        { QSET(yyval.blk.q, yystack.l_mark[-1].i, Q_DEFAULT, yystack.l_mark[0].i); }
1515break;
1516case 35:
1517#line 413 "../../freebsd/contrib/libpcap/grammar.y"
1518        { QSET(yyval.blk.q, yystack.l_mark[-1].i, Q_DEFAULT, Q_PROTO); }
1519break;
1520case 36:
1521#line 414 "../../freebsd/contrib/libpcap/grammar.y"
1522        { QSET(yyval.blk.q, yystack.l_mark[-1].i, Q_DEFAULT, Q_PROTOCHAIN); }
1523break;
1524case 37:
1525#line 415 "../../freebsd/contrib/libpcap/grammar.y"
1526        { QSET(yyval.blk.q, yystack.l_mark[-1].i, Q_DEFAULT, yystack.l_mark[0].i); }
1527break;
1528case 38:
1529#line 417 "../../freebsd/contrib/libpcap/grammar.y"
1530        { yyval.blk = yystack.l_mark[0].blk; }
1531break;
1532case 39:
1533#line 418 "../../freebsd/contrib/libpcap/grammar.y"
1534        { yyval.blk.b = yystack.l_mark[-1].blk.b; yyval.blk.q = yystack.l_mark[-2].blk.q; }
1535break;
1536case 40:
1537#line 419 "../../freebsd/contrib/libpcap/grammar.y"
1538        { yyval.blk.b = gen_proto_abbrev(yystack.l_mark[0].i); yyval.blk.q = qerr; }
1539break;
1540case 41:
1541#line 420 "../../freebsd/contrib/libpcap/grammar.y"
1542        { yyval.blk.b = gen_relation(yystack.l_mark[-1].i, yystack.l_mark[-2].a, yystack.l_mark[0].a, 0);
1543                                  yyval.blk.q = qerr; }
1544break;
1545case 42:
1546#line 422 "../../freebsd/contrib/libpcap/grammar.y"
1547        { yyval.blk.b = gen_relation(yystack.l_mark[-1].i, yystack.l_mark[-2].a, yystack.l_mark[0].a, 1);
1548                                  yyval.blk.q = qerr; }
1549break;
1550case 43:
1551#line 424 "../../freebsd/contrib/libpcap/grammar.y"
1552        { yyval.blk.b = yystack.l_mark[0].rblk; yyval.blk.q = qerr; }
1553break;
1554case 44:
1555#line 425 "../../freebsd/contrib/libpcap/grammar.y"
1556        { yyval.blk.b = gen_atmtype_abbrev(yystack.l_mark[0].i); yyval.blk.q = qerr; }
1557break;
1558case 45:
1559#line 426 "../../freebsd/contrib/libpcap/grammar.y"
1560        { yyval.blk.b = gen_atmmulti_abbrev(yystack.l_mark[0].i); yyval.blk.q = qerr; }
1561break;
1562case 46:
1563#line 427 "../../freebsd/contrib/libpcap/grammar.y"
1564        { yyval.blk.b = yystack.l_mark[0].blk.b; yyval.blk.q = qerr; }
1565break;
1566case 47:
1567#line 428 "../../freebsd/contrib/libpcap/grammar.y"
1568        { yyval.blk.b = gen_mtp2type_abbrev(yystack.l_mark[0].i); yyval.blk.q = qerr; }
1569break;
1570case 48:
1571#line 429 "../../freebsd/contrib/libpcap/grammar.y"
1572        { yyval.blk.b = yystack.l_mark[0].blk.b; yyval.blk.q = qerr; }
1573break;
1574case 50:
1575#line 433 "../../freebsd/contrib/libpcap/grammar.y"
1576        { yyval.i = Q_DEFAULT; }
1577break;
1578case 51:
1579#line 436 "../../freebsd/contrib/libpcap/grammar.y"
1580        { yyval.i = Q_SRC; }
1581break;
1582case 52:
1583#line 437 "../../freebsd/contrib/libpcap/grammar.y"
1584        { yyval.i = Q_DST; }
1585break;
1586case 53:
1587#line 438 "../../freebsd/contrib/libpcap/grammar.y"
1588        { yyval.i = Q_OR; }
1589break;
1590case 54:
1591#line 439 "../../freebsd/contrib/libpcap/grammar.y"
1592        { yyval.i = Q_OR; }
1593break;
1594case 55:
1595#line 440 "../../freebsd/contrib/libpcap/grammar.y"
1596        { yyval.i = Q_AND; }
1597break;
1598case 56:
1599#line 441 "../../freebsd/contrib/libpcap/grammar.y"
1600        { yyval.i = Q_AND; }
1601break;
1602case 57:
1603#line 442 "../../freebsd/contrib/libpcap/grammar.y"
1604        { yyval.i = Q_ADDR1; }
1605break;
1606case 58:
1607#line 443 "../../freebsd/contrib/libpcap/grammar.y"
1608        { yyval.i = Q_ADDR2; }
1609break;
1610case 59:
1611#line 444 "../../freebsd/contrib/libpcap/grammar.y"
1612        { yyval.i = Q_ADDR3; }
1613break;
1614case 60:
1615#line 445 "../../freebsd/contrib/libpcap/grammar.y"
1616        { yyval.i = Q_ADDR4; }
1617break;
1618case 61:
1619#line 446 "../../freebsd/contrib/libpcap/grammar.y"
1620        { yyval.i = Q_RA; }
1621break;
1622case 62:
1623#line 447 "../../freebsd/contrib/libpcap/grammar.y"
1624        { yyval.i = Q_TA; }
1625break;
1626case 63:
1627#line 450 "../../freebsd/contrib/libpcap/grammar.y"
1628        { yyval.i = Q_HOST; }
1629break;
1630case 64:
1631#line 451 "../../freebsd/contrib/libpcap/grammar.y"
1632        { yyval.i = Q_NET; }
1633break;
1634case 65:
1635#line 452 "../../freebsd/contrib/libpcap/grammar.y"
1636        { yyval.i = Q_PORT; }
1637break;
1638case 66:
1639#line 453 "../../freebsd/contrib/libpcap/grammar.y"
1640        { yyval.i = Q_PORTRANGE; }
1641break;
1642case 67:
1643#line 456 "../../freebsd/contrib/libpcap/grammar.y"
1644        { yyval.i = Q_GATEWAY; }
1645break;
1646case 68:
1647#line 458 "../../freebsd/contrib/libpcap/grammar.y"
1648        { yyval.i = Q_LINK; }
1649break;
1650case 69:
1651#line 459 "../../freebsd/contrib/libpcap/grammar.y"
1652        { yyval.i = Q_IP; }
1653break;
1654case 70:
1655#line 460 "../../freebsd/contrib/libpcap/grammar.y"
1656        { yyval.i = Q_ARP; }
1657break;
1658case 71:
1659#line 461 "../../freebsd/contrib/libpcap/grammar.y"
1660        { yyval.i = Q_RARP; }
1661break;
1662case 72:
1663#line 462 "../../freebsd/contrib/libpcap/grammar.y"
1664        { yyval.i = Q_SCTP; }
1665break;
1666case 73:
1667#line 463 "../../freebsd/contrib/libpcap/grammar.y"
1668        { yyval.i = Q_TCP; }
1669break;
1670case 74:
1671#line 464 "../../freebsd/contrib/libpcap/grammar.y"
1672        { yyval.i = Q_UDP; }
1673break;
1674case 75:
1675#line 465 "../../freebsd/contrib/libpcap/grammar.y"
1676        { yyval.i = Q_ICMP; }
1677break;
1678case 76:
1679#line 466 "../../freebsd/contrib/libpcap/grammar.y"
1680        { yyval.i = Q_IGMP; }
1681break;
1682case 77:
1683#line 467 "../../freebsd/contrib/libpcap/grammar.y"
1684        { yyval.i = Q_IGRP; }
1685break;
1686case 78:
1687#line 468 "../../freebsd/contrib/libpcap/grammar.y"
1688        { yyval.i = Q_PIM; }
1689break;
1690case 79:
1691#line 469 "../../freebsd/contrib/libpcap/grammar.y"
1692        { yyval.i = Q_VRRP; }
1693break;
1694case 80:
1695#line 470 "../../freebsd/contrib/libpcap/grammar.y"
1696        { yyval.i = Q_CARP; }
1697break;
1698case 81:
1699#line 471 "../../freebsd/contrib/libpcap/grammar.y"
1700        { yyval.i = Q_ATALK; }
1701break;
1702case 82:
1703#line 472 "../../freebsd/contrib/libpcap/grammar.y"
1704        { yyval.i = Q_AARP; }
1705break;
1706case 83:
1707#line 473 "../../freebsd/contrib/libpcap/grammar.y"
1708        { yyval.i = Q_DECNET; }
1709break;
1710case 84:
1711#line 474 "../../freebsd/contrib/libpcap/grammar.y"
1712        { yyval.i = Q_LAT; }
1713break;
1714case 85:
1715#line 475 "../../freebsd/contrib/libpcap/grammar.y"
1716        { yyval.i = Q_SCA; }
1717break;
1718case 86:
1719#line 476 "../../freebsd/contrib/libpcap/grammar.y"
1720        { yyval.i = Q_MOPDL; }
1721break;
1722case 87:
1723#line 477 "../../freebsd/contrib/libpcap/grammar.y"
1724        { yyval.i = Q_MOPRC; }
1725break;
1726case 88:
1727#line 478 "../../freebsd/contrib/libpcap/grammar.y"
1728        { yyval.i = Q_IPV6; }
1729break;
1730case 89:
1731#line 479 "../../freebsd/contrib/libpcap/grammar.y"
1732        { yyval.i = Q_ICMPV6; }
1733break;
1734case 90:
1735#line 480 "../../freebsd/contrib/libpcap/grammar.y"
1736        { yyval.i = Q_AH; }
1737break;
1738case 91:
1739#line 481 "../../freebsd/contrib/libpcap/grammar.y"
1740        { yyval.i = Q_ESP; }
1741break;
1742case 92:
1743#line 482 "../../freebsd/contrib/libpcap/grammar.y"
1744        { yyval.i = Q_ISO; }
1745break;
1746case 93:
1747#line 483 "../../freebsd/contrib/libpcap/grammar.y"
1748        { yyval.i = Q_ESIS; }
1749break;
1750case 94:
1751#line 484 "../../freebsd/contrib/libpcap/grammar.y"
1752        { yyval.i = Q_ISIS; }
1753break;
1754case 95:
1755#line 485 "../../freebsd/contrib/libpcap/grammar.y"
1756        { yyval.i = Q_ISIS_L1; }
1757break;
1758case 96:
1759#line 486 "../../freebsd/contrib/libpcap/grammar.y"
1760        { yyval.i = Q_ISIS_L2; }
1761break;
1762case 97:
1763#line 487 "../../freebsd/contrib/libpcap/grammar.y"
1764        { yyval.i = Q_ISIS_IIH; }
1765break;
1766case 98:
1767#line 488 "../../freebsd/contrib/libpcap/grammar.y"
1768        { yyval.i = Q_ISIS_LSP; }
1769break;
1770case 99:
1771#line 489 "../../freebsd/contrib/libpcap/grammar.y"
1772        { yyval.i = Q_ISIS_SNP; }
1773break;
1774case 100:
1775#line 490 "../../freebsd/contrib/libpcap/grammar.y"
1776        { yyval.i = Q_ISIS_PSNP; }
1777break;
1778case 101:
1779#line 491 "../../freebsd/contrib/libpcap/grammar.y"
1780        { yyval.i = Q_ISIS_CSNP; }
1781break;
1782case 102:
1783#line 492 "../../freebsd/contrib/libpcap/grammar.y"
1784        { yyval.i = Q_CLNP; }
1785break;
1786case 103:
1787#line 493 "../../freebsd/contrib/libpcap/grammar.y"
1788        { yyval.i = Q_STP; }
1789break;
1790case 104:
1791#line 494 "../../freebsd/contrib/libpcap/grammar.y"
1792        { yyval.i = Q_IPX; }
1793break;
1794case 105:
1795#line 495 "../../freebsd/contrib/libpcap/grammar.y"
1796        { yyval.i = Q_NETBEUI; }
1797break;
1798case 106:
1799#line 496 "../../freebsd/contrib/libpcap/grammar.y"
1800        { yyval.i = Q_RADIO; }
1801break;
1802case 107:
1803#line 498 "../../freebsd/contrib/libpcap/grammar.y"
1804        { yyval.rblk = gen_broadcast(yystack.l_mark[-1].i); }
1805break;
1806case 108:
1807#line 499 "../../freebsd/contrib/libpcap/grammar.y"
1808        { yyval.rblk = gen_multicast(yystack.l_mark[-1].i); }
1809break;
1810case 109:
1811#line 500 "../../freebsd/contrib/libpcap/grammar.y"
1812        { yyval.rblk = gen_less(yystack.l_mark[0].i); }
1813break;
1814case 110:
1815#line 501 "../../freebsd/contrib/libpcap/grammar.y"
1816        { yyval.rblk = gen_greater(yystack.l_mark[0].i); }
1817break;
1818case 111:
1819#line 502 "../../freebsd/contrib/libpcap/grammar.y"
1820        { yyval.rblk = gen_byteop(yystack.l_mark[-1].i, yystack.l_mark[-2].i, yystack.l_mark[0].i); }
1821break;
1822case 112:
1823#line 503 "../../freebsd/contrib/libpcap/grammar.y"
1824        { yyval.rblk = gen_inbound(0); }
1825break;
1826case 113:
1827#line 504 "../../freebsd/contrib/libpcap/grammar.y"
1828        { yyval.rblk = gen_inbound(1); }
1829break;
1830case 114:
1831#line 505 "../../freebsd/contrib/libpcap/grammar.y"
1832        { yyval.rblk = gen_vlan(yystack.l_mark[0].i); }
1833break;
1834case 115:
1835#line 506 "../../freebsd/contrib/libpcap/grammar.y"
1836        { yyval.rblk = gen_vlan(-1); }
1837break;
1838case 116:
1839#line 507 "../../freebsd/contrib/libpcap/grammar.y"
1840        { yyval.rblk = gen_mpls(yystack.l_mark[0].i); }
1841break;
1842case 117:
1843#line 508 "../../freebsd/contrib/libpcap/grammar.y"
1844        { yyval.rblk = gen_mpls(-1); }
1845break;
1846case 118:
1847#line 509 "../../freebsd/contrib/libpcap/grammar.y"
1848        { yyval.rblk = gen_pppoed(); }
1849break;
1850case 119:
1851#line 510 "../../freebsd/contrib/libpcap/grammar.y"
1852        { yyval.rblk = gen_pppoes(); }
1853break;
1854case 120:
1855#line 511 "../../freebsd/contrib/libpcap/grammar.y"
1856        { yyval.rblk = yystack.l_mark[0].rblk; }
1857break;
1858case 121:
1859#line 512 "../../freebsd/contrib/libpcap/grammar.y"
1860        { yyval.rblk = yystack.l_mark[0].rblk; }
1861break;
1862case 122:
1863#line 515 "../../freebsd/contrib/libpcap/grammar.y"
1864        { yyval.rblk = gen_pf_ifname(yystack.l_mark[0].s); }
1865break;
1866case 123:
1867#line 516 "../../freebsd/contrib/libpcap/grammar.y"
1868        { yyval.rblk = gen_pf_ruleset(yystack.l_mark[0].s); }
1869break;
1870case 124:
1871#line 517 "../../freebsd/contrib/libpcap/grammar.y"
1872        { yyval.rblk = gen_pf_rnr(yystack.l_mark[0].i); }
1873break;
1874case 125:
1875#line 518 "../../freebsd/contrib/libpcap/grammar.y"
1876        { yyval.rblk = gen_pf_srnr(yystack.l_mark[0].i); }
1877break;
1878case 126:
1879#line 519 "../../freebsd/contrib/libpcap/grammar.y"
1880        { yyval.rblk = gen_pf_reason(yystack.l_mark[0].i); }
1881break;
1882case 127:
1883#line 520 "../../freebsd/contrib/libpcap/grammar.y"
1884        { yyval.rblk = gen_pf_action(yystack.l_mark[0].i); }
1885break;
1886case 128:
1887#line 524 "../../freebsd/contrib/libpcap/grammar.y"
1888        { yyval.rblk = gen_p80211_type(yystack.l_mark[-2].i | yystack.l_mark[0].i,
1889                                        IEEE80211_FC0_TYPE_MASK |
1890                                        IEEE80211_FC0_SUBTYPE_MASK);
1891                                }
1892break;
1893case 129:
1894#line 528 "../../freebsd/contrib/libpcap/grammar.y"
1895        { yyval.rblk = gen_p80211_type(yystack.l_mark[0].i,
1896                                        IEEE80211_FC0_TYPE_MASK);
1897                                }
1898break;
1899case 130:
1900#line 531 "../../freebsd/contrib/libpcap/grammar.y"
1901        { yyval.rblk = gen_p80211_type(yystack.l_mark[0].i,
1902                                        IEEE80211_FC0_TYPE_MASK |
1903                                        IEEE80211_FC0_SUBTYPE_MASK);
1904                                }
1905break;
1906case 131:
1907#line 535 "../../freebsd/contrib/libpcap/grammar.y"
1908        { yyval.rblk = gen_p80211_fcdir(yystack.l_mark[0].i); }
1909break;
1910case 133:
1911#line 539 "../../freebsd/contrib/libpcap/grammar.y"
1912        { yyval.i = str2tok(yystack.l_mark[0].s, ieee80211_types);
1913                                  if (yyval.i == -1)
1914                                        bpf_error("unknown 802.11 type name");
1915                                }
1916break;
1917case 135:
1918#line 546 "../../freebsd/contrib/libpcap/grammar.y"
1919        { const struct tok *types = NULL;
1920                                  int i;
1921                                  for (i = 0;; i++) {
1922                                        if (ieee80211_type_subtypes[i].tok == NULL) {
1923                                                /* Ran out of types */
1924                                                bpf_error("unknown 802.11 type");
1925                                                break;
1926                                        }
1927                                        if (yystack.l_mark[-2].i == ieee80211_type_subtypes[i].type) {
1928                                                types = ieee80211_type_subtypes[i].tok;
1929                                                break;
1930                                        }
1931                                  }
1932
1933                                  yyval.i = str2tok(yystack.l_mark[0].s, types);
1934                                  if (yyval.i == -1)
1935                                        bpf_error("unknown 802.11 subtype name");
1936                                }
1937break;
1938case 136:
1939#line 566 "../../freebsd/contrib/libpcap/grammar.y"
1940        { int i;
1941                                  for (i = 0;; i++) {
1942                                        if (ieee80211_type_subtypes[i].tok == NULL) {
1943                                                /* Ran out of types */
1944                                                bpf_error("unknown 802.11 type name");
1945                                                break;
1946                                        }
1947                                        yyval.i = str2tok(yystack.l_mark[0].s, ieee80211_type_subtypes[i].tok);
1948                                        if (yyval.i != -1) {
1949                                                yyval.i |= ieee80211_type_subtypes[i].type;
1950                                                break;
1951                                        }
1952                                  }
1953                                }
1954break;
1955case 138:
1956#line 583 "../../freebsd/contrib/libpcap/grammar.y"
1957        { if (pcap_strcasecmp(yystack.l_mark[0].s, "nods") == 0)
1958                                        yyval.i = IEEE80211_FC1_DIR_NODS;
1959                                  else if (pcap_strcasecmp(yystack.l_mark[0].s, "tods") == 0)
1960                                        yyval.i = IEEE80211_FC1_DIR_TODS;
1961                                  else if (pcap_strcasecmp(yystack.l_mark[0].s, "fromds") == 0)
1962                                        yyval.i = IEEE80211_FC1_DIR_FROMDS;
1963                                  else if (pcap_strcasecmp(yystack.l_mark[0].s, "dstods") == 0)
1964                                        yyval.i = IEEE80211_FC1_DIR_DSTODS;
1965                                  else
1966                                        bpf_error("unknown 802.11 direction");
1967                                }
1968break;
1969case 139:
1970#line 596 "../../freebsd/contrib/libpcap/grammar.y"
1971        { yyval.i = yystack.l_mark[0].i; }
1972break;
1973case 140:
1974#line 597 "../../freebsd/contrib/libpcap/grammar.y"
1975        { yyval.i = pfreason_to_num(yystack.l_mark[0].s); }
1976break;
1977case 141:
1978#line 600 "../../freebsd/contrib/libpcap/grammar.y"
1979        { yyval.i = pfaction_to_num(yystack.l_mark[0].s); }
1980break;
1981case 142:
1982#line 603 "../../freebsd/contrib/libpcap/grammar.y"
1983        { yyval.i = BPF_JGT; }
1984break;
1985case 143:
1986#line 604 "../../freebsd/contrib/libpcap/grammar.y"
1987        { yyval.i = BPF_JGE; }
1988break;
1989case 144:
1990#line 605 "../../freebsd/contrib/libpcap/grammar.y"
1991        { yyval.i = BPF_JEQ; }
1992break;
1993case 145:
1994#line 607 "../../freebsd/contrib/libpcap/grammar.y"
1995        { yyval.i = BPF_JGT; }
1996break;
1997case 146:
1998#line 608 "../../freebsd/contrib/libpcap/grammar.y"
1999        { yyval.i = BPF_JGE; }
2000break;
2001case 147:
2002#line 609 "../../freebsd/contrib/libpcap/grammar.y"
2003        { yyval.i = BPF_JEQ; }
2004break;
2005case 148:
2006#line 611 "../../freebsd/contrib/libpcap/grammar.y"
2007        { yyval.a = gen_loadi(yystack.l_mark[0].i); }
2008break;
2009case 150:
2010#line 614 "../../freebsd/contrib/libpcap/grammar.y"
2011        { yyval.a = gen_load(yystack.l_mark[-3].i, yystack.l_mark[-1].a, 1); }
2012break;
2013case 151:
2014#line 615 "../../freebsd/contrib/libpcap/grammar.y"
2015        { yyval.a = gen_load(yystack.l_mark[-5].i, yystack.l_mark[-3].a, yystack.l_mark[-1].i); }
2016break;
2017case 152:
2018#line 616 "../../freebsd/contrib/libpcap/grammar.y"
2019        { yyval.a = gen_arth(BPF_ADD, yystack.l_mark[-2].a, yystack.l_mark[0].a); }
2020break;
2021case 153:
2022#line 617 "../../freebsd/contrib/libpcap/grammar.y"
2023        { yyval.a = gen_arth(BPF_SUB, yystack.l_mark[-2].a, yystack.l_mark[0].a); }
2024break;
2025case 154:
2026#line 618 "../../freebsd/contrib/libpcap/grammar.y"
2027        { yyval.a = gen_arth(BPF_MUL, yystack.l_mark[-2].a, yystack.l_mark[0].a); }
2028break;
2029case 155:
2030#line 619 "../../freebsd/contrib/libpcap/grammar.y"
2031        { yyval.a = gen_arth(BPF_DIV, yystack.l_mark[-2].a, yystack.l_mark[0].a); }
2032break;
2033case 156:
2034#line 620 "../../freebsd/contrib/libpcap/grammar.y"
2035        { yyval.a = gen_arth(BPF_AND, yystack.l_mark[-2].a, yystack.l_mark[0].a); }
2036break;
2037case 157:
2038#line 621 "../../freebsd/contrib/libpcap/grammar.y"
2039        { yyval.a = gen_arth(BPF_OR, yystack.l_mark[-2].a, yystack.l_mark[0].a); }
2040break;
2041case 158:
2042#line 622 "../../freebsd/contrib/libpcap/grammar.y"
2043        { yyval.a = gen_arth(BPF_LSH, yystack.l_mark[-2].a, yystack.l_mark[0].a); }
2044break;
2045case 159:
2046#line 623 "../../freebsd/contrib/libpcap/grammar.y"
2047        { yyval.a = gen_arth(BPF_RSH, yystack.l_mark[-2].a, yystack.l_mark[0].a); }
2048break;
2049case 160:
2050#line 624 "../../freebsd/contrib/libpcap/grammar.y"
2051        { yyval.a = gen_neg(yystack.l_mark[0].a); }
2052break;
2053case 161:
2054#line 625 "../../freebsd/contrib/libpcap/grammar.y"
2055        { yyval.a = yystack.l_mark[-1].a; }
2056break;
2057case 162:
2058#line 626 "../../freebsd/contrib/libpcap/grammar.y"
2059        { yyval.a = gen_loadlen(); }
2060break;
2061case 163:
2062#line 628 "../../freebsd/contrib/libpcap/grammar.y"
2063        { yyval.i = '&'; }
2064break;
2065case 164:
2066#line 629 "../../freebsd/contrib/libpcap/grammar.y"
2067        { yyval.i = '|'; }
2068break;
2069case 165:
2070#line 630 "../../freebsd/contrib/libpcap/grammar.y"
2071        { yyval.i = '<'; }
2072break;
2073case 166:
2074#line 631 "../../freebsd/contrib/libpcap/grammar.y"
2075        { yyval.i = '>'; }
2076break;
2077case 167:
2078#line 632 "../../freebsd/contrib/libpcap/grammar.y"
2079        { yyval.i = '='; }
2080break;
2081case 169:
2082#line 635 "../../freebsd/contrib/libpcap/grammar.y"
2083        { yyval.i = yystack.l_mark[-1].i; }
2084break;
2085case 170:
2086#line 637 "../../freebsd/contrib/libpcap/grammar.y"
2087        { yyval.i = A_LANE; }
2088break;
2089case 171:
2090#line 638 "../../freebsd/contrib/libpcap/grammar.y"
2091        { yyval.i = A_LLC; }
2092break;
2093case 172:
2094#line 639 "../../freebsd/contrib/libpcap/grammar.y"
2095        { yyval.i = A_METAC;    }
2096break;
2097case 173:
2098#line 640 "../../freebsd/contrib/libpcap/grammar.y"
2099        { yyval.i = A_BCC; }
2100break;
2101case 174:
2102#line 641 "../../freebsd/contrib/libpcap/grammar.y"
2103        { yyval.i = A_OAMF4EC; }
2104break;
2105case 175:
2106#line 642 "../../freebsd/contrib/libpcap/grammar.y"
2107        { yyval.i = A_OAMF4SC; }
2108break;
2109case 176:
2110#line 643 "../../freebsd/contrib/libpcap/grammar.y"
2111        { yyval.i = A_SC; }
2112break;
2113case 177:
2114#line 644 "../../freebsd/contrib/libpcap/grammar.y"
2115        { yyval.i = A_ILMIC; }
2116break;
2117case 178:
2118#line 646 "../../freebsd/contrib/libpcap/grammar.y"
2119        { yyval.i = A_OAM; }
2120break;
2121case 179:
2122#line 647 "../../freebsd/contrib/libpcap/grammar.y"
2123        { yyval.i = A_OAMF4; }
2124break;
2125case 180:
2126#line 648 "../../freebsd/contrib/libpcap/grammar.y"
2127        { yyval.i = A_CONNECTMSG; }
2128break;
2129case 181:
2130#line 649 "../../freebsd/contrib/libpcap/grammar.y"
2131        { yyval.i = A_METACONNECT; }
2132break;
2133case 182:
2134#line 652 "../../freebsd/contrib/libpcap/grammar.y"
2135        { yyval.blk.atmfieldtype = A_VPI; }
2136break;
2137case 183:
2138#line 653 "../../freebsd/contrib/libpcap/grammar.y"
2139        { yyval.blk.atmfieldtype = A_VCI; }
2140break;
2141case 185:
2142#line 656 "../../freebsd/contrib/libpcap/grammar.y"
2143        { yyval.blk.b = gen_atmfield_code(yystack.l_mark[-2].blk.atmfieldtype, (bpf_int32)yystack.l_mark[0].i, (bpf_u_int32)yystack.l_mark[-1].i, 0); }
2144break;
2145case 186:
2146#line 657 "../../freebsd/contrib/libpcap/grammar.y"
2147        { yyval.blk.b = gen_atmfield_code(yystack.l_mark[-2].blk.atmfieldtype, (bpf_int32)yystack.l_mark[0].i, (bpf_u_int32)yystack.l_mark[-1].i, 1); }
2148break;
2149case 187:
2150#line 658 "../../freebsd/contrib/libpcap/grammar.y"
2151        { yyval.blk.b = yystack.l_mark[-1].blk.b; yyval.blk.q = qerr; }
2152break;
2153case 188:
2154#line 660 "../../freebsd/contrib/libpcap/grammar.y"
2155        {
2156        yyval.blk.atmfieldtype = yystack.l_mark[-1].blk.atmfieldtype;
2157        if (yyval.blk.atmfieldtype == A_VPI ||
2158            yyval.blk.atmfieldtype == A_VCI)
2159                yyval.blk.b = gen_atmfield_code(yyval.blk.atmfieldtype, (bpf_int32) yystack.l_mark[0].i, BPF_JEQ, 0);
2160        }
2161break;
2162case 190:
2163#line 668 "../../freebsd/contrib/libpcap/grammar.y"
2164        { gen_or(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; }
2165break;
2166case 191:
2167#line 671 "../../freebsd/contrib/libpcap/grammar.y"
2168        { yyval.i = M_FISU; }
2169break;
2170case 192:
2171#line 672 "../../freebsd/contrib/libpcap/grammar.y"
2172        { yyval.i = M_LSSU; }
2173break;
2174case 193:
2175#line 673 "../../freebsd/contrib/libpcap/grammar.y"
2176        { yyval.i = M_MSU; }
2177break;
2178case 194:
2179#line 676 "../../freebsd/contrib/libpcap/grammar.y"
2180        { yyval.blk.mtp3fieldtype = M_SIO; }
2181break;
2182case 195:
2183#line 677 "../../freebsd/contrib/libpcap/grammar.y"
2184        { yyval.blk.mtp3fieldtype = M_OPC; }
2185break;
2186case 196:
2187#line 678 "../../freebsd/contrib/libpcap/grammar.y"
2188        { yyval.blk.mtp3fieldtype = M_DPC; }
2189break;
2190case 197:
2191#line 679 "../../freebsd/contrib/libpcap/grammar.y"
2192        { yyval.blk.mtp3fieldtype = M_SLS; }
2193break;
2194case 199:
2195#line 682 "../../freebsd/contrib/libpcap/grammar.y"
2196        { yyval.blk.b = gen_mtp3field_code(yystack.l_mark[-2].blk.mtp3fieldtype, (u_int)yystack.l_mark[0].i, (u_int)yystack.l_mark[-1].i, 0); }
2197break;
2198case 200:
2199#line 683 "../../freebsd/contrib/libpcap/grammar.y"
2200        { yyval.blk.b = gen_mtp3field_code(yystack.l_mark[-2].blk.mtp3fieldtype, (u_int)yystack.l_mark[0].i, (u_int)yystack.l_mark[-1].i, 1); }
2201break;
2202case 201:
2203#line 684 "../../freebsd/contrib/libpcap/grammar.y"
2204        { yyval.blk.b = yystack.l_mark[-1].blk.b; yyval.blk.q = qerr; }
2205break;
2206case 202:
2207#line 686 "../../freebsd/contrib/libpcap/grammar.y"
2208        {
2209        yyval.blk.mtp3fieldtype = yystack.l_mark[-1].blk.mtp3fieldtype;
2210        if (yyval.blk.mtp3fieldtype == M_SIO ||
2211            yyval.blk.mtp3fieldtype == M_OPC ||
2212            yyval.blk.mtp3fieldtype == M_DPC ||
2213            yyval.blk.mtp3fieldtype == M_SLS )
2214                yyval.blk.b = gen_mtp3field_code(yyval.blk.mtp3fieldtype, (u_int) yystack.l_mark[0].i, BPF_JEQ, 0);
2215        }
2216break;
2217case 204:
2218#line 696 "../../freebsd/contrib/libpcap/grammar.y"
2219        { gen_or(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; }
2220break;
2221#line 2222 "pcap.tab.c"
2222    }
2223    yystack.s_mark -= yym;
2224    yystate = *yystack.s_mark;
2225    yystack.l_mark -= yym;
2226    yym = yylhs[yyn];
2227    if (yystate == 0 && yym == 0)
2228    {
2229#if YYDEBUG
2230        if (yydebug)
2231            printf("%sdebug: after reduction, shifting from state 0 to\
2232 state %d\n", YYPREFIX, YYFINAL);
2233#endif
2234        yystate = YYFINAL;
2235        *++yystack.s_mark = YYFINAL;
2236        *++yystack.l_mark = yyval;
2237        if (yychar < 0)
2238        {
2239            if ((yychar = YYLEX) < 0) yychar = YYEOF;
2240#if YYDEBUG
2241            if (yydebug)
2242            {
2243                yys = yyname[YYTRANSLATE(yychar)];
2244                printf("%sdebug: state %d, reading %d (%s)\n",
2245                        YYPREFIX, YYFINAL, yychar, yys);
2246            }
2247#endif
2248        }
2249        if (yychar == YYEOF) goto yyaccept;
2250        goto yyloop;
2251    }
2252    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
2253            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
2254        yystate = yytable[yyn];
2255    else
2256        yystate = yydgoto[yym];
2257#if YYDEBUG
2258    if (yydebug)
2259        printf("%sdebug: after reduction, shifting from state %d \
2260to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
2261#endif
2262    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
2263    {
2264        goto yyoverflow;
2265    }
2266    *++yystack.s_mark = (YYINT) yystate;
2267    *++yystack.l_mark = yyval;
2268    goto yyloop;
2269
2270yyoverflow:
2271    YYERROR_CALL("yacc stack overflow");
2272
2273yyabort:
2274    yyfreestack(&yystack);
2275    return (1);
2276
2277yyaccept:
2278    yyfreestack(&yystack);
2279    return (0);
2280}
Note: See TracBrowser for help on using the repository browser.