mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-10 09:20:20 +01:00
device: remove the unmanaged inheritance from the parent for macsec devices
This commit is part of a broader change that eliminates inheriting the unmanaged condition from the parent of a device, for all device types: https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1418 What motivates this change are the unncessary issues brought by this inheritance. You can see some problems described here: https://bugzilla.redhat.com/show_bug.cgi?id=2110307#c0.
This commit is contained in:
parent
f1a79e97ea
commit
66857bafe8
1 changed files with 1 additions and 36 deletions
|
|
@ -45,7 +45,6 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMDeviceMacsec,
|
|||
|
||||
typedef struct {
|
||||
NMPlatformLnkMacsec props;
|
||||
gulong parent_state_id;
|
||||
gulong parent_mtu_id;
|
||||
|
||||
struct {
|
||||
|
|
@ -91,25 +90,6 @@ static NM_UTILS_LOOKUP_STR_DEFINE(validation_mode_to_string,
|
|||
NM_UTILS_LOOKUP_STR_ITEM(1, "check"),
|
||||
NM_UTILS_LOOKUP_STR_ITEM(2, "strict"), );
|
||||
|
||||
static void
|
||||
parent_state_changed(NMDevice *parent,
|
||||
NMDeviceState new_state,
|
||||
NMDeviceState old_state,
|
||||
NMDeviceStateReason reason,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMDeviceMacsec *self = NM_DEVICE_MACSEC(user_data);
|
||||
|
||||
/* We'll react to our own carrier state notifications. Ignore the parent's. */
|
||||
if (nm_device_state_reason_check(reason) == NM_DEVICE_STATE_REASON_CARRIER)
|
||||
return;
|
||||
|
||||
nm_device_set_unmanaged_by_flags(NM_DEVICE(self),
|
||||
NM_UNMANAGED_PARENT,
|
||||
!nm_device_get_managed(parent, FALSE),
|
||||
reason);
|
||||
}
|
||||
|
||||
static void
|
||||
parent_mtu_maybe_changed(NMDevice *parent, GParamSpec *pspec, gpointer user_data)
|
||||
{
|
||||
|
|
@ -132,27 +112,13 @@ parent_changed_notify(NMDevice *device,
|
|||
NM_DEVICE_CLASS(nm_device_macsec_parent_class)
|
||||
->parent_changed_notify(device, old_ifindex, old_parent, new_ifindex, new_parent);
|
||||
|
||||
/* note that @self doesn't have to clear @parent_state_id on dispose,
|
||||
* because NMDevice's dispose() will unset the parent, which in turn calls
|
||||
* parent_changed_notify(). */
|
||||
nm_clear_g_signal_handler(old_parent, &priv->parent_state_id);
|
||||
nm_clear_g_signal_handler(old_parent, &priv->parent_mtu_id);
|
||||
|
||||
if (new_parent) {
|
||||
priv->parent_state_id = g_signal_connect(new_parent,
|
||||
NM_DEVICE_STATE_CHANGED,
|
||||
G_CALLBACK(parent_state_changed),
|
||||
device);
|
||||
priv->parent_mtu_id = g_signal_connect(new_parent,
|
||||
priv->parent_mtu_id = g_signal_connect(new_parent,
|
||||
"notify::" NM_DEVICE_MTU,
|
||||
G_CALLBACK(parent_mtu_maybe_changed),
|
||||
device);
|
||||
|
||||
/* Set parent-dependent unmanaged flag */
|
||||
nm_device_set_unmanaged_by_flags(device,
|
||||
NM_UNMANAGED_PARENT,
|
||||
!nm_device_get_managed(new_parent, FALSE),
|
||||
NM_DEVICE_STATE_REASON_PARENT_MANAGED_CHANGED);
|
||||
}
|
||||
|
||||
/* Recheck availability now that the parent has changed */
|
||||
|
|
@ -863,7 +829,6 @@ dispose(GObject *object)
|
|||
|
||||
G_OBJECT_CLASS(nm_device_macsec_parent_class)->dispose(object);
|
||||
|
||||
nm_assert(NM_DEVICE_MACSEC_GET_PRIVATE(self)->parent_state_id == 0);
|
||||
nm_assert(NM_DEVICE_MACSEC_GET_PRIVATE(self)->parent_mtu_id == 0);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue