* [PATCH 1/2 nf-next] netfilter: nft_meta: add NFT_META_BRI_VLAN_PROTO support @ 2019-06-27 2:09 wenxu 2019-06-27 2:09 ` [PATCH 2/2 nf-next] netfilter:nft_meta: add NFT_META_VLAN support wenxu 2019-06-27 11:18 ` [PATCH 1/2 nf-next] netfilter: nft_meta: add NFT_META_BRI_VLAN_PROTO support Pablo Neira Ayuso 0 siblings, 2 replies; 6+ messages in thread From: wenxu @ 2019-06-27 2:09 UTC (permalink / raw) To: pablo, fw; +Cc: netfilter-devel, netdev From: wenxu <wenxu@ucloud.cn> This patch provide a meta to get the bridge vlan proto nft add rule bridge firewall zones counter meta br_vlan_proto 0x8100 Signed-off-by: wenxu <wenxu@ucloud.cn> --- include/uapi/linux/netfilter/nf_tables.h | 2 ++ net/netfilter/nft_meta.c | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h index 8859535..0b18646 100644 --- a/include/uapi/linux/netfilter/nf_tables.h +++ b/include/uapi/linux/netfilter/nf_tables.h @@ -796,6 +796,7 @@ enum nft_exthdr_attributes { * @NFT_META_IIFKIND: packet input interface kind name (dev->rtnl_link_ops->kind) * @NFT_META_OIFKIND: packet output interface kind name (dev->rtnl_link_ops->kind) * @NFT_META_BRI_PVID: packet input bridge port pvid + * @NFT_META_BRI_VLAN_PROTO: packet input bridge vlan proto */ enum nft_meta_keys { NFT_META_LEN, @@ -827,6 +828,7 @@ enum nft_meta_keys { NFT_META_IIFKIND, NFT_META_OIFKIND, NFT_META_BRI_PVID, + NFT_META_BRI_VLAN_PROTO, }; /** diff --git a/net/netfilter/nft_meta.c b/net/netfilter/nft_meta.c index 4f8116d..e3adf6a 100644 --- a/net/netfilter/nft_meta.c +++ b/net/netfilter/nft_meta.c @@ -248,6 +248,14 @@ void nft_meta_get_eval(const struct nft_expr *expr, return; } goto err; + case NFT_META_BRI_VLAN_PROTO: + if (in == NULL || (p = br_port_get_rtnl_rcu(in)) == NULL) + goto err; + if (br_opt_get(p->br, BROPT_VLAN_ENABLED)) { + nft_reg_store16(dest, p->br->vlan_proto); + return; + } + goto err; #endif case NFT_META_IIFKIND: if (in == NULL || in->rtnl_link_ops == NULL) @@ -376,6 +384,7 @@ static int nft_meta_get_init(const struct nft_ctx *ctx, len = IFNAMSIZ; break; case NFT_META_BRI_PVID: + case NFT_META_BRI_VLAN_PROTO: if (ctx->family != NFPROTO_BRIDGE) return -EOPNOTSUPP; len = sizeof(u16); -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2 nf-next] netfilter:nft_meta: add NFT_META_VLAN support 2019-06-27 2:09 [PATCH 1/2 nf-next] netfilter: nft_meta: add NFT_META_BRI_VLAN_PROTO support wenxu @ 2019-06-27 2:09 ` wenxu 2019-06-27 12:35 ` Pablo Neira Ayuso 2019-06-27 11:18 ` [PATCH 1/2 nf-next] netfilter: nft_meta: add NFT_META_BRI_VLAN_PROTO support Pablo Neira Ayuso 1 sibling, 1 reply; 6+ messages in thread From: wenxu @ 2019-06-27 2:09 UTC (permalink / raw) To: pablo, fw; +Cc: netfilter-devel, netdev From: wenxu <wenxu@ucloud.cn> This patch provide a meta vlan to set the vlan tag of the packet. for q-in-q vlan id 20: meta vlan set 0x88a8:20 set the default 0x8100 vlan type with vlan id 20 meta vlan set 20 Signed-off-by: wenxu <wenxu@ucloud.cn> --- include/uapi/linux/netfilter/nf_tables.h | 4 ++++ net/netfilter/nft_meta.c | 27 ++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h index 0b18646..cf037f2 100644 --- a/include/uapi/linux/netfilter/nf_tables.h +++ b/include/uapi/linux/netfilter/nf_tables.h @@ -797,6 +797,7 @@ enum nft_exthdr_attributes { * @NFT_META_OIFKIND: packet output interface kind name (dev->rtnl_link_ops->kind) * @NFT_META_BRI_PVID: packet input bridge port pvid * @NFT_META_BRI_VLAN_PROTO: packet input bridge vlan proto + * @NFT_META_VLAN: packet vlan metadata */ enum nft_meta_keys { NFT_META_LEN, @@ -829,6 +830,7 @@ enum nft_meta_keys { NFT_META_OIFKIND, NFT_META_BRI_PVID, NFT_META_BRI_VLAN_PROTO, + NFT_META_VLAN, }; /** @@ -895,12 +897,14 @@ enum nft_hash_attributes { * @NFTA_META_DREG: destination register (NLA_U32) * @NFTA_META_KEY: meta data item to load (NLA_U32: nft_meta_keys) * @NFTA_META_SREG: source register (NLA_U32) + * @NFTA_META_SREG2: source register (NLA_U32) */ enum nft_meta_attributes { NFTA_META_UNSPEC, NFTA_META_DREG, NFTA_META_KEY, NFTA_META_SREG, + NFTA_META_SREG2, __NFTA_META_MAX }; #define NFTA_META_MAX (__NFTA_META_MAX - 1) diff --git a/net/netfilter/nft_meta.c b/net/netfilter/nft_meta.c index e3adf6a..29a6679 100644 --- a/net/netfilter/nft_meta.c +++ b/net/netfilter/nft_meta.c @@ -28,7 +28,10 @@ struct nft_meta { enum nft_meta_keys key:8; union { enum nft_registers dreg:8; - enum nft_registers sreg:8; + struct { + enum nft_registers sreg:8; + enum nft_registers sreg2:8; + }; }; }; @@ -312,6 +315,17 @@ static void nft_meta_set_eval(const struct nft_expr *expr, skb->secmark = value; break; #endif + case NFT_META_VLAN: { + u32 *sreg2 = ®s->data[meta->sreg2]; + __be16 vlan_proto; + u16 vlan_tci; + + vlan_tci = nft_reg_load16(sreg); + vlan_proto = nft_reg_load16(sreg2); + + __vlan_hwaccel_put_tag(skb, vlan_proto, vlan_tci); + break; + } default: WARN_ON(1); } @@ -321,6 +335,7 @@ static void nft_meta_set_eval(const struct nft_expr *expr, [NFTA_META_DREG] = { .type = NLA_U32 }, [NFTA_META_KEY] = { .type = NLA_U32 }, [NFTA_META_SREG] = { .type = NLA_U32 }, + [NFTA_META_SREG2] = { .type = NLA_U32 }, }; static int nft_meta_get_init(const struct nft_ctx *ctx, @@ -483,6 +498,13 @@ static int nft_meta_set_init(const struct nft_ctx *ctx, case NFT_META_PKTTYPE: len = sizeof(u8); break; + case NFT_META_VLAN: + len = sizeof(u16); + priv->sreg2 = nft_parse_register(tb[NFTA_META_SREG2]); + err = nft_validate_register_load(priv->sreg2, len); + if (err < 0) + return err; + break; default: return -EOPNOTSUPP; } @@ -521,6 +543,9 @@ static int nft_meta_set_dump(struct sk_buff *skb, const struct nft_expr *expr) goto nla_put_failure; if (nft_dump_register(skb, NFTA_META_SREG, priv->sreg)) goto nla_put_failure; + if (priv->key == NFT_META_VLAN && + nft_dump_register(skb, NFTA_META_SREG2, priv->sreg2)) + goto nla_put_failure; return 0; -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2 nf-next] netfilter:nft_meta: add NFT_META_VLAN support 2019-06-27 2:09 ` [PATCH 2/2 nf-next] netfilter:nft_meta: add NFT_META_VLAN support wenxu @ 2019-06-27 12:35 ` Pablo Neira Ayuso 2019-06-27 13:37 ` wenxu 0 siblings, 1 reply; 6+ messages in thread From: Pablo Neira Ayuso @ 2019-06-27 12:35 UTC (permalink / raw) To: wenxu; +Cc: fw, netfilter-devel, netdev On Thu, Jun 27, 2019 at 10:09:17AM +0800, wenxu@ucloud.cn wrote: > From: wenxu <wenxu@ucloud.cn> > > This patch provide a meta vlan to set the vlan tag of the packet. > > for q-in-q vlan id 20: > meta vlan set 0x88a8:20 Actually, I think this is not very useful for stacked vlan since this just sets/mangles the existing meta vlan data. We'll need infrastructure that uses skb_vlan_push() and _pop(). Patch looks good anyway, such infrastructure to push/pop can be added later on. Thanks. > set the default 0x8100 vlan type with vlan id 20 > meta vlan set 20 > > Signed-off-by: wenxu <wenxu@ucloud.cn> > --- > include/uapi/linux/netfilter/nf_tables.h | 4 ++++ > net/netfilter/nft_meta.c | 27 ++++++++++++++++++++++++++- > 2 files changed, 30 insertions(+), 1 deletion(-) > > diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h > index 0b18646..cf037f2 100644 > --- a/include/uapi/linux/netfilter/nf_tables.h > +++ b/include/uapi/linux/netfilter/nf_tables.h > @@ -797,6 +797,7 @@ enum nft_exthdr_attributes { > * @NFT_META_OIFKIND: packet output interface kind name (dev->rtnl_link_ops->kind) > * @NFT_META_BRI_PVID: packet input bridge port pvid > * @NFT_META_BRI_VLAN_PROTO: packet input bridge vlan proto > + * @NFT_META_VLAN: packet vlan metadata > */ > enum nft_meta_keys { > NFT_META_LEN, > @@ -829,6 +830,7 @@ enum nft_meta_keys { > NFT_META_OIFKIND, > NFT_META_BRI_PVID, > NFT_META_BRI_VLAN_PROTO, > + NFT_META_VLAN, > }; > > /** > @@ -895,12 +897,14 @@ enum nft_hash_attributes { > * @NFTA_META_DREG: destination register (NLA_U32) > * @NFTA_META_KEY: meta data item to load (NLA_U32: nft_meta_keys) > * @NFTA_META_SREG: source register (NLA_U32) > + * @NFTA_META_SREG2: source register (NLA_U32) > */ > enum nft_meta_attributes { > NFTA_META_UNSPEC, > NFTA_META_DREG, > NFTA_META_KEY, > NFTA_META_SREG, > + NFTA_META_SREG2, > __NFTA_META_MAX > }; > #define NFTA_META_MAX (__NFTA_META_MAX - 1) > diff --git a/net/netfilter/nft_meta.c b/net/netfilter/nft_meta.c > index e3adf6a..29a6679 100644 > --- a/net/netfilter/nft_meta.c > +++ b/net/netfilter/nft_meta.c > @@ -28,7 +28,10 @@ struct nft_meta { > enum nft_meta_keys key:8; > union { > enum nft_registers dreg:8; > - enum nft_registers sreg:8; > + struct { > + enum nft_registers sreg:8; > + enum nft_registers sreg2:8; > + }; > }; > }; > > @@ -312,6 +315,17 @@ static void nft_meta_set_eval(const struct nft_expr *expr, > skb->secmark = value; > break; > #endif > + case NFT_META_VLAN: { > + u32 *sreg2 = ®s->data[meta->sreg2]; > + __be16 vlan_proto; > + u16 vlan_tci; > + > + vlan_tci = nft_reg_load16(sreg); > + vlan_proto = nft_reg_load16(sreg2); > + > + __vlan_hwaccel_put_tag(skb, vlan_proto, vlan_tci); > + break; > + } > default: > WARN_ON(1); > } > @@ -321,6 +335,7 @@ static void nft_meta_set_eval(const struct nft_expr *expr, > [NFTA_META_DREG] = { .type = NLA_U32 }, > [NFTA_META_KEY] = { .type = NLA_U32 }, > [NFTA_META_SREG] = { .type = NLA_U32 }, > + [NFTA_META_SREG2] = { .type = NLA_U32 }, > }; > > static int nft_meta_get_init(const struct nft_ctx *ctx, > @@ -483,6 +498,13 @@ static int nft_meta_set_init(const struct nft_ctx *ctx, > case NFT_META_PKTTYPE: > len = sizeof(u8); > break; > + case NFT_META_VLAN: > + len = sizeof(u16); > + priv->sreg2 = nft_parse_register(tb[NFTA_META_SREG2]); > + err = nft_validate_register_load(priv->sreg2, len); > + if (err < 0) > + return err; > + break; > default: > return -EOPNOTSUPP; > } > @@ -521,6 +543,9 @@ static int nft_meta_set_dump(struct sk_buff *skb, const struct nft_expr *expr) > goto nla_put_failure; > if (nft_dump_register(skb, NFTA_META_SREG, priv->sreg)) > goto nla_put_failure; > + if (priv->key == NFT_META_VLAN && > + nft_dump_register(skb, NFTA_META_SREG2, priv->sreg2)) > + goto nla_put_failure; > > return 0; > > -- > 1.8.3.1 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2 nf-next] netfilter:nft_meta: add NFT_META_VLAN support 2019-06-27 12:35 ` Pablo Neira Ayuso @ 2019-06-27 13:37 ` wenxu 2019-06-27 19:16 ` Pablo Neira Ayuso 0 siblings, 1 reply; 6+ messages in thread From: wenxu @ 2019-06-27 13:37 UTC (permalink / raw) To: Pablo Neira Ayuso; +Cc: fw, netfilter-devel, netdev 在 2019/6/27 20:35, Pablo Neira Ayuso 写道: > On Thu, Jun 27, 2019 at 10:09:17AM +0800, wenxu@ucloud.cn wrote: >> From: wenxu <wenxu@ucloud.cn> >> >> This patch provide a meta vlan to set the vlan tag of the packet. >> >> for q-in-q vlan id 20: >> meta vlan set 0x88a8:20 > Actually, I think this is not very useful for stacked vlan since this > just sets/mangles the existing meta vlan data. > > We'll need infrastructure that uses skb_vlan_push() and _pop(). > > Patch looks good anyway, such infrastructure to push/pop can be added > later on. > > Thanks. yes, It's just ste/mangle the meta vlan data. I just wonder if we set for stacked vlan. vlan meta 0x88a8:20. The packet should contain a 0x8100 vlan tag, we just push the inner vlan and the the vlan meta with the outer 0x88a8:20. Or the packet don't contain only vlan tag, we add a inner 0x8100:20 tag and outer 0x88a8:20 tag? So wen should check for this > >> set the default 0x8100 vlan type with vlan id 20 >> meta vlan set 20 >> >> Signed-off-by: wenxu <wenxu@ucloud.cn> >> --- >> include/uapi/linux/netfilter/nf_tables.h | 4 ++++ >> net/netfilter/nft_meta.c | 27 ++++++++++++++++++++++++++- >> 2 files changed, 30 insertions(+), 1 deletion(-) >> >> diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h >> index 0b18646..cf037f2 100644 >> --- a/include/uapi/linux/netfilter/nf_tables.h >> +++ b/include/uapi/linux/netfilter/nf_tables.h >> @@ -797,6 +797,7 @@ enum nft_exthdr_attributes { >> * @NFT_META_OIFKIND: packet output interface kind name (dev->rtnl_link_ops->kind) >> * @NFT_META_BRI_PVID: packet input bridge port pvid >> * @NFT_META_BRI_VLAN_PROTO: packet input bridge vlan proto >> + * @NFT_META_VLAN: packet vlan metadata >> */ >> enum nft_meta_keys { >> NFT_META_LEN, >> @@ -829,6 +830,7 @@ enum nft_meta_keys { >> NFT_META_OIFKIND, >> NFT_META_BRI_PVID, >> NFT_META_BRI_VLAN_PROTO, >> + NFT_META_VLAN, >> }; >> >> /** >> @@ -895,12 +897,14 @@ enum nft_hash_attributes { >> * @NFTA_META_DREG: destination register (NLA_U32) >> * @NFTA_META_KEY: meta data item to load (NLA_U32: nft_meta_keys) >> * @NFTA_META_SREG: source register (NLA_U32) >> + * @NFTA_META_SREG2: source register (NLA_U32) >> */ >> enum nft_meta_attributes { >> NFTA_META_UNSPEC, >> NFTA_META_DREG, >> NFTA_META_KEY, >> NFTA_META_SREG, >> + NFTA_META_SREG2, >> __NFTA_META_MAX >> }; >> #define NFTA_META_MAX (__NFTA_META_MAX - 1) >> diff --git a/net/netfilter/nft_meta.c b/net/netfilter/nft_meta.c >> index e3adf6a..29a6679 100644 >> --- a/net/netfilter/nft_meta.c >> +++ b/net/netfilter/nft_meta.c >> @@ -28,7 +28,10 @@ struct nft_meta { >> enum nft_meta_keys key:8; >> union { >> enum nft_registers dreg:8; >> - enum nft_registers sreg:8; >> + struct { >> + enum nft_registers sreg:8; >> + enum nft_registers sreg2:8; >> + }; >> }; >> }; >> >> @@ -312,6 +315,17 @@ static void nft_meta_set_eval(const struct nft_expr *expr, >> skb->secmark = value; >> break; >> #endif >> + case NFT_META_VLAN: { >> + u32 *sreg2 = ®s->data[meta->sreg2]; >> + __be16 vlan_proto; >> + u16 vlan_tci; >> + >> + vlan_tci = nft_reg_load16(sreg); >> + vlan_proto = nft_reg_load16(sreg2); >> + >> + __vlan_hwaccel_put_tag(skb, vlan_proto, vlan_tci); >> + break; >> + } >> default: >> WARN_ON(1); >> } >> @@ -321,6 +335,7 @@ static void nft_meta_set_eval(const struct nft_expr *expr, >> [NFTA_META_DREG] = { .type = NLA_U32 }, >> [NFTA_META_KEY] = { .type = NLA_U32 }, >> [NFTA_META_SREG] = { .type = NLA_U32 }, >> + [NFTA_META_SREG2] = { .type = NLA_U32 }, >> }; >> >> static int nft_meta_get_init(const struct nft_ctx *ctx, >> @@ -483,6 +498,13 @@ static int nft_meta_set_init(const struct nft_ctx *ctx, >> case NFT_META_PKTTYPE: >> len = sizeof(u8); >> break; >> + case NFT_META_VLAN: >> + len = sizeof(u16); >> + priv->sreg2 = nft_parse_register(tb[NFTA_META_SREG2]); >> + err = nft_validate_register_load(priv->sreg2, len); >> + if (err < 0) >> + return err; >> + break; >> default: >> return -EOPNOTSUPP; >> } >> @@ -521,6 +543,9 @@ static int nft_meta_set_dump(struct sk_buff *skb, const struct nft_expr *expr) >> goto nla_put_failure; >> if (nft_dump_register(skb, NFTA_META_SREG, priv->sreg)) >> goto nla_put_failure; >> + if (priv->key == NFT_META_VLAN && >> + nft_dump_register(skb, NFTA_META_SREG2, priv->sreg2)) >> + goto nla_put_failure; >> >> return 0; >> >> -- >> 1.8.3.1 >> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2 nf-next] netfilter:nft_meta: add NFT_META_VLAN support 2019-06-27 13:37 ` wenxu @ 2019-06-27 19:16 ` Pablo Neira Ayuso 0 siblings, 0 replies; 6+ messages in thread From: Pablo Neira Ayuso @ 2019-06-27 19:16 UTC (permalink / raw) To: wenxu; +Cc: fw, netfilter-devel, netdev On Thu, Jun 27, 2019 at 09:37:53PM +0800, wenxu wrote: > > 在 2019/6/27 20:35, Pablo Neira Ayuso 写道: > > On Thu, Jun 27, 2019 at 10:09:17AM +0800, wenxu@ucloud.cn wrote: > >> From: wenxu <wenxu@ucloud.cn> > >> > >> This patch provide a meta vlan to set the vlan tag of the packet. > >> > >> for q-in-q vlan id 20: > >> meta vlan set 0x88a8:20 > > Actually, I think this is not very useful for stacked vlan since this > > just sets/mangles the existing meta vlan data. > > > > We'll need infrastructure that uses skb_vlan_push() and _pop(). > > > > Patch looks good anyway, such infrastructure to push/pop can be added > > later on. > > > > Thanks. > > yes, It's just ste/mangle the meta vlan data. I just wonder if we set for stacked vlan. > vlan meta 0x88a8:20. The packet should contain a 0x8100 vlan tag, we just push the > inner vlan and the the vlan meta with the outer 0x88a8:20. Or the packet don't contain > only vlan tag, we add a inner 0x8100:20 tag and outer 0x88a8:20 tag? You got me thinking here. I wonder if we can just make this fit into nft_payload. Or just add a new nft_vlan extension for this specifically, to push, to mangle and to pop vlan headers. This would be a simple solution for this. I need to explore this by the weekend, will get back to you beginning next week. Feedback is welcome in any case :-), thanks. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2 nf-next] netfilter: nft_meta: add NFT_META_BRI_VLAN_PROTO support 2019-06-27 2:09 [PATCH 1/2 nf-next] netfilter: nft_meta: add NFT_META_BRI_VLAN_PROTO support wenxu 2019-06-27 2:09 ` [PATCH 2/2 nf-next] netfilter:nft_meta: add NFT_META_VLAN support wenxu @ 2019-06-27 11:18 ` Pablo Neira Ayuso 1 sibling, 0 replies; 6+ messages in thread From: Pablo Neira Ayuso @ 2019-06-27 11:18 UTC (permalink / raw) To: wenxu; +Cc: fw, netfilter-devel, netdev On Thu, Jun 27, 2019 at 10:09:16AM +0800, wenxu@ucloud.cn wrote: > From: wenxu <wenxu@ucloud.cn> > > This patch provide a meta to get the bridge vlan proto > > nft add rule bridge firewall zones counter meta br_vlan_proto 0x8100 > > Signed-off-by: wenxu <wenxu@ucloud.cn> > --- > include/uapi/linux/netfilter/nf_tables.h | 2 ++ > net/netfilter/nft_meta.c | 9 +++++++++ > 2 files changed, 11 insertions(+) > > diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h > index 8859535..0b18646 100644 > --- a/include/uapi/linux/netfilter/nf_tables.h > +++ b/include/uapi/linux/netfilter/nf_tables.h > @@ -796,6 +796,7 @@ enum nft_exthdr_attributes { > * @NFT_META_IIFKIND: packet input interface kind name (dev->rtnl_link_ops->kind) > * @NFT_META_OIFKIND: packet output interface kind name (dev->rtnl_link_ops->kind) > * @NFT_META_BRI_PVID: packet input bridge port pvid > + * @NFT_META_BRI_VLAN_PROTO: packet input bridge vlan proto Looks good. Since this only works for the input path, should we rename these to? NFT_META_BRI_IIFVID NFT_META_BRI_IIFVPROTO so we leave room for _OIF (output interface) in the future? Apart from that, this looks good to me. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-06-27 19:16 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-06-27 2:09 [PATCH 1/2 nf-next] netfilter: nft_meta: add NFT_META_BRI_VLAN_PROTO support wenxu 2019-06-27 2:09 ` [PATCH 2/2 nf-next] netfilter:nft_meta: add NFT_META_VLAN support wenxu 2019-06-27 12:35 ` Pablo Neira Ayuso 2019-06-27 13:37 ` wenxu 2019-06-27 19:16 ` Pablo Neira Ayuso 2019-06-27 11:18 ` [PATCH 1/2 nf-next] netfilter: nft_meta: add NFT_META_BRI_VLAN_PROTO support Pablo Neira Ayuso
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).