Download raw body.
make tcpdump show 802.11 QoS TID
Make tcpdump show the QoS TID with -v.
Avoids a roundtrip into wireshark for me when debugging QoS related stuff.
OK?
M usr.sbin/tcpdump/print-802_11.c | 6+ 0-
1 file changed, 6 insertions(+), 0 deletions(-)
commit - 518016afd7445de7b41ff08566393e1fcdc5b157
commit + bd014d40ff0fb8fb204496f92d2b358ae3f540a3
blob - b6b7ade0f2e41151ce96a6c3763e28cc2c7fabba
blob + dddcba1cf65e8480b42ebfda0518eaf0213830ac
--- usr.sbin/tcpdump/print-802_11.c
+++ usr.sbin/tcpdump/print-802_11.c
@@ -187,6 +187,7 @@ ieee80211_data(struct ieee80211_frame *wh, u_int len)
(IEEE80211_FC0_TYPE_MASK | IEEE80211_FC0_SUBTYPE_QOS)) ==
(IEEE80211_FC0_TYPE_DATA | IEEE80211_FC0_SUBTYPE_QOS));
u_char *esrc = NULL, *edst = NULL;
+ uint16_t qos = 0;
if (hasqos) {
struct ieee80211_qosframe *wq;
@@ -195,6 +196,7 @@ ieee80211_data(struct ieee80211_frame *wh, u_int len)
TCHECK(*wq);
t += sizeof(*wq);
datalen = len - sizeof(*wq);
+ memcpy(&qos, wq->i_qos, sizeof(qos));
} else {
TCHECK(*wh);
t += sizeof(*wh);
@@ -224,6 +226,7 @@ ieee80211_data(struct ieee80211_frame *wh, u_int len)
datalen = len - sizeof(*w4);
esrc = w4->i_addr4;
edst = w4->i_addr3;
+ memcpy(&qos, w4->i_qos, sizeof(qos));
} else {
struct ieee80211_frame_addr4 *w4;
@@ -237,6 +240,9 @@ ieee80211_data(struct ieee80211_frame *wh, u_int len)
break;
}
+ if (hasqos & vflag)
+ printf("TID %u ", le16toh(qos) & IEEE80211_QOS_TID);
+
if (data && esrc)
llc_print(t, datalen, datalen, esrc, edst);
else if (eflag && esrc)
make tcpdump show 802.11 QoS TID