wifi: have to check for both, bssid/essid in wifictl too
This commit is contained in:
parent
6ea8d97438
commit
677746244d
|
@ -644,31 +644,38 @@ wifictl(Wifi *wifi, void *buf, long n)
|
||||||
print("#l%d: debug: %d\n", wifi->ether->ctlrno, wifi->debug);
|
print("#l%d: debug: %d\n", wifi->ether->ctlrno, wifi->debug);
|
||||||
break;
|
break;
|
||||||
case CMessid:
|
case CMessid:
|
||||||
if(cb->f[1] == nil){
|
if(cb->f[1] != nil){
|
||||||
wifi->essid[0] = 0;
|
|
||||||
wifi->bss = nil;
|
|
||||||
setstatus(wifi, Snone);
|
|
||||||
} else {
|
|
||||||
strncpy(wifi->essid, cb->f[1], Essidlen);
|
strncpy(wifi->essid, cb->f[1], Essidlen);
|
||||||
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){
|
||||||
|
/* both must match if specifid */
|
||||||
|
if(memcmp(wifi->bssid, wifi->ether->bcast, Eaddrlen) != 0
|
||||||
|
&& memcmp(wifi->bssid, wn->bssid, Eaddrlen) != 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
wifi->bss = wn;
|
wifi->bss = wn;
|
||||||
setstatus(wifi, Sconn);
|
setstatus(wifi, Sconn);
|
||||||
sendauth(wifi, wn);
|
sendauth(wifi, wn);
|
||||||
break;
|
goto done;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} else
|
||||||
|
wifi->essid[0] = 0;
|
||||||
|
wifi->bss = nil;
|
||||||
|
setstatus(wifi, Snone);
|
||||||
break;
|
break;
|
||||||
case CMbssid:
|
case CMbssid:
|
||||||
memmove(wifi->bssid, addr, Eaddrlen);
|
memmove(wifi->bssid, addr, Eaddrlen);
|
||||||
if(wn == nil){
|
if(wn != nil){
|
||||||
wifi->bss = nil;
|
/* both must match if specifid */
|
||||||
setstatus(wifi, Snone);
|
if(wifi->essid[0] == 0 || strcmp(wifi->essid, wn->ssid) == 0){
|
||||||
} else {
|
|
||||||
wifi->bss = wn;
|
wifi->bss = wn;
|
||||||
setstatus(wifi, Sconn);
|
setstatus(wifi, Sconn);
|
||||||
sendauth(wifi, wn);
|
sendauth(wifi, wn);
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
wifi->bss = nil;
|
||||||
|
setstatus(wifi, Snone);
|
||||||
break;
|
break;
|
||||||
case CMauth:
|
case CMauth:
|
||||||
setstatus(wifi, Sauth);
|
setstatus(wifi, Sauth);
|
||||||
|
@ -692,6 +699,7 @@ wifictl(Wifi *wifi, void *buf, long n)
|
||||||
setstatus(wifi, Sassoc);
|
setstatus(wifi, Sassoc);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
done:
|
||||||
poperror();
|
poperror();
|
||||||
free(cb);
|
free(cb);
|
||||||
return n;
|
return n;
|
||||||
|
|
Loading…
Reference in a new issue