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