summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFernando Fernandez Mancera <ffmancera@riseup.net>2021-04-14 13:01:01 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2021-04-22 18:57:30 +0000
commit27e37a4b171d8937d829340fb084986bd1a02452 (patch)
tree3a36787ac3b512710eaefc16bf5b0b10ca829a5e
parentafd8563eb29ea72da0df5c7158eabc3f38000050 (diff)
downloadNetworkManager-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.c5
-rw-r--r--src/libnm-core-aux-intern/nm-libnm-core-utils.h1
-rw-r--r--src/libnm-core-public/nm-dbus-interface.h3
-rw-r--r--src/nmcli/devices.c6
-rw-r--r--src/nmcli/utils.h1
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;