On Wed, Apr 08, 2015 at 01:01:51PM +0100, Stuart Henderson wrote:
> This teaches tcpdump to print the channel switch announcements used
> for DFS and Ruckus ChannelFly, described in 7.3.2.20 in 802.11h-2003.
> I think the "noTX" is used for radar-detected DFS where you want
> everybody to shut up quickly, I don't have a good way to trigger
> that ;)
> 
> I considered hiding output behind -v, but I think it's important enough
> to display by default (it isn't present in every beacon, only in the ones
> immediately preceding a channel switch, so doesn't add spam to the normal
> case).
> 
> Sample output below the diff.
> 
> Any comments/OKs?  Thanks.

OK with me.

> Index: sys/net80211/ieee80211.h
> ===================================================================
> RCS file: /cvs/src/sys/net80211/ieee80211.h,v
> retrieving revision 1.50
> diff -u -p -r1.50 ieee80211.h
> --- sys/net80211/ieee80211.h  17 Jan 2013 02:51:56 -0000      1.50
> +++ sys/net80211/ieee80211.h  8 Apr 2015 11:48:11 -0000
> @@ -327,6 +327,7 @@ enum {
>       IEEE80211_ELEMID_EDCAPARMS              = 12,
>       IEEE80211_ELEMID_CHALLENGE              = 16,
>       /* 17-31 reserved for challenge text extension */
> +     IEEE80211_ELEMID_CSA                    = 37,   /* 11h */
>       IEEE80211_ELEMID_ERP                    = 42,
>       IEEE80211_ELEMID_HTCAPS                 = 45,   /* 11n */
>       IEEE80211_ELEMID_QOS_CAP                = 46,
> Index: usr.sbin/tcpdump/print-802_11.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/tcpdump/print-802_11.c,v
> retrieving revision 1.16
> diff -u -p -r1.16 print-802_11.c
> --- usr.sbin/tcpdump/print-802_11.c   16 Jan 2015 06:40:21 -0000      1.16
> +++ usr.sbin/tcpdump/print-802_11.c   8 Apr 2015 11:48:11 -0000
> @@ -323,6 +323,10 @@ ieee80211_elements(struct ieee80211_fram
>                       if (vflag)
>                               ieee80211_print_element(data, len);
>                       break;
> +             case IEEE80211_ELEMID_CSA:
> +                     printf(", csa (chan %u count %u%s)", data[1], data[2],
> +                         (data[0] == 1) ? " noTX" : "");
> +                     break;
>               case IEEE80211_ELEMID_ERP:
>                       printf(", erp");
>                       if (vflag)
> 
> 12:24:47.546150 802.11: beacon, ssid (Y2), rates, ds, tim, erp, xrates, 
> vendor, 45:26, 61:22, 127:4, vendor, rsn, <radiotap v0, chan 11, 11g, sig 
> -62dBm, noise -91dBm>
> 12:24:49.899297 802.11: beacon, ssid (Y2), rates, ds, tim, csa (chan 9 count 
> 6), erp, xrates, vendor, 45:26, 61:22, 127:4, vendor, rsn, <radiotap v0, chan 
> 11, 11g, sig -59dBm, noise -91dBm>
> 12:24:50.001676 802.11: beacon, ssid (Y2), rates, ds, tim, csa (chan 9 count 
> 5), erp, xrates, vendor, 45:26, 61:22, 127:4, vendor, rsn, <radiotap v0, chan 
> 11, 11g, sig -54dBm, noise -91dBm>
> 12:24:50.104076 802.11: beacon, ssid (Y2), rates, ds, tim, csa (chan 9 count 
> 4), erp, xrates, vendor, 45:26, 61:22, 127:4, vendor, rsn, <radiotap v0, chan 
> 11, 11g, sig -63dBm, noise -83dBm>
> 12:24:50.206478 802.11: beacon, ssid (Y2), rates, ds, tim, csa (chan 9 count 
> 3), erp, xrates, vendor, 45:26, 61:22, 127:4, vendor, rsn, <radiotap v0, chan 
> 11, 11g, sig -62dBm, noise -83dBm>
> 12:24:50.308877 802.11: beacon, ssid (Y2), rates, ds, tim, csa (chan 9 count 
> 2), erp, xrates, vendor, 45:26, 61:22, 127:4, vendor, rsn, <radiotap v0, chan 
> 11, 11g, sig -62dBm, noise -91dBm>
> 12:24:50.411272 802.11: beacon, ssid (Y2), rates, ds, tim, csa (chan 9 count 
> 1), erp, xrates, vendor, 45:26, 61:22, 127:4, vendor, rsn, <radiotap v0, chan 
> 11, 11g, sig -64dBm, noise -91dBm>

Reply via email to