mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
src/network/bridge_driver: convert to use GLib DBus
Signed-off-by: Pavel Hrdina <phrdina@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
bf50ada8c1
commit
0887a7afc5
@ -59,7 +59,7 @@
|
|||||||
#include "virnetdevtap.h"
|
#include "virnetdevtap.h"
|
||||||
#include "virnetdevvportprofile.h"
|
#include "virnetdevvportprofile.h"
|
||||||
#include "virpci.h"
|
#include "virpci.h"
|
||||||
#include "virdbus.h"
|
#include "virgdbus.h"
|
||||||
#include "virfile.h"
|
#include "virfile.h"
|
||||||
#include "virstring.h"
|
#include "virstring.h"
|
||||||
#include "viraccessapicheck.h"
|
#include "viraccessapicheck.h"
|
||||||
@ -638,33 +638,29 @@ networkAutostartConfig(virNetworkObjPtr obj,
|
|||||||
|
|
||||||
|
|
||||||
#ifdef WITH_FIREWALLD
|
#ifdef WITH_FIREWALLD
|
||||||
static DBusHandlerResult
|
static void
|
||||||
firewalld_dbus_filter_bridge(DBusConnection *connection G_GNUC_UNUSED,
|
firewalld_dbus_signal_callback(GDBusConnection *connection G_GNUC_UNUSED,
|
||||||
DBusMessage *message,
|
const char *senderName G_GNUC_UNUSED,
|
||||||
void *user_data)
|
const char *objectPath G_GNUC_UNUSED,
|
||||||
|
const char *interfaceName,
|
||||||
|
const char *signalName,
|
||||||
|
GVariant *parameters,
|
||||||
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
virNetworkDriverStatePtr driver = user_data;
|
virNetworkDriverStatePtr driver = user_data;
|
||||||
bool reload = false;
|
bool reload = false;
|
||||||
|
|
||||||
if (dbus_message_is_signal(message,
|
if (STREQ(interfaceName, "org.fedoraproject.FirewallD1") &&
|
||||||
"org.fedoraproject.FirewallD1", "Reloaded")) {
|
STREQ(signalName, "Reloaded")) {
|
||||||
reload = true;
|
reload = true;
|
||||||
|
} else if (STREQ(interfaceName, "org.freedesktop.DBus") &&
|
||||||
|
STREQ(signalName, "NameOwnerChanged")) {
|
||||||
|
char *name = NULL;
|
||||||
|
char *old_owner = NULL;
|
||||||
|
char *new_owner = NULL;
|
||||||
|
|
||||||
} else if (dbus_message_is_signal(message,
|
g_variant_get(parameters, "(&s&s&s)", &name, &old_owner, &new_owner);
|
||||||
DBUS_INTERFACE_DBUS, "NameOwnerChanged")) {
|
|
||||||
|
|
||||||
g_autofree char *name = NULL;
|
|
||||||
g_autofree char *old_owner = NULL;
|
|
||||||
g_autofree char *new_owner = NULL;
|
|
||||||
|
|
||||||
if (virDBusMessageDecode(message, "sss", &name, &old_owner, &new_owner) < 0) {
|
|
||||||
VIR_WARN("Failed to decode DBus NameOwnerChanged message");
|
|
||||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* if new_owner is empty, firewalld is shutting down. If it is
|
|
||||||
* non-empty, then it is starting
|
|
||||||
*/
|
|
||||||
if (new_owner && *new_owner)
|
if (new_owner && *new_owner)
|
||||||
reload = true;
|
reload = true;
|
||||||
}
|
}
|
||||||
@ -673,8 +669,6 @@ firewalld_dbus_filter_bridge(DBusConnection *connection G_GNUC_UNUSED,
|
|||||||
VIR_DEBUG("Reload in bridge_driver because of firewalld.");
|
VIR_DEBUG("Reload in bridge_driver because of firewalld.");
|
||||||
networkReloadFirewallRules(driver, false, true);
|
networkReloadFirewallRules(driver, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -694,7 +688,7 @@ networkStateInitialize(bool privileged,
|
|||||||
g_autofree char *rundir = NULL;
|
g_autofree char *rundir = NULL;
|
||||||
bool autostart = true;
|
bool autostart = true;
|
||||||
#ifdef WITH_FIREWALLD
|
#ifdef WITH_FIREWALLD
|
||||||
DBusConnection *sysbus = NULL;
|
GDBusConnection *sysbus = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (root != NULL) {
|
if (root != NULL) {
|
||||||
@ -793,27 +787,30 @@ networkStateInitialize(bool privileged,
|
|||||||
network_driver->networkEventState = virObjectEventStateNew();
|
network_driver->networkEventState = virObjectEventStateNew();
|
||||||
|
|
||||||
#ifdef WITH_FIREWALLD
|
#ifdef WITH_FIREWALLD
|
||||||
if (!(sysbus = virDBusGetSystemBus())) {
|
if (!(sysbus = virGDBusGetSystemBus())) {
|
||||||
VIR_WARN("DBus not available, disabling firewalld support "
|
VIR_WARN("DBus not available, disabling firewalld support "
|
||||||
"in bridge_network_driver: %s", virGetLastErrorMessage());
|
"in bridge_network_driver: %s", virGetLastErrorMessage());
|
||||||
} else {
|
} else {
|
||||||
/* add matches for
|
g_dbus_connection_signal_subscribe(sysbus,
|
||||||
* NameOwnerChanged on org.freedesktop.DBus for firewalld start/stop
|
NULL,
|
||||||
* Reloaded on org.fedoraproject.FirewallD1 for firewalld reload
|
"org.freedesktop.DBus",
|
||||||
*/
|
"NameOwnerChanged",
|
||||||
dbus_bus_add_match(sysbus,
|
NULL,
|
||||||
"type='signal'"
|
"org.fedoraproject.FirewallD1",
|
||||||
",interface='"DBUS_INTERFACE_DBUS"'"
|
G_DBUS_SIGNAL_FLAGS_NONE,
|
||||||
",member='NameOwnerChanged'"
|
firewalld_dbus_signal_callback,
|
||||||
",arg0='org.fedoraproject.FirewallD1'",
|
network_driver,
|
||||||
NULL);
|
NULL);
|
||||||
dbus_bus_add_match(sysbus,
|
g_dbus_connection_signal_subscribe(sysbus,
|
||||||
"type='signal'"
|
NULL,
|
||||||
",interface='org.fedoraproject.FirewallD1'"
|
"org.fedoraproject.FirewallD1",
|
||||||
",member='Reloaded'",
|
"Reloaded",
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
G_DBUS_SIGNAL_FLAGS_NONE,
|
||||||
|
firewalld_dbus_signal_callback,
|
||||||
|
network_driver,
|
||||||
NULL);
|
NULL);
|
||||||
dbus_connection_add_filter(sysbus, firewalld_dbus_filter_bridge,
|
|
||||||
network_driver, NULL);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@ if conf.has('WITH_NETWORK')
|
|||||||
],
|
],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
access_dep,
|
access_dep,
|
||||||
dbus_dep,
|
|
||||||
libnl_dep,
|
libnl_dep,
|
||||||
src_dep,
|
src_dep,
|
||||||
],
|
],
|
||||||
@ -30,7 +29,6 @@ if conf.has('WITH_NETWORK')
|
|||||||
virt_modules += {
|
virt_modules += {
|
||||||
'name': 'virt_driver_network',
|
'name': 'virt_driver_network',
|
||||||
'deps': [
|
'deps': [
|
||||||
dbus_dep,
|
|
||||||
libnl_dep,
|
libnl_dep,
|
||||||
],
|
],
|
||||||
'link_whole': [
|
'link_whole': [
|
||||||
|
Loading…
Reference in New Issue
Block a user