packages/net/openvswitch/patches/0101-netdev-linux-Let-interface-flag-survive-internal-por.patch
Yousong Zhou c2f788f054 openvswitch: rework packaging
New scheme mainly provides three packages: openvswitch,
openvswitch-ovn-north, openvswitch-ovn-controller.  These should fit
most usage scenarios.  Other subpackages like openvswitch-libXXX
etc.  are there for dependency management and are hidden from the
menu.

Many python and shell scripts are removed in this revision.  Most of
them cannot run out of box at all for lack of dependencies.  Others
being legacy ones are not that useful now.  Add them back at later time
when real need appears

Below are a simple listing of additions

 - initscript now incorporate also ovn north and controller support
 - ovn-ctl and ovs-ctl can be invoked directly from within $PATH

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2018-06-04 11:27:54 +08:00

36 lines
1.3 KiB
Diff

From a6df8dd455c8be7c0c2ba79f35cf5390e892b39e 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/104] 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(-)
--- a/lib/netdev-linux.c
+++ b/lib/netdev-linux.c
@@ -2813,7 +2813,13 @@ update_flags(struct netdev_linux *netdev
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) {