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