SOURCES (LINUX_2_6): linux-2.6-nf-ACCOUNT.patch - ported to 2.6.14.
pluto
pluto at pld-linux.org
Wed Nov 2 12:14:18 CET 2005
Author: pluto Date: Wed Nov 2 11:14:18 2005 GMT
Module: SOURCES Tag: LINUX_2_6
---- Log message:
- ported to 2.6.14.
---- Files affected:
SOURCES:
linux-2.6-nf-ACCOUNT.patch (1.1.2.5 -> 1.1.2.6)
---- Diffs:
================================================================
Index: SOURCES/linux-2.6-nf-ACCOUNT.patch
diff -u SOURCES/linux-2.6-nf-ACCOUNT.patch:1.1.2.5 SOURCES/linux-2.6-nf-ACCOUNT.patch:1.1.2.6
--- SOURCES/linux-2.6-nf-ACCOUNT.patch:1.1.2.5 Sat Oct 29 22:33:53 2005
+++ SOURCES/linux-2.6-nf-ACCOUNT.patch Wed Nov 2 12:14:13 2005
@@ -1,8 +1,8 @@
- kernel-2.4.25.ipt_ACCOUNT/include/linux/netfilter_ipv4/ip_tables.h | 11
- linux-2.6.14/include/linux/netfilter_ipv4/ipt_ACCOUNT.h | 100
- linux-2.6.14/net/ipv4/netfilter/Makefile | 1
- linux-2.6.14/net/ipv4/netfilter/ipt_ACCOUNT.c | 1103 ++++++++++
- 4 files changed, 1215 insertions(+)
+ include/linux/netfilter_ipv4/ip_tables.h | 11
+ include/linux/netfilter_ipv4/ipt_ACCOUNT.h | 100 ++
+ net/ipv4/netfilter/Makefile | 1
+ net/ipv4/netfilter/ipt_ACCOUNT.c | 1102 +++++++++++++++++++++++++++++
+ 4 files changed, 1214 insertions(+)
diff -Nur --exclude '*.orig' linux-2.6.14.org/include/linux/netfilter_ipv4/ipt_ACCOUNT.h linux-2.6.14/include/linux/netfilter_ipv4/ipt_ACCOUNT.h
--- linux-2.6.14.org/include/linux/netfilter_ipv4/ipt_ACCOUNT.h 1970-01-01 01:00:00.000000000 +0100
@@ -116,7 +116,7 @@
diff -Nur --exclude '*.orig' linux-2.6.14.org/net/ipv4/netfilter/ipt_ACCOUNT.c linux-2.6.14/net/ipv4/netfilter/ipt_ACCOUNT.c
--- linux-2.6.14.org/net/ipv4/netfilter/ipt_ACCOUNT.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.14/net/ipv4/netfilter/ipt_ACCOUNT.c 2005-10-29 22:13:51.000000000 +0200
-@@ -0,0 +1,1103 @@
+@@ -0,0 +1,1102 @@
+/***************************************************************************
+ * This is a module which is used for counting packets. *
+ * See http://www.intra2net.com/opensource/ipt_account *
@@ -138,7 +138,6 @@
+#include <net/udp.h>
+#include <net/tcp.h>
+#include <linux/netfilter_ipv4/ip_tables.h>
-+#include <linux/netfilter_ipv4/lockhelp.h>
+#include <asm/semaphore.h>
+#include <linux/kernel.h>
+#include <linux/mm.h>
@@ -163,7 +162,7 @@
+static void *ipt_acc_tmpbuf = NULL;
+
+/* Spinlock used for manipulating the current accounting tables/data */
-+DECLARE_LOCK(ipt_acc_lock);
++DEFINE_SPINLOCK(ipt_acc_lock);
+/* Mutex (semaphore) used for manipulating userspace handles/snapshot data */
+static struct semaphore ipt_acc_userspace_mutex;
+
@@ -320,10 +319,10 @@
+ return 0;
+ }
+
-+ LOCK_BH(&ipt_acc_lock);
++ spin_lock_bh(&ipt_acc_lock);
+ table_nr = ipt_acc_table_insert(info->table_name, info->net_ip,
+ info->net_mask);
-+ UNLOCK_BH(&ipt_acc_lock);
++ spin_unlock_bh(&ipt_acc_lock);
+
+ if (table_nr == -1) {
+ printk("ACCOUNT: Table insert problem. Aborting\n");
@@ -346,7 +345,7 @@
+ targinfosize, IPT_ALIGN(sizeof(struct ipt_acc_info)));
+ }
+
-+ LOCK_BH(&ipt_acc_lock);
++ spin_lock_bh(&ipt_acc_lock);
+
+ DEBUGP("ACCOUNT: ipt_acc_deleteentry called for table: %s (#%d)\n",
+ info->table_name, info->table_nr);
@@ -372,14 +371,14 @@
+ sizeof(struct ipt_acc_table));
+ }
+
-+ UNLOCK_BH(&ipt_acc_lock);
++ spin_unlock_bh(&ipt_acc_lock);
+ return;
+ }
+ }
+
+ /* Table not found */
+ printk("ACCOUNT: Table %s not found for destroy\n", info->table_name);
-+ UNLOCK_BH(&ipt_acc_lock);
++ spin_unlock_bh(&ipt_acc_lock);
+}
+
+static void ipt_acc_depth0_insert(struct ipt_acc_mask_24 *mask_24,
@@ -545,13 +544,13 @@
+ u_int32_t dst_ip = (*pskb)->nh.iph->daddr;
+ u_int32_t size = ntohs((*pskb)->nh.iph->tot_len);
+
-+ LOCK_BH(&ipt_acc_lock);
++ spin_lock_bh(&ipt_acc_lock);
+
+ if (ipt_acc_tables[info->table_nr].name[0] == 0) {
+ printk("ACCOUNT: ipt_acc_target: Invalid table id %u. "
+ "IPs %u.%u.%u.%u/%u.%u.%u.%u\n", info->table_nr,
+ NIPQUAD(src_ip), NIPQUAD(dst_ip));
-+ UNLOCK_BH(&ipt_acc_lock);
++ spin_unlock_bh(&ipt_acc_lock);
+ return IPT_CONTINUE;
+ }
+
@@ -563,7 +562,7 @@
+ ipt_acc_tables[info->table_nr].ip,
+ ipt_acc_tables[info->table_nr].netmask,
+ src_ip, dst_ip, size, &ipt_acc_tables[info->table_nr].itemcount);
-+ UNLOCK_BH(&ipt_acc_lock);
++ spin_unlock_bh(&ipt_acc_lock);
+ return IPT_CONTINUE;
+ }
+
@@ -574,7 +573,7 @@
+ ipt_acc_tables[info->table_nr].ip,
+ ipt_acc_tables[info->table_nr].netmask,
+ src_ip, dst_ip, size, &ipt_acc_tables[info->table_nr].itemcount);
-+ UNLOCK_BH(&ipt_acc_lock);
++ spin_unlock_bh(&ipt_acc_lock);
+ return IPT_CONTINUE;
+ }
+
@@ -585,7 +584,7 @@
+ ipt_acc_tables[info->table_nr].ip,
+ ipt_acc_tables[info->table_nr].netmask,
+ src_ip, dst_ip, size, &ipt_acc_tables[info->table_nr].itemcount);
-+ UNLOCK_BH(&ipt_acc_lock);
++ spin_unlock_bh(&ipt_acc_lock);
+ return IPT_CONTINUE;
+ }
+
@@ -593,7 +592,7 @@
+ "Table id %u. IPs %u.%u.%u.%u/%u.%u.%u.%u\n",
+ info->table_nr, NIPQUAD(src_ip), NIPQUAD(dst_ip));
+
-+ UNLOCK_BH(&ipt_acc_lock);
++ spin_unlock_bh(&ipt_acc_lock);
+ return IPT_CONTINUE;
+}
+
@@ -994,14 +993,14 @@
+ break;
+ }
+
-+ LOCK_BH(&ipt_acc_lock);
++ spin_lock_bh(&ipt_acc_lock);
+ if (cmd == IPT_SO_GET_ACCOUNT_PREPARE_READ_FLUSH)
+ ret = ipt_acc_handle_prepare_read_flush(
+ handle.name, &dest, &handle.itemcount);
+ else
+ ret = ipt_acc_handle_prepare_read(
+ handle.name, &dest, &handle.itemcount);
-+ UNLOCK_BH(&ipt_acc_lock);
++ spin_unlock_bh(&ipt_acc_lock);
+ // Error occured during prepare_read?
+ if (ret == -1)
+ return -EINVAL;
@@ -1094,7 +1093,7 @@
+ u_int32_t size = 0, i, name_len;
+ char *tnames;
+
-+ LOCK_BH(&ipt_acc_lock);
++ spin_lock_bh(&ipt_acc_lock);
+
+ /* Determine size of table names */
+ for (i = 0; i < ACCOUNT_MAX_TABLES; i++) {
@@ -1104,7 +1103,7 @@
+ size += 1; /* Terminating NULL character */
+
+ if (*len < size || size > PAGE_SIZE) {
-+ UNLOCK_BH(&ipt_acc_lock);
++ spin_unlock_bh(&ipt_acc_lock);
+ printk("ACCOUNT: ipt_acc_get_ctl: not enough space (%u < %u < %lu)"
+ " to store table names\n", *len, size, PAGE_SIZE);
+ ret = -ENOMEM;
@@ -1119,7 +1118,7 @@
+ tnames += name_len;
+ }
+ }
-+ UNLOCK_BH(&ipt_acc_lock);
++ spin_unlock_bh(&ipt_acc_lock);
+
+ /* Terminating NULL character */
+ *tnames = 0;
@@ -1220,27 +1219,29 @@
+module_init(init);
+module_exit(fini);
+MODULE_LICENSE("GPL");
-diff -u -r kernel-2.4.25/include/linux/netfilter_ipv4/ip_tables.h kernel-2.4.25.ipt_ACCOUNT/include/linux/netfilter_ipv4/ip_tables.h
---- kernel-2.4.25/include/linux/netfilter_ipv4/ip_tables.h Mon Apr 12 20:02:19 2004
-+++ kernel-2.4.25.ipt_ACCOUNT/include/linux/netfilter_ipv4/ip_tables.h Mon Apr 12 17:37:20 2004
-@@ -151,10 +151,21 @@
+diff -u -r linux-2.6.14.orig/include/linux/netfilter_ipv4/ip_tables.h linux-2.6.14/include/linux/netfilter_ipv4/ip_tables.h
+--- linux-2.6.14.orig/include/linux/netfilter_ipv4/ip_tables.h 2005-11-02 11:07:07.000000000 +0100
++++ linux-2.6.14/include/linux/netfilter_ipv4/ip_tables.h 2005-11-02 11:51:47.000000000 +0100
+@@ -157,12 +157,23 @@
#define IPT_SO_SET_ADD_COUNTERS (IPT_BASE_CTL + 1)
#define IPT_SO_SET_MAX IPT_SO_SET_ADD_COUNTERS
-+#define IPT_SO_SET_ACCOUNT_HANDLE_FREE (IPT_BASE_CTL + 3)
-+#define IPT_SO_SET_ACCOUNT_HANDLE_FREE_ALL (IPT_BASE_CTL + 4)
-+#define IPT_SO_SET_ACCOUNT_MAX IPT_SO_SET_ACCOUNT_HANDLE_FREE_ALL
-+
- #define IPT_SO_GET_INFO (IPT_BASE_CTL)
- #define IPT_SO_GET_ENTRIES (IPT_BASE_CTL + 1)
- #define IPT_SO_GET_MAX IPT_SO_GET_ENTRIES
++#define IPT_SO_SET_ACCOUNT_HANDLE_FREE (IPT_BASE_CTL + 3)
++#define IPT_SO_SET_ACCOUNT_HANDLE_FREE_ALL (IPT_BASE_CTL + 4)
++#define IPT_SO_SET_ACCOUNT_MAX IPT_SO_SET_ACCOUNT_HANDLE_FREE_ALL
++
+ #define IPT_SO_GET_INFO (IPT_BASE_CTL)
+ #define IPT_SO_GET_ENTRIES (IPT_BASE_CTL + 1)
+ #define IPT_SO_GET_REVISION_MATCH (IPT_BASE_CTL + 2)
+ #define IPT_SO_GET_REVISION_TARGET (IPT_BASE_CTL + 3)
+ #define IPT_SO_GET_MAX IPT_SO_GET_REVISION_TARGET
-+#define IPT_SO_GET_ACCOUNT_PREPARE_READ (IPT_BASE_CTL + 3)
-+#define IPT_SO_GET_ACCOUNT_PREPARE_READ_FLUSH (IPT_BASE_CTL + 4)
-+#define IPT_SO_GET_ACCOUNT_GET_DATA (IPT_BASE_CTL + 5)
-+#define IPT_SO_GET_ACCOUNT_GET_HANDLE_USAGE (IPT_BASE_CTL + 6)
-+#define IPT_SO_GET_ACCOUNT_GET_TABLE_NAMES (IPT_BASE_CTL + 7)
-+#define IPT_SO_GET_ACCOUNT_MAX IPT_SO_GET_ACCOUNT_GET_TABLE_NAMES
++#define IPT_SO_GET_ACCOUNT_PREPARE_READ (IPT_BASE_CTL + 5)
++#define IPT_SO_GET_ACCOUNT_PREPARE_READ_FLUSH (IPT_BASE_CTL + 6)
++#define IPT_SO_GET_ACCOUNT_GET_DATA (IPT_BASE_CTL + 7)
++#define IPT_SO_GET_ACCOUNT_GET_HANDLE_USAGE (IPT_BASE_CTL + 8)
++#define IPT_SO_GET_ACCOUNT_GET_TABLE_NAMES (IPT_BASE_CTL + 9)
++#define IPT_SO_GET_ACCOUNT_MAX IPT_SO_GET_ACCOUNT_GET_TABLE_NAMES
+
/* CONTINUE verdict for targets */
#define IPT_CONTINUE 0xFFFFFFFF
================================================================
---- CVS-web:
http://cvs.pld-linux.org/SOURCES/linux-2.6-nf-ACCOUNT.patch?r1=1.1.2.5&r2=1.1.2.6&f=u
More information about the pld-cvs-commit
mailing list