struct iwreq wreq;
memset(&wreq, 0, sizeof(struct iwreq));
wreq.u.essid.length = IW_ESSID_MAX_SIZE+1;
snprintf(wreq.ifr_name, sizeof(wreq.ifr_name), "%s", iface);
struct iwreq wreq;
memset(&wreq, 0, sizeof(struct iwreq));
wreq.u.essid.length = IW_ESSID_MAX_SIZE+1;
snprintf(wreq.ifr_name, sizeof(wreq.ifr_name), "%s", iface);
static int
load_ieee80211_nodereq(const char *iface, struct ieee80211_nodereq *nr)
{
struct ieee80211_bssid bssid;
int sockfd;
static int
load_ieee80211_nodereq(const char *iface, struct ieee80211_nodereq *nr)
{
struct ieee80211_bssid bssid;
int sockfd;
fprintf(stderr, "socket 'AF_INET': %s\n",
strerror(errno));
return 0;
}
strlcpy(bssid.i_name, iface, sizeof(bssid.i_name));
fprintf(stderr, "socket 'AF_INET': %s\n",
strerror(errno));
return 0;
}
strlcpy(bssid.i_name, iface, sizeof(bssid.i_name));
fprintf(stderr, "ioctl 'SIOCG80211BSSID': %s\n",
strerror(errno));
close(sockfd);
return 0;
}
strlcpy(nr->nr_ifname, iface, sizeof(nr->nr_ifname));
fprintf(stderr, "ioctl 'SIOCG80211BSSID': %s\n",
strerror(errno));
close(sockfd);
return 0;
}
strlcpy(nr->nr_ifname, iface, sizeof(nr->nr_ifname));
- memmove(&nr->nr_macaddr, bssid.i_bssid, sizeof(nr->nr_macaddr));
- if ((ioctl(sockfd, SIOCG80211NODE, nr)) == -1 && nr->nr_rssi) {
+ memcpy(&nr->nr_macaddr, bssid.i_bssid, sizeof(nr->nr_macaddr));
+ if ((ioctl(sockfd, SIOCG80211NODE, nr)) < 0 && nr->nr_rssi) {
if (load_ieee80211_nodereq(iface, &nr)) {
return bprintf("%s", nr.nr_nwid);
}
if (load_ieee80211_nodereq(iface, &nr)) {
return bprintf("%s", nr.nr_nwid);
}