Lines Matching refs:fr
204 static int fr_funcinit __P((frentry_t *fr, ipf_stack_t *));
218 static int fr_grpmapinit __P((frentry_t *fr, ipf_stack_t *));
1671 static INLINE int fr_ipfcheck(fin, fr, portcmp) in fr_ipfcheck() argument
1673 frentry_t *fr;
1683 fri = fr->fr_ipf;
1717 if (fr->fr_satype == FRI_LOOKUP) {
1719 i = (*fr->fr_srcfunc)(fr->fr_srcptr, fi->fi_v, lip, fin, ifs);
1751 i ^= (fr->fr_flags & FR_NOTSRCIP) >> 6;
1760 if (fr->fr_datype == FRI_LOOKUP) {
1762 i = (*fr->fr_dstfunc)(fr->fr_dstptr, fi->fi_v, lip, fin, ifs);
1794 i ^= (fr->fr_flags & FR_NOTDSTIP) >> 7;
1820 if (!fr_tcpudpchk(fin, &fr->fr_tuc))
1823 if (fr->fr_dcmp || fr->fr_scmp ||
1824 fr->fr_tcpf || fr->fr_tcpfm)
1826 if (fr->fr_icmpm || fr->fr_icmp) {
1831 else if ((fin->fin_data[0] & fr->fr_icmpm) !=
1832 fr->fr_icmp) {
1835 fr->fr_icmpm, fr->fr_icmp));
1866 struct frentry *fr, *fnext; local
1876 fr = fin->fin_fr;
1881 if (fr == NULL)
1894 for (rulen = 0; fr; fr = fnext, rulen++) {
1895 fnext = fr->fr_next;
1897 FR_VERBOSE(("%d (%#x)\n", skip, fr->fr_flags));
1909 if (fr->fr_ifa && fr->fr_ifa != fin->fin_ifp)
1919 if (fr->fr_ifa && fr->fr_ifa != fin->fin_ifp)
1924 switch (fr->fr_type)
1928 if (fr_ipfcheck(fin, fr, portcmp))
1939 if (fin->fin_v != fr->fr_v)
1942 if (!bpf_filter(fr->fr_data, mc, fin->fin_plen, 0))
1951 f = (*fr->fr_func)(fin, &pass);
1953 fr = f;
1962 if ((fin->fin_out == 0) && (fr->fr_nattag.ipt_num[0] != 0)) {
1965 if (fr_matchtag(&fr->fr_nattag, fin->fin_nattag) == 0)
1968 FR_VERBOSE(("=%s.%d *", fr->fr_group, rulen));
1970 passt = fr->fr_flags;
1987 IPF_BUMP(fr->fr_hits);
1988 fr->fr_bytes += (U_QUAD_T)fin->fin_plen;
1990 if ((fr->fr_func != NULL) &&
1991 (fr->fr_func != (ipfunc_t)-1)) {
1995 fin->fin_fr = fr;
1996 fr = (*fr->fr_func)(fin, &passt);
1997 if (fr == NULL) {
2001 passt = fr->fr_flags;
2002 fin->fin_fr = fr;
2005 fin->fin_fr = fr;
2026 skip = fr->fr_arg;
2030 fin->fin_icode = fr->fr_icode;
2033 (void) strncpy(fin->fin_group, fr->fr_group, FR_GROUPLEN);
2034 if (fr->fr_grp != NULL) {
2035 fin->fin_fr = *fr->fr_grp;
2039 (void) strncpy(fin->fin_group, fr->fr_group,
2041 fin->fin_fr = fr;
2094 frentry_t *fr, *frsave; local
2101 fr = ifs->ifs_ipacct6[fin->fin_out][ifs->ifs_fr_active];
2104 fr = ifs->ifs_ipacct[fin->fin_out][ifs->ifs_fr_active];
2106 if (fr != NULL) {
2110 fin->fin_fr = fr;
2141 frentry_t *fr; local
2179 if ((fr = fin->fin_fr) != NULL) {
2180 IPF_BUMP(fr->fr_hits);
2181 fr->fr_bytes += (U_QUAD_T)fin->fin_plen;
2182 pass = fr->fr_flags;
2197 fr = fin->fin_fr;
2207 if ((fr != NULL) && (fr->fr_pps != 0) &&
2208 !ppsratecheck(&fr->fr_lastpkt, &fr->fr_curpps, fr->fr_pps)) {
2231 if ((fr != NULL) && (fr->fr_func != NULL) &&
2232 (fr->fr_func != (ipfunc_t)-1) && !(pass & FR_CALLNOW))
2233 (void) (*fr->fr_func)(fin, &pass);
2277 fr = fin->fin_fr;
2282 return fr;
2335 frentry_t *fr = NULL; local
2513 fr = fr_checkauth(fin, &pass);
2538 if (fr == NULL)
2540 fr = fr_knownfrag(fin, &pass);
2541 if (fr == NULL)
2542 fr = fr_checkstate(fin, &pass);
2544 if ((pass & FR_NOMATCH) || (fr == NULL))
2545 fr = fr_firewall(fin, &pass);
2547 fin->fin_fr = fr;
2607 if ((fr != NULL) && (pass & FR_DUP)) {
2726 if (fr != NULL) {
2729 fdp = &fr->fr_tifs[fin->fin_rev];
2759 (void) fr_fastroute(mc, &mc, fin, &fr->fr_dif);
3455 frentry_t *fr; local
3461 for (fr = fg->fg_head; fr && n; fr = fr->fr_next, n--)
3465 return fr;
3477 int fr_rulen(unit, fr, ifs) in fr_rulen() argument
3479 frentry_t *fr;
3486 if (fr == NULL)
3488 fg = fr_findgroup(fr->fr_group, unit, ifs->ifs_fr_active, NULL, ifs);
3492 if (fh == fr)
3841 static void frsynclist(action, v, ifp, ifname, fr, ifs) in frsynclist() argument
3845 frentry_t *fr;
3851 for (; fr; fr = fr->fr_next) {
3852 rv = fr->fr_v;
3860 fr->fr_ifas[i] = fr_ifsync(action, rv, ifname,
3861 fr->fr_ifnames[i],
3862 ifp, fr->fr_ifas[i],
3866 fdp = &fr->fr_tifs[0];
3870 fdp = &fr->fr_tifs[1];
3874 fdp = &fr->fr_dif;
3881 if (fr->fr_type == FR_T_IPF) {
3882 if (fr->fr_satype != FRI_NORMAL &&
3883 fr->fr_satype != FRI_LOOKUP) {
3884 (void)fr_ifpaddr(rv, fr->fr_satype,
3885 fr->fr_ifas[fr->fr_sifpidx],
3886 &fr->fr_src, &fr->fr_smsk,
3889 if (fr->fr_datype != FRI_NORMAL &&
3890 fr->fr_datype != FRI_LOOKUP) {
3891 (void)fr_ifpaddr(rv, fr->fr_datype,
3892 fr->fr_ifas[fr->fr_difpidx],
3893 &fr->fr_dst, &fr->fr_dmsk,
3899 if (fr->fr_type == FR_T_IPF && fr->fr_satype == FRI_LOOKUP &&
3900 fr->fr_srcptr == NULL) {
3901 fr->fr_srcptr = fr_resolvelookup(fr->fr_srctype,
3902 fr->fr_srcnum,
3903 &fr->fr_srcfunc, ifs);
3905 if (fr->fr_type == FR_T_IPF && fr->fr_datype == FRI_LOOKUP &&
3906 fr->fr_dstptr == NULL) {
3907 fr->fr_dstptr = fr_resolvelookup(fr->fr_dsttype,
3908 fr->fr_dstnum,
3909 &fr->fr_dstfunc, ifs);
3981 frentry_t *fr; local
3983 for (fr = rules; fr != NULL; fr = fr->fr_next) {
3988 if (fr->fr_ifas[i] == ifp)
3989 fr->fr_ifas[i] = newifp;
3992 if (fr->fr_tifs[i].fd_ifp == ifp)
3993 fr->fr_tifs[i].fd_ifp = newifp;
3996 if (fr->fr_dif.fd_ifp == ifp)
3997 fr->fr_dif.fd_ifp = newifp;
4854 static int fr_funcinit(fr, ifs) in fr_funcinit() argument
4855 frentry_t *fr; in fr_funcinit()
4864 if (ft->ipfu_addr == fr->fr_func) {
4867 err = (*ft->ipfu_init)(fr, ifs);
5003 frentry_t *fr; local
5005 fr = *frp;
5007 MUTEX_ENTER(&fr->fr_lock);
5008 fr->fr_ref--;
5009 if (fr->fr_ref == 0) {
5010 MUTEX_EXIT(&fr->fr_lock);
5011 MUTEX_DESTROY(&fr->fr_lock);
5014 if (fr->fr_type == FR_T_IPF && fr->fr_satype == FRI_LOOKUP)
5015 ip_lookup_deref(fr->fr_srctype, fr->fr_srcptr, ifs);
5016 if (fr->fr_type == FR_T_IPF && fr->fr_datype == FRI_LOOKUP)
5017 ip_lookup_deref(fr->fr_dsttype, fr->fr_dstptr, ifs);
5020 if (fr->fr_dsize) {
5021 KFREES(fr->fr_data, fr->fr_dsize);
5023 if ((fr->fr_flags & FR_COPIED) != 0) {
5024 KFREE(fr);
5029 MUTEX_EXIT(&fr->fr_lock);
5045 static int fr_grpmapinit(fr, ifs) in fr_grpmapinit() argument
5046 frentry_t *fr; in fr_grpmapinit()
5053 (void) SNPRINTF(name, sizeof(name), "%d", fr->fr_arg);
5055 (void) sprintf(name, "%d", fr->fr_arg);
5060 if ((iph->iph_flags & FR_INOUT) != (fr->fr_flags & FR_INOUT))
5062 fr->fr_ptr = iph;
7267 frentry_t *fr, *next, zero; local
7300 fr = t->ipt_data;
7301 if (fr == NULL) {
7332 next = fr->fr_next;
7371 if (fr != NULL)
7372 (void) fr_derefrule(&fr, ifs);
7392 fr = next;
7393 next = fr->fr_next;