summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2016-04-21 14:25:38 +0200
committerThomas Haller <thaller@redhat.com>2016-04-21 15:05:34 +0200
commite714a20bc2464dc97492731a0d656e8c6bab65aa (patch)
treed04edccc96885c63862679c7e38a3cfc8df863ff
parentaa509fd8fe9347244947e45070ef84d05b5bd8e3 (diff)
downloadNetworkManager-e714a20bc2464dc97492731a0d656e8c6bab65aa.tar.gz
platform: refactor wifi_utils_is_wifi() not to pass sysfs_path
wifi_utils_is_wifi() only has one caller, so it's very clear what the passed in @sysfs_path contains. Instead of accepting a redundant argument, compute the sysfs path internally based on @iface alone.
-rw-r--r--src/platform/nm-linux-platform.c2
-rw-r--r--src/platform/wifi/wifi-utils.c21
-rw-r--r--src/platform/wifi/wifi-utils.h2
3 files changed, 14 insertions, 11 deletions
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index f1f4edac9c..931a25391c 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -736,7 +736,7 @@ _linktype_get_type (NMPlatform *platform,
}
/* Fallback for drivers that don't call SET_NETDEV_DEVTYPE() */
- if (wifi_utils_is_wifi (ifname, sysfs_path))
+ if (wifi_utils_is_wifi (ifname))
return NM_LINK_TYPE_WIFI;
if (arptype == ARPHRD_ETHER) {
diff --git a/src/platform/wifi/wifi-utils.c b/src/platform/wifi/wifi-utils.c
index 38e5a0545e..9b981f3b38 100644
--- a/src/platform/wifi/wifi-utils.c
+++ b/src/platform/wifi/wifi-utils.c
@@ -21,16 +21,18 @@
#include "nm-default.h"
+#include "wifi-utils.h"
+
#include <sys/stat.h>
#include <stdio.h>
#include <string.h>
-#include "wifi-utils.h"
#include "wifi-utils-private.h"
#include "wifi-utils-nl80211.h"
#if HAVE_WEXT
#include "wifi-utils-wext.h"
#endif
+#include "nm-core-utils.h"
gpointer
wifi_data_new (const char *iface, int ifindex, gsize len)
@@ -162,19 +164,20 @@ wifi_utils_deinit (WifiData *data)
}
gboolean
-wifi_utils_is_wifi (const char *iface, const char *sysfs_path)
+wifi_utils_is_wifi (const char *iface)
{
- char phy80211_path[255];
+ char phy80211_path[NM_STRLEN ("/sys/class/net/123456789012345/phy80211\0") + 100 /*safety*/];
struct stat s;
g_return_val_if_fail (iface != NULL, FALSE);
- if (sysfs_path) {
- /* Check for nl80211 sysfs paths */
- g_snprintf (phy80211_path, sizeof (phy80211_path), "%s/phy80211", sysfs_path);
- if ((stat (phy80211_path, &s) == 0 && (s.st_mode & S_IFDIR)))
- return TRUE;
- }
+ nm_sprintf_buf (phy80211_path,
+ "/sys/class/net/%s/phy80211",
+ NM_ASSERT_VALID_PATH_COMPONENT (iface));
+ nm_assert (strlen (phy80211_path) < sizeof (phy80211_path) - 1);
+
+ if ((stat (phy80211_path, &s) == 0 && (s.st_mode & S_IFDIR)))
+ return TRUE;
#if HAVE_WEXT
if (wifi_wext_is_wifi (iface))
diff --git a/src/platform/wifi/wifi-utils.h b/src/platform/wifi/wifi-utils.h
index 21dac9e9cc..f0a5a7e7f1 100644
--- a/src/platform/wifi/wifi-utils.h
+++ b/src/platform/wifi/wifi-utils.h
@@ -29,7 +29,7 @@
typedef struct WifiData WifiData;
-gboolean wifi_utils_is_wifi (const char *iface, const char *sysfs_path);
+gboolean wifi_utils_is_wifi (const char *iface);
WifiData *wifi_utils_init (const char *iface, int ifindex, gboolean check_scan);