# - Check and update kmod dependencies when necessary (runtime module load check in the least)
#
PKG_NAME:=openvswitch
-PKG_VERSION:=2.10.1
+PKG_VERSION:=2.11.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.openvswitch.org/releases/
-PKG_HASH:=4f93c764295952848a924271250d7c6a6a53747d0019ef6ff880aa8ea6897c80
+PKG_HASH:=f4b01d7376d7298bc6e7fa7a6067229ca7c7e299394e5ea9aff651d52edfdbee
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
ovs_kmod_packages:=
ovs_kmod_intree_kernel_patchver_min:=3.10
-ovs_kmod_intree_kernel_patchver_max:=4.15
+ovs_kmod_intree_kernel_patchver_max:=4.18
ovs_kmod_intree_not_supported:=$(strip $(call kernel_patchver_lt,$(ovs_kmod_intree_kernel_patchver_min))$(call kernel_patchver_gt,$(ovs_kmod_intree_kernel_patchver_max)))
ovs_kmod_intree_dir:=$(PKG_BUILD_DIR)/datapath/linux
ovs_kmod_upstream_dir:=$(LINUX_DIR)/net/openvswitch
URL:=https://www.openvswitch.org
TITLE:=$(ovs_$(1)_title)
HIDDEN:=$(ovs_$(1)_hidden)
- DEPENDS:=$(ovs_$(1)_depends) +libunbound
+ DEPENDS:=$(ovs_$(1)_depends) +libatomic +libunbound
endef
define Package/$(call ovs_package_name,$(1))/install
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -122,7 +122,6 @@ OVS_CHECK_SOCKET_LIBS
- OVS_CHECK_XENSERVER_VERSION
- OVS_CHECK_GROFF
- OVS_CHECK_TLS
--OVS_CHECK_ATOMIC_LIBS
- OVS_CHECK_GCC4_ATOMICS
- OVS_CHECK_ATOMIC_ALWAYS_LOCK_FREE(1)
- OVS_CHECK_ATOMIC_ALWAYS_LOCK_FREE(2)
---- a/lib/netdev-linux.c
-+++ b/lib/netdev-linux.c
-@@ -39,7 +39,9 @@
- #include <netpacket/packet.h>
- #include <net/if.h>
- #include <net/if_arp.h>
-+#if defined(__UCLIBC__) || defined(__GLIBC__)
- #include <net/if_packet.h>
-+#endif
- #include <net/route.h>
- #include <poll.h>
- #include <stdlib.h>
---- a/lib/ovs-atomic.h
-+++ b/lib/ovs-atomic.h
-@@ -320,7 +320,7 @@
- #include "util.h"
-
- #define IN_OVS_ATOMIC_H
-- #if __CHECKER__
-+ #if 1
- /* sparse doesn't understand some GCC extensions we use. */
- #include "ovs-atomic-pthreads.h"
- #elif __has_extension(c_atomic)
--- /dev/null
+From c7247a20c7779dbeafda7767f4a3c090da37c0c0 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
+
+Due to a race condition when bringing up an internal port on Linux
+some interface flags (e.g. IFF_MULTICAST) are falsely reset. This
+happens because netlink events may be processed after the according
+netdev has been brought up (which sets interface flags).
+
+Fix this by reading the interface flags just before updating them
+if they have not been updated by from the kernel yet.
+
+Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
+---
+ lib/netdev-linux.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
+index 25d037cb6..ba1427986 100644
+--- a/lib/netdev-linux.c
++++ b/lib/netdev-linux.c
+@@ -3117,7 +3117,13 @@ update_flags(struct netdev_linux *netdev, enum netdev_flags off,
+ unsigned int old_flags, new_flags;
+ int error = 0;
+
+- old_flags = netdev->ifi_flags;
++ if (!(netdev->cache_valid & VALID_DRVINFO)) {
++ /* Most likely the debvice flags are not in sync yet, fetch them now */
++ get_flags(&netdev->up, &old_flags);
++ } else {
++ old_flags = netdev->ifi_flags;
++ }
++
+ *old_flagsp = iff_to_nd_flags(old_flags);
+ new_flags = (old_flags & ~nd_to_iff_flags(off)) | nd_to_iff_flags(on);
+ if (new_flags != old_flags) {
--- /dev/null
+From 38d142005a0b582efdad5580e311d815ad1f34a4 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.
+
+Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
+---
+ Makefile.am | 2 +-
+ m4/openvswitch.m4 | 2 ++
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index ff1f94b48..417f53230 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)
+
+ ALL_LOCAL =
+ BUILT_SOURCES =
+diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4
+index 41042c98e..4a5f0a84a 100644
+--- a/m4/openvswitch.m4
++++ b/m4/openvswitch.m4
+@@ -449,7 +449,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])])
+
--- /dev/null
+From b476094a64213da20f88976d7562cb4e8d9f2101 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()
+
+The command "install" is not available in OpenWrt by default
+
+Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
+---
+ utilities/ovs-lib.in | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in
+index 9a0af2e82..68ab3f250 100644
+--- a/utilities/ovs-lib.in
++++ b/utilities/ovs-lib.in
+@@ -159,7 +159,10 @@ install_dir () {
+ [ "${OVS_USER##*:}" != "" ] && INSTALL_GROUP="${OVS_USER##*:}"
+
+ if test ! -d "$DIR"; then
+- install -d -m "$INSTALL_MODE" -o "$INSTALL_USER" -g "$INSTALL_GROUP" "$DIR"
++ mkdir -p "$DIR"
++ chmod "$INSTALL_MODE" "$DIR"
++ chown "$INSTALL_USER" "$DIR"
++ chgrp "$INSTALL_GROUP" "$DIR"
+ restorecon "$DIR" >/dev/null 2>&1
+ fi
+ }
--- /dev/null
+From d0ffc7cc1a0eb217963099fd90bd437b09b6068d 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
+
+Signed-off-by: Yousong Zhou <zhouyousong@yunionyun.com>
+---
+ Makefile.am | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 417f53230..3fc630f33 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -480,7 +480,6 @@ include m4/automake.mk
+ include lib/automake.mk
+ include ofproto/automake.mk
+ include utilities/automake.mk
+-include tests/automake.mk
+ include include/automake.mk
+ include third-party/automake.mk
+ include debian/automake.mk
+++ /dev/null
-From e4ac9741a99866976322c21605b312bc27633c92 Mon Sep 17 00:00:00 2001
-From: Helmut Schaa <helmut.schaa@googlemail.com>
-Date: Wed, 8 Jan 2014 13:48:33 +0100
-Subject: [PATCH 100/107] netdev-linux: Use unsigned int for ifi_flags
-
-ifi_flags is unsigned, the local equivalents should do the same.
-
-Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
----
- lib/netdev-linux.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
-index e16ea58a0..5ada9a21f 100644
---- a/lib/netdev-linux.c
-+++ b/lib/netdev-linux.c
-@@ -3115,7 +3115,7 @@ update_flags(struct netdev_linux *netdev, enum netdev_flags off,
- enum netdev_flags on, enum netdev_flags *old_flagsp)
- OVS_REQUIRES(netdev->mutex)
- {
-- int old_flags, new_flags;
-+ unsigned int old_flags, new_flags;
- int error = 0;
-
- old_flags = netdev->ifi_flags;
+++ /dev/null
-From 9f4775d9a2541e8128ea99f3b02925cc1ee05374 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 101/107] 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
-happens because netlink events may be processed after the according
-netdev has been brought up (which sets interface flags).
-
-Fix this by reading the interface flags just before updating them
-if they have not been updated by from the kernel yet.
-
-Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
----
- lib/netdev-linux.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
-index 5ada9a21f..bb8275cfa 100644
---- a/lib/netdev-linux.c
-+++ b/lib/netdev-linux.c
-@@ -3118,7 +3118,13 @@ update_flags(struct netdev_linux *netdev, enum netdev_flags off,
- unsigned int old_flags, new_flags;
- int error = 0;
-
-- old_flags = netdev->ifi_flags;
-+ if (!(netdev->cache_valid & VALID_DRVINFO)) {
-+ /* Most likely the debvice flags are not in sync yet, fetch them now */
-+ get_flags(&netdev->up, &old_flags);
-+ } else {
-+ old_flags = netdev->ifi_flags;
-+ }
-+
- *old_flagsp = iff_to_nd_flags(old_flags);
- new_flags = (old_flags & ~nd_to_iff_flags(off)) | nd_to_iff_flags(on);
- if (new_flags != old_flags) {
+++ /dev/null
-From e451d74788c73e8679e6a2268185a08901ac7f8c Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <zhouyousong@yunionyun.com>
-Date: Tue, 21 Aug 2018 12:21:05 +0000
-Subject: [PATCH 102/107] python: separate host/target python for cross-compile
-
-At the moment, python-six is a requirement for openvswitch python
-library on target machine.
-
-Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
----
- Makefile.am | 2 +-
- m4/openvswitch.m4 | 2 ++
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 788972804..cd90cc176 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)
-
- ALL_LOCAL =
- BUILT_SOURCES =
-diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4
-index 5743f83ce..acb6b140e 100644
---- a/m4/openvswitch.m4
-+++ b/m4/openvswitch.m4
-@@ -449,7 +449,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])])
-
+++ /dev/null
-From 6b9732c8851c5466f2a363d88b5acae320801efe Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <yszhou4tech@gmail.com>
-Date: Wed, 14 Mar 2018 16:40:01 +0800
-Subject: [PATCH 103/107] ovs-ctl: fix setting hostname
-
-The command "hostname" is not available in OpenWrt by default.
-
-The other thing to note is that currently kernel.hostname is not a fully
-qualitied name
-
-Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
----
- utilities/ovs-ctl.in | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in
-index 43c8f32b7..6203ecff5 100755
---- a/utilities/ovs-ctl.in
-+++ b/utilities/ovs-ctl.in
-@@ -36,9 +36,7 @@ insert_mod_if_required () {
- }
-
- set_hostname () {
-- # 'hostname -f' needs network connectivity to work. So we should
-- # call this only after ovs-vswitchd is running.
-- ovs_vsctl set Open_vSwitch . external-ids:hostname="$(hostname -f)"
-+ ovs_vsctl set Open_vSwitch . external-ids:hostname="$(sysctl -n kernel.hostname)"
- }
-
- set_system_ids () {
+++ /dev/null
-From 940441e2982cb35765830060e8203e5dd1a0f967 Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <yszhou4tech@gmail.com>
-Date: Wed, 14 Mar 2018 16:44:13 +0800
-Subject: [PATCH 104/107] ovs-lib: fix install_dir()
-
-The command "install" is not available in OpenWrt by default
-
-Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
----
- utilities/ovs-lib.in | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in
-index 090a14434..f2a30e065 100644
---- a/utilities/ovs-lib.in
-+++ b/utilities/ovs-lib.in
-@@ -159,7 +159,10 @@ install_dir () {
- [ "${OVS_USER##*:}" != "" ] && INSTALL_GROUP="${OVS_USER##*:}"
-
- if test ! -d "$DIR"; then
-- install -d -m "$INSTALL_MODE" -o "$INSTALL_USER" -g "$INSTALL_GROUP" "$DIR"
-+ mkdir -p "$DIR"
-+ chmod "$INSTALL_MODE" "$DIR"
-+ chown "$INSTALL_USER" "$DIR"
-+ chgrp "$INSTALL_GROUP" "$DIR"
- restorecon "$DIR" >/dev/null 2>&1
- fi
- }
+++ /dev/null
-From d0cad5ac122aca722dc2013c1f53fda44c477cf2 Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <zhouyousong@yunionyun.com>
-Date: Tue, 21 Aug 2018 13:02:21 +0000
-Subject: [PATCH 105/107] build: disable building tests
-
-Signed-off-by: Yousong Zhou <zhouyousong@yunionyun.com>
----
- Makefile.am | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index cd90cc176..2e9e50f3a 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -477,7 +477,6 @@ include m4/automake.mk
- include lib/automake.mk
- include ofproto/automake.mk
- include utilities/automake.mk
--include tests/automake.mk
- include include/automake.mk
- include third-party/automake.mk
- include debian/automake.mk
+++ /dev/null
-From 2a59f2b60e8a22dc93d48c511b5c4255b429ff66 Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <zhouyousong@yunionyun.com>
-Date: Wed, 5 Sep 2018 12:32:54 +0000
-Subject: [PATCH 106/107] ovs-save: compatible with busybox ip command
-
-Busybox ip command will have exit code 1 for `ip -V` or `ip help` etc.,
-use `ip rule list` to cover both iproute2 and busybox ip command
-
-Signed-off-by: Yousong Zhou <zhouyousong@yunionyun.com>
----
- utilities/ovs-save | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/utilities/ovs-save b/utilities/ovs-save
-index ea8fb6a45..72d460df4 100755
---- a/utilities/ovs-save
-+++ b/utilities/ovs-save
-@@ -38,7 +38,7 @@ EOF
- }
-
- save_interfaces () {
-- if (ip -V) > /dev/null 2>&1; then :; else
-+ if (ip rule list) > /dev/null 2>&1; then :; else
- echo "$0: ip not found in $PATH" >&2
- exit 1
- fi
+++ /dev/null
-From 1e859f407b94a0f549fc41fceec11ca12653878b Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <zhouyousong@yunionyun.com>
-Date: Thu, 6 Sep 2018 11:48:20 +0000
-Subject: [PATCH 107/107] datapath: use KARCH when building linux datapath
- modules
-
-Signed-off-by: Yousong Zhou <zhouyousong@yunionyun.com>
----
- datapath/linux/Makefile.main.in | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/datapath/linux/Makefile.main.in b/datapath/linux/Makefile.main.in
-index 7d18253be..039485d16 100644
---- a/datapath/linux/Makefile.main.in
-+++ b/datapath/linux/Makefile.main.in
-@@ -68,10 +68,10 @@ ifeq (,$(wildcard $(CONFIG_FILE)))
- endif
-
- default:
-- $(MAKE) -C $(KSRC) M=$(builddir) modules
-+ $(MAKE) -C $(KSRC) $(if @KARCH@,ARCH=@KARCH@) M=$(builddir) modules
-
- modules_install:
-- $(MAKE) -C $(KSRC) M=$(builddir) modules_install
-+ $(MAKE) -C $(KSRC) $(if @KARCH@,ARCH=@KARCH@) M=$(builddir) modules_install
- depmod `sed -n 's/#define UTS_RELEASE "\([^"]*\)"/\1/p' $(KSRC)/include/generated/utsrelease.h`
- endif
-