diff options
author | Thomas Haller <thaller@redhat.com> | 2019-08-22 11:31:51 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-08-28 16:27:00 +0200 |
commit | 51ddbda5d24eaa95f7e17c803f661d4369e38e2b (patch) | |
tree | aed738f6bd21d956ba2c201f5d8c38a050564fee | |
parent | efa3b5b44340b65b889f1bd437f3605dfa81f6e0 (diff) | |
download | NetworkManager-51ddbda5d24eaa95f7e17c803f661d4369e38e2b.tar.gz |
device/team: don't remember connection while killing team
We don't need this. The applied-connection is already remembered
and suitable.
-rw-r--r-- | src/devices/team/nm-device-team.c | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/src/devices/team/nm-device-team.c b/src/devices/team/nm-device-team.c index aeded7428d..c02c308bd8 100644 --- a/src/devices/team/nm-device-team.c +++ b/src/devices/team/nm-device-team.c @@ -50,7 +50,6 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceTeam, typedef struct { struct teamdctl *tdc; char *config; - NMConnection *connection; GPid teamd_pid; guint teamd_process_watch; guint teamd_timeout; @@ -74,7 +73,7 @@ G_DEFINE_TYPE (NMDeviceTeam, nm_device_team, NM_TYPE_DEVICE) /*****************************************************************************/ -static gboolean teamd_start (NMDeviceTeam *self, NMConnection *connection); +static gboolean teamd_start (NMDeviceTeam *self); /*****************************************************************************/ @@ -279,17 +278,16 @@ teamd_kill_cb (pid_t pid, gboolean success, int child_status, void *user_data) { gs_unref_object NMDeviceTeam *self = user_data; NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (self); - gs_unref_object NMConnection *connection = NULL; priv->kill_in_progress = FALSE; - if (!priv->connection) + if (nm_device_get_state (NM_DEVICE (self)) != NM_DEVICE_STATE_PREPARE) { + _LOGT (LOGD_TEAM, "kill terminated"); return; - - connection = g_steal_pointer (&priv->connection); + } _LOGT (LOGD_TEAM, "kill terminated, starting teamd..."); - if (!teamd_start (self, connection)) { + if (!teamd_start (self)) { nm_device_state_changed (NM_DEVICE (self), NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_TEAMD_CONTROL_FAILED); @@ -451,10 +449,7 @@ teamd_dbus_vanished (GDBusConnection *dbus_connection, /* Attempt to respawn teamd */ if ( state >= NM_DEVICE_STATE_PREPARE && state <= NM_DEVICE_STATE_ACTIVATED) { - NMConnection *connection = nm_device_get_applied_connection (device); - - g_assert (connection); - if (!teamd_start (self, connection)) { + if (!teamd_start (self)) { nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_TEAMD_CONTROL_FAILED); @@ -538,10 +533,11 @@ teamd_kill (NMDeviceTeam *self, const char *teamd_binary, GError **error) } static gboolean -teamd_start (NMDeviceTeam *self, NMConnection *connection) +teamd_start (NMDeviceTeam *self) { NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (self); const char *iface = nm_device_get_ip_iface (NM_DEVICE (self)); + NMConnection *connection; gs_unref_ptrarray GPtrArray *argv = NULL; gs_free_error GError *error = NULL; gs_free char *tmp_str = NULL; @@ -552,8 +548,13 @@ teamd_start (NMDeviceTeam *self, NMConnection *connection) gs_free char *cloned_mac = NULL; gs_free const char **envp = NULL; + connection = nm_device_get_applied_connection (NM_DEVICE (self)); + s_team = nm_connection_get_setting_team (connection); - g_return_val_if_fail (s_team, FALSE); + if (!s_team) + g_return_val_if_reached (FALSE); + + nm_assert (iface); teamd_binary = nm_utils_find_helper ("teamd", NULL, NULL); if (!teamd_binary) { @@ -651,14 +652,11 @@ act_stage1_prepare (NMDevice *device, NMDeviceStateReason *out_failure_reason) NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (self); gs_free_error GError *error = NULL; NMSettingTeam *s_team; - NMConnection *connection; const char *cfg; - connection = nm_device_get_applied_connection (device); - g_return_val_if_fail (connection, NM_ACT_STAGE_RETURN_FAILURE); - - s_team = nm_connection_get_setting_team (connection); - g_return_val_if_fail (s_team, NM_ACT_STAGE_RETURN_FAILURE); + s_team = nm_device_get_applied_setting (device, NM_TYPE_SETTING_TEAM); + if (!s_team) + g_return_val_if_reached (NM_ACT_STAGE_RETURN_FAILURE); if (priv->tdc) { /* If the existing teamd config is the same as we're about to use, @@ -688,11 +686,10 @@ act_stage1_prepare (NMDevice *device, NMDeviceStateReason *out_failure_reason) if (priv->kill_in_progress) { _LOGT (LOGD_TEAM, "kill in progress, wait before starting teamd"); - priv->connection = g_object_ref (connection); return NM_ACT_STAGE_RETURN_POSTPONE; } - if (!teamd_start (self, connection)) + if (!teamd_start (self)) return NM_ACT_STAGE_RETURN_FAILURE; return NM_ACT_STAGE_RETURN_POSTPONE; @@ -715,7 +712,6 @@ deactivate (NMDevice *device) teamd_kill (self, NULL, NULL); teamd_cleanup (self, TRUE); - g_clear_object (&priv->connection); } static gboolean |