While a wifi interface is configured to use WEP 'ifconfig scan' will
mistakenly show all WPA APs as WEP ones. Fix below.

This is a small ABI change in struct ieee80211_nodereq.

Index: sys/net80211/ieee80211_ioctl.c
===================================================================
RCS file: /cvs/src/sys/net80211/ieee80211_ioctl.c,v
retrieving revision 1.48
diff -u -p -r1.48 ieee80211_ioctl.c
--- sys/net80211/ieee80211_ioctl.c      19 Jan 2017 01:07:35 -0000      1.48
+++ sys/net80211/ieee80211_ioctl.c      11 Mar 2017 00:44:41 -0000
@@ -107,6 +107,11 @@ ieee80211_node2req(struct ieee80211com *
        /* RSN */
        nr->nr_rsnciphers = ni->ni_rsnciphers;
        nr->nr_rsnakms = 0;
+       nr->nr_rsnprotos = 0;
+       if (ni->ni_rsnprotos & IEEE80211_PROTO_WPA)
+               nr->nr_rsnprotos |= IEEE80211_WPA_PROTO_WPA1;
+       if (ni->ni_rsnprotos & IEEE80211_PROTO_RSN)
+               nr->nr_rsnprotos |= IEEE80211_WPA_PROTO_WPA2;
        if (ni->ni_rsnakms & IEEE80211_AKM_8021X)
                nr->nr_rsnakms |= IEEE80211_WPA_AKM_8021X;
        if (ni->ni_rsnakms & IEEE80211_AKM_PSK)
Index: sys/net80211/ieee80211_ioctl.h
===================================================================
RCS file: /cvs/src/sys/net80211/ieee80211_ioctl.h,v
retrieving revision 1.27
diff -u -p -r1.27 ieee80211_ioctl.h
--- sys/net80211/ieee80211_ioctl.h      15 Aug 2016 22:14:19 -0000      1.27
+++ sys/net80211/ieee80211_ioctl.h      11 Mar 2017 00:33:59 -0000
@@ -328,6 +328,7 @@ struct ieee80211_nodereq {
        u_int16_t       nr_state;       /* node state in the cache */
 
        /* RSN */
+       u_int           nr_rsnprotos;
        u_int           nr_rsnciphers;
        u_int           nr_rsnakms;
 
Index: sbin/ifconfig/ifconfig.c
===================================================================
RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v
retrieving revision 1.337
diff -u -p -r1.337 ifconfig.c
--- sbin/ifconfig/ifconfig.c    21 Jan 2017 08:31:44 -0000      1.337
+++ sbin/ifconfig/ifconfig.c    11 Mar 2017 00:45:24 -0000
@@ -2375,9 +2375,9 @@ ieee80211_printnode(struct ieee80211_nod
        if (nr->nr_capinfo) {
                printb_status(nr->nr_capinfo, IEEE80211_CAPINFO_BITS);
                if (nr->nr_capinfo & IEEE80211_CAPINFO_PRIVACY) {
-                       if (nr->nr_rsnciphers & IEEE80211_WPA_CIPHER_CCMP)
+                       if (nr->nr_rsnprotos & IEEE80211_WPA_PROTO_WPA2)
                                fputs(",wpa2", stdout);
-                       else if (nr->nr_rsnciphers & IEEE80211_WPA_CIPHER_TKIP)
+                       else if (nr->nr_rsnprotos & IEEE80211_WPA_PROTO_WPA1)
                                fputs(",wpa1", stdout);
                        else
                                fputs(",wep", stdout);

Reply via email to