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;
2140 frentry_t *fr; local
2178 if ((fr = fin->fin_fr) != NULL) {
2179 IPF_BUMP(fr->fr_hits);
2180 fr->fr_bytes += (U_QUAD_T)fin->fin_plen;
2181 pass = fr->fr_flags;
2195 fr = fin->fin_fr;
2205 if ((fr != NULL) && (fr->fr_pps != 0) &&
2206 !ppsratecheck(&fr->fr_lastpkt, &fr->fr_curpps, fr->fr_pps)) {
2229 if ((fr != NULL) && (fr->fr_func != NULL) &&
2230 (fr->fr_func != (ipfunc_t)-1) && !(pass & FR_CALLNOW))
2231 (void) (*fr->fr_func)(fin, &pass);
2275 fr = fin->fin_fr;
2280 return fr;
2333 frentry_t *fr = NULL; local
2511 fr = fr_checkauth(fin, &pass);
2536 if (fr == NULL)
2538 fr = fr_knownfrag(fin, &pass);
2539 if (fr == NULL)
2540 fr = fr_checkstate(fin, &pass);
2542 if ((pass & FR_NOMATCH) || (fr == NULL))
2543 fr = fr_firewall(fin, &pass);
2545 fin->fin_fr = fr;
2605 if ((fr != NULL) && (pass & FR_DUP)) {
2724 if (fr != NULL) {
2727 fdp = &fr->fr_tifs[fin->fin_rev];
2757 (void) fr_fastroute(mc, &mc, fin, &fr->fr_dif);
3453 frentry_t *fr; local
3459 for (fr = fg->fg_head; fr && n; fr = fr->fr_next, n--)
3463 return fr;
3475 int fr_rulen(unit, fr, ifs) in fr_rulen() argument
3477 frentry_t *fr;
3484 if (fr == NULL)
3486 fg = fr_findgroup(fr->fr_group, unit, ifs->ifs_fr_active, NULL, ifs);
3490 if (fh == fr)
3837 static void frsynclist(action, v, ifp, ifname, fr, ifs) in frsynclist() argument
3841 frentry_t *fr;
3847 for (; fr; fr = fr->fr_next) {
3848 rv = fr->fr_v;
3856 fr->fr_ifas[i] = fr_ifsync(action, rv, ifname,
3857 fr->fr_ifnames[i],
3858 ifp, fr->fr_ifas[i],
3862 fdp = &fr->fr_tifs[0];
3866 fdp = &fr->fr_tifs[1];
3870 fdp = &fr->fr_dif;
3877 if (fr->fr_type == FR_T_IPF) {
3878 if (fr->fr_satype != FRI_NORMAL &&
3879 fr->fr_satype != FRI_LOOKUP) {
3880 (void)fr_ifpaddr(rv, fr->fr_satype,
3881 fr->fr_ifas[fr->fr_sifpidx],
3882 &fr->fr_src, &fr->fr_smsk,
3885 if (fr->fr_datype != FRI_NORMAL &&
3886 fr->fr_datype != FRI_LOOKUP) {
3887 (void)fr_ifpaddr(rv, fr->fr_datype,
3888 fr->fr_ifas[fr->fr_difpidx],
3889 &fr->fr_dst, &fr->fr_dmsk,
3895 if (fr->fr_type == FR_T_IPF && fr->fr_satype == FRI_LOOKUP &&
3896 fr->fr_srcptr == NULL) {
3897 fr->fr_srcptr = fr_resolvelookup(fr->fr_srctype,
3898 fr->fr_srcnum,
3899 &fr->fr_srcfunc, ifs);
3901 if (fr->fr_type == FR_T_IPF && fr->fr_datype == FRI_LOOKUP &&
3902 fr->fr_dstptr == NULL) {
3903 fr->fr_dstptr = fr_resolvelookup(fr->fr_dsttype,
3904 fr->fr_dstnum,
3905 &fr->fr_dstfunc, ifs);
3977 frentry_t *fr; local
3979 for (fr = rules; fr != NULL; fr = fr->fr_next) {
3984 if (fr->fr_ifas[i] == ifp)
3985 fr->fr_ifas[i] = newifp;
3988 if (fr->fr_tifs[i].fd_ifp == ifp)
3989 fr->fr_tifs[i].fd_ifp = newifp;
3992 if (fr->fr_dif.fd_ifp == ifp)
3993 fr->fr_dif.fd_ifp = newifp;
4850 static int fr_funcinit(fr, ifs) in fr_funcinit() argument
4851 frentry_t *fr; in fr_funcinit()
4860 if (ft->ipfu_addr == fr->fr_func) {
4863 err = (*ft->ipfu_init)(fr, ifs);
4999 frentry_t *fr; local
5001 fr = *frp;
5003 MUTEX_ENTER(&fr->fr_lock);
5004 fr->fr_ref--;
5005 if (fr->fr_ref == 0) {
5006 MUTEX_EXIT(&fr->fr_lock);
5007 MUTEX_DESTROY(&fr->fr_lock);
5010 if (fr->fr_type == FR_T_IPF && fr->fr_satype == FRI_LOOKUP)
5011 ip_lookup_deref(fr->fr_srctype, fr->fr_srcptr, ifs);
5012 if (fr->fr_type == FR_T_IPF && fr->fr_datype == FRI_LOOKUP)
5013 ip_lookup_deref(fr->fr_dsttype, fr->fr_dstptr, ifs);
5016 if (fr->fr_dsize) {
5017 KFREES(fr->fr_data, fr->fr_dsize);
5019 if ((fr->fr_flags & FR_COPIED) != 0) {
5020 KFREE(fr);
5025 MUTEX_EXIT(&fr->fr_lock);
5041 static int fr_grpmapinit(fr, ifs) in fr_grpmapinit() argument
5042 frentry_t *fr; in fr_grpmapinit()
5049 (void) SNPRINTF(name, sizeof(name), "%d", fr->fr_arg);
5051 (void) sprintf(name, "%d", fr->fr_arg);
5056 if ((iph->iph_flags & FR_INOUT) != (fr->fr_flags & FR_INOUT))
5058 fr->fr_ptr = iph;
7263 frentry_t *fr, *next, zero; local
7296 fr = t->ipt_data;
7297 if (fr == NULL) {
7328 next = fr->fr_next;
7367 if (fr != NULL)
7368 (void) fr_derefrule(&fr, ifs);
7388 fr = next;
7389 next = fr->fr_next;