diff options
Diffstat (limited to 'package/network/utils/iwinfo/src/iwinfo_wext.c')
-rw-r--r-- | package/network/utils/iwinfo/src/iwinfo_wext.c | 13 |
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; } |