mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-20 09:20:04 +01:00
core: drop NMDevice master and introduce controller
The master property for NMDevice is internal only therefore we can replace it directly with controller. In addition, I have adapted related functions to use controller instead of master. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1881
This commit is contained in:
parent
e1a1f0de89
commit
1f05526ed7
10 changed files with 119 additions and 114 deletions
|
|
@ -922,7 +922,7 @@ deactivate(NMDevice *device)
|
||||||
static void
|
static void
|
||||||
nm_device_bond_init(NMDeviceBond *self)
|
nm_device_bond_init(NMDeviceBond *self)
|
||||||
{
|
{
|
||||||
nm_assert(nm_device_is_master(NM_DEVICE(self)));
|
nm_assert(nm_device_is_controller(NM_DEVICE(self)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static const NMDBusInterfaceInfoExtended interface_info_device_bond = {
|
static const NMDBusInterfaceInfoExtended interface_info_device_bond = {
|
||||||
|
|
@ -958,7 +958,7 @@ nm_device_bond_class_init(NMDeviceBondClass *klass)
|
||||||
device_class->connection_type_check_compatible = NM_SETTING_BOND_SETTING_NAME;
|
device_class->connection_type_check_compatible = NM_SETTING_BOND_SETTING_NAME;
|
||||||
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES(NM_LINK_TYPE_BOND);
|
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES(NM_LINK_TYPE_BOND);
|
||||||
|
|
||||||
device_class->is_master = TRUE;
|
device_class->is_controller = TRUE;
|
||||||
device_class->get_generic_capabilities = get_generic_capabilities;
|
device_class->get_generic_capabilities = get_generic_capabilities;
|
||||||
device_class->complete_connection = complete_connection;
|
device_class->complete_connection = complete_connection;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1159,7 +1159,7 @@ reapply_connection(NMDevice *device, NMConnection *con_old, NMConnection *con_ne
|
||||||
static void
|
static void
|
||||||
nm_device_bridge_init(NMDeviceBridge *self)
|
nm_device_bridge_init(NMDeviceBridge *self)
|
||||||
{
|
{
|
||||||
nm_assert(nm_device_is_master(NM_DEVICE(self)));
|
nm_assert(nm_device_is_controller(NM_DEVICE(self)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static const NMDBusInterfaceInfoExtended interface_info_device_bridge = {
|
static const NMDBusInterfaceInfoExtended interface_info_device_bridge = {
|
||||||
|
|
@ -1194,7 +1194,7 @@ nm_device_bridge_class_init(NMDeviceBridgeClass *klass)
|
||||||
device_class->connection_type_supported = NM_SETTING_BRIDGE_SETTING_NAME;
|
device_class->connection_type_supported = NM_SETTING_BRIDGE_SETTING_NAME;
|
||||||
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES(NM_LINK_TYPE_BRIDGE);
|
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES(NM_LINK_TYPE_BRIDGE);
|
||||||
|
|
||||||
device_class->is_master = TRUE;
|
device_class->is_controller = TRUE;
|
||||||
device_class->mtu_force_set = TRUE;
|
device_class->mtu_force_set = TRUE;
|
||||||
device_class->get_generic_capabilities = get_generic_capabilities;
|
device_class->get_generic_capabilities = get_generic_capabilities;
|
||||||
device_class->check_connection_compatible = check_connection_compatible;
|
device_class->check_connection_compatible = check_connection_compatible;
|
||||||
|
|
|
||||||
|
|
@ -329,7 +329,7 @@ nm_device_vrf_class_init(NMDeviceVrfClass *klass)
|
||||||
|
|
||||||
device_class->connection_type_supported = NM_SETTING_VRF_SETTING_NAME;
|
device_class->connection_type_supported = NM_SETTING_VRF_SETTING_NAME;
|
||||||
device_class->connection_type_check_compatible = NM_SETTING_VRF_SETTING_NAME;
|
device_class->connection_type_check_compatible = NM_SETTING_VRF_SETTING_NAME;
|
||||||
device_class->is_master = TRUE;
|
device_class->is_controller = TRUE;
|
||||||
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES(NM_LINK_TYPE_VRF);
|
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES(NM_LINK_TYPE_VRF);
|
||||||
|
|
||||||
device_class->attach_port = attach_port;
|
device_class->attach_port = attach_port;
|
||||||
|
|
|
||||||
|
|
@ -371,7 +371,6 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMDevice,
|
||||||
PROP_IFINDEX,
|
PROP_IFINDEX,
|
||||||
PROP_AVAILABLE_CONNECTIONS,
|
PROP_AVAILABLE_CONNECTIONS,
|
||||||
PROP_PHYSICAL_PORT_ID,
|
PROP_PHYSICAL_PORT_ID,
|
||||||
PROP_MASTER,
|
|
||||||
PROP_PARENT,
|
PROP_PARENT,
|
||||||
PROP_HW_ADDRESS,
|
PROP_HW_ADDRESS,
|
||||||
PROP_PERM_HW_ADDRESS,
|
PROP_PERM_HW_ADDRESS,
|
||||||
|
|
@ -386,7 +385,8 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMDevice,
|
||||||
PROP_IP4_CONNECTIVITY,
|
PROP_IP4_CONNECTIVITY,
|
||||||
PROP_IP6_CONNECTIVITY,
|
PROP_IP6_CONNECTIVITY,
|
||||||
PROP_INTERFACE_FLAGS,
|
PROP_INTERFACE_FLAGS,
|
||||||
PROP_PORTS, );
|
PROP_PORTS,
|
||||||
|
PROP_CONTROLLER, );
|
||||||
|
|
||||||
typedef struct _NMDevicePrivate {
|
typedef struct _NMDevicePrivate {
|
||||||
guint device_link_changed_id;
|
guint device_link_changed_id;
|
||||||
|
|
@ -707,10 +707,10 @@ typedef struct _NMDevicePrivate {
|
||||||
NMPlatformLinkChangeFlags flags;
|
NMPlatformLinkChangeFlags flags;
|
||||||
} link_props_state;
|
} link_props_state;
|
||||||
|
|
||||||
/* master interface for bridge/bond/team slave */
|
/* controller interface for bridge/bond/team slave */
|
||||||
NMDevice *master;
|
NMDevice *controller;
|
||||||
gulong master_ready_id;
|
gulong controller_ready_id;
|
||||||
int master_ifindex;
|
int controller_ifindex;
|
||||||
|
|
||||||
/* slave management */
|
/* slave management */
|
||||||
CList slaves; /* list of SlaveInfo */
|
CList slaves; /* list of SlaveInfo */
|
||||||
|
|
@ -1523,11 +1523,12 @@ _prop_get_ipvx_route_table(NMDevice *self, int addr_family)
|
||||||
if (route_table == 0u && connection
|
if (route_table == 0u && connection
|
||||||
&& (s_con = nm_connection_get_setting_connection(connection))
|
&& (s_con = nm_connection_get_setting_connection(connection))
|
||||||
&& (nm_streq0(nm_setting_connection_get_port_type(s_con), NM_SETTING_VRF_SETTING_NAME)
|
&& (nm_streq0(nm_setting_connection_get_port_type(s_con), NM_SETTING_VRF_SETTING_NAME)
|
||||||
&& priv->master && nm_device_get_device_type(priv->master) == NM_DEVICE_TYPE_VRF)) {
|
&& priv->controller
|
||||||
|
&& nm_device_get_device_type(priv->controller) == NM_DEVICE_TYPE_VRF)) {
|
||||||
const NMPlatformLnkVrf *lnk;
|
const NMPlatformLnkVrf *lnk;
|
||||||
|
|
||||||
lnk = nm_platform_link_get_lnk_vrf(nm_device_get_platform(self),
|
lnk = nm_platform_link_get_lnk_vrf(nm_device_get_platform(self),
|
||||||
nm_device_get_ifindex(priv->master),
|
nm_device_get_ifindex(priv->controller),
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (lnk)
|
if (lnk)
|
||||||
|
|
@ -6677,13 +6678,13 @@ static void
|
||||||
detach_port_cb(NMDevice *self, GError *error, gpointer user_data)
|
detach_port_cb(NMDevice *self, GError *error, gpointer user_data)
|
||||||
{
|
{
|
||||||
nm_auto_unref_object NMDevice *slave = user_data;
|
nm_auto_unref_object NMDevice *slave = user_data;
|
||||||
NMDevicePrivate *slave_priv = NM_DEVICE_GET_PRIVATE(slave);
|
NMDevicePrivate *port_priv = NM_DEVICE_GET_PRIVATE(slave);
|
||||||
|
|
||||||
nm_assert(slave_priv->port_detach_count > 0);
|
nm_assert(port_priv->port_detach_count > 0);
|
||||||
|
|
||||||
if (--slave_priv->port_detach_count == 0) {
|
if (--port_priv->port_detach_count == 0) {
|
||||||
if (slave_priv->state == NM_DEVICE_STATE_DEACTIVATING) {
|
if (port_priv->state == NM_DEVICE_STATE_DEACTIVATING) {
|
||||||
deactivate_ready(slave, slave_priv->port_detach_reason);
|
deactivate_ready(slave, port_priv->port_detach_reason);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -6708,7 +6709,7 @@ nm_device_master_release_slave(NMDevice *self,
|
||||||
NMDeviceStateReason reason)
|
NMDeviceStateReason reason)
|
||||||
{
|
{
|
||||||
NMDevicePrivate *priv;
|
NMDevicePrivate *priv;
|
||||||
NMDevicePrivate *slave_priv;
|
NMDevicePrivate *port_priv;
|
||||||
SlaveInfo *info;
|
SlaveInfo *info;
|
||||||
gs_unref_object NMDevice *self_free = NULL;
|
gs_unref_object NMDevice *self_free = NULL;
|
||||||
gs_unref_object NMDevice *slave_free = NULL;
|
gs_unref_object NMDevice *slave_free = NULL;
|
||||||
|
|
@ -6736,9 +6737,9 @@ nm_device_master_release_slave(NMDevice *self,
|
||||||
g_return_if_reached();
|
g_return_if_reached();
|
||||||
|
|
||||||
priv = NM_DEVICE_GET_PRIVATE(self);
|
priv = NM_DEVICE_GET_PRIVATE(self);
|
||||||
slave_priv = NM_DEVICE_GET_PRIVATE(slave);
|
port_priv = NM_DEVICE_GET_PRIVATE(slave);
|
||||||
|
|
||||||
g_return_if_fail(self == slave_priv->master);
|
g_return_if_fail(self == port_priv->controller);
|
||||||
nm_assert(slave == info->slave);
|
nm_assert(slave == info->slave);
|
||||||
nm_clear_g_cancellable(&info->cancellable);
|
nm_clear_g_cancellable(&info->cancellable);
|
||||||
|
|
||||||
|
|
@ -6754,8 +6755,8 @@ nm_device_master_release_slave(NMDevice *self,
|
||||||
detach_port_cb,
|
detach_port_cb,
|
||||||
g_object_ref(slave));
|
g_object_ref(slave));
|
||||||
if (ret == NM_TERNARY_DEFAULT) {
|
if (ret == NM_TERNARY_DEFAULT) {
|
||||||
slave_priv->port_detach_count++;
|
port_priv->port_detach_count++;
|
||||||
slave_priv->port_detach_reason = reason;
|
port_priv->port_detach_reason = reason;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6763,9 +6764,9 @@ nm_device_master_release_slave(NMDevice *self,
|
||||||
nm_device_slave_notify_release(slave, reason, release_type);
|
nm_device_slave_notify_release(slave, reason, release_type);
|
||||||
|
|
||||||
/* keep both alive until the end of the function.
|
/* keep both alive until the end of the function.
|
||||||
* Transfers ownership from slave_priv->master. */
|
* Transfers ownership from port_priv->controller. */
|
||||||
nm_assert(self == slave_priv->master);
|
nm_assert(self == port_priv->controller);
|
||||||
self_free = g_steal_pointer(&slave_priv->master);
|
self_free = g_steal_pointer(&port_priv->controller);
|
||||||
|
|
||||||
nm_assert(slave == info->slave);
|
nm_assert(slave == info->slave);
|
||||||
slave_free = g_steal_pointer(&info->slave);
|
slave_free = g_steal_pointer(&info->slave);
|
||||||
|
|
@ -6900,7 +6901,7 @@ carrier_changed(NMDevice *self, gboolean carrier)
|
||||||
if (priv->ignore_carrier && !carrier)
|
if (priv->ignore_carrier && !carrier)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (nm_device_is_master(self)) {
|
if (nm_device_is_controller(self)) {
|
||||||
if (carrier) {
|
if (carrier) {
|
||||||
/* If needed, also resume IP configuration that is
|
/* If needed, also resume IP configuration that is
|
||||||
* waiting for carrier. */
|
* waiting for carrier. */
|
||||||
|
|
@ -7069,7 +7070,7 @@ device_recheck_slave_status(NMDevice *self, const NMPlatformLink *plink)
|
||||||
plink_master = nm_platform_link_get(nm_device_get_platform(self), plink->master);
|
plink_master = nm_platform_link_get(nm_device_get_platform(self), plink->master);
|
||||||
plink_master_keep_alive = nmp_object_ref(NMP_OBJECT_UP_CAST(plink_master));
|
plink_master_keep_alive = nmp_object_ref(NMP_OBJECT_UP_CAST(plink_master));
|
||||||
} else {
|
} else {
|
||||||
if (priv->master_ifindex == 0)
|
if (priv->controller_ifindex == 0)
|
||||||
goto out;
|
goto out;
|
||||||
master = NULL;
|
master = NULL;
|
||||||
plink_master = NULL;
|
plink_master = NULL;
|
||||||
|
|
@ -7082,17 +7083,17 @@ device_recheck_slave_status(NMDevice *self, const NMPlatformLink *plink)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
priv->master_ifindex = plink->master;
|
priv->controller_ifindex = plink->master;
|
||||||
|
|
||||||
if (priv->master) {
|
if (priv->controller) {
|
||||||
if (plink->master > 0 && plink->master == nm_device_get_ifindex(priv->master)) {
|
if (plink->master > 0 && plink->master == nm_device_get_ifindex(priv->controller)) {
|
||||||
/* call add-slave again. We expect @self already to be added to
|
/* call add-slave again. We expect @self already to be added to
|
||||||
* the master, but this also triggers a recheck-assume. */
|
* the master, but this also triggers a recheck-assume. */
|
||||||
nm_device_master_add_slave(priv->master, self, FALSE);
|
nm_device_master_add_slave(priv->controller, self, FALSE);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
nm_device_master_release_slave(priv->master,
|
nm_device_master_release_slave(priv->controller,
|
||||||
self,
|
self,
|
||||||
RELEASE_SLAVE_TYPE_NO_CONFIG,
|
RELEASE_SLAVE_TYPE_NO_CONFIG,
|
||||||
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
||||||
|
|
@ -7133,9 +7134,9 @@ device_ifindex_changed_cb(NMManager *manager, NMDevice *device_changed, NMDevice
|
||||||
{
|
{
|
||||||
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
|
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
|
||||||
|
|
||||||
g_return_if_fail(priv->master_ifindex > 0);
|
g_return_if_fail(priv->controller_ifindex > 0);
|
||||||
|
|
||||||
if (priv->master_ifindex != nm_device_get_ifindex(device_changed))
|
if (priv->controller_ifindex != nm_device_get_ifindex(device_changed))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_LOGD(LOGD_DEVICE,
|
_LOGD(LOGD_DEVICE,
|
||||||
|
|
@ -8157,7 +8158,7 @@ nm_device_unrealize(NMDevice *self, gboolean remove_resources, GError **error)
|
||||||
if (nm_clear_g_free(&priv->ip_iface_))
|
if (nm_clear_g_free(&priv->ip_iface_))
|
||||||
update_prop_ip_iface(self);
|
update_prop_ip_iface(self);
|
||||||
|
|
||||||
priv->master_ifindex = 0;
|
priv->controller_ifindex = 0;
|
||||||
|
|
||||||
_set_mtu(self, 0);
|
_set_mtu(self, 0);
|
||||||
|
|
||||||
|
|
@ -8394,7 +8395,7 @@ static gboolean
|
||||||
nm_device_master_add_slave(NMDevice *self, NMDevice *slave, gboolean configure)
|
nm_device_master_add_slave(NMDevice *self, NMDevice *slave, gboolean configure)
|
||||||
{
|
{
|
||||||
NMDevicePrivate *priv;
|
NMDevicePrivate *priv;
|
||||||
NMDevicePrivate *slave_priv;
|
NMDevicePrivate *port_priv;
|
||||||
SlaveInfo *info;
|
SlaveInfo *info;
|
||||||
gboolean changed = FALSE;
|
gboolean changed = FALSE;
|
||||||
|
|
||||||
|
|
@ -8403,7 +8404,7 @@ nm_device_master_add_slave(NMDevice *self, NMDevice *slave, gboolean configure)
|
||||||
g_return_val_if_fail(NM_DEVICE_GET_CLASS(self)->attach_port, FALSE);
|
g_return_val_if_fail(NM_DEVICE_GET_CLASS(self)->attach_port, FALSE);
|
||||||
|
|
||||||
priv = NM_DEVICE_GET_PRIVATE(self);
|
priv = NM_DEVICE_GET_PRIVATE(self);
|
||||||
slave_priv = NM_DEVICE_GET_PRIVATE(slave);
|
port_priv = NM_DEVICE_GET_PRIVATE(slave);
|
||||||
|
|
||||||
info = find_slave_info(self, slave);
|
info = find_slave_info(self, slave);
|
||||||
|
|
||||||
|
|
@ -8417,8 +8418,8 @@ nm_device_master_add_slave(NMDevice *self, NMDevice *slave, gboolean configure)
|
||||||
g_return_val_if_fail(nm_device_get_state(slave) >= NM_DEVICE_STATE_DISCONNECTED, FALSE);
|
g_return_val_if_fail(nm_device_get_state(slave) >= NM_DEVICE_STATE_DISCONNECTED, FALSE);
|
||||||
|
|
||||||
if (!info) {
|
if (!info) {
|
||||||
g_return_val_if_fail(!slave_priv->master, FALSE);
|
g_return_val_if_fail(!port_priv->controller, FALSE);
|
||||||
g_return_val_if_fail(!slave_priv->is_enslaved, FALSE);
|
g_return_val_if_fail(!port_priv->is_enslaved, FALSE);
|
||||||
|
|
||||||
info = g_slice_new0(SlaveInfo);
|
info = g_slice_new0(SlaveInfo);
|
||||||
info->slave = g_object_ref(slave);
|
info->slave = g_object_ref(slave);
|
||||||
|
|
@ -8426,25 +8427,25 @@ nm_device_master_add_slave(NMDevice *self, NMDevice *slave, gboolean configure)
|
||||||
info->watch_id =
|
info->watch_id =
|
||||||
g_signal_connect(slave, NM_DEVICE_STATE_CHANGED, G_CALLBACK(slave_state_changed), self);
|
g_signal_connect(slave, NM_DEVICE_STATE_CHANGED, G_CALLBACK(slave_state_changed), self);
|
||||||
c_list_link_tail(&priv->slaves, &info->lst_slave);
|
c_list_link_tail(&priv->slaves, &info->lst_slave);
|
||||||
slave_priv->master = g_object_ref(self);
|
port_priv->controller = g_object_ref(self);
|
||||||
|
|
||||||
_active_connection_set_state_flags(self, NM_ACTIVATION_STATE_FLAG_MASTER_HAS_SLAVES);
|
_active_connection_set_state_flags(self, NM_ACTIVATION_STATE_FLAG_MASTER_HAS_SLAVES);
|
||||||
|
|
||||||
/* no need to emit
|
/* no need to emit
|
||||||
*
|
*
|
||||||
* _notify (slave, PROP_MASTER);
|
* _notify (slave, PROP_CONTROLLER);
|
||||||
*
|
*
|
||||||
* because slave_priv->is_enslaved is not true, thus the value
|
* because port_priv->is_enslaved is not true, thus the value
|
||||||
* didn't change yet. */
|
* didn't change yet. */
|
||||||
|
|
||||||
g_warn_if_fail(!NM_FLAGS_HAS(slave_priv->unmanaged_mask, NM_UNMANAGED_IS_SLAVE));
|
g_warn_if_fail(!NM_FLAGS_HAS(port_priv->unmanaged_mask, NM_UNMANAGED_IS_SLAVE));
|
||||||
nm_device_set_unmanaged_by_flags(slave,
|
nm_device_set_unmanaged_by_flags(slave,
|
||||||
NM_UNMANAGED_IS_SLAVE,
|
NM_UNMANAGED_IS_SLAVE,
|
||||||
NM_UNMAN_FLAG_OP_SET_MANAGED,
|
NM_UNMAN_FLAG_OP_SET_MANAGED,
|
||||||
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
||||||
changed = TRUE;
|
changed = TRUE;
|
||||||
} else
|
} else
|
||||||
g_return_val_if_fail(slave_priv->master == self, FALSE);
|
g_return_val_if_fail(port_priv->controller == self, FALSE);
|
||||||
|
|
||||||
nm_device_queue_recheck_assume(self);
|
nm_device_queue_recheck_assume(self);
|
||||||
nm_device_queue_recheck_assume(slave);
|
nm_device_queue_recheck_assume(slave);
|
||||||
|
|
@ -8525,38 +8526,40 @@ nm_device_master_release_slaves_all(NMDevice *self)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nm_device_is_master:
|
* nm_device_is_controller:
|
||||||
* @self: the device
|
* @self: the device
|
||||||
*
|
*
|
||||||
* Returns: %TRUE if the device can have slaves
|
* Returns: %TRUE if the device can have ports
|
||||||
*/
|
*/
|
||||||
gboolean
|
gboolean
|
||||||
nm_device_is_master(NMDevice *self)
|
nm_device_is_controller(NMDevice *self)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail(NM_IS_DEVICE(self), FALSE);
|
g_return_val_if_fail(NM_IS_DEVICE(self), FALSE);
|
||||||
|
|
||||||
return NM_DEVICE_GET_CLASS(self)->is_master;
|
return NM_DEVICE_GET_CLASS(self)->is_controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nm_device_get_master:
|
* nm_device_get_controller:
|
||||||
* @self: the device
|
* @self: the device
|
||||||
*
|
*
|
||||||
* If @self has been enslaved by another device, this returns that
|
* If @self has been set as port by another device, this returns that
|
||||||
* device. Otherwise, it returns %NULL. (In particular, note that if
|
* device. Otherwise, it returns %NULL. (In particular, note that if
|
||||||
* @self is in the process of activating as a slave, but has not yet
|
* @self is in the process of activating as a port, but has not yet
|
||||||
* been enslaved by its master, this will return %NULL.)
|
* been set as port by its controller, this will return %NULL.)
|
||||||
*
|
*
|
||||||
* Returns: (transfer none): @self's master, or %NULL
|
* Returns: (transfer none): @self's controller, or %NULL
|
||||||
|
*
|
||||||
|
* Since: 1.48
|
||||||
*/
|
*/
|
||||||
NMDevice *
|
NMDevice *
|
||||||
nm_device_get_master(NMDevice *self)
|
nm_device_get_controller(NMDevice *self)
|
||||||
{
|
{
|
||||||
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
|
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self);
|
||||||
|
|
||||||
if (priv->is_enslaved) {
|
if (priv->is_enslaved) {
|
||||||
g_return_val_if_fail(priv->master, NULL);
|
g_return_val_if_fail(priv->controller, NULL);
|
||||||
return priv->master;
|
return priv->controller;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -8576,7 +8579,7 @@ nm_device_slave_notify_enslave(NMDevice *self, gboolean success)
|
||||||
NMConnection *connection = nm_device_get_applied_connection(self);
|
NMConnection *connection = nm_device_get_applied_connection(self);
|
||||||
gboolean activating = (priv->state == NM_DEVICE_STATE_IP_CONFIG);
|
gboolean activating = (priv->state == NM_DEVICE_STATE_IP_CONFIG);
|
||||||
|
|
||||||
g_return_if_fail(priv->master);
|
g_return_if_fail(priv->controller);
|
||||||
|
|
||||||
if (!priv->is_enslaved) {
|
if (!priv->is_enslaved) {
|
||||||
if (success) {
|
if (success) {
|
||||||
|
|
@ -8585,14 +8588,15 @@ nm_device_slave_notify_enslave(NMDevice *self, gboolean success)
|
||||||
"Activation: connection '%s' enslaved, continuing activation",
|
"Activation: connection '%s' enslaved, continuing activation",
|
||||||
nm_connection_get_id(connection));
|
nm_connection_get_id(connection));
|
||||||
} else
|
} else
|
||||||
_LOGI(LOGD_DEVICE, "enslaved to %s", nm_device_get_iface(priv->master));
|
_LOGI(LOGD_DEVICE, "enslaved to %s", nm_device_get_iface(priv->controller));
|
||||||
|
|
||||||
priv->is_enslaved = TRUE;
|
priv->is_enslaved = TRUE;
|
||||||
|
|
||||||
_notify(self, PROP_MASTER);
|
_notify(priv->controller, PROP_CONTROLLER);
|
||||||
|
|
||||||
nm_clear_pointer(&NM_DEVICE_GET_PRIVATE(priv->master)->ports_variant, g_variant_unref);
|
nm_clear_pointer(&NM_DEVICE_GET_PRIVATE(priv->controller)->ports_variant,
|
||||||
nm_gobject_notify_together(priv->master, PROP_PORTS, PROP_SLAVES);
|
g_variant_unref);
|
||||||
|
nm_gobject_notify_together(priv->controller, PROP_PORTS, PROP_SLAVES);
|
||||||
} else if (activating) {
|
} else if (activating) {
|
||||||
_LOGW(LOGD_DEVICE,
|
_LOGW(LOGD_DEVICE,
|
||||||
"Activation: connection '%s' could not be enslaved",
|
"Activation: connection '%s' could not be enslaved",
|
||||||
|
|
@ -8629,7 +8633,7 @@ nm_device_slave_notify_release(NMDevice *self,
|
||||||
NMConnection *connection = nm_device_get_applied_connection(self);
|
NMConnection *connection = nm_device_get_applied_connection(self);
|
||||||
const char *master_status;
|
const char *master_status;
|
||||||
|
|
||||||
g_return_if_fail(priv->master);
|
g_return_if_fail(priv->controller);
|
||||||
|
|
||||||
if (!priv->is_enslaved && release_type == RELEASE_SLAVE_TYPE_NO_CONFIG)
|
if (!priv->is_enslaved && release_type == RELEASE_SLAVE_TYPE_NO_CONFIG)
|
||||||
return;
|
return;
|
||||||
|
|
@ -8661,14 +8665,14 @@ nm_device_slave_notify_release(NMDevice *self,
|
||||||
_cancel_activation(self);
|
_cancel_activation(self);
|
||||||
nm_device_queue_state(self, NM_DEVICE_STATE_DEACTIVATING, reason);
|
nm_device_queue_state(self, NM_DEVICE_STATE_DEACTIVATING, reason);
|
||||||
} else
|
} else
|
||||||
_LOGI(LOGD_DEVICE, "released from master device %s", nm_device_get_iface(priv->master));
|
_LOGI(LOGD_DEVICE, "released from master device %s", nm_device_get_iface(priv->controller));
|
||||||
|
|
||||||
priv->is_enslaved = FALSE;
|
priv->is_enslaved = FALSE;
|
||||||
|
|
||||||
_notify(self, PROP_MASTER);
|
_notify(priv->controller, PROP_CONTROLLER);
|
||||||
|
|
||||||
nm_clear_pointer(&NM_DEVICE_GET_PRIVATE(priv->master)->ports_variant, g_variant_unref);
|
nm_clear_pointer(&NM_DEVICE_GET_PRIVATE(priv->controller)->ports_variant, g_variant_unref);
|
||||||
nm_gobject_notify_together(priv->master, PROP_PORTS, PROP_SLAVES);
|
nm_gobject_notify_together(priv->controller, PROP_PORTS, PROP_SLAVES);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -8692,10 +8696,10 @@ nm_device_removed(NMDevice *self, gboolean unconfigure_ip_config)
|
||||||
_dev_ipdhcpx_cleanup(self, AF_INET6, TRUE, FALSE);
|
_dev_ipdhcpx_cleanup(self, AF_INET6, TRUE, FALSE);
|
||||||
|
|
||||||
priv = NM_DEVICE_GET_PRIVATE(self);
|
priv = NM_DEVICE_GET_PRIVATE(self);
|
||||||
if (priv->master) {
|
if (priv->controller) {
|
||||||
/* this is called when something externally messes with the slave or during shut-down.
|
/* this is called when something externally messes with the slave or during shut-down.
|
||||||
* Release the slave from master, but don't touch the device. */
|
* Release the slave from master, but don't touch the device. */
|
||||||
nm_device_master_release_slave(priv->master,
|
nm_device_master_release_slave(priv->controller,
|
||||||
self,
|
self,
|
||||||
RELEASE_SLAVE_TYPE_NO_CONFIG,
|
RELEASE_SLAVE_TYPE_NO_CONFIG,
|
||||||
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
||||||
|
|
@ -8728,7 +8732,7 @@ is_available(NMDevice *self, NMDeviceCheckDevAvailableFlags flags)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
/* master types are always available even without carrier. */
|
/* master types are always available even without carrier. */
|
||||||
if (nm_device_is_master(self))
|
if (nm_device_is_controller(self))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
@ -8768,7 +8772,7 @@ gboolean
|
||||||
nm_device_ignore_carrier_by_default(NMDevice *self)
|
nm_device_ignore_carrier_by_default(NMDevice *self)
|
||||||
{
|
{
|
||||||
/* master types ignore-carrier by default. */
|
/* master types ignore-carrier by default. */
|
||||||
return nm_device_is_master(self);
|
return nm_device_is_controller(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
|
@ -9492,7 +9496,7 @@ nm_device_check_slave_connection_compatible(NMDevice *self, NMConnection *slave)
|
||||||
g_return_val_if_fail(NM_IS_DEVICE(self), FALSE);
|
g_return_val_if_fail(NM_IS_DEVICE(self), FALSE);
|
||||||
g_return_val_if_fail(NM_IS_CONNECTION(slave), FALSE);
|
g_return_val_if_fail(NM_IS_CONNECTION(slave), FALSE);
|
||||||
|
|
||||||
if (!nm_device_is_master(self))
|
if (!nm_device_is_controller(self))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* All masters should have connection type set */
|
/* All masters should have connection type set */
|
||||||
|
|
@ -9799,8 +9803,8 @@ master_ready(NMDevice *self, NMActiveConnection *active)
|
||||||
|
|
||||||
_LOGD(LOGD_DEVICE, "master connection ready; master device %s", nm_device_get_iface(master));
|
_LOGD(LOGD_DEVICE, "master connection ready; master device %s", nm_device_get_iface(master));
|
||||||
|
|
||||||
if (priv->master && priv->master != master)
|
if (priv->controller && priv->controller != master)
|
||||||
nm_device_master_release_slave(priv->master,
|
nm_device_master_release_slave(priv->controller,
|
||||||
self,
|
self,
|
||||||
RELEASE_SLAVE_TYPE_NO_CONFIG,
|
RELEASE_SLAVE_TYPE_NO_CONFIG,
|
||||||
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
||||||
|
|
@ -10080,9 +10084,9 @@ activate_stage1_device_prepare(NMDevice *self)
|
||||||
}
|
}
|
||||||
/* If the master connection is ready for slaves, attach ourselves */
|
/* If the master connection is ready for slaves, attach ourselves */
|
||||||
if (!nm_active_connection_get_master_ready(active)) {
|
if (!nm_active_connection_get_master_ready(active)) {
|
||||||
if (priv->master_ready_id == 0) {
|
if (priv->controller_ready_id == 0) {
|
||||||
_LOGD(LOGD_DEVICE, "waiting for master connection to become ready");
|
_LOGD(LOGD_DEVICE, "waiting for master connection to become ready");
|
||||||
priv->master_ready_id =
|
priv->controller_ready_id =
|
||||||
g_signal_connect(active,
|
g_signal_connect(active,
|
||||||
"notify::" NM_ACTIVE_CONNECTION_INT_MASTER_READY,
|
"notify::" NM_ACTIVE_CONNECTION_INT_MASTER_READY,
|
||||||
G_CALLBACK(master_ready_cb),
|
G_CALLBACK(master_ready_cb),
|
||||||
|
|
@ -10091,11 +10095,11 @@ activate_stage1_device_prepare(NMDevice *self)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nm_clear_g_signal_handler(priv->act_request.obj, &priv->master_ready_id);
|
nm_clear_g_signal_handler(priv->act_request.obj, &priv->controller_ready_id);
|
||||||
if (master)
|
if (master)
|
||||||
master_ready(self, active);
|
master_ready(self, active);
|
||||||
else if (priv->master) {
|
else if (priv->controller) {
|
||||||
nm_device_master_release_slave(priv->master,
|
nm_device_master_release_slave(priv->controller,
|
||||||
self,
|
self,
|
||||||
RELEASE_SLAVE_TYPE_CONFIG_FORCE,
|
RELEASE_SLAVE_TYPE_CONFIG_FORCE,
|
||||||
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
||||||
|
|
@ -11795,12 +11799,12 @@ _set_mtu(NMDevice *self, guint32 mtu)
|
||||||
priv->mtu = mtu;
|
priv->mtu = mtu;
|
||||||
_notify(self, PROP_MTU);
|
_notify(self, PROP_MTU);
|
||||||
|
|
||||||
if (priv->master) {
|
if (priv->controller) {
|
||||||
/* changing the MTU of a slave, might require the master to reset
|
/* changing the MTU of a slave, might require the master to reset
|
||||||
* its MTU. Note that the master usually cannot set a MTU larger
|
* its MTU. Note that the master usually cannot set a MTU larger
|
||||||
* then the slave's. Hence, when the slave increases the MTU,
|
* then the slave's. Hence, when the slave increases the MTU,
|
||||||
* master might want to retry setting the MTU. */
|
* master might want to retry setting the MTU. */
|
||||||
nm_device_commit_mtu(priv->master);
|
nm_device_commit_mtu(priv->controller);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -12563,7 +12567,7 @@ activate_stage3_ip_config_for_addr_family(NMDevice *self, int addr_family, const
|
||||||
ip_ifindex = nm_device_get_ip_ifindex(self);
|
ip_ifindex = nm_device_get_ip_ifindex(self);
|
||||||
|
|
||||||
if (connection_ip_method_requires_carrier(connection, addr_family, NULL)
|
if (connection_ip_method_requires_carrier(connection, addr_family, NULL)
|
||||||
&& nm_device_is_master(self) && !priv->carrier) {
|
&& nm_device_is_controller(self) && !priv->carrier) {
|
||||||
if (!priv->ip_data_x[IS_IPv4].wait_for_carrier) {
|
if (!priv->ip_data_x[IS_IPv4].wait_for_carrier) {
|
||||||
_LOGT_ip(addr_family, "waiting until carrier is on");
|
_LOGT_ip(addr_family, "waiting until carrier is on");
|
||||||
priv->ip_data_x[IS_IPv4].wait_for_carrier = TRUE;
|
priv->ip_data_x[IS_IPv4].wait_for_carrier = TRUE;
|
||||||
|
|
@ -12575,7 +12579,7 @@ activate_stage3_ip_config_for_addr_family(NMDevice *self, int addr_family, const
|
||||||
priv->ip_data_x[IS_IPv4].wait_for_carrier = FALSE;
|
priv->ip_data_x[IS_IPv4].wait_for_carrier = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nm_device_is_master(self) && ip_requires_slaves(self, addr_family)) {
|
if (nm_device_is_controller(self) && ip_requires_slaves(self, addr_family)) {
|
||||||
/* If the master has no ready slaves, and depends on slaves for
|
/* If the master has no ready slaves, and depends on slaves for
|
||||||
* a successful IP configuration attempt, then postpone IP addressing.
|
* a successful IP configuration attempt, then postpone IP addressing.
|
||||||
*/
|
*/
|
||||||
|
|
@ -12622,7 +12626,7 @@ activate_stage3_ip_config_for_addr_family(NMDevice *self, int addr_family, const
|
||||||
} else if (nm_streq(method, NM_SETTING_IP6_CONFIG_METHOD_IGNORE)) {
|
} else if (nm_streq(method, NM_SETTING_IP6_CONFIG_METHOD_IGNORE)) {
|
||||||
if (!priv->ip_data_x[IS_IPv4].is_ignore) {
|
if (!priv->ip_data_x[IS_IPv4].is_ignore) {
|
||||||
priv->ip_data_x[IS_IPv4].is_ignore = TRUE;
|
priv->ip_data_x[IS_IPv4].is_ignore = TRUE;
|
||||||
if (priv->master) {
|
if (priv->controller) {
|
||||||
/* If a device only has an IPv6 link-local address,
|
/* If a device only has an IPv6 link-local address,
|
||||||
* we don't generate an assumed connection. Therefore,
|
* we don't generate an assumed connection. Therefore,
|
||||||
* when a new slave connection (without IP configuration)
|
* when a new slave connection (without IP configuration)
|
||||||
|
|
@ -15800,7 +15804,7 @@ check_connection_available(NMDevice *self,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nm_device_is_master(self)) {
|
if (nm_device_is_controller(self)) {
|
||||||
/* master types are always available even without carrier.
|
/* master types are always available even without carrier.
|
||||||
* Making connection non-available would un-enslave slaves which
|
* Making connection non-available would un-enslave slaves which
|
||||||
* is not desired. */
|
* is not desired. */
|
||||||
|
|
@ -16191,12 +16195,12 @@ _cleanup_generic_post(NMDevice *self, NMDeviceStateReason reason, CleanupType cl
|
||||||
nm_active_connection_set_default(NM_ACTIVE_CONNECTION(priv->act_request.obj),
|
nm_active_connection_set_default(NM_ACTIVE_CONNECTION(priv->act_request.obj),
|
||||||
AF_INET,
|
AF_INET,
|
||||||
FALSE);
|
FALSE);
|
||||||
nm_clear_g_signal_handler(priv->act_request.obj, &priv->master_ready_id);
|
nm_clear_g_signal_handler(priv->act_request.obj, &priv->controller_ready_id);
|
||||||
act_request_set(self, NULL);
|
act_request_set(self, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cleanup_type == CLEANUP_TYPE_DECONFIGURE
|
if (cleanup_type == CLEANUP_TYPE_DECONFIGURE
|
||||||
&& ((reason == NM_DEVICE_STATE_REASON_CARRIER && nm_device_is_master(self))
|
&& ((reason == NM_DEVICE_STATE_REASON_CARRIER && nm_device_is_controller(self))
|
||||||
|| !NM_IN_SET(reason,
|
|| !NM_IN_SET(reason,
|
||||||
NM_DEVICE_STATE_REASON_NOW_MANAGED,
|
NM_DEVICE_STATE_REASON_NOW_MANAGED,
|
||||||
NM_DEVICE_STATE_REASON_CARRIER))) {
|
NM_DEVICE_STATE_REASON_CARRIER))) {
|
||||||
|
|
@ -16280,9 +16284,9 @@ nm_device_cleanup(NMDevice *self, NMDeviceStateReason reason, CleanupType cleanu
|
||||||
nm_platform_ip4_dev_route_blacklist_set(nm_device_get_platform(self), ifindex, NULL);
|
nm_platform_ip4_dev_route_blacklist_set(nm_device_get_platform(self), ifindex, NULL);
|
||||||
|
|
||||||
/* slave: mark no longer enslaved */
|
/* slave: mark no longer enslaved */
|
||||||
if (priv->master && priv->ifindex > 0
|
if (priv->controller && priv->ifindex > 0
|
||||||
&& nm_platform_link_get_master(nm_device_get_platform(self), priv->ifindex) <= 0) {
|
&& nm_platform_link_get_master(nm_device_get_platform(self), priv->ifindex) <= 0) {
|
||||||
nm_device_master_release_slave(priv->master,
|
nm_device_master_release_slave(priv->controller,
|
||||||
self,
|
self,
|
||||||
RELEASE_SLAVE_TYPE_NO_CONFIG,
|
RELEASE_SLAVE_TYPE_NO_CONFIG,
|
||||||
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
|
||||||
|
|
@ -18314,8 +18318,8 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
|
||||||
case PROP_PHYSICAL_PORT_ID:
|
case PROP_PHYSICAL_PORT_ID:
|
||||||
g_value_set_string(value, priv->physical_port_id);
|
g_value_set_string(value, priv->physical_port_id);
|
||||||
break;
|
break;
|
||||||
case PROP_MASTER:
|
case PROP_CONTROLLER:
|
||||||
g_value_set_object(value, nm_device_get_master(self));
|
g_value_set_object(value, nm_device_get_controller(self));
|
||||||
break;
|
break;
|
||||||
case PROP_PARENT:
|
case PROP_PARENT:
|
||||||
g_value_set_string(value, nm_dbus_track_obj_path_get(&priv->parent_device));
|
g_value_set_string(value, nm_dbus_track_obj_path_get(&priv->parent_device));
|
||||||
|
|
@ -18633,7 +18637,7 @@ dispose(GObject *object)
|
||||||
|
|
||||||
_cleanup_generic_post(self, NM_DEVICE_STATE_REASON_NONE, CLEANUP_TYPE_KEEP);
|
_cleanup_generic_post(self, NM_DEVICE_STATE_REASON_NONE, CLEANUP_TYPE_KEEP);
|
||||||
|
|
||||||
nm_assert(priv->master_ready_id == 0);
|
nm_assert(priv->controller_ready_id == 0);
|
||||||
|
|
||||||
g_hash_table_remove_all(priv->ip6_saved_properties);
|
g_hash_table_remove_all(priv->ip6_saved_properties);
|
||||||
|
|
||||||
|
|
@ -19083,7 +19087,8 @@ nm_device_class_init(NMDeviceClass *klass)
|
||||||
"",
|
"",
|
||||||
NULL,
|
NULL,
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
obj_properties[PROP_MASTER] = g_param_spec_object(NM_DEVICE_MASTER,
|
obj_properties[PROP_CONTROLLER] =
|
||||||
|
g_param_spec_object(NM_DEVICE_CONTROLLER,
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
NM_TYPE_DEVICE,
|
NM_TYPE_DEVICE,
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@
|
||||||
|
|
||||||
#define NM_DEVICE_TYPE_DESC "type-desc" /* Internal only */
|
#define NM_DEVICE_TYPE_DESC "type-desc" /* Internal only */
|
||||||
#define NM_DEVICE_IFINDEX "ifindex" /* Internal only */
|
#define NM_DEVICE_IFINDEX "ifindex" /* Internal only */
|
||||||
#define NM_DEVICE_MASTER "master" /* Internal only */
|
#define NM_DEVICE_CONTROLLER "controller" /* Internal only */
|
||||||
#define NM_DEVICE_HAS_PENDING_ACTION "has-pending-action" /* Internal only */
|
#define NM_DEVICE_HAS_PENDING_ACTION "has-pending-action" /* Internal only */
|
||||||
|
|
||||||
/* Internal signals */
|
/* Internal signals */
|
||||||
|
|
@ -186,9 +186,9 @@ typedef struct _NMDeviceClass {
|
||||||
* a delta in the MTU allowed value due the encapsulation overhead */
|
* a delta in the MTU allowed value due the encapsulation overhead */
|
||||||
guint16 mtu_parent_delta;
|
guint16 mtu_parent_delta;
|
||||||
|
|
||||||
/* Whether the device type is a master-type. This depends purely on the
|
/* Whether the device type is a controller-type. This depends purely on the
|
||||||
* type (NMDeviceClass), not the actual device instance. */
|
* type (NMDeviceClass), not the actual device instance. */
|
||||||
bool is_master : 1;
|
bool is_controller : 1;
|
||||||
|
|
||||||
/* Force setting the MTU actually means first setting the MTU
|
/* Force setting the MTU actually means first setting the MTU
|
||||||
* to (desired_MTU-1) and then setting the desired_MTU
|
* to (desired_MTU-1) and then setting the desired_MTU
|
||||||
|
|
@ -502,11 +502,11 @@ gboolean nm_device_parent_notify_changed(NMDevice *self,
|
||||||
const char *nm_device_parent_find_for_connection(NMDevice *self,
|
const char *nm_device_parent_find_for_connection(NMDevice *self,
|
||||||
const char *current_setting_parent);
|
const char *current_setting_parent);
|
||||||
|
|
||||||
/* Master */
|
/* Controller */
|
||||||
gboolean nm_device_is_master(NMDevice *dev);
|
gboolean nm_device_is_controller(NMDevice *dev);
|
||||||
|
|
||||||
/* Slave */
|
/* Port */
|
||||||
NMDevice *nm_device_get_master(NMDevice *dev);
|
NMDevice *nm_device_get_controller(NMDevice *dev);
|
||||||
|
|
||||||
NMActRequest *nm_device_get_act_request(NMDevice *dev);
|
NMActRequest *nm_device_get_act_request(NMDevice *dev);
|
||||||
NMSettingsConnection *nm_device_get_settings_connection(NMDevice *dev);
|
NMSettingsConnection *nm_device_get_settings_connection(NMDevice *dev);
|
||||||
|
|
|
||||||
|
|
@ -171,7 +171,7 @@ nm_device_ovs_bridge_class_init(NMDeviceOvsBridgeClass *klass)
|
||||||
device_class->connection_type_check_compatible = NM_SETTING_OVS_BRIDGE_SETTING_NAME;
|
device_class->connection_type_check_compatible = NM_SETTING_OVS_BRIDGE_SETTING_NAME;
|
||||||
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES();
|
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES();
|
||||||
|
|
||||||
device_class->is_master = TRUE;
|
device_class->is_controller = TRUE;
|
||||||
device_class->get_type_description = get_type_description;
|
device_class->get_type_description = get_type_description;
|
||||||
device_class->create_and_realize = create_and_realize;
|
device_class->create_and_realize = create_and_realize;
|
||||||
device_class->unrealize = unrealize;
|
device_class->unrealize = unrealize;
|
||||||
|
|
|
||||||
|
|
@ -285,7 +285,7 @@ nm_device_ovs_port_class_init(NMDeviceOvsPortClass *klass)
|
||||||
device_class->connection_type_check_compatible = NM_SETTING_OVS_PORT_SETTING_NAME;
|
device_class->connection_type_check_compatible = NM_SETTING_OVS_PORT_SETTING_NAME;
|
||||||
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES();
|
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES();
|
||||||
|
|
||||||
device_class->is_master = TRUE;
|
device_class->is_controller = TRUE;
|
||||||
device_class->get_type_description = get_type_description;
|
device_class->get_type_description = get_type_description;
|
||||||
device_class->create_and_realize = create_and_realize;
|
device_class->create_and_realize = create_and_realize;
|
||||||
device_class->get_generic_capabilities = get_generic_capabilities;
|
device_class->get_generic_capabilities = get_generic_capabilities;
|
||||||
|
|
|
||||||
|
|
@ -1006,7 +1006,7 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
|
||||||
static void
|
static void
|
||||||
nm_device_team_init(NMDeviceTeam *self)
|
nm_device_team_init(NMDeviceTeam *self)
|
||||||
{
|
{
|
||||||
nm_assert(nm_device_is_master(NM_DEVICE(self)));
|
nm_assert(nm_device_is_controller(NM_DEVICE(self)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
@ -1127,7 +1127,7 @@ nm_device_team_class_init(NMDeviceTeamClass *klass)
|
||||||
device_class->connection_type_check_compatible = NM_SETTING_TEAM_SETTING_NAME;
|
device_class->connection_type_check_compatible = NM_SETTING_TEAM_SETTING_NAME;
|
||||||
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES(NM_LINK_TYPE_TEAM);
|
device_class->link_types = NM_DEVICE_DEFINE_LINK_TYPES(NM_LINK_TYPE_TEAM);
|
||||||
|
|
||||||
device_class->is_master = TRUE;
|
device_class->is_controller = TRUE;
|
||||||
device_class->create_and_realize = create_and_realize;
|
device_class->create_and_realize = create_and_realize;
|
||||||
device_class->get_generic_capabilities = get_generic_capabilities;
|
device_class->get_generic_capabilities = get_generic_capabilities;
|
||||||
device_class->complete_connection = complete_connection;
|
device_class->complete_connection = complete_connection;
|
||||||
|
|
|
||||||
|
|
@ -650,7 +650,7 @@ device_master_changed(GObject *object, GParamSpec *pspec, gpointer user_data)
|
||||||
|
|
||||||
if (NM_ACTIVE_CONNECTION(nm_device_get_act_request(device)) != self)
|
if (NM_ACTIVE_CONNECTION(nm_device_get_act_request(device)) != self)
|
||||||
return;
|
return;
|
||||||
if (!nm_device_get_master(device))
|
if (!nm_device_get_controller(device))
|
||||||
return;
|
return;
|
||||||
if (!nm_active_connection_get_master(self))
|
if (!nm_active_connection_get_master(self))
|
||||||
return;
|
return;
|
||||||
|
|
@ -712,7 +712,7 @@ nm_active_connection_set_device(NMActiveConnection *self, NMDevice *device)
|
||||||
|
|
||||||
g_signal_connect(device, NM_DEVICE_STATE_CHANGED, G_CALLBACK(device_state_changed), self);
|
g_signal_connect(device, NM_DEVICE_STATE_CHANGED, G_CALLBACK(device_state_changed), self);
|
||||||
g_signal_connect(device,
|
g_signal_connect(device,
|
||||||
"notify::" NM_DEVICE_MASTER,
|
"notify::" NM_DEVICE_CONTROLLER,
|
||||||
G_CALLBACK(device_master_changed),
|
G_CALLBACK(device_master_changed),
|
||||||
self);
|
self);
|
||||||
g_signal_connect(device,
|
g_signal_connect(device,
|
||||||
|
|
|
||||||
|
|
@ -1936,7 +1936,7 @@ find_device_by_iface(NMManager *self,
|
||||||
if (connection && !nm_device_check_connection_compatible(candidate, connection, TRUE, NULL))
|
if (connection && !nm_device_check_connection_compatible(candidate, connection, TRUE, NULL))
|
||||||
continue;
|
continue;
|
||||||
if (slave) {
|
if (slave) {
|
||||||
if (!nm_device_is_master(candidate))
|
if (!nm_device_is_controller(candidate))
|
||||||
continue;
|
continue;
|
||||||
if (!nm_device_check_slave_connection_compatible(candidate, slave))
|
if (!nm_device_check_slave_connection_compatible(candidate, slave))
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue