mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 12:57:06 +09:00
net: ip_gre: do not report erspan_ver for gre or gretap
[ Upstream commit2bdf700e53] Report erspan version field to userspace in ipgre_fill_info just for erspan tunnels. The issue can be triggered with the following reproducer: $ip link add name gre1 type gre local 192.168.0.1 remote 192.168.1.1 $ip link set dev gre1 up $ip -d link sh gre1 13: gre1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/gre 192.168.0.1 peer 192.168.1.1 promiscuity 0 minmtu 0 maxmtu 0 gre remote 192.168.1.1 local 192.168.0.1 ttl inherit erspan_ver 0 addrgenmode eui64 numtxqueues 1 numrxqueues 1 Fixes:f551c91de2("net: erspan: introduce erspan v2 for ip_gre") Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
d1dde4137a
commit
b3c81acf23
@@ -1466,9 +1466,23 @@ static int ipgre_fill_info(struct sk_buff *skb, const struct net_device *dev)
|
||||
struct ip_tunnel_parm *p = &t->parms;
|
||||
__be16 o_flags = p->o_flags;
|
||||
|
||||
if ((t->erspan_ver == 1 || t->erspan_ver == 2) &&
|
||||
!t->collect_md)
|
||||
o_flags |= TUNNEL_KEY;
|
||||
if (t->erspan_ver == 1 || t->erspan_ver == 2) {
|
||||
if (!t->collect_md)
|
||||
o_flags |= TUNNEL_KEY;
|
||||
|
||||
if (nla_put_u8(skb, IFLA_GRE_ERSPAN_VER, t->erspan_ver))
|
||||
goto nla_put_failure;
|
||||
|
||||
if (t->erspan_ver == 1) {
|
||||
if (nla_put_u32(skb, IFLA_GRE_ERSPAN_INDEX, t->index))
|
||||
goto nla_put_failure;
|
||||
} else {
|
||||
if (nla_put_u8(skb, IFLA_GRE_ERSPAN_DIR, t->dir))
|
||||
goto nla_put_failure;
|
||||
if (nla_put_u16(skb, IFLA_GRE_ERSPAN_HWID, t->hwid))
|
||||
goto nla_put_failure;
|
||||
}
|
||||
}
|
||||
|
||||
if (nla_put_u32(skb, IFLA_GRE_LINK, p->link) ||
|
||||
nla_put_be16(skb, IFLA_GRE_IFLAGS,
|
||||
@@ -1504,19 +1518,6 @@ static int ipgre_fill_info(struct sk_buff *skb, const struct net_device *dev)
|
||||
goto nla_put_failure;
|
||||
}
|
||||
|
||||
if (nla_put_u8(skb, IFLA_GRE_ERSPAN_VER, t->erspan_ver))
|
||||
goto nla_put_failure;
|
||||
|
||||
if (t->erspan_ver == 1) {
|
||||
if (nla_put_u32(skb, IFLA_GRE_ERSPAN_INDEX, t->index))
|
||||
goto nla_put_failure;
|
||||
} else if (t->erspan_ver == 2) {
|
||||
if (nla_put_u8(skb, IFLA_GRE_ERSPAN_DIR, t->dir))
|
||||
goto nla_put_failure;
|
||||
if (nla_put_u16(skb, IFLA_GRE_ERSPAN_HWID, t->hwid))
|
||||
goto nla_put_failure;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
nla_put_failure:
|
||||
|
||||
Reference in New Issue
Block a user