/* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 #define YYMINOR 9 #define YYPATCH 20170201 #define YYEMPTY (-1) #define yyclearin (yychar = YYEMPTY) #define yyerrok (yyerrflag = 0) #define YYRECOVERING() (yyerrflag != 0) #define YYENOMEM (-2) #define YYEOF 0 #ifndef yyparse #define yyparse pcap_parse #endif /* yyparse */ #ifndef yylex #define yylex pcap_lex #endif /* yylex */ #ifndef yyerror #define yyerror pcap_error #endif /* yyerror */ #ifndef yychar #define yychar pcap_char #endif /* yychar */ #ifndef yyval #define yyval pcap_val #endif /* yyval */ #ifndef yylval #define yylval pcap_lval #endif /* yylval */ #ifndef yydebug #define yydebug pcap_debug #endif /* yydebug */ #ifndef yynerrs #define yynerrs pcap_nerrs #endif /* yynerrs */ #ifndef yyerrflag #define yyerrflag pcap_errflag #endif /* yyerrflag */ #ifndef yylhs #define yylhs pcap_lhs #endif /* yylhs */ #ifndef yylen #define yylen pcap_len #endif /* yylen */ #ifndef yydefred #define yydefred pcap_defred #endif /* yydefred */ #ifndef yydgoto #define yydgoto pcap_dgoto #endif /* yydgoto */ #ifndef yysindex #define yysindex pcap_sindex #endif /* yysindex */ #ifndef yyrindex #define yyrindex pcap_rindex #endif /* yyrindex */ #ifndef yygindex #define yygindex pcap_gindex #endif /* yygindex */ #ifndef yytable #define yytable pcap_table #endif /* yytable */ #ifndef yycheck #define yycheck pcap_check #endif /* yycheck */ #ifndef yyname #define yyname pcap_name #endif /* yyname */ #ifndef yyrule #define yyrule pcap_rule #endif /* yyrule */ #define YYPREFIX "pcap_" #define YYPURE 1 #line 27 "grammar.y" /* * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that: (1) source code distributions * retain the above copyright notice and this paragraph in its entirety, (2) * distributions including binary code include the above copyright notice and * this paragraph in its entirety in the documentation or other materials * provided with the distribution, and (3) all advertising materials mentioning * features or use of this software display the following acknowledgement: * ``This product includes software developed by the University of California, * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of * the University nor the names of its contributors may be used to endorse * or promote products derived from this software without specific prior * written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * */ #ifdef HAVE_CONFIG_H #include #endif #include #ifndef _WIN32 #include #include #if __STDC__ struct mbuf; struct rtentry; #endif #include #include #endif /* _WIN32 */ #include #include "diag-control.h" #include "pcap-int.h" #include "gencode.h" #include "grammar.h" #include "scanner.h" #ifdef HAVE_NET_PFVAR_H #include #include #include #endif #include "llc.h" #include "ieee80211.h" #include #ifdef HAVE_OS_PROTO_H #include "os-proto.h" #endif #ifdef YYBYACC /* * Both Berkeley YACC and Bison define yydebug (under whatever name * it has) as a global, but Bison does so only if YYDEBUG is defined. * Berkeley YACC define it even if YYDEBUG isn't defined; declare it * here to suppress a warning. */ #if !defined(YYDEBUG) extern int yydebug; #endif /* * In Berkeley YACC, yynerrs (under whatever name it has) is global, * even if it's building a reentrant parser. In Bison, it's local * in reentrant parsers. * * Declare it to squelch a warning. */ extern int yynerrs; #endif #define QSET(q, p, d, a) (q).proto = (unsigned char)(p),\ (q).dir = (unsigned char)(d),\ (q).addr = (unsigned char)(a) struct tok { int v; /* value */ const char *s; /* string */ }; static const struct tok ieee80211_types[] = { { IEEE80211_FC0_TYPE_DATA, "data" }, { IEEE80211_FC0_TYPE_MGT, "mgt" }, { IEEE80211_FC0_TYPE_MGT, "management" }, { IEEE80211_FC0_TYPE_CTL, "ctl" }, { IEEE80211_FC0_TYPE_CTL, "control" }, { 0, NULL } }; static const struct tok ieee80211_mgt_subtypes[] = { { IEEE80211_FC0_SUBTYPE_ASSOC_REQ, "assocreq" }, { IEEE80211_FC0_SUBTYPE_ASSOC_REQ, "assoc-req" }, { IEEE80211_FC0_SUBTYPE_ASSOC_RESP, "assocresp" }, { IEEE80211_FC0_SUBTYPE_ASSOC_RESP, "assoc-resp" }, { IEEE80211_FC0_SUBTYPE_REASSOC_REQ, "reassocreq" }, { IEEE80211_FC0_SUBTYPE_REASSOC_REQ, "reassoc-req" }, { IEEE80211_FC0_SUBTYPE_REASSOC_RESP, "reassocresp" }, { IEEE80211_FC0_SUBTYPE_REASSOC_RESP, "reassoc-resp" }, { IEEE80211_FC0_SUBTYPE_PROBE_REQ, "probereq" }, { IEEE80211_FC0_SUBTYPE_PROBE_REQ, "probe-req" }, { IEEE80211_FC0_SUBTYPE_PROBE_RESP, "proberesp" }, { IEEE80211_FC0_SUBTYPE_PROBE_RESP, "probe-resp" }, { IEEE80211_FC0_SUBTYPE_BEACON, "beacon" }, { IEEE80211_FC0_SUBTYPE_ATIM, "atim" }, { IEEE80211_FC0_SUBTYPE_DISASSOC, "disassoc" }, { IEEE80211_FC0_SUBTYPE_DISASSOC, "disassociation" }, { IEEE80211_FC0_SUBTYPE_AUTH, "auth" }, { IEEE80211_FC0_SUBTYPE_AUTH, "authentication" }, { IEEE80211_FC0_SUBTYPE_DEAUTH, "deauth" }, { IEEE80211_FC0_SUBTYPE_DEAUTH, "deauthentication" }, { 0, NULL } }; static const struct tok ieee80211_ctl_subtypes[] = { { IEEE80211_FC0_SUBTYPE_PS_POLL, "ps-poll" }, { IEEE80211_FC0_SUBTYPE_RTS, "rts" }, { IEEE80211_FC0_SUBTYPE_CTS, "cts" }, { IEEE80211_FC0_SUBTYPE_ACK, "ack" }, { IEEE80211_FC0_SUBTYPE_CF_END, "cf-end" }, { IEEE80211_FC0_SUBTYPE_CF_END_ACK, "cf-end-ack" }, { 0, NULL } }; static const struct tok ieee80211_data_subtypes[] = { { IEEE80211_FC0_SUBTYPE_DATA, "data" }, { IEEE80211_FC0_SUBTYPE_CF_ACK, "data-cf-ack" }, { IEEE80211_FC0_SUBTYPE_CF_POLL, "data-cf-poll" }, { IEEE80211_FC0_SUBTYPE_CF_ACPL, "data-cf-ack-poll" }, { IEEE80211_FC0_SUBTYPE_NODATA, "null" }, { IEEE80211_FC0_SUBTYPE_NODATA_CF_ACK, "cf-ack" }, { IEEE80211_FC0_SUBTYPE_NODATA_CF_POLL, "cf-poll" }, { IEEE80211_FC0_SUBTYPE_NODATA_CF_ACPL, "cf-ack-poll" }, { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_DATA, "qos-data" }, { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_CF_ACK, "qos-data-cf-ack" }, { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_CF_POLL, "qos-data-cf-poll" }, { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_CF_ACPL, "qos-data-cf-ack-poll" }, { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_NODATA, "qos" }, { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_NODATA_CF_POLL, "qos-cf-poll" }, { IEEE80211_FC0_SUBTYPE_QOS|IEEE80211_FC0_SUBTYPE_NODATA_CF_ACPL, "qos-cf-ack-poll" }, { 0, NULL } }; static const struct tok llc_s_subtypes[] = { { LLC_RR, "rr" }, { LLC_RNR, "rnr" }, { LLC_REJ, "rej" }, { 0, NULL } }; static const struct tok llc_u_subtypes[] = { { LLC_UI, "ui" }, { LLC_UA, "ua" }, { LLC_DISC, "disc" }, { LLC_DM, "dm" }, { LLC_SABME, "sabme" }, { LLC_TEST, "test" }, { LLC_XID, "xid" }, { LLC_FRMR, "frmr" }, { 0, NULL } }; struct type2tok { int type; const struct tok *tok; }; static const struct type2tok ieee80211_type_subtypes[] = { { IEEE80211_FC0_TYPE_MGT, ieee80211_mgt_subtypes }, { IEEE80211_FC0_TYPE_CTL, ieee80211_ctl_subtypes }, { IEEE80211_FC0_TYPE_DATA, ieee80211_data_subtypes }, { 0, NULL } }; static int str2tok(const char *str, const struct tok *toks) { int i; for (i = 0; toks[i].s != NULL; i++) { if (pcap_strcasecmp(toks[i].s, str) == 0) return (toks[i].v); } return (-1); } static struct qual qerr = { Q_UNDEF, Q_UNDEF, Q_UNDEF, Q_UNDEF }; static PCAP_NORETURN_DEF void yyerror(void *yyscanner _U_, compiler_state_t *cstate, const char *msg) { bpf_syntax_error(cstate, msg); /* NOTREACHED */ } #ifdef HAVE_NET_PFVAR_H static int pfreason_to_num(compiler_state_t *cstate, const char *reason) { const char *reasons[] = PFRES_NAMES; int i; for (i = 0; reasons[i]; i++) { if (pcap_strcasecmp(reason, reasons[i]) == 0) return (i); } bpf_error(cstate, "unknown PF reason"); /*NOTREACHED*/ } static int pfaction_to_num(compiler_state_t *cstate, const char *action) { if (pcap_strcasecmp(action, "pass") == 0 || pcap_strcasecmp(action, "accept") == 0) return (PF_PASS); else if (pcap_strcasecmp(action, "drop") == 0 || pcap_strcasecmp(action, "block") == 0) return (PF_DROP); #if HAVE_PF_NAT_THROUGH_PF_NORDR else if (pcap_strcasecmp(action, "rdr") == 0) return (PF_RDR); else if (pcap_strcasecmp(action, "nat") == 0) return (PF_NAT); else if (pcap_strcasecmp(action, "binat") == 0) return (PF_BINAT); else if (pcap_strcasecmp(action, "nordr") == 0) return (PF_NORDR); #endif else { bpf_error(cstate, "unknown PF action"); /*NOTREACHED*/ } } #else /* !HAVE_NET_PFVAR_H */ static PCAP_NORETURN_DEF int pfreason_to_num(compiler_state_t *cstate, const char *reason _U_) { bpf_error(cstate, "libpcap was compiled on a machine without pf support"); /*NOTREACHED*/ } static PCAP_NORETURN_DEF int pfaction_to_num(compiler_state_t *cstate, const char *action _U_) { bpf_error(cstate, "libpcap was compiled on a machine without pf support"); /*NOTREACHED*/ } #endif /* HAVE_NET_PFVAR_H */ DIAG_OFF_BISON_BYACC #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #line 286 "grammar.y" typedef union { int i; bpf_u_int32 h; u_char *e; char *s; struct stmt *stmt; struct arth *a; struct { struct qual q; int atmfieldtype; int mtp3fieldtype; struct block *b; } blk; struct block *rblk; } YYSTYPE; #endif /* !YYSTYPE_IS_DECLARED */ #line 382 "grammar.c" /* compatibility with bison */ #ifdef YYPARSE_PARAM /* compatibility with FreeBSD */ # ifdef YYPARSE_PARAM_TYPE # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) # else # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) # endif #else # define YYPARSE_DECL() yyparse(void *yyscanner, compiler_state_t *cstate) #endif /* Parameters sent to lex. */ #ifdef YYLEX_PARAM # ifdef YYLEX_PARAM_TYPE # define YYLEX_DECL() yylex(YYSTYPE *yylval, YYLEX_PARAM_TYPE YYLEX_PARAM) # else # define YYLEX_DECL() yylex(YYSTYPE *yylval, void * YYLEX_PARAM) # endif # define YYLEX yylex(&yylval, YYLEX_PARAM) #else # define YYLEX_DECL() yylex(YYSTYPE *yylval, void *yyscanner) # define YYLEX yylex(&yylval, yyscanner) #endif /* Parameters sent to yyerror. */ #ifndef YYERROR_DECL #define YYERROR_DECL() yyerror(void *yyscanner, compiler_state_t *cstate, const char *s) #endif #ifndef YYERROR_CALL #define YYERROR_CALL(msg) yyerror(yyscanner, cstate, msg) #endif extern int YYPARSE_DECL(); #define DST 257 #define SRC 258 #define HOST 259 #define GATEWAY 260 #define NET 261 #define NETMASK 262 #define PORT 263 #define PORTRANGE 264 #define LESS 265 #define GREATER 266 #define PROTO 267 #define PROTOCHAIN 268 #define CBYTE 269 #define ARP 270 #define RARP 271 #define IP 272 #define SCTP 273 #define TCP 274 #define UDP 275 #define ICMP 276 #define IGMP 277 #define IGRP 278 #define PIM 279 #define VRRP 280 #define CARP 281 #define ATALK 282 #define AARP 283 #define DECNET 284 #define LAT 285 #define SCA 286 #define MOPRC 287 #define MOPDL 288 #define TK_BROADCAST 289 #define TK_MULTICAST 290 #define NUM 291 #define INBOUND 292 #define OUTBOUND 293 #define PF_IFNAME 294 #define PF_RSET 295 #define PF_RNR 296 #define PF_SRNR 297 #define PF_REASON 298 #define PF_ACTION 299 #define TYPE 300 #define SUBTYPE 301 #define DIR 302 #define ADDR1 303 #define ADDR2 304 #define ADDR3 305 #define ADDR4 306 #define RA 307 #define TA 308 #define LINK 309 #define GEQ 310 #define LEQ 311 #define NEQ 312 #define ID 313 #define EID 314 #define HID 315 #define HID6 316 #define AID 317 #define LSH 318 #define RSH 319 #define LEN 320 #define IPV6 321 #define ICMPV6 322 #define AH 323 #define ESP 324 #define VLAN 325 #define MPLS 326 #define PPPOED 327 #define PPPOES 328 #define GENEVE 329 #define ISO 330 #define ESIS 331 #define CLNP 332 #define ISIS 333 #define L1 334 #define L2 335 #define IIH 336 #define LSP 337 #define SNP 338 #define CSNP 339 #define PSNP 340 #define STP 341 #define IPX 342 #define NETBEUI 343 #define LANE 344 #define LLC 345 #define METAC 346 #define BCC 347 #define SC 348 #define ILMIC 349 #define OAMF4EC 350 #define OAMF4SC 351 #define OAM 352 #define OAMF4 353 #define CONNECTMSG 354 #define METACONNECT 355 #define VPI 356 #define VCI 357 #define RADIO 358 #define FISU 359 #define LSSU 360 #define MSU 361 #define HFISU 362 #define HLSSU 363 #define HMSU 364 #define SIO 365 #define OPC 366 #define DPC 367 #define SLS 368 #define HSIO 369 #define HOPC 370 #define HDPC 371 #define HSLS 372 #define OR 373 #define AND 374 #define UMINUS 375 #define YYERRCODE 256 typedef int YYINT; static const YYINT pcap_lhs[] = { -1, 0, 0, 24, 1, 1, 1, 1, 1, 20, 21, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 23, 22, 4, 4, 4, 7, 7, 5, 5, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 42, 42, 43, 43, 44, 28, 28, 28, 45, 45, 41, 41, 40, 18, 18, 18, 19, 19, 19, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 17, 17, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 33, 33, 33, 33, 32, 34, 34, 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, 36, 36, 38, 38, 38, 38, 37, 39, 39, }; static const YYINT pcap_len[] = { 2, 2, 1, 0, 1, 3, 3, 3, 3, 1, 1, 1, 1, 3, 1, 3, 3, 1, 3, 1, 1, 1, 2, 1, 1, 1, 3, 3, 1, 1, 1, 2, 3, 2, 2, 2, 2, 2, 2, 3, 1, 3, 3, 1, 1, 1, 2, 1, 2, 1, 0, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 1, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 1, 1, 3, }; static const YYINT pcap_defred[] = { 3, 0, 0, 0, 0, 0, 70, 71, 69, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 86, 177, 112, 113, 0, 0, 0, 0, 0, 0, 68, 171, 88, 89, 90, 91, 0, 0, 118, 0, 0, 92, 93, 102, 94, 95, 96, 97, 98, 99, 101, 100, 103, 104, 105, 179, 0, 180, 181, 184, 185, 182, 183, 186, 187, 188, 189, 190, 191, 106, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 23, 0, 24, 0, 4, 30, 0, 0, 0, 156, 0, 155, 0, 0, 43, 123, 125, 44, 45, 0, 47, 0, 109, 110, 0, 126, 127, 128, 129, 146, 147, 130, 148, 131, 114, 0, 116, 119, 121, 143, 142, 0, 0, 0, 10, 9, 0, 0, 14, 20, 0, 0, 21, 38, 11, 12, 0, 0, 0, 0, 63, 67, 64, 65, 66, 35, 36, 107, 108, 0, 0, 0, 57, 58, 59, 60, 61, 62, 0, 34, 37, 124, 150, 152, 154, 0, 0, 0, 0, 0, 0, 0, 0, 149, 151, 153, 0, 0, 0, 0, 0, 0, 0, 0, 31, 196, 0, 0, 0, 192, 46, 217, 0, 0, 0, 213, 48, 173, 172, 175, 176, 174, 0, 0, 0, 6, 5, 0, 0, 0, 8, 7, 0, 0, 0, 25, 0, 0, 0, 22, 0, 0, 0, 0, 136, 137, 0, 140, 134, 144, 145, 135, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 170, 178, 193, 194, 197, 0, 214, 215, 218, 0, 111, 0, 16, 15, 18, 13, 0, 0, 54, 56, 53, 55, 0, 157, 0, 195, 0, 216, 0, 26, 27, 138, 139, 132, 0, 198, 219, 158, }; static const YYINT pcap_dgoto[] = { 1, 189, 227, 142, 224, 92, 93, 225, 94, 95, 166, 167, 168, 96, 97, 210, 130, 99, 186, 187, 134, 135, 131, 145, 2, 102, 103, 169, 104, 105, 106, 107, 197, 198, 260, 108, 109, 203, 204, 264, 121, 119, 234, 288, 236, 239, }; static const YYINT pcap_sindex[] = { 0, 0, 431, -281, -278, -273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -279, -259, -221, -186, -286, -216, 0, 0, 0, 0, 0, 0, -24, -24, 0, -24, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 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, 653, 0, -336, 0, 0, -21, 936, 855, 0, 16, 0, 431, 431, 0, 0, 0, 0, 0, 237, 0, 782, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -14, 16, 653, 0, 0, 320, 320, 0, 0, -30, 64, 0, 0, 0, 0, -21, -21, -245, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, -280, -191, -270, 0, 0, 0, 0, 0, 0, -118, 0, 0, 0, 0, 0, 0, 653, 653, 653, 653, 653, 653, 653, 653, 0, 0, 0, 653, 653, 653, 653, 653, -37, 85, 90, 0, 0, -153, -141, -135, 0, 0, 0, -128, -125, -122, 0, 0, 0, 0, 0, 0, 0, -114, 90, 159, 0, 0, 0, 320, 320, 0, 0, -142, -110, -100, 0, 152, -336, 90, 0, -63, -58, -52, -49, 0, 0, -76, 0, 0, 0, 0, 0, 0, 443, 443, 184, 529, 336, 336, -14, -14, 159, 159, 159, 159, 972, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, -34, 0, 90, 0, 0, 0, 0, -21, -21, 0, 0, 0, 0, -262, 0, -61, 0, -135, 0, -122, 0, 0, 0, 0, 0, 135, 0, 0, 0, }; static const YYINT pcap_rindex[] = { 0, 0, 573, 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, 6, 8, 0, 25, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 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, 233, 0, 0, 0, 0, 0, 0, 1, 0, 992, 992, 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, 3, 0, 0, 0, 0, 992, 992, 0, 0, 67, 72, 0, 0, 0, 0, 0, 0, 248, 591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 905, 960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 992, 992, 0, 0, 0, 0, 0, 0, -185, 0, -159, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 30, 124, 158, 149, 99, 110, 40, 74, 183, 194, 84, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 767, 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, }; static const YYINT pcap_gindex[] = { 0, 234, 229, -113, 0, -99, 0, 0, 0, 0, 0, 71, 0, 944, 47, 0, 112, 1012, -83, -3, 14, -205, 1004, 811, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, }; #define YYTABLESIZE 1300 static const YYINT pcap_table[] = { 280, 40, 192, 169, 254, 117, 115, 282, 117, 259, 110, 232, 88, 111, 263, 12, 90, 221, 112, 90, 272, 237, 127, 184, 194, 120, 200, 118, 122, 286, 167, 223, 141, 233, 113, 214, 219, 132, 133, 128, 161, 169, 40, 238, 169, 169, 169, 115, 169, 117, 169, 287, 155, 155, 114, 281, 12, 155, 155, 283, 155, 169, 155, 169, 169, 169, 120, 17, 167, 122, 115, 167, 19, 141, 162, 155, 155, 155, 161, 133, 185, 161, 161, 161, 41, 161, 33, 161, 167, 42, 167, 167, 167, 33, 290, 291, 169, 120, 161, 159, 161, 161, 161, 223, 195, 116, 201, 188, 17, 155, 160, 222, 162, 19, 98, 162, 162, 162, 192, 162, 133, 162, 235, 167, 168, 41, 255, 169, 228, 229, 42, 256, 162, 161, 162, 162, 162, 159, 257, 155, 159, 148, 159, 150, 159, 151, 152, 190, 160, 164, 258, 160, 206, 160, 167, 160, 193, 159, 165, 159, 159, 159, 168, 261, 161, 168, 262, 162, 160, 199, 160, 160, 160, 267, 209, 208, 207, 265, 190, 230, 231, 268, 168, 163, 168, 168, 168, 164, 29, 29, 164, 269, 159, 270, 166, 273, 184, 176, 162, 165, 274, 179, 177, 160, 178, 275, 180, 164, 276, 164, 164, 164, 98, 98, 28, 28, 165, 168, 165, 165, 165, 184, 176, 159, 163, 277, 179, 177, 292, 178, 289, 180, 220, 1, 160, 166, 91, 240, 205, 271, 0, 163, 164, 163, 163, 163, 98, 98, 168, 0, 0, 165, 166, 185, 166, 166, 166, 0, 49, 49, 49, 49, 49, 190, 49, 49, 0, 25, 49, 49, 25, 0, 0, 164, 0, 0, 163, 90, 185, 0, 0, 52, 165, 175, 0, 0, 0, 166, 52, 0, 49, 49, 136, 137, 138, 139, 140, 183, 182, 181, 0, 49, 49, 49, 49, 49, 49, 49, 49, 49, 0, 0, 0, 169, 169, 169, 0, 0, 0, 0, 0, 169, 169, 141, 0, 155, 155, 155, 98, 98, 0, 0, 132, 155, 155, 0, 132, 133, 0, 132, 167, 167, 167, 0, 33, 0, 0, 0, 167, 167, 161, 161, 161, 88, 0, 0, 0, 0, 161, 161, 90, 0, 0, 213, 218, 89, 33, 33, 33, 33, 33, 0, 0, 184, 40, 40, 169, 169, 179, 115, 115, 117, 117, 180, 162, 162, 162, 0, 12, 12, 0, 0, 162, 162, 0, 0, 0, 0, 120, 120, 0, 122, 122, 167, 167, 141, 141, 0, 0, 159, 159, 159, 0, 161, 161, 0, 0, 159, 159, 0, 160, 160, 160, 0, 0, 0, 0, 0, 160, 160, 185, 0, 0, 0, 168, 168, 168, 0, 0, 0, 17, 17, 168, 168, 0, 19, 19, 162, 162, 0, 0, 0, 133, 133, 0, 0, 0, 41, 41, 164, 164, 164, 42, 42, 88, 0, 0, 0, 165, 165, 165, 90, 159, 159, 0, 0, 89, 173, 174, 0, 184, 0, 0, 160, 160, 179, 177, 0, 178, 0, 180, 0, 0, 163, 163, 163, 0, 168, 168, 0, 284, 285, 173, 174, 166, 166, 166, 52, 0, 52, 0, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 164, 0, 0, 0, 0, 193, 0, 0, 165, 165, 0, 0, 0, 0, 185, 0, 52, 0, 0, 0, 0, 0, 0, 0, 170, 171, 172, 0, 0, 0, 0, 0, 0, 163, 163, 0, 0, 0, 52, 52, 52, 52, 52, 184, 166, 166, 0, 0, 179, 177, 2, 178, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 185, 51, 0, 0, 0, 0, 34, 0, 51, 0, 136, 137, 138, 139, 140, 0, 0, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 90, 0, 0, 3, 4, 89, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 155, 155, 0, 0, 0, 155, 155, 0, 155, 101, 155, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 155, 155, 155, 50, 50, 50, 50, 50, 0, 50, 50, 0, 0, 50, 50, 183, 182, 181, 0, 0, 173, 174, 0, 51, 0, 51, 0, 51, 51, 0, 0, 0, 0, 0, 155, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0, 155, 184, 176, 0, 0, 0, 179, 177, 0, 178, 0, 180, 0, 51, 51, 51, 51, 51, 0, 0, 101, 101, 0, 0, 183, 182, 181, 0, 0, 0, 0, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 156, 156, 25, 217, 217, 156, 156, 185, 156, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 156, 156, 156, 0, 0, 0, 0, 0, 35, 36, 37, 38, 39, 0, 175, 0, 0, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 155, 155, 156, 0, 0, 155, 155, 0, 155, 100, 155, 0, 184, 176, 73, 0, 0, 179, 177, 0, 178, 0, 180, 155, 155, 155, 0, 0, 0, 0, 217, 217, 156, 279, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 123, 0, 123, 123, 0, 0, 0, 122, 124, 155, 125, 126, 0, 0, 0, 0, 0, 0, 0, 0, 278, 185, 0, 0, 0, 0, 0, 0, 199, 0, 212, 0, 155, 155, 155, 0, 0, 0, 0, 155, 155, 155, 0, 0, 0, 0, 0, 170, 171, 172, 0, 175, 0, 144, 0, 0, 0, 0, 0, 100, 100, 143, 0, 0, 0, 0, 196, 191, 202, 0, 0, 0, 241, 242, 243, 244, 245, 246, 247, 248, 0, 0, 123, 249, 250, 251, 252, 253, 0, 0, 211, 0, 0, 216, 216, 28, 28, 0, 191, 0, 0, 215, 215, 123, 144, 0, 0, 0, 0, 0, 0, 226, 143, 0, 0, 0, 0, 0, 0, 0, 170, 171, 172, 0, 0, 0, 0, 0, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 147, 148, 149, 150, 0, 151, 152, 0, 0, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 156, 156, 0, 0, 100, 216, 0, 156, 156, 155, 156, 0, 266, 215, 0, 0, 0, 0, 0, 0, 157, 158, 159, 160, 161, 162, 163, 164, 165, 0, 0, 0, 0, 50, 50, 50, 50, 50, 0, 50, 50, 0, 0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 155, 155, 0, 0, 144, 144, 0, 155, 155, 0, 50, 50, 143, 143, 0, 0, 0, 0, 0, 173, 174, 50, 50, 50, 50, 50, 50, 50, 50, 50, }; static const YYINT pcap_check[] = { 41, 0, 101, 0, 41, 291, 0, 41, 0, 196, 291, 291, 33, 291, 202, 0, 40, 47, 291, 40, 225, 291, 296, 37, 107, 0, 109, 313, 0, 291, 0, 144, 0, 313, 313, 134, 135, 373, 374, 313, 0, 38, 41, 313, 41, 42, 43, 41, 45, 41, 47, 313, 37, 38, 313, 260, 41, 42, 43, 264, 45, 58, 47, 60, 61, 62, 41, 0, 38, 41, 291, 41, 0, 41, 0, 60, 61, 62, 38, 0, 94, 41, 42, 43, 0, 45, 33, 47, 58, 0, 60, 61, 62, 40, 281, 283, 93, 313, 58, 0, 60, 61, 62, 216, 107, 291, 109, 91, 41, 94, 0, 47, 38, 41, 2, 41, 42, 43, 217, 45, 41, 47, 313, 93, 0, 41, 41, 124, 373, 374, 41, 41, 58, 93, 60, 61, 62, 38, 291, 124, 41, 259, 43, 261, 45, 263, 264, 100, 38, 0, 291, 41, 38, 43, 124, 45, 291, 58, 0, 60, 61, 62, 38, 291, 124, 41, 291, 93, 58, 291, 60, 61, 62, 315, 60, 61, 62, 291, 131, 373, 374, 291, 58, 0, 60, 61, 62, 38, 373, 374, 41, 291, 93, 41, 0, 258, 37, 38, 124, 41, 258, 42, 43, 93, 45, 257, 47, 58, 257, 60, 61, 62, 100, 101, 373, 374, 58, 93, 60, 61, 62, 37, 38, 124, 41, 301, 42, 43, 93, 45, 291, 47, 262, 0, 124, 41, 2, 166, 124, 225, -1, 58, 93, 60, 61, 62, 134, 135, 124, -1, -1, 93, 58, 94, 60, 61, 62, -1, 257, 258, 259, 260, 261, 216, 263, 264, -1, 291, 267, 268, 291, -1, -1, 124, -1, -1, 93, 40, 94, -1, -1, 33, 124, 124, -1, -1, -1, 93, 40, -1, 289, 290, 313, 314, 315, 316, 317, 60, 61, 62, -1, 300, 301, 302, 303, 304, 305, 306, 307, 308, -1, -1, -1, 310, 311, 312, -1, -1, -1, -1, -1, 318, 319, 94, -1, 310, 311, 312, 216, 217, -1, -1, 373, 318, 319, -1, 373, 374, -1, 373, 310, 311, 312, -1, 291, -1, -1, -1, 318, 319, 310, 311, 312, 33, -1, -1, -1, -1, 318, 319, 40, -1, -1, 134, 135, 45, 313, 314, 315, 316, 317, -1, -1, 37, 373, 374, 373, 374, 42, 373, 374, 373, 374, 47, 310, 311, 312, -1, 373, 374, -1, -1, 318, 319, -1, -1, -1, -1, 373, 374, -1, 373, 374, 373, 374, 373, 374, -1, -1, 310, 311, 312, -1, 373, 374, -1, -1, 318, 319, -1, 310, 311, 312, -1, -1, -1, -1, -1, 318, 319, 94, -1, -1, -1, 310, 311, 312, -1, -1, -1, 373, 374, 318, 319, -1, 373, 374, 373, 374, -1, -1, -1, 373, 374, -1, -1, -1, 373, 374, 310, 311, 312, 373, 374, 33, -1, -1, -1, 310, 311, 312, 40, 373, 374, -1, -1, 45, 318, 319, -1, 37, -1, -1, 373, 374, 42, 43, -1, 45, -1, 47, -1, -1, 310, 311, 312, -1, 373, 374, -1, 271, 272, 318, 319, 310, 311, 312, 259, -1, 261, -1, 263, 264, -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, -1, -1, -1, -1, 291, -1, -1, 373, 374, -1, -1, -1, -1, 94, -1, 291, -1, -1, -1, -1, -1, -1, -1, 310, 311, 312, -1, -1, -1, -1, -1, -1, 373, 374, -1, -1, -1, 313, 314, 315, 316, 317, 37, 373, 374, -1, -1, 42, 43, 0, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, 265, 266, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, -1, -1, -1, 94, 33, -1, -1, -1, -1, 309, -1, 40, -1, 313, 314, 315, 316, 317, -1, -1, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 40, -1, -1, 265, 266, 45, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, -1, -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 37, 38, -1, -1, -1, 42, 43, -1, 45, 2, 47, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, -1, 60, 61, 62, 257, 258, 259, 260, 261, -1, 263, 264, -1, -1, 267, 268, 60, 61, 62, -1, -1, 318, 319, -1, 259, -1, 261, -1, 263, 264, -1, -1, -1, -1, -1, 94, 289, 290, -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, 301, 302, 303, 304, 305, 306, 307, 308, 291, -1, -1, -1, -1, -1, -1, -1, -1, 124, 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, 313, 314, 315, 316, 317, -1, -1, 100, 101, -1, -1, 60, 61, 62, -1, -1, -1, -1, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 37, 38, 291, 134, 135, 42, 43, 94, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, 309, -1, -1, 60, 61, 62, -1, -1, -1, -1, -1, 320, 321, 322, 323, 324, -1, 124, -1, -1, -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 37, 38, 94, -1, -1, 42, 43, -1, 45, 2, 47, -1, 37, 38, 358, -1, -1, 42, 43, -1, 45, -1, 47, 60, 61, 62, -1, -1, -1, -1, 216, 217, 124, 58, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, -1, -1, -1, 40, 41, 94, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, 291, -1, 131, -1, 310, 311, 312, -1, -1, -1, -1, 124, 318, 319, -1, -1, -1, -1, -1, 310, 311, 312, -1, 124, -1, 94, -1, -1, -1, -1, -1, 100, 101, 94, -1, -1, -1, -1, 107, 100, 109, -1, -1, -1, 173, 174, 175, 176, 177, 178, 179, 180, -1, -1, 123, 184, 185, 186, 187, 188, -1, -1, 123, -1, -1, 134, 135, 373, 374, -1, 131, -1, -1, 134, 135, 144, 145, -1, -1, -1, -1, -1, -1, 144, 145, -1, -1, -1, -1, -1, -1, -1, 310, 311, 312, -1, -1, -1, -1, -1, 318, 319, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, -1, 263, 264, -1, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 310, 311, 312, -1, -1, 216, 217, -1, 318, 319, 289, 290, -1, 216, 217, -1, -1, -1, -1, -1, -1, 300, 301, 302, 303, 304, 305, 306, 307, 308, -1, -1, -1, -1, 257, 258, 259, 260, 261, -1, 263, 264, -1, -1, 267, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, 310, 311, 312, -1, -1, 271, 272, -1, 318, 319, -1, 289, 290, 271, 272, -1, -1, -1, -1, -1, 318, 319, 300, 301, 302, 303, 304, 305, 306, 307, 308, }; #define YYFINAL 1 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 375 #define YYUNDFTOKEN 423 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) #if YYDEBUG static const char *const pcap_name[] = { "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, "'!'",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,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,"DST","SRC","HOST","GATEWAY","NET", "NETMASK","PORT","PORTRANGE","LESS","GREATER","PROTO","PROTOCHAIN","CBYTE", "ARP","RARP","IP","SCTP","TCP","UDP","ICMP","IGMP","IGRP","PIM","VRRP","CARP", "ATALK","AARP","DECNET","LAT","SCA","MOPRC","MOPDL","TK_BROADCAST", "TK_MULTICAST","NUM","INBOUND","OUTBOUND","PF_IFNAME","PF_RSET","PF_RNR", "PF_SRNR","PF_REASON","PF_ACTION","TYPE","SUBTYPE","DIR","ADDR1","ADDR2", "ADDR3","ADDR4","RA","TA","LINK","GEQ","LEQ","NEQ","ID","EID","HID","HID6", "AID","LSH","RSH","LEN","IPV6","ICMPV6","AH","ESP","VLAN","MPLS","PPPOED", "PPPOES","GENEVE","ISO","ESIS","CLNP","ISIS","L1","L2","IIH","LSP","SNP","CSNP", "PSNP","STP","IPX","NETBEUI","LANE","LLC","METAC","BCC","SC","ILMIC","OAMF4EC", "OAMF4SC","OAM","OAMF4","CONNECTMSG","METACONNECT","VPI","VCI","RADIO","FISU", "LSSU","MSU","HFISU","HLSSU","HMSU","SIO","OPC","DPC","SLS","HSIO","HOPC", "HDPC","HSLS","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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"illegal-symbol", }; static const char *const pcap_rule[] = { "$accept : prog", "prog : null expr", "prog : null", "null :", "expr : term", "expr : expr and term", "expr : expr and id", "expr : expr or term", "expr : expr or id", "and : AND", "or : OR", "id : nid", "id : pnum", "id : paren pid ')'", "nid : ID", "nid : HID '/' NUM", "nid : HID NETMASK HID", "nid : HID", "nid : HID6 '/' NUM", "nid : HID6", "nid : EID", "nid : AID", "nid : not id", "not : '!'", "paren : '('", "pid : nid", "pid : qid and id", "pid : qid or id", "qid : pnum", "qid : pid", "term : rterm", "term : not term", "head : pqual dqual aqual", "head : pqual dqual", "head : pqual aqual", "head : pqual PROTO", "head : pqual PROTOCHAIN", "head : pqual ndaqual", "rterm : head id", "rterm : paren expr ')'", "rterm : pname", "rterm : arth relop arth", "rterm : arth irelop arth", "rterm : other", "rterm : atmtype", "rterm : atmmultitype", "rterm : atmfield atmvalue", "rterm : mtp2type", "rterm : mtp3field mtp3value", "pqual : pname", "pqual :", "dqual : SRC", "dqual : DST", "dqual : SRC OR DST", "dqual : DST OR SRC", "dqual : SRC AND DST", "dqual : DST AND SRC", "dqual : ADDR1", "dqual : ADDR2", "dqual : ADDR3", "dqual : ADDR4", "dqual : RA", "dqual : TA", "aqual : HOST", "aqual : NET", "aqual : PORT", "aqual : PORTRANGE", "ndaqual : GATEWAY", "pname : LINK", "pname : IP", "pname : ARP", "pname : RARP", "pname : SCTP", "pname : TCP", "pname : UDP", "pname : ICMP", "pname : IGMP", "pname : IGRP", "pname : PIM", "pname : VRRP", "pname : CARP", "pname : ATALK", "pname : AARP", "pname : DECNET", "pname : LAT", "pname : SCA", "pname : MOPDL", "pname : MOPRC", "pname : IPV6", "pname : ICMPV6", "pname : AH", "pname : ESP", "pname : ISO", "pname : ESIS", "pname : ISIS", "pname : L1", "pname : L2", "pname : IIH", "pname : LSP", "pname : SNP", "pname : PSNP", "pname : CSNP", "pname : CLNP", "pname : STP", "pname : IPX", "pname : NETBEUI", "pname : RADIO", "other : pqual TK_BROADCAST", "other : pqual TK_MULTICAST", "other : LESS NUM", "other : GREATER NUM", "other : CBYTE NUM byteop NUM", "other : INBOUND", "other : OUTBOUND", "other : VLAN pnum", "other : VLAN", "other : MPLS pnum", "other : MPLS", "other : PPPOED", "other : PPPOES pnum", "other : PPPOES", "other : GENEVE pnum", "other : GENEVE", "other : pfvar", "other : pqual p80211", "other : pllc", "pfvar : PF_IFNAME ID", "pfvar : PF_RSET ID", "pfvar : PF_RNR NUM", "pfvar : PF_SRNR NUM", "pfvar : PF_REASON reason", "pfvar : PF_ACTION action", "p80211 : TYPE type SUBTYPE subtype", "p80211 : TYPE type", "p80211 : SUBTYPE type_subtype", "p80211 : DIR dir", "type : NUM", "type : ID", "subtype : NUM", "subtype : ID", "type_subtype : ID", "pllc : LLC", "pllc : LLC ID", "pllc : LLC PF_RNR", "dir : NUM", "dir : ID", "reason : NUM", "reason : ID", "action : ID", "relop : '>'", "relop : GEQ", "relop : '='", "irelop : LEQ", "irelop : '<'", "irelop : NEQ", "arth : pnum", "arth : narth", "narth : pname '[' arth ']'", "narth : pname '[' arth ':' NUM ']'", "narth : arth '+' arth", "narth : arth '-' arth", "narth : arth '*' arth", "narth : arth '/' arth", "narth : arth '%' arth", "narth : arth '&' arth", "narth : arth '|' arth", "narth : arth '^' arth", "narth : arth LSH arth", "narth : arth RSH arth", "narth : '-' arth", "narth : paren narth ')'", "narth : LEN", "byteop : '&'", "byteop : '|'", "byteop : '<'", "byteop : '>'", "byteop : '='", "pnum : NUM", "pnum : paren pnum ')'", "atmtype : LANE", "atmtype : METAC", "atmtype : BCC", "atmtype : OAMF4EC", "atmtype : OAMF4SC", "atmtype : SC", "atmtype : ILMIC", "atmmultitype : OAM", "atmmultitype : OAMF4", "atmmultitype : CONNECTMSG", "atmmultitype : METACONNECT", "atmfield : VPI", "atmfield : VCI", "atmvalue : atmfieldvalue", "atmvalue : relop NUM", "atmvalue : irelop NUM", "atmvalue : paren atmlistvalue ')'", "atmfieldvalue : NUM", "atmlistvalue : atmfieldvalue", "atmlistvalue : atmlistvalue or atmfieldvalue", "mtp2type : FISU", "mtp2type : LSSU", "mtp2type : MSU", "mtp2type : HFISU", "mtp2type : HLSSU", "mtp2type : HMSU", "mtp3field : SIO", "mtp3field : OPC", "mtp3field : DPC", "mtp3field : SLS", "mtp3field : HSIO", "mtp3field : HOPC", "mtp3field : HDPC", "mtp3field : HSLS", "mtp3value : mtp3fieldvalue", "mtp3value : relop NUM", "mtp3value : irelop NUM", "mtp3value : paren mtp3listvalue ')'", "mtp3fieldvalue : NUM", "mtp3listvalue : mtp3fieldvalue", "mtp3listvalue : mtp3listvalue or mtp3fieldvalue", }; #endif int yydebug; int yynerrs; /* define the initial stack-sizes */ #ifdef YYSTACKSIZE #undef YYMAXDEPTH #define YYMAXDEPTH YYSTACKSIZE #else #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else #define YYSTACKSIZE 10000 #define YYMAXDEPTH 10000 #endif #endif #define YYINITSTACKSIZE 200 typedef struct { unsigned stacksize; YYINT *s_base; YYINT *s_mark; YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; } YYSTACKDATA; #if YYDEBUG #include /* needed for printf */ #endif #include /* needed for malloc, etc */ #include /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; YYINT *newss; YYSTYPE *newvs; if ((newsize = data->stacksize) == 0) newsize = YYINITSTACKSIZE; else if (newsize >= YYMAXDEPTH) return YYENOMEM; else if ((newsize *= 2) > YYMAXDEPTH) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; data->s_base = newss; data->s_mark = newss + i; newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); if (newvs == 0) return YYENOMEM; data->l_base = newvs; data->l_mark = newvs + i; data->stacksize = newsize; data->s_last = data->s_base + newsize - 1; return 0; } #if YYPURE || defined(YY_NO_LEAKS) static void yyfreestack(YYSTACKDATA *data) { free(data->s_base); free(data->l_base); memset(data, 0, sizeof(*data)); } #else #define yyfreestack(data) /* nothing */ #endif #define YYABORT goto yyabort #define YYREJECT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int YYPARSE_DECL() { int yyerrflag; int yychar; YYSTYPE yyval; YYSTYPE yylval; /* variables for the parser stack */ YYSTACKDATA yystack; int yym, yyn, yystate; #if YYDEBUG const char *yys; if ((yys = getenv("YYDEBUG")) != 0) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif yym = 0; yyn = 0; yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; yystate = 0; #if YYPURE memset(&yystack, 0, sizeof(yystack)); #endif if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystack.s_mark = yystack.s_base; yystack.l_mark = yystack.l_base; yystate = 0; *yystack.s_mark = 0; yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { yychar = YYLEX; if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; yychar = YYEMPTY; if (yyerrflag > 0) --yyerrflag; goto yyloop; } if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } if (yyerrflag != 0) goto yyinrecovery; YYERROR_CALL("syntax error"); goto yyerrlab; /* redundant goto avoids 'unused label' warning */ yyerrlab: ++yynerrs; yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; goto yyloop; } else { #if YYDEBUG if (yydebug) printf("%sdebug: error recovery discarding state %d\n", YYPREFIX, *yystack.s_mark); #endif if (yystack.s_mark <= yystack.s_base) goto yyabort; --yystack.s_mark; --yystack.l_mark; } } } else { if (yychar == YYEOF) goto yyabort; #if YYDEBUG if (yydebug) { if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif yychar = YYEMPTY; goto yyloop; } yyreduce: #if YYDEBUG if (yydebug) printf("%sdebug: state %d, reducing by rule %d (%s)\n", YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); switch (yyn) { case 1: #line 361 "grammar.y" { finish_parse(cstate, yystack.l_mark[0].blk.b); } break; case 3: #line 366 "grammar.y" { yyval.blk.q = qerr; } break; case 5: #line 369 "grammar.y" { gen_and(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; } break; case 6: #line 370 "grammar.y" { gen_and(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; } break; case 7: #line 371 "grammar.y" { gen_or(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; } break; case 8: #line 372 "grammar.y" { gen_or(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; } break; case 9: #line 374 "grammar.y" { yyval.blk = yystack.l_mark[-1].blk; } break; case 10: #line 376 "grammar.y" { yyval.blk = yystack.l_mark[-1].blk; } break; case 12: #line 379 "grammar.y" { yyval.blk.b = gen_ncode(cstate, NULL, (bpf_u_int32)yystack.l_mark[0].i, yyval.blk.q = yystack.l_mark[-1].blk.q); } break; case 13: #line 381 "grammar.y" { yyval.blk = yystack.l_mark[-1].blk; } break; case 14: #line 383 "grammar.y" { yyval.blk.b = gen_scode(cstate, yystack.l_mark[0].s, yyval.blk.q = yystack.l_mark[-1].blk.q); } break; case 15: #line 384 "grammar.y" { yyval.blk.b = gen_mcode(cstate, yystack.l_mark[-2].s, NULL, yystack.l_mark[0].i, yyval.blk.q = yystack.l_mark[-3].blk.q); } break; case 16: #line 386 "grammar.y" { yyval.blk.b = gen_mcode(cstate, yystack.l_mark[-2].s, yystack.l_mark[0].s, 0, yyval.blk.q = yystack.l_mark[-3].blk.q); } break; case 17: #line 388 "grammar.y" { /* Decide how to parse HID based on proto */ yyval.blk.q = yystack.l_mark[-1].blk.q; if (yyval.blk.q.addr == Q_PORT) bpf_error(cstate, "'port' modifier applied to ip host"); else if (yyval.blk.q.addr == Q_PORTRANGE) bpf_error(cstate, "'portrange' modifier applied to ip host"); else if (yyval.blk.q.addr == Q_PROTO) bpf_error(cstate, "'proto' modifier applied to ip host"); else if (yyval.blk.q.addr == Q_PROTOCHAIN) bpf_error(cstate, "'protochain' modifier applied to ip host"); yyval.blk.b = gen_ncode(cstate, yystack.l_mark[0].s, 0, yyval.blk.q); } break; case 18: #line 401 "grammar.y" { #ifdef INET6 yyval.blk.b = gen_mcode6(cstate, yystack.l_mark[-2].s, NULL, yystack.l_mark[0].i, yyval.blk.q = yystack.l_mark[-3].blk.q); #else bpf_error(cstate, "'ip6addr/prefixlen' not supported " "in this configuration"); #endif /*INET6*/ } break; case 19: #line 410 "grammar.y" { #ifdef INET6 yyval.blk.b = gen_mcode6(cstate, yystack.l_mark[0].s, 0, 128, yyval.blk.q = yystack.l_mark[-1].blk.q); #else bpf_error(cstate, "'ip6addr' not supported " "in this configuration"); #endif /*INET6*/ } break; case 20: #line 419 "grammar.y" { yyval.blk.b = gen_ecode(cstate, yystack.l_mark[0].e, yyval.blk.q = yystack.l_mark[-1].blk.q); /* * $1 was allocated by "pcap_ether_aton()", * so we must free it now that we're done * with it. */ free(yystack.l_mark[0].e); } break; case 21: #line 428 "grammar.y" { yyval.blk.b = gen_acode(cstate, yystack.l_mark[0].e, yyval.blk.q = yystack.l_mark[-1].blk.q); /* * $1 was allocated by "pcap_ether_aton()", * so we must free it now that we're done * with it. */ free(yystack.l_mark[0].e); } break; case 22: #line 437 "grammar.y" { gen_not(yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; } break; case 23: #line 439 "grammar.y" { yyval.blk = yystack.l_mark[-1].blk; } break; case 24: #line 441 "grammar.y" { yyval.blk = yystack.l_mark[-1].blk; } break; case 26: #line 444 "grammar.y" { gen_and(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; } break; case 27: #line 445 "grammar.y" { gen_or(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; } break; case 28: #line 447 "grammar.y" { yyval.blk.b = gen_ncode(cstate, NULL, (bpf_u_int32)yystack.l_mark[0].i, yyval.blk.q = yystack.l_mark[-1].blk.q); } break; case 31: #line 452 "grammar.y" { gen_not(yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; } break; case 32: #line 454 "grammar.y" { QSET(yyval.blk.q, yystack.l_mark[-2].i, yystack.l_mark[-1].i, yystack.l_mark[0].i); } break; case 33: #line 455 "grammar.y" { QSET(yyval.blk.q, yystack.l_mark[-1].i, yystack.l_mark[0].i, Q_DEFAULT); } break; case 34: #line 456 "grammar.y" { QSET(yyval.blk.q, yystack.l_mark[-1].i, Q_DEFAULT, yystack.l_mark[0].i); } break; case 35: #line 457 "grammar.y" { QSET(yyval.blk.q, yystack.l_mark[-1].i, Q_DEFAULT, Q_PROTO); } break; case 36: #line 458 "grammar.y" { QSET(yyval.blk.q, yystack.l_mark[-1].i, Q_DEFAULT, Q_PROTOCHAIN); } break; case 37: #line 459 "grammar.y" { QSET(yyval.blk.q, yystack.l_mark[-1].i, Q_DEFAULT, yystack.l_mark[0].i); } break; case 38: #line 461 "grammar.y" { yyval.blk = yystack.l_mark[0].blk; } break; case 39: #line 462 "grammar.y" { yyval.blk.b = yystack.l_mark[-1].blk.b; yyval.blk.q = yystack.l_mark[-2].blk.q; } break; case 40: #line 463 "grammar.y" { yyval.blk.b = gen_proto_abbrev(cstate, yystack.l_mark[0].i); yyval.blk.q = qerr; } break; case 41: #line 464 "grammar.y" { yyval.blk.b = gen_relation(cstate, yystack.l_mark[-1].i, yystack.l_mark[-2].a, yystack.l_mark[0].a, 0); yyval.blk.q = qerr; } break; case 42: #line 466 "grammar.y" { yyval.blk.b = gen_relation(cstate, yystack.l_mark[-1].i, yystack.l_mark[-2].a, yystack.l_mark[0].a, 1); yyval.blk.q = qerr; } break; case 43: #line 468 "grammar.y" { yyval.blk.b = yystack.l_mark[0].rblk; yyval.blk.q = qerr; } break; case 44: #line 469 "grammar.y" { yyval.blk.b = gen_atmtype_abbrev(cstate, yystack.l_mark[0].i); yyval.blk.q = qerr; } break; case 45: #line 470 "grammar.y" { yyval.blk.b = gen_atmmulti_abbrev(cstate, yystack.l_mark[0].i); yyval.blk.q = qerr; } break; case 46: #line 471 "grammar.y" { yyval.blk.b = yystack.l_mark[0].blk.b; yyval.blk.q = qerr; } break; case 47: #line 472 "grammar.y" { yyval.blk.b = gen_mtp2type_abbrev(cstate, yystack.l_mark[0].i); yyval.blk.q = qerr; } break; case 48: #line 473 "grammar.y" { yyval.blk.b = yystack.l_mark[0].blk.b; yyval.blk.q = qerr; } break; case 50: #line 477 "grammar.y" { yyval.i = Q_DEFAULT; } break; case 51: #line 480 "grammar.y" { yyval.i = Q_SRC; } break; case 52: #line 481 "grammar.y" { yyval.i = Q_DST; } break; case 53: #line 482 "grammar.y" { yyval.i = Q_OR; } break; case 54: #line 483 "grammar.y" { yyval.i = Q_OR; } break; case 55: #line 484 "grammar.y" { yyval.i = Q_AND; } break; case 56: #line 485 "grammar.y" { yyval.i = Q_AND; } break; case 57: #line 486 "grammar.y" { yyval.i = Q_ADDR1; } break; case 58: #line 487 "grammar.y" { yyval.i = Q_ADDR2; } break; case 59: #line 488 "grammar.y" { yyval.i = Q_ADDR3; } break; case 60: #line 489 "grammar.y" { yyval.i = Q_ADDR4; } break; case 61: #line 490 "grammar.y" { yyval.i = Q_RA; } break; case 62: #line 491 "grammar.y" { yyval.i = Q_TA; } break; case 63: #line 494 "grammar.y" { yyval.i = Q_HOST; } break; case 64: #line 495 "grammar.y" { yyval.i = Q_NET; } break; case 65: #line 496 "grammar.y" { yyval.i = Q_PORT; } break; case 66: #line 497 "grammar.y" { yyval.i = Q_PORTRANGE; } break; case 67: #line 500 "grammar.y" { yyval.i = Q_GATEWAY; } break; case 68: #line 502 "grammar.y" { yyval.i = Q_LINK; } break; case 69: #line 503 "grammar.y" { yyval.i = Q_IP; } break; case 70: #line 504 "grammar.y" { yyval.i = Q_ARP; } break; case 71: #line 505 "grammar.y" { yyval.i = Q_RARP; } break; case 72: #line 506 "grammar.y" { yyval.i = Q_SCTP; } break; case 73: #line 507 "grammar.y" { yyval.i = Q_TCP; } break; case 74: #line 508 "grammar.y" { yyval.i = Q_UDP; } break; case 75: #line 509 "grammar.y" { yyval.i = Q_ICMP; } break; case 76: #line 510 "grammar.y" { yyval.i = Q_IGMP; } break; case 77: #line 511 "grammar.y" { yyval.i = Q_IGRP; } break; case 78: #line 512 "grammar.y" { yyval.i = Q_PIM; } break; case 79: #line 513 "grammar.y" { yyval.i = Q_VRRP; } break; case 80: #line 514 "grammar.y" { yyval.i = Q_CARP; } break; case 81: #line 515 "grammar.y" { yyval.i = Q_ATALK; } break; case 82: #line 516 "grammar.y" { yyval.i = Q_AARP; } break; case 83: #line 517 "grammar.y" { yyval.i = Q_DECNET; } break; case 84: #line 518 "grammar.y" { yyval.i = Q_LAT; } break; case 85: #line 519 "grammar.y" { yyval.i = Q_SCA; } break; case 86: #line 520 "grammar.y" { yyval.i = Q_MOPDL; } break; case 87: #line 521 "grammar.y" { yyval.i = Q_MOPRC; } break; case 88: #line 522 "grammar.y" { yyval.i = Q_IPV6; } break; case 89: #line 523 "grammar.y" { yyval.i = Q_ICMPV6; } break; case 90: #line 524 "grammar.y" { yyval.i = Q_AH; } break; case 91: #line 525 "grammar.y" { yyval.i = Q_ESP; } break; case 92: #line 526 "grammar.y" { yyval.i = Q_ISO; } break; case 93: #line 527 "grammar.y" { yyval.i = Q_ESIS; } break; case 94: #line 528 "grammar.y" { yyval.i = Q_ISIS; } break; case 95: #line 529 "grammar.y" { yyval.i = Q_ISIS_L1; } break; case 96: #line 530 "grammar.y" { yyval.i = Q_ISIS_L2; } break; case 97: #line 531 "grammar.y" { yyval.i = Q_ISIS_IIH; } break; case 98: #line 532 "grammar.y" { yyval.i = Q_ISIS_LSP; } break; case 99: #line 533 "grammar.y" { yyval.i = Q_ISIS_SNP; } break; case 100: #line 534 "grammar.y" { yyval.i = Q_ISIS_PSNP; } break; case 101: #line 535 "grammar.y" { yyval.i = Q_ISIS_CSNP; } break; case 102: #line 536 "grammar.y" { yyval.i = Q_CLNP; } break; case 103: #line 537 "grammar.y" { yyval.i = Q_STP; } break; case 104: #line 538 "grammar.y" { yyval.i = Q_IPX; } break; case 105: #line 539 "grammar.y" { yyval.i = Q_NETBEUI; } break; case 106: #line 540 "grammar.y" { yyval.i = Q_RADIO; } break; case 107: #line 542 "grammar.y" { yyval.rblk = gen_broadcast(cstate, yystack.l_mark[-1].i); } break; case 108: #line 543 "grammar.y" { yyval.rblk = gen_multicast(cstate, yystack.l_mark[-1].i); } break; case 109: #line 544 "grammar.y" { yyval.rblk = gen_less(cstate, yystack.l_mark[0].i); } break; case 110: #line 545 "grammar.y" { yyval.rblk = gen_greater(cstate, yystack.l_mark[0].i); } break; case 111: #line 546 "grammar.y" { yyval.rblk = gen_byteop(cstate, yystack.l_mark[-1].i, yystack.l_mark[-2].i, yystack.l_mark[0].i); } break; case 112: #line 547 "grammar.y" { yyval.rblk = gen_inbound(cstate, 0); } break; case 113: #line 548 "grammar.y" { yyval.rblk = gen_inbound(cstate, 1); } break; case 114: #line 549 "grammar.y" { yyval.rblk = gen_vlan(cstate, yystack.l_mark[0].i); } break; case 115: #line 550 "grammar.y" { yyval.rblk = gen_vlan(cstate, -1); } break; case 116: #line 551 "grammar.y" { yyval.rblk = gen_mpls(cstate, yystack.l_mark[0].i); } break; case 117: #line 552 "grammar.y" { yyval.rblk = gen_mpls(cstate, -1); } break; case 118: #line 553 "grammar.y" { yyval.rblk = gen_pppoed(cstate); } break; case 119: #line 554 "grammar.y" { yyval.rblk = gen_pppoes(cstate, yystack.l_mark[0].i); } break; case 120: #line 555 "grammar.y" { yyval.rblk = gen_pppoes(cstate, -1); } break; case 121: #line 556 "grammar.y" { yyval.rblk = gen_geneve(cstate, yystack.l_mark[0].i); } break; case 122: #line 557 "grammar.y" { yyval.rblk = gen_geneve(cstate, -1); } break; case 123: #line 558 "grammar.y" { yyval.rblk = yystack.l_mark[0].rblk; } break; case 124: #line 559 "grammar.y" { yyval.rblk = yystack.l_mark[0].rblk; } break; case 125: #line 560 "grammar.y" { yyval.rblk = yystack.l_mark[0].rblk; } break; case 126: #line 563 "grammar.y" { yyval.rblk = gen_pf_ifname(cstate, yystack.l_mark[0].s); } break; case 127: #line 564 "grammar.y" { yyval.rblk = gen_pf_ruleset(cstate, yystack.l_mark[0].s); } break; case 128: #line 565 "grammar.y" { yyval.rblk = gen_pf_rnr(cstate, yystack.l_mark[0].i); } break; case 129: #line 566 "grammar.y" { yyval.rblk = gen_pf_srnr(cstate, yystack.l_mark[0].i); } break; case 130: #line 567 "grammar.y" { yyval.rblk = gen_pf_reason(cstate, yystack.l_mark[0].i); } break; case 131: #line 568 "grammar.y" { yyval.rblk = gen_pf_action(cstate, yystack.l_mark[0].i); } break; case 132: #line 572 "grammar.y" { yyval.rblk = gen_p80211_type(cstate, yystack.l_mark[-2].i | yystack.l_mark[0].i, IEEE80211_FC0_TYPE_MASK | IEEE80211_FC0_SUBTYPE_MASK); } break; case 133: #line 576 "grammar.y" { yyval.rblk = gen_p80211_type(cstate, yystack.l_mark[0].i, IEEE80211_FC0_TYPE_MASK); } break; case 134: #line 579 "grammar.y" { yyval.rblk = gen_p80211_type(cstate, yystack.l_mark[0].i, IEEE80211_FC0_TYPE_MASK | IEEE80211_FC0_SUBTYPE_MASK); } break; case 135: #line 583 "grammar.y" { yyval.rblk = gen_p80211_fcdir(cstate, yystack.l_mark[0].i); } break; case 137: #line 587 "grammar.y" { yyval.i = str2tok(yystack.l_mark[0].s, ieee80211_types); if (yyval.i == -1) bpf_error(cstate, "unknown 802.11 type name"); } break; case 139: #line 594 "grammar.y" { const struct tok *types = NULL; int i; for (i = 0;; i++) { if (ieee80211_type_subtypes[i].tok == NULL) { /* Ran out of types */ bpf_error(cstate, "unknown 802.11 type"); break; } if (yystack.l_mark[-2].i == ieee80211_type_subtypes[i].type) { types = ieee80211_type_subtypes[i].tok; break; } } yyval.i = str2tok(yystack.l_mark[0].s, types); if (yyval.i == -1) bpf_error(cstate, "unknown 802.11 subtype name"); } break; case 140: #line 614 "grammar.y" { int i; for (i = 0;; i++) { if (ieee80211_type_subtypes[i].tok == NULL) { /* Ran out of types */ bpf_error(cstate, "unknown 802.11 type name"); break; } yyval.i = str2tok(yystack.l_mark[0].s, ieee80211_type_subtypes[i].tok); if (yyval.i != -1) { yyval.i |= ieee80211_type_subtypes[i].type; break; } } } break; case 141: #line 630 "grammar.y" { yyval.rblk = gen_llc(cstate); } break; case 142: #line 631 "grammar.y" { if (pcap_strcasecmp(yystack.l_mark[0].s, "i") == 0) yyval.rblk = gen_llc_i(cstate); else if (pcap_strcasecmp(yystack.l_mark[0].s, "s") == 0) yyval.rblk = gen_llc_s(cstate); else if (pcap_strcasecmp(yystack.l_mark[0].s, "u") == 0) yyval.rblk = gen_llc_u(cstate); else { int subtype; subtype = str2tok(yystack.l_mark[0].s, llc_s_subtypes); if (subtype != -1) yyval.rblk = gen_llc_s_subtype(cstate, subtype); else { subtype = str2tok(yystack.l_mark[0].s, llc_u_subtypes); if (subtype == -1) bpf_error(cstate, "unknown LLC type name \"%s\"", yystack.l_mark[0].s); yyval.rblk = gen_llc_u_subtype(cstate, subtype); } } } break; case 143: #line 652 "grammar.y" { yyval.rblk = gen_llc_s_subtype(cstate, LLC_RNR); } break; case 145: #line 656 "grammar.y" { if (pcap_strcasecmp(yystack.l_mark[0].s, "nods") == 0) yyval.i = IEEE80211_FC1_DIR_NODS; else if (pcap_strcasecmp(yystack.l_mark[0].s, "tods") == 0) yyval.i = IEEE80211_FC1_DIR_TODS; else if (pcap_strcasecmp(yystack.l_mark[0].s, "fromds") == 0) yyval.i = IEEE80211_FC1_DIR_FROMDS; else if (pcap_strcasecmp(yystack.l_mark[0].s, "dstods") == 0) yyval.i = IEEE80211_FC1_DIR_DSTODS; else bpf_error(cstate, "unknown 802.11 direction"); } break; case 146: #line 669 "grammar.y" { yyval.i = yystack.l_mark[0].i; } break; case 147: #line 670 "grammar.y" { yyval.i = pfreason_to_num(cstate, yystack.l_mark[0].s); } break; case 148: #line 673 "grammar.y" { yyval.i = pfaction_to_num(cstate, yystack.l_mark[0].s); } break; case 149: #line 676 "grammar.y" { yyval.i = BPF_JGT; } break; case 150: #line 677 "grammar.y" { yyval.i = BPF_JGE; } break; case 151: #line 678 "grammar.y" { yyval.i = BPF_JEQ; } break; case 152: #line 680 "grammar.y" { yyval.i = BPF_JGT; } break; case 153: #line 681 "grammar.y" { yyval.i = BPF_JGE; } break; case 154: #line 682 "grammar.y" { yyval.i = BPF_JEQ; } break; case 155: #line 684 "grammar.y" { yyval.a = gen_loadi(cstate, yystack.l_mark[0].i); } break; case 157: #line 687 "grammar.y" { yyval.a = gen_load(cstate, yystack.l_mark[-3].i, yystack.l_mark[-1].a, 1); } break; case 158: #line 688 "grammar.y" { yyval.a = gen_load(cstate, yystack.l_mark[-5].i, yystack.l_mark[-3].a, yystack.l_mark[-1].i); } break; case 159: #line 689 "grammar.y" { yyval.a = gen_arth(cstate, BPF_ADD, yystack.l_mark[-2].a, yystack.l_mark[0].a); } break; case 160: #line 690 "grammar.y" { yyval.a = gen_arth(cstate, BPF_SUB, yystack.l_mark[-2].a, yystack.l_mark[0].a); } break; case 161: #line 691 "grammar.y" { yyval.a = gen_arth(cstate, BPF_MUL, yystack.l_mark[-2].a, yystack.l_mark[0].a); } break; case 162: #line 692 "grammar.y" { yyval.a = gen_arth(cstate, BPF_DIV, yystack.l_mark[-2].a, yystack.l_mark[0].a); } break; case 163: #line 693 "grammar.y" { yyval.a = gen_arth(cstate, BPF_MOD, yystack.l_mark[-2].a, yystack.l_mark[0].a); } break; case 164: #line 694 "grammar.y" { yyval.a = gen_arth(cstate, BPF_AND, yystack.l_mark[-2].a, yystack.l_mark[0].a); } break; case 165: #line 695 "grammar.y" { yyval.a = gen_arth(cstate, BPF_OR, yystack.l_mark[-2].a, yystack.l_mark[0].a); } break; case 166: #line 696 "grammar.y" { yyval.a = gen_arth(cstate, BPF_XOR, yystack.l_mark[-2].a, yystack.l_mark[0].a); } break; case 167: #line 697 "grammar.y" { yyval.a = gen_arth(cstate, BPF_LSH, yystack.l_mark[-2].a, yystack.l_mark[0].a); } break; case 168: #line 698 "grammar.y" { yyval.a = gen_arth(cstate, BPF_RSH, yystack.l_mark[-2].a, yystack.l_mark[0].a); } break; case 169: #line 699 "grammar.y" { yyval.a = gen_neg(cstate, yystack.l_mark[0].a); } break; case 170: #line 700 "grammar.y" { yyval.a = yystack.l_mark[-1].a; } break; case 171: #line 701 "grammar.y" { yyval.a = gen_loadlen(cstate); } break; case 172: #line 703 "grammar.y" { yyval.i = '&'; } break; case 173: #line 704 "grammar.y" { yyval.i = '|'; } break; case 174: #line 705 "grammar.y" { yyval.i = '<'; } break; case 175: #line 706 "grammar.y" { yyval.i = '>'; } break; case 176: #line 707 "grammar.y" { yyval.i = '='; } break; case 178: #line 710 "grammar.y" { yyval.i = yystack.l_mark[-1].i; } break; case 179: #line 712 "grammar.y" { yyval.i = A_LANE; } break; case 180: #line 713 "grammar.y" { yyval.i = A_METAC; } break; case 181: #line 714 "grammar.y" { yyval.i = A_BCC; } break; case 182: #line 715 "grammar.y" { yyval.i = A_OAMF4EC; } break; case 183: #line 716 "grammar.y" { yyval.i = A_OAMF4SC; } break; case 184: #line 717 "grammar.y" { yyval.i = A_SC; } break; case 185: #line 718 "grammar.y" { yyval.i = A_ILMIC; } break; case 186: #line 720 "grammar.y" { yyval.i = A_OAM; } break; case 187: #line 721 "grammar.y" { yyval.i = A_OAMF4; } break; case 188: #line 722 "grammar.y" { yyval.i = A_CONNECTMSG; } break; case 189: #line 723 "grammar.y" { yyval.i = A_METACONNECT; } break; case 190: #line 726 "grammar.y" { yyval.blk.atmfieldtype = A_VPI; } break; case 191: #line 727 "grammar.y" { yyval.blk.atmfieldtype = A_VCI; } break; case 193: #line 730 "grammar.y" { yyval.blk.b = gen_atmfield_code(cstate, yystack.l_mark[-2].blk.atmfieldtype, (bpf_int32)yystack.l_mark[0].i, (bpf_u_int32)yystack.l_mark[-1].i, 0); } break; case 194: #line 731 "grammar.y" { yyval.blk.b = gen_atmfield_code(cstate, yystack.l_mark[-2].blk.atmfieldtype, (bpf_int32)yystack.l_mark[0].i, (bpf_u_int32)yystack.l_mark[-1].i, 1); } break; case 195: #line 732 "grammar.y" { yyval.blk.b = yystack.l_mark[-1].blk.b; yyval.blk.q = qerr; } break; case 196: #line 734 "grammar.y" { yyval.blk.atmfieldtype = yystack.l_mark[-1].blk.atmfieldtype; if (yyval.blk.atmfieldtype == A_VPI || yyval.blk.atmfieldtype == A_VCI) yyval.blk.b = gen_atmfield_code(cstate, yyval.blk.atmfieldtype, (bpf_int32) yystack.l_mark[0].i, BPF_JEQ, 0); } break; case 198: #line 742 "grammar.y" { gen_or(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; } break; case 199: #line 745 "grammar.y" { yyval.i = M_FISU; } break; case 200: #line 746 "grammar.y" { yyval.i = M_LSSU; } break; case 201: #line 747 "grammar.y" { yyval.i = M_MSU; } break; case 202: #line 748 "grammar.y" { yyval.i = MH_FISU; } break; case 203: #line 749 "grammar.y" { yyval.i = MH_LSSU; } break; case 204: #line 750 "grammar.y" { yyval.i = MH_MSU; } break; case 205: #line 753 "grammar.y" { yyval.blk.mtp3fieldtype = M_SIO; } break; case 206: #line 754 "grammar.y" { yyval.blk.mtp3fieldtype = M_OPC; } break; case 207: #line 755 "grammar.y" { yyval.blk.mtp3fieldtype = M_DPC; } break; case 208: #line 756 "grammar.y" { yyval.blk.mtp3fieldtype = M_SLS; } break; case 209: #line 757 "grammar.y" { yyval.blk.mtp3fieldtype = MH_SIO; } break; case 210: #line 758 "grammar.y" { yyval.blk.mtp3fieldtype = MH_OPC; } break; case 211: #line 759 "grammar.y" { yyval.blk.mtp3fieldtype = MH_DPC; } break; case 212: #line 760 "grammar.y" { yyval.blk.mtp3fieldtype = MH_SLS; } break; case 214: #line 763 "grammar.y" { yyval.blk.b = gen_mtp3field_code(cstate, yystack.l_mark[-2].blk.mtp3fieldtype, (u_int)yystack.l_mark[0].i, (u_int)yystack.l_mark[-1].i, 0); } break; case 215: #line 764 "grammar.y" { yyval.blk.b = gen_mtp3field_code(cstate, yystack.l_mark[-2].blk.mtp3fieldtype, (u_int)yystack.l_mark[0].i, (u_int)yystack.l_mark[-1].i, 1); } break; case 216: #line 765 "grammar.y" { yyval.blk.b = yystack.l_mark[-1].blk.b; yyval.blk.q = qerr; } break; case 217: #line 767 "grammar.y" { yyval.blk.mtp3fieldtype = yystack.l_mark[-1].blk.mtp3fieldtype; if (yyval.blk.mtp3fieldtype == M_SIO || yyval.blk.mtp3fieldtype == M_OPC || yyval.blk.mtp3fieldtype == M_DPC || yyval.blk.mtp3fieldtype == M_SLS || yyval.blk.mtp3fieldtype == MH_SIO || yyval.blk.mtp3fieldtype == MH_OPC || yyval.blk.mtp3fieldtype == MH_DPC || yyval.blk.mtp3fieldtype == MH_SLS) yyval.blk.b = gen_mtp3field_code(cstate, yyval.blk.mtp3fieldtype, (u_int) yystack.l_mark[0].i, BPF_JEQ, 0); } break; case 219: #line 781 "grammar.y" { gen_or(yystack.l_mark[-2].blk.b, yystack.l_mark[0].blk.b); yyval.blk = yystack.l_mark[0].blk; } break; #line 2401 "grammar.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; yystack.l_mark -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) { #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state 0 to\ state %d\n", YYPREFIX, YYFINAL); #endif yystate = YYFINAL; *++yystack.s_mark = YYFINAL; *++yystack.l_mark = yyval; if (yychar < 0) { yychar = YYLEX; if (yychar < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } #endif } if (yychar == YYEOF) goto yyaccept; goto yyloop; } if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yystack.s_mark, yystate); #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; yyoverflow: YYERROR_CALL("yacc stack overflow"); yyabort: yyfreestack(&yystack); return (1); yyaccept: yyfreestack(&yystack); return (0); }