[PATCH] RFC - introduce xtables-multi

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Maciej Åenczykowski <maze@xxxxxxxxxx>

I'm posting this mostly to inspire discussion.

I'd like to merge iptables-multi and ip6tables-multi
into a single multi-purpose binary xtables-multi.

I can think of a few ways to do this... any preferences?

a) we delete iptables-multi and ip6tables-multi and only build xtables-multi
which depending on whether we're including v4 and/or v6 has different capabilities
unfortunately we lose support for 'iptables-multi save', since with 'xtables-multi save'
it would not be clear whether ipv4 or ipv6 was meant

b) we add xtables-multi, only build it when both v4 and v6 are enabled, but don't install it
(or at least don't install any symlinks to it)
we leave the existing iptables-multi and ip6tables-multi as is

c) we add xtables-multi, only build it when both v4 and v6 are enabled, and when both
v4 and v6 are enabled we don't build both iptables-multi and ip6tables-multi
(also means we lose 'iptables-multi save' support), the symlinks now point to xtables-multi

d) maybe other ways I can't think of

(a) results in the smallest amount of code
(b) is the most backwards compatible
(c) has less if-def'ery then (a)

[side note: this patch depends on the "move 'int line'" patch I posted earlier today]

Comments?
---
 .gitignore      |    1 +
 Makefile.am     |   20 ++++++++++++++++++++
 xtables-multi.c |   22 ++++++++++++++++++++++
 3 files changed, 43 insertions(+), 0 deletions(-)
 create mode 100644 xtables-multi.c

diff --git a/.gitignore b/.gitignore
index e5d3099..02f9d4e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,3 +51,4 @@ Makefile.in
 /iptables-restore
 /iptables-static
 /iptables-xml
+/xtables-multi
diff --git a/Makefile.am b/Makefile.am
index 866ac7e..f4e4587 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -57,6 +57,21 @@ endif
 ip6tables_multi_LDFLAGS   = -rdynamic
 ip6tables_multi_LDADD     = libiptc/libip6tc.la extensions/libext6.a libxtables.la -lm
 
+xtables_multi_SOURCES     = xtables-multi.c \
+                            iptables-save.c iptables-restore.c iptables-xml.c \
+                            iptables-standalone.c iptables.c \
+                            ip6tables-save.c ip6tables-restore.c \
+                            ip6tables-standalone.c ip6tables.c \
+                            xshared.c
+xtables_multi_CFLAGS      = ${AM_CFLAGS} -DIPTABLES_MULTI
+if ENABLE_STATIC
+xtables_multi_CFLAGS     += -DALL_INCLUSIVE
+endif
+xtables_multi_LDFLAGS     = -rdynamic
+xtables_multi_LDADD       = libiptc/libip4tc.la extensions/libext4.a \
+                            libiptc/libip6tc.la extensions/libext6.a \
+                            libxtables.la -lm
+
 sbin_PROGRAMS    =
 man_MANS         = iptables.8 iptables-restore.8 iptables-save.8 \
                    iptables-xml.8 ip6tables.8 ip6tables-restore.8 \
@@ -72,6 +87,11 @@ if ENABLE_IPV6
 sbin_PROGRAMS += ip6tables-multi
 v6_sbin_links  = ip6tables ip6tables-restore ip6tables-save
 endif
+if ENABLE_IPV4
+if ENABLE_IPV6
+sbin_PROGRAMS += xtables-multi
+endif
+endif
 
 iptables.8: ${srcdir}/iptables.8.in extensions/matches4.man extensions/targets4.man
 	${AM_VERBOSE_GEN} sed -e 's/@PACKAGE_AND_VERSION@/${PACKAGE} ${PACKAGE_VERSION}/g' -e '/@MATCH@/ r extensions/matches4.man' -e '/@TARGET@/ r extensions/targets4.man' $< >$@;
diff --git a/xtables-multi.c b/xtables-multi.c
new file mode 100644
index 0000000..61060d3
--- /dev/null
+++ b/xtables-multi.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "xshared.h"
+#include "iptables-multi.h"
+#include "ip6tables-multi.h"
+
+static const struct subcommand multi_subcommands[] = {
+	{"iptables",          iptables_main},
+	{"iptables-save",     iptables_save_main},
+	{"iptables-restore",  iptables_restore_main},
+	{"iptables-xml",      iptables_xml_main},
+	{"ip6tables",         ip6tables_main},
+	{"ip6tables-save",    ip6tables_save_main},
+	{"ip6tables-restore", ip6tables_restore_main},
+	{NULL},
+};
+
+int main(int argc, char **argv)
+{
+	return subcmd_main(argc, argv, multi_subcommands);
+}
-- 
1.7.3.1

--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux