mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-27 07:00:09 +01:00
device: add debug log for setting unmanged flags
Only set priv->unmanaged_flags in one place and log any changes. It is not trivial to understand from the logfile why a device is unmanged.
This commit is contained in:
parent
b89826d874
commit
4dd0b69a88
2 changed files with 54 additions and 12 deletions
|
|
@ -125,7 +125,22 @@ nm_device_generic_new (NMPlatformLink *plink)
|
|||
static void
|
||||
nm_device_generic_init (NMDeviceGeneric *self)
|
||||
{
|
||||
nm_device_set_initial_unmanaged_flag (NM_DEVICE (self), NM_UNMANAGED_DEFAULT, TRUE);
|
||||
}
|
||||
|
||||
static GObject *
|
||||
constructor (GType type,
|
||||
guint n_construct_params,
|
||||
GObjectConstructParam *construct_params)
|
||||
{
|
||||
GObject *object;
|
||||
|
||||
object = G_OBJECT_CLASS (nm_device_generic_parent_class)->constructor (type,
|
||||
n_construct_params,
|
||||
construct_params);
|
||||
|
||||
nm_device_set_initial_unmanaged_flag (NM_DEVICE (object), NM_UNMANAGED_DEFAULT, TRUE);
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -183,6 +198,7 @@ nm_device_generic_class_init (NMDeviceGenericClass *klass)
|
|||
|
||||
parent_class->connection_type = NM_SETTING_GENERIC_SETTING_NAME;
|
||||
|
||||
object_class->constructor = constructor;
|
||||
object_class->dispose = dispose;
|
||||
object_class->get_property = get_property;
|
||||
object_class->set_property = set_property;
|
||||
|
|
|
|||
|
|
@ -384,6 +384,10 @@ static void nm_device_update_hw_address (NMDevice *self);
|
|||
static gboolean queued_ip4_config_change (gpointer user_data);
|
||||
static gboolean queued_ip6_config_change (gpointer user_data);
|
||||
|
||||
static void _set_unmanaged_flags (NMDevice *self,
|
||||
NMUnmanagedFlags flags,
|
||||
gboolean unmanaged);
|
||||
|
||||
/***********************************************************/
|
||||
|
||||
#define QUEUED_PREFIX "queued state change to "
|
||||
|
|
@ -1448,7 +1452,7 @@ device_link_changed (NMDevice *self)
|
|||
* state higher than UNAVAILABLE, it is already IFF_UP
|
||||
* or an explicit activation request was received.
|
||||
*/
|
||||
priv->unmanaged_flags &= ~NM_UNMANAGED_EXTERNAL_DOWN;
|
||||
_set_unmanaged_flags (self, NM_UNMANAGED_EXTERNAL_DOWN, FALSE);
|
||||
}
|
||||
} else if (!external_down && !NM_FLAGS_HAS (info.flags, IFF_UP) && nm_device_get_state (self) <= NM_DEVICE_STATE_DISCONNECTED) {
|
||||
/* If the device is already disconnected and is set !IFF_UP,
|
||||
|
|
@ -7668,8 +7672,8 @@ nm_device_get_managed (NMDevice *self)
|
|||
* default-unmanaged flag (eg, only NM_UNMANAGED_DEFAULT is set) then
|
||||
* the device is managed whenever it's not in the UNMANAGED state.
|
||||
*/
|
||||
managed = !(priv->unmanaged_flags & ~NM_UNMANAGED_DEFAULT);
|
||||
if (managed && (priv->unmanaged_flags & NM_UNMANAGED_DEFAULT))
|
||||
managed = !NM_FLAGS_ANY (priv->unmanaged_flags, ~NM_UNMANAGED_DEFAULT);
|
||||
if (managed && NM_FLAGS_HAS (priv->unmanaged_flags, NM_UNMANAGED_DEFAULT))
|
||||
managed = (priv->state > NM_DEVICE_STATE_UNMANAGED);
|
||||
|
||||
return managed;
|
||||
|
|
@ -7699,6 +7703,34 @@ nm_device_get_default_unmanaged (NMDevice *self)
|
|||
return nm_device_get_unmanaged_flag (self, NM_UNMANAGED_DEFAULT);
|
||||
}
|
||||
|
||||
static void
|
||||
_set_unmanaged_flags (NMDevice *self,
|
||||
NMUnmanagedFlags flags,
|
||||
gboolean unmanaged)
|
||||
{
|
||||
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
|
||||
|
||||
if (unmanaged) {
|
||||
if (!NM_FLAGS_ALL (priv->unmanaged_flags, flags)) {
|
||||
_LOGD (LOGD_DEVICE, "unmanaged: flags set to 0x%0llx (was 0x%0llx, %s 0x%0llx)",
|
||||
(long long unsigned) (priv->unmanaged_flags | flags),
|
||||
(long long unsigned) priv->unmanaged_flags,
|
||||
"set",
|
||||
(long long unsigned) (~priv->unmanaged_flags & flags));
|
||||
priv->unmanaged_flags |= flags;
|
||||
}
|
||||
} else {
|
||||
if (NM_FLAGS_ANY (priv->unmanaged_flags, flags)) {
|
||||
_LOGD (LOGD_DEVICE, "unmanaged: flags set to 0x%0llx (was 0x%0llx, %s 0x%0llx)",
|
||||
(long long unsigned) (priv->unmanaged_flags & (~flags)),
|
||||
(long long unsigned) priv->unmanaged_flags,
|
||||
"clear",
|
||||
(long long unsigned) (priv->unmanaged_flags & flags));
|
||||
priv->unmanaged_flags &= ~flags;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nm_device_set_unmanaged (NMDevice *self,
|
||||
NMUnmanagedFlags flag,
|
||||
|
|
@ -7714,10 +7746,7 @@ nm_device_set_unmanaged (NMDevice *self,
|
|||
priv = NM_DEVICE_GET_PRIVATE (self);
|
||||
|
||||
was_managed = nm_device_get_managed (self);
|
||||
if (unmanaged)
|
||||
priv->unmanaged_flags |= flag;
|
||||
else
|
||||
priv->unmanaged_flags &= ~flag;
|
||||
_set_unmanaged_flags (self, flag, unmanaged);
|
||||
now_managed = nm_device_get_managed (self);
|
||||
|
||||
if (was_managed != now_managed) {
|
||||
|
|
@ -7770,10 +7799,7 @@ nm_device_set_initial_unmanaged_flag (NMDevice *self,
|
|||
priv = NM_DEVICE_GET_PRIVATE (self);
|
||||
g_return_if_fail (priv->initialized == FALSE);
|
||||
|
||||
if (unmanaged)
|
||||
priv->unmanaged_flags |= flag;
|
||||
else
|
||||
priv->unmanaged_flags &= ~flag;
|
||||
_set_unmanaged_flags (self, flag, unmanaged);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue