libvirt/src/network/bridge_driver_platform.h
Daniel P. Berrangé c6cbe18771 network: delay global firewall setup if no networks are running
Creating firewall rules for the virtual networks causes the kernel to
load the conntrack module. This imposes a significant performance
penalty on Linux network traffic. Thus we want to only take that hit if
we actually have virtual networks running.

We need to create global firewall rules during startup in order to
"upgrade" rules for any running networks created by older libvirt.
If no running networks are present though, we can safely delay setup
until the time we actually start a network.

Reviewed-by: Jim Fehlig <jfehlig@suse.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-05-23 16:29:48 +01:00

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(virNetworkDriverStatePtr driver, bool startup);
void networkPostReloadFirewallRules(bool startup);
int networkCheckRouteCollision(virNetworkDefPtr def);
int networkAddFirewallRules(virNetworkDefPtr def);
void networkRemoveFirewallRules(virNetworkDefPtr def);
#endif /* LIBVIRT_BRIDGE_DRIVER_PLATFORM_H */