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