From: Nikolay Aleksandrov nikolay@nvidia.com
Since now we have src in br_ip, u no longer makes sense so rename it to dst. No functional changes.
Signed-off-by: Nikolay Aleksandrov nikolay@nvidia.com Signed-off-by: David S. Miller davem@davemloft.net [sven@narfation.org: Add compat code] Signed-off-by: Sven Eckelmann sven@narfation.org --- compat-include/linux/if_bridge.h | 26 ++++++++++++++++++++++++++ compat-patches/replacements.sh | 5 +++++ net/batman-adv/multicast.c | 14 +++++++------- 3 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 compat-include/linux/if_bridge.h
diff --git a/compat-include/linux/if_bridge.h b/compat-include/linux/if_bridge.h new file mode 100644 index 00000000..7b6d5876 --- /dev/null +++ b/compat-include/linux/if_bridge.h @@ -0,0 +1,26 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* Copyright (C) 2007-2020 B.A.T.M.A.N. contributors: + * + * Marek Lindner, Simon Wunderlich + * + * This file contains macros for maintaining compatibility with older versions + * of the Linux kernel. + */ + +#ifndef _NET_BATMAN_ADV_COMPAT_LINUX_IF_BRIDGE_H_ +#define _NET_BATMAN_ADV_COMPAT_LINUX_IF_BRIDGE_H_ + +#include <linux/version.h> +#include_next <linux/if_bridge.h> + +#if LINUX_VERSION_IS_LESS(5, 10, 0) + +#define BATADV_BR_IP_UNION u + +#else + +#define BATADV_BR_IP_UNION dst + +#endif /* LINUX_VERSION_IS_LESS(5, 10, 0) */ + +#endif /* _NET_BATMAN_ADV_COMPAT_LINUX_IF_BRIDGE_H_ */ diff --git a/compat-patches/replacements.sh b/compat-patches/replacements.sh index 1b64e5c2..e72ec5ec 100755 --- a/compat-patches/replacements.sh +++ b/compat-patches/replacements.sh @@ -3,3 +3,8 @@ # Copyright (C) 2007-2018 B.A.T.M.A.N. contributors
set -e + +# for kernel < 5.10 to enable br_ip compat code +sed -i \ + -e 's/(->|.)dst.ip/\1BATADV_BR_IP_UNION.ip/' \ + build/net/batman-adv/multicast.c diff --git a/net/batman-adv/multicast.c b/net/batman-adv/multicast.c index 0746fe2c..9af99c39 100644 --- a/net/batman-adv/multicast.c +++ b/net/batman-adv/multicast.c @@ -221,7 +221,7 @@ static u8 batadv_mcast_mla_rtr_flags_bridge_get(struct batadv_priv *bat_priv, * address here, only IPv6 ones */ if (br_ip_entry->addr.proto == htons(ETH_P_IPV6) && - ipv6_addr_is_ll_all_routers(&br_ip_entry->addr.u.ip6)) + ipv6_addr_is_ll_all_routers(&br_ip_entry->addr.dst.ip6)) flags &= ~BATADV_MCAST_WANT_NO_RTR6;
list_del(&br_ip_entry->list); @@ -562,10 +562,10 @@ batadv_mcast_mla_softif_get(struct net_device *dev, static void batadv_mcast_mla_br_addr_cpy(char *dst, const struct br_ip *src) { if (src->proto == htons(ETH_P_IP)) - ip_eth_mc_map(src->u.ip4, dst); + ip_eth_mc_map(src->dst.ip4, dst); #if IS_ENABLED(CONFIG_IPV6) else if (src->proto == htons(ETH_P_IPV6)) - ipv6_eth_mc_map(&src->u.ip6, dst); + ipv6_eth_mc_map(&src->dst.ip6, dst); #endif else eth_zero_addr(dst); @@ -609,11 +609,11 @@ static int batadv_mcast_mla_bridge_get(struct net_device *dev, continue;
if (tvlv_flags & BATADV_MCAST_WANT_ALL_UNSNOOPABLES && - ipv4_is_local_multicast(br_ip_entry->addr.u.ip4)) + ipv4_is_local_multicast(br_ip_entry->addr.dst.ip4)) continue;
if (!(tvlv_flags & BATADV_MCAST_WANT_NO_RTR4) && - !ipv4_is_local_multicast(br_ip_entry->addr.u.ip4)) + !ipv4_is_local_multicast(br_ip_entry->addr.dst.ip4)) continue; }
@@ -623,11 +623,11 @@ static int batadv_mcast_mla_bridge_get(struct net_device *dev, continue;
if (tvlv_flags & BATADV_MCAST_WANT_ALL_UNSNOOPABLES && - ipv6_addr_is_ll_all_nodes(&br_ip_entry->addr.u.ip6)) + ipv6_addr_is_ll_all_nodes(&br_ip_entry->addr.dst.ip6)) continue;
if (!(tvlv_flags & BATADV_MCAST_WANT_NO_RTR6) && - IPV6_ADDR_MC_SCOPE(&br_ip_entry->addr.u.ip6) > + IPV6_ADDR_MC_SCOPE(&br_ip_entry->addr.dst.ip6) > IPV6_ADDR_SCOPE_LINKLOCAL) continue; }