summaryrefslogtreecommitdiff
path: root/src/devices/wifi/nm-wifi-factory.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/wifi/nm-wifi-factory.c')
-rw-r--r--src/devices/wifi/nm-wifi-factory.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/devices/wifi/nm-wifi-factory.c b/src/devices/wifi/nm-wifi-factory.c
index 3e31ddf412..5bc35a892e 100644
--- a/src/devices/wifi/nm-wifi-factory.c
+++ b/src/devices/wifi/nm-wifi-factory.c
@@ -64,6 +64,7 @@ static NMDevice *
new_link (NMDeviceFactory *factory, NMPlatformLink *plink, gboolean *out_ignore, GError **error)
{
NMDeviceWifiCapabilities capabilities;
+ NM80211Mode mode;
g_return_val_if_fail (plink != NULL, NULL);
g_return_val_if_fail (NM_IN_SET (plink->type, NM_LINK_TYPE_WIFI, NM_LINK_TYPE_OLPC_MESH), NULL);
@@ -75,6 +76,16 @@ new_link (NMDeviceFactory *factory, NMPlatformLink *plink, gboolean *out_ignore,
return NULL;
}
+ /* Ignore monitor-mode and other unhandled interface types.
+ * FIXME: keep TYPE_MONITOR devices in UNAVAILABLE state and manage
+ * them if/when they change to a handled type.
+ */
+ mode = nm_platform_wifi_get_mode (NM_PLATFORM_GET, plink->ifindex);
+ if (mode == NM_802_11_MODE_UNKNOWN) {
+ *out_ignore = TRUE;
+ return NULL;
+ }
+
if (plink->type == NM_LINK_TYPE_WIFI)
return nm_device_wifi_new (plink, capabilities);
else