diff options
author | Fernando Fernandez Mancera <ffmancera@riseup.net> | 2021-04-14 13:01:01 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2021-04-22 18:57:30 +0000 |
commit | 27e37a4b171d8937d829340fb084986bd1a02452 (patch) | |
tree | 3a36787ac3b512710eaefc16bf5b0b10ca829a5e | |
parent | afd8563eb29ea72da0df5c7158eabc3f38000050 (diff) | |
download | NetworkManager-27e37a4b171d8937d829340fb084986bd1a02452.tar.gz |
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>
-rw-r--r-- | src/core/devices/nm-device.c | 5 | ||||
-rw-r--r-- | src/libnm-core-aux-intern/nm-libnm-core-utils.h | 1 | ||||
-rw-r--r-- | src/libnm-core-public/nm-dbus-interface.h | 3 | ||||
-rw-r--r-- | src/nmcli/devices.c | 6 | ||||
-rw-r--r-- | src/nmcli/utils.h | 1 |
5 files changed, 15 insertions, 1 deletions
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c index 2aacb63618..9d9be2356b 100644 --- a/src/core/devices/nm-device.c +++ b/src/core/devices/nm-device.c @@ -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); } diff --git a/src/libnm-core-aux-intern/nm-libnm-core-utils.h b/src/libnm-core-aux-intern/nm-libnm-core-utils.h index d32af46fce..7f5e66cf3d 100644 --- a/src/libnm-core-aux-intern/nm-libnm-core-utils.h +++ b/src/libnm-core-aux-intern/nm-libnm-core-utils.h @@ -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)) /*****************************************************************************/ diff --git a/src/libnm-core-public/nm-dbus-interface.h b/src/libnm-core-public/nm-dbus-interface.h index 0cc41190d2..626b200670 100644 --- a/src/libnm-core-public/nm-dbus-interface.h +++ b/src/libnm-core-public/nm-dbus-interface.h @@ -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, diff --git a/src/nmcli/devices.c b/src/nmcli/devices.c index f44c167c4f..c165701b3d 100644 --- a/src/nmcli/devices.c +++ b/src/nmcli/devices.c @@ -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"), }; /*****************************************************************************/ diff --git a/src/nmcli/utils.h b/src/nmcli/utils.h index 17605d394e..962f49fb6b 100644 --- a/src/nmcli/utils.h +++ b/src/nmcli/utils.h @@ -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; |