All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Zhang, Chunyu" <zhangcy@cn.fujitsu.com>
To: "pablo@netfilter.org" <pablo@netfilter.org>
Cc: "netfilter-devel@vger.kernel.org"
	<netfilter-devel@vger.kernel.org>,
	"Gao, Feng/高 峰" <gaofeng@cn.fujitsu.com>
Subject: Re: Re: [PATCH V2 2/4] Add MARK target for arptables
Date: Thu, 26 Mar 2015 01:43:28 +0000	[thread overview]
Message-ID: <A43879EB4A7F5F449E2CA8148EA79E516EE156@G08CNEXMBPEKD01.g08.fujitsu.local> (raw)
In-Reply-To: 20150325161608.GA4787@salvia



>From: netfilter-devel-owner
>Date: 2015-03-26
>To: Zhang, Chunyu/章 春宇
>Subject: Re: [PATCH V2 2/4] Add MARK target for arptables
>
>On Tue, Mar 24, 2015 at 09:57:34PM -0400, Zhang Chunyu wrote:
>> We can use MARK target to set make value for arp packet.
>>
>> Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
>> Signed-off-by: Zhang Chunyu <zhangcy@cn.fujitsu.com>
>> ---
>>  extensions/Makefile    |   2 +-
>>  extensions/arpt_MARK.c | 119 +++++++++++++++++++++++++++++++++++++++++++++++++
>>  2 files changed, 120 insertions(+), 1 deletion(-)
>>  create mode 100644 extensions/arpt_MARK.c
>>
>> diff --git a/extensions/Makefile b/extensions/Makefile
>> index 09b244e..0189cc9 100644
>> --- a/extensions/Makefile
>> +++ b/extensions/Makefile
>> @@ -1,6 +1,6 @@
>>  #! /usr/bin/make
>> 
>> -EXT_FUNC+=standard mangle CLASSIFY
>> +EXT_FUNC+=standard mangle CLASSIFY MARK
>>  EXT_OBJS+=$(foreach T,$(EXT_FUNC), extensions/arpt_$(T).o)
>> 
>>  extensions/ebt_%.o: extensions/arpt_%.c include/arptables.h include/arptables_common.h
>> diff --git a/extensions/arpt_MARK.c b/extensions/arpt_MARK.c
>> new file mode 100644
>> index 0000000..d9aec8b
>> --- /dev/null
>> +++ b/extensions/arpt_MARK.c
>> @@ -0,0 +1,119 @@
>> +/*
>> + * (C) 2014 by Gao Feng <gaofeng@cn.fujitsu.com>
>> + *
>> + * arpt_MARK.c -- arptables extension to set mark for arp packet
>> + *
>> + *   This program is free software; you can redistribute it and/or modify
>> + *   it under the terms of the GNU General Public License as published by
>> + *   the Free Software Foundation; either version 2 of the License, or
>> + *   (at your option) any later version.
>> + *
>> + *   This program is distributed in the hope that it will be useful,
>> + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + *   GNU General Public License for more details.
>> + *
>> + *   You should have received a copy of the GNU General Public License
>> + *   along with this program; if not, write to the Free Software
>> + *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
>> + */
>> +
>> +#include <stdio.h>
>> +#include <getopt.h>
>> +#include <arptables.h>
>> +#include <linux/netfilter/xt_mark.h>
>> +#include <linux/netfilter/xt_MARK.h>
>> +#include <linux/netfilter/x_tables.h>
>> +
>> +static void
>> +help(void)
>
>Place this in the same line, ie.
>
>static void help(void)
ok. will fix it in v3.
>
>> +{
>> +     printf(
>> +"MARK target v%s options:\n"
>> +"--set-mark mark : set the mark value\n",
>> +     ARPTABLES_VERSION);
>> +}
>> +
>> +#define MARK_OPT 1
>> +
>> +static struct option opts[] = {
>> +     { "set-mark"   , required_argument, 0, MARK_OPT },
>
>Could you use C99 initialization for this?
>
>I know other extensions don't because this code is rather old, but it
>would be good to good at least new code in better shape.
ok. will fix it in v3.
>
>> +     {0}
>> +};
>> +
>> +static void
>> +init(struct arpt_entry_target *t)
>> +{
>> +     struct xt_mark_tginfo2 *info = (struct xt_mark_tginfo2 *) t->data;
>> +
>> +     info->mark = 0;
>> +}
>> +
>> +static int
>> +parse(int c, char **argv, int invert, unsigned int *flags,
>> +     const struct arpt_entry *e,
>> +     struct arpt_entry_target **t)
>> +{
>> +     struct xt_mark_tginfo2 *info = (struct xt_mark_tginfo2 *)(*t)->data;
>> +     int i;
>> +
>> +     switch (c) {
>> +             case MARK_OPT:
>
>We prefer:
>
>        switch (c) {
>        case MARK_OPT:
>                ...
ok. will fix it in v3.
>
>> +                     if (sscanf(argv[optind-1], "%x", &i) != 1) {
>> +                             exit_error(PARAMETER_PROBLEM,
>> +                                             "Bad mark value `%s'", optarg);
>
>                                exit_error(...
>                                           "Bad mark..."
>
>> +                             return 0;
>> +                     }
>> +                     info->mark = i;
>> +                     if (*flags)
>> +                             exit_error(PARAMETER_PROBLEM,
>> +                                             "CLASSIFY: Can't specify --set-mark twice");
>> +                     *flags = 1;
>> +                     break;
>> +             default:
>> +                     return 0;
>> +     }
>> +     return 1;
>> +}
>> +
>> +static void final_check(unsigned int flags)
>> +{
>> +     if (!flags)
>> +             exit_error(PARAMETER_PROBLEM, "MARK: Parameter --set-mark is required");
>> +}
>> +
>> +static void print(const struct arpt_arp *ip,
>> +     const struct arpt_entry_target *target, int numeric)
>> +{
>> +     struct xt_mark_tginfo2 *info = (struct xt_mark_tginfo2 *)(target->data);
>> +
>> +     printf("--set-mark %x ", info->mark);
>> +}
>> +
>> +static void
>> +save(const struct arpt_arp *ip, const struct arpt_entry_target *target)
>> +{
>> +}
>> +
>> +static
>> +struct arptables_target mark
>> += { NULL,
>> +     "MARK",
>> +     ARPTABLES_VERSION,
>> +     ARPT_ALIGN(sizeof(struct xt_mark_tginfo2)),
>> +     ARPT_ALIGN(sizeof(struct xt_mark_tginfo2)),
>> +     2,
>> +     &help,
>> +     &init,
>> +     &parse,
>> +     &final_check,
>> +     &print,
>> +     &save,
>> +     opts
>
>Please, use C99 structure initialization here too.
ok. will fix it in v3.

thanks!
>
>> +};
>> +
>> +static void _init(void) __attribute__ ((constructor));
>> +static void _init(void)
>> +{
>> +     register_target(&mark);
>> +}
>> --
>> 1.7.12.4
>>
>> --

  reply	other threads:[~2015-03-26  1:43 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-25  1:57 [PATCH V2 0/4] add mark target for arptables Zhang Chunyu
2015-03-25  1:57 ` [PATCH V2 1/4] Add revision field for xt_entry_target Zhang Chunyu
2015-03-25  1:57 ` [PATCH V2 2/4] Add MARK target for arptables Zhang Chunyu
2015-03-25 16:16   ` Pablo Neira Ayuso
2015-03-26  1:43     ` Zhang, Chunyu [this message]
2015-03-25  1:57 ` [PATCH V2 3/4] Update the manpage for MARK target Zhang Chunyu
2015-03-25  1:57 ` [PATCH V2 4/4] Add --and-mark and --or-mark Zhang Chunyu
2015-03-25 16:16   ` Pablo Neira Ayuso
2015-03-26  1:39     ` Zhang, Chunyu

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=A43879EB4A7F5F449E2CA8148EA79E516EE156@G08CNEXMBPEKD01.g08.fujitsu.local \
    --to=zhangcy@cn.fujitsu.com \
    --cc=gaofeng@cn.fujitsu.com \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=pablo@netfilter.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.