Skip to content

Commit 2bdf700

Browse files
LorenzoBianconidavem330
authored andcommitted
net: ip_gre: do not report erspan_ver for gre or gretap
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: f551c91 ("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>
1 parent 9e8db59 commit 2bdf700

File tree

1 file changed

+17
-16
lines changed

1 file changed

+17
-16
lines changed

net/ipv4/ip_gre.c

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1457,9 +1457,23 @@ static int ipgre_fill_info(struct sk_buff *skb, const struct net_device *dev)
14571457
struct ip_tunnel_parm *p = &t->parms;
14581458
__be16 o_flags = p->o_flags;
14591459

1460-
if ((t->erspan_ver == 1 || t->erspan_ver == 2) &&
1461-
!t->collect_md)
1462-
o_flags |= TUNNEL_KEY;
1460+
if (t->erspan_ver == 1 || t->erspan_ver == 2) {
1461+
if (!t->collect_md)
1462+
o_flags |= TUNNEL_KEY;
1463+
1464+
if (nla_put_u8(skb, IFLA_GRE_ERSPAN_VER, t->erspan_ver))
1465+
goto nla_put_failure;
1466+
1467+
if (t->erspan_ver == 1) {
1468+
if (nla_put_u32(skb, IFLA_GRE_ERSPAN_INDEX, t->index))
1469+
goto nla_put_failure;
1470+
} else {
1471+
if (nla_put_u8(skb, IFLA_GRE_ERSPAN_DIR, t->dir))
1472+
goto nla_put_failure;
1473+
if (nla_put_u16(skb, IFLA_GRE_ERSPAN_HWID, t->hwid))
1474+
goto nla_put_failure;
1475+
}
1476+
}
14631477

14641478
if (nla_put_u32(skb, IFLA_GRE_LINK, p->link) ||
14651479
nla_put_be16(skb, IFLA_GRE_IFLAGS,
@@ -1495,19 +1509,6 @@ static int ipgre_fill_info(struct sk_buff *skb, const struct net_device *dev)
14951509
goto nla_put_failure;
14961510
}
14971511

1498-
if (nla_put_u8(skb, IFLA_GRE_ERSPAN_VER, t->erspan_ver))
1499-
goto nla_put_failure;
1500-
1501-
if (t->erspan_ver == 1) {
1502-
if (nla_put_u32(skb, IFLA_GRE_ERSPAN_INDEX, t->index))
1503-
goto nla_put_failure;
1504-
} else if (t->erspan_ver == 2) {
1505-
if (nla_put_u8(skb, IFLA_GRE_ERSPAN_DIR, t->dir))
1506-
goto nla_put_failure;
1507-
if (nla_put_u16(skb, IFLA_GRE_ERSPAN_HWID, t->hwid))
1508-
goto nla_put_failure;
1509-
}
1510-
15111512
return 0;
15121513

15131514
nla_put_failure:

0 commit comments

Comments
 (0)