Make 'ifconfig nwid' override 'ifconfig join'.
authorstsp <stsp@openbsd.org>
Sat, 1 Sep 2018 08:20:56 +0000 (08:20 +0000)
committerstsp <stsp@openbsd.org>
Sat, 1 Sep 2018 08:20:56 +0000 (08:20 +0000)
commitb2cf04c73adc3d161d9cff1ba53de426864e6657
tree2be78f91b08b435c1cc923887dbe9c6fa19ea261
parenteab152251d44a4b93d3df4cb15e7fcc04c789814
Make 'ifconfig nwid' override 'ifconfig join'.

There was no way to override a decision made by join's network
selection algorithm (apart from disabling the feature by clearing
the join list). Automatic selection is based on heuristics which
cannot always guess correctly so we need to provide an override.

One specific problem was that if 'nwid foo' and 'nwid bar' were
both visible in the scan and only 'nwid foo' was a member of the
join list, then there was no way at all to connect to 'nwid bar'.
The wireless stack would keep selecting 'nwid foo' instead.

'ifconfig iwm0 nwid bar' command will now disable automatic
network selection and force the use of ESSID 'bar'.
Any of these commands will re-enable automatic network selection:
   ifconfig iwm0 -nwid
   ifconfig iwm0 nwid ''
   ifconfig iwm0 join some-network-id

ok phessler@ deraadt@
sys/net80211/ieee80211_ioctl.c
sys/net80211/ieee80211_node.c
sys/net80211/ieee80211_var.h