please ignore
On Mon, Aug 06, 2018 at 03:18:59PM +0200, Florian Obser wrote:
>
> Inspired by stsp's recent ieee80211_add_ess commit.
>
> Refactor ieee80211_del_ess():
> nwids are binary data with an explicit length, so treat them as such
> instead of treating them like strings with a fixed len of
> IEEE80211_NWID_LEN.
>
> This recycles the ``all'' parameter and calls it len. If len == 0 it
> means delete all elements. If we want this particular bikeshed banana
> shaped I can pass in an additional parameter like this:
>
> ieee80211_del_ess(struct ieee80211com *ic, u_int8_t *nwid, int len, int
> all)
>
> Comments, OK?
>
> set_ess and match_ess are next...
>
> diff --git ieee80211_ioctl.c ieee80211_ioctl.c
> index fd0b1116bba..8155ca6a943 100644
> --- ieee80211_ioctl.c
> +++ ieee80211_ioctl.c
> @@ -459,7 +459,7 @@ ieee80211_ioctl(struct ifnet *ifp, u_long cmd, caddr_t
> data)
> break;
> }
> if (join.i_flags & IEEE80211_JOIN_DEL)
> - ieee80211_del_ess(ic, join.i_nwid, join.i_len ? 0 : 1);
> + ieee80211_del_ess(ic, join.i_nwid, join.i_len);
> memset(ic->ic_des_essid, 0, IEEE80211_NWID_LEN);
> ic->ic_des_esslen = join.i_len;
> memcpy(ic->ic_des_essid, join.i_nwid, join.i_len);
> diff --git ieee80211_node.c ieee80211_node.c
> index 3a821b235a2..528ac3a7fb0 100644
> --- ieee80211_node.c
> +++ ieee80211_node.c
> @@ -178,17 +178,17 @@ ieee80211_print_ess_list(struct ieee80211com *ic)
> }
>
> void
> -ieee80211_del_ess(struct ieee80211com *ic, char *nwid, int all)
> +ieee80211_del_ess(struct ieee80211com *ic, u_int8_t *nwid, int len)
> {
> struct ieee80211_ess *ess, *next;
>
> TAILQ_FOREACH_SAFE(ess, &ic->ic_ess, ess_next, next) {
> - if (all == 1 || (memcmp(ess->essid, nwid,
> - IEEE80211_NWID_LEN) == 0)) {
> + if (len == 0 || (ess->esslen == len &&
> + memcmp(ess->essid, nwid, len) == 0)) {
> TAILQ_REMOVE(&ic->ic_ess, ess, ess_next);
> explicit_bzero(ess, sizeof(*ess));
> free(ess, M_DEVBUF, sizeof(*ess));
> - if (all != 1)
> + if (len != 0)
> return;
> }
> }
> @@ -543,7 +543,7 @@ ieee80211_node_detach(struct ifnet *ifp)
> (*ic->ic_node_free)(ic, ic->ic_bss);
> ic->ic_bss = NULL;
> }
> - ieee80211_del_ess(ic, NULL, 1);
> + ieee80211_del_ess(ic, NULL, 0);
> ieee80211_free_allnodes(ic, 1);
> #ifndef IEEE80211_STA_ONLY
> free(ic->ic_aid_bitmap, M_DEVBUF,
> diff --git ieee80211_var.h ieee80211_var.h
> index 406b1601106..47408f4b6da 100644
> --- ieee80211_var.h
> +++ ieee80211_var.h
> @@ -452,7 +452,7 @@ enum ieee80211_phymode ieee80211_chan2mode(struct
> ieee80211com *,
> void ieee80211_disable_wep(struct ieee80211com *);
> void ieee80211_disable_rsn(struct ieee80211com *);
> int ieee80211_add_ess(struct ieee80211com *, int, int);
> -void ieee80211_del_ess(struct ieee80211com *, char *, int);
> +void ieee80211_del_ess(struct ieee80211com *, u_int8_t *, int);
> void ieee80211_set_ess(struct ieee80211com *, char *);
>
> extern int ieee80211_cache_size;
>
>
> --
> I'm not entirely sure you are real.
>
--
I'm not entirely sure you are real.