@@ -753,6 +753,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/netdevice.h], [net_device],
[needs_free_netdev],
[OVS_DEFINE([HAVE_NEEDS_FREE_NETDEV])])
+ OVS_FIND_FIELD_IFELSE([$KSRC/include/net/vxlan.h], [vxlan_dev], [cfg],
+ [OVS_DEFINE([HAVE_VXLAN_DEV_CFG])])
OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_helper.h],
[nf_conntrack_helper_put])
@@ -40,14 +40,22 @@ static int vxlan_get_options(const struct vport *vport, struct sk_buff *skb)
if (nla_put_u16(skb, OVS_TUNNEL_ATTR_DST_PORT, ntohs(dst_port)))
return -EMSGSIZE;
+#ifdef HAVE_VXLAN_DEV_CFG
+ if (vxlan->cfg.flags & VXLAN_F_GBP) {
+#else
if (vxlan->flags & VXLAN_F_GBP) {
+#endif
struct nlattr *exts;
exts = nla_nest_start(skb, OVS_TUNNEL_ATTR_EXTENSION);
if (!exts)
return -EMSGSIZE;
+#ifdef HAVE_VXLAN_DEV_CFG
+ if (vxlan->cfg.flags & VXLAN_F_GBP &&
+#else
if (vxlan->flags & VXLAN_F_GBP &&
+#endif
nla_put_flag(skb, OVS_VXLAN_EXT_GBP))
return -EMSGSIZE;