datapath: do not use vport type to determine presence of Geneve attributes
[cascardo/ovs.git] / datapath / linux / compat / include / net / ip_tunnels.h
index ad17c9d..2a6470a 100644 (file)
@@ -1,6 +1,11 @@
 #ifndef __NET_IP_TUNNELS_WRAPPER_H
 #define __NET_IP_TUNNELS_WRAPPER_H 1
 
+#include <linux/version.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)
+#include_next <net/ip_tunnels.h>
+#else
+
 #include <linux/if_tunnel.h>
 #include <linux/netdevice.h>
 #include <linux/skbuff.h>
@@ -31,24 +36,18 @@ struct tnl_ptk_info {
 #define PACKET_RCVD    0
 #define PACKET_REJECT  1
 
-static inline void tunnel_ip_select_ident(struct sk_buff *skb,
-                                         const struct iphdr  *old_iph,
-                                         struct dst_entry *dst)
-{
-       struct iphdr *iph = ip_hdr(skb);
-
-       /* Use inner packet iph-id if possible. */
-       if (skb->protocol == htons(ETH_P_IP) && old_iph->id)
-               iph->id = old_iph->id;
-       else
-               __ip_select_ident(iph, dst,
-                               (skb_shinfo(skb)->gso_segs ?: 1) - 1);
-}
-
-int iptunnel_xmit(struct net *net, struct rtable *rt,
+int iptunnel_xmit(struct rtable *rt,
                  struct sk_buff *skb,
                  __be32 src, __be32 dst, __u8 proto,
-                 __u8 tos, __u8 ttl, __be16 df);
+                 __u8 tos, __u8 ttl, __be16 df, bool xnet);
 
 int iptunnel_pull_header(struct sk_buff *skb, int hdr_len, __be16 inner_proto);
+
+#endif
+
+/* Not yet upstream */
+#define TUNNEL_OAM     __cpu_to_be16(0x0200)
+#define TUNNEL_CRIT_OPT        __cpu_to_be16(0x0400)
+#define TUNNEL_OPTIONS_PRESENT __cpu_to_be16(0x0800)
+
 #endif /* __NET_IP_TUNNELS_H */