Hi,

I'm attempting to install ovs 2.3.1 on FreeBSD and it appears to be broken
after the commit 666afb55e84e9118812de81a75655ec9567b7a5b.
Since FreeBSD uses two short integers to represent interface flags, 
we have to apply mask 0xffff to flags.

Signed-off-by: Kevin Lo <ke...@freebsd.org>
---

diff --git a/lib/netdev-bsd.c b/lib/netdev-bsd.c
index f97a5c3..9ed2823 100644
--- a/lib/netdev-bsd.c
+++ b/lib/netdev-bsd.c
@@ -1785,7 +1785,7 @@ static int
 ifr_get_flags(const struct ifreq *ifr)
 {
 #ifdef HAVE_STRUCT_IFREQ_IFR_FLAGSHIGH
-    return (ifr->ifr_flagshigh << 16) | ifr->ifr_flags;
+    return (ifr->ifr_flagshigh << 16) | (ifr->ifr_flags & 0xffff);
 #else
     return ifr->ifr_flags;
 #endif
@@ -1794,9 +1794,11 @@ ifr_get_flags(const struct ifreq *ifr)
 static void
 ifr_set_flags(struct ifreq *ifr, int flags)
 {
-    ifr->ifr_flags = flags;
 #ifdef HAVE_STRUCT_IFREQ_IFR_FLAGSHIGH
+    ifr->ifr_flags = flags & 0xffff;
     ifr->ifr_flagshigh = flags >> 16;
+#else
+    ifr->ifr_flags = flags;
 #endif
 }
 
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to