From: Vadim Kochan <vadi...@gmail.com>

Now it looks like:

 [ Subtype Beacon: Timestamp 0x0000000074c5c180, Beacon Interval (0.102400s), 
Capabilities (0x431 <-> ESS; Privacy; Short Preamble; Short Slot Time;)
        Parameters:
                 SSID (0, Len (6)): D07F82
                 Supp. Rates (1, Len (8)): 1(B) 2(B) 5.5(B) 11(B) 6(B) 9 12(B) 
18
                 DSSS Param Set (3, Len(1)): Current Channel: 1
                 TIM (5, Len(4)): DTIM Count: 0, DTIM Period: 3, Bitmap 
Control: 0, Partial Virtual Bitmap: 0x00
                 Country (7, Len(6)): Country String: US First Ch Nr: 1, Nr of 
Ch: 11, Max Transmit Pwr Lvl: 30
                 ERP (42, Len(1)): Non ERP Present (0), Use Protection (0), 
Barker Preamble Mode (0), Reserved (0x00000)
                 Ext Support Rates (50, Len(4)): 24 36 48 54
                 HT Capabilities (45, Len(26)):
                         Info:
                                 LDCP Cod Cap (1)
                                 Supp Ch Width Set (1)
                                 SM Pwr Save(3)
                                 HT-Greenfield (0)
                                 Short GI for 20/40 MHz (1/1)
                                 Tx/Rx STBC (0/0)
                                 HT-Delayed Block Ack (0)
                                 Max A-MSDU Len (0)
                                 DSSS/CCK Mode in 40 MHz (1)
                                 Res (0x0)
                                 Forty MHz Intol (0)
                                 L-SIG TXOP Protection Supp (0)
                         A-MPDU Params:
                                 Max Len Exp (0)
                                 Min Start Spacing (3)
                                 Res (0x3)
                         Supp MCS Set:
                                 Rx MCS Bitmask (0xffff00000000)
                                 Res (0x0)
                                 Rx High Supp Data Rate (0)
                                 Res (0x0)
                                 Tx MCS Set Def (0)
                                 Tx Rx MCS Set Not Eq (0)
                                 Tx Max Number Spat Str Supp (0)
                                 Tx Uneq Mod Supp (0)
                                 Res (0x0)
                         Ext Cap:
                                 PCO (0)
                                 PCO Trans Time (0)
                                 Res (0x0)
                                 MCS Feedb (0)
                                 +HTC Supp (0)
                                 RD Resp (0)
                                 Res (0x0)
                         Transm Beamf:
                                 Impl Transm Beamf Rec Cap (0)
                                 Rec/Transm Stagg Sound Cap (0/0)
                                 Rec/Trans NDP Cap (0/0)
                                 Impl Transm Beamf Cap (0)
                                 Cal (0)
                                 Expl CSI Transm Beamf Cap (0)
                                 Expl Noncmpr/Compr Steering Cap (0/0)
                                 Expl Trans Beamf CSI Feedb (0)
                                 Expl Noncmpr/Cmpr Feedb Cap (0/0)
                                 Min Grpg (0)
                                 CSI Num Beamf Ant Supp (0)
                                 Noncmpr/Cmpr Steering Nr Beamf Ant Supp (0/0)
                                 CSI Max Nr Rows Beamf Supp (0)
                                 Ch Estim Cap (0)
                                 Res (0x0)
                         ASEL:
                                 Ant Select Cap (0)
                                 Expl CSI Feedb Based Transm ASEL Cap (0)
                                 Ant Indic Feedb Based Transm ASEL Cap (0)
                                 Expl CSI Feedb Cap (0)
                                 Ant Indic Feedb Cap (0)
                                 Rec ASEL Cap (0)
                                 Transm Sound PPDUs Cap (0)
                                 Res (0x0)
                Failed to dissect Subtype ]

Signed-off-by: Vadim Kochan <vadi...@gmail.com>
---
 proto_80211_mac_hdr.c | 175 ++++++++++++++++++++++++++++++--------------------
 1 file changed, 107 insertions(+), 68 deletions(-)

diff --git a/proto_80211_mac_hdr.c b/proto_80211_mac_hdr.c
index 199c4e7..e37397c 100644
--- a/proto_80211_mac_hdr.c
+++ b/proto_80211_mac_hdr.c
@@ -883,7 +883,7 @@ static int8_t inf_reserved(struct pkt_buff *pkt, u8 *id)
        if (reserved == NULL)
                return 0;
 
-       tprintf("Reserved (%u, Len (%u)): ", *id, reserved->len);
+       tprintf(" Reserved (%u, Len (%u)): ", *id, reserved->len);
 
        data = pkt_pull(pkt, reserved->len);
        if (data == NULL)
@@ -2578,68 +2578,101 @@ static int8_t inf_ht_cap(struct pkt_buff *pkt, u8 *id)
        beam_cap = le32_to_cpu(ht_cap->beam_cap);
        ext_cap = le16_to_cpu(ht_cap->ext_cap);
 
-       tprintf(" HT Capabilities (%u, Len(%u)): ", *id, ht_cap->len);
+       tprintf(" HT Capabilities (%u, Len(%u)):\n", *id, ht_cap->len);
        if (len_neq_error(ht_cap->len, 26))
                return 0;
-       tprintf("Info (LDCP Cod Cap (%u), Supp Ch Width Set (%u),"
-               " SM Pwr Save(%u), HT-Greenfield (%u), Short GI for 20/40 MHz"
-               " (%u/%u), Tx/Rx STBC (%u/%u), HT-Delayed Block Ack (%u),"
-               " Max A-MSDU Len (%u), DSSS/CCK Mode in 40 MHz (%u),"
-               " Res (0x%x), Forty MHz Intol (%u), L-SIG TXOP Protection Supp"
-               " (%u)), ", ht_cap->ldpc, ht_cap->supp_width,
-               ht_cap->sm_pwr, ht_cap->ht_green, ht_cap->gi_20mhz,
-               ht_cap->gi_40mhz, ht_cap->tx_stbc, ht_cap->rx_stbc,
-               ht_cap->ht_ack, ht_cap->max_msdu_length, ht_cap->dsss_ck_mode,
-               ht_cap->res, ht_cap->forty_int, ht_cap->prot_supp);
-       tprintf("A-MPDU Params (Max Len Exp (%u), Min Start Spacing (%u),"
-               " Res (0x%x)), ", ht_cap->param >> 6, (ht_cap->param >> 3) & 
0x7,
-               ht_cap->param & 0x07);
-       tprintf("Supp MCS Set (Rx MCS Bitmask (0x%x%x%x%x%x%x%x%x%x%x),"
-               " Res (0x%x), Rx High Supp Data Rate (%u), Res (0x%x),"
-               " Tx MCS Set Def (%u), Tx Rx MCS Set Not Eq (%u),"
-               " Tx Max Number Spat Str Supp (%u),"
-               " Tx Uneq Mod Supp (%u), Res (0x%x)), ",
-               ht_cap->bitmask1, ht_cap->bitmask2, ht_cap->bitmask3,
-               ht_cap->bitmask4, ht_cap->bitmask5, ht_cap->bitmask6,
-               ht_cap->bitmask7, ht_cap->bitmask8, ht_cap->bitmask9,
-               ht_cap->bitmask10_res >> 3, ht_cap->bitmask10_res & 0x7,
-               le16_to_cpu(ht_cap->supp_rate_res) >> 6,
-               le16_to_cpu(ht_cap->supp_rate_res) & 0x3F,
-               tx_param_res >> 31, (tx_param_res >> 30) & 1,
-               (tx_param_res >> 28) & 3, (tx_param_res >> 27) & 1,
-               tx_param_res & 0x7FFFFFF);
-       tprintf("Ext Cap (PCO (%u), PCO Trans Time (%u), Res (0x%x),"
-               " MCS Feedb (%u), +HTC Supp (%u), RD Resp (%u), Res (0x%x)), ",
-               ext_cap >> 15, (ext_cap >> 13) & 3, (ext_cap >> 8) & 0x1F,
-               (ext_cap >> 6) & 3, (ext_cap >> 5) & 1, (ext_cap >> 4) & 1,
-               ext_cap & 0xF);
-       tprintf("Transm Beamf (Impl Transm Beamf Rec Cap (%u),"
-               " Rec/Transm Stagg Sound Cap (%u/%u),"
-               " Rec/Trans NDP Cap (%u/%u), Impl Transm Beamf Cap (%u),"
-               " Cal (%u), Expl CSI Transm Beamf Cap (%u),"
-               " Expl Noncmpr/Compr Steering Cap (%u/%u),"
-               " Expl Trans Beamf CSI Feedb (%u),"
-               " Expl Noncmpr/Cmpr Feedb Cap (%u/%u),"
-               " Min Grpg (%u), CSI Num Beamf Ant Supp (%u),"
-               " Noncmpr/Cmpr Steering Nr Beamf Ant Supp (%u/%u),"
-               " CSI Max Nr Rows Beamf Supp (%u),"
-               " Ch Estim Cap (%u), Res (0x%x)), ",
-               beam_cap >> 31, (beam_cap >> 30) & 1, (beam_cap >> 29) & 1,
-               (beam_cap >> 28) & 1, (beam_cap >> 27) & 1, (beam_cap >> 26) & 
1,
-               (beam_cap >> 24) & 3, (beam_cap >> 23) & 1, (beam_cap >> 22) & 
1,
-               (beam_cap >> 21) & 1, (beam_cap >> 19) & 3, (beam_cap >> 17) & 
3,
-               (beam_cap >> 15) & 3, (beam_cap >> 13) & 3, (beam_cap >> 11) & 
3,
-               (beam_cap >> 9) & 3, (beam_cap >> 7) & 3, (beam_cap >> 5) & 3,
-               (beam_cap >> 3) & 3, beam_cap & 7);
-       tprintf("ASEL (Ant Select Cap (%u),"
-               " Expl CSI Feedb Based Transm ASEL Cap (%u),"
-               " Ant Indic Feedb Based Transm ASEL Cap (%u),"
-               " Expl CSI Feedb Cap (%u), Ant Indic Feedb Cap (%u),"
-               " Rec ASEL Cap (%u), Transm Sound PPDUs Cap (%u), Res (0x%x))",
-               ht_cap->asel_cap >> 7, (ht_cap->asel_cap >> 6) & 1,
-               (ht_cap->asel_cap >> 5) & 1, (ht_cap->asel_cap >> 4) & 1,
-               (ht_cap->asel_cap >> 3) & 1, (ht_cap->asel_cap >> 2) & 1,
-               (ht_cap->asel_cap >> 1) & 1, ht_cap->asel_cap & 1);
+
+       tprintf("\t\t\t Info:\n");
+       tprintf("\t\t\t\t LDCP Cod Cap (%u)\n", ht_cap->ldpc);
+       tprintf("\t\t\t\t Supp Ch Width Set (%u)\n", ht_cap->supp_width);
+       tprintf("\t\t\t\t SM Pwr Save(%u)\n", ht_cap->sm_pwr);
+       tprintf("\t\t\t\t HT-Greenfield (%u)\n", ht_cap->ht_green);
+       tprintf("\t\t\t\t Short GI for 20/40 MHz (%u/%u)\n", ht_cap->gi_20mhz,
+                       ht_cap->gi_40mhz);
+       tprintf("\t\t\t\t Tx/Rx STBC (%u/%u)\n", ht_cap->tx_stbc,
+                       ht_cap->rx_stbc);
+       tprintf("\t\t\t\t HT-Delayed Block Ack (%u)\n", ht_cap->ht_ack);
+       tprintf("\t\t\t\t Max A-MSDU Len (%u)\n", ht_cap->max_msdu_length);
+       tprintf("\t\t\t\t DSSS/CCK Mode in 40 MHz (%u)\n",
+                       ht_cap->dsss_ck_mode);
+       tprintf("\t\t\t\t Res (0x%x)\n", ht_cap->res);
+       tprintf("\t\t\t\t Forty MHz Intol (%u)\n", ht_cap->forty_int);
+       tprintf("\t\t\t\t L-SIG TXOP Protection Supp (%u)\n",
+                       ht_cap->prot_supp);
+
+       tprintf("\t\t\t A-MPDU Params:\n");
+       tprintf("\t\t\t\t Max Len Exp (%u)\n", ht_cap->param >> 6);
+       tprintf("\t\t\t\t Min Start Spacing (%u)\n",
+                       (ht_cap->param >> 3) & 0x7);
+       tprintf("\t\t\t\t Res (0x%x)\n", ht_cap->param & 0x07);
+
+       tprintf("\t\t\t Supp MCS Set:\n");
+       tprintf("\t\t\t\t Rx MCS Bitmask (0x%x%x%x%x%x%x%x%x%x%x)\n",
+                       ht_cap->bitmask1, ht_cap->bitmask2, ht_cap->bitmask3,
+                       ht_cap->bitmask4, ht_cap->bitmask5, ht_cap->bitmask6,
+                       ht_cap->bitmask7, ht_cap->bitmask8, ht_cap->bitmask9,
+                       ht_cap->bitmask10_res >> 3);
+       tprintf("\t\t\t\t Res (0x%x)\n", ht_cap->bitmask10_res & 0x7);
+       tprintf("\t\t\t\t Rx High Supp Data Rate (%u)\n",
+                       le16_to_cpu(ht_cap->supp_rate_res) >> 6);
+       tprintf("\t\t\t\t Res (0x%x)\n",
+                       le16_to_cpu(ht_cap->supp_rate_res) & 0x3F);
+       tprintf("\t\t\t\t Tx MCS Set Def (%u)\n", tx_param_res >> 31);
+       tprintf("\t\t\t\t Tx Rx MCS Set Not Eq (%u)\n",
+                       (tx_param_res >> 30) & 1);
+       tprintf("\t\t\t\t Tx Max Number Spat Str Supp (%u)\n",
+                       (tx_param_res >> 28) & 3);
+       tprintf("\t\t\t\t Tx Uneq Mod Supp (%u)\n", (tx_param_res >> 27) & 1);
+       tprintf("\t\t\t\t Res (0x%x)\n", tx_param_res & 0x7FFFFFF);
+
+       tprintf("\t\t\t Ext Cap:\n");
+       tprintf("\t\t\t\t PCO (%u)\n", ext_cap >> 15);
+       tprintf("\t\t\t\t PCO Trans Time (%u)\n", (ext_cap >> 13) & 3);
+       tprintf("\t\t\t\t Res (0x%x)\n", (ext_cap >> 8) & 0x1F);
+       tprintf("\t\t\t\t MCS Feedb (%u)\n", (ext_cap >> 6) & 3);
+       tprintf("\t\t\t\t +HTC Supp (%u)\n", (ext_cap >> 5) & 1);
+       tprintf("\t\t\t\t RD Resp (%u)\n", (ext_cap >> 4) & 1);
+       tprintf("\t\t\t\t Res (0x%x)\n", ext_cap & 0xF);
+
+       tprintf("\t\t\t Transm Beamf:\n");
+       tprintf("\t\t\t\t Impl Transm Beamf Rec Cap (%u)\n", beam_cap >> 31);
+       tprintf("\t\t\t\t Rec/Transm Stagg Sound Cap (%u/%u)\n",
+                       (beam_cap >> 30) & 1, (beam_cap >> 29) & 1);
+       tprintf("\t\t\t\t Rec/Trans NDP Cap (%u/%u)\n",
+                       (beam_cap >> 28) & 1, (beam_cap >> 27) & 1);
+       tprintf("\t\t\t\t Impl Transm Beamf Cap (%u)\n", (beam_cap >> 26) & 1);
+       tprintf("\t\t\t\t Cal (%u)\n", (beam_cap >> 24) & 3);
+       tprintf("\t\t\t\t Expl CSI Transm Beamf Cap (%u)\n",
+                       (beam_cap >> 23) & 1);
+       tprintf("\t\t\t\t Expl Noncmpr/Compr Steering Cap (%u/%u)\n",
+                       (beam_cap >> 22) & 1, (beam_cap >> 21) & 1);
+       tprintf("\t\t\t\t Expl Trans Beamf CSI Feedb (%u)\n",
+                       (beam_cap >> 19) & 3);
+       tprintf("\t\t\t\t Expl Noncmpr/Cmpr Feedb Cap (%u/%u)\n",
+                       (beam_cap >> 17) & 3, (beam_cap >> 15) & 3);
+       tprintf("\t\t\t\t Min Grpg (%u)\n", (beam_cap >> 13) & 3);
+       tprintf("\t\t\t\t CSI Num Beamf Ant Supp (%u)\n", (beam_cap >> 11) & 3);
+       tprintf("\t\t\t\t Noncmpr/Cmpr Steering Nr Beamf Ant Supp (%u/%u)\n",
+                       (beam_cap >> 9) & 3, (beam_cap >> 7) & 3);
+       tprintf("\t\t\t\t CSI Max Nr Rows Beamf Supp (%u)\n",
+                       (beam_cap >> 5) & 3);
+       tprintf("\t\t\t\t Ch Estim Cap (%u)\n", (beam_cap >> 3) & 3);
+       tprintf("\t\t\t\t Res (0x%x)\n", beam_cap & 7);
+
+       tprintf("\t\t\t ASEL:\n");
+       tprintf("\t\t\t\t Ant Select Cap (%u)\n", ht_cap->asel_cap >> 7);
+       tprintf("\t\t\t\t Expl CSI Feedb Based Transm ASEL Cap (%u)\n",
+                       (ht_cap->asel_cap >> 6) & 1);
+       tprintf("\t\t\t\t Ant Indic Feedb Based Transm ASEL Cap (%u)\n",
+                       (ht_cap->asel_cap >> 5) & 1);
+       tprintf("\t\t\t\t Expl CSI Feedb Cap (%u)\n",
+                       (ht_cap->asel_cap >> 4) & 1);
+       tprintf("\t\t\t\t Ant Indic Feedb Cap (%u)\n",
+                       (ht_cap->asel_cap >> 3) & 1);
+       tprintf("\t\t\t\t Rec ASEL Cap (%u)\n", (ht_cap->asel_cap >> 2) & 1);
+       tprintf("\t\t\t\t Transm Sound PPDUs Cap (%u)\n",
+                       (ht_cap->asel_cap >> 1) & 1);
+       tprintf("\t\t\t\t Res (0x%x)", ht_cap->asel_cap & 1);
 
        return 1;
 }
@@ -2917,6 +2950,16 @@ static int8_t cap_field(u16 cap_inf)
        return 1;
 }
 
+static void print_inf_elements(struct pkt_buff *pkt)
+{
+       if (pkt_len(pkt)) {
+               tprintf("\n\tParameters:\n\t\t");
+               while (inf_elements(pkt)) {
+                       tprintf("\n\t\t");
+               }
+       }
+}
+
 /* Management Dissectors */
 static int8_t beacon(struct pkt_buff *pkt)
 {
@@ -2933,15 +2976,11 @@ static int8_t beacon(struct pkt_buff *pkt)
        cap_field(le16_to_cpu(beacon->capab_info));
        tprintf(")");
 
-       if(pkt_len(pkt)) {
-               tprintf("\n\tParameters:");
-               while (inf_elements(pkt)) {
-                       tprintf("\n\t");
-               }
-       }
+       print_inf_elements(pkt);
 
-       if(pkt_len(pkt))
+       if (pkt_len(pkt))
                return 0;
+
        return 1;
 }
 
-- 
2.3.1

-- 
You received this message because you are subscribed to the Google Groups 
"netsniff-ng" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to netsniff-ng+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to