From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Jan Engelhardt <jengelh@inai.de>
Cc: netfilter-devel@vger.kernel.org
Subject: Re: [PATCH 3/8] libxtables: centralize checking for a .save function
Date: Mon, 28 Jan 2013 12:35:13 +0100 [thread overview]
Message-ID: <20130128113513.GB15781@1984> (raw)
In-Reply-To: <1359056278-27618-4-git-send-email-jengelh@inai.de>
On Thu, Jan 24, 2013 at 08:37:53PM +0100, Jan Engelhardt wrote:
> Both iptables.c and ip6tables.c check for target->save == NULL, which
> can be consolidated. In fact, we should also check for match->save ==
> NULL, which this patch addds to libxtables.
>
> Signed-off-by: Jan Engelhardt <jengelh@inai.de>
> ---
> extensions/libxt_standard.c | 6 ++++++
> iptables/ip6tables.c | 12 ------------
> iptables/iptables.c | 12 ------------
> libxtables/xtables.c | 21 +++++++++++++++++++++
> 4 files changed, 27 insertions(+), 24 deletions(-)
>
> diff --git a/extensions/libxt_standard.c b/extensions/libxt_standard.c
> index c64ba29..dd367d2 100644
> --- a/extensions/libxt_standard.c
> +++ b/extensions/libxt_standard.c
> @@ -9,12 +9,18 @@ static void standard_help(void)
> "(If target is DROP, ACCEPT, RETURN or nothing)\n");
> }
>
> +static void standard_save(const void *ip, const struct xt_entry_target *t)
> +{
> + /* "standard" is special ... */
I like this patch, but please, better add some more specific
description, eg. Tell where the real output save of the standard
target is done. A couple of lines won't hurt.
> +}
> +
> static struct xtables_target standard_target = {
> .family = NFPROTO_UNSPEC,
> .name = "standard",
> .version = XTABLES_VERSION,
> .size = XT_ALIGN(sizeof(int)),
> .userspacesize = XT_ALIGN(sizeof(int)),
> + .save = standard_save,
> .help = standard_help,
> };
>
> diff --git a/iptables/ip6tables.c b/iptables/ip6tables.c
> index 556647f..371d700 100644
> --- a/iptables/ip6tables.c
> +++ b/iptables/ip6tables.c
> @@ -1112,18 +1112,6 @@ void print_rule6(const struct ip6t_entry *e,
>
> if (target->save)
> target->save(&e->ipv6, t);
> - else {
> - /* If the target size is greater than xt_entry_target
> - * there is something to be saved, we just don't know
> - * how to print it */
> - if (t->u.target_size !=
> - sizeof(struct xt_entry_target)) {
> - fprintf(stderr, "Target `%s' is missing "
> - "save function\n",
> - t->u.user.name);
> - exit(1);
> - }
> - }
> }
> printf("\n");
> }
> diff --git a/iptables/iptables.c b/iptables/iptables.c
> index 00e3f01..6e5250e 100644
> --- a/iptables/iptables.c
> +++ b/iptables/iptables.c
> @@ -1103,18 +1103,6 @@ void print_rule4(const struct ipt_entry *e,
>
> if (target->save)
> target->save(&e->ip, t);
> - else {
> - /* If the target size is greater than xt_entry_target
> - * there is something to be saved, we just don't know
> - * how to print it */
> - if (t->u.target_size !=
> - sizeof(struct xt_entry_target)) {
> - fprintf(stderr, "Target `%s' is missing "
> - "save function\n",
> - t->u.user.name);
> - exit(1);
> - }
> - }
> }
> printf("\n");
> }
> diff --git a/libxtables/xtables.c b/libxtables/xtables.c
> index 009ab91..b81013a 100644
> --- a/libxtables/xtables.c
> +++ b/libxtables/xtables.c
> @@ -852,6 +852,16 @@ void xtables_register_match(struct xtables_match *me)
> xtables_option_metavalidate(me->name, me->x6_options);
> if (me->extra_opts != NULL)
> xtables_check_options(me->name, me->extra_opts);
> + if (me->userspacesize > 0 && me->save == NULL &&
> + me->real_name == NULL) {
> + /*
> + * Catch extensions that have data to be saved, but which
> + * forgot to define a save method.
> + */
> + fprintf(stderr, "Match \"%s\" is missing a save function\n",
> + me->name);
> + exit(1);
> + }
>
> /* ignore not interested match */
> if (me->family != afinfo->family && me->family != AF_UNSPEC)
> @@ -1010,6 +1020,17 @@ void xtables_register_target(struct xtables_target *me)
> xtables_option_metavalidate(me->name, me->x6_options);
> if (me->extra_opts != NULL)
> xtables_check_options(me->name, me->extra_opts);
> + if (me->userspacesize > 0 && me->save == NULL &&
> + me->real_name == NULL) {
> + /*
> + * Catch extensions that have data to be saved, but which
> + * forgot to define a save method. This only applies to true
> + * modules (real_name==NULL), not aliases.
> + */
> + fprintf(stderr, "Target \"%s\" is missing a save function\n",
> + me->name);
> + exit(1);
> + }
>
> /* ignore not interested target */
> if (me->family != afinfo->family && me->family != AF_UNSPEC)
> --
> 1.7.10.4
>
next prev parent reply other threads:[~2013-01-28 11:35 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-24 19:37 Accumulated fixes Jan Engelhardt
2013-01-24 19:37 ` [PATCH 1/8] build: also use libtool for install stage Jan Engelhardt
2013-01-28 11:33 ` Pablo Neira Ayuso
2013-01-28 13:23 ` Jan Engelhardt
2013-01-24 19:37 ` [PATCH 2/8] build: do not dereference symlinks on installation Jan Engelhardt
2013-01-24 19:37 ` [PATCH 3/8] libxtables: centralize checking for a .save function Jan Engelhardt
2013-01-28 11:35 ` Pablo Neira Ayuso [this message]
2013-01-28 13:39 ` Jan Engelhardt
2013-01-24 19:37 ` [PATCH 4/8] extensions: eui64: set userspacesize=0 Jan Engelhardt
2013-01-24 19:37 ` [PATCH 5/8] extensions: S/DNPT: add missing save function Jan Engelhardt
2013-01-28 11:36 ` Pablo Neira Ayuso
2013-01-24 19:37 ` [PATCH 6/8] iptables: fall back to using save function when print is not defined Jan Engelhardt
2013-01-28 11:37 ` Pablo Neira Ayuso
2013-01-24 19:37 ` [PATCH 7/8] iptables: reword warning on using an alias Jan Engelhardt
2013-01-24 19:37 ` [PATCH 8/8] build: fix libiptc build failure on old linux-glibc-devel headers Jan Engelhardt
2013-01-28 11:41 ` Pablo Neira Ayuso
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=20130128113513.GB15781@1984 \
--to=pablo@netfilter.org \
--cc=jengelh@inai.de \
--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.