All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Maciej Żenczykowski" <zenczykowski@gmail.com>
To: "Maciej Żenczykowski" <maze@google.com>
Cc: netfilter-devel@vger.kernel.org, "Maciej Żenczykowski" <maze@google.com>
Subject: [PATCH] RFC - introduce xtables-multi
Date: Tue,  5 Apr 2011 02:49:19 -0700	[thread overview]
Message-ID: <1301996959-7342-1-git-send-email-zenczykowski@gmail.com> (raw)

From: Maciej Żenczykowski <maze@google.com>

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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

             reply	other threads:[~2011-04-05  9:49 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-05  9:49 Maciej Żenczykowski [this message]
2011-04-05  9:57 ` [PATCH] RFC - introduce xtables-multi Jan Engelhardt
2011-04-05 23:45   ` [PATCH] combine ip6?tables-multi into xtables-multi Maciej Żenczykowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1301996959-7342-1-git-send-email-zenczykowski@gmail.com \
    --to=zenczykowski@gmail.com \
    --cc=maze@google.com \
    --cc=netfilter-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.