]> The Tcpdump Group git mirrors - tcpdump/commitdiff
From David Young: print Ack/Poll information for data frames with
authorguy <guy>
Tue, 4 Feb 2003 05:53:21 +0000 (05:53 +0000)
committerguy <guy>
Tue, 4 Feb 2003 05:53:21 +0000 (05:53 +0000)
contention-free Ack or Poll indications, and print flag bits from the
Frame Control field if "-v" was specified.

ieee802_11.h
print-802_11.c

index f91ba7577fbe75534d607cd2b0e170f13f94aaed..5e29c816093a383aa4436db14637bf255df7d0ff 100644 (file)
@@ -1,4 +1,4 @@
-/* @(#) $Header: /tcpdump/master/tcpdump/ieee802_11.h,v 1.6 2002-12-11 07:13:52 guy Exp $ (LBL) */
+/* @(#) $Header: /tcpdump/master/tcpdump/ieee802_11.h,v 1.7 2003-02-04 05:53:21 guy Exp $ (LBL) */
 /*
  * Copyright (c) 2001
  *     Fortress Technologies
 #define CTRL_CF_END    0xE
 #define CTRL_END_ACK   0xF
 
+#define DATA_DATA              0x0
+#define DATA_DATA_CF_ACK       0x1
+#define DATA_DATA_CF_POLL      0x2
+#define DATA_DATA_CF_ACK_POLL  0x3
+#define DATA_NODATA            0x4
+#define DATA_NODATA_CF_ACK     0x5
+#define DATA_NODATA_CF_POLL    0x6
+#define DATA_NODATA_CF_ACK_POLL        0x7
+
 /*
  * Bits in the frame control field.
  */
index 73b52b98bc1ef09c6e1b806695ade4f2a4d7c528..a0e487856cb18d4f2908e93bbcd3dfbcc4422875 100644 (file)
@@ -22,7 +22,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-802_11.c,v 1.19 2002-12-19 09:39:10 guy Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/print-802_11.c,v 1.20 2003-02-04 05:53:22 guy Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -594,6 +594,24 @@ static void
 data_header_print(u_int16_t fc, const u_char *p, const u_int8_t **srcp,
     const u_int8_t **dstp)
 {
+       switch (FC_SUBTYPE(fc)) {
+       case DATA_DATA:
+       case DATA_NODATA:
+               break;
+       case DATA_DATA_CF_ACK:
+       case DATA_NODATA_CF_ACK:
+               printf("CF Ack ");
+               break;
+       case DATA_DATA_CF_POLL:
+       case DATA_NODATA_CF_POLL:
+               printf("CF Poll ");
+               break;
+       case DATA_DATA_CF_ACK_POLL:
+       case DATA_NODATA_CF_ACK_POLL:
+               printf("CF Ack/Poll ");
+               break;
+       }
+
 #define ADDR1  (p + 4)
 #define ADDR2  (p + 10)
 #define ADDR3  (p + 16)
@@ -773,6 +791,21 @@ static inline void
 ieee_802_11_hdr_print(u_int16_t fc, const u_char *p, const u_int8_t **srcp,
     const u_int8_t **dstp)
 {
+       if (vflag) {
+               if (FC_MORE_DATA(fc))
+                       printf("More Data ");
+               if (FC_MORE_FLAG(fc))
+                       printf("More Fragments ");
+               if (FC_POWER_MGMT(fc))
+                       printf("Pwr Mgmt ");
+               if (FC_RETRY(fc))
+                       printf("Retry ");
+               if (FC_ORDER(fc))
+                       printf("Strictly Ordered ");
+               if (FC_WEP(fc))
+                       printf("WEP Encrypted ");
+       }
+
        switch (FC_TYPE(fc)) {
        case T_MGMT:
                mgmt_header_print(p, srcp, dstp);