patch-2.4.27 linux-2.4.27/net/ipv6/netfilter/ip6_tables.c
Next file: linux-2.4.27/net/ipv6/netfilter/ip6t_owner.c
Previous file: linux-2.4.27/net/ipv6/mcast.c
Back to the patch index
Back to the overall index
- Lines: 115
- Date:
2004-08-07 16:26:07.032444490 -0700
- Orig file:
linux-2.4.26/net/ipv6/netfilter/ip6_tables.c
- Orig date:
2004-04-14 06:05:41.000000000 -0700
diff -urN linux-2.4.26/net/ipv6/netfilter/ip6_tables.c linux-2.4.27/net/ipv6/netfilter/ip6_tables.c
@@ -20,6 +20,7 @@
#include <linux/udp.h>
#include <linux/icmpv6.h>
#include <net/ip.h>
+#include <net/ipv6.h>
#include <asm/uaccess.h>
#include <asm/semaphore.h>
#include <linux/proc_fs.h>
@@ -57,8 +58,6 @@
#endif
#define SMP_ALIGN(x) (((x) + SMP_CACHE_BYTES-1) & ~(SMP_CACHE_BYTES-1))
-/* Mutex protects lists (only traversed in user context). */
-static DECLARE_MUTEX(ip6t_mutex);
/* Must have mutex */
#define ASSERT_READ_LOCK(x) IP_NF_ASSERT(down_trylock(&ip6t_mutex) != 0)
@@ -535,7 +534,7 @@
#endif
static inline struct ip6t_table *
-find_table_lock(const char *name, int *error, struct semaphore *mutex)
+ip6t_find_table_lock(const char *name, int *error, struct semaphore *mutex)
{
return find_inlist_lock(&ip6t_tables, name, "ip6table_", error, mutex);
}
@@ -546,8 +545,8 @@
return find_inlist_lock(&ip6t_match, name, "ip6t_", error, mutex);
}
-static inline struct ip6t_target *
-find_target_lock(const char *name, int *error, struct semaphore *mutex)
+struct ip6t_target *
+ip6t_find_target_lock(const char *name, int *error, struct semaphore *mutex)
{
return find_inlist_lock(&ip6t_target, name, "ip6t_", error, mutex);
}
@@ -764,7 +763,7 @@
goto cleanup_matches;
t = ip6t_get_target(e);
- target = find_target_lock(t->u.user.name, &ret, &ip6t_mutex);
+ target = ip6t_find_target_lock(t->u.user.name, &ret, &ip6t_mutex);
if (!target) {
duprintf("check_entry: `%s' not found\n", t->u.user.name);
goto cleanup_matches;
@@ -1101,7 +1100,7 @@
int ret;
struct ip6t_table *t;
- t = find_table_lock(entries->name, &ret, &ip6t_mutex);
+ t = ip6t_find_table_lock(entries->name, &ret, &ip6t_mutex);
if (t) {
duprintf("t->private->number = %u\n",
t->private->number);
@@ -1164,7 +1163,7 @@
duprintf("ip_tables: Translated table\n");
- t = find_table_lock(tmp.name, &ret, &ip6t_mutex);
+ t = ip6t_find_table_lock(tmp.name, &ret, &ip6t_mutex);
if (!t)
goto free_newinfo_counters_untrans;
@@ -1258,7 +1257,7 @@
goto free;
}
- t = find_table_lock(tmp.name, &ret, &ip6t_mutex);
+ t = ip6t_find_table_lock(tmp.name, &ret, &ip6t_mutex);
if (!t)
goto free;
@@ -1333,7 +1332,7 @@
break;
}
name[IP6T_TABLE_MAXNAMELEN-1] = '\0';
- t = find_table_lock(name, &ret, &ip6t_mutex);
+ t = ip6t_find_table_lock(name, &ret, &ip6t_mutex);
if (t) {
struct ip6t_getinfo info;
@@ -1823,6 +1822,15 @@
return 0;
}
+static inline int print_target(const struct ip6t_target *t,
+ off_t start_offset, char *buffer, int length,
+ off_t *pos, unsigned int *count)
+{
+ if (t == &ip6t_standard_target || t == &ip6t_error_target)
+ return 0;
+ return print_name((char *)t, start_offset, buffer, length, pos, count);
+}
+
static int ip6t_get_tables(char *buffer, char **start, off_t offset, int length)
{
off_t pos = 0;
@@ -1849,7 +1857,7 @@
if (down_interruptible(&ip6t_mutex) != 0)
return 0;
- LIST_FIND(&ip6t_target, print_name, char *,
+ LIST_FIND(&ip6t_target, print_target, struct ip6t_target *,
offset, buffer, length, &pos, &count);
up(&ip6t_mutex);
@@ -1940,6 +1948,7 @@
EXPORT_SYMBOL(ip6t_register_table);
EXPORT_SYMBOL(ip6t_unregister_table);
EXPORT_SYMBOL(ip6t_do_table);
+EXPORT_SYMBOL(ip6t_find_target_lock);
EXPORT_SYMBOL(ip6t_register_match);
EXPORT_SYMBOL(ip6t_unregister_match);
EXPORT_SYMBOL(ip6t_register_target);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)