[libvirt] [PATCH] Fix build --without-network
Michal Privoznik
mprivozn at redhat.com
Wed May 13 12:01:02 UTC 2015
On 27.04.2015 15:49, Martin Kletzander wrote:
> In order not to bring in any link dependencies, bridge driver doesn't
> use the usual stubs as other conditionally-built code does. However,
> having the function as a macro imposes a problem with possibly unused
> variables if just defined as "0". This was worked around by using
> (dom=dom, iface=iface, 0) which should act like a 0 if used in a
> condition. However, gcc still bugs about that, so I came up with
> another way how to fix that.
>
> Using static inline functions in the header won't collide with anything,
> it fixes the bug and does one thing that the macro didn't do. It checks
> whenther passed variables are pointers of compatible type. It has only
> one downside, and that is that we need to either a) define it with
> ATTRIBUTE_UNUSED, which needs an exception in cfg.mk or b) do something
> like ignore_value(variable); in the function body. I went with the
> first variant.
>
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
>
> Notes:
> I can go with the version (b) if that's the preferred one.
>
> cfg.mk | 4 ++--
> src/network/bridge_driver.h | 19 ++++++++++++++++---
> 2 files changed, 18 insertions(+), 5 deletions(-)
>
> diff --git a/cfg.mk b/cfg.mk
> index 9ba2134..796ed80 100644
> --- a/cfg.mk
> +++ b/cfg.mk
> @@ -1,5 +1,5 @@
> # Customize Makefile.maint. -*- makefile -*-
> -# Copyright (C) 2008-2014 Red Hat, Inc.
> +# Copyright (C) 2008-2015 Red Hat, Inc.
> # Copyright (C) 2003-2008 Free Software Foundation, Inc.
>
> # This program is free software: you can redistribute it and/or modify
> @@ -1184,7 +1184,7 @@ exclude_file_name_regexp--sc_prohibit_getenv = \
> ^tests/.*\.[ch]$$
>
> exclude_file_name_regexp--sc_avoid_attribute_unused_in_header = \
> - ^src/util/virlog\.h$$
> + ^(src/util/virlog\.h|src/network/bridge_driver\.h)$$
>
> exclude_file_name_regexp--sc_prohibit_mixed_case_abbreviations = \
> ^src/(vbox/vbox_CAPI.*.h|esx/esx_vi.(c|h)|esx/esx_storage_backend_iscsi.c)$$
> diff --git a/src/network/bridge_driver.h b/src/network/bridge_driver.h
> index 2f801ee..513ccf7 100644
> --- a/src/network/bridge_driver.h
> +++ b/src/network/bridge_driver.h
> @@ -1,7 +1,7 @@
> /*
> * bridge_driver.h: core driver methods for managing networks
> *
> - * Copyright (C) 2006-2013 Red Hat, Inc.
> + * Copyright (C) 2006-2015 Red Hat, Inc.
> * Copyright (C) 2006 Daniel P. Berrange
> *
> * This library is free software; you can redistribute it and/or
> @@ -55,11 +55,24 @@ int networkDnsmasqConfContents(virNetworkObjPtr network,
> # else
> /* Define no-op replacements that don't drag in any link dependencies. */
> # define networkAllocateActualDevice(dom, iface) 0
> -# define networkNotifyActualDevice(dom, iface) (dom=dom, iface=iface, 0)
> -# define networkReleaseActualDevice(dom, iface) (dom=dom, iface=iface, 0)
> # define networkGetNetworkAddress(netname, netaddr) (-2)
> # define networkDnsmasqConfContents(network, pidfile, configstr, \
> dctx, caps) 0
> +
> +static inline int
> +networkNotifyActualDevice(virDomainDefPtr dom ATTRIBUTE_UNUSED,
> + virDomainNetDefPtr iface ATTRIBUTE_UNUSED)
> +{
> + return 0;
> +}
> +
> +static inline int
> +networkReleaseActualDevice(virDomainDefPtr dom ATTRIBUTE_UNUSED,
> + virDomainNetDefPtr iface ATTRIBUTE_UNUSED)
> +{
> + return 0;
> +}
> +
> # endif
>
> typedef char *(*networkDnsmasqLeaseFileNameFunc)(const char *netname);
>
ACK
Michal
More information about the libvir-list
mailing list