patch-2.4.19 linux-2.4.19/net/ipv4/netfilter/ip_conntrack_standalone.c
Next file: linux-2.4.19/net/ipv4/netfilter/ip_fw_compat_redir.c
Previous file: linux-2.4.19/net/ipv4/netfilter/ip_conntrack_proto_udp.c
Back to the patch index
Back to the overall index
- Lines: 64
- Date:
Fri Aug 2 17:39:46 2002
- Orig file:
linux-2.4.18/net/ipv4/netfilter/ip_conntrack_standalone.c
- Orig date:
Mon Feb 25 11:38:14 2002
diff -urN linux-2.4.18/net/ipv4/netfilter/ip_conntrack_standalone.c linux-2.4.19/net/ipv4/netfilter/ip_conntrack_standalone.c
@@ -15,6 +15,7 @@
#include <linux/skbuff.h>
#include <linux/proc_fs.h>
#include <linux/version.h>
+#include <linux/brlock.h>
#include <net/checksum.h>
#define ASSERT_READ_LOCK(x) MUST_BE_READ_LOCKED(&ip_conntrack_lock)
@@ -35,6 +36,11 @@
struct module *ip_conntrack_module = THIS_MODULE;
MODULE_LICENSE("GPL");
+static int kill_proto(const struct ip_conntrack *i, void *data)
+{
+ return (i->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum ==
+ *((u_int8_t *) data));
+}
static unsigned int
print_tuple(char *buffer, const struct ip_conntrack_tuple *tuple,
@@ -304,12 +310,24 @@
return ret;
}
-/* FIXME: Implement this --RR */
-#if 0
void ip_conntrack_protocol_unregister(struct ip_conntrack_protocol *proto)
{
+ WRITE_LOCK(&ip_conntrack_lock);
+
+ /* find_proto() returns proto_generic in case there is no protocol
+ * helper. So this should be enough - HW */
+ LIST_DELETE(&protocol_list, proto);
+ WRITE_UNLOCK(&ip_conntrack_lock);
+
+ /* Somebody could be still looking at the proto in bh. */
+ br_write_lock_bh(BR_NETPROTO_LOCK);
+ br_write_unlock_bh(BR_NETPROTO_LOCK);
+
+ /* Remove all contrack entries for this protocol */
+ ip_ct_selective_cleanup(kill_proto, &proto->proto);
+
+ MOD_DEC_USE_COUNT;
}
-#endif
static int __init init(void)
{
@@ -325,6 +343,7 @@
module_exit(fini);
EXPORT_SYMBOL(ip_conntrack_protocol_register);
+EXPORT_SYMBOL(ip_conntrack_protocol_unregister);
EXPORT_SYMBOL(invert_tuplepr);
EXPORT_SYMBOL(ip_conntrack_alter_reply);
EXPORT_SYMBOL(ip_conntrack_destroyed);
@@ -335,6 +354,7 @@
EXPORT_SYMBOL(ip_ct_selective_cleanup);
EXPORT_SYMBOL(ip_ct_refresh);
EXPORT_SYMBOL(ip_conntrack_expect_related);
+EXPORT_SYMBOL(ip_conntrack_unexpect_related);
EXPORT_SYMBOL(ip_conntrack_tuple_taken);
EXPORT_SYMBOL(ip_ct_gather_frags);
EXPORT_SYMBOL(ip_conntrack_htable_size);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)