Lines Matching refs:fr

25 #define	DOALL(x)	for (fr = frc; fr != NULL; fr = fr->fr_next) { x }
26 #define DOREM(x) for (; fr != NULL; fr = fr->fr_next) { x }
56 frentry_t *fr = NULL, *frc = NULL, *frtop = NULL, *frold = NULL; variable
87 frentry_t fr; member
186 line: xx rule { while ((fr = frtop) != NULL) {
187 frtop = fr->fr_next;
188 fr->fr_next = NULL;
189 (*ipfaddfunc)(ipffd, ipfioctl[IPL_LOGIPF], fr);
190 fr->fr_next = frold;
191 frold = fr;
256 markin: IPFY_IN { fr->fr_flags |= FR_INQUE; }
260 IPFY_OUT { fr->fr_flags |= FR_OUTQUE; }
292 '@' YY_NUMBER { fr->fr_hits = (U_QUAD_T)$2 + 1; }
296 | YY_NUMBER { fr->fr_collect = $1; }
300 | IPFY_PASS { fr->fr_flags |= FR_PASS; }
302 | IPFY_COUNT { fr->fr_flags |= FR_ACCOUNT; }
304 | IPFY_SKIP YY_NUMBER { fr->fr_flags |= FR_SKIP;
305 fr->fr_arg = $2; }
307 | IPFY_CALL IPFY_NOW func { fr->fr_flags |= FR_CALLNOW; }
315 IPFY_BLOCK { fr->fr_flags = FR_BLOCK; }
318 IPFY_RETICMP { fr->fr_flags |= FR_RETICMP; }
319 | IPFY_RETICMP returncode { fr->fr_flags |= FR_RETICMP; }
320 | IPFY_RETICMPASDST { fr->fr_flags |= FR_FAKEICMP; }
321 | IPFY_RETICMPASDST returncode { fr->fr_flags |= FR_FAKEICMP; }
322 | IPFY_RETRST { fr->fr_flags |= FR_RETRST; }
325 log: IPFY_LOG { fr->fr_flags |= FR_LOG; }
326 | IPFY_LOG logoptions { fr->fr_flags |= FR_LOG; }
329 auth: IPFY_AUTH { fr->fr_flags |= FR_AUTH; }
330 | IPFY_AUTH IPFY_RETRST { fr->fr_flags |= (FR_AUTH|FR_RETRST);}
331 | IPFY_PREAUTH { fr->fr_flags |= FR_PREAUTH; }
334 func: YY_STR '/' YY_NUMBER { fr->fr_func = nametokva($1,
336 fr->fr_arg = $3;
432 tos: | settos YY_NUMBER { DOALL(fr->fr_tos = $2; fr->fr_mtos = 0xff;) }
433 | settos YY_HEX { DOALL(fr->fr_tos = $2; fr->fr_mtos = 0xff;) }
441 YY_NUMBER { DOALL(fr->fr_tos = $1; fr->fr_mtos = 0xff;) }
442 | YY_HEX { DOREM(fr->fr_tos = $1; fr->fr_mtos = 0xff;) }
444 { DOREM(fr->fr_tos = $3; fr->fr_mtos = 0xff;) }
446 { DOREM(fr->fr_tos = $3; fr->fr_mtos = 0xff;) }
450 { DOALL(fr->fr_ttl = $2; fr->fr_mttl = 0xff;) }
454 lstart: '(' { newlist = 1; fr = frc; added = 0; }
463 fr = addrule();
477 YY_NUMBER { DOREM(fr->fr_ttl = $1; fr->fr_mttl = 0xff;) }
479 { DOREM(fr->fr_ttl = $3; fr->fr_mttl = 0xff;) }
486 fr = frc;
493 group: | IPFY_GROUP YY_STR { DOALL(strncpy(fr->fr_group, $2, \
495 fillgroup(fr););
497 | IPFY_GROUP YY_NUMBER { DOALL(sprintf(fr->fr_group, "%d", \
499 fillgroup(fr);) }
502 head: | IPFY_HEAD YY_STR { DOALL(strncpy(fr->fr_grhead, $2, \
505 | IPFY_HEAD YY_NUMBER { DOALL(sprintf(fr->fr_grhead, "%d", \
523 nattag: IPFY_NAT '=' YY_STR { DOALL(strncpy(fr->fr_nattag.ipt_tag,\
526 | IPFY_NAT '=' YY_NUMBER { DOALL(sprintf(fr->fr_nattag.ipt_tag,\
530 logtag: IPFY_LOG '=' YY_NUMBER { DOALL(fr->fr_logtag = $3;) }
555 pps: | IPFY_PPS YY_NUMBER { DOALL(fr->fr_pps = $2;) }
573 IPFY_QUICK { fr->fr_flags |= FR_QUICK; }
582 { strncpy(fr->fr_ifnames[0], $1, sizeof(fr->fr_ifnames[0]));
586 { strncpy(fr->fr_ifnames[0], $1, sizeof(fr->fr_ifnames[0]));
588 strncpy(fr->fr_ifnames[1], $3, sizeof(fr->fr_ifnames[1]));
595 { strncpy(fr->fr_ifnames[2], $1, sizeof(fr->fr_ifnames[2]));
599 { strncpy(fr->fr_ifnames[2], $1, sizeof(fr->fr_ifnames[2]));
601 strncpy(fr->fr_ifnames[3], $3, sizeof(fr->fr_ifnames[3]));
607 { strncpy(fr->fr_dif.fd_ifname, $2, sizeof(fr->fr_dif.fd_ifname));
609 fr->fr_flags |= FR_DUP;
612 { strncpy(fr->fr_dif.fd_ifname, $2, sizeof(fr->fr_dif.fd_ifname));
614 fr->fr_dif.fd_ip = $4.in4;
616 bcopy(&$4, &fr->fr_dif.fd_ip6, sizeof(fr->fr_dif.fd_ip6));
618 fr->fr_flags |= FR_DUP;
622 { strncpy(fr->fr_dif.fd_ifname, $2, sizeof(fr->fr_dif.fd_ifname));
623 bcopy(&$4, &fr->fr_dif.fd_ip6, sizeof(fr->fr_dif.fd_ip6));
625 fr->fr_flags |= FR_DUP;
634 froute: IPFY_FROUTE { fr->fr_flags |= FR_FASTROUTE; }
638 { strncpy(fr->fr_tif.fd_ifname, $2, sizeof(fr->fr_tif.fd_ifname));
642 { strncpy(fr->fr_tif.fd_ifname, $2, sizeof(fr->fr_tif.fd_ifname));
644 fr->fr_tif.fd_ip = $4.in4;
646 bcopy(&$4, &fr->fr_tif.fd_ip6, sizeof(fr->fr_tif.fd_ip6));
651 { strncpy(fr->fr_tif.fd_ifname, $2, sizeof(fr->fr_tif.fd_ifname));
652 bcopy(&$4, &fr->fr_tif.fd_ip6, sizeof(fr->fr_tif.fd_ip6));
665 { strncpy(fr->fr_rif.fd_ifname, $2, sizeof(fr->fr_rif.fd_ifname));
669 { strncpy(fr->fr_rif.fd_ifname, $2, sizeof(fr->fr_rif.fd_ifname));
671 fr->fr_rif.fd_ip = $4.in4;
673 bcopy(&$4, &fr->fr_rif.fd_ip6, sizeof(fr->fr_rif.fd_ip6));
678 { strncpy(fr->fr_rif.fd_ifname, $2, sizeof(fr->fr_rif.fd_ifname));
679 bcopy(&$4, &fr->fr_rif.fd_ip6, sizeof(fr->fr_rif.fd_ip6));
691 IPFY_BODY { fr->fr_flags |= FR_LOGBODY; }
692 | IPFY_FIRST { fr->fr_flags |= FR_LOGFIRST; }
693 | IPFY_ORBLOCK { fr->fr_flags |= FR_LOGORBLOCK; }
698 starticmpcode icmpcode ')' { fr->fr_icode = $2; yyresetdict(); }
710 YY_NUMBER { DOREM(fr->fr_proto = $1; \
711 fr->fr_mproto = 0xff;) }
713 DOREM(fr->fr_flx |= FI_TCPUDP; \
714 fr->fr_mflx |= FI_TCPUDP;)
719 DOREM(fr->fr_proto = p; \
720 fr->fr_mproto = 0xff;)
727 DOREM(fr->fr_flx |= FI_TCPUDP; \
728 fr->fr_mflx |= FI_TCPUDP;)
746 if (fr == NULL)
747 fr = frc;
756 to: IPFY_TO { if (fr == NULL)
757 fr = frc;
775 { DOALL(fr->fr_tcpf = $2; fr->fr_tcpfm = FR_TCPFMAX;) }
777 { DOALL(fr->fr_tcpf = $2; fr->fr_tcpfm = $4;) }
779 { DOALL(fr->fr_tcpf = 0; fr->fr_tcpfm = $3;) }
781 { DOALL(fr->fr_tcpf = $2; fr->fr_tcpfm = FR_TCPFMAX;) }
783 { DOALL(fr->fr_tcpf = 0; fr->fr_tcpfm = $3;) }
785 { DOALL(fr->fr_tcpf = $2; fr->fr_tcpfm = $4;) }
787 { DOALL(fr->fr_tcpf = $2; fr->fr_tcpfm = $4;) }
789 { DOALL(fr->fr_tcpf = $2; fr->fr_tcpfm = $4;) }
809 { DOALL(fr->fr_flags |= FR_NOTSRCIP;) }
813 addr { DOREM(bcopy(&($1.a), &fr->fr_ip.fi_src, sizeof($1.a)); \
814 bcopy(&($1.m), &fr->fr_mip.fi_src, sizeof($1.m)); \
816 fr->fr_satype = ifpflag; \
817 fr->fr_ipf->fri_sifpidx = dynamic; \
819 fr->fr_satype = FRI_LOOKUP;)
825 addr { DOREM(bcopy(&($1.a), &fr->fr_ip.fi_src, sizeof($1.a)); \
826 bcopy(&($1.m), &fr->fr_mip.fi_src, sizeof($1.m)); \
828 fr->fr_satype = ifpflag; \
829 fr->fr_ipf->fri_sifpidx = dynamic; \
831 fr->fr_satype = FRI_LOOKUP;)
834 { DOREM(bcopy(&($3.a), &fr->fr_ip.fi_src, sizeof($3.a)); \
835 bcopy(&($3.m), &fr->fr_mip.fi_src, sizeof($3.m)); \
837 fr->fr_satype = ifpflag; \
838 fr->fr_ipf->fri_sifpidx = dynamic; \
840 fr->fr_satype = FRI_LOOKUP;)
846 { DOALL(fr->fr_scmp = $1.pc; fr->fr_sport = $1.p1;) }
848 { DOALL(fr->fr_scmp = $1.pc; fr->fr_sport = $1.p1; \
849 fr->fr_stop = $1.p2;) }
856 { DOALL(fr->fr_scmp = $1.pc; fr->fr_sport = $1.p1;) }
858 { DOALL(fr->fr_scmp = $1.pc; fr->fr_sport = $1.p1; \
859 fr->fr_stop = $1.p2;) }
865 portnum { DOREM(fr->fr_scmp = FR_EQUAL; fr->fr_sport = $1;) }
867 { DOREM(fr->fr_scmp = FR_EQUAL; fr->fr_sport = $3;) }
874 { DOALL(fr->fr_flags |= FR_NOTDSTIP;) }
878 addr { DOREM(bcopy(&($1.a), &fr->fr_ip.fi_dst, sizeof($1.a)); \
879 bcopy(&($1.m), &fr->fr_mip.fi_dst, sizeof($1.m)); \
881 fr->fr_datype = ifpflag; \
882 fr->fr_ipf->fri_difpidx = dynamic; \
884 fr->fr_datype = FRI_LOOKUP;)
890 addr { DOREM(bcopy(&($1.a), &fr->fr_ip.fi_dst, sizeof($1.a)); \
891 bcopy(&($1.m), &fr->fr_mip.fi_dst, sizeof($1.m)); \
893 fr->fr_datype = ifpflag; \
894 fr->fr_ipf->fri_difpidx = dynamic; \
896 fr->fr_datype = FRI_LOOKUP;)
899 { DOREM(bcopy(&($3.a), &fr->fr_ip.fi_dst, sizeof($3.a)); \
900 bcopy(&($3.m), &fr->fr_mip.fi_dst, sizeof($3.m)); \
902 fr->fr_datype = ifpflag; \
903 fr->fr_ipf->fri_difpidx = dynamic; \
905 fr->fr_datype = FRI_LOOKUP;)
912 { DOALL(fr->fr_dcmp = $1.pc; fr->fr_dport = $1.p1;) }
914 { DOALL(fr->fr_dcmp = $1.pc; fr->fr_dport = $1.p1; \
915 fr->fr_dtop = $1.p2;) }
922 { DOALL(fr->fr_dcmp = $1.pc; fr->fr_dport = $1.p1;) }
924 { DOALL(fr->fr_dcmp = $1.pc; fr->fr_dport = $1.p1; \
925 fr->fr_dtop = $1.p2;) }
931 portnum { DOREM(fr->fr_dcmp = FR_EQUAL; fr->fr_dport = $1;) }
933 { DOREM(fr->fr_dcmp = FR_EQUAL; fr->fr_dport = $3;) }
1156 { DOALL(fr->fr_icmp = htons($2 << 8); fr->fr_icmpm = htons(0xff00););
1168 { DOALL(fr->fr_icmp |= htons($2); fr->fr_icmpm |= htons(0xff););
1180 { DOREM(fr->fr_icmp = htons($1 << 8); fr->fr_icmpm = htons(0xff00);) }
1182 { DOREM(fr->fr_icmp = htons($3 << 8); fr->fr_icmpm = htons(0xff00);) }
1187 { DOREM(fr->fr_icmp |= htons($1); fr->fr_icmpm |= htons(0xff);) }
1189 { DOREM(fr->fr_icmp |= htons($3); fr->fr_icmpm |= htons(0xff);) }
1192 age: | IPFY_AGE YY_NUMBER { DOALL(fr->fr_age[0] = $2; \
1193 fr->fr_age[1] = $2;) }
1195 { DOALL(fr->fr_age[0] = $2; \
1196 fr->fr_age[1] = $4;) }
1206 IPFY_STATE stateoptlist { DOALL(fr->fr_flags |= FR_KEEPSTATE;)}
1210 IPFY_FRAGS fragoptlist { DOALL(fr->fr_flags |= FR_KEEPFRAG;) }
1211 | IPFY_FRAG fragoptlist { DOALL(fr->fr_flags |= FR_KEEPFRAG;) }
1224 IPFY_STRICT { DOALL(fr->fr_flags |= FR_FRSTRICT;) }
1237 IPFY_LIMIT YY_NUMBER { DOALL(fr->fr_statemax = $2;) }
1238 | IPFY_STRICT { DOALL(if (fr->fr_proto != IPPROTO_TCP) { \
1241 fr->fr_flags |= FR_STSTRICT;)
1243 | IPFY_NEWISN { DOALL(if (fr->fr_proto != IPPROTO_TCP) { \
1246 fr->fr_flags |= FR_NEWISN;)
1248 | IPFY_NOICMPERR { DOALL(fr->fr_flags |= FR_NOICMPERR;) }
1250 | IPFY_SYNC { DOALL(fr->fr_flags |= FR_STATESYNC;) }
1274 opttype { DOALL(fr->fr_flx |= $1; fr->fr_mflx |= $1;) }
1276 { DOALL(fr->fr_mflx |= $2;) }
1315 ipopts: optlist { DOALL(fr->fr_mip.fi_optmsk |= $1;
1317 fr->fr_ip.fi_optmsk |= $1;)
1327 ipv6hdrlist { DOALL(fr->fr_mip.fi_optmsk |= $1;
1329 fr->fr_ip.fi_optmsk |= $1;)
1419 { DOALL(fr->fr_mip.fi_secmsk |= $2;
1421 fr->fr_ip.fi_secmsk |= $2;)
1446 priority { fr->fr_loglevel = LOG_LOCAL0|$1; }
1447 | facility '.' priority { fr->fr_loglevel = $1 | $3; }
1871 for (fr = frtop; fr != NULL && fr->fr_next != NULL; fr = fr->fr_next) in newrule()
1873 if (fr != NULL) in newrule()
1874 fr->fr_next = frn; in newrule()
1877 fr = frn; in newrule()
1879 fr->fr_loglevel = 0xffff; in newrule()
1880 fr->fr_isc = (void *)-1; in newrule()
1881 fr->fr_logtag = FR_NOLOGTAG; in newrule()
1882 fr->fr_type = FR_T_NONE; in newrule()
1884 fr->fr_v = 6; in newrule()
1886 fr->fr_v = 4; in newrule()
1894 for (fr = frc; fr != NULL; fr = fr->fr_next) { in setipftype()
1895 if (fr->fr_type == FR_T_NONE) { in setipftype()
1896 fr->fr_type = FR_T_IPF; in setipftype()
1897 fr->fr_data = (void *)calloc(sizeof(fripf_t), 1); in setipftype()
1898 if (fr->fr_data == NULL) in setipftype()
1900 fr->fr_dsize = sizeof(fripf_t); in setipftype()
1901 fr->fr_ip.fi_v = frc->fr_v; in setipftype()
1902 fr->fr_mip.fi_v = 0xf; in setipftype()
1903 fr->fr_ipf->fri_sifpidx = -1; in setipftype()
1904 fr->fr_ipf->fri_difpidx = -1; in setipftype()
1906 if (fr->fr_type != FR_T_IPF) { in setipftype()
1999 for (fr = frc; fr != NULL; fr = fr->fr_next) {
2000 if (fr->fr_type != FR_T_NONE) {
2004 fr->fr_v = v;
2005 fr->fr_type = FR_T_BPFOPC;
2041 fr->fr_dsize = (i / 4 + 1) * sizeof(*fb);
2042 fr->fr_data = fb;
2062 fr->fr_dsize = bpf.bf_len * sizeof(struct bpf_insn);
2063 fr->fr_data = malloc(fr->fr_dsize);
2064 if (fr->fr_data == NULL)
2066 bcopy((char *)bpf.bf_insns, fr->fr_data, fr->fr_dsize);
2067 if (!bpf_validate(fr->fr_data, bpf.bf_len)) {
2206 frentry_t *fr; local
2209 fr = ptr;
2215 obj.ipfo_size = sizeof(*fr);
2225 add = (u_int)fr->fr_hits ? SIOCINIFR :
2229 add = (u_int)fr->fr_hits ? SIOCINAFR :
2234 if (fr && (opts & OPT_OUTQUE))
2235 fr->fr_flags |= FR_OUTQUE;
2236 if (fr->fr_hits)
2237 fr->fr_hits--;
2238 if (fr && (opts & OPT_VERBOSE))
2239 printfr(fr, ioctlfunc);
2242 binprint(fr, sizeof(*fr));
2243 if (fr->fr_data != NULL)
2244 binprint(fr->fr_data, fr->fr_dsize);
2256 (long long)fr->fr_hits,
2257 (long long)fr->fr_bytes);
2260 fr->fr_hits, fr->fr_bytes);
2262 printfr(fr, ioctlfunc);
2295 static void fillgroup(fr) in fillgroup() argument
2296 frentry_t *fr; in fillgroup()
2301 if (strncmp(f->fr_grhead, fr->fr_group, FR_GROUPLEN) == 0)
2312 if (f->fr_type != fr->fr_type || f->fr_type != FR_T_IPF)
2315 if (fr->fr_v == 0 && f->fr_v != 0)
2316 fr->fr_v = f->fr_v;
2318 if (fr->fr_mproto == 0 && f->fr_mproto != 0)
2319 fr->fr_mproto = f->fr_mproto;
2320 if (fr->fr_proto == 0 && f->fr_proto != 0)
2321 fr->fr_proto = f->fr_proto;
2323 if ((fr->fr_mproto == 0) && ((fr->fr_flx & FI_TCPUDP) == 0) &&
2325 fr->fr_flx |= FI_TCPUDP;