interface-flags: expose NM_DEVICE_INTERFACE_FLAG_PROMISC

This patch is introducing NM_DEVICE_INTERFACE_FLAG_PROMISC in
interface_flags. The flag represents IFF_PROMISC kernel flag.

Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net>
This commit is contained in:
Fernando Fernandez Mancera 2021-04-14 13:01:01 +02:00 committed by Beniamino Galvani
parent afd8563eb2
commit 27e37a4b17
5 changed files with 15 additions and 1 deletions

View file

@ -5289,6 +5289,8 @@ device_update_interface_flags(NMDevice *self, const NMPlatformLink *plink)
flags |= NM_DEVICE_INTERFACE_FLAG_UP;
if (plink && NM_FLAGS_HAS(plink->n_ifi_flags, IFF_LOWER_UP))
flags |= NM_DEVICE_INTERFACE_FLAG_LOWER_UP;
if (plink && NM_FLAGS_HAS(plink->n_ifi_flags, IFF_PROMISC))
flags |= NM_DEVICE_INTERFACE_FLAG_PROMISC;
if (NM_FLAGS_ALL(priv->capabilities,
NM_DEVICE_CAP_CARRIER_DETECT | NM_DEVICE_CAP_NONSTANDARD_CARRIER)) {
@ -5301,7 +5303,8 @@ device_update_interface_flags(NMDevice *self, const NMPlatformLink *plink)
set_interface_flags_full(self,
NM_DEVICE_INTERFACE_FLAG_UP | NM_DEVICE_INTERFACE_FLAG_LOWER_UP
| NM_DEVICE_INTERFACE_FLAG_CARRIER,
| NM_DEVICE_INTERFACE_FLAG_CARRIER
| NM_DEVICE_INTERFACE_FLAG_PROMISC,
flags,
TRUE);
}

View file

@ -101,6 +101,7 @@ gboolean nm_utils_vlan_priority_map_parse_str(NMVlanPriorityMap map_type,
#define _NM_DEVICE_INTERFACE_FLAG_ALL \
((NMDeviceInterfaceFlags)(NM_DEVICE_INTERFACE_FLAG_UP | NM_DEVICE_INTERFACE_FLAG_LOWER_UP \
| NM_DEVICE_INTERFACE_FLAG_CARRIER \
| NM_DEVICE_INTERFACE_FLAG_PROMISC \
| NM_DEVICE_INTERFACE_FLAG_LLDP_CLIENT_ENABLED))
/*****************************************************************************/

View file

@ -1183,6 +1183,8 @@ 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_PROMISC: receive all packets. Corresponds to
* kernel IFF_PROMISC. Since: 1.32.
* @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.
@ -1198,6 +1200,7 @@ typedef enum { /*< flags >*/
NM_DEVICE_INTERFACE_FLAG_NONE = 0, /*< skip >*/
NM_DEVICE_INTERFACE_FLAG_UP = 0x1,
NM_DEVICE_INTERFACE_FLAG_LOWER_UP = 0x2,
NM_DEVICE_INTERFACE_FLAG_PROMISC = 0x4,
/* NM-specific flags */
NM_DEVICE_INTERFACE_FLAG_CARRIER = 0x10000,
NM_DEVICE_INTERFACE_FLAG_LLDP_CLIENT_ENABLED = 0x20000,

View file

@ -662,6 +662,9 @@ static gconstpointer
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);
case NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_PROMISC:
return nmc_meta_generic_get_bool(NM_FLAGS_HAS(flags, NM_DEVICE_INTERFACE_FLAG_PROMISC),
get_type);
default:
break;
}
@ -685,6 +688,9 @@ const NmcMetaGenericInfo *const
_METAGEN_DEVICE_DETAIL_INTERFACE_FLAGS(
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_CARRIER,
"CARRIER"),
_METAGEN_DEVICE_DETAIL_INTERFACE_FLAGS(
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_PROMISC,
"PROMISC"),
};
/*****************************************************************************/

View file

@ -231,6 +231,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_PROMISC,
_NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_INTERFACE_FLAGS_NUM,
} NmcGenericInfoType;