diff options
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/Makefile.nmake | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-ieee80211.c | 16 | ||||
-rw-r--r-- | epan/dissectors/packet-ieee80211.h | 1 | ||||
-rw-r--r-- | epan/dissectors/packet-radiotap.c | 64 |
4 files changed, 70 insertions, 13 deletions
diff --git a/epan/dissectors/Makefile.nmake b/epan/dissectors/Makefile.nmake index c382ba2780..9c0d30f930 100644 --- a/epan/dissectors/Makefile.nmake +++ b/epan/dissectors/Makefile.nmake @@ -12,7 +12,7 @@ include Makefile.common CFLAGS=-WX -DHAVE_CONFIG_H /I. /I.. /I../.. $(GLIB_CFLAGS) \ $(NET_SNMP_CFLAGS) $(ZLIB_CFLAGS) \ $(PCRE_CFLAGS) $(GNUTLS_CFLAGS) $(NETTLE_CFLAGS) \ - $(KFW_CFLAGS) \ + $(KFW_CFLAGS) $(AIRPCAP_CFLAGS) \ /I$(PCAP_DIR)\include -D_U_="" $(LOCAL_CFLAGS) CVARSDLL=-DWIN32 -DNULL=0 -D_MT -D_DLL diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c index b0757b4420..610c52cea8 100644 --- a/epan/dissectors/packet-ieee80211.c +++ b/epan/dissectors/packet-ieee80211.c @@ -3224,18 +3224,18 @@ dissect_mcs_set(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean basic, gbo bit_tree = proto_item_add_subtree(ti, ett_mcsbit_tree); /* Bits 0 - 31 */ - proto_tree_add_item(bit_tree, mcsset_rx_bitmask_0to7, tvb, offset, 1, TRUE); - proto_tree_add_item(bit_tree, mcsset_rx_bitmask_8to15, tvb, offset + 1, 1, TRUE); - proto_tree_add_item(bit_tree, mcsset_rx_bitmask_16to23, tvb, offset + 2, 1, TRUE); - proto_tree_add_item(bit_tree, mcsset_rx_bitmask_24to31, tvb, offset + 3, 1, TRUE); + proto_tree_add_item(bit_tree, mcsset_rx_bitmask_0to7, tvb, offset, 4, TRUE); + proto_tree_add_item(bit_tree, mcsset_rx_bitmask_8to15, tvb, offset, 4, TRUE); + proto_tree_add_item(bit_tree, mcsset_rx_bitmask_16to23, tvb, offset, 4, TRUE); + proto_tree_add_item(bit_tree, mcsset_rx_bitmask_24to31, tvb, offset, 4, TRUE); /* Bits 32 - 52 */ - proto_tree_add_item(bit_tree, mcsset_rx_bitmask_32, tvb, offset + 4, 1, TRUE); - proto_tree_add_item(bit_tree, mcsset_rx_bitmask_33to38, tvb, offset + 4, 1, TRUE); - proto_tree_add_item(bit_tree, mcsset_rx_bitmask_39to52, tvb, offset + 4, 3, TRUE); + proto_tree_add_item(bit_tree, mcsset_rx_bitmask_32, tvb, offset + 4, 4, TRUE); + proto_tree_add_item(bit_tree, mcsset_rx_bitmask_33to38, tvb, offset + 4, 4, TRUE); + proto_tree_add_item(bit_tree, mcsset_rx_bitmask_39to52, tvb, offset + 4, 4, TRUE); /* Bits 53 - 76 */ - proto_tree_add_item(bit_tree, mcsset_rx_bitmask_53to76, tvb, offset + 6, 3, TRUE); + proto_tree_add_item(bit_tree, mcsset_rx_bitmask_53to76, tvb, offset + 6, 4, TRUE); capability = tvb_get_letohs (tvb, offset+10); proto_tree_add_uint_format(mcs_tree, mcsset_highest_data_rate, tvb, offset + 10, 2, diff --git a/epan/dissectors/packet-ieee80211.h b/epan/dissectors/packet-ieee80211.h index f7f99974df..6e34cd45c2 100644 --- a/epan/dissectors/packet-ieee80211.h +++ b/epan/dissectors/packet-ieee80211.h @@ -30,6 +30,7 @@ void capture_ieee80211 (const guchar *, int, int, packet_counts *); void capture_ieee80211_datapad (const guchar *, int, int, packet_counts *); void capture_ieee80211_fixed (const guchar *, int, int, packet_counts *); +void capture_ieee80211_ht (const guchar *, int, int, packet_counts *); void ieee_80211_add_tagged_parameters (tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, int tagged_parameters_len); diff --git a/epan/dissectors/packet-radiotap.c b/epan/dissectors/packet-radiotap.c index 673d12eee6..4ec28940f4 100644 --- a/epan/dissectors/packet-radiotap.c +++ b/epan/dissectors/packet-radiotap.c @@ -152,6 +152,14 @@ static int hf_radiotap_mactime = -1; static int hf_radiotap_channel = -1; static int hf_radiotap_channel_frequency = -1; static int hf_radiotap_channel_flags = -1; +static int hf_radiotap_channel_flags_turbo = -1; +static int hf_radiotap_channel_flags_cck = -1; +static int hf_radiotap_channel_flags_ofdm = -1; +static int hf_radiotap_channel_flags_2ghz = -1; +static int hf_radiotap_channel_flags_5ghz = -1; +static int hf_radiotap_channel_flags_passive = -1; +static int hf_radiotap_channel_flags_dynamic = -1; +static int hf_radiotap_channel_flags_gfsk = -1; static int hf_radiotap_fhss_hopset = -1; static int hf_radiotap_fhss_pattern = -1; static int hf_radiotap_datarate = -1; @@ -198,6 +206,7 @@ static int hf_radiotap_fcs_bad = -1; static gint ett_radiotap = -1; static gint ett_radiotap_present = -1; static gint ett_radiotap_flags = -1; +static gint ett_radiotap_channel_flags = -1; static dissector_handle_t ieee80211_handle; static dissector_handle_t ieee80211_datapad_handle; @@ -503,9 +512,34 @@ proto_register_radiotap(void) "Channel frequency in megahertz that this frame was sent/received on", HFILL } }, { &hf_radiotap_channel_flags, - { "Channel type", "radiotap.channel.flags", + { "Channel type", "radiotap.channel.type", FT_UINT16, BASE_HEX, VALS(phy_type), 0x0, - "", HFILL } }, + "Channel type", HFILL } }, + + { &hf_radiotap_channel_flags_turbo, + { "Turbo", "radiotap.channel.type.turbo", + FT_BOOLEAN, 16, NULL, 0x0010, "Channel Type Turbo", HFILL } }, + { &hf_radiotap_channel_flags_cck, + { "Complementary Code Keying (CCK)", "radiotap.channel.type.cck", + FT_BOOLEAN, 16, NULL, 0x0020, "Channel Type Complementary Code Keying (CCK) Modulation", HFILL } }, + { &hf_radiotap_channel_flags_ofdm, + { "Orthogonal Frequency-Division Multiplexing (OFDM)", "radiotap.channel.type.ofdm", + FT_BOOLEAN, 16, NULL, 0x0040, "Channel Type Orthogonal Frequency-Division Multiplexing (OFDM)", HFILL } }, + { &hf_radiotap_channel_flags_2ghz, + { "2 GHz spectrum", "radiotap.channel.type.2ghz", + FT_BOOLEAN, 16, NULL, 0x0080, "Channel Type 2 GHz spectrum", HFILL } }, + { &hf_radiotap_channel_flags_5ghz, + { "5 GHz spectrum", "radiotap.channel.type.5ghz", + FT_BOOLEAN, 16, NULL, 0x0100, "Channel Type 5 GHz spectrum", HFILL } }, + { &hf_radiotap_channel_flags_passive, + { "Passive", "radiotap.channel.type.passive", + FT_BOOLEAN, 16, NULL, 0x0200, "Channel Type Passive", HFILL } }, + { &hf_radiotap_channel_flags_dynamic, + { "Dynamic CCK-OFDM", "radiotap.channel.type.dynamic", + FT_BOOLEAN, 16, NULL, 0x0400, "Channel Type Dynamic CCK-OFDM Channel", HFILL } }, + { &hf_radiotap_channel_flags_gfsk, + { "Gaussian Frequency Shift Keying (GFSK)", "radiotap.channel.type.gfsk", + FT_BOOLEAN, 16, NULL, 0x0800, "Channel Type Gaussian Frequency Shift Keying (GFSK) Modulation", HFILL } }, { &hf_radiotap_fhss_hopset, { "FHSS Hop Set", "radiotap.fhss.hopset", @@ -572,7 +606,8 @@ proto_register_radiotap(void) static gint *ett[] = { &ett_radiotap, &ett_radiotap_present, - &ett_radiotap_flags + &ett_radiotap_flags, + &ett_radiotap_channel_flags }; proto_radiotap = proto_register_protocol("IEEE 802.11 Radiotap Capture header", "802.11 Radiotap", "radiotap"); @@ -855,6 +890,9 @@ dissect_radiotap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) length_remaining--; break; case IEEE80211_RADIOTAP_CHANNEL: + { + proto_item *it; + proto_tree *flags_tree; align_offset = ALIGN_OFFSET(offset, 2); offset += align_offset; length_remaining -= align_offset; @@ -875,12 +913,30 @@ dissect_radiotap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) tvb, offset, 2, freq); } /* We're already 2-byte aligned. */ - proto_tree_add_uint(radiotap_tree, hf_radiotap_channel_flags, + it = proto_tree_add_uint(radiotap_tree, hf_radiotap_channel_flags, tvb, offset+2, 2, flags); + flags_tree = proto_item_add_subtree(it, ett_radiotap_channel_flags); + proto_tree_add_boolean(flags_tree, hf_radiotap_channel_flags_turbo, + tvb, offset+2, 1, flags); + proto_tree_add_boolean(flags_tree, hf_radiotap_channel_flags_cck, + tvb, offset+2, 1, flags); + proto_tree_add_boolean(flags_tree, hf_radiotap_channel_flags_ofdm, + tvb, offset+2, 1, flags); + proto_tree_add_boolean(flags_tree, hf_radiotap_channel_flags_2ghz, + tvb, offset+2, 1, flags); + proto_tree_add_boolean(flags_tree, hf_radiotap_channel_flags_5ghz, + tvb, offset+3, 1, flags); + proto_tree_add_boolean(flags_tree, hf_radiotap_channel_flags_passive, + tvb, offset+3, 1, flags); + proto_tree_add_boolean(flags_tree, hf_radiotap_channel_flags_dynamic, + tvb, offset+3, 1, flags); + proto_tree_add_boolean(flags_tree, hf_radiotap_channel_flags_gfsk, + tvb, offset+3, 1, flags); } offset+=4 /* Channel + flags */; length_remaining-=4; break; + } case IEEE80211_RADIOTAP_FHSS: align_offset = ALIGN_OFFSET(offset, 2); offset += align_offset; |