summaryrefslogtreecommitdiff
path: root/package/network/utils/iwinfo/src/iwinfo_wext.c
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/utils/iwinfo/src/iwinfo_wext.c')
-rw-r--r--package/network/utils/iwinfo/src/iwinfo_wext.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/package/network/utils/iwinfo/src/iwinfo_wext.c b/package/network/utils/iwinfo/src/iwinfo_wext.c
index a6cc516..a4b94e3 100644
--- a/package/network/utils/iwinfo/src/iwinfo_wext.c
+++ b/package/network/utils/iwinfo/src/iwinfo_wext.c
@@ -123,7 +123,16 @@ static int wext_get_bssid(const char *ifname, char *buf)
{
struct iwreq wrq;
- if(wext_ioctl(ifname, SIOCGIWAP, &wrq) >= 0)
+ char cmd[256];
+ FILE *fp = NULL;
+
+ memset(cmd, 0, sizeof(cmd));
+ sprintf(cmd, "ifconfig %s | grep UP", ifname);
+ fp = popen(cmd, "r");
+ fscanf(fp, "%s\n", buf);
+ pclose(fp);
+
+ if(strlen(buf)>=2 && wext_ioctl(ifname, SIOCGIWAP, &wrq) >= 0)
{
sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X",
(uint8_t)wrq.u.ap_addr.sa_data[0], (uint8_t)wrq.u.ap_addr.sa_data[1],
@@ -132,6 +141,8 @@ static int wext_get_bssid(const char *ifname, char *buf)
return 0;
}
+ else
+ sprintf(buf, "00:00:00:00:00:00");
return -1;
}