datapath: Backport __ip_select_ident() function
authorPravin B Shelar <pshelar@nicira.com>
Wed, 25 Sep 2013 01:42:43 +0000 (18:42 -0700)
committerPravin B Shelar <pshelar@nicira.com>
Wed, 10 Sep 2014 20:28:58 +0000 (13:28 -0700)
definition of __ip_select_ident() changed in newer kernel and
it is backported to stable kernel, Therefore adding configure
check to detect the new function.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Andy Zhou <azhou@nicira.com>
acinclude.m4
datapath/linux/compat/ip_tunnels_core.c

index 3d6de28..fa1de86 100644 (file)
@@ -249,6 +249,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
   OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [vlan_set_encap_proto])
 
   OVS_GREP_IFELSE([$KSRC/include/linux/in.h], [ipv4_is_multicast])
+  OVS_GREP_IFELSE([$KSRC/include/net/ip.h], [__ip_select_ident.*dst_entry],
+                  [OVS_DEFINE([HAVE_IP_SELECT_IDENT_USING_DST_ENTRY])])
 
   OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_disable_lro])
   OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_get_stats])
index d650be2..a70aefc 100644 (file)
@@ -70,7 +70,12 @@ int iptunnel_xmit(struct rtable *rt,
        iph->daddr      =       dst;
        iph->saddr      =       src;
        iph->ttl        =       ttl;
+
+#ifdef HAVE_IP_SELECT_IDENT_USING_DST_ENTRY
        __ip_select_ident(iph, &rt_dst(rt), (skb_shinfo(skb)->gso_segs ?: 1) - 1);
+#else
+       __ip_select_ident(iph, skb_shinfo(skb)->gso_segs ?: 1);
+#endif
 
        err = ip_local_out(skb);
        if (unlikely(net_xmit_eval(err)))