summaryrefslogtreecommitdiffstats
path: root/sys/contrib/ipfilter/netinet/ip_state.c
diff options
context:
space:
mode:
authordarrenr <darrenr@FreeBSD.org>2002-08-28 13:34:58 +0000
committerdarrenr <darrenr@FreeBSD.org>2002-08-28 13:34:58 +0000
commit3b0944d7d8baa1478dc2bf42feb9040e7163fb81 (patch)
tree8a7db46447f3037b333ad93edf7cc6e4fbc20589 /sys/contrib/ipfilter/netinet/ip_state.c
parent09b4027f13b09dedea4e76f08d6bbe525dd0626f (diff)
downloadFreeBSD-src-3b0944d7d8baa1478dc2bf42feb9040e7163fb81.zip
FreeBSD-src-3b0944d7d8baa1478dc2bf42feb9040e7163fb81.tar.gz
3rd time lucky, i hope.
Diffstat (limited to 'sys/contrib/ipfilter/netinet/ip_state.c')
-rw-r--r--sys/contrib/ipfilter/netinet/ip_state.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/contrib/ipfilter/netinet/ip_state.c b/sys/contrib/ipfilter/netinet/ip_state.c
index f4dac8a..43fe820 100644
--- a/sys/contrib/ipfilter/netinet/ip_state.c
+++ b/sys/contrib/ipfilter/netinet/ip_state.c
@@ -93,7 +93,7 @@
#if !defined(lint)
static const char sccsid[] = "@(#)ip_state.c 1.8 6/5/96 (C) 1993-2000 Darren Reed";
-static const char rcsid[] = "@(#)$Id: ip_state.c,v 2.30.2.71 2002/05/29 14:23:05 darrenr Exp $";
+static const char rcsid[] = "@(#)$Id: ip_state.c,v 2.30.2.74 2002/07/27 15:58:10 darrenr Exp $";
#endif
#ifndef MIN
@@ -741,6 +741,7 @@ u_int flags;
is->is_hv = hv;
is->is_rule = fin->fin_fr;
if (is->is_rule != NULL) {
+ is->is_group = is->is_rule->fr_group;
ATOMIC_INC32(is->is_rule->fr_ref);
pass = is->is_rule->fr_flags;
is->is_frage[0] = is->is_rule->fr_age[0];
@@ -810,7 +811,7 @@ u_int flags;
RWLOCK_EXIT(&ipf_state);
fin->fin_rev = IP6NEQ(is->is_dst, fin->fin_fi.fi_dst);
if ((fin->fin_fl & FI_FRAG) && (pass & FR_KEEPFRAG))
- ipfr_newfrag(ip, fin, pass ^ FR_KEEPSTATE);
+ ipfr_newfrag(ip, fin);
return is;
}
@@ -1066,7 +1067,7 @@ tcphdr_t *tcp;
} else {
is->is_src = fin->fin_fi.fi_dst;
}
- } else if ((flags & FI_W_DPORT) != 0) {
+ } else if ((flags & FI_W_DADDR) != 0) {
if (rev == 0) {
is->is_dst = fin->fin_fi.fi_dst;
} else {
@@ -1402,7 +1403,8 @@ fr_info_t *fin;
tcphdr_t *tcp;
int rev;
- if (fr_state_lock || (fin->fin_off != 0) || (fin->fin_fl & FI_SHORT))
+ if ((ips_list == NULL) || (fin->fin_off != 0) || fr_state_lock ||
+ (fin->fin_fl & FI_SHORT))
return NULL;
is = NULL;
@@ -1633,7 +1635,7 @@ retry_tcpudp:
pass = is->is_pass;
RWLOCK_EXIT(&ipf_state);
if ((fin->fin_fl & FI_FRAG) && (pass & FR_KEEPFRAG))
- ipfr_newfrag(ip, fin, pass ^ FR_KEEPSTATE);
+ ipfr_newfrag(ip, fin);
#ifndef _KERNEL
if ((tcp != NULL) && (tcp->th_flags & TCP_CLOSE))
fr_delstate(is);
@@ -2044,6 +2046,8 @@ u_int type;
ipsl.isl_p = is->is_p;
ipsl.isl_v = is->is_v;
ipsl.isl_flags = is->is_flags;
+ ipsl.isl_rulen = is->is_rulen;
+ ipsl.isl_group = is->is_group;
if (ipsl.isl_p == IPPROTO_TCP || ipsl.isl_p == IPPROTO_UDP) {
ipsl.isl_sport = is->is_sport;
ipsl.isl_dport = is->is_dport;
OpenPOWER on IntegriCloud