[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH] Fix build --without-network



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 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]