On Tue, Jan 14, 2020 at 06:12:27PM +0100, Peter Hessler wrote: > Updated diff > >
Look good. Thanks! ok stsp@ > Index: net80211/ieee80211_ioctl.c > =================================================================== > RCS file: /home/cvs/openbsd/src/sys/net80211/ieee80211_ioctl.c,v > retrieving revision 1.78 > diff -u -p -u -p -r1.78 ieee80211_ioctl.c > --- net80211/ieee80211_ioctl.c 13 Jan 2020 09:57:25 -0000 1.78 > +++ net80211/ieee80211_ioctl.c 14 Jan 2020 13:52:18 -0000 > @@ -512,6 +512,8 @@ ieee80211_ioctl(struct ifnet *ifp, u_lon > case SIOCS80211JOIN: > if ((error = suser(curproc)) != 0) > break; > + if (ic->ic_opmode != IEEE80211_M_STA) > + break; > if ((error = copyin(ifr->ifr_data, &join, sizeof(join))) != 0) > break; > if (join.i_len > IEEE80211_NWID_LEN) { > @@ -543,7 +545,13 @@ ieee80211_ioctl(struct ifnet *ifp, u_lon > if (ic->ic_des_esslen == join.i_len && > memcmp(join.i_nwid, ic->ic_des_essid, > join.i_len) == 0) { > + struct ieee80211_node *ni; > + > ieee80211_deselect_ess(ic); > + ni = ieee80211_find_node(ic, > + ic->ic_bss->ni_bssid); > + if (ni != NULL) > + ieee80211_free_node(ic, ni); > error = ENETRESET; > } > /* save nwid for auto-join */ > Index: net80211/ieee80211_node.c > =================================================================== > RCS file: /home/cvs/openbsd/src/sys/net80211/ieee80211_node.c,v > retrieving revision 1.178 > diff -u -p -u -p -r1.178 ieee80211_node.c > --- net80211/ieee80211_node.c 29 Dec 2019 14:00:36 -0000 1.178 > +++ net80211/ieee80211_node.c 14 Jan 2020 13:53:55 -0000 > @@ -72,7 +72,6 @@ int ieee80211_ess_is_better(struct ieee8 > void ieee80211_node_set_timeouts(struct ieee80211_node *); > void ieee80211_setup_node(struct ieee80211com *, struct ieee80211_node *, > const u_int8_t *); > -void ieee80211_free_node(struct ieee80211com *, struct ieee80211_node *); > struct ieee80211_node *ieee80211_alloc_node_helper(struct ieee80211com *); > void ieee80211_node_switch_bss(struct ieee80211com *, struct ieee80211_node > *); > void ieee80211_node_addba_request(struct ieee80211_node *, int); > Index: net80211/ieee80211_node.h > =================================================================== > RCS file: /home/cvs/openbsd/src/sys/net80211/ieee80211_node.h,v > retrieving revision 1.84 > diff -u -p -u -p -r1.84 ieee80211_node.h > --- net80211/ieee80211_node.h 29 Dec 2019 13:49:22 -0000 1.84 > +++ net80211/ieee80211_node.h 14 Jan 2020 13:54:18 -0000 > @@ -533,6 +533,7 @@ void ieee80211_create_ibss(struct ieee80 > struct ieee80211_channel *); > void ieee80211_notify_dtim(struct ieee80211com *); > void ieee80211_set_tim(struct ieee80211com *, int, int); > +void ieee80211_free_node(struct ieee80211com *, struct ieee80211_node *); > > int ieee80211_node_cmp(const struct ieee80211_node *, > const struct ieee80211_node *); > > > -- > This sentence contradicts itself -- no actually it doesn't. > -- Hofstadter > >