[libvirt] [PATCH] build: correctly check for SOICGIFVLAN GET_VLAN_VID_CMD command
Eric Blake
eblake at redhat.com
Mon Feb 10 17:42:28 UTC 2014
On 02/10/2014 07:17 AM, 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
I wonder if that was a typo in the 3ed2e54 commit message - we generally
only care about RHEL5, not RHEL4.
> 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_TRY_COMPILE(), and #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.
> ---
> configure.ac | 10 ++++++++++
> src/util/virnetdev.c | 4 ++--
> 2 files changed, 12 insertions(+), 2 deletions(-)
>
> +AC_MSG_CHECKING([for GET_VLAN_VID_CMD in /usr/linux/if_vlan.h])
> +AC_TRY_COMPILE([ #include <linux/if_vlan.h> ],
> + [ int x = GET_VLAN_VID_CMD; ],
> + [ have_get_vlan_vid_cmd=yes ],
> + [ have_get_vlan_vid_cmd=no ])
Unusual style - most autoconf macro calls don't put spaces between the
[] quoting. Also, AC_TRY_COMPILE is marked deprecated in the autoconf
manual, with the recommendation to use AC_COMPILE_IFELSE. But see below...
> +if test "$have_get_vlan_vid_cmd" = "yes"; then
> + AC_DEFINE_UNQUOTED([HAVE_GET_VLAN_VID_CMD], 1,
> + [whether the kernel SIOCGIFVLAN ioctl supports GET_VLAN_VID_CMD])
> +fi
> +AC_MSG_RESULT([$have_get_vlan_vid_cmd])
>
AC_CHECK_DECLS is more compact; for example, see how we probe for
MACVLAN_MODE_PASSTHRU, at which point the rest of the code can use
HAVE_DECL_MACVLAN_MODE_PASSTHRU.
The idea behind this patch makes sense, but it's probably worth a v2.
--
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/4a3dbfba/attachment-0001.sig>
More information about the libvir-list
mailing list