wifi: clear out ssid in node table entry, cleanup

This commit is contained in:
cinap_lenrek 2013-02-11 02:02:44 +01:00
parent 3376977d06
commit 6e0835f7d8

View file

@ -124,7 +124,9 @@ nodelookup(Wifi *wifi, uchar *bssid, int new)
return wn; return wn;
} }
} }
for(wn = nn = wifi->node; wn != &wifi->node[nelem(wifi->node)]; wn++){ if((nn = wifi->node) == wn)
nn++;
for(wn = wifi->node; wn != &wifi->node[nelem(wifi->node)]; wn++){
if(wn == wifi->bss) if(wn == wifi->bss)
continue; continue;
if(memcmp(wn->bssid, bssid, Eaddrlen) == 0){ if(memcmp(wn->bssid, bssid, Eaddrlen) == 0){
@ -137,10 +139,12 @@ nodelookup(Wifi *wifi, uchar *bssid, int new)
if(!new) if(!new)
return nil; return nil;
memmove(nn->bssid, bssid, Eaddrlen); memmove(nn->bssid, bssid, Eaddrlen);
nn->lastseen = MACHP(0)->ticks; nn->ssid[0] = 0;
nn->channel = 0; nn->ival = 0;
nn->cap = 0; nn->cap = 0;
nn->aid = 0; nn->aid = 0;
nn->channel = 0;
nn->lastseen = MACHP(0)->ticks;
return nn; return nn;
} }
@ -418,7 +422,7 @@ wifictl(Wifi *wifi, void *buf, long n)
} else { } else {
strncpy(wifi->essid, cb->f[1], 32); strncpy(wifi->essid, cb->f[1], 32);
wifi->essid[32] = 0; wifi->essid[32] = 0;
for(wn=wifi->node; wn != &wifi->node[nelem(wifi->node)]; wn++) for(wn = wifi->node; wn != &wifi->node[nelem(wifi->node)]; wn++)
if(strcmp(wifi->essid, wn->ssid) == 0){ if(strcmp(wifi->essid, wn->ssid) == 0){
wifi->bss = wn; wifi->bss = wn;
wifi->status = Sconn; wifi->status = Sconn;
@ -449,7 +453,7 @@ wifistat(Wifi *wifi, void *buf, long n, ulong off)
p = seprint(p, e, "bssid: %E\n", wn != nil ? wn->bssid : zeros); p = seprint(p, e, "bssid: %E\n", wn != nil ? wn->bssid : zeros);
now = MACHP(0)->ticks; now = MACHP(0)->ticks;
for(wn=wifi->node; wn != &wifi->node[nelem(wifi->node)]; wn++){ for(wn = wifi->node; wn != &wifi->node[nelem(wifi->node)]; wn++){
if(wn->lastseen == 0) if(wn->lastseen == 0)
continue; continue;
p = seprint(p, e, "node: %E %.4x %d %ld %d %s\n", p = seprint(p, e, "node: %E %.4x %d %ld %d %s\n",