summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/devices/nm-device.c31
-rw-r--r--src/firewall-manager/nm-firewall-manager.c7
-rw-r--r--src/nm-policy.c19
3 files changed, 22 insertions, 35 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 0fc5e26c61..97546a2b34 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -251,8 +251,7 @@ typedef struct {
NMDnsMasqManager *dnsmasq_manager;
gulong dnsmasq_state_id;
- /* Firewall Manager */
- NMFirewallManager *fw_manager;
+ /* Firewall */
DBusGProxyCall *fw_call;
/* avahi-autoipd stuff */
@@ -4142,7 +4141,7 @@ nm_device_activate_schedule_stage3_ip_config_start (NMDevice *self)
zone = nm_setting_connection_get_zone (s_con);
nm_log_dbg (LOGD_DEVICE, "Activation (%s) setting firewall zone '%s'",
nm_device_get_iface (self), zone ? zone : "default");
- priv->fw_call = nm_firewall_manager_add_or_change_zone (priv->fw_manager,
+ priv->fw_call = nm_firewall_manager_add_or_change_zone (nm_firewall_manager_get (),
nm_device_get_ip_iface (self),
zone,
FALSE,
@@ -6425,23 +6424,21 @@ nm_device_has_pending_action (NMDevice *device)
static void
_cleanup_generic_pre (NMDevice *self, gboolean deconfigure)
{
+ NMConnection *connection;
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
/* Clean up when device was deactivated during call to firewall */
- if (priv->fw_manager) {
- NMConnection *connection;
- if (priv->fw_call) {
- nm_firewall_manager_cancel_call (priv->fw_manager, priv->fw_call);
- priv->fw_call = NULL;
- }
+ if (priv->fw_call) {
+ nm_firewall_manager_cancel_call (nm_firewall_manager_get (), priv->fw_call);
+ priv->fw_call = NULL;
+ }
- connection = nm_device_get_connection (self);
- if (deconfigure && connection) {
- nm_firewall_manager_remove_from_zone (priv->fw_manager,
- nm_device_get_ip_iface (self),
- NULL);
- }
+ connection = nm_device_get_connection (self);
+ if (deconfigure && connection) {
+ nm_firewall_manager_remove_from_zone (nm_firewall_manager_get (),
+ nm_device_get_ip_iface (self),
+ NULL);
}
ip_check_gw_ping_cleanup (self);
@@ -7234,8 +7231,6 @@ constructor (GType type,
if (NM_DEVICE_GET_CLASS (dev)->get_generic_capabilities)
priv->capabilities |= NM_DEVICE_GET_CLASS (dev)->get_generic_capabilities (dev);
- priv->fw_manager = nm_firewall_manager_get ();
-
device_get_driver_info (priv->iface, &priv->driver_version, &priv->firmware_version);
/* Watch for external IP config changes */
@@ -7356,8 +7351,6 @@ dispose (GObject *object)
g_signal_handlers_disconnect_by_func (platform, G_CALLBACK (device_ip_changed), self);
g_signal_handlers_disconnect_by_func (platform, G_CALLBACK (link_changed_cb), self);
- g_clear_object (&priv->fw_manager);
-
G_OBJECT_CLASS (nm_device_parent_class)->dispose (object);
}
diff --git a/src/firewall-manager/nm-firewall-manager.c b/src/firewall-manager/nm-firewall-manager.c
index d8a52c12a8..d3e3777d44 100644
--- a/src/firewall-manager/nm-firewall-manager.c
+++ b/src/firewall-manager/nm-firewall-manager.c
@@ -263,12 +263,11 @@ nm_firewall_manager_get (void)
{
static NMFirewallManager *singleton = NULL;
- if (!singleton)
+ if (G_UNLIKELY (!singleton)) {
singleton = NM_FIREWALL_MANAGER (g_object_new (NM_TYPE_FIREWALL_MANAGER, NULL));
- else
- g_object_ref (singleton);
+ g_assert (singleton);
+ }
- g_assert (singleton);
return singleton;
}
diff --git a/src/nm-policy.c b/src/nm-policy.c
index 63202ee738..18a0184504 100644
--- a/src/nm-policy.c
+++ b/src/nm-policy.c
@@ -54,7 +54,6 @@ typedef struct {
GSList *pending_secondaries;
- NMFirewallManager *fw_manager;
gulong fw_started_id;
NMSettings *settings;
@@ -1883,7 +1882,7 @@ firewall_update_zone (NMPolicy *policy, NMConnection *connection)
if ( (nm_device_get_connection (dev) == connection)
&& (nm_device_get_state (dev) == NM_DEVICE_STATE_ACTIVATED)) {
- nm_firewall_manager_add_or_change_zone (priv->fw_manager,
+ nm_firewall_manager_add_or_change_zone (nm_firewall_manager_get (),
nm_device_get_ip_iface (dev),
nm_setting_connection_get_zone (s_con),
FALSE, /* change zone */
@@ -1913,7 +1912,7 @@ firewall_started (NMFirewallManager *manager,
s_con = nm_connection_get_setting_connection (connection);
if (nm_device_get_state (dev) == NM_DEVICE_STATE_ACTIVATED) {
- nm_firewall_manager_add_or_change_zone (priv->fw_manager,
+ nm_firewall_manager_add_or_change_zone (nm_firewall_manager_get (),
nm_device_get_ip_iface (dev),
nm_setting_connection_get_zone (s_con),
FALSE, /* still change zone */
@@ -2069,7 +2068,6 @@ nm_policy_new (NMManager *manager, NMSettings *settings)
NMPolicy *policy;
NMPolicyPrivate *priv;
static gboolean initialized = FALSE;
- gulong id;
char hostname[HOST_NAME_MAX + 2];
g_return_val_if_fail (NM_IS_MANAGER (manager), NULL);
@@ -2092,10 +2090,8 @@ nm_policy_new (NMManager *manager, NMSettings *settings)
priv->orig_hostname = g_strdup (hostname);
}
- priv->fw_manager = nm_firewall_manager_get();
- id = g_signal_connect (priv->fw_manager, "started",
- G_CALLBACK (firewall_started), policy);
- priv->fw_started_id = id;
+ priv->fw_started_id = g_signal_connect (nm_firewall_manager_get (), "started",
+ G_CALLBACK (firewall_started), policy);
priv->dns_manager = nm_dns_manager_get ();
nm_dns_manager_set_initial_hostname (priv->dns_manager, priv->orig_hostname);
@@ -2201,10 +2197,9 @@ dispose (GObject *object)
g_slist_free_full (priv->pending_secondaries, (GDestroyNotify) pending_secondary_data_free);
priv->pending_secondaries = NULL;
- if (priv->fw_manager) {
- g_signal_handler_disconnect (priv->fw_manager, priv->fw_started_id);
- g_object_unref (priv->fw_manager);
- priv->fw_manager = NULL;
+ if (priv->fw_started_id) {
+ g_signal_handler_disconnect (nm_firewall_manager_get (), priv->fw_started_id);
+ priv->fw_started_id = 0;
}
if (priv->dns_manager) {