On Fri, Apr 03, 2015 at 10:02:16PM +0800, Kevin Lo wrote:
> 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>

It's hard for me to see how your patch makes a difference.  If
ifr->ifr_flags is 16-bits, then ifr->ifr_flags and (ifr->ifr_flags &
0xffff) have the same value, and assigning to ifr->ifr_flags has the
same effect whether you mask off high bits or not.  Also, the commit you
name was in 2013, and we've had other contributions from FreeBSD
contributors since then (namely Ed Maste <ema...@freebsd.org>) and it
seems like he would have noticed if it were totally busted.

> 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
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to