hi pablo >From: Pablo Neira Ayuso >Date: 2015-04-09 >To: Zhang, Chunyu/章 春宇 >Subject: Re: Re: [PATCH] Add NFPROTO_ARP for mark > >On Thu, Apr 09, 2015 at 03:54:33AM +0000, Zhang, Chunyu wrote: >> >From: Pablo Neira Ayuso >> >Date: 2015-04-09 >> >To: Zhang, Chunyu/章 春宇 >> >Subject: Re: [PATCH] Add NFPROTO_ARP for mark >[...] >> >> @@ -41,13 +42,23 @@ mark_mt(const struct sk_buff *skb, struct xt_action_param *par) >> >> return ((skb->mark & info->mask) == info->mark) ^ info->invert; >> >> } >> >> >> >> -static struct xt_target mark_tg_reg __read_mostly = { >> >> - .name = "MARK", >> >> - .revision = 2, >> >> - .family = NFPROTO_UNSPEC, >> >> - .target = mark_tg, >> >> - .targetsize = sizeof(struct xt_mark_tginfo2), >> >> - .me = THIS_MODULE, >> >> +static struct xt_target mark_tg_reg[] __read_mostly = { >> >> + { >> >> + .name = "MARK", >> >> + .revision = 2, >> >> + .family = NFPROTO_UNSPEC, >> >> + .target = mark_tg, >> >> + .targetsize = sizeof(struct xt_mark_tginfo2), >> >> + .me = THIS_MODULE, >> >> + }, >> >> + { >> >> + .name = "MARK", >> >> + .revision = 2, >> >> + .family = NFPROTO_ARP, >> >> + .target = mark_tg, >> >> + .targetsize = sizeof(struct xt_mark_tginfo2), >> >> + .me = THIS_MODULE, >> >> + } >> >> }; >> > >> >You don't need this. >> > >> >The problem is here that your patch: >> > >> >http://patchwork.ozlabs.org/patch/455966/ >> > >> >is missing this chunk: >> > >> >diff --git a/libarptc/libarptc_incl.c b/libarptc/libarptc_incl.c >> >index a034930..87404ce 100644 >> >--- a/libarptc/libarptc_incl.c >> >+++ b/libarptc/libarptc_incl.c >> >@@ -872,7 +872,7 @@ map_target(const TC_HANDLE_T handle, >> > /* memset to all 0 for your memcmp convenience. */ >> > memset(t->u.user.name + strlen(t->u.user.name), >> > 0, >> >- FUNCTION_MAXNAMELEN - strlen(t->u.user.name)); >> >+ FUNCTION_MAXNAMELEN - 1 - strlen(t->u.user.name)); >> > return 1; >> > } 1. maybe should change like this? diff --git a/libarptc/libarptc_incl.c b/libarptc/libarptc_incl.c index a034930..4049cbd 100644 --- a/libarptc/libarptc_incl.c +++ b/libarptc/libarptc_incl.c @@ -872,7 +872,7 @@ map_target(const TC_HANDLE_T handle, /* memset to all 0 for your memcmp convenience. */ memset(t->u.user.name + strlen(t->u.user.name), 0, - FUNCTION_MAXNAMELEN - strlen(t->u.user.name)); + XT_EXTENSION_MAXNAMELEN - strlen(t->u.user.name)); return 1; } 2. mabye have other 4 places should change ? arptables.c:2330: if (chain && strlen(chain) > ARPT_FUNCTION_MAXNAMELEN) arptables.c:2333: chain, ARPT_FUNCTION_MAXNAMELEN); include/linux/netfilter/x_tables.h:71: char errorname[XT_FUNCTION_MAXNAMELEN]; libarptc/libarptc_incl.c:827: memset(t->target.u.user.name, 0, FUNCTION_MAXNAMELEN); >> > >> >Otherwise, the revision number is zeroed. >> > >> >And you don't need: http://patchwork.ozlabs.org/patch/455965/. >> > >> >Please, rebase your userspace patches on top of current arptables git >> >and resubmit. Thanks. >> >> get it 。will do。 >> why arptables --set-mark can work , when add NFPROTO_ARP to xt_mark ? > >I guess you're still using the userspace patches you sent. > >If you rebase on top of current arptables HEAD, that will not work.��.n��������+%������w��{.n����z�����n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�