summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-03-09 16:58:37 +0100
committerThomas Haller <thaller@redhat.com>2017-03-16 18:27:33 +0100
commitb152c0a19fb6661114a0ffcbf24d8fd143d048f5 (patch)
tree95343820407c128f3218ba3842fb67f824a5d64c
parent7a5e0c7fd77ecf158a668ccf979378a7ac58438f (diff)
downloadNetworkManager-b152c0a19fb6661114a0ffcbf24d8fd143d048f5.tar.gz
manager: merge/inline assume_connection() in recheck_assume_connection()
There is only one caller of assume_connection(). The tasks there are not clearly separate and it is clearer just to have one large recheck_assume_connection() function which proceeds step by step, instead of breaking it into separate parts and move them apart in the source code. The latter implies that -- unless we forward-declare assume_connection() -- the order of definition with assume_connection,recheck_assume_connection is contrary the flow of the code. Having a separate function in this case is not a simplification so merge it.
-rw-r--r--src/nm-manager.c114
1 files changed, 52 insertions, 62 deletions
diff --git a/src/nm-manager.c b/src/nm-manager.c
index 2531dafe4d..1520849f35 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -1823,61 +1823,13 @@ get_existing_connection (NMManager *self,
}
static gboolean
-assume_connection (NMManager *self,
- NMDevice *device,
- NMSettingsConnection *connection,
- gboolean generated)
-{
- NMActiveConnection *active, *master_ac;
- NMAuthSubject *subject;
- GError *error = NULL;
-
- _LOGD (LOGD_DEVICE, "(%s): will attempt to assume connection",
- nm_device_get_iface (device));
-
- /* Move device to DISCONNECTED to activate the connection */
- if (nm_device_get_state (device) == NM_DEVICE_STATE_UNAVAILABLE) {
- nm_device_state_changed (device,
- NM_DEVICE_STATE_DISCONNECTED,
- NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
- }
- g_return_val_if_fail (nm_device_get_state (device) >= NM_DEVICE_STATE_DISCONNECTED, FALSE);
-
- subject = nm_auth_subject_new_internal ();
- active = _new_active_connection (self, NM_CONNECTION (connection), NULL, NULL,
- device, subject,
- generated ? NM_ACTIVATION_TYPE_EXTERNAL : NM_ACTIVATION_TYPE_ASSUME,
- &error);
- g_object_unref (subject);
-
- if (!active) {
- _LOGW (LOGD_DEVICE, "assumed connection %s failed to activate: %s",
- nm_connection_get_path (NM_CONNECTION (connection)),
- error->message);
- g_error_free (error);
- return FALSE;
- }
-
- /* If the device is a slave or VLAN, find the master ActiveConnection */
- master_ac = NULL;
- if (find_master (self, NM_CONNECTION (connection), device, NULL, NULL, &master_ac, NULL) && master_ac)
- nm_active_connection_set_master (active, master_ac);
-
- nm_exported_object_export (NM_EXPORTED_OBJECT (active));
- active_connection_add (self, active);
- nm_device_queue_activation (device, NM_ACT_REQUEST (active));
- g_object_unref (active);
-
- return TRUE;
-}
-
-static gboolean
recheck_assume_connection (NMManager *self,
NMDevice *device,
const char *assume_connection_uuid)
{
NMSettingsConnection *connection;
- gboolean was_unmanaged = FALSE, success, generated = FALSE;
+ gboolean was_unmanaged = FALSE;
+ gboolean generated = FALSE;
NMDeviceState state;
g_return_val_if_fail (NM_IS_MANAGER (self), FALSE);
@@ -1900,30 +1852,68 @@ recheck_assume_connection (NMManager *self,
return FALSE;
}
+ _LOGD (LOGD_DEVICE, "(%s): will attempt to assume connection",
+ nm_device_get_iface (device));
+
+ /* Move device to DISCONNECTED to activate the connection */
if (state == NM_DEVICE_STATE_UNMANAGED) {
was_unmanaged = TRUE;
nm_device_state_changed (device,
NM_DEVICE_STATE_UNAVAILABLE,
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
}
+ if (nm_device_get_state (device) == NM_DEVICE_STATE_UNAVAILABLE) {
+ nm_device_state_changed (device,
+ NM_DEVICE_STATE_DISCONNECTED,
+ NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
+ }
- success = assume_connection (self, device, connection, generated);
- if (!success) {
- if (was_unmanaged) {
- nm_device_state_changed (device,
- NM_DEVICE_STATE_UNAVAILABLE,
- NM_DEVICE_STATE_REASON_CONFIG_FAILED);
- }
+ g_return_val_if_fail (nm_device_get_state (device) >= NM_DEVICE_STATE_DISCONNECTED, FALSE);
+
+ {
+ gs_unref_object NMActiveConnection *active = NULL;
+ gs_unref_object NMAuthSubject *subject = NULL;
+ NMActiveConnection *master_ac;
+ GError *error = NULL;
+
+ subject = nm_auth_subject_new_internal ();
+ active = _new_active_connection (self, NM_CONNECTION (connection), NULL, NULL,
+ device, subject,
+ generated ? NM_ACTIVATION_TYPE_EXTERNAL : NM_ACTIVATION_TYPE_ASSUME,
+ &error);
+
+ if (!active) {
+ _LOGW (LOGD_DEVICE, "assumed connection %s failed to activate: %s",
+ nm_connection_get_path (NM_CONNECTION (connection)),
+ error->message);
+ g_error_free (error);
+
+ if (was_unmanaged) {
+ nm_device_state_changed (device,
+ NM_DEVICE_STATE_UNAVAILABLE,
+ NM_DEVICE_STATE_REASON_CONFIG_FAILED);
+ }
- if (generated) {
- _LOGD (LOGD_DEVICE, "(%s): connection assumption failed. Deleting generated connection",
- nm_device_get_iface (device));
+ if (generated) {
+ _LOGD (LOGD_DEVICE, "(%s): connection assumption failed. Deleting generated connection",
+ nm_device_get_iface (device));
- nm_settings_connection_delete (connection, NULL, NULL);
+ nm_settings_connection_delete (connection, NULL, NULL);
+ }
+ return FALSE;
}
+
+ /* If the device is a slave or VLAN, find the master ActiveConnection */
+ master_ac = NULL;
+ if (find_master (self, NM_CONNECTION (connection), device, NULL, NULL, &master_ac, NULL) && master_ac)
+ nm_active_connection_set_master (active, master_ac);
+
+ nm_exported_object_export (NM_EXPORTED_OBJECT (active));
+ active_connection_add (self, active);
+ nm_device_queue_activation (device, NM_ACT_REQUEST (active));
}
- return success;
+ return TRUE;
}
static void