summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-10-29 17:14:32 +0100
committerThomas Haller <thaller@redhat.com>2020-10-30 16:52:55 +0100
commit101b031807f256533e769aa796d00c675618e375 (patch)
tree93c2e52446d351de4a90847ae44b1262eb2e55ad
parent85a60f9d538016ac7ad76c7bdebb68a6a3f39de5 (diff)
downloadNetworkManager-101b031807f256533e769aa796d00c675618e375.tar.gz
device: merge nm_device_activate_stage3_ip[46]_start()
-rw-r--r--src/devices/nm-device-private.h12
-rw-r--r--src/devices/nm-device.c131
2 files changed, 46 insertions, 97 deletions
diff --git a/src/devices/nm-device-private.h b/src/devices/nm-device-private.h
index 054197e0c3..dbf5105a08 100644
--- a/src/devices/nm-device-private.h
+++ b/src/devices/nm-device-private.h
@@ -54,17 +54,7 @@ gboolean nm_device_set_ip_iface(NMDevice *self, const char *iface);
void nm_device_activate_schedule_stage3_ip_config_start(NMDevice *device);
-gboolean nm_device_activate_stage3_ip4_start(NMDevice *self);
-
-gboolean nm_device_activate_stage3_ip6_start(NMDevice *self);
-
-static inline gboolean
-nm_device_activate_stage3_ip_start(NMDevice *self, int addr_family)
-{
- if (NM_IS_IPv4(addr_family))
- return nm_device_activate_stage3_ip4_start(self);
- return nm_device_activate_stage3_ip6_start(self);
-}
+gboolean nm_device_activate_stage3_ip_start(NMDevice *self, int addr_family);
gboolean nm_device_bring_up(NMDevice *self, gboolean wait, gboolean *no_firmware);
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index aa3071cfb1..453a2c3bac 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -4653,10 +4653,10 @@ nm_device_master_enslave_slave(NMDevice *self, NMDevice *slave, NMConnection *co
*/
if (success) {
if (priv->ip_state_4 == NM_DEVICE_IP_STATE_WAIT)
- nm_device_activate_stage3_ip4_start(self);
+ nm_device_activate_stage3_ip_start(self, AF_INET);
if (priv->ip_state_6 == NM_DEVICE_IP_STATE_WAIT)
- nm_device_activate_stage3_ip6_start(self);
+ nm_device_activate_stage3_ip_start(self, AF_INET6);
}
/* Since slave devices don't have their own IP configuration,
@@ -4887,9 +4887,9 @@ carrier_changed(NMDevice *self, gboolean carrier)
/* If needed, also resume IP configuration that is
* waiting for carrier. */
if (nm_device_activate_ip4_state_in_wait(self))
- nm_device_activate_stage3_ip4_start(self);
+ nm_device_activate_stage3_ip_start(self, AF_INET);
if (nm_device_activate_ip6_state_in_wait(self))
- nm_device_activate_stage3_ip6_start(self);
+ nm_device_activate_stage3_ip_start(self, AF_INET6);
return;
}
/* fall-through and change state of device */
@@ -11200,103 +11200,62 @@ act_stage3_ip_config_start(NMDevice * self,
}
}
-/**
- * nm_device_activate_stage3_ip4_start:
- * @self: the device
- *
- * Try starting IPv4 configuration.
- */
gboolean
-nm_device_activate_stage3_ip4_start(NMDevice *self)
+nm_device_activate_stage3_ip_start(NMDevice *self, int addr_family)
{
- NMDevicePrivate * priv = NM_DEVICE_GET_PRIVATE(self);
+ const int IS_IPv4 = NM_IS_IPv4(addr_family);
+ NMDevicePrivate * priv = NM_DEVICE_GET_PRIVATE(self);
NMActStageReturn ret;
- NMDeviceStateReason failure_reason = NM_DEVICE_STATE_REASON_NONE;
- gs_unref_object NMIP4Config *ip4_config = NULL;
+ NMDeviceStateReason failure_reason = NM_DEVICE_STATE_REASON_NONE;
+ gs_unref_object NMIPConfig *ip_config = NULL;
- g_assert(priv->ip_state_4 == NM_DEVICE_IP_STATE_WAIT);
+ g_assert(priv->ip_state_x[IS_IPv4] == NM_DEVICE_IP_STATE_WAIT);
if (nm_device_sys_iface_state_is_external(self)) {
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_DONE);
+ _set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_DONE);
check_ip_state(self, FALSE, TRUE);
return TRUE;
}
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_CONF);
- ret = NM_DEVICE_GET_CLASS(self)->act_stage3_ip_config_start(self,
- AF_INET,
- (gpointer *) &ip4_config,
- &failure_reason);
- if (ret == NM_ACT_STAGE_RETURN_SUCCESS)
- nm_device_activate_schedule_ip_config_result(self, AF_INET, NM_IP_CONFIG_CAST(ip4_config));
- else if (ret == NM_ACT_STAGE_RETURN_IP_DONE) {
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_DONE);
- check_ip_state(self, FALSE, TRUE);
- } else if (ret == NM_ACT_STAGE_RETURN_FAILURE) {
- nm_device_state_changed(self, NM_DEVICE_STATE_FAILED, failure_reason);
- return FALSE;
- } else if (ret == NM_ACT_STAGE_RETURN_IP_FAIL) {
- /* Activation not wanted */
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_FAIL);
- } else if (ret == NM_ACT_STAGE_RETURN_IP_WAIT) {
- /* Wait for something to try IP config again */
- _set_ip_state(self, AF_INET, NM_DEVICE_IP_STATE_WAIT);
- } else
- g_assert(ret == NM_ACT_STAGE_RETURN_POSTPONE);
-
- return TRUE;
-}
+ _set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_CONF);
-/**
- * nm_device_activate_stage3_ip6_start:
- * @self: the device
- *
- * Try starting IPv6 configuration.
- */
-gboolean
-nm_device_activate_stage3_ip6_start(NMDevice *self)
-{
- NMDevicePrivate * priv = NM_DEVICE_GET_PRIVATE(self);
- NMActStageReturn ret;
- NMDeviceStateReason failure_reason = NM_DEVICE_STATE_REASON_NONE;
- gs_unref_object NMIP6Config *ip6_config = NULL;
-
- g_assert(priv->ip_state_6 == NM_DEVICE_IP_STATE_WAIT);
-
- if (nm_device_sys_iface_state_is_external(self)) {
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_DONE);
- check_ip_state(self, FALSE, TRUE);
- return TRUE;
- }
-
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_CONF);
ret = NM_DEVICE_GET_CLASS(self)->act_stage3_ip_config_start(self,
- AF_INET6,
- (gpointer *) &ip6_config,
+ addr_family,
+ (gpointer *) &ip_config,
&failure_reason);
- if (ret == NM_ACT_STAGE_RETURN_SUCCESS) {
- if (!ip6_config)
- ip6_config = nm_device_ip6_config_new(self);
- /* Here we get a static IPv6 config, like for Shared where it's
- * autogenerated or from modems where it comes from ModemManager.
- */
- nm_assert(!applied_config_get_current(&priv->ac_ip6_config));
- applied_config_init(&priv->ac_ip6_config, ip6_config);
- nm_device_activate_schedule_ip_config_result(self, AF_INET6, NULL);
- } else if (ret == NM_ACT_STAGE_RETURN_IP_DONE) {
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_DONE);
+
+ switch (ret) {
+ case NM_ACT_STAGE_RETURN_SUCCESS:
+ if (!IS_IPv4) {
+ /* Here we get a static IPv6 config, like for Shared where it's
+ * autogenerated or from modems where it comes from ModemManager.
+ */
+ if (!ip_config)
+ ip_config = nm_device_ip_config_new(self, addr_family);
+ nm_assert(!applied_config_get_current(&priv->ac_ip6_config));
+ applied_config_init(&priv->ac_ip6_config, ip_config);
+ ip_config = NULL;
+ }
+ nm_device_activate_schedule_ip_config_result(self, addr_family, ip_config);
+ break;
+ case NM_ACT_STAGE_RETURN_IP_DONE:
+ _set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_DONE);
check_ip_state(self, FALSE, TRUE);
- } else if (ret == NM_ACT_STAGE_RETURN_FAILURE) {
+ break;
+ case NM_ACT_STAGE_RETURN_FAILURE:
nm_device_state_changed(self, NM_DEVICE_STATE_FAILED, failure_reason);
return FALSE;
- } else if (ret == NM_ACT_STAGE_RETURN_IP_FAIL) {
+ case NM_ACT_STAGE_RETURN_IP_FAIL:
/* Activation not wanted */
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_FAIL);
- } else if (ret == NM_ACT_STAGE_RETURN_IP_WAIT) {
+ _set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_FAIL);
+ break;
+ case NM_ACT_STAGE_RETURN_IP_WAIT:
/* Wait for something to try IP config again */
- _set_ip_state(self, AF_INET6, NM_DEVICE_IP_STATE_WAIT);
- } else
+ _set_ip_state(self, addr_family, NM_DEVICE_IP_STATE_WAIT);
+ break;
+ default:
g_assert(ret == NM_ACT_STAGE_RETURN_POSTPONE);
+ }
return TRUE;
}
@@ -11326,12 +11285,12 @@ activate_stage3_ip_config_start(NMDevice *self)
"interface %s not up for IP configuration",
nm_device_get_ip_iface(self));
- /* IPv4 */
- if (nm_device_activate_ip4_state_in_wait(self) && !nm_device_activate_stage3_ip4_start(self))
+ if (nm_device_activate_ip4_state_in_wait(self)
+ && !nm_device_activate_stage3_ip_start(self, AF_INET))
return;
- /* IPv6 */
- if (nm_device_activate_ip6_state_in_wait(self) && !nm_device_activate_stage3_ip6_start(self))
+ if (nm_device_activate_ip6_state_in_wait(self)
+ && !nm_device_activate_stage3_ip_start(self, AF_INET6))
return;
/* Proxy */