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@xxxxxxxxxx> > --- > > 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list