summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2014-07-02 15:19:58 +0200
committerThomas Haller <thaller@redhat.com>2014-07-02 15:27:32 +0200
commit62dd70e1d1e0f3019bcca55b7a3e04fdb9597bc9 (patch)
tree52fde0084772527df7415a2b20935698b5ed3314
parente343c45ebbb7976e15241a241f2876de8619ca3c (diff)
downloadNetworkManager-62dd70e1d1e0f3019bcca55b7a3e04fdb9597bc9.tar.gz
core: use singleton nm_firewall_manager_get() throughout without taking additional ref
No need to keep references of the singleton and take an additional ref when accessing nm_firewall_manager_get(). Especially, since the firewall manager instance was nowhere passed in from externally, it doesn't even sense for some vague testing purporse. Not to mention, that there are no tests that actually inject a firewall manager stub. Signed-off-by: Thomas Haller <thaller@redhat.com>
-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) {