Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 11387fe4 authored by Eric Garver's avatar Eric Garver Committed by David S. Miller
Browse files

geneve: fix fill_info when using collect_metadata



Since 9b4437a5 ("geneve: Unify LWT and netdev handling.") fill_info
does not return UDP_ZERO_CSUM6_RX when using COLLECT_METADATA. This is
because it uses ip_tunnel_info_af() with the device level info, which is
not valid for COLLECT_METADATA.

Fix by checking for the presence of the actual sockets.

Fixes: 9b4437a5 ("geneve: Unify LWT and netdev handling.")
Signed-off-by: default avatarEric Garver <e@erig.me>
Acked-by: default avatarPravin B Shelar <pshelar@ovn.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e6a88e4b
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1293,7 +1293,7 @@ static int geneve_fill_info(struct sk_buff *skb, const struct net_device *dev)
	if (nla_put_u32(skb, IFLA_GENEVE_ID, vni))
		goto nla_put_failure;

	if (ip_tunnel_info_af(info) == AF_INET) {
	if (rtnl_dereference(geneve->sock4)) {
		if (nla_put_in_addr(skb, IFLA_GENEVE_REMOTE,
				    info->key.u.ipv4.dst))
			goto nla_put_failure;
@@ -1302,8 +1302,10 @@ static int geneve_fill_info(struct sk_buff *skb, const struct net_device *dev)
			       !!(info->key.tun_flags & TUNNEL_CSUM)))
			goto nla_put_failure;

	}

#if IS_ENABLED(CONFIG_IPV6)
	} else {
	if (rtnl_dereference(geneve->sock6)) {
		if (nla_put_in6_addr(skb, IFLA_GENEVE_REMOTE6,
				     &info->key.u.ipv6.dst))
			goto nla_put_failure;
@@ -1315,8 +1317,8 @@ static int geneve_fill_info(struct sk_buff *skb, const struct net_device *dev)
		if (nla_put_u8(skb, IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
			       !geneve->use_udp6_rx_checksums))
			goto nla_put_failure;
#endif
	}
#endif

	if (nla_put_u8(skb, IFLA_GENEVE_TTL, info->key.ttl) ||
	    nla_put_u8(skb, IFLA_GENEVE_TOS, info->key.tos) ||