mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-03 13:40:39 +01:00
all: add device carrier flag
Add a new 'carrier' flag to the InterfaceFlags property of devices to indicate the current carrier state. The new flag is equivalent to the 'lower-up' flag for all devices except the ones that use a non-standard carrier detection mechanism like NMDeviceAdsl.
This commit is contained in:
parent
62c811b2bd
commit
2b7def052f
6 changed files with 851 additions and 593 deletions
|
|
@ -571,6 +571,9 @@ _metagen_device_detail_interface_flags_get_fcn (NMC_META_GENERIC_INFO_GET_FCN_AR
|
|||
case NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_LOWER_UP:
|
||||
return nmc_meta_generic_get_bool (NM_FLAGS_HAS (flags, NM_DEVICE_INTERFACE_FLAG_LOWER_UP),
|
||||
get_type);
|
||||
case NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_CARRIER:
|
||||
return nmc_meta_generic_get_bool (NM_FLAGS_HAS (flags, NM_DEVICE_INTERFACE_FLAG_CARRIER),
|
||||
get_type);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -583,6 +586,7 @@ const NmcMetaGenericInfo *const metagen_device_detail_interface_flags[_NMC_GENER
|
|||
[type] = NMC_META_GENERIC(name, .info_type = type, .get_fcn = _metagen_device_detail_interface_flags_get_fcn)
|
||||
_METAGEN_DEVICE_DETAIL_INTERFACE_FLAGS (NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_UP, "UP"),
|
||||
_METAGEN_DEVICE_DETAIL_INTERFACE_FLAGS (NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_LOWER_UP, "LOWER-UP"),
|
||||
_METAGEN_DEVICE_DETAIL_INTERFACE_FLAGS (NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_CARRIER, "CARRIER"),
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
|||
|
|
@ -218,6 +218,7 @@ typedef enum {
|
|||
|
||||
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_UP = 0,
|
||||
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_LOWER_UP,
|
||||
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_CARRIER,
|
||||
_NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_NUM,
|
||||
|
||||
} NmcGenericInfoType;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1157,6 +1157,9 @@ typedef enum { /*< flags >*/
|
|||
* administrative point of view. Corresponds to kernel IFF_UP.
|
||||
* @NM_DEVICE_INTERFACE_FLAG_LOWER_UP: the physical link is up. Corresponds
|
||||
* to kernel IFF_LOWER_UP.
|
||||
* @NM_DEVICE_INTERFACE_FLAG_CARRIER: the interface has carrier. In most
|
||||
* cases this is equal to the value of @NM_DEVICE_INTERFACE_FLAG_LOWER_UP.
|
||||
* However some devices have a non-standard carrier detection mechanism.
|
||||
*
|
||||
* Flags for a network interface.
|
||||
*
|
||||
|
|
@ -1167,6 +1170,8 @@ typedef enum { /*< flags >*/
|
|||
NM_DEVICE_INTERFACE_FLAG_NONE = 0, /*< skip >*/
|
||||
NM_DEVICE_INTERFACE_FLAG_UP = 0x1,
|
||||
NM_DEVICE_INTERFACE_FLAG_LOWER_UP = 0x2,
|
||||
/* NM-specific flags */
|
||||
NM_DEVICE_INTERFACE_FLAG_CARRIER = 0x10000,
|
||||
} NMDeviceInterfaceFlags;
|
||||
|
||||
#endif /* __NM_DBUS_INTERFACE_H__ */
|
||||
|
|
|
|||
|
|
@ -3604,12 +3604,26 @@ nm_device_set_carrier (NMDevice *self, gboolean carrier)
|
|||
{
|
||||
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
|
||||
NMDeviceState state = nm_device_get_state (self);
|
||||
gboolean notify_flags = FALSE;
|
||||
|
||||
if (priv->carrier == carrier)
|
||||
return;
|
||||
|
||||
if (NM_FLAGS_ALL (priv->capabilities,
|
||||
NM_DEVICE_CAP_CARRIER_DETECT
|
||||
| NM_DEVICE_CAP_NONSTANDARD_CARRIER)) {
|
||||
if (carrier)
|
||||
priv->interface_flags |= NM_DEVICE_INTERFACE_FLAG_CARRIER;
|
||||
else
|
||||
priv->interface_flags &= ~NM_DEVICE_INTERFACE_FLAG_CARRIER;
|
||||
notify_flags = TRUE;
|
||||
}
|
||||
|
||||
priv->carrier = carrier;
|
||||
_notify (self, PROP_CARRIER);
|
||||
if (notify_flags)
|
||||
nm_gobject_notify_together (self, PROP_CARRIER, PROP_INTERFACE_FLAGS);
|
||||
else
|
||||
_notify (self, PROP_CARRIER);
|
||||
|
||||
if (priv->carrier) {
|
||||
_LOGI (LOGD_DEVICE, "carrier: link connected");
|
||||
|
|
@ -3817,6 +3831,16 @@ device_update_interface_flags (NMDevice *self, const NMPlatformLink *plink)
|
|||
if (plink && NM_FLAGS_HAS (plink->n_ifi_flags, IFF_LOWER_UP))
|
||||
flags |= NM_DEVICE_INTERFACE_FLAG_LOWER_UP;
|
||||
|
||||
if (NM_FLAGS_ALL (priv->capabilities,
|
||||
NM_DEVICE_CAP_CARRIER_DETECT
|
||||
| NM_DEVICE_CAP_NONSTANDARD_CARRIER)) {
|
||||
if (priv->carrier)
|
||||
flags |= NM_DEVICE_INTERFACE_FLAG_CARRIER;
|
||||
} else {
|
||||
if (plink && NM_FLAGS_HAS (plink->n_ifi_flags, IFF_LOWER_UP))
|
||||
flags |= NM_DEVICE_INTERFACE_FLAG_CARRIER;
|
||||
}
|
||||
|
||||
if (flags != priv->interface_flags) {
|
||||
priv->interface_flags = flags;
|
||||
_notify (self, PROP_INTERFACE_FLAGS);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue