ieee80211: Add 20/40 BSS Coexistence IE Parameters (72)

Bug: 13148
Change-Id: I60bb679b8b8221f5229146ca1120d00ce9e2ec66
Reviewed-on: https://code.wireshark.org/review/18911
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Jaap Keuter <jaap.keuter@xs4all.nl>
This commit is contained in:
Alexis La Goutte 2016-11-21 10:09:50 +01:00 committed by Jaap Keuter
parent 7617286f32
commit 5c5409735d
1 changed files with 81 additions and 0 deletions

View File

@ -3712,6 +3712,14 @@ static int hf_ieee80211_tag_rm_enabled_capabilities_b32 = -1;
static int hf_ieee80211_tag_rm_enabled_capabilities_b33 = -1;
static int hf_ieee80211_tag_rm_enabled_capabilities_o5 = -1;
static int hf_ieee80211_tag_20_40_bc = -1;
static int hf_ieee80211_tag_20_40_bc_information_request = -1;
static int hf_ieee80211_tag_20_40_bc_forty_mhz_intolerant = -1;
static int hf_ieee80211_tag_20_40_bc_20_mhz_bss_witdh_request = -1;
static int hf_ieee80211_tag_20_40_bc_obss_scanning_exemption_request = -1;
static int hf_ieee80211_tag_20_40_bc_obss_scanning_exemption_grant = -1;
static int hf_ieee80211_tag_20_40_bc_reserved = -1;
static int hf_ieee80211_tag_power_constraint_local = -1;
static int hf_ieee80211_tag_power_capability_min = -1;
@ -4898,6 +4906,9 @@ static gint ett_tag_rm_cap2 = -1;
static gint ett_tag_rm_cap3 = -1;
static gint ett_tag_rm_cap4 = -1;
static gint ett_tag_rm_cap5 = -1;
static gint ett_tag_20_40_bc = -1;
static gint ett_tag_tclas_mask_tree = -1;
static gint ett_tag_supported_channels = -1;
@ -12527,6 +12538,38 @@ dissect_rm_enabled_capabilities_ie(packet_info *pinfo, proto_tree *tree,
return offset;
}
static int
dissect_20_40_bss_coexistence(packet_info *pinfo, proto_tree *tree,
proto_item *ti_len, guint32 tag_len,
tvbuff_t *tvb, int offset)
{
static const int *ieee80211_20_40_bss_coexistence_fields[] = {
&hf_ieee80211_tag_20_40_bc_information_request,
&hf_ieee80211_tag_20_40_bc_forty_mhz_intolerant,
&hf_ieee80211_tag_20_40_bc_20_mhz_bss_witdh_request,
&hf_ieee80211_tag_20_40_bc_obss_scanning_exemption_request,
&hf_ieee80211_tag_20_40_bc_obss_scanning_exemption_grant,
&hf_ieee80211_tag_20_40_bc_reserved,
NULL
};
if (tag_len != 1)
{
expert_add_info_format(pinfo, ti_len, &ei_ieee80211_tag_length, "20/40 BSS Coexistence length %u wrong, must = 1", tag_len);
return offset;
}
proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_tag_20_40_bc,
ett_tag_20_40_bc, ieee80211_20_40_bss_coexistence_fields,
ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
offset += 1;
return offset;
}
static int
dissect_ht_capability_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset,
guint32 tag_len, proto_item *ti_len, gboolean vendorspecific)
@ -15217,6 +15260,10 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset
dissect_rm_enabled_capabilities_ie(pinfo, tree, ti, ti_len, tag_len, tvb, offset+2, tag_end);
break;
case TAG_20_40_BSS_CO_EX: /* 20/40 BSS Coexistence (72) */
dissect_20_40_bss_coexistence(pinfo, tree, ti_len, tag_len, tvb, offset+2);
break;
case TAG_OVERLAP_BSS_SCAN_PAR: /* Overlapping BSS Scan Parameters (74) */
dissect_overlap_bss_scan_par(pinfo, tree, tvb, offset + 2, tag_len, ti, ti_len);
break;
@ -24187,6 +24234,37 @@ proto_register_ieee80211(void)
FT_UINT8, BASE_HEX, NULL, 0xFC,
"Must be zero", HFILL }},
/* 20/40 BSS Coexistence */
{&hf_ieee80211_tag_20_40_bc,
{"20/40 BSS Coexistence Flags", "wlan.20_40_bc",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }},
{&hf_ieee80211_tag_20_40_bc_information_request,
{"Information Request", "wlan.20_40_bc.information_request",
FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }},
{&hf_ieee80211_tag_20_40_bc_forty_mhz_intolerant,
{"Forty MHz Intolerant", "wlan.20_40_bc.forty_mhz_intolerant",
FT_BOOLEAN, 8, NULL, 0x02,
NULL, HFILL }},
{&hf_ieee80211_tag_20_40_bc_20_mhz_bss_witdh_request,
{"20 MHz BSS Witdh Request", "wlan.20_40_bc.20_mhz_bss_witdh_request",
FT_BOOLEAN, 8, NULL, 0x04,
NULL, HFILL }},
{&hf_ieee80211_tag_20_40_bc_obss_scanning_exemption_request,
{"OBSS Scanning Exemption Request", "wlan.20_40_bc.obss_scanning_exemption_request",
FT_BOOLEAN, 8, NULL, 0x08,
NULL, HFILL }},
{&hf_ieee80211_tag_20_40_bc_obss_scanning_exemption_grant,
{"OBSS Scanning Exemption Grant", "wlan.20_40_bc.obss_scanning_exemption_grant",
FT_BOOLEAN, 8, NULL, 0x10,
NULL, HFILL }},
{&hf_ieee80211_tag_20_40_bc_reserved,
{"Reserved", "wlan.20_40_bc.reserved",
FT_UINT8, BASE_HEX, NULL, 0xE0,
"Must be zero", HFILL }},
{&hf_ieee80211_tag_power_constraint_local,
{"Local Power Constraint", "wlan.powercon.local",
FT_UINT8, BASE_DEC, NULL, 0,
@ -26955,6 +27033,9 @@ proto_register_ieee80211(void)
&ett_tag_rm_cap3,
&ett_tag_rm_cap4,
&ett_tag_rm_cap5,
&ett_tag_20_40_bc,
&ett_tag_tclas_mask_tree,
&ett_tag_supported_channels,