summaryrefslogtreecommitdiffstats
path: root/contrib/ipfilter/ip_frag.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ipfilter/ip_frag.c')
-rw-r--r--contrib/ipfilter/ip_frag.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/contrib/ipfilter/ip_frag.c b/contrib/ipfilter/ip_frag.c
index 0f3b818..73f98c4 100644
--- a/contrib/ipfilter/ip_frag.c
+++ b/contrib/ipfilter/ip_frag.c
@@ -90,7 +90,7 @@ extern struct timeout ipfr_slowtimer_ch;
#if !defined(lint)
static const char sccsid[] = "@(#)ip_frag.c 1.11 3/24/96 (C) 1993-2000 Darren Reed";
-static const char rcsid[] = "@(#)$Id: ip_frag.c,v 2.10.2.25 2002/12/06 11:40:21 darrenr Exp $";
+static const char rcsid[] = "@(#)$Id: ip_frag.c,v 2.10.2.28 2003/06/11 22:28:15 darrenr Exp $";
#endif
@@ -195,7 +195,7 @@ ipfr_t *table[];
/*
- * Instert the fragment into the fragment table, copy the struct used
+ * Insert the fragment into the fragment table, copy the struct used
* in the search using bcopy rather than reassign each field.
* Set the ttl to the default.
*/
@@ -423,7 +423,26 @@ fr_info_t *fin;
/*
* forget any references to this external object.
*/
-void ipfr_forget(nat)
+void ipfr_forget(ptr)
+void *ptr;
+{
+ ipfr_t *fr;
+ int idx;
+
+ WRITE_ENTER(&ipf_frag);
+ for (idx = IPFT_SIZE - 1; idx >= 0; idx--)
+ for (fr = ipfr_heads[idx]; fr; fr = fr->ipfr_next)
+ if (fr->ipfr_data == ptr)
+ fr->ipfr_data = NULL;
+
+ RWLOCK_EXIT(&ipf_frag);
+}
+
+
+/*
+ * forget any references to this external object.
+ */
+void ipfr_forgetnat(nat)
void *nat;
{
ipfr_t *fr;
@@ -431,7 +450,7 @@ void *nat;
WRITE_ENTER(&ipf_natfrag);
for (idx = IPFT_SIZE - 1; idx >= 0; idx--)
- for (fr = ipfr_heads[idx]; fr; fr = fr->ipfr_next)
+ for (fr = ipfr_nattab[idx]; fr; fr = fr->ipfr_next)
if (fr->ipfr_data == nat)
fr->ipfr_data = NULL;
OpenPOWER on IntegriCloud