projects
/
cascardo
/
ovs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
netdev-bsd: Fix sign extension bug in ifr_flags on FreeBSD.
[cascardo/ovs.git]
/
lib
/
netdev-bsd.c
diff --git
a/lib/netdev-bsd.c
b/lib/netdev-bsd.c
index
85f3b21
..
671de37
100644
(file)
--- a/
lib/netdev-bsd.c
+++ b/
lib/netdev-bsd.c
@@
-1771,7
+1771,7
@@
static int
ifr_get_flags(const struct ifreq *ifr)
{
#ifdef HAVE_STRUCT_IFREQ_IFR_FLAGSHIGH
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
#else
return ifr->ifr_flags;
#endif
@@
-1780,9
+1780,11
@@
ifr_get_flags(const struct ifreq *ifr)
static void
ifr_set_flags(struct ifreq *ifr, int flags)
{
static void
ifr_set_flags(struct ifreq *ifr, int flags)
{
- ifr->ifr_flags = flags;
#ifdef HAVE_STRUCT_IFREQ_IFR_FLAGSHIGH
#ifdef HAVE_STRUCT_IFREQ_IFR_FLAGSHIGH
+ ifr->ifr_flags = flags & 0xffff;
ifr->ifr_flagshigh = flags >> 16;
ifr->ifr_flagshigh = flags >> 16;
+#else
+ ifr->ifr_flags = flags;
#endif
}
#endif
}