mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-07 23:05:48 +00:00
564dd53791
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>
81 lines
2.6 KiB
C
81 lines
2.6 KiB
C
/*
|
|
* bridge_driver.h: core driver methods for managing networks
|
|
*
|
|
* Copyright (C) 2006-2015 Red Hat, Inc.
|
|
* Copyright (C) 2006 Daniel P. Berrange
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see
|
|
* <http://www.gnu.org/licenses/>.
|
|
*
|
|
* Author: Daniel P. Berrange <berrange@redhat.com>
|
|
*/
|
|
|
|
|
|
#ifndef __VIR_NETWORK__DRIVER_H
|
|
# define __VIR_NETWORK__DRIVER_H
|
|
|
|
# include "internal.h"
|
|
# include "network_conf.h"
|
|
# include "domain_conf.h"
|
|
# include "vircommand.h"
|
|
# include "virdnsmasq.h"
|
|
|
|
int networkRegister(void);
|
|
|
|
# if WITH_NETWORK
|
|
int networkAllocateActualDevice(virDomainDefPtr dom,
|
|
virDomainNetDefPtr iface)
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
|
int networkNotifyActualDevice(virDomainDefPtr dom,
|
|
virDomainNetDefPtr iface)
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
|
int networkReleaseActualDevice(virDomainDefPtr dom,
|
|
virDomainNetDefPtr iface)
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
|
|
|
int networkGetNetworkAddress(const char *netname, char **netaddr)
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
|
|
|
int networkDnsmasqConfContents(virNetworkObjPtr network,
|
|
const char *pidfile,
|
|
char **configstr,
|
|
dnsmasqContext *dctx,
|
|
dnsmasqCapsPtr caps);
|
|
# else
|
|
/* Define no-op replacements that don't drag in any link dependencies. */
|
|
# define networkAllocateActualDevice(dom, 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);
|
|
|
|
#endif /* __VIR_NETWORK__DRIVER_H */
|