diff options
author | Chien Wong <m@xv97.com> | 2022-08-19 23:12:41 +0800 |
---|---|---|
committer | A Wireshark GitLab Utility <gerald+gitlab-utility@wireshark.org> | 2022-08-20 06:14:29 +0000 |
commit | 3b7c611be158ed4995f61b70783d1574fc3be45a (patch) | |
tree | 79c9f52b369f353e6bf76d5ccb7277a8f2c597da /epan/dissectors/packet-ieee80211.c | |
parent | 005169491e72e22a3aa7f7035e2e3cf60b05c6f1 (diff) |
ieee80211: Add Transition Disable KDE dissecting
Signed-off-by: Chien Wong <m@xv97.com>
Diffstat (limited to 'epan/dissectors/packet-ieee80211.c')
-rw-r--r-- | epan/dissectors/packet-ieee80211.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c index 7a2a293416..1ef129a80b 100644 --- a/epan/dissectors/packet-ieee80211.c +++ b/epan/dissectors/packet-ieee80211.c @@ -805,6 +805,7 @@ const value_string wfa_subtype_vals[] = { { WFA_SUBTYPE_WIFI_60G, "60GHz Information Element" }, { WFA_WNM_SUBTYPE_NON_PREF_CHAN_REPORT, "Non-preferred Channel Report" }, { WFA_WNM_SUBTYPE_CELL_DATA_CAPABILITIES, "Cellular Data Capabilities" }, + { WFA_SUBTYPE_TRANSITION_DISABLE_KDE, "Transition Disable KDE" }, { WFA_SUBTYPE_QOS_MGMT, "QoS Management" }, { 0, NULL } }; @@ -6009,6 +6010,13 @@ static int hf_ieee80211_wfa_ie_oce_probe_suppr_ssid = -1; static int hf_ieee80211_wfa_anqp_mbo_subtype = -1; static int hf_ieee80211_wfa_anqp_mbo_query = -1; static int hf_ieee80211_wfa_anqp_mbo_cellular_pref = -1; +static int hf_ieee80211_wfa_ie_transition_disable_bitmap = -1; +static int hf_ieee80211_wfa_ie_transition_disable_wpa3_personal = -1; +static int hf_ieee80211_wfa_ie_transition_disable_sae_pk = -1; +static int hf_ieee80211_wfa_ie_transition_disable_wpa3_enterprise = -1; +static int hf_ieee80211_wfa_ie_transition_disable_enhanced_open = -1; +static int hf_ieee80211_wfa_ie_transition_disable_reserved_b4thru7 = -1; +static int hf_ieee80211_wfa_ie_transition_disable_reserved= -1; static int hf_ieee80211_aironet_ie_type = -1; static int hf_ieee80211_aironet_ie_dtpc = -1; @@ -7724,6 +7732,7 @@ static gint ett_sta_info = -1; static gint ett_ieee80211_esp = -1; static gint ett_ieee80211_wfa_60g_attr = -1; +static gint ett_ieee80211_wfa_transition_disable_tree = -1; /* 802.11ah trees */ static gint ett_s1g_sync_control_tree = -1; @@ -16993,6 +17002,38 @@ dissect_owe_transition_mode(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } static int +dissect_transition_disable_kde(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) +{ + int tag_len = tvb_captured_length(tvb); + int offset = 0; + static int * const ieee80211_wfa_transition_disable_flags[] = { + &hf_ieee80211_wfa_ie_transition_disable_wpa3_personal, + &hf_ieee80211_wfa_ie_transition_disable_sae_pk, + &hf_ieee80211_wfa_ie_transition_disable_wpa3_enterprise, + &hf_ieee80211_wfa_ie_transition_disable_enhanced_open, + &hf_ieee80211_wfa_ie_transition_disable_reserved_b4thru7, + NULL + }; + + if (tag_len < 1) { + expert_add_info(pinfo, tree, &ei_ieee80211_bad_length); + return 0; + } + + proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_ieee80211_wfa_ie_transition_disable_bitmap, + ett_ieee80211_wfa_transition_disable_tree, + ieee80211_wfa_transition_disable_flags, + ENC_LITTLE_ENDIAN, BMT_NO_APPEND); + offset++; + + if (offset < tag_len) + proto_tree_add_item(tree, hf_ieee80211_wfa_ie_transition_disable_reserved, tvb, offset, tag_len-offset, ENC_NA); + offset = tag_len; + + return offset; +} + +static int dissect_mbo_oce(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { int len = tvb_reported_length(tvb); @@ -51268,6 +51309,34 @@ proto_register_ieee80211(void) {"RSNX", "wlan.rsnx", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + {&hf_ieee80211_wfa_ie_transition_disable_bitmap, + {"Transition Disable Bitmap", "wlan.transition_disable_bitmap", + FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, + + {&hf_ieee80211_wfa_ie_transition_disable_wpa3_personal, + {"WPA3-Personal", "wlan.transition_disable.wpa3_personal", + FT_BOOLEAN, 8, NULL, GENMASK(0, 0), NULL, HFILL }}, + + {&hf_ieee80211_wfa_ie_transition_disable_sae_pk, + {"SAE-PK", "wlan.transition_disable.sae_pk", + FT_BOOLEAN, 8, NULL, GENMASK(1, 1), NULL, HFILL }}, + + {&hf_ieee80211_wfa_ie_transition_disable_wpa3_enterprise, + {"WPA3-Enterprise", "wlan.transition_disable.wpa3_enterprise", + FT_BOOLEAN, 8, NULL, GENMASK(2, 2), NULL, HFILL }}, + + {&hf_ieee80211_wfa_ie_transition_disable_enhanced_open, + {"Wi-Fi Enhanced Open", "wlan.transition_disable.enhanced_open", + FT_BOOLEAN, 8, NULL, GENMASK(3, 3), NULL, HFILL }}, + + {&hf_ieee80211_wfa_ie_transition_disable_reserved_b4thru7, + {"Reserved", "wlan.transition_disable.reserved.b4thru7", + FT_UINT8, BASE_HEX, NULL, GENMASK(7, 4), NULL, HFILL }}, + + {&hf_ieee80211_wfa_ie_transition_disable_reserved, + {"Reserved", "wlan.transition_disable.reserved", + FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + {&hf_ieee80211_tag_rsnx_length, {"RSNX Length", "wlan.rsnx.length", FT_UINT8, BASE_DEC, NULL, 0x0F, NULL, HFILL }}, @@ -51754,6 +51823,7 @@ proto_register_ieee80211(void) &ett_ieee80211_esp, &ett_ieee80211_wfa_60g_attr, + &ett_ieee80211_wfa_transition_disable_tree, &ett_gas_resp_fragment, &ett_gas_resp_fragments, @@ -52592,6 +52662,7 @@ proto_reg_handoff_ieee80211(void) dissector_add_uint("wlan.ie.wifi_alliance.subtype", WFA_SUBTYPE_HS20_INDICATION, create_dissector_handle(dissect_hs20_indication, -1)); dissector_add_uint("wlan.ie.wifi_alliance.subtype", WFA_SUBTYPE_OSEN, create_dissector_handle(dissect_hs20_osen, -1)); dissector_add_uint("wlan.ie.wifi_alliance.subtype", WFA_SUBTYPE_OWE_TRANSITION_MODE, create_dissector_handle(dissect_owe_transition_mode, -1)); + dissector_add_uint("wlan.ie.wifi_alliance.subtype", WFA_SUBTYPE_TRANSITION_DISABLE_KDE, create_dissector_handle(dissect_transition_disable_kde, -1)); dissector_add_uint("wlan.ie.wifi_alliance.subtype", WFA_SUBTYPE_WIFI_60G, create_dissector_handle(dissect_wfa_60g_ie, -1)); dissector_add_uint("wlan.ie.wifi_alliance.subtype", WFA_SUBTYPE_MBO_OCE, create_dissector_handle(dissect_mbo_oce, -1)); dissector_add_uint("wlan.ie.wifi_alliance.subtype", WFA_WNM_SUBTYPE_NON_PREF_CHAN_REPORT, create_dissector_handle(dissect_wfa_wnm_non_pref_chan, -1)); |