mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-25 02:30:08 +01:00
device: consider external devices as unmanaged until they have an IP address
This commit is contained in:
parent
207c0f5f81
commit
e1edcda317
1 changed files with 13 additions and 3 deletions
|
|
@ -1210,20 +1210,26 @@ is_unmanaged_external_down (NMDevice *self, gboolean consider_can)
|
|||
|
||||
/* Manage externally-created software interfaces only when they are IFF_UP */
|
||||
if ( priv->ifindex <= 0
|
||||
|| !priv->up)
|
||||
|| !priv->up
|
||||
|| !nm_platform_link_can_assume (NM_PLATFORM_GET, priv->ifindex))
|
||||
return NM_UNMAN_FLAG_OP_SET_UNMANAGED;
|
||||
|
||||
return NM_UNMAN_FLAG_OP_SET_MANAGED;
|
||||
}
|
||||
|
||||
static void
|
||||
set_unmanaged_external_down (NMDevice *self)
|
||||
set_unmanaged_external_down (NMDevice *self, gboolean only_if_unmanaged)
|
||||
{
|
||||
NMUnmanFlagOp ext_flags;
|
||||
|
||||
if (!nm_device_get_unmanaged_mask (self, NM_UNMANAGED_EXTERNAL_DOWN))
|
||||
return;
|
||||
|
||||
if (only_if_unmanaged) {
|
||||
if (!nm_device_get_unmanaged_flags (self, NM_UNMANAGED_EXTERNAL_DOWN))
|
||||
return;
|
||||
}
|
||||
|
||||
ext_flags = is_unmanaged_external_down (self, FALSE);
|
||||
if (ext_flags != NM_UNMAN_FLAG_OP_SET_UNMANAGED) {
|
||||
/* Ensure the assume check is queued before any queued state changes
|
||||
|
|
@ -1562,7 +1568,7 @@ device_link_changed (NMDevice *self)
|
|||
nm_device_set_unmanaged_by_flags (self, NM_UNMANAGED_PLATFORM_INIT, FALSE, reason);
|
||||
}
|
||||
|
||||
set_unmanaged_external_down (self);
|
||||
set_unmanaged_external_down (self, FALSE);
|
||||
|
||||
device_recheck_slave_status (self, &info);
|
||||
return G_SOURCE_REMOVE;
|
||||
|
|
@ -8879,6 +8885,8 @@ queued_ip4_config_change (gpointer user_data)
|
|||
update_ip4_config (self, FALSE);
|
||||
g_object_unref (self);
|
||||
|
||||
set_unmanaged_external_down (self, TRUE);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -8933,6 +8941,8 @@ queued_ip6_config_change (gpointer user_data)
|
|||
|
||||
g_object_unref (self);
|
||||
|
||||
set_unmanaged_external_down (self, TRUE);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue