summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Heider <a.heider@gmail.com>2023-01-30 19:57:57 +0100
committerChristian Marangi <ansuelsmth@gmail.com>2023-02-06 21:31:45 +0100
commitc7eb8ebe33de2ff2d08064258edb047e5ac09f29 (patch)
tree39a354172b3cd97f6964e4245b4e05e7931ddf15
parent1e4e709d6f26cc38411ca189bab04f857b444ef3 (diff)
downloadiwinfo-c7eb8ebe33de2ff2d08064258edb047e5ac09f29.tar.gz
nl80211: restore iterating over all devices in nl80211_phy2ifname()
This reverts to the earlier behaviour, because: * phys can be renamed, which breaks hardcoding "phy%d" * /sys/class/ieee80211/*/device can return networks of other phys, since "device" is a symlink which can have multiple phys The earlier behaviour fixes both points. Fixes: 6194aaf0 "nl80211: simplify iterating over phy's devices" Signed-off-by: Andre Heider <a.heider@gmail.com> Tested-by: Olcay Korkmaz <nuke_mania@hotmail.com> [ drop extra Fixes tag related to openwrt issue ] Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
-rw-r--r--iwinfo_nl80211.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/iwinfo_nl80211.c b/iwinfo_nl80211.c
index 5bc2f51..50bb8f0 100644
--- a/iwinfo_nl80211.c
+++ b/iwinfo_nl80211.c
@@ -825,14 +825,16 @@ static char * nl80211_phy2ifname(const char *ifname)
memset(nif, 0, sizeof(nif));
- snprintf(buffer, sizeof(buffer),
- "/sys/class/ieee80211/phy%d/device/net", phyidx);
-
- if ((d = opendir(buffer)) != NULL)
+ if ((d = opendir("/sys/class/net")) != NULL)
{
while ((e = readdir(d)) != NULL)
{
snprintf(buffer, sizeof(buffer),
+ "/sys/class/net/%s/phy80211/index", e->d_name);
+ if (nl80211_readint(buffer) != phyidx)
+ continue;
+
+ snprintf(buffer, sizeof(buffer),
"/sys/class/net/%s/ifindex", e->d_name);
cifidx = nl80211_readint(buffer);