openvswitch: bump to version 2.13.0

python2 library is now removed as the transition has been done by the
upstream project

OVN is now a separate project released with its own release plan and
it's not included within openvswitch starting with ovs 2.13.

openvswitch.mk is split out from the main Makefile for adding ovn
packages back in following commits.

The following two patches are already included in 2.13

 - ovsdb-idlc-fix-dict-change-during-iteration.patch
 - compat-Include-confirm_neigh-parameter-if-needed.patch

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
This commit is contained in:
Yousong Zhou 2020-03-23 15:04:40 +08:00
parent f426ad6acc
commit bf4f584e75
11 changed files with 75 additions and 225 deletions

View File

@ -1,13 +1,14 @@
#
# Copyright (C) 2013 Julius Schulz-Zander <julius@net.t-labs.tu-berlin.de>
# Copyright (C) 2014-2017 OpenWrt.org
# Copyright (C) 2018-2019 Yousong Zhou <yszhou4tech@gmail.com>
# Copyright (C) 2018-2020 Yousong Zhou <yszhou4tech@gmail.com>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
include ./openvswitch.mk
# Checklist on version bump
#
@ -15,16 +16,17 @@ include $(INCLUDE_DIR)/kernel.mk
# - Check and update kmod dependencies when necessary (runtime module load check in the least)
#
PKG_NAME:=openvswitch
PKG_VERSION:=2.12.0
PKG_RELEASE:=4
PKG_VERSION:=$(ovs_version)
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.openvswitch.org/releases/
PKG_HASH:=13fd42703180b4b1146c7e97926d09225485868cc2fbbd58dc0c421b4b8fe8f8
PKG_HASH:=dd5f727427e36cab22bdeae61529d8c8fccacc53d968cfa7658f7f935ddda531
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
PKG_CPE_ID:=cpe:/a:openvswitch:openvswitch
PKG_BUILD_DIR:=$(ovs_builddir)
PKG_BUILD_DEPENDS+=python3/host python-six/host
PKG_USE_MIPS16:=0
PKG_BUILD_PARALLEL:=1
@ -35,7 +37,6 @@ PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
include $(INCLUDE_DIR)/package.mk
include ../../lang/python/python3-host.mk
include ../../lang/python/python-package.mk
include ../../lang/python/python3-package.mk
@ -154,31 +155,6 @@ ovs_kmod_openvswitch-lisp-intree_depends:= +kmod-openvswitch-intree
ovs_kmod_openvswitch-lisp-intree_files:= $(ovs_kmod_intree_dir)/vport-lisp.ko
$(eval $(call OvsKmodPackageTemplate,openvswitch-lisp-intree))
ovs_packages:=
ovs_package_name=$(if $(filter openvswitch,$(1)),openvswitch,openvswitch-$(1))
define OvsPackageTemplate
define Package/$(call ovs_package_name,$(1))
SECTION:=net
SUBMENU:=Open vSwitch
CATEGORY:=Network
URL:=https://www.openvswitch.org
TITLE:=$(ovs_$(1)_title)
HIDDEN:=$(ovs_$(1)_hidden)
DEPENDS:=$(ovs_$(1)_depends) +libatomic +libunbound
endef
define Package/$(call ovs_package_name,$(1))/install
$(foreach f,$(ovs_$(1)_files),
$(INSTALL_DIR) $$(1)/$(dir $(f))
$(CP) $(PKG_INSTALL_DIR)/$(f) $$(1)/$(dir $(f))
)
$(ovs_$(1)_install)
endef
ovs_packages+=$(call ovs_package_name,$(1))
endef
# Dependency review
#
# for f in sbin/*; do echo $f; readelf -d $f | grep -i shared; done
@ -206,13 +182,6 @@ ovs_libovsdb_files:=usr/lib/libovsdb*.so*
$(eval $(call OvsPackageTemplate,libovsdb))
ovs_libovn_title:=Open vSwitch (libovn.so)
ovs_libovn_hidden:=1
ovs_libovn_depends:=+librt
ovs_libovn_files:=usr/lib/libovn*.so*
$(eval $(call OvsPackageTemplate,libovn))
ovs_vswitchd_title:=Open vSwitch (ovs-vswitchd)
ovs_vswitchd_hidden:=1
ovs_vswitchd_depends:=+librt +openvswitch-libopenvswitch +openvswitch-libofproto
@ -264,46 +233,6 @@ ovs_openvswitch_files:= usr/share/openvswitch/vswitch.ovsschema
$(eval $(call OvsPackageTemplate,openvswitch))
ovs_ovn-common_title:=Open Virtual Network (common files)
ovs_ovn-common_hidden:=1
ovs_ovn-common_depends:=+librt +openvswitch-common +openvswitch-libopenvswitch +openvswitch-libovn +openvswitch-libovsdb
ovs_ovn-common_files:= \
usr/share/openvswitch/scripts/ovn-ctl \
$(foreach b,ovn-nbctl ovn-sbctl ovn-trace ovn-detrace,usr/bin/$(b))
define ovs_ovn-common_install
$$(INSTALL_DIR) $$(1)/usr/share/openvswitch/scripts
$$(LN) /usr/share/openvswitch/scripts/ovs-ctl-wrapper $$(1)/usr/bin/ovn-ctl
endef
$(eval $(call OvsPackageTemplate,ovn-common))
ovs_ovn-north_title:=Open Virtual Network (north package)
ovs_ovn-north_hidden:=
ovs_ovn-north_depends:=+openvswitch-ovsdb +openvswitch-ovn-common
ovs_ovn-north_files:=\
usr/share/openvswitch/ovn-nb.ovsschema \
usr/share/openvswitch/ovn-sb.ovsschema \
usr/bin/ovn-northd
$(eval $(call OvsPackageTemplate,ovn-north))
ovs_ovn-host_title:=Open Virtual Network (chassis package)
ovs_ovn-host_hidden:=
ovs_ovn-host_depends:=+openvswitch +openvswitch-ovn-common
ovs_ovn-host_files:=usr/bin/ovn-controller
$(eval $(call OvsPackageTemplate,ovn-host))
ovs_python_title:=Open vSwitch (Python library)
ovs_python_hidden:=
ovs_python_depends:=+PACKAGE_openvswitch-python:python +PACKAGE_openvswitch-python:python-six
define ovs_python_install
$$(INSTALL_DIR) $$(1)$$(PYTHON_PKG_DIR)
$$(CP) $$(PKG_INSTALL_DIR)/usr/share/openvswitch/python/ovs $$(1)$$(PYTHON_PKG_DIR)
endef
$(eval $(call OvsPackageTemplate,python))
ovs_python3_title:=Open vSwitch (Python3 library)
ovs_python3_hidden:=
ovs_python3_depends:=+PACKAGE_openvswitch-python3:python3 +PACKAGE_openvswitch-python3:python3-six
@ -322,10 +251,9 @@ CONFIGURE_ARGS+= \
CONFIGURE_VARS += \
ovs_cv_flake8=no \
ovs_cv_python=$(PYTHON3) \
ovs_cv_python_host=$(HOST_PYTHON3_BIN) \
ovs_cv_python3=$(PYTHON3) \
ovs_cv_python3_host=$(HOST_PYTHON3_BIN) \
ovs_cv_sphinx=no \
ovs_cv_python2=no \
KARCH=$(LINUX_KARCH) \
ovs_intree_kmod_configs:=CONFIG_PACKAGE_kmod-openvswitch-intree

View File

@ -5,9 +5,8 @@
START=15
ovs_script_dir=/usr/share/openvswitch/scripts
ovs_ctl="$ovs_script_dir/ovs-ctl"; [ -x "$ovs_ctl" ] || ovs_ctl=:
ovn_ctl="$ovs_script_dir/ovn-ctl"; [ -x "$ovn_ctl" ] || ovn_ctl=:
ovs_ctl="/usr/share/openvswitch/scripts/ovs-ctl"; [ -x "$ovs_ctl" ] || ovs_ctl=:
ovn_ctl="/usr/share/ovn/scripts/ovn-ctl"; [ -x "$ovn_ctl" ] || ovn_ctl=:
EXTRA_COMMANDS=status

View File

@ -4,6 +4,6 @@ s=/usr/share/openvswitch/scripts
case "$0" in
*ovs-ctl) "$s/ovs-ctl" "$@" ;;
*ovs-kmod-ctl) "$s/ovs-kmod-ctl" "$@" ;;
*ovn-ctl) "$s/ovn-ctl" "$@" ;;
*ovn-ctl) "/usr/share/ovn/scripts/ovn-ctl" "$@" ;;
*) exit 1;;
esac

View File

@ -0,0 +1,36 @@
# Copyright (C) 2020 Yousong Zhou <yszhou4tech@gmail.com>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
# Versions
ovs_version:=2.13.0
ovs_builddir=$(KERNEL_BUILD_DIR)/openvswitch-$(ovs_version)
# Shared vars, macros
ovs_packages:=
ovs_package_name=$(if $(filter openvswitch,$(1)),openvswitch,openvswitch-$(1))
define OvsPackageTemplate
define Package/$(call ovs_package_name,$(1))
SECTION:=net
SUBMENU:=Open vSwitch
CATEGORY:=Network
URL:=https://www.openvswitch.org
TITLE:=$(ovs_$(1)_title)
HIDDEN:=$(ovs_$(1)_hidden)
DEPENDS:=$(ovs_$(1)_depends) +libatomic +libunbound
endef
define Package/$(call ovs_package_name,$(1))/install
$(foreach f,$(ovs_$(1)_files),
$(INSTALL_DIR) $$(1)/$(dir $(f))
$(CP) $(PKG_INSTALL_DIR)/$(f) $$(1)/$(dir $(f))
)
$(ovs_$(1)_install)
endef
ovs_packages+=$(call ovs_package_name,$(1))
endef

View File

@ -1,8 +1,7 @@
From d215c18a17e82194d4ab9ecd14776712f12d6b07 Mon Sep 17 00:00:00 2001
From 6fda3936a85319d6b09108dda67466baa1c93b6c Mon Sep 17 00:00:00 2001
From: Helmut Schaa <helmut.schaa@googlemail.com>
Date: Wed, 8 Jan 2014 13:48:49 +0100
Subject: [PATCH 1/4] netdev-linux: Let interface flag survive internal port
setup
Subject: [PATCH] netdev-linux: Let interface flag survive internal port setup
Due to a race condition when bringing up an internal port on Linux
some interface flags (e.g. IFF_MULTICAST) are falsely reset. This
@ -18,10 +17,10 @@ Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
index 2432cd176..11efbdbc9 100644
index c6f3d2740..136668b1d 100644
--- a/lib/netdev-linux.c
+++ b/lib/netdev-linux.c
@@ -3161,7 +3161,13 @@ update_flags(struct netdev_linux *netdev, enum netdev_flags off,
@@ -3461,7 +3461,13 @@ update_flags(struct netdev_linux *netdev, enum netdev_flags off,
unsigned int old_flags, new_flags;
int error = 0;

View File

@ -1,41 +1,37 @@
From e2d9b5d6fc33d7b9cbb7dc16832c5c86e6470966 Mon Sep 17 00:00:00 2001
From: Yousong Zhou <zhouyousong@yunionyun.com>
Date: Tue, 21 Aug 2018 12:21:05 +0000
Subject: [PATCH 2/4] python: separate host/target python for cross-compile
At the moment, python-six is a requirement for openvswitch python
library on target machine.
From c17f9e73b543043b438dee6759ae20047ee33d4a Mon Sep 17 00:00:00 2001
From: Yousong Zhou <yszhou4tech@gmail.com>
Date: Fri, 20 Mar 2020 15:11:31 +0800
Subject: [PATCH] python: separate host/target python for cross-compile
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
---
Makefile.am | 2 +-
m4/openvswitch.m4 | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
m4/openvswitch.m4 | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index ff1f94b48..417f53230 100644
index b279303d1..6140b2c7f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -60,7 +60,7 @@ endif
# foo/__init__.pyc will cause Python to ignore foo.py.
run_python = \
PYTHONPATH=$(top_srcdir)/python$(psep)$$PYTHONPATH \
- PYTHONDONTWRITEBYTECODE=yes $(PYTHON)
+ PYTHONDONTWRITEBYTECODE=yes $(PYTHON_HOST)
- PYTHONDONTWRITEBYTECODE=yes $(PYTHON3)
+ PYTHONDONTWRITEBYTECODE=yes $(PYTHON3_HOST)
ALL_LOCAL =
BUILT_SOURCES =
diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4
index cd6b51d86..6dc9d630b 100644
index add3aabcc..839eb7bda 100644
--- a/m4/openvswitch.m4
+++ b/m4/openvswitch.m4
@@ -456,7 +456,9 @@ AC_DEFUN([OVS_CHECK_PYTHON],
fi])
AC_SUBST([PYTHON])
PYTHON=$ovs_cv_python
+ PYTHON_HOST=$ovs_cv_python_host
AC_SUBST([HAVE_PYTHON])
+ AM_MISSING_PROG([PYTHON_HOST], [python])
HAVE_PYTHON=yes
AM_CONDITIONAL([HAVE_PYTHON], [test "$HAVE_PYTHON" = yes])])
@@ -383,6 +383,8 @@ else:
AC_MSG_ERROR([Python 3.4 or later is required but not found in $PATH, please install it or set $PYTHON3 to point to it])
fi
AC_ARG_VAR([PYTHON3])
+ PYTHON3_HOST=$ovs_cv_python3_host
+ AM_MISSING_PROG([PYTHON3_HOST], [python3])
PYTHON3=$ovs_cv_python3])
dnl Checks for flake8.

View File

@ -1,7 +1,7 @@
From 10fa6a820c155b6b7a97875de0b805aacf1046b8 Mon Sep 17 00:00:00 2001
From e8203d10706e6289f773bfe84a3fd87f19fcee07 Mon Sep 17 00:00:00 2001
From: Yousong Zhou <yszhou4tech@gmail.com>
Date: Wed, 14 Mar 2018 16:44:13 +0800
Subject: [PATCH 3/4] ovs-lib: fix install_dir()
Subject: [PATCH] ovs-lib: fix install_dir()
The command "install" is not available in OpenWrt by default

View File

@ -1,7 +1,7 @@
From 77dfef9dd14987b091c2d4fc9475690759e1f4d7 Mon Sep 17 00:00:00 2001
From 46c5ce605b19fd6a782559bda8c90a663bf36014 Mon Sep 17 00:00:00 2001
From: Yousong Zhou <zhouyousong@yunionyun.com>
Date: Tue, 21 Aug 2018 13:02:21 +0000
Subject: [PATCH 4/4] build: disable building tests
Subject: [PATCH] build: disable building tests
Signed-off-by: Yousong Zhou <zhouyousong@yunionyun.com>
---
@ -9,7 +9,7 @@ Signed-off-by: Yousong Zhou <zhouyousong@yunionyun.com>
1 file changed, 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index 417f53230..3fc630f33 100644
index 6140b2c7f..03c65796f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -480,7 +480,6 @@ include m4/automake.mk

View File

@ -1,4 +1,4 @@
From ddbe0a362cad22e7171524661fd3d3f83628dd7a Mon Sep 17 00:00:00 2001
From cb16c9b1be1a0d11a26a3027af8168bd314c4114 Mon Sep 17 00:00:00 2001
From: Yousong Zhou <yszhou4tech@gmail.com>
Date: Mon, 16 Mar 2020 15:18:16 +0800
Subject: [PATCH] datapath: unexport LDFLAGS

View File

@ -1,38 +0,0 @@
From d84109f0b60096ce71cd0537b31b69a7f5ea8756 Mon Sep 17 00:00:00 2001
From: Flavio Leitner <fbl@sysclose.org>
Date: Sat, 14 Sep 2019 20:17:28 -0300
Subject: [PATCH] ovsdb-idlc.in: fix dict change during iteration.
Python3 complains if a dict key is changed during the
iteration.
Use list() to create a copy of it.
Traceback (most recent call last):
File "./ovsdb/ovsdb-idlc.in", line 1581, in <module>
func(*args[1:])
File "./ovsdb/ovsdb-idlc.in", line 185, in printCIDLHeader
replace_cplusplus_keyword(schema)
File "./ovsdb/ovsdb-idlc.in", line 179, in replace_cplusplus_keyword
for columnName in table.columns:
RuntimeError: dictionary keys changed during iteration
Signed-off-by: Flavio Leitner <fbl@sysclose.org>
Signed-off-by: Ben Pfaff <blp@ovn.org>
---
ovsdb/ovsdb-idlc.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in
index 40fef39edf..22d0a4e22e 100755
--- a/ovsdb/ovsdb-idlc.in
+++ b/ovsdb/ovsdb-idlc.in
@@ -176,7 +176,7 @@ def replace_cplusplus_keyword(schema):
'wchar_t', 'while', 'xor', 'xor_eq'}
for tableName, table in schema.tables.items():
- for columnName in table.columns:
+ for columnName in list(table.columns):
if columnName in keywords:
table.columns[columnName + '_'] = table.columns.pop(columnName)

View File

@ -1,70 +0,0 @@
From 2dec526496a62c3aaf849f24ec1b5983a91827a9 Mon Sep 17 00:00:00 2001
From: Greg Rose <gvrose8192@gmail.com>
Date: Mon, 6 Jan 2020 13:36:34 -0800
Subject: [PATCH] compat: Include confirm_neigh parameter if needed
A change backported to the Linux 4.14.162 LTS kernel requires
a boolean parameter. Check for the presence of the parameter
and adjust the caller in that case.
Passes check-kmod test with no regressions.
Passes Travis build here:
https://travis-ci.org/gvrose8192/ovs-experimental/builds/633461320
Signed-off-by: Greg Rose <gvrose8192@gmail.com>
Signed-off-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
(fix acinclude.m4 patch conflict)
---
acinclude.m4 | 2 ++
datapath/linux/compat/ip6_gre.c | 4 ++++
datapath/linux/compat/ip_tunnel.c | 5 +++++
3 files changed, 11 insertions(+)
diff --git a/acinclude.m4 b/acinclude.m4
index a581e1ef2..ec1f027e9 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -1005,6 +1005,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
[OVS_DEFINE([HAVE_GRE_CALC_HLEN])])
OVS_GREP_IFELSE([$KSRC/include/net/gre.h], [ip_gre_calc_hlen],
[OVS_DEFINE([HAVE_IP_GRE_CALC_HLEN])])
+ OVS_GREP_IFELSE([$KSRC/include/net/dst_ops.h], [bool confirm_neigh],
+ [OVS_DEFINE([HAVE_DST_OPS_CONFIRM_NEIGH])])
if cmp -s datapath/linux/kcompat.h.new \
datapath/linux/kcompat.h >/dev/null 2>&1; then
diff --git a/datapath/linux/compat/ip6_gre.c b/datapath/linux/compat/ip6_gre.c
index afff817ec..7fd345309 100644
--- a/datapath/linux/compat/ip6_gre.c
+++ b/datapath/linux/compat/ip6_gre.c
@@ -1089,7 +1089,11 @@ static netdev_tx_t ip6erspan_tunnel_xmit(struct sk_buff *skb,
/* TooBig packet may have updated dst->dev's mtu */
if (!t->parms.collect_md && dst && dst_mtu(dst) > dst->dev->mtu)
+#ifndef HAVE_DST_OPS_CONFIRM_NEIGH
dst->ops->update_pmtu(dst, NULL, skb, dst->dev->mtu);
+#else
+ dst->ops->update_pmtu(dst, NULL, skb, dst->dev->mtu, false);
+#endif
err = ip6_tnl_xmit(skb, dev, dsfield, &fl6, encap_limit, &mtu,
NEXTHDR_GRE);
diff --git a/datapath/linux/compat/ip_tunnel.c b/datapath/linux/compat/ip_tunnel.c
index 7dd57fee9..e7a039358 100644
--- a/datapath/linux/compat/ip_tunnel.c
+++ b/datapath/linux/compat/ip_tunnel.c
@@ -267,7 +267,12 @@ static int rpl_tnl_update_pmtu(struct net_device *dev, struct sk_buff *skb,
mtu = skb_valid_dst(skb) ? dst_mtu(skb_dst(skb)) : dev->mtu;
if (skb_valid_dst(skb))
+#ifndef HAVE_DST_OPS_CONFIRM_NEIGH
skb_dst(skb)->ops->update_pmtu(skb_dst(skb), NULL, skb, mtu);
+#else
+ skb_dst(skb)->ops->update_pmtu(skb_dst(skb),
+ NULL, skb, mtu, false);
+#endif
if (skb->protocol == htons(ETH_P_IP)) {
if (!skb_is_gso(skb) &&