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

Reply via email to