aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ieee80211.c
diff options
context:
space:
mode:
authorChien Wong <m@xv97.com>2022-08-19 23:12:41 +0800
committerA Wireshark GitLab Utility <gerald+gitlab-utility@wireshark.org>2022-08-20 06:14:29 +0000
commit3b7c611be158ed4995f61b70783d1574fc3be45a (patch)
tree79c9f52b369f353e6bf76d5ccb7277a8f2c597da /epan/dissectors/packet-ieee80211.c
parent005169491e72e22a3aa7f7035e2e3cf60b05c6f1 (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.c71
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));