X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=contrib%2Fpackage%2Fiwinfo%2Fsrc%2Fiwinfo_wext.c;h=298fd931786399150aa24176bc6c52403c572f20;hp=8fe0305f1d9cf1bdf1128341d267b14744dc375b;hb=66736c857476550c68720a4cf933ab2f6d04031d;hpb=07fafab9c16ec600d6621c9c67d7474c63ff705b diff --git a/contrib/package/iwinfo/src/iwinfo_wext.c b/contrib/package/iwinfo/src/iwinfo_wext.c index 8fe0305f1..298fd9317 100644 --- a/contrib/package/iwinfo/src/iwinfo_wext.c +++ b/contrib/package/iwinfo/src/iwinfo_wext.c @@ -89,7 +89,10 @@ static int wext_ioctl(const char *ifname, int cmd, struct iwreq *wrq) { /* prepare socket */ if( ioctl_socket == -1 ) + { ioctl_socket = socket(AF_INET, SOCK_DGRAM, 0); + fcntl(ioctl_socket, F_SETFD, fcntl(ioctl_socket, F_GETFD) | FD_CLOEXEC); + } if( !strncmp(ifname, "mon.", 4) ) strncpy(wrq->ifr_name, &ifname[4], IFNAMSIZ); @@ -110,6 +113,14 @@ int wext_probe(const char *ifname) return 0; } +void wext_close(void) +{ + wext_scan_close(); + + if( ioctl_socket > -1 ) + close(ioctl_socket); +} + int wext_get_mode(const char *ifname, char *buf) { struct iwreq wrq; @@ -433,8 +444,9 @@ int wext_get_freqlist(const char *ifname, char *buf, int *len) for(i = 0; i < range.num_frequency; i++) { - entry.mhz = wext_freq2mhz(&range.freq[i]); - entry.channel = range.freq[i].i; + entry.mhz = wext_freq2mhz(&range.freq[i]); + entry.channel = range.freq[i].i; + entry.restricted = 0; memcpy(&buf[bl], &entry, sizeof(struct iwinfo_freqlist_entry)); bl += sizeof(struct iwinfo_freqlist_entry);