Skip to content

Commit

Permalink
datapath: compat: Fix compilation 3.11
Browse files Browse the repository at this point in the history
Kernel 3.11 is only kernel where GRE APIs are available but
not vxlan. Add check for vxlan xmit to detect this case.

Reported-by: Dave Benson <[email protected]>
Signed-off-by: Pravin B Shelar <[email protected]>
Acked-by: Andy Zhou <[email protected]>
  • Loading branch information
Pravin B Shelar committed Oct 13, 2014
1 parent ff601a0 commit 06021dc
Show file tree
Hide file tree
Showing 8 changed files with 10 additions and 9 deletions.
1 change: 1 addition & 0 deletions acinclude.m4
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,7 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
OVS_GREP_IFELSE([$KSRC/include/linux/openvswitch.h], [openvswitch_handle_frame_hook],
[OVS_DEFINE([HAVE_RHEL_OVS_HOOK])])
OVS_GREP_IFELSE([$KSRC/include/net/vxlan.h], [vxlan_xmit_skb])
OVS_GREP_IFELSE([$KSRC/include/net/vxlan.h], [bool xnet],
[OVS_DEFINE([HAVE_VXLAN_XMIT_SKB_XNET_ARG])])
OVS_GREP_IFELSE([$KSRC/include/net/udp.h], [udp_flow_src_port],
Expand Down
2 changes: 1 addition & 1 deletion datapath/linux/compat/gre.c
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ int gre_cisco_unregister(struct gre_cisco_protocol *proto)

#endif /* !HAVE_GRE_CISCO_REGISTER */

#ifndef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
#ifndef USE_KERNEL_TUNNEL_API

/* GRE TX side. */
static void gre_csum_fix(struct sk_buff *skb)
Expand Down
2 changes: 1 addition & 1 deletion datapath/linux/compat/include/net/gre.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ static inline __be16 tnl_flags_to_gre_flags(__be16 tflags)
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) */
#endif /* HAVE_GRE_CISCO_REGISTER */

#ifndef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
#ifndef USE_KERNEL_TUNNEL_API

#define gre_build_header rpl_gre_build_header
void gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
Expand Down
7 changes: 4 additions & 3 deletions datapath/linux/compat/include/net/ip_tunnels.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@

#include <linux/version.h>
#if defined(HAVE_GRE_HANDLE_OFFLOADS) && \
LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) && \
defined(HAVE_VXLAN_XMIT_SKB)
/* RHEL6 and RHEL7 both has backported tunnel API but RHEL6 has
* older version, so avoid using RHEL6 backports.
*/
#define GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
#define USE_KERNEL_TUNNEL_API
#endif

#ifdef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
#ifdef USE_KERNEL_TUNNEL_API
#include_next <net/ip_tunnels.h>

#if LINUX_VERSION_CODE < KERNEL_VERSION(3,15,0)
Expand Down
2 changes: 1 addition & 1 deletion datapath/linux/compat/include/net/vxlan.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
#include <net/gre.h>

#include <linux/version.h>
#ifdef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
#ifdef USE_KERNEL_TUNNEL_API
#include_next <net/vxlan.h>

static inline int rpl_vxlan_xmit_skb(struct vxlan_sock *vs,
Expand Down
2 changes: 1 addition & 1 deletion datapath/linux/compat/ip_tunnels_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#include "compat.h"
#include "gso.h"

#ifndef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
#ifndef USE_KERNEL_TUNNEL_API
int iptunnel_xmit(struct sock *sk, struct rtable *rt,
struct sk_buff *skb,
__be32 src, __be32 dst, __u8 proto,
Expand Down
2 changes: 1 addition & 1 deletion datapath/linux/compat/vxlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
#include "datapath.h"
#include "gso.h"
#include "vlan.h"
#ifndef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
#ifndef USE_KERNEL_TUNNEL_API

#define VXLAN_HLEN (sizeof(struct udphdr) + sizeof(struct vxlanhdr))

Expand Down
1 change: 0 additions & 1 deletion datapath/vport-geneve.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
#include <net/ip.h>
#include <net/route.h>
#include <net/udp.h>
#include <net/vxlan.h>
#include <net/xfrm.h>

#include "datapath.h"
Expand Down

0 comments on commit 06021dc

Please sign in to comment.