From: Laine Stump Date: Mon, 10 Feb 2014 14:08:26 +0000 (+0200) Subject: build: correctly check for SOICGIFVLAN GET_VLAN_VID_CMD command X-Git-Tag: v1.2.2-rc1~143 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0144d72963813542f31150591442857c2c6ad47e;p=thirdparty%2Flibvirt.git build: correctly check for SOICGIFVLAN GET_VLAN_VID_CMD command In order to make a client-only build successful on RHEL4 (yes, you read that correctly!), commit 3ed2e54 modified src/util/virnetdev.c so that the functional version of virNetDevGetVLanID() was only compiled if GET_VLAN_VID_CMD was defined. However, it is *never* defined, but is only an enum value, so the proper version was no longer compiled even on platforms that support it. This resulted in the vlan tag not being properly set for guest traffic on VEPA mode guest macvtap interfaces that were bound to a vlan interface (that's the only place that libvirt currently uses virNetDevGetVLanID) Since there is no way to compile conditionally based on the presence of an enum value, this patch modifies configure.ac to check for said enum value with AC_CHECK_DECLS(), which #defines HAVE_DECL_GET_VLAN_VID_CMD to 1 if it's successful compiling a test program that uses GET_VLAN_VID_CMD (and still #defines it, but to 0, if it's not successful). We can then make the compilation of virNetDevGetVLanID() conditional on the value of HAVE_DECL_GET_VLAN_VID_CMD. --- diff --git a/configure.ac b/configure.ac index 7ecbee9ea0..0d505d31b1 100644 --- a/configure.ac +++ b/configure.ac @@ -2470,6 +2470,8 @@ if test "$with_virtualport" != "no"; then fi AM_CONDITIONAL([WITH_VIRTUALPORT], [test "$with_virtualport" = "yes"]) +dnl GET_VLAN_VID_CMD is required for virNetDevGetVLanID +AC_CHECK_DECLS([GET_VLAN_VID_CMD], [], [], [[#include ]]) dnl netlink library diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c index e74fc5fccd..6a1ee1ebba 100644 --- a/src/util/virnetdev.c +++ b/src/util/virnetdev.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2013 Red Hat, Inc. + * Copyright (C) 2007-2014 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -732,7 +732,7 @@ int virNetDevGetIndex(const char *ifname ATTRIBUTE_UNUSED, #endif /* ! SIOCGIFINDEX */ -#if defined(SIOCGIFVLAN) && defined(HAVE_STRUCT_IFREQ) && defined(GET_VLAN_VID_CMD) +#if defined(SIOCGIFVLAN) && defined(HAVE_STRUCT_IFREQ) && HAVE_DECL_GET_VLAN_VID_CMD int virNetDevGetVLanID(const char *ifname, int *vlanid) { struct vlan_ioctl_args vlanargs = {