📄 aclyacc.c
字号:
#if defined(lint) || defined(__GNUC__) goto yynewerror;#endifyynewerror: yyerror("syntax error");#if defined(lint) || defined(__GNUC__) goto yyerrlab;#endifyyerrlab: ++yynerrs;yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) {#if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);#endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; goto yyloop; } else {#if YYDEBUG if (yydebug) printf("%sdebug: error recovery discarding state %d\n", YYPREFIX, *yyssp);#endif if (yyssp <= yyss) goto yyabort; --yyssp; --yyvsp; } } } else { if (yychar == 0) goto yyabort;#if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); }#endif yychar = (-1); goto yyloop; }yyreduce:#if YYDEBUG if (yydebug) printf("%sdebug: state %d, reducing by rule %d (%s)\n", YYPREFIX, yystate, yyn, yyrule[yyn]);#endif yym = yylen[yyn]; yyval = yyvsp[1-yym]; switch (yyn) {case 10:#line 54 "aclyacc.y"{ /* XXX add code to check NUM is in range 0..99 */ yyvsp[0].std_entry.flag |= yyvsp[-1].i; x = acl_create(&acl_list, yyvsp[-2].c, ACL_TYPE_STD); acl_add_line_std(acl_list, x, yyvsp[0].std_entry); }break;case 11:#line 60 "aclyacc.y"{ /* XXX add code to check NUM is in range 100-199 */ yyvsp[0].ext_entry.flag |= yyvsp[-1].i; x = acl_create(&acl_list, yyvsp[-2].c, ACL_TYPE_EXT); acl_add_line_ext(acl_list, x, yyvsp[0].ext_entry); }break;case 12:#line 66 "aclyacc.y"{ yyvsp[0].std_entry.flag |= yyvsp[-1].i; x = acl_create(&acl_list, yyvsp[-2].c, ACL_TYPE_STD); acl_add_line_std(acl_list, x, yyvsp[0].std_entry); }break;case 13:#line 71 "aclyacc.y"{ yyvsp[0].ext_entry.flag |= yyvsp[-1].i; x = acl_create(&acl_list, yyvsp[-2].c, ACL_TYPE_EXT); acl_add_line_ext(acl_list, x, yyvsp[0].ext_entry); }break;case 14:#line 79 "aclyacc.y"{ yyval.std_entry.src_addr = 0x0; yyval.std_entry.src_mask = 0xFFFFFFFF; yyval.std_entry.matches = 0; yyval.std_entry.flag = 0; }break;case 15:#line 85 "aclyacc.y"{ yyval.std_entry.src_addr = yyvsp[0].ip; yyval.std_entry.src_mask = 0x0; yyval.std_entry.matches = 0; yyval.std_entry.flag = 0; }break;case 16:#line 91 "aclyacc.y"{ yyval.std_entry.src_addr = yyvsp[-1].ip; yyval.std_entry.src_mask = yyvsp[0].ip; yyval.std_entry.matches = 0; yyval.std_entry.flag = 0; }break;case 17:#line 97 "aclyacc.y"{ yyval.std_entry.src_addr = yyvsp[0].ip; yyval.std_entry.src_mask = 0x0; yyval.std_entry.matches = 0; yyval.std_entry.flag = 0; }break;case 18:#line 105 "aclyacc.y"{ yyval.i = ACL_FLAG_PERMIT; }break;case 19:#line 108 "aclyacc.y"{ yyval.i = 0; }break;case 25:#line 121 "aclyacc.y"{ yyval.ext_entry.protocol = 0; yyval.ext_entry.precedence = 0; yyval.ext_entry.tos = 0; yyval.ext_entry.type = 0; yyval.ext_entry.type_code = 0; yyval.ext_entry.message = 0; yyval.ext_entry.src_op = 0; yyval.ext_entry.dst_op = 0; yyval.ext_entry.src_addr = yyvsp[-1].std_entry.src_addr; yyval.ext_entry.src_mask = yyvsp[-1].std_entry.src_mask; yyval.ext_entry.src_port = 0; yyval.ext_entry.src_port2 = 0; yyval.ext_entry.dst_addr = yyvsp[0].std_entry.src_addr; yyval.ext_entry.dst_mask = yyvsp[0].std_entry.src_mask; yyval.ext_entry.dst_port = 0; yyval.ext_entry.dst_port2 = 0; yyval.ext_entry.matches = 0; yyval.ext_entry.flag = ACL_FLAG_IP_ALL; }break;case 26:#line 141 "aclyacc.y"{ yyval.ext_entry.protocol = 0; yyval.ext_entry.precedence = yyvsp[0].ext_entry.precedence; yyval.ext_entry.tos = yyvsp[0].ext_entry.tos; yyval.ext_entry.type = 0; yyval.ext_entry.type_code = 0; yyval.ext_entry.message = 0; yyval.ext_entry.src_op = 0; yyval.ext_entry.dst_op = 0; yyval.ext_entry.src_addr = yyvsp[-2].std_entry.src_addr; yyval.ext_entry.src_mask = yyvsp[-2].std_entry.src_mask; yyval.ext_entry.src_port = 0; yyval.ext_entry.src_port2 = 0; yyval.ext_entry.dst_addr = yyvsp[-1].std_entry.src_addr; yyval.ext_entry.dst_mask = yyvsp[-1].std_entry.src_mask; yyval.ext_entry.dst_port = 0; yyval.ext_entry.dst_port2 = 0; yyval.ext_entry.matches = 0; yyval.ext_entry.flag = ACL_FLAG_IP_ALL | yyvsp[-1].std_entry.flag; }break;case 27:#line 163 "aclyacc.y"{ yyval.ext_entry.protocol = IPPROTO_ICMP; yyval.ext_entry.precedence = 0; yyval.ext_entry.tos = 0; yyval.ext_entry.type = 0; yyval.ext_entry.type_code = 0; yyval.ext_entry.message = 0; yyval.ext_entry.src_op = 0; yyval.ext_entry.dst_op = 0; yyval.ext_entry.src_addr = yyvsp[-1].std_entry.src_addr; yyval.ext_entry.src_mask = yyvsp[-1].std_entry.src_mask; yyval.ext_entry.src_port = 0; yyval.ext_entry.src_port2 = 0; yyval.ext_entry.dst_addr = yyvsp[0].std_entry.src_addr; yyval.ext_entry.dst_mask = yyvsp[0].std_entry.src_mask; yyval.ext_entry.dst_port = 0; yyval.ext_entry.dst_port2 = 0; yyval.ext_entry.matches = 0; yyval.ext_entry.flag = 0; }break;case 28:#line 183 "aclyacc.y"{}break;case 29:#line 184 "aclyacc.y"{}break;case 30:#line 185 "aclyacc.y"{}break;case 31:#line 188 "aclyacc.y"{ yyval.ext_entry.protocol = IPPROTO_IGMP; yyval.ext_entry.precedence = 0; yyval.ext_entry.tos = 0; yyval.ext_entry.type = 0; yyval.ext_entry.type_code = 0; yyval.ext_entry.message = 0; yyval.ext_entry.src_op = 0; yyval.ext_entry.dst_op = 0; yyval.ext_entry.src_addr = yyvsp[-1].std_entry.src_addr; yyval.ext_entry.src_mask = yyvsp[-1].std_entry.src_mask; yyval.ext_entry.src_port = 0; yyval.ext_entry.src_port2 = 0; yyval.ext_entry.dst_addr = yyvsp[0].std_entry.src_addr; yyval.ext_entry.dst_mask = yyvsp[0].std_entry.src_mask; yyval.ext_entry.dst_port = 0; yyval.ext_entry.dst_port2 = 0; yyval.ext_entry.matches = 0; yyval.ext_entry.flag = 0; }break;case 32:#line 208 "aclyacc.y"{}break;case 33:#line 209 "aclyacc.y"{}break;case 34:#line 210 "aclyacc.y"{}break;case 35:#line 213 "aclyacc.y"{ yyval.ext_entry.protocol = IPPROTO_TCP; yyval.ext_entry.precedence = 0; yyval.ext_entry.tos = 0; yyval.ext_entry.type = 0; yyval.ext_entry.type_code = 0; yyval.ext_entry.message = 0; yyval.ext_entry.src_op = 0; yyval.ext_entry.dst_op = 0; yyval.ext_entry.src_addr = yyvsp[-1].std_entry.src_addr; yyval.ext_entry.src_mask = yyvsp[-1].std_entry.src_mask; yyval.ext_entry.src_port = 0; yyval.ext_entry.src_port2 = 0; yyval.ext_entry.dst_addr = yyvsp[0].std_entry.src_addr; yyval.ext_entry.dst_mask = yyvsp[0].std_entry.src_mask; yyval.ext_entry.dst_port = 0; yyval.ext_entry.dst_port2 = 0; yyval.ext_entry.matches = 0; yyval.ext_entry.flag = 0; }break;case 36:#line 233 "aclyacc.y"{}break;case 37:#line 234 "aclyacc.y"{}break;case 38:#line 235 "aclyacc.y"{}break;case 39:#line 238 "aclyacc.y"{ yyval.ext_entry.protocol = IPPROTO_UDP; yyval.ext_entry.precedence = 0; yyval.ext_entry.tos = 0; yyval.ext_entry.type = 0; yyval.ext_entry.type_code = 0; yyval.ext_entry.message = 0; yyval.ext_entry.src_op = 0; yyval.ext_entry.dst_op = 0; yyval.ext_entry.src_addr = yyvsp[-1].std_entry.src_addr; yyval.ext_entry.src_mask = yyvsp[-1].std_entry.src_mask; yyval.ext_entry.src_port = 0; yyval.ext_entry.src_port2 = 0; yyval.ext_entry.dst_addr = yyvsp[0].std_entry.src_addr; yyval.ext_entry.dst_mask = yyvsp[0].std_entry.src_mask; yyval.ext_entry.dst_port = 0; yyval.ext_entry.dst_port2 = 0; yyval.ext_entry.matches = 0; yyval.ext_entry.flag = 0; }break;case 40:#line 258 "aclyacc.y"{}break;case 41:#line 259 "aclyacc.y"{}break;case 42:#line 260 "aclyacc.y"{}break;case 61:#line 292 "aclyacc.y"{}break;case 62:#line 293 "aclyacc.y"{}break;case 63:#line 294 "aclyacc.y"{}break;case 64:#line 295 "aclyacc.y"{}break;case 65:#line 296 "aclyacc.y"{}break;case 66:#line 297 "aclyacc.y"{}break;case 67:#line 298 "aclyacc.y"{}break;case 68:#line 301 "aclyacc.y"{}break;case 74:#line 315 "aclyacc.y"{ yyval.std_entry.src_addr = yyvsp[-1].ip; yyval.std_entry.src_mask = yyvsp[0].ip; yyval.std_entry.matches = 0; yyval.std_entry.flag = 0; }break;case 75:#line 321 "aclyacc.y"{ yyval.std_entry.src_addr = 0x0; yyval.std_entry.src_mask = 0xFFFFFFFF; yyval.std_entry.matches = 0; yyval.std_entry.flag = 0; }break;case 76:#line 327 "aclyacc.y"{ yyval.std_entry.src_addr = yyvsp[0].ip; yyval.std_entry.src_mask = 0x0; yyval.std_entry.matches = 0; yyval.std_entry.flag = 0; }break;#line 853 "y.tab.c" } yyssp -= yym; yystate = *yyssp; yyvsp -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) {#if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state 0 to\ state %d\n", YYPREFIX, YYFINAL);#endif yystate = YYFINAL; *++yyssp = YYFINAL; *++yyvsp = yyval; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0;#if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); }#endif } if (yychar == 0) goto yyaccept; goto yyloop; } if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym];#if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state %d \to state %d\n", YYPREFIX, *yyssp, yystate);#endif if (yyssp >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate; *++yyvsp = yyval; goto yyloop;yyoverflow: yyerror("yacc stack overflow");yyabort: return (1);yyaccept: return (0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -