On 02/10/2014 03:38 PM, Laine Stump wrote: > In order to make a client-only build successful on RHEL4, 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_GET_VLAN_VID_CMD > if it's successful compiling a test program that uses > GET_VLAN_VID_CMD. We can then make the compilation of > virNetDevGetVLanID() conditional on that #define instead. > --- > > Difference from V1: > > Use the amazingly compact AC_CHECK_DECLS() instead > of deprecated AC_TRY_COMPILE() + extra trappings. > > configure.ac | 2 ++ > src/util/virnetdev.c | 4 ++-- > 2 files changed, 4 insertions(+), 2 deletions(-) Almost! > > -#if defined(SIOCGIFVLAN) && defined(HAVE_STRUCT_IFREQ) && defined(GET_VLAN_VID_CMD) > +#if defined(SIOCGIFVLAN) && defined(HAVE_STRUCT_IFREQ) && defined(HAVE_GET_VLAN_VID_CMD) s/defined(HAVE_GET_VLAN_VID_CMD)/HAVE_GET_VLAN_VID_CMD/ AC_CHECK_DECLS unconditionally defines the variable to either 0 or 1, so checking if it is defined will still fail to compile on older headers that lack the enum; what you want is to check that it has a non-zero value. ACK with that fix. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list