summary refs log tree commit diff
path: root/src/core/devices/nm-device.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/devices/nm-device.c')
-rw-r--r--src/core/devices/nm-device.c231
1 files changed, 113 insertions, 118 deletions
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
index 799aca04..66eba209 100644
--- a/src/core/devices/nm-device.c
+++ b/src/core/devices/nm-device.c
@@ -571,11 +571,11 @@ typedef struct _NMDevicePrivate {
     };
 
     union {
-        const NMDeviceSysIfaceState sys_iface_state;
-        NMDeviceSysIfaceState       sys_iface_state_;
+        const NMDeviceManagedType managed_type;
+        NMDeviceManagedType       managed_type_;
     };
 
-    NMDeviceSysIfaceState sys_iface_state_before_sleep;
+    NMDeviceManagedType managed_type_before_sleep;
 
     bool carrier : 1;
     bool ignore_carrier : 1;
@@ -3357,47 +3357,47 @@ nm_device_create_l3_config_data_from_connection(NMDevice *self, NMConnection *co
 
 /*****************************************************************************/
 
-NMDeviceSysIfaceState
-nm_device_sys_iface_state_get(NMDevice *self)
+NMDeviceManagedType
+nm_device_managed_type_get(NMDevice *self)
 {
-    g_return_val_if_fail(NM_IS_DEVICE(self), NM_DEVICE_SYS_IFACE_STATE_EXTERNAL);
+    g_return_val_if_fail(NM_IS_DEVICE(self), NM_DEVICE_MANAGED_TYPE_EXTERNAL);
 
-    return NM_DEVICE_GET_PRIVATE(self)->sys_iface_state;
+    return NM_DEVICE_GET_PRIVATE(self)->managed_type;
 }
 
 gboolean
-nm_device_sys_iface_state_is_external(NMDevice *self)
+nm_device_managed_type_is_external(NMDevice *self)
 {
-    return NM_IN_SET(nm_device_sys_iface_state_get(self), NM_DEVICE_SYS_IFACE_STATE_EXTERNAL);
+    return NM_IN_SET(nm_device_managed_type_get(self), NM_DEVICE_MANAGED_TYPE_EXTERNAL);
 }
 
 gboolean
-nm_device_sys_iface_state_is_external_or_assume(NMDevice *self)
+nm_device_managed_type_is_external_or_assume(NMDevice *self)
 {
-    return NM_IN_SET(nm_device_sys_iface_state_get(self),
-                     NM_DEVICE_SYS_IFACE_STATE_EXTERNAL,
-                     NM_DEVICE_SYS_IFACE_STATE_ASSUME);
+    return NM_IN_SET(nm_device_managed_type_get(self),
+                     NM_DEVICE_MANAGED_TYPE_EXTERNAL,
+                     NM_DEVICE_MANAGED_TYPE_ASSUME);
 }
 
 void
-nm_device_sys_iface_state_set(NMDevice *self, NMDeviceSysIfaceState sys_iface_state)
+nm_device_managed_type_set(NMDevice *self, NMDeviceManagedType managed_type)
 {
     NMDevicePrivate *priv;
 
     g_return_if_fail(NM_IS_DEVICE(self));
-    g_return_if_fail(NM_IN_SET(sys_iface_state,
-                               NM_DEVICE_SYS_IFACE_STATE_EXTERNAL,
-                               NM_DEVICE_SYS_IFACE_STATE_ASSUME,
-                               NM_DEVICE_SYS_IFACE_STATE_MANAGED,
-                               NM_DEVICE_SYS_IFACE_STATE_REMOVED));
+    g_return_if_fail(NM_IN_SET(managed_type,
+                               NM_DEVICE_MANAGED_TYPE_EXTERNAL,
+                               NM_DEVICE_MANAGED_TYPE_ASSUME,
+                               NM_DEVICE_MANAGED_TYPE_FULL,
+                               NM_DEVICE_MANAGED_TYPE_REMOVED));
 
     priv = NM_DEVICE_GET_PRIVATE(self);
-    if (priv->sys_iface_state != sys_iface_state) {
+    if (priv->managed_type != managed_type) {
         _LOGT(LOGD_DEVICE,
-              "sys-iface-state: %s -> %s",
-              nm_device_sys_iface_state_to_string(priv->sys_iface_state),
-              nm_device_sys_iface_state_to_string(sys_iface_state));
-        priv->sys_iface_state_ = sys_iface_state;
+              "managed-type: %s -> %s",
+              nm_device_managed_type_to_string(priv->managed_type),
+              nm_device_managed_type_to_string(managed_type));
+        priv->managed_type_ = managed_type;
         _dev_l3_cfg_commit_type_reset(self);
         nm_device_l3cfg_commit(self, NM_L3_CFG_COMMIT_TYPE_AUTO, FALSE);
     }
@@ -3406,7 +3406,7 @@ nm_device_sys_iface_state_set(NMDevice *self, NMDeviceSysIfaceState sys_iface_st
      *
      * If you change this, make sure that all callers are fine with such actions. */
 
-    nm_assert(priv->sys_iface_state == sys_iface_state);
+    nm_assert(priv->managed_type == managed_type);
 }
 
 void
@@ -3414,15 +3414,15 @@ nm_device_notify_sleeping(NMDevice *self)
 {
     NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
 
-    priv->sys_iface_state_before_sleep = priv->sys_iface_state;
+    priv->managed_type_before_sleep = priv->managed_type;
 }
 
-NMDeviceSysIfaceState
-nm_device_get_sys_iface_state_before_sleep(NMDevice *self)
+NMDeviceManagedType
+nm_device_get_managed_type_before_sleep(NMDevice *self)
 {
     NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
 
-    return priv->sys_iface_state_before_sleep;
+    return priv->managed_type_before_sleep;
 }
 
 static void
@@ -3820,7 +3820,7 @@ _dev_ip_state_check(NMDevice *self, int addr_family)
         goto got_ip_state;
     }
 
-    if (nm_device_sys_iface_state_is_external(self)) {
+    if (nm_device_managed_type_is_external(self)) {
         ip_state = NM_DEVICE_IP_STATE_READY;
         goto got_ip_state;
     }
@@ -4005,7 +4005,7 @@ got_ip_state:
         /* If both IP states failed, or one failed and the other is disabled
          * then it's a failure. may-fail does not mean that both families may
          * fail, instead it means that at least one family must succeed. */
-        if (nm_device_sys_iface_state_is_external_or_assume(self)) {
+        if (nm_device_managed_type_is_external_or_assume(self)) {
             _dev_ip_state_set_state(self, AF_INET, NM_DEVICE_IP_STATE_READY, "assumed");
             _dev_ip_state_set_state(self, AF_INET6, NM_DEVICE_IP_STATE_READY, "assumed");
             combinedip_state = NM_DEVICE_IP_STATE_READY;
@@ -4458,7 +4458,7 @@ _dev_l3_register_l3cds(NMDevice *self,
     if (!l3cfg)
         return FALSE;
 
-    is_external = nm_device_sys_iface_state_is_external(self);
+    is_external = nm_device_managed_type_is_external(self);
 
     changed = FALSE;
     for (i = 0; i < (int) G_N_ELEMENTS(priv->l3cds); i++) {
@@ -4530,7 +4530,7 @@ update_external_connection(NMDevice *self)
 
     /* Update external connections with configuration from platform */
 
-    if (!nm_device_sys_iface_state_is_external(self))
+    if (!nm_device_managed_type_is_external(self))
         return;
 
     settings_connection = nm_device_get_settings_connection(self);
@@ -4726,17 +4726,17 @@ _dev_l3_cfg_commit_type_reset(NMDevice *self)
     if (!priv->l3cfg)
         return;
 
-    switch (priv->sys_iface_state) {
-    case NM_DEVICE_SYS_IFACE_STATE_EXTERNAL:
-    case NM_DEVICE_SYS_IFACE_STATE_REMOVED:
+    switch (priv->managed_type) {
+    case NM_DEVICE_MANAGED_TYPE_EXTERNAL:
+    case NM_DEVICE_MANAGED_TYPE_REMOVED:
         commit_type = NM_L3_CFG_COMMIT_TYPE_NONE;
         goto do_set;
-    case NM_DEVICE_SYS_IFACE_STATE_ASSUME:
-        /* TODO: NM_DEVICE_SYS_IFACE_STATE_ASSUME, will be dropped from the code.
+    case NM_DEVICE_MANAGED_TYPE_ASSUME:
+        /* TODO: NM_DEVICE_MANAGED_TYPE_ASSUME, will be dropped from the code.
          * Meanwhile, the commit type must be updated. */
         commit_type = NM_L3_CFG_COMMIT_TYPE_UPDATE;
         goto do_set;
-    case NM_DEVICE_SYS_IFACE_STATE_MANAGED:
+    case NM_DEVICE_MANAGED_TYPE_FULL:
         commit_type = NM_L3_CFG_COMMIT_TYPE_UPDATE;
         goto do_set;
     }
@@ -6365,7 +6365,7 @@ concheck_update_state(NMDevice           *self,
 
     _notify(self, IS_IPv4 ? PROP_IP4_CONNECTIVITY : PROP_IP6_CONNECTIVITY);
 
-    if (priv->state == NM_DEVICE_STATE_ACTIVATED && !nm_device_sys_iface_state_is_external(self))
+    if (priv->state == NM_DEVICE_STATE_ACTIVATED && !nm_device_managed_type_is_external(self))
         _dev_l3_register_l3cds(self, priv->l3cfg, TRUE, NM_TERNARY_DEFAULT);
 }
 
@@ -6850,7 +6850,7 @@ nm_device_controller_release_port(NMDevice           *self,
     nm_clear_g_cancellable(&info->cancellable);
 
     /* first, let subclasses handle the release ... */
-    if (info->port_is_attached || nm_device_sys_iface_state_is_external(port)
+    if (info->port_is_attached || nm_device_managed_type_is_external(port)
         || release_type >= RELEASE_PORT_TYPE_CONFIG_FORCE) {
         NMTernary ret;
 
@@ -7286,7 +7286,7 @@ device_update_interface_flags(NMDevice *self, const NMPlatformLink *plink)
 /*
  * Returns the reason for managing a device. The suffix "external" indicates
  * that the reason mainly depends on whether we want to make the device
- * sys-iface-state=external or not.
+ * managed_type=external or not.
  */
 NMDeviceStateReason
 nm_device_get_manage_reason_external(NMDevice *self)
@@ -7294,14 +7294,14 @@ nm_device_get_manage_reason_external(NMDevice *self)
     NMDeviceStateReason reason;
 
     /* By default we return reason NOW_MANAGED, which makes the device fully
-     * managed by NM (sys-iface-state=managed). */
+     * managed by NM (managed_type=managed). */
     reason = NM_DEVICE_STATE_REASON_NOW_MANAGED;
 
     /* If the device is an external-down candidate but no longer has the flag
      * set, then the device is an externally created interface that previously
      * had no addresses or no controller and now has.
      * We need to set CONNECTION_ASSUMED as the reason, so that the device
-     * is managed but is not touched by NM (sys-iface-state=external). */
+     * is managed but is not touched by NM (managed_type=external). */
     if (nm_device_get_unmanaged_mask(self, NM_UNMANAGED_EXTERNAL_DOWN)
         && !nm_device_get_unmanaged_flags(self, NM_UNMANAGED_EXTERNAL_DOWN)) {
         /* user-udev overwrites external-down, so we only assume the device
@@ -7449,7 +7449,7 @@ device_link_changed(gpointer user_data)
          * NMVpnConnection should become like a regular device, akin to NMDevicePpp).
          */
         if (priv->state >= NM_DEVICE_STATE_IP_CONFIG && priv->state <= NM_DEVICE_STATE_ACTIVATED
-            && !nm_device_sys_iface_state_is_external(self))
+            && !nm_device_managed_type_is_external(self))
             nm_device_l3cfg_commit(self, NM_L3_CFG_COMMIT_TYPE_REAPPLY, FALSE);
 
         /* If the device is active without a carrier (probably because it is
@@ -8041,7 +8041,7 @@ realize_start_setup(NMDevice             *self,
 
     _assume_state_set(self, assume_state_guess_assume, assume_state_connection_uuid);
 
-    nm_device_sys_iface_state_set(self, NM_DEVICE_SYS_IFACE_STATE_EXTERNAL);
+    nm_device_managed_type_set(self, NM_DEVICE_MANAGED_TYPE_EXTERNAL);
 
     if (plink)
         nm_device_update_from_platform_link(self, plink);
@@ -8469,9 +8469,9 @@ port_state_changed(NMDevice           *port,
     }
 
     if (release) {
-        configure = (priv->sys_iface_state == NM_DEVICE_SYS_IFACE_STATE_MANAGED
-                     && nm_device_sys_iface_state_get(port) != NM_DEVICE_SYS_IFACE_STATE_EXTERNAL)
-                    || nm_device_sys_iface_state_get(port) == NM_DEVICE_SYS_IFACE_STATE_MANAGED;
+        configure = (priv->managed_type == NM_DEVICE_MANAGED_TYPE_FULL
+                     && nm_device_managed_type_get(port) != NM_DEVICE_MANAGED_TYPE_EXTERNAL)
+                    || nm_device_managed_type_get(port) == NM_DEVICE_MANAGED_TYPE_FULL;
 
         nm_device_controller_release_port(self,
                                           port,
@@ -8610,7 +8610,7 @@ nm_device_controller_release_ports_all(NMDevice *self)
     PortInfo           *safe;
 
     /* Don't release the ports if this connection doesn't belong to NM. */
-    if (nm_device_sys_iface_state_is_external(self))
+    if (nm_device_managed_type_is_external(self))
         return;
 
     reason = priv->state_reason;
@@ -8619,7 +8619,7 @@ nm_device_controller_release_ports_all(NMDevice *self)
 
     c_list_for_each_entry_safe (info, safe, &priv->ports, lst_port) {
         if (priv->activation_state_preserve_external_ports
-            && nm_device_sys_iface_state_is_external(info->port)) {
+            && nm_device_managed_type_is_external(info->port)) {
             _LOGT(LOGD_DEVICE,
                   "controller: preserve external port %s",
                   nm_device_get_iface(info->port));
@@ -8821,9 +8821,9 @@ nm_device_removed(NMDevice *self, gboolean unconfigure_ip_config)
      * commit type NONE, that doesn't emit a l3cd-changed. Do it manually,
      * to ensure that entries are removed from the DNS manager. */
     if (priv->l3cfg
-        && NM_IN_SET(priv->sys_iface_state,
-                     NM_DEVICE_SYS_IFACE_STATE_REMOVED,
-                     NM_DEVICE_SYS_IFACE_STATE_EXTERNAL)) {
+        && NM_IN_SET(priv->managed_type,
+                     NM_DEVICE_MANAGED_TYPE_REMOVED,
+                     NM_DEVICE_MANAGED_TYPE_EXTERNAL)) {
         l3cd_old = nm_l3cfg_get_combined_l3cd(priv->l3cfg, TRUE);
         if (l3cd_old)
             g_signal_emit(self, signals[L3CD_CHANGED], 0, l3cd_old, NULL);
@@ -9937,7 +9937,7 @@ controller_ready(NMDevice *self, NMActiveConnection *active)
     /* If the controller didn't change, add-port only rechecks whether to assume a connection. */
     nm_device_controller_add_port(controller,
                                   self,
-                                  !nm_device_sys_iface_state_is_external_or_assume(self));
+                                  !nm_device_managed_type_is_external_or_assume(self));
 }
 
 static void
@@ -10093,7 +10093,7 @@ activate_stage1_device_prepare(NMDevice *self)
     if (priv->stage1_sriov_state != NM_DEVICE_STAGE_STATE_COMPLETED) {
         NMSettingSriov *s_sriov = NULL;
 
-        if (nm_device_sys_iface_state_is_external_or_assume(self)) {
+        if (nm_device_managed_type_is_external_or_assume(self)) {
             /* pass */
         } else if (priv->stage1_sriov_state == NM_DEVICE_STAGE_STATE_PENDING) {
             return;
@@ -10163,7 +10163,7 @@ activate_stage1_device_prepare(NMDevice *self)
     klass = NM_DEVICE_GET_CLASS(self);
 
     if (klass->act_stage1_prepare_set_hwaddr_ethernet
-        && !nm_device_sys_iface_state_is_external_or_assume(self)) {
+        && !nm_device_managed_type_is_external_or_assume(self)) {
         if (!nm_device_hw_addr_set_cloned(self, nm_device_get_applied_connection(self), FALSE)) {
             nm_device_state_changed(self,
                                     NM_DEVICE_STATE_FAILED,
@@ -10173,7 +10173,7 @@ activate_stage1_device_prepare(NMDevice *self)
     }
 
     if (klass->act_stage1_prepare_also_for_external_or_assume
-        || !nm_device_sys_iface_state_is_external_or_assume(self)) {
+        || !nm_device_managed_type_is_external_or_assume(self)) {
         nm_assert(!klass->act_stage1_prepare_also_for_external_or_assume
                   || klass->act_stage1_prepare);
         if (klass->act_stage1_prepare) {
@@ -10460,12 +10460,12 @@ activate_stage2_device_config(NMDevice *self)
 
     nm_device_state_changed(self, NM_DEVICE_STATE_CONFIG, NM_DEVICE_STATE_REASON_NONE);
 
-    if (!nm_device_sys_iface_state_is_external(self)) {
+    if (!nm_device_managed_type_is_external(self)) {
         _ethtool_state_set(self);
         nm_device_link_properties_set(self, FALSE);
     }
 
-    if (!nm_device_sys_iface_state_is_external(self)) {
+    if (!nm_device_managed_type_is_external(self)) {
         if (!priv->tc_committed && !tc_commit(self)) {
             _LOGW(LOGD_DEVICE, "failed applying traffic control rules");
             nm_device_state_changed(self,
@@ -10478,7 +10478,7 @@ activate_stage2_device_config(NMDevice *self)
 
     _routing_rules_sync(self, NM_TERNARY_TRUE);
 
-    if (!nm_device_sys_iface_state_is_external_or_assume(self)) {
+    if (!nm_device_managed_type_is_external_or_assume(self)) {
         if (!nm_device_bring_up_full(self, FALSE, TRUE, &no_firmware)) {
             nm_device_state_changed(self,
                                     NM_DEVICE_STATE_FAILED,
@@ -10490,7 +10490,7 @@ activate_stage2_device_config(NMDevice *self)
 
     klass = NM_DEVICE_GET_CLASS(self);
     if (klass->act_stage2_config_also_for_external_or_assume
-        || !nm_device_sys_iface_state_is_external_or_assume(self)) {
+        || !nm_device_managed_type_is_external_or_assume(self)) {
         NMDeviceStateReason failure_reason = NM_DEVICE_STATE_REASON_NONE;
 
         ret = klass->act_stage2_config(self, &failure_reason);
@@ -10511,7 +10511,7 @@ activate_stage2_device_config(NMDevice *self)
             nm_device_controller_attach_port(self,
                                              info->port,
                                              nm_device_get_applied_connection(info->port));
-        else if (priv->act_request.obj && nm_device_sys_iface_state_is_external(self)
+        else if (priv->act_request.obj && nm_device_managed_type_is_external(self)
                  && port_state <= NM_DEVICE_STATE_DISCONNECTED)
             nm_device_queue_recheck_assume(info->port);
     }
@@ -11061,7 +11061,7 @@ _dev_ipdhcpx_notify(NMDhcpClient *client, const NMDhcpClientNotifyData *notify_d
                     priv->l3cfg,
                     _dev_l3_config_data_tag_get(priv, L3_CONFIG_DATA_TYPE_DHCP_X(IS_IPv4)),
                     dhcp_l3cd)) {
-                _dev_l3_cfg_commit(self, FALSE);
+                _dev_l3_cfg_commit(self, TRUE);
             }
             goto lease_update_out;
         }
@@ -11136,7 +11136,7 @@ _dev_ipdhcpx_start(NMDevice *self, int addr_family)
         return;
     }
 
-    if (nm_device_sys_iface_state_is_external(self)) {
+    if (nm_device_managed_type_is_external(self)) {
         fail_reason = nm_assert_unreachable_val("cannot run DHCP on external interface");
         goto out_fail;
     }
@@ -11745,7 +11745,7 @@ _dev_ipll6_start(NMDevice *self)
 
     connection = nm_device_get_applied_connection(self);
 
-    assume = nm_device_sys_iface_state_is_external_or_assume(self);
+    assume = nm_device_managed_type_is_external_or_assume(self);
 
     if (_prop_get_ipv6_addr_gen_mode(self) == NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY) {
         NMUtilsStableType stable_type;
@@ -11977,7 +11977,7 @@ _commit_mtu(NMDevice *self)
     if (ifindex <= 0)
         return;
 
-    if (!nm_device_get_applied_connection(self) || nm_device_sys_iface_state_is_external(self)) {
+    if (!nm_device_get_applied_connection(self) || nm_device_managed_type_is_external(self)) {
         /* we don't tamper with the MTU of disconnected and external devices. */
         return;
     }
@@ -12703,7 +12703,7 @@ activate_stage3_ip_config_for_addr_family(NMDevice *self, int addr_family, const
     NMConnection    *connection;
     int              ip_ifindex;
 
-    if (nm_device_sys_iface_state_is_external(self))
+    if (nm_device_managed_type_is_external(self))
         goto out;
 
     connection = nm_device_get_applied_connection(self);
@@ -12940,7 +12940,7 @@ activate_stage3_ip_config(NMDevice *self)
     /* Add the interface to the specified firewall zone */
     switch (priv->fw_state) {
     case FIREWALL_STATE_UNMANAGED:
-        if (nm_device_sys_iface_state_is_external(self)) {
+        if (nm_device_managed_type_is_external(self)) {
             /* fake success */
             priv->fw_state = FIREWALL_STATE_INITIALIZED;
         } else if (ifindex > 0) {
@@ -12970,7 +12970,7 @@ activate_stage3_ip_config(NMDevice *self)
 
     ipv6_method = nm_device_get_effective_ip_config_method(self, AF_INET6);
     if (!g_file_test("/proc/sys/net/ipv6", G_FILE_TEST_IS_DIR)) {
-        _NMLOG_ip((nm_device_sys_iface_state_is_external(self)
+        _NMLOG_ip((nm_device_managed_type_is_external(self)
                    || NM_IN_STRSET(ipv6_method,
                                    NM_SETTING_IP6_CONFIG_METHOD_AUTO,
                                    NM_SETTING_IP6_CONFIG_METHOD_DISABLED,
@@ -13010,7 +13010,7 @@ activate_stage3_ip_config(NMDevice *self)
         nm_device_state_changed(self, NM_DEVICE_STATE_IP_CONFIG, NM_DEVICE_STATE_REASON_NONE);
 
         /* Device should be up before we can do anything with it */
-        if (!nm_device_sys_iface_state_is_external(self) && ifindex > 0
+        if (!nm_device_managed_type_is_external(self) && ifindex > 0
             && !nm_platform_link_is_up(nm_device_get_platform(self), ifindex))
             _LOGW(LOGD_DEVICE,
                   "interface %s not up for IP configuration",
@@ -13026,7 +13026,7 @@ activate_stage3_ip_config(NMDevice *self)
      * let's do it! */
     _commit_mtu(self);
 
-    if (!nm_device_sys_iface_state_is_external(self)
+    if (!nm_device_managed_type_is_external(self)
         && (!klass->ready_for_ip_config || klass->ready_for_ip_config(self, TRUE))) {
         if (priv->ipmanual_data.state_6 == NM_DEVICE_IP_STATE_NONE
             && !NM_IN_STRSET(ipv6_method,
@@ -13042,7 +13042,7 @@ activate_stage3_ip_config(NMDevice *self)
              * IPv6LL if this is not an assumed connection, since assumed connections
              * will already have IPv6 set up.
              */
-            if (!nm_device_sys_iface_state_is_external_or_assume(self))
+            if (!nm_device_managed_type_is_external_or_assume(self))
                 _dev_addrgenmode6_set(self, NM_IN6_ADDR_GEN_MODE_NONE);
 
             /* Re-enable IPv6 on the interface */
@@ -13396,15 +13396,15 @@ act_request_set(NMDevice *self, NMActRequest *act_request)
         case NM_ACTIVATION_TYPE_EXTERNAL:
             break;
         case NM_ACTIVATION_TYPE_ASSUME:
-            if (priv->sys_iface_state == NM_DEVICE_SYS_IFACE_STATE_EXTERNAL)
-                nm_device_sys_iface_state_set(self, NM_DEVICE_SYS_IFACE_STATE_ASSUME);
+            if (priv->managed_type == NM_DEVICE_MANAGED_TYPE_EXTERNAL)
+                nm_device_managed_type_set(self, NM_DEVICE_MANAGED_TYPE_ASSUME);
             break;
         case NM_ACTIVATION_TYPE_MANAGED:
-            if (NM_IN_SET_TYPED(NMDeviceSysIfaceState,
-                                priv->sys_iface_state,
-                                NM_DEVICE_SYS_IFACE_STATE_EXTERNAL,
-                                NM_DEVICE_SYS_IFACE_STATE_ASSUME))
-                nm_device_sys_iface_state_set(self, NM_DEVICE_SYS_IFACE_STATE_MANAGED);
+            if (NM_IN_SET_TYPED(NMDeviceManagedType,
+                                priv->managed_type,
+                                NM_DEVICE_MANAGED_TYPE_EXTERNAL,
+                                NM_DEVICE_MANAGED_TYPE_ASSUME))
+                nm_device_managed_type_set(self, NM_DEVICE_MANAGED_TYPE_FULL);
             break;
         }
     }
@@ -13947,8 +13947,8 @@ reapply_cb(NMDevice              *self,
         return;
     }
 
-    if (nm_device_sys_iface_state_is_external(self))
-        nm_device_sys_iface_state_set(self, NM_DEVICE_SYS_IFACE_STATE_MANAGED);
+    if (nm_device_managed_type_is_external(self))
+        nm_device_managed_type_set(self, NM_DEVICE_MANAGED_TYPE_FULL);
 
     if (!check_and_reapply_connection(self,
                                       connection
@@ -14432,10 +14432,10 @@ nm_device_disconnect_active_connection(NMActiveConnection           *active,
     if (NM_ACTIVE_CONNECTION(priv->act_request.obj) == active) {
         if (priv->state < NM_DEVICE_STATE_DEACTIVATING) {
             /* When the user actively deactivates a profile, we set
-             * the sys-iface-state to managed so that we deconfigure/cleanup the interface.
+             * the managed-type to managed so that we deconfigure/cleanup the interface.
              * But for external connections that go down otherwise, we don't want to touch the interface. */
-            if (nm_device_sys_iface_state_is_external(self))
-                nm_device_sys_iface_state_set(self, NM_DEVICE_SYS_IFACE_STATE_MANAGED);
+            if (nm_device_managed_type_is_external(self))
+                nm_device_managed_type_set(self, NM_DEVICE_MANAGED_TYPE_FULL);
 
             nm_device_state_changed(self, NM_DEVICE_STATE_DEACTIVATING, device_reason);
         } else {
@@ -15702,8 +15702,7 @@ nm_device_update_firewall_zone(NMDevice *self)
 
     priv = NM_DEVICE_GET_PRIVATE(self);
 
-    if (priv->fw_state >= FIREWALL_STATE_INITIALIZED
-        && !nm_device_sys_iface_state_is_external(self))
+    if (priv->fw_state >= FIREWALL_STATE_INITIALIZED && !nm_device_managed_type_is_external(self))
         fw_change_zone(self);
 }
 
@@ -16350,7 +16349,7 @@ _cleanup_generic_pre(NMDevice *self, CleanupType cleanup_type)
     }
 
     if (cleanup_type == CLEANUP_TYPE_DECONFIGURE && priv->fw_state >= FIREWALL_STATE_INITIALIZED
-        && priv->fw_mgr && !nm_device_sys_iface_state_is_external(self)) {
+        && priv->fw_mgr && !nm_device_managed_type_is_external(self)) {
         nm_firewalld_manager_remove_from_zone(priv->fw_mgr,
                                               nm_device_get_ip_iface(self),
                                               NULL,
@@ -16715,7 +16714,7 @@ _set_state_full(NMDevice *self, NMDeviceState state, NMDeviceStateReason reason,
 
     old_state = priv->state;
 
-    if (state == NM_DEVICE_STATE_FAILED && nm_device_sys_iface_state_is_external_or_assume(self)) {
+    if (state == NM_DEVICE_STATE_FAILED && nm_device_managed_type_is_external_or_assume(self)) {
         /* Avoid tearing down assumed connection, assume it's connected */
         state  = NM_DEVICE_STATE_ACTIVATED;
         reason = NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED;
@@ -16728,21 +16727,21 @@ _set_state_full(NMDevice *self, NMDeviceState state, NMDeviceStateReason reason,
     if ((priv->state == state)
         && (state != NM_DEVICE_STATE_UNAVAILABLE || !priv->firmware_missing)) {
         _LOGD(LOGD_DEVICE,
-              "state change: %s -> %s (reason '%s', sys-iface-state: '%s'%s)",
+              "state change: %s -> %s (reason '%s', managed-type: '%s'%s)",
               nm_device_state_to_string(old_state),
               nm_device_state_to_string(state),
               nm_device_state_reason_to_string_a(reason),
-              nm_device_sys_iface_state_to_string(priv->sys_iface_state),
+              nm_device_managed_type_to_string(priv->managed_type),
               priv->firmware_missing ? ", missing firmware" : "");
         return;
     }
 
     _LOGI(LOGD_DEVICE,
-          "state change: %s -> %s (reason '%s', sys-iface-state: '%s')",
+          "state change: %s -> %s (reason '%s', managed-type: '%s')",
           nm_device_state_to_string(old_state),
           nm_device_state_to_string(state),
           nm_device_state_reason_to_string_a(reason),
-          nm_device_sys_iface_state_to_string(priv->sys_iface_state));
+          nm_device_managed_type_to_string(priv->managed_type));
 
     /* in order to prevent triggering any callback caused
      * by the device not having any pending action anymore
@@ -16764,11 +16763,11 @@ _set_state_full(NMDevice *self, NMDeviceState state, NMDeviceStateReason reason,
 
     if (state > NM_DEVICE_STATE_UNMANAGED && state <= NM_DEVICE_STATE_ACTIVATED
         && nm_device_state_reason_check(reason) == NM_DEVICE_STATE_REASON_NOW_MANAGED
-        && NM_IN_SET_TYPED(NMDeviceSysIfaceState,
-                           priv->sys_iface_state,
-                           NM_DEVICE_SYS_IFACE_STATE_EXTERNAL,
-                           NM_DEVICE_SYS_IFACE_STATE_ASSUME))
-        nm_device_sys_iface_state_set(self, NM_DEVICE_SYS_IFACE_STATE_MANAGED);
+        && NM_IN_SET_TYPED(NMDeviceManagedType,
+                           priv->managed_type,
+                           NM_DEVICE_MANAGED_TYPE_EXTERNAL,
+                           NM_DEVICE_MANAGED_TYPE_ASSUME))
+        nm_device_managed_type_set(self, NM_DEVICE_MANAGED_TYPE_FULL);
 
     if (state <= NM_DEVICE_STATE_DISCONNECTED || state >= NM_DEVICE_STATE_ACTIVATED)
         priv->auth_retries = NM_DEVICE_AUTH_RETRIES_UNSET;
@@ -16810,10 +16809,10 @@ _set_state_full(NMDevice *self, NMDeviceState state, NMDeviceStateReason reason,
     case NM_DEVICE_STATE_UNMANAGED:
         nm_device_set_firmware_missing(self, FALSE);
         if (old_state > NM_DEVICE_STATE_UNMANAGED) {
-            if (priv->sys_iface_state != NM_DEVICE_SYS_IFACE_STATE_MANAGED) {
+            if (priv->managed_type != NM_DEVICE_MANAGED_TYPE_FULL) {
                 nm_device_cleanup(self,
                                   reason,
-                                  priv->sys_iface_state == NM_DEVICE_SYS_IFACE_STATE_REMOVED
+                                  priv->managed_type == NM_DEVICE_MANAGED_TYPE_REMOVED
                                       ? CLEANUP_TYPE_REMOVED
                                       : CLEANUP_TYPE_KEEP);
             } else {
@@ -16826,12 +16825,12 @@ _set_state_full(NMDevice *self, NMDeviceState state, NMDeviceStateReason reason,
                 _dev_sysctl_restore_ip6_properties(self);
             }
         }
-        nm_device_sys_iface_state_set(self, NM_DEVICE_SYS_IFACE_STATE_EXTERNAL);
+        nm_device_managed_type_set(self, NM_DEVICE_MANAGED_TYPE_EXTERNAL);
         break;
     case NM_DEVICE_STATE_UNAVAILABLE:
         if (old_state == NM_DEVICE_STATE_UNMANAGED) {
             _dev_sysctl_save_ip6_properties(self);
-            if (priv->sys_iface_state == NM_DEVICE_SYS_IFACE_STATE_MANAGED)
+            if (priv->managed_type == NM_DEVICE_MANAGED_TYPE_FULL)
                 ip6_managed_setup(self);
             device_init_static_sriov_num_vfs(self);
 
@@ -16843,7 +16842,7 @@ _set_state_full(NMDevice *self, NMDeviceState state, NMDeviceStateReason reason,
             carrier_detect_wait(self);
         }
 
-        if (priv->sys_iface_state == NM_DEVICE_SYS_IFACE_STATE_MANAGED) {
+        if (priv->managed_type == NM_DEVICE_MANAGED_TYPE_FULL) {
             if (old_state == NM_DEVICE_STATE_UNMANAGED || priv->firmware_missing) {
                 if (!nm_device_bring_up_full(self, TRUE, FALSE, &no_firmware) && no_firmware)
                     _LOGW(LOGD_PLATFORM, "firmware may be missing.");
@@ -16867,13 +16866,13 @@ _set_state_full(NMDevice *self, NMDeviceState state, NMDeviceStateReason reason,
              * userspace IPv6LL enabled.
              */
             _dev_addrgenmode6_set(self, NM_IN6_ADDR_GEN_MODE_NONE);
-            if (priv->sys_iface_state == NM_DEVICE_SYS_IFACE_STATE_REMOVED) {
+            if (priv->managed_type == NM_DEVICE_MANAGED_TYPE_REMOVED) {
                 nm_device_cleanup(self, reason, CLEANUP_TYPE_REMOVED);
             } else
                 nm_device_cleanup(self, reason, CLEANUP_TYPE_DECONFIGURE);
 
         } else if (old_state < NM_DEVICE_STATE_DISCONNECTED) {
-            if (priv->sys_iface_state == NM_DEVICE_SYS_IFACE_STATE_MANAGED) {
+            if (priv->managed_type == NM_DEVICE_MANAGED_TYPE_FULL) {
                 /* Ensure IPv6 is set up as it may not have been done when
                  * entering the UNAVAILABLE state depending on the reason.
                  */
@@ -16893,10 +16892,6 @@ _set_state_full(NMDevice *self, NMDeviceState state, NMDeviceStateReason reason,
             _cleanup_ip_pre(self, AF_INET6, CLEANUP_TYPE_DECONFIGURE, FALSE);
         }
         break;
-    case NM_DEVICE_STATE_DEACTIVATING:
-        /* If we are now deactivating we should enforce IP cleanup. */
-        _cleanup_ip_pre(self, AF_INET, CLEANUP_TYPE_DECONFIGURE, FALSE);
-        _cleanup_ip_pre(self, AF_INET6, CLEANUP_TYPE_DECONFIGURE, FALSE);
     default:
         break;
     }
@@ -17040,7 +17035,7 @@ _set_state_full(NMDevice *self, NMDeviceState state, NMDeviceStateReason reason,
     {
         gboolean change_zone = FALSE;
 
-        if (!nm_device_sys_iface_state_is_external(self)) {
+        if (!nm_device_managed_type_is_external(self)) {
             if (priv->ip_iface) {
                 /* The device now has a @ip_iface different from the
                  * @iface on which we previously set the zone. */
@@ -18632,14 +18627,14 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
             managed = g_value_get_boolean(value);
             if (managed) {
                 reason = NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED;
-                if (NM_IN_SET_TYPED(NMDeviceSysIfaceState,
-                                    priv->sys_iface_state,
-                                    NM_DEVICE_SYS_IFACE_STATE_EXTERNAL,
-                                    NM_DEVICE_SYS_IFACE_STATE_REMOVED))
-                    nm_device_sys_iface_state_set(self, NM_DEVICE_SYS_IFACE_STATE_ASSUME);
+                if (NM_IN_SET_TYPED(NMDeviceManagedType,
+                                    priv->managed_type,
+                                    NM_DEVICE_MANAGED_TYPE_EXTERNAL,
+                                    NM_DEVICE_MANAGED_TYPE_REMOVED))
+                    nm_device_managed_type_set(self, NM_DEVICE_MANAGED_TYPE_ASSUME);
             } else {
                 reason = NM_DEVICE_STATE_REASON_REMOVED;
-                nm_device_sys_iface_state_set(self, NM_DEVICE_SYS_IFACE_STATE_REMOVED);
+                nm_device_managed_type_set(self, NM_DEVICE_MANAGED_TYPE_REMOVED);
             }
             nm_device_set_unmanaged_by_flags(self, NM_UNMANAGED_USER_EXPLICIT, !managed, reason);
         }
@@ -18727,10 +18722,10 @@ nm_device_init(NMDevice *self)
     priv->available_connections = g_hash_table_new_full(nm_direct_hash, NULL, g_object_unref, NULL);
     priv->ip6_saved_properties  = g_hash_table_new_full(nm_str_hash, g_str_equal, NULL, g_free);
 
-    priv->sys_iface_state_ = NM_DEVICE_SYS_IFACE_STATE_EXTERNAL;
+    priv->managed_type_ = NM_DEVICE_MANAGED_TYPE_EXTERNAL;
     /* If networking is already disabled at boot, we want to manage all devices
      * after re-enabling networking; hence, the initial state is MANAGED. */
-    priv->sys_iface_state_before_sleep = NM_DEVICE_SYS_IFACE_STATE_MANAGED;
+    priv->managed_type_before_sleep = NM_DEVICE_MANAGED_TYPE_FULL;
 
     priv->promisc_reset = NM_OPTION_BOOL_DEFAULT;
 }