about summary refs log tree commit diff
path: root/src/platform/wifi/wifi-utils-nl80211.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/wifi/wifi-utils-nl80211.c')
-rw-r--r--src/platform/wifi/wifi-utils-nl80211.c59
1 files changed, 12 insertions, 47 deletions
diff --git a/src/platform/wifi/wifi-utils-nl80211.c b/src/platform/wifi/wifi-utils-nl80211.c
index 25ebd1b3..752da926 100644
--- a/src/platform/wifi/wifi-utils-nl80211.c
+++ b/src/platform/wifi/wifi-utils-nl80211.c
@@ -20,7 +20,8 @@
  * Copyright (C) 2011 Intel Corporation. All rights reserved.
  */
 
-#include <config.h>
+#include "config.h"
+
 #include <errno.h>
 #include <string.h>
 #include <sys/ioctl.h>
@@ -442,7 +443,7 @@ wifi_nl80211_get_ssid (WifiData *data)
 }
 
 static gboolean
-wifi_nl80211_get_bssid (WifiData *data, struct ether_addr *out_bssid)
+wifi_nl80211_get_bssid (WifiData *data, guint8 *out_bssid)
 {
 	WifiDataNl80211 *nl80211 = (WifiDataNl80211 *) data;
 	struct nl80211_bss_info bss_info;
@@ -679,11 +680,20 @@ static int nl80211_wiphy_info_handler (struct nl_msg *msg, void *arg)
 	static struct nla_policy freq_policy[NL80211_FREQUENCY_ATTR_MAX + 1] = {
 		[NL80211_FREQUENCY_ATTR_FREQ] = { .type = NLA_U32 },
 		[NL80211_FREQUENCY_ATTR_DISABLED] = { .type = NLA_FLAG },
+#ifdef NL80211_FREQUENCY_ATTR_NO_IR
+		[NL80211_FREQUENCY_ATTR_NO_IR] = { .type = NLA_FLAG },
+#else
 		[NL80211_FREQUENCY_ATTR_PASSIVE_SCAN] = { .type = NLA_FLAG },
 		[NL80211_FREQUENCY_ATTR_NO_IBSS] = { .type = NLA_FLAG },
+#endif
 		[NL80211_FREQUENCY_ATTR_RADAR] = { .type = NLA_FLAG },
 		[NL80211_FREQUENCY_ATTR_MAX_TX_POWER] = { .type = NLA_U32 },
 	};
+#ifdef NL80211_FREQUENCY_ATTR_NO_IR
+	G_STATIC_ASSERT (NL80211_FREQUENCY_ATTR_PASSIVE_SCAN == NL80211_FREQUENCY_ATTR_NO_IR && NL80211_FREQUENCY_ATTR_NO_IBSS == NL80211_FREQUENCY_ATTR_NO_IR);
+#else
+	G_STATIC_ASSERT (NL80211_FREQUENCY_ATTR_PASSIVE_SCAN != NL80211_FREQUENCY_ATTR_NO_IBSS);
+#endif
 
 	if (nla_parse (tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
 	               genlmsg_attrlen (gnlh, 0), NULL) < 0)
@@ -924,48 +934,3 @@ error:
 	return NULL;
 }
 
-gboolean
-wifi_nl80211_is_wifi (const char *iface)
-{
-	struct nl_sock *nl_sock;
-	struct nl_cb *nl_cb = NULL;
-	struct nl_msg *msg = NULL;
-	int id, ifindex;
-	struct nl80211_iface_info iface_info = {
-		.mode = NM_802_11_MODE_UNKNOWN,
-	};
-	gboolean is_wifi = FALSE;
-
-	nl_sock = nl_socket_alloc ();
-	if (nl_sock == NULL)
-		return FALSE;
-
-	if (genl_connect (nl_sock))
-		goto error;
-
-	ifindex = nm_platform_link_get_ifindex (iface);
-	if (ifindex < 0)
-		goto error;
-
-	id = genl_ctrl_resolve (nl_sock, "nl80211");
-	if (id < 0)
-		goto error;
-
-	nl_cb = nl_cb_alloc (NL_CB_DEFAULT);
-	if (nl_cb) {
-		msg = _nl80211_alloc_msg (id, ifindex, -1, NL80211_CMD_GET_INTERFACE, 0);
-		if (_nl80211_send_and_recv (nl_sock,
-			                        nl_cb,
-			                        msg,
-			                        nl80211_iface_info_handler,
-			                        &iface_info) >= 0)
-			is_wifi = (iface_info.mode != NM_802_11_MODE_UNKNOWN);
-	}
-
- error:
-	if (nl_cb)
-		nl_cb_put (nl_cb);
-	nl_socket_free (nl_sock);
-	return is_wifi;
-}
-