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
>
>