Netfilter 0.1.11 & kernel 2.3.25

Marc Boucher marc@mbsi.ca
Mon, 01 Nov 1999 22:48:18 -0500


This is a multipart MIME message.

--==_Exmh_5633014320
Content-Type: text/plain; charset=us-ascii

> The latest kernel 2.3.25 seems to have broken netfilter again. It
> seems to have removed all reference to proc_net_inode_operations, and
> also removed a lot of calls to proc_net_register. Both of which are
> used in netfilter.
> 
> I don't know enough about the way all this works to know if it is safe
> to just remove these in order to let netfilter build.
> 

No, you cannot remove them. Apply the enclosed patch instead.

Cheers,
Marc

1999-11-01  Marc Boucher <marc@mbsi.ca>

	* NAT/ip_nat_rule.c, compat/ip_fw_compat_masq.c,
	compat/ipchains_core.c, compat/ipfwadm_core.c, 
	conntrack/ip_conntrack_standalone.c: With 2.3.25 and
	above, call proc_net_create()/remove() instead of
	proc_net_register()/unregister().


--==_Exmh_5633014320
Content-Type: application/x-patch ; name="netfilter-0.1.11-lin2325.patch"
Content-Description: netfilter-0.1.11-lin2325.patch
Content-Disposition: attachment; filename="netfilter-0.1.11-lin2325.patch"

--- netfilter/NAT/ip_nat_rule.c	1999/11/02 02:04:38	1.1
+++ netfilter/NAT/ip_nat_rule.c	1999/11/02 02:47:57
@@ -11,6 +11,7 @@
 #include <linux/proc_fs.h>
 #include <net/checksum.h>
 #include <linux/bitops.h>
+#include <linux/version.h>
 
 #define ASSERT_READ_LOCK(x) MUST_BE_READ_LOCKED(&ip_nat_lock)
 #define ASSERT_WRITE_LOCK(x) MUST_BE_WRITE_LOCKED(&ip_nat_lock)
@@ -802,11 +803,13 @@
 	return len;
 }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,25)
 struct proc_dir_entry ip_nat_rule_procinfo = {
 	0, 12, "ip_nat_rules", S_IFREG | S_IRUGO,
 	1, 0, 0, 0, &proc_net_inode_operations, get_rules
 };
 #endif
+#endif /* CONFIG_PROC_FS */
 
 int ip_nat_rule_init(void)
 {
@@ -818,8 +821,12 @@
 	ret = nf_register_sockopt(&ip_nat_sockopts);
 	if (ret == 0) {
 #ifdef CONFIG_PROC_FS
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,25)
+		proc_net_create("ip_nat_rules", 0, get_rules);
+#else
 		proc_net_register(&ip_nat_rule_procinfo);
 #endif
+#endif /* CONFIG_PROC_FS */
 		WRITE_LOCK(&ip_nat_lock);
 		list_prepend(&mapping_types, &mapping_null);
 		list_prepend(&mapping_types, &mapping_expect);
@@ -836,8 +843,12 @@
 	nf_unregister_sockopt(&ip_nat_sockopts);
 
 #ifdef CONFIG_PROC_FS
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,25)
+	proc_net_remove("ip_nat_rules");
+#else
 	proc_net_unregister(ip_nat_rule_procinfo.low_ino);
 #endif
+#endif /* CONFIG_PROC_FS */
 
 	/* Delete all the rules. */
 	WRITE_LOCK(&ip_nat_lock);
--- netfilter/compat/ip_fw_compat_masq.c	1999/11/02 02:15:11	1.1
+++ netfilter/compat/ip_fw_compat_masq.c	1999/11/02 02:48:03
@@ -12,6 +12,7 @@
 #include <linux/netdevice.h>
 #include <linux/inetdevice.h>
 #include <linux/proc_fs.h>
+#include <linux/version.h>
 #include <net/route.h>
 
 #define ASSERT_READ_LOCK(x) MUST_BE_READ_LOCKED(&ip_conntrack_lock)
@@ -268,12 +269,14 @@
 	return len;
 }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,25)
 static struct proc_dir_entry proc_masq =
 { 0, 13, "ip_masquerade",
   S_IFREG | S_IRUGO, 1, 0, 0,
   0, &proc_net_inode_operations,
   masq_procinfo
 };
+#endif
 
 int masq_init(void)
 {
@@ -283,7 +286,11 @@
 	if (ret == 0) {
 		ret = ip_nat_init();
 		if (ret == 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,25)
+			proc_net_create("ip_masquerade", 0, masq_procinfo);
+#else
 			proc_net_register(&proc_masq);
+#endif
 		else
 			ip_conntrack_cleanup();
 	}
@@ -295,5 +302,9 @@
 {
 	ip_nat_cleanup();
 	ip_conntrack_cleanup();
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,25)
+	proc_net_remove("ip_masquerade");
+#else
 	proc_net_unregister(proc_masq.low_ino);
+#endif
 }
--- netfilter/compat/ipchains_core.c	1999/11/02 02:15:11	1.1
+++ netfilter/compat/ipchains_core.c	1999/11/02 03:13:36
@@ -1736,7 +1736,8 @@
 	NULL
 };
 
-#ifdef CONFIG_PROC_FS		
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,25)
+#ifdef CONFIG_PROC_FS
 static struct proc_dir_entry proc_net_ipfwchains_chain = {
 	0, sizeof(IP_FW_PROC_CHAINS)-1,
 	IP_FW_PROC_CHAINS, S_IFREG | S_IRUSR | S_IWUSR, 1, 0, 0,
@@ -1749,6 +1750,7 @@
 	0, &proc_net_inode_operations, ip_chain_name_procinfo
 };
 #endif
+#endif
 
 int ipfw_init_or_cleanup(int init)
 {
@@ -1773,9 +1775,14 @@
 	if (ret < 0)
 		goto cleanup_netlink;
 
-#ifdef CONFIG_PROC_FS		
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,25)
+	proc_net_create(IP_FW_PROC_CHAINS, S_IFREG | S_IRUSR | S_IWUSR, ip_chain_procinfo);
+	proc_net_create(IP_FW_PROC_CHAIN_NAMES, S_IFREG | S_IRUSR | S_IWUSR, ip_chain_name_procinfo);
+#else
+#ifdef CONFIG_PROC_FS
 	proc_net_register(&proc_net_ipfwchains_chain);
 	proc_net_register(&proc_net_ipfwchains_chainnames);
+#endif /* CONFIG_PROC_FS */
 #endif
 
 	IP_FW_INPUT_CHAIN = ip_init_chain(IP_FW_LABEL_INPUT, 1, FW_ACCEPT);
@@ -1794,9 +1801,14 @@
 		ip_fw_chains = next;
 	}
 
-#ifdef CONFIG_PROC_FS		
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,25)
+	proc_net_remove(IP_FW_PROC_CHAINS);
+	proc_net_remove(IP_FW_PROC_CHAIN_NAMES);
+#else
+#ifdef CONFIG_PROC_FS
 	proc_net_unregister(proc_net_ipfwchains_chain.low_ino);
 	proc_net_unregister(proc_net_ipfwchains_chainnames.low_ino);
+#endif /* CONFIG_PROC_FS */
 #endif
 
 	unregister_firewall(PF_INET, &ipfw_ops);
--- netfilter/compat/ipfwadm_core.c	1999/11/02 02:15:11	1.1
+++ netfilter/compat/ipfwadm_core.c	1999/11/02 03:15:40
@@ -125,6 +125,7 @@
 #include <net/checksum.h>
 #include <linux/proc_fs.h>
 #include <linux/stat.h>
+#include <linux/version.h>
 
 /*
  *	Implement IP packet firewall
@@ -1326,6 +1327,7 @@
 
 #endif
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,25)
 #ifdef CONFIG_PROC_FS
 #ifdef CONFIG_IP_ACCT
 static struct proc_dir_entry proc_net_ipacct = {
@@ -1336,9 +1338,11 @@
 };
 #endif
 #endif
+#endif
 
 #ifdef CONFIG_IP_FIREWALL
-#ifdef CONFIG_PROC_FS		
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,25)
+#ifdef CONFIG_PROC_FS
 static struct proc_dir_entry proc_net_ipfwin = {
 	0, 8, "ip_input",
 	S_IFREG | S_IRUGO | S_IWUSR, 1, 0, 0,
@@ -1359,6 +1363,7 @@
 };
 #endif
 #endif
+#endif
 
 int ipfw_init_or_cleanup(int init)
 {
@@ -1371,6 +1376,14 @@
 	if (ret < 0)
 		goto cleanup_nothing;
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,25)
+#ifdef CONFIG_IP_ACCT
+	proc_net_create("ip_acct", S_IFREG | S_IRUGO | S_IWUSR, ip_acct_procinfo);
+#endif
+	proc_net_create("ip_input", S_IFREG | S_IRUGO | S_IWUSR, ip_fw_in_procinfo);
+	proc_net_create("ip_output", S_IFREG | S_IRUGO | S_IWUSR, ip_fw_out_procinfo);
+	proc_net_create("ip_forward", S_IFREG | S_IRUGO | S_IWUSR, ip_fw_fwd_procinfo);
+#else
 #ifdef CONFIG_PROC_FS
 #ifdef CONFIG_IP_ACCT
 	proc_net_register(&proc_net_ipacct);
@@ -1379,6 +1392,7 @@
 	proc_net_register(&proc_net_ipfwfwd);
 	proc_net_register(&proc_net_ipfwout);
 #endif
+#endif
 
 	/* Register for device up/down reports */
 	register_netdevice_notifier(&ipfw_dev_notifier);
@@ -1394,6 +1408,14 @@
 #endif
 	unregister_netdevice_notifier(&ipfw_dev_notifier);
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,25)
+#ifdef CONFIG_IP_ACCT
+	proc_net_remove("ip_acct");
+#endif
+	proc_net_remove("ip_input");
+	proc_net_remove("ip_output");
+	proc_net_remove("ip_forward");
+#else
 #ifdef CONFIG_PROC_FS
 #ifdef CONFIG_IP_ACCT
 	proc_net_unregister(proc_net_ipacct.low_ino);
@@ -1401,6 +1423,7 @@
 	proc_net_unregister(proc_net_ipfwin.low_ino);
 	proc_net_unregister(proc_net_ipfwfwd.low_ino);
 	proc_net_unregister(proc_net_ipfwout.low_ino);
+#endif
 #endif
 	free_fw_chain(chains[IP_FW_FWD]);
 	free_fw_chain(chains[IP_FW_IN]);
--- netfilter/conntrack/ip_conntrack_standalone.c	1999/11/02 01:59:18	1.1
+++ netfilter/conntrack/ip_conntrack_standalone.c	1999/11/02 02:59:49
@@ -197,12 +197,14 @@
 static struct nf_hook_ops ip_conntrack_local_out_ops
 = { { NULL, NULL }, ip_conntrack_local, NULL, PF_INET, NF_IP_LOCAL_OUT, -200 };
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,25)
 #ifdef CONFIG_PROC_FS
 struct proc_dir_entry ip_conntrack_procinfo = {
 	0, 12, "ip_conntrack", S_IFREG | S_IRUGO,
 	1, 0, 0, 0, &proc_net_inode_operations, &list_conntracks
 };
 #endif
+#endif
 
 static int init_or_cleanup(int init)
 {
@@ -214,8 +216,12 @@
 	if (ret < 0)
 		goto cleanup_nothing;
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,25)
+	proc_net_create("ip_conntrack",0,list_conntracks);
+#else
 #ifdef CONFIG_PROC_FS
 	proc_net_register(&ip_conntrack_procinfo);
+#endif /* CONFIG_PROC_FS */
 #endif
 	ret = nf_register_hook(&ip_conntrack_in_ops);
 	if (ret < 0) {
@@ -236,8 +242,12 @@
  cleanup_inops:
 	nf_unregister_hook(&ip_conntrack_in_ops);
  cleanup_init:
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,25)
+	proc_net_remove("ip_conntrack");
+#else
 #ifdef CONFIG_PROC_FS
 	proc_net_unregister(ip_conntrack_procinfo.low_ino);
+#endif /* CONFIG_PROC_FS */
 #endif
 	ip_conntrack_cleanup();
  cleanup_nothing:

--==_Exmh_5633014320--