From: Vladislav Yasevich <vyasevich@gmail.com>
To: netdev@vger.kernel.org
Cc: phil@nwl.cc, kaber@trash.net, Vladislav Yasevich <vyasevic@redhat.com>
Subject: [PATCH 2/2] vlan: Do not put vlan headers back on bridge and macvlan ports
Date: Mon, 16 Nov 2015 15:43:45 -0500 [thread overview]
Message-ID: <1447706625-25979-3-git-send-email-vyasevic@redhat.com> (raw)
In-Reply-To: <1447706625-25979-1-git-send-email-vyasevic@redhat.com>
When a vlan is configured with REORDER_HEADER set to 0, the vlan
header is put back into the packet and makes it appear that
the vlan header is still there even after it's been processed.
This posses a problem for bridge and macvlan ports. The packets
passed to those device may be forwarded and at the time of the
forward, vlan headers end up being unexpectedly present.
With the patch, we make sure that we do not put the vlan header
back (when REORDER_HEADER is 0) if a bridge or macvlan has
been configured on top of the vlan device.
Signed-off-by: Vladislav Yasevich <vyasevic@redhat.com>
---
include/linux/netdevice.h | 5 +++++
net/8021q/vlan_core.c | 4 +++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 2d15e38..2f9d47e 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -3842,6 +3842,11 @@ static inline bool netif_is_bridge_master(const struct net_device *dev)
return dev->priv_flags & IFF_EBRIDGE;
}
+static inline bool netif_is_bridge_port(const struct net_device *dev)
+{
+ return dev->priv_flags & IFF_BRIDGE_PORT;
+}
+
static inline bool netif_is_ovs_master(const struct net_device *dev)
{
return dev->priv_flags & IFF_OPENVSWITCH;
diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c
index 61bf2a0..c2c9a0f 100644
--- a/net/8021q/vlan_core.c
+++ b/net/8021q/vlan_core.c
@@ -30,7 +30,9 @@ bool vlan_do_receive(struct sk_buff **skbp)
skb->pkt_type = PACKET_HOST;
}
- if (!(vlan_dev_priv(vlan_dev)->flags & VLAN_FLAG_REORDER_HDR)) {
+ if (!(vlan_dev_priv(vlan_dev)->flags & VLAN_FLAG_REORDER_HDR) &&
+ !netif_is_macvlan_port(vlan_dev) &&
+ !netif_is_bridge_port(vlan_dev)) {
unsigned int offset = skb->data - skb_mac_header(skb);
/*
--
1.9.3
next prev parent reply other threads:[~2015-11-16 20:43 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-16 20:43 [PATCH 0/2] Fix issues with vlans without REORDER_HEADER Vladislav Yasevich
2015-11-16 20:43 ` [PATCH 1/2] vlan: Fix untag operations of stacked vlans with REORDER_HEADER off Vladislav Yasevich
2015-12-14 14:51 ` Nicolas Dichtel
2015-12-14 22:44 ` [PATCH net] skbuff: Fix offset error in skb_reorder_vlan_header Vladislav Yasevich
2015-12-15 5:31 ` David Miller
2015-12-15 14:57 ` Nicolas Dichtel
2015-11-16 20:43 ` Vladislav Yasevich [this message]
2015-11-17 19:39 ` [PATCH 0/2] Fix issues with vlans without REORDER_HEADER David Miller
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=1447706625-25979-3-git-send-email-vyasevic@redhat.com \
--to=vyasevich@gmail.com \
--cc=kaber@trash.net \
--cc=netdev@vger.kernel.org \
--cc=phil@nwl.cc \
--cc=vyasevic@redhat.com \
/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 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).