Repository : ssh://git@open-mesh.org/openwrt-feed-devel
On branch : master
>---------------------------------------------------------------
commit 501db53fc606e87b99ea653026dd511752ceca64
Author: Sven Eckelmann <sven(a)narfation.org>
Date: Sat Mar 9 12:31:45 2019 +0100
batman-adv-devel: simplify ip_mc_check_igmp() and ipv6_mc_check_mld() calls
The ip_mc_check_igmp and ipv6_mc_check_mld functions don't use the
skb_trimmed parameter anymore. batman-adv was restructured to use the new
kernel interface but the remaining parts of OpenWrt are still using the old
function signature.
Signed-off-by: Sven Eckelmann <sven(a)narfation.org>
>---------------------------------------------------------------
501db53fc606e87b99ea653026dd511752ceca64
batman-adv-devel/src/compat-hacks.h | 38 +++++++++++++++++++++++++++++++++++--
1 file changed, 36 insertions(+), 2 deletions(-)
diff --git a/batman-adv-devel/src/compat-hacks.h b/batman-adv-devel/src/compat-hacks.h
index cfeb348..d8de483 100644
--- a/batman-adv-devel/src/compat-hacks.h
+++ b/batman-adv-devel/src/compat-hacks.h
@@ -48,9 +48,43 @@ struct sk_buff *skb_checksum_trimmed(struct sk_buff *skb,
unsigned int transport_len,
__sum16(*skb_chkf)(struct sk_buff *skb));
-int ip_mc_check_igmp(struct sk_buff *skb, struct sk_buff **skb_trimmed);
+int ip_mc_check_igmp(struct sk_buff *skb);
+int ipv6_mc_check_mld(struct sk_buff *skb);
-int ipv6_mc_check_mld(struct sk_buff *skb, struct sk_buff **skb_trimmed);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0)
+
+#include_next <linux/igmp.h>
+#include_next <net/addrconf.h>
+
+static inline int batadv_ipv6_mc_check_mld1(struct sk_buff *skb)
+{
+ return ipv6_mc_check_mld(skb, NULL);
+}
+
+static inline int batadv_ipv6_mc_check_mld2(struct sk_buff *skb,
+ struct sk_buff **skb_trimmed)
+{
+ return ipv6_mc_check_mld(skb, skb_trimmed);
+}
+
+#define ipv6_mc_check_mld_get(_1, _2, ipv6_mc_check_mld_name, ...) ipv6_mc_check_mld_name
+#define ipv6_mc_check_mld(...) \
+ ipv6_mc_check_mld_get(__VA_ARGS__, batadv_ipv6_mc_check_mld2, batadv_ipv6_mc_check_mld1)(__VA_ARGS__)
+
+static inline int batadv_ip_mc_check_igmp1(struct sk_buff *skb)
+{
+ return ip_mc_check_igmp(skb, NULL);
+}
+
+static inline int batadv_ip_mc_check_igmp2(struct sk_buff *skb,
+ struct sk_buff **skb_trimmed)
+{
+ return ip_mc_check_igmp(skb, skb_trimmed);
+}
+
+#define ip_mc_check_igmp_get(_1, _2, ip_mc_check_igmp_name, ...) ip_mc_check_igmp_name
+#define ip_mc_check_igmp(...) \
+ ip_mc_check_igmp_get(__VA_ARGS__, batadv_ip_mc_check_igmp2, batadv_ip_mc_check_igmp1)(__VA_ARGS__)
#endif /* < KERNEL_VERSION(4, 2, 0) */