aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ieee80211.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-ieee80211.c')
-rw-r--r--epan/dissectors/packet-ieee80211.c143
1 files changed, 54 insertions, 89 deletions
diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c
index 01d0072dcd..c2b9296dc2 100644
--- a/epan/dissectors/packet-ieee80211.c
+++ b/epan/dissectors/packet-ieee80211.c
@@ -5453,14 +5453,13 @@ get_mimo_ns (gboolean chan_width, guint8 output_grouping)
static int
add_mimo_csi_matrices_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl)
{
- proto_item *snr_item;
proto_tree *snr_tree;
int csi_matrix_size, start_offset;
int ns, i;
start_offset = offset;
- snr_item = proto_tree_add_text(tree, tvb, offset, mimo_cntrl.nc, "Signal to Noise Ratio");
- snr_tree = proto_item_add_subtree (snr_item, ett_mimo_report);
+ snr_tree = proto_tree_add_subtree(tree, tvb, offset, mimo_cntrl.nc,
+ ett_mimo_report, NULL, "Signal to Noise Ratio");
for (i = 1; i <= mimo_cntrl.nr; i++)
{
@@ -5483,14 +5482,12 @@ add_mimo_csi_matrices_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_
static int
add_mimo_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl)
{
- proto_item *snr_item;
proto_tree *snr_tree;
int csi_matrix_size, start_offset;
int ns, i;
start_offset = offset;
- snr_item = proto_tree_add_text(tree, tvb, offset, mimo_cntrl.nc, "Signal to Noise Ratio");
- snr_tree = proto_item_add_subtree (snr_item, ett_mimo_report);
+ snr_tree = proto_tree_add_subtree(tree, tvb, offset, mimo_cntrl.nc, ett_mimo_report, NULL, "Signal to Noise Ratio");
for (i = 1; i <= mimo_cntrl.nc; i++)
{
@@ -5513,14 +5510,13 @@ add_mimo_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offse
static int
add_mimo_compressed_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl)
{
- proto_item *snr_item;
proto_tree *snr_tree;
int csi_matrix_size, start_offset;
int ns, na, i;
start_offset = offset;
- snr_item = proto_tree_add_text(tree, tvb, offset, mimo_cntrl.nc, "Signal to Noise Ratio");
- snr_tree = proto_item_add_subtree (snr_item, ett_mimo_report);
+ snr_tree = proto_tree_add_subtree(tree, tvb, offset, mimo_cntrl.nc,
+ ett_mimo_report, NULL, "Signal to Noise Ratio");
for (i = 1; i <= mimo_cntrl.nc; i++)
{
@@ -5846,9 +5842,8 @@ dissect_advertisement_protocol(packet_info *pinfo, proto_tree *tree,
left = tag_len;
offset += 2;
- adv_item = proto_tree_add_text(tree, tvb, offset, left,
- "Advertisement Protocol element");
- adv_tree = proto_item_add_subtree(adv_item, ett_adv_proto);
+ adv_tree = proto_tree_add_subtree(tree, tvb, offset, left,
+ ett_adv_proto, &adv_item, "Advertisement Protocol element");
while (left >= 2) {
guint8 id;
@@ -5856,11 +5851,10 @@ dissect_advertisement_protocol(packet_info *pinfo, proto_tree *tree,
id = tvb_get_guint8(tvb, offset + 1);
if (id == 0)
proto_item_append_text(adv_item, ": ANQP");
- item = proto_tree_add_text(adv_tree, tvb, offset, 2,
+ adv_tuple_tree = proto_tree_add_subtree_format(adv_tree, tvb, offset, 2, ett_adv_proto_tuple, &item,
"Advertisement Protocol Tuple: %s",
val_to_str(id, adv_proto_id_vals,
"Unknown (%d)"));
- adv_tuple_tree = proto_item_add_subtree(item, ett_adv_proto_tuple);
proto_tree_add_item(adv_tuple_tree,
hf_ieee80211_tag_adv_proto_resp_len_limit, tvb,
@@ -6170,8 +6164,7 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int
offset += 2;
while (count > 0) {
len = tvb_get_letohs(tvb, offset);
- r_item = proto_tree_add_text(tree, tvb, offset, 2 + len, "NAI Realm Data");
- realm_tree = proto_item_add_subtree(r_item, ett_nai_realm);
+ realm_tree = proto_tree_add_subtree(tree, tvb, offset, 2 + len, ett_nai_realm, &r_item, "NAI Realm Data");
item = proto_tree_add_item(realm_tree, hf_ieee80211_ff_anqp_nai_field_len,
tvb, offset, 2, ENC_LITTLE_ENDIAN);
@@ -6191,7 +6184,7 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int
tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset += 1;
if (offset + nai_len > f_end) {
- expert_add_info_format(pinfo, item, &ei_ieee80211_ff_anqp_nai_field_len,
+ expert_add_info_format(pinfo, r_item, &ei_ieee80211_ff_anqp_nai_field_len,
"Invalid NAI Realm Data");
break;
}
@@ -6210,9 +6203,8 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int
while (eap_count > 0) {
eap_len = tvb_get_guint8(tvb, offset);
eap_end = offset + 1 + eap_len;
- item = proto_tree_add_text(realm_tree, tvb, offset, 1 + eap_len,
- "EAP Method");
- eap_tree = proto_item_add_subtree(item, ett_nai_realm_eap);
+ eap_tree = proto_tree_add_subtree(realm_tree, tvb, offset, 1 + eap_len,
+ ett_nai_realm_eap, NULL, "EAP Method");
item = proto_tree_add_item(eap_tree,
hf_ieee80211_ff_anqp_nai_realm_eap_len,
@@ -6433,7 +6425,6 @@ static void
dissect_hs20_anqp_connection_capability(proto_tree *tree, tvbuff_t *tvb,
int offset, int end)
{
- proto_item *item;
proto_tree *tuple;
while (offset + 4 <= end) {
guint8 ip_proto, status;
@@ -6443,12 +6434,11 @@ dissect_hs20_anqp_connection_capability(proto_tree *tree, tvbuff_t *tvb,
port_num = tvb_get_letohs(tvb, offset + 1);
status = tvb_get_guint8(tvb, offset + 3);
- item = proto_tree_add_text(tree, tvb, offset, 4, "ProtoPort Tuple - "
- "ip_proto=%u port_num=%u status=%s",
+ tuple = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_hs20_cc_proto_port_tuple, NULL,
+ "ProtoPort Tuple - ip_proto=%u port_num=%u status=%s",
ip_proto, port_num,
val_to_str(status, hs20_cc_status_vals,
"Unknown (%u)"));
- tuple = proto_item_add_subtree(item, ett_hs20_cc_proto_port_tuple);
proto_tree_add_item(tuple, hf_hs20_anqp_cc_proto_ip_proto,
tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset++;
@@ -6682,12 +6672,11 @@ dissect_gas_initial_request(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo,
/* Query Request Length (2 octets) */
req_len = tvb_get_letohs(tvb, offset);
- item = proto_tree_add_text(tree, tvb, offset, 2 + req_len, "Query Request");
+ query = proto_tree_add_subtree(tree, tvb, offset, 2 + req_len, ett_gas_query, &item, "Query Request");
if (tvb_reported_length_remaining(tvb, offset) < 2 + req_len) {
- expert_add_info(pinfo, tree, &ei_ieee80211_ff_query_request_length);
+ expert_add_info(pinfo, item, &ei_ieee80211_ff_query_request_length);
return tvb_reported_length_remaining(tvb, offset);
}
- query = proto_item_add_subtree(item, ett_gas_query);
proto_tree_add_item(query, hf_ieee80211_ff_query_request_length,
tvb, offset, 2, ENC_LITTLE_ENDIAN);
@@ -6718,13 +6707,12 @@ dissect_gas_initial_response(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo
/* Query Response Length (2 octets) */
resp_len = tvb_get_letohs(tvb, offset);
- item = proto_tree_add_text(tree, tvb, offset, 2 + resp_len,
- "Query Response");
+ query = proto_tree_add_subtree(tree, tvb, offset, 2 + resp_len,
+ ett_gas_query, &item, "Query Response");
if (tvb_reported_length_remaining(tvb, offset) < 2 + resp_len) {
- expert_add_info(pinfo, tree, &ei_ieee80211_ff_query_response_length);
+ expert_add_info(pinfo, item, &ei_ieee80211_ff_query_response_length);
return tvb_reported_length_remaining(tvb, offset);
}
- query = proto_item_add_subtree(item, ett_gas_query);
proto_tree_add_item(query, hf_ieee80211_ff_query_response_length,
tvb, offset, 2, ENC_LITTLE_ENDIAN);
@@ -6796,13 +6784,12 @@ dissect_gas_comeback_response(proto_tree *tree, tvbuff_t *tvb, packet_info *pinf
/* Query Response Length (2 octets) */
resp_len = tvb_get_letohs(tvb, offset);
- item = proto_tree_add_text(tree, tvb, offset, 2 + resp_len,
- "Query Response");
+ query = proto_tree_add_subtree(tree, tvb, offset, 2 + resp_len,
+ ett_gas_query, &item, "Query Response");
if (tvb_reported_length_remaining(tvb, offset) < 2 + resp_len) {
- expert_add_info(pinfo, tree, &ei_ieee80211_ff_query_response_length);
+ expert_add_info(pinfo, item, &ei_ieee80211_ff_query_response_length);
return tvb_reported_length_remaining(tvb, offset);
}
- query = proto_item_add_subtree(item, ett_gas_query);
proto_tree_add_item(query, hf_ieee80211_ff_query_response_length,
tvb, offset, 2, ENC_LITTLE_ENDIAN);
@@ -10954,7 +10941,6 @@ static void
dissect_ssid_list(proto_tree *tree, tvbuff_t *tvb, int offset, guint32 tag_len)
{
int end = offset + tag_len;
- proto_item *ssid;
proto_tree *entry;
gboolean first = TRUE;
@@ -10968,8 +10954,7 @@ dissect_ssid_list(proto_tree *tree, tvbuff_t *tvb, int offset, guint32 tag_len)
str = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 2, len, ENC_ASCII);
proto_item_append_text(tree, "%c %s", (first ? ':' : ','), str);
first = FALSE;
- ssid = proto_tree_add_text(tree, tvb, offset, 2 + len, "SSID: %s", str);
- entry = proto_item_add_subtree(ssid, ett_ssid_list);
+ entry = proto_tree_add_subtree_format(tree, tvb, offset, 2 + len, ett_ssid_list, NULL, "SSID: %s", str);
proto_tree_add_item(entry, hf_ieee80211_tag_number, tvb, offset, 1,
ENC_BIG_ENDIAN);
offset++;
@@ -12873,18 +12858,18 @@ dissect_neighbor_report(tvbuff_t *tvb, packet_info *pinfo,
/* TODO */
break;
case NR_SUB_ID_HT_CAPABILITIES:
- parent_item = proto_tree_add_text(tree, tvb, offset, sub_tag_length, "HT Capabilities");
- sub_tag_tree = proto_item_add_subtree(parent_item, ett_tag_neighbor_report_sub_tag_tree);
+ sub_tag_tree = proto_tree_add_subtree(tree, tvb, offset, sub_tag_length,
+ ett_tag_neighbor_report_sub_tag_tree, NULL, "HT Capabilities");
dissect_ht_capability_ie(sub_tag_tvb, pinfo, sub_tag_tree, 0, sub_tag_length, ti_len, FALSE);
break;
case NR_SUB_ID_HT_OPERATION:
- parent_item = proto_tree_add_text (tree, tvb, offset, sub_tag_length, "HT Information");
- sub_tag_tree = proto_item_add_subtree(parent_item, ett_tag_neighbor_report_sub_tag_tree);
+ sub_tag_tree = proto_tree_add_subtree(tree, tvb, offset, sub_tag_length,
+ ett_tag_neighbor_report_sub_tag_tree, NULL, "HT Information");
dissect_ht_info_ie_1_1(sub_tag_tvb, pinfo, sub_tag_tree, 0, sub_tag_length, ti_len);
break;
case NR_SUB_ID_SEC_CHANNEL_OFFSET:
- parent_item = proto_tree_add_text (tree, tvb, offset, sub_tag_length, "Secondary Channel Offset");
- sub_tag_tree = proto_item_add_subtree(parent_item, ett_tag_neighbor_report_sub_tag_tree);
+ sub_tag_tree = proto_tree_add_subtree(tree, tvb, offset, sub_tag_length,
+ ett_tag_neighbor_report_sub_tag_tree, NULL, "Secondary Channel Offset");
dissect_secondary_channel_offset_ie(sub_tag_tvb, pinfo, sub_tag_tree, 0, sub_tag_length, ti_len);
break;
case NR_SUB_ID_VENDOR_SPECIFIC:
@@ -14995,7 +14980,6 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset
{
guint32 i = 0;
gboolean isGrant;
- proto_item *sched_item;
proto_tree * alloc_tree;
if ((tag_len%15) != 0)
{
@@ -15006,8 +14990,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset
isGrant = ((ftype==CTRL_GRANT)||(ftype==CTRL_GRANT_ACK));
p_add_proto_data(wmem_file_scope(), pinfo, proto_wlan, IS_CTRL_GRANT_OR_GRANT_ACK_KEY, &isGrant);
for(i=0; i < tag_len; i+=15) {
- sched_item = proto_tree_add_text(tree, tvb, offset, 15, "Allocation %d", i/15);
- alloc_tree = proto_item_add_subtree(sched_item, ett_allocation_tree);
+ alloc_tree = proto_tree_add_subtree_format(tree, tvb, offset, 15, ett_allocation_tree, NULL, "Allocation %d", i/15);
proto_tree_add_item(alloc_tree, hf_ieee80211_tag_allocation_id, tvb, offset, 2, ENC_NA);
proto_tree_add_item(alloc_tree, hf_ieee80211_tag_allocation_type, tvb, offset, 2, ENC_NA);
proto_tree_add_item(alloc_tree, hf_ieee80211_tag_pseduo_static, tvb, offset, 2, ENC_NA);
@@ -15035,7 +15018,6 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset
case TAG_STA_AVAILABILITY:
{
guint32 i = 0;
- proto_item * sta_info_item;
proto_tree * sta_info_tree;
if ((tag_len%2) != 0)
{
@@ -15044,8 +15026,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset
}
offset += 2;
for(i=0; i < tag_len; i+=2) {
- sta_info_item = proto_tree_add_text(tree, tvb, offset, 2, "STA Info %d", i/2);
- sta_info_tree = proto_item_add_subtree(sta_info_item, ett_sta_info);
+ sta_info_tree = proto_tree_add_subtree_format(tree, tvb, offset, 2, ett_sta_info, NULL, "STA Info %d", i/2);
proto_tree_add_item(sta_info_tree, hf_ieee80211_tag_aid, tvb, offset, 2, ENC_NA);
proto_tree_add_item(sta_info_tree, hf_ieee80211_tag_cbap, tvb, offset, 2, ENC_NA);
proto_tree_add_item(sta_info_tree, hf_ieee80211_tag_pp_avail, tvb, offset, 2, ENC_NA);
@@ -15662,9 +15643,7 @@ dissect_ieee80211_mgt (guint16 fcf, tvbuff_t *tvb, packet_info *pinfo, proto_tre
{
proto_item *lcl_fixed_hdr;
proto_tree *lcl_fixed_tree;
- lcl_fixed_hdr = proto_tree_add_text(mgt_tree, tvb, 0, 0, "Fixed parameters");
- lcl_fixed_tree = proto_item_add_subtree (lcl_fixed_hdr, ett_fixed_parameters);
-
+ lcl_fixed_tree = proto_tree_add_subtree(mgt_tree, tvb, 0, 0, ett_fixed_parameters, &lcl_fixed_hdr, "Fixed parameters");
offset += add_fixed_field(lcl_fixed_tree, tvb, pinfo, 0, FIELD_ACTION);
proto_item_set_len(lcl_fixed_hdr, offset);
@@ -15684,8 +15663,7 @@ dissect_ieee80211_mgt (guint16 fcf, tvbuff_t *tvb, packet_info *pinfo, proto_tre
{
proto_item *lcl_fixed_hdr;
proto_tree *lcl_fixed_tree;
- lcl_fixed_hdr = proto_tree_add_text(mgt_tree, tvb, 0, 0, "Fixed parameters");
- lcl_fixed_tree = proto_item_add_subtree (lcl_fixed_hdr, ett_fixed_parameters);
+ lcl_fixed_tree = proto_tree_add_subtree(mgt_tree, tvb, 0, 0, ett_fixed_parameters, &lcl_fixed_hdr, "Fixed parameters");
offset += add_fixed_field(lcl_fixed_tree, tvb, pinfo, 0, FIELD_ACTION);
@@ -15704,13 +15682,11 @@ dissect_ieee80211_mgt (guint16 fcf, tvbuff_t *tvb, packet_info *pinfo, proto_tre
}
case MGT_ARUBA_WLAN:
{
- proto_item *aruba_hdr;
proto_tree *aruba_tree;
guint16 type;
type = tvb_get_ntohs(tvb, offset);
- aruba_hdr = proto_tree_add_text(mgt_tree, tvb, 0, 0, "Aruba Management");
- aruba_tree = proto_item_add_subtree(aruba_hdr, ett_fixed_parameters);
+ aruba_tree = proto_tree_add_subtree(mgt_tree, tvb, 0, 0, ett_fixed_parameters, NULL, "Aruba Management");
proto_tree_add_item(aruba_tree, hf_ieee80211_aruba, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -16073,19 +16049,17 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
* XXX - Should we look for is_ht as well?
*/
if ((frame_type_subtype == CTRL_CONTROL_WRAPPER) && tree) {
- cw_item = proto_tree_add_text(hdr_tree, tvb, offset, 2,
- "Contained Frame Control");
- cw_tree = proto_item_add_subtree (cw_item, ett_cntrl_wrapper_fc);
+ cw_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, 2,
+ ett_cntrl_wrapper_fc, NULL, "Contained Frame Control");
dissect_frame_control(cw_tree, tvb, FALSE, offset, pinfo);
dissect_ht_control(hdr_tree, tvb, offset + 2);
offset += 6;
- cw_item = proto_tree_add_text(hdr_tree, tvb, offset, 2,
- "Carried Frame");
- hdr_tree = proto_item_add_subtree (cw_item, ett_cntrl_wrapper_fc);
+ hdr_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, 2,
+ ett_cntrl_wrapper_fc, &cw_item, "Carried Frame");
if(isDMG == TRUE) {
- expert_add_info_format(pinfo, hdr_tree, &ei_ieee80211_dmg_subtype,
+ expert_add_info_format(pinfo, cw_item, &ei_ieee80211_dmg_subtype,
"DMG STA shouldn't transmit Control Wrapper frame");
- }
+ }
}
if ((frame_type_subtype == CTRL_CFP_END) && tree) {
@@ -16306,8 +16280,7 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
proto_tree_add_uint(bar_sub_tree, hf_ieee80211_block_ack_control_multi_tid_info, tvb, offset, 2, tid_count);
offset += 2;
- bar_parent_item = proto_tree_add_text (hdr_tree, tvb, offset, tid_count*4, "Per TID Info");
- bar_mtid_tree = proto_item_add_subtree(bar_parent_item, ett_block_ack);
+ bar_mtid_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, tid_count*4, ett_block_ack, NULL, "Per TID Info");
for (iii = 0; iii < tid_count; iii++) {
bar_parent_item = proto_tree_add_uint(bar_mtid_tree, hf_ieee80211_block_ack_multi_tid_info, tvb, offset, 4, iii);
bar_mtid_sub_tree = proto_item_add_subtree(bar_parent_item, ett_block_ack);
@@ -16447,8 +16420,7 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
hf_ieee80211_block_ack_control_compressed_tid_info, tvb, offset, 2, tid_count);
offset += 2;
- ba_parent_item = proto_tree_add_text (hdr_tree, tvb, offset, tid_count*4, "Per TID Info");
- ba_mtid_tree = proto_item_add_subtree(ba_parent_item, ett_block_ack);
+ ba_mtid_tree = proto_tree_add_subtree(hdr_tree, tvb, offset, tid_count*4, ett_block_ack, NULL, "Per TID Info");
for (iii = 0; iii < tid_count; iii++) {
ba_parent_item = proto_tree_add_uint(ba_mtid_tree, hf_ieee80211_block_ack_multi_tid_info, tvb, offset, 4, iii);
ba_mtid_sub_tree = proto_item_add_subtree(ba_parent_item, ett_block_ack);
@@ -17140,36 +17112,32 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
if ((keybyte & KEY_EXTIV) && (len >= EXTIV_LEN)) {
/* Extended IV; this frame is likely encrypted with TKIP or CCMP */
if (tree) {
- proto_item *extiv_fields;
-
/* Davide Schiera (2006-11-27): differentiated CCMP and TKIP if */
/* it's possible */
if (algorithm==PROTECTION_ALG_TKIP)
- extiv_fields = proto_tree_add_text(hdr_tree, tvb, hdr_len, 8,
- "TKIP parameters");
+ wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
+ ett_wep_parameters, NULL, "TKIP parameters");
else if (algorithm==PROTECTION_ALG_CCMP)
- extiv_fields = proto_tree_add_text(hdr_tree, tvb, hdr_len, 8,
- "CCMP parameters");
+ wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
+ ett_wep_parameters, NULL, "CCMP parameters");
else {
/* Davide Schiera -------------------------------------------- */
/* Davide Schiera (2006-11-27): differentiated CCMP and TKIP if*/
/* it's possible */
if (IS_TKIP(tvb, hdr_len)) {
algorithm=PROTECTION_ALG_TKIP;
- extiv_fields = proto_tree_add_text(hdr_tree, tvb, hdr_len, 8,
- "TKIP parameters");
+ wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
+ ett_wep_parameters, NULL, "TKIP parameters");
} else if (IS_CCMP(tvb, hdr_len)) {
algorithm=PROTECTION_ALG_CCMP;
- extiv_fields = proto_tree_add_text(hdr_tree, tvb, hdr_len, 8,
- "CCMP parameters");
+ wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
+ ett_wep_parameters, NULL, "CCMP parameters");
} else
- extiv_fields = proto_tree_add_text(hdr_tree, tvb, hdr_len, 8,
- "TKIP/CCMP parameters");
+ wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 8,
+ ett_wep_parameters, NULL, "TKIP/CCMP parameters");
}
proto_item_set_len (ti, hdr_len + 8);
- wep_tree = proto_item_add_subtree (extiv_fields, ett_wep_parameters);
-
if (algorithm==PROTECTION_ALG_TKIP) {
g_snprintf(out_buff, SHORT_STR, "0x%08X%02X%02X",
tvb_get_letohl(tvb, hdr_len + 4),
@@ -17230,12 +17198,9 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
*/
iv = tvb_get_ntoh24(tvb, hdr_len);
if (tree) {
- proto_item *wep_fields;
-
- wep_fields = proto_tree_add_text(hdr_tree, tvb, hdr_len, 4,
- "WEP parameters");
+ wep_tree = proto_tree_add_subtree(hdr_tree, tvb, hdr_len, 4,
+ ett_wep_parameters, NULL, "WEP parameters");
- wep_tree = proto_item_add_subtree (wep_fields, ett_wep_parameters);
proto_tree_add_uint (wep_tree, hf_ieee80211_wep_iv, tvb, hdr_len, 3, iv);
tvb_memcpy(tvb, iv_buff, hdr_len, 3);
is_iv_bad = weak_iv(iv_buff);