diff options
-rw-r--r-- | src/devices/nm-device.c | 31 | ||||
-rw-r--r-- | src/firewall-manager/nm-firewall-manager.c | 7 | ||||
-rw-r--r-- | src/nm-policy.c | 19 |
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) { |