From a4128c56b91bfb87aba255438f1944362264ce0d Mon Sep 17 00:00:00 2001 From: Bill Meier Date: Mon, 10 Dec 2012 14:50:32 +0000 Subject: General cleanup: - Use/create extended value strings as appropriate; - Reformat hf[] entries; - Do whitespace, & etc changes to use a consistent formatting style; - Reformat some long lines; - Localize some variables; remove some unneeded initializers; - expert...() shouldnt be called under 'if (tree)' (packet-wimaxasncp); - Move proto_register...() & etc to the end of the file (packet-ieee80211); - Misc. svn path=/trunk/; revision=46489 --- epan/dissectors/packet-eap.c | 1499 +++++----- epan/dissectors/packet-ieee80211.c | 5517 +++++++++++++++++++++--------------- epan/eap.h | 30 +- epan/libwireshark.def | 2 +- 4 files changed, 4047 insertions(+), 3001 deletions(-) (limited to 'epan') diff --git a/epan/dissectors/packet-eap.c b/epan/dissectors/packet-eap.c index 7421f4c439..3cbb6613ac 100644 --- a/epan/dissectors/packet-eap.c +++ b/epan/dissectors/packet-eap.c @@ -111,82 +111,83 @@ References: 6) http://tools.ietf.org/html/draft-bersani-eap-synthesis-sharedkeymethods-00 */ -const value_string eap_type_vals[] = { - { 1, "Identity" }, - { 2, "Notification" }, - { 3, "Legacy Nak (Response Only)" }, - { 4, "MD5-Challenge EAP (EAP-MD5-CHALLENGE)" }, - { 5, "One-Time Password EAP (EAP-OTP)" }, - { 6, "Generic Token Card EAP (EAP-GTC)" }, - { 7, "Allocated" }, - { 8, "Allocated" }, - { 9, "RSA Public Key Authentication EAP (EAP-RSA-PKA)" }, - { 10, "DSS Unilateral EAP (EAP-DSS)" }, - { 11, "KEA EAP (EAP-KEA)" }, - { 12, "KEA Validate EAP (EAP-KEA-VALIDATE)" }, - { 13, "TLS EAP (EAP-TLS)" }, - { 14, "Defender Token EAP (EAP-AXENT)" }, - { 15, "RSA Security SecurID EAP (EAP-RSA-SECURID)" }, - { 16, "Arcot Systems EAP (EAP-ARCOT-SYSTEMS)" }, - { 17, "Cisco Wireless EAP / Lightweight EAP (EAP-LEAP)" }, - { 18, "GSM Subscriber Identity Modules EAP (EAP-SIM)" }, - { 19, "Secure Remote Password SHA1 Part 1 EAP (EAP-SRP-SHA1-PART1)" }, - { 20, "Secure Remote Password SHA1 Part 2 EAP (EAP-SRP-SHA1-PART2)" }, - { 21, "Tunneled TLS EAP (EAP-TTLS)" }, - { 22, "Remote Access Service EAP (EAP-RAS)" }, - { 23, "UMTS Authentication and Key Agreement EAP (EAP-AKA)" }, - { 24, "3Com Wireless EAP (EAP-3COM-WIRELESS)" }, - { 25, "Protected EAP (EAP-PEAP)" }, - { 26, "MS-Authentication EAP (EAP-MS-AUTH)" }, - { 27, "Mutual Authentication w/Key Exchange EAP (EAP-MAKE)" }, - { 28, "CRYPTOCard EAP (EAP-CRYPTOCARD)" }, - { 29, "MS-CHAP-v2 EAP (EAP-MS-CHAP-V2)" }, - { 30, "DynamID EAP (EAP-DYNAMID)" }, - { 31, "Rob EAP (EAP-ROB)" }, - { 32, "Protected One-Time Password EAP (EAP-POTP)" }, - { 33, "MS-Authentication TLV EAP (EAP-MS-AUTH-TLV)" }, - { 34, "SentriNET (EAP-SENTRINET)" }, - { 35, "Actiontec Wireless EAP (EAP-ACTIONTEC-WIRELESS)" }, - { 36, "Cogent Systems Biometrics Authentication EAP (EAP-COGENT-BIOMETRIC)" }, - { 37, "AirFortress EAP (EAP-AIRFORTRESS)" }, - { 38, "HTTP Digest EAP (EAP-HTTP-DIGEST)" }, - { 39, "SecureSuite EAP (EAP-SECURESUITE)" }, - { 40, "DeviceConnect EAP (EAP-DEVICECONNECT)" }, - { 41, "Simple Password Exponential Key Exchange EAP (EAP-SPEKE)" }, - { 42, "MOBAC EAP (EAP-MOBAC)" }, - { 43, "Flexible Authentication via Secure Tunneling EAP (EAP-FAST)" }, - { 44, "ZoneLabs EAP (EAP-ZLXEAP)" }, - { 45, "Link EAP (EAP-LINK)" }, - { 46, "Password Authenticated eXchange EAP (EAP-PAX)" }, - { 47, "Pre-Shared Key EAP (EAP-PSK)" }, - { 48, "Shared-secret Authentication and Key Establishment EAP (EAP-SAKE)" }, - { 49, "Internet Key Exchange v2 EAP (EAP-IKEv2)" }, - { 50, "UMTS Authentication and Key Agreement' EAP (EAP-AKA')" }, - { 51, "Generalized Pre-Shared Key EAP (EAP-GPSK)" }, - { 52, "Password EAP (EAP-pwd)" }, - { 53, "Encrypted Key Exchange v1 EAP (EAP-EKEv1)" }, +static const value_string eap_type_vals[] = { + { 1, "Identity" }, + { 2, "Notification" }, + { 3, "Legacy Nak (Response Only)" }, + { 4, "MD5-Challenge EAP (EAP-MD5-CHALLENGE)" }, + { 5, "One-Time Password EAP (EAP-OTP)" }, + { 6, "Generic Token Card EAP (EAP-GTC)" }, + { 7, "Allocated" }, + { 8, "Allocated" }, + { 9, "RSA Public Key Authentication EAP (EAP-RSA-PKA)" }, + { 10, "DSS Unilateral EAP (EAP-DSS)" }, + { 11, "KEA EAP (EAP-KEA)" }, + { 12, "KEA Validate EAP (EAP-KEA-VALIDATE)" }, + { 13, "TLS EAP (EAP-TLS)" }, + { 14, "Defender Token EAP (EAP-AXENT)" }, + { 15, "RSA Security SecurID EAP (EAP-RSA-SECURID)" }, + { 16, "Arcot Systems EAP (EAP-ARCOT-SYSTEMS)" }, + { 17, "Cisco Wireless EAP / Lightweight EAP (EAP-LEAP)" }, + { 18, "GSM Subscriber Identity Modules EAP (EAP-SIM)" }, + { 19, "Secure Remote Password SHA1 Part 1 EAP (EAP-SRP-SHA1-PART1)" }, + { 20, "Secure Remote Password SHA1 Part 2 EAP (EAP-SRP-SHA1-PART2)" }, + { 21, "Tunneled TLS EAP (EAP-TTLS)" }, + { 22, "Remote Access Service EAP (EAP-RAS)" }, + { 23, "UMTS Authentication and Key Agreement EAP (EAP-AKA)" }, + { 24, "3Com Wireless EAP (EAP-3COM-WIRELESS)" }, + { 25, "Protected EAP (EAP-PEAP)" }, + { 26, "MS-Authentication EAP (EAP-MS-AUTH)" }, + { 27, "Mutual Authentication w/Key Exchange EAP (EAP-MAKE)" }, + { 28, "CRYPTOCard EAP (EAP-CRYPTOCARD)" }, + { 29, "MS-CHAP-v2 EAP (EAP-MS-CHAP-V2)" }, + { 30, "DynamID EAP (EAP-DYNAMID)" }, + { 31, "Rob EAP (EAP-ROB)" }, + { 32, "Protected One-Time Password EAP (EAP-POTP)" }, + { 33, "MS-Authentication TLV EAP (EAP-MS-AUTH-TLV)" }, + { 34, "SentriNET (EAP-SENTRINET)" }, + { 35, "Actiontec Wireless EAP (EAP-ACTIONTEC-WIRELESS)" }, + { 36, "Cogent Systems Biometrics Authentication EAP (EAP-COGENT-BIOMETRIC)" }, + { 37, "AirFortress EAP (EAP-AIRFORTRESS)" }, + { 38, "HTTP Digest EAP (EAP-HTTP-DIGEST)" }, + { 39, "SecureSuite EAP (EAP-SECURESUITE)" }, + { 40, "DeviceConnect EAP (EAP-DEVICECONNECT)" }, + { 41, "Simple Password Exponential Key Exchange EAP (EAP-SPEKE)" }, + { 42, "MOBAC EAP (EAP-MOBAC)" }, + { 43, "Flexible Authentication via Secure Tunneling EAP (EAP-FAST)" }, + { 44, "ZoneLabs EAP (EAP-ZLXEAP)" }, + { 45, "Link EAP (EAP-LINK)" }, + { 46, "Password Authenticated eXchange EAP (EAP-PAX)" }, + { 47, "Pre-Shared Key EAP (EAP-PSK)" }, + { 48, "Shared-secret Authentication and Key Establishment EAP (EAP-SAKE)" }, + { 49, "Internet Key Exchange v2 EAP (EAP-IKEv2)" }, + { 50, "UMTS Authentication and Key Agreement' EAP (EAP-AKA')" }, + { 51, "Generalized Pre-Shared Key EAP (EAP-GPSK)" }, + { 52, "Password EAP (EAP-pwd)" }, + { 53, "Encrypted Key Exchange v1 EAP (EAP-EKEv1)" }, { 254, "Expanded Type" }, { 255, "Experimental" }, { 0, NULL } }; +value_string_ext eap_type_vals_ext = VALUE_STRING_EXT_INIT(eap_type_vals); const value_string eap_sim_subtype_vals[] = { - { SIM_START, "Start" }, - { SIM_CHALLENGE, "Challenge" }, - { SIM_NOTIFICATION, "Notification" }, + { SIM_START, "Start" }, + { SIM_CHALLENGE, "Challenge" }, + { SIM_NOTIFICATION, "Notification" }, { SIM_RE_AUTHENTICATION, "Re-authentication" }, - { SIM_CLIENT_ERROR, "Client-Error" }, + { SIM_CLIENT_ERROR, "Client-Error" }, { 0, NULL } }; const value_string eap_aka_subtype_vals[] = { - { AKA_CHALLENGE, "AKA-Challenge" }, - { AKA_AUTHENTICATION_REJECT, "AKA-Authentication-Reject" }, + { AKA_CHALLENGE, "AKA-Challenge" }, + { AKA_AUTHENTICATION_REJECT, "AKA-Authentication-Reject" }, { AKA_SYNCHRONIZATION_FAILURE, "AKA-Synchronization-Failure" }, - { AKA_IDENTITY, "AKA-Identity" }, - { AKA_NOTIFICATION, "Notification" }, - { AKA_REAUTHENTICATION, "Re-authentication" }, - { AKA_CLIENT_ERROR, "Client-Error" }, + { AKA_IDENTITY, "AKA-Identity" }, + { AKA_NOTIFICATION, "Notification" }, + { AKA_REAUTHENTICATION, "Re-authentication" }, + { AKA_CLIENT_ERROR, "Client-Error" }, { 0, NULL } }; @@ -199,27 +200,27 @@ References: 5) 3GPP TS 24.302 */ -const value_string eap_sim_aka_attribute_vals[] = { - { 1, "AT_RAND" }, - { 2, "AT_AUTN" }, - { 3, "AT_RES" }, - { 4, "AT_AUTS" }, - { 6, "AT_PADDING" }, - { 7, "AT_NONCE_MT" }, - { 10, "AT_PERMANENT_ID_REQ" }, - { 11, "AT_MAC" }, - { 12, "AT_NOTIFICATION" }, - { 13, "AT_ANY_ID_REQ" }, - { 14, "AT_IDENTITY" }, - { 15, "AT_VERSION_LIST" }, - { 16, "AT_SELECTED_VERSION" }, - { 17, "AT_FULLAUTH_ID_REQ" }, - { 19, "AT_COUNTER" }, - { 20, "AT_COUNTER_TOO_SMALL" }, - { 21, "AT_NONCE_S" }, - { 22, "AT_CLIENT_ERROR_CODE" }, - { 23, "AT_KDF_INPUT"}, - { 24, "AT_KDF"}, +static const value_string eap_sim_aka_attribute_vals[] = { + { 1, "AT_RAND" }, + { 2, "AT_AUTN" }, + { 3, "AT_RES" }, + { 4, "AT_AUTS" }, + { 6, "AT_PADDING" }, + { 7, "AT_NONCE_MT" }, + { 10, "AT_PERMANENT_ID_REQ" }, + { 11, "AT_MAC" }, + { 12, "AT_NOTIFICATION" }, + { 13, "AT_ANY_ID_REQ" }, + { 14, "AT_IDENTITY" }, + { 15, "AT_VERSION_LIST" }, + { 16, "AT_SELECTED_VERSION" }, + { 17, "AT_FULLAUTH_ID_REQ" }, + { 19, "AT_COUNTER" }, + { 20, "AT_COUNTER_TOO_SMALL" }, + { 21, "AT_NONCE_S" }, + { 22, "AT_CLIENT_ERROR_CODE" }, + { 23, "AT_KDF_INPUT"}, + { 24, "AT_KDF"}, { 129, "AT_IV" }, { 130, "AT_ENCR_DATA" }, { 132, "AT_NEXT_PSEUDONYM" }, @@ -232,12 +233,13 @@ const value_string eap_sim_aka_attribute_vals[] = { { 139, "AT_TRUST_IND" }, { 0, NULL } }; +value_string_ext eap_sim_aka_attribute_vals_ext = VALUE_STRING_EXT_INIT(eap_sim_aka_attribute_vals); const value_string eap_ms_chap_v2_opcode_vals[] = { - { MS_CHAP_V2_CHALLENGE, "Challenge" }, - { MS_CHAP_V2_RESPONSE, "Response" }, - { MS_CHAP_V2_SUCCESS, "Success" }, - { MS_CHAP_V2_FAILURE, "Failure" }, + { MS_CHAP_V2_CHALLENGE, "Challenge" }, + { MS_CHAP_V2_RESPONSE, "Response" }, + { MS_CHAP_V2_SUCCESS, "Success" }, + { MS_CHAP_V2_FAILURE, "Failure" }, { MS_CHAP_V2_CHANGE_PASSWORD, "Change-Password" }, { 0, NULL } }; @@ -275,13 +277,13 @@ const value_string eap_ms_chap_v2_opcode_vals[] = { */ typedef struct { - int eap_tls_seq; - guint32 eap_reass_cookie; - int leap_state; + int eap_tls_seq; + guint32 eap_reass_cookie; + int leap_state; } conv_state_t; typedef struct { - int info; /* interpretation depends on EAP message type */ + int info; /* interpretation depends on EAP message type */ } frame_state_t; /********************************************************************* @@ -386,10 +388,12 @@ dissect_exteap(proto_tree *eap_tree, tvbuff_t *tvb, int offset, { proto_tree_add_item(eap_tree, hf_eap_ext_vendor_id, tvb, offset, 3, ENC_BIG_ENDIAN); - offset += 3; size -= 3; + offset += 3; + size -= 3; proto_tree_add_item(eap_tree, hf_eap_ext_vendor_type, tvb, offset, 4, ENC_BIG_ENDIAN); - offset += 4; size -= 4; + offset += 4; + size -= 4; /* Generic method to support multiple vendor-defined extended types goes here :-) */ dissect_exteap_wps(eap_tree, tvb, offset, size, pinfo); @@ -414,22 +418,22 @@ dissect_eap_mschapv2(proto_tree *eap_tree, tvbuff_t *tvb, packet_info *pinfo, in gint size) { proto_item *item; - gint left = size; - gint ms_len; - guint8 value_size; - guint8 opcode; + gint left = size; + gint ms_len; + guint8 value_size; + guint8 opcode; /* OpCode (1 byte), MS-CHAPv2-ID (1 byte), MS-Length (2 bytes), Data */ opcode = tvb_get_guint8(tvb, offset); proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_opcode, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; - left--; + offset += 1; + left -= 1; if (left <= 0) return; proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_id, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; - left--; + offset += 1; + left -= 1; if (left <= 0) return; @@ -438,7 +442,7 @@ dissect_eap_mschapv2(proto_tree *eap_tree, tvbuff_t *tvb, packet_info *pinfo, in if (ms_len != size) expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_WARN, "Invalid Length"); offset += 2; - left -= 2; + left -= 2; switch (opcode) { case MS_CHAP_V2_CHALLENGE: @@ -447,12 +451,12 @@ dissect_eap_mschapv2(proto_tree *eap_tree, tvbuff_t *tvb, packet_info *pinfo, in value_size = tvb_get_guint8(tvb, offset); proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_value_size, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; - left--; + offset += 1; + left -= 1; proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_challenge, tvb, offset, value_size, ENC_NA); offset += value_size; - left -= value_size; + left -= value_size; if (left <= 0) break; proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_name, @@ -464,8 +468,8 @@ dissect_eap_mschapv2(proto_tree *eap_tree, tvbuff_t *tvb, packet_info *pinfo, in value_size = tvb_get_guint8(tvb, offset); proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_value_size, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; - left--; + offset += 1; + left -= 1; if (value_size == 49) { proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_peer_challenge, tvb, offset, 16, ENC_NA); @@ -478,14 +482,14 @@ dissect_eap_mschapv2(proto_tree *eap_tree, tvbuff_t *tvb, packet_info *pinfo, in offset += 24; proto_tree_add_item(eap_tree, hf_eap_ms_chap_v2_flags, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; - left -= value_size; + offset += 1; + left -= value_size; } else { proto_tree_add_text(eap_tree, tvb, offset, value_size, "EAP-MS-CHAP-v2 Response (Unknown Length): %s", tvb_bytes_to_str(tvb, offset, value_size)); offset += value_size; - left -= value_size; + left -= value_size; } if (left <= 0) break; @@ -516,46 +520,51 @@ static void dissect_eap_sim(proto_tree *eap_tree, tvbuff_t *tvb, int offset, gint size) { gint left = size; + proto_tree_add_item(eap_tree, hf_eap_sim_subtype, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; - left--; + offset += 1; + left -= 1; if (left < 2) return; proto_tree_add_item(eap_tree, hf_eap_sim_reserved, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; - left -= 2; + left -= 2; /* Rest of EAP-SIM data is in Type-Len-Value format. */ while (left >= 2) { - guint8 type, length; + guint8 type, length; proto_item *pi; proto_tree *attr_tree; - int aoffset; - gint aleft; + int aoffset; + gint aleft; + aoffset = offset; - type = tvb_get_guint8(tvb, aoffset); - length = tvb_get_guint8(tvb, aoffset + 1); - aleft = 4 * length; + type = tvb_get_guint8(tvb, aoffset); + length = tvb_get_guint8(tvb, aoffset + 1); + aleft = 4 * length; pi = proto_tree_add_none_format(eap_tree, hf_eap_sim_subtype_attribute, tvb, aoffset, aleft, "EAP-SIM Attribute: %s (%d)", - val_to_str_const(type, eap_sim_aka_attribute_vals, "Unknown"), type); + val_to_str_ext_const(type, + &eap_sim_aka_attribute_vals_ext, + "Unknown"), + type); attr_tree = proto_item_add_subtree(pi, ett_eap_sim_attr); proto_tree_add_uint(attr_tree, hf_eap_sim_subtype_type, tvb, aoffset, 1, type); - aoffset++; - aleft--; + aoffset += 1; + aleft -= 1; if (aleft <= 0) break; proto_tree_add_item(attr_tree, hf_eap_sim_subtype_length, tvb, aoffset, 1, ENC_BIG_ENDIAN); - aoffset++; - aleft--; + aoffset += 1; + aleft -= 1; proto_tree_add_item(attr_tree, hf_eap_sim_subtype_value, tvb, aoffset, aleft, ENC_NA); offset += 4 * length; - left -= 4 * length; + left -= 4 * length; } } @@ -565,62 +574,66 @@ dissect_eap_aka(proto_tree *eap_tree, tvbuff_t *tvb, int offset, gint size) gint left = size; proto_tree_add_item(eap_tree, hf_eap_aka_subtype, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; - left--; + offset += 1; + left -= 1; if (left < 2) return; proto_tree_add_item(eap_tree, hf_eap_aka_reserved, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; - left -= 2; + left -= 2; /* Rest of EAP-AKA data is in Type-Len-Value format. */ while (left >= 2) { - guint8 type, length; - proto_item *pi; - proto_tree *attr_tree; - int aoffset; - gint aleft; + guint8 type, length; + proto_item *pi; + proto_tree *attr_tree; + int aoffset; + gint aleft; + aoffset = offset; - type = tvb_get_guint8(tvb, aoffset); - length = tvb_get_guint8(tvb, aoffset + 1); - aleft = 4 * length; + type = tvb_get_guint8(tvb, aoffset); + length = tvb_get_guint8(tvb, aoffset + 1); + aleft = 4 * length; pi = proto_tree_add_none_format(eap_tree, hf_eap_aka_subtype_attribute, tvb, aoffset, aleft, "EAP-AKA Attribute: %s (%d)", - val_to_str_const(type, eap_sim_aka_attribute_vals, "Unknown"), type); + val_to_str_ext_const(type, + &eap_sim_aka_attribute_vals_ext, + "Unknown"), + type); attr_tree = proto_item_add_subtree(pi, ett_eap_aka_attr); proto_tree_add_uint(attr_tree, hf_eap_aka_subtype_type, tvb, aoffset, 1, type); - aoffset++; - aleft--; + aoffset += 1; + aleft -= 1; if (aleft <= 0) break; proto_tree_add_item(attr_tree, hf_eap_aka_subtype_length, tvb, aoffset, 1, ENC_BIG_ENDIAN); - aoffset++; - aleft--; + aoffset += 1; + aleft -= 1; proto_tree_add_item(attr_tree, hf_eap_aka_subtype_value, tvb, aoffset, aleft, ENC_NA); offset += 4 * length; - left -= 4 * length; + left -= 4 * length; } } static int dissect_eap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { - guint8 eap_code; - guint16 eap_len; - guint8 eap_type; - gint len; + guint8 eap_code; + guint16 eap_len; + guint8 eap_type; + gint len; conversation_t *conversation; - conv_state_t *conversation_state; - frame_state_t *packet_state; - int leap_state; - proto_tree *ti = NULL; - proto_tree *eap_tree = NULL; - proto_tree *eap_tls_flags_tree = NULL; - proto_item *eap_type_item = NULL; + conv_state_t *conversation_state; + frame_state_t *packet_state; + int leap_state; + proto_tree *ti; + proto_tree *eap_tree = NULL; + proto_tree *eap_tls_flags_tree = NULL; + proto_item *eap_type_item = NULL; col_set_str(pinfo->cinfo, COL_PROTOCOL, "EAP"); col_clear(pinfo->cinfo, COL_INFO); @@ -685,9 +698,9 @@ dissect_eap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) * Attach state information to the conversation. */ conversation_state = se_new(conv_state_t); - conversation_state->eap_tls_seq = -1; - conversation_state->eap_reass_cookie = 0; - conversation_state->leap_state = -1; + conversation_state->eap_tls_seq = -1; + conversation_state->eap_reass_cookie = 0; + conversation_state->leap_state = -1; conversation_add_proto_data(conversation, proto_eap, conversation_state); } @@ -698,493 +711,492 @@ dissect_eap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) if (eap_code == EAP_FAILURE) conversation_state->leap_state = -1; - eap_len = tvb_get_ntohs(tvb, 2); - len = eap_len; - - if (tree) { - ti = proto_tree_add_item(tree, proto_eap, tvb, 0, len, ENC_NA); - eap_tree = proto_item_add_subtree(ti, ett_eap); - - proto_tree_add_item(eap_tree, hf_eap_code, tvb, 0, 1, ENC_BIG_ENDIAN); - } + eap_len = tvb_get_ntohs(tvb, 2); + len = eap_len; - if (tree) - proto_tree_add_item(eap_tree, hf_eap_identifier, tvb, 1, 1, ENC_BIG_ENDIAN); + if (tree) { + ti = proto_tree_add_item(tree, proto_eap, tvb, 0, len, ENC_NA); + eap_tree = proto_item_add_subtree(ti, ett_eap); - if (tree) - proto_tree_add_item(eap_tree, hf_eap_len, tvb, 2, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(eap_tree, hf_eap_code, tvb, 0, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(eap_tree, hf_eap_identifier, tvb, 1, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(eap_tree, hf_eap_len, tvb, 2, 2, ENC_BIG_ENDIAN); + } - switch (eap_code) { + switch (eap_code) { - case EAP_SUCCESS: - case EAP_FAILURE: - break; + case EAP_SUCCESS: + case EAP_FAILURE: + break; - case EAP_REQUEST: - case EAP_RESPONSE: - eap_type = tvb_get_guint8(tvb, 4); + case EAP_REQUEST: + case EAP_RESPONSE: + eap_type = tvb_get_guint8(tvb, 4); - if (check_col(pinfo->cinfo, COL_INFO)) - col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", - val_to_str(eap_type, eap_type_vals, - "Unknown type (0x%02x)")); - if (tree) - eap_type_item = proto_tree_add_item(eap_tree, hf_eap_type, tvb, 4, 1, ENC_BIG_ENDIAN); + if (check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", + val_to_str_ext(eap_type, &eap_type_vals_ext, + "Unknown type (0x%02x)")); + if (tree) + eap_type_item = proto_tree_add_item(eap_tree, hf_eap_type, tvb, 4, 1, ENC_BIG_ENDIAN); - if (len > 5 || (len == 5 && eap_type == EAP_TYPE_ID)) { - int offset = 5; - gint size = len - offset; + if ((len > 5) || ((len == 5) && (eap_type == EAP_TYPE_ID))) { + int offset = 5; + gint size = len - offset; - switch (eap_type) { + switch (eap_type) { /********************************************************************* **********************************************************************/ - case EAP_TYPE_ID: - if (tree) { - proto_tree_add_item(eap_tree, hf_eap_identity, tvb, offset, size, ENC_ASCII|ENC_NA); - } - if(!pinfo->fd->flags.visited) { - conversation_state->leap_state = 0; - conversation_state->eap_tls_seq = -1; - } - break; + case EAP_TYPE_ID: + if (tree) { + proto_tree_add_item(eap_tree, hf_eap_identity, tvb, offset, size, ENC_ASCII|ENC_NA); + } + if(!pinfo->fd->flags.visited) { + conversation_state->leap_state = 0; + conversation_state->eap_tls_seq = -1; + } + break; - /********************************************************************* - **********************************************************************/ - case EAP_TYPE_NOTIFY: - if (tree) { - proto_tree_add_item(eap_tree, hf_eap_notification, tvb, - offset, size, ENC_ASCII|ENC_NA); - } - break; + /********************************************************************* + **********************************************************************/ + case EAP_TYPE_NOTIFY: + if (tree) { + proto_tree_add_item(eap_tree, hf_eap_notification, tvb, + offset, size, ENC_ASCII|ENC_NA); + } + break; - /********************************************************************* - **********************************************************************/ - case EAP_TYPE_NAK: - if (tree) { - proto_tree_add_item(eap_tree, hf_eap_type_nak, tvb, - offset, 1, ENC_BIG_ENDIAN); - } - break; - /********************************************************************* - **********************************************************************/ - case EAP_TYPE_MD5: - { - guint8 value_size = tvb_get_guint8(tvb, offset); - gint extra_len = size - 1 - value_size; - proto_item *item; - - /* Warn that this is an insecure EAP type. */ - expert_add_info_format(pinfo, eap_type_item, PI_SECURITY, PI_WARN, "Vulnerable to MITM attacks. If possible, change EAP type."); - - item = proto_tree_add_item(eap_tree, hf_eap_md5_value_size, tvb, offset, 1, ENC_BIG_ENDIAN); - if (value_size > size - 1) + /********************************************************************* + **********************************************************************/ + case EAP_TYPE_NAK: + if (tree) { + proto_tree_add_item(eap_tree, hf_eap_type_nak, tvb, + offset, 1, ENC_BIG_ENDIAN); + } + break; + /********************************************************************* + **********************************************************************/ + case EAP_TYPE_MD5: + { + guint8 value_size = tvb_get_guint8(tvb, offset); + gint extra_len = size - 1 - value_size; + proto_item *item; + + /* Warn that this is an insecure EAP type. */ + expert_add_info_format(pinfo, eap_type_item, PI_SECURITY, PI_WARN, + "Vulnerable to MITM attacks. If possible, change EAP type."); + + item = proto_tree_add_item(eap_tree, hf_eap_md5_value_size, tvb, offset, 1, ENC_BIG_ENDIAN); + if (value_size > (size - 1)) { expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_WARN, "Overflow"); value_size = size - 1; } - offset++; - proto_tree_add_item(eap_tree, hf_eap_md5_value, tvb, offset, value_size, ENC_NA); - offset += value_size; - if (extra_len > 0) { + offset += 1; + proto_tree_add_item(eap_tree, hf_eap_md5_value, tvb, offset, value_size, ENC_NA); + offset += value_size; + if (extra_len > 0) { proto_tree_add_item(eap_tree, hf_eap_md5_extra_data, tvb, offset, extra_len, ENC_NA); + } } - } - break; + break; - /********************************************************************* + /********************************************************************* EAP-TLS - **********************************************************************/ - case EAP_TYPE_FAST: - case EAP_TYPE_PEAP: - case EAP_TYPE_TTLS: - case EAP_TYPE_TLS: - { - guint8 flags = tvb_get_guint8(tvb, offset); - gboolean more_fragments; - gboolean has_length; - gboolean is_start; - int eap_tls_seq = -1; - guint32 eap_reass_cookie = 0; - gboolean needs_reassembly = FALSE; - - more_fragments = test_flag(flags,EAP_TLS_FLAG_M); - has_length = test_flag(flags,EAP_TLS_FLAG_L); - is_start = test_flag(flags,EAP_TLS_FLAG_S); - - if (is_start) - conversation_state->eap_tls_seq = -1; - - /* Flags field, 1 byte */ - if (tree) { - ti = proto_tree_add_item(eap_tree, hf_eap_tls_flags, tvb, offset, 1, ENC_BIG_ENDIAN); - eap_tls_flags_tree = proto_item_add_subtree(ti, ett_eap_tls_flags); - proto_tree_add_item(eap_tls_flags_tree, hf_eap_tls_flag_l, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(eap_tls_flags_tree, hf_eap_tls_flag_m, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(eap_tls_flags_tree, hf_eap_tls_flag_s, tvb, offset, 1, ENC_BIG_ENDIAN); - - if (eap_type == EAP_TYPE_PEAP || eap_type == EAP_TYPE_TTLS || - eap_type == EAP_TYPE_FAST) { - proto_tree_add_item(eap_tls_flags_tree, hf_eap_tls_flags_version, tvb, offset, 1, ENC_BIG_ENDIAN); - } - } - size--; - offset++; - - /* Length field, 4 bytes, OPTIONAL. */ - if ( has_length ) { - if (tree) - proto_tree_add_item(eap_tree, hf_eap_tls_len, tvb, offset, 4, ENC_BIG_ENDIAN); - size -= 4; - offset += 4; - } + **********************************************************************/ + case EAP_TYPE_FAST: + case EAP_TYPE_PEAP: + case EAP_TYPE_TTLS: + case EAP_TYPE_TLS: + { + guint8 flags = tvb_get_guint8(tvb, offset); + gboolean more_fragments; + gboolean has_length; + gboolean is_start; + int eap_tls_seq = -1; + guint32 eap_reass_cookie = 0; + gboolean needs_reassembly = FALSE; + + more_fragments = test_flag(flags,EAP_TLS_FLAG_M); + has_length = test_flag(flags,EAP_TLS_FLAG_L); + is_start = test_flag(flags,EAP_TLS_FLAG_S); + + if (is_start) + conversation_state->eap_tls_seq = -1; + + /* Flags field, 1 byte */ + if (tree) { + ti = proto_tree_add_item(eap_tree, hf_eap_tls_flags, tvb, offset, 1, ENC_BIG_ENDIAN); + eap_tls_flags_tree = proto_item_add_subtree(ti, ett_eap_tls_flags); + proto_tree_add_item(eap_tls_flags_tree, hf_eap_tls_flag_l, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(eap_tls_flags_tree, hf_eap_tls_flag_m, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(eap_tls_flags_tree, hf_eap_tls_flag_s, tvb, offset, 1, ENC_BIG_ENDIAN); + + if ((eap_type == EAP_TYPE_PEAP) || (eap_type == EAP_TYPE_TTLS) || + (eap_type == EAP_TYPE_FAST)) { + proto_tree_add_item(eap_tls_flags_tree, hf_eap_tls_flags_version, tvb, offset, 1, ENC_BIG_ENDIAN); + } + } + size -= 1; + offset += 1; + + /* Length field, 4 bytes, OPTIONAL. */ + if (has_length) { + if (tree) + proto_tree_add_item(eap_tree, hf_eap_tls_len, tvb, offset, 4, ENC_BIG_ENDIAN); + size -= 4; + offset += 4; + } - if (size>0) { + if (size > 0) { - tvbuff_t *next_tvb; - gint tvb_len; - gboolean save_fragmented; + tvbuff_t *next_tvb; + gint tvb_len; + gboolean save_fragmented; - tvb_len = tvb_length_remaining(tvb, offset); - if (size < tvb_len) - tvb_len = size; + tvb_len = tvb_length_remaining(tvb, offset); + if (size < tvb_len) + tvb_len = size; /* - EAP/TLS is weird protocol (it comes from - Microsoft after all). - - If we have series of fragmented packets, - then there's no way of knowing that from - the packet itself, if it is the last packet - in series, that is that the packet part of - bigger fragmented set of data. - - The only way to know is, by knowing - that we are already in defragmentation - "mode" and we are expecing packet - carrying fragment of data. (either - because we have not received expected - amount of data, or because the packet before - had "F"ragment flag set.) - - The situation is alleviated by fact that it - is simple ack/nack protcol so there's no - place for out-of-order packets like it is - possible with IP. - - Anyway, point of this lengthy essay is that - we have to keep state information in the - conversation, so that we can put ourselves in - defragmenting mode and wait for the last packet, - and have to attach state to frames as well, so - that we can handle defragmentation after the - first pass through the capture. - */ - /* See if we have a remembered defragmentation EAP ID. */ - packet_state = (frame_state_t *)p_get_proto_data(pinfo->fd, proto_eap); - if (packet_state == NULL) { - /* - * We haven't - does this message require reassembly? - */ - if (!pinfo->fd->flags.visited) { - /* - * This is the first time we've looked at this frame, - * so it wouldn't have any remembered information. - * - * Therefore, we check whether this conversation has - * a reassembly operation in progress, or whether - * this frame has the Fragment flag set. - */ - if (conversation_state->eap_tls_seq != -1) { - /* - * There's a reassembly in progress; the sequence number - * of the previous fragment is - * "conversation_state->eap_tls_seq", and the reassembly - * ID is "conversation_state->eap_reass_cookie". - * - * We must include this frame in the reassembly. - * We advance the sequence number, giving us the - * sequence number for this fragment. - */ - needs_reassembly = TRUE; - conversation_state->eap_tls_seq++; - - eap_reass_cookie = conversation_state->eap_reass_cookie; - eap_tls_seq = conversation_state->eap_tls_seq; - } else if (more_fragments && has_length) { - /* - * This message has the Fragment flag set, so it requires - * reassembly. It's the message containing the first - * fragment (if it's a later fragment, the sequence - * number in the conversation state would not be -1). - * - * If it doesn't include a length, however, we can't - * do reassembly (either the message is in error, as - * the first fragment *must* contain a length, or we - * didn't capture the first fragment, and this just - * happens to be the first fragment we saw), so we - * also check that we have a length; - */ - needs_reassembly = TRUE; - conversation_state->eap_reass_cookie = pinfo->fd->num; - - /* - * Start the reassembly sequence number at 0. - */ - conversation_state->eap_tls_seq = 0; - - eap_tls_seq = conversation_state->eap_tls_seq; - eap_reass_cookie = conversation_state->eap_reass_cookie; - } - - if (needs_reassembly) { + EAP/TLS is weird protocol (it comes from + Microsoft after all). + + If we have series of fragmented packets, + then there's no way of knowing that from + the packet itself, if it is the last packet + in series, that is that the packet part of + bigger fragmented set of data. + + The only way to know is, by knowing + that we are already in defragmentation + "mode" and we are expecing packet + carrying fragment of data. (either + because we have not received expected + amount of data, or because the packet before + had "F"ragment flag set.) + + The situation is alleviated by fact that it + is simple ack/nack protcol so there's no + place for out-of-order packets like it is + possible with IP. + + Anyway, point of this lengthy essay is that + we have to keep state information in the + conversation, so that we can put ourselves in + defragmenting mode and wait for the last packet, + and have to attach state to frames as well, so + that we can handle defragmentation after the + first pass through the capture. + */ + /* See if we have a remembered defragmentation EAP ID. */ + packet_state = (frame_state_t *)p_get_proto_data(pinfo->fd, proto_eap); + if (packet_state == NULL) { /* - * This frame requires reassembly; remember the reassembly - * ID for subsequent accesses to it. + * We haven't - does this message require reassembly? */ - packet_state = se_new(frame_state_t); - packet_state->info = eap_reass_cookie; - p_add_proto_data(pinfo->fd, proto_eap, packet_state); - } - } - } else { + if (!pinfo->fd->flags.visited) { + /* + * This is the first time we've looked at this frame, + * so it wouldn't have any remembered information. + * + * Therefore, we check whether this conversation has + * a reassembly operation in progress, or whether + * this frame has the Fragment flag set. + */ + if (conversation_state->eap_tls_seq != -1) { /* - * This frame has a reassembly cookie associated with it, so - * it requires reassembly. We've already done the - * reassembly in the first pass, so "fragment_add_seq()" - * won't look at the sequence number; set it to 0. + * There's a reassembly in progress; the sequence number + * of the previous fragment is + * "conversation_state->eap_tls_seq", and the reassembly + * ID is "conversation_state->eap_reass_cookie". * - * XXX - a frame isn't supposed to have more than one - * EAP message in it, but if it includes both an EAP-TLS - * message and a LEAP message, we might be mistakenly - * concluding it requires reassembly because the "info" - * field isn't -1. We could, I guess, pack both EAP-TLS - * ID and LEAP state into the structure, but that doesn't - * work if you have multiple EAP-TLS or LEAP messages in - * the frame. - * - * But it's not clear how much work we should do to handle - * a bogus message such as that; as long as we don't crash - * or do something else equally horrible, we may not - * have to worry about this at all. + * We must include this frame in the reassembly. + * We advance the sequence number, giving us the + * sequence number for this fragment. */ needs_reassembly = TRUE; - eap_reass_cookie = packet_state->info; - eap_tls_seq = 0; - } + conversation_state->eap_tls_seq++; - /* - We test here to see whether EAP-TLS packet - carry fragmented of TLS data. - - If this is the case, we do reasembly below, - otherwise we just call dissector. - */ - if (needs_reassembly) { - fragment_data *fd_head = NULL; - - /* - * Yes, this frame contains a fragment that requires - * reassembly. - */ - save_fragmented = pinfo->fragmented; - pinfo->fragmented = TRUE; - fd_head = fragment_add_seq(tvb, offset, pinfo, - eap_reass_cookie, - eap_tls_fragment_table, - eap_tls_seq, - size, - more_fragments); - - if (fd_head != NULL) /* Reassembled */ - { - proto_item *frag_tree_item; + eap_reass_cookie = conversation_state->eap_reass_cookie; + eap_tls_seq = conversation_state->eap_tls_seq; + } else if (more_fragments && has_length) { + /* + * This message has the Fragment flag set, so it requires + * reassembly. It's the message containing the first + * fragment (if it's a later fragment, the sequence + * number in the conversation state would not be -1). + * + * If it doesn't include a length, however, we can't + * do reassembly (either the message is in error, as + * the first fragment *must* contain a length, or we + * didn't capture the first fragment, and this just + * happens to be the first fragment we saw), so we + * also check that we have a length; + */ + needs_reassembly = TRUE; + conversation_state->eap_reass_cookie = pinfo->fd->num; - next_tvb = tvb_new_child_real_data(tvb, fd_head->data, - fd_head->len, - fd_head->len); - add_new_data_source(pinfo, next_tvb, "Reassembled EAP-TLS"); + /* + * Start the reassembly sequence number at 0. + */ + conversation_state->eap_tls_seq = 0; - show_fragment_seq_tree(fd_head, &eap_tls_frag_items, - eap_tree, pinfo, next_tvb, &frag_tree_item); + eap_tls_seq = conversation_state->eap_tls_seq; + eap_reass_cookie = conversation_state->eap_reass_cookie; + } - call_dissector(ssl_handle, next_tvb, pinfo, eap_tree); + if (needs_reassembly) { + /* + * This frame requires reassembly; remember the reassembly + * ID for subsequent accesses to it. + */ + packet_state = se_new(frame_state_t); + packet_state->info = eap_reass_cookie; + p_add_proto_data(pinfo->fd, proto_eap, packet_state); + } + } + } else { + /* + * This frame has a reassembly cookie associated with it, so + * it requires reassembly. We've already done the + * reassembly in the first pass, so "fragment_add_seq()" + * won't look at the sequence number; set it to 0. + * + * XXX - a frame isn't supposed to have more than one + * EAP message in it, but if it includes both an EAP-TLS + * message and a LEAP message, we might be mistakenly + * concluding it requires reassembly because the "info" + * field isn't -1. We could, I guess, pack both EAP-TLS + * ID and LEAP state into the structure, but that doesn't + * work if you have multiple EAP-TLS or LEAP messages in + * the frame. + * + * But it's not clear how much work we should do to handle + * a bogus message such as that; as long as we don't crash + * or do something else equally horrible, we may not + * have to worry about this at all. + */ + needs_reassembly = TRUE; + eap_reass_cookie = packet_state->info; + eap_tls_seq = 0; + } /* - * We're finished reassembing this frame. - * Reinitialize the reassembly state. - */ - if (!pinfo->fd->flags.visited) - conversation_state->eap_tls_seq = -1; - } + We test here to see whether EAP-TLS packet + carry fragmented of TLS data. - pinfo->fragmented = save_fragmented; + If this is the case, we do reasembly below, + otherwise we just call dissector. + */ + if (needs_reassembly) { + fragment_data *fd_head; - } else { /* this data is NOT fragmented */ - next_tvb = tvb_new_subset(tvb, offset, tvb_len, size); - call_dissector(ssl_handle, next_tvb, pinfo, eap_tree); + /* + * Yes, this frame contains a fragment that requires + * reassembly. + */ + save_fragmented = pinfo->fragmented; + pinfo->fragmented = TRUE; + fd_head = fragment_add_seq(tvb, offset, pinfo, + eap_reass_cookie, + eap_tls_fragment_table, + eap_tls_seq, + size, + more_fragments); + + if (fd_head != NULL) /* Reassembled */ + { + proto_item *frag_tree_item; + + next_tvb = tvb_new_child_real_data(tvb, fd_head->data, + fd_head->len, + fd_head->len); + add_new_data_source(pinfo, next_tvb, "Reassembled EAP-TLS"); + + show_fragment_seq_tree(fd_head, &eap_tls_frag_items, + eap_tree, pinfo, next_tvb, &frag_tree_item); + + call_dissector(ssl_handle, next_tvb, pinfo, eap_tree); + + /* + * We're finished reassembing this frame. + * Reinitialize the reassembly state. + */ + if (!pinfo->fd->flags.visited) + conversation_state->eap_tls_seq = -1; + } + + pinfo->fragmented = save_fragmented; + + } else { /* this data is NOT fragmented */ + next_tvb = tvb_new_subset(tvb, offset, tvb_len, size); + call_dissector(ssl_handle, next_tvb, pinfo, eap_tree); + } + } } - } - } - break; /* EAP_TYPE_TLS */ + break; /* EAP_TYPE_TLS */ - /********************************************************************* + /********************************************************************* Cisco's Lightweight EAP (LEAP) http://www.missl.cs.umd.edu/wireless/ethereal/leap.txt - **********************************************************************/ - case EAP_TYPE_LEAP: - { - guint8 count, namesize; + **********************************************************************/ + case EAP_TYPE_LEAP: + { + guint8 count, namesize; + + /* Warn that this is an insecure EAP type. */ + expert_add_info_format(pinfo, eap_type_item, PI_SECURITY, PI_WARN, + "Vulnerable to dictionary attacks. If possible, change EAP type." + " See http://www.cisco.com/warp/public/cc/pd/witc/ao350ap/prodlit/2331_pp.pdf"); + + /* Version (byte) */ + if (tree) { + proto_tree_add_item(eap_tree, hf_eap_leap_version, tvb, offset, 1, ENC_BIG_ENDIAN); + } + offset += 1; - /* Warn that this is an insecure EAP type. */ - expert_add_info_format(pinfo, eap_type_item, PI_SECURITY, PI_WARN, "Vulnerable to dictionary attacks. If possible, change EAP type. See http://www.cisco.com/warp/public/cc/pd/witc/ao350ap/prodlit/2331_pp.pdf"); + /* Unused (byte) */ + if (tree) { + proto_tree_add_item(eap_tree, hf_eap_leap_reserved, tvb, offset, 1, ENC_BIG_ENDIAN); + } + offset += 1; - /* Version (byte) */ - if (tree) { - proto_tree_add_item(eap_tree, hf_eap_leap_version, tvb, offset, 1, ENC_BIG_ENDIAN); - } - offset++; + /* Count (byte) */ + count = tvb_get_guint8(tvb, offset); + if (tree) { + proto_tree_add_item(eap_tree, hf_eap_leap_count, tvb, offset, 1, ENC_BIG_ENDIAN); + } + offset += 1; - /* Unused (byte) */ - if (tree) { - proto_tree_add_item(eap_tree, hf_eap_leap_reserved, tvb, offset, 1, ENC_BIG_ENDIAN); - } - offset++; + /* Data (byte*Count) */ + /* This part is state-dependent. */ - /* Count (byte) */ - count = tvb_get_guint8(tvb, offset); - if (tree) { - proto_tree_add_item(eap_tree, hf_eap_leap_count, tvb, offset, 1, ENC_BIG_ENDIAN); - } - offset++; - - /* Data (byte*Count) */ - /* This part is state-dependent. */ - - /* See if we've already remembered the state. */ - packet_state = (frame_state_t *)p_get_proto_data(pinfo->fd, proto_eap); - if (packet_state == NULL) { - /* - * We haven't - compute the state based on the current - * state in the conversation. - */ - leap_state = conversation_state->leap_state; - - /* Advance the state machine. */ - if (leap_state==0) leap_state = 1; else - if (leap_state==1) leap_state = 2; else - if (leap_state==2) leap_state = 3; else - if (leap_state==3) leap_state = 4; else - if (leap_state==4) leap_state = -1; - - /* - * Remember the state for subsequent accesses to this - * frame. - */ - packet_state = se_new(frame_state_t); - packet_state->info = leap_state; - p_add_proto_data(pinfo->fd, proto_eap, packet_state); - - /* - * Update the conversation's state. - */ - conversation_state->leap_state = leap_state; - } + /* See if we've already remembered the state. */ + packet_state = (frame_state_t *)p_get_proto_data(pinfo->fd, proto_eap); + if (packet_state == NULL) { + /* + * We haven't - compute the state based on the current + * state in the conversation. + */ + leap_state = conversation_state->leap_state; + + /* Advance the state machine. */ + if (leap_state==0) leap_state = 1; else + if (leap_state==1) leap_state = 2; else + if (leap_state==2) leap_state = 3; else + if (leap_state==3) leap_state = 4; else + if (leap_state==4) leap_state = -1; + + /* + * Remember the state for subsequent accesses to this + * frame. + */ + packet_state = se_new(frame_state_t); + packet_state->info = leap_state; + p_add_proto_data(pinfo->fd, proto_eap, packet_state); + + /* + * Update the conversation's state. + */ + conversation_state->leap_state = leap_state; + } - /* Get the remembered state. */ - leap_state = packet_state->info; + /* Get the remembered state. */ + leap_state = packet_state->info; - if (tree) { - switch (leap_state) { - case 1: + if (tree) { + switch (leap_state) { + case 1: proto_tree_add_item(eap_tree, hf_eap_leap_peer_challenge, tvb, offset, count, ENC_NA); break; - case 2: + case 2: proto_tree_add_item(eap_tree, hf_eap_leap_peer_response, tvb, offset, count, ENC_NA); break; - case 3: + case 3: proto_tree_add_item(eap_tree, hf_eap_leap_ap_challenge, tvb, offset, count, ENC_NA); break; - case 4: + case 4: proto_tree_add_item(eap_tree, hf_eap_leap_ap_response, tvb, offset, count, ENC_NA); break; - default: + default: proto_tree_add_text(eap_tree, tvb, offset, count, - "EAP-LEAP Data (%d byte%s): \"%s\"", - count, plurality(count, "", "s"), - tvb_bytes_to_str(tvb, offset, count)); + "EAP-LEAP Data (%d byte%s): \"%s\"", + count, plurality(count, "", "s"), + tvb_bytes_to_str(tvb, offset, count)); break; + } } - } - offset += count; + offset += count; - /* Name (Length-(8+Count)) */ - namesize = eap_len - (8+count); - if (tree) { - proto_tree_add_item(eap_tree, hf_eap_leap_name, tvb, offset, namesize, ENC_ASCII|ENC_NA); + /* Name (Length-(8+Count)) */ + namesize = eap_len - (8+count); + if (tree) { + proto_tree_add_item(eap_tree, hf_eap_leap_name, tvb, offset, namesize, ENC_ASCII|ENC_NA); + } } - } - break; /* EAP_TYPE_LEAP */ + break; /* EAP_TYPE_LEAP */ - /********************************************************************* + /********************************************************************* EAP-MSCHAPv2 - draft-kamath-pppext-eap-mschapv2-00.txt - **********************************************************************/ - case EAP_TYPE_MSCHAPV2: - dissect_eap_mschapv2(eap_tree, tvb, pinfo, offset, size); - break; /* EAP_TYPE_MSCHAPV2 */ + **********************************************************************/ + case EAP_TYPE_MSCHAPV2: + dissect_eap_mschapv2(eap_tree, tvb, pinfo, offset, size); + break; /* EAP_TYPE_MSCHAPV2 */ - /********************************************************************* + /********************************************************************* EAP-SIM - draft-haverinen-pppext-eap-sim-13.txt - **********************************************************************/ - case EAP_TYPE_SIM: - if (tree) - dissect_eap_sim(eap_tree, tvb, offset, size); - break; /* EAP_TYPE_SIM */ + **********************************************************************/ + case EAP_TYPE_SIM: + if (tree) + dissect_eap_sim(eap_tree, tvb, offset, size); + break; /* EAP_TYPE_SIM */ - /********************************************************************* + /********************************************************************* EAP-AKA - draft-arkko-pppext-eap-aka-12.txt - **********************************************************************/ - case EAP_TYPE_AKA: - case EAP_TYPE_AKA_PRIME: - if (tree) - dissect_eap_aka(eap_tree, tvb, offset, size); - break; /* EAP_TYPE_AKA */ + **********************************************************************/ + case EAP_TYPE_AKA: + case EAP_TYPE_AKA_PRIME: + if (tree) + dissect_eap_aka(eap_tree, tvb, offset, size); + break; /* EAP_TYPE_AKA */ - /********************************************************************* + /********************************************************************* EAP Expanded Type - **********************************************************************/ - case EAP_TYPE_EXT: - { - proto_item *expti = NULL; - proto_tree *exptree = NULL; - - expti = proto_tree_add_text(eap_tree, tvb, offset, size, "Expanded Type"); - exptree = proto_item_add_subtree(expti, ett_eap_exp_attr); - dissect_exteap(exptree, tvb, offset, size, pinfo); - } - break; + **********************************************************************/ + case EAP_TYPE_EXT: + { + proto_item *expti = NULL; + proto_tree *exptree = NULL; + + expti = proto_tree_add_text(eap_tree, tvb, offset, size, "Expanded Type"); + exptree = proto_item_add_subtree(expti, ett_eap_exp_attr); + dissect_exteap(exptree, tvb, offset, size, pinfo); + } + break; - /********************************************************************* - **********************************************************************/ - default: - if (tree) { - proto_tree_add_text(eap_tree, tvb, offset, size, - "EAP Data (%d byte%s): \"%s\"", - size, plurality(size, "", "s"), - tvb_bytes_to_str(tvb, offset, size)); - } - break; - /********************************************************************* - **********************************************************************/ - } /* switch (eap_type) */ + /********************************************************************* + **********************************************************************/ + default: + if (tree) { + proto_tree_add_text(eap_tree, tvb, offset, size, + "EAP Data (%d byte%s): \"%s\"", + size, plurality(size, "", "s"), + tvb_bytes_to_str(tvb, offset, size)); + } + break; + /********************************************************************* + **********************************************************************/ + } /* switch (eap_type) */ - } + } } /* switch (eap_code) */ @@ -1195,184 +1207,301 @@ void proto_register_eap(void) { static hf_register_info hf[] = { - { &hf_eap_code, { - "Code", "eap.code", FT_UINT8, BASE_DEC, - VALS(eap_code_vals), 0x0, NULL, HFILL }}, + { &hf_eap_code, { + "Code", "eap.code", + FT_UINT8, BASE_DEC, VALS(eap_code_vals), 0x0, + NULL, HFILL }}, + { &hf_eap_identifier, { - "Id", "eap.id", FT_UINT8, BASE_DEC, - NULL, 0x0, NULL, HFILL }}, + "Id", "eap.id", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_len, { - "Length", "eap.len", FT_UINT16, BASE_DEC, - NULL, 0x0, NULL, HFILL }}, + "Length", "eap.len", + FT_UINT16, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_type, { - "Type", "eap.type", FT_UINT8, BASE_DEC, - VALS(eap_type_vals), 0x0, NULL, HFILL }}, + "Type", "eap.type", + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &eap_type_vals_ext, 0x0, + NULL, HFILL }}, + { &hf_eap_type_nak, { - "Desired Auth Type", "eap.desired_type", FT_UINT8, BASE_DEC, - VALS(eap_type_vals), 0x0, NULL, HFILL }}, + "Desired Auth Type", "eap.desired_type", + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &eap_type_vals_ext, 0x0, + NULL, HFILL }}, + { &hf_eap_identity, { - "Identity", "eap.identity", FT_STRING, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "Identity", "eap.identity", + FT_STRING, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_notification, { - "Notification", "eap.notification", FT_STRING, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "Notification", "eap.notification", + FT_STRING, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_md5_value_size, { - "EAP-MD5 Value-Size", "eap.md5.value_size", FT_UINT8, BASE_DEC, - NULL, 0x0, NULL, HFILL }}, + "EAP-MD5 Value-Size", "eap.md5.value_size", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_md5_value, { - "EAP-MD5 Value", "eap.md5.value", FT_BYTES, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-MD5 Value", "eap.md5.value", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_md5_extra_data, { - "EAP-MD5 Extra Data", "eap.md5.extra_data", FT_BYTES, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-MD5 Extra Data", "eap.md5.extra_data", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_tls_flags, { - "EAP-TLS Flags", "eap.tls.flags", FT_UINT8, BASE_HEX, - NULL, 0x0, NULL, HFILL }}, + "EAP-TLS Flags", "eap.tls.flags", + FT_UINT8, BASE_HEX, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_tls_flag_l, { - "Length Included", "eap.tls.flags.len_included", FT_BOOLEAN, 8, - NULL, EAP_TLS_FLAG_L, NULL, HFILL }}, + "Length Included", "eap.tls.flags.len_included", + FT_BOOLEAN, 8, NULL, EAP_TLS_FLAG_L, + NULL, HFILL }}, + { &hf_eap_tls_flag_m, { - "More Fragments", "eap.tls.flags.more_fragments", FT_BOOLEAN, 8, - NULL, EAP_TLS_FLAG_M, NULL, HFILL }}, + "More Fragments", "eap.tls.flags.more_fragments", + FT_BOOLEAN, 8, NULL, EAP_TLS_FLAG_M, + NULL, HFILL }}, + { &hf_eap_tls_flag_s, { - "Start", "eap.tls.flags.start", FT_BOOLEAN, 8, - NULL, EAP_TLS_FLAG_S, NULL, HFILL }}, + "Start", "eap.tls.flags.start", + FT_BOOLEAN, 8, NULL, EAP_TLS_FLAG_S, + NULL, HFILL }}, + { &hf_eap_tls_flags_version, { - "Version", "eap.tls.flags.version", FT_UINT8, BASE_DEC, - NULL, EAP_TLS_FLAGS_VERSION, NULL, HFILL }}, + "Version", "eap.tls.flags.version", + FT_UINT8, BASE_DEC, NULL, EAP_TLS_FLAGS_VERSION, + NULL, HFILL }}, + { &hf_eap_tls_len, { - "EAP-TLS Length", "eap.tls.len", FT_UINT32, BASE_DEC, - NULL, 0x0, NULL, HFILL }}, + "EAP-TLS Length", "eap.tls.len", + FT_UINT32, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_tls_fragment, { - "EAP-TLS Fragment", "eap.tls.fragment", FT_FRAMENUM, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-TLS Fragment", "eap.tls.fragment", + FT_FRAMENUM, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_tls_fragments, { - "EAP-TLS Fragments", "eap.tls.fragments", FT_NONE, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-TLS Fragments", "eap.tls.fragments", + FT_NONE, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_tls_fragment_overlap, { - "Fragment Overlap", "eap.tls.fragment.overlap", FT_BOOLEAN, BASE_NONE, - NULL, 0x0, "Fragment overlaps with other fragments", HFILL }}, + "Fragment Overlap", "eap.tls.fragment.overlap", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "Fragment overlaps with other fragments", HFILL }}, + { &hf_eap_tls_fragment_overlap_conflict, { - "Conflicting Data In Fragment Overlap", "eap.tls.fragment.overlap_conflict", FT_BOOLEAN, BASE_NONE, - NULL, 0x0, "Overlapping fragments contained conflicting data", HFILL }}, + "Conflicting Data In Fragment Overlap", "eap.tls.fragment.overlap_conflict", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "Overlapping fragments contained conflicting data", HFILL }}, + { &hf_eap_tls_fragment_multiple_tails, { - "Multiple Tail Fragments Found", "eap.tls.fragment.multiple_tails", FT_BOOLEAN, BASE_NONE, - NULL, 0x0, "Several tails were found when defragmenting the packet", HFILL }}, + "Multiple Tail Fragments Found", "eap.tls.fragment.multiple_tails", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "Several tails were found when defragmenting the packet", HFILL }}, + { &hf_eap_tls_fragment_too_long_fragment,{ - "Fragment Too Long", "eap.tls.fragment.fragment.too_long", FT_BOOLEAN, BASE_NONE, - NULL, 0x0, "Fragment contained data past end of packet", HFILL }}, + "Fragment Too Long", "eap.tls.fragment.fragment.too_long", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "Fragment contained data past end of packet", HFILL }}, + { &hf_eap_tls_fragment_error, { - "Defragmentation Error", "eap.tls.fragment.error", FT_FRAMENUM, BASE_NONE, - NULL, 0x0, "Defragmentation error due to illegal fragments", HFILL }}, + "Defragmentation Error", "eap.tls.fragment.error", + FT_FRAMENUM, BASE_NONE, NULL, 0x0, + "Defragmentation error due to illegal fragments", HFILL }}, + { &hf_eap_tls_fragment_count, { - "Fragment Count", "eap.tls.fragment.count", FT_UINT32, BASE_DEC, - NULL, 0x0, "Total length of the reassembled payload", HFILL }}, + "Fragment Count", "eap.tls.fragment.count", + FT_UINT32, BASE_DEC, NULL, 0x0, + "Total length of the reassembled payload", HFILL }}, + { &hf_eap_tls_reassembled_length, { - "Reassembled EAP-TLS Length", "eap.tls.reassembled.len", FT_UINT32, BASE_DEC, - NULL, 0x0, "Total length of the reassembled payload", HFILL }}, + "Reassembled EAP-TLS Length", "eap.tls.reassembled.len", + FT_UINT32, BASE_DEC, NULL, 0x0, + "Total length of the reassembled payload", HFILL }}, + { &hf_eap_sim_subtype, { - "EAP-SIM Subtype", "eap.sim.subtype", FT_UINT8, BASE_DEC, - VALS(eap_sim_subtype_vals), 0x0, NULL, HFILL }}, + "EAP-SIM Subtype", "eap.sim.subtype", + FT_UINT8, BASE_DEC, VALS(eap_sim_subtype_vals), 0x0, + NULL, HFILL }}, + { &hf_eap_sim_reserved, { - "EAP-SIM Reserved", "eap.sim.reserved", FT_UINT16, BASE_HEX, - NULL, 0x0, NULL, HFILL }}, + "EAP-SIM Reserved", "eap.sim.reserved", + FT_UINT16, BASE_HEX, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_sim_subtype_attribute, { - "EAP-SIM Attribute", "eap.sim.subtype.attribute", FT_NONE, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-SIM Attribute", "eap.sim.subtype.attribute", + FT_NONE, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_sim_subtype_type, { - "EAP-SIM Type", "eap.sim.subtype.type", FT_UINT8, BASE_DEC, - VALS(eap_sim_aka_attribute_vals), 0x0, NULL, HFILL }}, + "EAP-SIM Type", "eap.sim.subtype.type", + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &eap_sim_aka_attribute_vals_ext, 0x0, + NULL, HFILL }}, + { &hf_eap_sim_subtype_length, { - "EAP-SIM Length", "eap.sim.subtype.len", FT_UINT8, BASE_DEC, - NULL, 0x0, NULL, HFILL }}, + "EAP-SIM Length", "eap.sim.subtype.len", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_sim_subtype_value, { - "EAP-SIM Value", "eap.sim.subtype.value", FT_BYTES, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-SIM Value", "eap.sim.subtype.value", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_aka_subtype, { - "EAP-AKA Subtype", "eap.aka.subtype", FT_UINT8, BASE_DEC, - VALS(eap_aka_subtype_vals), 0x0, NULL, HFILL }}, + "EAP-AKA Subtype", "eap.aka.subtype", + FT_UINT8, BASE_DEC, VALS(eap_aka_subtype_vals), 0x0, + NULL, HFILL }}, + { &hf_eap_aka_reserved, { - "EAP-AKA Reserved", "eap.aka.reserved", FT_UINT16, BASE_HEX, - NULL, 0x0, NULL, HFILL }}, + "EAP-AKA Reserved", "eap.aka.reserved", + FT_UINT16, BASE_HEX, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_aka_subtype_attribute, { - "EAP-AKA Attribute", "eap.aka.subtype.attribute", FT_NONE, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-AKA Attribute", "eap.aka.subtype.attribute", + FT_NONE, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_aka_subtype_type, { - "EAP-AKA Type", "eap.aka.subtype.type", FT_UINT8, BASE_DEC, - VALS(eap_sim_aka_attribute_vals), 0x0, NULL, HFILL }}, + "EAP-AKA Type", "eap.aka.subtype.type", + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &eap_sim_aka_attribute_vals_ext, 0x0, + NULL, HFILL }}, + { &hf_eap_aka_subtype_length, { - "EAP-AKA Length", "eap.aka.subtype.len", FT_UINT8, BASE_DEC, - NULL, 0x0, NULL, HFILL }}, + "EAP-AKA Length", "eap.aka.subtype.len", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_aka_subtype_value, { - "EAP-AKA Value", "eap.aka.subtype.value", FT_BYTES, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-AKA Value", "eap.aka.subtype.value", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_leap_version, { - "EAP-LEAP Version", "eap.leap.version", FT_UINT8, BASE_DEC, - NULL, 0x0, NULL, HFILL }}, + "EAP-LEAP Version", "eap.leap.version", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_leap_reserved, { - "EAP-LEAP Reserved", "eap.leap.reserved", FT_UINT8, BASE_HEX, - NULL, 0x0, NULL, HFILL }}, + "EAP-LEAP Reserved", "eap.leap.reserved", + FT_UINT8, BASE_HEX, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_leap_count, { - "EAP-LEAP Count", "eap.leap.count", FT_UINT8, BASE_DEC, - NULL, 0x0, NULL, HFILL }}, + "EAP-LEAP Count", "eap.leap.count", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_leap_peer_challenge, { - "EAP-LEAP Peer-Challenge", "eap.leap.peer_challenge", FT_BYTES, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-LEAP Peer-Challenge", "eap.leap.peer_challenge", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_leap_peer_response, { - "EAP-LEAP Peer-Response", "eap.leap.peer_response", FT_BYTES, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-LEAP Peer-Response", "eap.leap.peer_response", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_leap_ap_challenge, { - "EAP-LEAP AP-Challenge", "eap.leap.ap_challenge", FT_BYTES, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-LEAP AP-Challenge", "eap.leap.ap_challenge", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_leap_ap_response, { - "EAP-LEAP AP-Response", "eap.leap.ap_response", FT_BYTES, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-LEAP AP-Response", "eap.leap.ap_response", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_leap_name, { - "EAP-LEAP Name", "eap.leap.name", FT_STRING, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-LEAP Name", "eap.leap.name", + FT_STRING, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_ms_chap_v2_opcode, { - "EAP-MS-CHAP-v2 OpCode", "eap.ms_chap_v2.opcode", FT_UINT8, BASE_DEC, - VALS(eap_ms_chap_v2_opcode_vals), 0x0, NULL, HFILL }}, + "EAP-MS-CHAP-v2 OpCode", "eap.ms_chap_v2.opcode", + FT_UINT8, BASE_DEC, VALS(eap_ms_chap_v2_opcode_vals), 0x0, + NULL, HFILL }}, + { &hf_eap_ms_chap_v2_id, { - "EAP-MS-CHAP-v2 Id", "eap.ms_chap_v2.id", FT_UINT8, BASE_DEC, - NULL, 0x0, NULL, HFILL }}, + "EAP-MS-CHAP-v2 Id", "eap.ms_chap_v2.id", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_ms_chap_v2_length, { - "EAP-MS-CHAP-v2 Length", "eap.ms_chap_v2.length", FT_UINT16, BASE_DEC, - NULL, 0x0, NULL, HFILL }}, + "EAP-MS-CHAP-v2 Length", "eap.ms_chap_v2.length", + FT_UINT16, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_ms_chap_v2_value_size, { - "EAP-MS-CHAP-v2 Value-Size", "eap.ms_chap_v2.value_size", FT_UINT8, BASE_DEC, - NULL, 0x0, NULL, HFILL }}, + "EAP-MS-CHAP-v2 Value-Size", "eap.ms_chap_v2.value_size", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_ms_chap_v2_challenge, { - "EAP-MS-CHAP-v2 Challenge", "eap.ms_chap_v2.challenge", FT_BYTES, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-MS-CHAP-v2 Challenge", "eap.ms_chap_v2.challenge", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_ms_chap_v2_name, { - "EAP-MS-CHAP-v2 Name", "eap.ms_chap_v2.name", FT_STRING, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-MS-CHAP-v2 Name", "eap.ms_chap_v2.name", + FT_STRING, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_ms_chap_v2_peer_challenge, { - "EAP-MS-CHAP-v2 Peer-Challenge", "eap.ms_chap_v2.peer_challenge", FT_BYTES, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-MS-CHAP-v2 Peer-Challenge", "eap.ms_chap_v2.peer_challenge", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_ms_chap_v2_reserved, { - "EAP-MS-CHAP-v2 Reserved", "eap.ms_chap_v2.reserved", FT_BYTES, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-MS-CHAP-v2 Reserved", "eap.ms_chap_v2.reserved", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_ms_chap_v2_nt_response, { - "EAP-MS-CHAP-v2 NT-Response", "eap.ms_chap_v2.nt_response", FT_BYTES, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-MS-CHAP-v2 NT-Response", "eap.ms_chap_v2.nt_response", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_ms_chap_v2_flags, { - "EAP-MS-CHAP-v2 Flags", "eap.ms_chap_v2.flags", FT_UINT8, BASE_HEX, - NULL, 0x0, NULL, HFILL }}, + "EAP-MS-CHAP-v2 Flags", "eap.ms_chap_v2.flags", + FT_UINT8, BASE_HEX, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_ms_chap_v2_message, { - "EAP-MS-CHAP-v2 Message", "eap.ms_chap_v2.message", FT_STRING, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-MS-CHAP-v2 Message", "eap.ms_chap_v2.message", + FT_STRING, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_eap_ms_chap_v2_failure_request, { - "EAP-MS-CHAP-v2 Failure-Request", "eap.ms_chap_v2.failure_request", FT_STRING, BASE_NONE, - NULL, 0x0, NULL, HFILL }}, + "EAP-MS-CHAP-v2 Failure-Request", "eap.ms_chap_v2.failure_request", + FT_STRING, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + /* Expanded type fields */ { &hf_eap_ext_vendor_id, { - "EAP-EXT Vendor Id", "eap.ext.vendor_id", FT_UINT16, BASE_HEX, - VALS(eap_ext_vendor_id_vals), 0x0, NULL, HFILL }}, + "EAP-EXT Vendor Id", "eap.ext.vendor_id", + FT_UINT16, BASE_HEX, VALS(eap_ext_vendor_id_vals), 0x0, + NULL, HFILL }}, + { &hf_eap_ext_vendor_type, { - "EAP-EXT Vendor Type", "eap.ext.vendor_type", FT_UINT8, BASE_HEX, - VALS(eap_ext_vendor_type_vals), 0x0, NULL, HFILL }} + "EAP-EXT Vendor Type", "eap.ext.vendor_type", + FT_UINT8, BASE_HEX, VALS(eap_ext_vendor_type_vals), 0x0, + NULL, HFILL }} }; static gint *ett[] = { &ett_eap, diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c index 2ad5030e2e..6298589b1b 100644 --- a/epan/dissectors/packet-ieee80211.c +++ b/epan/dissectors/packet-ieee80211.c @@ -125,7 +125,7 @@ #include /* Davide Schiera (2006-11-22) ---------------------------------------------- */ -extern const value_string eap_type_vals[]; /* from packet-eap.c */ +extern value_string_ext eap_type_vals_ext; /* from packet-eap.c */ #ifndef roundup2 #define roundup2(x, y) (((x)+((y)-1))&(~((y)-1))) /* if y is powers of two */ @@ -167,10 +167,12 @@ typedef struct { } uat_wep_key_record_t; static uat_wep_key_record_t *uat_wep_key_records = NULL; -static uat_t * wep_uat = NULL; -static guint num_wepkeys_uat = 0; +static uat_t *wep_uat = NULL; +static guint num_wepkeys_uat = 0; -static void* uat_wep_key_record_copy_cb(void* n, const void* o, size_t siz _U_) { +static void * +uat_wep_key_record_copy_cb(void* n, const void* o, size_t siz _U_) +{ uat_wep_key_record_t* new_key = (uat_wep_key_record_t *)n; const uat_wep_key_record_t* old_key = (const uat_wep_key_record_t *)o; @@ -183,7 +185,9 @@ static void* uat_wep_key_record_copy_cb(void* n, const void* o, size_t siz _U_) return new_key; } -static void uat_wep_key_record_update_cb(void* r, const char** err) { +static void +uat_wep_key_record_update_cb(void* r, const char** err) +{ uat_wep_key_record_t* rec = (uat_wep_key_record_t *)r; decryption_key_t* dk; @@ -193,8 +197,8 @@ static void uat_wep_key_record_update_cb(void* r, const char** err) { g_strstrip(rec->string); dk = parse_key_string(rec->string, rec->key); - if(dk != NULL) { - switch(dk->type) { + if (dk != NULL) { + switch (dk->type) { case AIRPDCAP_KEY_TYPE_WEP: case AIRPDCAP_KEY_TYPE_WEP_40: case AIRPDCAP_KEY_TYPE_WEP_104: @@ -222,7 +226,9 @@ static void uat_wep_key_record_update_cb(void* r, const char** err) { } } -static void uat_wep_key_record_free_cb(void*r) { +static void +uat_wep_key_record_free_cb(void*r) +{ uat_wep_key_record_t* key = (uat_wep_key_record_t *)r; if (key->string) g_free(key->string); @@ -233,7 +239,6 @@ UAT_CSTRING_CB_DEF(uat_wep_key_records, string, uat_wep_key_record_t) /* Stuff for the WEP decoder */ static gboolean enable_decryption = FALSE; -static void init_wepkeys(void); /* Davide Schiera (2006-11-26): created function to decrypt WEP and WPA/WPA2 */ static tvbuff_t *try_decrypt(tvbuff_t *tvb, guint32 offset, guint32 len, guint8 *algorithm, guint32 *sec_header, guint32 *sec_trailer); @@ -242,20 +247,15 @@ static int weak_iv(guchar *iv); #define SSWAP(a,b) {guint8 tmp = s[a]; s[a] = s[b]; s[b] = tmp;} typedef struct mimo_control - { - guint8 nc; - guint8 nr; - gboolean chan_width; - guint8 grouping; - guint8 coefficient_size; - guint8 codebook_info; - guint8 remaining_matrix_segment; - } mimo_control_t; - -mimo_control_t get_mimo_control (tvbuff_t *tvb, int offset); -int add_mimo_csi_matrices_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl); -int add_mimo_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl); -int add_mimo_compressed_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl); +{ + guint8 nc; + guint8 nr; + gboolean chan_width; + guint8 grouping; + guint8 coefficient_size; + guint8 codebook_info; + guint8 remaining_matrix_segment; +} mimo_control_t; /* ************************************************************************* */ /* Miscellaneous Constants */ @@ -482,31 +482,30 @@ int add_mimo_compressed_beamforming_feedback_report (proto_tree *tree, tvbuff_t /* Logical field codes (dissector's encoding of fixed fields) */ /* ************************************************************************* */ enum fixed_field { - FIELD_TIMESTAMP, /* 64-bit timestamp */ - FIELD_BEACON_INTERVAL, /* 16-bit beacon interval */ - FIELD_CAP_INFO, /* Add capability information tree */ - FIELD_AUTH_ALG, /* Authentication algorithm used */ - FIELD_AUTH_TRANS_SEQ, /* Authentication sequence number */ + FIELD_TIMESTAMP, /* 64-bit timestamp */ + FIELD_BEACON_INTERVAL, /* 16-bit beacon interval */ + FIELD_CAP_INFO, /* Add capability information tree */ + FIELD_AUTH_ALG, /* Authentication algorithm used */ + FIELD_AUTH_TRANS_SEQ, /* Authentication sequence number */ FIELD_CURRENT_AP_ADDR, FIELD_LISTEN_IVAL, FIELD_REASON_CODE, FIELD_ASSOC_ID, FIELD_STATUS_CODE, - FIELD_CATEGORY_CODE, /* Management action category */ - FIELD_ACTION_CODE, /* Management action code */ - FIELD_DIALOG_TOKEN, /* Management action dialog token */ - FIELD_WME_ACTION_CODE, /* Management notification action code */ - FIELD_WME_DIALOG_TOKEN, /* Management notification dialog token */ - FIELD_WME_STATUS_CODE, /* Management notification setup response status code - */ + FIELD_CATEGORY_CODE, /* Management action category */ + FIELD_ACTION_CODE, /* Management action code */ + FIELD_DIALOG_TOKEN, /* Management action dialog token */ + FIELD_WME_ACTION_CODE, /* Management notification action code */ + FIELD_WME_DIALOG_TOKEN, /* Management notification dialog token */ + FIELD_WME_STATUS_CODE, /* Management notification setup response status code */ FIELD_QOS_ACTION_CODE, FIELD_QOS_TS_INFO, FIELD_DLS_ACTION_CODE, - FIELD_DST_MAC_ADDR, /* DLS destination MAC address */ - FIELD_SRC_MAC_ADDR, /* DLS source MAC address */ - FIELD_DLS_TIMEOUT, /* DLS timeout value */ - FIELD_SCHEDULE_INFO, /* Schedule Info field */ - FIELD_ACTION, /* Action field */ + FIELD_DST_MAC_ADDR, /* DLS destination MAC address */ + FIELD_SRC_MAC_ADDR, /* DLS source MAC address */ + FIELD_DLS_TIMEOUT, /* DLS timeout value */ + FIELD_SCHEDULE_INFO, /* Schedule Info field */ + FIELD_ACTION, /* Action field */ FIELD_BLOCK_ACK_ACTION_CODE, FIELD_QOS_INFO_AP, FIELD_QOS_INFO_STA, @@ -547,69 +546,69 @@ enum fixed_field { FIELD_MESH_CONTROL, FIELD_SELFPROT_ACTION, FIELD_WNM_ACTION_CODE, - /* add any new fixed field value above this line */ + /* add any new fixed field value above this line */ MAX_FIELD_NUM }; /* ************************************************************************* */ /* Logical field codes (IEEE 802.11 encoding of tags) */ /* ************************************************************************* */ -#define TAG_SSID 0 -#define TAG_SUPP_RATES 1 -#define TAG_FH_PARAMETER 2 -#define TAG_DS_PARAMETER 3 -#define TAG_CF_PARAMETER 4 -#define TAG_TIM 5 -#define TAG_IBSS_PARAMETER 6 -#define TAG_COUNTRY_INFO 7 -#define TAG_FH_HOPPING_PARAMETER 8 -#define TAG_FH_HOPPING_TABLE 9 -#define TAG_REQUEST 10 -#define TAG_QBSS_LOAD 11 -#define TAG_EDCA_PARAM_SET 12 -#define TAG_TSPEC 13 -#define TAG_TCLAS 14 -#define TAG_SCHEDULE 15 -#define TAG_CHALLENGE_TEXT 16 - -#define TAG_POWER_CONSTRAINT 32 -#define TAG_POWER_CAPABILITY 33 -#define TAG_TPC_REQUEST 34 -#define TAG_TPC_REPORT 35 -#define TAG_SUPPORTED_CHANNELS 36 -#define TAG_CHANNEL_SWITCH_ANN 37 -#define TAG_MEASURE_REQ 38 -#define TAG_MEASURE_REP 39 -#define TAG_QUIET 40 -#define TAG_IBSS_DFS 41 -#define TAG_ERP_INFO 42 -#define TAG_TS_DELAY 43 -#define TAG_TCLAS_PROCESS 44 -#define TAG_HT_CAPABILITY 45 /* IEEE Stc 802.11n/D2.0 */ -#define TAG_QOS_CAPABILITY 46 -#define TAG_ERP_INFO_OLD 47 /* IEEE Std 802.11g/D4.0 */ -#define TAG_RSN_IE 48 +#define TAG_SSID 0 +#define TAG_SUPP_RATES 1 +#define TAG_FH_PARAMETER 2 +#define TAG_DS_PARAMETER 3 +#define TAG_CF_PARAMETER 4 +#define TAG_TIM 5 +#define TAG_IBSS_PARAMETER 6 +#define TAG_COUNTRY_INFO 7 +#define TAG_FH_HOPPING_PARAMETER 8 +#define TAG_FH_HOPPING_TABLE 9 +#define TAG_REQUEST 10 +#define TAG_QBSS_LOAD 11 +#define TAG_EDCA_PARAM_SET 12 +#define TAG_TSPEC 13 +#define TAG_TCLAS 14 +#define TAG_SCHEDULE 15 +#define TAG_CHALLENGE_TEXT 16 + +#define TAG_POWER_CONSTRAINT 32 +#define TAG_POWER_CAPABILITY 33 +#define TAG_TPC_REQUEST 34 +#define TAG_TPC_REPORT 35 +#define TAG_SUPPORTED_CHANNELS 36 +#define TAG_CHANNEL_SWITCH_ANN 37 +#define TAG_MEASURE_REQ 38 +#define TAG_MEASURE_REP 39 +#define TAG_QUIET 40 +#define TAG_IBSS_DFS 41 +#define TAG_ERP_INFO 42 +#define TAG_TS_DELAY 43 +#define TAG_TCLAS_PROCESS 44 +#define TAG_HT_CAPABILITY 45 /* IEEE Stc 802.11n/D2.0 */ +#define TAG_QOS_CAPABILITY 46 +#define TAG_ERP_INFO_OLD 47 /* IEEE Std 802.11g/D4.0 */ +#define TAG_RSN_IE 48 /* Reserved 49 */ -#define TAG_EXT_SUPP_RATES 50 -#define TAG_AP_CHANNEL_REPORT 51 -#define TAG_NEIGHBOR_REPORT 52 -#define TAG_RCPI 53 -#define TAG_MOBILITY_DOMAIN 54 /* IEEE Std 802.11r-2008 */ -#define TAG_FAST_BSS_TRANSITION 55 /* IEEE Std 802.11r-2008 */ -#define TAG_TIMEOUT_INTERVAL 56 /* IEEE Std 802.11r-2008 */ -#define TAG_RIC_DATA 57 /* IEEE Std 802.11r-2008 */ +#define TAG_EXT_SUPP_RATES 50 +#define TAG_AP_CHANNEL_REPORT 51 +#define TAG_NEIGHBOR_REPORT 52 +#define TAG_RCPI 53 +#define TAG_MOBILITY_DOMAIN 54 /* IEEE Std 802.11r-2008 */ +#define TAG_FAST_BSS_TRANSITION 55 /* IEEE Std 802.11r-2008 */ +#define TAG_TIMEOUT_INTERVAL 56 /* IEEE Std 802.11r-2008 */ +#define TAG_RIC_DATA 57 /* IEEE Std 802.11r-2008 */ /* 58 ??? */ #define TAG_SUPPORTED_REGULATORY_CLASSES 59 /* IEEE Std 802.11w-2009 */ #define TAG_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT 60 /* IEEE Std 802.11w-2009 */ -#define TAG_HT_INFO 61 /* IEEE Stc 802.11n/D2.0 */ -#define TAG_SECONDARY_CHANNEL_OFFSET 62 /* IEEE Stc 802.11n/D1.10/D2.0 */ -#define TAG_TIME_ADV 69 /* IEEE Std 802.11p-2010 */ -#define TAG_20_40_BSS_CO_EX 72 /* IEEE P802.11n/D6.0 */ -#define TAG_20_40_BSS_INTOL_CH_REP 73 /* IEEE P802.11n/D6.0 */ -#define TAG_OVERLAP_BSS_SCAN_PAR 74 /* IEEE P802.11n/D6.0 */ -#define TAG_RIC_DESCRIPTOR 75 /* IEEE Std 802.11r-2008 */ -#define TAG_MMIE 76 /* IEEE Std 802.11w-2009 */ -#define TAG_TIME_ZONE 98 /* IEEE STd 802.11v-2011 */ +#define TAG_HT_INFO 61 /* IEEE Stc 802.11n/D2.0 */ +#define TAG_SECONDARY_CHANNEL_OFFSET 62 /* IEEE Stc 802.11n/D1.10/D2.0 */ +#define TAG_TIME_ADV 69 /* IEEE Std 802.11p-2010 */ +#define TAG_20_40_BSS_CO_EX 72 /* IEEE P802.11n/D6.0 */ +#define TAG_20_40_BSS_INTOL_CH_REP 73 /* IEEE P802.11n/D6.0 */ +#define TAG_OVERLAP_BSS_SCAN_PAR 74 /* IEEE P802.11n/D6.0 */ +#define TAG_RIC_DESCRIPTOR 75 /* IEEE Std 802.11r-2008 */ +#define TAG_MMIE 76 /* IEEE Std 802.11w-2009 */ +#define TAG_TIME_ZONE 98 /* IEEE STd 802.11v-2011 */ #define TAG_LINK_IDENTIFIER 101 /* IEEE Std 802.11z-2010 */ #define TAG_WAKEUP_SCHEDULE 102 /* IEEE Std 802.11z-2010 */ #define TAG_CHANNEL_SWITCH_TIMING 104 /* IEEE Std 802.11z-2010 */ @@ -640,89 +639,90 @@ enum fixed_field { #define TAG_VENDOR_SPECIFIC_IE 221 static const value_string tag_num_vals[] = { - { TAG_SSID, "SSID parameter set" }, - { TAG_SUPP_RATES, "Supported Rates" }, - { TAG_FH_PARAMETER, "FH Parameter set" }, - { TAG_DS_PARAMETER, "DS Parameter set" }, - { TAG_CF_PARAMETER, "CF Parameter set" }, - { TAG_TIM, "Traffic Indication Map (TIM)" }, - { TAG_IBSS_PARAMETER, "IBSS Parameter set" }, - { TAG_COUNTRY_INFO, "Country Information" }, - { TAG_FH_HOPPING_PARAMETER, "Hopping Pattern Parameters" }, - { TAG_FH_HOPPING_TABLE, "Hopping Pattern Table" }, - { TAG_REQUEST, "Request" }, - { TAG_QBSS_LOAD, "QBSS Load Element" }, - { TAG_EDCA_PARAM_SET, "EDCA Parameter Set" }, - { TAG_TSPEC, "Traffic Specification" }, - { TAG_TCLAS, "Traffic Classification" }, - { TAG_SCHEDULE, "Schedule" }, - { TAG_CHALLENGE_TEXT, "Challenge text" }, - { TAG_POWER_CONSTRAINT, "Power Constraint" }, - { TAG_POWER_CAPABILITY, "Power Capability" }, - { TAG_TPC_REQUEST, "TPC Request" }, - { TAG_TPC_REPORT, "TPC Report" }, - { TAG_SUPPORTED_CHANNELS, "Supported Channels" }, - { TAG_CHANNEL_SWITCH_ANN, "Channel Switch Announcement" }, - { TAG_MEASURE_REQ, "Measurement Request" }, - { TAG_MEASURE_REP, "Measurement Report" }, - { TAG_QUIET, "Quiet" }, - { TAG_IBSS_DFS, "IBSS DFS" }, - { TAG_ERP_INFO, "ERP Information" }, - { TAG_TS_DELAY, "TS Delay" }, - { TAG_TCLAS_PROCESS, "TCLAS Processing" }, - { TAG_HT_CAPABILITY, "HT Capabilities (802.11n D1.10)" }, - { TAG_QOS_CAPABILITY, "QoS Capability" }, - { TAG_ERP_INFO_OLD, "ERP Information" }, /* Reserved... */ - { TAG_RSN_IE, "RSN Information" }, - { TAG_EXT_SUPP_RATES, "Extended Supported Rates" }, - { TAG_AP_CHANNEL_REPORT, "AP Channel Report" }, - { TAG_NEIGHBOR_REPORT, "Neighbor Report" }, - { TAG_RCPI, "RCPI" }, - { TAG_MOBILITY_DOMAIN, "Mobility Domain" }, - { TAG_FAST_BSS_TRANSITION, "Fast BSS Transition" }, - { TAG_TIMEOUT_INTERVAL, "Timeout Interval" }, - { TAG_RIC_DATA, "RIC Data" }, - { TAG_SUPPORTED_REGULATORY_CLASSES, "Supported Regulatory Classes" }, + { TAG_SSID, "SSID parameter set" }, + { TAG_SUPP_RATES, "Supported Rates" }, + { TAG_FH_PARAMETER, "FH Parameter set" }, + { TAG_DS_PARAMETER, "DS Parameter set" }, + { TAG_CF_PARAMETER, "CF Parameter set" }, + { TAG_TIM, "Traffic Indication Map (TIM)" }, + { TAG_IBSS_PARAMETER, "IBSS Parameter set" }, + { TAG_COUNTRY_INFO, "Country Information" }, + { TAG_FH_HOPPING_PARAMETER, "Hopping Pattern Parameters" }, + { TAG_FH_HOPPING_TABLE, "Hopping Pattern Table" }, + { TAG_REQUEST, "Request" }, + { TAG_QBSS_LOAD, "QBSS Load Element" }, + { TAG_EDCA_PARAM_SET, "EDCA Parameter Set" }, + { TAG_TSPEC, "Traffic Specification" }, + { TAG_TCLAS, "Traffic Classification" }, + { TAG_SCHEDULE, "Schedule" }, + { TAG_CHALLENGE_TEXT, "Challenge text" }, + { TAG_POWER_CONSTRAINT, "Power Constraint" }, + { TAG_POWER_CAPABILITY, "Power Capability" }, + { TAG_TPC_REQUEST, "TPC Request" }, + { TAG_TPC_REPORT, "TPC Report" }, + { TAG_SUPPORTED_CHANNELS, "Supported Channels" }, + { TAG_CHANNEL_SWITCH_ANN, "Channel Switch Announcement" }, + { TAG_MEASURE_REQ, "Measurement Request" }, + { TAG_MEASURE_REP, "Measurement Report" }, + { TAG_QUIET, "Quiet" }, + { TAG_IBSS_DFS, "IBSS DFS" }, + { TAG_ERP_INFO, "ERP Information" }, + { TAG_TS_DELAY, "TS Delay" }, + { TAG_TCLAS_PROCESS, "TCLAS Processing" }, + { TAG_HT_CAPABILITY, "HT Capabilities (802.11n D1.10)" }, + { TAG_QOS_CAPABILITY, "QoS Capability" }, + { TAG_ERP_INFO_OLD, "ERP Information" }, /* Reserved... */ + { TAG_RSN_IE, "RSN Information" }, + { TAG_EXT_SUPP_RATES, "Extended Supported Rates" }, + { TAG_AP_CHANNEL_REPORT, "AP Channel Report" }, + { TAG_NEIGHBOR_REPORT, "Neighbor Report" }, + { TAG_RCPI, "RCPI" }, + { TAG_MOBILITY_DOMAIN, "Mobility Domain" }, + { TAG_FAST_BSS_TRANSITION, "Fast BSS Transition" }, + { TAG_TIMEOUT_INTERVAL, "Timeout Interval" }, + { TAG_RIC_DATA, "RIC Data" }, + { TAG_SUPPORTED_REGULATORY_CLASSES, "Supported Regulatory Classes" }, { TAG_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT, "Extended Channel Switch Announcement" }, - { TAG_HT_INFO, "HT Information (802.11n D1.10)" }, - { TAG_SECONDARY_CHANNEL_OFFSET, "Secondary Channel Offset (802.11n D1.10)" }, - { TAG_TIME_ADV, "Time Advertisement" }, - { TAG_20_40_BSS_CO_EX, "20/40 BSS Coexistence" }, - { TAG_20_40_BSS_INTOL_CH_REP, "20/40 BSS Intolerant Channel Report" }, /* IEEE P802.11n/D6.0 */ - { TAG_OVERLAP_BSS_SCAN_PAR, "Overlapping BSS Scan Parameters" }, /* IEEE P802.11n/D6.0 */ - { TAG_RIC_DESCRIPTOR, "RIC Descriptor" }, - { TAG_MMIE, "Management MIC" }, - { TAG_TIME_ZONE, "Time Zone" }, - { TAG_LINK_IDENTIFIER, "Link Identifier" }, - { TAG_WAKEUP_SCHEDULE, "Wakeup Schedule" }, - { TAG_CHANNEL_SWITCH_TIMING, "Channel Switch Timing" }, - { TAG_PTI_CONTROL, "PTI Control" }, - { TAG_PU_BUFFER_STATUS, "PU Buffer Status" }, - { TAG_INTERWORKING, "Interworking" }, - { TAG_ADVERTISEMENT_PROTOCOL, "Advertisement Protocol"}, - { TAG_EXPIDITED_BANDWIDTH_REQ, "Expedited Bandwidth Request" }, - { TAG_QOS_MAP_SET, "QoS Map Set" }, - { TAG_ROAMING_CONSORTIUM, "Roaming Consortium" }, - { TAG_EMERGENCY_ALERT_ID, "Emergency Alert Identifier" }, - { TAG_MESH_ID, "Mesh ID" }, - { TAG_MESH_CONFIGURATION, "Mesh Configuration" }, - { TAG_MESH_PEERING_MGMT, "Mesh Peering Management" }, - { TAG_RANN, "Root Announcement" }, - { TAG_EXTENDED_CAPABILITIES, "Extended Capabilities" }, - { TAG_AGERE_PROPRIETARY, "Agere Proprietary" }, - { TAG_MESH_PREQ, "Path Request" }, - { TAG_MESH_PREP, "Path Reply" }, - { TAG_MESH_PERR, "Path Error" }, - { TAG_CISCO_CCX1_CKIP, "Cisco CCX1 CKIP + Device Name" }, - { TAG_CISCO_UNKNOWN_88, "Cisco Unknown 88" }, - { TAG_CISCO_UNKNOWN_95, "Cisco Unknown 95" }, - { TAG_CISCO_UNKNOWN_96, "Cisco Unknown 96" }, - { TAG_SYMBOL_PROPRIETARY, "Symbol Proprietary" }, - { TAG_VHT_CAPABILITY, "VHT Capabilities (IEEE Stc 802.11ac/D3.1)" }, - { TAG_VHT_OPERATION, "VHT Operation (IEEE Stc 802.11ac/D3.1)" }, - { TAG_VENDOR_SPECIFIC_IE, "Vendor Specific" }, + { TAG_HT_INFO, "HT Information (802.11n D1.10)" }, + { TAG_SECONDARY_CHANNEL_OFFSET, "Secondary Channel Offset (802.11n D1.10)" }, + { TAG_TIME_ADV, "Time Advertisement" }, + { TAG_20_40_BSS_CO_EX, "20/40 BSS Coexistence" }, + { TAG_20_40_BSS_INTOL_CH_REP, "20/40 BSS Intolerant Channel Report" }, /* IEEE P802.11n/D6.0 */ + { TAG_OVERLAP_BSS_SCAN_PAR, "Overlapping BSS Scan Parameters" }, /* IEEE P802.11n/D6.0 */ + { TAG_RIC_DESCRIPTOR, "RIC Descriptor" }, + { TAG_MMIE, "Management MIC" }, + { TAG_TIME_ZONE, "Time Zone" }, + { TAG_LINK_IDENTIFIER, "Link Identifier" }, + { TAG_WAKEUP_SCHEDULE, "Wakeup Schedule" }, + { TAG_CHANNEL_SWITCH_TIMING, "Channel Switch Timing" }, + { TAG_PTI_CONTROL, "PTI Control" }, + { TAG_PU_BUFFER_STATUS, "PU Buffer Status" }, + { TAG_INTERWORKING, "Interworking" }, + { TAG_ADVERTISEMENT_PROTOCOL, "Advertisement Protocol"}, + { TAG_EXPIDITED_BANDWIDTH_REQ, "Expedited Bandwidth Request" }, + { TAG_QOS_MAP_SET, "QoS Map Set" }, + { TAG_ROAMING_CONSORTIUM, "Roaming Consortium" }, + { TAG_EMERGENCY_ALERT_ID, "Emergency Alert Identifier" }, + { TAG_MESH_CONFIGURATION, "Mesh Configuration" }, + { TAG_MESH_ID, "Mesh ID" }, + { TAG_MESH_PEERING_MGMT, "Mesh Peering Management" }, + { TAG_RANN, "Root Announcement" }, + { TAG_EXTENDED_CAPABILITIES, "Extended Capabilities" }, + { TAG_AGERE_PROPRIETARY, "Agere Proprietary" }, + { TAG_MESH_PREQ, "Path Request" }, + { TAG_MESH_PREP, "Path Reply" }, + { TAG_MESH_PERR, "Path Error" }, + { TAG_CISCO_CCX1_CKIP, "Cisco CCX1 CKIP + Device Name" }, + { TAG_CISCO_UNKNOWN_88, "Cisco Unknown 88" }, + { TAG_CISCO_UNKNOWN_95, "Cisco Unknown 95" }, + { TAG_CISCO_UNKNOWN_96, "Cisco Unknown 96" }, + { TAG_SYMBOL_PROPRIETARY, "Symbol Proprietary" }, + { TAG_VHT_CAPABILITY, "VHT Capabilities (IEEE Stc 802.11ac/D3.1)" }, + { TAG_VHT_OPERATION, "VHT Operation (IEEE Stc 802.11ac/D3.1)" }, + { TAG_VENDOR_SPECIFIC_IE, "Vendor Specific" }, { 0, NULL } }; +static value_string_ext tag_num_vals_ext = VALUE_STRING_EXT_INIT(tag_num_vals); #define WPA_OUI (const guint8 *) "\x00\x50\xF2" #define RSN_OUI (const guint8 *) "\x00\x0F\xAC" @@ -783,19 +783,21 @@ static const value_string ieee80211_supported_rates_vals[] = { { 0xFF, "BSS requires support for mandatory features of HT PHY (IEEE 802.11 - Clause 20)" }, { 0, NULL} }; +static value_string_ext ieee80211_supported_rates_vals_ext = VALUE_STRING_EXT_INIT(ieee80211_supported_rates_vals); + /* ************************************************************************* */ /* 7.3.1.7 Reason Code field */ /* ************************************************************************* */ static const value_string ieee80211_reason_code[] = { - { 1, "Unspecified reason" }, - { 2, "Previous authentication no longer valid" }, - { 3, "Deauthenticated because sending STA is leaving (or has left) IBSS or ESS" }, - { 4, "Disassociated due to inactivity" }, - { 5, "Disassociated because AP is unable to handle all currently associated STAs" }, - { 6, "Class 2 frame received from nonauthenticated STA" }, - { 7, "Class 3 frame received from nonassociated STA" }, - { 8, "Disassociated because sending STA is leaving (or has left) BSS" }, - { 9, "STA requesting (re)association is not authenticated with responding STA" }, + { 1, "Unspecified reason" }, + { 2, "Previous authentication no longer valid" }, + { 3, "Deauthenticated because sending STA is leaving (or has left) IBSS or ESS" }, + { 4, "Disassociated due to inactivity" }, + { 5, "Disassociated because AP is unable to handle all currently associated STAs" }, + { 6, "Class 2 frame received from nonauthenticated STA" }, + { 7, "Class 3 frame received from nonassociated STA" }, + { 8, "Disassociated because sending STA is leaving (or has left) BSS" }, + { 9, "STA requesting (re)association is not authenticated with responding STA" }, { 10, "Disassociated because the information in the Power Capability element is unacceptable" }, { 11, "Disassociated because the information in the Supported Channels element is unacceptable" }, { 12, "Reserved" }, @@ -844,18 +846,19 @@ static const value_string ieee80211_reason_code[] = { { 66, "The mesh STA performs channel switch with unspecified reason" }, { 0, NULL} }; +static value_string_ext ieee80211_reason_code_ext = VALUE_STRING_EXT_INIT(ieee80211_reason_code); /* ************************************************************************* */ /* 7.3.1.9 Status Code field */ /* ************************************************************************* */ static const value_string ieee80211_status_code[] = { - { 0, "Successful" }, - { 1, "Unspecified failure" }, - { 2, "TDLS wakeup schedule rejected but alternative schedule provided" }, - { 3, "TDLS wakeup schedule rejected" }, - { 5, "Security disabled" }, - { 6, "Unacceptable lifetime" }, - { 7, "Not in same BSS" }, + { 0, "Successful" }, + { 1, "Unspecified failure" }, + { 2, "TDLS wakeup schedule rejected but alternative schedule provided" }, + { 3, "TDLS wakeup schedule rejected" }, + { 5, "Security disabled" }, + { 6, "Unacceptable lifetime" }, + { 7, "Not in same BSS" }, { 10, "Cannot support all requested capabilities in the Capability Information field" }, { 11, "Reassociation denied due to inability to confirm that association exists" }, { 12, "Association denied due to reason outside the scope of this standard" }, @@ -918,6 +921,7 @@ static const value_string ieee80211_status_code[] = { { 79, "Transmission failure" }, { 0, NULL} }; +static value_string_ext ieee80211_status_code_ext = VALUE_STRING_EXT_INIT(ieee80211_status_code); /* ************************************************************************* */ /* Frame types, and their names */ @@ -966,6 +970,7 @@ static const value_string frame_type_subtype_vals[] = { {DATA_QOS_CF_ACK_POLL_NOD, "QoS CF-Ack + CF-Poll (No data)"}, {0, NULL} }; +static value_string_ext frame_type_subtype_vals_ext = VALUE_STRING_EXT_INIT(frame_type_subtype_vals); /* ************************************************************************* */ /* 802.1D Tag Names */ @@ -1025,19 +1030,20 @@ static const value_string aruba_mgt_typevals[] = { { 0x000D, "AP statistics" }, { 0, NULL } }; +static value_string_ext aruba_mgt_typevals_ext = VALUE_STRING_EXT_INIT(aruba_mgt_typevals); /*** Begin: Action Fixed Parameter ***/ -#define CAT_SPECTRUM_MGMT 0 -#define CAT_QOS 1 -#define CAT_DLS 2 -#define CAT_BLOCK_ACK 3 -#define CAT_PUBLIC 4 - -#define CAT_RADIO_MEASUREMENT 5 -#define CAT_FAST_BSS_TRANSITION 6 -#define CAT_HT 7 -#define CAT_SA_QUERY 8 -#define CAT_PUBLIC_PROTECTED 9 +#define CAT_SPECTRUM_MGMT 0 +#define CAT_QOS 1 +#define CAT_DLS 2 +#define CAT_BLOCK_ACK 3 +#define CAT_PUBLIC 4 + +#define CAT_RADIO_MEASUREMENT 5 +#define CAT_FAST_BSS_TRANSITION 6 +#define CAT_HT 7 +#define CAT_SA_QUERY 8 +#define CAT_PUBLIC_PROTECTED 9 #define CAT_WNM 10 #define CAT_UNPROTECTED_WNM 11 #define CAT_TDLS 12 @@ -1182,8 +1188,7 @@ static const value_string aruba_mgt_typevals[] = { #define ANQP_INFO_ANQP_VENDOR_SPECIFIC_LIST 56797 /* ANQP information ID - IEEE Std 802.11u-2011 - Table 7-43bk */ -static const value_string anqp_info_id_vals[] = -{ +static const value_string anqp_info_id_vals[] = { {ANQP_INFO_ANQP_QUERY_LIST, "ANQP Query list"}, {ANQP_INFO_ANQP_CAPAB_LIST, "ANQP Capability list"}, {ANQP_INFO_VENUE_NAME_INFO, "Venue Name information"}, @@ -1205,6 +1210,7 @@ static const value_string anqp_info_id_vals[] = {ANQP_INFO_ANQP_VENDOR_SPECIFIC_LIST, "ANQP vendor-specific list"}, {0, NULL} }; +static value_string_ext anqp_info_id_vals_ext = VALUE_STRING_EXT_INIT(anqp_info_id_vals); /* IEEE 802.11v - WNM Action field values */ enum wnm_action { @@ -1238,8 +1244,7 @@ enum wnm_action { WNM_NOTIFICATION_RESP = 27 }; -static const value_string wnm_action_codes[] = -{ +static const value_string wnm_action_codes[] = { { WNM_EVENT_REQ, "Event Request" }, { WNM_EVENT_REPORT, "Event Report" }, { WNM_DIAGNOSTIC_REQ, "Diagnostic Request" }, @@ -1270,6 +1275,7 @@ static const value_string wnm_action_codes[] = { WNM_NOTIFICATION_RESP, "WNM-Notification Response" }, { 0, NULL } }; +static value_string_ext wnm_action_codes_ext = VALUE_STRING_EXT_INIT(wnm_action_codes); /*** End: Action Fixed Parameter ***/ @@ -1287,6 +1293,8 @@ static const value_string ieee80211_tag_measure_request_type_flags[] = { {0x0A, "Measurement Pause Request"}, {0x00, NULL} }; +static value_string_ext ieee80211_tag_measure_request_type_flags_ext = + VALUE_STRING_EXT_INIT(ieee80211_tag_measure_request_type_flags); static const value_string ieee80211_tag_measure_report_type_flags[] = { { 0x00, "Basic Report" }, @@ -1301,6 +1309,8 @@ static const value_string ieee80211_tag_measure_report_type_flags[] = { { 0x09, "Transmit Stream Measurement Report" }, { 0x00, NULL } }; +static value_string_ext ieee80211_tag_measure_report_type_flags_ext = + VALUE_STRING_EXT_INIT(ieee80211_tag_measure_report_type_flags); static const true_false_string ieee80211_tag_measure_report_frame_info_frame_type_flag = { "Measurement Pilot Frame", @@ -1378,6 +1388,8 @@ static const value_string ieee80211_tag_measure_request_group_id_flags[] = { { 0x0f, "STBC Group" }, { 0x00, NULL } }; +static value_string_ext ieee80211_tag_measure_request_group_id_flags_ext = + VALUE_STRING_EXT_INIT(ieee80211_tag_measure_request_group_id_flags); static const value_string ieee80211_tclas_process_flag[] = { {0x00, "Incoming MSDU's higher layer parameters have to match to the parameters in all associated TCLAS elements."}, @@ -1387,9 +1399,9 @@ static const value_string ieee80211_tclas_process_flag[] = { }; static const value_string frame_type[] = { - {MGT_FRAME, "Management frame"}, + {MGT_FRAME, "Management frame"}, {CONTROL_FRAME, "Control frame"}, - {DATA_FRAME, "Data frame"}, + {DATA_FRAME, "Data frame"}, {0, NULL} }; @@ -1521,21 +1533,21 @@ static const true_false_string ieee80211_qos_amsdu_present_flag = { }; static const value_string sta_cf_pollable[] = { - {0x00, "Station is not CF-Pollable"}, - {0x02, "Station is CF-Pollable, " - "not requesting to be placed on the CF-polling list"}, - {0x01, "Station is CF-Pollable, " - "requesting to be placed on the CF-polling list"}, - {0x03, "Station is CF-Pollable, requesting never to be polled"}, + {0x00, "Station is not CF-Pollable"}, + {0x02, "Station is CF-Pollable, " + "not requesting to be placed on the CF-polling list"}, + {0x01, "Station is CF-Pollable, " + "requesting to be placed on the CF-polling list"}, + {0x03, "Station is CF-Pollable, requesting never to be polled"}, {0x0200, "QSTA requesting association in QBSS"}, {0, NULL} }; static const value_string ap_cf_pollable[] = { - {0x00, "No point coordinator at AP"}, - {0x02, "Point coordinator at AP for delivery only (no polling)"}, - {0x01, "Point coordinator at AP for delivery and polling"}, - {0x03, "Reserved"}, + {0x0000, "No point coordinator at AP"}, + {0x0002, "Point coordinator at AP for delivery only (no polling)"}, + {0x0001, "Point coordinator at AP for delivery and polling"}, + {0x0003, "Reserved"}, {0x0200, "QAP (HC) does not use CFP for delivery of unicast data type frames"}, {0x0202, "QAP (HC) uses CFP for delivery, but does not send CF-Polls to non-QoS STAs"}, {0x0201, "QAP (HC) uses CFP for delivery, and sends CF-Polls to non-QoS STAs"}, @@ -1658,15 +1670,15 @@ static const true_false_string ff_ht_info_sta_chan_width_flag = { }; static const value_string ff_ht_action_flags[] = { - {HT_ACTION_NOTIFY_CHAN_WIDTH, "Notify Channel Width"}, - {HT_ACTION_SM_PWR_SAVE, "Spatial Multiplexing (SM) Power Save"}, - {HT_ACTION_PSMP_ACTION, "Power Save Multi-Poll (PSMP) action frame"}, - {HT_ACTION_SET_PCO_PHASE, "Set PCO Phase"}, - {HT_ACTION_MIMO_CSI, "MIMO CSI Matrices"}, - {HT_ACTION_MIMO_BEAMFORMING, "MIMO Non-compressed Beamforming"}, + {HT_ACTION_NOTIFY_CHAN_WIDTH, "Notify Channel Width"}, + {HT_ACTION_SM_PWR_SAVE, "Spatial Multiplexing (SM) Power Save"}, + {HT_ACTION_PSMP_ACTION, "Power Save Multi-Poll (PSMP) action frame"}, + {HT_ACTION_SET_PCO_PHASE, "Set PCO Phase"}, + {HT_ACTION_MIMO_CSI, "MIMO CSI Matrices"}, + {HT_ACTION_MIMO_BEAMFORMING, "MIMO Non-compressed Beamforming"}, {HT_ACTION_MIMO_COMPRESSED_BEAMFORMING, "MIMO Compressed Beamforming"}, - {HT_ACTION_ANT_SEL_FEEDBACK, "Antenna Selection Indices Feedback"}, - {HT_ACTION_HT_INFO_EXCHANGE, "HT Information Exchange"}, + {HT_ACTION_ANT_SEL_FEEDBACK, "Antenna Selection Indices Feedback"}, + {HT_ACTION_HT_INFO_EXCHANGE, "HT Information Exchange"}, {0x00, NULL} }; @@ -1697,80 +1709,83 @@ static const value_string ff_mimo_cntrl_codebook_info_flags[] = { static const value_string ff_pa_action_codes[] = { - {PA_DSE_ENABLEMENT, "DSE enablement"}, - {PA_DSE_DEENABLEMENT, "DSE deenablement"}, - {PA_DSE_REG_LOC_ANNOUNCEMENT, "DSE Registered Location Announcement"}, + {PA_DSE_ENABLEMENT, "DSE enablement"}, + {PA_DSE_DEENABLEMENT, "DSE deenablement"}, + {PA_DSE_REG_LOC_ANNOUNCEMENT, "DSE Registered Location Announcement"}, {PA_EXT_CHANNEL_SWITCH_ANNOUNCEMENT, "Extended Channel Switch Announcement"}, - {PA_DSE_MEASUREMENT_REQUEST, "DSE measurement request"}, - {PA_DSE_MEASUREMENT_REPORT, "DSE measurement report"}, - {PA_MEASUREMENT_PILOT, "Measurement Pilot"}, - {PA_DSE_POWER_CONSTRAINT, "DSE power constraint"}, - {PA_VENDOR_SPECIFIC, "Vendor Specific"}, - {PA_GAS_INITIAL_REQUEST, "GAS Initial Request"}, - {PA_GAS_INITIAL_RESPONSE, "GAS Initial Response"}, - {PA_GAS_COMEBACK_REQUEST, "GAS Comeback Request"}, - {PA_GAS_COMEBACK_RESPONSE, "GAS Comeback Response"}, - {PA_TDLS_DISCOVERY_RESPONSE, "TDLS Discovery Response"}, + {PA_DSE_MEASUREMENT_REQUEST, "DSE measurement request"}, + {PA_DSE_MEASUREMENT_REPORT, "DSE measurement report"}, + {PA_MEASUREMENT_PILOT, "Measurement Pilot"}, + {PA_DSE_POWER_CONSTRAINT, "DSE power constraint"}, + {PA_VENDOR_SPECIFIC, "Vendor Specific"}, + {PA_GAS_INITIAL_REQUEST, "GAS Initial Request"}, + {PA_GAS_INITIAL_RESPONSE, "GAS Initial Response"}, + {PA_GAS_COMEBACK_REQUEST, "GAS Comeback Request"}, + {PA_GAS_COMEBACK_RESPONSE, "GAS Comeback Response"}, + {PA_TDLS_DISCOVERY_RESPONSE, "TDLS Discovery Response"}, {0x00, NULL} }; +static value_string_ext ff_pa_action_codes_ext = VALUE_STRING_EXT_INIT(ff_pa_action_codes); static const value_string category_codes[] = { - {CAT_SPECTRUM_MGMT, "Spectrum Management (SM)"}, - {0x80 | CAT_SPECTRUM_MGMT, "Spectrum Management (SM) (error)"}, - {CAT_QOS, "Quality of Service (QoS)"}, - {0x80 | CAT_QOS, "Quality of Service (QoS (error))"}, - {CAT_DLS, "Direct-Link Setup (DLS)"}, - {0x80 | CAT_DLS, "Direct-Link Setup (DLS) (error)"}, - {CAT_BLOCK_ACK, "Block Ack"}, - {0x80 | CAT_BLOCK_ACK, "Block Ack (error)"}, - {CAT_PUBLIC, "Public Action"}, - {0x80 | CAT_PUBLIC, "Public Action (error)"}, - {CAT_RADIO_MEASUREMENT, "Radio Measurement"}, - {0x80 | CAT_RADIO_MEASUREMENT, "Radio Measurement (error)"}, - {CAT_FAST_BSS_TRANSITION, "Fast BSS Transition"}, - {0x80 | CAT_FAST_BSS_TRANSITION, "Fast BSS Transition (error)"}, - {CAT_HT, "High Throughput"}, - {0x80 | CAT_HT, "High Throughput (error)"}, - {CAT_SA_QUERY, "SA Query"}, - {0x80 | CAT_SA_QUERY, "SA Query (error)"}, - {CAT_PUBLIC_PROTECTED, "Protected Dual of Public Action"}, - {0x80 | CAT_PUBLIC_PROTECTED, "Protected Dual of Public Action (error)"}, - {CAT_WNM, "WNM"}, - {0x80 | CAT_WNM, "WNM (error)"}, - {CAT_UNPROTECTED_WNM, "Unprotected WNM"}, - {0x80 | CAT_UNPROTECTED_WNM, "Unprotected WNM (error)"}, - {CAT_TDLS, "TDLS"}, - {0x80 | CAT_TDLS, "TDLS (error)"}, - {CAT_MESH, "MESH"}, - {0x80 | CAT_MESH, "Mesh (error)"}, - {CAT_MULTIHOP, "Multihop"}, - {0x80 | CAT_MULTIHOP, "Multihop (error)"}, - {CAT_SELF_PROTECTED, "Self-protected"}, - {0x80 | CAT_SELF_PROTECTED, "Self-protected (error)"}, - {CAT_MGMT_NOTIFICATION, "Management Notification"}, - {0x80 | CAT_MGMT_NOTIFICATION, "Management Notification (error)"}, - {CAT_VENDOR_SPECIFIC_PROTECTED, "Vendor-specific Protected"}, + {CAT_SPECTRUM_MGMT, "Spectrum Management (SM)"}, + {CAT_QOS, "Quality of Service (QoS)"}, + {CAT_DLS, "Direct-Link Setup (DLS)"}, + {CAT_BLOCK_ACK, "Block Ack"}, + {CAT_PUBLIC, "Public Action"}, + {CAT_RADIO_MEASUREMENT, "Radio Measurement"}, + {CAT_FAST_BSS_TRANSITION, "Fast BSS Transition"}, + {CAT_HT, "High Throughput"}, + {CAT_SA_QUERY, "SA Query"}, + {CAT_PUBLIC_PROTECTED, "Protected Dual of Public Action"}, + {CAT_WNM, "WNM"}, + {CAT_UNPROTECTED_WNM, "Unprotected WNM"}, + {CAT_TDLS, "TDLS"}, + {CAT_MESH, "MESH"}, + {CAT_MULTIHOP, "Multihop"}, + {CAT_SELF_PROTECTED, "Self-protected"}, + {CAT_MGMT_NOTIFICATION, "Management Notification"}, + {CAT_VENDOR_SPECIFIC_PROTECTED, "Vendor-specific Protected"}, + {CAT_VENDOR_SPECIFIC, "Vendor Specific"}, + + {0x80 | CAT_SPECTRUM_MGMT, "Spectrum Management (SM) (error)"}, + {0x80 | CAT_QOS, "Quality of Service (QoS (error))"}, + {0x80 | CAT_DLS, "Direct-Link Setup (DLS) (error)"}, + {0x80 | CAT_BLOCK_ACK, "Block Ack (error)"}, + {0x80 | CAT_PUBLIC, "Public Action (error)"}, + {0x80 | CAT_RADIO_MEASUREMENT, "Radio Measurement (error)"}, + {0x80 | CAT_FAST_BSS_TRANSITION, "Fast BSS Transition (error)"}, + {0x80 | CAT_HT, "High Throughput (error)"}, + {0x80 | CAT_SA_QUERY, "SA Query (error)"}, + {0x80 | CAT_PUBLIC_PROTECTED, "Protected Dual of Public Action (error)"}, + {0x80 | CAT_WNM, "WNM (error)"}, + {0x80 | CAT_UNPROTECTED_WNM, "Unprotected WNM (error)"}, + {0x80 | CAT_TDLS, "TDLS (error)"}, + {0x80 | CAT_MESH, "Mesh (error)"}, + {0x80 | CAT_MULTIHOP, "Multihop (error)"}, + {0x80 | CAT_SELF_PROTECTED, "Self-protected (error)"}, + {0x80 | CAT_MGMT_NOTIFICATION, "Management Notification (error)"}, {0x80 | CAT_VENDOR_SPECIFIC_PROTECTED, "Vendor-specific Protected (error)"}, - {CAT_VENDOR_SPECIFIC, "Vendor Specific"}, - {0x80 | CAT_VENDOR_SPECIFIC, "Vendor Specific (error)"}, + {0x80 | CAT_VENDOR_SPECIFIC, "Vendor Specific (error)"}, {0, NULL} }; +static value_string_ext category_codes_ext = VALUE_STRING_EXT_INIT(category_codes); -static const value_string action_codes[] ={ +static const value_string action_codes[] = { {SM_ACTION_MEASUREMENT_REQUEST, "Measurement Request"}, - {SM_ACTION_MEASUREMENT_REPORT, "Measurement Report"}, - {SM_ACTION_TPC_REQUEST, "TPC Request"}, - {SM_ACTION_TPC_REPORT, "TPC Report"}, - {SM_ACTION_CHAN_SWITCH_ANNC, "Channel Switch Announcement"}, + {SM_ACTION_MEASUREMENT_REPORT, "Measurement Report"}, + {SM_ACTION_TPC_REQUEST, "TPC Request"}, + {SM_ACTION_TPC_REPORT, "TPC Report"}, + {SM_ACTION_CHAN_SWITCH_ANNC, "Channel Switch Announcement"}, {0, NULL} }; -static const value_string vendor_action_types_mrvl[] ={ +static const value_string vendor_action_types_mrvl[] = { {MRVL_ACTION_MESH_MANAGEMENT, "Mesh Management"}, {0, NULL} }; -static const value_string mesh_mgt_action_codes_mrvl[] ={ +static const value_string mesh_mgt_action_codes_mrvl[] = { {MRVL_MESH_MGMT_ACTION_RREQ, "Route Request"}, {MRVL_MESH_MGMT_ACTION_RREP, "Route Response"}, {MRVL_MESH_MGMT_ACTION_RERR, "Route Error"}, @@ -1778,12 +1793,12 @@ static const value_string mesh_mgt_action_codes_mrvl[] ={ {0, NULL} }; -static const value_string mesh_path_selection_codes[] ={ +static const value_string mesh_path_selection_codes[] = { {0x0, "Hybrid Wireless Mesh Protocol"}, {0, NULL} }; -static const value_string mesh_metric_codes[] ={ +static const value_string mesh_metric_codes[] = { {0x0, "Airtime Link Metric"}, {0, NULL} }; @@ -1802,39 +1817,40 @@ static const value_string wme_status_codes[] = { {0x00, NULL} }; -static const value_string mesh_action[] ={ +static const value_string mesh_action[] = { {MESH_ACTION_LINK_METRIC_REPORT, "Mesh Link Metric Report"}, - {MESH_ACTION_HWMP, "HWMP Mesh Path Selection"}, - {MESH_ACTION_GATE_ANNOUNCE, "Gate Announcement"}, - {MESH_ACTION_CONGESTION_CTL, "Congestion Control Notification"}, + {MESH_ACTION_HWMP, "HWMP Mesh Path Selection"}, + {MESH_ACTION_GATE_ANNOUNCE, "Gate Announcement"}, + {MESH_ACTION_CONGESTION_CTL, "Congestion Control Notification"}, {MESH_ACTION_MCCA_SETUP_REQUEST, "MCCA Setup Request"}, - {MESH_ACTION_MCCA_SETUP_REPLY, "MCCA Setup Reply"}, - {MESH_ACTION_MCCA_ADV_REQUEST, "MCCA Advertisement Request"}, - {MESH_ACTION_MCCA_ADV, "MCCA Advertisement"}, - {MESH_ACTION_MCCA_TEARDOWN, "MCCA Teardown"}, - {MESH_ACTION_TBTT_ADJ_REQUEST, "TBTT Adjustment Request"}, - {MESH_ACTION_TBTT_ADJ_RESPONSE, "TBTT Adjustment Response"}, + {MESH_ACTION_MCCA_SETUP_REPLY, "MCCA Setup Reply"}, + {MESH_ACTION_MCCA_ADV_REQUEST, "MCCA Advertisement Request"}, + {MESH_ACTION_MCCA_ADV, "MCCA Advertisement"}, + {MESH_ACTION_MCCA_TEARDOWN, "MCCA Teardown"}, + {MESH_ACTION_TBTT_ADJ_REQUEST, "TBTT Adjustment Request"}, + {MESH_ACTION_TBTT_ADJ_RESPONSE, "TBTT Adjustment Response"}, {0, NULL} }; +static value_string_ext mesh_action_ext = VALUE_STRING_EXT_INIT(mesh_action); -static const value_string multihop_action[] ={ - {MULTIHOP_ACTION_PROXY_UPDATE, "Proxy Update"}, +static const value_string multihop_action[] = { + {MULTIHOP_ACTION_PROXY_UPDATE, "Proxy Update"}, {MULTIHOP_ACTION_PROXY_UPDATE_CONF, "Proxy Update Confirmation"}, {0, NULL} }; static const value_string selfprot_action[] = { - {SELFPROT_ACTION_MESH_PEERING_OPEN, "Mesh Peering Open"}, - {SELFPROT_ACTION_MESH_PEERING_CONFIRM, "Mesh Peering Confirm"}, - {SELFPROT_ACTION_MESH_PEERING_CLOSE, "Mesh Peering Close"}, + {SELFPROT_ACTION_MESH_PEERING_OPEN, "Mesh Peering Open"}, + {SELFPROT_ACTION_MESH_PEERING_CONFIRM, "Mesh Peering Confirm"}, + {SELFPROT_ACTION_MESH_PEERING_CLOSE, "Mesh Peering Close"}, {SELFPROT_ACTION_MESH_GROUP_KEY_INFORM, "Mesh Group Key Inform"}, - {SELFPROT_ACTION_MESH_GROUP_KEY_ACK, "Mesh Group Key Ack"}, + {SELFPROT_ACTION_MESH_GROUP_KEY_ACK, "Mesh Group Key Ack"}, {0, NULL} }; static const value_string mesh_peering_proto_ids[] = { - {MESH_PEERING_PROTO_MGMT, "Mesh peering management protocol"}, - {MESH_PEERING_PROTO_AMPE, "Authenticated mesh peering exchange protocol"}, + {MESH_PEERING_PROTO_MGMT, "Mesh peering management protocol"}, + {MESH_PEERING_PROTO_AMPE, "Authenticated mesh peering exchange protocol"}, {MESH_PEERING_PROTO_VENDOR, "Vendor specific"}, {0, NULL} }; @@ -1858,22 +1874,22 @@ static const value_string ack_policy[] = { }; static const value_string qos_action_codes[] = { - {SM_ACTION_ADDTS_REQUEST, "ADDTS Request"}, + {SM_ACTION_ADDTS_REQUEST, "ADDTS Request"}, {SM_ACTION_ADDTS_RESPONSE, "ADDTS Response"}, - {SM_ACTION_DELTS, "DELTS"}, - {SM_ACTION_QOS_SCHEDULE, "Schedule"}, + {SM_ACTION_DELTS, "DELTS"}, + {SM_ACTION_QOS_SCHEDULE, "Schedule"}, {0, NULL} }; static const value_string ba_action_codes[] = { - {BA_ADD_BLOCK_ACK_REQUEST, "Add Block Ack Request"}, + {BA_ADD_BLOCK_ACK_REQUEST, "Add Block Ack Request"}, {BA_ADD_BLOCK_ACK_RESPONSE, "Add Block Ack Response"}, - {BA_DELETE_BLOCK_ACK, "Delete Block Ack"}, + {BA_DELETE_BLOCK_ACK, "Delete Block Ack"}, {0x00, NULL} }; static const value_string dls_action_codes[] = { - {SM_ACTION_DLS_REQUEST, "DLS Request"}, + {SM_ACTION_DLS_REQUEST, "DLS Request"}, {SM_ACTION_DLS_RESPONSE, "DLS Response"}, {SM_ACTION_DLS_TEARDOWN, "DLS Teardown"}, {0, NULL} @@ -1941,7 +1957,7 @@ static const value_string ieee80211_block_ack_type_flags[] = { {0x00, NULL} }; -static const value_string ft_action_codes[] ={ +static const value_string ft_action_codes[] = { {FT_ACTION_REQUEST, "FT Request"}, {FT_ACTION_RESPONSE, "FT Response"}, {FT_ACTION_CONFIRM, "FT Confirm"}, @@ -1949,7 +1965,7 @@ static const value_string ft_action_codes[] ={ {0, NULL} }; -static const value_string sa_query_action_codes[] ={ +static const value_string sa_query_action_codes[] = { {SA_QUERY_REQUEST, "SA Query Request"}, {SA_QUERY_RESPONSE, "SA Query Response"}, {0, NULL} @@ -1977,8 +1993,7 @@ static const true_false_string qos_info_field_queue_req_flags = { }; /* 7.3.1.17 Table 19b-Settings of the Max SP Length subfield */ -static const value_string qos_info_field_max_sp_length_flags[] = -{ +static const value_string qos_info_field_max_sp_length_flags[] = { { 0x0, "QAP may deliver all buffered MSDUs and MMPDUs." }, { 0x2, "QAP may deliver a maximum of two MSDUs and MMPDUs per SP." }, { 0x1, "QAP may deliver a maximum of four MSDUs and MMPDUs per SP." }, @@ -3887,52 +3902,50 @@ static dissector_handle_t data_handle; static int wlan_tap = -1; -static const value_string access_network_type_vals[] = -{ - { 0, "Private network" }, - { 1, "Private network with guest access" }, - { 2, "Chargeable public network" }, - { 3, "Free public network" }, - { 4, "Personal device network" }, - { 5, "Emergency services only network" }, +static const value_string access_network_type_vals[] = { + { 0, "Private network" }, + { 1, "Private network with guest access" }, + { 2, "Chargeable public network" }, + { 3, "Free public network" }, + { 4, "Personal device network" }, + { 5, "Emergency services only network" }, { 14, "Test or experimental" }, { 15, "Wildcard" }, { 0, NULL } }; -static const value_string adv_proto_id_vals[] = -{ - {0, "Access Network Query Protocol"}, - {1, "MIH Information Service"}, - {2, "MIH Command and Event Services Capability Discovery"}, - {3, "Emergency Alert System (EAS)"}, - {4, "Location-to-Service Translation Protocol"}, +static const value_string adv_proto_id_vals[] = { + { 0, "Access Network Query Protocol"}, + { 1, "MIH Information Service"}, + { 2, "MIH Command and Event Services Capability Discovery"}, + { 3, "Emergency Alert System (EAS)"}, + { 4, "Location-to-Service Translation Protocol"}, {221, "Vendor Specific"}, {0, NULL} }; -static const value_string timeout_int_types[] = -{ +static const value_string timeout_int_types[] = { {1, "Reassociation deadline interval (TUs)"}, {2, "Key lifetime interval (seconds)"}, {3, "Association Comeback time (TUs)"}, {0, NULL} }; -static const value_string tdls_action_codes[] ={ - {TDLS_SETUP_REQUEST, "TDLS Setup Request"}, - {TDLS_SETUP_RESPONSE, "TDLS Setup Response"}, - {TDLS_SETUP_CONFIRM, "TDLS Setup Confirm"}, - {TDLS_TEARDOWN, "TDLS Teardown"}, +static const value_string tdls_action_codes[] = { + {TDLS_SETUP_REQUEST, "TDLS Setup Request"}, + {TDLS_SETUP_RESPONSE, "TDLS Setup Response"}, + {TDLS_SETUP_CONFIRM, "TDLS Setup Confirm"}, + {TDLS_TEARDOWN, "TDLS Teardown"}, {TDLS_PEER_TRAFFIC_INDICATION, "TDLS Peer Traffic Indication"}, - {TDLS_CHANNEL_SWITCH_REQUEST, "TDLS Channel Switch Request"}, + {TDLS_CHANNEL_SWITCH_REQUEST, "TDLS Channel Switch Request"}, {TDLS_CHANNEL_SWITCH_RESPONSE, "TDLS Channel Switch Response"}, - {TDLS_PEER_PSM_REQUEST, "TDLS Peer PSM Request"}, - {TDLS_PEER_PSM_RESPONSE, "TDLS Peer PSM Response"}, - {TDLS_PEER_TRAFFIC_RESPONSE, "TDLS Peer Traffic Response"}, - {TDLS_DISCOVERY_REQUEST, "TDLS Discovery Request"}, + {TDLS_PEER_PSM_REQUEST, "TDLS Peer PSM Request"}, + {TDLS_PEER_PSM_RESPONSE, "TDLS Peer PSM Response"}, + {TDLS_PEER_TRAFFIC_RESPONSE, "TDLS Peer Traffic Response"}, + {TDLS_DISCOVERY_REQUEST, "TDLS Discovery Request"}, {0, NULL} }; +static value_string_ext tdls_action_codes_ext = VALUE_STRING_EXT_INIT(tdls_action_codes); AIRPDCAP_CONTEXT airpdcap_ctx; @@ -3952,8 +3965,8 @@ AIRPDCAP_CONTEXT airpdcap_ctx; #define PSMP_STA_INFO_FLAG_IA_RESERVED 0xFC000000 static const value_string ff_psmp_sta_info_flags[] = { - { PSMP_STA_INFO_BROADCAST, "Broadcast"}, - { PSMP_STA_INFO_MULTICAST, "Multicast"}, + { PSMP_STA_INFO_BROADCAST, "Broadcast"}, + { PSMP_STA_INFO_MULTICAST, "Multicast"}, { PSMP_STA_INFO_INDIVIDUALLY_ADDRESSED, "Individually Addressed"}, {0, NULL} }; @@ -3962,8 +3975,9 @@ static void beacon_interval_base_custom(gchar *result, guint32 beacon_interval) { double temp_double; + temp_double = (double)beacon_interval; - g_snprintf(result, ITEM_LABEL_LENGTH, "%f [Seconds]", (temp_double * 1024 / 1000000) ); + g_snprintf(result, ITEM_LABEL_LENGTH, "%f [Seconds]", (temp_double * 1024 / 1000000)); } /* ************************************************************************* */ @@ -3972,7 +3986,7 @@ beacon_interval_base_custom(gchar *result, guint32 beacon_interval) static int find_header_length (guint16 fcf, guint16 ctrl_fcf, gboolean is_ht) { - int len; + int len; guint16 cw_fcf; switch (FCF_FRAME_TYPE (fcf)) { @@ -4050,10 +4064,10 @@ has_mesh_control(guint16 fcf, guint16 qos_ctl, guint8 mesh_flags) * set, all reserved bits in the mesh_flags field are zero, and the address * extension mode is not a reserved value. */ - return ((FCF_ADDR_SELECTOR(fcf) == DATA_ADDR_T4 || FCF_ADDR_SELECTOR(fcf) == DATA_ADDR_T2) && + return (((FCF_ADDR_SELECTOR(fcf) == DATA_ADDR_T4) || (FCF_ADDR_SELECTOR(fcf) == DATA_ADDR_T2)) && (QOS_MESH_CONTROL_PRESENT(qos_ctl)) && - (mesh_flags & ~MESH_FLAGS_ADDRESS_EXTENSION) == 0 && - (mesh_flags & MESH_FLAGS_ADDRESS_EXTENSION) != MESH_FLAGS_ADDRESS_EXTENSION); + ((mesh_flags & ~MESH_FLAGS_ADDRESS_EXTENSION) == 0) && + ((mesh_flags & MESH_FLAGS_ADDRESS_EXTENSION) != MESH_FLAGS_ADDRESS_EXTENSION)); } static int @@ -4062,9 +4076,10 @@ find_mesh_control_length(guint8 mesh_flags) return 6 + 6*(mesh_flags & MESH_FLAGS_ADDRESS_EXTENSION); } -mimo_control_t get_mimo_control (tvbuff_t *tvb, int offset) +static mimo_control_t +get_mimo_control (tvbuff_t *tvb, int offset) { - guint16 mimo; + guint16 mimo; mimo_control_t output; mimo = tvb_get_letohs (tvb, offset); @@ -4118,32 +4133,34 @@ mimo_control_t get_mimo_control (tvbuff_t *tvb, int offset) return output; } -int get_mimo_na (guint8 nr, guint8 nc) +static int +get_mimo_na (guint8 nr, guint8 nc) { - if (nr == 2 && nc == 1){ + if ((nr == 2) && (nc == 1)) { return 2; - }else if (nr == 2 && nc == 2){ + } else if ((nr == 2) && (nc == 2)) { return 2; - }else if (nr == 3 && nc == 1){ + } else if ((nr == 3) && (nc == 1)) { return 4; - }else if (nr == 3 && nc == 2){ + } else if ((nr == 3) && (nc == 2)) { return 6; - }else if (nr == 3 && nc == 3){ + } else if ((nr == 3) && (nc == 3)) { return 6; - }else if (nr == 4 && nc == 1){ + } else if ((nr == 4) && (nc == 1)) { return 6; - }else if (nr == 4 && nc == 2){ + } else if ((nr == 4) && (nc == 2)) { return 10; - }else if (nr == 4 && nc == 3){ + } else if ((nr == 4) && (nc == 3)) { return 12; - }else if (nr == 4 && nc == 4){ + } else if ((nr == 4) && (nc == 4)) { return 12; - }else{ + } else{ return 0; } } -int get_mimo_ns (gboolean chan_width, guint8 output_grouping) +static int +get_mimo_ns (gboolean chan_width, guint8 output_grouping) { int ns = 0; @@ -4189,12 +4206,13 @@ int get_mimo_ns (gboolean chan_width, guint8 output_grouping) return ns; } -int add_mimo_csi_matrices_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl) +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; + 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"); @@ -4205,8 +4223,9 @@ int add_mimo_csi_matrices_report (proto_tree *tree, tvbuff_t *tvb, int offset, m guint8 snr; snr = tvb_get_guint8(tvb, offset); - proto_tree_add_uint_format(snr_tree, hf_ieee80211_ff_mimo_csi_snr, tvb, offset, 1, snr, "Channel %d - Signal to Noise Ratio: 0x%02X", i, snr); - offset++; + proto_tree_add_uint_format(snr_tree, hf_ieee80211_ff_mimo_csi_snr, tvb, offset, 1, + snr, "Channel %d - Signal to Noise Ratio: 0x%02X", i, snr); + offset += 1; } ns = get_mimo_ns(mimo_cntrl.chan_width, mimo_cntrl.grouping); @@ -4217,12 +4236,13 @@ int add_mimo_csi_matrices_report (proto_tree *tree, tvbuff_t *tvb, int offset, m return offset - start_offset; } -int add_mimo_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl) +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; + 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"); @@ -4233,8 +4253,9 @@ int add_mimo_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int o guint8 snr; snr = tvb_get_guint8(tvb, offset); - proto_tree_add_uint_format(snr_tree, hf_ieee80211_ff_mimo_csi_snr, tvb, offset, 1, snr, "Stream %d - Signal to Noise Ratio: 0x%02X", i, snr); - offset++; + proto_tree_add_uint_format(snr_tree, hf_ieee80211_ff_mimo_csi_snr, tvb, offset, 1, + snr, "Stream %d - Signal to Noise Ratio: 0x%02X", i, snr); + offset += 1; } ns = get_mimo_ns(mimo_cntrl.chan_width, mimo_cntrl.grouping); @@ -4245,12 +4266,13 @@ int add_mimo_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int o return offset - start_offset; } -int add_mimo_compressed_beamforming_feedback_report (proto_tree *tree, tvbuff_t *tvb, int offset, mimo_control_t mimo_cntrl) +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; + 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"); @@ -4261,8 +4283,9 @@ int add_mimo_compressed_beamforming_feedback_report (proto_tree *tree, tvbuff_t guint8 snr; snr = tvb_get_guint8(tvb, offset); - proto_tree_add_uint_format(snr_tree, hf_ieee80211_ff_mimo_csi_snr, tvb, offset, 1, snr, "Stream %d - Signal to Noise Ratio: 0x%02X", i, snr); - offset++; + proto_tree_add_uint_format(snr_tree, hf_ieee80211_ff_mimo_csi_snr, tvb, offset, 1, + snr, "Stream %d - Signal to Noise Ratio: 0x%02X", i, snr); + offset += 1; } na = get_mimo_na(mimo_cntrl.nr, mimo_cntrl.nc); @@ -4279,20 +4302,20 @@ int add_mimo_compressed_beamforming_feedback_report (proto_tree *tree, tvbuff_t /* ************************************************************************* */ static void capture_ieee80211_common (const guchar * pd, int offset, int len, - packet_counts * ld, gboolean fixed_length_header, - gboolean datapad, gboolean is_ht) + packet_counts * ld, gboolean fixed_length_header, + gboolean datapad, gboolean is_ht) { guint16 fcf, hdr_length; if (!BYTES_ARE_IN_FRAME(offset, len, 2)) { - ld->other++; + ld->other += 1; return; } fcf = pletohs (&pd[offset]); - if (IS_PROTECTED(FCF_FLAGS(fcf)) && wlan_ignore_wep == WLAN_IGNORE_WEP_NO) { - ld->other++; + if (IS_PROTECTED(FCF_FLAGS(fcf)) && (wlan_ignore_wep == WLAN_IGNORE_WEP_NO)) { + ld->other += 1; return; } @@ -4309,12 +4332,12 @@ capture_ieee80211_common (const guchar * pd, int offset, int len, } else { hdr_length = find_header_length (fcf, 0, is_ht); /* adjust the header length depending on the Mesh Control field */ - if (FCF_FRAME_TYPE(fcf) == DATA_FRAME && + if ((FCF_FRAME_TYPE(fcf) == DATA_FRAME) && DATA_FRAME_IS_QOS(COMPOSE_FRAME_TYPE(fcf))) { - guint8 mesh_flags = pd[hdr_length]; - guint16 qosoff = hdr_length - 2; - qosoff -= is_ht ? 4 : 0; + guint8 mesh_flags = pd[hdr_length]; + guint16 qosoff = hdr_length - 2; + qosoff -= (is_ht ? 4 : 0); if (has_mesh_control(fcf, pletohs(&pd[qosoff]), mesh_flags)) { hdr_length += find_mesh_control_length(mesh_flags); } @@ -4354,25 +4377,25 @@ capture_ieee80211_common (const guchar * pd, int offset, int len, packet starts with 0x00 0x00 and, if so, treat it as an OLPC frame. */ if (!BYTES_ARE_IN_FRAME(offset+hdr_length, len, 2)) { - ld->other++; + ld->other += 1; return; } - if (pd[offset+hdr_length] != 0xaa && pd[offset+hdr_length+1] != 0xaa) { + if ((pd[offset+hdr_length] != 0xaa) && (pd[offset+hdr_length+1] != 0xaa)) { #if 0 /* XXX - this requires us to parse the header to find the source and destination addresses. */ - if (BYTES_ARE_IN_FRAME(offset+hdr_length, len, 12) { - /* We have two MAC addresses after the header. */ - if (memcmp(&pd[offset+hdr_length+6], pinfo->dl_src.data, 6) == 0 || - memcmp(&pd[offset+hdr_length+6], pinfo->dl_dst.data, 6) == 0) { - capture_eth (pd, offset + hdr_length, len, ld); - return; - } + if (BYTES_ARE_IN_FRAME(offset+hdr_length, len, 12)) { + /* We have two MAC addresses after the header. */ + if ((memcmp(&pd[offset+hdr_length+6], pinfo->dl_src.data, 6) == 0) || + (memcmp(&pd[offset+hdr_length+6], pinfo->dl_dst.data, 6) == 0)) { + capture_eth (pd, offset + hdr_length, len, ld); + return; + } } #endif - if (pd[offset+hdr_length] == 0xff && pd[offset+hdr_length+1] == 0xff) + if ((pd[offset+hdr_length] == 0xff) && (pd[offset+hdr_length+1] == 0xff)) capture_ipx (ld); - else if (pd[offset+hdr_length] == 0x00 && pd[offset+hdr_length+1] == 0x00) + else if ((pd[offset+hdr_length] == 0x00) && (pd[offset+hdr_length+1] == 0x00)) capture_llc (pd, offset + hdr_length + 2, len, ld); } else { @@ -4382,7 +4405,7 @@ capture_ieee80211_common (const guchar * pd, int offset, int len, } default: - ld->other++; + ld->other += 1; break; } } @@ -4433,6 +4456,7 @@ static proto_tree * get_fixed_parameter_tree (proto_tree * tree, tvbuff_t *tvb, int start, int size) { proto_item *fixed_fields; + fixed_fields = proto_tree_add_uint_format (tree, hf_ieee80211_fixed_parameters, tvb, start, size, size, "Fixed parameters (%d bytes)", @@ -4470,76 +4494,76 @@ dissect_vendor_action_marvell(proto_tree *tree, tvbuff_t *tvb, int offset) octet = tvb_get_guint8(tvb, offset); proto_tree_add_item (tree, hf_ieee80211_ff_marvell_action_type, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; switch (octet) { case MRVL_ACTION_MESH_MANAGEMENT: octet = tvb_get_guint8(tvb, offset); proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_action_code, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; switch (octet) { case MRVL_MESH_MGMT_ACTION_RREQ: proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_length, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_hopcount, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_ttl, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_rreqid, tvb, offset, 4, ENC_LITTLE_ENDIAN); - offset+= 4; + offset += 4; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_sa, tvb, offset, 6, ENC_NA); - offset+= 6; + offset += 6; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_ssn, tvb, offset, 4, ENC_LITTLE_ENDIAN); - offset+= 4; + offset += 4; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_lifetime, tvb, offset, 4, ENC_LITTLE_ENDIAN); - offset+= 4; + offset += 4; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_metric, tvb, offset, 4, ENC_LITTLE_ENDIAN); - offset+= 4; + offset += 4; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_dstcount, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_da, tvb, offset, 6, ENC_NA); - offset+= 6; + offset += 6; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_dsn, tvb, offset, 4, ENC_LITTLE_ENDIAN); - offset+= 4; + offset += 4; break; case MRVL_MESH_MGMT_ACTION_RREP: proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_length, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_hopcount, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_ttl, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_da, tvb, offset, 6, ENC_NA); - offset+= 6; + offset += 6; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_dsn, tvb, offset, 4, ENC_LITTLE_ENDIAN); - offset+= 4; + offset += 4; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_lifetime, tvb, offset, 4, ENC_LITTLE_ENDIAN); - offset+= 4; + offset += 4; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_metric, tvb, offset, 4, ENC_LITTLE_ENDIAN); - offset+= 4; + offset += 4; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_sa, tvb, offset, 6, ENC_NA); - offset+= 6; + offset += 6; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_ssn, tvb, offset, 4, ENC_LITTLE_ENDIAN); - offset+= 4; + offset += 4; break; case MRVL_MESH_MGMT_ACTION_RERR: proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_length, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_dstcount, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_da, tvb, offset, 6, ENC_NA); - offset+= 6; + offset += 6; proto_tree_add_item (tree, hf_ieee80211_ff_marvell_mesh_mgt_dsn, tvb, offset, 4, ENC_LITTLE_ENDIAN); - offset+= 4; + offset += 4; break; default: break; @@ -4556,7 +4580,7 @@ static guint dissect_advertisement_protocol(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset, gboolean *anqp) { - guint8 tag_no, tag_len, left; + guint8 tag_no, tag_len, left; proto_item *item = NULL, *adv_item; proto_tree *adv_tree, *adv_tuple_tree; @@ -4608,21 +4632,21 @@ dissect_advertisement_protocol(packet_info *pinfo, proto_tree *tree, proto_tree_add_item(adv_tuple_tree, hf_ieee80211_tag_adv_proto_pame_bi, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; left--; proto_tree_add_item(adv_tuple_tree, hf_ieee80211_tag_adv_proto_id, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; left--; - if (id == 0 && anqp) + if ((id == 0) && anqp) *anqp = TRUE; if (id == 221) { /* Vendor specific */ guint8 len = tvb_get_guint8(tvb, offset); - offset++; - left--; + offset += 1; + left -= 1; if (len > left) { expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Vendor specific info length error"); @@ -4631,7 +4655,7 @@ dissect_advertisement_protocol(packet_info *pinfo, proto_tree *tree, proto_tree_add_text(adv_tuple_tree, tvb, offset, len, "Vendor Specific Advertisement Protocol info"); offset += len; - left -= len; + left -= len; } } @@ -4646,24 +4670,24 @@ dissect_advertisement_protocol(packet_info *pinfo, proto_tree *tree, static void dissect_anqp_query_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) { - while (offset + 2 <= end) { - proto_tree_add_item(tree, hf_ieee80211_ff_anqp_query_id, - tvb, offset, 2, ENC_LITTLE_ENDIAN); - offset += 2; - } - if (offset != end) { - expert_add_info_format(g_pinfo, tree, PI_MALFORMED, PI_ERROR, - "Unexpected ANQP Query list format"); - } + while (offset + 2 <= end) { + proto_tree_add_item(tree, hf_ieee80211_ff_anqp_query_id, + tvb, offset, 2, ENC_LITTLE_ENDIAN); + offset += 2; + } + if (offset != end) { + expert_add_info_format(g_pinfo, tree, PI_MALFORMED, PI_ERROR, + "Unexpected ANQP Query list format"); + } } static void dissect_anqp_capab_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) { - guint16 id, len; + guint16 id, len; proto_item *item; proto_tree *vtree; - guint32 oui; + guint32 oui; while (offset + 2 <= end) { id = tvb_get_letohs(tvb, offset); @@ -4676,7 +4700,7 @@ dissect_anqp_capab_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) proto_tree_add_item(vtree, hf_ieee80211_ff_anqp_capability_vlen, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; - if (len < 3 || offset + len > end) { + if ((len < 3) || ((offset + len) > end)) { expert_add_info_format(g_pinfo, tree, PI_MALFORMED, PI_ERROR, "Invalid vendor-specific ANQP capability"); return; @@ -4684,7 +4708,7 @@ dissect_anqp_capab_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) oui = tvb_get_ntoh24(tvb, offset); proto_tree_add_item(vtree, hf_ieee80211_tag_oui, tvb, offset, 3, ENC_NA); offset += 3; - len -= 3; + len -= 3; switch (oui) { default: @@ -4703,22 +4727,24 @@ dissect_anqp_capab_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) } static const value_string venue_group_vals[] = { - { 0, "Unspecified" }, - { 1, "Assembly" }, - { 2, "Business" }, - { 3, "Educational" }, - { 4, "Factory and Industrial" }, - { 5, "Institutional" }, - { 6, "Mercantile" }, - { 7, "Residential" }, - { 8, "Storage" }, - { 9, "Utility and Miscellaneous" }, + { 0, "Unspecified" }, + { 1, "Assembly" }, + { 2, "Business" }, + { 3, "Educational" }, + { 4, "Factory and Industrial" }, + { 5, "Institutional" }, + { 6, "Mercantile" }, + { 7, "Residential" }, + { 8, "Storage" }, + { 9, "Utility and Miscellaneous" }, { 10, "Vehicular" }, { 11, "Outdoor" }, { 0, NULL } }; +static value_string_ext venue_group_vals_ext = VALUE_STRING_EXT_INIT(venue_group_vals); -static void dissect_venue_info(proto_tree *tree, tvbuff_t *tvb, int offset) +static void +dissect_venue_info(proto_tree *tree, tvbuff_t *tvb, int offset) { proto_tree_add_item(tree, hf_ieee80211_ff_venue_info_group, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -4737,8 +4763,8 @@ dissect_venue_name_info(proto_tree *tree, tvbuff_t *tvb, int offset, int end) guint8 vlen = tvb_get_guint8(tvb, offset); item = proto_tree_add_item(tree, hf_ieee80211_ff_anqp_venue_length, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; - if (vlen > end - offset || vlen < 3) { + offset += 1; + if ((vlen > (end - offset)) || (vlen < 3)) { expert_add_info_format(g_pinfo, item, PI_MALFORMED, PI_ERROR, "Invalid Venue Name Duple length"); break; @@ -4766,7 +4792,7 @@ dissect_network_auth_type(proto_tree *tree, tvbuff_t *tvb, int offset, int end) guint16 len; proto_tree_add_item(tree, hf_ieee80211_ff_anqp_nw_auth_type_indicator, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; len = tvb_get_letohs(tvb, offset); proto_tree_add_item(tree, hf_ieee80211_ff_anqp_nw_auth_type_url_len, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -4778,9 +4804,11 @@ dissect_network_auth_type(proto_tree *tree, tvbuff_t *tvb, int offset, int end) } } -static void add_manuf(proto_item *item, tvbuff_t *tvb, int offset) +static void +add_manuf(proto_item *item, tvbuff_t *tvb, int offset) { const gchar *manuf_name; + manuf_name = tvb_get_manuf_name_if_known(tvb, offset); if (manuf_name == NULL) return; @@ -4792,15 +4820,15 @@ dissect_roaming_consortium_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) { proto_item *item; - guint8 len; + guint8 len; while (offset < end) { len = tvb_get_guint8(tvb, offset); item = proto_tree_add_item(tree, hf_ieee80211_ff_anqp_roaming_consortium_oi_len, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; - if (len > end - offset || len < 3) { + offset += 1; + if ((len > (end - offset)) || (len < 3)) { expert_add_info_format(g_pinfo, item, PI_MALFORMED, PI_ERROR, "Invalid Roaming Consortium OI"); break; @@ -4849,12 +4877,12 @@ static const value_string nai_realm_encoding_vals[] = { }; static const value_string nai_realm_auth_param_id_vals[] = { - { 1, "Expanded EAP Method" }, - { 2, "Non-EAP Inner Authentication Type" }, - { 3, "Inner Authentication EAP Method Type" }, - { 4, "Expanded Inner EAP Method" }, - { 5, "Credential Type" }, - { 6, "Tunneled EAP Method Credential Type" }, + { 1, "Expanded EAP Method" }, + { 2, "Non-EAP Inner Authentication Type" }, + { 3, "Inner Authentication EAP Method Type" }, + { 4, "Expanded Inner EAP Method" }, + { 5, "Credential Type" }, + { 6, "Tunneled EAP Method Credential Type" }, { 221, "Vendor Specific" }, { 0, NULL } }; @@ -4862,13 +4890,13 @@ static const value_string nai_realm_auth_param_id_vals[] = { static void dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) { - guint16 count, len; + guint16 count, len; proto_item *item, *r_item; - int f_end, eap_end; - guint8 nai_len, eap_count, eap_len, auth_param_count, auth_param_len; - guint8 auth_param_id; + int f_end, eap_end; + guint8 nai_len, eap_count, eap_len, auth_param_count, auth_param_len; + guint8 auth_param_id; proto_tree *realm_tree, *eap_tree; - guint8 *realm; + guint8 *realm; count = tvb_get_letohs(tvb, offset); proto_tree_add_item(tree, hf_ieee80211_ff_anqp_nai_realm_count, @@ -4890,12 +4918,12 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) f_end = offset + len; proto_tree_add_item(realm_tree, hf_ieee80211_ff_anqp_nai_realm_encoding, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; nai_len = tvb_get_guint8(tvb, offset); item = proto_tree_add_item(realm_tree, hf_ieee80211_ff_anqp_nai_realm_length, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; if (offset + nai_len > f_end) { expert_add_info_format(g_pinfo, item, PI_MALFORMED, PI_ERROR, "Invalid NAI Realm Data"); @@ -4911,7 +4939,7 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) eap_count = tvb_get_guint8(tvb, offset); proto_tree_add_item(realm_tree, hf_ieee80211_ff_anqp_nai_realm_eap_count, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; while (eap_count > 0) { eap_len = tvb_get_guint8(tvb, offset); @@ -4923,7 +4951,7 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) item = proto_tree_add_item(eap_tree, hf_ieee80211_ff_anqp_nai_realm_eap_len, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; if (offset + eap_len > f_end) { expert_add_info_format(g_pinfo, item, PI_MALFORMED, PI_ERROR, "Invalid EAP Method subfield"); @@ -4931,35 +4959,35 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) } proto_item_append_text(eap_tree, ": %s", - val_to_str(tvb_get_guint8(tvb, offset), - eap_type_vals, "Unknown (%d)")); + val_to_str_ext(tvb_get_guint8(tvb, offset), + &eap_type_vals_ext, "Unknown (%d)")); proto_tree_add_item(eap_tree, hf_ieee80211_ff_anqp_nai_realm_eap_method, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; auth_param_count = tvb_get_guint8(tvb, offset); proto_tree_add_item(eap_tree, hf_ieee80211_ff_anqp_nai_realm_auth_param_count, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; while (auth_param_count > 0) { auth_param_id = tvb_get_guint8(tvb, offset); proto_tree_add_item(eap_tree, hf_ieee80211_ff_anqp_nai_realm_auth_param_id, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; auth_param_len = tvb_get_guint8(tvb, offset); proto_tree_add_item(eap_tree, hf_ieee80211_ff_anqp_nai_realm_auth_param_len, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; item = proto_tree_add_item( eap_tree, hf_ieee80211_ff_anqp_nai_realm_auth_param_value, tvb, offset, auth_param_len, ENC_NA); - if (auth_param_id == 3 && auth_param_len == 1) { + if ((auth_param_id == 3) && (auth_param_len == 1)) { guint8 inner_method = tvb_get_guint8(tvb, offset); const char *str; - str = val_to_str(inner_method, eap_type_vals, "Unknown (%d)"); + str = val_to_str_ext(inner_method, &eap_type_vals_ext, "Unknown (%d)"); proto_item_append_text(eap_tree, " / %s", str); proto_item_append_text(item, " - %s", str); @@ -4981,26 +5009,26 @@ dissect_nai_realm_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) static void dissect_3gpp_cellular_network_info(proto_tree *tree, tvbuff_t *tvb, int offset) { - guint8 iei, num; + guint8 iei, num; proto_item *item; /* See Annex A of 3GPP TS 24.234 v8.1.0 for description */ proto_tree_add_item(tree, hf_ieee80211_3gpp_gc_gud, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_3gpp_gc_udhl, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; iei = tvb_get_guint8(tvb, offset); item = proto_tree_add_item(tree, hf_ieee80211_3gpp_gc_iei, tvb, offset, 1, ENC_BIG_ENDIAN); if (iei == 0) proto_item_append_text(item, " (PLMN List)"); else return; - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_3gpp_gc_plmn_len, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; num = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_ieee80211_3gpp_gc_num_plmns, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; while (num > 0) { guint8 o1, o2, o3; if (tvb_reported_length_remaining(tvb, offset) < 3) @@ -5028,7 +5056,7 @@ dissect_domain_name_list(proto_tree *tree, tvbuff_t *tvb, int offset, int end) len = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_ieee80211_ff_anqp_domain_name_len, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_ff_anqp_domain_name, tvb, offset, len, ENC_ASCII|ENC_NA); offset += len; @@ -5039,9 +5067,9 @@ static int dissect_anqp_info(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean request, int idx) { - guint16 id, len; - guint32 oui; - guint8 subtype; + guint16 id, len; + guint32 oui; + guint8 subtype; proto_item *item; item = proto_tree_add_item(tree, hf_ieee80211_ff_anqp_info_id, @@ -5050,10 +5078,9 @@ dissect_anqp_info(proto_tree *tree, tvbuff_t *tvb, int offset, if (id != ANQP_INFO_ANQP_VENDOR_SPECIFIC_LIST) { if (idx == 0) { proto_item_append_text(tree, " - %s", - val_to_str(id, anqp_info_id_vals, - "Unknown (%u)")); + val_to_str_ext(id, &anqp_info_id_vals_ext, "Unknown (%u)")); col_append_fstr(g_pinfo->cinfo, COL_INFO, " %s", - val_to_str(id, anqp_info_id_vals, "Unknown (%u)")); + val_to_str_ext(id, &anqp_info_id_vals_ext, "Unknown (%u)")); } else if (idx == 1) { proto_item_append_text(tree, ", .."); col_append_fstr(g_pinfo->cinfo, COL_INFO, ", .."); @@ -5146,7 +5173,7 @@ dissect_anqp(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean request) request ? "Req" : "Resp"); while (tvb_reported_length_remaining(tvb, offset) > 0) { offset += dissect_anqp_info(tree, tvb, offset, request, idx); - idx++; + idx += 1; } } @@ -5154,8 +5181,8 @@ static guint dissect_gas_initial_request(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean anqp) { - guint16 req_len; - int start = offset; + guint16 req_len; + int start = offset; proto_item *item; proto_tree *query; @@ -5191,8 +5218,8 @@ static guint dissect_gas_initial_response(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean anqp) { - guint16 resp_len; - int start = offset; + guint16 resp_len; + int start = offset; proto_item *item; proto_tree *query; @@ -5224,10 +5251,11 @@ dissect_gas_initial_response(proto_tree *tree, tvbuff_t *tvb, int offset, return offset - start; } -static GHashTable *gas_fragment_table = NULL; +static GHashTable *gas_fragment_table = NULL; static GHashTable *gas_reassembled_table = NULL; -static void ieee80211_gas_reassembly_init(void) +static void +ieee80211_gas_reassembly_init(void) { fragment_table_init(&gas_fragment_table); reassembled_table_init(&gas_reassembled_table); @@ -5270,8 +5298,8 @@ dissect_gas_comeback_response(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean anqp, guint8 frag, gboolean more, guint8 dialog_token) { - guint16 resp_len; - int start = offset; + guint16 resp_len; + int start = offset; proto_item *item; proto_tree *query; @@ -5292,7 +5320,7 @@ dissect_gas_comeback_response(proto_tree *tree, tvbuff_t *tvb, int offset, offset += 2; /* Query Response (optional) */ if (resp_len) { - if (anqp && frag == 0 && !more) + if (anqp && (frag == 0) && !more) dissect_anqp(query, tvb, offset, FALSE); else { fragment_data *frag_msg; @@ -5573,16 +5601,16 @@ add_ff_multihop_action(proto_tree *tree, tvbuff_t *tvb, int offset) static guint add_ff_mesh_control(proto_tree *tree, tvbuff_t *tvb, int offset) { - int start = offset; + int start = offset; guint8 flags; proto_tree_add_item(tree, hf_ieee80211_ff_mesh_flags, tvb, offset, 1, ENC_LITTLE_ENDIAN); flags = tvb_get_guint8(tvb, offset); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_ff_mesh_ttl, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_ff_mesh_sequence, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; @@ -5938,17 +5966,17 @@ add_ff_action_spectrum_mgmt(proto_tree *tree, tvbuff_t *tvb, int offset) case SM_ACTION_MEASUREMENT_REPORT: case SM_ACTION_TPC_REQUEST: case SM_ACTION_TPC_REPORT: - add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); + add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); add_fixed_field(tree, tvb, offset + 1, FIELD_ACTION_CODE); add_fixed_field(tree, tvb, offset + 2, FIELD_DIALOG_TOKEN); return 3; case SM_ACTION_CHAN_SWITCH_ANNC: case SM_ACTION_EXT_CHAN_SWITCH_ANNC: - add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); + add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); add_fixed_field(tree, tvb, offset + 1, FIELD_ACTION_CODE); return 2; default: - add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); + add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); add_fixed_field(tree, tvb, offset + 1, FIELD_ACTION_CODE); return 2; } @@ -5970,17 +5998,17 @@ add_ff_action_qos(proto_tree *tree, tvbuff_t *tvb, int offset) add_fixed_field(tree, tvb, offset + 3, FIELD_STATUS_CODE); return 5; case SM_ACTION_DELTS: - add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); + add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); add_fixed_field(tree, tvb, offset + 1, FIELD_QOS_ACTION_CODE); add_fixed_field(tree, tvb, offset + 2, FIELD_QOS_TS_INFO); add_fixed_field(tree, tvb, offset + 5, FIELD_REASON_CODE); return 7; case SM_ACTION_QOS_SCHEDULE: - add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); + add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); add_fixed_field(tree, tvb, offset + 1, FIELD_QOS_ACTION_CODE); return 2; default: - add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); + add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); return 2; } } @@ -5990,18 +6018,18 @@ add_ff_action_dls(proto_tree *tree, tvbuff_t *tvb, int offset) { switch (tvb_get_guint8(tvb, offset + 1)) { case SM_ACTION_DLS_REQUEST: - add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); - add_fixed_field(tree, tvb, offset + 1, FIELD_DLS_ACTION_CODE); - add_fixed_field(tree, tvb, offset + 2, FIELD_DST_MAC_ADDR); - add_fixed_field(tree, tvb, offset + 8, FIELD_SRC_MAC_ADDR); + add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); + add_fixed_field(tree, tvb, offset + 1, FIELD_DLS_ACTION_CODE); + add_fixed_field(tree, tvb, offset + 2, FIELD_DST_MAC_ADDR); + add_fixed_field(tree, tvb, offset + 8, FIELD_SRC_MAC_ADDR); add_fixed_field(tree, tvb, offset + 14, FIELD_CAP_INFO); add_fixed_field(tree, tvb, offset + 16, FIELD_DLS_TIMEOUT); return 18; case SM_ACTION_DLS_RESPONSE: add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); - add_fixed_field(tree, tvb, offset + 1, FIELD_DLS_ACTION_CODE); - add_fixed_field(tree, tvb, offset + 2, FIELD_STATUS_CODE); - add_fixed_field(tree, tvb, offset + 4, FIELD_DST_MAC_ADDR); + add_fixed_field(tree, tvb, offset + 1, FIELD_DLS_ACTION_CODE); + add_fixed_field(tree, tvb, offset + 2, FIELD_STATUS_CODE); + add_fixed_field(tree, tvb, offset + 4, FIELD_DST_MAC_ADDR); add_fixed_field(tree, tvb, offset + 10, FIELD_SRC_MAC_ADDR); if (!hf_ieee80211_ff_status_code) { add_fixed_field(tree, tvb, offset + 16, FIELD_CAP_INFO); @@ -6009,9 +6037,9 @@ add_ff_action_dls(proto_tree *tree, tvbuff_t *tvb, int offset) return 16; case SM_ACTION_DLS_TEARDOWN: add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); - add_fixed_field(tree, tvb, offset + 1, FIELD_DLS_ACTION_CODE); - add_fixed_field(tree, tvb, offset + 2, FIELD_DST_MAC_ADDR); - add_fixed_field(tree, tvb, offset + 8, FIELD_SRC_MAC_ADDR); + add_fixed_field(tree, tvb, offset + 1, FIELD_DLS_ACTION_CODE); + add_fixed_field(tree, tvb, offset + 2, FIELD_DST_MAC_ADDR); + add_fixed_field(tree, tvb, offset + 8, FIELD_SRC_MAC_ADDR); add_fixed_field(tree, tvb, offset + 14, FIELD_REASON_CODE); return 16; default: @@ -6056,17 +6084,17 @@ add_ff_action_block_ack(proto_tree *tree, tvbuff_t *tvb, int offset) static guint add_ff_action_public(proto_tree *tree, tvbuff_t *tvb, int offset) { - guint start = offset; - guint32 oui; - guint8 code; - guint8 subtype; + guint start = offset; + guint32 oui; + guint8 code; + guint8 subtype; gboolean anqp; - guint8 dialog_token; - guint8 frag; + guint8 dialog_token; + guint8 frag; gboolean more; offset += add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); - code = tvb_get_guint8(tvb, offset); + code = tvb_get_guint8(tvb, offset); offset += add_fixed_field(tree, tvb, offset, FIELD_PA_ACTION_CODE); switch (code) { @@ -6078,7 +6106,7 @@ add_ff_action_public(proto_tree *tree, tvbuff_t *tvb, int offset) case OUI_WFA: subtype = tvb_get_guint8(tvb, offset); proto_tree_add_text(tree, tvb, offset, 1, "Subtype %u", subtype); - offset++; + offset += 1; if (subtype == WFA_SUBTYPE_P2P) { offset = dissect_wifi_p2p_public_action(g_pinfo, tree, tvb, offset); } @@ -6132,11 +6160,11 @@ add_ff_action_public(proto_tree *tree, tvbuff_t *tvb, int offset) static guint add_ff_action_fast_bss_transition(proto_tree *tree, tvbuff_t *tvb, int offset) { - guint start = offset; + guint start = offset; guint8 code; offset += add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); - code = tvb_get_guint8(tvb, offset); + code = tvb_get_guint8(tvb, offset); offset += add_fixed_field(tree, tvb, offset, FIELD_FT_ACTION_CODE); switch (code) { @@ -6170,11 +6198,11 @@ add_ff_action_fast_bss_transition(proto_tree *tree, tvbuff_t *tvb, int offset) static guint add_ff_action_sa_query(proto_tree *tree, tvbuff_t *tvb, int offset) { - guint start = offset; + guint start = offset; guint8 code; offset += add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); - code = tvb_get_guint8(tvb, offset); + code = tvb_get_guint8(tvb, offset); offset += add_fixed_field(tree, tvb, offset, FIELD_SA_QUERY_ACTION_CODE); switch (code) { @@ -6193,6 +6221,7 @@ static guint add_ff_action_mesh(proto_tree *tree, tvbuff_t *tvb, int offset) { guint length; + offset += add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); offset += add_fixed_field(tree, tvb, offset, FIELD_MESH_ACTION); /* The only fixed fields are the category and mesh action. The rest are IEs. @@ -6210,6 +6239,7 @@ static guint add_ff_action_multihop(proto_tree *tree, tvbuff_t *tvb, int offset) { guint start = offset; + offset += add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); offset += add_fixed_field(tree, tvb, offset, FIELD_MULTIHOP_ACTION); offset += add_fixed_field(tree, tvb, offset, FIELD_MESH_CONTROL); @@ -6240,9 +6270,9 @@ add_ff_action_self_protected(proto_tree *tree, tvbuff_t *tvb, int offset) static guint wnm_bss_trans_mgmt_req(proto_tree *tree, tvbuff_t *tvb, int offset) { - int start = offset; + int start = offset; guint8 mode; - gint left; + gint left; offset += add_fixed_field(tree, tvb, offset, FIELD_DIALOG_TOKEN); @@ -6257,7 +6287,7 @@ wnm_bss_trans_mgmt_req(proto_tree *tree, tvbuff_t *tvb, int offset) tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(tree, hf_ieee80211_ff_request_mode_ess_disassoc_imminent, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_ff_disassoc_timer, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -6265,7 +6295,7 @@ wnm_bss_trans_mgmt_req(proto_tree *tree, tvbuff_t *tvb, int offset) proto_tree_add_item(tree, hf_ieee80211_ff_validity_interval, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; if (mode & 0x08) { proto_tree_add_text(tree, tvb, offset, 8, "BSS Termination Duration"); @@ -6277,7 +6307,7 @@ wnm_bss_trans_mgmt_req(proto_tree *tree, tvbuff_t *tvb, int offset) url_len = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_ieee80211_ff_url_len, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_ff_url, tvb, offset, url_len, ENC_ASCII|ENC_NA); offset += url_len; @@ -6297,10 +6327,10 @@ static guint add_ff_action_wnm(proto_tree *tree, tvbuff_t *tvb, int offset) { guint8 code; - guint start = offset; + guint start = offset; offset += add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); - code = tvb_get_guint8(tvb, offset); + code = tvb_get_guint8(tvb, offset); offset += add_fixed_field(tree, tvb, offset, FIELD_WNM_ACTION_CODE); switch (code) { case WNM_BSS_TRANS_MGMT_REQ: @@ -6314,9 +6344,9 @@ add_ff_action_wnm(proto_tree *tree, tvbuff_t *tvb, int offset) static guint add_ff_action_tdls(proto_tree *tree, tvbuff_t *tvb, int offset) { - guint8 code; + guint8 code; guint16 status; - guint start = offset; + guint start = offset; offset += add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); code = tvb_get_guint8(tvb, offset); @@ -6400,14 +6430,14 @@ add_ff_action_mgmt_notification(proto_tree *tree, tvbuff_t *tvb, int offset) static guint add_ff_action_vendor_specific(proto_tree *tree, tvbuff_t *tvb, int offset) { - guint start = offset; + guint start = offset; guint32 oui; - guint8 subtype; + guint8 subtype; offset += add_fixed_field(tree, tvb, offset, FIELD_CATEGORY_CODE); oui = tvb_get_ntoh24(tvb, offset); proto_tree_add_item(tree, hf_ieee80211_tag_oui, tvb, offset, 3, ENC_NA); - offset +=3; + offset += 3; switch (oui) { case OUI_MARVELL: offset = dissect_vendor_action_marvell(tree, tvb, offset); @@ -6415,7 +6445,7 @@ add_ff_action_vendor_specific(proto_tree *tree, tvbuff_t *tvb, int offset) case OUI_WFA: subtype = tvb_get_guint8(tvb, offset); proto_tree_add_text(tree, tvb, offset, 1, "Subtype %u", subtype); - offset++; + offset += 1; if (subtype == WFA_SUBTYPE_P2P) { offset = dissect_wifi_p2p_action(tree, tvb, offset); } @@ -6431,7 +6461,7 @@ add_ff_action_vendor_specific(proto_tree *tree, tvbuff_t *tvb, int offset) static guint add_ff_action_ht(proto_tree *tree, tvbuff_t *tvb, int offset) { - guint start = offset; + guint start = offset; guint8 n_sta, i; mimo_control_t mimo_cntrl; @@ -6588,8 +6618,8 @@ add_ff_tdls_action_code(proto_tree *tree, tvbuff_t *tvb, int offset) guint8 code; code = tvb_get_guint8(tvb, offset); col_set_str(g_pinfo->cinfo, COL_INFO, - val_to_str_const(code, tdls_action_codes, - "Unknown TDLS Action")); + val_to_str_ext_const(code, &tdls_action_codes_ext, + "Unknown TDLS Action")); proto_tree_add_item(tree, hf_ieee80211_ff_tdls_action_code, tvb, offset, 1, ENC_BIG_ENDIAN); return 1; @@ -6615,12 +6645,11 @@ static guint add_ff_wnm_action_code(proto_tree *tree, tvbuff_t *tvb, int offset) { guint8 code; + code = tvb_get_guint8(tvb, offset); col_set_str(g_pinfo->cinfo, COL_INFO, - val_to_str_const(code, wnm_action_codes, - "Unknown WNM Action")); - proto_tree_add_item(tree, hf_ieee80211_ff_wnm_action_code, tvb, offset, 1, - ENC_BIG_ENDIAN); + val_to_str_ext_const(code, &wnm_action_codes_ext, "Unknown WNM Action")); + proto_tree_add_item(tree, hf_ieee80211_ff_wnm_action_code, tvb, offset, 1, ENC_BIG_ENDIAN); return 1; } @@ -6632,70 +6661,69 @@ struct ieee80211_fixed_field_dissector { #define FF_FIELD(f, func) { FIELD_ ## f, add_ff_ ## func } static const struct ieee80211_fixed_field_dissector ff_dissectors[] = { - FF_FIELD(TIMESTAMP, timestamp), - FF_FIELD(BEACON_INTERVAL, beacon_interval), - FF_FIELD(CAP_INFO, cap_info), - FF_FIELD(AUTH_ALG, auth_alg), - FF_FIELD(AUTH_TRANS_SEQ, auth_trans_seq), - FF_FIELD(CURRENT_AP_ADDR, current_ap_addr), - FF_FIELD(LISTEN_IVAL, listen_ival), - FF_FIELD(REASON_CODE, reason_code), - FF_FIELD(ASSOC_ID, assoc_id), - FF_FIELD(STATUS_CODE, status_code), - FF_FIELD(CATEGORY_CODE, category_code), - FF_FIELD(ACTION_CODE, action_code), - FF_FIELD(DIALOG_TOKEN, dialog_token), - FF_FIELD(WME_ACTION_CODE, wme_action_code), - FF_FIELD(WME_STATUS_CODE, wme_status_code), - FF_FIELD(QOS_ACTION_CODE, qos_action_code), - FF_FIELD(BLOCK_ACK_ACTION_CODE, block_ack_action_code), - FF_FIELD(BLOCK_ACK_PARAM, block_ack_param), - FF_FIELD(BLOCK_ACK_TIMEOUT, block_ack_timeout), - FF_FIELD(BLOCK_ACK_SSC, block_ack_ssc), - FF_FIELD(QOS_TS_INFO, qos_ts_info), - FF_FIELD(MESH_ACTION, mesh_action), - FF_FIELD(MULTIHOP_ACTION, multihop_action), - FF_FIELD(MESH_CONTROL, mesh_control), - FF_FIELD(SELFPROT_ACTION, selfprot_action), - FF_FIELD(DLS_ACTION_CODE, dls_action_code), - FF_FIELD(DST_MAC_ADDR, dst_mac_addr), - FF_FIELD(SRC_MAC_ADDR, src_mac_addr), - FF_FIELD(DLS_TIMEOUT, dls_timeout), - FF_FIELD(DELBA_PARAM_SET, delba_param_set), - FF_FIELD(MAX_REG_PWR, max_reg_pwr), - FF_FIELD(MEASUREMENT_PILOT_INT, measurement_pilot_int), - FF_FIELD(COUNTRY_STR, country_str), - FF_FIELD(MAX_TX_PWR, max_tx_pwr), - FF_FIELD(TX_PWR_USED, tx_pwr_used), - FF_FIELD(TRANSCEIVER_NOISE_FLOOR, transceiver_noise_floor), - FF_FIELD(CHANNEL_WIDTH, channel_width), - FF_FIELD(QOS_INFO_AP, qos_info_ap), - FF_FIELD(QOS_INFO_STA, qos_info_sta), - FF_FIELD(SM_PWR_CNTRL, sm_pwr_cntrl), - FF_FIELD(PCO_PHASE_CNTRL, pco_phase_cntrl), - FF_FIELD(PSMP_PARAM_SET, psmp_param_set), - FF_FIELD(MIMO_CNTRL, mimo_cntrl), - FF_FIELD(ANT_SELECTION, ant_selection), - FF_FIELD(EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT, - extended_channel_switch_announcement), - FF_FIELD(HT_INFORMATION, ht_information), - FF_FIELD(HT_ACTION_CODE, ht_action_code), - FF_FIELD(PSMP_STA_INFO, psmp_sta_info), - FF_FIELD(SCHEDULE_INFO, schedule_info), - FF_FIELD(PA_ACTION_CODE, pa_action_code), - FF_FIELD(ACTION, action), - FF_FIELD(FT_ACTION_CODE, ft_action_code), - FF_FIELD(STA_ADDRESS, sta_address), - FF_FIELD(TARGET_AP_ADDRESS, target_ap_address), - FF_FIELD(GAS_COMEBACK_DELAY, gas_comeback_delay), - FF_FIELD(GAS_FRAGMENT_ID, gas_fragment_id), - FF_FIELD(SA_QUERY_ACTION_CODE, sa_query_action_code), - FF_FIELD(TRANSACTION_ID, transaction_id), - FF_FIELD(TDLS_ACTION_CODE, tdls_action_code), - FF_FIELD(TARGET_CHANNEL, target_channel), - FF_FIELD(REGULATORY_CLASS, regulatory_class), - FF_FIELD(WNM_ACTION_CODE, wnm_action_code), - { -1, NULL } + FF_FIELD(TIMESTAMP , timestamp), + FF_FIELD(BEACON_INTERVAL , beacon_interval), + FF_FIELD(CAP_INFO , cap_info), + FF_FIELD(AUTH_ALG , auth_alg), + FF_FIELD(AUTH_TRANS_SEQ , auth_trans_seq), + FF_FIELD(CURRENT_AP_ADDR , current_ap_addr), + FF_FIELD(LISTEN_IVAL , listen_ival), + FF_FIELD(REASON_CODE , reason_code), + FF_FIELD(ASSOC_ID , assoc_id), + FF_FIELD(STATUS_CODE , status_code), + FF_FIELD(CATEGORY_CODE , category_code), + FF_FIELD(ACTION_CODE , action_code), + FF_FIELD(DIALOG_TOKEN , dialog_token), + FF_FIELD(WME_ACTION_CODE , wme_action_code), + FF_FIELD(WME_STATUS_CODE , wme_status_code), + FF_FIELD(QOS_ACTION_CODE , qos_action_code), + FF_FIELD(BLOCK_ACK_ACTION_CODE , block_ack_action_code), + FF_FIELD(BLOCK_ACK_PARAM , block_ack_param), + FF_FIELD(BLOCK_ACK_TIMEOUT , block_ack_timeout), + FF_FIELD(BLOCK_ACK_SSC , block_ack_ssc), + FF_FIELD(QOS_TS_INFO , qos_ts_info), + FF_FIELD(MESH_ACTION , mesh_action), + FF_FIELD(MULTIHOP_ACTION , multihop_action), + FF_FIELD(MESH_CONTROL , mesh_control), + FF_FIELD(SELFPROT_ACTION , selfprot_action), + FF_FIELD(DLS_ACTION_CODE , dls_action_code), + FF_FIELD(DST_MAC_ADDR , dst_mac_addr), + FF_FIELD(SRC_MAC_ADDR , src_mac_addr), + FF_FIELD(DLS_TIMEOUT , dls_timeout), + FF_FIELD(DELBA_PARAM_SET , delba_param_set), + FF_FIELD(MAX_REG_PWR , max_reg_pwr), + FF_FIELD(MEASUREMENT_PILOT_INT , measurement_pilot_int), + FF_FIELD(COUNTRY_STR , country_str), + FF_FIELD(MAX_TX_PWR , max_tx_pwr), + FF_FIELD(TX_PWR_USED , tx_pwr_used), + FF_FIELD(TRANSCEIVER_NOISE_FLOOR , transceiver_noise_floor), + FF_FIELD(CHANNEL_WIDTH , channel_width), + FF_FIELD(QOS_INFO_AP , qos_info_ap), + FF_FIELD(QOS_INFO_STA , qos_info_sta), + FF_FIELD(SM_PWR_CNTRL , sm_pwr_cntrl), + FF_FIELD(PCO_PHASE_CNTRL , pco_phase_cntrl), + FF_FIELD(PSMP_PARAM_SET , psmp_param_set), + FF_FIELD(MIMO_CNTRL , mimo_cntrl), + FF_FIELD(ANT_SELECTION , ant_selection), + FF_FIELD(EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT , extended_channel_switch_announcement) , + FF_FIELD(HT_INFORMATION , ht_information), + FF_FIELD(HT_ACTION_CODE , ht_action_code), + FF_FIELD(PSMP_STA_INFO , psmp_sta_info), + FF_FIELD(SCHEDULE_INFO , schedule_info), + FF_FIELD(PA_ACTION_CODE , pa_action_code), + FF_FIELD(ACTION , action), + FF_FIELD(FT_ACTION_CODE , ft_action_code), + FF_FIELD(STA_ADDRESS , sta_address), + FF_FIELD(TARGET_AP_ADDRESS , target_ap_address), + FF_FIELD(GAS_COMEBACK_DELAY , gas_comeback_delay), + FF_FIELD(GAS_FRAGMENT_ID , gas_fragment_id), + FF_FIELD(SA_QUERY_ACTION_CODE , sa_query_action_code), + FF_FIELD(TRANSACTION_ID , transaction_id), + FF_FIELD(TDLS_ACTION_CODE , tdls_action_code), + FF_FIELD(TARGET_CHANNEL , target_channel), + FF_FIELD(REGULATORY_CLASS , regulatory_class), + FF_FIELD(WNM_ACTION_CODE , wnm_action_code), + { -1 , NULL } }; #undef FF_FIELD @@ -6713,8 +6741,7 @@ add_fixed_field(proto_tree *tree, tvbuff_t *tvb, int offset, return 0; } -static const value_string ieee80211_rsn_cipher_vals[] = -{ +static const value_string ieee80211_rsn_cipher_vals[] = { {0, "NONE"}, {1, "WEP (40-bit)"}, {2, "TKIP"}, @@ -6726,8 +6753,7 @@ static const value_string ieee80211_rsn_cipher_vals[] = {0, NULL} }; -static const value_string ieee80211_rsn_keymgmt_vals[] = -{ +static const value_string ieee80211_rsn_keymgmt_vals[] = { {0, "NONE"}, {1, "WPA"}, {2, "PSK"}, @@ -6742,8 +6768,9 @@ static const value_string ieee80211_rsn_keymgmt_vals[] = static void oui_base_custom(gchar *result, guint32 oui) { - guint8 p_oui[3]; + guint8 p_oui[3]; const gchar *manuf_name; + p_oui[0] = oui >> 16 & 0xFF; p_oui[1] = oui >> 8 & 0xFF; p_oui[2] = oui & 0xFF; @@ -6752,47 +6779,55 @@ oui_base_custom(gchar *result, guint32 oui) manuf_name = get_manuf_name_if_known(p_oui); if (manuf_name == NULL) { /* Could not find an OUI. */ - g_snprintf(result, ITEM_LABEL_LENGTH, "%.2x-%.2x-%.2x", p_oui[0], p_oui[1], p_oui[2] ); + g_snprintf(result, ITEM_LABEL_LENGTH, "%.2x-%.2x-%.2x", p_oui[0], p_oui[1], p_oui[2]); } else { /* Found an address string. */ - g_snprintf(result, ITEM_LABEL_LENGTH, "%.2x-%.2x-%.2x (%s)", p_oui[0], p_oui[1], p_oui[2], manuf_name ); + g_snprintf(result, ITEM_LABEL_LENGTH, "%.2x-%.2x-%.2x (%s)", p_oui[0], p_oui[1], p_oui[2], manuf_name); } } + static void rsn_gcs_base_custom(gchar *result, guint32 gcs) { - gchar *oui_result=NULL; + gchar *oui_result; + oui_result = ep_alloc(SHORT_STR); oui_result[0] = '\0'; oui_base_custom(oui_result, gcs >> 8); - g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, val_to_str( gcs & 0xFF, ieee80211_rsn_cipher_vals, "Unknown %d") ); + g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, + val_to_str(gcs & 0xFF, ieee80211_rsn_cipher_vals, "Unknown %d")); } static void rsn_pcs_base_custom(gchar *result, guint32 pcs) { - gchar *oui_result=NULL; + gchar *oui_result; + oui_result = ep_alloc(SHORT_STR); oui_result[0] = '\0'; oui_base_custom(oui_result, pcs >> 8); - g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, val_to_str( pcs & 0xFF, ieee80211_rsn_cipher_vals, "Unknown %d") ); + g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, + val_to_str(pcs & 0xFF, ieee80211_rsn_cipher_vals, "Unknown %d")); } static void rsn_akms_base_custom(gchar *result, guint32 akms) { - gchar *oui_result=NULL; + gchar *oui_result; + oui_result = ep_alloc(SHORT_STR); oui_result[0] = '\0'; oui_base_custom(oui_result, akms >> 8); - g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, val_to_str( akms & 0xFF, ieee80211_rsn_keymgmt_vals, "Unknown %d") ); + g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, + val_to_str(akms & 0xFF, ieee80211_rsn_keymgmt_vals, "Unknown %d")); } static gchar * rsn_pcs_return(guint32 pcs) { - gchar *result=NULL; + gchar *result; + result = ep_alloc(SHORT_STR); result[0] = '\0'; rsn_pcs_base_custom(result, pcs); @@ -6803,7 +6838,8 @@ rsn_pcs_return(guint32 pcs) static gchar * rsn_akms_return(guint32 akms) { - gchar *result=NULL; + gchar *result; + result = ep_alloc(SHORT_STR); result[0] = '\0'; rsn_akms_base_custom(result, akms); @@ -6814,24 +6850,24 @@ rsn_akms_return(guint32 akms) static void rsn_gmcs_base_custom(gchar *result, guint32 gmcs) { - gchar *oui_result=NULL; + gchar *oui_result; + oui_result = ep_alloc(SHORT_STR); oui_result[0] = '\0'; oui_base_custom(oui_result, gmcs >> 8); - g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, val_to_str( gmcs & 0xFF, ieee80211_rsn_cipher_vals, "Unknown %d") ); + g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, + val_to_str(gmcs & 0xFF, ieee80211_rsn_cipher_vals, "Unknown %d")); } /* WPA / WME */ -static const value_string ieee802111_wfa_ie_type_vals[] = -{ +static const value_string ieee802111_wfa_ie_type_vals[] = { { 1, "WPA Information Element" }, { 2, "WMM/WME" }, { 4, "WPS" }, { 0, NULL } }; -static const value_string ieee80211_wfa_ie_wpa_cipher_vals[] = -{ +static const value_string ieee80211_wfa_ie_wpa_cipher_vals[] = { { 0, "NONE" }, { 1, "WEP (40-bit)" }, { 2, "TKIP" }, @@ -6843,8 +6879,7 @@ static const value_string ieee80211_wfa_ie_wpa_cipher_vals[] = { 0, NULL } }; -static const value_string ieee80211_wfa_ie_wpa_keymgmt_vals[] = -{ +static const value_string ieee80211_wfa_ie_wpa_keymgmt_vals[] = { { 0, "NONE" }, { 1, "WPA" }, { 2, "PSK" }, @@ -6897,42 +6932,52 @@ static const value_string ieee802111_wfa_ie_wme_qos_info_sta_max_sp_length_vals[ { 3, "WMM AP may deliver a maximum of 6 buffered frames (MSDUs and MMPDUs) per USP" }, { 0, NULL} }; -static const true_false_string ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs = { "WMM delivery and trigger enabled", "non-WMM PS" }; +static const true_false_string ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs = { + "WMM delivery and trigger enabled", + "non-WMM PS" +}; static void wpa_mcs_base_custom(gchar *result, guint32 mcs) { - gchar *oui_result=NULL; + gchar *oui_result; + oui_result = ep_alloc(SHORT_STR); oui_result[0] = '\0'; oui_base_custom(oui_result, mcs >> 8); - g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, val_to_str( mcs & 0xFF, ieee80211_wfa_ie_wpa_cipher_vals, "Unknown %d") ); + g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, + val_to_str(mcs & 0xFF, ieee80211_wfa_ie_wpa_cipher_vals, "Unknown %d")); } static void wpa_ucs_base_custom(gchar *result, guint32 ucs) { - gchar *oui_result=NULL; + gchar *oui_result; + oui_result = ep_alloc(SHORT_STR); oui_result[0] = '\0'; oui_base_custom(oui_result, ucs >> 8); - g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, val_to_str( ucs & 0xFF, ieee80211_wfa_ie_wpa_cipher_vals, "Unknown %d") ); + g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, + val_to_str(ucs & 0xFF, ieee80211_wfa_ie_wpa_cipher_vals, "Unknown %d")); } static void wpa_akms_base_custom(gchar *result, guint32 akms) { - gchar *oui_result=NULL; + gchar *oui_result; + oui_result = ep_alloc(SHORT_STR); oui_result[0] = '\0'; oui_base_custom(oui_result, akms >> 8); - g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, val_to_str( akms & 0xFF, ieee80211_wfa_ie_wpa_keymgmt_vals, "Unknown %d") ); + g_snprintf(result, ITEM_LABEL_LENGTH, "%s %s", oui_result, + val_to_str(akms & 0xFF, ieee80211_wfa_ie_wpa_keymgmt_vals, "Unknown %d")); } static gchar * wpa_ucs_return(guint32 ucs) { - gchar *result=NULL; + gchar *result; + result = ep_alloc(SHORT_STR); result[0] = '\0'; wpa_ucs_base_custom(result, ucs); @@ -6943,7 +6988,8 @@ wpa_ucs_return(guint32 ucs) static gchar * wpa_akms_return(guint32 akms) { - gchar *result=NULL; + gchar *result; + result = ep_alloc(SHORT_STR); result[0] = '\0'; wpa_akms_base_custom(result, akms); @@ -6951,16 +6997,14 @@ wpa_akms_return(guint32 akms) return result; } -static const value_string ieee802111_wfa_ie_wme_type[] = -{ +static const value_string ieee802111_wfa_ie_wme_type[] = { { 0, "Information Element" }, { 1, "Parameter Element" }, { 2, "TSPEC Element" }, { 0, NULL} }; -static const value_string ft_subelem_id_vals[] = -{ +static const value_string ft_subelem_id_vals[] = { {0, "Reserved"}, {1, "PMK-R1 key holder identifier (R1KH-ID)"}, {2, "GTK subelement"}, @@ -6969,14 +7013,16 @@ static const value_string ft_subelem_id_vals[] = {0, NULL} }; -static int dissect_qos_info(proto_tree * tree, tvbuff_t *tvb, int offset, int ftype) +static int +dissect_qos_info(proto_tree *tree, tvbuff_t *tvb, int offset, int ftype) { proto_tree *qos_info_tree; proto_item *qos_info_item; + qos_info_item = proto_tree_add_item(tree, hf_ieee80211_wfa_ie_wme_qos_info, tvb, offset, 1, ENC_NA); qos_info_tree = proto_item_add_subtree(qos_info_item, ett_wme_qos_info); - switch(ftype){ + switch (ftype) { case MGT_ASSOC_REQ: case MGT_PROBE_REQ: case MGT_REASSOC_REQ: @@ -7011,16 +7057,16 @@ static int dissect_qos_info(proto_tree * tree, tvbuff_t *tvb, int offset, int ft } static int -dissect_vendor_ie_wpawme(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 tag_len, int ftype) +dissect_vendor_ie_wpawme(proto_tree *tree, tvbuff_t *tvb, int offset, guint32 tag_len, int ftype) { guint8 type; proto_tree_add_item(tree, hf_ieee80211_wfa_ie_type, tvb, offset, 1, ENC_NA); type = tvb_get_guint8(tvb, offset); - proto_item_append_text(tree, ": %s", val_to_str(type, ieee802111_wfa_ie_type_vals, "Unknown %d" )); + proto_item_append_text(tree, ": %s", val_to_str(type, ieee802111_wfa_ie_type_vals, "Unknown %d")); offset += 1; - switch(type){ + switch (type) { case 1: /* Wi-Fi Protected Access (WPA) */ { proto_item *wpa_mcs_item, *wpa_ucs_item, *wpa_akms_item; @@ -7039,7 +7085,7 @@ dissect_vendor_ie_wpawme(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 proto_tree_add_item(wpa_mcs_tree, hf_ieee80211_wfa_ie_wpa_mcs_oui, tvb, offset, 3, ENC_BIG_ENDIAN); /* Check if OUI is 00:50:F2 (WFA) */ - if(tvb_get_ntoh24(tvb, offset) == 0x0050F2) + if (tvb_get_ntoh24(tvb, offset) == 0x0050F2) { proto_tree_add_item(wpa_mcs_tree, hf_ieee80211_wfa_ie_wpa_mcs_wfa_type, tvb, offset + 3, 1, ENC_BIG_ENDIAN); } else { @@ -7054,14 +7100,14 @@ dissect_vendor_ie_wpawme(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 wpa_ucs_item = proto_tree_add_item(tree, hf_ieee80211_wfa_ie_wpa_ucs_list, tvb, offset, ucs_count * 4, ENC_NA); wpa_ucs_tree = proto_item_add_subtree(wpa_ucs_item, ett_wpa_ucs_tree); - for(ii = 0; ii < ucs_count; ii++) + for (ii = 0; ii < ucs_count; ii++) { wpa_sub_ucs_item = proto_tree_add_item(wpa_ucs_tree, hf_ieee80211_wfa_ie_wpa_ucs, tvb, offset, 4, ENC_BIG_ENDIAN); wpa_sub_ucs_tree = proto_item_add_subtree(wpa_sub_ucs_item, ett_wpa_sub_ucs_tree); proto_tree_add_item(wpa_sub_ucs_tree, hf_ieee80211_wfa_ie_wpa_ucs_oui, tvb, offset, 3, ENC_BIG_ENDIAN); /* Check if OUI is 00:50:F2 (WFA) */ - if(tvb_get_ntoh24(tvb, offset) == 0x0050F2) + if (tvb_get_ntoh24(tvb, offset) == 0x0050F2) { proto_tree_add_item(wpa_sub_ucs_tree, hf_ieee80211_wfa_ie_wpa_ucs_wfa_type, tvb, offset+3, 1, ENC_BIG_ENDIAN); proto_item_append_text(wpa_ucs_item, " %s", wpa_ucs_return(tvb_get_ntohl(tvb, offset))); @@ -7078,14 +7124,14 @@ dissect_vendor_ie_wpawme(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 wpa_akms_item = proto_tree_add_item(tree, hf_ieee80211_wfa_ie_wpa_akms_list, tvb, offset, akms_count * 4, ENC_NA); wpa_akms_tree = proto_item_add_subtree(wpa_akms_item, ett_wpa_akms_tree); - for(ii = 0; ii < akms_count; ii++) + for (ii = 0; ii < akms_count; ii++) { wpa_sub_akms_item = proto_tree_add_item(wpa_akms_tree, hf_ieee80211_wfa_ie_wpa_akms, tvb, offset, 4, ENC_BIG_ENDIAN); wpa_sub_akms_tree = proto_item_add_subtree(wpa_sub_akms_item, ett_wpa_sub_akms_tree); proto_tree_add_item(wpa_sub_akms_tree, hf_ieee80211_wfa_ie_wpa_akms_oui, tvb, offset, 3, ENC_BIG_ENDIAN); /* Check if OUI is 00:50:F2 (WFA) */ - if(tvb_get_ntoh24(tvb, offset) == 0x0050F2) + if (tvb_get_ntoh24(tvb, offset) == 0x0050F2) { proto_tree_add_item(wpa_sub_akms_tree, hf_ieee80211_wfa_ie_wpa_akms_wfa_type, tvb, offset+3, 1, ENC_BIG_ENDIAN); proto_item_append_text(wpa_akms_item, " %s", wpa_akms_return(tvb_get_ntohl(tvb, offset))); @@ -7102,9 +7148,9 @@ dissect_vendor_ie_wpawme(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 proto_tree_add_item(tree, hf_ieee80211_wfa_ie_wme_subtype, tvb, offset, 1, ENC_NA); subtype = tvb_get_guint8(tvb, offset); - proto_item_append_text(tree, ": %s", val_to_str(subtype, ieee802111_wfa_ie_wme_type, "Unknown %d" )); + proto_item_append_text(tree, ": %s", val_to_str(subtype, ieee802111_wfa_ie_wme_type, "Unknown %d")); offset += 1; - switch(subtype){ + switch (subtype) { case 0: /* WME Information Element */ { proto_tree_add_item(tree, hf_ieee80211_wfa_ie_wme_version, tvb, offset, 1, ENC_NA); @@ -7123,7 +7169,7 @@ dissect_vendor_ie_wpawme(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 proto_tree_add_item(tree, hf_ieee80211_wfa_ie_wme_reserved, tvb, offset, 1, ENC_NA); offset += 1; /* AC Parameters */ - for(i = 0; i < 4; i++) + for (i = 0; i < 4; i++) { proto_item *ac_item, *aci_aifsn_item, *ecw_item; proto_tree *ac_tree, *aci_aifsn_tree, *ecw_tree; @@ -7151,7 +7197,7 @@ dissect_vendor_ie_wpawme(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 proto_tree_add_item(ecw_tree, hf_ieee80211_wfa_ie_wme_acp_ecw_max, tvb, offset, 1, ENC_NA); proto_tree_add_item(ecw_tree, hf_ieee80211_wfa_ie_wme_acp_ecw_min, tvb, offset, 1, ENC_NA); ecw = tvb_get_guint8(tvb, offset); - proto_item_append_text(ac_item, ", ECWmin %u ,ECWmax %u", ecw & 0x0f, (ecw & 0xf0) >> 4 ); + proto_item_append_text(ac_item, ", ECWmin %u ,ECWmax %u", ecw & 0x0f, (ecw & 0xf0) >> 4); offset += 1; /* TXOP Limit */ @@ -7227,7 +7273,7 @@ dissect_vendor_ie_wpawme(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 default: /* No default Action */ break; - } /* End switch(subtype) */ + } /* End switch (subtype) */ break; } case 4: /* WPS: Wifi Protected Setup */ @@ -7238,7 +7284,7 @@ dissect_vendor_ie_wpawme(proto_tree * tree, tvbuff_t * tvb, int offset, guint32 default: /* No default Action...*/ break; - } /* End switch(type) */ + } /* End switch (type) */ return offset; } @@ -7262,12 +7308,14 @@ dissect_vendor_ie_wfa(packet_info *pinfo, proto_item *item, tvbuff_t *tag_tvb) static void dissect_vendor_ie_rsn(proto_item * item, proto_tree * tree, tvbuff_t * tag_tvb) { - guint tag_off = 0; - guint tag_len = tvb_length(tag_tvb); + guint tag_off = 0; + guint tag_len = tvb_length(tag_tvb); guint pmkid_len = tag_len - 4; - char out_buff[SHORT_STR], valid_str[SHORT_STR] = ""; - if (tag_len >= 4 && !tvb_memeql(tag_tvb, tag_off, RSN_OUI"\x04", 4)) { + char out_buff[SHORT_STR]; + char valid_str[SHORT_STR] = ""; + + if ((tag_len >= 4) && !tvb_memeql(tag_tvb, tag_off, RSN_OUI"\x04", 4)) { /* IEEE 802.11i / Key Data Encapsulation / Data Type=4 - PMKID. * This is only used within EAPOL-Key frame Key Data. */ if (pmkid_len != PMKID_LEN) { @@ -7287,8 +7335,8 @@ typedef enum { } marvell_ie_type_t; static void -dissect_vendor_ie_marvell(proto_item * item _U_, proto_tree * ietree, - tvbuff_t * tvb, int offset, guint32 tag_len) +dissect_vendor_ie_marvell(proto_item *item _U_, proto_tree *ietree, + tvbuff_t *tvb, int offset, guint32 tag_len) { guint8 type; @@ -7299,15 +7347,15 @@ dissect_vendor_ie_marvell(proto_item * item _U_, proto_tree * ietree, switch (type) { case MARVELL_IE_MESH: proto_tree_add_item (ietree, hf_ieee80211_marvell_ie_mesh_subtype, tvb, - offset++, 1, ENC_LITTLE_ENDIAN ); + offset++, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (ietree, hf_ieee80211_marvell_ie_mesh_version, tvb, - offset++, 1, ENC_LITTLE_ENDIAN ); + offset++, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (ietree, hf_ieee80211_marvell_ie_mesh_active_proto_id, tvb, - offset++, 1, ENC_LITTLE_ENDIAN ); + offset++, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (ietree, hf_ieee80211_marvell_ie_mesh_active_metric_id, tvb, - offset++, 1, ENC_LITTLE_ENDIAN ); + offset++, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (ietree, hf_ieee80211_marvell_ie_mesh_cap, tvb, - offset++, 1, ENC_LITTLE_ENDIAN ); + offset++, 1, ENC_LITTLE_ENDIAN); break; default: @@ -7332,13 +7380,13 @@ typedef enum { typedef enum { ATHEROS_IE_CAP_TURBOP = 0x01, - ATHEROS_IE_CAP_COMP = 0x02, - ATHEROS_IE_CAP_FF = 0x04, - ATHEROS_IE_CAP_XR = 0x08, - ATHEROS_IE_CAP_AR = 0x10, - ATHEROS_IE_CAP_BURST = 0x20, - ATHEROS_IE_CAP_WME = 0x40, - ATHEROS_IE_CAP_BOOST = 0x80 + ATHEROS_IE_CAP_COMP = 0x02, + ATHEROS_IE_CAP_FF = 0x04, + ATHEROS_IE_CAP_XR = 0x08, + ATHEROS_IE_CAP_AR = 0x10, + ATHEROS_IE_CAP_BURST = 0x20, + ATHEROS_IE_CAP_WME = 0x40, + ATHEROS_IE_CAP_BOOST = 0x80 } atheros_ie_cap_t; static const value_string atheros_ie_type_vals[] = { @@ -7348,31 +7396,31 @@ static const value_string atheros_ie_type_vals[] = { }; static void -dissect_vendor_ie_atheros_cap(proto_item * item _U_, tvbuff_t *tvb, int offset) +dissect_vendor_ie_atheros_cap(proto_item *item _U_, tvbuff_t *tvb, int offset) { proto_tree *cap_tree; cap_tree = proto_item_add_subtree(item, ett_ath_cap_tree); proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_turbop, tvb, offset, 1, ENC_NA); - proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_comp, tvb, offset, 1, ENC_NA); - proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_ff, tvb, offset, 1, ENC_NA); - proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_xr, tvb, offset, 1, ENC_NA); - proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_ar, tvb, offset, 1, ENC_NA); - proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_burst, tvb, offset, 1, ENC_NA); - proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_wme, tvb, offset, 1, ENC_NA); - proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_boost, tvb, offset, 1, ENC_NA); + proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_comp, tvb, offset, 1, ENC_NA); + proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_ff, tvb, offset, 1, ENC_NA); + proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_xr, tvb, offset, 1, ENC_NA); + proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_ar, tvb, offset, 1, ENC_NA); + proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_burst, tvb, offset, 1, ENC_NA); + proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_wme, tvb, offset, 1, ENC_NA); + proto_tree_add_item(cap_tree, hf_ieee80211_atheros_ie_cap_f_boost, tvb, offset, 1, ENC_NA); } static void -dissect_vendor_ie_atheros(proto_item * item _U_, proto_tree * ietree, - tvbuff_t * tvb, int offset, guint tag_len, - packet_info * pinfo, proto_item *ti_len) +dissect_vendor_ie_atheros(proto_item *item _U_, proto_tree *ietree, + tvbuff_t *tvb, int offset, guint tag_len, + packet_info *pinfo, proto_item *ti_len) { - guint8 type; - guint8 subtype; - guint8 version; + guint8 type; + guint8 subtype; + guint8 version; proto_item *cap_item; proto_item *ti; @@ -7383,88 +7431,88 @@ dissect_vendor_ie_atheros(proto_item * item _U_, proto_tree * ietree, proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_type, tvb, offset, 1, ENC_NA); type = tvb_get_guint8(tvb, offset); proto_item_append_text(item, ": %s", val_to_str_const(type, atheros_ie_type_vals, "Unknown")); - offset += 1; + offset += 1; tag_len -= 1; proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_subtype, tvb, offset, 1, ENC_NA); - subtype = tvb_get_guint8(tvb, offset); - offset += 1; + subtype = tvb_get_guint8(tvb, offset); + offset += 1; tag_len -= 1; proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_version, tvb, offset, 1, ENC_NA); - version = tvb_get_guint8(tvb, offset); - offset += 1; + version = tvb_get_guint8(tvb, offset); + offset += 1; tag_len -= 1; - if(version == 0) + if (version == 0) { - switch(type){ + switch (type) { case ATHEROS_IE_ADVCAP: { - switch(subtype){ + switch (subtype) { case ATHEROS_IE_ADVCAP_S: { - cap_item = proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_advcap_cap, tvb, offset, 1, ENC_NA); + cap_item = proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_advcap_cap, tvb, offset, 1, ENC_NA); dissect_vendor_ie_atheros_cap(cap_item, tvb, offset); - offset += 1; - tag_len -= 1; + offset += 1; + tag_len -= 1; proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_advcap_defkey, tvb, offset, 2, ENC_LITTLE_ENDIAN); - offset += 2; + offset += 2; tag_len -= 2; break; } default: /* No default Action */ break; - } /* End switch(subtype) */ + } /* End switch (subtype) */ break; } case ATHEROS_IE_XR: { - switch(subtype){ + switch (subtype) { case ATHEROS_IE_XR_S: { proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_xr_info, tvb, offset, 1, ENC_NA); - offset += 1; + offset += 1; tag_len -= 1; proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_xr_base_bssid, tvb, offset, 6, ENC_NA); - offset += 6; + offset += 6; tag_len -= 6; proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_xr_xr_bssid, tvb, offset, 6, ENC_NA); - offset += 6; + offset += 6; tag_len -= 6; proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_xr_xr_beacon, tvb, offset, 2, ENC_LITTLE_ENDIAN); - offset += 2; + offset += 2; tag_len -= 2; - cap_item = proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_xr_base_cap, tvb, offset, 1, ENC_NA); + cap_item = proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_xr_base_cap, tvb, offset, 1, ENC_NA); dissect_vendor_ie_atheros_cap(cap_item, tvb, offset); - offset += 1; - tag_len -= 1; + offset += 1; + tag_len -= 1; - cap_item = proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_xr_xr_cap, tvb, offset, 1, ENC_NA); + cap_item = proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_xr_xr_cap, tvb, offset, 1, ENC_NA); dissect_vendor_ie_atheros_cap(cap_item, tvb, offset); - offset += 1; - tag_len -= 1; + offset += 1; + tag_len -= 1; break; } default: /* No default Action */ break; - } /* End switch(subtype) */ + } /* End switch (subtype) */ break; default: /* No default Action */ break; - } /* End switch(type) */ + } /* End switch (type) */ } } - if(tag_len > 0 ){ + if (tag_len > 0) { ti = proto_tree_add_item(ietree, hf_ieee80211_atheros_ie_data, tvb, offset, tag_len, ENC_NA); expert_add_info_format(pinfo, ti, PI_UNDECODED, PI_WARN, "Unknown Data (not interpreted)"); } @@ -7484,8 +7532,8 @@ static const value_string aironet_ie_type_vals[] = { }; static void -dissect_vendor_ie_aironet(proto_item * aironet_item, proto_tree * ietree, - tvbuff_t * tvb, int offset, guint32 tag_len) +dissect_vendor_ie_aironet(proto_item *aironet_item, proto_tree *ietree, + tvbuff_t *tvb, int offset, guint32 tag_len) { guint8 type; int i; @@ -7545,14 +7593,15 @@ dissect_vendor_ie_aironet(proto_item * aironet_item, proto_tree * ietree, } /* 802.11e 7.3.2.33 QoS Capability element */ -static int dissect_qos_capability(proto_tree * tree, tvbuff_t * tvb, int offset, int ftype) +static int +dissect_qos_capability(proto_tree *tree, tvbuff_t *tvb, int offset, int ftype) { proto_item *cap_info_item; proto_tree *cap_info_tree; cap_info_item = proto_tree_add_item(tree, hf_ieee80211_tag_qos_cap_qos_info, tvb, offset, 1, ENC_NA); cap_info_tree = proto_item_add_subtree(cap_info_item, ett_qos_info_field_tree); - switch(ftype){ + switch (ftype) { case MGT_ASSOC_REQ: case MGT_PROBE_REQ: case MGT_REASSOC_REQ: @@ -7590,17 +7639,17 @@ static int dissect_qos_capability(proto_tree * tree, tvbuff_t * tvb, int offset, /* 7.3.2.25 RSN information element */ static int -dissect_rsn_ie(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, - int offset, guint32 tag_len) +dissect_rsn_ie(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, + int offset, guint32 tag_len) { proto_item *rsn_gcs_item, *rsn_pcs_item, *rsn_akms_item, *rsn_cap_item, *rsn_pmkid_item, *rsn_gmcs_item; proto_item *rsn_sub_pcs_item, *rsn_sub_akms_item; proto_item *rsn_pcs_count, *rsn_akms_count, *rsn_pmkid_count; proto_tree *rsn_gcs_tree, *rsn_pcs_tree, *rsn_akms_tree, *rsn_cap_tree, *rsn_pmkid_tree, *rsn_gmcs_tree; proto_tree *rsn_sub_pcs_tree, *rsn_sub_akms_tree; - guint16 pcs_count, akms_count, pmkid_count; - guint ii; - int tag_end = offset + tag_len; + guint16 pcs_count, akms_count, pmkid_count; + guint ii; + int tag_end = offset + tag_len; proto_tree_add_item(tree, hf_ieee80211_rsn_version, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; @@ -7611,7 +7660,7 @@ dissect_rsn_ie(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, proto_tree_add_item(rsn_gcs_tree, hf_ieee80211_rsn_gcs_oui, tvb, offset, 3, ENC_BIG_ENDIAN); /* Check if OUI is 00:0F:AC (ieee80211) */ - if(tvb_get_ntoh24(tvb, offset) == 0x000FAC) + if (tvb_get_ntoh24(tvb, offset) == 0x000FAC) { proto_tree_add_item(rsn_gcs_tree, hf_ieee80211_rsn_gcs_80211_type, tvb, offset + 3, 1, ENC_BIG_ENDIAN); } else { @@ -7633,14 +7682,14 @@ dissect_rsn_ie(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, rsn_pcs_item = proto_tree_add_item(tree, hf_ieee80211_rsn_pcs_list, tvb, offset, pcs_count * 4, ENC_NA); rsn_pcs_tree = proto_item_add_subtree(rsn_pcs_item, ett_rsn_pcs_tree); - for(ii = 0; ii < pcs_count; ii++) + for (ii = 0; ii < pcs_count; ii++) { rsn_sub_pcs_item = proto_tree_add_item(rsn_pcs_tree, hf_ieee80211_rsn_pcs, tvb, offset, 4, ENC_BIG_ENDIAN); rsn_sub_pcs_tree = proto_item_add_subtree(rsn_sub_pcs_item, ett_rsn_sub_pcs_tree); proto_tree_add_item(rsn_sub_pcs_tree, hf_ieee80211_rsn_pcs_oui, tvb, offset, 3, ENC_BIG_ENDIAN); /* Check if OUI is 00:0F:AC (ieee80211) */ - if(tvb_get_ntoh24(tvb, offset) == 0x000FAC) + if (tvb_get_ntoh24(tvb, offset) == 0x000FAC) { proto_tree_add_item(rsn_sub_pcs_tree, hf_ieee80211_rsn_pcs_80211_type, tvb, offset+3, 1, ENC_BIG_ENDIAN); proto_item_append_text(rsn_pcs_item, " %s", rsn_pcs_return(tvb_get_ntohl(tvb, offset))); @@ -7650,7 +7699,7 @@ dissect_rsn_ie(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, offset += 4; } - if(offset >= tag_end) + if (offset >= tag_end) { return offset; } @@ -7669,14 +7718,14 @@ dissect_rsn_ie(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, rsn_akms_item = proto_tree_add_item(tree, hf_ieee80211_rsn_akms_list, tvb, offset, akms_count * 4, ENC_NA); rsn_akms_tree = proto_item_add_subtree(rsn_akms_item, ett_rsn_akms_tree); - for(ii = 0; ii < akms_count; ii++) + for (ii = 0; ii < akms_count; ii++) { rsn_sub_akms_item = proto_tree_add_item(rsn_akms_tree, hf_ieee80211_rsn_akms, tvb, offset, 4, ENC_BIG_ENDIAN); rsn_sub_akms_tree = proto_item_add_subtree(rsn_sub_akms_item, ett_rsn_sub_akms_tree); proto_tree_add_item(rsn_sub_akms_tree, hf_ieee80211_rsn_akms_oui, tvb, offset, 3, ENC_BIG_ENDIAN); /* Check if OUI is 00:0F:AC (ieee80211) */ - if(tvb_get_ntoh24(tvb, offset) == 0x000FAC) + if (tvb_get_ntoh24(tvb, offset) == 0x000FAC) { proto_tree_add_item(rsn_sub_akms_tree, hf_ieee80211_rsn_akms_80211_type, tvb, offset+3, 1, ENC_BIG_ENDIAN); proto_item_append_text(rsn_akms_item, " %s", rsn_akms_return(tvb_get_ntohl(tvb, offset))); @@ -7698,7 +7747,7 @@ dissect_rsn_ie(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, proto_tree_add_item(rsn_cap_tree, hf_ieee80211_rsn_cap_mfpc, tvb, offset, 2, ENC_LITTLE_ENDIAN); proto_tree_add_item(rsn_cap_tree, hf_ieee80211_rsn_cap_peerkey, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; - if(offset >= tag_end) + if (offset >= tag_end) { return offset; } @@ -7716,13 +7765,13 @@ dissect_rsn_ie(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, rsn_pmkid_item = proto_tree_add_item(tree, hf_ieee80211_rsn_pmkid_list, tvb, offset, pmkid_count * 16, ENC_NA); rsn_pmkid_tree = proto_item_add_subtree(rsn_pmkid_item, ett_rsn_pmkid_tree); - for(ii = 0; ii < pmkid_count; ii++) + for (ii = 0; ii < pmkid_count; ii++) { proto_tree_add_item(rsn_pmkid_tree, hf_ieee80211_rsn_pmkid, tvb, offset, 16, ENC_NA); - offset +=16; + offset += 16; } - if(offset >= tag_end) + if (offset >= tag_end) { return offset; } @@ -7731,7 +7780,7 @@ dissect_rsn_ie(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, rsn_gmcs_tree = proto_item_add_subtree(rsn_gmcs_item, ett_rsn_gmcs_tree); proto_tree_add_item(rsn_gmcs_tree, hf_ieee80211_rsn_gmcs_oui, tvb, offset, 3, ENC_BIG_ENDIAN); /* Check if OUI is 00:0F:AC (ieee80211) */ - if(tvb_get_ntoh24(tvb, offset) == 0x000FAC) + if (tvb_get_ntoh24(tvb, offset) == 0x000FAC) { proto_tree_add_item(rsn_gmcs_tree, hf_ieee80211_rsn_gmcs_80211_type, tvb, offset + 3, 1, ENC_BIG_ENDIAN); } else { @@ -7743,7 +7792,8 @@ dissect_rsn_ie(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, } static int -dissect_vht_mcs_set(proto_tree *tree, tvbuff_t *tvb, int offset) { +dissect_vht_mcs_set(proto_tree *tree, tvbuff_t *tvb, int offset) +{ proto_item *ti; proto_tree *mcs_tree, *rx_mcs_tree, *tx_mcs_tree; @@ -7959,12 +8009,12 @@ dissect_fast_bss_transition(proto_tree *tree, tvbuff_t *tvb, int offset, proto_tree_add_item(tree, hf_ieee80211_tag_ft_subelem_id, tvb, offset, 1, ENC_BIG_ENDIAN); id = tvb_get_guint8(tvb, offset); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_tag_ft_subelem_len, tvb, offset, 1, ENC_BIG_ENDIAN); len = tvb_get_guint8(tvb, offset); - offset++; + offset += 1; if (offset + len > end) { proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, offset, @@ -7988,7 +8038,7 @@ dissect_fast_bss_transition(proto_tree *tree, tvbuff_t *tvb, int offset, break; proto_tree_add_item(tree, hf_ieee80211_tag_ft_subelem_gtk_key_length, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; if (offset > s_end) break; proto_tree_add_item(tree, hf_ieee80211_tag_ft_subelem_gtk_rsc, @@ -8016,7 +8066,7 @@ dissect_fast_bss_transition(proto_tree *tree, tvbuff_t *tvb, int offset, break; proto_tree_add_item(tree, hf_ieee80211_tag_ft_subelem_igtk_key_length, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; if (offset > s_end) break; proto_tree_add_item(tree, hf_ieee80211_tag_ft_subelem_igtk_key, @@ -8131,7 +8181,7 @@ dissect_pti_control(proto_tree *tree, tvbuff_t *tvb, int offset, proto_tree_add_item(tree, hf_ieee80211_tag_pti_control_tid, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_tag_pti_control_sequence_control, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -8178,16 +8228,17 @@ dissect_timeout_interval(proto_tree *tree, tvbuff_t *tvb, int offset, } static int -dissect_mcs_set(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean basic, gboolean vs) { +dissect_mcs_set(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean basic, gboolean vs) +{ proto_item *ti; proto_tree *mcs_tree, *bit_tree; /* 16 byte Supported MCS set */ - if(vs) + if (vs) { ti = proto_tree_add_string(tree, hf_ieee80211_mcsset_vs, tvb, offset, 16, basic ? "Basic MCS Set" : "MCS Set"); - }else + } else { ti = proto_tree_add_string(tree, hf_ieee80211_mcsset, tvb, offset, 16, basic ? "Basic MCS Set" : "MCS Set"); @@ -8235,7 +8286,7 @@ dissect_mcs_set(proto_tree *tree, tvbuff_t *tvb, int offset, gboolean basic, gbo /* 802.11n D1.10 - HT Information IE */ static int dissect_ht_info_ie_1_1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, - guint32 tag_len, proto_item *ti_len) + guint32 tag_len, proto_item *ti_len) { proto_item *cap_item; proto_tree *cap_tree; @@ -8316,7 +8367,8 @@ static const value_string time_adv_timing_capab_vals[] = { { 0, NULL } }; -static int dissect_time_adv(proto_tree *tree, tvbuff_t *tvb, int offset) +static int +dissect_time_adv(proto_tree *tree, tvbuff_t *tvb, int offset) { guint8 capab; proto_item *item; @@ -8327,7 +8379,7 @@ static int dissect_time_adv(proto_tree *tree, tvbuff_t *tvb, int offset) capab = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_ieee80211_tag_time_adv_timing_capab, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; switch (capab) { case 1: @@ -8351,30 +8403,30 @@ static int dissect_time_adv(proto_tree *tree, tvbuff_t *tvb, int offset) tm.tm_mon = tvb_get_guint8(tvb, offset) - 1; proto_tree_add_item(subtree, hf_ieee80211_tag_time_adv_time_value_month, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; tm.tm_mday = tvb_get_guint8(tvb, offset); proto_tree_add_item(subtree, hf_ieee80211_tag_time_adv_time_value_day, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; tm.tm_hour = tvb_get_guint8(tvb, offset); proto_tree_add_item(subtree, hf_ieee80211_tag_time_adv_time_value_hours, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; tm.tm_min = tvb_get_guint8(tvb, offset); proto_tree_add_item(subtree, hf_ieee80211_tag_time_adv_time_value_minutes, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; tm.tm_sec = tvb_get_guint8(tvb, offset); proto_tree_add_item(subtree, hf_ieee80211_tag_time_adv_time_value_seconds, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(subtree, hf_ieee80211_tag_time_adv_time_value_milliseconds, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; proto_tree_add_item(subtree, hf_ieee80211_tag_time_adv_time_value_reserved, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; tm.tm_isdst = -1; t = mktime(&tm); @@ -8395,15 +8447,16 @@ static int dissect_time_adv(proto_tree *tree, tvbuff_t *tvb, int offset) proto_tree_add_item(tree, hf_ieee80211_tag_time_adv_time_update_counter, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; break; } return offset; } -static int dissect_time_zone(proto_tree *tree, tvbuff_t *tvb, int offset, - guint32 tag_len) +static int +dissect_time_zone(proto_tree *tree, tvbuff_t *tvb, int offset, + guint32 tag_len) { proto_tree_add_item(tree, hf_ieee80211_tag_time_zone, tvb, offset, tag_len, ENC_ASCII|ENC_NA); @@ -8412,7 +8465,8 @@ static int dissect_time_zone(proto_tree *tree, tvbuff_t *tvb, int offset, static int dissect_ap_channel_report(tvbuff_t *tvb, packet_info *pinfo, - proto_tree *tree, int offset, guint32 tag_len, proto_item *ti_len, int tag_end, proto_item *ti) + proto_tree *tree, int offset, guint32 tag_len, proto_item *ti_len, + int tag_end, proto_item *ti) { if (tag_len < 1) { expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, @@ -8422,20 +8476,20 @@ dissect_ap_channel_report(tvbuff_t *tvb, packet_info *pinfo, proto_tree_add_item(tree, hf_ieee80211_tag_ap_channel_report_regulatory_class, tvb, offset, 1, ENC_LITTLE_ENDIAN); - proto_item_append_text(ti, ": Regulatory Class %u, Channel List :", tvb_get_guint8(tvb, offset) ); + proto_item_append_text(ti, ": Regulatory Class %u, Channel List :", tvb_get_guint8(tvb, offset)); offset += 1; - while(offset < tag_end) + while (offset < tag_end) { proto_tree_add_item(tree, hf_ieee80211_tag_ap_channel_report_channel_list, tvb, offset, 1, ENC_NA); - proto_item_append_text(ti, " %u,", tvb_get_guint8(tvb, offset) ); + proto_item_append_text(ti, " %u,", tvb_get_guint8(tvb, offset)); offset += 1; } return offset; } static int dissect_secondary_channel_offset_ie(tvbuff_t *tvb, packet_info *pinfo, - proto_tree *tree, int offset, guint32 tag_len, proto_item *ti_len) + proto_tree *tree, int offset, guint32 tag_len, proto_item *ti_len) { if (tag_len != 1) { @@ -8454,7 +8508,7 @@ dissect_secondary_channel_offset_ie(tvbuff_t *tvb, packet_info *pinfo, 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 vs ) + guint32 tag_len, proto_item *ti_len, gboolean vs) { proto_item *cap_item, *ti; proto_tree *cap_tree; @@ -8469,7 +8523,7 @@ dissect_ht_capability_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in return offset; /* 2 byte HT Capabilities Info*/ - if(vs) + if (vs) { cap_item = proto_tree_add_item(tree, hf_ieee80211_ht_vs_cap, tvb, offset, 2, ENC_LITTLE_ENDIAN); } @@ -8496,10 +8550,10 @@ dissect_ht_capability_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in offset += 2; /* 1 byte A-MPDU Parameters */ - if(vs) + if (vs) { cap_item = proto_tree_add_item(tree, hf_ieee80211_ampduparam_vs, tvb, offset, 1, ENC_LITTLE_ENDIAN); - }else + } else { cap_item = proto_tree_add_item(tree, hf_ieee80211_ampduparam, tvb, offset, 1, ENC_LITTLE_ENDIAN); } @@ -8515,7 +8569,7 @@ dissect_ht_capability_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in /* 2 byte HT Extended Capabilities */ - if(vs) + if (vs) { cap_item = proto_tree_add_item(tree, hf_ieee80211_htex_vs_cap, tvb, offset, 2, ENC_LITTLE_ENDIAN); } else { @@ -8532,7 +8586,7 @@ dissect_ht_capability_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in /* 4 byte TxBF capabilities */ - if(vs) + if (vs) { cap_item = proto_tree_add_item(tree, hf_ieee80211_txbf_vs, tvb, offset, 4, ENC_LITTLE_ENDIAN); } else { @@ -8546,7 +8600,7 @@ dissect_ht_capability_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in proto_tree_add_item(cap_tree, hf_ieee80211_txbf_tx_ndp, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(cap_tree, hf_ieee80211_txbf_impl_txbf, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(cap_tree, hf_ieee80211_txbf_calib, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset +=1; + offset += 1; proto_tree_add_item(cap_tree, hf_ieee80211_txbf_expl_csi, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(cap_tree, hf_ieee80211_txbf_expl_uncomp_fm, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -8554,7 +8608,7 @@ dissect_ht_capability_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in proto_tree_add_item(cap_tree, hf_ieee80211_txbf_expl_bf_csi, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(cap_tree, hf_ieee80211_txbf_expl_uncomp_fm_feed, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(cap_tree, hf_ieee80211_txbf_expl_comp_fm_feed, tvb, offset, 2, ENC_LITTLE_ENDIAN); - offset +=1; + offset += 1; proto_tree_add_item(cap_tree, hf_ieee80211_txbf_min_group, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(cap_tree, hf_ieee80211_txbf_csi_num_bf_ant, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -8568,7 +8622,7 @@ dissect_ht_capability_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in offset += 1; /* 1 byte Antenna Selection (ASEL) capabilities */ - if(vs) + if (vs) { cap_item = proto_tree_add_item(tree, hf_ieee80211_antsel_vs, tvb, offset, 1, ENC_LITTLE_ENDIAN); } @@ -8593,7 +8647,7 @@ dissect_ht_capability_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in static int dissect_ht_info_ie_1_0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, - guint32 tag_len, proto_item *ti_len) + guint32 tag_len, proto_item *ti_len) { proto_item *cap_item; proto_tree *cap_tree; @@ -8687,7 +8741,7 @@ dissect_ht_info_ie_1_0(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int */ static void -dissect_ht_control(proto_tree *tree, tvbuff_t * tvb, int offset) +dissect_ht_control(proto_tree *tree, tvbuff_t *tvb, int offset) { proto_item *ti; proto_tree *htc_tree, *lac_subtree; @@ -8708,7 +8762,7 @@ dissect_ht_control(proto_tree *tree, tvbuff_t * tvb, int offset) proto_tree_add_uint(lac_subtree, hf_ieee80211_htc_lac_mai_aseli, tvb, offset, 1, htc); } else { proto_tree_add_boolean(lac_subtree, hf_ieee80211_htc_lac_mai_mrq, tvb, offset, 1, htc); - if (HTC_LAC_MAI_MRQ(htc)){ + if (HTC_LAC_MAI_MRQ(htc)) { proto_tree_add_uint(lac_subtree, hf_ieee80211_htc_lac_mai_msi, tvb, offset, 1, htc); } else { proto_tree_add_uint(lac_subtree, hf_ieee80211_htc_lac_mai_reserved, tvb, offset, 1, htc); @@ -8716,7 +8770,7 @@ dissect_ht_control(proto_tree *tree, tvbuff_t * tvb, int offset) } proto_tree_add_uint(lac_subtree, hf_ieee80211_htc_lac_mfsi, tvb, offset, 2, htc); - offset++; + offset += 1; if (HTC_IS_ASELI(htc)) { proto_tree_add_uint(lac_subtree, hf_ieee80211_htc_lac_asel_command, tvb, offset, 1, htc); @@ -8726,7 +8780,7 @@ dissect_ht_control(proto_tree *tree, tvbuff_t * tvb, int offset) } /* End: Link Adaptation Control */ - offset++; + offset += 1; htc = tvb_get_letohs(tvb, offset); proto_tree_add_uint(htc_tree, hf_ieee80211_htc_cal_pos, tvb, offset, 1, htc); @@ -8734,7 +8788,7 @@ dissect_ht_control(proto_tree *tree, tvbuff_t * tvb, int offset) proto_tree_add_uint(htc_tree, hf_ieee80211_htc_reserved1, tvb, offset, 1, htc); proto_tree_add_uint(htc_tree, hf_ieee80211_htc_csi_steering, tvb, offset, 1, htc); - offset++; + offset += 1; proto_tree_add_boolean(htc_tree, hf_ieee80211_htc_ndp_announcement, tvb, offset, 1, htc); proto_tree_add_uint(htc_tree, hf_ieee80211_htc_reserved2, tvb, offset, 1, htc); proto_tree_add_boolean(htc_tree, hf_ieee80211_htc_ac_constraint, tvb, offset, 1, htc); @@ -8742,7 +8796,7 @@ dissect_ht_control(proto_tree *tree, tvbuff_t * tvb, int offset) } static void -dissect_frame_control(proto_tree * tree, tvbuff_t * tvb, gboolean wlan_broken_fc, +dissect_frame_control(proto_tree *tree, tvbuff_t *tvb, gboolean wlan_broken_fc, guint32 offset) { guint16 fcf, flags, frame_type_subtype; @@ -8805,14 +8859,14 @@ dissect_vendor_ie_ht(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, offset, 3, "802.11n (Pre) OUI"); /* 802.11n OUI Information Element */ - if (4 <= tag_len && !tvb_memeql(tvb, offset, PRE_11N_OUI"\x33", 4)) { - proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, 3, 1,"802.11n (Pre) HT information" ); + if ((4 <= tag_len) && !tvb_memeql(tvb, offset, PRE_11N_OUI"\x33", 4)) { + proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, 3, 1,"802.11n (Pre) HT information"); dissect_ht_capability_ie(tvb, pinfo, tree, offset+4, tag_len - 4, ti_len, TRUE); proto_item_append_text(item, ": HT Capabilities (802.11n D1.10)"); } else { - if (4 <= tag_len && !tvb_memeql(tvb, offset, PRE_11N_OUI"\x34", 4)) { + if ((4 <= tag_len) && !tvb_memeql(tvb, offset, PRE_11N_OUI"\x34", 4)) { proto_tree_add_string(tree, hf_ieee80211_tag_interpretation, tvb, 3, 1, "HT additional information (802.11n D1.00)"); dissect_ht_info_ie_1_0(tvb, pinfo, tree, offset+4, tag_len - 4, ti_len); @@ -8833,11 +8887,11 @@ dissect_interworking(packet_info *pinfo, proto_tree *tree, proto_item *item, { guint8 len; - offset++; + offset += 1; len = tvb_get_guint8(tvb, offset); - offset++; + offset += 1; - if (tvb_reported_length_remaining(tvb, offset) < len || len == 0) { + if ((tvb_reported_length_remaining(tvb, offset) < len) || (len == 0)) { expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Truncated Interworking element"); return offset; @@ -8853,20 +8907,20 @@ dissect_interworking(packet_info *pinfo, proto_tree *tree, proto_item *item, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_ieee80211_tag_interworking_uesa, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; - if (len == 1 + 2 || len == 1 + 2 + 6) { + if ((len == (1 + 2)) || (len == (1 + 2 + 6))) { dissect_venue_info(tree, tvb, offset); offset += 2; } - if (len == 1 + 6 || len == 1 + 2 + 6) { + if ((len == (1 + 6)) || (len == (1 + 2 + 6))) { proto_tree_add_item(tree, hf_ieee80211_tag_interworking_hessid, tvb, offset, 6, ENC_NA); offset += 6; } - if (len != 1 && len != 1 + 2 && len != 1 + 6 && len != 1 + 2 + 6) { + if ((len != 1) && (len != (1 + 2)) && (len != (1 + 6)) && (len != (1 + 2 + 6))) { expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Invalid Interworking element length"); } @@ -8881,12 +8935,12 @@ dissect_roaming_consortium(packet_info *pinfo, proto_tree *tree, guint8 len, oi_lens, oi1_len, oi2_len; int end; - offset++; + offset += 1; len = tvb_get_guint8(tvb, offset); - offset++; + offset += 1; end = offset + len; - if (tvb_reported_length_remaining(tvb, offset) < len || len < 2) { + if ((tvb_reported_length_remaining(tvb, offset) < len) || (len < 2)) { expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Truncated Roaming Consortium element"); return 2 + len; @@ -8894,7 +8948,7 @@ dissect_roaming_consortium(packet_info *pinfo, proto_tree *tree, proto_tree_add_item(tree, hf_ieee80211_tag_roaming_consortium_num_anqp_oi, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; oi_lens = tvb_get_guint8(tvb, offset); oi1_len = oi_lens & 0x0f; @@ -8903,7 +8957,7 @@ dissect_roaming_consortium(packet_info *pinfo, proto_tree *tree, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_ieee80211_tag_roaming_consortium_oi2_len, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; if (offset + oi1_len > end) { expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, @@ -8944,9 +8998,10 @@ dissect_roaming_consortium(packet_info *pinfo, proto_tree *tree, static int beacon_padding = 0; /* beacon padding bug */ -static int ieee80211_tag_ssid(packet_info *pinfo, proto_tree *tree, - proto_item *ti, proto_item *ti_len, - guint32 tag_len, tvbuff_t *tvb, int offset) +static int +ieee80211_tag_ssid(packet_info *pinfo, proto_tree *tree, + proto_item *ti, proto_item *ti_len, + guint32 tag_len, tvbuff_t *tvb, int offset) { /* 7.3.2.1 SSID element (0) */ guint8 *ssid; /* The SSID may consist of arbitrary bytes */ @@ -8954,7 +9009,7 @@ static int ieee80211_tag_ssid(packet_info *pinfo, proto_tree *tree, if (beacon_padding != 0) /* padding bug */ return offset; - if(tag_len > MAX_SSID_LEN) { + if (tag_len > MAX_SSID_LEN) { expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, "SSID length (%u) greater than maximum (%u)", tag_len, MAX_SSID_LEN); @@ -8978,15 +9033,16 @@ static int ieee80211_tag_ssid(packet_info *pinfo, proto_tree *tree, col_append_str(pinfo->cinfo, COL_INFO, ", SSID=Broadcast"); } - beacon_padding++; /* padding bug */ + beacon_padding += 1; /* padding bug */ return offset + 2 + tag_len; } -static int ieee80211_tag_supp_rates(packet_info *pinfo, proto_tree *tree, - proto_item *ti, proto_item *ti_len, - guint32 tag_len, tvbuff_t *tvb, - int offset, int tag_end) +static int +ieee80211_tag_supp_rates(packet_info *pinfo, proto_tree *tree, + proto_item *ti, proto_item *ti_len, + guint32 tag_len, tvbuff_t *tvb, + int offset, int tag_end) { /* 7.3.2.2 Supported Rates element (1) */ if (tag_len < 1) { @@ -9002,10 +9058,10 @@ static int ieee80211_tag_supp_rates(packet_info *pinfo, proto_tree *tree, proto_tree_add_item(tree, hf_ieee80211_tag_supp_rates, tvb, offset, 1, ENC_BIG_ENDIAN); proto_item_append_text(ti, " %s,", - val_to_str_const(tvb_get_guint8(tvb, offset), - ieee80211_supported_rates_vals, - "Unknown Rate") ); - offset++; + val_to_str_ext_const(tvb_get_guint8(tvb, offset), + &ieee80211_supported_rates_vals_ext, + "Unknown Rate")); + offset += 1; } proto_item_append_text(ti, " [Mbit/sec]"); @@ -9013,9 +9069,10 @@ static int ieee80211_tag_supp_rates(packet_info *pinfo, proto_tree *tree, return offset; } -static int ieee80211_tag_fh_parameter(packet_info *pinfo, proto_tree *tree, - proto_item *ti_len, guint32 tag_len, - tvbuff_t *tvb, int offset) +static int +ieee80211_tag_fh_parameter(packet_info *pinfo, proto_tree *tree, + proto_item *ti_len, guint32 tag_len, + tvbuff_t *tvb, int offset) { /* 7.3.2.3 FH Parameter Set element (2) */ if (tag_len < 5) { @@ -9032,49 +9089,51 @@ static int ieee80211_tag_fh_parameter(packet_info *pinfo, proto_tree *tree, proto_tree_add_item(tree, hf_ieee80211_tag_fh_hop_set, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_tag_fh_hop_pattern, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_tag_fh_hop_index, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; return offset; } -static int ieee80211_tag_ds_parameter(packet_info *pinfo, proto_tree *tree, - proto_item *ti, proto_item *ti_len, - guint32 tag_len, tvbuff_t *tvb, - int offset) +static int +ieee80211_tag_ds_parameter(packet_info *pinfo, proto_tree *tree, + proto_item *ti, proto_item *ti_len, + guint32 tag_len, tvbuff_t *tvb, + int offset) { /* 7.3.2.4 DS Parameter Set element (3) */ if (tag_len != 1) { expert_add_info_format(pinfo, ti_len, PI_MALFORMED, PI_ERROR, - "Tag length %u wrong, must be = 1", tag_len); + "Tag length %u wrong, must be = 1", tag_len); return offset; } offset += 2; proto_tree_add_item(tree, hf_ieee80211_tag_ds_param_channel, - tvb, offset, 1, ENC_BIG_ENDIAN); + tvb, offset, 1, ENC_BIG_ENDIAN); proto_item_append_text(ti, ": Current Channel: %u", tvb_get_guint8(tvb, offset)); wlan_stats.channel = tvb_get_guint8(tvb, offset); - offset++; + offset += 1; return offset; } -static int ieee80211_tag_cf_parameter(packet_info *pinfo, proto_tree *tree, - proto_item *ti, proto_item *ti_len, - guint32 tag_len, tvbuff_t *tvb, - int offset) +static int +ieee80211_tag_cf_parameter(packet_info *pinfo, proto_tree *tree, + proto_item *ti, proto_item *ti_len, + guint32 tag_len, tvbuff_t *tvb, + int offset) { /* 7.3.2.5 CF Parameter Set element (4) */ if (tag_len != 6) { @@ -9088,12 +9147,12 @@ static int ieee80211_tag_cf_parameter(packet_info *pinfo, proto_tree *tree, proto_tree_add_item(tree, hf_ieee80211_tag_cfp_count, tvb, offset, 1, ENC_BIG_ENDIAN); proto_item_append_text(ti, ": CFP count %u", tvb_get_guint8(tvb, offset)); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_tag_cfp_period, tvb, offset, 1, ENC_BIG_ENDIAN); proto_item_append_text(ti, ": CFP Period %u", tvb_get_guint8(tvb, offset)); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_tag_cfp_max_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -9105,14 +9164,15 @@ static int ieee80211_tag_cf_parameter(packet_info *pinfo, proto_tree *tree, tvb, offset, 2, ENC_LITTLE_ENDIAN); proto_item_append_text(ti, ": CFP Dur Remaining %u", tvb_get_letohs(tvb, offset)); - offset++; + offset += 1; return offset; } -static int ieee80211_tag_tim(packet_info *pinfo, proto_tree *tree, - proto_item *ti, proto_item *ti_len, - guint32 tag_len, tvbuff_t *tvb, int offset) +static int +ieee80211_tag_tim(packet_info *pinfo, proto_tree *tree, + proto_item *ti, proto_item *ti_len, + guint32 tag_len, tvbuff_t *tvb, int offset) { proto_tree *bmapctl_tree; proto_item *bmapctl_item; @@ -9129,12 +9189,12 @@ static int ieee80211_tag_tim(packet_info *pinfo, proto_tree *tree, proto_tree_add_item(tree, hf_ieee80211_tim_dtim_count, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_item_append_text(ti, ": DTIM %u of", tvb_get_guint8(tvb, offset)); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_tim_dtim_period, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_item_append_text(ti, " %u bitmap", tvb_get_guint8(tvb, offset + 1)); - offset++; + offset += 1; bmapctl_item = proto_tree_add_item(tree, hf_ieee80211_tim_bmapctl, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -9143,7 +9203,7 @@ static int ieee80211_tag_tim(packet_info *pinfo, proto_tree *tree, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(bmapctl_tree, hf_ieee80211_tim_bmapctl_offset, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_tim_partial_virtual_bitmap, tvb, offset, tag_len - 3, ENC_NA); @@ -9152,10 +9212,11 @@ static int ieee80211_tag_tim(packet_info *pinfo, proto_tree *tree, return offset; } -static int ieee80211_tag_ibss_parameter(packet_info *pinfo, proto_tree *tree, - proto_item *ti, proto_item *ti_len, - guint32 tag_len, tvbuff_t *tvb, - int offset) +static int +ieee80211_tag_ibss_parameter(packet_info *pinfo, proto_tree *tree, + proto_item *ti, proto_item *ti_len, + guint32 tag_len, tvbuff_t *tvb, + int offset) { /* 7.3.2.7 IBSS Parameter Set element (6) */ @@ -9183,10 +9244,11 @@ static const value_string environment_vals[] = { { 0, NULL } }; -static int ieee80211_tag_country_info(packet_info *pinfo, proto_tree *tree, - proto_item *ti, proto_item *ti_len, - guint32 tag_len, tvbuff_t *tvb, - int offset, int tag_end) +static int +ieee80211_tag_country_info(packet_info *pinfo, proto_tree *tree, + proto_item *ti, proto_item *ti_len, + guint32 tag_len, tvbuff_t *tvb, + int offset, int tag_end) { /* 7.3.2.9 Country information element (7) */ proto_tree *sub_tree; @@ -9211,14 +9273,14 @@ static int ieee80211_tag_country_info(packet_info *pinfo, proto_tree *tree, proto_item_append_text(ti, ", Environment %s", val_to_str(tvb_get_guint8(tvb, offset), environment_vals,"Unknown (0x%02x)")); - offset++; + offset += 1; while (offset < tag_end) { /* Padding ? */ if ((tag_end - offset) < 3) { proto_tree_add_item(tree, hf_ieee80211_tag_country_info_pad, tvb, offset, 1, ENC_NA); - offset++; + offset += 1; continue; } if (tvb_get_guint8(tvb, offset) <= 200) { /* 802.11d */ @@ -9230,18 +9292,18 @@ static int ieee80211_tag_country_info(packet_info *pinfo, proto_tree *tree, tvb, offset, 1, ENC_BIG_ENDIAN); proto_item_append_text(sub_item, ": First Channel Number: %d", tvb_get_guint8(tvb, offset)); - offset++; + offset += 1; proto_tree_add_item(sub_tree, hf_ieee80211_tag_country_info_fnm_nc, tvb, offset, 1, ENC_BIG_ENDIAN); proto_item_append_text(sub_item, ", Number of Channels: %d", tvb_get_guint8(tvb, offset)); - offset++; + offset += 1; proto_tree_add_item(sub_tree, hf_ieee80211_tag_country_info_fnm_mtpl, tvb, offset, 1, ENC_BIG_ENDIAN); proto_item_append_text(sub_item, ", Maximum Transmit Power Level: %d dBm", tvb_get_guint8(tvb, offset)); - offset++; + offset += 1; } else { /* 802.11j */ sub_item = proto_tree_add_item(tree, hf_ieee80211_tag_country_info_rrc, tvb, offset, 3, ENC_NA); @@ -9252,29 +9314,30 @@ static int ieee80211_tag_country_info(packet_info *pinfo, proto_tree *tree, proto_item_append_text(sub_item, ": Regulatory Extension Identifier: %d", tvb_get_guint8(tvb, offset)); - offset++; + offset += 1; proto_tree_add_item(sub_tree, hf_ieee80211_tag_country_info_rrc_rc, tvb, offset, 1, ENC_BIG_ENDIAN); proto_item_append_text(sub_item, ", Regulatory Class: %d", tvb_get_guint8(tvb, offset)); - offset++; + offset += 1; proto_tree_add_item(sub_tree, hf_ieee80211_tag_country_info_rrc_cc, tvb, offset, 1, ENC_BIG_ENDIAN); proto_item_append_text(sub_item, ", Coverage Class: %d", tvb_get_guint8(tvb, offset)); - offset++; + offset += 1; } } return offset; } -static int ieee80211_tag_fh_hopping_parameter(packet_info *pinfo, - proto_tree *tree, - proto_item *ti, - proto_item *ti_len, - guint32 tag_len, tvbuff_t *tvb, - int offset) +static int +ieee80211_tag_fh_hopping_parameter(packet_info *pinfo, + proto_tree *tree, + proto_item *ti, + proto_item *ti_len, + guint32 tag_len, tvbuff_t *tvb, + int offset) { /* 7.3.2.10 Hopping Pattern Parameters information element (8) */ if (tag_len < 2) { @@ -9288,21 +9351,22 @@ static int ieee80211_tag_fh_hopping_parameter(packet_info *pinfo, proto_tree_add_item(tree, hf_ieee80211_tag_fh_hopping_parameter_prime_radix, tvb, offset, 1, ENC_BIG_ENDIAN); proto_item_append_text(ti, ": Prime Radix: %u", tvb_get_guint8(tvb, offset)); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_tag_fh_hopping_parameter_nb_channels, tvb, offset, 1, ENC_BIG_ENDIAN); proto_item_append_text(ti, ", Number of Channels: %u", tvb_get_guint8(tvb, offset)); - offset++; + offset += 1; return offset; } -static int ieee80211_tag_fh_hopping_table(packet_info *pinfo, proto_tree *tree, - proto_item *ti_len, - guint32 tag_len, tvbuff_t *tvb, - int offset, int tag_end) +static int +ieee80211_tag_fh_hopping_table(packet_info *pinfo, proto_tree *tree, + proto_item *ti_len, + guint32 tag_len, tvbuff_t *tvb, + int offset, int tag_end) { /* 7.3.2.11 Hopping Pattern Table information element (9) */ if (tag_len < 4) { @@ -9315,19 +9379,19 @@ static int ieee80211_tag_fh_hopping_table(packet_info *pinfo, proto_tree *tree, proto_tree_add_item(tree, hf_ieee80211_tag_fh_hopping_table_flag, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_tag_fh_hopping_table_number_of_sets, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_tag_fh_hopping_table_modulus, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; proto_tree_add_item(tree, hf_ieee80211_tag_fh_hopping_table_offset, tvb, offset, 1, ENC_BIG_ENDIAN); - offset++; + offset += 1; while (offset < tag_end) { proto_tree_add_item(tree, hf_ieee80211_tag_fh_hopping_random_table, @@ -9339,24 +9403,25 @@ static int ieee80211_tag_fh_hopping_table(packet_info *pinfo, proto_tree *tree, } static int -add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int offset, int ftype) +add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset, int ftype) { - guint32 oui; - tvbuff_t *tag_tvb; + guint32 oui; + tvbuff_t *tag_tvb; const guint8 *tag_data_ptr; - guint32 tag_no, tag_len; - int n, ret; - char print_buff[SHORT_STR]; - proto_tree * orig_tree=tree; - proto_item *ti = NULL, *ti_len = NULL; - int tag_end; - - tag_no = tvb_get_guint8(tvb, offset); + guint32 tag_no, tag_len; + int n, ret; + char print_buff[SHORT_STR]; + proto_tree *orig_tree = tree; + proto_item *ti = NULL; + proto_item *ti_len; + int tag_end; + + tag_no = tvb_get_guint8(tvb, offset); tag_len = tvb_get_guint8(tvb, offset + 1); tag_end = offset + 2 + tag_len; if (tree) { ti = proto_tree_add_item(orig_tree, hf_ieee80211_tag, tvb, offset, 2 + tag_len , ENC_NA); - proto_item_append_text(ti, ": %s", val_to_str(tag_no, tag_num_vals, "Reserved (%d)")); + proto_item_append_text(ti, ": %s", val_to_str_ext(tag_no, &tag_num_vals_ext, "Reserved (%d)")); tree = proto_item_add_subtree(ti, ett_80211_mgt_ie); @@ -9407,7 +9472,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off break; case TAG_REQUEST: /* 7.3.2.12 Request information element (10) */ - while(offset < tag_end ) + while (offset < tag_end) { proto_tree_add_item(tree, hf_ieee80211_tag_request, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; @@ -9415,7 +9480,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off break; case TAG_QBSS_LOAD: /* 7.3.2.28 BSS Load element (11) */ - if (tag_len < 4 || tag_len >5) + 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); break; @@ -9680,18 +9745,18 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off { proto_item *chan_item; proto_tree *chan_tree; - guint i = 1; + guint i = 1; 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); break; } - while(offset < tag_end) + while (offset < tag_end) { chan_item = proto_tree_add_item(tree, hf_ieee80211_tag_supported_channels, tvb, offset, 2, ENC_NA); proto_item_append_text(chan_item, " #%d", i); - i++; + i += 1; chan_tree = proto_item_add_subtree(chan_item , ett_tag_supported_channels); @@ -9762,7 +9827,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off request_type = tvb_get_guint8 (tvb, offset); offset += 1; - switch(request_type) { + switch (request_type) { case 0: /* Basic Request */ case 1: /* Clear channel assessment (CCA) request */ case 2: /* Receive power indication (RPI) histogram request */ @@ -9815,7 +9880,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off proto_tree_add_item(sub_tree, hf_ieee80211_tag_measure_request_bssid, tvb, offset, 6, ENC_NA); offset += 6; - while(offset < tag_end) + while (offset < tag_end) { guint8 sub_id, sub_length, sub_tag_end; proto_tree_add_item(sub_tree, hf_ieee80211_tag_measure_request_beacon_sub_id, tvb, offset, 1, ENC_NA); @@ -9827,7 +9892,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off offset += 1; sub_tag_end = offset + sub_length; - switch(sub_id){ + switch (sub_id) { case MEASURE_REQ_BEACON_SUB_SSID: /* SSID (0) */ proto_tree_add_item(sub_tree, hf_ieee80211_tag_measure_request_beacon_sub_ssid, tvb, offset, sub_length, ENC_ASCII|ENC_NA); offset += sub_length; @@ -9853,7 +9918,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off /* no default action */ break; } - if(offset < sub_tag_end) + if (offset < sub_tag_end) { 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); @@ -10204,7 +10269,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off proto_tree_add_item(tree, hf_ieee80211_tag_dfs_recovery_interval, tvb, offset, 1, ENC_NA); offset += 1; - while(offset < tag_end) + while (offset < tag_end) { ti_sup_map = proto_tree_add_item(tree, hf_ieee80211_tag_dfs_channel_map, tvb, offset, 2, ENC_NA); sub_map_tree = proto_item_add_subtree(ti_sup_map, ett_tag_dfs_map_tree); @@ -10246,7 +10311,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off offset += 2; proto_tree_add_item(tree, hf_ieee80211_ts_delay, tvb, offset, 4, ENC_LITTLE_ENDIAN); - proto_item_append_text(ti, " : %d", tvb_get_ntohl(tvb, offset) ); + proto_item_append_text(ti, " : %d", tvb_get_ntohl(tvb, offset)); offset += 4; break; @@ -10289,17 +10354,17 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off break; case TAG_EXT_SUPP_RATES: /* 7.3.2.14 Extended Supported Rates element (50) */ - if(tag_len < 1) + 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); break; } offset += 2; - while(offset < tag_end) + while (offset < tag_end) { proto_tree_add_item(tree, hf_ieee80211_tag_ext_supp_rates, tvb, offset, 1, ENC_NA); - proto_item_append_text(ti, " %s,", val_to_str_const(tvb_get_guint8(tvb, offset), ieee80211_supported_rates_vals, "Unknown Rate") ); + proto_item_append_text(ti, " %s,", val_to_str_ext_const(tvb_get_guint8(tvb, offset), &ieee80211_supported_rates_vals_ext, "Unknown Rate")); offset += 1; } proto_item_append_text(ti, " [Mbit/sec]"); @@ -10556,7 +10621,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off break; case SELFPROT_ACTION_MESH_PEERING_CLOSE: - if (tag_len == 8 || tag_len == 24) + if ((tag_len == 8) || (tag_len == 24)) { proto_tree_add_item (tree, hf_ieee80211_mesh_peering_peer_link_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; @@ -10573,7 +10638,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off if (tag_len - (offset - start) == 16) { proto_tree_add_item(tree, hf_ieee80211_rsn_pmkid, tvb, offset, 16, ENC_NA); - offset +=16; + offset += 16; } break; } @@ -10766,13 +10831,13 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off "Neighbor Report: Error: Tag length must be at least 13 bytes long"); break; } - offset+=2; + offset += 2; tag_offset = offset; proto_tree_add_item(tree, hf_ieee80211_tag_neighbor_report_bssid, tvb, offset, 6, ENC_NA); /*** Begin: BSSID Information ***/ - offset+=6; + offset += 6; bssid_info = tvb_get_letohl (tvb, offset); parent_item = proto_tree_add_uint_format(tree, hf_ieee80211_tag_neighbor_report_bssid_info, tvb, offset, 4, bssid_info, "BSSID Information: 0x%08X", bssid_info); bssid_info_subtree = proto_item_add_subtree(parent_item, ett_tag_neighbor_report_bssid_info_tree); @@ -10791,24 +10856,24 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off proto_tree_add_uint(bssid_info_subtree, hf_ieee80211_tag_neighbor_report_bssid_info_reserved, tvb, offset+1, 3, (bssid_info & 0xfffff000) >> 12); /*** End: BSSID Information ***/ - offset+=4; + offset += 4; info = tvb_get_guint8 (tvb, offset); proto_tree_add_uint_format(tree, hf_ieee80211_tag_neighbor_report_reg_class, tvb, offset, 1, info, "Regulatory Class: 0x%02X", info); - offset++; + offset += 1; info = tvb_get_guint8 (tvb, offset); proto_tree_add_uint_format(tree, hf_ieee80211_tag_neighbor_report_channel_number, tvb, offset, 1, info, "Channel Number: 0x%02X", info); - offset++; + offset += 1; info = tvb_get_guint8 (tvb, offset); proto_tree_add_uint_format(tree, hf_ieee80211_tag_neighbor_report_phy_type, tvb, offset, 1, info, "PHY Type: 0x%02X", info); - offset++; + offset += 1; sub_tag_id = tvb_get_guint8 (tvb, offset); - offset++; + offset += 1; sub_tag_length = tvb_get_guint8 (tvb, offset); - offset++; + offset += 1; sub_tag_tvb = tvb_new_subset(tvb, offset, sub_tag_length, -1); switch (sub_tag_id) { @@ -10859,10 +10924,10 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off break; } - offset+=2; + offset += 2; tag_offset = offset; - offset+= add_fixed_field(tree, tvb, offset, FIELD_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT); + offset += add_fixed_field(tree, tvb, offset, FIELD_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT); if (tag_len > (offset - tag_offset)) { @@ -10886,15 +10951,15 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off break; } - offset+=2; + offset += 2; current_field = tvb_get_guint8 (tvb, offset); proto_tree_add_uint(tree, hf_ieee80211_tag_supported_reg_classes_current, tvb, offset, 1, current_field); - offset++; + offset += 1; /* Partially taken from the ssid section */ tag_data_ptr = tvb_get_ptr (tvb, offset, tag_len); - for (i = 0, n = 0; i < tag_len && n < SHORT_STR; i++) { + for (i = 0, n = 0; (i < tag_len) && (n < SHORT_STR); i++) { ret = g_snprintf (print_buff + n, SHORT_STR - n, (i == tag_len-1)?"%d":"%d, ", tag_data_ptr[i]); if (ret >= SHORT_STR - n) { /* ret >= means buffer truncated */ @@ -10913,7 +10978,7 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off proto_item_append_text(ti, ": Tag %u Len %u", tag_no, tag_len); break; } - if(offset < tag_end){ + if (offset < tag_end) { /* TODO: add Expert info to indicate there is unknown data ! but all tagged option don't yet return offset. For the moment, this code only remove Clang Warnings about not used offset... */ } @@ -10921,8 +10986,8 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off } void -ieee_80211_add_tagged_parameters (tvbuff_t * tvb, int offset, packet_info * pinfo, - proto_tree * tree, int tagged_parameters_len, int ftype) +ieee_80211_add_tagged_parameters (tvbuff_t *tvb, int offset, packet_info *pinfo, + proto_tree *tree, int tagged_parameters_len, int ftype) { int next_len; @@ -10934,7 +10999,7 @@ ieee_80211_add_tagged_parameters (tvbuff_t * tvb, int offset, packet_info * pinf /* XXX - flag this as an error? */ next_len = tagged_parameters_len; } - offset += next_len; + offset += next_len; tagged_parameters_len -= next_len; } } @@ -10943,15 +11008,14 @@ ieee_80211_add_tagged_parameters (tvbuff_t * tvb, int offset, packet_info * pinf /* Dissect 802.11 management frame */ /* ************************************************************************* */ static void -dissect_ieee80211_mgt (guint16 fcf, tvbuff_t * tvb, packet_info * pinfo, - proto_tree * tree) +dissect_ieee80211_mgt (guint16 fcf, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_item *ti = NULL; + proto_item *ti; proto_tree *mgt_tree; proto_tree *fixed_tree; proto_tree *tagged_tree; - int offset = 0; - int tagged_parameter_tree_len; + int offset = 0; + int tagged_parameter_tree_len; g_pinfo = pinfo; ieee80211_tvb_invalid = FALSE; @@ -11189,12 +11253,12 @@ dissect_ieee80211_mgt (guint16 fcf, tvbuff_t * tvb, packet_info * pinfo, proto_tree_add_item(aruba_tree, hf_ieee80211_aruba, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; /* HeartBeat Sequence */ - if ( type == 0x0005 ) + if (type == 0x0005) { proto_tree_add_item(aruba_tree, hf_ieee80211_aruba_hb_seq, tvb, offset, 8, ENC_BIG_ENDIAN); } /* MTU Size */ - if ( type == 0x0003 ) + if (type == 0x0003) { proto_tree_add_item(aruba_tree, hf_ieee80211_aruba_mtu, tvb, offset, 2, ENC_BIG_ENDIAN); } @@ -11233,7 +11297,7 @@ crc32_802_tvb_padded(tvbuff_t *tvb, guint hdr_len, guint hdr_size, guint len) ((unsigned char)(c_crc>>16)<<8) | ((unsigned char)(c_crc>>24)<<0); - return ( c_crc ); + return (c_crc); } typedef enum { @@ -11256,51 +11320,53 @@ typedef enum { */ static void -dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, - proto_tree * tree, gboolean fixed_length_header, gint fcs_len, - gboolean wlan_broken_fc, gboolean datapad, - gboolean is_ht) +dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo, + proto_tree *tree, gboolean fixed_length_header, gint fcs_len, + gboolean wlan_broken_fc, gboolean datapad, + gboolean is_ht) { - guint16 fcf, flags, frame_type_subtype, ctrl_fcf, ctrl_type_subtype; - guint16 seq_control; - guint32 seq_number, frag_number; - gboolean more_frags; - const guint8 *src = NULL; - const guint8 *dst = NULL; - const guint8 *bssid = NULL; - proto_item *ti = NULL; - proto_item *fcs_item = NULL; - proto_item *cw_item = NULL; - proto_item *hidden_item; - proto_tree *volatile hdr_tree = NULL; - proto_tree *fcs_tree = NULL; - proto_tree *cw_tree = NULL; - guint16 hdr_len, ohdr_len, htc_len = 0; - gboolean has_fcs, fcs_good, fcs_bad; - gint len, reported_len, ivlen; - gboolean is_amsdu = 0; - gboolean save_fragmented; - tvbuff_t *volatile next_tvb = NULL; - guint32 addr_type; + guint16 fcf, flags, frame_type_subtype, ctrl_fcf, ctrl_type_subtype; + guint16 seq_control; + guint32 seq_number, frag_number; + gboolean more_frags; + const guint8 *src = NULL; + const guint8 *dst = NULL; + const guint8 *bssid = NULL; + proto_item *ti = NULL; + proto_item *fcs_item = NULL; + proto_item *cw_item = NULL; + proto_item *hidden_item; + proto_tree *fcs_tree = NULL; + proto_tree *cw_tree = NULL; + guint16 hdr_len, ohdr_len; + guint16 htc_len = 0; + gboolean has_fcs, fcs_good, fcs_bad; + gint len, reported_len, ivlen; + gboolean is_amsdu = 0; + gboolean save_fragmented; + guint32 addr_type; + guint8 octet1, octet2; + char out_buff[SHORT_STR]; + gint is_iv_bad; + guchar iv_buff[4]; + const char *addr1_str = NULL; + int addr1_hf = -1; + guint offset; + const gchar *fts_str; + gchar flag_str[] = "opmPRMFTC"; + gint ii; + guint16 qosoff = 0; + guint16 qos_control = 0; + gint meshctl_len = 0; + guint8 mesh_flags; + guint16 meshoff = 0; + static wlan_hdr whdrs[4]; + gboolean retransmitted; + volatile encap_t encap_type; - guint8 octet1, octet2; - char out_buff[SHORT_STR]; - gint is_iv_bad; - guchar iv_buff[4]; - const char *addr1_str = NULL; - int addr1_hf = -1; - guint offset; - const gchar *fts_str; - gchar flag_str[] = "opmPRMFTC"; - gint ii; - guint16 qosoff = 0, qos_control = 0; - gint meshctl_len = 0; - guint8 mesh_flags; - guint16 meshoff = 0; - - wlan_hdr *volatile whdr; - static wlan_hdr whdrs[4]; - gboolean retransmitted; + proto_tree *volatile hdr_tree = NULL; + tvbuff_t *volatile next_tvb = NULL; + wlan_hdr *volatile whdr; whdr= &whdrs[0]; @@ -11319,8 +11385,8 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, else hdr_len = find_header_length (fcf, ctrl_fcf, is_ht); - fts_str = val_to_str_const(frame_type_subtype, frame_type_subtype_vals, - "Unrecognized (Reserved frame)"); + fts_str = val_to_str_ext_const(frame_type_subtype, &frame_type_subtype_vals_ext, + "Unrecognized (Reserved frame)"); col_set_str (pinfo->cinfo, COL_INFO, fts_str); @@ -11334,13 +11400,13 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, } if (is_ht && IS_STRICTLY_ORDERED(flags) && - ((FCF_FRAME_TYPE(fcf) == MGT_FRAME) || (FCF_FRAME_TYPE(fcf) == DATA_FRAME && - DATA_FRAME_IS_QOS(frame_type_subtype)))) { + ((FCF_FRAME_TYPE(fcf) == MGT_FRAME) || + ((FCF_FRAME_TYPE(fcf) == DATA_FRAME) && DATA_FRAME_IS_QOS(frame_type_subtype)))) { htc_len = 4; } /* adjust the header length depending on the Mesh Control field */ - if (FCF_FRAME_TYPE(fcf) == DATA_FRAME && + if ((FCF_FRAME_TYPE(fcf) == DATA_FRAME) && DATA_FRAME_IS_QOS(frame_type_subtype)) { qosoff = hdr_len - htc_len - 2; qos_control = tvb_get_letohs(tvb, qosoff); @@ -11498,13 +11564,13 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, * Start shoving in other fields if needed. * XXX - Should we look for is_ht as well? */ - if (frame_type_subtype == CTRL_CONTROL_WRAPPER && tree) { + 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); dissect_frame_control(cw_tree, tvb, FALSE, offset); dissect_ht_control(hdr_tree, tvb, offset + 2); - offset+=6; + 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); @@ -11936,7 +12002,7 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, * We have the entire packet, and it includes a 4-byte FCS. * Slice it off, and put it into the tree. */ - len -= 4; + len -= 4; reported_len -= 4; if (tree) { @@ -11955,7 +12021,7 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, fcs_bad = TRUE; } - if(fcs_good) { + if (fcs_good) { fcs_item = proto_tree_add_uint_format(hdr_tree, hf_ieee80211_fcs, tvb, hdr_len + len, 4, sent_fcs, "Frame check sequence: 0x%08x [correct]", sent_fcs); @@ -12188,7 +12254,7 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, * data: last seq_control seen and frame number */ retransmitted = FALSE; - if(!pinfo->fd->flags.visited){ + if (!pinfo->fd->flags.visited) { retransmit_key key; retransmit_key *result; @@ -12196,40 +12262,41 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, memcpy(key.src, src, 6); key.seq_control = 0; result = (retransmit_key *)g_hash_table_lookup(fc_analyse_retransmit_table, &key); - if (result && result->seq_control == seq_control) { - /* keep a pointer to the first seen frame, could be done with proto data? */ - fnum = result->fnum; - g_hash_table_insert(fc_first_frame_table, GINT_TO_POINTER( pinfo->fd->num), - GINT_TO_POINTER(fnum)); - retransmitted = TRUE; + if (result && (result->seq_control == seq_control)) { + /* keep a pointer to the first seen frame, could be done with proto data? */ + fnum = result->fnum; + g_hash_table_insert(fc_first_frame_table, GINT_TO_POINTER(pinfo->fd->num), + GINT_TO_POINTER(fnum)); + retransmitted = TRUE; } else { - /* first time or new seq*/ - if (!result) { - result = se_alloc(sizeof(retransmit_key)); - *result = key; - g_hash_table_insert(fc_analyse_retransmit_table, result, result); - } - result->seq_control = seq_control; - result->fnum = pinfo->fd->num; - } - } - else if ((fnum = GPOINTER_TO_UINT(g_hash_table_lookup(fc_first_frame_table, GINT_TO_POINTER( pinfo->fd->num))))) { - retransmitted = TRUE; + /* first time or new seq*/ + if (!result) { + result = se_alloc(sizeof(retransmit_key)); + *result = key; + g_hash_table_insert(fc_analyse_retransmit_table, result, result); + } + result->seq_control = seq_control; + result->fnum = pinfo->fd->num; + } + } + else if ((fnum = GPOINTER_TO_UINT(g_hash_table_lookup(fc_first_frame_table, GINT_TO_POINTER(pinfo->fd->num))))) { + retransmitted = TRUE; } if (retransmitted) { - col_append_str(pinfo->cinfo, COL_INFO, " [retransmitted]"); - if (tree) { - proto_item *item; - - item=proto_tree_add_none_format(hdr_tree, hf_ieee80211_fc_analysis_retransmission, tvb, 0, 0, "Retransmitted frame"); - PROTO_ITEM_SET_GENERATED(item); - item=proto_tree_add_uint(hdr_tree, hf_ieee80211_fc_analysis_retransmission_frame,tvb, 0, 0, fnum); - PROTO_ITEM_SET_GENERATED(item); - } - next_tvb = tvb_new_subset (tvb, hdr_len, len, reported_len); - call_dissector(data_handle, next_tvb, pinfo, tree); - goto end_of_wlan; + col_append_str(pinfo->cinfo, COL_INFO, " [retransmitted]"); + if (tree) { + proto_item *item; + + item=proto_tree_add_none_format(hdr_tree, hf_ieee80211_fc_analysis_retransmission, tvb, 0, 0, + "Retransmitted frame"); + PROTO_ITEM_SET_GENERATED(item); + item=proto_tree_add_uint(hdr_tree, hf_ieee80211_fc_analysis_retransmission_frame,tvb, 0, 0, fnum); + PROTO_ITEM_SET_GENERATED(item); + } + next_tvb = tvb_new_subset (tvb, hdr_len, len, reported_len); + call_dissector(data_handle, next_tvb, pinfo, tree); + goto end_of_wlan; } } @@ -12244,17 +12311,17 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, if (IS_PROTECTED(FCF_FLAGS(fcf)) && !pinfo->pseudo_header->ieee_802_11.decrypted - && wlan_ignore_wep != WLAN_IGNORE_WEP_WO_IV) { + && (wlan_ignore_wep != WLAN_IGNORE_WEP_WO_IV)) { /* * It's a WEP or WPA encrypted frame, and it hasn't already been * decrypted; dissect the protections parameters and decrypt the data, * if we have a matching key. Otherwise display it as data. */ - gboolean can_decrypt = FALSE; - proto_tree *wep_tree = NULL; - guint32 iv; - guint8 key, keybyte; + gboolean can_decrypt = FALSE; + proto_tree *wep_tree = NULL; + guint32 iv; + guint8 key, keybyte; /* Davide Schiera (2006-11-27): define algorithms constants and macros */ #define PROTECTION_ALG_WEP AIRPDCAP_KEY_TYPE_WEP @@ -12281,8 +12348,6 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, key = KEY_OCTET_WEP_KEY(keybyte); if ((keybyte & KEY_EXTIV) && (len >= EXTIV_LEN)) { /* Extended IV; this frame is likely encrypted with TKIP or CCMP */ - - if (tree) { proto_item *extiv_fields; @@ -12334,9 +12399,9 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, } /* Subtract out the length of the IV. */ - len -= EXTIV_LEN; + len -= EXTIV_LEN; reported_len -= EXTIV_LEN; - ivlen = EXTIV_LEN; + ivlen = EXTIV_LEN; /* It is unknown whether this is TKIP or CCMP, so let's not even try to * parse TKIP Michael MIC+ICV or CCMP MIC. */ @@ -12355,10 +12420,10 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, } else { /* Ok, we have a trailer and the whole packet. Decrypt it! */ /* TODO: At the moment we won't add the trailer to the tree, */ - /* so don't remove the trailer from the packet */ - len -= sec_trailer; + /* so don't remove the trailer from the packet */ + len -= sec_trailer; reported_len -= sec_trailer; - can_decrypt = TRUE; + can_decrypt = TRUE; } } /* Davide Schiera -------------------------------------------------- */ @@ -12394,9 +12459,9 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree_add_uint (wep_tree, hf_ieee80211_wep_key, tvb, hdr_len + 3, 1, key); /* Subtract out the length of the IV. */ - len -= 4; + len -= 4; reported_len -= 4; - ivlen = 4; + ivlen = 4; /* Davide Schiera (2006-11-27): Even if the decryption was not */ /* successful, set the algorithm */ @@ -12425,7 +12490,7 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, */ reported_len -= 4; if (len > reported_len) - len = reported_len; + len = reported_len; } else { /* * We have the entire packet, and it includes a 4-byte ICV. @@ -12436,9 +12501,9 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, * XXX - the ICV is encrypted; we're putting the encrypted * value, not the decrypted value, into the tree. */ - len -= 4; + len -= 4; reported_len -= 4; - can_decrypt = TRUE; + can_decrypt = TRUE; } } @@ -12454,7 +12519,7 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, /* Davide Schiera (2006-11-26): decrypted before parsing header and */ /* protection header */ - if (!can_decrypt || next_tvb == NULL) { + if (!can_decrypt || (next_tvb == NULL)) { /* * WEP decode impossible or failed, treat payload as raw data * and don't attempt fragment reassembly or further dissection. @@ -12463,27 +12528,27 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, if (tree) { /* Davide Schiera (2006-11-21): added WEP or WPA separation */ - if (algorithm==PROTECTION_ALG_WEP) { + if (algorithm == PROTECTION_ALG_WEP) { if (can_decrypt) proto_tree_add_uint_format (wep_tree, hf_ieee80211_wep_icv, tvb, hdr_len + ivlen + len, 4, tvb_get_ntohl(tvb, hdr_len + ivlen + len), "WEP ICV: 0x%08x (not verified)", tvb_get_ntohl(tvb, hdr_len + ivlen + len)); - } else if (algorithm==PROTECTION_ALG_CCMP) { - } else if (algorithm==PROTECTION_ALG_TKIP) { + } else if (algorithm == PROTECTION_ALG_CCMP) { + } else if (algorithm == PROTECTION_ALG_TKIP) { } } /* Davide Schiera (2006-11-21) ---------------------------------- */ - if (pinfo->ethertype != ETHERTYPE_CENTRINO_PROMISC && wlan_ignore_wep == WLAN_IGNORE_WEP_NO) { + if ((pinfo->ethertype != ETHERTYPE_CENTRINO_PROMISC) && (wlan_ignore_wep == WLAN_IGNORE_WEP_NO)) { /* Some wireless drivers (such as Centrino) WEP payload already decrypted */ call_dissector(data_handle, next_tvb, pinfo, tree); goto end_of_wlan; } } else { /* Davide Schiera (2006-11-21): added WEP or WPA separation */ - if (algorithm==PROTECTION_ALG_WEP) { + if (algorithm == PROTECTION_ALG_WEP) { if (tree) proto_tree_add_uint_format (wep_tree, hf_ieee80211_wep_icv, tvb, hdr_len + ivlen + len, 4, @@ -12551,7 +12616,7 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, * life.) */ save_fragmented = pinfo->fragmented; - if (wlan_defragment && (more_frags || frag_number != 0)) { + if (wlan_defragment && (more_frags || (frag_number != 0))) { fragment_data *fd_head; /* @@ -12613,31 +12678,32 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, break; case DATA_FRAME: - if (is_amsdu && tvb_reported_length_remaining(next_tvb, 0) > 4){ - tvbuff_t *volatile msdu_tvb = NULL; - guint32 msdu_offset = 0; - guint i = 1; - const guint8 *lcl_src = NULL; - const guint8 *lcl_dst = NULL; - guint16 msdu_length; - proto_item *parent_item; - proto_tree *mpdu_tree; - proto_tree *subframe_tree; + if (is_amsdu && (tvb_reported_length_remaining(next_tvb, 0) > 4)) { + proto_item *parent_item; + proto_tree *mpdu_tree; + guint32 msdu_offset = 0; + guint i = 1; parent_item = proto_tree_add_protocol_format(tree, proto_aggregate, next_tvb, 0, tvb_reported_length_remaining(next_tvb, 0), "IEEE 802.11 Aggregate MSDU"); mpdu_tree = proto_item_add_subtree(parent_item, ett_msdu_aggregation_parent_tree); do { - lcl_dst = tvb_get_ptr (next_tvb, msdu_offset, 6); - lcl_src = tvb_get_ptr (next_tvb, msdu_offset+6, 6); + tvbuff_t *volatile msdu_tvb; + const guint8 *lcl_src; + const guint8 *lcl_dst; + guint16 msdu_length; + proto_tree *subframe_tree; + + lcl_dst = tvb_get_ptr (next_tvb, msdu_offset, 6); + lcl_src = tvb_get_ptr (next_tvb, msdu_offset+6, 6); msdu_length = tvb_get_ntohs (next_tvb, msdu_offset+12); parent_item = proto_tree_add_uint_format(mpdu_tree, hf_ieee80211_amsdu_msdu_header_text, next_tvb, msdu_offset, roundup2(msdu_offset+14+msdu_length, 4), i, "A-MSDU Subframe #%u", i); subframe_tree = proto_item_add_subtree(parent_item, ett_msdu_aggregation_subframe_tree); - i++; + i += 1; proto_tree_add_ether(subframe_tree, hf_ieee80211_addr_da, next_tvb, msdu_offset, 6, lcl_dst); proto_tree_add_ether(subframe_tree, hf_ieee80211_addr_sa, next_tvb, msdu_offset+6, 6, lcl_src); @@ -12687,13 +12753,13 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, TRY { octet1 = tvb_get_guint8(next_tvb, 0); octet2 = tvb_get_guint8(next_tvb, 1); - if (octet1 != 0xaa || octet2 != 0xaa) { - if (tvb_memeql(next_tvb, 6, pinfo->dl_src.data, 6) == 0 || - tvb_memeql(next_tvb, 0, pinfo->dl_dst.data, 6) == 0) + if ((octet1 != 0xaa) || (octet2 != 0xaa)) { + if ((tvb_memeql(next_tvb, 6, pinfo->dl_src.data, 6) == 0) || + (tvb_memeql(next_tvb, 0, pinfo->dl_dst.data, 6) == 0)) encap_type = ENCAP_ETHERNET; - else if (octet1 == 0xff && octet2 == 0xff) + else if ((octet1 == 0xff) && (octet2 == 0xff)) encap_type = ENCAP_IPX; - else if (octet1 == 0x00 && octet2 == 0x00) { + else if ((octet1 == 0x00) && (octet2 == 0x00)) { proto_tree_add_text(tree, next_tvb, 0, 2, "Mysterious OLPC stuff"); next_tvb = tvb_new_subset_remaining (next_tvb, 2); } @@ -12733,20 +12799,20 @@ dissect_ieee80211_common (tvbuff_t * tvb, packet_info * pinfo, * Dissect 802.11 with a variable-length link-layer header. */ static void -dissect_ieee80211 (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) +dissect_ieee80211 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_ieee80211_common (tvb, pinfo, tree, FALSE, - pinfo->pseudo_header->ieee_802_11.fcs_len, FALSE, FALSE, FALSE); + pinfo->pseudo_header->ieee_802_11.fcs_len, FALSE, FALSE, FALSE); } /* * Dissect 802.11 with a variable-length link-layer header and data padding. */ static void -dissect_ieee80211_datapad (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) +dissect_ieee80211_datapad (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_ieee80211_common (tvb, pinfo, tree, FALSE, - pinfo->pseudo_header->ieee_802_11.fcs_len, FALSE, TRUE, FALSE); + pinfo->pseudo_header->ieee_802_11.fcs_len, FALSE, TRUE, FALSE); } /* @@ -12755,7 +12821,7 @@ dissect_ieee80211_datapad (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tre * packets with the control field byte swapped). */ static void -dissect_ieee80211_bsfc (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) +dissect_ieee80211_bsfc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_ieee80211_common (tvb, pinfo, tree, FALSE, 0, TRUE, FALSE, FALSE); } @@ -12765,7 +12831,7 @@ dissect_ieee80211_bsfc (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) * maximum length). */ static void -dissect_ieee80211_fixed (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) +dissect_ieee80211_fixed (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_ieee80211_common (tvb, pinfo, tree, TRUE, 0, FALSE, FALSE, FALSE); } @@ -12776,10 +12842,10 @@ dissect_ieee80211_fixed (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) * If so, we can dispense with this. */ static void -dissect_ieee80211_ht (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) +dissect_ieee80211_ht (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_ieee80211_common (tvb, pinfo, tree, FALSE, - pinfo->pseudo_header->ieee_802_11.fcs_len, FALSE, FALSE, TRUE); + pinfo->pseudo_header->ieee_802_11.fcs_len, FALSE, FALSE, TRUE); } static void @@ -12795,7 +12861,7 @@ retransmit_hash(gconstpointer k) { const retransmit_key *key = (const retransmit_key *)k; guint hash_val; - int i; + int i; hash_val = 0; for (i = 0; i < 6; i++) @@ -12813,7 +12879,7 @@ retransmit_equal(gconstpointer k1, gconstpointer k2) const retransmit_key *key1 = (const retransmit_key *)k1; const retransmit_key *key2 = (const retransmit_key *)k2; - return ( (!memcmp(key1->bssid, key2->bssid, 6) && !memcmp( key1->src, key2->src, 6))? TRUE:FALSE); + return ((!memcmp(key1->bssid, key2->bssid, 6) && !memcmp(key1->src, key2->src, 6)) ? TRUE:FALSE); } static guint @@ -12833,25 +12899,249 @@ frame_equal(gconstpointer k1, gconstpointer k2) return frame1==frame2; } +/* Davide Schiera (2006-11-26): this function will try to decrypt with WEP or */ +/* WPA and return a tvb to the caller to add a new tab. It returns the */ +/* algorithm used for decryption (WEP, TKIP, CCMP) and the header and */ +/* trailer lengths. */ +static tvbuff_t * +try_decrypt(tvbuff_t *tvb, guint offset, guint len, guint8 *algorithm, guint32 *sec_header, guint32 *sec_trailer) +{ + const guint8 *enc_data; + tvbuff_t *decr_tvb = NULL; + guint32 dec_caplen; + guchar dec_data[AIRPDCAP_MAX_CAPLEN]; + AIRPDCAP_KEY_ITEM used_key; + + if (!enable_decryption) + return NULL; + + /* get the entire packet */ + enc_data = tvb_get_ptr(tvb, 0, len+offset); + + /* process packet with AirPDcap */ + if (AirPDcapPacketProcess(&airpdcap_ctx, enc_data, offset, offset+len, dec_data, &dec_caplen, + &used_key, FALSE, TRUE)==AIRPDCAP_RET_SUCCESS) + { + guint8 *tmp; + *algorithm=used_key.KeyType; + switch (*algorithm) { + case AIRPDCAP_KEY_TYPE_WEP: + *sec_header=AIRPDCAP_WEP_HEADER; + *sec_trailer=AIRPDCAP_WEP_TRAILER; + break; + case AIRPDCAP_KEY_TYPE_CCMP: + *sec_header=AIRPDCAP_RSNA_HEADER; + *sec_trailer=AIRPDCAP_CCMP_TRAILER; + break; + case AIRPDCAP_KEY_TYPE_TKIP: + *sec_header=AIRPDCAP_RSNA_HEADER; + *sec_trailer=AIRPDCAP_TKIP_TRAILER; + break; + default: + return NULL; + } + + /* allocate buffer for decrypted payload */ + tmp = g_memdup(dec_data+offset, dec_caplen-offset); + + len = dec_caplen-offset; + + /* decrypt successful, let's set up a new data tvb. */ + decr_tvb = tvb_new_child_real_data(tvb, tmp, len, len); + tvb_set_free_cb(decr_tvb, g_free); + } + + return decr_tvb; +} +/* Davide Schiera ----------------------------------------------------------- */ + + +/* Collect our WEP and WPA keys */ +static void +set_airpdcap_keys(void) +{ + PAIRPDCAP_KEYS_COLLECTION keys; + GByteArray *bytes = NULL; + guint i; + + keys = (PAIRPDCAP_KEYS_COLLECTION)se_alloc(sizeof(AIRPDCAP_KEYS_COLLECTION)); + keys->nKeys = 0; + + for (i = 0; (uat_wep_key_records != NULL) && (i < num_wepkeys_uat) && (i < MAX_ENCRYPTION_KEYS); i++) + { + decryption_key_t *dk; + dk = parse_key_string(uat_wep_key_records[i].string, uat_wep_key_records[i].key); + + if (dk != NULL) + { + AIRPDCAP_KEY_ITEM key; + if (dk->type == AIRPDCAP_KEY_TYPE_WEP) + { + gboolean res; + key.KeyType = AIRPDCAP_KEY_TYPE_WEP; + + bytes = g_byte_array_new(); + res = hex_str_to_bytes(dk->key->str, bytes, FALSE); + + if (dk->key->str && res && (bytes->len > 0) && (bytes->len <= AIRPDCAP_WEP_KEY_MAXLEN)) + { + /* + * WEP key is correct (well, the can be even or odd, so it is not + * a real check, I think... is a check performed somewhere in the + * AirPDcap function???) + */ + memcpy(key.KeyData.Wep.WepKey, bytes->data, bytes->len); + key.KeyData.Wep.WepKeyLen = bytes->len; + keys->Keys[keys->nKeys] = key; + keys->nKeys += 1; + } + } + else if (dk->type == AIRPDCAP_KEY_TYPE_WPA_PWD) + { + key.KeyType = AIRPDCAP_KEY_TYPE_WPA_PWD; + + /* XXX - This just lops the end if the key off if it's too long. + * Should we handle this more gracefully? */ + g_strlcpy(key.UserPwd.Passphrase, dk->key->str, AIRPDCAP_WPA_PASSPHRASE_MAX_LEN+1); + + key.UserPwd.SsidLen = 0; + if ((dk->ssid != NULL) && (dk->ssid->len <= AIRPDCAP_WPA_SSID_MAX_LEN)) + { + memcpy(key.UserPwd.Ssid, dk->ssid->data, dk->ssid->len); + key.UserPwd.SsidLen = dk->ssid->len; + } + + keys->Keys[keys->nKeys] = key; + keys->nKeys += 1; + } + else if (dk->type == AIRPDCAP_KEY_TYPE_WPA_PSK) + { + key.KeyType = AIRPDCAP_KEY_TYPE_WPA_PSK; + + bytes = g_byte_array_new(); + hex_str_to_bytes(dk->key->str, bytes, FALSE); + + /* XXX - Pass the correct array of bytes... */ + if (bytes->len <= AIRPDCAP_WPA_PSK_LEN) { + memcpy(key.KeyData.Wpa.Psk, bytes->data, bytes->len); + + keys->Keys[keys->nKeys] = key; + keys->nKeys += 1; + } + } + } + } + + /* Now set the keys */ + AirPDcapSetKeys(&airpdcap_ctx, keys->Keys, keys->nKeys); + if (bytes) + g_byte_array_free(bytes, TRUE); + +} + +static void +init_wepkeys(void) +{ + + /* + * XXX - AirPDcap - That God sends it to us beautiful (che dio ce la mandi bona) + * The next lines will add a key to the AirPDcap context. The keystring will be added + * to the old WEP array too, but we don't care, because the packets will come here + * already decrypted... One of these days we will fix this too + */ + set_airpdcap_keys(); +} + +/* + * This code had been taken from AirSnort crack.c function classify() + * Permission granted by snax shmoo dot com + * weak_iv - determine which key byte an iv is useful in resolving + * parm - p, pointer to the first byte of an IV + * return - n - this IV is weak for byte n of a WEP key + * -1 - this IV is not weak for any key bytes + * + * This function tests for IVs that are known to satisfy the criteria + * for a weak IV as specified in FMS section 7.1 + * + */ +static int +weak_iv(guchar *iv) +{ + guchar sum, k; + + if ((iv[1] == 255) && (iv[0] > 2) && (iv[0] < 16)) { + return iv[0] -3; + } + + sum = iv[0] + iv[1]; + if (sum == 1) { + if (iv[2] <= 0x0a) { + return iv[2] +2; + } + else if (iv[2] == 0xff) { + return 0; + } + } + k = 0xfe - iv[2]; + if ((sum == k) && ((iv[2] >= 0xf2) && (iv[2] <= 0xfe) && (iv[2] != 0xfd))) { + return k; + } + return -1; +} + static void wlan_retransmit_init(void) { - if ( fc_analyse_retransmit_table ){ - g_hash_table_destroy(fc_analyse_retransmit_table); - fc_analyse_retransmit_table = NULL; + if (fc_analyse_retransmit_table) { + g_hash_table_destroy(fc_analyse_retransmit_table); + fc_analyse_retransmit_table = NULL; } - if( fc_first_frame_table ){ - g_hash_table_destroy(fc_first_frame_table); - fc_first_frame_table = NULL; + if (fc_first_frame_table) { + g_hash_table_destroy(fc_first_frame_table); + fc_first_frame_table = NULL; } if (wlan_subdissector) - return; + return; fc_analyse_retransmit_table= g_hash_table_new(retransmit_hash, retransmit_equal); - fc_first_frame_table = g_hash_table_new( frame_hash, frame_equal); + fc_first_frame_table = g_hash_table_new(frame_hash, frame_equal); + +} + +static void +dissect_data_encap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +{ + int offset = 0; + guint8 type; + int tagged_parameter_tree_len; + proto_tree *tagged_tree; + + g_pinfo = pinfo; + type = tvb_get_guint8(tvb, offset); + proto_tree_add_item(tree, hf_ieee80211_data_encap_payload_type, tvb, offset, + 1, ENC_BIG_ENDIAN); + offset += 1; + switch (type) { + case 1: + col_set_str(pinfo->cinfo, COL_PROTOCOL, "RRB"); + /* TODO: IEEE 802.11r */ + break; + case 2: + col_set_str(pinfo->cinfo, COL_PROTOCOL, "TDLS"); + col_clear(pinfo->cinfo, COL_INFO); + offset += add_fixed_field(tree, tvb, offset, FIELD_ACTION); + tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset); + if (tagged_parameter_tree_len > 0) { + tagged_tree = get_tagged_parameter_tree(tree, tvb, offset, + tagged_parameter_tree_len); + ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree, + tagged_parameter_tree_len, -1); + } + break; + } } void @@ -12860,139 +13150,173 @@ proto_register_ieee80211 (void) static hf_register_info hf[] = { {&hf_ieee80211_fc_field, - {"Frame Control Field", "wlan.fc", FT_UINT16, BASE_HEX, NULL, 0, + {"Frame Control Field", "wlan.fc", + FT_UINT16, BASE_HEX, NULL, 0, "MAC Frame control", HFILL }}, {&hf_ieee80211_fc_proto_version, - {"Version", "wlan.fc.version", FT_UINT8, BASE_DEC, NULL, 0, + {"Version", "wlan.fc.version", + FT_UINT8, BASE_DEC, NULL, 0, "MAC Protocol version", HFILL }}, /* 0 */ {&hf_ieee80211_fc_frame_type, - {"Type", "wlan.fc.type", FT_UINT8, BASE_DEC, VALS(frame_type), 0, + {"Type", "wlan.fc.type", + FT_UINT8, BASE_DEC, VALS(frame_type), 0, "Frame type", HFILL }}, {&hf_ieee80211_fc_frame_subtype, - {"Subtype", "wlan.fc.subtype", FT_UINT8, BASE_DEC, NULL, 0, + {"Subtype", "wlan.fc.subtype", + FT_UINT8, BASE_DEC, NULL, 0, "Frame subtype", HFILL }}, /* 2 */ {&hf_ieee80211_fc_frame_type_subtype, - {"Type/Subtype", "wlan.fc.type_subtype", FT_UINT8, BASE_HEX, VALS(frame_type_subtype_vals), 0, + {"Type/Subtype", "wlan.fc.type_subtype", + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &frame_type_subtype_vals_ext, 0, "Type and subtype combined (first byte: type, second byte: subtype)", HFILL }}, {&hf_ieee80211_fc_flags, - {"Protocol Flags", "wlan.flags", FT_UINT8, BASE_HEX, NULL, 0, + {"Protocol Flags", "wlan.flags", + FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_fc_data_ds, - {"DS status", "wlan.fc.ds", FT_UINT8, BASE_HEX, VALS (&tofrom_ds), (FLAG_FROM_DS|FLAG_TO_DS), + {"DS status", "wlan.fc.ds", + FT_UINT8, BASE_HEX, VALS(tofrom_ds), (FLAG_FROM_DS|FLAG_TO_DS), "Data-frame DS-traversal status", HFILL }}, /* 3 */ {&hf_ieee80211_fc_to_ds, - {"To DS", "wlan.fc.tods", FT_BOOLEAN, 8, TFS (&tods_flag), FLAG_TO_DS, + {"To DS", "wlan.fc.tods", + FT_BOOLEAN, 8, TFS (&tods_flag), FLAG_TO_DS, "To DS flag", HFILL }}, /* 4 */ {&hf_ieee80211_fc_from_ds, - {"From DS", "wlan.fc.fromds", FT_BOOLEAN, 8, TFS (&fromds_flag), FLAG_FROM_DS, + {"From DS", "wlan.fc.fromds", + FT_BOOLEAN, 8, TFS (&fromds_flag), FLAG_FROM_DS, "From DS flag", HFILL }}, /* 5 */ {&hf_ieee80211_fc_more_frag, - {"More Fragments", "wlan.fc.frag", FT_BOOLEAN, 8, TFS (&more_fragments), FLAG_MORE_FRAGMENTS, + {"More Fragments", "wlan.fc.frag", + FT_BOOLEAN, 8, TFS (&more_fragments), FLAG_MORE_FRAGMENTS, "More Fragments flag", HFILL }}, /* 6 */ {&hf_ieee80211_fc_retry, - {"Retry", "wlan.fc.retry", FT_BOOLEAN, 8, TFS (&retry_flags), FLAG_RETRY, + {"Retry", "wlan.fc.retry", + FT_BOOLEAN, 8, TFS (&retry_flags), FLAG_RETRY, "Retransmission flag", HFILL }}, { &hf_ieee80211_fc_analysis_retransmission, - {"Retransmission", "wlan.analysis.retransmission", FT_NONE, BASE_NONE, - NULL, 0x0, "This frame is a suspected wireless retransmission", HFILL }}, + {"Retransmission", "wlan.analysis.retransmission", + FT_NONE, BASE_NONE, NULL, 0x0, + "This frame is a suspected wireless retransmission", HFILL }}, { &hf_ieee80211_fc_analysis_retransmission_frame, - {"Retransmission of frame", "wlan.analysis.retransmission_frame", FT_FRAMENUM, BASE_NONE, - NULL, 0x0, "This is a retransmission of frame #", HFILL }}, + {"Retransmission of frame", "wlan.analysis.retransmission_frame", + FT_FRAMENUM, BASE_NONE, NULL, 0x0, + "This is a retransmission of frame #", HFILL }}, {&hf_ieee80211_fc_pwr_mgt, - {"PWR MGT", "wlan.fc.pwrmgt", FT_BOOLEAN, 8, TFS (&pm_flags), FLAG_POWER_MGT, + {"PWR MGT", "wlan.fc.pwrmgt", + FT_BOOLEAN, 8, TFS (&pm_flags), FLAG_POWER_MGT, "Power management status", HFILL }}, {&hf_ieee80211_fc_more_data, - {"More Data", "wlan.fc.moredata", FT_BOOLEAN, 8, TFS (&md_flags), FLAG_MORE_DATA, + {"More Data", "wlan.fc.moredata", + FT_BOOLEAN, 8, TFS (&md_flags), FLAG_MORE_DATA, "More data flag", HFILL }}, {&hf_ieee80211_fc_protected, - {"Protected flag", "wlan.fc.protected", FT_BOOLEAN, 8, TFS (&protected_flags), FLAG_PROTECTED, + {"Protected flag", "wlan.fc.protected", + FT_BOOLEAN, 8, TFS (&protected_flags), FLAG_PROTECTED, NULL, HFILL }}, {&hf_ieee80211_fc_order, - {"Order flag", "wlan.fc.order", FT_BOOLEAN, 8, TFS (&order_flags), FLAG_ORDER, + {"Order flag", "wlan.fc.order", + FT_BOOLEAN, 8, TFS (&order_flags), FLAG_ORDER, "Strictly ordered flag", HFILL }}, {&hf_ieee80211_assoc_id, - {"Association ID","wlan.aid",FT_UINT16, BASE_DEC, NULL, 0x3FFF, + {"Association ID","wlan.aid" + ,FT_UINT16, BASE_DEC, NULL, 0x3FFF, "Association-ID field", HFILL }}, {&hf_ieee80211_did_duration, - {"Duration", "wlan.duration", FT_UINT16, BASE_DEC, NULL, 0, + {"Duration", "wlan.duration", + FT_UINT16, BASE_DEC, NULL, 0, "Duration field", HFILL }}, {&hf_ieee80211_addr_da, - {"Destination address", "wlan.da", FT_ETHER, BASE_NONE, NULL, 0, + {"Destination address", "wlan.da", + FT_ETHER, BASE_NONE, NULL, 0, "Destination Hardware Address", HFILL }}, {&hf_ieee80211_addr_sa, - {"Source address", "wlan.sa", FT_ETHER, BASE_NONE, NULL, 0, + {"Source address", "wlan.sa", + FT_ETHER, BASE_NONE, NULL, 0, "Source Hardware Address", HFILL }}, { &hf_ieee80211_addr, - {"Hardware address", "wlan.addr", FT_ETHER, BASE_NONE, NULL, 0, + {"Hardware address", "wlan.addr", + FT_ETHER, BASE_NONE, NULL, 0, "SA, DA, BSSID, RA or TA Hardware Address", HFILL }}, {&hf_ieee80211_addr_ra, - {"Receiver address", "wlan.ra", FT_ETHER, BASE_NONE, NULL, 0, + {"Receiver address", "wlan.ra", + FT_ETHER, BASE_NONE, NULL, 0, "Receiving Station Hardware Address", HFILL }}, {&hf_ieee80211_addr_ta, - {"Transmitter address", "wlan.ta", FT_ETHER, BASE_NONE, NULL, 0, + {"Transmitter address", "wlan.ta", + FT_ETHER, BASE_NONE, NULL, 0, "Transmitting Station Hardware Address", HFILL }}, {&hf_ieee80211_addr_bssid, - {"BSS Id", "wlan.bssid", FT_ETHER, BASE_NONE, NULL, 0, + {"BSS Id", "wlan.bssid", + FT_ETHER, BASE_NONE, NULL, 0, "Basic Service Set ID", HFILL }}, {&hf_ieee80211_frag_number, - {"Fragment number", "wlan.frag", FT_UINT16, BASE_DEC, NULL, 0, + {"Fragment number", "wlan.frag", + FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_seq_number, - {"Sequence number", "wlan.seq", FT_UINT16, BASE_DEC, NULL, 0, + {"Sequence number", "wlan.seq", + FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_qos_tid, - {"TID", "wlan.qos.tid", FT_UINT16, BASE_DEC, NULL, 0, + {"TID", "wlan.qos.tid", + FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_qos_priority, - {"Priority", "wlan.qos.priority", FT_UINT16, BASE_DEC, NULL, 0, + {"Priority", "wlan.qos.priority", + FT_UINT16, BASE_DEC, NULL, 0, "802.1D Tag", HFILL }}, {&hf_ieee80211_qos_eosp, - {"EOSP", "wlan.qos.eosp", FT_BOOLEAN, 8, TFS (&eosp_flag), QOS_FLAG_EOSP, + {"EOSP", "wlan.qos.eosp", + FT_BOOLEAN, 8, TFS (&eosp_flag), QOS_FLAG_EOSP, "EOSP Field", HFILL }}, {&hf_ieee80211_qos_bit4, - {"QoS bit 4", "wlan.qos.bit4", FT_BOOLEAN, 8, TFS (&bit4_flag), QOS_FLAG_EOSP, + {"QoS bit 4", "wlan.qos.bit4", + FT_BOOLEAN, 8, TFS (&bit4_flag), QOS_FLAG_EOSP, NULL, HFILL }}, {&hf_ieee80211_qos_ack_policy, - {"Ack Policy", "wlan.qos.ack", FT_UINT8, BASE_HEX, VALS (&ack_policy), 0, + {"Ack Policy", "wlan.qos.ack", + FT_UINT8, BASE_HEX, VALS(ack_policy), 0, NULL, HFILL }}, {&hf_ieee80211_qos_amsdu_present, - {"Payload Type", "wlan.qos.amsdupresent", FT_BOOLEAN, BASE_NONE, + {"Payload Type", "wlan.qos.amsdupresent", + FT_BOOLEAN, BASE_NONE, TFS(&ieee80211_qos_amsdu_present_flag), 0x0, NULL, HFILL }}, {&hf_ieee80211_qos_txop_limit, - {"TXOP Limit", "wlan.qos.txop_limit", FT_UINT16, BASE_DEC, NULL, 0, + {"TXOP Limit", "wlan.qos.txop_limit", + FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_qos_buf_state_indicated, @@ -13011,28 +13335,35 @@ proto_register_ieee80211 (void) NULL, HFILL }}, {&hf_ieee80211_qos_txop_dur_req, - {"TXOP Duration Requested", "wlan.qos.txop_dur_req", FT_UINT16, BASE_DEC, NULL, 0, + {"TXOP Duration Requested", "wlan.qos.txop_dur_req", + FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_qos_queue_size, - {"Queue Size", "wlan.qos.queue_size", FT_UINT16, BASE_DEC, NULL, 0, + {"Queue Size", "wlan.qos.queue_size", + FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_fcs, - {"Frame check sequence", "wlan.fcs", FT_UINT32, BASE_HEX, - NULL, 0, "Frame Check Sequence (FCS)", HFILL }}, + {"Frame check sequence", "wlan.fcs", + FT_UINT32, BASE_HEX, NULL, 0, + "Frame Check Sequence (FCS)", HFILL }}, {&hf_ieee80211_fcs_good, - {"Good", "wlan.fcs_good", FT_BOOLEAN, BASE_NONE, - NULL, 0x0, "True if the FCS is correct", HFILL }}, + {"Good", "wlan.fcs_good", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "True if the FCS is correct", HFILL }}, {&hf_ieee80211_fcs_bad, - {"Bad", "wlan.fcs_bad", FT_BOOLEAN, BASE_NONE, - NULL, 0x0, "True if the FCS is incorrect", HFILL }}, + {"Bad", "wlan.fcs_bad", + FT_BOOLEAN, BASE_NONE, NULL, 0x0, + "True if the FCS is incorrect", HFILL }}, {&hf_ieee80211_fragment_overlap, - {"Fragment overlap", "wlan.fragment.overlap", FT_BOOLEAN, BASE_NONE, - NULL, 0x0, "Fragment overlaps with other fragments", HFILL }}, + {"Fragment overlap", "wlan.fragment.overlap", + FT_BOOLEAN, BASE_NONE, + NULL, 0x0, + "Fragment overlaps with other fragments", HFILL }}, {&hf_ieee80211_fragment_overlap_conflict, {"Conflicting data in fragment overlap", "wlan.fragment.overlap.conflict", @@ -13055,199 +13386,247 @@ proto_register_ieee80211 (void) "Defragmentation error due to illegal fragments", HFILL }}, {&hf_ieee80211_fragment_count, - {"Fragment count", "wlan.fragment.count", FT_UINT32, BASE_DEC, NULL, 0x0, + {"Fragment count", "wlan.fragment.count", + FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, {&hf_ieee80211_fragment, - {"802.11 Fragment", "wlan.fragment", FT_FRAMENUM, BASE_NONE, NULL, 0x0, + {"802.11 Fragment", "wlan.fragment", + FT_FRAMENUM, BASE_NONE, NULL, 0x0, NULL, HFILL }}, {&hf_ieee80211_fragments, - {"802.11 Fragments", "wlan.fragments", FT_NONE, BASE_NONE, NULL, 0x0, + {"802.11 Fragments", "wlan.fragments", + FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }}, {&hf_ieee80211_reassembled_in, - {"Reassembled 802.11 in frame", "wlan.reassembled_in", FT_FRAMENUM, BASE_NONE, NULL, 0x0, + {"Reassembled 802.11 in frame", "wlan.reassembled_in", + FT_FRAMENUM, BASE_NONE, NULL, 0x0, "This 802.11 packet is reassembled in this frame", HFILL }}, {&hf_ieee80211_reassembled_length, - {"Reassembled 802.11 length", "wlan.reassembled.length", FT_UINT32, BASE_DEC, NULL, 0x0, + {"Reassembled 802.11 length", "wlan.reassembled.length", + FT_UINT32, BASE_DEC, NULL, 0x0, "The total length of the reassembled payload", HFILL }}, {&hf_ieee80211_wep_iv, - {"Initialization Vector", "wlan.wep.iv", FT_UINT24, BASE_HEX, NULL, 0, + {"Initialization Vector", "wlan.wep.iv", + FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_wep_iv_weak, - {"Weak IV", "wlan.wep.weakiv", FT_BOOLEAN, BASE_NONE, NULL,0x0, + {"Weak IV", "wlan.wep.weakiv", + FT_BOOLEAN, BASE_NONE, NULL,0x0, NULL,HFILL}}, {&hf_ieee80211_tkip_extiv, - {"TKIP Ext. Initialization Vector", "wlan.tkip.extiv", FT_STRING, - BASE_NONE, NULL, 0, "TKIP Extended Initialization Vector", HFILL }}, + {"TKIP Ext. Initialization Vector", "wlan.tkip.extiv", + FT_STRING, BASE_NONE, NULL, 0, + "TKIP Extended Initialization Vector", HFILL }}, {&hf_ieee80211_ccmp_extiv, - {"CCMP Ext. Initialization Vector", "wlan.ccmp.extiv", FT_STRING, - BASE_NONE, NULL, 0, "CCMP Extended Initialization Vector", HFILL }}, + {"CCMP Ext. Initialization Vector", "wlan.ccmp.extiv", + FT_STRING, BASE_NONE, NULL, 0, + "CCMP Extended Initialization Vector", HFILL }}, {&hf_ieee80211_wep_key, - {"Key Index", "wlan.wep.key", FT_UINT8, BASE_DEC, NULL, 0, + {"Key Index", "wlan.wep.key", + FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_wep_icv, - {"WEP ICV", "wlan.wep.icv", FT_UINT32, BASE_HEX, NULL, 0, + {"WEP ICV", "wlan.wep.icv", + FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_block_ack_request_control, {"Block Ack Request (BAR) Control", "wlan.bar.control", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_block_ack_control, {"Block Ack Request Control", "wlan.ba.control", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_block_ack_control_ack_policy, {"BAR Ack Policy", "wlan.ba.control.ackpolicy", - FT_BOOLEAN, 16, TFS (&ieee80211_block_ack_control_ack_policy_flag), 0x01, "Block Ack Request (BAR) Ack Policy", HFILL }}, + FT_BOOLEAN, 16, TFS (&ieee80211_block_ack_control_ack_policy_flag), 0x01, + "Block Ack Request (BAR) Ack Policy", HFILL }}, {&hf_ieee80211_block_ack_control_multi_tid, {"Multi-TID", "wlan.ba.control.multitid", - FT_BOOLEAN, 16, 0, 0x02, "Multi-Traffic Identifier (TID)", HFILL }}, + FT_BOOLEAN, 16, 0, 0x02, + "Multi-Traffic Identifier (TID)", HFILL }}, {&hf_ieee80211_block_ack_control_compressed_bitmap, {"Compressed Bitmap", "wlan.ba.control.cbitmap", - FT_BOOLEAN, 16, 0, 0x04, NULL, HFILL }}, + FT_BOOLEAN, 16, 0, 0x04, + NULL, HFILL }}, {&hf_ieee80211_block_ack_control_reserved, {"Reserved", "wlan.ba.control.cbitmap", - FT_UINT16, BASE_HEX, NULL, 0x0ff8, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0ff8, + NULL, HFILL }}, {&hf_ieee80211_block_ack_control_basic_tid_info, {"TID for which a Basic BlockAck frame is requested", "wlan.ba.basic.tidinfo", - FT_UINT16, BASE_HEX, NULL, 0xf000, "Traffic Identifier (TID) for which a Basic BlockAck frame is requested", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0xf000, + "Traffic Identifier (TID) for which a Basic BlockAck frame is requested", HFILL }}, {&hf_ieee80211_block_ack_control_compressed_tid_info, {"TID for which a BlockAck frame is requested", "wlan.bar.compressed.tidinfo", - FT_UINT16, BASE_HEX, NULL, 0xf000, "Traffic Identifier (TID) for which a BlockAck frame is requested", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0xf000, + "Traffic Identifier (TID) for which a BlockAck frame is requested", HFILL }}, {&hf_ieee80211_block_ack_control_multi_tid_info, {"Number of TIDs Present", "wlan.ba.mtid.tidinfo", - FT_UINT16, BASE_HEX, NULL, 0xf000, "Number of Traffic Identifiers (TIDs) Present", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0xf000, + "Number of Traffic Identifiers (TIDs) Present", HFILL }}, {&hf_ieee80211_block_ack_multi_tid_info, {"Traffic Identifier (TID) Info", "wlan.ba.mtid.tid", - FT_UINT8, BASE_DEC, 0, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_block_ack_multi_tid_reserved, {"Reserved", "wlan.bar.mtid.tidinfo.reserved", - FT_UINT16, BASE_HEX, 0, 0x0fff, NULL, HFILL }}, + FT_UINT16, BASE_HEX, 0, 0x0fff, + NULL, HFILL }}, {&hf_ieee80211_block_ack_multi_tid_value, {"Multi-TID Value", "wlan.bar.mtid.tidinfo.value", - FT_UINT16, BASE_HEX, 0, 0xf000, NULL, HFILL }}, + FT_UINT16, BASE_HEX, 0, 0xf000, + NULL, HFILL }}, {&hf_ieee80211_block_ack_request_type, {"Block Ack Request Type", "wlan.bar.type", - FT_UINT8, BASE_HEX, VALS(ieee80211_block_ack_request_type_flags), 0x06, "Block Ack Request (BAR) Type", HFILL }}, + FT_UINT8, BASE_HEX, VALS(ieee80211_block_ack_request_type_flags), 0x06, + "Block Ack Request (BAR) Type", HFILL }}, {&hf_ieee80211_block_ack_type, {"Block Ack Type", "wlan.ba.type", - FT_UINT8, BASE_HEX, VALS(ieee80211_block_ack_type_flags), 0x06, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(ieee80211_block_ack_type_flags), 0x06, + NULL, HFILL }}, {&hf_ieee80211_block_ack_bitmap, {"Block Ack Bitmap", "wlan.ba.bm", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_block_ack_bitmap_missing_frame, {"Missing frame", "wlan.ba.bm.missing_frame", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_data_encap_payload_type, {"Payload Type", "wlan.data_encap.payload_type", - FT_UINT8, BASE_DEC, VALS(ieee80211_data_encap_payload_types), 0, NULL, - HFILL }}, + FT_UINT8, BASE_DEC, VALS(ieee80211_data_encap_payload_types), 0, + NULL, HFILL }}, {&hf_ieee80211_ff_tdls_action_code, {"Action code", "wlan_mgt.fixed.action_code", - FT_UINT8, BASE_DEC, VALS(tdls_action_codes), 0, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &tdls_action_codes_ext, 0, "Management action code", HFILL }}, {&hf_ieee80211_ff_target_channel, {"Target Channel", "wlan_mgt.fixed.target_channel", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_regulatory_class, {"Regulatory Class", "wlan_mgt.fixed.regulatory_class", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_wnm_action_code, {"Action code", "wlan_mgt.fixed.action_code", - FT_UINT8, BASE_DEC, VALS(wnm_action_codes), 0, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &wnm_action_codes_ext, 0, "Management action code", HFILL }}, {&hf_ieee80211_ff_request_mode_pref_cand, - {"Preferred Candidate List Included", - "wlan_mgt.fixed.request_mode.pref_cand", - FT_UINT8, BASE_DEC, NULL, 0x01, NULL, HFILL }}, + {"Preferred Candidate List Included","wlan_mgt.fixed.request_mode.pref_cand", + FT_UINT8, BASE_DEC, NULL, 0x01, + NULL, HFILL }}, + {&hf_ieee80211_ff_request_mode_abridged, {"Abridged", "wlan_mgt.fixed.request_mode.abridged", - FT_UINT8, BASE_DEC, NULL, 0x02, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x02, + NULL, HFILL }}, + {&hf_ieee80211_ff_request_mode_disassoc_imminent, - {"Disassociation Imminent", - "wlan_mgt.fixed.request_mode.disassoc_imminent", - FT_UINT8, BASE_DEC, NULL, 0x04, NULL, HFILL }}, + {"Disassociation Imminent", "wlan_mgt.fixed.request_mode.disassoc_imminent", + FT_UINT8, BASE_DEC, NULL, 0x04, + NULL, HFILL }}, + {&hf_ieee80211_ff_request_mode_bss_term_included, - {"BSS Termination Included", - "wlan_mgt.fixed.request_mode.bss_term_included", - FT_UINT8, BASE_DEC, NULL, 0x08, NULL, HFILL }}, + {"BSS Termination Included", "wlan_mgt.fixed.request_mode.bss_term_included", + FT_UINT8, BASE_DEC, NULL, 0x08, + NULL, HFILL }}, + {&hf_ieee80211_ff_request_mode_ess_disassoc_imminent, - {"ESS Disassociation Imminent", - "wlan_mgt.fixed.request_mode.ess_disassoc_imminent", - FT_UINT8, BASE_DEC, NULL, 0x10, NULL, HFILL }}, + {"ESS Disassociation Imminent", "wlan_mgt.fixed.request_mode.ess_disassoc_imminent", + FT_UINT8, BASE_DEC, NULL, 0x10, + NULL, HFILL }}, + {&hf_ieee80211_ff_disassoc_timer, {"Disassociation Timer", "wlan_mgt.fixed.disassoc_timer", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - {&hf_ieee80211_ff_validity_interval, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, + + {&hf_ieee80211_ff_validity_interval, {"Validity Interval", "wlan_mgt.fixed.validity_interval", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_url_len, {"Session Information URL Length", "wlan_mgt.fixed.session_information.url_length", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_url, {"Session Information URL", "wlan_mgt.fixed.session_information.url", - FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, }; static hf_register_info ff[] = { {&hf_ieee80211_ff_timestamp, - {"Timestamp", "wlan_mgt.fixed.timestamp", FT_UINT64, BASE_HEX, - NULL, 0, NULL, HFILL }}, + {"Timestamp", "wlan_mgt.fixed.timestamp", + FT_UINT64, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_auth_alg, {"Authentication Algorithm", "wlan_mgt.fixed.auth.alg", - FT_UINT16, BASE_DEC, VALS (&auth_alg), 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, VALS(auth_alg), 0, + NULL, HFILL }}, {&hf_ieee80211_ff_beacon_interval, - {"Beacon Interval", "wlan_mgt.fixed.beacon", FT_UINT32, BASE_CUSTOM, beacon_interval_base_custom, 0, + {"Beacon Interval", "wlan_mgt.fixed.beacon", + FT_UINT32, BASE_CUSTOM, beacon_interval_base_custom, 0, NULL, HFILL }}, {&hf_ieee80211_fixed_parameters, - {"Fixed parameters", "wlan_mgt.fixed.all", FT_UINT16, BASE_DEC, NULL, 0, + {"Fixed parameters", "wlan_mgt.fixed.all", + FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_tagged_parameters, - {"Tagged parameters", "wlan_mgt.tagged.all", FT_UINT16, BASE_DEC, NULL, 0, + {"Tagged parameters", "wlan_mgt.tagged.all", + FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_tag_ssid, - {"SSID", "wlan_mgt.ssid", FT_STRING, BASE_NONE, NULL, 0, + {"SSID", "wlan_mgt.ssid", + FT_STRING, BASE_NONE, NULL, 0, "Indicates the identity of an ESS or IBSS", HFILL }}, {&hf_ieee80211_tag_supp_rates, {"Supported Rates", "wlan_mgt.supported_rates", - FT_UINT8, BASE_HEX, VALS(ieee80211_supported_rates_vals), 0x0, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_supported_rates_vals_ext, 0x0, "In Mbit/sec, (B) for Basic Rates", HFILL }}, {&hf_ieee80211_tag_fh_dwell_time, @@ -13271,563 +13650,683 @@ proto_register_ieee80211 (void) NULL, HFILL }}, {&hf_ieee80211_ff_block_ack_params, - {"Block Ack Parameters", "wlan_mgt.fixed.baparams", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + {"Block Ack Parameters", "wlan_mgt.fixed.baparams", + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_block_ack_params_amsdu_permitted, - {"A-MSDUs", "wlan_mgt.fixed.baparams.amsdu", - FT_BOOLEAN, 16, TFS (&ff_block_ack_params_amsdu_permitted_flag), 0x0001, "A-MSDU Permitted in QoS Data MPDUs", HFILL }}, + {"A-MSDUs", "wlan_mgt.fixed.baparams.amsdu", + FT_BOOLEAN, 16, TFS (&ff_block_ack_params_amsdu_permitted_flag), 0x0001, + "A-MSDU Permitted in QoS Data MPDUs", HFILL }}, {&hf_ieee80211_ff_block_ack_params_policy, - {"Block Ack Policy", "wlan_mgt.fixed.baparams.policy", - FT_BOOLEAN, 16, TFS (&ff_block_ack_params_policy_flag), 0x0002, NULL, HFILL }}, + {"Block Ack Policy", "wlan_mgt.fixed.baparams.policy", + FT_BOOLEAN, 16, TFS (&ff_block_ack_params_policy_flag), 0x0002, + NULL, HFILL }}, {&hf_ieee80211_ff_block_ack_params_tid, - {"Traffic Identifier", "wlan_mgt.fixed.baparams.tid", - FT_UINT16, BASE_HEX, NULL, 0x003C, NULL, HFILL }}, + {"Traffic Identifier", "wlan_mgt.fixed.baparams.tid", + FT_UINT16, BASE_HEX, NULL, 0x003C, + NULL, HFILL }}, {&hf_ieee80211_ff_block_ack_params_buffer_size, - {"Number of Buffers (1 Buffer = 2304 Bytes)", "wlan_mgt.fixed.baparams.buffersize", - FT_UINT16, BASE_DEC, NULL, 0xFFC0, "Number of Buffers", HFILL }}, + {"Number of Buffers (1 Buffer = 2304 Bytes)", "wlan_mgt.fixed.baparams.buffersize", + FT_UINT16, BASE_DEC, NULL, 0xFFC0, + "Number of Buffers", HFILL }}, {&hf_ieee80211_ff_block_ack_timeout, - {"Block Ack Timeout", "wlan_mgt.fixed.batimeout", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + {"Block Ack Timeout", "wlan_mgt.fixed.batimeout", + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_block_ack_ssc, {"Block Ack Starting Sequence Control (SSC)", "wlan_mgt.fixed.ssc", - FT_UINT16, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_block_ack_ssc_fragment, {"Fragment", "wlan_mgt.fixed.fragment", - FT_UINT16, BASE_DEC, 0, 0x000f, NULL, HFILL }}, + FT_UINT16, BASE_DEC, 0, 0x000f, + NULL, HFILL }}, {&hf_ieee80211_ff_block_ack_ssc_sequence, {"Starting Sequence Number", "wlan_mgt.fixed.sequence", - FT_UINT16, BASE_DEC, 0, 0xfff0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, 0, 0xfff0, + NULL, HFILL }}, {&hf_ieee80211_ff_delba_param, {"Delete Block Ack (DELBA) Parameter Set", "wlan_mgt.fixed.delba.param", - FT_UINT16, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_delba_param_reserved, {"Reserved", "wlan_mgt.fixed.delba.param.reserved", - FT_UINT16, BASE_HEX, 0, 0x07ff, NULL, HFILL }}, + FT_UINT16, BASE_HEX, 0, 0x07ff, + NULL, HFILL }}, {&hf_ieee80211_ff_delba_param_init, {"Initiator", "wlan_mgt.fixed.delba.param.initiator", - FT_BOOLEAN, 16, 0, 0x0800, NULL, HFILL }}, + FT_BOOLEAN, 16, 0, 0x0800, + NULL, HFILL }}, {&hf_ieee80211_ff_delba_param_tid, {"TID", "wlan_mgt.fixed.delba.param.tid", - FT_UINT16, BASE_HEX, 0, 0xf000, "Traffic Identifier (TID)", HFILL }}, + FT_UINT16, BASE_HEX, 0, 0xf000, + "Traffic Identifier (TID)", HFILL }}, {&hf_ieee80211_ff_max_reg_pwr, {"Maximum Regulation Power", "wlan_mgt.fixed.maxregpwr", - FT_UINT16, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_measurement_pilot_int, {"Measurement Pilot Interval", "wlan_mgt.fixed.msmtpilotint", - FT_UINT16, BASE_HEX, 0, 0, "Measurement Pilot Interval Fixed Field", HFILL }}, + FT_UINT16, BASE_HEX, 0, 0, + "Measurement Pilot Interval Fixed Field", HFILL }}, {&hf_ieee80211_ff_country_str, {"Country String", "wlan_mgt.fixed.country", - FT_STRING, BASE_NONE, 0, 0, NULL, HFILL }}, + FT_STRING, BASE_NONE, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_max_tx_pwr, {"Maximum Transmit Power", "wlan_mgt.fixed.maxtxpwr", - FT_UINT8, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_tx_pwr_used, {"Transmit Power Used", "wlan_mgt.fixed.txpwr", - FT_UINT8, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_transceiver_noise_floor, {"Transceiver Noise Floor", "wlan_mgt.fixed.tnoisefloor", - FT_UINT8, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_channel_width, {"Supported Channel Width", "wlan_mgt.fixed.chanwidth", - FT_UINT8, BASE_HEX, VALS (ff_channel_width_vals), 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(ff_channel_width_vals), 0, + NULL, HFILL }}, {&hf_ieee80211_ff_qos_info_ap, {"QoS Information (AP)", "wlan_mgt.fixed.qosinfo.ap", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_qos_info_ap_edca_param_set_counter, {"EDCA Parameter Set Update Count", "wlan_mgt.fixed.qosinfo.ap.edcaupdate", - FT_UINT8, BASE_HEX, NULL, 0x0F, "Enhanced Distributed Channel Access (EDCA) Parameter Set Update Count", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0x0F, + "Enhanced Distributed Channel Access (EDCA) Parameter Set Update Count", HFILL }}, {&hf_ieee80211_ff_qos_info_ap_q_ack, {"Q-Ack", "wlan_mgt.fixed.qosinfo.ap.qack", - FT_BOOLEAN, 8, TFS (&ff_qos_info_ap_q_ack_flag), 0x10, "QoS Ack", HFILL }}, + FT_BOOLEAN, 8, TFS (&ff_qos_info_ap_q_ack_flag), 0x10, + "QoS Ack", HFILL }}, {&hf_ieee80211_ff_qos_info_ap_queue_req, {"Queue Request", "wlan_mgt.fixed.qosinfo.ap", - FT_BOOLEAN, 8, TFS (&ff_qos_info_ap_queue_req_flag), 0x20, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&ff_qos_info_ap_queue_req_flag), 0x20, + NULL, HFILL }}, {&hf_ieee80211_ff_qos_info_ap_txop_request, {"TXOP Request", "wlan_mgt.fixed.qosinfo.ap.txopreq", - FT_BOOLEAN, 8, TFS (&ff_qos_info_ap_txop_request_flag), 0x40, "Transmit Opportunity (TXOP) Request", HFILL }}, + FT_BOOLEAN, 8, TFS (&ff_qos_info_ap_txop_request_flag), 0x40, + "Transmit Opportunity (TXOP) Request", HFILL }}, {&hf_ieee80211_ff_qos_info_ap_reserved, {"Reserved", "wlan_mgt.fixed.qosinfo.ap.reserved", - FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, {&hf_ieee80211_ff_qos_info_sta, {"QoS Information (STA)", "wlan_mgt.fixed.qosinfo.sta", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_qos_info_sta_ac_vo, {"AC_VO", "wlan_mgt.fixed.qosinfo.sta.ac.vo", - FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x01, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x01, + NULL, HFILL }}, {&hf_ieee80211_ff_qos_info_sta_ac_vi, {"AC_VI", "wlan_mgt.fixed.qosinfo.sta.ac.vi", - FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x02, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x02, + NULL, HFILL }}, {&hf_ieee80211_ff_qos_info_sta_ac_bk, {"AC_BK", "wlan_mgt.fixed.qosinfo.sta.ac.bk", - FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x04, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x04, + NULL, HFILL }}, {&hf_ieee80211_ff_qos_info_sta_ac_be, {"AC_BE", "wlan_mgt.fixed.qosinfo.sta.ac.be", - FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x08, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_ac_flag), 0x08, + NULL, HFILL }}, {&hf_ieee80211_ff_qos_info_sta_q_ack, {"Q-Ack", "wlan_mgt.fixed.qosinfo.sta.qack", - FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_q_ack_flag), 0x10, "QoS Ack", HFILL }}, + FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_q_ack_flag), 0x10, + "QoS Ack", HFILL }}, {&hf_ieee80211_ff_qos_info_sta_max_sp_len, {"Service Period (SP) Length", "wlan_mgt.fixed.qosinfo.sta.splen", - FT_UINT8, BASE_HEX, VALS (&ff_qos_info_sta_max_sp_len_flags) , 0x60, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(ff_qos_info_sta_max_sp_len_flags) , 0x60, + NULL, HFILL }}, {&hf_ieee80211_ff_qos_info_sta_more_data_ack, {"More Data Ack", "wlan_mgt.fixed.qosinfo.sta.moredataack", - FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_more_data_ack_flag), 0x80, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&ff_qos_info_sta_more_data_ack_flag), 0x80, + NULL, HFILL }}, {&hf_ieee80211_ff_sm_pwr_save, {"Spatial Multiplexing (SM) Power Control", "wlan_mgt.fixed.sm.powercontrol", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_sm_pwr_save_enabled, {"SM Power Save", "wlan_mgt.fixed.sm.powercontrol.enabled", - FT_BOOLEAN, 8, TFS (&tfs_enabled_disabled), 0x01, "Spatial Multiplexing (SM) Power Save", HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_enabled_disabled), 0x01, + "Spatial Multiplexing (SM) Power Save", HFILL }}, {&hf_ieee80211_ff_sm_pwr_save_sm_mode, {"SM Mode", "wlan_mgt.fixed.sm.powercontrol.mode", - FT_BOOLEAN, 8, TFS (&ff_sm_pwr_save_sm_mode_flag), 0x02, "Spatial Multiplexing (SM) Mode", HFILL }}, + FT_BOOLEAN, 8, TFS (&ff_sm_pwr_save_sm_mode_flag), 0x02, + "Spatial Multiplexing (SM) Mode", HFILL }}, {&hf_ieee80211_ff_sm_pwr_save_reserved, {"Reserved", "wlan_mgt.fixed.sm.powercontrol.reserved", - FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0xFC, + NULL, HFILL }}, {&hf_ieee80211_ff_pco_phase_cntrl, {"Phased Coexistence Operation (PCO) Phase Control", "wlan_mgt.fixed.pco.phasecntrl", - FT_BOOLEAN, BASE_NONE, TFS (&ff_pco_phase_cntrl_flag), 0x0, NULL, HFILL }}, + FT_BOOLEAN, BASE_NONE, TFS (&ff_pco_phase_cntrl_flag), 0x0, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_param_set, {"Power Save Multi-Poll (PSMP) Parameter Set", "wlan_mgt.fixed.psmp.paramset", - FT_UINT16, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_param_set_n_sta, {"Number of STA Info Fields Present", "wlan_mgt.fixed.psmp.paramset.nsta", - FT_UINT16, BASE_HEX, 0, 0x000F, NULL, HFILL }}, + FT_UINT16, BASE_HEX, 0, 0x000F, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_param_set_more_psmp, {"More PSMP", "wlan_mgt.fixed.psmp.paramset.more", - FT_BOOLEAN, 16, TFS(&ff_psmp_param_set_more_psmp_flag), 0x0010, "More Power Save Multi-Poll (PSMP)", HFILL }}, + FT_BOOLEAN, 16, TFS(&ff_psmp_param_set_more_psmp_flag), 0x0010, + "More Power Save Multi-Poll (PSMP)", HFILL }}, {&hf_ieee80211_ff_psmp_param_set_psmp_sequence_duration, {"PSMP Sequence Duration [us]", "wlan_mgt.fixed.psmp.paramset.seqduration", - FT_UINT16, BASE_DEC, 0, 0xFFE0, "Power Save Multi-Poll (PSMP) Sequence Duration", HFILL }}, + FT_UINT16, BASE_DEC, 0, 0xFFE0, + "Power Save Multi-Poll (PSMP) Sequence Duration", HFILL }}, {&hf_ieee80211_ff_mimo_cntrl, {"MIMO Control", "wlan_mgt.fixed.mimo.control.", - FT_BYTES, BASE_NONE, 0, 0x0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, 0, 0x0, + NULL, HFILL }}, {&hf_ieee80211_ff_mimo_cntrl_nc_index, {"Nc Index", "wlan_mgt.fixed.mimo.control.ncindex", - FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_nc_index_flags), 0x0003, "Number of Columns Less One", HFILL }}, + FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_nc_index_flags), 0x0003, + "Number of Columns Less One", HFILL }}, {&hf_ieee80211_ff_mimo_cntrl_nr_index, {"Nr Index", "wlan_mgt.fixed.mimo.control.nrindex", - FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_nr_index_flags), 0x000C, "Number of Rows Less One", HFILL }}, + FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_nr_index_flags), 0x000C, + "Number of Rows Less One", HFILL }}, {&hf_ieee80211_ff_mimo_cntrl_channel_width, {"Channel Width", "wlan_mgt.fixed.mimo.control.chanwidth", - FT_BOOLEAN, 16, TFS(&ff_mimo_cntrl_channel_width_flag), 0x0010, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS(&ff_mimo_cntrl_channel_width_flag), 0x0010, + NULL, HFILL }}, {&hf_ieee80211_ff_mimo_cntrl_grouping, {"Grouping (Ng)", "wlan_mgt.fixed.mimo.control.grouping", - FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_grouping_flags), 0x0060, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_grouping_flags), 0x0060, + NULL, HFILL }}, {&hf_ieee80211_ff_mimo_cntrl_coefficient_size, {"Coefficient Size (Nb)", "wlan_mgt.fixed.mimo.control.cosize", - FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_coefficient_size_flags), 0x0180, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_coefficient_size_flags), 0x0180, + NULL, HFILL }}, {&hf_ieee80211_ff_mimo_cntrl_codebook_info, {"Codebook Information", "wlan_mgt.fixed.mimo.control.codebookinfo", - FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_codebook_info_flags), 0x0600, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(ff_mimo_cntrl_codebook_info_flags), 0x0600, + NULL, HFILL }}, {&hf_ieee80211_ff_mimo_cntrl_remaining_matrix_segment, {"Remaining Matrix Segment", "wlan_mgt.fixed.mimo.control.matrixseg", - FT_UINT16, BASE_HEX, 0, 0x3800, NULL, HFILL }}, + FT_UINT16, BASE_HEX, 0, 0x3800, + NULL, HFILL }}, {&hf_ieee80211_ff_mimo_cntrl_reserved, {"Reserved", "wlan_mgt.fixed.mimo.control.reserved", - FT_UINT16, BASE_HEX, 0, 0xC000, NULL, HFILL }}, + FT_UINT16, BASE_HEX, 0, 0xC000, + NULL, HFILL }}, {&hf_ieee80211_ff_mimo_cntrl_sounding_timestamp, {"Sounding Timestamp", "wlan_mgt.fixed.mimo.control.soundingtime", - FT_UINT32, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_sta_info, {"Power Save Multi-Poll (PSMP) Station Information", "wlan_mgt.fixed.psmp.stainfo", - FT_UINT64, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT64, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_sta_info_type, {"Sta Info Type", "wlan_mgt.fixed.psmp.stainfo.type", - FT_UINT32, BASE_HEX, VALS(ff_psmp_sta_info_flags), PSMP_STA_INFO_FLAG_TYPE, NULL, HFILL }}, + FT_UINT32, BASE_HEX, VALS(ff_psmp_sta_info_flags), PSMP_STA_INFO_FLAG_TYPE, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_sta_info_dtt_start_offset, {"DTT Start Offset", "wlan_mgt.fixed.psmp.stainfo.dttstart", - FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_DTT_START, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_DTT_START, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_sta_info_dtt_duration, {"DTT Duration", "wlan_mgt.fixed.psmp.stainfo.dttduration", - FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_DTT_DURATION, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_DTT_DURATION, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_sta_info_sta_id, {"Target Station ID", "wlan_mgt.fixed.psmp.stainfo.staid", - FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_STA_ID, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_STA_ID, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_sta_info_utt_start_offset, {"UTT Start Offset", "wlan_mgt.fixed.psmp.stainfo.uttstart", - FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_UTT_START, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_UTT_START, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_sta_info_utt_duration, {"UTT Duration", "wlan_mgt.fixed.psmp.stainfo.uttduration", - FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_UTT_DURATION, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_UTT_DURATION, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_sta_info_reserved_small, {"Reserved", "wlan_mgt.fixed.psmp.stainfo.reserved", - FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_IA_RESERVED, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, PSMP_STA_INFO_FLAG_IA_RESERVED, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_sta_info_reserved_large, {"Reserved", "wlan_mgt.fixed.psmp.stainfo.reserved", - FT_UINT64, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT64, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_psmp_sta_info_psmp_multicast_id, {"Power Save Multi-Poll (PSMP) Multicast ID", "wlan_mgt.fixed.psmp.stainfo.multicastid", - FT_UINT64, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT64, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_ant_selection, {"Antenna Selection", "wlan_mgt.fixed.antsel", - FT_UINT8, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_ant_selection_0, {"Antenna 0", "wlan_mgt.fixed.antsel.ant0", - FT_UINT8, BASE_HEX, 0, 0x01, NULL, HFILL }}, + FT_UINT8, BASE_HEX, 0, 0x01, + NULL, HFILL }}, {&hf_ieee80211_ff_ant_selection_1, {"Antenna 1", "wlan_mgt.fixed.antsel.ant1", - FT_UINT8, BASE_HEX, 0, 0x02, NULL, HFILL }}, + FT_UINT8, BASE_HEX, 0, 0x02, + NULL, HFILL }}, {&hf_ieee80211_ff_ant_selection_2, {"Antenna 2", "wlan_mgt.fixed.antsel.ant2", - FT_UINT8, BASE_HEX, 0, 0x04, NULL, HFILL }}, + FT_UINT8, BASE_HEX, 0, 0x04, + NULL, HFILL }}, {&hf_ieee80211_ff_ant_selection_3, {"Antenna 3", "wlan_mgt.fixed.antsel.ant3", - FT_UINT8, BASE_HEX, 0, 0x08, NULL, HFILL }}, + FT_UINT8, BASE_HEX, 0, 0x08, + NULL, HFILL }}, {&hf_ieee80211_ff_ant_selection_4, {"Antenna 4", "wlan_mgt.fixed.antsel.ant4", - FT_UINT8, BASE_HEX, 0, 0x10, NULL, HFILL }}, + FT_UINT8, BASE_HEX, 0, 0x10, + NULL, HFILL }}, {&hf_ieee80211_ff_ant_selection_5, {"Antenna 5", "wlan_mgt.fixed.antsel.ant5", - FT_UINT8, BASE_HEX, 0, 0x20, NULL, HFILL }}, + FT_UINT8, BASE_HEX, 0, 0x20, + NULL, HFILL }}, {&hf_ieee80211_ff_ant_selection_6, {"Antenna 6", "wlan_mgt.fixed.antsel.ant6", - FT_UINT8, BASE_HEX, 0, 0x40, NULL, HFILL }}, + FT_UINT8, BASE_HEX, 0, 0x40, + NULL, HFILL }}, {&hf_ieee80211_ff_ant_selection_7, {"Antenna 7", "wlan_mgt.fixed.antsel.ant7", - FT_UINT8, BASE_HEX, 0, 0x80, NULL, HFILL }}, + FT_UINT8, BASE_HEX, 0, 0x80, + NULL, HFILL }}, {&hf_ieee80211_ff_ext_channel_switch_announcement, {"Extended Channel Switch Announcement", "wlan_mgt.fixed.extchansw", - FT_UINT32, BASE_HEX, 0, 0, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_ext_channel_switch_announcement_switch_mode, {"Channel Switch Mode", "wlan_mgt.fixed.extchansw.switchmode", - FT_UINT32, BASE_HEX, VALS(ieee80211_tag_ext_channel_switch_announcement_switch_mode_flags), 0x000000FF, NULL, HFILL }}, + FT_UINT32, BASE_HEX, VALS(ieee80211_tag_ext_channel_switch_announcement_switch_mode_flags), 0x000000FF, + NULL, HFILL }}, {&hf_ieee80211_ff_ext_channel_switch_announcement_new_reg_class, {"New Regulatory Class", "wlan_mgt.fixed.extchansw.new.regclass", - FT_UINT32, BASE_HEX, NULL, 0x0000FF00, NULL, HFILL }}, + FT_UINT32, BASE_HEX, NULL, 0x0000FF00, + NULL, HFILL }}, {&hf_ieee80211_ff_ext_channel_switch_announcement_new_chan_number, {"New Channel Number", "wlan_mgt.fixed.extchansw.new.channumber", - FT_UINT32, BASE_HEX, NULL, 0x00FF0000, NULL, HFILL }}, + FT_UINT32, BASE_HEX, NULL, 0x00FF0000, + NULL, HFILL }}, {&hf_ieee80211_ff_ext_channel_switch_announcement_switch_count, {"Channel Switch Count", "wlan_mgt.extchanswitch.switchcount", - FT_UINT32, BASE_HEX, NULL, 0xFF000000, NULL, HFILL }}, + FT_UINT32, BASE_HEX, NULL, 0xFF000000, + NULL, HFILL }}, {&hf_ieee80211_ff_ht_info, {"HT Information", "wlan_mgt.fixed.extchansw", - FT_UINT8, BASE_HEX, 0, 0, "HT Information Fixed Field", HFILL }}, + FT_UINT8, BASE_HEX, 0, 0, + "HT Information Fixed Field", HFILL }}, {&hf_ieee80211_ff_ht_info_information_request, {"Information Request", "wlan_mgt.fixed.mimo.control.chanwidth", - FT_BOOLEAN, 8, TFS(&ff_ht_info_information_request_flag), 0x01, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&ff_ht_info_information_request_flag), 0x01, + NULL, HFILL }}, {&hf_ieee80211_ff_ht_info_40_mhz_intolerant, {"40 MHz Intolerant", "wlan_mgt.fixed.mimo.control.chanwidth", - FT_BOOLEAN, 8, TFS(&ff_ht_info_40_mhz_intolerant_flag), 0x02, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&ff_ht_info_40_mhz_intolerant_flag), 0x02, + NULL, HFILL }}, {&hf_ieee80211_ff_ht_info_sta_chan_width, {"Station Channel Width", "wlan_mgt.fixed.mimo.control.chanwidth", - FT_BOOLEAN, 8, TFS(&ff_ht_info_sta_chan_width_flag), 0x04, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&ff_ht_info_sta_chan_width_flag), 0x04, + NULL, HFILL }}, {&hf_ieee80211_ff_ht_info_reserved, {"Reserved", "wlan_mgt.fixed.extchansw", - FT_UINT8, BASE_HEX, 0, 0xF8, "Reserved Field", HFILL }}, + FT_UINT8, BASE_HEX, 0, 0xF8, + "Reserved Field", HFILL }}, {&hf_ieee80211_ff_ht_action, {"HT Action", "wlan_mgt.fixed.htact", - FT_UINT8, BASE_HEX, VALS (&ff_ht_action_flags), 0, "HT Action Code", HFILL }}, + FT_UINT8, BASE_HEX, VALS(ff_ht_action_flags), 0, + "HT Action Code", HFILL }}, {&hf_ieee80211_ff_mimo_csi_snr, {"Signal to Noise Ratio (SNR)", "wlan_mgt.mimo.csimatrices.snr", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_public_action, {"Public Action", "wlan_mgt.fixed.publicact", - FT_UINT8, BASE_HEX, VALS(ff_pa_action_codes), 0, "Public Action Code", HFILL }}, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ff_pa_action_codes_ext, 0, + "Public Action Code", HFILL }}, {&hf_ieee80211_ff_capture, - {"Capabilities Information", "wlan_mgt.fixed.capabilities", FT_UINT16, BASE_HEX, NULL, 0, + {"Capabilities Information", "wlan_mgt.fixed.capabilities", + FT_UINT16, BASE_HEX, NULL, 0, "Capability information", HFILL }}, {&hf_ieee80211_ff_cf_ess, {"ESS capabilities", "wlan_mgt.fixed.capabilities.ess", - FT_BOOLEAN, 16, TFS (&cf_ess_flags), 0x0001, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&cf_ess_flags), 0x0001, + NULL, HFILL }}, {&hf_ieee80211_ff_cf_ibss, {"IBSS status", "wlan_mgt.fixed.capabilities.ibss", - FT_BOOLEAN, 16, TFS (&cf_ibss_flags), 0x0002, "IBSS participation", HFILL }}, + FT_BOOLEAN, 16, TFS (&cf_ibss_flags), 0x0002, + "IBSS participation", HFILL }}, {&hf_ieee80211_ff_cf_sta_poll, {"CFP participation capabilities", "wlan_mgt.fixed.capabilities.cfpoll.sta", - FT_UINT16, BASE_HEX, VALS (&sta_cf_pollable), 0x020C, + FT_UINT16, BASE_HEX, VALS(sta_cf_pollable), 0x020C, "CF-Poll capabilities for a STA", HFILL }}, {&hf_ieee80211_ff_cf_ap_poll, {"CFP participation capabilities", "wlan_mgt.fixed.capabilities.cfpoll.ap", - FT_UINT16, BASE_HEX, VALS (&ap_cf_pollable), 0x020C, + FT_UINT16, BASE_HEX, VALS(ap_cf_pollable), 0x020C, "CF-Poll capabilities for an AP", HFILL }}, {&hf_ieee80211_ff_cf_privacy, {"Privacy", "wlan_mgt.fixed.capabilities.privacy", - FT_BOOLEAN, 16, TFS (&cf_privacy_flags), 0x0010, "WEP support", HFILL }}, + FT_BOOLEAN, 16, TFS (&cf_privacy_flags), 0x0010, + "WEP support", HFILL }}, {&hf_ieee80211_ff_cf_preamble, {"Short Preamble", "wlan_mgt.fixed.capabilities.preamble", - FT_BOOLEAN, 16, TFS (&cf_preamble_flags), 0x0020, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&cf_preamble_flags), 0x0020, + NULL, HFILL }}, {&hf_ieee80211_ff_cf_pbcc, {"PBCC", "wlan_mgt.fixed.capabilities.pbcc", - FT_BOOLEAN, 16, TFS (&cf_pbcc_flags), 0x0040, "PBCC Modulation", HFILL }}, + FT_BOOLEAN, 16, TFS (&cf_pbcc_flags), 0x0040, + "PBCC Modulation", HFILL }}, {&hf_ieee80211_ff_cf_agility, {"Channel Agility", "wlan_mgt.fixed.capabilities.agility", - FT_BOOLEAN, 16, TFS (&cf_agility_flags), 0x0080, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&cf_agility_flags), 0x0080, + NULL, HFILL }}, {&hf_ieee80211_ff_cf_spec_man, {"Spectrum Management", "wlan_mgt.fixed.capabilities.spec_man", - FT_BOOLEAN, 16, TFS (&cf_spec_man_flags), 0x0100, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&cf_spec_man_flags), 0x0100, + NULL, HFILL }}, {&hf_ieee80211_ff_short_slot_time, {"Short Slot Time", "wlan_mgt.fixed.capabilities.short_slot_time", - FT_BOOLEAN, 16, TFS (&short_slot_time_flags), 0x0400, NULL, - HFILL }}, + FT_BOOLEAN, 16, TFS (&short_slot_time_flags), 0x0400, + NULL, HFILL }}, {&hf_ieee80211_ff_cf_apsd, {"Automatic Power Save Delivery", "wlan_mgt.fixed.capabilities.apsd", - FT_BOOLEAN, 16, TFS (&cf_apsd_flags), 0x0800, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&cf_apsd_flags), 0x0800, + NULL, HFILL }}, {&hf_ieee80211_ff_dsss_ofdm, {"DSSS-OFDM", "wlan_mgt.fixed.capabilities.dsss_ofdm", - FT_BOOLEAN, 16, TFS (&dsss_ofdm_flags), 0x2000, "DSSS-OFDM Modulation", - HFILL }}, + FT_BOOLEAN, 16, TFS (&dsss_ofdm_flags), 0x2000, + "DSSS-OFDM Modulation", HFILL }}, {&hf_ieee80211_ff_cf_del_blk_ack, {"Delayed Block Ack", "wlan_mgt.fixed.capabilities.del_blk_ack", - FT_BOOLEAN, 16, TFS (&cf_del_blk_ack_flags), 0x4000, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&cf_del_blk_ack_flags), 0x4000, + NULL, HFILL }}, {&hf_ieee80211_ff_cf_imm_blk_ack, {"Immediate Block Ack", "wlan_mgt.fixed.capabilities.imm_blk_ack", - FT_BOOLEAN, 16, TFS (&cf_imm_blk_ack_flags), 0x8000, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&cf_imm_blk_ack_flags), 0x8000, + NULL, HFILL }}, {&hf_ieee80211_ff_auth_seq, {"Authentication SEQ", "wlan_mgt.fixed.auth_seq", - FT_UINT16, BASE_HEX, NULL, 0, "Authentication Sequence Number", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + "Authentication Sequence Number", HFILL }}, {&hf_ieee80211_ff_assoc_id, {"Association ID", "wlan_mgt.fixed.aid", - FT_UINT16, BASE_HEX, NULL, 0x3FFF, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x3FFF, + NULL, HFILL }}, {&hf_ieee80211_ff_listen_ival, {"Listen Interval", "wlan_mgt.fixed.listen_ival", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_current_ap, {"Current AP", "wlan_mgt.fixed.current_ap", - FT_ETHER, BASE_NONE, NULL, 0, "MAC address of current AP", HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + "MAC address of current AP", HFILL }}, {&hf_ieee80211_ff_reason, {"Reason code", "wlan_mgt.fixed.reason_code", - FT_UINT16, BASE_HEX, VALS (&ieee80211_reason_code), 0, + FT_UINT16, BASE_HEX|BASE_EXT_STRING, &ieee80211_reason_code_ext, 0, "Reason for unsolicited notification", HFILL }}, {&hf_ieee80211_ff_status_code, {"Status code", "wlan_mgt.fixed.status_code", - FT_UINT16, BASE_HEX, VALS (&ieee80211_status_code), 0, + FT_UINT16, BASE_HEX|BASE_EXT_STRING, &ieee80211_status_code_ext, 0, "Status of requested event", HFILL }}, {&hf_ieee80211_ff_category_code, {"Category code", "wlan_mgt.fixed.category_code", - FT_UINT16, BASE_DEC, VALS (&category_codes), 0, + FT_UINT16, BASE_DEC|BASE_EXT_STRING, &category_codes_ext, 0, "Management action category", HFILL }}, {&hf_ieee80211_ff_action_code, {"Action code", "wlan_mgt.fixed.action_code", - FT_UINT16, BASE_DEC, VALS (&action_codes), 0, + FT_UINT16, BASE_DEC, VALS(action_codes), 0, "Management action code", HFILL }}, {&hf_ieee80211_ff_dialog_token, {"Dialog token", "wlan_mgt.fixed.dialog_token", - FT_UINT8, BASE_HEX, NULL, 0, "Management action dialog token", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "Management action dialog token", HFILL }}, {&hf_ieee80211_ff_marvell_action_type, {"Marvell Action type", "wlan_mgt.fixed.mrvl_action_type", - FT_UINT8, BASE_DEC, VALS (&vendor_action_types_mrvl), 0, + FT_UINT8, BASE_DEC, VALS(vendor_action_types_mrvl), 0, "Vendor Specific Action Type (Marvell)", HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_action_code, {"Mesh action(Marvell)", "wlan_mgt.fixed.mrvl_mesh_action", - FT_UINT8, BASE_HEX, VALS (&mesh_mgt_action_codes_mrvl), 0, + FT_UINT8, BASE_HEX, VALS(mesh_mgt_action_codes_mrvl), 0, "Mesh action code(Marvell)", HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_length, {"Message Length", "wlan_mgt.fixed.length", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_mode, {"Message Mode", "wlan_mgt.fixed.mode", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_ttl, {"Message TTL", "wlan_mgt.fixed.ttl", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_dstcount, {"Destination Count", "wlan_mgt.fixed.dstcount", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_hopcount, {"Hop Count", "wlan_mgt.fixed.hopcount", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_rreqid, {"RREQ ID", "wlan_mgt.fixed.rreqid", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_sa, {"Source Address", "wlan_mgt.fixed.sa", - FT_ETHER, BASE_NONE, NULL, 0, "Source MAC address", HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + "Source MAC address", HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_ssn, {"SSN", "wlan_mgt.fixed.ssn", - FT_UINT32, BASE_DEC, NULL, 0, "Source Sequence Number", HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + "Source Sequence Number", HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_metric, {"Metric", "wlan_mgt.fixed.metric", - FT_UINT32, BASE_DEC, NULL, 0, "Route Metric", HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + "Route Metric", HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_flags, {"RREQ Flags", "wlan_mgt.fixed.hopcount", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_da, {"Destination Address", "wlan_mgt.fixed.da", - FT_ETHER, BASE_NONE, NULL, 0, "Destination MAC address", HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + "Destination MAC address", HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_dsn, {"DSN", "wlan_mgt.fixed.dsn", - FT_UINT32, BASE_DEC, NULL, 0, "Destination Sequence Number", HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + "Destination Sequence Number", HFILL }}, {&hf_ieee80211_ff_marvell_mesh_mgt_lifetime, {"Lifetime", "wlan_mgt.fixed.lifetime", - FT_UINT32, BASE_DEC, NULL, 0, "Route Lifetime", HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + "Route Lifetime", HFILL }}, {&hf_ieee80211_ff_wme_action_code, {"Action code", "wlan_mgt.fixed.action_code", - FT_UINT16, BASE_HEX, VALS (&wme_action_codes), 0, + FT_UINT16, BASE_HEX, VALS(wme_action_codes), 0, "Management notification action code", HFILL }}, {&hf_ieee80211_ff_wme_status_code, {"Status code", "wlan_mgt.fixed.status_code", - FT_UINT16, BASE_HEX, VALS (&wme_status_codes), 0, + FT_UINT16, BASE_HEX, VALS(wme_status_codes), 0, "Management notification setup response status code", HFILL }}, {&hf_ieee80211_ff_mesh_action, {"Mesh Action code", "wlan_mgt.fixed.mesh_action", - FT_UINT8, BASE_HEX, VALS (&mesh_action), 0, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &mesh_action_ext, 0, NULL, HFILL }}, {&hf_ieee80211_ff_multihop_action, {"Multihop Action code", "wlan_mgt.fixed.multihop_action", - FT_UINT8, BASE_HEX, VALS (&multihop_action), 0, + FT_UINT8, BASE_HEX, VALS(multihop_action), 0, NULL, HFILL }}, {&hf_ieee80211_ff_mesh_flags, {"Mesh Flags", "wlan_mgt.fixed.mesh_flags", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_mesh_ttl, {"Mesh TTL", "wlan_mgt.fixed.mesh_ttl", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_mesh_sequence, {"Sequence Number", "wlan_mgt.fixed.mesh_sequence", - FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_mesh_addr4, {"Mesh Extended Address 4", "wlan_mgt.fixed.mesh_addr4", - FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_mesh_addr5, {"Mesh Extended Address 5", "wlan_mgt.fixed.mesh_addr5", - FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_mesh_addr6, {"Mesh Extended Address 6", "wlan_mgt.fixed.mesh_addr6", - FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_selfprot_action, {"Self-protected Action code", "wlan_mgt.fixed.selfprot_action", - FT_UINT8, BASE_HEX, VALS (&selfprot_action), 0, + FT_UINT8, BASE_HEX, VALS(selfprot_action), 0, NULL, HFILL }}, {&hf_ieee80211_mesh_peering_proto, {"Mesh Peering Protocol ID", "wlan.peering.proto", - FT_UINT16, BASE_HEX, VALS (&mesh_peering_proto_ids), 0, + FT_UINT16, BASE_HEX, VALS(mesh_peering_proto_ids), 0, NULL, HFILL }}, {&hf_ieee80211_mesh_peering_local_link_id, @@ -13841,47 +14340,58 @@ proto_register_ieee80211 (void) "Mesh Peering Management Peer Link ID", HFILL }}, {&hf_ieee80211_ff_hwmp_flags, - {"HWMP Flags", "wlan.hwmp.flags", FT_UINT8, BASE_HEX, NULL, 0, + {"HWMP Flags", "wlan.hwmp.flags", + FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_ff_hwmp_hopcount, - {"HWMP Hop Count", "wlan.hwmp.hopcount", FT_UINT8, BASE_DEC, NULL, 0, + {"HWMP Hop Count", "wlan.hwmp.hopcount", + FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_ff_hwmp_ttl, - {"HWMP TTL", "wlan.hwmp.ttl", FT_UINT8, BASE_DEC, NULL, 0, + {"HWMP TTL", "wlan.hwmp.ttl", + FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_ff_hwmp_pdid, - {"HWMP Path Discovery ID", "wlan.hwmp.pdid", FT_UINT32, BASE_DEC, NULL, 0, + {"HWMP Path Discovery ID", "wlan.hwmp.pdid", + FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_ff_hwmp_orig_sta, - {"Originator STA Address", "wlan.hwmp.orig_sta", FT_ETHER, BASE_NONE, NULL, 0, + {"Originator STA Address", "wlan.hwmp.orig_sta", + FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_ff_hwmp_orig_sn, - {"HWMP Originator Sequence Number", "wlan.hwmp.orig_sn", FT_UINT32, BASE_DEC, NULL, 0, + {"HWMP Originator Sequence Number", "wlan.hwmp.orig_sn", + FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL}}, {&hf_ieee80211_ff_hwmp_orig_ext, - {"Originator External Address", "wlan.hwmp.orig_ext", FT_ETHER, BASE_NONE, NULL, 0, + {"Originator External Address", "wlan.hwmp.orig_ext", + FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_ff_hwmp_lifetime, - {"HWMP Lifetime", "wlan.hwmp.lifetime", FT_UINT32, BASE_DEC, NULL, 0, + {"HWMP Lifetime", "wlan.hwmp.lifetime", + FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_ff_hwmp_metric, - {"HWMP Metric", "wlan.hwmp.metric", FT_UINT32, BASE_DEC, NULL, 0, + {"HWMP Metric", "wlan.hwmp.metric", + FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_ff_hwmp_targ_count, - {"HWMP Target Count", "wlan.hwmp.targ_count", FT_UINT8, BASE_DEC, NULL, 0, + {"HWMP Target Count", "wlan.hwmp.targ_count", + FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_ff_hwmp_targ_flags, - {"HWMP Per-Target Flags", "wlan.hwmp.targ_flags", FT_UINT8, BASE_HEX, NULL, 0, + {"HWMP Per-Target Flags", "wlan.hwmp.targ_flags", + FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_ff_hwmp_targ_to_flags, @@ -13895,16 +14405,19 @@ proto_register_ieee80211 (void) "Unknown Target HWMP Sequence Number Flag", HFILL }}, {&hf_ieee80211_ff_hwmp_targ_sta, - {"Target STA Address", "wlan.hwmp.targ_sta", FT_ETHER, BASE_NONE, NULL, 0, + {"Target STA Address", "wlan.hwmp.targ_sta", + FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_ff_hwmp_targ_ext, - {"Target External Address", "wlan.hwmp.targ_ext", FT_ETHER, BASE_NONE, NULL, 0, + {"Target External Address", "wlan.hwmp.targ_ext", + FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_ff_hwmp_targ_sn, {"Target HWMP Sequence Number", "wlan.hwmp.targ_sn", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_mesh_config_path_sel_protocol, {"Path Selection Protocol", "wlan.mesh.config.ps_protocol", @@ -13957,34 +14470,38 @@ proto_register_ieee80211 (void) {&hf_ieee80211_rann_sn, {"Root STA Sequence Number", "wlan.rann.rann_sn", - FT_UINT32, BASE_DEC, NULL, 0, "Root Mesh STA Sequence Number", HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + "Root Mesh STA Sequence Number", HFILL }}, {&hf_ieee80211_rann_interval, - {"RANN Interval", "wlan.rann.interval", FT_UINT32, BASE_DEC, NULL, 0, + {"RANN Interval", "wlan.rann.interval", + FT_UINT32, BASE_DEC, NULL, 0, "Root Announcement Interval", HFILL }}, {&hf_ieee80211_ff_qos_action_code, {"Action code", "wlan_mgt.fixed.action_code", - FT_UINT16, BASE_HEX, VALS (&qos_action_codes), 0, + FT_UINT16, BASE_HEX, VALS(qos_action_codes), 0, "QoS management action code", HFILL }}, {&hf_ieee80211_ff_ba_action, {"Action code", "wlan_mgt.fixed.action_code", - FT_UINT8, BASE_HEX, VALS (&ba_action_codes), 0, + FT_UINT8, BASE_HEX, VALS(ba_action_codes), 0, "Block Ack action code", HFILL }}, {&hf_ieee80211_ff_dls_action_code, {"Action code", "wlan_mgt.fixed.action_code", - FT_UINT16, BASE_HEX, VALS (&dls_action_codes), 0, + FT_UINT16, BASE_HEX, VALS(dls_action_codes), 0, "DLS management action code", HFILL }}, {&hf_ieee80211_ff_dst_mac_addr, {"Destination address", "wlan_mgt.fixed.dst_mac_addr", - FT_ETHER, BASE_NONE, NULL, 0, "Destination MAC address", HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + "Destination MAC address", HFILL }}, {&hf_ieee80211_ff_src_mac_addr, {"Source address", "wlan_mgt.fixed.src_mac_addr", - FT_ETHER, BASE_NONE, NULL, 0, "Source MAC address", HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + "Source MAC address", HFILL }}, {&hf_ieee80211_ff_ft_action_code, {"Action code", "wlan_mgt.fixed.action_code", @@ -13993,84 +14510,108 @@ proto_register_ieee80211 (void) {&hf_ieee80211_ff_sta_address, {"STA Address", "wlan_mgt.fixed.sta_address", - FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_target_ap_address, {"Target AP Address", "wlan_mgt.fixed.target_ap_address", - FT_ETHER, BASE_NONE, NULL, 0, "Target AP MAC address", HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + "Target AP MAC address", HFILL }}, {&hf_ieee80211_ff_gas_comeback_delay, {"GAS Comeback Delay", "wlan_mgt.fixed.gas_comeback_delay", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_gas_fragment_id, {"GAS Query Response Fragment ID", "wlan_mgt.fixed.gas_fragment_id", - FT_UINT8, BASE_DEC, NULL, 0x7f, NULL, HFILL - }}, + FT_UINT8, BASE_DEC, NULL, 0x7f, + NULL, HFILL }}, {&hf_ieee80211_ff_more_gas_fragments, {"More GAS Fragments", "wlan_mgt.fixed.more_gas_fragments", - FT_UINT8, BASE_DEC, NULL, 0x80, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x80, + NULL, HFILL }}, {&hf_ieee80211_ff_query_request_length, {"Query Request Length", "wlan_mgt.fixed.query_request_length", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_query_request, {"Query Request", "wlan_mgt.fixed.query_request", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_query_response_length, {"Query Response Length", "wlan_mgt.fixed.query_response_length", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_query_response, {"Query Response", "wlan_mgt.fixed.query_response", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_gas_resp_fragments, {"GAS Query Response fragments", "wlan_mgt.fixed.fragments", - FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL } }, + FT_NONE, BASE_NONE, NULL, 0x00, + NULL, HFILL } }, + {&hf_ieee80211_gas_resp_fragment, {"GAS Query Response fragment", "wlan_mgt.fixed.fragment", - FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL } }, + FT_FRAMENUM, BASE_NONE, NULL, 0x00, + NULL, HFILL } }, + {&hf_ieee80211_gas_resp_fragment_overlap, {"GAS Query Response fragment overlap", "wlan_mgt.fixed.fragment.overlap", - FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL } }, + FT_BOOLEAN, BASE_NONE, NULL, 0x00, + NULL, HFILL } }, + {&hf_ieee80211_gas_resp_fragment_overlap_conflict, - {"GAS Query Response fragment overlapping with conflicting data", - "wlan_mgt.fixed.fragment.overlap.conflicts", - FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL } }, + {"GAS Query Response fragment overlapping with conflicting data", "wlan_mgt.fixed.fragment.overlap.conflicts", + FT_BOOLEAN, BASE_NONE, NULL, 0x00, + NULL, HFILL } }, + {&hf_ieee80211_gas_resp_fragment_multiple_tails, - {"GAS Query Response has multiple tail fragments", - "wlan_mgt.fixed.fragment.multiple_tails", - FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL } }, + {"GAS Query Response has multiple tail fragments", "wlan_mgt.fixed.fragment.multiple_tails", + FT_BOOLEAN, BASE_NONE, NULL, 0x00, + NULL, HFILL } }, + {&hf_ieee80211_gas_resp_fragment_too_long_fragment, - {"GAS Query Response fragment too long", - "wlan_mgt.fixed.fragment.too_long_fragment", - FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL } }, + {"GAS Query Response fragment too long", "wlan_mgt.fixed.fragment.too_long_fragment", + FT_BOOLEAN, BASE_NONE, NULL, 0x00, + NULL, HFILL } }, + {&hf_ieee80211_gas_resp_fragment_error, {"GAS Query Response reassembly error", "wlan_mgt.fixed.fragment.error", - FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL } }, + FT_FRAMENUM, BASE_NONE, NULL, 0x00, + NULL, HFILL } }, + {&hf_ieee80211_gas_resp_fragment_count, {"GAS Query Response fragment count", "wlan_mgt.fixed.fragment.count", - FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL } }, + FT_UINT32, BASE_DEC, NULL, 0x00, + NULL, HFILL } }, + {&hf_ieee80211_gas_resp_reassembled_in, {"Reassembled in", "wlan_mgt.fixed.reassembled.in", - FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL } }, + FT_FRAMENUM, BASE_NONE, NULL, 0x00, + NULL, HFILL } }, + {&hf_ieee80211_gas_resp_reassembled_length, {"Reassembled length", "wlan_mgt.fixed.reassembled.length", - FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL } }, + FT_UINT32, BASE_DEC, NULL, 0x00, + NULL, HFILL } }, {&hf_ieee80211_ff_anqp_info_id, {"Info ID", "wlan_mgt.fixed.anqp.info_id", - FT_UINT16, BASE_DEC, VALS(anqp_info_id_vals), 0, + FT_UINT16, BASE_DEC|BASE_EXT_STRING, &anqp_info_id_vals_ext, 0, "Access Network Query Protocol Info ID", HFILL }}, {&hf_ieee80211_ff_anqp_info_length, {"Length", "wlan_mgt.fixed.anqp.info_length", - FT_UINT16, BASE_DEC, NULL, 0, "Access Network Query Protocol Length", - HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + "Access Network Query Protocol Length", HFILL }}, {&hf_ieee80211_ff_anqp_info, {"Information", "wlan_mgt.fixed.anqp.info", @@ -14079,33 +14620,38 @@ proto_register_ieee80211 (void) {&hf_ieee80211_ff_anqp_query_id, {"ANQP Query ID", "wlan_mgt.fixed.anqp.query_id", - FT_UINT16, BASE_DEC, VALS(anqp_info_id_vals), 0, + FT_UINT16, BASE_DEC|BASE_EXT_STRING, &anqp_info_id_vals_ext, 0, "Access Network Query Protocol Query ID", HFILL }}, {&hf_ieee80211_ff_anqp_capability, {"ANQP Capability", "wlan_mgt.fixed.anqp.capability", - FT_UINT16, BASE_DEC, VALS(anqp_info_id_vals), 0, + FT_UINT16, BASE_DEC|BASE_EXT_STRING, &anqp_info_id_vals_ext, 0, "Access Network Query Protocol Query ID", HFILL }}, + {&hf_ieee80211_ff_anqp_capability_vlen, - {"Vendor-specific Capability Length", - "wlan_mgt.fixed.anqp.capability_vlen", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + {"Vendor-specific Capability Length", "wlan_mgt.fixed.anqp.capability_vlen", + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_capability_vendor, - {"Vendor-specific Capability", - "wlan_mgt.fixed.anqp.capability_vendor", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + {"Vendor-specific Capability", "wlan_mgt.fixed.anqp.capability_vendor", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_venue_info_group, {"Venue Group", "wlan_mgt.fixed.venue_info.group", - FT_UINT8, BASE_DEC, VALS(venue_group_vals), 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &venue_group_vals_ext, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_venue_info_type, {"Venue Type", "wlan_mgt.fixed.venue_info.type", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_anqp_venue_length, {"Venue Name Duple Length", "wlan_mgt.fixed.anqp.venue.length", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_anqp_venue_language, {"Language Code", "wlan_mgt.fixed.anqp.venue.language", @@ -14114,29 +14660,33 @@ proto_register_ieee80211 (void) {&hf_ieee80211_ff_anqp_venue_name, {"Venue Name", "wlan_mgt.fixed.anqp.venue.name", - FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_anqp_nw_auth_type_indicator, - {"Network Authentication Type Indicator", - "wlan_mgt.fixed.anqp.nw_auth_type.indicator", - FT_UINT8, BASE_DEC, VALS(nw_auth_type_vals), 0, NULL, HFILL }}, + {"Network Authentication Type Indicator", "wlan_mgt.fixed.anqp.nw_auth_type.indicator", + FT_UINT8, BASE_DEC, VALS(nw_auth_type_vals), 0, + NULL, HFILL }}, {&hf_ieee80211_ff_anqp_nw_auth_type_url_len, - {"Re-direct URL Length", - "wlan_mgt.fixed.anqp.nw_auth_type.url_len", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + {"Re-direct URL Length", "wlan_mgt.fixed.anqp.nw_auth_type.url_len", + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_anqp_nw_auth_type_url, {"Re-direct URL", "wlan_mgt.fixed.anqp.nw_auth_type_url", - FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_anqp_roaming_consortium_oi_len, {"OI Length", "wlan_mgt.fixed.anqp.roaming_consortium.oi_len", - FT_UINT8, BASE_DEC, NULL, 0, "Roaming Consortium OI Length", HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + "Roaming Consortium OI Length", HFILL }}, {&hf_ieee80211_ff_anqp_roaming_consortium_oi, {"OI", "wlan_mgt.fixed.anqp.roaming_consortium.oi", - FT_BYTES, BASE_NONE, NULL, 0, "Roaming Consortium OI", HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + "Roaming Consortium OI", HFILL }}, {&hf_ieee80211_ff_anqp_ip_addr_avail_ipv6, {"IPv6 Address", "wlan_mgt.fixed.anqp.ip_addr_availability.ipv6", @@ -14150,72 +14700,89 @@ proto_register_ieee80211 (void) {&hf_ieee80211_ff_anqp_nai_realm_count, {"NAI Realm Count", "wlan_mgt.fixed.anqp.nai_realm_list.count", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_nai_field_len, - {"NAI Realm Data Field Length", - "wlan_mgt.fixed.anqp.nai_realm_list.field_len", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + {"NAI Realm Data Field Length", "wlan_mgt.fixed.anqp.nai_realm_list.field_len", + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_nai_realm_encoding, - {"NAI Realm Encoding", - "wlan_mgt.fixed.naqp_nai_realm_list.encoding", - FT_UINT8, BASE_DEC, VALS(nai_realm_encoding_vals), 0x01, NULL, HFILL }}, + {"NAI Realm Encoding", "wlan_mgt.fixed.naqp_nai_realm_list.encoding", + FT_UINT8, BASE_DEC, VALS(nai_realm_encoding_vals), 0x01, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_nai_realm_length, - {"NAI Realm Length", - "wlan_mgt.fixed.naqp_nai_realm_list.realm_length", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + {"NAI Realm Length", "wlan_mgt.fixed.naqp_nai_realm_list.realm_length", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_nai_realm, - {"NAI Realm", - "wlan_mgt.fixed.naqp_nai_realm_list.realm", - FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + {"NAI Realm", "wlan_mgt.fixed.naqp_nai_realm_list.realm", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_nai_realm_eap_count, - {"EAP Method Count", - "wlan_mgt.fixed.naqp_nai_realm_list.eap_method_count", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + {"EAP Method Count", "wlan_mgt.fixed.naqp_nai_realm_list.eap_method_count", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_nai_realm_eap_len, - {"EAP Method subfield Length", - "wlan_mgt.fixed.naqp_nai_realm_list.eap_method_len", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + {"EAP Method subfield Length", "wlan_mgt.fixed.naqp_nai_realm_list.eap_method_len", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_nai_realm_eap_method, - {"EAP Method", - "wlan_mgt.fixed.naqp_nai_realm_list.eap_method", - FT_UINT8, BASE_DEC, VALS(eap_type_vals), 0, NULL, HFILL }}, + {"EAP Method", "wlan_mgt.fixed.naqp_nai_realm_list.eap_method", + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &eap_type_vals_ext, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_nai_realm_auth_param_count, - {"Authentication Parameter Count", - "wlan_mgt.fixed.naqp_nai_realm_list.auth_param_count", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + {"Authentication Parameter Count", "wlan_mgt.fixed.naqp_nai_realm_list.auth_param_count", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_nai_realm_auth_param_id, - {"Authentication Parameter ID", - "wlan_mgt.fixed.naqp_nai_realm_list.auth_param_id", - FT_UINT8, BASE_DEC, VALS(nai_realm_auth_param_id_vals), - 0, NULL, HFILL }}, + {"Authentication Parameter ID", "wlan_mgt.fixed.naqp_nai_realm_list.auth_param_id", + FT_UINT8, BASE_DEC, VALS(nai_realm_auth_param_id_vals), 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_nai_realm_auth_param_len, - {"Authentication Parameter Length", - "wlan_mgt.fixed.naqp_nai_realm_list.auth_param_len", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + {"Authentication Parameter Length", "wlan_mgt.fixed.naqp_nai_realm_list.auth_param_len", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_nai_realm_auth_param_value, - {"Authentication Parameter Value", - "wlan_mgt.fixed.naqp_nai_realm_list.auth_param_value", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + {"Authentication Parameter Value", "wlan_mgt.fixed.naqp_nai_realm_list.auth_param_value", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_3gpp_gc_gud, {"GUD", "wlan_mgt.fixed.anqp.3gpp_cellular_info.gud", FT_UINT8, BASE_DEC, NULL, 0, "Generic container User Data", HFILL }}, + {&hf_ieee80211_3gpp_gc_udhl, {"UDHL", "wlan_mgt.fixed.anqp.3gpp_cellular_info.udhl", FT_UINT8, BASE_DEC, NULL, 0, "User Data Header Length", HFILL }}, + {&hf_ieee80211_3gpp_gc_iei, {"IEI", "wlan_mgt.fixed.anqp.3gpp_cellular_info.iei", FT_UINT8, BASE_DEC, NULL, 0, "Information Element Identity", HFILL }}, + {&hf_ieee80211_3gpp_gc_plmn_len, {"PLMN Length", "wlan_mgt.fixed.anqp.3gpp_cellular_info.plmn_len", FT_UINT8, BASE_DEC, NULL, 0, "Length of PLMN List value contents", HFILL }}, + {&hf_ieee80211_3gpp_gc_num_plmns, {"Number of PLMNs", "wlan_mgt.fixed.anqp.3gpp_cellular_info.num_plmns", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_3gpp_gc_plmn, {"PLMN", "wlan_mgt.fixed.anqp.3gpp_cellular_info.plmn", FT_STRING, BASE_NONE, NULL, 0, @@ -14223,14 +14790,18 @@ proto_register_ieee80211 (void) {&hf_ieee80211_ff_anqp_domain_name_len, {"Domain Name Length", "wlan_mgt.fixed.anqp.domain_name_list.len", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_ff_anqp_domain_name, {"Domain Name", "wlan_mgt.fixed.anqp.domain_name_list.name", - FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ff_dls_timeout, {"DLS timeout", "wlan_mgt.fixed.dls_timeout", - FT_UINT16, BASE_HEX, NULL, 0, "DLS timeout value", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + "DLS timeout value", HFILL }}, {&hf_ieee80211_ff_sa_query_action_code, {"Action code", "wlan_mgt.fixed.action_code", @@ -14239,7 +14810,8 @@ proto_register_ieee80211 (void) {&hf_ieee80211_ff_transaction_id, {"Transaction Id", "wlan_mgt.fixed.transaction_id", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag, {"Tag", "wlan_mgt.tag", @@ -14248,16 +14820,18 @@ proto_register_ieee80211 (void) {&hf_ieee80211_tag_number, {"Tag Number", "wlan_mgt.tag.number", - FT_UINT8, BASE_DEC, VALS(tag_num_vals), 0, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &tag_num_vals_ext, 0, "Element ID", HFILL }}, {&hf_ieee80211_tag_length, {"Tag length", "wlan_mgt.tag.length", - FT_UINT32, BASE_DEC, NULL, 0, "Length of tag", HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + "Length of tag", HFILL }}, {&hf_ieee80211_tag_interpretation, {"Tag interpretation", "wlan_mgt.tag.interpretation", - FT_STRING, BASE_NONE, NULL, 0, "Interpretation of tag", HFILL }}, + FT_STRING, BASE_NONE, NULL, 0, + "Interpretation of tag", HFILL }}, {&hf_ieee80211_tag_oui, {"OUI", "wlan_mgt.tag.oui", @@ -14290,7 +14864,8 @@ proto_register_ieee80211 (void) {&hf_ieee80211_tag_vendor_oui_type, {"Vendor Specific OUI Type", "wlan_mgt.tag.oui.type", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tim_dtim_count, {"DTIM count", "wlan_mgt.tim.dtim_count", @@ -14419,7 +14994,7 @@ proto_register_ieee80211 (void) {&hf_ieee80211_tag_request, {"Requested Element ID", "wlan_mgt.tag.request", - FT_UINT8, BASE_DEC, VALS(tag_num_vals), 0, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &tag_num_vals_ext, 0, "The list of elements that are to be included in the responding STA Probe Response frame", HFILL }}, {&hf_ieee80211_tclas_up, @@ -14480,16 +15055,17 @@ proto_register_ieee80211 (void) {&hf_ieee80211_tclas_dscp, {"IPv4 DSCP", "wlan_mgt.tclas.dscp", FT_UINT8, BASE_HEX, NULL, 0, - "IPv4 Differentiated Services Code Point (DSCP) Field", HFILL }}, + "IPv4 Differentiated Services Code Point (DSCP) Field", HFILL }}, {&hf_ieee80211_tclas_protocol, {"Protocol", "wlan_mgt.tclas.protocol", - FT_UINT8, BASE_HEX, NULL, 0, "IPv4 Protocol", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "IPv4 Protocol", HFILL }}, {&hf_ieee80211_tclas_ipv6_src, {"IPv6 Src Addr", "wlan_mgt.tclas.ipv6_src", - FT_IPv6, BASE_NONE, - NULL, 0, NULL, HFILL }}, + FT_IPv6, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tclas_ipv6_dst, {"IPv6 Dst Addr", "wlan_mgt.tclas.ipv6_dst", @@ -14512,76 +15088,94 @@ proto_register_ieee80211 (void) NULL, HFILL }}, {&hf_ieee80211_rsn_version, - {"RSN Version", "wlan_mgt.rsn.version", FT_UINT16, BASE_DEC, - NULL, 0, "Indicates the version number of the RSNA protocol", HFILL }}, + {"RSN Version", "wlan_mgt.rsn.version", + FT_UINT16, BASE_DEC, NULL, 0, + "Indicates the version number of the RSNA protocol", HFILL }}, {&hf_ieee80211_rsn_gcs, - {"Group Cipher Suite", "wlan_mgt.rsn.gcs", FT_UINT32, BASE_CUSTOM, - rsn_gcs_base_custom, 0, "Contains the cipher suite selector used by the BSS to protect broadcast/multicast traffic", HFILL }}, + {"Group Cipher Suite", "wlan_mgt.rsn.gcs", + FT_UINT32, BASE_CUSTOM, rsn_gcs_base_custom, 0, + "Contains the cipher suite selector used by the BSS to protect broadcast/multicast traffic", HFILL }}, {&hf_ieee80211_rsn_gcs_oui, - {"Group Cipher Suite OUI", "wlan_mgt.rsn.gcs.oui", FT_UINT24, BASE_CUSTOM, - oui_base_custom, 0, NULL, HFILL }}, + {"Group Cipher Suite OUI", "wlan_mgt.rsn.gcs.oui", + FT_UINT24, BASE_CUSTOM, oui_base_custom, 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_gcs_type, - {"Group Cipher Suite type", "wlan_mgt.rsn.gcs.type", FT_UINT8, BASE_DEC, - NULL, 0, NULL, HFILL }}, - + {"Group Cipher Suite type", "wlan_mgt.rsn.gcs.type", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_rsn_gcs_80211_type, - {"Group Cipher Suite type", "wlan_mgt.rsn.gcs.type", FT_UINT8, BASE_DEC, - VALS(ieee80211_rsn_cipher_vals), 0, NULL, HFILL }}, + {"Group Cipher Suite type", "wlan_mgt.rsn.gcs.type", + FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_cipher_vals), 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_pcs_count, - {"Pairwise Cipher Suite Count", "wlan_mgt.rsn.pcs.count", FT_UINT16, BASE_DEC, - NULL, 0, "Indicates the number of pairwise cipher suite selectors that are contained in the Pairwise Cipher Suite List", HFILL }}, + {"Pairwise Cipher Suite Count", "wlan_mgt.rsn.pcs.count", + FT_UINT16, BASE_DEC, NULL, 0, + "Indicates the number of pairwise cipher suite selectors that are contained in the Pairwise Cipher Suite List", HFILL }}, {&hf_ieee80211_rsn_pcs_list, - {"Pairwise Cipher Suite List", "wlan_mgt.rsn.pcs.list", FT_NONE, BASE_NONE, - NULL, 0, "Contains a series of cipher suite selectors that indicate the pairwisecipher suites", HFILL }}, + {"Pairwise Cipher Suite List", "wlan_mgt.rsn.pcs.list", + FT_NONE, BASE_NONE, NULL, 0, + "Contains a series of cipher suite selectors that indicate the pairwisecipher suites", HFILL }}, {&hf_ieee80211_rsn_pcs, - {"Pairwise Cipher Suite", "wlan_mgt.rsn.pcs", FT_UINT32, BASE_CUSTOM, - rsn_pcs_base_custom, 0, NULL, HFILL }}, + {"Pairwise Cipher Suite", "wlan_mgt.rsn.pcs", + FT_UINT32, BASE_CUSTOM, rsn_pcs_base_custom, 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_pcs_oui, - {"Pairwise Cipher Suite OUI", "wlan_mgt.rsn.pcs.oui", FT_UINT24, BASE_CUSTOM, - oui_base_custom, 0, NULL, HFILL }}, + {"Pairwise Cipher Suite OUI", "wlan_mgt.rsn.pcs.oui", + FT_UINT24, BASE_CUSTOM, oui_base_custom, 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_pcs_type, - {"Pairwise Cipher Suite type", "wlan_mgt.rsn.pcs.type", FT_UINT8, BASE_DEC, - NULL, 0, NULL, HFILL }}, + {"Pairwise Cipher Suite type", "wlan_mgt.rsn.pcs.type", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_pcs_80211_type, - {"Pairwise Cipher Suite type", "wlan_mgt.rsn.pcs.type", FT_UINT8, BASE_DEC, - VALS(ieee80211_rsn_cipher_vals), 0, NULL, HFILL }}, + {"Pairwise Cipher Suite type", "wlan_mgt.rsn.pcs.type", + FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_cipher_vals), 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_akms_count, - {"Auth Key Management (AKM) Suite Count", "wlan_mgt.rsn.akms.count", FT_UINT16, BASE_DEC, - NULL, 0, "Indicates the number of Auth Key Management suite selectors that are contained in the Auth Key Management Suite List", HFILL }}, + {"Auth Key Management (AKM) Suite Count", "wlan_mgt.rsn.akms.count", + FT_UINT16, BASE_DEC, NULL, 0, + "Indicates the number of Auth Key Management suite selectors that are contained in the Auth Key Management Suite List", HFILL }}, {&hf_ieee80211_rsn_akms_list, - {"Auth Key Management (AKM) List", "wlan_mgt.rsn.akms.list", FT_NONE, BASE_NONE, - NULL, 0, "Contains a series of cipher suite selectors that indicate the AKM suites", HFILL }}, + {"Auth Key Management (AKM) List", "wlan_mgt.rsn.akms.list", + FT_NONE, BASE_NONE, NULL, 0, + "Contains a series of cipher suite selectors that indicate the AKM suites", HFILL }}, {&hf_ieee80211_rsn_akms, - {"Auth Key Management (AKM) Suite", "wlan_mgt.rsn.akms", FT_UINT32, BASE_CUSTOM, - rsn_akms_base_custom, 0, NULL, HFILL }}, + {"Auth Key Management (AKM) Suite", "wlan_mgt.rsn.akms", + FT_UINT32, BASE_CUSTOM, rsn_akms_base_custom, 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_akms_oui, - {"Auth Key Management (AKM) OUI", "wlan_mgt.rsn.akms.oui", FT_UINT24, BASE_CUSTOM, - oui_base_custom, 0, NULL, HFILL }}, + {"Auth Key Management (AKM) OUI", "wlan_mgt.rsn.akms.oui", + FT_UINT24, BASE_CUSTOM, oui_base_custom, 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_akms_type, - {"Auth Key Management (AKM) type", "wlan_mgt.rsn.akms.type", FT_UINT8, BASE_DEC, - NULL, 0, NULL, HFILL }}, + {"Auth Key Management (AKM) type", "wlan_mgt.rsn.akms.type", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_akms_80211_type, - {"Auth Key Management (AKM) type", "wlan_mgt.rsn.akms.type", FT_UINT8, BASE_DEC, - VALS(ieee80211_rsn_keymgmt_vals), 0, NULL, HFILL }}, + {"Auth Key Management (AKM) type", "wlan_mgt.rsn.akms.type", + FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_keymgmt_vals), 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_cap, - {"RSN Capabilities", "wlan_mgt.rsn.capabilities", FT_UINT16, BASE_HEX, - NULL, 0, "RSN Capability information", HFILL }}, + {"RSN Capabilities", "wlan_mgt.rsn.capabilities", + FT_UINT16, BASE_HEX, NULL, 0, + "RSN Capability information", HFILL }}, {&hf_ieee80211_rsn_cap_preauth, {"RSN Pre-Auth capabilities", "wlan_mgt.rsn.capabilities.preauth", @@ -14594,68 +15188,74 @@ proto_register_ieee80211 (void) NULL, HFILL }}, {&hf_ieee80211_rsn_cap_ptksa_replay_counter, - {"RSN PTKSA Replay Counter capabilities", - "wlan_mgt.rsn.capabilities.ptksa_replay_counter", + {"RSN PTKSA Replay Counter capabilities", "wlan_mgt.rsn.capabilities.ptksa_replay_counter", FT_UINT16, BASE_HEX, VALS(rsn_cap_replay_counter), 0x000C, NULL, HFILL }}, {&hf_ieee80211_rsn_cap_gtksa_replay_counter, - {"RSN GTKSA Replay Counter capabilities", - "wlan_mgt.rsn.capabilities.gtksa_replay_counter", + {"RSN GTKSA Replay Counter capabilities", "wlan_mgt.rsn.capabilities.gtksa_replay_counter", FT_UINT16, BASE_HEX, VALS(rsn_cap_replay_counter), 0x0030, NULL, HFILL }}, {&hf_ieee80211_rsn_cap_mfpr, - {"Management Frame Protection Required", - "wlan_mgt.rsn.capabilities.mfpr", - FT_BOOLEAN, 16, NULL, 0x0040, NULL, HFILL }}, + {"Management Frame Protection Required", "wlan_mgt.rsn.capabilities.mfpr", + FT_BOOLEAN, 16, NULL, 0x0040, + NULL, HFILL }}, {&hf_ieee80211_rsn_cap_mfpc, - {"Management Frame Protection Capable", - "wlan_mgt.rsn.capabilities.mfpc", - FT_BOOLEAN, 16, NULL, 0x0080, NULL, HFILL }}, + {"Management Frame Protection Capable", "wlan_mgt.rsn.capabilities.mfpc", + FT_BOOLEAN, 16, NULL, 0x0080, + NULL, HFILL }}, {&hf_ieee80211_rsn_cap_peerkey, - {"PeerKey Enabled", - "wlan_mgt.rsn.capabilities.peerkey", - FT_BOOLEAN, 16, NULL, 0x0200, NULL, HFILL }}, + {"PeerKey Enabled", "wlan_mgt.rsn.capabilities.peerkey", + FT_BOOLEAN, 16, NULL, 0x0200, + NULL, HFILL }}, {&hf_ieee80211_rsn_pmkid_count, - {"PMKID Count", "wlan_mgt.rsn.pmkid.count", FT_UINT16, BASE_DEC, - NULL, 0, "Indicates the number of PMKID selectors that are contained in the PMKID Suite List", HFILL }}, + {"PMKID Count", "wlan_mgt.rsn.pmkid.count", + FT_UINT16, BASE_DEC, NULL, 0, + "Indicates the number of PMKID selectors that are contained in the PMKID Suite List", HFILL }}, {&hf_ieee80211_rsn_pmkid_list, - {"PMKID List", "wlan_mgt.rsn.pmkid.list", FT_NONE, BASE_NONE, - NULL, 0, "Contains a series of cipher suite selectors that indicate the AKM suites", HFILL }}, + {"PMKID List", "wlan_mgt.rsn.pmkid.list", + FT_NONE, BASE_NONE, NULL, 0, + "Contains a series of cipher suite selectors that indicate the AKM suites", HFILL }}, {&hf_ieee80211_rsn_pmkid, - {"PMKID", "wlan_mgt.pmkid.akms", FT_BYTES, BASE_NONE, - NULL, 0, NULL, HFILL }}, + {"PMKID", "wlan_mgt.pmkid.akms", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_gmcs, - {"Group Management Cipher Suite", "wlan_mgt.rsn.gmcs", FT_UINT32, BASE_CUSTOM, - rsn_gmcs_base_custom, 0, "Contains the cipher suite selector used by the BSS to protect broadcast/multicast traffic", HFILL }}, + {"Group Management Cipher Suite", "wlan_mgt.rsn.gmcs", + FT_UINT32, BASE_CUSTOM, rsn_gmcs_base_custom, 0, + "Contains the cipher suite selector used by the BSS to protect broadcast/multicast traffic", HFILL }}, {&hf_ieee80211_rsn_gmcs_oui, - {"Group Management Cipher Suite OUI", "wlan_mgt.rsn.gmcs.oui", FT_UINT24, BASE_CUSTOM, - oui_base_custom, 0, NULL, HFILL }}, + {"Group Management Cipher Suite OUI", "wlan_mgt.rsn.gmcs.oui", + FT_UINT24, BASE_CUSTOM, oui_base_custom, 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_gmcs_type, - {"Group Management Cipher Suite type", "wlan_mgt.rsn.gmcs.type", FT_UINT8, BASE_DEC, - NULL, 0, NULL, HFILL }}, + {"Group Management Cipher Suite type", "wlan_mgt.rsn.gmcs.type", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_rsn_gmcs_80211_type, - {"Group Management Cipher Suite type", "wlan_mgt.rsn.gmcs.type", FT_UINT8, BASE_DEC, - VALS(ieee80211_rsn_cipher_vals), 0, NULL, HFILL }}, - + {"Group Management Cipher Suite type", "wlan_mgt.rsn.gmcs.type", + FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_cipher_vals), 0, + NULL, HFILL }}, {&hf_ieee80211_ht_cap, - {"HT Capabilities Info", "wlan_mgt.ht.capabilities", FT_UINT16, BASE_HEX, - NULL, 0, "HT Capabilities information", HFILL }}, + {"HT Capabilities Info", "wlan_mgt.ht.capabilities", + FT_UINT16, BASE_HEX, NULL, 0, + "HT Capabilities information", HFILL }}, {&hf_ieee80211_ht_vs_cap, - {"HT Capabilities Info (VS)", "wlan_mgt.vs.ht.capabilities", FT_UINT16, BASE_HEX, - NULL, 0, "Vendor Specific HT Capabilities information", HFILL }}, + {"HT Capabilities Info (VS)", "wlan_mgt.vs.ht.capabilities", + FT_UINT16, BASE_HEX, NULL, 0, + "Vendor Specific HT Capabilities information", HFILL }}, {&hf_ieee80211_ht_ldpc_coding, {"HT LDPC coding capability", "wlan_mgt.ht.capabilities.ldpccoding", @@ -14669,7 +15269,7 @@ proto_register_ieee80211 (void) {&hf_ieee80211_ht_sm_pwsave, {"HT SM Power Save", "wlan_mgt.ht.capabilities.sm", - FT_UINT16, BASE_HEX, VALS (&ht_sm_pwsave_flag), 0x000c, + FT_UINT16, BASE_HEX, VALS(ht_sm_pwsave_flag), 0x000c, NULL, HFILL }}, {&hf_ieee80211_ht_green, @@ -14694,7 +15294,7 @@ proto_register_ieee80211 (void) {&hf_ieee80211_ht_rx_stbc, {"HT Rx STBC", "wlan_mgt.ht.capabilities.rxstbc", - FT_UINT16, BASE_HEX, VALS (&ht_rx_stbc_flag), 0x0300, + FT_UINT16, BASE_HEX, VALS(ht_rx_stbc_flag), 0x0300, "HT Tx STBC", HFILL }}, {&hf_ieee80211_ht_delayed_block_ack, @@ -14728,12 +15328,14 @@ proto_register_ieee80211 (void) NULL, HFILL }}, {&hf_ieee80211_ampduparam, - {"A-MPDU Parameters", "wlan_mgt.ht.ampduparam", FT_UINT8, BASE_HEX, - NULL, 0, NULL, HFILL }}, + {"A-MPDU Parameters", "wlan_mgt.ht.ampduparam", + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ampduparam_vs, - {"A-MPDU Parameters (VS)", "wlan_mgt.vs.ht.ampduparam", FT_UINT8, BASE_HEX, - NULL, 0, "Vendor Specific A-MPDU Parameters", HFILL }}, + {"A-MPDU Parameters (VS)", "wlan_mgt.vs.ht.ampduparam", + FT_UINT8, BASE_HEX, NULL, 0, + "Vendor Specific A-MPDU Parameters", HFILL }}, {&hf_ieee80211_ampduparam_mpdu, {"Maximum Rx A-MPDU Length", "wlan_mgt.ht.ampduparam.maxlength", @@ -14752,51 +15354,63 @@ proto_register_ieee80211 (void) {&hf_ieee80211_mcsset, {"Rx Supported Modulation and Coding Scheme Set", "wlan_mgt.ht.mcsset", - FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_mcsset_vs, {"Rx Supported Modulation and Coding Scheme Set (VS)", "wlan_mgt.vs.ht.mcsset", - FT_STRING, BASE_NONE, NULL, 0, "Vendor Specific Rx Supported Modulation and Coding Scheme Set", HFILL }}, + FT_STRING, BASE_NONE, NULL, 0, + "Vendor Specific Rx Supported Modulation and Coding Scheme Set", HFILL }}, {&hf_ieee80211_mcsset_rx_bitmask, {"Rx Modulation and Coding Scheme (One bit per modulation)", "wlan_mgt.ht.mcsset.rxbitmask", - FT_NONE, BASE_NONE, NULL, 0, "One bit per modulation", HFILL }}, + FT_NONE, BASE_NONE, NULL, 0, + "One bit per modulation", HFILL }}, {&hf_ieee80211_mcsset_rx_bitmask_0to7, {"Rx Bitmask Bits 0-7", "wlan_mgt.ht.mcsset.rxbitmask.0to7", - FT_UINT32, BASE_HEX, 0, 0x000000ff, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, 0x000000ff, + NULL, HFILL }}, {&hf_ieee80211_mcsset_rx_bitmask_8to15, {"Rx Bitmask Bits 8-15", "wlan_mgt.ht.mcsset.rxbitmask.8to15", - FT_UINT32, BASE_HEX, 0, 0x0000ff00, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, 0x0000ff00, + NULL, HFILL }}, {&hf_ieee80211_mcsset_rx_bitmask_16to23, {"Rx Bitmask Bits 16-23", "wlan_mgt.ht.mcsset.rxbitmask.16to23", - FT_UINT32, BASE_HEX, 0, 0x00ff0000, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, 0x00ff0000, + NULL, HFILL }}, {&hf_ieee80211_mcsset_rx_bitmask_24to31, {"Rx Bitmask Bits 24-31", "wlan_mgt.ht.mcsset.rxbitmask.24to31", - FT_UINT32, BASE_HEX, 0, 0xff000000, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, 0xff000000, + NULL, HFILL }}, {&hf_ieee80211_mcsset_rx_bitmask_32, {"Rx Bitmask Bit 32", "wlan_mgt.ht.mcsset.rxbitmask.32", - FT_UINT32, BASE_HEX, 0, 0x000001, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, 0x000001, + NULL, HFILL }}, {&hf_ieee80211_mcsset_rx_bitmask_33to38, {"Rx Bitmask Bits 33-38", "wlan_mgt.ht.mcsset.rxbitmask.33to38", - FT_UINT32, BASE_HEX, 0, 0x00007e, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, 0x00007e, + NULL, HFILL }}, {&hf_ieee80211_mcsset_rx_bitmask_39to52, {"Rx Bitmask Bits 39-52", "wlan_mgt.ht.mcsset.rxbitmask.39to52", - FT_UINT32, BASE_HEX, 0, 0x1fff80, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, 0x1fff80, + NULL, HFILL }}, {&hf_ieee80211_mcsset_rx_bitmask_53to76, {"Rx Bitmask Bits 53-76", "wlan_mgt.ht.mcsset.rxbitmask.53to76", - FT_UINT32, BASE_HEX, 0, 0x1fffffe0, NULL, HFILL }}, + FT_UINT32, BASE_HEX, 0, 0x1fffffe0, + NULL, HFILL }}, {&hf_ieee80211_mcsset_highest_data_rate, {"Highest Supported Data Rate", "wlan_mgt.ht.mcsset.highestdatarate", - FT_UINT16, BASE_HEX, 0, 0x03ff, NULL, HFILL }}, + FT_UINT16, BASE_HEX, 0, 0x03ff, + NULL, HFILL }}, {&hf_ieee80211_mcsset_tx_mcs_set_defined, {"Tx Supported MCS Set", "wlan_mgt.ht.mcsset.txsetdefined", @@ -14810,7 +15424,7 @@ proto_register_ieee80211 (void) {&hf_ieee80211_mcsset_tx_max_spatial_streams, {"Tx Maximum Number of Spatial Streams Supported", "wlan_mgt.ht.mcsset.txmaxss", - FT_UINT16, BASE_HEX, VALS (&mcsset_tx_max_spatial_streams_flags) , 0x000c, + FT_UINT16, BASE_HEX, VALS(mcsset_tx_max_spatial_streams_flags) , 0x000c, NULL, HFILL }}, {&hf_ieee80211_mcsset_tx_unequal_modulation, @@ -14819,12 +15433,14 @@ proto_register_ieee80211 (void) NULL, HFILL }}, {&hf_ieee80211_htex_cap, - {"HT Extended Capabilities", "wlan_mgt.htex.capabilities", FT_UINT16, BASE_HEX, - NULL, 0, "HT Extended Capability information", HFILL }}, + {"HT Extended Capabilities", "wlan_mgt.htex.capabilities", + FT_UINT16, BASE_HEX, NULL, 0, + "HT Extended Capability information", HFILL }}, {&hf_ieee80211_htex_vs_cap, - {"HT Extended Capabilities (VS)", "wlan_mgt.vs.htex.capabilities", FT_UINT16, BASE_HEX, - NULL, 0, "Vendor Specific HT Extended Capability information", HFILL }}, + {"HT Extended Capabilities (VS)", "wlan_mgt.vs.htex.capabilities", + FT_UINT16, BASE_HEX, NULL, 0, + "Vendor Specific HT Extended Capability information", HFILL }}, {&hf_ieee80211_htex_pco, {"Transmitter supports PCO", "wlan_mgt.htex.capabilities.pco", @@ -14833,12 +15449,12 @@ proto_register_ieee80211 (void) {&hf_ieee80211_htex_transtime, {"Time needed to transition between 20MHz and 40MHz", "wlan_mgt.htex.capabilities.transtime", - FT_UINT16, BASE_HEX, VALS (&htex_transtime_flags), 0x0006, + FT_UINT16, BASE_HEX, VALS(htex_transtime_flags), 0x0006, NULL, HFILL }}, {&hf_ieee80211_htex_mcs, {"MCS Feedback capability", "wlan_mgt.htex.capabilities.mcs", - FT_UINT16, BASE_HEX, VALS (&htex_mcs_flags), 0x0300, + FT_UINT16, BASE_HEX, VALS(htex_mcs_flags), 0x0300, NULL, HFILL }}, {&hf_ieee80211_htex_htc_support, @@ -14852,12 +15468,14 @@ proto_register_ieee80211 (void) NULL, HFILL }}, {&hf_ieee80211_txbf, - {"Transmit Beam Forming (TxBF) Capabilities", "wlan_mgt.txbf", FT_UINT16, BASE_HEX, - NULL, 0, NULL, HFILL }}, + {"Transmit Beam Forming (TxBF) Capabilities", "wlan_mgt.txbf", + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_txbf_vs, - {"Transmit Beam Forming (TxBF) Capabilities (VS)", "wlan_mgt.vs.txbf", FT_UINT16, BASE_HEX, - NULL, 0, "Vendor Specific Transmit Beam Forming (TxBF) Capabilities", HFILL }}, + {"Transmit Beam Forming (TxBF) Capabilities (VS)", "wlan_mgt.vs.txbf", + FT_UINT16, BASE_HEX, NULL, 0, + "Vendor Specific Transmit Beam Forming (TxBF) Capabilities", HFILL }}, {&hf_ieee80211_txbf_cap, {"Transmit Beamforming", "wlan_mgt.txbf.txbf", @@ -14891,7 +15509,7 @@ proto_register_ieee80211 (void) {&hf_ieee80211_txbf_calib, {"Calibration", "wlan_mgt.txbf.calibration", - FT_UINT32, BASE_HEX, VALS (&txbf_calib_flag), 0x000000c0, + FT_UINT32, BASE_HEX, VALS(txbf_calib_flag), 0x000000c0, NULL, HFILL }}, {&hf_ieee80211_txbf_expl_csi, @@ -14911,36 +15529,37 @@ proto_register_ieee80211 (void) {&hf_ieee80211_txbf_expl_bf_csi, {"Receiver can return explicit CSI feedback", "wlan_mgt.txbf.rcsi", - FT_UINT32, BASE_HEX, VALS (&txbf_feedback_flags), 0x00001800, + FT_UINT32, BASE_HEX, VALS(txbf_feedback_flags), 0x00001800, NULL, HFILL }}, {&hf_ieee80211_txbf_expl_uncomp_fm_feed, {"Receiver can return explicit uncompressed Beamforming Feedback Matrix", "wlan_mgt.txbf.fm.uncompressed.rbf", - FT_UINT32, BASE_HEX, VALS (&txbf_feedback_flags), 0x00006000, + FT_UINT32, BASE_HEX, VALS(txbf_feedback_flags), 0x00006000, NULL, HFILL }}, {&hf_ieee80211_txbf_expl_comp_fm_feed, {"STA can compress and use compressed Beamforming Feedback Matrix", "wlan_mgt.txbf.fm.compressed.bf", - FT_UINT32, BASE_HEX, VALS (&txbf_feedback_flags), 0x00018000, + FT_UINT32, BASE_HEX, VALS(txbf_feedback_flags), 0x00018000, "Station can compress and use compressed Beamforming Feedback Matrix", HFILL }}, {&hf_ieee80211_txbf_min_group, {"Minimal grouping used for explicit feedback reports", "wlan_mgt.txbf.mingroup", - FT_UINT32, BASE_HEX, VALS (&txbf_min_group_flags), 0x00060000, + FT_UINT32, BASE_HEX, VALS(txbf_min_group_flags), 0x00060000, NULL, HFILL }}, {&hf_ieee80211_vht_cap, - {"VHT Capabilities Info", "wlan_mgt.vht.capabilities", FT_UINT32, BASE_HEX, - NULL, 0, "VHT Capabilities information", HFILL }}, + {"VHT Capabilities Info", "wlan_mgt.vht.capabilities", + FT_UINT32, BASE_HEX, NULL, 0, + "VHT Capabilities information", HFILL }}, {&hf_ieee80211_vht_max_mpdu_length, {"Maximum MPDU Length", "wlan_mgt.vht.capabilities.maxmpdulength", - FT_UINT32, BASE_HEX, VALS (&vht_max_mpdu_length_flag), 0x00000003, + FT_UINT32, BASE_HEX, VALS(vht_max_mpdu_length_flag), 0x00000003, NULL, HFILL }}, {&hf_ieee80211_vht_supported_chan_width_set, {"Supported Channel Width Set", "wlan_mgt.vht.capabilities.supportedchanwidthset", - FT_UINT32, BASE_HEX, VALS (&vht_supported_chan_width_set_flag), 0x0000000c, + FT_UINT32, BASE_HEX, VALS(vht_supported_chan_width_set_flag), 0x0000000c, NULL, HFILL }}, {&hf_ieee80211_vht_rx_ldpc, @@ -14965,7 +15584,7 @@ proto_register_ieee80211 (void) {&hf_ieee80211_vht_rx_stbc, {"Rx STBC", "wlan_mgt.vht.capabilities.rxstbc", - FT_UINT32, BASE_HEX, VALS (&vht_rx_stbc_flag), 0x00000700, + FT_UINT32, BASE_HEX, VALS(vht_rx_stbc_flag), 0x00000700, NULL, HFILL }}, {&hf_ieee80211_vht_su_beamformer_cap, @@ -14980,12 +15599,12 @@ proto_register_ieee80211 (void) {&hf_ieee80211_vht_beamformer_antennas, {"Compressed Steering Number of Beamformer Antennas Supported", "wlan_mgt.vht.capabilities.beamformerants", - FT_UINT32, BASE_HEX, VALS (&num_plus_one_3bit_flag), 0x0000e000, + FT_UINT32, BASE_HEX, VALS(num_plus_one_3bit_flag), 0x0000e000, NULL, HFILL }}, {&hf_ieee80211_vht_sounding_dimensions, {"Number of Sounding Dimensions", "wlan_mgt.vht.capabilities.soundingdimensions", - FT_UINT32, BASE_HEX, VALS (&num_plus_one_3bit_flag), 0x00070000, + FT_UINT32, BASE_HEX, VALS(num_plus_one_3bit_flag), 0x00070000, NULL, HFILL }}, {&hf_ieee80211_vht_mu_beamformer_cap, @@ -15010,12 +15629,12 @@ proto_register_ieee80211 (void) {&hf_ieee80211_vht_max_ampdu, {"Max A-MPDU Length", "wlan_mgt.vht.capabilities.maxampdu", - FT_UINT32, BASE_HEX, VALS (&vht_max_ampdu_flag), 0x03800000, + FT_UINT32, BASE_HEX, VALS(vht_max_ampdu_flag), 0x03800000, NULL, HFILL }}, {&hf_ieee80211_vht_link_adaptation_cap, {"VHT Link Adaptation", "wlan_mgt.vht.capabilities.linkadapt", - FT_UINT32, BASE_HEX, VALS (&vht_link_adapt_flag), 0x0c000000, + FT_UINT32, BASE_HEX, VALS(vht_link_adapt_flag), 0x0c000000, NULL, HFILL }}, {&hf_ieee80211_vht_rx_pattern, @@ -15033,45 +15652,55 @@ proto_register_ieee80211 (void) FT_BOOLEAN, 32, NULL, 0xc0000000, NULL, HFILL }}, - {&hf_ieee80211_vht_mcsset, - {"VHT Supported MCS Set", "wlan_mgt.vht.mcsset", - FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + {&hf_ieee80211_vht_mcsset, + {"VHT Supported MCS Set", "wlan_mgt.vht.mcsset", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_rx_mcs_map, {"Rx MCS Map", "wlan_mgt.vht.mcsset.rxmcsmap", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_0_ss, {"Rx SS 0", "wlan_mgt.vht.mcsset.rxmcsmap.ss0", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0003, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0003, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_1_ss, {"Rx SS 1", "wlan_mgt.vht.mcsset.rxmcsmap.ss1", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x000c, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x000c, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_2_ss, {"Rx SS 2", "wlan_mgt.vht.mcsset.rxmcsmap.ss2", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0030, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0030, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_3_ss, {"Rx SS 3", "wlan_mgt.vht.mcsset.rxmcsmap.ss3", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x00c0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x00c0, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_4_ss, {"Rx SS 4", "wlan_mgt.vht.mcsset.rxmcsmap.ss4", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0300, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0300, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_5_ss, {"Rx SS 5", "wlan_mgt.vht.mcsset.rxmcsmap.ss5", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0c00, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0c00, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_6_ss, {"Rx SS 6", "wlan_mgt.vht.mcsset.rxmcsmap.ss6", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x3000, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x3000, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_rx_max_mcs_for_7_ss, {"Rx SS 7", "wlan_mgt.vht.mcsset.rxmcsmap.ss7", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0xc000, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0xc000, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_rx_highest_long_gi, {"Rx Highest Long GI Data Rate (in Mb/s, 0 = subfield not in use)", "wlan_mgt.vht.mcsset.rxhighestlonggirate", @@ -15080,39 +15709,48 @@ proto_register_ieee80211 (void) {&hf_ieee80211_vht_mcsset_tx_mcs_map, {"Tx MCS Map", "wlan_mgt.vht.mcsset.txmcsmap", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_0_ss, {"Tx SS 0", "wlan_mgt.vht.mcsset.txmcsmap.ss0", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0003, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0003, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_1_ss, {"Tx SS 1", "wlan_mgt.vht.mcsset.txmcsmap.ss1", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x000c, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x000c, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_2_ss, {"Tx SS 2", "wlan_mgt.vht.mcsset.txmcsmap.ss2", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0030, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0030, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_3_ss, {"Tx SS 3", "wlan_mgt.vht.mcsset.txmcsmap.ss3", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x00c0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x00c0, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_4_ss, {"Tx SS 4", "wlan_mgt.vht.mcsset.txmcsmap.ss4", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0300, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0300, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_5_ss, {"Tx SS 5", "wlan_mgt.vht.mcsset.txmcsmap.ss5", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0c00, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0c00, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_6_ss, {"Tx SS 6", "wlan_mgt.vht.mcsset.txmcsmap.ss6", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x3000, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x3000, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_tx_max_mcs_for_7_ss, {"Tx SS 7", "wlan_mgt.vht.mcsset.txmcsmap.ss7", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0xc000, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0xc000, + NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_tx_highest_long_gi, {"Tx Highest Long GI Data Rate (in Mb/s, 0 = subfield not in use)", "wlan_mgt.vht.mcsset.txhighestlonggirate", @@ -15120,81 +15758,93 @@ proto_register_ieee80211 (void) NULL, HFILL }}, {&hf_ieee80211_vht_op, - {"VHT Operation Info", "wlan_mgt.vht.op", FT_NONE, BASE_NONE, - NULL, 0, NULL, HFILL }}, + {"VHT Operation Info", "wlan_mgt.vht.op", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_vht_op_channel_width, {"Channel Width", "wlan_mgt.vht.op.channelwidth", - FT_UINT8, BASE_HEX, VALS(vht_op_channel_width_flag), 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(vht_op_channel_width_flag), 0, + NULL, HFILL }}, {&hf_ieee80211_vht_op_channel_center0, {"Channel Center Segment 0", "wlan_mgt.vht.op.channelcenter0", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_vht_op_channel_center1, {"Channel Center Segment 1", "wlan_mgt.vht.op.channelcenter1", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_vht_op_basic_mcs_map, {"Basic MCS Map", "wlan_mgt.vht.op.basicmcsmap", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_vht_op_max_basic_mcs_for_0_ss, {"Basic SS 0", "wlan_mgt.vht.op.basicmcsmap.ss0", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0003, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0003, + NULL, HFILL }}, {&hf_ieee80211_vht_op_max_basic_mcs_for_1_ss, {"Basic SS 1", "wlan_mgt.vht.op.basicmcsmap.ss1", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x000c, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x000c, + NULL, HFILL }}, {&hf_ieee80211_vht_op_max_basic_mcs_for_2_ss, {"Basic SS 2", "wlan_mgt.vht.op.basicmcsmap.ss2", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0030, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0030, + NULL, HFILL }}, {&hf_ieee80211_vht_op_max_basic_mcs_for_3_ss, {"Basic SS 3", "wlan_mgt.vht.op.basicmcsmap.ss3", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x00c0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x00c0, + NULL, HFILL }}, {&hf_ieee80211_vht_op_max_basic_mcs_for_4_ss, {"Basic SS 4", "wlan_mgt.vht.op.basicmcsmap.ss4", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0300, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0300, + NULL, HFILL }}, {&hf_ieee80211_vht_op_max_basic_mcs_for_5_ss, {"Basic SS 5", "wlan_mgt.vht.op.basicmcsmap.ss5", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0c00, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x0c00, + NULL, HFILL }}, {&hf_ieee80211_vht_op_max_basic_mcs_for_6_ss, {"Basic SS 6", "wlan_mgt.vht.op.basicmcsmap.ss6", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x3000, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0x3000, + NULL, HFILL }}, {&hf_ieee80211_vht_op_max_basic_mcs_for_7_ss, {"Basic SS 7", "wlan_mgt.vht.op.basicmcsmap.ss7", - FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0xc000, NULL, HFILL }}, - + FT_UINT16, BASE_HEX, VALS(vht_supported_mcs_flag), 0xc000, + NULL, HFILL }}, {&hf_ieee80211_txbf_csi_num_bf_ant, {"Max antennae STA can support when CSI feedback required", "wlan_mgt.txbf.csinumant", - FT_UINT32, BASE_HEX, VALS (&txbf_antenna_flags), 0x00180000, + FT_UINT32, BASE_HEX, VALS(txbf_antenna_flags), 0x00180000, "Max antennae station can support when CSI feedback required", HFILL }}, {&hf_ieee80211_txbf_uncomp_sm_bf_ant, {"Max antennae STA can support when uncompressed Beamforming feedback required", "wlan_mgt.txbf.fm.uncompressed.maxant", - FT_UINT32, BASE_HEX, VALS (&txbf_antenna_flags), 0x00600000, + FT_UINT32, BASE_HEX, VALS(txbf_antenna_flags), 0x00600000, "Max antennae station can support when uncompressed Beamforming feedback required", HFILL }}, {&hf_ieee80211_txbf_comp_sm_bf_ant, {"Max antennae STA can support when compressed Beamforming feedback required", "wlan_mgt.txbf.fm.compressed.maxant", - FT_UINT32, BASE_HEX, VALS (&txbf_antenna_flags), 0x01800000, + FT_UINT32, BASE_HEX, VALS(txbf_antenna_flags), 0x01800000, "Max antennae station can support when compressed Beamforming feedback required", HFILL }}, {&hf_ieee80211_txbf_csi_max_rows_bf, {"Maximum number of rows of CSI explicit feedback", "wlan_mgt.txbf.csi.maxrows", - FT_UINT32, BASE_HEX, VALS (&txbf_csi_max_rows_bf_flags), 0x06000000, + FT_UINT32, BASE_HEX, VALS(txbf_csi_max_rows_bf_flags), 0x06000000, NULL, HFILL }}, {&hf_ieee80211_txbf_chan_est, {"Maximum number of space time streams for which channel dimensions can be simultaneously estimated", "wlan_mgt.txbf.channelest", - FT_UINT32, BASE_HEX, VALS (&txbf_chan_est_flags), 0x18000000, + FT_UINT32, BASE_HEX, VALS(txbf_chan_est_flags), 0x18000000, NULL, HFILL }}, {&hf_ieee80211_txbf_resrv, @@ -15203,16 +15853,18 @@ proto_register_ieee80211 (void) NULL, HFILL }}, {&hf_ieee80211_hta_cc, - {"HT Control Channel", "wlan_mgt.hta.control_channel", FT_UINT8, BASE_DEC, - NULL, 0, NULL, HFILL }}, + {"HT Control Channel", "wlan_mgt.hta.control_channel", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_hta_cap, - {"HT Additional Capabilities", "wlan_mgt.hta.capabilities", FT_UINT16, BASE_HEX, - NULL, 0, "HT Additional Capability information", HFILL }}, + {"HT Additional Capabilities", "wlan_mgt.hta.capabilities", + FT_UINT16, BASE_HEX, NULL, 0, + "HT Additional Capability information", HFILL }}, {&hf_ieee80211_hta_ext_chan_offset, {"Extension Channel Offset", "wlan_mgt.hta.capabilities.extchan", - FT_UINT16, BASE_HEX, VALS (&hta_ext_chan_offset_flag), 0x0003, + FT_UINT16, BASE_HEX, VALS(hta_ext_chan_offset_flag), 0x0003, NULL, HFILL }}, {&hf_ieee80211_hta_rec_tx_width, @@ -15232,12 +15884,12 @@ proto_register_ieee80211 (void) {&hf_ieee80211_hta_service_interval, {"Service Interval Granularity", "wlan_mgt.hta.capabilities.serviceinterval", - FT_UINT16, BASE_HEX, VALS (&hta_service_interval_flag), 0x00E0, + FT_UINT16, BASE_HEX, VALS(hta_service_interval_flag), 0x00E0, NULL, HFILL }}, {&hf_ieee80211_hta_operating_mode, {"Operating Mode", "wlan_mgt.hta.capabilities.operatingmode", - FT_UINT16, BASE_HEX, VALS (&hta_operating_mode_flag), 0x0003, + FT_UINT16, BASE_HEX, VALS(hta_operating_mode_flag), 0x0003, NULL, HFILL }}, {&hf_ieee80211_hta_non_gf_devices, @@ -15277,131 +15929,163 @@ proto_register_ieee80211 (void) {&hf_ieee80211_antsel, {"Antenna Selection (ASEL) Capabilities", "wlan_mgt.asel", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_antsel_vs, {"Antenna Selection (ASEL) Capabilities (VS)", "wlan_mgt.vs.asel", - FT_UINT8, BASE_HEX, NULL, 0, "Vendor Specific Antenna Selection (ASEL) Capabilities", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "Vendor Specific Antenna Selection (ASEL) Capabilities", HFILL }}, {&hf_ieee80211_antsel_b0, {"Antenna Selection Capable", "wlan_mgt.asel.capable", - FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x01, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x01, + NULL, HFILL }}, {&hf_ieee80211_antsel_b1, {"Explicit CSI Feedback Based Tx ASEL", "wlan_mgt.asel.txcsi", - FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x02, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x02, + NULL, HFILL }}, {&hf_ieee80211_antsel_b2, {"Antenna Indices Feedback Based Tx ASEL", "wlan_mgt.asel.txif", - FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x04, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x04, + NULL, HFILL }}, {&hf_ieee80211_antsel_b3, {"Explicit CSI Feedback", "wlan_mgt.asel.csi", - FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x08, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x08, + NULL, HFILL }}, {&hf_ieee80211_antsel_b4, {"Antenna Indices Feedback", "wlan_mgt.asel.if", - FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x10, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x10, + NULL, HFILL }}, {&hf_ieee80211_antsel_b5, {"Rx ASEL", "wlan_mgt.asel.rx", - FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x20, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x20, + NULL, HFILL }}, {&hf_ieee80211_antsel_b6, {"Tx Sounding PPDUs", "wlan_mgt.asel.sppdu", - FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x40, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_supported_not_supported), 0x40, + NULL, HFILL }}, {&hf_ieee80211_antsel_b7, {"Reserved", "wlan_mgt.asel.reserved", - FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0x80, + NULL, HFILL }}, {&hf_ieee80211_ht_info_delimiter1, {"HT Information Subset (1 of 3)", "wlan_mgt.ht.info.delim1", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ht_info_primary_channel, {"Primary Channel", "wlan_mgt.ht.info.primarychannel", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ht_info_secondary_channel_offset, {"Secondary channel offset", "wlan_mgt.ht.info.secchanoffset", - FT_UINT8, BASE_HEX, VALS (&ht_info_secondary_channel_offset_flags), 0x03, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(ht_info_secondary_channel_offset_flags), 0x03, + NULL, HFILL }}, {&hf_ieee80211_ht_info_channel_width, {"Supported channel width", "wlan_mgt.ht.info.chanwidth", - FT_BOOLEAN, 8, TFS (&ht_info_channel_width_flag), 0x04, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&ht_info_channel_width_flag), 0x04, + NULL, HFILL }}, {&hf_ieee80211_ht_info_rifs_mode, {"Reduced Interframe Spacing (RIFS)", "wlan_mgt.ht.info.rifs", - FT_BOOLEAN, 8, TFS (&ht_info_rifs_mode_flag), 0x08, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&ht_info_rifs_mode_flag), 0x08, + NULL, HFILL }}, {&hf_ieee80211_ht_info_psmp_stas_only, {"Power Save Multi-Poll (PSMP) stations only", "wlan_mgt.ht.info.psmponly", - FT_BOOLEAN, 8, TFS (&ht_info_psmp_stas_only_flag), 0x10, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&ht_info_psmp_stas_only_flag), 0x10, + NULL, HFILL }}, {&hf_ieee80211_ht_info_service_interval_granularity, {"Shortest service interval", "wlan_mgt.ht.info.", - FT_UINT8, BASE_HEX, VALS (&ht_info_service_interval_granularity_flags), 0xe0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(ht_info_service_interval_granularity_flags), 0xe0, + NULL, HFILL }}, {&hf_ieee80211_ht_info_delimiter2, {"HT Information Subset (2 of 3)", "wlan_mgt.ht.info.delim2", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ht_info_operating_mode, {"Operating mode of BSS", "wlan_mgt.ht.info.operatingmode", - FT_UINT16, BASE_HEX, VALS (&ht_info_operating_mode_flags), 0x0003, NULL, HFILL }}, + FT_UINT16, BASE_HEX, VALS(ht_info_operating_mode_flags), 0x0003, + NULL, HFILL }}, {&hf_ieee80211_ht_info_non_greenfield_sta_present, {"Non-greenfield STAs present", "wlan_mgt.ht.info.greenfield", - FT_BOOLEAN, 16, TFS (&ht_info_non_greenfield_sta_present_flag), 0x0004, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&ht_info_non_greenfield_sta_present_flag), 0x0004, + NULL, HFILL }}, {&hf_ieee80211_ht_info_transmit_burst_limit, {"Transmit burst limit", "wlan_mgt.ht.info.burstlim", - FT_BOOLEAN, 16, TFS (&ht_info_transmit_burst_limit_flag), 0x0008, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&ht_info_transmit_burst_limit_flag), 0x0008, + NULL, HFILL }}, {&hf_ieee80211_ht_info_obss_non_ht_stas_present, {"OBSS non-HT STAs present", "wlan_mgt.ht.info.obssnonht", - FT_BOOLEAN, 16, TFS (&ht_info_obss_non_ht_stas_present_flag), 0x0010, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&ht_info_obss_non_ht_stas_present_flag), 0x0010, + NULL, HFILL }}, {&hf_ieee80211_ht_info_reserved_1, {"Reserved", "wlan_mgt.ht.info.reserved1", - FT_UINT16, BASE_HEX, NULL, 0xffe0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0xffe0, + NULL, HFILL }}, {&hf_ieee80211_ht_info_delimiter3, {"HT Information Subset (3 of 3)", "wlan_mgt.ht.info.delim3", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ht_info_reserved_2, {"Reserved", "wlan_mgt.ht.info.reserved2", - FT_UINT16, BASE_HEX, NULL, 0x003f, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x003f, + NULL, HFILL }}, {&hf_ieee80211_ht_info_dual_beacon, {"Dual beacon", "wlan_mgt.ht.info.dualbeacon", - FT_BOOLEAN, 16, TFS (&ht_info_dual_beacon_flag), 0x0040, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&ht_info_dual_beacon_flag), 0x0040, + NULL, HFILL }}, {&hf_ieee80211_ht_info_dual_cts_protection, {"Dual Clear To Send (CTS) protection", "wlan_mgt.ht.info.dualcts", - FT_BOOLEAN, 16, TFS (&ht_info_dual_cts_protection_flag), 0x0080, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&ht_info_dual_cts_protection_flag), 0x0080, + NULL, HFILL }}, {&hf_ieee80211_ht_info_secondary_beacon, {"Beacon ID", "wlan_mgt.ht.info.secondarybeacon", - FT_BOOLEAN, 16, TFS (&ht_info_secondary_beacon_flag), 0x0100, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&ht_info_secondary_beacon_flag), 0x0100, + NULL, HFILL }}, {&hf_ieee80211_ht_info_lsig_txop_protection_full_support, {"L-SIG TXOP Protection Full Support", "wlan_mgt.ht.info.lsigprotsupport", - FT_BOOLEAN, 16, TFS (&ht_info_lsig_txop_protection_full_support_flag), 0x0200, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&ht_info_lsig_txop_protection_full_support_flag), 0x0200, + NULL, HFILL }}, {&hf_ieee80211_ht_info_pco_active, {"Phased Coexistence Operation (PCO)", "wlan_mgt.ht.info.pco.active", - FT_BOOLEAN, 16, TFS (&tfs_active_inactive), 0x0400, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&tfs_active_inactive), 0x0400, + NULL, HFILL }}, {&hf_ieee80211_ht_info_pco_phase, {"Phased Coexistence Operation (PCO) Phase", "wlan_mgt.ht.info.pco.phase", - FT_BOOLEAN, 16, TFS (&ht_info_pco_phase_flag), 0x0800, NULL, HFILL }}, + FT_BOOLEAN, 16, TFS (&ht_info_pco_phase_flag), 0x0800, + NULL, HFILL }}, {&hf_ieee80211_ht_info_reserved_3, {"Reserved", "wlan_mgt.ht.info.reserved3", - FT_UINT16, BASE_HEX, NULL, 0xf000, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0xf000, + NULL, HFILL }}, {&hf_ieee80211_tag_ap_channel_report_regulatory_class, {"Regulatory Class", "wlan_mgt.ap_channel_report.regulatory_class", @@ -15415,7 +16099,7 @@ proto_register_ieee80211 (void) {&hf_ieee80211_tag_secondary_channel_offset, {"Secondary Channel Offset", "wlan_mgt.secchanoffset", - FT_UINT8, BASE_HEX, VALS (&ieee80211_tag_secondary_channel_offset_flags), 0, + FT_UINT8, BASE_HEX, VALS(ieee80211_tag_secondary_channel_offset_flags), 0, NULL, HFILL }}, {&hf_ieee80211_tag_power_constraint_local, @@ -15475,455 +16159,566 @@ proto_register_ieee80211 (void) {&hf_ieee80211_tag_measure_request_token, {"Measurement Token", "wlan_mgt.measure.req.token", - FT_UINT8, BASE_HEX, NULL, 0xff, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0xff, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_mode, {"Measurement Request Mode", "wlan_mgt.measure.req.mode", - FT_UINT8, BASE_HEX, NULL, 0xff, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0xff, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_mode_parallel, {"Parallel", "wlan_mgt.measure.req.reqmode.parallel", - FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_mode_enable, {"Measurement Request Mode Field", "wlan_mgt.measure.req.reqmode.enable", - FT_BOOLEAN, 8, TFS (&tfs_enabled_disabled), 0x02, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_enabled_disabled), 0x02, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_mode_request, {"Measurement Reports", "wlan_mgt.measure.req.reqmode.request", - FT_BOOLEAN, 8, TFS (&tfs_accepted_not_accepted), 0x04, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_accepted_not_accepted), 0x04, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_mode_report, {"Autonomous Measurement Reports", "wlan_mgt.measure.req.reqmode.report", - FT_BOOLEAN, 8, TFS (&tfs_accepted_not_accepted), 0x08, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_accepted_not_accepted), 0x08, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_mode_duration_mandatory, {"Duration Mandatory", "wlan_mgt.measure.req.reqmode.duration_mandatory", - FT_BOOLEAN, 8, TFS (&tfs_accepted_not_accepted), 0x10, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_accepted_not_accepted), 0x10, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_mode_reserved, {"Reserved", "wlan_mgt.measure.req.reqmode.reserved", - FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0xE0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_type, {"Measurement Request Type", "wlan_mgt.measure.req.reqtype", - FT_UINT8, BASE_HEX, VALS (&ieee80211_tag_measure_request_type_flags), 0x00, NULL, HFILL }}, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_tag_measure_request_type_flags_ext, 0x00, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_channel_number, {"Measurement Channel Number", "wlan_mgt.measure.req.channelnumber", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_start_time, {"Measurement Start Time", "wlan_mgt.measure.req.starttime", - FT_UINT64, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT64, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_duration, {"Measurement Duration", "wlan_mgt.measure.req.channelnumber", - FT_UINT16, BASE_HEX, NULL, 0, "in TU (1 TU = 1024 us)", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + "in TU (1 TU = 1024 us)", HFILL }}, {&hf_ieee80211_tag_measure_request_regulatory_class, {"Measurement Channel Number", "wlan_mgt.measure.req.regclass", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_randomization_interval, {"Randomization Interval", "wlan_mgt.measure.req.randint", - FT_UINT16, BASE_HEX, NULL, 0, "in TU (1 TU = 1024 us)", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + "in TU (1 TU = 1024 us)", HFILL }}, {&hf_ieee80211_tag_measure_request_measurement_mode, {"Measurement Mode", "wlan_mgt.measure.req.measurementmode", - FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_measurement_mode_flags), 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_measurement_mode_flags), 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_bssid, {"BSSID", "wlan_mgt.measure.req.bssid", - FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_subelement_length, {"Length", "wlan_mgt.measure.req.sub.length", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_beacon_sub_id, {"SubElement ID", "wlan_mgt.measure.req.beacon.sub.id", - FT_UINT8, BASE_DEC, VALS(ieee80211_tag_measure_request_beacon_sub_id_flags), 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, VALS(ieee80211_tag_measure_request_beacon_sub_id_flags), 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_beacon_sub_ssid, {"SSID", "wlan_mgt.measure.req.beacon.sub.ssid", - FT_STRING, BASE_NONE, 0, 0, NULL, HFILL }}, + FT_STRING, BASE_NONE, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_beacon_sub_bri_reporting_condition, {"Reporting Condition", "wlan_mgt.measure.req.beacon.sub.bri.repcond", - FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_beacon_sub_bri_reporting_condition_flags), 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_beacon_sub_bri_reporting_condition_flags), 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_beacon_sub_bri_threshold_offset, {"Threshold/Offset", "wlan_mgt.measure.req.beacon.sub.bri.threshold_offset", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_beacon_sub_reporting_detail, {"Reporting Detail", "wlan_mgt.measure.req.beacon.sub.bri.reporting_detail", - FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_beacon_sub_reporting_detail_flags), 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_beacon_sub_reporting_detail_flags), 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_beacon_sub_request, {"Request", "wlan_mgt.measure.req.beacon.sub.request", - FT_UINT8, BASE_DEC, 0, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, 0, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_beacon_unknown, {"Unknown Data", "wlan_mgt.measure.req.beacon.unknown", - FT_BYTES, BASE_NONE, NULL, 0, "(not interpreted)", HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + "(not interpreted)", HFILL }}, {&hf_ieee80211_tag_measure_request_frame_request_type, {"Frame Request Type", "wlan_mgt.measure.req.frame_request_type", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_mac_address, {"MAC Address", "wlan_mgt.measure.req.mac_address", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_peer_mac_address, {"Peer MAC Address", "wlan_mgt.measure.req.peer_mac_address", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_request_group_id, {"Group ID", "wlan_mgt.measure.req.groupid", - FT_UINT8, BASE_HEX, VALS(ieee80211_tag_measure_request_group_id_flags), 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_tag_measure_request_group_id_flags_ext, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_measurement_token, {"Measurement Token", "wlan_mgt.measure.req.token", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_mode, {"Measurement Report Mode", "wlan_mgt.measure.req.mode", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_mode_late, {"Measurement Report Mode Field", "wlan_mgt.measure.rep.repmode.late", - FT_BOOLEAN, 8, TFS (&tfs_enabled_disabled), 0x01, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_enabled_disabled), 0x01, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_mode_incapable, {"Measurement Reports", "wlan_mgt.measure.rep.repmode.incapable", - FT_BOOLEAN, 8, TFS (&tfs_accepted_not_accepted), 0x02, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_accepted_not_accepted), 0x02, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_mode_refused, {"Autonomous Measurement Reports", "wlan_mgt.measure.rep.repmode.refused", - FT_BOOLEAN, 8, TFS (&tfs_accepted_not_accepted), 0x04, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_accepted_not_accepted), 0x04, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_mode_reserved, {"Reserved", "wlan_mgt.measure.rep.repmode.reserved", - FT_UINT8, BASE_HEX, NULL, 0xf8, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0xf8, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_type, {"Measurement Report Type", "wlan_mgt.measure.rep.reptype", - FT_UINT8, BASE_HEX, VALS (&ieee80211_tag_measure_report_type_flags), 0x00, NULL, HFILL }}, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_tag_measure_report_type_flags_ext, 0x00, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_channel_number, {"Measurement Channel Number", "wlan_mgt.measure.rep.channelnumber", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_start_time, {"Measurement Start Time", "wlan_mgt.measure.rep.starttime", - FT_UINT64, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT64, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_duration, {"Measurement Duration", "wlan_mgt.measure.rep.channelnumber", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_cca_busy_fraction, {"CCA Busy Fraction", "wlan_mgt.measure.rep.ccabusy", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_basic_map_field, {"Map Field", "wlan_mgt.measure.rep.mapfield", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_map_field_bss, {"BSS", "wlan_mgt.measure.rep.repmode.mapfield.bss", - FT_BOOLEAN, 8, TFS (&ieee80211_tag_measure_map_field_bss_flag), 0x01, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&ieee80211_tag_measure_map_field_bss_flag), 0x01, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_map_field_odfm, {"Orthogonal Frequency Division Multiplexing (ODFM) Preamble", "wlan_mgt.measure.rep.repmode.mapfield.bss", - FT_BOOLEAN, 8, TFS (&tfs_detected_not_detected), 0x02, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_detected_not_detected), 0x02, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_map_field_unident_signal, {"Unidentified Signal", "wlan_mgt.measure.rep.repmode.mapfield.unidentsig", - FT_BOOLEAN, 8, TFS (&tfs_detected_not_detected), 0x04, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_detected_not_detected), 0x04, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_map_field_radar, {"Radar", "wlan_mgt.measure.rep.repmode.mapfield.radar", - FT_BOOLEAN, 8, TFS (&tfs_detected_not_detected), 0x08, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_detected_not_detected), 0x08, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_map_field_unmeasured, {"Unmeasured", "wlan_mgt.measure.rep.repmode.mapfield.unmeasured", - FT_BOOLEAN, 8, TFS (&tfs_true_false), 0x10, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS (&tfs_true_false), 0x10, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_map_field_reserved, {"Reserved", "wlan_mgt.measure.rep.repmode.mapfield.reserved", - FT_UINT8, BASE_HEX, NULL, 0xe0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0xe0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_rpi_histogram_report, {"Receive Power Indicator (RPI) Histogram Report", "wlan_mgt.measure.rep.rpi.histogram_report", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_rpi_histogram_report_0, {"RPI 0 Density", "wlan_mgt.measure.rep.rpi.rpi0density", - FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 0 Density", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "Receive Power Indicator (RPI) 0 Density", HFILL }}, {&hf_ieee80211_tag_measure_rpi_histogram_report_1, {"RPI 1 Density", "wlan_mgt.measure.rep.rpi.rpi1density", - FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 1 Density", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "Receive Power Indicator (RPI) 1 Density", HFILL }}, {&hf_ieee80211_tag_measure_rpi_histogram_report_2, {"RPI 2 Density", "wlan_mgt.measure.rep.rpi.rpi2density", - FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 2 Density", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "Receive Power Indicator (RPI) 2 Density", HFILL }}, {&hf_ieee80211_tag_measure_rpi_histogram_report_3, {"RPI 3 Density", "wlan_mgt.measure.rep.rpi.rpi3density", - FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 3 Density", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "Receive Power Indicator (RPI) 3 Density", HFILL }}, {&hf_ieee80211_tag_measure_rpi_histogram_report_4, {"RPI 4 Density", "wlan_mgt.measure.rep.rpi.rpi4density", - FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 4 Density", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "Receive Power Indicator (RPI) 4 Density", HFILL }}, {&hf_ieee80211_tag_measure_rpi_histogram_report_5, {"RPI 5 Density", "wlan_mgt.measure.rep.rpi.rpi5density", - FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 5 Density", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "Receive Power Indicator (RPI) 5 Density", HFILL }}, {&hf_ieee80211_tag_measure_rpi_histogram_report_6, {"RPI 6 Density", "wlan_mgt.measure.rep.rpi.rpi6density", - FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 6 Density", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "Receive Power Indicator (RPI) 6 Density", HFILL }}, {&hf_ieee80211_tag_measure_rpi_histogram_report_7, {"RPI 7 Density", "wlan_mgt.measure.rep.rpi.rpi7density", - FT_UINT8, BASE_HEX, NULL, 0, "Receive Power Indicator (RPI) 7 Density", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "Receive Power Indicator (RPI) 7 Density", HFILL }}, {&hf_ieee80211_tag_measure_report_regulatory_class, {"Regulatory Class", "wlan_mgt.measure.rep.regclass", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_channel_load, {"Channel Load", "wlan_mgt.measure.rep.chanload", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_frame_info, {"Reported Frame Information", "wlan_mgt.measure.rep.frameinfo", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_frame_info_phy_type, {"Condensed PHY", "wlan_mgt.measure.rep.frameinfo.phytype", - FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0x7F, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_frame_info_frame_type, {"Reported Frame Type", "wlan_mgt.measure.rep.frameinfo.frametype", - FT_BOOLEAN, 8, TFS(&ieee80211_tag_measure_report_frame_info_frame_type_flag), 0x80, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&ieee80211_tag_measure_report_frame_info_frame_type_flag), 0x80, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_rcpi, {"Received Channel Power Indicator (RCPI)", "wlan_mgt.measure.rep.rcpi", - FT_UINT8, BASE_HEX, NULL, 0, "in dBm", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "in dBm", HFILL }}, {&hf_ieee80211_tag_measure_report_rsni, {"Received Signal to Noise Indicator (RSNI)", "wlan_mgt.measure.rep.rsni", - FT_UINT8, BASE_HEX, NULL, 0, "in dB", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + "in dB", HFILL }}, {&hf_ieee80211_tag_measure_report_bssid, {"BSSID Being Reported", "wlan_mgt.measure.rep.bssid", - FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_ant_id, {"Antenna ID", "wlan_mgt.measure.rep.antid", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_anpi, {"ANPI", "wlan_mgt.measure.rep.anpi", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_ipi_density_0, {"IPI Density 0", "wlan_mgt.measure.rep.ipi_density0", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_ipi_density_1, {"IPI Density 1", "wlan_mgt.measure.rep.ipi_density1", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_ipi_density_2, {"IPI Density 2", "wlan_mgt.measure.rep.ipi_density2", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_ipi_density_3, {"IPI Density 3", "wlan_mgt.measure.rep.ipi_density3", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_ipi_density_4, {"IPI Density 4", "wlan_mgt.measure.rep.ipi_density4", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_ipi_density_5, {"IPI Density 5", "wlan_mgt.measure.rep.ipi_density5", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_ipi_density_6, {"IPI Density 6", "wlan_mgt.measure.rep.ipi_density6", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_ipi_density_7, {"IPI Density 7", "wlan_mgt.measure.rep.ipi_density7", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, - {&hf_ieee80211_tag_measure_report_ipi_density_8, + {&hf_ieee80211_tag_measure_report_ipi_density_8, {"IPI Density 8", "wlan_mgt.measure.rep.ipi_density8", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_ipi_density_9, {"IPI Density 9", "wlan_mgt.measure.rep.ipi_density9", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_ipi_density_10, {"IPI Density 10", "wlan_mgt.measure.rep.ipi_density10", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_parent_tsf, {"Parent Timing Synchronization Function (TSF)", "wlan_mgt.measure.rep.parenttsf", - FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_quiet_count, {"Count", "wlan_mgt.quiet.count", - FT_UINT8, BASE_DEC, NULL, 0, "Set to the number of TBTTs until the beacon interval during which the next quiet interval shall start", HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + "Set to the number of TBTTs until the beacon interval during which the next quiet interval shall start", HFILL }}, {&hf_ieee80211_tag_quiet_period, {"Period", "wlan_mgt.quiet.period", - FT_UINT8, BASE_DEC, NULL, 0, "Set to the number of beacon intervals between the start of regularly scheduled quiet intervals", HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + "Set to the number of beacon intervals between the start of regularly scheduled quiet intervals", HFILL }}, {&hf_ieee80211_tag_quiet_duration, {"Duration", "wlan_mgt.quiet.duration", - FT_UINT16, BASE_DEC, NULL, 0, "Set to the duration of the quiet interval", HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + "Set to the duration of the quiet interval", HFILL }}, {&hf_ieee80211_tag_quiet_offset, {"Offset", "wlan_mgt.quiet.offset", - FT_UINT16, BASE_DEC, NULL, 0, "Set to the offset of the start of the quiet interval from the TBTT", HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + "Set to the offset of the start of the quiet interval from the TBTT", HFILL }}, {&hf_ieee80211_tag_dfs_owner, {"Owner", "wlan_mgt.dfs.owner", - FT_ETHER, BASE_NONE, NULL, 0, "Set to the individual IEEE MAC address of the STA that is the currently known DFS Owner in the IBSS", HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + "Set to the individual IEEE MAC address of the STA that is the currently known DFS Owner in the IBSS", HFILL }}, {&hf_ieee80211_tag_dfs_recovery_interval, {"Recovery Interval", "wlan_mgt.dfs.recovery_interval", - FT_UINT8, BASE_DEC, NULL, 0, "Indicates the time interval that shall be used for DFS owner recovery", HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + "Indicates the time interval that shall be used for DFS owner recovery", HFILL }}, {&hf_ieee80211_tag_dfs_channel_map, {"Channel Map", "wlan_mgt.dfs.channel_map", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_dfs_channel_number, {"Channel Number", "wlan_mgt.dfs.channel_number", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_dfs_map, {"Map", "wlan_mgt.dfs.map", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_erp_info, {"ERP Information", "wlan_mgt.erp_info", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_erp_info_erp_present, {"Non ERP Present", "wlan_mgt.erp_info.erp_present", - FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x01, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x01, + NULL, HFILL }}, {&hf_ieee80211_tag_erp_info_use_protection, {"Use Protection", "wlan_mgt.erp_info.use_protection", - FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x02, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x02, + NULL, HFILL }}, {&hf_ieee80211_tag_erp_info_barker_preamble_mode, {"Barker Preamble Mode", "wlan_mgt.erp_info.barker_preamble_mode", - FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x04, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0x04, + NULL, HFILL }}, {&hf_ieee80211_tag_erp_info_reserved, {"Reserved", "wlan_mgt.erp_info.reserved", - FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0xF8, + NULL, HFILL }}, /* Table 7-35a-Capabilities field */ {&hf_ieee80211_tag_extended_capabilities, {"Extended Capabilities", "wlan_mgt.extcap", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, /* P802.11n/D6.0 */ /* Extended Capability octet 0 */ {&hf_ieee80211_tag_extended_capabilities_b0, {"20/40 BSS Coexistence Management Support", "wlan_mgt.extcap.infoexchange.b0", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0001, "HT Information Exchange Support", HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0001, + "HT Information Exchange Support", HFILL }}, /* P802.11p/D4.0 */ {&hf_ieee80211_tag_extended_capabilities_b1, {"On-demand beacon", "wlan_mgt.extcap.infoexchange.b1", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0002, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0002, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b2, {"Extended Channel Switching", "wlan_mgt.extcap.infoexchange.b2", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0004, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0004, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b3, {"WAVE indication", "wlan_mgt.extcap.infoexchange.b3", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0008, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0008, + NULL, HFILL }}, /*End: P802.11p/D4.0 */ {&hf_ieee80211_tag_extended_capabilities_b4, {"PSMP Capability", "wlan_mgt.extcap.infoexchange.b4", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0010, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0010, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b6, {"S-PSMP Support", "wlan_mgt.extcap.infoexchange.b6", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0040, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0040, + NULL, HFILL }}, /* Extended Capability octet 3 */ {&hf_ieee80211_tag_extended_capabilities_b27, {"UTC TSF Offset", "wlan_mgt.extcap.infoexchange.b27", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0008, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0008, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b28, {"Peer U-APSD Buffer STA Support", "wlan_mgt.extcap.infoexchange.b28", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0010, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0010, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b29, {"TDLS Peer PSM Support", "wlan_mgt.extcap.infoexchange.b29", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0020, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0020, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b30, {"TDLS channel switching", "wlan_mgt.extcap.infoexchange.b30", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0040, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0040, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b31, {"Interworking", "wlan_mgt.extcap.infoexchange.b31", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0080, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0080, + NULL, HFILL }}, /* Extended Capability octet 4 */ {&hf_ieee80211_tag_extended_capabilities_b32, {"QoS Map", "wlan_mgt.extcap.infoexchange.b32", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0001, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0001, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b33, {"EBR", "wlan_mgt.extcap.infoexchange.b33", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0002, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0002, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b34, {"SSPN Interface", "wlan_mgt.extcap.infoexchange.b34", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0004, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0004, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b36, {"MSGCF Capability", "wlan_mgt.extcap.infoexchange.b36", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0010, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0010, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b37, {"TDLS support", "wlan_mgt.extcap.infoexchange.b37", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0020, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0020, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b38, {"TDLS Prohibited", "wlan_mgt.extcap.infoexchange.b38", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0040, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0040, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_b39, {"TDLS Channel Switching Prohibited", "wlan_mgt.extcap.infoexchange.b39", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0080, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0080, + NULL, HFILL }}, /* Extended Capability octet 5 */ {&hf_ieee80211_tag_extended_capabilities_b40, {"Reject Unadmitted Frame", "wlan_mgt.extcap.infoexchange.b40", - FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0001, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x0001, + NULL, HFILL }}, {&hf_ieee80211_tag_extended_capabilities_serv_int_granularity, {"Service Interval Granularity", @@ -15933,844 +16728,1100 @@ proto_register_ieee80211 (void) {&hf_ieee80211_tag_cisco_ccx1_unknown, {"Unknown", "wlan_mgt.cisco.ccx1.unknown", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_cisco_ccx1_name, {"Name", "wlan_mgt.cisco.ccx1.name", - FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_cisco_ccx1_clients, {"Clients", "wlan_mgt.cisco.ccx1.clients", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid, {"BSSID", "wlan_mgt.nreport.bssid", - FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info, {"BSSID Information", "wlan_mgt.nreport.bssid.info", - FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info_reachability, {"AP Reachability", "wlan_mgt.nreport.bssid.info.reachability", - FT_UINT16, BASE_HEX, NULL, 0x0003, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0003, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info_security, {"Security", "wlan_mgt.nreport.bssid.info.security", - FT_UINT16, BASE_HEX, NULL, 0x0004, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0004, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info_key_scope, {"Key Scope", "wlan_mgt.nreport.bssid.info.keyscope", - FT_UINT16, BASE_HEX, NULL, 0x0008, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0008, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_spec_mng, {"Capability: Spectrum Management", "wlan_mgt.nreport.bssid.info.capability.specmngt", - FT_UINT16, BASE_HEX, NULL, 0x0010, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0010, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_qos, {"Capability: QoS", "wlan_mgt.nreport.bssid.info.capability.qos", - FT_UINT16, BASE_HEX, NULL, 0x0020, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0020, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_apsd, {"Capability: APSD", "wlan_mgt.nreport.bssid.info.capability.apsd", - FT_UINT16, BASE_HEX, NULL, 0x0040, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0040, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_radio_msnt, {"Capability: Radio Measurement", "wlan_mgt.nreport.bssid.info.capability.radiomsnt", - FT_UINT16, BASE_HEX, NULL, 0x0080, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0080, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_dback, {"Capability: Delayed Block Ack", "wlan_mgt.nreport.bssid.info.capability.dback", - FT_UINT16, BASE_HEX, NULL, 0x0100, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0100, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info_capability_iback, {"Capability: Immediate Block Ack", "wlan_mgt.nreport.bssid.info.capability.iback", - FT_UINT16, BASE_HEX, NULL, 0x0200, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0200, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info_mobility_domain, {"Mobility Domain", "wlan_mgt.nreport.bssid.info.mobilitydomain", - FT_UINT16, BASE_HEX, NULL, 0x0400, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0400, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info_high_throughput, {"High Throughput", "wlan_mgt.nreport.bssid.info.hthoughput", - FT_UINT16, BASE_HEX, NULL, 0x0800, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0800, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_bssid_info_reserved, {"Reserved", "wlan_mgt.nreport.bssid.info.reserved", - FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_reg_class, {"Regulatory Class", "wlan_mgt.nreport.regclass", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_channel_number, {"Channel Number", "wlan_mgt.nreport.channumber", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_neighbor_report_phy_type, {"PHY Type", "wlan_mgt.nreport.phytype", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_supported_reg_classes_current, {"Current Regulatory Class", "wlan_mgt.supregclass.current", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tag_supported_reg_classes_alternate, {"Alternate Regulatory Classes", "wlan_mgt.supregclass.alt", - FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_type, {"Type", "wlan_mgt.wfa.ie.type", - FT_UINT8, BASE_HEX, VALS(ieee802111_wfa_ie_type_vals), 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(ieee802111_wfa_ie_type_vals), 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wpa_version, {"WPA Version", "wlan_mgt.wfa.ie.wpa.version", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wpa_mcs, - {"Multicast Cipher Suite", "wlan_mgt.wfa.ie.wpa.mcs", FT_UINT32, BASE_CUSTOM, - wpa_mcs_base_custom, 0, "Contains the cipher suite selector used by the BSS to protect broadcast/multicast traffic", HFILL }}, + {"Multicast Cipher Suite", "wlan_mgt.wfa.ie.wpa.mcs", + FT_UINT32, BASE_CUSTOM, wpa_mcs_base_custom, 0, + "Contains the cipher suite selector used by the BSS to protect broadcast/multicasttraffic", HFILL }}, {&hf_ieee80211_wfa_ie_wpa_mcs_oui, - {"Multicast Cipher Suite OUI", "wlan_mgt.wfa.ie.wpa.mcs.oui", FT_UINT24, BASE_CUSTOM, - oui_base_custom, 0, NULL, HFILL }}, + {"Multicast Cipher Suite OUI", "wlan_mgt.wfa.ie.wpa.mcs.oui", + FT_UINT24, BASE_CUSTOM, oui_base_custom, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wpa_mcs_type, - {"Multicast Cipher Suite type", "wlan_mgt.wfa.ie.wpa.mcs.type", FT_UINT8, BASE_DEC, - NULL, 0, NULL, HFILL }}, + {"Multicast Cipher Suite type", "wlan_mgt.wfa.ie.wpa.mcs.type", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wpa_mcs_wfa_type, - {"Multicast Cipher Suite type", "wlan_mgt.wfa.ie.wpa.mcs.type", FT_UINT8, BASE_DEC, - VALS(ieee80211_wfa_ie_wpa_cipher_vals), 0, NULL, HFILL }}, + {"Multicast Cipher Suite type", "wlan_mgt.wfa.ie.wpa.mcs.type", + FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wpa_cipher_vals), 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wpa_ucs_count, - {"Unicast Cipher Suite Count", "wlan_mgt.wfa.ie.wpa.ucs.count", FT_UINT16, BASE_DEC, - NULL, 0, "Indicates the number of pairwise cipher suite selectors that are contained in the Unicast Cipher Suite List", HFILL }}, + {"Unicast Cipher Suite Count", "wlan_mgt.wfa.ie.wpa.ucs.count", + FT_UINT16, BASE_DEC, NULL, 0, + "Indicates the number of pairwise cipher suite selectors that are contained in the Unicast Cipher Suite List", HFILL }}, {&hf_ieee80211_wfa_ie_wpa_ucs_list, - {"Unicast Cipher Suite List", "wlan_mgt.wfa.ie.wpa.ucs.list", FT_NONE, BASE_NONE, - NULL, 0, "Contains a series of cipher suite selectors that indicate the Unicast cipher suites", HFILL }}, + {"Unicast Cipher Suite List", "wlan_mgt.wfa.ie.wpa.ucs.list", + FT_NONE, BASE_NONE, NULL, 0, + "Contains a series of cipher suite selectors that indicate the Unicast cipher suites", HFILL }}, {&hf_ieee80211_wfa_ie_wpa_ucs, - {"Unicast Cipher Suite", "wlan_mgt.wfa.ie.wpa.ucs", FT_UINT32, BASE_CUSTOM, - wpa_ucs_base_custom, 0, NULL, HFILL }}, + {"Unicast Cipher Suite", "wlan_mgt.wfa.ie.wpa.ucs", + FT_UINT32, BASE_CUSTOM, wpa_ucs_base_custom, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wpa_ucs_oui, - {"Unicast Cipher Suite OUI", "wlan_mgt.wfa.ie.wpau.cs.oui", FT_UINT24, BASE_CUSTOM, - oui_base_custom, 0, NULL, HFILL }}, + {"Unicast Cipher Suite OUI", "wlan_mgt.wfa.ie.wpau.cs.oui", + FT_UINT24, BASE_CUSTOM, oui_base_custom, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wpa_ucs_type, - {"Unicast Cipher Suite type", "wlan_mgt.wfa.ie.wpa.ucs.type", FT_UINT8, BASE_DEC, - NULL, 0, NULL, HFILL }}, + {"Unicast Cipher Suite type", "wlan_mgt.wfa.ie.wpa.ucs.type", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wpa_ucs_wfa_type, - {"Unicast Cipher Suite type", "wlan_mgt.wfa.ie.wpa.ucs.type", FT_UINT8, BASE_DEC, - VALS(ieee80211_wfa_ie_wpa_cipher_vals), 0, NULL, HFILL }}, + {"Unicast Cipher Suite type", "wlan_mgt.wfa.ie.wpa.ucs.type", + FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wpa_cipher_vals), 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wpa_akms_count, - {"Auth Key Management (AKM) Suite Count", "wlan_mgt.wfa.ie.wpa.akms.count", FT_UINT16, BASE_DEC, - NULL, 0, "Indicates the number of Auth Key Management suite selectors that are contained in the Auth Key Management Suite List", HFILL }}, + {"Auth Key Management (AKM) Suite Count", "wlan_mgt.wfa.ie.wpa.akms.count", + FT_UINT16, BASE_DEC, NULL, 0, + "Indicates the number of Auth Key Management suite selectors that are contained in the Auth Key Management Suite List", HFILL }}, {&hf_ieee80211_wfa_ie_wpa_akms_list, - {"Auth Key Management (AKM) List", "wlan_mgt.wfa.ie.wpa.akms.list", FT_NONE, BASE_NONE, - NULL, 0, "Contains a series of cipher suite selectors that indicate the AKM suites", HFILL }}, + {"Auth Key Management (AKM) List", "wlan_mgt.wfa.ie.wpa.akms.list", + FT_NONE, BASE_NONE, NULL, 0, + "Contains a series of cipher suite selectors that indicate the AKM suites", HFILL }}, {&hf_ieee80211_wfa_ie_wpa_akms, - {"Auth Key Management (AKM) Suite", "wlan_mgt.wfa.ie.wpa.akms", FT_UINT32, BASE_CUSTOM, - wpa_akms_base_custom, 0, NULL, HFILL }}, + {"Auth Key Management (AKM) Suite", "wlan_mgt.wfa.ie.wpa.akms", + FT_UINT32, BASE_CUSTOM, wpa_akms_base_custom, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wpa_akms_oui, - {"Auth Key Management (AKM) OUI", "wlan_mgt.wfa.ie.wpa.akms.oui", FT_UINT24, BASE_CUSTOM, - oui_base_custom, 0, NULL, HFILL }}, + {"Auth Key Management (AKM) OUI", "wlan_mgt.wfa.ie.wpa.akms.oui", + FT_UINT24, BASE_CUSTOM, oui_base_custom, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wpa_akms_type, - {"Auth Key Management (AKM) type", "wlan_mgt.wfa.ie.wpa.akms.type", FT_UINT8, BASE_DEC, - NULL, 0, NULL, HFILL }}, + {"Auth Key Management (AKM) type", "wlan_mgt.wfa.ie.wpa.akms.type", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wpa_akms_wfa_type, - {"Auth Key Management (AKM) type", "wlan_mgt.wfa.ie.wpa.type", FT_UINT8, BASE_DEC, - VALS(ieee80211_wfa_ie_wpa_keymgmt_vals), 0, NULL, HFILL }}, + {"Auth Key Management (AKM) type", "wlan_mgt.wfa.ie.wpa.type", + FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wpa_keymgmt_vals), 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_subtype, {"WME Subtype", "wlan_mgt.wfa.ie.wme.subtype", - FT_UINT8, BASE_DEC, VALS(ieee802111_wfa_ie_wme_type), 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, VALS(ieee802111_wfa_ie_wme_type), 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_version, {"WME Version", "wlan_mgt.wfa.ie.wme.version", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_qos_info, {"WME QoS Info", "wlan_mgt.wfa.ie.wme.qos_info", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_qos_info_sta_max_sp_length, {"Max SP Length", "wlan_mgt.wfa.ie.wme.qos_info.sta.max_sp_length", - FT_UINT8, BASE_HEX, VALS(ieee802111_wfa_ie_wme_qos_info_sta_max_sp_length_vals), 0x60, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(ieee802111_wfa_ie_wme_qos_info_sta_max_sp_length_vals), 0x60, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_be, {"AC_BE", "wlan_mgt.wfa.ie.wme.qos_info.sta.ac_be", - FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x08, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x08, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_bk, {"AC_BK", "wlan_mgt.wfa.ie.wme.qos_info.sta.ac_bk", - FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x04, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x04, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_vi, {"AC_VI", "wlan_mgt.wfa.ie.wme.qos_info.sta.ac_vi", - FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x02, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x02, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_qos_info_sta_ac_vo, {"AC_VO", "wlan_mgt.wfa.ie.wme.qos_info.sta.ac_vo", - FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x01, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&ieee802111_wfa_ie_wme_qos_info_sta_ac_tfs), 0x01, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_qos_info_sta_reserved, {"Reserved", "wlan_mgt.wfa.ie.wme.qos_info.sta.reserved", - FT_UINT8, BASE_HEX, NULL, 0x90, "Must Be Zero", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0x90, + "Must Be Zero", HFILL }}, {&hf_ieee80211_wfa_ie_wme_qos_info_ap_u_apsd, {"U-APSD", "wlan_mgt.wfa.ie.wme.qos_info.ap.u_apsd", - FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80, "Indicates the WMM AP is currently supporting unscheduled automatic power save delivery", HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x80, + "Indicates the WMM AP is currently supporting unscheduled automatic power save delivery", HFILL }}, {&hf_ieee80211_wfa_ie_wme_qos_info_ap_parameter_set_count, {"Parameter Set Count", "wlan_mgt.wfa.ie.wme.qos_info.ap.parameter_set_count", - FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0x0F, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_qos_info_ap_reserved, {"Reserved", "wlan_mgt.wfa.ie.wme.qos_info.ap.reserved", - FT_UINT8, BASE_HEX, NULL, 0x70, "Must Be Zero", HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0x70, + "Must Be Zero", HFILL }}, {&hf_ieee80211_wfa_ie_wme_reserved, {"Reserved", "wlan_mgt.wfa.ie.wme.reserved", - FT_BYTES, BASE_NONE, NULL, 0, "Must Be Zero", HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + "Must Be Zero", HFILL }}, {&hf_ieee80211_wfa_ie_wme_ac_parameters, {"Ac Parameters", "wlan_mgt.wfa.ie.wme.acp", - FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_acp_aci_aifsn, {"ACI / AIFSN Field", "wlan_mgt.wfa.ie.wme.acp.aci_aifsn", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_acp_aci, {"ACI", "wlan_mgt.wfa.ie.wme.acp.aci", - FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wme_acs_vals), 0x60, NULL, HFILL }}, + FT_UINT8, BASE_DEC, VALS(ieee80211_wfa_ie_wme_acs_vals), 0x60, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_acp_acm, {"Admission Control Mandatory", "wlan_mgt.wfa.ie.wme.acp.aci", - FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_acp_aifsn, {"AIFSN", "wlan_mgt.wfa.ie.wme.acp.aifsn", - FT_UINT8, BASE_DEC, NULL, 0x0F, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x0F, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_acp_reserved, {"Reserved", "wlan_mgt.wfa.ie.wme.acp.reserved", - FT_UINT8, BASE_DEC, NULL, 0x80, "Must be Zero", HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x80, + "Must be Zero", HFILL }}, {&hf_ieee80211_wfa_ie_wme_acp_ecw, {"ECW", "wlan_mgt.wfa.ie.wme.acp.ecw", - FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0x00, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_acp_ecw_max, {"ECW Max", "wlan_mgt.wfa.ie.wme.acp.ecw.max", - FT_UINT8, BASE_DEC, NULL, 0xF0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0xF0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_acp_ecw_min, {"ECW Min", "wlan_mgt.wfa.ie.wme.acp.ecw.min", - FT_UINT8, BASE_DEC, NULL, 0x0F, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x0F, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_acp_txop_limit, {"TXOP Limit", "wlan_mgt.wfa.ie.wme.acp.txop_limit", - FT_UINT16, BASE_DEC, NULL, 0x00, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0x00, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo, {"TS Info", "wlan_mgt.wfa.ie.wme.tspec.ts_info", - FT_UINT24, BASE_HEX, NULL, 0, "Traffic Stream (TS) Info", HFILL }}, + FT_UINT24, BASE_HEX, NULL, 0, + "Traffic Stream (TS) Info", HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_tid, {"TID", "wlan_mgt.wfa.ie.wme.tspec.ts_info.tid", - FT_UINT24, BASE_DEC, NULL, 0x00001E, "Traffic Stream Info ID (TID)", HFILL }}, + FT_UINT24, BASE_DEC, NULL, 0x00001E, + "Traffic Stream Info ID (TID)", HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_direction, - {"Direction", "wlan_mgt.wfa.ie.wme.tspec.ts_info.dir", FT_UINT24, BASE_DEC, - VALS (&ieee80211_wfa_ie_wme_tspec_tsinfo_direction_vals), 0x000060, "Traffic Stream (TS) Info Direction", HFILL }}, + {"Direction", "wlan_mgt.wfa.ie.wme.tspec.ts_info.dir", + FT_UINT24, BASE_DEC, VALS(ieee80211_wfa_ie_wme_tspec_tsinfo_direction_vals), 0x000060, + "Traffic Stream (TS) Info Direction", HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_psb, - {"PSB", "wlan_mgt.wfa.ie.wme.tspec.ts_info.psb", FT_UINT24, BASE_DEC, - VALS (&ieee80211_wfa_ie_wme_tspec_tsinfo_psb_vals), 0x000400, "Traffic Stream (TS) Info Power Save Behavior (PSB)", HFILL }}, + {"PSB", "wlan_mgt.wfa.ie.wme.tspec.ts_info.psb", + FT_UINT24, BASE_DEC, VALS(ieee80211_wfa_ie_wme_tspec_tsinfo_psb_vals), 0x000400, + "Traffic Stream (TS) Info Power Save Behavior (PSB)", HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_up, - {"UP", "wlan_mgt.wfa.ie.wme.tspec.ts_info.up", FT_UINT24, BASE_DEC, - VALS (&ieee80211_wfa_ie_wme_tspec_tsinfo_up_vals), 0x003800, "Traffic Stream (TS) Info User Priority (UP)", HFILL }}, + {"UP", "wlan_mgt.wfa.ie.wme.tspec.ts_info.up", + FT_UINT24, BASE_DEC, VALS(ieee80211_wfa_ie_wme_tspec_tsinfo_up_vals), 0x003800, + "Traffic Stream (TS) Info User Priority (UP)", HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_tsinfo_reserved, - {"Reserved", "wlan_mgt.wfa.ie.wme.tspec.ts_info.reserved", FT_UINT24, BASE_HEX, - NULL, 0xFFC381, "Must be Zero", HFILL }}, + {"Reserved", "wlan_mgt.wfa.ie.wme.tspec.ts_info.reserved", + FT_UINT24, BASE_HEX, NULL, 0xFFC381, + "Must be Zero", HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_nor_msdu, {"Normal MSDU Size", "wlan_mgt.wfa.ie.wme.tspec.nor_msdu", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_max_msdu, {"Maximum MSDU Size", "wlan_mgt.wfa.ie.wme.tspec.max_msdu", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_min_srv, {"Minimum Service Interval", "wlan_mgt.wfa.ie.wme.tspec.min_srv", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_max_srv, {"Maximum Service Interval", "wlan_mgt.wfa.ie.wme.tspec.max_srv", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_inact_int, {"Inactivity Interval", "wlan_mgt.wfa.ie.wme.tspec.inact_int", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_susp_int, {"Suspension Interval", "wlan_mgt.wfa.ie.wme.tspec.susp_int", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_srv_start, {"Service Start Time", "wlan_mgt.wfa.ie.wme.tspec.srv_start", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_min_data, {"Minimum Data Rate", "wlan_mgt.wfa.ie.wme.tspec.min_data", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_mean_data, {"Mean Data Rate", "wlan_mgt.wfa.ie.wme.tspec.mean_data", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_peak_data, {"Peak Data Rate", "wlan_mgt.wfa.ie.wme.tspec.peak_data", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_burst_size, {"Burst Size", "wlan_mgt.wfa.ie.wme.tspec.burst_size", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_delay_bound, {"Delay Bound", "wlan_mgt.wfa.ie.wme.tspec.delay_bound", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_min_phy, {"Minimum PHY Rate", "wlan_mgt.wfa.ie.wme.tspec.min_phy", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_surplus, {"Surplus Bandwidth Allowance", "wlan_mgt.wfa.ie.wme.tspec.surplus", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_wfa_ie_wme_tspec_medium, {"Medium Time", "wlan_mgt.wfa.ie.wme.tspec.medium", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_marvell_ie_type, {"Type", "wlan_mgt.marvell.ie.type", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_marvell_ie_mesh_subtype, {"Subtype", "wlan_mgt.marvell.ie.subtype", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_marvell_ie_mesh_version, {"Version", "wlan_mgt.marvell.ie.version", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_marvell_ie_mesh_active_proto_id, {"Path Selection Protocol", "wlan_mgt.marvell.ie.proto_id", - FT_UINT8, BASE_HEX, VALS(mesh_path_selection_codes), 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(mesh_path_selection_codes), 0, + NULL, HFILL }}, {&hf_ieee80211_marvell_ie_mesh_active_metric_id, {"Path Selection Metric", "wlan_mgt.marvell.ie.metric_id", - FT_UINT8, BASE_HEX, VALS(mesh_metric_codes), 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(mesh_metric_codes), 0, + NULL, HFILL }}, {&hf_ieee80211_marvell_ie_mesh_cap, {"Mesh Capabilities", "wlan_mgt.marvell.ie.cap", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_marvell_ie_data, - { "Marvell IE data", "wlan_mgt.marvell.data", - FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + { "Marvell IE data", "wlan_mgt.marvell.data", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_type, {"Type", "wlan_mgt.atheros.ie.type", - FT_UINT8, BASE_HEX, VALS(atheros_ie_type_vals), 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, VALS(atheros_ie_type_vals), 0, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_subtype, {"Subtype", "wlan_mgt.atheros.ie.subtype", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_version, {"Version", "wlan_mgt.atheros.ie.version", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_cap_f_turbop, {"Turbo Prime", "wlan_mgt.ie.atheros.capabilities.turbop", - FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_TURBOP, NULL, HFILL }}, + FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_TURBOP, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_cap_f_comp, {"Compression", "wlan_mgt.ie.atheros.capabilities.comp", - FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_COMP, NULL, HFILL }}, + FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_COMP, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_cap_f_ff, {"Fast Frames", "wlan_mgt.ie.atheros.capabilities.ff", - FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_FF, NULL, HFILL }}, + FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_FF, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_cap_f_xr, {"eXtended Range", "wlan_mgt.ie.atheros.capabilities.xr", - FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_XR, NULL, HFILL }}, + FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_XR, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_cap_f_ar, {"Advanced Radar", "wlan_mgt.ie.atheros.capabilities.ar", - FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_AR, NULL, HFILL }}, + FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_AR, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_cap_f_burst, {"Burst", "wlan_mgt.ie.atheros.capabilities.burst", - FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_BURST, NULL, HFILL }}, + FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_BURST, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_cap_f_wme, {"CWMin tuning", "wlan_mgt.ie.atheros.capabilities.wme", - FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_WME, NULL, HFILL }}, + FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_WME, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_cap_f_boost, {"Boost", "wlan_mgt.ie.atheros.capabilities.boost", - FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_BOOST, NULL, HFILL }}, + FT_BOOLEAN, 8, NULL, ATHEROS_IE_CAP_BOOST, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_advcap_cap, {"Capabilities", "wlan_mgt.atheros.ie.advcap.cap", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_advcap_defkey, {"Default key index", "wlan_mgt.atheros.ie.advcap.defkey", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_xr_info, {"Info", "wlan_mgt.atheros.ie.xr.info", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_xr_base_bssid, {"Base BSS Id", "wlan_mgt.atheros.ie.xr.base_bssid", - FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_xr_xr_bssid, {"XR BSS Id", "wlan_mgt.atheros.ie.xr.xr_bssid", - FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_xr_xr_beacon, {"XR Beacon Interval", "wlan_mgt.atheros.ie.xr.xr_beacon", - FT_UINT32, BASE_CUSTOM, beacon_interval_base_custom, 0, NULL, HFILL }}, + FT_UINT32, BASE_CUSTOM, beacon_interval_base_custom, 0, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_xr_base_cap, {"Base capabilities", "wlan_mgt.atheros.ie.xr.base_cap", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_xr_xr_cap, {"XR capabilities", "wlan_mgt.atheros.ie.xr.xr_cap", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_atheros_ie_data, {"Atheros IE data", "wlan_mgt.atheros.data", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_aironet_ie_type, {"Aironet IE type", "wlan_mgt.aironet.type", - FT_UINT8, BASE_DEC, VALS(aironet_ie_type_vals), 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, VALS(aironet_ie_type_vals), 0, + NULL, HFILL }}, {&hf_ieee80211_aironet_ie_version, {"Aironet IE CCX version?", "wlan_mgt.aironet.version", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_aironet_ie_data, - { "Aironet IE data", "wlan_mgt.aironet.data", - FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + { "Aironet IE data", "wlan_mgt.aironet.data", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, {&hf_ieee80211_qbss_version, {"QBSS Version", "wlan_mgt.qbss.version", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_qbss_scount, {"Station Count", "wlan_mgt.qbss.scount", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_qbss_cu, {"Channel Utilization", "wlan_mgt.qbss.cu", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_qbss_adc, {"Available Admission Capabilities", "wlan_mgt.qbss.adc", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_qbss2_cu, {"Channel Utilization", "wlan_mgt.qbss2.cu", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_qbss2_gl, {"G.711 CU Quantum", "wlan_mgt.qbss2.glimit", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_qbss2_cal, {"Call Admission Limit", "wlan_mgt.qbss2.cal", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_qbss2_scount, {"Station Count", "wlan_mgt.qbss2.scount", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_aironet_ie_qos_unk1, {"Aironet IE QoS unknown 1", "wlan_mgt.aironet.qos.unk1", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_aironet_ie_qos_paramset, {"Aironet IE QoS paramset", "wlan_mgt.aironet.qos.paramset", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_aironet_ie_qos_val, {"Aironet IE QoS valueset", "wlan_mgt.aironet.qos.val", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tsinfo, {"Traffic Stream (TS) Info", "wlan_mgt.ts_info", - FT_UINT24, BASE_HEX, NULL, 0, "Traffic Stream (TS) Info field", HFILL }}, + FT_UINT24, BASE_HEX, NULL, 0, + "Traffic Stream (TS) Info field", HFILL }}, {&hf_ieee80211_tsinfo_type, - {"Traffic Type", "wlan_mgt.ts_info.type", FT_UINT24, BASE_DEC, - VALS (&tsinfo_type), 0x000001, "Traffic Stream (TS) Info Traffic Type", HFILL }}, + {"Traffic Type", "wlan_mgt.ts_info.type", + FT_UINT24, BASE_DEC, VALS(tsinfo_type), 0x000001, + "Traffic Stream (TS) Info Traffic Type", HFILL }}, {&hf_ieee80211_tsinfo_tsid, {"Traffic Stream ID (TSID)", "wlan_mgt.ts_info.tsid", - FT_UINT24, BASE_DEC, NULL, 0x00001E, "Traffic Stream ID (TSID) Info TSID", HFILL }}, + FT_UINT24, BASE_DEC, NULL, 0x00001E, + "Traffic Stream ID (TSID) Info TSID", HFILL }}, {&hf_ieee80211_tsinfo_dir, - {"Direction", "wlan_mgt.ts_info.dir", FT_UINT24, BASE_DEC, - VALS (&tsinfo_direction), 0x000060, "Traffic Stream (TS) Info Direction", HFILL }}, + {"Direction", "wlan_mgt.ts_info.dir", + FT_UINT24, BASE_DEC, VALS(tsinfo_direction), 0x000060, + "Traffic Stream (TS) Info Direction", HFILL }}, {&hf_ieee80211_tsinfo_access, - {"Access Policy", "wlan_mgt.ts_info.dir", FT_UINT24, BASE_DEC, - VALS (&tsinfo_access), 0x000180, "Traffic Stream (TS) Info Access Policy", HFILL }}, + {"Access Policy", "wlan_mgt.ts_info.dir", + FT_UINT24, BASE_DEC, VALS(tsinfo_access), 0x000180, + "Traffic Stream (TS) Info Access Policy", HFILL }}, {&hf_ieee80211_tsinfo_agg, - {"Aggregation", "wlan_mgt.ts_info.agg", FT_UINT24, BASE_DEC, - NULL, 0x000200, "Traffic Stream (TS) Info Access Policy", HFILL }}, + {"Aggregation", "wlan_mgt.ts_info.agg", + FT_UINT24, BASE_DEC, NULL, 0x000200, + "Traffic Stream (TS) Info Access Policy", HFILL }}, {&hf_ieee80211_tsinfo_apsd, - {"Automatic Power-Save Delivery (APSD)", "wlan_mgt.ts_info.apsd", FT_UINT24, BASE_DEC, - NULL, 0x000400, "Traffic Stream (TS) Info Automatic Power-Save Delivery (APSD)", HFILL }}, + {"Automatic Power-Save Delivery (APSD)", "wlan_mgt.ts_info.apsd", + FT_UINT24, BASE_DEC, NULL, 0x000400, + "Traffic Stream (TS) Info Automatic Power-Save Delivery (APSD)", HFILL }}, {&hf_ieee80211_tsinfo_up, - {"User Priority", "wlan_mgt.ts_info.up", FT_UINT24, BASE_DEC, - VALS (&qos_up), 0x003800, "Traffic Stream (TS) Info User Priority", HFILL }}, + {"User Priority", "wlan_mgt.ts_info.up", + FT_UINT24, BASE_DEC, VALS(qos_up), 0x003800, + "Traffic Stream (TS) Info User Priority", HFILL }}, {&hf_ieee80211_tsinfo_ack, - {"Ack Policy", "wlan_mgt.ts_info.ack", FT_UINT24, BASE_DEC, - VALS (&ack_policy), 0x00C000, "Traffic Stream (TS) Info Ack Policy", HFILL }}, + {"Ack Policy", "wlan_mgt.ts_info.ack", + FT_UINT24, BASE_DEC, VALS(ack_policy), 0x00C000, + "Traffic Stream (TS) Info Ack Policy", HFILL }}, {&hf_ieee80211_tsinfo_sched, - {"Schedule", "wlan_mgt.ts_info.sched", FT_UINT24, BASE_DEC, - NULL, 0x010000, "Traffic Stream (TS) Info Schedule", HFILL }}, + {"Schedule", "wlan_mgt.ts_info.sched", + FT_UINT24, BASE_DEC, NULL, 0x010000, + "Traffic Stream (TS) Info Schedule", HFILL }}, {&hf_ieee80211_tsinfo_rsv, - {"Reserved", "wlan_mgt.ts_info.rsv", FT_UINT24, BASE_HEX, - NULL, 0xFE0000, "Must be Zero", HFILL }}, + {"Reserved", "wlan_mgt.ts_info.rsv", + FT_UINT24, BASE_HEX, NULL, 0xFE0000, + "Must be Zero", HFILL }}, {&hf_ieee80211_tspec_nor_msdu, {"Normal MSDU Size", "wlan_mgt.tspec.nor_msdu", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_max_msdu, {"Maximum MSDU Size", "wlan_mgt.tspec.max_msdu", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_min_srv, {"Minimum Service Interval", "wlan_mgt.tspec.min_srv", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_max_srv, {"Maximum Service Interval", "wlan_mgt.tspec.max_srv", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_inact_int, {"Inactivity Interval", "wlan_mgt.tspec.inact_int", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_susp_int, {"Suspension Interval", "wlan_mgt.tspec.susp_int", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_srv_start, {"Service Start Time", "wlan_mgt.tspec.srv_start", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_min_data, {"Minimum Data Rate", "wlan_mgt.tspec.min_data", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_mean_data, {"Mean Data Rate", "wlan_mgt.tspec.mean_data", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_peak_data, {"Peak Data Rate", "wlan_mgt.tspec.peak_data", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_burst_size, {"Burst Size", "wlan_mgt.tspec.burst_size", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_delay_bound, {"Delay Bound", "wlan_mgt.tspec.delay_bound", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_min_phy, {"Minimum PHY Rate", "wlan_mgt.tspec.min_phy", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_surplus, {"Surplus Bandwidth Allowance", "wlan_mgt.tspec.surplus", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tspec_medium, {"Medium Time", "wlan_mgt.tspec.medium", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_ts_delay, {"Traffic Stream (TS) Delay", "wlan_mgt.ts_delay", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_tclas_process, - {"Processing", "wlan_mgt.tclas_proc.processing", FT_UINT8, BASE_DEC, - VALS(ieee80211_tclas_process_flag), 0, "TCLAS Processing", HFILL }}, + {"Processing", "wlan_mgt.tclas_proc.processing", + FT_UINT8, BASE_DEC, VALS(ieee80211_tclas_process_flag), 0, + "TCLAS Processing", HFILL }}, {&hf_ieee80211_tag_qos_cap_qos_info, - {"QoS Info", "wlan_mgt.tag.qos_cap.qos_info", FT_UINT8, BASE_HEX, - NULL, 0, "TCLAS Processing", HFILL }}, + {"QoS Info", "wlan_mgt.tag.qos_cap.qos_info", + FT_UINT8, BASE_HEX, NULL, 0, + "TCLAS Processing", HFILL }}, {&hf_ieee80211_qos_info_field_vo_uapsd, {"AC_VO U-APSD Flag", "wlan_mgt.tag.qos_cap.qos_info.vo_uapsd", - FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, + NULL, HFILL }}, {&hf_ieee80211_qos_info_field_vi_uapsd, {"AC_VI U-APSD Flag", "wlan_mgt.tag.qos_cap.qos_info.vi_uapsd", - FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, + NULL, HFILL }}, {&hf_ieee80211_qos_info_field_bk_uapsd, {"AC_BK U-APSD Flag", "wlan_mgt.tag.qos_cap.qos_info.bk_uapsd", - FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, + NULL, HFILL }}, {&hf_ieee80211_qos_info_field_be_uapsd, {"AC_BE U-APSD Flag", "wlan_mgt.tag.qos_cap.qos_info.be_uapsd", - FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, + NULL, HFILL }}, {&hf_ieee80211_qos_info_field_qack, {"Q-ACK", "wlan_mgt.tag.qos_cap.qos_info.qack", - FT_BOOLEAN, 8, TFS(&qos_info_field_qack_flags), 0x10, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&qos_info_field_qack_flags), 0x10, + NULL, HFILL }}, {&hf_ieee80211_qos_info_field_max_sp_length, {"Max SP-Length", "wlan_mgt.tag.qos_cap.qos_info.max_sp_length", - FT_UINT8, BASE_HEX, VALS(qos_info_field_max_sp_length_flags), - 0x60, NULL , HFILL }}, + FT_UINT8, BASE_HEX, VALS(qos_info_field_max_sp_length_flags), 0x60, + NULL , HFILL }}, {&hf_ieee80211_qos_info_field_more_data_ack, {"More Data Ack", "wlan_mgt.tag.qos_cap.qos_info.more_data_ack", - FT_BOOLEAN, 8, TFS(&qos_info_field_more_data_ack_flags) , 0x80, NULL, HFILL }}, + FT_BOOLEAN, 8, TFS(&qos_info_field_more_data_ack_flags) , 0x80, + NULL, HFILL }}, {&hf_ieee80211_qos_info_field_edca_upd_cnt, - {"EDCA Parameter Set Update Count", "wlan_mgt.tag.qos_cap.qos_info.edca_upd_cnt", - FT_UINT8, BASE_DEC, NULL, 0x07, NULL, HFILL}}, + {"EDCA Parameter Set Update Count", "wlan_mgt.tag.qos_cap.qos_info.edca_upd_cnt", + FT_UINT8, BASE_DEC, NULL, 0x07, + NULL, HFILL}}, {&hf_ieee80211_qos_info_field_queue_req, - {"Queue Request", "wlan_mgt.tag.qos_cap.qos_info.queue_req", - FT_BOOLEAN, 8, TFS(&qos_info_field_queue_req_flags), 0x07, NULL, HFILL}}, + {"Queue Request", "wlan_mgt.tag.qos_cap.qos_info.queue_req", + FT_BOOLEAN, 8, TFS(&qos_info_field_queue_req_flags), 0x07, + NULL, HFILL}}, {&hf_ieee80211_qos_info_field_txop_req, - {"TXOP Request", "wlan_mgt.tag.qos_cap.qos_info.txop_req", - FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x40, NULL, HFILL}}, + {"TXOP Request", "wlan_mgt.tag.qos_cap.qos_info.txop_req", + FT_BOOLEAN, 8, TFS(&tfs_true_false), 0x40, + NULL, HFILL}}, {&hf_ieee80211_qos_info_field_reserved, - {"Reserved", "wlan_mgt.tag.qos_cap.qos_info.reserved", - FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL}}, + {"Reserved", "wlan_mgt.tag.qos_cap.qos_info.reserved", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL}}, {&hf_ieee80211_tag_ext_supp_rates, {"Extended Supported Rates", "wlan_mgt.extended_supported_rates", - FT_UINT8, BASE_HEX, VALS(ieee80211_supported_rates_vals), 0x0, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_supported_rates_vals_ext, 0x0, "In Mbit/sec, (B) for Basic Rates", HFILL }}, {&hf_ieee80211_sched_info, {"Schedule Info", "wlan_mgt.sched.sched_info", - FT_UINT16, BASE_HEX, NULL, 0, "Schedule Info field", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + "Schedule Info field", HFILL }}, {&hf_ieee80211_sched_info_agg, - {"Schedule Aggregation", "wlan_mgt.sched_info.agg", FT_UINT16, BASE_DEC, - NULL, 0x0001, "Traffic Stream (TS) Info Access Policy", HFILL }}, + {"Schedule Aggregation", "wlan_mgt.sched_info.agg", + FT_UINT16, BASE_DEC, NULL, 0x0001, + "Traffic Stream (TS) Info Access Policy", HFILL }}, {&hf_ieee80211_sched_info_tsid, {"Schedule Traffic Stream ID (TSID)", "wlan_mgt.sched_info.tsid", - FT_UINT16, BASE_DEC, NULL, 0x001E, "Traffic Stream ID (TSID) Info TSID", HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0x001E, + "Traffic Stream ID (TSID) Info TSID", HFILL }}, {&hf_ieee80211_sched_info_dir, - {"Schedule Direction", "wlan_mgt.sched_info.dir", FT_UINT16, BASE_DEC, - VALS (&tsinfo_direction), 0x0060, "Traffic Stream (TS) Info Direction", HFILL }}, + {"Schedule Direction", "wlan_mgt.sched_info.dir", + FT_UINT16, BASE_DEC, VALS(tsinfo_direction), 0x0060, + "Traffic Stream (TS) Info Direction", HFILL }}, {&hf_ieee80211_sched_srv_start, {"Service Start Time", "wlan_mgt.sched.srv_start", - FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_sched_srv_int, {"Service Interval", "wlan_mgt.sched.srv_int", - FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_sched_spec_int, {"Specification Interval", "wlan_mgt.sched.spec_int", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_aruba, {"Aruba Type", "wlan_mgt.aruba.type", - FT_UINT16, BASE_DEC, VALS(aruba_mgt_typevals), 0, "Aruba Management", HFILL }}, + FT_UINT16, BASE_DEC|BASE_EXT_STRING, &aruba_mgt_typevals_ext, 0, + "Aruba Management", HFILL }}, {&hf_ieee80211_aruba_hb_seq, {"Aruba Heartbeat Sequence", "wlan_mgt.aruba.heartbeat_sequence", - FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT64, BASE_DEC, NULL, 0, + NULL, HFILL }}, {&hf_ieee80211_aruba_mtu, {"Aruba MTU Size", "wlan_mgt.aruba.mtu_size", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, /* Start: HT Control (+HTC) */ {&hf_ieee80211_htc, {"HT Control (+HTC)", "wlan_mgt.htc", - FT_UINT32, BASE_HEX, NULL, 0, "High Throughput Control (+HTC)", HFILL }}, + FT_UINT32, BASE_HEX, NULL, 0, + "High Throughput Control (+HTC)", HFILL }}, + {&hf_ieee80211_htc_lac, {"Link Adaptation Control (LAC)", "wlan_mgt.htc.lac", - FT_UINT16, BASE_HEX, NULL, 0, "High Throughput Control Link Adaptation Control (LAC)", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + "High Throughput Control Link Adaptation Control (LAC)", HFILL }}, + {&hf_ieee80211_htc_lac_reserved, {"Reserved", "wlan_mgt.htc.lac.reserved", - FT_BOOLEAN, 16, NULL, 0x0001, "High Throughput Control Link Adaptation Control Reserved", HFILL }}, + FT_BOOLEAN, 16, NULL, 0x0001, + "High Throughput Control Link Adaptation Control Reserved", HFILL }}, + {&hf_ieee80211_htc_lac_trq, {"Training Request (TRQ)", "wlan_mgt.htc.lac.trq", - FT_BOOLEAN, 16, TFS(&htc_lac_trq_flag), 0x0002, "High Throughput Control Link Adaptation Control Training Request (TRQ)", HFILL }}, + FT_BOOLEAN, 16, TFS(&htc_lac_trq_flag), 0x0002, + "High Throughput Control Link Adaptation Control Training Request (TRQ)", HFILL }}, + {&hf_ieee80211_htc_lac_mai_aseli, {"Antenna Selection Indication (ASELI)", "wlan_mgt.htc.lac.mai.aseli", - FT_UINT16, BASE_HEX, NULL, 0x003C, "High Throughput Control Link Adaptation Control MAI Antenna Selection Indication", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x003C, + "High Throughput Control Link Adaptation Control MAI Antenna Selection Indication", HFILL }}, + {&hf_ieee80211_htc_lac_mai_mrq, {"MCS Request (MRQ)", "wlan_mgt.htc.lac.mai.mrq", - FT_BOOLEAN, 16, TFS(&htc_lac_mai_mrq_flag), 0x0004, "High Throughput Control Link Adaptation Control MAI MCS Request", HFILL }}, + FT_BOOLEAN, 16, TFS(&htc_lac_mai_mrq_flag), 0x0004, + "High Throughput Control Link Adaptation Control MAI MCS Request", HFILL }}, + {&hf_ieee80211_htc_lac_mai_msi, {"MCS Request Sequence Identifier (MSI)", "wlan_mgt.htc.lac.mai.msi", - FT_UINT16, BASE_HEX, NULL, 0x0038, "High Throughput Control Link Adaptation Control MAI MCS Request Sequence Identifier", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0038, + "High Throughput Control Link Adaptation Control MAI MCS Request Sequence Identifier", HFILL }}, + {&hf_ieee80211_htc_lac_mai_reserved, {"Reserved", "wlan_mgt.htc.lac.mai.reserved", - FT_UINT16, BASE_HEX, NULL, 0x0038, "High Throughput Control Link Adaptation Control MAI Reserved", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x0038, + "High Throughput Control Link Adaptation Control MAI Reserved", HFILL }}, + {&hf_ieee80211_htc_lac_mfsi, {"MCS Feedback Sequence Identifier (MFSI)", "wlan_mgt.htc.lac.mfsi", - FT_UINT16, BASE_DEC, NULL, 0x01C0, "High Throughput Control Link Adaptation Control MCS Feedback Sequence Identifier (MSI)", HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0x01C0, + "High Throughput Control Link Adaptation Control MCS Feedback Sequence Identifier (MSI)", HFILL }}, + {&hf_ieee80211_htc_lac_asel_command, {"Antenna Selection (ASEL) Command", "wlan_mgt.htc.lac.asel.command", - FT_UINT16, BASE_HEX, VALS (&ieee80211_htc_lac_asel_command_flags), 0x0E00, "High Throughput Control Link Adaptation Control Antenna Selection (ASEL) Command", HFILL }}, + FT_UINT16, BASE_HEX, VALS(ieee80211_htc_lac_asel_command_flags), 0x0E00, + "High Throughput Control Link Adaptation Control Antenna Selection (ASEL) Command", HFILL }}, + {&hf_ieee80211_htc_lac_asel_data, {"Antenna Selection (ASEL) Data", "wlan_mgt.htc.lac.asel.data", - FT_UINT16, BASE_HEX, NULL, 0xF000, "High Throughput Control Link Adaptation Control Antenna Selection (ASEL) Data", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0xF000, + "High Throughput Control Link Adaptation Control Antenna Selection (ASEL) Data", HFILL }}, + {&hf_ieee80211_htc_lac_mfb, {"MCS Feedback (MFB)", "wlan_mgt.htc.lac.mfb", - FT_UINT16, BASE_HEX, NULL, 0xFE00, "High Throughput Control Link Adaptation Control MCS Feedback", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0xFE00, + "High Throughput Control Link Adaptation Control MCS Feedback", HFILL }}, + {&hf_ieee80211_htc_cal_pos, {"Calibration Position", "wlan_mgt.htc.cal.pos", - FT_UINT16, BASE_DEC, VALS (&ieee80211_htc_cal_pos_flags), 0x0003, "High Throughput Control Calibration Position", HFILL }}, + FT_UINT16, BASE_DEC, VALS(ieee80211_htc_cal_pos_flags), 0x0003, + "High Throughput Control Calibration Position", HFILL }}, + {&hf_ieee80211_htc_cal_seq, {"Calibration Sequence Identifier", "wlan_mgt.htc.cal.seq", - FT_UINT16, BASE_DEC, NULL, 0x000C, "High Throughput Control Calibration Sequence Identifier", HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0x000C, + "High Throughput Control Calibration Sequence Identifier", HFILL }}, + {&hf_ieee80211_htc_reserved1, {"Reserved", "wlan_mgt.htc.reserved1", - FT_UINT16, BASE_DEC, NULL, 0x0030, "High Throughput Control Reserved", HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0x0030, + "High Throughput Control Reserved", HFILL }}, + {&hf_ieee80211_htc_csi_steering, {"CSI/Steering", "wlan_mgt.htc.csi_steering", - FT_UINT16, BASE_DEC, VALS (&ieee80211_htc_csi_steering_flags), 0x00C0, "High Throughput Control CSI/Steering", HFILL }}, + FT_UINT16, BASE_DEC, VALS(ieee80211_htc_csi_steering_flags), 0x00C0, + "High Throughput Control CSI/Steering", HFILL }}, + {&hf_ieee80211_htc_ndp_announcement, {"NDP Announcement", "wlan_mgt.htc.ndp_announcement", - FT_BOOLEAN, 16, TFS(&ieee80211_htc_ndp_announcement_flag), 0x0100, "High Throughput Control NDP Announcement", HFILL }}, + FT_BOOLEAN, 16, TFS(&ieee80211_htc_ndp_announcement_flag), 0x0100, + "High Throughput Control NDP Announcement", HFILL }}, + {&hf_ieee80211_htc_reserved2, {"Reserved", "wlan_mgt.htc.reserved2", - FT_UINT16, BASE_HEX, NULL, 0x3E00, "High Throughput Control Reserved", HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0x3E00, + "High Throughput Control Reserved", HFILL }}, + {&hf_ieee80211_htc_ac_constraint, {"AC Constraint", "wlan_mgt.htc.ac_constraint", - FT_BOOLEAN, 16, NULL, 0x4000, "High Throughput Control AC Constraint", HFILL }}, + FT_BOOLEAN, 16, NULL, 0x4000, + "High Throughput Control AC Constraint", HFILL }}, + {&hf_ieee80211_htc_rdg_more_ppdu, {"RDG/More PPDU", "wlan_mgt.htc.rdg_more_ppdu", - FT_BOOLEAN, 16, NULL, 0x8000, "High Throughput Control RDG/More PPDU", HFILL }}, + FT_BOOLEAN, 16, NULL, 0x8000, + "High Throughput Control RDG/More PPDU", HFILL }}, /* End: HT Control (+HTC) */ /* MDIE */ {&hf_ieee80211_tag_mobility_domain_mdid, {"Mobility Domain Identifier", "wlan_mgt.mobility_domain.mdid", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_mobility_domain_ft_capab, {"FT Capability and Policy", "wlan_mgt.mobility_domain.ft_capab", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_mobility_domain_ft_capab_ft_over_ds, {"Fast BSS Transition over DS", "wlan_mgt.mobility_domain.ft_capab.ft_over_ds", - FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0x01, + NULL, HFILL }}, + {&hf_ieee80211_tag_mobility_domain_ft_capab_resource_req, {"Resource Request Protocol Capability", "wlan_mgt.mobility_domain.ft_capab.resource_req", - FT_UINT8, BASE_HEX, NULL, 0x02, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0x02, + NULL, HFILL }}, /* FTIE */ {&hf_ieee80211_tag_ft_mic_control, {"MIC Control", "wlan_mgt.ft.mic_control", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_element_count, {"Element Count", "wlan_mgt.ft.element_count", - FT_UINT16, BASE_DEC, NULL, 0xff00, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0xff00, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_mic, {"MIC", "wlan_mgt.ft.mic", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_anonce, {"ANonce", "wlan_mgt.ft.anonce", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_snonce, {"SNonce", "wlan_mgt.ft.snonce", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_id, {"Subelement ID", "wlan_mgt.ft.subelem.id", - FT_UINT8, BASE_DEC, VALS(ft_subelem_id_vals), 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, VALS(ft_subelem_id_vals), 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_len, {"Length", "wlan_mgt.ft.subelem.len", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_data, {"Data", "wlan_mgt.ft.subelem.data", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_r1kh_id, {"PMK-R1 key holder identifier (R1KH-ID)", "wlan_mgt.ft.subelem.r1kh_id", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_gtk_key_info, {"Key Info", "wlan_mgt.ft.subelem.gtk.key_info", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_gtk_key_id, {"Key ID", "wlan_mgt.ft.subelem.gtk.key_id", - FT_UINT16, BASE_DEC, NULL, 0x0003, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0x0003, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_gtk_key_length, {"Key Length", "wlan_mgt.ft.subelem.gtk.key_length", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_gtk_rsc, {"RSC", "wlan_mgt.ft.subelem.gtk.rsc", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_gtk_key, {"GTK", "wlan_mgt.ft.subelem.gtk.key", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_r0kh_id, {"PMK-R0 key holder identifier (R0KH-ID)", "wlan_mgt.ft.subelem.r0kh_id", - FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_igtk_key_id, {"Key ID", "wlan_mgt.ft.subelem.igtk.key_id", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_igtk_ipn, {"IPN", "wlan_mgt.ft.subelem.igtk.ipn", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_igtk_key_length, {"Key Length", "wlan_mgt.ft.subelem.igtk.key_length", - FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_ft_subelem_igtk_key, {"Wrapped Key (IGTK)", "wlan_mgt.ft.subelem.igtk.key", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, @@ -16779,9 +17830,11 @@ proto_register_ieee80211 (void) {&hf_ieee80211_tag_mmie_keyid, {"KeyID", "wlan_mgt.mmie.keyid", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + {&hf_ieee80211_tag_mmie_ipn, {"IPN", "wlan_mgt.mmie.ipn", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + {&hf_ieee80211_tag_mmie_mic, {"MIC", "wlan_mgt.mmie.mic", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, @@ -16789,172 +17842,250 @@ proto_register_ieee80211 (void) /* Time Advertisement */ {&hf_ieee80211_tag_time_adv_timing_capab, {"Timing capabilities", "wlan_mgt.time_adv.timing_capab", - FT_UINT8, BASE_DEC, VALS(time_adv_timing_capab_vals), 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, VALS(time_adv_timing_capab_vals), 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_time_adv_time_value, {"Time Value", "wlan_mgt.time_adv.time_value", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_time_adv_time_value_year, {"Time Value: Year", "wlan_mgt.time_adv.time_value.year", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_time_adv_time_value_month, {"Time Value: Month", "wlan_mgt.time_adv.time_value.month", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_time_adv_time_value_day, {"Time Value: Day", "wlan_mgt.time_adv.time_value.month", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_time_adv_time_value_hours, {"Time Value: Hours", "wlan_mgt.time_adv.time_value.hours", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_time_adv_time_value_minutes, {"Time Value: Minutes", "wlan_mgt.time_adv.time_value.minutes", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_time_adv_time_value_seconds, {"Time Value: Seconds", "wlan_mgt.time_adv.time_value.seconds", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_time_adv_time_value_milliseconds, {"Time Value: Milliseconds", "wlan_mgt.time_adv.time_value.milliseconds", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_time_adv_time_value_reserved, {"Time Value: Reserved", "wlan_mgt.time_adv.time_value.reserved", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_time_adv_time_error, {"Time Error", "wlan_mgt.time_adv.time_error", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_time_adv_time_update_counter, {"Time Update Counter", "wlan_mgt.time_adv.time_update_counter", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, /* Time Zone */ {&hf_ieee80211_tag_time_zone, {"Time Zone", "wlan_mgt.time_zone", - FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, /* Interworking */ {&hf_ieee80211_tag_interworking_access_network_type, {"Access Network Type", "wlan_mgt.interworking.access_network_type", - FT_UINT8, BASE_DEC, VALS(access_network_type_vals), 0x0f, NULL, HFILL }}, + FT_UINT8, BASE_DEC, VALS(access_network_type_vals), 0x0f, + NULL, HFILL }}, + {&hf_ieee80211_tag_interworking_internet, {"Internet", "wlan_mgt.interworking.internet", - FT_UINT8, BASE_DEC, NULL, 0x10, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x10, + NULL, HFILL }}, + {&hf_ieee80211_tag_interworking_asra, {"ASRA", "wlan_mgt.interworking.asra", - FT_UINT8, BASE_DEC, NULL, 0x20, "Additional Step Required for Access", - HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x20, + "Additional Step Required for Access", HFILL }}, + {&hf_ieee80211_tag_interworking_esr, {"ESR", "wlan_mgt.interworking.esr", - FT_UINT8, BASE_DEC, NULL, 0x40, "Emergency services reachable", HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x40, + "Emergency services reachable", HFILL }}, + {&hf_ieee80211_tag_interworking_uesa, {"UESA", "wlan_mgt.interworking.uesa", FT_UINT8, BASE_DEC, NULL, 0x80, "Unauthenticated emergency service accessible", HFILL }}, + {&hf_ieee80211_tag_interworking_hessid, {"HESSID", "wlan_mgt.interworking.hessid", - FT_ETHER, BASE_NONE, NULL, 0, "Homogeneous ESS identifier", HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + "Homogeneous ESS identifier", HFILL }}, /* Advertisement Protocol */ {&hf_ieee80211_tag_adv_proto_resp_len_limit, {"Query Response Length Limit", "wlan_mgt.adv_proto.resp_len_limit", - FT_UINT8, BASE_DEC, NULL, 0x7f, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x7f, + NULL, HFILL }}, + {&hf_ieee80211_tag_adv_proto_pame_bi, {"PAME-BI", "wlan_mgt.adv_proto.pame_bi", FT_UINT8, BASE_DEC, NULL, 0x80, "Pre-Association Message Xchange BSSID Independent (PAME-BI)", HFILL }}, + {&hf_ieee80211_tag_adv_proto_id, {"Advertisement Protocol ID", "wlan_mgt.adv_proto.id", - FT_UINT8, BASE_DEC, VALS(adv_proto_id_vals), 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, VALS(adv_proto_id_vals), 0, + NULL, HFILL }}, /* Roaming Consortium */ {&hf_ieee80211_tag_roaming_consortium_num_anqp_oi, {"Number of ANQP OIs", "wlan_mgt.roaming_consortium.num_anqp_oi", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_roaming_consortium_oi1_len, {"OI #1 Length", "wlan_mgt.roaming_consortium.oi1_len", - FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x0f, + NULL, HFILL }}, + {&hf_ieee80211_tag_roaming_consortium_oi2_len, {"OI #2 Length", "wlan_mgt.roaming_consortium.oi2_len", - FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0xf0, + NULL, HFILL }}, + {&hf_ieee80211_tag_roaming_consortium_oi1, {"OI #1", "wlan_mgt.roaming_consortium.oi1", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_roaming_consortium_oi2, {"OI #2", "wlan_mgt.roaming_consortium.oi2", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_roaming_consortium_oi3, {"OI #3", "wlan_mgt.roaming_consortium.oi3", - FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, /* Timeout Interval */ {&hf_ieee80211_tag_timeout_int_type, {"Timeout Interval Type", "wlan_mgt.timeout_int.type", - FT_UINT8, BASE_DEC, VALS(timeout_int_types), 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, VALS(timeout_int_types), 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_timeout_int_value, {"Timeout Interval Value", "wlan_mgt.timeout_int.value", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, /* Link Identifier */ {&hf_ieee80211_tag_link_id_bssid, {"BSSID", "wlan_mgt.link_id.bssid", - FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_link_id_init_sta, {"TDLS initiator STA Address", "wlan_mgt.link_id.init_sta", - FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_link_id_resp_sta, {"TDLS responder STA Address", "wlan_mgt.link_id.resp_sta", - FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, /* Wakeup Schedule */ {&hf_ieee80211_tag_wakeup_schedule_offset, {"Offset", "wlan_mgt.wakeup_schedule.offset", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_wakeup_schedule_interval, {"Interval", "wlan_mgt.wakeup_schedule.interval", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_wakeup_schedule_awake_window_slots, {"Awake Window Slots", "wlan_mgt.wakeup_schedule.awake_window_slots", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_wakeup_schedule_max_awake_dur, - {"Maximum Awake Window Duration", - "wlan_mgt.wakeup_schedule.max_awake_dur", - FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + {"Maximum Awake Window Duration", "wlan_mgt.wakeup_schedule.max_awake_dur", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_wakeup_schedule_idle_count, {"Idle Count", "wlan_mgt.wakeup_schedule.idle_count", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, /* Channel Switch Timing */ {&hf_ieee80211_tag_channel_switch_timing_switch_time, {"Switch Time", "wlan_mgt.channel_switch_timing.switch_time", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_channel_switch_timing_switch_timeout, {"Switch Timeout", "wlan_mgt.channel_switch_timing.switch_timeout", - FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, /* PTI Control */ {&hf_ieee80211_tag_pti_control_tid, {"TID", "wlan_mgt.pti_control.tid", - FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + {&hf_ieee80211_tag_pti_control_sequence_control, {"Sequence Control", "wlan_mgt.pti_control.sequence_control", - FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL }}, /* PU Buffer Status */ {&hf_ieee80211_tag_pu_buffer_status_ac_bk, {"AC_BK traffic available", "wlan_mgt.pu_buffer_status.ac_bk", - FT_UINT8, BASE_DEC, NULL, 0x01, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x01, + NULL, HFILL }}, + {&hf_ieee80211_tag_pu_buffer_status_ac_be, {"AC_BE traffic available", "wlan_mgt.pu_buffer_status.ac_be", - FT_UINT8, BASE_DEC, NULL, 0x02, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x02, + NULL, HFILL }}, + {&hf_ieee80211_tag_pu_buffer_status_ac_vi, {"AC_VI traffic available", "wlan_mgt.pu_buffer_status.ac_vi", - FT_UINT8, BASE_DEC, NULL, 0x04, NULL, HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0x04, + NULL, HFILL }}, + {&hf_ieee80211_tag_pu_buffer_status_ac_vo, {"AC_VO traffic available", "wlan_mgt.pu_buffer_status.ac_vo", - FT_UINT8, BASE_DEC, NULL, 0x08, NULL, HFILL }} + FT_UINT8, BASE_DEC, NULL, 0x08, + NULL, HFILL }} }; static hf_register_info aggregate_fields[] = { {&hf_ieee80211_amsdu_msdu_header_text, - {"MAC Service Data Unit (MSDU)", "wlan_aggregate.msduheader", FT_UINT16, - BASE_DEC, 0, 0x0000, NULL, HFILL }} + {"MAC Service Data Unit (MSDU)", "wlan_aggregate.msduheader", + FT_UINT16, BASE_DEC, 0, 0x0000, + NULL, HFILL }} }; static uat_field_t wep_uat_flds[] = { @@ -17079,19 +18210,23 @@ proto_register_ieee80211 (void) proto_aggregate = proto_register_protocol("IEEE 802.11 wireless LAN aggregate frame", "IEEE 802.11 Aggregate Data", "wlan_aggregate"); proto_register_field_array(proto_aggregate, aggregate_fields, array_length(aggregate_fields)); + proto_wlan = proto_register_protocol ("IEEE 802.11 wireless LAN", "IEEE 802.11", "wlan"); proto_register_field_array (proto_wlan, hf, array_length (hf)); + proto_wlan_mgt = proto_register_protocol ("IEEE 802.11 wireless LAN management frame", "802.11 MGT", "wlan_mgt"); proto_register_field_array (proto_wlan_mgt, ff, array_length (ff)); + proto_register_subtree_array (tree_array, array_length (tree_array)); - register_dissector("wlan", dissect_ieee80211, proto_wlan); - register_dissector("wlan_fixed", dissect_ieee80211_fixed, proto_wlan); - register_dissector("wlan_bsfc", dissect_ieee80211_bsfc, proto_wlan); + register_dissector("wlan", dissect_ieee80211, proto_wlan); + register_dissector("wlan_fixed", dissect_ieee80211_fixed, proto_wlan); + register_dissector("wlan_bsfc", dissect_ieee80211_bsfc, proto_wlan); register_dissector("wlan_datapad", dissect_ieee80211_datapad, proto_wlan); - register_dissector("wlan_ht", dissect_ieee80211_ht, proto_wlan); + register_dissector("wlan_ht", dissect_ieee80211_ht, proto_wlan); + register_init_routine(wlan_defragment_init); register_init_routine(wlan_retransmit_init); register_init_routine(ieee80211_gas_reassembly_init); @@ -17144,18 +18279,18 @@ proto_register_ieee80211 (void) "Valid key formats"); wep_uat = uat_new("WEP and WPA Decryption Keys", - sizeof(uat_wep_key_record_t), /* record size */ - "80211_keys", /* filename */ - TRUE, /* from_profile */ - (void*) &uat_wep_key_records, /* data_ptr */ - &num_wepkeys_uat, /* numitems_ptr */ - UAT_AFFECTS_DISSECTION, /* affects dissection of packets, but not set of named fields */ - NULL, /* help */ - uat_wep_key_record_copy_cb, /* copy callback */ - uat_wep_key_record_update_cb, /* update callback */ - uat_wep_key_record_free_cb, /* free callback */ - init_wepkeys, /* post update callback - update the WEP/WPA keys */ - wep_uat_flds); /* UAT field definitions */ + sizeof(uat_wep_key_record_t), /* record size */ + "80211_keys", /* filename */ + TRUE, /* from_profile */ + (void*) &uat_wep_key_records, /* data_ptr */ + &num_wepkeys_uat, /* numitems_ptr */ + UAT_AFFECTS_DISSECTION, /* affects dissection of packets, but not set of named fields */ + NULL, /* help */ + uat_wep_key_record_copy_cb, /* copy callback */ + uat_wep_key_record_update_cb, /* update callback */ + uat_wep_key_record_free_cb, /* free callback */ + init_wepkeys, /* post update callback - update the WEP/WPA keys */ + wep_uat_flds); /* UAT field definitions */ prefs_register_uat_preference(wlan_module, "wep_key_table", @@ -17164,40 +18299,6 @@ proto_register_ieee80211 (void) wep_uat); } -static void -dissect_data_encap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) -{ - int offset = 0; - guint8 type; - int tagged_parameter_tree_len; - proto_tree *tagged_tree; - - g_pinfo = pinfo; - - type = tvb_get_guint8(tvb, offset); - proto_tree_add_item(tree, hf_ieee80211_data_encap_payload_type, tvb, offset, - 1, ENC_BIG_ENDIAN); - offset++; - switch (type) { - case 1: - col_set_str(pinfo->cinfo, COL_PROTOCOL, "RRB"); - /* TODO: IEEE 802.11r */ - break; - case 2: - col_set_str(pinfo->cinfo, COL_PROTOCOL, "TDLS"); - col_clear(pinfo->cinfo, COL_INFO); - offset += add_fixed_field(tree, tvb, offset, FIELD_ACTION); - tagged_parameter_tree_len = tvb_reported_length_remaining(tvb, offset); - if (tagged_parameter_tree_len > 0) { - tagged_tree = get_tagged_parameter_tree(tree, tvb, offset, - tagged_parameter_tree_len); - ieee_80211_add_tagged_parameters(tvb, offset, pinfo, tagged_tree, - tagged_parameter_tree_len, -1); - } - break; - } -} - void proto_reg_handoff_ieee80211(void) { @@ -17206,10 +18307,10 @@ proto_reg_handoff_ieee80211(void) /* * Get handles for the LLC, IPX and Ethernet dissectors. */ - llc_handle = find_dissector("llc"); - ipx_handle = find_dissector("ipx"); + llc_handle = find_dissector("llc"); + ipx_handle = find_dissector("ipx"); eth_withoutfcs_handle = find_dissector("eth_withoutfcs"); - data_handle = find_dissector("data"); + data_handle = find_dissector("data"); ieee80211_handle = find_dissector("wlan"); dissector_add_uint("wtap_encap", WTAP_ENCAP_IEEE_802_11, ieee80211_handle); @@ -17246,191 +18347,6 @@ proto_reg_handoff_ieee80211(void) data_encap_handle); } -/* Davide Schiera (2006-11-26): this function will try to decrypt with WEP or */ -/* WPA and return a tvb to the caller to add a new tab. It returns the */ -/* algorithm used for decryption (WEP, TKIP, CCMP) and the header and */ -/* trailer lengths. */ -static tvbuff_t * -try_decrypt(tvbuff_t *tvb, guint offset, guint len, guint8 *algorithm, guint32 *sec_header, guint32 *sec_trailer) { - const guint8 *enc_data; - guint8 *tmp = NULL; - tvbuff_t *decr_tvb = NULL; - guint32 dec_caplen; - guchar dec_data[AIRPDCAP_MAX_CAPLEN]; - AIRPDCAP_KEY_ITEM used_key; - - if (!enable_decryption) - return NULL; - - /* get the entire packet */ - enc_data = tvb_get_ptr(tvb, 0, len+offset); - - /* process packet with AirPDcap */ - if (AirPDcapPacketProcess(&airpdcap_ctx, enc_data, offset, offset+len, dec_data, &dec_caplen, &used_key, FALSE, TRUE)==AIRPDCAP_RET_SUCCESS) - { - *algorithm=used_key.KeyType; - switch (*algorithm) { - case AIRPDCAP_KEY_TYPE_WEP: - *sec_header=AIRPDCAP_WEP_HEADER; - *sec_trailer=AIRPDCAP_WEP_TRAILER; - break; - case AIRPDCAP_KEY_TYPE_CCMP: - *sec_header=AIRPDCAP_RSNA_HEADER; - *sec_trailer=AIRPDCAP_CCMP_TRAILER; - break; - case AIRPDCAP_KEY_TYPE_TKIP: - *sec_header=AIRPDCAP_RSNA_HEADER; - *sec_trailer=AIRPDCAP_TKIP_TRAILER; - break; - default: - return NULL; - } - - /* allocate buffer for decrypted payload */ - tmp = g_memdup(dec_data+offset, dec_caplen-offset); - - len=dec_caplen-offset; - - /* decrypt successful, let's set up a new data tvb. */ - decr_tvb = tvb_new_child_real_data(tvb, tmp, len, len); - tvb_set_free_cb(decr_tvb, g_free); - } - - return decr_tvb; -} -/* Davide Schiera ----------------------------------------------------------- */ - - -/* Collect our WEP and WPA keys */ -static -void set_airpdcap_keys(void) -{ - guint i = 0; - AIRPDCAP_KEY_ITEM key; - PAIRPDCAP_KEYS_COLLECTION keys; - decryption_key_t* dk = NULL; - GByteArray *bytes = NULL; - gboolean res; - - keys=(PAIRPDCAP_KEYS_COLLECTION)se_alloc(sizeof(AIRPDCAP_KEYS_COLLECTION)); - keys->nKeys = 0; - - for(i = 0; (uat_wep_key_records != NULL) && (i < num_wepkeys_uat) && (i < MAX_ENCRYPTION_KEYS); i++) - { - dk = parse_key_string(uat_wep_key_records[i].string, uat_wep_key_records[i].key); - - if(dk != NULL) - { - if(dk->type == AIRPDCAP_KEY_TYPE_WEP) - { - key.KeyType = AIRPDCAP_KEY_TYPE_WEP; - - bytes = g_byte_array_new(); - res = hex_str_to_bytes(dk->key->str, bytes, FALSE); - - if (dk->key->str && res && bytes->len > 0 && bytes->len <= AIRPDCAP_WEP_KEY_MAXLEN) - { - /* - * WEP key is correct (well, the can be even or odd, so it is not - * a real check, I think... is a check performed somewhere in the - * AirPDcap function??? ) - */ - memcpy(key.KeyData.Wep.WepKey, bytes->data, bytes->len); - key.KeyData.Wep.WepKeyLen = bytes->len; - keys->Keys[keys->nKeys] = key; - keys->nKeys++; - } - } - else if(dk->type == AIRPDCAP_KEY_TYPE_WPA_PWD) - { - key.KeyType = AIRPDCAP_KEY_TYPE_WPA_PWD; - - /* XXX - This just lops the end if the key off if it's too long. - * Should we handle this more gracefully? */ - g_strlcpy(key.UserPwd.Passphrase, dk->key->str, AIRPDCAP_WPA_PASSPHRASE_MAX_LEN+1); - - key.UserPwd.SsidLen = 0; - if(dk->ssid != NULL && dk->ssid->len <= AIRPDCAP_WPA_SSID_MAX_LEN) - { - memcpy(key.UserPwd.Ssid, dk->ssid->data, dk->ssid->len); - key.UserPwd.SsidLen = dk->ssid->len; - } - - keys->Keys[keys->nKeys] = key; - keys->nKeys++; - } - else if(dk->type == AIRPDCAP_KEY_TYPE_WPA_PSK) - { - key.KeyType = AIRPDCAP_KEY_TYPE_WPA_PSK; - - bytes = g_byte_array_new(); - hex_str_to_bytes(dk->key->str, bytes, FALSE); - - /* XXX - Pass the correct array of bytes... */ - if (bytes->len <= AIRPDCAP_WPA_PSK_LEN) { - memcpy(key.KeyData.Wpa.Psk, bytes->data, bytes->len); - - keys->Keys[keys->nKeys] = key; - keys->nKeys++; - } - } - } - } - - /* Now set the keys */ - AirPDcapSetKeys(&airpdcap_ctx,keys->Keys,keys->nKeys); - if (bytes) - g_byte_array_free(bytes, TRUE); - -} - -static void init_wepkeys(void) { - - /* - * XXX - AirPDcap - That God sends it to us beautiful (che dio ce la mandi bona) - * The next lines will add a key to the AirPDcap context. The keystring will be added - * to the old WEP array too, but we don't care, because the packets will come here - * already decrypted... One of these days we will fix this too - */ - set_airpdcap_keys(); -} -/* - * This code had been taken from AirSnort crack.c function classify() - * Permission granted by snax shmoo dot com - * weak_iv - determine which key byte an iv is useful in resolving - * parm - p, pointer to the first byte of an IV - * return - n - this IV is weak for byte n of a WEP key - * -1 - this IV is not weak for any key bytes - * - * This function tests for IVs that are known to satisfy the criteria - * for a weak IV as specified in FMS section 7.1 - * - */ -static int -weak_iv(guchar *iv) -{ - guchar sum, k; - - if (iv[1] == 255 && iv[0] > 2 && iv[0] < 16) { - return iv[0] -3; - } - - sum = iv[0] + iv[1]; - if (sum == 1) { - if (iv[2] <= 0x0a) { - return iv[2] +2; - } - else if (iv[2] == 0xff){ - return 0; - } - } - k = 0xfe - iv[2]; - if (sum == k && (iv[2] >= 0xf2 && iv[2] <= 0xfe && iv[2] != 0xfd)){ - return k; - } - return -1; -} - /* * Editor modelines * @@ -17443,3 +18359,4 @@ weak_iv(guchar *iv) * ex: set shiftwidth=2 tabstop=8 expandtab: * :indentSize=2:tabSize=8:noTabs=true: */ + diff --git a/epan/eap.h b/epan/eap.h index 89f339126e..0ce8f651f5 100644 --- a/epan/eap.h +++ b/epan/eap.h @@ -36,22 +36,22 @@ WS_VAR_IMPORT const value_string eap_code_vals[]; -#define EAP_TYPE_ID 1 -#define EAP_TYPE_NOTIFY 2 -#define EAP_TYPE_NAK 3 -#define EAP_TYPE_MD5 4 -#define EAP_TYPE_TLS 13 -#define EAP_TYPE_LEAP 17 -#define EAP_TYPE_SIM 18 -#define EAP_TYPE_TTLS 21 -#define EAP_TYPE_AKA 23 -#define EAP_TYPE_PEAP 25 -#define EAP_TYPE_MSCHAPV2 26 -#define EAP_TYPE_FAST 43 -#define EAP_TYPE_AKA_PRIME 50 -#define EAP_TYPE_EXT 254 +#define EAP_TYPE_ID 1 +#define EAP_TYPE_NOTIFY 2 +#define EAP_TYPE_NAK 3 +#define EAP_TYPE_MD5 4 +#define EAP_TYPE_TLS 13 +#define EAP_TYPE_LEAP 17 +#define EAP_TYPE_SIM 18 +#define EAP_TYPE_TTLS 21 +#define EAP_TYPE_AKA 23 +#define EAP_TYPE_PEAP 25 +#define EAP_TYPE_MSCHAPV2 26 +#define EAP_TYPE_FAST 43 +#define EAP_TYPE_AKA_PRIME 50 +#define EAP_TYPE_EXT 254 -WS_VAR_IMPORT const value_string eap_type_vals[]; +WS_VAR_IMPORT value_string_ext eap_type_vals_ext; #define SIM_START 10 #define SIM_CHALLENGE 11 diff --git a/epan/libwireshark.def b/epan/libwireshark.def index d300b01c83..9074cf9eb8 100644 --- a/epan/libwireshark.def +++ b/epan/libwireshark.def @@ -359,7 +359,7 @@ dtbl_entry_get_initial_handle EBCDIC_to_ASCII EBCDIC_to_ASCII1 eap_code_vals DATA -eap_type_vals DATA +eap_type_vals_ext DATA emem_init emem_tree_foreach emem_tree_insert32 -- cgit v1.2.3