batman-adv: upgrade package to latest release 2020.4
[feed/routing.git] / batman-adv / src / compat-hacks.h
index b57f7b6e0b9a82243b8f7d4c034113569ea526b8..fec5e153f6d6eade4b8bc92871a381fabe53aa4c 100644 (file)
@@ -105,6 +105,50 @@ static inline int batadv_access_ok(int type, const void __user *p,
 
 #endif /* < KERNEL_VERSION(5, 4, 0) */
 
+#if LINUX_VERSION_IS_LESS(5, 10, 0)
+
+#include <linux/if_bridge.h>
+
+struct batadv_br_ip {
+       union {
+               __be32  ip4;
+#if IS_ENABLED(CONFIG_IPV6)
+               struct in6_addr ip6;
+#endif
+       } dst;
+       __be16          proto;
+       __u16           vid;
+};
+
+struct batadv_br_ip_list {
+       struct list_head list;
+       struct batadv_br_ip addr;
+};
+
+#if 0
+/* "static" dropped to force compiler to evaluate it as part of multicast.c
+ * might need to be added again and then called in some kind of dummy
+ * compat.c in case this header is included in multiple files.
+ */
+inline void __batadv_br_ip_list_check(void)
+{
+       BUILD_BUG_ON(sizeof(struct batadv_br_ip_list) != sizeof(struct br_ip_list));
+       BUILD_BUG_ON(offsetof(struct batadv_br_ip_list, list) != offsetof(struct br_ip_list, list));
+       BUILD_BUG_ON(offsetof(struct batadv_br_ip_list, addr) != offsetof(struct br_ip_list, addr));
+
+       BUILD_BUG_ON(sizeof(struct batadv_br_ip) != sizeof(struct br_ip));
+       BUILD_BUG_ON(offsetof(struct batadv_br_ip, dst.ip4) != offsetof(struct br_ip, u.ip4));
+       BUILD_BUG_ON(offsetof(struct batadv_br_ip, dst.ip6) != offsetof(struct br_ip, u.ip6));
+       BUILD_BUG_ON(offsetof(struct batadv_br_ip, proto) != offsetof(struct br_ip, proto));
+       BUILD_BUG_ON(offsetof(struct batadv_br_ip, vid) != offsetof(struct br_ip, vid));
+}
+#endif
+
+#define br_ip batadv_br_ip
+#define br_ip_list batadv_br_ip_list
+
+#endif /* LINUX_VERSION_IS_LESS(5, 10, 0) */
+
 /* <DECLARE_EWMA> */
 
 #include <linux/version.h>