[libvirt] [PATCHv2] build: correctly check for SOICGIFVLAN GET_VLAN_VID_CMD command

Eric Blake eblake at redhat.com
Mon Feb 10 22:49:51 UTC 2014


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 604 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140210/350ac1b4/attachment-0001.sig>


More information about the libvir-list mailing list