On 03/01/15(Sat) 12:26, Stefan Sperling wrote:
> On Fri, Jan 02, 2015 at 09:02:53PM +0100, Simon Nicolussi wrote:
> > Hello,
> > 
> > 31C3 had lots of access points sharing a network ID. Coming up with an
> > AWK script to determine the network with the best coverage is easy, but
> > still harder than simply choosing the first one that ifconfig iwn0 scan
> > would spit out if only its output was sorted by signal strength (and in
> > decreasing order, as by convention).
> 
> Thanks! I like this. Works as expected for me on STAs and APs.
> 
> Note that 'ifconfig scan' is also used to list associated STAs when
> running as AP. So this will also sort associated STAs by received
> signal strength indication.

I like it too.  I guess it should fit on the RAMDISK media as well now
that list_cloners() uses qsort(3).

> > Index: ifconfig.c
> > ===================================================================
> > RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v
> > retrieving revision 1.290
> > diff -u -p -u -r1.290 ifconfig.c
> > --- ifconfig.c      1 Jan 2015 22:53:39 -0000       1.290
> > +++ ifconfig.c      2 Jan 2015 18:29:06 -0000
> > @@ -2221,6 +2221,17 @@ ieee80211_listchans(void)
> >     }
> >  }
> >  
> > +/*
> > + * Returns an integer less than, equal to, or greater than zero if nr1's
> > + * RSSI is respectively greater than, equal to, or less than nr2's RSSI.
> > + */
> > +static int
> > +rssicmp(const void *nr1, const void *nr2)
> > +{
> > +   const struct ieee80211_nodereq *x = nr1, *y = nr2;
> > +   return y->nr_rssi < x->nr_rssi ? -1 : y->nr_rssi > x->nr_rssi;
> > +}
> > +
> >  void
> >  ieee80211_listnodes(void)
> >  {
> > @@ -2256,6 +2267,8 @@ ieee80211_listnodes(void)
> >  
> >     if (!na.na_nodes)
> >             printf("\t\tnone\n");
> > +   else
> > +           qsort(nr, na.na_nodes, sizeof(*nr), rssicmp);
> >  
> >     for (i = 0; i < na.na_nodes; i++) {
> >             printf("\t\t");
> > 
> > -- 
> > Simon Nicolussi <si...@sinic.name>
> > http{s,}://{www.,}sinic.name/
> 

Reply via email to