mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-09 06:25:19 +00:00
9f4e35dc73
During startup we create some top level chains in which all virtual network firewall rules will be placed. The upfront creation is done to avoid slowing down creation of individual virtual networks by checking for chain existance every time. There are some factors which can cause this upfront creation to fail and while a message will get into the libvirtd log this won't be seen by users who later try to start a virtual network. Instead they'll just get a message saying that the libvirt top level chain does not exist. This message is accurate, but unhelpful for solving the root cause. This patch thus saves any error during daemon startup and reports it when trying to create a virtual network later. Reviewed-by: Andrea Bolognani <abologna@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
71 lines
2.1 KiB
C
71 lines
2.1 KiB
C
/*
|
|
* bridge_driver_platform.h: platform specific routines for bridge driver
|
|
*
|
|
* Copyright (C) 2006-2013 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/>.
|
|
*/
|
|
|
|
#ifndef LIBVIRT_BRIDGE_DRIVER_PLATFORM_H
|
|
# define LIBVIRT_BRIDGE_DRIVER_PLATFORM_H
|
|
|
|
# include "internal.h"
|
|
# include "virthread.h"
|
|
# include "virdnsmasq.h"
|
|
# include "virnetworkobj.h"
|
|
# include "object_event.h"
|
|
|
|
/* Main driver state */
|
|
struct _virNetworkDriverState {
|
|
virMutex lock;
|
|
|
|
/* Read-only */
|
|
bool privileged;
|
|
|
|
/* Immutable pointer, self-locking APIs */
|
|
virNetworkObjListPtr networks;
|
|
|
|
/* Immutable pointers, Immutable objects */
|
|
char *networkConfigDir;
|
|
char *networkAutostartDir;
|
|
char *stateDir;
|
|
char *pidDir;
|
|
char *dnsmasqStateDir;
|
|
char *radvdStateDir;
|
|
|
|
/* Require lock to get a reference on the object,
|
|
* lockless access thereafter
|
|
*/
|
|
dnsmasqCapsPtr dnsmasqCaps;
|
|
|
|
/* Immutable pointer, self-locking APIs */
|
|
virObjectEventStatePtr networkEventState;
|
|
};
|
|
|
|
typedef struct _virNetworkDriverState virNetworkDriverState;
|
|
typedef virNetworkDriverState *virNetworkDriverStatePtr;
|
|
|
|
void networkPreReloadFirewallRules(bool startup);
|
|
void networkPostReloadFirewallRules(bool startup);
|
|
|
|
int networkCheckRouteCollision(virNetworkDefPtr def);
|
|
|
|
int networkAddFirewallRules(virNetworkDefPtr def);
|
|
|
|
void networkRemoveFirewallRules(virNetworkDefPtr def);
|
|
|
|
#endif /* LIBVIRT_BRIDGE_DRIVER_PLATFORM_H */
|