diff options
author | Michael Mann <mmann78@netscape.net> | 2013-08-26 00:54:48 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-08-26 00:54:48 +0000 |
commit | b56ffc414316d63330943dcc997a64aa24a57ecb (patch) | |
tree | d77998cd680d3777e15726adb6b818b01e14c2fb /epan/dissectors/packet-ieee80211.c | |
parent | a75499aae043c5ac43d8c0c95cc5184537104f76 (diff) |
Make all expert info filterable. Display filter names may need review, but at least the filtering is in place.
svn path=/trunk/; revision=51520
Diffstat (limited to 'epan/dissectors/packet-ieee80211.c')
-rw-r--r-- | epan/dissectors/packet-ieee80211.c | 263 |
1 files changed, 149 insertions, 114 deletions
diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c index f2cdfafced..a250bd9e3c 100644 --- a/epan/dissectors/packet-ieee80211.c +++ b/epan/dissectors/packet-ieee80211.c @@ -4254,6 +4254,32 @@ static gint ett_qos_map_set_range = -1; static expert_field ei_ieee80211_bad_length = EI_INIT; static expert_field ei_ieee80211_inv_val = EI_INIT; +static expert_field ei_ieee80211_vht_tpe_pwr_info_count = EI_INIT; +static expert_field ei_ieee80211_ff_query_response_length = EI_INIT; +static expert_field ei_ieee80211_ff_anqp_nai_realm_eap_len = EI_INIT; +static expert_field ei_hs20_anqp_nai_hrq_length = EI_INIT; +static expert_field ei_ieee80211_extra_data = EI_INIT; +static expert_field ei_ieee80211_tag_data = EI_INIT; +static expert_field ei_ieee80211_tdls_setup_confirm_malformed = EI_INIT; +static expert_field ei_ieee80211_ff_anqp_nai_field_len = EI_INIT; +static expert_field ei_ieee80211_rsn_pcs_count = EI_INIT; +static expert_field ei_ieee80211_tag_measure_request_beacon_unknown = EI_INIT; +static expert_field ei_ieee80211_tag_number = EI_INIT; +static expert_field ei_ieee80211_ff_anqp_info_length = EI_INIT; +static expert_field ei_hs20_anqp_ofn_length = EI_INIT; +static expert_field ei_ieee80211_tdls_setup_response_malformed = EI_INIT; +static expert_field ei_ieee80211_ff_anqp_capability = EI_INIT; +static expert_field ei_ieee80211_not_enough_room_for_anqp_header = EI_INIT; +static expert_field ei_ieee80211_ff_query_request_length = EI_INIT; +static expert_field ei_ieee80211_wfa_ie_wme_qos_info_bad_ftype = EI_INIT; +static expert_field ei_ieee80211_pmkid_count_too_large = EI_INIT; +static expert_field ei_ieee80211_ff_anqp_venue_length = EI_INIT; +static expert_field ei_ieee80211_ff_anqp_roaming_consortium_oi_len = EI_INIT; +static expert_field ei_ieee80211_tag_length = EI_INIT; +static expert_field ei_ieee80211_missing_data = EI_INIT; +static expert_field ei_ieee80211_rsn_pmkid_count = EI_INIT; +static expert_field ei_ieee80211_fc_retry = EI_INIT; +static expert_field ei_ieee80211_tag_wnm_sleep_mode_no_key_data = EI_INIT; static const fragment_items frag_items = { &ett_fragment, @@ -4970,7 +4996,7 @@ dissect_advertisement_protocol(packet_info *pinfo, proto_tree *tree, tag_len = tvb_get_guint8(tvb, offset + 1); if (tag_no != TAG_ADVERTISEMENT_PROTOCOL) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, item, &ei_ieee80211_tag_number, "Unexpected IE %d (expected Advertisement " "Protocol)", tag_no); return 2 + tag_len; @@ -4980,7 +5006,7 @@ dissect_advertisement_protocol(packet_info *pinfo, proto_tree *tree, if (tag_len < 2) { if (!anqp) item = proto_tree_add_uint(tree, hf_ieee80211_tag_length, tvb, offset + 1, 1, tag_len); - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, item, &ei_ieee80211_tag_length, "Advertisement Protocol: IE must be at least 2 " "octets long"); return 2 + tag_len; @@ -5026,7 +5052,7 @@ dissect_advertisement_protocol(packet_info *pinfo, proto_tree *tree, offset += 1; left -= 1; if (len > left) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, item, &ei_ieee80211_tag_length, "Vendor specific info length error"); return 2 + tag_len; } @@ -5038,7 +5064,7 @@ dissect_advertisement_protocol(packet_info *pinfo, proto_tree *tree, } if (left) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, item, &ei_ieee80211_extra_data, "Unexpected extra data in the end"); } @@ -5054,7 +5080,7 @@ dissect_anqp_query_list(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset += 2; } if (offset != end) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, tree, &ei_ieee80211_ff_anqp_info_length, "Unexpected ANQP Query list format"); } } @@ -5091,8 +5117,7 @@ dissect_anqp_capab_list(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; if ((len < 3) || ((offset + len) > end)) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, - "Invalid vendor-specific ANQP capability"); + expert_add_info(pinfo, tree, &ei_ieee80211_ff_anqp_capability); return; } oui = tvb_get_ntoh24(tvb, offset); @@ -5132,7 +5157,7 @@ dissect_anqp_capab_list(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int } } if (offset != end) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, tree, &ei_ieee80211_ff_anqp_info_length, "Unexpected ANQP Capability list format"); } } @@ -5176,8 +5201,7 @@ dissect_venue_name_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; if ((vlen > (end - offset)) || (vlen < 3)) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, - "Invalid Venue Name Duple length"); + expert_add_info(pinfo, item, &ei_ieee80211_ff_anqp_venue_length); break; } proto_tree_add_item(tree, hf_ieee80211_ff_anqp_venue_language, @@ -5240,8 +5264,7 @@ dissect_roaming_consortium_list(proto_tree *tree, tvbuff_t *tvb, packet_info *pi tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; if ((len > (end - offset)) || (len < 3)) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, - "Invalid Roaming Consortium OI"); + expert_add_info(pinfo, item, &ei_ieee80211_ff_anqp_roaming_consortium_oi_len); break; } item = proto_tree_add_item(tree, @@ -5322,7 +5345,7 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; if (offset + len > end) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, item, &ei_ieee80211_ff_anqp_nai_field_len, "Invalid NAI Realm List"); break; } @@ -5336,7 +5359,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, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, item, &ei_ieee80211_ff_anqp_nai_field_len, "Invalid NAI Realm Data"); break; } @@ -5364,8 +5387,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 + eap_len > f_end) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, - "Invalid EAP Method subfield"); + expert_add_info(pinfo, item, &ei_ieee80211_ff_anqp_nai_realm_eap_len); break; } @@ -5513,8 +5535,7 @@ static void dissect_hs20_anqp_operator_friendly_name(proto_tree *tree, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset++; if (vlen > end - offset || vlen < 3) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, - "Invalid Operator Friendly Name Duple length"); + expert_add_info(pinfo, item, &ei_hs20_anqp_ofn_length); break; } proto_tree_add_item(tree, hf_hs20_anqp_ofn_language, @@ -5628,8 +5649,7 @@ dissect_hs20_anqp_nai_home_realm_query(proto_tree *tree, tvbuff_t *tvb, packet_i tvb, offset, 1, ENC_LITTLE_ENDIAN); offset++; if (offset + len > end) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, - "Invalid NAI Home Realm Query length"); + expert_add_info(pinfo, item, &ei_hs20_anqp_nai_hrq_length); break; } proto_tree_add_item(tree, hf_hs20_anqp_nai_hrq_realm_name, @@ -5732,8 +5752,7 @@ dissect_anqp_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offse len = tvb_get_letohs(tvb, offset); offset += 2; if (tvb_reported_length_remaining(tvb, offset) < len) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, - "Invalid ANQP Info length"); + expert_add_info(pinfo, tree, &ei_ieee80211_ff_anqp_info_length); return 4 + len; } switch (id) @@ -5807,7 +5826,7 @@ dissect_anqp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, gb proto_item_append_text(tree, ": ANQP "); proto_item_append_text(tree, request ? "Request" : "Response"); if (tvb_reported_length_remaining(tvb, offset) < 4) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, tree, &ei_ieee80211_not_enough_room_for_anqp_header, "Not enough room for ANQP header"); return; } @@ -5833,8 +5852,7 @@ dissect_gas_initial_request(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, item = proto_tree_add_text(tree, tvb, offset, 2 + req_len, "Query Request"); if (tvb_reported_length_remaining(tvb, offset) < 2 + req_len) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, - "Invalid Query Request Length"); + expert_add_info(pinfo, tree, &ei_ieee80211_ff_query_request_length); return tvb_reported_length_remaining(tvb, offset); } query = proto_item_add_subtree(item, ett_gas_query); @@ -5871,8 +5889,7 @@ dissect_gas_initial_response(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo item = proto_tree_add_text(tree, tvb, offset, 2 + resp_len, "Query Response"); if (tvb_reported_length_remaining(tvb, offset) < 2 + resp_len) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, - "Invalid Query Response Length"); + expert_add_info(pinfo, tree, &ei_ieee80211_ff_query_response_length); return tvb_reported_length_remaining(tvb, offset); } query = proto_item_add_subtree(item, ett_gas_query); @@ -5950,8 +5967,7 @@ dissect_gas_comeback_response(proto_tree *tree, tvbuff_t *tvb, packet_info *pinf item = proto_tree_add_text(tree, tvb, offset, 2 + resp_len, "Query Response"); if (tvb_reported_length_remaining(tvb, offset) < 2 + resp_len) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, - "Invalid Query Response Length"); + expert_add_info(pinfo, tree, &ei_ieee80211_ff_query_response_length); return tvb_reported_length_remaining(tvb, offset); } query = proto_item_add_subtree(item, ett_gas_query); @@ -6992,9 +7008,7 @@ wnm_sleep_mode_resp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int off offset += add_fixed_field(tree, tvb, pinfo, offset, FIELD_KEY_DATA_LENGTH); left = tvb_reported_length_remaining(tvb, offset); if (left < key_data_len) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, - "WNM-Sleep Mode Response is not long enough to " - "include Key Data"); + expert_add_info(pinfo, tree, &ei_ieee80211_tag_wnm_sleep_mode_no_key_data); return offset - start; } proto_tree_add_item(tree, hf_ieee80211_ff_key_data, tvb, offset, @@ -7082,9 +7096,7 @@ add_ff_action_tdls(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offs offset += add_fixed_field(tree, tvb, pinfo, offset, FIELD_DIALOG_TOKEN); if (tvb_reported_length_remaining(tvb, offset) < 2) { if (status == 0) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, - "TDLS Setup Response (success) does not " - "include mandatory fields"); + expert_add_info(pinfo, tree, &ei_ieee80211_tdls_setup_response_malformed); } break; } @@ -7095,9 +7107,7 @@ add_ff_action_tdls(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offs offset += add_fixed_field(tree, tvb, pinfo, offset, FIELD_STATUS_CODE); if (tvb_reported_length_remaining(tvb, offset) < 1) { if (status == 0) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, - "TDLS Setup Confirm (success) does not include " - "mandatory fields"); + expert_add_info(pinfo, tree, &ei_ieee80211_tdls_setup_confirm_malformed); } break; } @@ -7809,7 +7819,7 @@ dissect_qos_info(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset break; } default: - expert_add_info_format(pinfo, qos_info_item, PI_UNDECODED, PI_WARN, "Could not deduce direction to decode correctly, ftype %u", ftype); + expert_add_info_format_text(pinfo, qos_info_item, &ei_ieee80211_wfa_ie_wme_qos_info_bad_ftype, "Could not deduce direction to decode correctly, ftype %u", ftype); break; } @@ -8194,7 +8204,7 @@ dissect_vendor_ie_atheros(proto_item *item _U_, proto_tree *ietree, proto_item *cap_item; if (tag_len <= 3) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag length %u too short, must be >= 6", tag_len+3); /* Add length of OUI to tag_length */ + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u too short, must be >= 6", tag_len+3); /* Add length of OUI to tag_length */ return; } proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_type, tvb, offset, 1, ENC_NA); @@ -8518,7 +8528,7 @@ dissect_qos_capability(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int break; } default: - expert_add_info_format(pinfo, cap_info_item, PI_UNDECODED, PI_WARN, "Could not deduce direction to decode correctly, ftype %u", ftype); + expert_add_info_format_text(pinfo, cap_info_item, &ei_ieee80211_wfa_ie_wme_qos_info_bad_ftype, "Could not deduce direction to decode correctly, ftype %u", ftype); break; } @@ -8563,7 +8573,7 @@ dissect_rsn_ie(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, if (offset + (pcs_count * 4) > tag_end) { - expert_add_info_format(pinfo, rsn_pcs_count, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, rsn_pcs_count, &ei_ieee80211_rsn_pcs_count, "Pairwise Cipher Suite Count too large, 4*%u > %d", pcs_count, tag_end - offset); pcs_count = (tag_end - offset) / 4; } @@ -8599,7 +8609,7 @@ dissect_rsn_ie(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, if (offset + (akms_count * 4) > tag_end) { - expert_add_info_format(pinfo, rsn_akms_count, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, rsn_akms_count, &ei_ieee80211_rsn_pmkid_count, "Auth Key Management (AKM) Suite Count too large, 4*%u > %d", akms_count, tag_end - offset); akms_count = (tag_end - offset) / 4; } @@ -8646,7 +8656,7 @@ dissect_rsn_ie(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, if (offset + (pmkid_count * 16) > tag_end) { - expert_add_info_format(pinfo, rsn_pmkid_count, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, rsn_pmkid_count, &ei_ieee80211_pmkid_count_too_large, "PMKID Count too large, 16*%u > %d", pmkid_count, tag_end - offset); pmkid_count = (tag_end - offset) / 16; } @@ -8689,7 +8699,7 @@ dissect_extended_capabilities_ie(packet_info *pinfo, proto_tree *tree, if (tag_len < 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag length %u too short, must be greater than 0", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u too short, must be greater than 0", tag_len); return offset; } proto_item_append_text(ti, " (%u octet%s)", tag_len, plurality(tag_len, "", "s")); @@ -8876,7 +8886,7 @@ dissect_vht_capability_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, i proto_tree *cap_tree; if (tag_len != 12) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "VHT Capabilities IE length %u wrong, must be = 12", tag_len); return offset; } @@ -8950,7 +8960,7 @@ dissect_vht_operation_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in proto_tree *op_tree, *basic_mcs_tree; if (tag_len != 5) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "VHT Operation IE length %u wrong, must be = 5", tag_len); return offset; } @@ -8990,7 +9000,7 @@ dissect_vht_tx_pwr_envelope(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 i; if (tag_len < 2 && tag_len <= 5) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "VHT TX PWR Envelope IE length %u wrong, must be >= 2 and <= 5", tag_len); return offset; } @@ -9026,8 +9036,7 @@ dissect_vht_tx_pwr_envelope(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, offset += 1; break; default: - expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR, - "Max Tx Pwr Count is Incorrect, should be 0-7"); + expert_add_info(pinfo, ti, &ei_ieee80211_vht_tpe_pwr_info_count); offset += 1; break; } @@ -9327,7 +9336,7 @@ dissect_timeout_interval(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, in pi = proto_tree_add_item(tree, hf_ieee80211_tag_timeout_int_type, tvb, offset, 1, ENC_BIG_ENDIAN); if (tag_len < 5) { - expert_add_info_format(pinfo, pi, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, pi, &ei_ieee80211_tag_length, "Timeout Interval content length must be at least " "5 bytes"); return; @@ -9348,7 +9357,7 @@ dissect_ric_data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset int offset_r = 0; if (tag_len != 4) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "RIC Data Length must be 4 bytes"); return 0; } @@ -9403,7 +9412,7 @@ dissect_ric_descriptor(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int guint8 rsrc_type = 0; if (tag_len < 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "RIC Data Length must be at least 1 byte"); return 0; } @@ -9500,7 +9509,7 @@ dissect_ht_info_ie_1_1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int cap_tree = tree; if (tag_len < 22) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "HT Information IE content length %u wrong, must be at least 22 bytes", tag_len); return offset; } @@ -9584,13 +9593,13 @@ dissect_wapi_param_set(tvbuff_t *tvb, packet_info *pinfo, /*MIN: 2 + (2+4)+ (2+4) + 4 + 2 + 0 (BKID CNT and LIST) =20*/ if (tag_len < 20) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "tag_len is %d, its neither WAPI not BSS-AC-Access-Delay", tag_len); return offset; } if (version != 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Version of WAPI protocol is %d, must be = 1", version); return offset; } @@ -9613,7 +9622,7 @@ dissect_wapi_param_set(tvbuff_t *tvb, packet_info *pinfo, } proto_item_append_text(ti, " /"); } else { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Number of AKM suites is 0, must be min 1"); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Number of AKM suites is 0, must be min 1"); return offset; } @@ -9635,7 +9644,7 @@ dissect_wapi_param_set(tvbuff_t *tvb, packet_info *pinfo, } proto_item_append_text(ti, " /"); } else { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Number of Unicast Cipher suites is 0, must be min 1"); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Number of Unicast Cipher suites is 0, must be min 1"); return offset; } @@ -9713,7 +9722,7 @@ static int dissect_tfs_request(packet_info *pinfo, proto_tree *tree, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset++; if (offset + 1 >= end) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_WARN, + expert_add_info_format_text(pinfo, tree, &ei_ieee80211_missing_data, "No TFS Request subelements in TFS Request"); return end; } @@ -9731,7 +9740,7 @@ static int dissect_tfs_request(packet_info *pinfo, proto_tree *tree, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset++; if (offset + len > end) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, tree, &ei_ieee80211_tag_length, "Not enough data for TFS Request subelement"); return end; } @@ -9755,7 +9764,7 @@ static int dissect_tfs_request(packet_info *pinfo, proto_tree *tree, if (offset < end) { proto_tree_add_text(tree, tvb, offset, end - offset, "Unexpected extra data"); - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_WARN, + expert_add_info_format_text(pinfo, tree, &ei_ieee80211_extra_data, "Extra data after TFS Subelements"); } @@ -9794,7 +9803,7 @@ static int dissect_tfs_response(packet_info *pinfo, proto_tree *tree, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset++; if (offset + len > end) { - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, tree, &ei_ieee80211_tag_length, "Not enough data for TFS Request subelement"); return end; } @@ -9825,7 +9834,7 @@ static int dissect_tfs_response(packet_info *pinfo, proto_tree *tree, if (offset < end) { proto_tree_add_text(tree, tvb, offset, end - offset, "Unexpected extra data"); - expert_add_info_format(pinfo, tree, PI_MALFORMED, PI_WARN, + expert_add_info_format_text(pinfo, tree, &ei_ieee80211_extra_data, "Extra data after TFS Status subelements"); } @@ -9974,7 +9983,7 @@ dissect_ap_channel_report(tvbuff_t *tvb, packet_info *pinfo, int tag_end, proto_item *ti) { if (tag_len < 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "AP Channel Report length %u wrong, must be > 1", tag_len); return offset; } @@ -9998,7 +10007,7 @@ dissect_secondary_channel_offset_ie(tvbuff_t *tvb, packet_info *pinfo, { if (tag_len != 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Secondary Channel Offset length %u wrong, must be = 1", tag_len); return offset; } @@ -10017,7 +10026,7 @@ dissect_bss_avg_access_delay_ie(tvbuff_t *tvb, packet_info *pinfo, { if (tag_len != 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "BSS Average Access Delay length %u wrong, must be = 1", tag_len); return offset; } @@ -10036,7 +10045,7 @@ dissect_antenna_ie(tvbuff_t *tvb, packet_info *pinfo, { if (tag_len != 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Antenna length %u wrong, must be = 1", tag_len); return offset; } @@ -10055,7 +10064,7 @@ dissect_rsni_ie(tvbuff_t *tvb, packet_info *pinfo, { if (tag_len != 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "RSNI length %u wrong, must be = 1", tag_len); return offset; } @@ -10076,7 +10085,7 @@ dissect_bss_available_admission_capacity_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *btree; guint16 bitmask; if (tag_len < 2) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "BSS Available Admission Capacity length %u wrong, must > = 2", tag_len); return offset; } @@ -10169,7 +10178,7 @@ dissect_bss_ac_access_delay_ie(tvbuff_t *tvb, packet_info *pinfo, { if (tag_len == 4) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "BSS AC Access Delay length %u wrong, must = 4", tag_len); return offset; } @@ -10201,7 +10210,7 @@ dissect_rm_enabled_capabilities_ie(packet_info *pinfo, proto_tree *tree, if (tag_len != 5) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "RM Enabled Capabilities length %u wrong, must = 4", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "RM Enabled Capabilities length %u wrong, must = 4", tag_len); return offset; } proto_item_append_text(ti, " (%d octets)", tag_len); @@ -10276,7 +10285,7 @@ dissect_ht_capability_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in proto_tree *cap_tree; if (tag_len != 26) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "HT Capabilities IE length %u wrong, must be = 26", tag_len); return offset; } @@ -10415,7 +10424,7 @@ dissect_ht_info_ie_1_0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int proto_tree *cap_tree; if (tag_len != 22) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u wrong, must be = 22", tag_len); return offset; } @@ -10604,7 +10613,7 @@ dissect_frame_control(proto_tree *tree, tvbuff_t *tvb, gboolean wlan_broken_fc, ti = proto_tree_add_item(flag_tree, hf_ieee80211_fc_retry, tvb, offset, 1, ENC_NA); if( IS_RETRY(flags) ) { - expert_add_info_format(pinfo, ti, PI_SEQUENCE, PI_NOTE, "Retransmission (retry)"); + expert_add_info(pinfo, ti, &ei_ieee80211_fc_retry); } proto_tree_add_item(flag_tree, hf_ieee80211_fc_pwr_mgt, tvb, offset, 1, ENC_NA); proto_tree_add_item(flag_tree, hf_ieee80211_fc_more_data, tvb, offset, 1, ENC_NA); @@ -10677,7 +10686,7 @@ dissect_interworking(packet_info *pinfo, proto_tree *tree, proto_item *item, offset += 1; if ((tvb_reported_length_remaining(tvb, offset) < len) || (len == 0)) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, item, &ei_ieee80211_tag_length, "Truncated Interworking element"); return offset; } @@ -10706,7 +10715,7 @@ dissect_interworking(packet_info *pinfo, proto_tree *tree, proto_item *item, } if ((len != 1) && (len != (1 + 2)) && (len != (1 + 6)) && (len != (1 + 2 + 6))) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, item, &ei_ieee80211_tag_length, "Invalid Interworking element length"); } @@ -10812,7 +10821,7 @@ dissect_roaming_consortium(packet_info *pinfo, proto_tree *tree, end = offset + len; if ((tvb_reported_length_remaining(tvb, offset) < len) || (len < 2)) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, item, &ei_ieee80211_tag_length, "Truncated Roaming Consortium element"); return 2 + len; } @@ -10831,7 +10840,7 @@ dissect_roaming_consortium(packet_info *pinfo, proto_tree *tree, offset += 1; if (offset + oi1_len > end) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, item, &ei_ieee80211_tag_length, "Truncated Roaming Consortium element"); return 2 + len; } @@ -10842,7 +10851,7 @@ dissect_roaming_consortium(packet_info *pinfo, proto_tree *tree, offset += oi1_len; if (offset + oi2_len > end) { - expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, item, &ei_ieee80211_tag_length, "Truncated Roaming Consortium element"); return 2 + len; } @@ -10882,7 +10891,7 @@ ieee80211_tag_ssid(packet_info *pinfo, proto_tree *tree, return offset; if (ssid_len > MAX_SSID_LEN) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "SSID length (%u) greater than maximum (%u)", ssid_len, MAX_SSID_LEN); ssid_len = MAX_SSID_LEN; @@ -10933,7 +10942,7 @@ ieee80211_tag_supp_rates(packet_info *pinfo, proto_tree *tree, { /* 7.3.2.2 Supported Rates element (1) */ if (tag_len < 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u too short, must be greater than 0", tag_len); return offset; @@ -10963,7 +10972,7 @@ ieee80211_tag_fh_parameter(packet_info *pinfo, proto_tree *tree, { /* 7.3.2.3 FH Parameter Set element (2) */ if (tag_len < 5) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u too short, must be >= 5", tag_len); return offset; } @@ -10997,7 +11006,7 @@ ieee80211_tag_ds_parameter(packet_info *pinfo, proto_tree *tree, { /* 7.3.2.4 DS Parameter Set element (3) */ if (tag_len != 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u wrong, must be = 1", tag_len); return offset; } @@ -11024,7 +11033,7 @@ ieee80211_tag_cf_parameter(packet_info *pinfo, proto_tree *tree, { /* 7.3.2.5 CF Parameter Set element (4) */ if (tag_len != 6) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u wrong, must be = 6", tag_len); return offset; } @@ -11066,7 +11075,7 @@ ieee80211_tag_tim(packet_info *pinfo, proto_tree *tree, /* 7.3.2.6 TIM (5) */ if (tag_len < 4) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u too short, must be >= 4", tag_len); return offset; } @@ -11108,7 +11117,7 @@ ieee80211_tag_ibss_parameter(packet_info *pinfo, proto_tree *tree, /* 7.3.2.7 IBSS Parameter Set element (6) */ if (tag_len != 2) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u wrong, must be = 2", tag_len); return offset; } @@ -11142,7 +11151,7 @@ ieee80211_tag_country_info(packet_info *pinfo, proto_tree *tree, proto_item *sub_item; if (tag_len < 6) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u too short, must be >= 6", tag_len); return offset; } @@ -11228,7 +11237,7 @@ ieee80211_tag_fh_hopping_parameter(packet_info *pinfo, { /* 7.3.2.10 Hopping Pattern Parameters information element (8) */ if (tag_len < 2) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u too short, must be >= 2", tag_len); return offset; } @@ -11257,7 +11266,7 @@ ieee80211_tag_fh_hopping_table(packet_info *pinfo, proto_tree *tree, { /* 7.3.2.11 Hopping Pattern Table information element (9) */ if (tag_len < 4) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u too short, must be >= 4", tag_len); return offset; } @@ -11371,7 +11380,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_QBSS_LOAD: /* 7.3.2.28 BSS Load element (11) */ if ((tag_len < 4) || (tag_len > 5)) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 4 or 5", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 4 or 5", tag_len); break; } @@ -11402,7 +11411,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_TSPEC: /* 7.3.2.30 TSPEC element (13) */ if (tag_len != 55) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 55", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 55", tag_len); break; } offset += 2; @@ -11460,7 +11469,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_TCLAS: /* 7.3.2.31 TCLAS element (14) */ if (tag_len < 6) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag length %u too short, must be >= 6", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u too short, must be >= 6", tag_len); break; } { @@ -11597,7 +11606,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_SCHEDULE: /* 7.3.2.34 Schedule element (15) */ if (tag_len != 14) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 14", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 14", tag_len); break; } offset += 2; @@ -11624,7 +11633,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset { if (tag_len != 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 1", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 1", tag_len); break; } offset += 2; @@ -11640,7 +11649,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset { if (tag_len != 2) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 2", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 2", tag_len); break; } offset += 2; @@ -11659,7 +11668,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset { if (tag_len != 0) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 0", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 0", tag_len); break; } offset += 2; @@ -11672,7 +11681,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset { if (tag_len != 2) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 2", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 2", tag_len); break; } offset += 2; @@ -11696,7 +11705,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset offset += 2; if (tag_len % 2 == 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag length %u must be even",tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u must be even", tag_len); break; } while (offset < tag_end) @@ -11722,7 +11731,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset { if (tag_len != 3) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 3", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 3", tag_len); break; } offset += 2; @@ -11745,7 +11754,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_MEASURE_REQ: /* 7.3.2.21 Measurement Request element (38) with update from 802.11k-2008 */ if (tag_len < 3) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag length %u too short, must be >= 3", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u too short, must be >= 3", tag_len); break; } { @@ -11869,7 +11878,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset { proto_item *tix; tix = proto_tree_add_item(sub_tree, hf_ieee80211_tag_measure_request_beacon_unknown, tvb, offset, sub_tag_end - offset, ENC_NA); - expert_add_info_format(pinfo, tix, PI_UNDECODED, PI_WARN, " Unknown Data (not interpreted)"); + expert_add_info(pinfo, tix, &ei_ieee80211_tag_measure_request_beacon_unknown); offset = sub_tag_end; } } @@ -11931,7 +11940,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_MEASURE_REP: /* 7.3.2.22 Measurement Report element (39) with update from 802.11k-2008 */ if (tag_len < 3) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag length %u too short, must be >= 3", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u too short, must be >= 3", tag_len); break; } { @@ -12175,7 +12184,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_QUIET: /* 7.3.2.23 Quiet element (40) */ if (tag_len != 6) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 6", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 6", tag_len); break; } offset += 2; @@ -12201,7 +12210,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_IBSS_DFS: /* 7.3.2.24 IBSS DFS element (41) */ if (tag_len < 7) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be >= 7", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be >= 7", tag_len); break; } { @@ -12230,7 +12239,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_ERP_INFO_OLD: if (tag_len != 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 1", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 1", tag_len); break; } { @@ -12252,7 +12261,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_TS_DELAY: /* 7.3.2.32 TS Delay element (43) */ if (tag_len != 4) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 4", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 4", tag_len); break; } offset += 2; @@ -12265,7 +12274,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_TCLAS_PROCESS: /* 7.3.2.33 TCLAS Processing element (44) */ if (tag_len != 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 1", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 1", tag_len); break; } offset += 2; @@ -12278,7 +12287,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_QOS_CAPABILITY: /* 7.3.2.35 QoS Capability element (46) */ if (tag_len != 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 1", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 1", tag_len); break; } { @@ -12292,7 +12301,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_RSN_IE: /* 7.3.2.25 RSN information element (48) */ if (tag_len < 18) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be >= 18", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be >= 18", tag_len); break; } offset += 2; @@ -12303,7 +12312,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_EXT_SUPP_RATES: /* 7.3.2.14 Extended Supported Rates element (50) */ if (tag_len < 1) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag length %u too short, must be greater than 0", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length %u too short, must be greater than 0", tag_len); break; } offset += 2; @@ -12334,7 +12343,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset if (tag_len < 26) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u too short, must be >= 26", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u too short, must be >= 26", tag_len); break; } offset += 2; @@ -12368,7 +12377,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset case TAG_VENDOR_SPECIFIC_IE: /* 7.3.2.26 Vendor Specific information element (221) */ if (tag_len < 3) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be >= 3", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be >= 3", tag_len); break; } { @@ -12738,7 +12747,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset proto_tree *subtree; if (tag_len != 6) { - expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "Tag Length %u wrong, must be = 6", tag_len); + expert_add_info_format_text(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag Length %u wrong, must be = 6", tag_len); break; } offset += 2; @@ -12943,7 +12952,7 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset } default: proto_tree_add_item(tree, hf_ieee80211_tag_data, tvb, offset + 1 + 1, tag_len, ENC_NA); - expert_add_info_format(pinfo, ti_tag, PI_UNDECODED, PI_NOTE, + expert_add_info_format_text(pinfo, ti_tag, &ei_ieee80211_tag_data, "Dissector for 802.11 IE Tag" " (%s) code not implemented, Contact" " Wireshark developers if you want this supported", val_to_str_ext(tag_no, @@ -21108,6 +21117,32 @@ proto_register_ieee80211 (void) { &ei_ieee80211_inv_val, { "ieee80211.invalid_value", PI_MALFORMED, PI_WARN, "Invalid value", EXPFILL }}, + { &ei_ieee80211_tag_number, { "wlan_mgt.tag.number.unexpected_ie", PI_MALFORMED, PI_ERROR, "Unexpected IE (expected Advertisement Protocol)", EXPFILL }}, + { &ei_ieee80211_tag_length, { "wlan_mgt.tag.length.bad", PI_MALFORMED, PI_ERROR, "Bad tag length", EXPFILL }}, + { &ei_ieee80211_extra_data, { "ieee80211.extra_data", PI_MALFORMED, PI_WARN, "Unexpected extra data in the end", EXPFILL }}, + { &ei_ieee80211_ff_anqp_capability, { "wlan_mgt.fixed.anqp.capability.invalid", PI_MALFORMED, PI_ERROR, "Invalid vendor-specific ANQP capability", EXPFILL }}, + { &ei_ieee80211_ff_anqp_venue_length, { "wlan_mgt.fixed.anqp.venue.length.invalid", PI_MALFORMED, PI_ERROR, "Invalid Venue Name Duple length", EXPFILL }}, + { &ei_ieee80211_ff_anqp_roaming_consortium_oi_len, { "wlan_mgt.fixed.anqp.roaming_consortium.oi_len.invalid", PI_MALFORMED, PI_ERROR, "Invalid Roaming Consortium OI", EXPFILL }}, + { &ei_ieee80211_ff_anqp_nai_field_len, { "wlan_mgt.fixed.anqp.nai_realm_list.field_len.invalid", PI_MALFORMED, PI_ERROR, "Invalid NAI Realm List", EXPFILL }}, + { &ei_ieee80211_ff_anqp_nai_realm_eap_len, { "wlan_mgt.fixed.naqp_nai_realm_list.eap_method_len.invalid", PI_MALFORMED, PI_ERROR, "Invalid EAP Method subfield", EXPFILL }}, + { &ei_hs20_anqp_ofn_length, { "wlan_mgt.hs20.anqp.ofn.length.invalid", PI_MALFORMED, PI_ERROR, "Invalid Operator Friendly Name Duple length", EXPFILL }}, + { &ei_hs20_anqp_nai_hrq_length, { "wlan_mgt.hs20.anqp.nai_hrq.length.invalid", PI_MALFORMED, PI_ERROR, "Invalid NAI Home Realm Query length", EXPFILL }}, + { &ei_ieee80211_ff_anqp_info_length, { "wlan_mgt.fixed.anqp.info_length.invalid", PI_MALFORMED, PI_ERROR, "Invalid ANQP Info length", EXPFILL }}, + { &ei_ieee80211_not_enough_room_for_anqp_header, { "wlan_mgt.fixed.query_length_invalid", PI_MALFORMED, PI_ERROR, "Not enough room for ANQP header", EXPFILL }}, + { &ei_ieee80211_ff_query_request_length, { "wlan_mgt.fixed.query_request_length.invalid", PI_MALFORMED, PI_ERROR, "Invalid Query Request Length", EXPFILL }}, + { &ei_ieee80211_ff_query_response_length, { "wlan_mgt.fixed.query_response_length.invalid", PI_MALFORMED, PI_ERROR, "Invalid Query Response Length", EXPFILL }}, + { &ei_ieee80211_tag_wnm_sleep_mode_no_key_data, { "wlan_mgt.wnm_sleep_mode.no_key_data", PI_MALFORMED, PI_ERROR, "WNM-Sleep Mode Response is not long enough to include Key Data", EXPFILL }}, + { &ei_ieee80211_tdls_setup_response_malformed, { "wlan_mgt.tdls_setup_response_malformed", PI_MALFORMED, PI_ERROR, "TDLS Setup Response (success) does not include mandatory fields", EXPFILL }}, + { &ei_ieee80211_tdls_setup_confirm_malformed, { "wlan_mgt.tdls_setup_confirm_malformed", PI_MALFORMED, PI_ERROR, "TDLS Setup Confirm (success) does not include mandatory fields", EXPFILL }}, + { &ei_ieee80211_wfa_ie_wme_qos_info_bad_ftype, { "wlan_mgt.wfa.ie.wme.qos_info.bad_ftype", PI_UNDECODED, PI_WARN, "Could not deduce direction to decode correctly", EXPFILL }}, + { &ei_ieee80211_rsn_pcs_count, { "wlan_mgt.rsn.pcs.count.invalid", PI_MALFORMED, PI_ERROR, "Pairwise Cipher Suite Count too large", EXPFILL }}, + { &ei_ieee80211_rsn_pmkid_count, { "wlan_mgt.rsn.akms.count.invalid", PI_MALFORMED, PI_ERROR, "Auth Key Management (AKM) Suite Count too large", EXPFILL }}, + { &ei_ieee80211_pmkid_count_too_large, { "wlan_mgt.rsn.pmkid.count.invalid", PI_MALFORMED, PI_ERROR, "PMKID Count too large", EXPFILL }}, + { &ei_ieee80211_vht_tpe_pwr_info_count, { "wlan_mgt.vht.tpe.pwr_info.count.invalid", PI_MALFORMED, PI_ERROR, "Max Tx Pwr Count is Incorrect, should be 0-7", EXPFILL }}, + { &ei_ieee80211_missing_data, { "ieee80211.missing_data", PI_MALFORMED, PI_WARN, "No TFS Request subelements in TFS Request", EXPFILL }}, + { &ei_ieee80211_fc_retry, { "wlan.fc.retry.expert", PI_SEQUENCE, PI_NOTE, "Retransmission (retry)", EXPFILL }}, + { &ei_ieee80211_tag_measure_request_beacon_unknown, { "wlan_mgt.measure.req.beacon.unknown.expert", PI_UNDECODED, PI_WARN, "Unknown Data (not interpreted)", EXPFILL }}, + { &ei_ieee80211_tag_data, { "wlan_mgt.tag.data.undecoded", PI_UNDECODED, PI_NOTE, "Dissector for 802.11 IE Tag code not implemented, Contact Wireshark developers if you want this supported", EXPFILL }}, }; expert_module_t *expert_ieee80211; |