build: fix build on Cygwin

The RPC fixups needed on Linux are also needed on cygwin, and
worked without further tweaking to the list of fixups.  Also,
unlike BSD, Cygwin exports 'struct ifreq', but unlike Linux,
Cygwin lacks the ioctls that we were using 'struct ifreq' to
access.  This patch allows compilation under cygwin.

* src/rpc/genprotocol.pl: Also perform fixups on cygwin.
* src/util/virnetdev.c (HAVE_STRUCT_IFREQ): Also require AF_PACKET
definition.
* src/util/virnetdevbridge.c (virNetDevSetupControlFull): Only
compile if SIOCBRADDBR works.
This commit is contained in:
Eric Blake 2011-06-13 17:50:09 -06:00
parent 75da320087
commit c74a2a03f0
3 changed files with 4 additions and 2 deletions

View File

@ -31,7 +31,7 @@ open RPCGEN, "-|", $rpcgen, $mode, $xdrdef
open TARGET, ">$target" open TARGET, ">$target"
or die "cannot create $target: $!"; or die "cannot create $target: $!";
my $fixup = $^O eq "linux"; my $fixup = $^O eq "linux" || $^O eq "cygwin";
if ($mode eq "-c") { if ($mode eq "-c") {
print TARGET "#include <config.h>\n"; print TARGET "#include <config.h>\n";

View File

@ -38,6 +38,8 @@
#ifdef __linux__ #ifdef __linux__
# include <linux/sockios.h> # include <linux/sockios.h>
# include <linux/if_vlan.h> # include <linux/if_vlan.h>
#elif !defined(AF_PACKET)
# undef HAVE_STRUCT_IFREQ
#endif #endif
#define VIR_FROM_THIS VIR_FROM_NONE #define VIR_FROM_THIS VIR_FROM_NONE

View File

@ -45,7 +45,7 @@
#define VIR_FROM_THIS VIR_FROM_NONE #define VIR_FROM_THIS VIR_FROM_NONE
#ifdef HAVE_NET_IF_H #if defined(HAVE_NET_IF_H) && defined(SIOCBRADDBR)
static int virNetDevSetupControlFull(const char *ifname, static int virNetDevSetupControlFull(const char *ifname,
struct ifreq *ifr, struct ifreq *ifr,
int domain, int domain,