summaryrefslogtreecommitdiff
path: root/datapath/linux/compat/include/net/udp.h
diff options
context:
space:
mode:
Diffstat (limited to 'datapath/linux/compat/include/net/udp.h')
-rw-r--r--datapath/linux/compat/include/net/udp.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/datapath/linux/compat/include/net/udp.h b/datapath/linux/compat/include/net/udp.h
index f1841d4a2..02eb68878 100644
--- a/datapath/linux/compat/include/net/udp.h
+++ b/datapath/linux/compat/include/net/udp.h
@@ -2,11 +2,20 @@
#define __NET_UDP_WRAPPER_H 1
#include <linux/version.h>
+
+#ifdef inet_get_local_port_range
+/* RHEL7 backports udp_flow_src_port() using an older version of
+ * inet_get_local_port_range(). */
+#undef inet_get_local_port_range
+#include_next <net/udp.h>
+#define inet_get_local_port_range rpl_inet_get_local_port_range
+#else
#include_next <net/udp.h>
+#endif
#ifndef HAVE_UDP_FLOW_SRC_PORT
-static inline __be16 udp_flow_src_port(struct net *net, struct sk_buff *skb,
- int min, int max, bool use_eth)
+static inline __be16 rpl_udp_flow_src_port(struct net *net, struct sk_buff *skb,
+ int min, int max, bool use_eth)
{
u32 hash;
@@ -33,15 +42,19 @@ static inline __be16 udp_flow_src_port(struct net *net, struct sk_buff *skb,
return htons((((u64) hash * (max - min)) >> 32) + min);
}
+
+#define udp_flow_src_port rpl_udp_flow_src_port
#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,16,0)
+#ifndef HAVE_UDP_V4_CHECK
static inline __sum16 udp_v4_check(int len, __be32 saddr,
__be32 daddr, __wsum base)
{
return csum_tcpudp_magic(saddr, daddr, len, IPPROTO_UDP, base);
}
+#endif
+#ifndef HAVE_UDP_SET_CSUM
void udp_set_csum(bool nocheck, struct sk_buff *skb,
__be32 saddr, __be32 daddr, int len);
#endif