On 10/29/2014 02:20 PM, Roman Bogorodskiy wrote:
Currently, build fails on FreeBSD because its struct ifreq does not
have ifr_hwaddr member. In order to fix that, check if this member
is present, otherwise fall back to the stub version of the
virNetDev{Add,Del}Multi functions.
---
configure.ac | 3 ++-
src/util/virnetdev.c | 6 ++++--
2 files changed, 6 insertions(+), 3 deletions(-)
Looks reasonable to me and since it fixes the build on FreeBSD...
ACK
John
I know I did these backwards, but both seem safe for freeze too.
diff --git a/configure.ac b/configure.ac
index f7b02ff..31c5fa2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2694,7 +2694,8 @@ AC_SUBST([ws_plugindir])
# Check for Linux vs. BSD ifreq members
AC_CHECK_MEMBERS([struct ifreq.ifr_newname,
struct ifreq.ifr_ifindex,
- struct ifreq.ifr_index],
+ struct ifreq.ifr_index,
+ struct ifreq.ifr_hwaddr],
[], [],
[#include <sys/socket.h>
#include <net/if.h>
diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
index 127bfb2..ac82a74 100644
--- a/src/util/virnetdev.c
+++ b/src/util/virnetdev.c
@@ -1971,7 +1971,8 @@ virNetDevGetLinkInfo(const char *ifname,
#endif /* defined(__linux__) */
-#if defined(SIOCADDMULTI) && defined(HAVE_STRUCT_IFREQ)
+#if defined(SIOCADDMULTI) && defined(HAVE_STRUCT_IFREQ) && \
+ defined(HAVE_STRUCT_IFREQ_IFR_HWADDR)
/**
* virNetDevAddMulti:
* @ifname: interface name to which to add multicast MAC address
@@ -2019,7 +2020,8 @@ int virNetDevAddMulti(const char *ifname ATTRIBUTE_UNUSED,
}
#endif
-#if defined(SIOCDELMULTI) && defined(HAVE_STRUCT_IFREQ)
+#if defined(SIOCDELMULTI) && defined(HAVE_STRUCT_IFREQ) && \
+ defined(HAVE_STRUCT_IFREQ_IFR_HWADDR)
/**
* virNetDevDelMulti:
* @ifname: interface name from which to delete the multicast MAC address