* [PATCH] list register ip6tables targets/matches in /proc/net
@ 2003-04-08 15:59 Patrick McHardy
2003-04-11 9:48 ` Jozsef Kadlecsik
0 siblings, 1 reply; 2+ messages in thread
From: Patrick McHardy @ 2003-04-08 15:59 UTC (permalink / raw)
To: Netfilter Development Mailinglist
[-- Attachment #1: Type: text/plain, Size: 225 bytes --]
This patch lists registered ip6tables matches/targets in /proc/net,
the equivalent patch to iptables is already included in pom. I sent
this patch multiple times before, hopefully this time it won't be
overseen.
Bye
Patrick
[-- Attachment #2: ip6tables-proc-pom.diff --]
[-- Type: text/plain, Size: 3941 bytes --]
diff -urN a/extra/ip6_tables-proc.patch.ipv6 b/extra/ip6_tables-proc.patch.ipv6
--- a/extra/ip6_tables-proc.patch.ipv6 1970-01-01 01:00:00.000000000 +0100
+++ b/extra/ip6_tables-proc.patch.ipv6 2003-04-07 23:54:02.000000000 +0200
@@ -0,0 +1,116 @@
+===== net/ipv6/netfilter/ip6_tables.c 1.12 vs edited =====
+--- 1.12/net/ipv6/netfilter/ip6_tables.c Sun Sep 22 08:22:57 2002
++++ edited/net/ipv6/netfilter/ip6_tables.c Mon Apr 7 23:49:45 2003
+@@ -1767,14 +1767,15 @@
+ = { { NULL, NULL }, "icmp6", &icmp6_match, &icmp6_checkentry, NULL };
+
+ #ifdef CONFIG_PROC_FS
+-static inline int print_name(const struct ip6t_table *t,
++static inline int print_name(const char *i,
+ off_t start_offset, char *buffer, int length,
+ off_t *pos, unsigned int *count)
+ {
+ if ((*count)++ >= start_offset) {
+ unsigned int namelen;
+
+- namelen = sprintf(buffer + *pos, "%s\n", t->name);
++ namelen = sprintf(buffer + *pos, "%s\n",
++ i + sizeof(struct list_head));
+ if (*pos + namelen > length) {
+ /* Stop iterating */
+ return 1;
+@@ -1792,7 +1793,7 @@
+ if (down_interruptible(&ip6t_mutex) != 0)
+ return 0;
+
+- LIST_FIND(&ip6t_tables, print_name, struct ip6t_table *,
++ LIST_FIND(&ip6t_tables, print_name, char *,
+ offset, buffer, length, &pos, &count);
+
+ up(&ip6t_mutex);
+@@ -1801,6 +1802,46 @@
+ *start=(char *)((unsigned long)count-offset);
+ return pos;
+ }
++
++static int ip6t_get_targets(char *buffer, char **start, off_t offset, int length)
++{
++ off_t pos = 0;
++ unsigned int count = 0;
++
++ if (down_interruptible(&ip6t_mutex) != 0)
++ return 0;
++
++ LIST_FIND(&ip6t_target, print_name, char *,
++ offset, buffer, length, &pos, &count);
++
++ up(&ip6t_mutex);
++
++ *start = (char *)((unsigned long)count - offset);
++ return pos;
++}
++
++static int ip6t_get_matches(char *buffer, char **start, off_t offset, int length)
++{
++ off_t pos = 0;
++ unsigned int count = 0;
++
++ if (down_interruptible(&ip6t_mutex) != 0)
++ return 0;
++
++ LIST_FIND(&ip6t_match, print_name, char *,
++ offset, buffer, length, &pos, &count);
++
++ up(&ip6t_mutex);
++
++ *start = (char *)((unsigned long)count - offset);
++ return pos;
++}
++
++static struct { char *name; get_info_t *get_info; } ip6t_proc_entry[] =
++{ { "ip6_tables_names", ip6t_get_tables },
++ { "ip6_tables_targets", ip6t_get_targets },
++ { "ip6_tables_matches", ip6t_get_matches },
++ { NULL, NULL} };
+ #endif /*CONFIG_PROC_FS*/
+
+ static int __init init(void)
+@@ -1826,13 +1867,19 @@
+ #ifdef CONFIG_PROC_FS
+ {
+ struct proc_dir_entry *proc;
+- proc = proc_net_create("ip6_tables_names", 0,
+- ip6t_get_tables);
+- if (!proc) {
+- nf_unregister_sockopt(&ip6t_sockopts);
+- return -ENOMEM;
++ int i;
++
++ for (i = 0; ip6t_proc_entry[i].name; i++) {
++ proc = proc_net_create(ip6t_proc_entry[i].name, 0,
++ ip6t_proc_entry[i].get_info);
++ if (!proc) {
++ while (--i >= 0)
++ proc_net_remove(ip6t_proc_entry[i].name);
++ nf_unregister_sockopt(&ip6t_sockopts);
++ return -ENOMEM;
++ }
++ proc->owner = THIS_MODULE;
+ }
+- proc->owner = THIS_MODULE;
+ }
+ #endif
+
+@@ -1844,7 +1891,11 @@
+ {
+ nf_unregister_sockopt(&ip6t_sockopts);
+ #ifdef CONFIG_PROC_FS
+- proc_net_remove("ip6_tables_names");
++ {
++ int i;
++ for (i = 0; ip6t_proc_entry[i].name; i++)
++ proc_net_remove(ip6t_proc_entry[i].name);
++ }
+ #endif
+ }
+
diff -urN a/extra/ip6_tables-proc.patch.ipv6.help b/extra/ip6_tables-proc.patch.ipv6.help
--- a/extra/ip6_tables-proc.patch.ipv6.help 1970-01-01 01:00:00.000000000 +0100
+++ b/extra/ip6_tables-proc.patch.ipv6.help 2003-04-07 23:48:33.000000000 +0200
@@ -0,0 +1,6 @@
+Author: Patrick McHardy
+Status: Working
+
+This patch creates two new files in /proc/net, "ip6_tables_matches" and
+"ip6tables_targets" which contain the names of all loaded matches/targets
+like the file ip6_tables_names already does with loaded tables.
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] list register ip6tables targets/matches in /proc/net
2003-04-08 15:59 [PATCH] list register ip6tables targets/matches in /proc/net Patrick McHardy
@ 2003-04-11 9:48 ` Jozsef Kadlecsik
0 siblings, 0 replies; 2+ messages in thread
From: Jozsef Kadlecsik @ 2003-04-11 9:48 UTC (permalink / raw)
To: Patrick McHardy; +Cc: Netfilter Development Mailinglist
Hi Patrick,
On Tue, 8 Apr 2003, Patrick McHardy wrote:
> This patch lists registered ip6tables matches/targets in /proc/net,
> the equivalent patch to iptables is already included in pom. I sent
> this patch multiple times before, hopefully this time it won't be
> overseen.
Sorry for the wasted efforts: patch is applied in cvs.
Best regards,
Jozsef
-
E-mail : kadlec@blackhole.kfki.hu, kadlec@sunserv.kfki.hu
PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt
Address : KFKI Research Institute for Particle and Nuclear Physics
H-1525 Budapest 114, POB. 49, Hungary
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-04-11 9:48 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-04-08 15:59 [PATCH] list register ip6tables targets/matches in /proc/net Patrick McHardy
2003-04-11 9:48 ` Jozsef Kadlecsik
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.