2 * Routines for IEEE1905 dissection
4 * Copyright 2017, Richard Sharpe <realrichardsharpe@gmail.com>
5 * Copyright 2017, The Wi-Fi Alliance.
7 * Wireshark - Network traffic analyzer
8 * By Gerald Combs <gerald@wireshark.org>
9 * Copyright 1998 Gerald Combs
11 * SPDX-License-Identifier: GPL-2.0-or-later
15 * https://standards.ieee.org/ieee/1905.1/4995/
17 * IEEE Standard for a Convergent Digital Home Network for Heterogeneous
20 * Plus incorporating the changes in the Multi-AP Technical Specification.
25 #include <epan/packet.h>
26 #include <epan/etypes.h>
27 #include <epan/addr_resolv.h>
28 #include <epan/exceptions.h>
29 #include <epan/expert.h>
30 #include <epan/address.h>
31 #include <epan/reassemble.h>
33 #include <epan/unit_strings.h>
34 #include "packet-wps.h"
35 #include "packet-wifi-dpp.h"
36 #include "packet-ieee80211.h"
38 static dissector_handle_t ieee1905_handle
;
39 static dissector_handle_t eapol_handle
;
41 extern value_string_ext ieee80211_reason_code_ext
;
42 extern value_string_ext ieee80211_status_code_ext
;
43 extern value_string_ext ff_pa_action_codes_ext
;
44 extern const value_string wfa_subtype_vals
[];
46 void proto_reg_handoff_ieee1905(void);
47 void proto_register_ieee1905(void);
49 /* Reassembly header fields */
50 static int hf_ieee1905_fragments
;
51 static int hf_ieee1905_fragment
;
52 static int hf_ieee1905_fragment_overlap
;
53 static int hf_ieee1905_fragment_overlap_conflicts
;
54 static int hf_ieee1905_fragment_multiple_tails
;
55 static int hf_ieee1905_fragment_too_long_fragment
;
56 static int hf_ieee1905_fragment_error
;
57 static int hf_ieee1905_fragment_count
;
58 static int hf_ieee1905_fragment_reassembled_in
;
59 static int hf_ieee1905_fragment_reassembled_length
;
61 /* Normal header fields */
62 static int proto_ieee1905
;
63 static int hf_ieee1905_fragment_data
;
64 static int hf_ieee1905_message_version
;
65 static int hf_ieee1905_message_reserved
;
66 static int hf_ieee1905_message_type
;
67 static int hf_ieee1905_message_id
;
68 static int hf_ieee1905_fragment_id
;
69 static int hf_ieee1905_flags
;
70 static int hf_ieee1905_last_fragment
;
71 static int hf_ieee1905_relay_indicator
;
72 static int hf_ieee1905_tlv_types
;
73 static int hf_ieee1905_tlv_len
;
74 static int hf_ieee1905_tlv_len_reserved
;
75 static int hf_ieee1905_tlv_len_length
;
76 static int hf_ieee1905_tlv_data
;
77 static int hf_ieee1905_al_mac_address_type
;
78 static int hf_ieee1905_mac_address_type
;
79 static int hf_ieee1905_link_metric_query_type
;
80 static int hf_ieee1905_link_metrics_requested
;
81 static int hf_ieee1905_responder_al_mac_addr
;
82 static int hf_ieee1905_neighbor_al_mac_addr
;
83 static int hf_ieee1905_receiving_al_mac_addr
;
84 static int hf_ieee1905_bridge_flag
;
85 static int hf_ieee1905_packet_errors
;
86 static int hf_ieee1905_transmitted_packets
;
87 static int hf_ieee1905_mac_throughput_capacity
;
88 static int hf_ieee1905_link_availability
;
89 static int hf_ieee1905_phy_rate
;
90 static int hf_ieee1905_packets_received
;
91 static int hf_ieee1905_rssi
;
92 static int hf_ieee1905_extra_tlv_data
;
93 static int hf_ieee1905_local_interface_count
;
94 static int hf_ieee1905_media_type
;
95 static int hf_ieee1905_media_spec_info_len
;
96 static int hf_ieee1905_media_spec_info
;
97 static int hf_ieee1905_media_type_high
;
98 static int hf_ieee1905_media_type_low
;
99 static int hf_ieee1905_bridging_tuples_cnt
;
100 static int hf_ieee1905_bridging_mac_address_cnt
;
101 static int hf_ieee1905_bridging_mac_address
;
102 static int hf_ieee1905_local_interface_mac
;
103 static int hf_ieee1905_non_1905_neighbor_mac
;
104 static int hf_ieee1905_neighbor_flags
;
105 static int hf_ieee1905_bridges_flag
;
106 static int hf_ieee1905_link_metric_result_code
;
107 static int hf_ieee1905_vendor_specific_oui
;
108 static int hf_ieee1905_vendor_specific_info
;
109 static int hf_ieee1905_searched_role
;
110 static int hf_ieee1905_supported_role
;
111 static int hf_ieee1905_auto_config_freq_band
;
112 static int hf_ieee1905_supported_freq_band
;
113 static int hf_ieee1905_event_notification_media_types
;
114 static int hf_ieee1905_sender_al_id
;
115 static int hf_ieee1905_push_button_event_msg_id
;
116 static int hf_ieee1905_sender_joining_interface
;
117 static int hf_ieee1905_new_device_interface
;
118 static int hf_ieee1905_device_al_mac
;
119 static int hf_ieee1905_local_intf_oui
;
120 static int hf_ieee1905_local_intf_variant
;
121 static int hf_ieee1905_local_intf_variant_name
;
122 static int hf_ieee1905_local_intf_url_count
;
123 static int hf_ieee1905_local_intf_spec_count
;
124 static int hf_ieee1905_local_intf_url
;
125 static int hf_ieee1905_local_intf_spec
;
126 static int hf_ieee1905_dev_id_friendly_name
;
127 static int hf_ieee1905_dev_id_manuf_name
;
128 static int hf_ieee1905_dev_id_manuf_model
;
129 static int hf_ieee1905_control_url
;
130 static int hf_ieee1905_ipv4_type_count
;
131 static int hf_ieee1905_mac_address
;
132 static int hf_ieee1905_ipv4_addr_count
;
133 static int hf_ieee1905_addr_type
;
134 static int hf_ieee1905_ipv4_addr
;
135 static int hf_ieee1905_dhcp_server
;
136 static int hf_ieee1905_ipv6_mac_address
;
137 static int hf_ieee1905_ipv6_linklocal
;
138 static int hf_ieee1905_ipv6_type_count
;
139 static int hf_ieee1905_ipv6_addr_count
;
140 static int hf_ieee1905_ipv6_addr_type
;
141 static int hf_ieee1905_ipv6_addr
;
142 static int hf_ieee1905_ipv6_dhcp_server
;
143 static int hf_ieee1905_generic_phy_media_types
;
144 static int hf_ieee1905_profile_version
;
145 static int hf_ieee1905_power_off_intf_count
;
146 static int hf_ieee1905_power_change_intf_count
;
147 static int hf_ieee1905_power_change_mac_addr
;
148 static int hf_ieee1905_power_change_state
;
149 static int hf_ieee1905_power_status_intf_count
;
150 static int hf_ieee1905_power_status_mac_addr
;
151 static int hf_ieee1905_power_status_state
;
152 static int hf_ieee1905_l2_neighbor_intf_count
;
153 static int hf_ieee1905_l2_local_intf_mac_addr
;
154 static int hf_ieee1905_l2_neighbor_dev_count
;
155 static int hf_ieee1905_l2_neighbor_mac_addr
;
156 static int hf_ieee1905_l2_behind_mac_addr_count
;
157 static int hf_ieee1905_l2_behind_mac_addr
;
158 static int hf_ieee1905_supported_service_count
;
159 static int hf_ieee1905_supported_service
;
160 static int hf_ieee1905_searched_service_count
;
161 static int hf_ieee1905_searched_service
;
162 static int hf_ieee1905_ap_radio_identifier
;
163 static int hf_ieee1905_operatonal_bss_radio_count
;
164 static int hf_ieee1905_ap_operational_intf_count
;
165 static int hf_ieee1905_ap_local_intf_mac_addr
;
166 static int hf_ieee1905_ap_local_intf_ssid_len
;
167 static int hf_ieee1905_ap_local_intf_ssid
;
168 static int hf_ieee1905_ap_capabilities_flags
;
169 static int hf_ieee1905_rpt_unsuccessful_associations
;
170 static int hf_ieee1905_unassoc_sta_metrics_oper_flag
;
171 static int hf_ieee1905_unassoc_sta_metrics_non_oper_flag
;
172 static int hf_ieee1905_agent_init_steering
;
173 static int hf_ieee1905_rpt_unsuccessful_assoc_report
;
174 static int hf_ieee1905_higher_layer_protocol
;
175 static int hf_ieee1905_higher_layer_data
;
176 static int hf_ieee1905_assoc_backhaul_station_mac
;
177 static int hf_ieee1905_backhaul_target_bssid
;
178 static int hf_ieee1905_backhaul_steering_status
;
179 static int hf_ieee1905_backhaul_operating_class
;
180 static int hf_ieee1905_backhaul_channel_number
;
181 static int hf_ieee1905_client_assoc_bssid
;
182 static int hf_ieee1905_association_control
;
183 static int hf_ieee1905_association_control_validity
;
184 static int hf_ieee1905_client_assoc_sta_count
;
185 static int hf_ieee1905_client_assoc_mac_addr
;
186 static int hf_ieee1905_btm_reporter_bssid
;
187 static int hf_ieee1905_btm_sta_mac_addr
;
188 static int hf_ieee1905_btm_report_status
;
189 static int hf_ieee1905_btm_report_bssid
;
190 static int hf_ieee1905_source_bss_bssid
;
191 static int hf_ieee1905_steering_request_flags
;
192 static int hf_ieee1905_steering_req_op_window
;
193 static int hf_ieee1905_steering_request_mode_flag
;
194 static int hf_ieee1905_btm_disassoc_imminent_flag
;
195 static int hf_ieee1905_btm_abridged_flag
;
196 static int hf_ieee1905_steering_req_reserved
;
197 static int hf_ieee1905_steering_btm_disass_timer
;
198 static int hf_ieee1905_steering_req_sta_count
;
199 static int hf_ieee1905_steering_req_sta_mac
;
200 static int hf_ieee1905_steering_req_target_bssid_count
;
201 static int hf_ieee1905_steering_req_target_bssid
;
202 static int hf_ieee1905_steering_req_oper_class
;
203 static int hf_ieee1905_steering_req_target_channel
;
204 static int hf_ieee1905_client_bssid
;
205 static int hf_ieee1905_client_mac_addr
;
206 static int hf_ieee1905_client_capability_result
;
207 static int hf_ieee1905_client_capability_frame
;
208 static int hf_ieee1905_association_flag
;
209 static int hf_ieee1905_association_client_mac_addr
;
210 static int hf_ieee1905_association_agent_bssid
;
211 static int hf_ieee1905_association_event_flags
;
212 static int hf_ieee1905_ap_radio_max_bss
;
213 static int hf_ieee1905_ap_radio_classes
;
214 static int hf_ieee1905_ap_radio_class
;
215 static int hf_ieee1905_ap_radio_eirp
;
216 static int hf_ieee1905_ap_radio_non_op_count
;
217 static int hf_ieee1905_radio_basic_non_op_channel
;
218 static int hf_ieee1905_max_supported_tx_streams
;
219 static int hf_ieee1905_max_supported_rx_streams
;
220 static int hf_ieee1905_short_gi_20mhz_flag
;
221 static int hf_ieee1905_short_gi_40mhz_flag
;
222 static int hf_ieee1905_ht_support_40mhz_flag
;
223 static int hf_ieee1905_ap_ht_capabilities_radio_id
;
224 static int hf_ieee1905_ht_cap_flags
;
225 static int hf_ieee1905_vht_max_supported_tx_streams
;
226 static int hf_ieee1905_vht_max_supported_rx_streams
;
227 static int hf_ieee1905_short_gi_80mhz_flag
;
228 static int hf_ieee1905_short_gi_160mhz_flag
;
229 static int hf_ieee1905_vht_support_80plus_mhz_flag
;
230 static int hf_ieee1905_vht_support_160_mhz_flag
;
231 static int hf_ieee1905_su_beamformer_capable_flag
;
232 static int hf_ieee1905_mu_beamformer_capable_flag
;
233 static int hf_ieee1905_ap_vht_capabilities_radio_id
;
234 static int hf_ieee1905_vht_cap_flags
;
235 static int hf_ieee1905_assoc_clients_bss_count
;
236 static int hf_ieee1905_assoc_bssid
;
237 static int hf_ieee1905_bss_client_count
;
238 static int hf_ieee1905_bss_client_mac
;
239 static int hf_ieee1905_bss_client_last_assoc
;
240 static int hf_ieee1905_ap_vht_supported_vht_tx_mcs
;
241 static int hf_ieee1905_ap_vht_supported_vht_rx_mcs
;
242 static int hf_ieee1905_ap_vht_tx_mcs_map_1ss
;
243 static int hf_ieee1905_ap_vht_tx_mcs_map_2ss
;
244 static int hf_ieee1905_ap_vht_tx_mcs_map_3ss
;
245 static int hf_ieee1905_ap_vht_tx_mcs_map_4ss
;
246 static int hf_ieee1905_ap_vht_tx_mcs_map_5ss
;
247 static int hf_ieee1905_ap_vht_tx_mcs_map_6ss
;
248 static int hf_ieee1905_ap_vht_tx_mcs_map_7ss
;
249 static int hf_ieee1905_ap_vht_tx_mcs_map_8ss
;
250 static int hf_ieee1905_ap_vht_rx_mcs_map_1ss
;
251 static int hf_ieee1905_ap_vht_rx_mcs_map_2ss
;
252 static int hf_ieee1905_ap_vht_rx_mcs_map_3ss
;
253 static int hf_ieee1905_ap_vht_rx_mcs_map_4ss
;
254 static int hf_ieee1905_ap_vht_rx_mcs_map_5ss
;
255 static int hf_ieee1905_ap_vht_rx_mcs_map_6ss
;
256 static int hf_ieee1905_ap_vht_rx_mcs_map_7ss
;
257 static int hf_ieee1905_ap_vht_rx_mcs_map_8ss
;
258 static int hf_ieee1905_channel_pref_preference
;
259 static int hf_ieee1905_channel_pref_reason
;
260 static int hf_ieee1905_channel_preference_radio_id
;
261 static int hf_ieee1905_channel_preference_class_count
;
262 static int hf_ieee1905_channel_pref_class
;
263 static int hf_ieee1905_channel_pref_channel_count
;
264 static int hf_ieee1905_channel_pref_channel
;
265 static int hf_ieee1905_channel_prefs_flags
;
266 static int hf_ieee1905_trans_power_limit_radio_id
;
267 static int hf_ieee1905_trans_power_limit_eirp
;
268 static int hf_ieee1905_channel_select_resp_radio_id
;
269 static int hf_ieee1905_radio_metrics_radio_id
;
270 static int hf_ieee1905_channel_select_resp_code
;
271 static int hf_ieee1905_op_channel_report_radio_id
;
272 static int hf_ieee1905_op_channel_report_classes
;
273 static int hf_ieee1905_op_channel_class
;
274 static int hf_ieee1905_op_channel_number
;
275 static int hf_ieee1905_op_channel_eirp
;
276 static int hf_ieee1905_ap_he_cap_radio_id
;
277 static int hf_ieee1905_ap_he_cap_mcs_length
;
278 static int hf_ieee1905_ap_he_cap_tx_mcs_le_80_mhz
;
279 static int hf_ieee1905_ap_he_tx_mcs_map_1ss
;
280 static int hf_ieee1905_ap_he_tx_mcs_map_2ss
;
281 static int hf_ieee1905_ap_he_tx_mcs_map_3ss
;
282 static int hf_ieee1905_ap_he_tx_mcs_map_4ss
;
283 static int hf_ieee1905_ap_he_tx_mcs_map_5ss
;
284 static int hf_ieee1905_ap_he_tx_mcs_map_6ss
;
285 static int hf_ieee1905_ap_he_tx_mcs_map_7ss
;
286 static int hf_ieee1905_ap_he_tx_mcs_map_8ss
;
287 static int hf_ieee1905_ap_he_cap_rx_mcs_le_80_mhz
;
288 static int hf_ieee1905_ap_he_rx_mcs_map_1ss
;
289 static int hf_ieee1905_ap_he_rx_mcs_map_2ss
;
290 static int hf_ieee1905_ap_he_rx_mcs_map_3ss
;
291 static int hf_ieee1905_ap_he_rx_mcs_map_4ss
;
292 static int hf_ieee1905_ap_he_rx_mcs_map_5ss
;
293 static int hf_ieee1905_ap_he_rx_mcs_map_6ss
;
294 static int hf_ieee1905_ap_he_rx_mcs_map_7ss
;
295 static int hf_ieee1905_ap_he_rx_mcs_map_8ss
;
296 static int hf_ieee1905_ap_he_cap_tx_mcs_160_mhz
;
297 static int hf_ieee1905_ap_he_cap_rx_mcs_160_mhz
;
298 static int hf_ieee1905_ap_he_cap_tx_mcs_80p80_mhz
;
299 static int hf_ieee1905_ap_he_cap_rx_mcs_80p80_mhz
;
300 static int hf_ieee1905_unassoc_link_metrics_query_mac
;
301 static int hf_ieee1905_unassoc_sta_link_metrics_class
;
302 static int hf_ieee1905_ap_metrics_reporting_interval
;
303 static int hf_ieee1905_metric_reporting_policy_radio_id
;
304 static int hf_ieee1905_metric_reporting_radio_count
;
305 static int hf_ieee1905_metric_rcpi_threshold
;
306 static int hf_ieee1905_metric_reporting_rcpi_hysteresis
;
307 static int hf_ieee1905_metrics_policy_flags
;
308 static int hf_ieee1905_metrics_channel_util_threshold
;
309 static int hf_ieee1905_assoc_sta_traffic_stats_inclusion
;
310 static int hf_ieee1905_assoc_sta_link_metrics_inclusion
;
311 static int hf_ieee1905_assoc_wf6_status_policy_inclusion
;
312 static int hf_ieee1905_reporting_policy_flags_reserved
;
313 static int hf_ieee1905_ap_metric_query_bssid_cnt
;
314 static int hf_ieee1905_ap_metric_query_bssid
;
315 static int hf_ieee1905_sta_mac_address_type
;
316 static int hf_ieee1905_assoc_sta_mac_addr
;
317 static int hf_ieee1905_assoc_sta_bssid_count
;
318 static int hf_ieee1905_assoc_sta_link_metrics_bssid
;
319 static int hf_ieee1905_assoc_sta_link_metrics_time_delta
;
320 static int hf_ieee1905_assoc_sta_link_metrics_dwn_rate
;
321 static int hf_ieee1905_assoc_sta_link_metrics_up_rate
;
322 static int hf_ieee1905_assoc_sta_link_metrics_rcpi
;
323 static int hf_ieee1905_assoc_wf6_sta_mac_addr
;
324 static int hf_ieee1905_assoc_wf6_sta_tid_count
;
325 static int hf_ieee1905_assoc_wf6_sta_tid
;
326 static int hf_ieee1905_assoc_wf6_sta_queue_size
;
327 static int hf_ieee1905_assoc_sta_ext_link_metrics_mac_addr
;
328 static int hf_ieee1905_assoc_sta_ext_link_metrics_count
;
329 static int hf_ieee1905_assoc_sta_extended_metrics_bssid
;
330 static int hf_ieee1905_assoc_sta_extended_metrics_lddlr
;
331 static int hf_ieee1905_assoc_sta_extended_metrics_ldulr
;
332 static int hf_ieee1905_assoc_sta_extended_metrics_ur
;
333 static int hf_ieee1905_assoc_sta_extended_metrics_tr
;
334 static int hf_ieee1905_unassoc_sta_link_channel_count
;
335 static int hf_ieee1905_unassoc_metrics_channel
;
336 static int hf_ieee1905_unassoc_metrics_mac_count
;
337 static int hf_ieee1905_he_max_supported_tx_streams
;
338 static int hf_ieee1905_he_max_supported_rx_streams
;
339 static int hf_ieee1905_he_support_80plus_mhz_flag
;
340 static int hf_ieee1905_he_support_160mhz_flag
;
341 static int hf_ieee1905_he_su_beamformer_capable_flag
;
342 static int hf_ieee1905_he_mu_beamformer_capable_flag
;
343 static int hf_ieee1905_ul_mu_mimo_capable_flag
;
344 static int hf_ieee1905_ul_mu_mimo_ofdma_capable_flag
;
345 static int hf_ieee1905_dl_mu_mimo_ofdma_capable_flag
;
346 static int hf_ieee1905_ul_ofdma_capable
;
347 static int hf_ieee1905_dl_ofdma_capable
;
348 static int hf_ieee1905_he_cap_flags
;
349 static int hf_ieee1905_steering_policy_local_disallowed_count
;
350 static int hf_ieee1905_steering_disallowed_mac_addr
;
351 static int hf_ieee1905_btm_steering_disallowed_count
;
352 static int hf_ieee1905_btm_steering_disallowed_mac_addr
;
353 static int hf_ieee1905_steering_policy_radio_count
;
354 static int hf_ieee1905_steering_policy_radio_id
;
355 static int hf_ieee1905_steering_policy_policy
;
356 static int hf_ieee1905_steering_policy_util
;
357 static int hf_ieee1905_steering_policy_rcpi_threshold
;
358 static int hf_ieee1905_radio_restriction_radio_id
;
359 static int hf_ieee1905_radio_restriction_op_class_count
;
360 static int hf_ieee1905_radio_restriction_op_class
;
361 static int hf_ieee1905_radio_restriction_chan_count
;
362 static int hf_ieee1905_radio_restriction_channel
;
363 static int hf_ieee1905_radio_restriction_min_separation
;
364 static int hf_ieee1905_ap_metrics_agent_bssid
;
365 static int hf_ieee1905_include_estimated_spi_ac_eq_be
;
366 static int hf_ieee1905_include_estimated_spi_ac_eq_bk
;
367 static int hf_ieee1905_include_estimated_spi_ac_eq_vo
;
368 static int hf_ieee1905_include_estimated_spi_ac_eq_vi
;
369 static int hf_ieee1905_ap_metrics_channel_utilization
;
370 static int hf_ieee1905_ap_metrics_sta_count
;
371 static int hf_ieee1905_ap_metrics_flags
;
372 static int hf_ieee1905_ap_metrics_service_params_be
;
373 static int hf_ieee1905_ap_metrics_service_params_bk
;
374 static int hf_ieee1905_ap_metrics_service_params_vo
;
375 static int hf_ieee1905_ap_metrics_service_params_vi
;
376 static int hf_ieee1905_unassoc_sta_link_metric_op_class
;
377 static int hf_ieee1905_unassoc_sta_link_metric_sta_count
;
378 static int hf_ieee1905_unassoc_link_metric_mac_addr
;
379 static int hf_ieee1905_unassoc_link_metric_channel
;
380 static int hf_ieee1905_unassoc_link_metric_delta
;
381 static int hf_ieee1905_unassoc_link_metric_uplink_rcpi
;
382 static int hf_ieee1905_beacon_metrics_query_mac_addr
;
383 static int hf_ieee1905_beacon_metrics_query_op_class
;
384 static int hf_ieee1905_beacon_metrics_query_channel
;
385 static int hf_ieee1905_beacon_metrics_query_bssid
;
386 static int hf_ieee1905_beacon_metrics_query_detail
;
387 static int hf_ieee1905_beacon_metrics_query_ssid_len
;
388 static int hf_ieee1905_beacon_metrics_query_ssid
;
389 static int hf_ieee1905_beacon_metrics_channel_count
;
390 static int hf_ieee1905_beacon_metrics_report_len
;
391 static int hf_ieee1905_beacon_metrics_report_op_class
;
392 static int hf_ieee1905_beacon_metrics_report_channel_id
;
393 static int hf_ieee1905_measurement_report
;
394 static int hf_ieee1905_beacon_metrics_response_mac_addr
;
395 static int hf_ieee1905_beacon_metrics_response_reserved
;
396 static int hf_ieee1905_beacon_metrics_response_meas_num
;
397 static int hf_ieee1905_assoc_sta_traffic_stats_mac_addr
;
398 static int hf_ieee1905_assoc_sta_traffic_stats_bytes_sent
;
399 static int hf_ieee1905_assoc_sta_traffic_stats_bytes_rcvd
;
400 static int hf_ieee1905_assoc_sta_traffic_stats_packets_sent
;
401 static int hf_ieee1905_assoc_sta_traffic_stats_packets_rcvd
;
402 static int hf_ieee1905_assoc_sta_traffic_stats_tx_pkt_errs
;
403 static int hf_ieee1905_assoc_sta_traffic_stats_rx_pkt_errs
;
404 static int hf_ieee1905_assoc_sta_traffic_stats_retrans_count
;
405 static int hf_ieee1905_error_code_value
;
406 static int hf_ieee1905_error_code_mac_addr
;
407 static int hf_ieee1905_channel_scan_rep_policy
;
408 static int hf_ieee1905_channel_scan_pol_report
;
409 static int hf_ieee1905_channel_scan_pol_reserved
;
410 static int hf_ieee1905_channel_scan_capabilities_radio_num
;
411 static int hf_ieee1905_channel_scan_capa_radio_id
;
412 static int hf_ieee1905_channel_scan_capa_flags
;
413 static int hf_ieee1905_channel_scan_capa_flags_on_boot_only
;
414 static int hf_ieee1905_channel_scan_capa_flags_scan_impact
;
415 static int hf_ieee1905_channel_scan_capa_flags_reserved
;
416 static int hf_ieee1905_channel_scan_capa_min_scan_interval
;
417 static int hf_ieee1905_channel_scan_capa_class_num
;
418 static int hf_ieee1905_channel_scan_capa_oper_class
;
419 static int hf_ieee1905_channel_scan_capa_oper_class_chan_cnt
;
420 static int hf_ieee1905_channel_scan_capa_channel
;
421 static int hf_ieee1905_channel_scan_request_flags
;
422 static int hf_ieee1905_channel_scan_request_flags_fresh_scan
;
423 static int hf_ieee1905_channel_scan_request_flags_reserved
;
424 static int hf_ieee1905_channel_scan_request_radio_num
;
425 static int hf_ieee1905_channel_scan_request_radio_id
;
426 static int hf_ieee1905_channel_scan_request_class_num
;
427 static int hf_ieee1905_channel_scan_request_oper_class
;
428 static int hf_ieee1905_channel_scan_request_oper_class_chan_cnt
;
429 static int hf_ieee1905_channel_scan_request_channel
;
430 static int hf_ieee1905_channel_scan_result_radio_id
;
431 static int hf_ieee1905_channel_scan_result_oper_class
;
432 static int hf_ieee1905_channel_scan_result_channel
;
433 static int hf_ieee1905_channel_scan_result_status
;
434 static int hf_ieee1905_channel_scan_result_timestamp_len
;
435 static int hf_ieee1905_channel_scan_result_timestamp_string
;
436 static int hf_ieee1905_channel_scan_result_utilization
;
437 static int hf_ieee1905_channel_scan_result_noise
;
438 static int hf_ieee1905_radio_metrics_noise
;
439 static int hf_ieee1905_radio_metrics_transmit
;
440 static int hf_ieee1905_radio_metrics_receive_self
;
441 static int hf_ieee1905_radio_metrics_receive_other
;
442 static int hf_ieee1905_ap_extended_metrics_bssid
;
443 static int hf_ieee1905_ap_extended_metrics_unicast_sent
;
444 static int hf_ieee1905_ap_extended_metrics_unicast_rcvd
;
445 static int hf_ieee1905_ap_extended_metrics_multicast_sent
;
446 static int hf_ieee1905_ap_extended_metrics_multicast_rcvd
;
447 static int hf_ieee1905_ap_extended_metrics_bcast_sent
;
448 static int hf_ieee1905_ap_extended_metrics_bcast_rcvd
;
449 static int hf_ieee1905_channel_scan_result_neigh_num
;
450 static int hf_ieee1905_channel_scan_result_bssid
;
451 static int hf_ieee1905_channel_scan_result_ssid_len
;
452 static int hf_ieee1905_channel_scan_result_ssid
;
453 static int hf_ieee1905_channel_scan_result_sig_level
;
454 static int hf_ieee1905_channel_scan_result_bw_len
;
455 static int hf_ieee1905_channel_scan_result_bw
;
456 static int hf_ieee1905_channel_scan_result_neigh_flags
;
457 static int hf_ieee1905_channel_scan_result_load_element_present
;
458 static int hf_ieee1905_channel_scan_result_neigh_reserved
;
459 static int hf_ieee1905_channel_scan_result_util
;
460 static int hf_ieee1905_channel_scan_result_sta_count
;
461 static int hf_ieee1905_channel_scan_result_scan_duration
;
462 static int hf_ieee1905_channel_scan_result_flags
;
463 static int hf_ieee1905_channel_scan_result_scan_type
;
464 static int hf_ieee1905_channel_scan_result_scan_flags_reserved
;
465 static int hf_ieee1905_timestamp_length
;
466 static int hf_ieee1905_timestamp_string
;
467 static int hf_ieee1905_1905_layer_sec_capa_onboarding
;
468 static int hf_ieee1905_1905_layer_sec_capa_mic_sup
;
469 static int hf_ieee1905_1905_layer_sec_capa_enc_alg_sup
;
470 static int hf_ieee1905_ap_wf6_capa_radio_id
;
471 static int hf_ieee1905_ap_wf6_role_count
;
472 static int hf_ieee1905_ap_wf6_agent_role_flags
;
473 static int hf_ieee1905_ap_wf6_capa_agents_role
;
474 static int hf_ieee1905_ap_wf6_capa_he_160_support
;
475 static int hf_ieee1905_ap_wf6_capa_he_80p80_support
;
476 static int hf_ieee1905_ap_wf6_capa_reserved
;
477 static int hf_ieee1905_ap_wf6_he_supported_flags
;
478 static int hf_ieee1905_ap_wf6_su_beamformer
;
479 static int hf_ieee1905_ap_wf6_su_beamformee
;
480 static int hf_ieee1905_ap_wf6_mu_beamformer_status
;
481 static int hf_ieee1905_ap_wf6_beamformee_sts_le_80mhz
;
482 static int hf_ieee1905_ap_wf6_beamformee_sts_gt_80mhz
;
483 static int hf_ieee1905_ap_wf6_ul_mu_mimo
;
484 static int hf_ieee1905_ap_wf6_ul_ofdma
;
485 static int hf_ieee1905_ap_wf6_dl_ofdma
;
486 static int hf_ieee1905_ap_wf6_mimo_max_flags
;
487 static int hf_ieee1905_ap_wf6_max_ap_dl_mu_mimo_tx
;
488 static int hf_ieee1905_ap_wf6_max_ap_ul_mu_mimi_rx
;
489 static int hf_ieee1905_ap_wf6_dl_ofdma_max_tx
;
490 static int hf_ieee1905_ap_wf6_ul_ofdma_max_rx
;
491 static int hf_ieee1905_ap_wf6_gen_flags
;
492 static int hf_ieee1905_ap_wf6_gen_rts
;
493 static int hf_ieee1905_ap_wf6_gen_mu_rts
;
494 static int hf_ieee1905_ap_wf6_gen_multi_bssid
;
495 static int hf_ieee1905_ap_wf6_gen_mu_edca
;
496 static int hf_ieee1905_ap_wf6_gen_twt_requester
;
497 static int hf_ieee1905_ap_wf6_gen_twt_responder
;
498 static int hf_ieee1905_ap_wf6_gen_reserved
;
499 static int hf_ieee1905_agent_list_bytes
;
500 static int hf_ieee1905_mic_group_temporal_key_id
;
501 static int hf_ieee1905_mic_integrity_transmission_counter
;
502 static int hf_ieee1905_mic_source_la_mac_id
;
503 static int hf_ieee1905_mic_length
;
504 static int hf_ieee1905_mic_bytes
;
505 static int hf_ieee1905_1905_gtk_key_id
;
506 static int hf_ieee1905_mic_version
;
507 static int hf_ieee1905_mic_reserved
;
508 static int hf_ieee1905_encrypted_dest_al_mac_addr
;
509 static int hf_ieee1905_encrypted_enc_transmission_count
;
510 static int hf_ieee1905_encrypted_source_la_mac_id
;
511 static int hf_ieee1905_encrypted_enc_output_field_len
;
512 static int hf_ieee1905_encrypted_enc_output_field
;
513 static int hf_ieee1905_cac_request_radio_count
;
514 static int hf_ieee1905_cac_request_radio_id
;
515 static int hf_ieee1905_cac_request_op_class
;
516 static int hf_ieee1905_cac_request_channel
;
517 static int hf_ieee1905_cac_request_flags
;
518 static int hf_ieee1905_cac_request_method
;
519 static int hf_ieee1905_cac_request_completion_action
;
520 static int hf_ieee1905_cac_request_completion_unsuccess
;
521 static int hf_ieee1905_cac_request_reserved
;
522 static int hf_ieee1905_cac_termination_radio_count
;
523 static int hf_ieee1905_cac_terminate_radio_id
;
524 static int hf_ieee1905_cac_terminate_op_class
;
525 static int hf_ieee1905_cac_terminate_channel
;
526 static int hf_ieee1905_cac_completion_rep_radio_count
;
527 static int hf_ieee1905_cac_completion_radio_id
;
528 static int hf_ieee1905_cac_completion_op_class
;
529 static int hf_ieee1905_cac_completion_channel
;
530 static int hf_ieee1905_cac_completion_status
;
531 static int hf_ieee1905_cac_completion_radar_count
;
532 static int hf_ieee1905_cac_comp_radar_op_class
;
533 static int hf_ieee1905_cac_comp_radar_channel
;
534 static int hf_ieee1905_cac_status_rpt_active_chan
;
535 static int hf_ieee1905_cac_status_rpt_avail_op_class
;
536 static int hf_ieee1905_cac_status_rpt_avail_channel
;
537 static int hf_ieee1905_cac_status_rpt_avail_minutes
;
538 static int hf_ieee1905_cac_status_rpt_non_occ_cnt
;
539 static int hf_ieee1905_cac_status_rpt_non_occ_op_class
;
540 static int hf_ieee1905_cac_status_rpt_non_occ_channel
;
541 static int hf_ieee1905_cac_status_rpt_non_occ_seconds
;
542 static int hf_ieee1905_cac_status_rpt_active_cac_cnt
;
543 static int hf_ieee1905_cac_status_rpt_active_cac_op_class
;
544 static int hf_ieee1905_cac_status_rpt_active_cac_channel
;
545 static int hf_ieee1905_cac_status_rpt_active_cac_seconds
;
546 static int hf_ieee1905_cac_capa_country_code
;
547 static int hf_ieee1905_cac_capa_radio_cnt
;
548 static int hf_ieee1905_cac_capabilities_radio_id
;
549 static int hf_ieee1905_cac_capabilities_types_num
;
550 static int hf_ieee1905_cac_capabilities_cac_mode
;
551 static int hf_ieee1905_cac_capabilities_cac_seconds
;
552 static int hf_ieee1905_cac_capabilities_op_class_num
;
553 static int hf_ieee1905_cac_capabilities_op_class
;
554 static int hf_ieee1905_cac_capabilities_channel_cnt
;
555 static int hf_ieee1905_cac_capabillity_channel
;
556 static int hf_ieee1905_multi_ap_version
;
557 static int hf_ieee1905_max_total_serv_prio_rules
;
558 static int hf_ieee1905_r2_ap_capa_reserved
;
559 static int hf_ieee1905_r2_ap_capa_flags
;
560 static int hf_ieee1905_byte_counter_units
;
561 static int hf_ieee1905_ctag_service_prio_flag
;
562 static int hf_ieee1905_dpp_onboarding_flag
;
563 static int hf_ieee1905_traffic_separation_flag
;
564 static int hf_ieee1905_r2_ap_capa_flags_reserved
;
565 static int hf_ieee1905_max_vid_count
;
566 static int hf_ieee1905_default_802_1q_settings_primary_vlan
;
567 static int hf_ieee1905_default_802_1q_settings_flags
;
568 static int hf_ieee1905_default_802_1q_settings_default_pcp
;
569 static int hf_ieee1905_default_802_1q_settings_reserved
;
570 static int hf_ieee1905_ap_radio_advanced_capa_radio_id
;
571 static int hf_ieee1905_radio_advanced_capa_flags
;
572 static int hf_ieee1905_traffic_separation_policy_num_ssids
;
573 static int hf_ieee1905_traffic_separation_policy_ssid_len
;
574 static int hf_ieee1905_traffic_separation_policy_ssid
;
575 static int hf_ieee1905_traffic_separation_policy_vlanid
;
576 static int hf_ieee1905_bss_config_report_radio_count
;
577 static int hf_ieee1905_bss_config_report_radio_id
;
578 static int hf_ieee1905_bss_config_report_flags
;
579 static int hf_ieee1905_bss_config_report_backhaul_bss
;
580 static int hf_ieee1905_bss_config_report_fronthaul_bss
;
581 static int hf_ieee1905_bss_config_report_r1_disallowed_status
;
582 static int hf_ieee1905_bss_config_report_r2_disallowed_status
;
583 static int hf_ieee1905_bss_config_report_multiple_bssid_set
;
584 static int hf_ieee1905_bss_config_report_transmitted_bssid
;
585 static int hf_ieee1905_bss_config_report_reserved
;
586 static int hf_ieee1905_bss_config_report_res
;
587 static int hf_ieee1905_bss_config_report_bss_cnt
;
588 static int hf_ieee1902_bss_config_report_mac
;
589 static int hf_ieee1902_bss_config_report_ssid_len
;
590 static int hf_ieee1905_bss_config_report_ssid
;
591 static int hf_ieee1905_bssid_tlv_bssid
;
592 static int hf_ieee1905_service_prio_rule_id
;
593 static int hf_ieee1905_service_prio_rule_flags
;
594 static int hf_ieee1905_service_prio_rule_add_remove_filter_bit
;
595 static int hf_ieee1905_service_prio_rule_flags_reserved
;
596 static int hf_ieee1905_service_prio_match_flags
;
597 static int hf_ieee1905_service_prio_rule_precedence
;
598 static int hf_ieee1905_service_prio_rule_output
;
599 static int hf_ieee1905_service_prio_rule_match_always
;
600 static int hf_ieee1905_service_prio_rule_match_reserved
;
601 static int hf_ieee1905_service_prio_rule_match_up_in_qos
;
602 static int hf_ieee1905_service_prio_rule_match_up_control_match
;
603 static int hf_ieee1905_service_prio_rule_match_source_mac
;
604 static int hf_ieee1905_service_prio_rule_match_source_mac_sense
;
605 static int hf_ieee1905_service_prio_rule_match_dest_mac
;
606 static int hf_ieee1905_service_prio_rule_match_dest_mac_sense
;
607 static int hf_ieee1905_service_prio_rule_up_control
;
608 static int hf_ieee1905_service_prio_rule_source_mac
;
609 static int hf_ieee1905_service_prio_rule_dest_mac
;
610 static int hf_ieee1905_dscp_mapping_table_val
;
611 static int hf_ieee1905_r2_error_reason_code
;
612 static int hf_ieee1905_r2_error_bssid
;
613 static int hf_ieee1905_ap_radio_advance_capa_backhaul_bss_traffic_sep
;
614 static int hf_ieee1905_ap_radio_advance_capa_combined_r1_r2_backhaul
;
615 static int hf_ieee1905_ap_radio_advance_capa_reserved
;
616 static int hf_ieee1905_assoc_status_notif_num_bssid
;
617 static int hf_ieee1905_assoc_status_notif_bssid
;
618 static int hf_ieee1905_assoc_status_notif_status
;
619 static int hf_ieee1905_source_info_mac_addr
;
620 static int hf_ieee1905_tunneled_message_type
;
621 static int hf_ieee1905_tunneled_data
;
622 static int hf_ieee1905_status_code_status
;
623 static int hf_ieee1905_disassociation_reason_code
;
624 static int hf_ieee1905_backhaul_sta_radio_id
;
625 static int hf_ieee1905_backhaul_sta_radio_capabilities
;
626 static int hf_ieee1905_backhaul_sta_radio_capa_mac_included
;
627 static int hf_ieee1905_backhaul_sta_radio_capa_reserved
;
628 static int hf_ieee1905_backhaul_sta_addr
;
629 static int hf_ieee1905_backhaul_akm_suite_capa_count
;
630 static int hf_ieee1905_akm_backhaul_suite_oui
;
631 static int hf_ieee1905_akm_backhaul_suite_type
;
632 static int hf_ieee1905_fronthaul_akm_suite_capa_count
;
633 static int hf_ieee1905_akm_fronthaul_suite_oui
;
634 static int hf_ieee1905_akm_fronthaul_suite_type
;
635 static int hf_ieee1905_encap_dpp_flags
;
636 static int hf_ieee1905_dpp_encap_enrollee_mac_present
;
637 static int hf_ieee1905_dpp_encap_reserved
;
638 static int hf_ieee1905_dpp_encap_frame_type_flag
;
639 static int hf_ieee1905_dpp_encap_reserved2
;
640 static int hf_ieee1905_encap_dpp_sta_mac
;
641 static int hf_ieee1905_dpp_encap_frame_type
;
642 static int hf_ieee1905_dpp_encap_frame_length
;
643 static int hf_ieee1905_dpp_encap_dpp_oui
;
644 static int hf_ieee1905_dpp_encap_public_action
;
645 static int hf_ieee1905_dpp_encap_dpp_subtype
;
646 static int hf_ieee1905_dpp_bootstrapping_uri_radio_id
;
647 static int hf_ieee1905_dpp_bootstrapping_uri_local_mac_addr
;
648 static int hf_ieee1905_dpp_bootstrapping_uri_bsta_mac_addr
;
649 static int hf_ieee1905_dpp_bootstrapping_uri_received
;
650 static int hf_ieee1905_dpp_advertise_cce_flag
;
651 static int hf_ieee1905_dpp_chirp_value_flags
;
652 static int hf_ieee1905_dpp_chirp_enrollee_mac_addr_present
;
653 static int hf_ieee1905_dpp_chirp_hash_validity
;
654 static int hf_ieee1905_dpp_chirp_reserved
;
655 static int hf_ieee1905_dpp_chirp_enrollee_mac_addr
;
656 static int hf_ieee1905_dpp_chirp_value_hash_length
;
657 static int hf_ieee1905_dpp_chirp_value_hash_value
;
658 static int hf_ieee1905_dev_inventory_lsn
;
659 static int hf_ieee1905_dev_inventory_serial
;
660 static int hf_ieee1905_dev_inventory_lsv
;
661 static int hf_ieee1905_dev_inventory_sw_vers
;
662 static int hf_ieee1905_dev_inventory_lee
;
663 static int hf_ieee1905_dev_inventory_exec_env
;
664 static int hf_ieee1905_dev_inventory_num_radios
;
665 static int hf_ieee1905_dev_inventory_radio_id
;
666 static int hf_ieee1905_dev_inventory_lcv
;
667 static int hf_ieee1905_dev_inventory_chp_ven
;
668 static int hf_ieee1905_r2_steering_req_src_bssid
;
669 static int hf_ieee1905_r2_steering_req_flags
;
670 static int hf_ieee1905_r2_steering_request_mode_flag
;
671 static int hf_ieee1905_r2_btm_disassoc_imminent_flag
;
672 static int hf_ieee1905_r2_btm_abridged_flag
;
673 static int hf_ieee1905_r2_steering_req_reserved
;
674 static int hf_ieee1905_r2_steering_op_window
;
675 static int hf_ieee1905_r2_steering_btm_dissasoc_tmr
;
676 static int hf_ieee1905_r2_steering_sta_count
;
677 static int hf_ieee1905_r2_steering_sta_mac
;
678 static int hf_ieee1905_r2_steering_target_count
;
679 static int hf_ieee1905_r2_steering_target_bssid
;
680 static int hf_ieee1905_r2_steering_target_op_class
;
681 static int hf_ieee1905_r2_steering_target_channel
;
682 static int hf_ieee1905_r2_steering_reason
;
683 static int hf_ieee1905_metric_collection_interval
;
684 static int hf_ieee1905_max_reporting_rate
;
685 static int hf_ieee1905_bss_configuration_request
;
686 static int hf_ieee1905_bss_configuration_response
;
687 static int hf_ieee1905_dpp_message_public_action
;
688 static int hf_ieee1905_spatial_reuse_req_radio_id
;
689 static int hf_ieee1905_spatial_reuse_color_flags
;
690 static int hf_ieee1905_spatial_reuse_reserved
;
691 static int hf_ieee1905_spatial_reuse_bss_color
;
692 static int hf_ieee1905_spatial_reuse_hesiga_flags
;
693 static int hf_ieee1905_spatial_reuse_reserved2
;
694 static int hf_ieee1905_spatial_reuse_hesiga_value15_allowed
;
695 static int hf_ieee1905_spatial_reuse_srg_info_valid
;
696 static int hf_ieee1905_spatial_reuse_non_srg_offset_valid
;
697 static int hf_ieee1905_spatial_reuse_reserved3
;
698 static int hf_ieee1905_spatial_reuse_psr_disallowed
;
699 static int hf_ieee1905_spatial_reuse_non_srg_obsspd_max_offset
;
700 static int hf_ieee1905_spatial_reuse_not_valid1
;
701 static int hf_ieee1905_spatial_reuse_srg_obsspd_min_offset
;
702 static int hf_ieee1905_spatial_reuse_srg_obsspd_max_offset
;
703 static int hf_ieee1905_spatial_reuse_srg_bss_color_bitmap
;
704 static int hf_ieee1905_spatial_reuse_srg_partial_bssid_bitmap
;
705 static int hf_ieee1905_spatial_reuse_not_valid2
;
706 static int hf_ieee1905_spatial_reuse_not_valid3
;
707 static int hf_ieee1905_spatial_reuse_not_valid4
;
708 static int hf_ieee1905_spatial_reuse_not_valid5
;
709 static int hf_ieee1905_spatial_reuse_reserved4
;
710 static int hf_ieee1905_spatial_reuse_rep_radio_id
;
711 static int hf_ieee1905_spatial_reuse_rep_color_flags
;
712 static int hf_ieee1905_spatial_reuse_rep_reserved
;
713 static int hf_ieee1905_spatial_reuse_rep_partial_bss_color
;
714 static int hf_ieee1905_spatial_reuse_rep_bss_color
;
715 static int hf_ieee1905_spatial_reuse_rep_hesiga_flags
;
716 static int hf_ieee1905_spatial_reuse_rep_reserved2
;
717 static int hf_ieee1905_spatial_reuse_rep_hesiga_value15_allowed
;
718 static int hf_ieee1905_spatial_reuse_rep_srg_info_valid
;
719 static int hf_ieee1905_spatial_reuse_rep_non_srg_offset_valid
;
720 static int hf_ieee1905_spatial_reuse_rep_reserved3
;
721 static int hf_ieee1905_spatial_reuse_rep_psr_disallowed
;
722 static int hf_ieee1905_spatial_reuse_rep_non_srg_obsspd_max_offset
;
723 static int hf_ieee1905_spatial_reuse_rep_not_valid1
;
724 static int hf_ieee1905_spatial_reuse_rep_srg_obsspd_min_offset
;
725 static int hf_ieee1905_spatial_reuse_rep_srg_obsspd_max_offset
;
726 static int hf_ieee1905_spatial_reuse_rep_srg_bss_color_bitmap
;
727 static int hf_ieee1905_spatial_reuse_rep_srg_partial_bssid_bitmap
;
728 static int hf_ieee1905_spatial_reuse_rep_not_valid2
;
729 static int hf_ieee1905_spatial_reuse_rep_not_valid3
;
730 static int hf_ieee1905_spatial_reuse_rep_not_valid4
;
731 static int hf_ieee1905_spatial_reuse_rep_not_valid5
;
732 static int hf_ieee1905_spatial_reuse_rep_nbor_bss_color_bitmap
;
733 static int hf_ieee1905_spatial_reuse_rep_reserved4
;
734 static int hf_ieee1905_spatial_reuse_config_radio_id
;
735 static int hf_ieee1905_spatial_reuse_config_response
;
736 static int hf_ieee1905_qos_mgmt_policy_mscs_disallowed
;
737 static int hf_ieee1905_qos_mgmt_mscs_disallow_sta
;
738 static int hf_ieee1905_qos_mgmt_policy_scs_disallowed
;
739 static int hf_ieee1905_qos_mgmt_scs_disallow_sta
;
740 static int hf_ieee1905_qos_mgmt_desc_qmid
;
741 static int hf_ieee1905_qos_mgmt_desc_bssid
;
742 static int hf_ieee1905_qos_mgmt_desc_client_mac
;
743 static int hf_ieee1905_controller_capa_flags
;
744 static int hf_ieee1905_controller_capa_reserved
;
745 static int hf_ieee1905_controller_capa_early_ap_capa
;
746 static int hf_ieee1905_controller_capa_kbmb_counter
;
747 static int hf_ieee1905_wifi_7_agent_capabilities_max_num_mlds
;
748 static int hf_ieee1905_wifi_7_agent_capabilities_flags
;
749 static int hf_ieee1905_wifi_7_agent_capabilities_flags_sta_max_links
;
750 static int hf_ieee1905_wifi_7_agent_capabilities_flags_ap_max_links
;
751 static int hf_ieee1905_wifi_7_agent_capabilities_flags_ttl_mapping_cap
;
752 static int hf_ieee1905_wifi_7_agent_capabilities_flags_reserved
;
753 static int hf_ieee1905_wifi_7_agent_capabilities_reserved
;
754 static int hf_ieee1905_wifi_7_agent_capabilities_radio_num
;
755 static int hf_ieee1905_wifi_7_agent_capabilities_radio_id
;
756 static int hf_ieee1905_wifi_7_agent_capabilities_radio_reserved
;
757 static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags
;
758 static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_str_support
;
759 static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_nstr_support
;
760 static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_emlsr_support
;
761 static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_emlmr_support
;
762 static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_reserved1
;
763 static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_str_support
;
764 static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_nstr_support
;
765 static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_emlsr_support
;
766 static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_emlmr_support
;
767 static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_reserved2
;
768 static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_str_records
;
769 static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_nstr_records
;
770 static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_emlsr_records
;
771 static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_emlmr_records
;
772 static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_str_records
;
773 static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_nstr_records
;
774 static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_emlsr_records
;
775 static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_emlmr_records
;
776 static int hf_ieee1905_wifi_7_agent_capabilities_radio_record_id
;
777 static int hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags
;
778 static int hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags_freq_separation
;
779 static int hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags_reserved
;
780 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_num
;
781 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags
;
782 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags_ap_mld_mac_addr_valid
;
783 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags_reserved
;
784 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_ssid_len
;
785 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_ssid
;
786 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_mac_addr
;
787 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2
;
788 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_str
;
789 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_nstr
;
790 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_emlsr
;
791 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_emlmr
;
792 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_reserved
;
793 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_reserved
;
794 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_num
;
795 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags
;
796 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_affiliated_ap_mac_addr_valid
;
797 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_link_id_valid
;
798 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_reserved
;
799 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_radio_id
;
800 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_mac_addr
;
801 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_link_id
;
802 static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_reserved
;
803 static int hf_ieee1905_backhaul_sta_mld_configuration_flags
;
804 static int hf_ieee1905_backhaul_sta_mld_configuration_flags_bsta_mld_mac_addr_valid
;
805 static int hf_ieee1905_backhaul_sta_mld_configuration_flags_ap_mld_mac_addr_valid
;
806 static int hf_ieee1905_backhaul_sta_mld_configuration_flags_reserved
;
807 static int hf_ieee1905_backhaul_sta_mld_configuration_bsta_mld_mac_addr
;
808 static int hf_ieee1905_backhaul_sta_mld_configuration_ap_mld_mac_addr
;
809 static int hf_ieee1905_backhaul_sta_mld_configuration_flags2
;
810 static int hf_ieee1905_backhaul_sta_mld_configuration_flags2_str
;
811 static int hf_ieee1905_backhaul_sta_mld_configuration_flags2_nstr
;
812 static int hf_ieee1905_backhaul_sta_mld_configuration_flags2_emlsr
;
813 static int hf_ieee1905_backhaul_sta_mld_configuration_flags2_emlmr
;
814 static int hf_ieee1905_backhaul_sta_mld_configuration_flags2_reserved
;
815 static int hf_ieee1905_backhaul_sta_mld_configuration_reserved
;
816 static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_num
;
817 static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags
;
818 static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags_affiliated_bsta_mac_addr_valid
;
819 static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags_reserved
;
820 static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_radio_id
;
821 static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_mac_addr
;
822 static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_reserved
;
823 static int hf_ieee1905_associated_sta_mld_configuration_sta_mld_mac_addr
;
824 static int hf_ieee1905_associated_sta_mld_configuration_ap_mld_mac_addr
;
825 static int hf_ieee1905_associated_sta_mld_configuration_flags
;
826 static int hf_ieee1905_associated_sta_mld_configuration_flags_str
;
827 static int hf_ieee1905_associated_sta_mld_configuration_flags_nstr
;
828 static int hf_ieee1905_associated_sta_mld_configuration_flags_emlsr
;
829 static int hf_ieee1905_associated_sta_mld_configuration_flags_emlmr
;
830 static int hf_ieee1905_associated_sta_mld_configuration_flags_reserved
;
831 static int hf_ieee1905_associated_sta_mld_configuration_reserved
;
832 static int hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_num
;
833 static int hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_bssid
;
834 static int hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_mac_addr
;
835 static int hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_reserved
;
836 static int hf_ieee1905_affiliated_sta_metrics_sta_mac_addr
;
837 static int hf_ieee1905_affiliated_sta_metrics_bytes_sent
;
838 static int hf_ieee1905_affiliated_sta_metrics_bytes_rcvd
;
839 static int hf_ieee1905_affiliated_sta_metrics_packets_sent
;
840 static int hf_ieee1905_affiliated_sta_metrics_packets_rcvd
;
841 static int hf_ieee1905_affiliated_sta_metrics_packets_sent_errors
;
842 static int hf_ieee1905_affiliated_sta_metrics_reserved
;
843 static int hf_ieee1905_affiliated_ap_metrics_bssid
;
844 static int hf_ieee1905_affiliated_ap_metrics_packets_sent
;
845 static int hf_ieee1905_affiliated_ap_metrics_packets_rcvd
;
846 static int hf_ieee1905_affiliated_ap_metrics_packets_sent_errors
;
847 static int hf_ieee1905_affiliated_ap_metrics_ucast_bytes_sent
;
848 static int hf_ieee1905_affiliated_ap_metrics_ucast_bytes_rcvd
;
849 static int hf_ieee1905_affiliated_ap_metrics_mcast_bytes_sent
;
850 static int hf_ieee1905_affiliated_ap_metrics_mcast_bytes_rcvd
;
851 static int hf_ieee1905_affiliated_ap_metrics_bcast_bytes_sent
;
852 static int hf_ieee1905_affiliated_ap_metrics_bcast_bytes_rcvd
;
853 static int hf_ieee1905_affiliated_ap_metrics_reserved
;
854 static int hf_ieee1905_eht_operations_reserved
;
855 static int hf_ieee1905_eht_operations_radio_num
;
856 static int hf_ieee1905_eht_operations_radio_id
;
857 static int hf_ieee1905_eht_operations_radio_reserved
;
858 static int hf_ieee1905_eht_operations_radio_bss_num
;
859 static int hf_ieee1905_eht_operations_radio_bss_bssid
;
860 static int hf_ieee1905_eht_operations_radio_bss_reserved
;
861 static int hf_ieee1905_eht_operations_radio_bss_flags
;
862 static int hf_ieee1905_eht_operations_radio_bss_flags_eht_operation_information_valid
;
863 static int hf_ieee1905_eht_operations_radio_bss_flags_disabled_subchannel_valid
;
864 static int hf_ieee1905_eht_operations_radio_bss_flags_eht_default_pe_duration
;
865 static int hf_ieee1905_eht_operations_radio_bss_flags_group_addr_bu_indication_limit
;
866 static int hf_ieee1905_eht_operations_radio_bss_flags_group_addr_bu_indication_exponent
;
867 static int hf_ieee1905_eht_operations_radio_bss_flags_reserved
;
868 static int hf_ieee1905_eht_operations_radio_bss_basic_eht_nss_mcs_set
;
869 static int hf_ieee1905_eht_operations_radio_bss_control
;
870 static int hf_ieee1905_eht_operations_radio_bss_ccfs0
;
871 static int hf_ieee1905_eht_operations_radio_bss_ccfs1
;
872 static int hf_ieee1905_eht_operations_radio_bss_disabled_subchannel_bitmap
;
873 static int hf_ieee1905_available_spectrum_inquiry_request_object
;
874 static int hf_ieee1905_available_spectrum_inquiry_response_object
;
876 static int ett_ieee1905
;
877 static int ett_ieee1905_flags
;
878 static int ett_ieee1905_tlv_len
;
880 static int ett_device_information_list
;
881 static int ett_device_information_tree
;
882 static int ett_media_type
;
883 static int ett_bridging_tuples_list
;
884 static int ett_bridging_mac_list
;
885 static int ett_non_1905_neighbor_list
;
886 static int ett_1905_neighbor_list
;
887 static int ett_ieee1905_neighbor_flags
;
888 static int ett_media_type_list
;
889 static int ett_media_item
;
890 static int ett_local_interface_list
;
891 static int ett_local_interface_info
;
892 static int ett_ipv4_list
;
893 static int ett_ipv4_info
;
894 static int ett_ipv4_type_addr_list
;
895 static int ett_ipv4_addr_info
;
896 static int ett_ipv6_list
;
897 static int ett_ipv6_info
;
898 static int ett_ipv6_type_addr_list
;
899 static int ett_ipv6_addr_info
;
900 static int ett_push_button_phy_list
;
901 static int ett_push_button_phy_info
;
902 static int ett_power_off_info
;
903 static int ett_power_change_list
;
904 static int ett_power_change_info
;
905 static int ett_power_status_list
;
906 static int ett_power_status_info
;
907 static int ett_l2_local_intf_list
;
908 static int ett_l2_neighbor_device_info
;
909 static int ett_l2_neighbor_dev_list
;
910 static int ett_l2_neighbor_dev_tree
;
911 static int ett_supported_service_list
;
912 static int ett_searched_service_list
;
913 static int ett_ap_operational_bss_list
;
914 static int ett_ap_operational_bss_tree
;
915 static int ett_ap_operational_bss_intf
;
916 static int ett_ap_operational_bss_intf_list
;
917 static int ett_ap_operational_bss_intf_tree
;
918 static int ett_ieee1905_capabilities_flags
;
919 static int ett_ieee1905_unsuccessful_associations
;
920 static int ett_assoc_control_list
;
921 static int ett_ieee1905_steering_request_flags
;
922 static int ett_ieee1905_association_event_flags
;
923 static int ett_client_capability_ies
;
924 static int ett_radio_basic_class_list
;
925 static int ett_ap_radio_basic_cap_class_tree
;
926 static int ett_radio_basic_non_op_list
;
927 static int ett_ht_cap_flags
;
928 static int ett_vht_cap_flags
;
929 static int ett_ieee1905_ap_vht_tx_mcs_set
;
930 static int ett_ieee1905_ap_vht_rx_mcs_set
;
931 static int ett_assoc_clients_bss_list
;
932 static int ett_assoc_client_bss_tree
;
933 static int ett_assoc_client_list
;
934 static int ett_assoc_client_tree
;
935 static int ett_channel_preference_class_list
;
936 static int ett_ap_channel_preference_class_tree
;
937 static int ett_channel_pref_channel_list
;
938 static int ett_ieee1905_channel_prefs_flags
;
939 static int ett_op_channel_report_class_tree
;
940 static int ett_op_channel_report_class_list
;
941 static int ett_sta_link_metrics_query_channel_list
;
942 static int ett_sta_link_link_mac_addr_list
;
943 static int ett_metric_reporting_policy_list
;
944 static int ett_metric_reporting_policy_tree
;
945 static int ett_metric_policy_flags
;
946 static int ett_ap_metric_query_bssid_list
;
947 static int ett_ieee1905_ap_metrics_flags
;
948 static int ett_sta_list_metrics_bss_list
;
949 static int ett_sta_list_metrics_bss_tree
;
950 static int ett_sta_wf6_status_report_tid_list
;
951 static int ett_sta_wf6_status_report_tid_tree
;
952 static int ett_sta_extended_link_metrics_list
;
953 static int ett_sta_extended_link_metrics_tree
;
954 static int ett_ap_he_mcs_set
;
955 static int ett_ap_he_cap_flags
;
956 static int ett_ieee1905_ap_he_tx_mcs_set
;
957 static int ett_ieee1905_ap_he_rx_mcs_set
;
958 static int ett_steering_policy_disallowed_list
;
959 static int ett_btm_steering_policy_disallowed_list
;
960 static int ett_btm_steering_radio_list
;
961 static int ett_radio_restriction_op_class_list
;
962 static int ett_radio_restriction_op_class_tree
;
963 static int ett_radio_restriction_channel_list
;
964 static int ett_radio_restriction_channel_tree
;
965 static int ett_unassoc_sta_link_metric_list
;
966 static int ett_unassoc_sta_link_metric_tree
;
967 static int ett_beacon_metrics_query_list
;
968 static int ett_beacon_metrics_query_tree
;
969 static int ett_beacon_metrics_query_channel_list
;
970 static int ett_beacon_report_subelement_list
;
971 static int ett_beacon_report_sub_element_tree
;
972 static int ett_beacon_metrics_response_report_list
;
973 static int ett_beacon_metrics_response_report_tree
;
974 static int ett_ieee1905_beacon_reported_flags
;
975 static int ett_channel_scan_rep_policy
;
976 static int ett_channel_scan_capa_radio_list
;
977 static int ett_channel_scan_capa_radio
;
978 static int ett_channel_scan_capa_flags
;
979 static int ett_channel_scan_capa_class_list
;
980 static int ett_channel_scan_capa_class
;
981 static int ett_channel_scan_capa_channels
;
982 static int ett_channel_scan_request_flags
;
983 static int ett_channel_scan_request_radio_list
;
984 static int ett_channel_scan_request_radio
;
985 static int ett_channel_scan_request_class_list
;
986 static int ett_channel_scan_request_class
;
987 static int ett_channel_scan_request_channels
;
988 static int ett_channel_scan_result_neigh_list
;
989 static int ett_channel_scan_result_neigh_flags
;
990 static int ett_channel_scan_result_neigh
;
991 static int ett_channel_scan_result_flags
;
992 static int ett_ap_wf6_role_list
;
993 static int ett_ap_wf6_role_tree
;
994 static int ett_ap_wf6_agent_role_flags
;
995 static int ett_ap_wf6_supported_flags
;
996 static int ett_ap_wf6_mimo_max_flags
;
997 static int ett_ap_wf6_gen_flags
;
998 static int ett_cac_request_flags
;
999 static int ett_cac_request_radio_list
;
1000 static int ett_cac_request_radio
;
1001 static int ett_cac_terminate_radio_list
;
1002 static int ett_cac_terminate_radio
;
1003 static int ett_cac_completion_radio_list
;
1004 static int ett_cac_completion_radio
;
1005 static int ett_cac_completion_radar_list
;
1006 static int ett_cac_completion_radar
;
1007 static int ett_cac_status_rpt_avail_list
;
1008 static int ett_cac_status_rpt_avail_chan
;
1009 static int ett_cac_status_rpt_non_occupy_list
;
1010 static int ett_cac_status_rpt_unocc_chan
;
1011 static int ett_cac_status_rpt_active_cac_list
;
1012 static int ett_cac_status_rpt_active_cac_tree
;
1013 static int ett_cac_capabilities_radio_list
;
1014 static int ett_cac_capabilities_radio_tree
;
1015 static int ett_cac_capabilities_type_list
;
1016 static int ett_cac_capabilities_type_tree
;
1017 static int ett_cac_capabilities_class_list
;
1018 static int ett_cac_capabilities_class_tree
;
1019 static int ett_cac_capabilities_channel_list
;
1020 static int ett_cac_capabilities_channel
;
1021 static int ett_r2_ap_capa_flags
;
1022 static int ett_edge_interface_list
;
1023 static int ett_radio_advanced_capa_flags
;
1024 static int ett_ap_operational_backhaul_bss_tree
;
1025 static int ett_ap_operational_backhaul_bss_intf_list
;
1026 static int ett_default_802_1q_settings_flags
;
1027 static int ett_traffic_separation_ssid_list
;
1028 static int ett_traffic_separation_ssid
;
1029 static int ett_bss_config_report_list
;
1030 static int ett_bss_config_report_tree
;
1031 static int ett_bss_config_report_bss_list
;
1032 static int ett_bss_config_report_bss_tree
;
1033 static int ett_bss_config_report_flags
;
1034 static int ett_ethernet_config_policy_list
;
1035 static int ett_ethernet_config_policy
;
1036 static int ett_ethernet_config_policy_flags
;
1037 static int ett_ieee1905_service_prio_rule_flags
;
1038 static int ett_ieee1905_service_prio_rule_match_flags
;
1039 static int ett_backhaul_sta_radio_capa_flags
;
1040 static int ett_assoc_status_notif_bssid_list
;
1041 static int ett_assoc_status_notif_bssid_tree
;
1042 static int ett_akm_suite_list
;
1043 static int ett_akm_suite
;
1044 static int ett_backhaul_akm_suite_list
;
1045 static int ett_backhaul_akm_suite
;
1046 static int ett_fronthaul_akm_suite_list
;
1047 static int ett_fronthaul_akm_suite
;
1048 static int ett_1905_encap_dpp_flags
;
1049 static int ett_1905_encap_dpp_classes
;
1050 static int ett_1905_encap_dpp_op_class_tree
;
1051 static int ett_1905_encap_dpp_channel_list
;
1052 static int ett_ieee1905_dpp_chirp
;
1053 static int ett_device_inventory_radio_list
;
1054 static int ett_device_inventory_radio_tree
;
1055 static int ett_r2_steering_sta_list
;
1056 static int ett_r2_steering_target_list
;
1057 static int ett_r2_steering_target
;
1058 static int ett_mic_group_temporal_key
;
1059 static int ett_ieee1905_spatial_reuse_color
;
1060 static int ett_ieee1905_spatial_reuse_hesiga
;
1061 static int ett_ieee1905_spatial_reuse_rep_color
;
1062 static int ett_ieee1905_spatial_reuse_rep_hesiga
;
1063 static int ett_qos_mgmt_policy_mscs_list
;
1064 static int ett_qos_mgmt_policy_scs_list
;
1065 static int ett_ieee1905_controller_capa
;
1066 static int ett_wifi_7_agent_capabilities_flags
;
1067 static int ett_wifi_7_agent_capabilities_radio_list
;
1068 static int ett_wifi_7_agent_capabilities_radio
;
1069 static int ett_wifi_7_agent_capabilities_radio_flags
;
1070 static int ett_wifi_7_agent_capabilities_radio_record_list
;
1071 static int ett_wifi_7_agent_capabilities_radio_record
;
1072 static int ett_wifi_7_agent_capabilities_radio_record_flags
;
1073 static int ett_agent_ap_mld_configuration_ap_mld_list
;
1074 static int ett_agent_ap_mld_configuration_ap_mld
;
1075 static int ett_agent_ap_mld_configuration_ap_mld_flags
;
1076 static int ett_agent_ap_mld_configuration_ap_mld_flags2
;
1077 static int ett_agent_ap_mld_configuration_ap_mld_affiliated_ap_list
;
1078 static int ett_agent_ap_mld_configuration_ap_mld_affiliated_ap
;
1079 static int ett_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags
;
1080 static int ett_backhaul_sta_mld_configuration_flags
;
1081 static int ett_backhaul_sta_mld_configuration_flags2
;
1082 static int ett_backhaul_sta_mld_configuration_affiliated_bsta_list
;
1083 static int ett_backhaul_sta_mld_configuration_affiliated_bsta
;
1084 static int ett_backhaul_sta_mld_configuration_affiliated_bsta_flags
;
1085 static int ett_associated_sta_mld_configuration_flags
;
1086 static int ett_associated_sta_mld_configuration_affiliated_sta_list
;
1087 static int ett_associated_sta_mld_configuration_affiliated_sta
;
1088 static int ett_eht_operations_radio_list
;
1089 static int ett_eht_operations_radio
;
1090 static int ett_eht_operations_radio_bss_list
;
1091 static int ett_eht_operations_radio_bss
;
1092 static int ett_eht_operations_radio_bss_flags
;
1094 static int ett_ieee1905_fragment
;
1095 static int ett_ieee1905_fragments
;
1097 static expert_field ei_ieee1905_malformed_tlv
;
1098 static expert_field ei_ieee1905_extraneous_tlv_data
;
1100 #define TOPOLOGY_DISCOVERY_MESSAGE 0x0000
1101 #define TOPOLOGY_NOTIFICATION_MESSAGE 0x0001
1102 #define TOPOLOGY_QUERY_MESSAGE 0x0002
1103 #define TOPOLOGY_RESPONSE_MESSAGE 0x0003
1104 #define VENDOR_SPECIFIC_MESSAGE 0x0004
1105 #define LINK_METRIC_QUERY_MESSAGE 0x0005
1106 #define LINK_METRIC_RESPONSE_MESSAGE 0x0006
1107 #define AP_AUTOCONFIGURATION_SEARCH_MESSAGE 0x0007
1108 #define AP_AUTOCONFIGURATION_RESPONSE_MESSAGE 0x0008
1109 #define AP_AUTOCONFIGURATION_WSC_MESSAGE 0x0009
1110 #define AP_AUTOCONFIGURATION_RENEW_MESSAGE 0x000A
1111 #define IEEE1905_PUSH_BUTTON_EVENT_NOTIFICATION_MESSAGE 0x000B
1112 #define IEEE1905_PUSH_BUTTON_JOIN_NOTIFICATION_MESSAGE 0x000C
1113 #define HIGHER_LAYER_QUERY_MESSAGE 0x000D
1114 #define HIGHER_LAYER_RESPONSE_MESSAGE 0x000E
1115 #define INTERFACE_POWER_CHANGE_REQUEST_MESSAGE 0x000F
1116 #define INTERFACE_POWER_CHANGE_RESPONSE_MESSAGE 0x0010
1117 #define GENERIC_PHY_QUERY_MESSAGE 0x0011
1118 #define GENERIC_PHY_RESPONSE_MESSAGE 0x0012
1119 #define IEEE1905_ACK_MESSAGE 0x8000
1120 #define AP_CAPABILITY_QUERY_MESSAGE 0x8001
1121 #define AP_CAPABILITY_REPORT_MESSAGE 0x8002
1122 #define MULTI_AP_POLICY_CONFIG_REQUEST_MESSAGE 0x8003
1123 #define CHANNEL_PREFERENCE_QUERY_MESSAGE 0x8004
1124 #define CHANNEL_PREFERENCE_REPORT_MESSAGE 0x8005
1125 #define CHANNEL_SELECTION_REQUEST_MESSAGE 0x8006
1126 #define CHANNEL_SELECTION_RESPONSE_MESSAGE 0x8007
1127 #define OPERATING_CHANNEL_REPORT_MESSAGE 0x8008
1128 #define CLIENT_CAPABILITIES_QUERY_MESSAGE 0x8009
1129 #define CLIENT_CAPABILITIES_REPORT_MESSAGE 0x800A
1130 #define AP_METRICS_QUERY_MESSAGE 0x800B
1131 #define AP_METRICS_RESPONSE_MESSAGE 0x800C
1132 #define ASSOCIATED_STA_LINK_METRICS_QUERY_MESSAGE 0x800D
1133 #define ASSOCIATED_STA_LINK_METRICS_RESPONSE_MESSAGE 0x800E
1134 #define UNASSOCIATED_STA_LINK_METRICS_QUERY_MESSAGE 0x800F
1135 #define UNASSOCIATED_STA_LINK_METRICS_RESPONSE_MESSAGE 0x8010
1136 #define BEACON_METRICS_QUERY_MESSAGE 0x8011
1137 #define BEACON_METRICS_RESPONSE_METRICS 0x8012
1138 #define COMBINED_INFRASTRUCTURE_METRICS_MESSAGE 0x8013
1139 #define CLIENT_STEERING_REQUEST_MESSAGE 0x8014
1140 #define CLIENT_STEERING_BTM_REPORT_MESSAGE 0x8015
1141 #define CLIENT_ASSOCIATION_CONTROL_REQUEST_MESSAGE 0x8016
1142 #define STEERING_COMPLETED_MESSAGE 0x8017
1143 #define HIGHER_LAYER_DATA_MESSAGE 0x8018
1144 #define BACKHAUL_STEERING_REQUEST_MESSAGE 0x8019
1145 #define BACKHAUL_STEERING_RESPONSE_MESSAGE 0x801A
1146 #define CHANNEL_SCAN_REQUEST_MESSAGE 0x801B
1147 #define CHANNEL_SCAN_REPORT_MESSAGE 0x801C
1148 #define DPP_CCE_INDICATION_MESSAGE 0x801D
1149 #define IEEE1905_REKEY_REQUEST_MESSAGE 0x801E
1150 #define IEEE1905_DECRYPTION_FAILURE 0x801F
1151 #define CAC_REQUEST_MESSAGE 0x8020
1152 #define CAC_TERMINATION_MESSAGE 0x8021
1153 #define CLIENT_DISASSOCIATION_STATS_MESSAGE 0x8022
1154 #define SERVICE_PPRIORITIZATION_REQUEST 0x8023
1155 #define ERROR_RESPONSE_MESSAGE 0x8024
1156 #define ASSOCIATION_STATUS_NOTIFICATION_MESSAGE 0x8025
1157 #define TUNNELLED_MESSAGE 0x8026
1158 #define BACKHAUL_STA_CAPABILITY_QUERY_MESSAGE 0x8027
1159 #define BACKHAUL_STA_CAPABILITY_REPORT_MESSAGE 0x8028
1160 #define PROXIED_ENCAP_DPP_MESSAGE 0x8029
1161 #define DIRECT_ENCAP_DPP_MESSAGE 0x802a
1162 #define RECONFIGURATION_TRIGGER_MESSAGE 0x802B
1163 #define BSS_CONFIGURATION_REQUEST_MESSAGE 0x802C
1164 #define BSS_CONFIGURATION_RESPONSE_MESSAGE 0x802D
1165 #define BSS_CONFIGURATION_RESULT_MESSAGE 0x802E
1166 #define CHIRP_NOTIFICATION_MESSAGE 0x802F
1167 #define IEEE1905_ENCAP_EAPOL_MESSAGE 0x8030
1168 #define DPP_BOOTSTRAPPING_URI_NOTIFICATION_MESSAGE 0x8031
1169 #define ANTICIPATED_CHANNEL_PREFERENCE_MESSAGE 0x8032
1170 #define FAILED_CONNECTION_MESSAGE 0x8033
1171 #define AGENT_LIST_MESSAGE 0x8035
1172 #define ANTICIPATED_CHANNEL_USAGE_MESSAGE 0x8036
1173 #define QOS_MANAGEMENT_NOTIFICATION_MESSAGE 0x8037
1174 #define EARLY_AP_CAPABILITY_REPORT_MESSAGE 0x8043
1175 #define AP_MLD_CONFIGURATION_REQUEST_MESSAGE 0x8044
1176 #define AP_MLD_CONFIGURATION_RESPONSE_MESSAGE 0x8045
1177 #define BSTA_MLD_CONFIGURATION_REQUEST_MESSAGE 0x8046
1178 #define BSTA_MLD_CONFIGURATION_RESPONSE_MESSAGE 0x8047
1179 #define AVAILABLE_SPECTRUM_INQUIRY_MESSAGE 0x8049
1181 static const value_string ieee1905_message_type_vals
[] = {
1182 { TOPOLOGY_DISCOVERY_MESSAGE
, "Topology discovery" },
1183 { TOPOLOGY_NOTIFICATION_MESSAGE
, "Topology notification" },
1184 { TOPOLOGY_QUERY_MESSAGE
, "Topology query" },
1185 { TOPOLOGY_RESPONSE_MESSAGE
, "Topology response" },
1186 { VENDOR_SPECIFIC_MESSAGE
, "Vendor specific" },
1187 { LINK_METRIC_QUERY_MESSAGE
, "Link metric query" },
1188 { LINK_METRIC_RESPONSE_MESSAGE
, "Link metric response" },
1189 { AP_AUTOCONFIGURATION_SEARCH_MESSAGE
, "AP autoconfiguration search" },
1190 { AP_AUTOCONFIGURATION_RESPONSE_MESSAGE
, "AP autoconfiguration response" },
1191 { AP_AUTOCONFIGURATION_WSC_MESSAGE
, "AP autoconfiguration Wi-Fi simple configuration (WSC)" },
1192 { AP_AUTOCONFIGURATION_RENEW_MESSAGE
, "AP autoconfiguration renew" },
1193 { IEEE1905_PUSH_BUTTON_EVENT_NOTIFICATION_MESSAGE
, "1905 push button event notification" },
1194 { IEEE1905_PUSH_BUTTON_JOIN_NOTIFICATION_MESSAGE
, "1905 push button join notification" },
1195 { HIGHER_LAYER_QUERY_MESSAGE
, "Higher layer query" },
1196 { HIGHER_LAYER_RESPONSE_MESSAGE
, "Higher layer response" },
1197 { INTERFACE_POWER_CHANGE_REQUEST_MESSAGE
, "Interface power change request" },
1198 { INTERFACE_POWER_CHANGE_RESPONSE_MESSAGE
, "Interface power change response" },
1199 { GENERIC_PHY_QUERY_MESSAGE
, "Generic phy query" },
1200 { GENERIC_PHY_RESPONSE_MESSAGE
, "Generic phy response" },
1201 { IEEE1905_ACK_MESSAGE
, "1905 Ack" },
1202 { AP_CAPABILITY_QUERY_MESSAGE
, "AP Capability Query" },
1203 { AP_CAPABILITY_REPORT_MESSAGE
, "AP Capability Report" },
1204 { MULTI_AP_POLICY_CONFIG_REQUEST_MESSAGE
, "Multi-AP Policy Config Request" },
1205 { CHANNEL_PREFERENCE_QUERY_MESSAGE
, "Channel Preference Query" },
1206 { CHANNEL_PREFERENCE_REPORT_MESSAGE
, "Channel Preference Report" },
1207 { CHANNEL_SELECTION_REQUEST_MESSAGE
, "Channel Selection Request" },
1208 { CHANNEL_SELECTION_RESPONSE_MESSAGE
, "Channel Selection Response" },
1209 { OPERATING_CHANNEL_REPORT_MESSAGE
, "Operating Channel Report" },
1210 { CLIENT_CAPABILITIES_QUERY_MESSAGE
, "Client Capability Query" },
1211 { CLIENT_CAPABILITIES_REPORT_MESSAGE
, "Client Capability Report" },
1212 { AP_METRICS_QUERY_MESSAGE
, "AP Metrics Query" },
1213 { AP_METRICS_RESPONSE_MESSAGE
, "AP Metrics Response" },
1214 { ASSOCIATED_STA_LINK_METRICS_QUERY_MESSAGE
, "Associated STA Link Metrics Query" },
1215 { ASSOCIATED_STA_LINK_METRICS_RESPONSE_MESSAGE
, "Associated STA Link Metrics Response" },
1216 { UNASSOCIATED_STA_LINK_METRICS_QUERY_MESSAGE
, "Unassociated STA Link Metrics Query" },
1217 { UNASSOCIATED_STA_LINK_METRICS_RESPONSE_MESSAGE
, "Unassociated STA Link Metrics Response" },
1218 { BEACON_METRICS_QUERY_MESSAGE
, "Beacon Metrics Query" },
1219 { BEACON_METRICS_RESPONSE_METRICS
, "Beacon Metrics Response" },
1220 { COMBINED_INFRASTRUCTURE_METRICS_MESSAGE
, "Combined Infrastructure Metrics" },
1221 { CLIENT_STEERING_REQUEST_MESSAGE
, "Client Steering Request" },
1222 { CLIENT_STEERING_BTM_REPORT_MESSAGE
, "Client Steering BTM Report" },
1223 { CLIENT_ASSOCIATION_CONTROL_REQUEST_MESSAGE
, "Client Association Control Request" },
1224 { STEERING_COMPLETED_MESSAGE
, "Steering Completed" },
1225 { HIGHER_LAYER_DATA_MESSAGE
, "Higher Layer Data" },
1226 { BACKHAUL_STEERING_REQUEST_MESSAGE
, "Backhaul Steering Request" },
1227 { BACKHAUL_STEERING_RESPONSE_MESSAGE
, "Backhaul Steering Response" },
1228 { CHANNEL_SCAN_REQUEST_MESSAGE
, "Channel Scan Request" },
1229 { CHANNEL_SCAN_REPORT_MESSAGE
, "Channel Scan Report" },
1230 { DPP_CCE_INDICATION_MESSAGE
, "DPP CCE Indication" },
1231 { IEEE1905_REKEY_REQUEST_MESSAGE
, "1905 Rekey Request" },
1232 { IEEE1905_DECRYPTION_FAILURE
, "1905 Decryption Failure" },
1233 { CAC_REQUEST_MESSAGE
, "CAC Request" },
1234 { CAC_TERMINATION_MESSAGE
, "CAC Termination" },
1235 { CLIENT_DISASSOCIATION_STATS_MESSAGE
, "Client Disassociation Stats" },
1236 { SERVICE_PPRIORITIZATION_REQUEST
, "Service Prioritization Request" },
1237 { ERROR_RESPONSE_MESSAGE
, "Error Response" },
1238 { ASSOCIATION_STATUS_NOTIFICATION_MESSAGE
, "Association Status Notification" },
1239 { TUNNELLED_MESSAGE
, "Tunnelled" },
1240 { BACKHAUL_STA_CAPABILITY_QUERY_MESSAGE
, "Backhaul STA Capability Query" },
1241 { BACKHAUL_STA_CAPABILITY_REPORT_MESSAGE
, "Backhaul STA Capability Report" },
1242 { PROXIED_ENCAP_DPP_MESSAGE
, "Proxied Encap DPP" },
1243 { DIRECT_ENCAP_DPP_MESSAGE
, "Direct Encap DPP" },
1244 { RECONFIGURATION_TRIGGER_MESSAGE
, "Reconfiguration Trigger" },
1245 { BSS_CONFIGURATION_REQUEST_MESSAGE
, "BSS Configuration Request" },
1246 { BSS_CONFIGURATION_RESPONSE_MESSAGE
, "BSS Configuration Response" },
1247 { BSS_CONFIGURATION_RESULT_MESSAGE
, "BSS Configuration Result" },
1248 { CHIRP_NOTIFICATION_MESSAGE
, "Chirp Notification" },
1249 { IEEE1905_ENCAP_EAPOL_MESSAGE
, "1905 Encap EAPOL" },
1250 { DPP_BOOTSTRAPPING_URI_NOTIFICATION_MESSAGE
, "DPP Bootstrapping URI Notification" },
1251 { ANTICIPATED_CHANNEL_PREFERENCE_MESSAGE
, "Anticipated Channel Preference" },
1252 { FAILED_CONNECTION_MESSAGE
, "Failed Connection" },
1253 { AGENT_LIST_MESSAGE
, "Agent List" },
1254 { ANTICIPATED_CHANNEL_USAGE_MESSAGE
, "Anticipated Channel Usage" },
1255 { QOS_MANAGEMENT_NOTIFICATION_MESSAGE
, "QoS Management Notification" },
1256 { EARLY_AP_CAPABILITY_REPORT_MESSAGE
, "Early AP Capability Report" },
1257 { AP_MLD_CONFIGURATION_REQUEST_MESSAGE
, "AP MLD Configuration Request" },
1258 { AP_MLD_CONFIGURATION_RESPONSE_MESSAGE
, "AP MLD Configuration Response" },
1259 { BSTA_MLD_CONFIGURATION_REQUEST_MESSAGE
, "BSTA MLD Configuration Request" },
1260 { BSTA_MLD_CONFIGURATION_RESPONSE_MESSAGE
, "BSTA MLD Configuration Response" },
1261 { AVAILABLE_SPECTRUM_INQUIRY_MESSAGE
, "Available Spectrum Inquiry Message" },
1264 static value_string_ext ieee1905_message_type_vals_ext
= VALUE_STRING_EXT_INIT(ieee1905_message_type_vals
);
1266 #define EOM_TLV 0x00
1267 #define AL_MAC_ADDRESS_TYPE_TLV 1
1268 #define MAC_ADDRESS_TYPE_TLV 2
1269 #define DEVICE_INFORMATION_TYPE_TLV 3
1270 #define DEVICE_BRIDGING_CAPABILITY_TLV 4
1271 #define NON_1905_NEIGHBOR_DEVICE_LIST_TLV 6
1272 #define NEIGHBOR_DEVICE_TLV 7
1273 #define LINK_METRIC_QUERY_TLV 8
1274 #define TRANSMITTER_LINK_METRIC_TLV 9
1275 #define RECEIVER_LINK_METRIC_TLV 10
1276 #define VENDOR_SPECIFIC_TLV 11
1277 #define LINK_METRIC_RESULT_CODE_TLV 12
1278 #define SEARCHED_ROLE_TLV 13
1279 #define AUTO_CONFIG_FREQ_BAND_TLV 14
1280 #define SUPPORTED_ROLE_TLV 15
1281 #define SUPPORTED_FREQ_BAND_TLV 16
1283 #define PUSH_BUTTON_EVENT_NOTIFICATION_TLV 18
1284 #define PUSH_BUTTON_JOIN_NOTIFICATION_TLV 19
1285 #define GENERIC_PHY_DEVICE_INFORMATION_TLV 20
1286 #define DEVICE_IDENTIFICATION_TYPE_TLV 21
1287 #define CONTROL_URL_TYPE_TLV 22
1288 #define IPV4_TYPE_TLV 23
1289 #define IPV6_TYPE_TLV 24
1290 #define PUSH_BUTTON_EVENT_TYPE_NOTIFICATION_TLV 25
1291 #define IEEE1905_PROFILE_VERSION_TLV 26
1292 #define POWER_OFF_INTERFACE_TLV 27
1293 #define INTERFACE_POWER_CHANGE_INFORMATION_TLV 28
1294 #define INTERFACE_POWER_CHANGE_STATUS_TLV 29
1295 #define L2_NEIGHBOR_DEVICE_TLV 30
1296 #define SUPPORTED_SERVICE_TLV 0x80
1297 #define SEARCHED_SERVICE_TLV 0x81
1298 #define AP_RADIO_IDENTIFIER_TLV 0x82
1299 #define AP_OPERATIONAL_BSS_TLV 0x83
1300 #define ASSOCIATED_CLIENTS_TLV 0x84
1301 #define AP_RADIO_BASIC_CAPABILITIES_TLV 0x85
1302 #define AP_HT_CAPABILITIES_TLV 0x86
1303 #define AP_VHT_CAPABILITIES_TLV 0x87
1304 #define AP_HE_CAPABILITIES_TLV 0x88
1305 #define STEERING_POLICY_TLV 0x89
1306 #define METRIC_REPORTING_POLICY_TLV 0x8A
1307 #define CHANNEL_PREFERENCE_TLV 0x8B
1308 #define RADIO_OPERATION_RESTRICTION_TLV 0x8C
1309 #define TRANSMIT_POWER_LIMIT_TLV 0x8D
1310 #define CHANNEL_SELECTION_RESPONSE_TLV 0x8E
1311 #define OPERATING_CHANNEL_REPORT_TLV 0x8F
1312 #define CLIENT_INFO_TLV 0x90
1313 #define CLIENT_CAPABILITY_REPORT_TLV 0x91
1314 #define CLIENT_ASSOCIATION_EVENT_TLV 0x92
1315 #define AP_METRIC_QUERY_TLV 0x93
1316 #define AP_METRICS_TLV 0x94
1317 #define STA_MAC_ADDRESS_TYPE_TLV 0x95
1318 #define ASSOCIATED_STA_LINK_METRICS_TLV 0x96
1319 #define UNASSOCIATED_STA_LINK_METRICS_QUERY_TLV 0x97
1320 #define UNASSOCIATED_STA_LINK_METRICS_RESPONSE_TLV 0x98
1321 #define BEACON_METRICS_QUERY_TLV 0x99
1322 #define BEACON_METRICS_RESPONSE_TLV 0x9A
1323 #define STEERING_REQUEST_TLV 0x9B
1324 #define STEERING_BTM_REPORT_TLV 0x9C
1325 #define CLIENT_ASSOCIATION_CONTROL_REQUEST_TLV 0x9D
1326 #define BACKHAUL_STEERING_REQUEST_TLV 0x9E
1327 #define BACKHAUL_STEERING_RESPONSE_TLV 0x9F
1328 #define HIGHER_LAYER_DATA_TLV 0xA0
1329 #define AP_CAPABILITY_TLV 0xA1
1330 #define ASSOCIATED_STA_TRAFFIC_STATS_TLV 0xA2
1331 #define ERROR_CODE_TLV 0xA3
1332 #define CHANNEL_SCAN_REPORTING_POLICY_TLV 0xA4
1333 #define CHANNEL_SCAN_CAPABILITIES_TLV 0xA5
1334 #define CHANNEL_SCAN_REQUEST_TLV 0xA6
1335 #define CHANNEL_SCAN_RESULT_TLV 0xA7
1336 #define TIMESTAMP_TLV 0xA8
1337 #define IEEE1905_LAYER_SECURITY_CAPABILITY_TLV 0xA9
1338 #define AP_WF6_CAPABILITIES_TLV 0xAA
1339 #define MIC_TLV 0xAB
1340 #define ENCRYPTED_TLV 0xAC
1341 #define CAC_REQUEST_TLV 0xAD
1342 #define CAC_TERMINATION_TLV 0xAE
1343 #define CAC_COMPLETION_REPORT_TLV 0xAF
1344 #define ASSOCIATED_WF6_STA_STATUS_REPORT_TLV 0xB0
1345 #define CAC_STATUS_REPORT_TLV 0xB1
1346 #define CAC_CAPABILITIES_TLV 0xB2
1347 #define MULTI_AP_PROFILE_TLV 0xB3
1348 #define PROFILE_2_AP_CAPABILITY_TLV 0xB4
1349 #define DEFAULT_802_1Q_SETTINGS_TLV 0xB5
1350 #define TRAFFIC_SEPARATION_POLICY_TLV 0xB6
1351 #define BSS_CONFIGURATION_REPORT_TLV 0xB7
1352 #define BSSID_TLV 0xB8
1353 #define SERVICE_PRIORITIZATION_RULE_TLV 0xB9
1354 #define DSCP_MAPPING_TABLE_TLV 0xBA
1355 #define BSS_CONFIGURATION_REQUEST_TLV 0xBB
1356 #define PROFILE_2_ERROR_CODE_ERROR_TLV 0xBC
1357 #define BSS_CONFIGURATION_RESPONSE_TLV 0xBD /* FIX */
1358 #define AP_RADIO_ADVANCED_CAPABILITIES_TLV 0xBE
1359 #define ASSOCIATION_STATUS_NOTIFICATION_TLV 0xBF
1360 #define SOURCE_INFO_TLV 0xC0
1361 #define TUNNELED_MESSAGE_TYPE_TLV 0xC1
1362 #define TUNNELED_TLV 0xC2
1363 #define PROFILE_2_STEERING_REQUEST_TLV 0xC3
1364 #define UNSUCCESSFUL_ASSOCIATION_POLICY_TLV 0xC4
1365 #define METRIC_COLLECTION_INTERVAL_TLV 0xC5
1366 #define RADIO_METRICS_TLV 0xC6
1367 #define AP_EXTENDED_METRICS_TLV 0xC7
1368 #define ASSOCIATED_STA_EXTENDED_LINK_METRICS_TLV 0xC8
1369 #define STATUS_CODE_TLV 0xC9
1370 #define REASON_CODE_TLV 0xCA
1371 #define BACKHAUL_STA_RADIO_CAPABILITIES_TLV 0xCB
1372 #define AKM_SUITE_CAPABILITIES_TLV 0xCC
1373 #define IEEE1905_ENCAP_DPP_TLV 0xCD
1374 #define IEEE1905_ENCAP_EAPOL_TLV 0xCE
1375 #define DPP_BOOTSTRAPPING_URI_NOTIFICATION_TLV 0xCF
1376 #define BACKHAUL_BSS_CONFIGURATION 0xD0
1377 #define DPP_MESSAGE_TLV 0xD1
1378 #define DPP_CCE_INDICATION_TLV 0xD2
1379 #define DPP_CHIRP_VALUE_TLV 0xD3
1380 #define DEVICE_INVENTORY_TLV 0xD4
1381 #define AGENT_LIST_TLV 0xD5
1382 #define ANTICIPATED_CHANNEL_PREFERENCE_TLV 0xD6
1383 #define ANTICIPATED_CHANNEL_USAGE_TLV 0xD7
1384 #define SPATIAL_REUSE_REQUEST_TLV 0xD8
1385 #define SPATIAL_REUSE_REPORT_TLV 0xD9
1386 #define SPATIAL_REUSE_CONFIG_RESPONSE_TLV 0xDA
1387 #define QOS_MANAGEMENT_POLICY_TLV 0xDB
1388 #define QOS_MANAGEMENT_DESCRIPTOR_TLV 0xDC
1389 #define CONTROLLER_CAPABILITY_TLV 0xDD
1390 #define WIFI7_AGENT_CAPABILITIES_TLV 0xDF
1391 #define AGENT_AP_MLD_CONFIGURATION_TLV 0xE0
1392 #define BACKHAUL_STA_MLD_CONFIGURATION_TLV 0xE1
1393 #define ASSOCIATED_STA_MLD_CONFIGURATION_TLV 0xE2
1394 #define AFFILIATED_STA_METRICS_TLV 0xE4
1395 #define AFFILIATED_AP_METRICS_TLV 0xE5
1396 #define EHT_OPERATIONS_TLV 0xE7
1397 #define AVAILABLE_SPECTRUM_INQUIRY_REQUEST_TLV 0xE8
1398 #define AVAILABLE_SPECTRUM_INQUIRY_RESPONSE_TLV 0xE9
1400 static const value_string ieee1905_tlv_types_vals
[] = {
1401 { EOM_TLV
, "End of message" },
1402 { AL_MAC_ADDRESS_TYPE_TLV
, "1905 AL MAC address type" },
1403 { MAC_ADDRESS_TYPE_TLV
, "MAC address type" },
1404 { DEVICE_INFORMATION_TYPE_TLV
, "1905 device information type" },
1405 { DEVICE_BRIDGING_CAPABILITY_TLV
, "Device bridging capability" },
1406 { NON_1905_NEIGHBOR_DEVICE_LIST_TLV
, "Non-1905 neighbor device list" },
1407 { NEIGHBOR_DEVICE_TLV
, "1905 neighbor device" },
1408 { LINK_METRIC_QUERY_TLV
, "Link metric query" },
1409 { TRANSMITTER_LINK_METRIC_TLV
, "1905 transmitter link metric" },
1410 { RECEIVER_LINK_METRIC_TLV
, "1905 receiver link metric" },
1411 { VENDOR_SPECIFIC_TLV
, "Vendor specific" },
1412 { LINK_METRIC_RESULT_CODE_TLV
, "1905 link metric result code" },
1413 { SEARCHED_ROLE_TLV
, "SearchedRole" },
1414 { AUTO_CONFIG_FREQ_BAND_TLV
, "AutoconfigFreqBand" },
1415 { SUPPORTED_ROLE_TLV
, "SupportedRole" },
1416 { SUPPORTED_FREQ_BAND_TLV
, "SupportedFreqBand" },
1418 { PUSH_BUTTON_EVENT_NOTIFICATION_TLV
, "Push_Button_Event notification" },
1419 { PUSH_BUTTON_JOIN_NOTIFICATION_TLV
, "Push_Button_Join notification" },
1420 { GENERIC_PHY_DEVICE_INFORMATION_TLV
, "Generic Phy device information" },
1421 { DEVICE_IDENTIFICATION_TYPE_TLV
, "Device identification type" },
1422 { CONTROL_URL_TYPE_TLV
, "Control URL type" },
1423 { IPV4_TYPE_TLV
, "IPv4 type" },
1424 { IPV6_TYPE_TLV
, "IPv6 type" },
1425 { PUSH_BUTTON_EVENT_TYPE_NOTIFICATION_TLV
, "Push_Button_Generic_Phy_Event notification" },
1426 { IEEE1905_PROFILE_VERSION_TLV
, "1905 profile version" },
1427 { POWER_OFF_INTERFACE_TLV
, "Power off interface" },
1428 { INTERFACE_POWER_CHANGE_INFORMATION_TLV
, "Interface power change information" },
1429 { INTERFACE_POWER_CHANGE_STATUS_TLV
, "Interface power change status" },
1430 { L2_NEIGHBOR_DEVICE_TLV
, "L2 neighbor device" },
1431 { SUPPORTED_SERVICE_TLV
, "Supported service information" },
1432 { SEARCHED_SERVICE_TLV
, "Searched service information" },
1433 { AP_RADIO_IDENTIFIER_TLV
, "AP radio identifier" },
1434 { AP_OPERATIONAL_BSS_TLV
, "AP operational BSS" },
1435 { ASSOCIATED_CLIENTS_TLV
, "Associated clients" },
1436 { AP_RADIO_BASIC_CAPABILITIES_TLV
, "AP radio basic capabilities" },
1437 { AP_HT_CAPABILITIES_TLV
, "AP HT capabilities" },
1438 { AP_VHT_CAPABILITIES_TLV
, "AP VHT capabilities" },
1439 { AP_HE_CAPABILITIES_TLV
, "AP HE capabilities" },
1440 { STEERING_POLICY_TLV
, "Steering policy" },
1441 { METRIC_REPORTING_POLICY_TLV
, "Metric reporting policy" },
1442 { CHANNEL_PREFERENCE_TLV
, "Channel preference" },
1443 { RADIO_OPERATION_RESTRICTION_TLV
, "Radio operation restriction" },
1444 { TRANSMIT_POWER_LIMIT_TLV
, "Transmit power limit" },
1445 { CHANNEL_SELECTION_RESPONSE_TLV
, "Channel selection response" },
1446 { OPERATING_CHANNEL_REPORT_TLV
, "Operating channel report" },
1447 { CLIENT_INFO_TLV
, "Client info" },
1448 { CLIENT_CAPABILITY_REPORT_TLV
, "Client capability report" },
1449 { CLIENT_ASSOCIATION_EVENT_TLV
, "Client association event" },
1450 { AP_METRIC_QUERY_TLV
, "AP metric query" },
1451 { AP_METRICS_TLV
, "AP metrics" },
1452 { STA_MAC_ADDRESS_TYPE_TLV
, "STA MAC address type" },
1453 { ASSOCIATED_STA_LINK_METRICS_TLV
, "Associated STA Link Metrics" },
1454 { UNASSOCIATED_STA_LINK_METRICS_QUERY_TLV
, "Unassociated STA link metrics query" },
1455 { UNASSOCIATED_STA_LINK_METRICS_RESPONSE_TLV
, "Unassociated STA link metrics response" },
1456 { BEACON_METRICS_QUERY_TLV
, "Beacon metrics query" },
1457 { BEACON_METRICS_RESPONSE_TLV
, "Beacon metrics response" },
1458 { STEERING_REQUEST_TLV
, "Steering request" },
1459 { STEERING_BTM_REPORT_TLV
, "Steering BTM report" },
1460 { CLIENT_ASSOCIATION_CONTROL_REQUEST_TLV
, "Client association control request" },
1461 { BACKHAUL_STEERING_REQUEST_TLV
, "Backhaul steering request" },
1462 { BACKHAUL_STEERING_RESPONSE_TLV
, "Backhaul steering response" },
1463 { HIGHER_LAYER_DATA_TLV
, "Higher layer data" },
1464 { AP_CAPABILITY_TLV
, "AP capability" },
1465 { ASSOCIATED_STA_TRAFFIC_STATS_TLV
, "Associated STA Traffic Stats" },
1466 { ERROR_CODE_TLV
, "Error Code" },
1467 { CHANNEL_SCAN_REPORTING_POLICY_TLV
, "Channel Scan Reporting Policy" },
1468 { CHANNEL_SCAN_CAPABILITIES_TLV
, "Channel Scan Capabilities" },
1469 { CHANNEL_SCAN_REQUEST_TLV
, "Channel Scan Request" },
1470 { CHANNEL_SCAN_RESULT_TLV
, "Channel Scan Result" },
1471 { TIMESTAMP_TLV
, "Timestamp" },
1472 { IEEE1905_LAYER_SECURITY_CAPABILITY_TLV
, "1905 Layer Security Capability" },
1473 { AP_WF6_CAPABILITIES_TLV
, "AP Wi-Fi 6 Capabilities" },
1475 { ENCRYPTED_TLV
, "Encrypted" },
1476 { CAC_REQUEST_TLV
, "CAC Request" },
1477 { CAC_TERMINATION_TLV
, "CAC Termination" },
1478 { CAC_COMPLETION_REPORT_TLV
, "CAC Completion Report" },
1479 { ASSOCIATED_WF6_STA_STATUS_REPORT_TLV
, "Associated Wi-Fi 6 STA Status Report" },
1480 { CAC_STATUS_REPORT_TLV
, "CAC Status Report" },
1481 { CAC_CAPABILITIES_TLV
, "CAC Capabilities" },
1482 { MULTI_AP_PROFILE_TLV
, "Multi AP Profile" },
1483 { PROFILE_2_AP_CAPABILITY_TLV
, "Profile 2 AP Capability" },
1484 { DEFAULT_802_1Q_SETTINGS_TLV
, "Default 802.1Q Settings" },
1485 { TRAFFIC_SEPARATION_POLICY_TLV
, "Traffic Separation Policy" },
1486 { BSS_CONFIGURATION_REPORT_TLV
, "BSS Configuration Report" },
1487 { BSSID_TLV
, "BSSID" },
1488 { SERVICE_PRIORITIZATION_RULE_TLV
, "Service Prioritization Rule" },
1489 { DSCP_MAPPING_TABLE_TLV
, "DSCP Mapping Table" },
1490 { BSS_CONFIGURATION_REQUEST_TLV
, "BSS Configuration Request" },
1491 { PROFILE_2_ERROR_CODE_ERROR_TLV
, "Profile 2 Error Code" },
1492 { BSS_CONFIGURATION_RESPONSE_TLV
, "BSS Configuration Response" },
1493 { AP_RADIO_ADVANCED_CAPABILITIES_TLV
, "AP Radio Advanced Capabilities" },
1494 { ASSOCIATION_STATUS_NOTIFICATION_TLV
, "Associated Status Notification" },
1495 { SOURCE_INFO_TLV
, "Source Info" },
1496 { TUNNELED_MESSAGE_TYPE_TLV
, "Tunneled Message Type" },
1497 { TUNNELED_TLV
, "Tunneled" },
1498 { PROFILE_2_STEERING_REQUEST_TLV
, "Profile 2 Steering Request" },
1499 { UNSUCCESSFUL_ASSOCIATION_POLICY_TLV
, "Unsuccessful Association Policy" },
1500 { METRIC_COLLECTION_INTERVAL_TLV
, "Metric Collection Interval" },
1501 { RADIO_METRICS_TLV
, "Radio Metrics" },
1502 { AP_EXTENDED_METRICS_TLV
, "AP Extended Metrics" },
1503 { ASSOCIATED_STA_EXTENDED_LINK_METRICS_TLV
,"Associated STA Extended Link Metrics" },
1504 { STATUS_CODE_TLV
, "Status Code" },
1505 { REASON_CODE_TLV
, "Reason Code" },
1506 { BACKHAUL_STA_RADIO_CAPABILITIES_TLV
, "Backhaul STA Radio Capabilities" },
1507 { AKM_SUITE_CAPABILITIES_TLV
, "AKM Suite Capabilities" },
1508 { IEEE1905_ENCAP_DPP_TLV
, "1905 Encap DPP" },
1509 { IEEE1905_ENCAP_EAPOL_TLV
, "1905 Encap EAPOL" },
1510 { DPP_BOOTSTRAPPING_URI_NOTIFICATION_TLV
, "DPP Bootstrapping URI Notification" },
1511 { BACKHAUL_BSS_CONFIGURATION
, "Backhaul BSS Configuration" },
1512 { DPP_MESSAGE_TLV
, "DPP Message" },
1513 { DPP_CCE_INDICATION_TLV
, "DPP CCE Indication" },
1514 { DPP_CHIRP_VALUE_TLV
, "DPP Chirp Value" },
1515 { DEVICE_INVENTORY_TLV
, "Device Inventory" },
1516 { AGENT_LIST_TLV
, "Agent List" },
1517 { ANTICIPATED_CHANNEL_PREFERENCE_TLV
, "Anticipated Channel Preference" },
1518 { ANTICIPATED_CHANNEL_USAGE_TLV
, "Anticipated Channel Usage" },
1519 { SPATIAL_REUSE_REQUEST_TLV
, "Spatial Reuse Request" },
1520 { SPATIAL_REUSE_REPORT_TLV
, "Spatial Reuse Report" },
1521 { SPATIAL_REUSE_CONFIG_RESPONSE_TLV
, "Spatial Reuse Config Response" },
1522 { QOS_MANAGEMENT_POLICY_TLV
, "QoS Management Policy" },
1523 { QOS_MANAGEMENT_DESCRIPTOR_TLV
, "QoS Management Descriptor" },
1524 { CONTROLLER_CAPABILITY_TLV
, "Controller Capability" },
1525 { WIFI7_AGENT_CAPABILITIES_TLV
, "Wi-Fi 7 Agent Capabilities" },
1526 { AGENT_AP_MLD_CONFIGURATION_TLV
, "Agent AP MLD Configuration" },
1527 { BACKHAUL_STA_MLD_CONFIGURATION_TLV
, "Backhaul STA MLD Configuration" },
1528 { ASSOCIATED_STA_MLD_CONFIGURATION_TLV
, "Associated STA MLD Configuration" },
1529 { AFFILIATED_STA_METRICS_TLV
, "Affiliated STA Metrics" },
1530 { AFFILIATED_AP_METRICS_TLV
, "Affiliated AP Metrics" },
1531 { EHT_OPERATIONS_TLV
, "EHT Operations" },
1532 { AVAILABLE_SPECTRUM_INQUIRY_REQUEST_TLV
, "Available Spectrum Inquiry Request" },
1533 { AVAILABLE_SPECTRUM_INQUIRY_RESPONSE_TLV
, "Available Spectrum Inquiry Response" },
1536 static value_string_ext ieee1905_tlv_types_vals_ext
= VALUE_STRING_EXT_INIT(ieee1905_tlv_types_vals
);
1538 static const true_false_string tfs_last_fragment
= {
1539 "This is the last fragment",
1540 "This is not the last fragment"
1543 static const true_false_string tfs_relay_indicator
= {
1544 "Relayed multicast",
1545 "Neighbor multicast or unicast"
1548 static const value_string ieee1905_link_metric_query_type_vals
[] = {
1549 { 0x00, "All neighbors" },
1550 { 0x01, "Specific neighbor" },
1554 static const value_string ieee1905_link_metrics_requested_vals
[] = {
1555 { 0x00, "Tx link metrics only" },
1556 { 0x01, "Rx link metrics only" },
1557 { 0x02, "Both Tx and Rx link metrics" },
1561 static const value_string ieee1905_bridge_flag_vals
[] = {
1562 { 0x00, "1905 link does not include an IEEE 802.1 bridge" },
1563 { 0x01, "1905 link includes one or more IEEE 802.1 bridges" },
1567 static const value_string ieee1905_media_type_0_vals
[] = {
1568 { 0, "IEEE 802.3u fast Ethernet" },
1569 { 1, "IEEE 802.3ab gigabit" },
1573 static const value_string ieee1905_media_type_1_vals
[] = {
1574 { 0, "IEEE 802.11b (2.4 GHz)" },
1575 { 1, "IEEE 802.11g (2.4 GHz)" },
1576 { 2, "IEEE 802.11a (5 GHz)" },
1577 { 3, "IEEE 802.11n (2.4 GHz)" },
1578 { 4, "IEEE 802.11n (5 GHz)" },
1579 { 5, "IEEE 802.11ac (5 GHz)" },
1580 { 6, "IEEE 802.11ad (60 GHz)" },
1581 { 7, "IEEE 802.11af (whitespace)" },
1582 { 8, "IEEE 802.11ax" },
1583 { 9, "IEEE 802.11be" },
1587 static const value_string ieee1905_media_type_2_vals
[] = {
1588 { 0, "IEEE 1901 wavelet" },
1589 { 1, "IEEE 1901 FFT" },
1593 static const value_string ieee1905_media_type_3_vals
[] = {
1598 static const value_string ieee1905_link_metric_result_vals
[] = {
1599 { 0, "Invalid neighbor" },
1603 static const true_false_string tfs_bridges_flag
= {
1604 "At least one IEEE 802.1 bridge exists between this device and the neighbor",
1605 "No IEEE 802.1 bridges exist"
1608 static const value_string ieee1905_searched_role_vals
[] = {
1613 static const value_string ieee1905_freq_band_vals
[] = {
1614 { 0, "802.11 2.4 GHz" },
1615 { 1, "802.11 5 GHz" },
1616 { 2, "802.11 60 GHz" },
1617 { 3, "802.11 6 GHz" },
1621 static const value_string ieee1905_ipv4_addr_type_vals
[] = {
1629 static const value_string ieee1905_ipv6_addr_type_vals
[] = {
1637 static const value_string ieee1905_profile_version_vals
[] = {
1643 static const value_string ieee1905_power_state_vals
[] = {
1650 static const value_string ieee1905_power_status_vals
[] = {
1651 { 0, "Request completed" },
1652 { 1, "No change made" },
1653 { 2, "Alternate change made" },
1657 static const value_string ieee1905_supported_service_vals
[] = {
1658 { 0x00, "Multi-AP Controller" },
1659 { 0x01, "Multi-AP Agent" },
1663 static const value_string ieee1905_higher_layer_protocol_vals
[] = {
1664 { 0x00, "Reserved" },
1665 { 0x01, "TR-181 transport protocol" },
1669 static const value_string ieee1905_backhaul_status_vals
[] = {
1670 { 0x00, "Success" },
1671 { 0x01, "Rejected because the backhaul station cannot operate on the channel specified" },
1672 { 0x02, "Rejected because the target BSS signal is too weak or not found" },
1673 { 0x03, "Authentication or association rejected by the target BSS" },
1677 static const value_string ieee1905_association_control_vals
[] = {
1679 { 0x01, "Unblock" },
1680 { 0x02, "Timed block" },
1681 { 0x03, "Indefinite block" },
1685 static const true_false_string tfs_ieee1905_steering_request_mode_flag
= {
1686 "Request is a steering mandate to trigger steering for specific client STA(s)",
1687 "Request is a steering opportunity",
1690 static const true_false_string tfs_ieee1905_report_unsuccessful_association_attempt_flag
= {
1695 static const true_false_string tfs_ieee1905_btm_disassoc_imminent_flag
= {
1696 "BTM disassociation imminent",
1697 "BTM disassociation not imminent"
1700 static const true_false_string tfs_ieee1905_btm_abridged_flag
= {
1705 static const value_string ieee1905_client_capability_result_vals
[] = {
1706 { 0x00, "Success" },
1707 { 0x01, "Unspecified failure" },
1708 { 0x02, "Client not associated with specified BSSID" },
1712 static const true_false_string tfs_ieee1905_association_event_flag
= {
1713 "Client has joined the BSS",
1714 "Client has left the BSS"
1717 static const value_string max_supported_tx_streams_vals
[] = {
1718 { 0x00, "1 Tx spatial stream" },
1719 { 0x01, "2 Tx spatial streams" },
1720 { 0x02, "3 Tx spatial streams" },
1721 { 0x03, "4 Tx spatial streams" },
1725 static const value_string max_supported_rx_streams_vals
[] = {
1726 { 0x00, "1 Rx spatial stream" },
1727 { 0x01, "2 Rx spatial streams" },
1728 { 0x02, "3 Rx spatial streams" },
1729 { 0x03, "4 Rx spatial streams" },
1733 static const value_string vht_he_max_supported_tx_streams_vals
[] = {
1734 { 0x00, "1 Tx spatial stream" },
1735 { 0x01, "2 Tx spatial streams" },
1736 { 0x02, "3 Tx spatial streams" },
1737 { 0x03, "4 Tx spatial streams" },
1738 { 0x04, "5 Tx spatial streams" },
1739 { 0x05, "6 Tx spatial streams" },
1740 { 0x06, "7 Tx spatial streams" },
1741 { 0x07, "8 Tx spatial streams" },
1745 static const value_string vht_he_max_supported_rx_streams_vals
[] = {
1746 { 0x00, "1 Rx spatial stream" },
1747 { 0x01, "2 Rx spatial streams" },
1748 { 0x02, "3 Rx spatial streams" },
1749 { 0x03, "4 Rx spatial streams" },
1750 { 0x04, "5 Rx spatial streams" },
1751 { 0x05, "6 Rx spatial streams" },
1752 { 0x06, "7 Rx spatial streams" },
1753 { 0x07, "8 Rx spatial streams" },
1757 static const value_string channel_preference_prefs_vals
[] = {
1758 { 0x0, "Non-operable" },
1759 { 0x1, "Operable with preference score 1" },
1760 { 0x2, "Operable with preference score 2" },
1761 { 0x3, "Operable with preference score 3" },
1762 { 0x4, "Operable with preference score 4" },
1763 { 0x5, "Operable with preference score 5" },
1764 { 0x6, "Operable with preference score 6" },
1765 { 0x7, "Operable with preference score 7" },
1766 { 0x8, "Operable with preference score 8" },
1767 { 0x9, "Operable with preference score 9" },
1768 { 0xA, "Operable with preference score 10" },
1769 { 0xB, "Operable with preference score 11" },
1770 { 0xC, "Operable with preference score 12" },
1771 { 0xD, "Operable with preference score 13" },
1772 { 0xE, "Operable with preference score 14" },
1776 static const value_string channel_preference_reason_vals
[] = {
1777 { 0x0, "Unspecified" },
1778 { 0x1, "Proximate non-802.11 interference in local environment" },
1779 { 0x2, "Intra-network 802.11 OBSS interference management" },
1780 { 0x3, "External network 802.11 OBSS interference management" },
1781 { 0x4, "Reduced coverage (e.g. due to limited transmit power" },
1782 { 0x5, "Reduced throughput (e.g. due to limited channel bandwidth..." },
1783 { 0x6, "In-device interference within AP" },
1784 { 0x7, "Operation disallowed due to radar detection on a DFS channel" },
1785 { 0x8, "Operation would prevent backhaul operation using shared radio" },
1786 { 0x9, "Immediate operation possible on a DFS channel" },
1787 { 0xA, "DFS channel state unknown" },
1788 { 0xB, "Controller DFS Channel Clear Indication" },
1789 { 0xC, "Operation disallowed by AFC restriction" },
1793 static const value_string ieee1905_channel_select_resp_code_vals
[] = {
1795 { 0x01, "Declined because request violates current preferences" },
1796 { 0x02, "Declined because request violates most recently reported preferences" },
1797 { 0x03, "Declined because request would prevent operation of a current backhaul link" },
1801 static const value_string ieee1905_steering_policy_vals
[] = {
1802 { 0x0, "Agent initiated steering disallowed" },
1803 { 0x1, "Agent initiated RCPI-based steering mandated" },
1804 { 0x2, "Agent initiated RCPI-based steering allowed" },
1808 static const value_string ieee1905_error_code_vals
[] = {
1809 { 0x01, "STA associated with a BSS operated by the Agent" },
1810 { 0x02, "STA not associated with any BSS operated by the Agent" },
1811 { 0x03, "Client capability report unspecified failure" },
1812 { 0x04, "Backhaul steering request rejected because station cannot operate on specified channel" },
1813 { 0x05, "Backhaul steering request rejected because target BSS signal too weak or not found" },
1814 { 0x06, "Backhaul steering request authentication or association Rejected by target BSS" },
1819 * Minimum message has a single End of Message TLV with 3 bytes, plus 8 byte
1822 #define IEEE1905_MIN_LENGTH 11
1825 * Size of the fixed parameters in 802.11 management frames
1827 #define ASSOC_REQ_BODY_FIXED_SIZE 4
1830 dissect_media_type(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
1831 proto_tree
*tree
, unsigned offset
)
1833 proto_item
*pi
= NULL
;
1834 proto_tree
*media_type
= NULL
;
1835 uint8_t bits_15_to_8
= 0, bits_7_to_0
= 0;
1837 pi
= proto_tree_add_item(tree
, hf_ieee1905_media_type
, tvb
, offset
,
1840 media_type
= proto_item_add_subtree(pi
, ett_media_type
);
1845 bits_15_to_8
= tvb_get_uint8(tvb
, offset
);
1846 bits_7_to_0
= tvb_get_uint8(tvb
, offset
+ 1);
1848 proto_tree_add_item(media_type
, hf_ieee1905_media_type_high
, tvb
, offset
,
1852 proto_tree_add_item(media_type
, hf_ieee1905_media_type_low
, tvb
, offset
,
1856 switch (bits_15_to_8
) {
1858 proto_item_append_text(pi
, ", %s",
1859 val_to_str_const(bits_7_to_0
,
1860 ieee1905_media_type_0_vals
,
1865 proto_item_append_text(pi
, ", %s",
1866 val_to_str_const(bits_7_to_0
,
1867 ieee1905_media_type_1_vals
,
1872 proto_item_append_text(pi
, ", %s",
1873 val_to_str(bits_7_to_0
,
1874 ieee1905_media_type_2_vals
,
1879 proto_item_append_text(pi
, ", %s",
1880 val_to_str_const(bits_7_to_0
,
1881 ieee1905_media_type_3_vals
,
1886 proto_item_append_text(pi
, ", Unknown media");
1890 proto_item_append_text(pi
, ", Reserved");
1898 * Dissect a local interface list, putting them each in a subtree labeled
1899 * with the number of the interface.
1902 dissect_local_interface_list(tvbuff_t
*tvb
, packet_info
*pinfo
,
1903 proto_tree
*tree
, unsigned offset
, uint8_t count
)
1905 unsigned lil_index
= 0;
1906 unsigned media_type_offset
= 0;
1907 proto_item
*pi
= NULL
;
1908 proto_tree
*dev_tree
= NULL
;
1911 uint8_t spec_info_len
= 0;
1913 dev_tree
= proto_tree_add_subtree_format(tree
, tvb
, offset
, 8,
1914 ett_device_information_tree
,
1915 &pi
, "Local interface %u device info",
1918 proto_tree_add_item(dev_tree
, hf_ieee1905_mac_address_type
, tvb
,
1922 media_type_offset
= offset
;
1924 offset
= dissect_media_type(tvb
, pinfo
, dev_tree
, offset
);
1926 spec_info_len
= tvb_get_uint8(tvb
, offset
);
1928 proto_tree_add_item(dev_tree
, hf_ieee1905_media_spec_info_len
,
1929 tvb
, offset
, 1, ENC_NA
);
1932 if (spec_info_len
) {
1933 /* FIXME: This should be dissected ... */
1934 proto_tree_add_item(dev_tree
, hf_ieee1905_media_spec_info
,
1935 tvb
, offset
, spec_info_len
, ENC_NA
);
1936 offset
+= spec_info_len
;
1939 proto_item_set_len(pi
, 6 + (offset
- media_type_offset
));
1949 * Dissect device bridging capabilities
1952 dissect_device_bridging_capabilities(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
1953 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
1955 uint8_t count
= tvb_get_uint8(tvb
, offset
);
1956 uint8_t tuple_no
= 0;
1957 uint8_t mac_addresses
= 0;
1959 proto_tree
*tuple_list
= NULL
;
1960 proto_tree
*bridging_list
= NULL
;
1961 proto_item
*tpi
= NULL
, *mpi
= NULL
;
1963 proto_tree_add_item(tree
, hf_ieee1905_bridging_tuples_cnt
, tvb
, offset
,
1965 tuple_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
1966 ett_bridging_tuples_list
,
1967 &tpi
, "Bridging tuples list");
1969 start
= offset
; /* Starts at the count! */
1973 unsigned bl_start
= offset
;
1974 mac_addresses
= tvb_get_uint8(tvb
, offset
);
1976 bridging_list
= proto_tree_add_subtree_format(tuple_list
, tvb
, offset
,
1977 -1, ett_bridging_mac_list
,
1978 &mpi
, "Bridging tuple %u", tuple_no
);
1980 proto_tree_add_item(bridging_list
,
1981 hf_ieee1905_bridging_mac_address_cnt
,
1982 tvb
, offset
, 1, ENC_NA
);
1987 while (mac_addresses
) {
1988 proto_tree_add_item(bridging_list
,
1989 hf_ieee1905_bridging_mac_address
, tvb
,
1996 proto_item_set_len(mpi
, offset
- bl_start
);
2000 proto_item_set_len(tpi
, offset
- start
);
2005 * Dissect the non 1905 neighbor device list TLV
2008 dissect_non_1905_neighbor_device_list(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2009 proto_tree
*tree
, unsigned offset
, uint16_t len
)
2011 proto_tree
*neighbor_list
= NULL
;
2012 proto_item
*pi
= NULL
;
2014 int remaining
= len
;
2016 proto_tree_add_item(tree
, hf_ieee1905_local_interface_mac
, tvb
,
2022 neighbor_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
2023 ett_non_1905_neighbor_list
,
2024 &pi
, "Non IEEE1905 neighbor devices");
2028 while (remaining
> 0) {
2029 proto_tree_add_item(neighbor_list
, hf_ieee1905_neighbor_al_mac_addr
,
2030 tvb
, offset
, 6, ENC_NA
);
2036 proto_item_set_len(pi
, offset
- start
);
2042 * Dissect an IEEE1905 Neighbor device TLV
2045 dissect_1905_neighbor_device(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2046 proto_tree
*tree
, unsigned offset
, uint16_t len
)
2048 proto_tree
*neighbor_list
= NULL
;
2049 proto_item
*pi
= NULL
;
2051 int remaining
= len
;
2052 static int * const flags
[] = {
2053 &hf_ieee1905_bridges_flag
,
2057 proto_tree_add_item(tree
, hf_ieee1905_local_interface_mac
, tvb
,
2063 neighbor_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
2064 ett_1905_neighbor_list
, &pi
,
2065 "IEEE1905 neighbor devices");
2069 while (remaining
> 0) {
2070 proto_tree_add_item(neighbor_list
, hf_ieee1905_neighbor_al_mac_addr
,
2071 tvb
, offset
, 6, ENC_NA
);
2076 proto_tree_add_bitmask(neighbor_list
, tvb
, offset
,
2077 hf_ieee1905_neighbor_flags
,
2078 ett_ieee1905_neighbor_flags
, flags
, ENC_NA
);
2085 proto_item_set_len(pi
, offset
- start
);
2091 * Dissect the link metric result code
2094 dissect_link_metric_result_code(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2095 proto_tree
*tree
, unsigned offset
)
2097 proto_item
*pi
= NULL
;
2098 uint8_t code
= tvb_get_uint8(tvb
, offset
);
2100 pi
= proto_tree_add_item(tree
, hf_ieee1905_link_metric_result_code
,
2101 tvb
, offset
, 1, ENC_NA
);
2103 proto_item_append_text(pi
, ", %s",
2104 val_to_str_const(code
, ieee1905_link_metric_result_vals
,
2113 * Dissect a vendor specific TLV.
2116 dissect_vendor_specific(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2117 proto_tree
*tree
, unsigned offset
, uint16_t len
)
2120 proto_tree_add_item(tree
, hf_ieee1905_vendor_specific_oui
, tvb
, offset
,
2124 proto_tree_add_item(tree
, hf_ieee1905_vendor_specific_info
, tvb
, offset
,
2126 offset
+= (len
- 3);
2132 * Dissect the searched role TLV
2135 dissect_searched_role(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2136 proto_tree
*tree
, unsigned offset
)
2138 proto_item
*pi
= NULL
;
2139 uint8_t role
= tvb_get_uint8(tvb
, offset
);
2141 pi
= proto_tree_add_item(tree
, hf_ieee1905_searched_role
, tvb
, offset
,
2144 proto_item_append_text(pi
, ", %s",
2145 val_to_str_const(role
, ieee1905_searched_role_vals
,
2154 * Dissect the supported role TLV
2157 dissect_supported_role(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2158 proto_tree
*tree
, unsigned offset
)
2160 proto_item
*pi
= NULL
;
2161 uint8_t role
= tvb_get_uint8(tvb
, offset
);
2163 pi
= proto_tree_add_item(tree
, hf_ieee1905_supported_role
, tvb
, offset
,
2167 * We can re-use this.
2169 proto_item_append_text(pi
, ", %s",
2170 val_to_str_const(role
, ieee1905_searched_role_vals
,
2179 * Dissect an Auto config frequency band TLV
2182 dissect_auto_config_freq_band(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2183 proto_tree
*tree
, unsigned offset
)
2185 proto_item
*pi
= NULL
;
2186 uint8_t freq
= tvb_get_uint8(tvb
, offset
);
2188 pi
= proto_tree_add_item(tree
, hf_ieee1905_auto_config_freq_band
, tvb
,
2191 proto_item_append_text(pi
, ", %s",
2192 val_to_str_const(freq
, ieee1905_freq_band_vals
,
2201 * Dissect a Supported frequency band TLV
2204 dissect_supported_freq_band(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2205 proto_tree
*tree
, unsigned offset
)
2207 proto_item
*pi
= NULL
;
2208 uint8_t freq
= tvb_get_uint8(tvb
, offset
);
2210 pi
= proto_tree_add_item(tree
, hf_ieee1905_supported_freq_band
, tvb
,
2213 proto_item_append_text(pi
, ", %s",
2214 val_to_str_const(freq
, ieee1905_freq_band_vals
,
2226 dissect_wsc(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
,
2227 unsigned offset
, uint16_t len
)
2229 dissect_wps_tlvs(tree
, tvb
, offset
, len
, pinfo
);
2236 * Dissect a push button notification event TLV
2239 dissect_push_button_event_notification(tvbuff_t
*tvb
, packet_info
*pinfo
,
2240 proto_tree
*tree
, unsigned offset
)
2242 proto_item
*pi
= NULL
, *mpi
= NULL
;
2243 proto_tree
*media_type_list
= NULL
, *media_item
= NULL
;
2244 unsigned list_offset
= 0, media_type_offset
= 0;
2245 uint8_t media_types
= tvb_get_uint8(tvb
, offset
);
2246 uint8_t media_type_index
= 0;
2248 proto_tree_add_item(tree
, hf_ieee1905_event_notification_media_types
,
2249 tvb
, offset
, 1, ENC_NA
);
2252 /* If there are none, nothing more to do. */
2253 if (media_types
== 0)
2256 media_type_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
2257 ett_media_type_list
,
2258 &pi
, "Media type list");
2259 list_offset
= offset
;
2261 while (media_type_index
< media_types
) {
2262 uint8_t spec_info_len
= 0;
2264 media_item
= proto_tree_add_subtree_format(media_type_list
,
2266 ett_media_item
, &mpi
,
2267 "Media type %u", media_type_index
);
2269 media_type_offset
= offset
;
2271 offset
= dissect_media_type(tvb
, pinfo
, media_item
, offset
);
2273 spec_info_len
= tvb_get_uint8(tvb
, offset
);
2275 proto_tree_add_item(media_item
, hf_ieee1905_media_spec_info_len
,
2276 tvb
, offset
, 1, ENC_NA
);
2279 if (spec_info_len
) {
2280 /* FIXME: This should be dissected ... */
2281 proto_tree_add_item(media_item
, hf_ieee1905_media_spec_info
,
2282 tvb
, offset
, spec_info_len
, ENC_NA
);
2283 offset
+= spec_info_len
;
2286 proto_item_set_len(mpi
, offset
- media_type_offset
);
2291 proto_item_set_len(pi
, offset
- list_offset
);
2297 * Dissect a push button event join TLV
2300 dissect_push_button_join_notification(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2301 proto_tree
*tree
, unsigned offset
)
2303 proto_tree_add_item(tree
, hf_ieee1905_sender_al_id
, tvb
, offset
, 6,
2307 proto_tree_add_item(tree
, hf_ieee1905_push_button_event_msg_id
, tvb
,
2308 offset
, 2, ENC_BIG_ENDIAN
);
2311 proto_tree_add_item(tree
, hf_ieee1905_sender_joining_interface
, tvb
,
2315 proto_tree_add_item(tree
, hf_ieee1905_new_device_interface
, tvb
,
2322 * Dissect a generic phy device info TLV
2325 dissect_generic_phy_device_info(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2326 proto_tree
*tree
, unsigned offset
)
2328 proto_item
*pi
= NULL
;
2329 proto_tree
*local_interface_list
= NULL
;
2330 uint8_t local_intf_count
, local_intf_index
= 0;
2331 int saved_offset
= 0;
2333 proto_tree_add_item(tree
, hf_ieee1905_device_al_mac
, tvb
, offset
,
2337 local_intf_count
= tvb_get_uint8(tvb
, offset
);
2339 proto_tree_add_item(tree
, hf_ieee1905_local_interface_count
, tvb
,
2344 if (local_intf_count
== 0)
2347 local_interface_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
2348 ett_local_interface_list
,
2349 &pi
, "Local interface list");
2352 while (local_intf_index
< local_intf_count
) {
2353 proto_tree
*intf_tree
= NULL
;
2354 proto_item
*ipi
= NULL
;
2355 unsigned start_offset
= offset
;
2356 uint8_t url_field_count
, media_spec_count
;
2358 intf_tree
= proto_tree_add_subtree_format(local_interface_list
,
2360 ett_local_interface_info
,
2361 &ipi
, "Local interface %u generic info",
2364 proto_tree_add_item(intf_tree
, hf_ieee1905_local_interface_mac
,
2365 tvb
, offset
, 6, ENC_NA
);
2368 proto_tree_add_item(intf_tree
, hf_ieee1905_local_intf_oui
,
2369 tvb
, offset
, 3, ENC_NA
);
2372 proto_tree_add_item(intf_tree
, hf_ieee1905_local_intf_variant
,
2373 tvb
, offset
, 1, ENC_NA
);
2376 proto_tree_add_item(intf_tree
, hf_ieee1905_local_intf_variant_name
,
2377 tvb
, offset
, 32, ENC_UTF_8
);
2380 url_field_count
= tvb_get_uint8(tvb
, offset
);
2381 proto_tree_add_item(intf_tree
, hf_ieee1905_local_intf_url_count
,
2382 tvb
, offset
, 1, ENC_NA
);
2385 media_spec_count
= tvb_get_uint8(tvb
, offset
);
2386 proto_tree_add_item(intf_tree
, hf_ieee1905_local_intf_spec_count
,
2387 tvb
, offset
, 1, ENC_NA
);
2390 proto_tree_add_item(intf_tree
, hf_ieee1905_local_intf_url
, tvb
,
2391 offset
, url_field_count
, ENC_ASCII
);
2392 offset
+= url_field_count
;
2394 proto_tree_add_item(intf_tree
, hf_ieee1905_local_intf_spec
, tvb
,
2395 offset
, media_spec_count
, ENC_NA
);
2396 offset
+= media_spec_count
;
2398 proto_item_set_len(ipi
, offset
- start_offset
);
2403 proto_item_set_len(pi
, offset
- saved_offset
);
2409 * Dissect a Device Identification Type TLV
2412 dissect_device_identification(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2413 proto_tree
*tree
, unsigned offset
)
2415 proto_tree_add_item(tree
, hf_ieee1905_dev_id_friendly_name
, tvb
,
2416 offset
, 64, ENC_UTF_8
);
2419 proto_tree_add_item(tree
, hf_ieee1905_dev_id_manuf_name
, tvb
,
2420 offset
, 64, ENC_UTF_8
);
2423 proto_tree_add_item(tree
, hf_ieee1905_dev_id_manuf_model
, tvb
,
2424 offset
, 64, ENC_UTF_8
);
2431 * Dissect a Control URL Type TLV
2434 dissect_control_url_type(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2435 proto_tree
*tree
, unsigned offset
, uint16_t len
)
2437 proto_tree_add_item(tree
, hf_ieee1905_control_url
, tvb
, offset
,
2445 * Dissect an IPv4 Type TLV
2448 dissect_ipv4_type(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2449 proto_tree
*tree
, unsigned offset
)
2451 uint8_t entry_count
= tvb_get_uint8(tvb
, offset
);
2452 uint8_t entry_index
= 0;
2453 proto_item
*pi
= NULL
;
2454 proto_tree
*ipv4_list
= NULL
;
2455 unsigned saved_offset
= 0;
2457 proto_tree_add_item(tree
, hf_ieee1905_ipv4_type_count
, tvb
, offset
,
2461 if (entry_count
== 0)
2464 ipv4_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
2466 &pi
, "IPv4 type list");
2467 saved_offset
= offset
;
2469 while (entry_index
< entry_count
) {
2470 proto_tree
*ipv4_tree
= NULL
, *addr_list
= NULL
;
2471 proto_item
*ipi
= NULL
;
2472 unsigned start_offset
= offset
;
2473 uint8_t addr_count
= 0, addr_index
= 0;
2475 ipv4_tree
= proto_tree_add_subtree_format(ipv4_list
,
2478 &ipi
, "IPv4 type %u info",
2481 proto_tree_add_item(ipv4_tree
, hf_ieee1905_mac_address
, tvb
,
2485 addr_count
= tvb_get_uint8(tvb
, offset
);
2486 proto_tree_add_item(ipv4_tree
, hf_ieee1905_ipv4_addr_count
,
2487 tvb
, offset
, 1, ENC_NA
);
2490 if (addr_count
== 0)
2493 addr_list
= proto_tree_add_subtree(ipv4_tree
, tvb
, offset
,
2495 ett_ipv4_type_addr_list
,
2496 NULL
, "IPv4 address list");
2498 while (addr_index
< addr_count
) {
2499 proto_tree
*addr_tree
= NULL
;
2500 proto_item
*atpi
= NULL
;
2501 uint8_t addr_type
= tvb_get_uint8(tvb
, offset
);
2503 addr_tree
= proto_tree_add_subtree_format(addr_list
, tvb
,
2504 offset
, 9, ett_ipv4_addr_info
,
2505 NULL
, "IPv4 address %u info",
2508 atpi
= proto_tree_add_item(addr_tree
, hf_ieee1905_addr_type
,
2509 tvb
, offset
, 1, ENC_NA
);
2510 proto_item_append_text(atpi
, ", %s",
2511 val_to_str_const(addr_type
, ieee1905_ipv4_addr_type_vals
,
2515 proto_tree_add_item(addr_tree
, hf_ieee1905_ipv4_addr
, tvb
,
2516 offset
, 4, ENC_LITTLE_ENDIAN
);
2519 proto_tree_add_item(addr_tree
, hf_ieee1905_dhcp_server
, tvb
,
2520 offset
, 4, ENC_LITTLE_ENDIAN
);
2526 proto_item_set_len(ipi
, offset
- start_offset
);
2531 proto_item_set_len(pi
, offset
- saved_offset
);
2537 * Dissect an IPv6 Type TLV
2540 dissect_ipv6_type(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2541 proto_tree
*tree
, unsigned offset
)
2543 uint8_t entry_count
= tvb_get_uint8(tvb
, offset
);
2544 uint8_t entry_index
= 0;
2545 proto_item
*pi
= NULL
;
2546 proto_tree
*ipv6_list
= NULL
;
2547 unsigned saved_offset
= 0;
2549 proto_tree_add_item(tree
, hf_ieee1905_ipv6_type_count
, tvb
, offset
,
2553 if (entry_count
== 0)
2556 ipv6_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
2558 &pi
, "IPv6 type list");
2559 saved_offset
= offset
;
2561 while (entry_index
< entry_count
) {
2562 proto_tree
*ipv6_tree
= NULL
, *addr_list
= NULL
;
2563 proto_item
*ipi
= NULL
;
2564 unsigned start_offset
= offset
;
2565 uint8_t addr_count
= 0, addr_index
= 0;
2567 ipv6_tree
= proto_tree_add_subtree_format(ipv6_list
,
2570 &ipi
, "IPv6 type %u info",
2573 proto_tree_add_item(ipv6_tree
, hf_ieee1905_ipv6_mac_address
, tvb
,
2577 proto_tree_add_item(ipv6_tree
, hf_ieee1905_ipv6_linklocal
, tvb
,
2578 offset
, 16, ENC_NA
);
2582 addr_count
= tvb_get_uint8(tvb
, offset
);
2583 proto_tree_add_item(ipv6_tree
, hf_ieee1905_ipv6_addr_count
,
2584 tvb
, offset
, 1, ENC_NA
);
2587 if (addr_count
== 0)
2590 addr_list
= proto_tree_add_subtree(ipv6_tree
, tvb
, offset
,
2592 ett_ipv6_type_addr_list
,
2593 NULL
, "IPv6 address list");
2595 while (addr_index
< addr_count
) {
2596 proto_tree
*addr_tree
= NULL
;
2597 proto_item
*atpi
= NULL
;
2598 uint8_t addr_type
= tvb_get_uint8(tvb
, offset
);
2600 addr_tree
= proto_tree_add_subtree_format(addr_list
, tvb
,
2601 offset
, 9, ett_ipv6_addr_info
,
2602 NULL
, "IPv6 address %u info",
2605 atpi
= proto_tree_add_item(addr_tree
, hf_ieee1905_ipv6_addr_type
,
2606 tvb
, offset
, 1, ENC_NA
);
2607 proto_item_append_text(atpi
, ", %s",
2608 val_to_str_const(addr_type
, ieee1905_ipv6_addr_type_vals
,
2612 proto_tree_add_item(addr_tree
, hf_ieee1905_ipv6_addr
, tvb
,
2613 offset
, 16, ENC_NA
);
2616 proto_tree_add_item(addr_tree
, hf_ieee1905_ipv6_dhcp_server
, tvb
,
2617 offset
, 16, ENC_NA
);
2623 proto_item_set_len(ipi
, offset
- start_offset
);
2628 proto_item_set_len(pi
, offset
- saved_offset
);
2634 * Dissect a push butteon generic phy event notification
2637 dissect_push_button_event_type_notification(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2638 proto_tree
*tree
, unsigned offset
)
2640 uint8_t media_type_count
= tvb_get_uint8(tvb
, offset
);
2641 uint8_t media_type_index
= 0;
2642 unsigned saved_offset
;
2643 proto_item
*pi
= NULL
;
2644 proto_tree
*phy_list
= NULL
;
2646 proto_tree_add_item(tree
, hf_ieee1905_generic_phy_media_types
,
2647 tvb
, offset
, 1, ENC_NA
);
2650 phy_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
2651 ett_push_button_phy_list
,
2652 &pi
, "Generic Phy media type list");
2653 saved_offset
= offset
;
2655 while (media_type_index
< media_type_count
) {
2656 proto_item
*ppi
= NULL
;
2657 proto_tree
*phy_tree
;
2658 unsigned start_offset
= offset
;
2659 uint8_t media_specific_len
;
2661 phy_tree
= proto_tree_add_subtree_format(phy_list
, tvb
,
2662 offset
, -1, ett_push_button_phy_info
,
2663 &ppi
, "Generic Phy media type %u info",
2666 proto_tree_add_item(phy_tree
, hf_ieee1905_local_intf_oui
,
2667 tvb
, offset
, 3, ENC_NA
);
2670 proto_tree_add_item(phy_tree
, hf_ieee1905_local_intf_variant
,
2671 tvb
, offset
, 1, ENC_NA
);
2674 media_specific_len
= tvb_get_uint8(tvb
, offset
);
2676 proto_tree_add_item(phy_tree
, hf_ieee1905_local_intf_spec_count
,
2677 tvb
, offset
, 1, ENC_NA
);
2680 proto_tree_add_item(phy_tree
, hf_ieee1905_local_intf_spec
, tvb
,
2681 offset
, media_specific_len
, ENC_NA
);
2682 offset
+= media_specific_len
;
2684 proto_item_set_len(ppi
, offset
- start_offset
);
2689 proto_item_set_len(pi
, offset
- saved_offset
);
2695 * Dissect a 1905 profile version TLV
2698 dissect_profile_version(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2699 proto_tree
*tree
, unsigned offset
)
2701 uint8_t profile_version
= tvb_get_uint8(tvb
, offset
);
2702 proto_item
*pi
= NULL
;
2704 pi
= proto_tree_add_item(tree
, hf_ieee1905_profile_version
, tvb
,
2706 proto_item_append_text(pi
, ", %s",
2707 val_to_str_const(profile_version
, ieee1905_profile_version_vals
,
2715 * Dissect the power off interface TLV
2718 dissect_power_off_interface(tvbuff_t
*tvb
, packet_info
*pinfo
,
2719 proto_tree
*tree
, unsigned offset
)
2721 uint8_t local_intf_count
= tvb_get_uint8(tvb
, offset
);
2722 uint8_t local_intf_index
= 0;
2723 proto_item
*pi
= NULL
;
2724 proto_tree
*intf_list
= NULL
;
2725 unsigned saved_offset
= 0;
2727 proto_tree_add_item(tree
, hf_ieee1905_power_off_intf_count
, tvb
,
2731 if (local_intf_count
== 0)
2734 intf_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
2735 ett_push_button_phy_list
,
2736 &pi
, "Generic Phy media type list");
2737 saved_offset
= offset
;
2739 while (local_intf_index
< local_intf_count
) {
2740 proto_tree
*intf_tree
= NULL
;
2741 proto_item
*ppi
= NULL
;
2742 uint8_t media_specific_len
= 0;
2744 intf_tree
= proto_tree_add_subtree_format(intf_list
, tvb
,
2745 offset
, -1, ett_power_off_info
,
2746 &ppi
, "Powered off interface %u info",
2749 proto_tree_add_item(intf_tree
, hf_ieee1905_mac_address
, tvb
,
2753 offset
= dissect_media_type(tvb
, pinfo
, intf_tree
, offset
);
2755 proto_tree_add_item(intf_tree
, hf_ieee1905_local_intf_oui
,
2756 tvb
, offset
, 3, ENC_NA
);
2759 proto_tree_add_item(intf_tree
, hf_ieee1905_local_intf_variant
,
2760 tvb
, offset
, 1, ENC_NA
);
2763 media_specific_len
= tvb_get_uint8(tvb
, offset
);
2765 proto_tree_add_item(intf_tree
, hf_ieee1905_local_intf_spec_count
,
2766 tvb
, offset
, 1, ENC_NA
);
2769 proto_tree_add_item(intf_tree
, hf_ieee1905_local_intf_spec
, tvb
,
2770 offset
, media_specific_len
, ENC_NA
);
2771 offset
+= media_specific_len
;
2776 proto_item_set_len(pi
, offset
- saved_offset
);
2782 * Dissect an interface power change information TLV.
2785 dissect_interface_power_change_info(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2786 proto_tree
*tree
, unsigned offset
)
2788 unsigned intf_count
= tvb_get_uint8(tvb
, offset
);
2789 unsigned intf_index
= 0;
2790 proto_tree
*intf_list
= NULL
;
2792 proto_tree_add_item(tree
, hf_ieee1905_power_change_intf_count
, tvb
,
2795 intf_list
= proto_tree_add_subtree(tree
, tvb
, offset
, intf_count
* 7,
2796 ett_power_change_list
, NULL
,
2797 "Interface power change list");
2799 while (intf_index
< intf_count
) {
2800 proto_tree
*intf_tree
= NULL
;
2801 proto_item
*pi
= NULL
;
2802 uint8_t power_state
= 0;
2804 intf_tree
= proto_tree_add_subtree_format(intf_list
, tvb
,
2805 offset
, 7, ett_power_change_info
,
2806 NULL
, "Power change interface %u info",
2809 proto_tree_add_item(intf_tree
, hf_ieee1905_power_change_mac_addr
,
2810 tvb
, offset
, 6, ENC_NA
);
2813 power_state
= tvb_get_uint8(tvb
, offset
);
2814 pi
= proto_tree_add_item(tree
, hf_ieee1905_power_change_state
, tvb
,
2816 proto_item_append_text(pi
, ", %s",
2817 val_to_str(power_state
,
2818 ieee1905_power_state_vals
,
2829 * Dissect an interface power change status TLV.
2832 dissect_interface_power_change_status(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2833 proto_tree
*tree
, unsigned offset
)
2835 unsigned intf_count
= tvb_get_uint8(tvb
, offset
);
2836 unsigned intf_index
= 0;
2837 proto_tree
*intf_list
= NULL
;
2839 proto_tree_add_item(tree
, hf_ieee1905_power_status_intf_count
, tvb
,
2842 intf_list
= proto_tree_add_subtree(tree
, tvb
, offset
, intf_count
* 7,
2843 ett_power_status_list
, NULL
,
2844 "Interface power status list");
2846 while (intf_index
< intf_count
) {
2847 proto_tree
*intf_tree
= NULL
;
2848 proto_item
*pi
= NULL
;
2849 uint8_t power_state
= 0;
2851 intf_tree
= proto_tree_add_subtree_format(intf_list
, tvb
,
2852 offset
, 7, ett_power_status_info
,
2853 NULL
, "Power status interface %u info",
2856 proto_tree_add_item(intf_tree
, hf_ieee1905_power_status_mac_addr
,
2857 tvb
, offset
, 6, ENC_NA
);
2860 power_state
= tvb_get_uint8(tvb
, offset
);
2861 pi
= proto_tree_add_item(tree
, hf_ieee1905_power_status_state
, tvb
,
2863 proto_item_append_text(pi
, ", %s",
2864 val_to_str(power_state
,
2865 ieee1905_power_status_vals
,
2876 dissect_l2_neighbor_device(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2877 proto_tree
*tree
, unsigned offset
)
2879 unsigned intf_count
= tvb_get_uint8(tvb
, offset
);
2880 unsigned intf_index
= 0;
2881 proto_tree
*intf_list
= NULL
;
2882 proto_item
*pi
= NULL
;
2883 unsigned saved_offset
= 0;
2885 proto_tree_add_item(tree
, hf_ieee1905_l2_neighbor_intf_count
, tvb
,
2889 if (intf_count
== 0)
2892 intf_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
2893 ett_l2_local_intf_list
, &pi
,
2894 "L2 local interface list");
2896 saved_offset
= offset
;
2898 while (intf_index
< intf_count
) {
2899 proto_tree
*intf_tree
= NULL
, *neighbor_list
= NULL
;
2900 proto_item
*ipi
= NULL
, *mpi
= NULL
;
2901 uint16_t neighbor_device_count
= 0, neighbor_device_index
= 0;
2902 unsigned start_offset
= offset
, ndl_start_offset
= 0;
2904 intf_tree
= proto_tree_add_subtree_format(intf_list
, tvb
, offset
, -1,
2905 ett_l2_neighbor_device_info
, &ipi
,
2906 "L2 neighbor device %u info", intf_count
);
2908 proto_tree_add_item(intf_tree
, hf_ieee1905_l2_local_intf_mac_addr
, tvb
,
2912 neighbor_device_count
= tvb_get_ntohs(tvb
, offset
);
2913 proto_tree_add_item(intf_tree
, hf_ieee1905_l2_neighbor_dev_count
, tvb
,
2914 offset
, 2, ENC_BIG_ENDIAN
);
2917 neighbor_list
= proto_tree_add_subtree(intf_tree
, tvb
, offset
, -1,
2918 ett_l2_neighbor_dev_list
, &mpi
,
2919 "Neighbor device list");
2921 ndl_start_offset
= offset
;
2923 while (neighbor_device_index
< neighbor_device_count
) {
2924 proto_tree
*neighbor_dev_tree
= NULL
;
2925 proto_item
*bmpi
= NULL
;
2926 uint16_t behind_mac_addr_count
= 0, behind_mac_addr_index
= 0;
2927 unsigned ndt_start_offset
= offset
;
2929 neighbor_dev_tree
= proto_tree_add_subtree_format(neighbor_list
,
2931 ett_l2_neighbor_dev_tree
, &bmpi
,
2932 "Neighbor device %u info",
2933 neighbor_device_index
);
2935 proto_tree_add_item(neighbor_dev_tree
,
2936 hf_ieee1905_l2_neighbor_mac_addr
, tvb
,
2940 behind_mac_addr_count
= tvb_get_ntohs(tvb
, offset
);
2941 proto_tree_add_item(neighbor_dev_tree
,
2942 hf_ieee1905_l2_behind_mac_addr_count
,
2943 tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2946 while(behind_mac_addr_index
< behind_mac_addr_count
) {
2947 proto_tree_add_item(neighbor_dev_tree
,
2948 hf_ieee1905_l2_behind_mac_addr
, tvb
,
2952 behind_mac_addr_index
++;
2955 neighbor_device_index
++;
2957 proto_item_set_len(bmpi
, offset
- ndt_start_offset
);
2961 proto_item_set_len(mpi
, offset
- ndl_start_offset
);
2962 proto_item_set_len(ipi
, offset
- start_offset
);
2967 proto_item_set_len(pi
, offset
- saved_offset
);
2973 dissect_supported_service(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
2974 proto_tree
*tree
, unsigned offset
)
2976 unsigned service_count
= tvb_get_uint8(tvb
, offset
);
2977 unsigned service_index
= 0;
2978 proto_tree
*service_list
= NULL
;
2980 proto_tree_add_item(tree
, hf_ieee1905_supported_service_count
, tvb
,
2984 service_list
= proto_tree_add_subtree(tree
, tvb
, offset
, service_count
,
2985 ett_supported_service_list
, NULL
,
2986 "Supported service list");
2988 while (service_index
< service_count
) {
2989 proto_item
*pi
= NULL
;
2990 uint8_t service
= tvb_get_uint8(tvb
, offset
);
2992 pi
= proto_tree_add_item(service_list
, hf_ieee1905_supported_service
,
2993 tvb
, offset
, 1, ENC_NA
);
2995 proto_item_append_text(pi
, ", %s",
2997 ieee1905_supported_service_vals
,
3008 * Dissect a searched service TLV\
3011 dissect_searched_service(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3012 proto_tree
*tree
, unsigned offset
)
3014 unsigned service_count
= tvb_get_uint8(tvb
, offset
);
3015 unsigned service_index
= 0;
3016 proto_tree
*service_list
= NULL
;
3018 proto_tree_add_item(tree
, hf_ieee1905_searched_service_count
, tvb
,
3022 service_list
= proto_tree_add_subtree(tree
, tvb
, offset
, service_count
,
3023 ett_searched_service_list
, NULL
,
3024 "Searched service list");
3026 while (service_index
< service_count
) {
3027 proto_item
*pi
= NULL
;
3028 uint8_t service
= tvb_get_uint8(tvb
, offset
);
3030 pi
= proto_tree_add_item(service_list
, hf_ieee1905_searched_service
,
3031 tvb
, offset
, 1, ENC_NA
);
3034 * Use the same set of values until we figure out if the spec has
3035 * an error in 17.2.2.
3037 proto_item_append_text(pi
, ", %s",
3039 ieee1905_supported_service_vals
,
3050 * Dissect an AP Radio Identifier TLV
3053 dissect_ap_radio_identifier(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3054 proto_tree
*tree
, unsigned offset
)
3056 proto_tree_add_item(tree
, hf_ieee1905_ap_radio_identifier
, tvb
,
3064 * Dissect an AP Operational BSS TLV
3067 dissect_ap_operational_bss(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3068 proto_tree
*tree
, unsigned offset
)
3070 proto_item
*rpi
= NULL
;
3071 proto_tree
*radio_list
= NULL
;
3072 uint8_t radio_count
= tvb_get_uint8(tvb
, offset
);
3073 uint8_t radio_index
= 0;
3074 unsigned saved_offset
= 0;
3076 proto_tree_add_item(tree
, hf_ieee1905_operatonal_bss_radio_count
,
3077 tvb
, offset
, 1, ENC_NA
);
3080 if (radio_count
== 0)
3083 radio_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
3084 ett_ap_operational_bss_list
, &rpi
,
3085 "AP operational BSS radio list");
3086 saved_offset
= offset
;
3088 while (radio_index
< radio_count
) {
3089 proto_tree
*radio_tree
= NULL
, *local_intf_list
= NULL
;
3090 proto_item
*opi
= NULL
, *ipi
= NULL
;
3091 unsigned start_offset
= offset
, list_start_offset
;
3092 uint8_t local_intf_count
= 0;
3093 uint8_t local_intf_index
= 0;
3095 radio_tree
= proto_tree_add_subtree_format(radio_list
,
3097 ett_ap_operational_bss_tree
, &opi
,
3098 "AP operational BSS %u info",
3101 proto_tree_add_item(radio_tree
, hf_ieee1905_ap_radio_identifier
,
3102 tvb
, offset
, 6, ENC_NA
);
3105 local_intf_count
= tvb_get_uint8(tvb
, offset
);
3107 proto_tree_add_item(radio_tree
, hf_ieee1905_ap_operational_intf_count
,
3108 tvb
, offset
, 1, ENC_NA
);
3111 list_start_offset
= offset
;
3113 local_intf_list
= proto_tree_add_subtree(radio_tree
, tvb
, offset
, -1,
3114 ett_ap_operational_bss_intf_list
, &ipi
,
3115 "AP operational BSS local interface list");
3117 while (local_intf_index
< local_intf_count
) {
3118 uint8_t ssid_len
= 0;
3119 proto_tree
*local_intf_tree
= NULL
;
3120 proto_item
*itpi
= NULL
;
3121 unsigned local_intf_offset
= offset
;
3123 local_intf_tree
= proto_tree_add_subtree_format(local_intf_list
,
3125 ett_ap_operational_bss_intf_tree
, &itpi
,
3126 "AP operational BSS Interface %u",
3129 proto_tree_add_item(local_intf_tree
, hf_ieee1905_ap_local_intf_mac_addr
,
3130 tvb
, offset
, 6, ENC_NA
);
3133 ssid_len
= tvb_get_uint8(tvb
, offset
);
3135 proto_tree_add_item(local_intf_tree
, hf_ieee1905_ap_local_intf_ssid_len
,
3136 tvb
, offset
, 1, ENC_NA
);
3139 proto_tree_add_item(local_intf_tree
, hf_ieee1905_ap_local_intf_ssid
,
3140 tvb
, offset
, ssid_len
, ENC_ASCII
);
3143 proto_item_set_len(itpi
, offset
- local_intf_offset
);
3148 proto_item_set_len(ipi
, offset
- list_start_offset
);
3149 proto_item_set_len(opi
, offset
- start_offset
);
3153 proto_item_set_len(rpi
, offset
- saved_offset
);
3159 * Dissect an Associated Clients TLV
3162 dissect_associated_clients(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3163 proto_tree
*tree
, unsigned offset
)
3165 uint8_t bss_count
= tvb_get_uint8(tvb
, offset
);
3166 uint8_t bss_index
= 0;
3167 proto_tree
*bss_list
= NULL
;
3168 proto_item
*pi
= NULL
;
3169 unsigned saved_offset
= 0;
3171 proto_tree_add_item(tree
, hf_ieee1905_assoc_clients_bss_count
,
3172 tvb
, offset
, 1, ENC_NA
);
3175 bss_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
3176 ett_assoc_clients_bss_list
, &pi
,
3177 "Associated BSS list");
3178 saved_offset
= offset
;
3180 while (bss_index
< bss_count
) {
3181 proto_tree
*bss_tree
= NULL
, *client_list
= NULL
;
3182 proto_item
*bpi
= NULL
;
3183 unsigned start_offset
= offset
;
3184 uint16_t client_count
= 0, client_index
= 0;
3187 bss_tree
= proto_tree_add_subtree_format(bss_list
,
3189 ett_assoc_client_bss_tree
, &bpi
,
3190 "Associated BSS %u",
3193 proto_tree_add_item(bss_tree
, hf_ieee1905_assoc_bssid
, tvb
,
3197 client_count
= tvb_get_ntohs(tvb
, offset
);
3198 proto_tree_add_item(bss_tree
, hf_ieee1905_bss_client_count
,
3199 tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3202 client_list
= proto_tree_add_subtree(bss_tree
, tvb
, offset
,
3203 client_count
* 8, ett_assoc_client_list
,
3204 NULL
, "Associated BSS clients list");
3206 while (client_index
< client_count
) {
3207 proto_tree
*client_tree
= NULL
;
3209 client_tree
= proto_tree_add_subtree_format(client_list
, tvb
,
3210 offset
, 8, ett_assoc_client_tree
,
3211 NULL
, "Client %u", client_index
);
3213 proto_tree_add_item(client_tree
, hf_ieee1905_bss_client_mac
,
3214 tvb
, offset
, 6, ENC_NA
);
3217 proto_tree_add_item(client_tree
, hf_ieee1905_bss_client_last_assoc
,
3218 tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3224 proto_item_set_len(bpi
, offset
- start_offset
);
3228 proto_item_set_len(pi
, offset
- saved_offset
);
3234 * Dissect an AP Capability TLV
3237 dissect_ap_capability(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3238 proto_tree
*tree
, unsigned offset
)
3240 static int * const capabilities
[] = {
3241 &hf_ieee1905_unassoc_sta_metrics_oper_flag
,
3242 &hf_ieee1905_unassoc_sta_metrics_non_oper_flag
,
3243 &hf_ieee1905_agent_init_steering
,
3247 proto_tree_add_bitmask(tree
, tvb
, offset
,
3248 hf_ieee1905_ap_capabilities_flags
,
3249 ett_ieee1905_capabilities_flags
,
3250 capabilities
, ENC_NA
);
3257 * Dissect an AP Radio Basic Capabilities TLV
3260 dissect_ap_radio_basic_capabilities(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3261 proto_tree
*tree
, unsigned offset
)
3263 uint8_t classes
= 0, class_index
= 0;
3264 proto_tree
*class_list
= NULL
;
3265 proto_item
*pi
= NULL
;
3266 unsigned saved_offset
= 0;
3268 proto_tree_add_item(tree
, hf_ieee1905_ap_radio_identifier
, tvb
,
3272 proto_tree_add_item(tree
, hf_ieee1905_ap_radio_max_bss
, tvb
,
3276 classes
= tvb_get_uint8(tvb
, offset
);
3277 proto_tree_add_item(tree
, hf_ieee1905_ap_radio_classes
, tvb
,
3281 class_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
3282 ett_radio_basic_class_list
, &pi
,
3283 "Supported operating classes list");
3284 saved_offset
= offset
;
3286 while (class_index
< classes
) {
3287 proto_tree
*class_tree
= NULL
;
3288 proto_tree
*non_op_channel_list
= NULL
;
3289 proto_item
*cpi
= NULL
;
3290 unsigned class_offset
= offset
;
3291 uint8_t non_op_channel_count
= 0;
3293 class_tree
= proto_tree_add_subtree_format(class_list
,
3295 ett_ap_radio_basic_cap_class_tree
, &cpi
,
3296 "Operating class %u",
3299 proto_tree_add_item(class_tree
, hf_ieee1905_ap_radio_class
, tvb
,
3303 proto_tree_add_item(class_tree
, hf_ieee1905_ap_radio_eirp
,
3304 tvb
, offset
, 1, ENC_NA
);
3307 non_op_channel_count
= tvb_get_uint8(tvb
, offset
);
3308 proto_tree_add_item(class_tree
, hf_ieee1905_ap_radio_non_op_count
,
3309 tvb
, offset
, 1, ENC_NA
);
3312 if (non_op_channel_count
> 0) {
3314 non_op_channel_list
= proto_tree_add_subtree(class_tree
, tvb
, offset
,
3315 non_op_channel_count
,
3316 ett_radio_basic_non_op_list
, NULL
,
3317 "Non-operating channel list");
3319 while (non_op_channel_count
> 0) {
3320 proto_tree_add_item(non_op_channel_list
,
3321 hf_ieee1905_radio_basic_non_op_channel
,
3322 tvb
, offset
, 1, ENC_NA
);
3325 non_op_channel_count
--;
3329 proto_item_set_len(cpi
, offset
- class_offset
);
3333 proto_item_set_len(pi
, offset
- saved_offset
);
3338 * Dissect an AP HT Capabilities TLV
3341 dissect_ap_ht_capabilities(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3342 proto_tree
*tree
, unsigned offset
)
3344 static int * const capabilities
[] = {
3345 &hf_ieee1905_max_supported_tx_streams
,
3346 &hf_ieee1905_max_supported_rx_streams
,
3347 &hf_ieee1905_short_gi_20mhz_flag
,
3348 &hf_ieee1905_short_gi_40mhz_flag
,
3349 &hf_ieee1905_ht_support_40mhz_flag
,
3353 proto_tree_add_item(tree
, hf_ieee1905_ap_ht_capabilities_radio_id
,
3354 tvb
, offset
, 6, ENC_NA
);
3357 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_ieee1905_ht_cap_flags
,
3358 ett_ht_cap_flags
, capabilities
, ENC_NA
);
3365 * Dissect an AP VHT Capabilities TLV
3368 static const value_string vht_supported_mcs_vals
[] = {
3369 { 0, "Support for VHT-MCS 0-7" },
3370 { 1, "Support for VHT-MCS 0-8" },
3371 { 2, "Support for VHT-MCS 0-9" },
3372 { 3, "Not supported" },
3376 static int * const tx_vht_mcs_map_headers
[] = {
3377 &hf_ieee1905_ap_vht_tx_mcs_map_8ss
,
3378 &hf_ieee1905_ap_vht_tx_mcs_map_7ss
,
3379 &hf_ieee1905_ap_vht_tx_mcs_map_6ss
,
3380 &hf_ieee1905_ap_vht_tx_mcs_map_5ss
,
3381 &hf_ieee1905_ap_vht_tx_mcs_map_4ss
,
3382 &hf_ieee1905_ap_vht_tx_mcs_map_3ss
,
3383 &hf_ieee1905_ap_vht_tx_mcs_map_2ss
,
3384 &hf_ieee1905_ap_vht_tx_mcs_map_1ss
,
3388 static int * const rx_vht_mcs_map_headers
[] = {
3389 &hf_ieee1905_ap_vht_rx_mcs_map_8ss
,
3390 &hf_ieee1905_ap_vht_rx_mcs_map_7ss
,
3391 &hf_ieee1905_ap_vht_rx_mcs_map_6ss
,
3392 &hf_ieee1905_ap_vht_rx_mcs_map_5ss
,
3393 &hf_ieee1905_ap_vht_rx_mcs_map_4ss
,
3394 &hf_ieee1905_ap_vht_rx_mcs_map_3ss
,
3395 &hf_ieee1905_ap_vht_rx_mcs_map_2ss
,
3396 &hf_ieee1905_ap_vht_rx_mcs_map_1ss
,
3401 dissect_ap_vht_capabilities(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3402 proto_tree
*tree
, unsigned offset
)
3404 static int * const capabilities
[] = {
3405 &hf_ieee1905_vht_max_supported_tx_streams
,
3406 &hf_ieee1905_vht_max_supported_rx_streams
,
3407 &hf_ieee1905_short_gi_80mhz_flag
,
3408 &hf_ieee1905_short_gi_160mhz_flag
,
3409 &hf_ieee1905_vht_support_80plus_mhz_flag
,
3410 &hf_ieee1905_vht_support_160_mhz_flag
,
3411 &hf_ieee1905_su_beamformer_capable_flag
,
3412 &hf_ieee1905_mu_beamformer_capable_flag
,
3416 proto_tree_add_item(tree
, hf_ieee1905_ap_vht_capabilities_radio_id
,
3417 tvb
, offset
, 6, ENC_NA
);
3420 proto_tree_add_bitmask_with_flags(tree
, tvb
, offset
,
3421 hf_ieee1905_ap_vht_supported_vht_tx_mcs
,
3422 ett_ieee1905_ap_vht_tx_mcs_set
,
3423 tx_vht_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
3426 proto_tree_add_bitmask_with_flags(tree
, tvb
, offset
,
3427 hf_ieee1905_ap_vht_supported_vht_rx_mcs
,
3428 ett_ieee1905_ap_vht_rx_mcs_set
,
3429 rx_vht_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
3432 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_ieee1905_vht_cap_flags
,
3433 ett_vht_cap_flags
, capabilities
, ENC_NA
);
3440 * Dissect an AP HE Capabilities TLV
3442 static int * const he_capabilities
[] = {
3443 &hf_ieee1905_he_max_supported_tx_streams
,
3444 &hf_ieee1905_he_max_supported_rx_streams
,
3445 &hf_ieee1905_he_support_80plus_mhz_flag
,
3446 &hf_ieee1905_he_support_160mhz_flag
,
3447 &hf_ieee1905_he_su_beamformer_capable_flag
,
3448 &hf_ieee1905_he_mu_beamformer_capable_flag
,
3449 &hf_ieee1905_ul_mu_mimo_capable_flag
,
3450 &hf_ieee1905_ul_mu_mimo_ofdma_capable_flag
,
3451 &hf_ieee1905_dl_mu_mimo_ofdma_capable_flag
,
3452 &hf_ieee1905_ul_ofdma_capable
,
3453 &hf_ieee1905_dl_ofdma_capable
,
3457 static const value_string max_he_mcs_1_ss_vals
[] = {
3458 { 0, "Support for HE-MCS 0-7 for 1 Spatial Stream" },
3459 { 1, "Support for HE-MCS 0-9 for 1 Spatial Stream" },
3460 { 2, "Support for HE-MCS 0-11 for 1 Spatial Stream" },
3461 { 3, "1 Spatial Stream not supported" },
3465 static const value_string max_he_mcs_2_ss_vals
[] = {
3466 { 0, "Support for HE-MCS 0-7 for 2 Spatial Streams" },
3467 { 1, "Support for HE-MCS 0-9 for 2 Spatial Streams" },
3468 { 2, "Support for HE-MCS 0-11 for 2 Spatial Streams" },
3469 { 3, "2 Spatial Streams not supported" },
3473 static const value_string max_he_mcs_3_ss_vals
[] = {
3474 { 0, "Support for HE-MCS 0-7 for 3 Spatial Streams" },
3475 { 1, "Support for HE-MCS 0-9 for 3 Spatial Streams" },
3476 { 2, "Support for HE-MCS 0-11 for 3 Spatial Streams" },
3477 { 3, "3 Spatial Streams not supported" },
3481 static const value_string max_he_mcs_4_ss_vals
[] = {
3482 { 0, "Support for HE-MCS 0-7 for 4 Spatial Streams" },
3483 { 1, "Support for HE-MCS 0-9 for 4 Spatial Streams" },
3484 { 2, "Support for HE-MCS 0-11 for 4 Spatial Streams" },
3485 { 3, "4 Spatial Streams not supported" },
3489 static const value_string max_he_mcs_5_ss_vals
[] = {
3490 { 0, "Support for HE-MCS 0-7 for 5 Spatial Streams" },
3491 { 1, "Support for HE-MCS 0-9 for 5 Spatial Streams" },
3492 { 2, "Support for HE-MCS 0-11 for 5 Spatial Streams" },
3493 { 3, "5 Spatial Streams not supported" },
3497 static const value_string max_he_mcs_6_ss_vals
[] = {
3498 { 0, "Support for HE-MCS 0-7 for 6 Spatial Streams" },
3499 { 1, "Support for HE-MCS 0-9 for 6 Spatial Streams" },
3500 { 2, "Support for HE-MCS 0-11 for 6 Spatial Streams" },
3501 { 3, "6 Spatial Streams not supported" },
3505 static const value_string max_he_mcs_7_ss_vals
[] = {
3506 { 0, "Support for HE-MCS 0-7 for 7 Spatial Streams" },
3507 { 1, "Support for HE-MCS 0-9 for 7 Spatial Streams" },
3508 { 2, "Support for HE-MCS 0-11 for 7 Spatial Streams" },
3509 { 3, "7 Spatial Streams not supported" },
3513 static const value_string max_he_mcs_8_ss_vals
[] = {
3514 { 0, "Support for HE-MCS 0-7 for 8 Spatial Streams" },
3515 { 1, "Support for HE-MCS 0-9 for 8 Spatial Streams" },
3516 { 2, "Support for HE-MCS 0-11 for 8 Spatial Streams" },
3517 { 3, "8 Spatial Streams not supported" },
3521 static int * const rx_he_mcs_map_headers
[] = {
3522 &hf_ieee1905_ap_he_rx_mcs_map_8ss
,
3523 &hf_ieee1905_ap_he_rx_mcs_map_7ss
,
3524 &hf_ieee1905_ap_he_rx_mcs_map_6ss
,
3525 &hf_ieee1905_ap_he_rx_mcs_map_5ss
,
3526 &hf_ieee1905_ap_he_rx_mcs_map_4ss
,
3527 &hf_ieee1905_ap_he_rx_mcs_map_3ss
,
3528 &hf_ieee1905_ap_he_rx_mcs_map_2ss
,
3529 &hf_ieee1905_ap_he_rx_mcs_map_1ss
,
3533 static int * const tx_he_mcs_map_headers
[] = {
3534 &hf_ieee1905_ap_he_tx_mcs_map_8ss
,
3535 &hf_ieee1905_ap_he_tx_mcs_map_7ss
,
3536 &hf_ieee1905_ap_he_tx_mcs_map_6ss
,
3537 &hf_ieee1905_ap_he_tx_mcs_map_5ss
,
3538 &hf_ieee1905_ap_he_tx_mcs_map_4ss
,
3539 &hf_ieee1905_ap_he_tx_mcs_map_3ss
,
3540 &hf_ieee1905_ap_he_tx_mcs_map_2ss
,
3541 &hf_ieee1905_ap_he_tx_mcs_map_1ss
,
3546 dissect_ap_he_capabilities(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3547 proto_tree
*tree
, unsigned offset
)
3549 uint8_t he_mcs_len
= 0;
3551 proto_tree_add_item(tree
, hf_ieee1905_ap_he_cap_radio_id
, tvb
,
3555 he_mcs_len
= tvb_get_uint8(tvb
, offset
);
3556 proto_tree_add_item(tree
, hf_ieee1905_ap_he_cap_mcs_length
, tvb
,
3561 * If the count is not 4, 8, or 12, it is an error.
3563 if (he_mcs_len
!= 4 && he_mcs_len
!= 8 && he_mcs_len
!= 12) {
3566 proto_tree
*mcs_set
= NULL
;
3568 mcs_set
= proto_tree_add_subtree(tree
, tvb
, offset
, 4,
3569 ett_ap_he_mcs_set
, NULL
,
3570 "Supported HE-MCS and NSS Set <= 80 MHz");
3572 proto_tree_add_bitmask_with_flags(mcs_set
, tvb
, offset
,
3573 hf_ieee1905_ap_he_cap_tx_mcs_le_80_mhz
,
3574 ett_ieee1905_ap_he_tx_mcs_set
,
3575 tx_he_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
3578 proto_tree_add_bitmask_with_flags(mcs_set
, tvb
, offset
,
3579 hf_ieee1905_ap_he_cap_rx_mcs_le_80_mhz
,
3580 ett_ieee1905_ap_he_rx_mcs_set
,
3581 rx_he_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
3584 if (he_mcs_len
> 4) {
3585 mcs_set
= proto_tree_add_subtree(tree
, tvb
, offset
, 4,
3586 ett_ap_he_mcs_set
, NULL
,
3587 "Supported HE-MCS and NSS Set 160 MHz");
3589 proto_tree_add_bitmask_with_flags(mcs_set
, tvb
, offset
,
3590 hf_ieee1905_ap_he_cap_tx_mcs_160_mhz
,
3591 ett_ieee1905_ap_he_tx_mcs_set
,
3592 tx_he_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
3595 proto_tree_add_bitmask_with_flags(mcs_set
, tvb
, offset
,
3596 hf_ieee1905_ap_he_cap_rx_mcs_160_mhz
,
3597 ett_ieee1905_ap_he_rx_mcs_set
,
3598 rx_he_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
3602 if (he_mcs_len
> 8) {
3603 mcs_set
= proto_tree_add_subtree(tree
, tvb
, offset
, 4,
3604 ett_ap_he_mcs_set
, NULL
,
3605 "Supported HE-MCS and NSS Set 80+80 MHz");
3607 proto_tree_add_bitmask_with_flags(mcs_set
, tvb
, offset
,
3608 hf_ieee1905_ap_he_cap_tx_mcs_80p80_mhz
,
3609 ett_ieee1905_ap_he_tx_mcs_set
,
3610 tx_he_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
3613 proto_tree_add_bitmask_with_flags(mcs_set
, tvb
, offset
,
3614 hf_ieee1905_ap_he_cap_rx_mcs_80p80_mhz
,
3615 ett_ieee1905_ap_he_rx_mcs_set
,
3616 rx_he_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
3621 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_ieee1905_he_cap_flags
,
3622 ett_ap_he_cap_flags
, he_capabilities
,
3630 * Dissect a Steering Policy TLV
3633 dissect_steering_policy(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3634 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
3636 uint8_t steering_disallowed_count
= tvb_get_uint8(tvb
, offset
);
3637 uint8_t btm_steering_disallowed_count
= 0;
3638 uint8_t radio_count
= 0, radio_index
= 0;
3640 proto_tree_add_item(tree
, hf_ieee1905_steering_policy_local_disallowed_count
,
3641 tvb
, offset
, 1, ENC_NA
);
3644 if (steering_disallowed_count
) {
3645 proto_tree
*disallowed_list
= NULL
;
3647 disallowed_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
3648 steering_disallowed_count
* 6,
3649 ett_steering_policy_disallowed_list
, NULL
,
3650 "Steering disallowed STA list");
3652 while (steering_disallowed_count
> 0) {
3653 proto_tree_add_item(disallowed_list
,
3654 hf_ieee1905_steering_disallowed_mac_addr
,
3655 tvb
, offset
, 6, ENC_NA
);
3657 steering_disallowed_count
--;
3661 btm_steering_disallowed_count
= tvb_get_uint8(tvb
, offset
);
3662 proto_tree_add_item(tree
, hf_ieee1905_btm_steering_disallowed_count
,
3663 tvb
, offset
, 1, ENC_NA
);
3666 if (btm_steering_disallowed_count
> 0) {
3667 proto_tree
*btm_disallowed_list
= NULL
;
3669 btm_disallowed_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
3670 btm_steering_disallowed_count
* 6,
3671 ett_btm_steering_policy_disallowed_list
, NULL
,
3672 "BTM steering disallowed STA list");
3674 while (btm_steering_disallowed_count
> 0) {
3676 proto_tree_add_item(btm_disallowed_list
,
3677 hf_ieee1905_btm_steering_disallowed_mac_addr
,
3678 tvb
, offset
, 6, ENC_NA
);
3681 btm_steering_disallowed_count
--;
3685 radio_count
= tvb_get_uint8(tvb
, offset
);
3686 proto_tree_add_item(tree
, hf_ieee1905_steering_policy_radio_count
,
3687 tvb
, offset
, 1, ENC_NA
);
3690 if (radio_count
> 0) {
3691 proto_tree
*policy_list
= NULL
;
3693 policy_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
3695 ett_btm_steering_radio_list
, NULL
,
3696 "BTM steering policy radio list");
3698 while (radio_index
< radio_count
) {
3699 proto_tree
*policy_tree
= NULL
;
3700 proto_item
*pi
= NULL
;
3703 policy_tree
= proto_tree_add_subtree_format(policy_list
,
3705 ett_ap_operational_bss_intf_tree
, NULL
,
3706 "Radio %u", radio_index
);
3708 proto_tree_add_item(policy_tree
, hf_ieee1905_steering_policy_radio_id
,
3709 tvb
, offset
, 6, ENC_NA
);
3712 policy
= tvb_get_uint8(tvb
, offset
);
3713 pi
= proto_tree_add_item(policy_tree
, hf_ieee1905_steering_policy_policy
,
3714 tvb
, offset
, 1, ENC_NA
);
3715 proto_item_append_text(pi
, ", %s",
3717 ieee1905_steering_policy_vals
,
3721 proto_tree_add_item(policy_tree
, hf_ieee1905_steering_policy_util
,
3722 tvb
, offset
, 1, ENC_NA
);
3725 proto_tree_add_item(policy_tree
,
3726 hf_ieee1905_steering_policy_rcpi_threshold
,
3727 tvb
, offset
, 1, ENC_NA
);
3739 rcpi_threshold_custom(char *result
, uint8_t rcpi_threshold
)
3741 if (rcpi_threshold
== 0) {
3742 snprintf(result
, ITEM_LABEL_LENGTH
, "Do not report STA Metrics based on RCPI threshold");
3743 } else if (rcpi_threshold
> 0 && rcpi_threshold
< 220) {
3744 snprintf(result
, ITEM_LABEL_LENGTH
, "RCPI Threshold = %.1fdBm",
3745 (float)rcpi_threshold
/2 - 110);
3746 } else if (rcpi_threshold
== 220) {
3747 snprintf(result
, ITEM_LABEL_LENGTH
, "RCPI Threshold >= 0dBm");
3749 snprintf(result
, ITEM_LABEL_LENGTH
, "Reserved");
3754 rcpi_hysteresis_custom(char *result
, uint8_t rcpi_hysteresis
)
3756 if (rcpi_hysteresis
== 0) {
3757 snprintf(result
, ITEM_LABEL_LENGTH
, "Use Agent's implementation-specific default RCPI Hysteresis margin");
3759 snprintf(result
, ITEM_LABEL_LENGTH
, "%udB", rcpi_hysteresis
);
3764 * Dissect a Metric Reporting Policy TLV
3767 dissect_metric_reporting_policy(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3768 proto_tree
*tree
, unsigned offset
)
3770 uint8_t radio_count
= 0, radio_index
= 0;
3771 proto_tree
*radio_list
= NULL
;
3772 proto_tree
*radio_tree
= NULL
;
3773 proto_item
*pi
= NULL
;
3774 unsigned saved_offset
= 0;
3775 static int * const ieee1905_reporting_policy_flags
[] = {
3776 &hf_ieee1905_assoc_sta_traffic_stats_inclusion
,
3777 &hf_ieee1905_assoc_sta_link_metrics_inclusion
,
3778 &hf_ieee1905_assoc_wf6_status_policy_inclusion
,
3779 &hf_ieee1905_reporting_policy_flags_reserved
,
3783 proto_tree_add_item(tree
, hf_ieee1905_ap_metrics_reporting_interval
,
3784 tvb
, offset
, 1, ENC_NA
);
3787 radio_count
= tvb_get_uint8(tvb
, offset
);
3788 proto_tree_add_item(tree
, hf_ieee1905_metric_reporting_radio_count
,
3789 tvb
, offset
, 1, ENC_NA
);
3792 if (radio_count
== 0)
3795 radio_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
3796 ett_metric_reporting_policy_list
, &pi
,
3797 "Metric reporting policy list");
3798 saved_offset
= offset
;
3800 while (radio_index
< radio_count
) {
3801 radio_tree
= proto_tree_add_subtree_format(radio_list
,
3803 ett_metric_reporting_policy_tree
, NULL
,
3804 "Reporting policy for radio %u",
3807 proto_tree_add_item(radio_tree
, hf_ieee1905_metric_reporting_policy_radio_id
,
3808 tvb
, offset
, 6, ENC_NA
);
3811 proto_tree_add_item(radio_tree
, hf_ieee1905_metric_rcpi_threshold
, tvb
,
3815 proto_tree_add_item(radio_tree
, hf_ieee1905_metric_reporting_rcpi_hysteresis
,
3816 tvb
, offset
, 1, ENC_NA
);
3819 proto_tree_add_item(radio_tree
, hf_ieee1905_metrics_channel_util_threshold
,
3820 tvb
, offset
, 1, ENC_NA
);
3823 proto_tree_add_bitmask_with_flags(radio_tree
, tvb
, offset
,
3824 hf_ieee1905_metrics_policy_flags
,
3825 ett_metric_policy_flags
,
3826 ieee1905_reporting_policy_flags
, ENC_NA
,
3833 proto_item_set_len(pi
, offset
- saved_offset
);
3839 * Dissect a Channel Preference TLV
3842 dissect_channel_preference(tvbuff_t
*tvb
, packet_info
*pinfo
,
3843 proto_tree
*tree
, unsigned offset
, uint16_t len
)
3845 uint8_t operating_classes
= 0, operating_index
= 0;
3846 proto_tree
*class_list
= NULL
;
3847 proto_item
*pi
= NULL
;
3848 unsigned saved_offset
= 0;
3849 static int * const preference
[] = {
3850 &hf_ieee1905_channel_pref_preference
,
3851 &hf_ieee1905_channel_pref_reason
,
3856 expert_add_info(pinfo
, tree
, &ei_ieee1905_malformed_tlv
);
3857 return offset
+ len
;
3860 proto_tree_add_item(tree
, hf_ieee1905_channel_preference_radio_id
,
3861 tvb
, offset
, 6, ENC_NA
);
3865 expert_add_info(pinfo
, tree
, &ei_ieee1905_malformed_tlv
);
3869 operating_classes
= tvb_get_uint8(tvb
, offset
);
3870 proto_tree_add_item(tree
, hf_ieee1905_channel_preference_class_count
,
3871 tvb
, offset
, 1, ENC_NA
);
3874 if (operating_classes
== 0)
3877 class_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
3878 ett_channel_preference_class_list
, &pi
,
3879 "Supported operating classes list");
3880 saved_offset
= offset
;
3883 * There should be at least 2 more bytes here ... add some more expert
3887 while (operating_index
< operating_classes
) {
3888 proto_tree
*class_tree
= NULL
;
3889 proto_item
*cpi
= NULL
;
3890 uint8_t channels
= 0;
3891 unsigned start_offset
= offset
;
3893 class_tree
= proto_tree_add_subtree_format(class_list
,
3895 ett_ap_channel_preference_class_tree
, &cpi
,
3896 "Operating class %u",
3899 proto_tree_add_item(class_tree
, hf_ieee1905_channel_pref_class
,
3900 tvb
, offset
, 1, ENC_NA
);
3903 channels
= tvb_get_uint8(tvb
, offset
);
3904 proto_tree_add_item(class_tree
, hf_ieee1905_channel_pref_channel_count
,
3905 tvb
, offset
, 1, ENC_NA
);
3909 proto_tree
*channel_list
= NULL
;
3911 channel_list
= proto_tree_add_subtree(class_tree
, tvb
, offset
,
3913 ett_channel_pref_channel_list
, NULL
,
3916 while (channels
> 0) {
3917 proto_tree_add_item(channel_list
,
3918 hf_ieee1905_channel_pref_channel
,
3919 tvb
, offset
, 1, ENC_NA
);
3927 proto_tree_add_bitmask(class_tree
, tvb
, offset
,
3928 hf_ieee1905_channel_prefs_flags
,
3929 ett_ieee1905_channel_prefs_flags
,
3930 preference
, ENC_NA
);
3933 proto_item_set_len(cpi
, offset
- start_offset
);
3938 proto_item_set_len(pi
, offset
- saved_offset
);
3944 * Dissect a Radio Operation Restriction TLV
3947 dissect_radio_operation_restriction(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
3948 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
3950 uint8_t op_class_count
= 0, op_class_index
= 0;
3951 proto_tree
*op_class_list
= NULL
, *op_class_tree
= NULL
;
3952 proto_item
*pi
= NULL
;
3953 unsigned saved_offset
= 0;
3955 proto_tree_add_item(tree
, hf_ieee1905_radio_restriction_radio_id
,
3956 tvb
, offset
, 6, ENC_NA
);
3959 op_class_count
= tvb_get_uint8(tvb
, offset
);
3960 proto_tree_add_item(tree
, hf_ieee1905_radio_restriction_op_class_count
,
3961 tvb
, offset
, 1, ENC_NA
);
3964 if (op_class_count
== 0)
3967 op_class_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
3968 ett_radio_restriction_op_class_list
, &pi
,
3969 "Restricted operating class list");
3970 saved_offset
= offset
;
3972 while (op_class_index
< op_class_count
) {
3973 proto_item
*ocpi
= NULL
;
3974 proto_tree
*channel_list
= NULL
, *channel_tree
= NULL
;
3975 unsigned start_offset
= offset
;
3976 uint8_t channel_count
= 0, channel_index
= 0;
3978 op_class_tree
= proto_tree_add_subtree_format(op_class_list
,
3980 ett_radio_restriction_op_class_tree
, &ocpi
,
3981 "Operating class %u",
3984 proto_tree_add_item(op_class_tree
, hf_ieee1905_radio_restriction_op_class
,
3985 tvb
, offset
, 1, ENC_NA
);
3988 channel_count
= tvb_get_uint8(tvb
, offset
);
3989 proto_tree_add_item(op_class_tree
, hf_ieee1905_radio_restriction_chan_count
,
3990 tvb
, offset
, 1, ENC_NA
);
3993 if (channel_count
== 0) {
3994 proto_item_set_len(ocpi
, offset
- start_offset
);
3999 channel_list
= proto_tree_add_subtree(op_class_tree
, tvb
, offset
, channel_count
* 2,
4000 ett_radio_restriction_channel_list
, NULL
,
4001 "Restricted channel(s) list");
4003 while (channel_index
< channel_count
) {
4004 uint8_t separation
= 0;
4005 unsigned sep_mhz
= 0;
4007 channel_tree
= proto_tree_add_subtree_format(channel_list
,
4009 ett_radio_restriction_channel_tree
, NULL
,
4010 "Channel restriction %u",
4013 proto_tree_add_item(channel_tree
, hf_ieee1905_radio_restriction_channel
,
4014 tvb
, offset
, 1, ENC_NA
);
4017 separation
= tvb_get_uint8(tvb
, offset
);
4018 sep_mhz
= separation
* 10;
4019 proto_tree_add_uint_format(channel_tree
,
4020 hf_ieee1905_radio_restriction_min_separation
,
4021 tvb
, offset
, 1, separation
,
4022 "Min frequency separation: %dMHz", sep_mhz
);
4028 proto_item_set_len(ocpi
, offset
- start_offset
);
4032 proto_item_set_len(pi
, offset
- saved_offset
);
4038 * Dissect a Transmit Power Limit TLV
4041 dissect_transmit_power_limit(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4042 proto_tree
*tree
, unsigned offset
)
4044 proto_tree_add_item(tree
, hf_ieee1905_trans_power_limit_radio_id
,
4045 tvb
, offset
, 6, ENC_NA
);
4048 proto_tree_add_item(tree
, hf_ieee1905_trans_power_limit_eirp
,
4049 tvb
, offset
, 1, ENC_NA
);
4056 * Dissect a Channel Selection Response TLV
4059 dissect_channel_selection_response(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4060 proto_tree
*tree
, unsigned offset
)
4062 uint8_t response_code
= 0;
4063 proto_item
*pi
= NULL
;
4065 proto_tree_add_item(tree
, hf_ieee1905_channel_select_resp_radio_id
,
4066 tvb
, offset
, 6, ENC_NA
);
4069 response_code
= tvb_get_uint8(tvb
, offset
);
4070 pi
= proto_tree_add_item(tree
, hf_ieee1905_channel_select_resp_code
, tvb
,
4072 proto_item_append_text(pi
, ", %s",
4073 val_to_str(response_code
,
4074 ieee1905_channel_select_resp_code_vals
,
4082 * Dissect an Operaring Channel Report TLV
4085 dissect_operating_channel_report(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4086 proto_tree
*tree
, unsigned offset
)
4088 uint8_t class_count
= 0, class_index
= 0;
4089 proto_tree
*class_list
= NULL
, *class_tree
= NULL
;
4091 proto_tree_add_item(tree
, hf_ieee1905_op_channel_report_radio_id
,
4092 tvb
, offset
, 6, ENC_NA
);
4095 class_count
= tvb_get_uint8(tvb
, offset
);
4096 proto_tree_add_item(tree
, hf_ieee1905_op_channel_report_classes
,
4097 tvb
, offset
, 1, ENC_NA
);
4100 if (class_count
> 0) {
4102 class_list
= proto_tree_add_subtree(tree
, tvb
, offset
, 2 * class_count
,
4103 ett_op_channel_report_class_list
, NULL
,
4104 "Operating classes list");
4106 while (class_index
< class_count
) {
4107 class_tree
= proto_tree_add_subtree_format(class_list
, tvb
,
4108 offset
, 2, ett_op_channel_report_class_tree
,
4109 NULL
, "Operating class %u", class_index
);
4111 proto_tree_add_item(class_tree
, hf_ieee1905_op_channel_class
,
4112 tvb
, offset
, 1, ENC_NA
);
4115 proto_tree_add_item(class_tree
, hf_ieee1905_op_channel_number
,
4116 tvb
, offset
, 1, ENC_NA
);
4123 proto_tree_add_item(tree
, hf_ieee1905_op_channel_eirp
, tvb
,
4131 * Dissect a Higher Layer Data TLV
4134 dissect_higher_layer_data(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4135 proto_tree
*tree
, unsigned offset
, uint16_t len
)
4137 uint8_t protocol
= tvb_get_uint8(tvb
, offset
);
4138 proto_item
*pi
= NULL
;
4140 pi
= proto_tree_add_item(tree
, hf_ieee1905_higher_layer_protocol
,
4141 tvb
, offset
, 1, ENC_NA
);
4143 proto_item_append_text(pi
, ", %s",
4144 val_to_str(protocol
,
4145 ieee1905_higher_layer_protocol_vals
,
4149 proto_tree_add_item(tree
, hf_ieee1905_higher_layer_data
, tvb
,
4150 offset
, len
- 1, ENC_NA
);
4157 * Dissect an unassociated sta link metric response TLV
4160 dissect_unassociated_sta_link_metric_response(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4161 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
4163 uint8_t sta_count
= 0, sta_index
= 0;
4164 proto_tree
*sta_list
= NULL
;
4166 proto_tree_add_item(tree
, hf_ieee1905_unassoc_sta_link_metric_op_class
,
4167 tvb
, offset
, 1, ENC_NA
);
4170 sta_count
= tvb_get_uint8(tvb
, offset
);
4171 proto_tree_add_item(tree
, hf_ieee1905_unassoc_sta_link_metric_sta_count
,
4172 tvb
, offset
, 1, ENC_NA
);
4175 sta_list
= proto_tree_add_subtree(tree
, tvb
, offset
, sta_count
* 12,
4176 ett_unassoc_sta_link_metric_list
, NULL
,
4177 "Unassociated STA list");
4179 while (sta_index
< sta_count
) {
4180 proto_tree
*sta_tree
= NULL
;
4182 sta_tree
= proto_tree_add_subtree_format(sta_list
, tvb
,
4183 offset
, 12, ett_unassoc_sta_link_metric_tree
,
4184 NULL
, "STA %u", sta_index
);
4186 proto_tree_add_item(sta_tree
, hf_ieee1905_unassoc_link_metric_mac_addr
,
4187 tvb
, offset
, 6, ENC_NA
);
4190 proto_tree_add_item(sta_tree
, hf_ieee1905_unassoc_link_metric_channel
,
4191 tvb
, offset
, 1, ENC_NA
);
4194 proto_tree_add_item(sta_tree
, hf_ieee1905_unassoc_link_metric_delta
,
4195 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
4198 proto_tree_add_item(sta_tree
, hf_ieee1905_unassoc_link_metric_uplink_rcpi
,
4199 tvb
, offset
, 1, ENC_NA
);
4209 * Dissect a Steering request TLV
4211 static int * const steering_flags
[] = {
4212 &hf_ieee1905_steering_request_mode_flag
,
4213 &hf_ieee1905_btm_disassoc_imminent_flag
,
4214 &hf_ieee1905_btm_abridged_flag
,
4215 &hf_ieee1905_steering_req_reserved
,
4220 dissect_steering_request(tvbuff_t
*tvb
, packet_info
*pinfo
,
4221 proto_tree
*tree
, unsigned offset
, uint16_t len
)
4224 uint8_t steering_count
= 0;
4225 proto_item
*pi
= NULL
;
4226 proto_tree
*sta_list
= NULL
, *bssid_list
= NULL
;
4227 uint8_t target_bssid_count
= 0;
4228 unsigned start_offset
= offset
;
4230 proto_tree_add_item(tree
, hf_ieee1905_source_bss_bssid
, tvb
, offset
,
4234 mode
= tvb_get_uint8(tvb
, offset
);
4235 proto_tree_add_bitmask(tree
, tvb
, offset
,
4236 hf_ieee1905_steering_request_flags
,
4237 ett_ieee1905_steering_request_flags
,
4238 steering_flags
, ENC_NA
);
4241 /* If Request Mode is 1, this field is ignored. */
4242 proto_tree_add_item(tree
, hf_ieee1905_steering_req_op_window
,
4243 tvb
, offset
, 2, ENC_BIG_ENDIAN
);
4246 proto_tree_add_item(tree
, hf_ieee1905_steering_btm_disass_timer
,
4247 tvb
, offset
, 2, ENC_BIG_ENDIAN
);
4250 steering_count
= tvb_get_uint8(tvb
, offset
);
4251 pi
= proto_tree_add_item(tree
, hf_ieee1905_steering_req_sta_count
,
4252 tvb
, offset
, 1, ENC_NA
);
4255 if (steering_count
> 0) {
4256 sta_list
= proto_tree_add_subtree(tree
, tvb
, offset
, steering_count
* 6,
4257 ett_assoc_control_list
, NULL
,
4258 "Steering request MAC list");
4260 while (steering_count
> 0) {
4261 proto_tree_add_item(sta_list
, hf_ieee1905_steering_req_sta_mac
,
4262 tvb
, offset
, 6, ENC_NA
);
4270 proto_item_append_text(pi
, " (Request applies to all STA(s) in BSS)");
4274 * These fields only appear if Request mode is one.
4277 target_bssid_count
= tvb_get_uint8(tvb
, offset
);
4278 proto_tree_add_item(tree
, hf_ieee1905_steering_req_target_bssid_count
,
4279 tvb
, offset
, 1, ENC_NA
);
4282 bssid_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
4283 target_bssid_count
* 8,
4284 ett_assoc_control_list
, NULL
,
4285 "Target BSSID list");
4287 while (target_bssid_count
> 0) {
4288 /* Have to add a tree here ... */
4289 proto_tree_add_item(bssid_list
,
4290 hf_ieee1905_steering_req_target_bssid
,
4291 tvb
, offset
, 6, ENC_NA
);
4294 proto_tree_add_item(bssid_list
,
4295 hf_ieee1905_steering_req_oper_class
,
4296 tvb
, offset
, 1, ENC_NA
);
4299 proto_tree_add_item(bssid_list
,
4300 hf_ieee1905_steering_req_target_channel
,
4301 tvb
, offset
, 1, ENC_NA
);
4304 target_bssid_count
--;
4308 if ((offset
- start_offset
) < len
) {
4309 proto_item
*ei
= NULL
;
4311 ei
= proto_tree_add_item(tree
, hf_ieee1905_extra_tlv_data
, tvb
, offset
,
4312 len
- (offset
- start_offset
), ENC_NA
);
4313 expert_add_info(pinfo
, ei
, &ei_ieee1905_extraneous_tlv_data
);
4314 offset
= start_offset
+ len
; /* Skip the extras. */
4320 * Dissect a Steering BTM report TLV
4323 dissect_steering_btm_report(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4324 proto_tree
*tree
, unsigned offset
, uint16_t len
)
4326 proto_tree_add_item(tree
, hf_ieee1905_btm_reporter_bssid
, tvb
, offset
,
4330 proto_tree_add_item(tree
, hf_ieee1905_btm_sta_mac_addr
, tvb
, offset
,
4334 proto_tree_add_item(tree
, hf_ieee1905_btm_report_status
, tvb
, offset
,
4339 * Handle the BSSID if present. Not sure which status values indicate
4340 * its presence. 13 is the number of bytes already dissected above.
4342 if (len
>= 13 + 6) {
4343 proto_tree_add_item(tree
, hf_ieee1905_btm_report_bssid
, tvb
, offset
,
4345 offset
+= len
- 13; /* Should check for more entries ... */
4352 * Dissect a Client association control request TLV
4355 dissect_client_association_control_request(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4356 proto_tree
*tree
, unsigned offset
)
4358 unsigned sta_list_count
= 0;
4359 unsigned control
= 0;
4360 proto_tree
*sta_list
= NULL
;
4361 proto_item
*pi
= NULL
;
4363 proto_tree_add_item(tree
, hf_ieee1905_client_assoc_bssid
, tvb
, offset
,
4367 control
= tvb_get_uint8(tvb
, offset
);
4368 pi
= proto_tree_add_item(tree
, hf_ieee1905_association_control
, tvb
,
4370 proto_item_append_text(pi
, ", %s",
4372 ieee1905_association_control_vals
,
4376 pi
= proto_tree_add_item(tree
, hf_ieee1905_association_control_validity
,
4377 tvb
, offset
, 2, ENC_BIG_ENDIAN
);
4378 proto_item_append_text(pi
, " seconds");
4381 sta_list_count
= tvb_get_uint8(tvb
, offset
);
4382 proto_tree_add_item(tree
, hf_ieee1905_client_assoc_sta_count
, tvb
,
4386 sta_list
= proto_tree_add_subtree(tree
, tvb
, offset
, sta_list_count
* 6,
4387 ett_assoc_control_list
, NULL
,
4388 "Client association control MAC list");
4390 while (sta_list_count
> 0) {
4391 proto_tree_add_item(sta_list
, hf_ieee1905_client_assoc_mac_addr
,
4392 tvb
, offset
, 6, ENC_NA
);
4402 * Dissect a Beacon Metrics Query TLV
4405 dissect_beacon_metrics_query(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4406 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
4408 uint8_t ssid_len
= 0;
4409 uint8_t channel_count
= 0, channel_index
= 0;
4410 unsigned saved_offset
= 0;
4411 proto_tree
*channel_report_list
= NULL
;
4412 proto_item
*pi
= NULL
;
4414 proto_tree_add_item(tree
, hf_ieee1905_beacon_metrics_query_mac_addr
,
4415 tvb
, offset
, 6, ENC_NA
);
4418 proto_tree_add_item(tree
, hf_ieee1905_beacon_metrics_query_op_class
,
4419 tvb
, offset
, 1, ENC_NA
);
4422 proto_tree_add_item(tree
, hf_ieee1905_beacon_metrics_query_channel
,
4423 tvb
, offset
, 1, ENC_NA
);
4426 proto_tree_add_item(tree
, hf_ieee1905_beacon_metrics_query_bssid
,
4427 tvb
, offset
, 6, ENC_NA
);
4430 proto_tree_add_item(tree
, hf_ieee1905_beacon_metrics_query_detail
,
4431 tvb
, offset
, 1, ENC_NA
);
4434 ssid_len
= tvb_get_uint8(tvb
, offset
);
4435 proto_tree_add_item(tree
, hf_ieee1905_beacon_metrics_query_ssid_len
,
4436 tvb
, offset
, 1, ENC_NA
);
4439 proto_tree_add_item(tree
, hf_ieee1905_beacon_metrics_query_ssid
,
4440 tvb
, offset
, ssid_len
, ENC_ASCII
);
4444 * This field should only be non-zero if query_channel above is
4445 * not 255 ... should check
4447 channel_count
= tvb_get_uint8(tvb
, offset
);
4448 proto_tree_add_item(tree
, hf_ieee1905_beacon_metrics_channel_count
,
4449 tvb
, offset
, 1, ENC_NA
);
4452 channel_report_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
4453 ett_beacon_metrics_query_list
, &pi
,
4454 "Channel report list");
4455 saved_offset
= offset
;
4457 while (channel_index
< channel_count
) {
4458 uint8_t report_len
= 0, report_index
= 0;
4459 proto_tree
*channel_report_tree
= NULL
;
4460 proto_item
*lpi
= NULL
;
4461 unsigned start_offset
= offset
;
4462 proto_tree
*channel_list
= NULL
;
4464 channel_report_tree
= proto_tree_add_subtree_format(channel_report_list
, tvb
,
4465 offset
, -1, ett_beacon_metrics_query_tree
,
4466 &lpi
, "Channel report %u", channel_index
);
4468 report_len
= tvb_get_uint8(tvb
, offset
);
4469 proto_tree_add_item(channel_report_tree
,
4470 hf_ieee1905_beacon_metrics_report_len
,
4471 tvb
, offset
, 1, ENC_NA
);
4474 proto_tree_add_item(channel_report_tree
,
4475 hf_ieee1905_beacon_metrics_report_op_class
,
4476 tvb
, offset
, 1, ENC_NA
);
4479 channel_list
= proto_tree_add_subtree(channel_report_tree
, tvb
, offset
,
4481 ett_beacon_metrics_query_channel_list
, NULL
,
4482 "Channel report list");
4483 while (report_index
< report_len
- 1) {
4484 proto_tree_add_item(channel_list
,
4485 hf_ieee1905_beacon_metrics_report_channel_id
,
4486 tvb
, offset
, 1, ENC_NA
);
4492 proto_item_set_len(lpi
, offset
- start_offset
);
4497 proto_item_set_len(pi
, offset
- saved_offset
);
4503 * Dissect a measurement report. This should go into ieee80211.c but not
4504 * for now. We expect a new TVB that contains only one measurement report.
4507 dissect_measurement_report(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4511 unsigned rep_len
= tvb_reported_length_remaining(tvb
, offset
);
4513 proto_tree_add_item(tree
, hf_ieee1905_measurement_report
, tvb
, offset
,
4521 * Dissect a Beacon Metrics Response TLV
4524 dissect_beacon_metrics_response(tvbuff_t
*tvb
, packet_info
*pinfo
,
4525 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
4527 uint8_t report_index
= 0;
4528 proto_item
*pi
= NULL
;
4529 proto_tree
*report_list
= NULL
;
4530 unsigned saved_offset
= 0;
4531 uint8_t meas_count
= 0;
4533 proto_tree_add_item(tree
, hf_ieee1905_beacon_metrics_response_mac_addr
,
4534 tvb
, offset
, 6, ENC_NA
);
4537 pi
= proto_tree_add_item(tree
, hf_ieee1905_beacon_metrics_response_reserved
,
4538 tvb
, offset
, 1, ENC_NA
);
4541 meas_count
= tvb_get_uint8(tvb
, offset
);
4542 pi
= proto_tree_add_item(tree
, hf_ieee1905_beacon_metrics_response_meas_num
,
4543 tvb
, offset
, 1, ENC_NA
);
4546 /* Now, the report(s) ... */
4547 report_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
4548 ett_beacon_metrics_response_report_list
, &pi
,
4549 "Measurement report list");
4550 saved_offset
= offset
;
4552 while (meas_count
> 0) {
4553 proto_tree
*report_tree
= NULL
;
4554 proto_item
*lpi
= NULL
;
4555 tvbuff_t
*new_tvb
= NULL
;
4556 uint8_t new_len
= 0;
4558 report_tree
= proto_tree_add_subtree_format(report_list
, tvb
,
4560 ett_beacon_metrics_response_report_tree
,
4561 &lpi
, "Beacon report %u", report_index
);
4564 * This is a measurement report, so the elt-id must be 39. The length
4565 * is the next field. Create a new TVB?
4567 new_len
= tvb_get_uint8(tvb
, offset
+ 1);
4568 new_tvb
= tvb_new_subset_length(tvb
, offset
+ 2, new_len
);
4570 dissect_measurement_report(new_tvb
, pinfo
, report_tree
);
4572 proto_item_set_len(lpi
, new_len
+ 2);
4574 offset
+= 2 + new_len
;
4579 proto_item_set_len(pi
, offset
- saved_offset
);
4585 * Dissect a Backhaul steering request TLV
4588 dissect_backhaul_steering_request(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4589 proto_tree
*tree
, unsigned offset
)
4591 proto_tree_add_item(tree
, hf_ieee1905_assoc_backhaul_station_mac
, tvb
,
4595 proto_tree_add_item(tree
, hf_ieee1905_backhaul_target_bssid
, tvb
, offset
,
4599 proto_tree_add_item(tree
, hf_ieee1905_backhaul_operating_class
, tvb
,
4603 proto_tree_add_item(tree
, hf_ieee1905_backhaul_channel_number
, tvb
,
4611 * Dissect a Backhaul steering response TLV
4614 dissect_backhaul_steering_response(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4615 proto_tree
*tree
, unsigned offset
)
4617 proto_item
*pi
= NULL
;
4620 proto_tree_add_item(tree
, hf_ieee1905_assoc_backhaul_station_mac
, tvb
,
4624 proto_tree_add_item(tree
, hf_ieee1905_backhaul_target_bssid
, tvb
, offset
,
4628 status
= tvb_get_uint8(tvb
, offset
);
4629 pi
= proto_tree_add_item(tree
, hf_ieee1905_backhaul_steering_status
,
4630 tvb
, offset
, 1, ENC_NA
);
4631 proto_item_append_text(pi
, ", %s",
4633 ieee1905_backhaul_status_vals
,
4641 * Dissect a client info TLV
4644 dissect_client_info(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4645 proto_tree
*tree
, unsigned offset
)
4647 proto_tree_add_item(tree
, hf_ieee1905_client_bssid
, tvb
, offset
,
4651 proto_tree_add_item(tree
, hf_ieee1905_client_mac_addr
, tvb
, offset
,
4658 * Dissect a client capability report TLV
4661 dissect_80211_information_elements(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, int offset
, int len
)
4663 int offset_end
= offset
+ len
;
4664 while (offset
< offset_end
) {
4665 int tlen
= add_tagged_field(pinfo
, tree
, tvb
, offset
, 0, NULL
, 0, NULL
);
4675 dissect_client_capability_report(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4676 proto_tree
*tree
, unsigned offset
, uint16_t len
)
4678 uint8_t result
= tvb_get_uint8(tvb
, offset
);
4679 proto_item
*pi
= NULL
;
4681 pi
= proto_tree_add_item(tree
, hf_ieee1905_client_capability_result
, tvb
,
4683 proto_item_append_text(pi
, ", %s",
4685 ieee1905_client_capability_result_vals
,
4689 if (len
> 1) { /* Must be the frame body of most recent assoc req */
4691 proto_tree_add_item(tree
, hf_ieee1905_client_capability_frame
, tvb
,
4692 offset
, len
, ENC_NA
);
4694 /* Attempt to decode Information Elements from the Assoc Request.
4696 * According to the EM standard, the frame can either be an Assoc or a Reassoc Request.
4697 * The data starts at the "Fixed Parameters", which have length 4 for an Assoc Request and
4698 * 10 for a Reassoc Request.
4700 * => The problem is that you don't know which of the 2 it is and where the IE start
4701 * => Assume the most occuring case and thus useful case (Assoc Request)
4703 if (len
>= ASSOC_REQ_BODY_FIXED_SIZE
) {
4704 proto_tree
*ie_tree
;
4706 unsigned ie_offset
= offset
+ ASSOC_REQ_BODY_FIXED_SIZE
;
4707 unsigned ie_len
= len
- ASSOC_REQ_BODY_FIXED_SIZE
;
4709 ie_tree
= proto_tree_add_subtree_format(tree
, tvb
, offset
, -1,
4710 ett_client_capability_ies
,
4711 &ie
, "Information Elements (%d bytes)", ie_len
);
4713 dissect_80211_information_elements(tvb
, pinfo
, ie_tree
, ie_offset
, ie_len
);
4723 * Dissect a client capability report TLV
4726 dissect_client_association_event(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4727 proto_tree
*tree
, unsigned offset
)
4729 static int * const association_flags
[] = {
4730 &hf_ieee1905_association_flag
,
4734 proto_tree_add_item(tree
, hf_ieee1905_association_client_mac_addr
,
4735 tvb
, offset
, 6, ENC_NA
);
4738 proto_tree_add_item(tree
, hf_ieee1905_association_agent_bssid
,
4739 tvb
, offset
, 6, ENC_NA
);
4742 proto_tree_add_bitmask(tree
, tvb
, offset
,
4743 hf_ieee1905_association_event_flags
,
4744 ett_ieee1905_association_event_flags
,
4745 association_flags
, ENC_NA
);
4752 * Dissect an AP Metrics Query TLV
4755 dissect_ap_metric_query(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4756 proto_tree
*tree
, unsigned offset
, uint16_t len
)
4758 proto_tree
*bssid_list
= NULL
;
4759 proto_item
*pi
= NULL
;
4760 unsigned saved_offset
;
4761 int remaining
= len
;
4763 proto_tree_add_item(tree
, hf_ieee1905_ap_metric_query_bssid_cnt
, tvb
,
4767 bssid_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
4768 ett_ap_metric_query_bssid_list
, &pi
,
4770 saved_offset
= offset
;
4772 while (remaining
>= 6) {
4773 proto_tree_add_item(bssid_list
, hf_ieee1905_ap_metric_query_bssid
,
4774 tvb
, offset
, 6, ENC_NA
);
4779 proto_item_set_len(pi
, offset
- saved_offset
);
4785 * Dissect an STA MAC address type TLV
4787 #define INCLUDE_ESTIMATED_SP_AC_EQ_BE 0x80
4788 #define INCLUDE_ESTIMATED_SP_AC_EQ_BK 0x40
4789 #define INCLUDE_ESTIMATED_SP_AC_EQ_VO 0x20
4790 #define INCLUDE_ESTIMATED_SP_AC_EQ_VI 0x10
4793 dissect_ap_metrics(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4794 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
4796 uint8_t presence_flags
= 0;
4797 static int * const flags
[] = {
4798 &hf_ieee1905_include_estimated_spi_ac_eq_be
,
4799 &hf_ieee1905_include_estimated_spi_ac_eq_bk
,
4800 &hf_ieee1905_include_estimated_spi_ac_eq_vo
,
4801 &hf_ieee1905_include_estimated_spi_ac_eq_vi
,
4805 proto_tree_add_item(tree
, hf_ieee1905_ap_metrics_agent_bssid
,
4806 tvb
, offset
, 6, ENC_NA
);
4809 proto_tree_add_item(tree
, hf_ieee1905_ap_metrics_channel_utilization
,
4810 tvb
, offset
, 1, ENC_NA
);
4813 proto_tree_add_item(tree
, hf_ieee1905_ap_metrics_sta_count
,
4814 tvb
, offset
, 2, ENC_BIG_ENDIAN
);
4817 presence_flags
= tvb_get_uint8(tvb
, offset
);
4818 proto_tree_add_bitmask_with_flags(tree
, tvb
, offset
,
4819 hf_ieee1905_ap_metrics_flags
,
4820 ett_ieee1905_ap_metrics_flags
, flags
, ENC_NA
,
4825 * This field should always be present, and the associated flag bit
4826 * should be 1 (TODO:check that).
4828 proto_tree_add_item(tree
, hf_ieee1905_ap_metrics_service_params_be
,
4829 tvb
, offset
, 3, ENC_NA
);
4833 * We should indicate an error if the field is too small. Also,
4834 * need to know the format of these fields.
4836 if (presence_flags
& INCLUDE_ESTIMATED_SP_AC_EQ_BK
) {
4837 proto_tree_add_item(tree
, hf_ieee1905_ap_metrics_service_params_bk
,
4838 tvb
, offset
, 3, ENC_NA
);
4842 if (presence_flags
& INCLUDE_ESTIMATED_SP_AC_EQ_VO
) {
4843 proto_tree_add_item(tree
, hf_ieee1905_ap_metrics_service_params_vo
,
4844 tvb
, offset
, 3, ENC_NA
);
4848 if (presence_flags
& INCLUDE_ESTIMATED_SP_AC_EQ_VI
) {
4849 proto_tree_add_item(tree
, hf_ieee1905_ap_metrics_service_params_vi
,
4850 tvb
, offset
, 3, ENC_NA
);
4858 * Dissect an STA MAC address type TLV
4861 dissect_sta_mac_address_type(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4862 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
4864 proto_tree_add_item(tree
, hf_ieee1905_sta_mac_address_type
, tvb
,
4872 * Dissect an Associated STA Link Metrics TLV
4875 dissect_associated_sta_link_metrics(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4876 proto_tree
*tree
, unsigned offset
, uint16_t len
)
4878 proto_tree
*bss_list
= NULL
;
4879 proto_tree
*bss_tree
= NULL
;
4880 proto_item
*pi
= NULL
;
4882 uint8_t bss_list_index
= 0;
4883 unsigned start_offset
= 0;
4885 proto_tree_add_item(tree
, hf_ieee1905_assoc_sta_mac_addr
, tvb
, offset
,
4890 proto_tree_add_item(tree
, hf_ieee1905_assoc_sta_bssid_count
, tvb
, offset
,
4895 bss_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
4896 ett_sta_list_metrics_bss_list
, NULL
,
4900 while (remaining
>= 19) {
4901 bss_tree
= proto_tree_add_subtree_format(bss_list
, tvb
,
4902 offset
, 18, ett_sta_list_metrics_bss_tree
,
4903 NULL
, "BSS %u", bss_list_index
);
4905 proto_tree_add_item(bss_tree
, hf_ieee1905_assoc_sta_link_metrics_bssid
,
4906 tvb
, offset
, 6, ENC_NA
);
4909 proto_tree_add_item(bss_tree
, hf_ieee1905_assoc_sta_link_metrics_time_delta
,
4910 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
4913 proto_tree_add_item(bss_tree
, hf_ieee1905_assoc_sta_link_metrics_dwn_rate
,
4914 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
4917 proto_tree_add_item(bss_tree
, hf_ieee1905_assoc_sta_link_metrics_up_rate
,
4918 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
4921 proto_tree_add_item(bss_tree
, hf_ieee1905_assoc_sta_link_metrics_rcpi
,
4922 tvb
, offset
, 1, ENC_NA
);
4929 proto_item_set_len(pi
, offset
- start_offset
);
4931 if (remaining
> 0) {
4932 offset
+= remaining
;
4939 * Dissect an Associated Wi-Fi 6 STA Status Report TLV
4942 dissect_associated_wf6_sta_status_report(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
4943 proto_tree
*tree
, unsigned offset
, uint16_t len
)
4945 proto_tree
*tid_list
= NULL
;
4946 proto_tree
*tid_tree
= NULL
;
4947 proto_item
*pi
= NULL
;
4949 uint8_t tid_list_index
= 0;
4950 unsigned start_offset
= 0;
4952 proto_tree_add_item(tree
, hf_ieee1905_assoc_wf6_sta_mac_addr
, tvb
, offset
,
4955 len
-= 6; //BUG: Introduce remaining variable
4957 proto_tree_add_item(tree
, hf_ieee1905_assoc_wf6_sta_tid_count
, tvb
, offset
,
4962 tid_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
4963 ett_sta_wf6_status_report_tid_list
, NULL
,
4967 while (remaining
>= 2) {
4968 uint8_t tid
= tvb_get_uint8(tvb
, offset
);
4970 tid_tree
= proto_tree_add_subtree_format(tid_list
, tvb
,
4971 offset
, 2, ett_sta_wf6_status_report_tid_tree
,
4972 NULL
, "TID %u (%0x)", tid_list_index
, tid
);
4974 proto_tree_add_item(tid_tree
, hf_ieee1905_assoc_wf6_sta_tid
,
4975 tvb
, offset
, 1, ENC_NA
);
4978 proto_tree_add_item(tid_tree
, hf_ieee1905_assoc_wf6_sta_queue_size
,
4979 tvb
, offset
, 1, ENC_NA
);
4986 proto_item_set_len(pi
, offset
- start_offset
);
4988 if (remaining
> 0) {
4989 offset
+= remaining
;
4996 * Dissect an Associated STA extended link metrics TLV
4999 dissect_associated_sta_extended_link_metrics(tvbuff_t
*tvb
,
5000 packet_info
*pinfo _U_
, proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
5002 uint8_t bssid_count
= 0;
5004 proto_tree_add_item(tree
, hf_ieee1905_assoc_sta_ext_link_metrics_mac_addr
,
5005 tvb
, offset
, 6, ENC_NA
);
5008 bssid_count
= tvb_get_uint8(tvb
, offset
);
5009 proto_tree_add_item(tree
, hf_ieee1905_assoc_sta_ext_link_metrics_count
, tvb
,
5013 if (bssid_count
> 0) {
5014 proto_tree
*bss_list
= NULL
, *bss_tree
= NULL
;
5015 proto_item
*bli
= NULL
;
5016 unsigned saved_offset
= offset
;
5017 uint8_t bssid_id
= 0;
5019 bss_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
5020 ett_sta_extended_link_metrics_list
,
5022 while (bssid_id
< bssid_count
) {
5023 bss_tree
= proto_tree_add_subtree_format(bss_list
, tvb
, offset
, 22,
5024 ett_sta_extended_link_metrics_tree
,
5025 NULL
, "BSS #%u", bssid_id
);
5027 proto_tree_add_item(bss_tree
,
5028 hf_ieee1905_assoc_sta_extended_metrics_bssid
,
5029 tvb
, offset
, 6, ENC_NA
);
5032 proto_tree_add_item(bss_tree
,
5033 hf_ieee1905_assoc_sta_extended_metrics_lddlr
,
5034 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5037 proto_tree_add_item(bss_tree
,
5038 hf_ieee1905_assoc_sta_extended_metrics_ldulr
,
5039 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5042 proto_tree_add_item(bss_tree
,
5043 hf_ieee1905_assoc_sta_extended_metrics_ur
,
5044 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5047 proto_tree_add_item(bss_tree
,
5048 hf_ieee1905_assoc_sta_extended_metrics_tr
,
5049 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5054 proto_item_set_len(bli
, offset
- saved_offset
);
5061 * Dissect an Unassociated STA Link Metrics Query TLV
5064 dissect_unassociated_sta_link_metrics_query(tvbuff_t
*tvb
,
5065 packet_info
*pinfo _U_
, proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
5067 uint8_t channel_count
= 0;
5068 uint8_t mac_count
= 0;
5069 proto_tree
*channel_list
= NULL
;
5070 proto_tree
*sta_mac_list
= NULL
;
5071 proto_item
*pi
= NULL
, *ci
= NULL
;
5072 unsigned saved_offset
= 0, chan_saved_offset
= 0;
5074 proto_tree_add_item(tree
, hf_ieee1905_unassoc_sta_link_metrics_class
,
5075 tvb
, offset
, 1, ENC_NA
);
5078 channel_count
= tvb_get_uint8(tvb
, offset
);
5079 proto_tree_add_item(tree
, hf_ieee1905_unassoc_sta_link_channel_count
,
5080 tvb
, offset
, 1, ENC_NA
);
5083 if (channel_count
> 0) {
5084 chan_saved_offset
= offset
;
5086 channel_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
5087 ett_sta_link_metrics_query_channel_list
, &ci
,
5090 while (channel_count
> 0) {
5091 proto_tree_add_item(channel_list
,
5092 hf_ieee1905_unassoc_metrics_channel
,
5093 tvb
, offset
, 1, ENC_NA
);
5097 mac_count
= tvb_get_uint8(tvb
, offset
);
5099 proto_tree_add_item(channel_list
,
5100 hf_ieee1905_unassoc_metrics_mac_count
,
5101 tvb
, offset
, 1, ENC_NA
);
5104 saved_offset
= offset
;
5105 sta_mac_list
= proto_tree_add_subtree(channel_list
, tvb
, offset
, -1,
5106 ett_sta_link_link_mac_addr_list
, &pi
,
5107 "MAC address list");
5110 proto_tree_add_item(sta_mac_list
,
5111 hf_ieee1905_unassoc_link_metrics_query_mac
,
5112 tvb
, offset
, 6, ENC_NA
);
5117 proto_item_set_len(pi
, offset
- saved_offset
);
5119 proto_item_set_len(ci
, offset
- chan_saved_offset
);
5126 * Dissect a Device Information Type TLV
5129 dissect_device_information_type(tvbuff_t
*tvb
, packet_info
*pinfo
,
5130 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
5132 proto_item
*pi
= NULL
;
5133 proto_tree
*sub_tree
= NULL
;
5135 unsigned start_offset
;
5137 proto_tree_add_item(tree
, hf_ieee1905_al_mac_address_type
, tvb
,
5141 count
= tvb_get_uint8(tvb
, offset
);
5142 proto_tree_add_item(tree
, hf_ieee1905_local_interface_count
, tvb
,
5145 start_offset
= offset
;
5147 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
5148 ett_device_information_list
,
5149 &pi
, "Local interface list");
5151 offset
= dissect_local_interface_list(tvb
, pinfo
, sub_tree
,
5154 proto_item_set_len(pi
, offset
- start_offset
);
5160 * Dissect a Transmitter Link Metric TLV
5163 dissect_transmitter_link_metric(tvbuff_t
*tvb
, packet_info
*pinfo
,
5164 proto_tree
*tree
, unsigned offset
, uint16_t len
)
5168 proto_tree_add_item(tree
, hf_ieee1905_responder_al_mac_addr
, tvb
,
5172 proto_tree_add_item(tree
, hf_ieee1905_neighbor_al_mac_addr
, tvb
,
5176 remaining
= len
- 12;
5177 while (remaining
> 0) {
5178 proto_tree_add_item(tree
, hf_ieee1905_receiving_al_mac_addr
,
5179 tvb
, offset
, 6, ENC_NA
);
5182 proto_tree_add_item(tree
, hf_ieee1905_neighbor_al_mac_addr
,
5183 tvb
, offset
, 6, ENC_NA
);
5186 offset
= dissect_media_type(tvb
, pinfo
, tree
, offset
);
5188 proto_tree_add_item(tree
, hf_ieee1905_bridge_flag
, tvb
, offset
,
5192 proto_tree_add_item(tree
, hf_ieee1905_packet_errors
, tvb
, offset
,
5196 proto_tree_add_item(tree
, hf_ieee1905_transmitted_packets
, tvb
,
5197 offset
, 4, ENC_BIG_ENDIAN
);
5200 proto_tree_add_item(tree
, hf_ieee1905_mac_throughput_capacity
, tvb
,
5201 offset
, 2, ENC_BIG_ENDIAN
);
5204 proto_tree_add_item(tree
, hf_ieee1905_link_availability
, tvb
,
5205 offset
, 2, ENC_BIG_ENDIAN
);
5208 proto_tree_add_item(tree
, hf_ieee1905_phy_rate
, tvb
, offset
,
5219 * Dissect a Receiver Link Metric TLV
5222 dissect_receiver_link_metric(tvbuff_t
*tvb
, packet_info
*pinfo
,
5223 proto_tree
*tree
, unsigned offset
, uint16_t len
)
5227 proto_tree_add_item(tree
, hf_ieee1905_responder_al_mac_addr
, tvb
,
5230 proto_tree_add_item(tree
, hf_ieee1905_neighbor_al_mac_addr
, tvb
,
5234 remaining
= len
- 12;
5235 while (remaining
> 0) {
5236 proto_tree_add_item(tree
, hf_ieee1905_receiving_al_mac_addr
,
5237 tvb
, offset
, 6, ENC_NA
);
5240 proto_tree_add_item(tree
, hf_ieee1905_neighbor_al_mac_addr
,
5241 tvb
, offset
, 6, ENC_NA
);
5244 offset
= dissect_media_type(tvb
, pinfo
, tree
, offset
);
5246 proto_tree_add_item(tree
, hf_ieee1905_packet_errors
, tvb
, offset
,
5250 proto_tree_add_item(tree
, hf_ieee1905_packets_received
, tvb
,
5251 offset
, 4, ENC_BIG_ENDIAN
);
5254 proto_tree_add_item(tree
, hf_ieee1905_rssi
, tvb
, offset
, 1, ENC_NA
);
5263 * Dissect an Associated STA Traffic Stats TLV
5266 dissect_associated_sta_traffic_stats(tvbuff_t
*tvb
,
5267 packet_info
*pinfo _U_
, proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
5269 proto_tree_add_item(tree
, hf_ieee1905_assoc_sta_traffic_stats_mac_addr
, tvb
,
5273 proto_tree_add_item(tree
, hf_ieee1905_assoc_sta_traffic_stats_bytes_sent
,
5274 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5277 proto_tree_add_item(tree
, hf_ieee1905_assoc_sta_traffic_stats_bytes_rcvd
,
5278 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5281 proto_tree_add_item(tree
, hf_ieee1905_assoc_sta_traffic_stats_packets_sent
,
5282 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5285 proto_tree_add_item(tree
, hf_ieee1905_assoc_sta_traffic_stats_packets_rcvd
,
5286 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5289 proto_tree_add_item(tree
, hf_ieee1905_assoc_sta_traffic_stats_tx_pkt_errs
,
5290 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5293 proto_tree_add_item(tree
, hf_ieee1905_assoc_sta_traffic_stats_rx_pkt_errs
,
5294 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5297 proto_tree_add_item(tree
, hf_ieee1905_assoc_sta_traffic_stats_retrans_count
,
5298 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5305 * Dissect an Error code TLV
5308 dissect_error_code(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
,
5309 unsigned offset
, uint16_t len _U_
)
5311 proto_item
*pi
= NULL
;
5312 uint8_t error_code
= tvb_get_uint8(tvb
, offset
);
5314 pi
= proto_tree_add_item(tree
, hf_ieee1905_error_code_value
, tvb
,
5316 proto_item_append_text(pi
, ", %s",
5317 val_to_str(error_code
,
5318 ieee1905_error_code_vals
,
5322 proto_tree_add_item(tree
, hf_ieee1905_error_code_mac_addr
, tvb
, offset
,
5330 * Dissect a Channel Scan Reporting Policy TLV
5332 static int * const channel_scan_rep_policy_headers
[] = {
5333 &hf_ieee1905_channel_scan_pol_report
,
5334 &hf_ieee1905_channel_scan_pol_reserved
,
5338 static const true_false_string report_independent_scans_tfs
= {
5339 "Report Independent Channel Scans",
5340 "Do not report Independent Channel Scans unless requested"
5344 dissect_channel_scan_reporting_policy(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
5345 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
5347 proto_tree_add_bitmask(tree
, tvb
, offset
,
5348 hf_ieee1905_channel_scan_rep_policy
,
5349 ett_channel_scan_rep_policy
,
5350 channel_scan_rep_policy_headers
, ENC_NA
);
5357 * Dissect a Channel Scan Capabilities TLV
5359 static int * const channel_scan_capa_flags_headers
[] = {
5360 &hf_ieee1905_channel_scan_capa_flags_on_boot_only
,
5361 &hf_ieee1905_channel_scan_capa_flags_scan_impact
,
5362 &hf_ieee1905_channel_scan_capa_flags_reserved
,
5366 static const true_false_string channel_scan_capa_flags_on_boot_only_tfs
= {
5367 "Agent can only perform scan on boot",
5368 "Agent can perform requested scans"
5371 static const value_string channel_scan_capa_flags_impact_vals
[] = {
5373 { 1, "Reduced number of spacial streams" },
5374 { 2, "Time slicing impairment" },
5375 { 3, "Radio unavailable for >= 2 seconds" },
5380 dissect_channel_scan_capabilities(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
5381 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
5383 proto_tree
*radio_list
= NULL
;
5384 proto_item
*rli
= NULL
;
5385 uint8_t radio_count
= 0, radio_num
= 0;
5386 unsigned radio_list_start
= 0;
5388 radio_count
= tvb_get_uint8(tvb
, offset
);
5389 proto_tree_add_item(tree
, hf_ieee1905_channel_scan_capabilities_radio_num
,
5390 tvb
, offset
, 1, ENC_NA
);
5393 radio_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
5394 ett_channel_scan_capa_radio_list
,
5395 &rli
, "Radio List");
5396 radio_list_start
= offset
;
5398 while (radio_num
< radio_count
) {
5399 proto_tree
*radio_tree
= NULL
;
5400 proto_item
*ri
= NULL
;
5401 proto_tree
*oper_class_list
= NULL
;
5402 proto_item
*cli
= NULL
;
5403 unsigned start_offset
= offset
;
5404 uint8_t oper_class_count
= 0, oper_class_num
= 0;
5405 unsigned class_start_offset
= 0;
5407 radio_tree
= proto_tree_add_subtree_format(radio_list
, tvb
, offset
,
5408 -1, ett_channel_scan_capa_radio
,
5409 &ri
, "Radio %u", radio_num
);
5411 proto_tree_add_item(radio_tree
, hf_ieee1905_channel_scan_capa_radio_id
,
5412 tvb
, offset
, 6, ENC_NA
);
5415 proto_tree_add_bitmask(radio_tree
, tvb
, offset
,
5416 hf_ieee1905_channel_scan_capa_flags
,
5417 ett_channel_scan_capa_flags
,
5418 channel_scan_capa_flags_headers
, ENC_NA
);
5421 proto_tree_add_item(radio_tree
,
5422 hf_ieee1905_channel_scan_capa_min_scan_interval
,
5423 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5426 oper_class_count
= tvb_get_uint8(tvb
, offset
);
5427 proto_tree_add_item(radio_tree
, hf_ieee1905_channel_scan_capa_class_num
,
5428 tvb
, offset
, 1, ENC_NA
);
5431 oper_class_list
= proto_tree_add_subtree(radio_tree
, tvb
, offset
, -1,
5432 ett_channel_scan_capa_class_list
,
5433 &cli
, "Operating Class List");
5435 class_start_offset
= offset
;
5436 while (oper_class_num
< oper_class_count
) {
5437 uint8_t chan_num
= 0;
5438 proto_tree
*oper_class
= NULL
;
5439 proto_item
*ci
= NULL
;
5440 int oper_class_start_offset
= offset
;
5442 oper_class
= proto_tree_add_subtree_format(oper_class_list
, tvb
,
5444 ett_channel_scan_capa_class
,
5445 &ci
, "Operating Class %d",
5449 proto_tree_add_item(oper_class
,
5450 hf_ieee1905_channel_scan_capa_oper_class
, tvb
,
5454 chan_num
= tvb_get_uint8(tvb
, offset
);
5455 proto_tree_add_item(oper_class
,
5456 hf_ieee1905_channel_scan_capa_oper_class_chan_cnt
,
5457 tvb
, offset
, 1, ENC_NA
);
5462 proto_tree
*channels
= NULL
;
5464 channels
= proto_tree_add_subtree(oper_class
, tvb
, offset
, chan_num
,
5465 ett_channel_scan_capa_channels
,
5466 NULL
, "Channel List");
5468 while (chan_num
> 0) {
5469 proto_tree_add_item(channels
, hf_ieee1905_channel_scan_capa_channel
,
5470 tvb
, offset
, 1, ENC_NA
);
5478 proto_item_set_len(ci
, offset
- oper_class_start_offset
);
5482 proto_item_set_len(cli
, offset
- class_start_offset
);
5483 proto_item_set_len(ri
, offset
- start_offset
);
5487 proto_item_set_len(rli
, offset
- radio_list_start
);
5493 * Dissect a Channel Scan Request TLV
5495 static int * const channel_scan_request_flags_headers
[] = {
5496 &hf_ieee1905_channel_scan_request_flags_fresh_scan
,
5497 &hf_ieee1905_channel_scan_request_flags_reserved
,
5501 static const true_false_string perform_fresh_scan_tfs
= {
5502 "Perform a fresh scan",
5503 "Return results from previous scan"
5507 dissect_channel_scan_request(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
5508 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
5510 proto_tree
*radio_list
= NULL
;
5511 proto_item
*rli
= NULL
;
5512 uint8_t radio_count
= 0, radio_num
= 0;
5513 unsigned radio_list_start
= 0;
5515 proto_tree_add_bitmask(tree
, tvb
, offset
,
5516 hf_ieee1905_channel_scan_request_flags
,
5517 ett_channel_scan_request_flags
,
5518 channel_scan_request_flags_headers
, ENC_NA
);
5521 radio_count
= tvb_get_uint8(tvb
, offset
);
5522 proto_tree_add_item(tree
, hf_ieee1905_channel_scan_request_radio_num
,
5523 tvb
, offset
, 1, ENC_NA
);
5526 radio_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
5527 ett_channel_scan_request_radio_list
,
5528 &rli
, "Radio List");
5529 radio_list_start
= offset
;
5531 while (radio_num
< radio_count
) {
5532 proto_tree
*radio_tree
= NULL
;
5533 proto_item
*ri
= NULL
;
5534 proto_tree
*oper_class_list
= NULL
;
5535 proto_item
*cli
= NULL
;
5536 unsigned start_offset
= offset
;
5537 uint8_t oper_class_count
= 0, oper_class_num
= 0;
5538 unsigned class_start_offset
= 0;
5540 radio_tree
= proto_tree_add_subtree_format(radio_list
, tvb
, offset
,
5541 -1, ett_channel_scan_request_radio
,
5542 &ri
, "Radio %u", radio_num
);
5544 proto_tree_add_item(radio_tree
, hf_ieee1905_channel_scan_request_radio_id
,
5545 tvb
, offset
, 6, ENC_NA
);
5548 oper_class_count
= tvb_get_uint8(tvb
, offset
);
5549 proto_tree_add_item(radio_tree
, hf_ieee1905_channel_scan_request_class_num
,
5550 tvb
, offset
, 1, ENC_NA
);
5553 if (oper_class_count
> 0) {
5554 oper_class_list
= proto_tree_add_subtree(radio_tree
, tvb
, offset
, -1,
5555 ett_channel_scan_request_class_list
,
5556 &cli
, "Operating Class List");
5558 class_start_offset
= offset
;
5559 while (oper_class_num
< oper_class_count
) {
5560 uint8_t chan_num
= 0;
5561 proto_tree
*oper_class
= NULL
;
5562 proto_item
*ci
= NULL
;
5563 int oper_class_start_offset
= offset
;
5565 oper_class
= proto_tree_add_subtree_format(oper_class_list
, tvb
,
5567 ett_channel_scan_request_class
,
5568 &ci
, "Operating Class %d",
5572 proto_tree_add_item(oper_class
,
5573 hf_ieee1905_channel_scan_request_oper_class
, tvb
,
5577 chan_num
= tvb_get_uint8(tvb
, offset
);
5578 proto_tree_add_item(oper_class
,
5579 hf_ieee1905_channel_scan_request_oper_class_chan_cnt
,
5580 tvb
, offset
, 1, ENC_NA
);
5585 proto_tree
*channels
= NULL
;
5587 channels
= proto_tree_add_subtree(oper_class
, tvb
, offset
, chan_num
,
5588 ett_channel_scan_request_channels
,
5589 NULL
, "Channel List");
5591 while (chan_num
> 0) {
5592 proto_tree_add_item(channels
, hf_ieee1905_channel_scan_request_channel
,
5593 tvb
, offset
, 1, ENC_NA
);
5599 proto_item_set_len(ci
, offset
- oper_class_start_offset
);
5604 proto_item_set_len(cli
, offset
- class_start_offset
);
5605 proto_item_set_len(ri
, offset
- start_offset
);
5609 proto_item_set_len(rli
, offset
- radio_list_start
);
5615 * Dissect a Channel Scan Result TLV
5617 static const range_string channel_scan_result_status_rvals
[] = {
5618 { 0, 0, "Success" },
5619 { 1, 1, "Scan not supported on this operating class/channel on this radio" },
5620 { 2, 2, "Request too soon after last scan" },
5621 { 3, 3, "Radio too busy to perform scan" },
5622 { 4, 4, "Scan not completed" },
5623 { 5, 5, "Scan aborted" },
5624 { 6, 6, "Fresh scan not supported. Radio only supports on-boot scans" },
5625 { 7, 255, "Reserved" },
5629 static int * const channel_scan_result_neigh_flags
[] = {
5630 &hf_ieee1905_channel_scan_result_load_element_present
,
5631 &hf_ieee1905_channel_scan_result_neigh_reserved
,
5635 static int * const channel_scan_result_flags
[] = {
5636 &hf_ieee1905_channel_scan_result_scan_type
,
5637 &hf_ieee1905_channel_scan_result_scan_flags_reserved
,
5641 static const true_false_string channel_scan_result_type_tfs
= {
5642 "Scan was an Active scan",
5643 "Scan was a Passive scan"
5647 dissect_channel_scan_result(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
5648 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
5652 proto_tree_add_item(tree
, hf_ieee1905_channel_scan_result_radio_id
, tvb
,
5656 proto_tree_add_item(tree
, hf_ieee1905_channel_scan_result_oper_class
, tvb
,
5660 proto_tree_add_item(tree
, hf_ieee1905_channel_scan_result_channel
, tvb
,
5664 status
= tvb_get_uint8(tvb
, offset
);
5665 proto_tree_add_item(tree
, hf_ieee1905_channel_scan_result_status
, tvb
,
5670 uint8_t timestamp_len
= tvb_get_uint8(tvb
, offset
);
5672 uint16_t neighbor_num
= 0, neighbor_cnt
= 0;
5673 proto_tree
*neigh_list
= NULL
;
5674 proto_item
*nli
= NULL
;
5675 unsigned saved_offset
= 0;
5677 proto_tree_add_item(tree
, hf_ieee1905_channel_scan_result_timestamp_len
,
5678 tvb
, offset
, 1, ENC_NA
);
5681 proto_tree_add_item(tree
, hf_ieee1905_channel_scan_result_timestamp_string
,
5682 tvb
, offset
, timestamp_len
, ENC_NA
|ENC_ASCII
);
5683 offset
+= timestamp_len
;
5685 proto_tree_add_item(tree
, hf_ieee1905_channel_scan_result_utilization
,
5686 tvb
, offset
, 1, ENC_NA
);
5689 proto_tree_add_item(tree
, hf_ieee1905_channel_scan_result_noise
, tvb
,
5693 neighbor_num
= tvb_get_ntohs(tvb
, offset
);
5694 proto_tree_add_item(tree
, hf_ieee1905_channel_scan_result_neigh_num
,
5695 tvb
, offset
, 2, ENC_NA
);
5698 if (neighbor_num
> 0) {
5699 neigh_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
5700 ett_channel_scan_result_neigh_list
,
5701 &nli
, "Neighbor List");
5702 saved_offset
= offset
;
5704 while (neighbor_cnt
< neighbor_num
) {
5705 proto_tree
*neigh_tree
= NULL
;
5706 proto_item
*nti
= NULL
;
5707 unsigned neigh_saved_offset
= offset
;
5708 uint8_t channel_bw_len
= 0;
5711 neigh_tree
= proto_tree_add_subtree_format(neigh_list
, tvb
,
5713 ett_channel_scan_result_neigh
,
5714 &nti
, "Neighbor %u", neighbor_cnt
);
5716 proto_tree_add_item(neigh_tree
,
5717 hf_ieee1905_channel_scan_result_bssid
, tvb
,
5721 ssid_len
= tvb_get_uint8(tvb
, offset
);
5722 proto_tree_add_item(neigh_tree
,
5723 hf_ieee1905_channel_scan_result_ssid_len
, tvb
,
5727 proto_tree_add_item(neigh_tree
, hf_ieee1905_channel_scan_result_ssid
,
5728 tvb
, offset
, ssid_len
, ENC_ASCII
);
5731 proto_tree_add_item(neigh_tree
,
5732 hf_ieee1905_channel_scan_result_sig_level
,
5733 tvb
, offset
, 1, ENC_NA
);
5736 channel_bw_len
= tvb_get_uint8(tvb
, offset
);
5737 proto_tree_add_item(neigh_tree
, hf_ieee1905_channel_scan_result_bw_len
,
5738 tvb
, offset
, 1, ENC_NA
);
5741 proto_tree_add_item(neigh_tree
, hf_ieee1905_channel_scan_result_bw
,
5742 tvb
, offset
, channel_bw_len
, ENC_ASCII
);
5743 offset
+= channel_bw_len
;
5745 flags
= tvb_get_uint8(tvb
, offset
);
5746 proto_tree_add_bitmask(neigh_tree
, tvb
, offset
,
5747 hf_ieee1905_channel_scan_result_neigh_flags
,
5748 ett_channel_scan_result_neigh_flags
,
5749 channel_scan_result_neigh_flags
, ENC_NA
);
5753 proto_tree_add_item(neigh_tree
, hf_ieee1905_channel_scan_result_util
,
5754 tvb
, offset
, 1, ENC_NA
);
5757 proto_tree_add_item(neigh_tree
, hf_ieee1905_channel_scan_result_sta_count
,
5758 tvb
, offset
, 2, ENC_NA
);
5762 proto_item_set_len(nti
, offset
- neigh_saved_offset
);
5767 proto_item_set_len(nli
, offset
- saved_offset
);
5769 proto_tree_add_item(tree
, hf_ieee1905_channel_scan_result_scan_duration
,
5770 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5773 proto_tree_add_bitmask(tree
, tvb
, offset
,
5774 hf_ieee1905_channel_scan_result_flags
,
5775 ett_channel_scan_result_flags
,
5776 channel_scan_result_flags
, ENC_NA
);
5785 * Dissect a Timestamp TLV
5788 dissect_timestamp(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
5789 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
5791 uint8_t timestamp_len
= tvb_get_uint8(tvb
, offset
);
5793 proto_tree_add_item(tree
, hf_ieee1905_timestamp_length
, tvb
, offset
, 1,
5797 proto_tree_add_item(tree
, hf_ieee1905_timestamp_string
, tvb
, offset
,
5798 timestamp_len
, ENC_NA
|ENC_ASCII
);
5799 offset
+= timestamp_len
;
5805 * Dissect a 1905 Layer Security Capability TLV
5807 static const range_string onboarding_protocol_supported_rvals
[] = {
5808 { 0, 0, "1905 Device Provisioning Protocol" },
5809 { 1, 255, "Reserved" },
5813 static const range_string message_integrity_algorithms_sup_rvals
[] = {
5814 { 0, 0, "HMAC-SHAR256" },
5815 { 1, 255, "Reserved" },
5819 static const range_string message_encryption_algorithms_sup_rvals
[] = {
5820 { 0, 0, "AES-SIV" },
5821 { 1, 255, "Reserved" },
5826 dissect_1905_layer_security_capability(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
5827 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
5829 proto_tree_add_item(tree
, hf_ieee1905_1905_layer_sec_capa_onboarding
, tvb
,
5833 proto_tree_add_item(tree
, hf_ieee1905_1905_layer_sec_capa_mic_sup
, tvb
,
5837 proto_tree_add_item(tree
, hf_ieee1905_1905_layer_sec_capa_enc_alg_sup
, tvb
,
5845 * Dissect an AP Wi-Fi 6 Capabilities TLV
5847 static int * const ap_wf6_role_flags
[] = {
5848 &hf_ieee1905_ap_wf6_capa_agents_role
,
5849 &hf_ieee1905_ap_wf6_capa_he_160_support
,
5850 &hf_ieee1905_ap_wf6_capa_he_80p80_support
,
5851 &hf_ieee1905_ap_wf6_capa_reserved
,
5855 static int * const ap_wf6_supported_flags
[] = {
5856 &hf_ieee1905_ap_wf6_su_beamformer
,
5857 &hf_ieee1905_ap_wf6_su_beamformee
,
5858 &hf_ieee1905_ap_wf6_mu_beamformer_status
,
5859 &hf_ieee1905_ap_wf6_beamformee_sts_le_80mhz
,
5860 &hf_ieee1905_ap_wf6_beamformee_sts_gt_80mhz
,
5861 &hf_ieee1905_ap_wf6_ul_mu_mimo
,
5862 &hf_ieee1905_ap_wf6_ul_ofdma
,
5863 &hf_ieee1905_ap_wf6_dl_ofdma
,
5867 static int * const ap_wf6_mimo_flags
[] = {
5868 &hf_ieee1905_ap_wf6_max_ap_dl_mu_mimo_tx
,
5869 &hf_ieee1905_ap_wf6_max_ap_ul_mu_mimi_rx
,
5873 static int * const ap_wf6_gen_flags
[] = {
5874 &hf_ieee1905_ap_wf6_gen_rts
,
5875 &hf_ieee1905_ap_wf6_gen_mu_rts
,
5876 &hf_ieee1905_ap_wf6_gen_multi_bssid
,
5877 &hf_ieee1905_ap_wf6_gen_mu_edca
,
5878 &hf_ieee1905_ap_wf6_gen_twt_requester
,
5879 &hf_ieee1905_ap_wf6_gen_twt_responder
,
5880 &hf_ieee1905_ap_wf6_gen_reserved
,
5884 static const value_string ap_wf6_agent_role_vals
[] = {
5885 { 0, "Wi-Fi 6 support info for the AP role" },
5886 { 1, "Wi-Fi 6 support info for the non-AP STA role" },
5891 dissect_ap_wf6_capabilities(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
5892 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
5894 uint8_t role_count
, role_id
= 0;
5895 proto_tree
*role_list
= NULL
;
5896 proto_item
*rli
= NULL
;
5897 unsigned start_list_offset
;
5899 proto_tree_add_item(tree
, hf_ieee1905_ap_wf6_capa_radio_id
, tvb
,
5903 role_count
= tvb_get_uint8(tvb
, offset
);
5905 proto_tree_add_item(tree
, hf_ieee1905_ap_wf6_role_count
, tvb
, offset
, 1,
5909 start_list_offset
= offset
;
5910 role_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
5911 ett_ap_wf6_role_list
,
5914 while (role_id
< role_count
) {
5915 proto_tree
*role_tree
;
5916 proto_item
*rti
= NULL
;
5917 unsigned start_tree_offset
= offset
;
5918 proto_tree
*mcs_set
= NULL
;
5920 role_tree
= proto_tree_add_subtree_format(role_list
, tvb
, offset
, -1,
5921 ett_ap_wf6_role_tree
,
5922 &rti
, "Role %u", role_id
);
5924 uint8_t role_flags
= tvb_get_uint8(tvb
, offset
);
5926 proto_tree_add_bitmask(role_tree
, tvb
, offset
,
5927 hf_ieee1905_ap_wf6_agent_role_flags
,
5928 ett_ap_wf6_agent_role_flags
, ap_wf6_role_flags
,
5932 mcs_set
= proto_tree_add_subtree(role_tree
, tvb
, offset
, 4,
5933 ett_ap_he_mcs_set
, NULL
,
5934 "Supported HE-MCS and NSS Set <= 80 MHz");
5936 proto_tree_add_bitmask_with_flags(mcs_set
, tvb
, offset
,
5937 hf_ieee1905_ap_he_cap_tx_mcs_le_80_mhz
,
5938 ett_ieee1905_ap_he_rx_mcs_set
,
5939 tx_he_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
5942 proto_tree_add_bitmask_with_flags(mcs_set
, tvb
, offset
,
5943 hf_ieee1905_ap_he_cap_rx_mcs_le_80_mhz
,
5944 ett_ieee1905_ap_he_rx_mcs_set
,
5945 rx_he_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
5949 if (role_flags
& 0x20) { /* HE MCS & NSS for 160MHz */
5950 mcs_set
= proto_tree_add_subtree(role_tree
, tvb
, offset
, 4,
5951 ett_ap_he_mcs_set
, NULL
,
5952 "Supported HE-MCS and NSS Set 160 MHz");
5954 proto_tree_add_bitmask_with_flags(mcs_set
, tvb
, offset
,
5955 hf_ieee1905_ap_he_cap_tx_mcs_160_mhz
,
5956 ett_ieee1905_ap_he_rx_mcs_set
,
5957 tx_he_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
5960 proto_tree_add_bitmask_with_flags(mcs_set
, tvb
, offset
,
5961 hf_ieee1905_ap_he_cap_rx_mcs_160_mhz
,
5962 ett_ieee1905_ap_he_rx_mcs_set
,
5963 rx_he_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
5967 if (role_flags
& 0x10) { /* HE MCS & NSS for 80+80MHz */
5968 mcs_set
= proto_tree_add_subtree(role_tree
, tvb
, offset
, 4,
5969 ett_ap_he_mcs_set
, NULL
,
5970 "Supported HE-MCS and NSS Set 80+80 MHz");
5972 proto_tree_add_bitmask_with_flags(mcs_set
, tvb
, offset
,
5973 hf_ieee1905_ap_he_cap_tx_mcs_80p80_mhz
,
5974 ett_ieee1905_ap_he_rx_mcs_set
,
5975 tx_he_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
5978 proto_tree_add_bitmask_with_flags(mcs_set
, tvb
, offset
,
5979 hf_ieee1905_ap_he_cap_rx_mcs_80p80_mhz
,
5980 ett_ieee1905_ap_he_rx_mcs_set
,
5981 rx_he_mcs_map_headers
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
5985 proto_tree_add_bitmask(role_tree
, tvb
, offset
,
5986 hf_ieee1905_ap_wf6_he_supported_flags
,
5987 ett_ap_wf6_supported_flags
,
5988 ap_wf6_supported_flags
, ENC_NA
);
5991 proto_tree_add_bitmask(role_tree
, tvb
, offset
,
5992 hf_ieee1905_ap_wf6_mimo_max_flags
,
5993 ett_ap_wf6_mimo_max_flags
, ap_wf6_mimo_flags
,
5997 proto_tree_add_item(role_tree
, hf_ieee1905_ap_wf6_dl_ofdma_max_tx
, tvb
,
6001 proto_tree_add_item(role_tree
, hf_ieee1905_ap_wf6_ul_ofdma_max_rx
, tvb
,
6005 proto_tree_add_bitmask(role_tree
, tvb
, offset
,
6006 hf_ieee1905_ap_wf6_gen_flags
,
6007 ett_ap_wf6_gen_flags
, ap_wf6_gen_flags
,
6011 proto_item_set_len(rti
, offset
- start_tree_offset
);
6015 proto_item_set_len(rli
, offset
- start_list_offset
);
6020 dissect_agent_list(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6021 proto_tree
*tree
, unsigned offset
, uint16_t len
)
6023 proto_tree_add_item(tree
, hf_ieee1905_agent_list_bytes
, tvb
, offset
,
6033 static int * const gtk_key_id_headers
[] = {
6034 &hf_ieee1905_1905_gtk_key_id
,
6035 &hf_ieee1905_mic_version
,
6036 &hf_ieee1905_mic_reserved
,
6040 static const value_string mic_version_vals
[] = {
6049 dissect_mic(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6050 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6052 uint16_t mic_len
= 0;
6054 proto_tree_add_bitmask(tree
, tvb
, offset
,
6055 hf_ieee1905_mic_group_temporal_key_id
,
6056 ett_mic_group_temporal_key
,
6057 gtk_key_id_headers
, ENC_NA
);
6060 proto_tree_add_item(tree
, hf_ieee1905_mic_integrity_transmission_counter
,
6061 tvb
, offset
, 6, ENC_BIG_ENDIAN
);
6064 proto_tree_add_item(tree
, hf_ieee1905_mic_source_la_mac_id
, tvb
, offset
, 6,
6068 mic_len
= tvb_get_ntohs(tvb
, offset
);
6069 proto_tree_add_item(tree
, hf_ieee1905_mic_length
, tvb
, offset
, 2, ENC_NA
);
6072 proto_tree_add_item(tree
, hf_ieee1905_mic_bytes
, tvb
, offset
, mic_len
,
6080 * Dissect an Encrypted TLV
6083 dissect_encrypted(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6084 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6086 uint16_t enc_len
= 0;
6088 proto_tree_add_item(tree
, hf_ieee1905_encrypted_enc_transmission_count
,
6089 tvb
, offset
, 6, ENC_NA
);
6092 proto_tree_add_item(tree
, hf_ieee1905_encrypted_source_la_mac_id
, tvb
,
6096 proto_tree_add_item(tree
, hf_ieee1905_encrypted_dest_al_mac_addr
, tvb
,
6100 enc_len
= tvb_get_ntohs(tvb
, offset
);
6101 proto_tree_add_item(tree
, hf_ieee1905_encrypted_enc_output_field_len
, tvb
,
6105 proto_tree_add_item(tree
, hf_ieee1905_encrypted_enc_output_field
, tvb
,
6106 offset
, enc_len
, ENC_NA
);
6113 * Dissect a CAC Request TLV
6115 static int * const cac_request_method_flags
[] = {
6116 &hf_ieee1905_cac_request_method
,
6117 &hf_ieee1905_cac_request_completion_action
,
6118 &hf_ieee1905_cac_request_completion_unsuccess
,
6119 &hf_ieee1905_cac_request_reserved
,
6123 static const value_string cac_request_method_vals
[] = {
6124 { 0, "Continuous CAC" },
6125 { 1, "Continuous with dedicated radio" },
6126 { 2, "MIMO dimension reduced" },
6127 { 3, "Time sliced CAC" },
6135 static const range_string cac_completion_action_vals
[] = {
6136 { 0, 0, "Remain on channel and continue to monitor for radar" },
6137 { 1, 1, "Return to previous state" },
6138 { 2, 255, "Reserved" },
6143 dissect_cac_request(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6144 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6146 unsigned radio_count
= tvb_get_uint8(tvb
, offset
);
6148 proto_tree_add_item(tree
, hf_ieee1905_cac_request_radio_count
, tvb
,
6152 if (radio_count
> 0) {
6153 proto_tree
*radio_list
= NULL
;
6154 uint8_t radio_num
= 0;
6156 radio_list
= proto_tree_add_subtree(tree
, tvb
, offset
, radio_count
* 9,
6157 ett_cac_request_radio_list
,
6158 NULL
, "Radio List");
6160 while (radio_num
< radio_count
) {
6161 proto_tree
*radio
= NULL
;
6163 radio
= proto_tree_add_subtree_format(radio_list
, tvb
, offset
, 9,
6164 ett_cac_request_radio
, NULL
,
6165 "Radio %u", radio_num
);
6167 proto_tree_add_item(radio
, hf_ieee1905_cac_request_radio_id
, tvb
,
6171 proto_tree_add_item(radio
, hf_ieee1905_cac_request_op_class
, tvb
,
6175 proto_tree_add_item(radio
, hf_ieee1905_cac_request_channel
, tvb
,
6179 proto_tree_add_bitmask(radio
, tvb
, offset
,
6180 hf_ieee1905_cac_request_flags
,
6181 ett_cac_request_flags
,
6182 cac_request_method_flags
, ENC_NA
);
6195 * Dissect a CAC Termination TLV
6198 dissect_cac_termination(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6199 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6201 uint8_t radio_count
= tvb_get_uint8(tvb
, offset
);
6203 proto_tree_add_item(tree
, hf_ieee1905_cac_termination_radio_count
, tvb
,
6207 if (radio_count
> 0) {
6208 proto_tree
*radio_list
= NULL
;
6209 uint8_t radio_num
= 0;
6211 radio_list
= proto_tree_add_subtree(tree
, tvb
, offset
, radio_count
* 9,
6212 ett_cac_terminate_radio_list
,
6213 NULL
, "Radio list");
6215 while (radio_num
< radio_count
) {
6216 proto_tree
*radio
= NULL
;
6218 radio
= proto_tree_add_subtree_format(radio_list
, tvb
, offset
, 9,
6219 ett_cac_terminate_radio
, NULL
,
6220 "Radio %u", radio_num
);
6222 proto_tree_add_item(radio
, hf_ieee1905_cac_terminate_radio_id
, tvb
,
6226 proto_tree_add_item(radio
, hf_ieee1905_cac_terminate_op_class
, tvb
,
6230 proto_tree_add_item(radio
, hf_ieee1905_cac_terminate_channel
, tvb
,
6242 * Dissect a CAC Completion Report TLV
6244 static const range_string cac_completion_status_rvals
[] = {
6245 { 0, 0, "Successful" },
6246 { 1, 1, "Radar detected" },
6247 { 2, 2, "CAC not supported as requested" },
6248 { 3, 3, "Radio too busy to perform CAC" },
6249 { 4, 4, "Request was considered non conformant to regulations in country of operation" },
6250 { 5, 5, "Other error" },
6251 { 6, 255, "Reserved" },
6256 dissect_cac_completion_report(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6257 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6259 uint8_t radio_count
= tvb_get_uint8(tvb
, offset
);
6261 proto_tree_add_item(tree
, hf_ieee1905_cac_completion_rep_radio_count
, tvb
,
6265 if (radio_count
> 0) {
6266 proto_tree
*radio_list
= NULL
;
6267 uint8_t radio_num
= 0;
6268 uint8_t radar_count
= 0;
6270 radio_list
= proto_tree_add_subtree(tree
, tvb
, offset
, radio_count
* 9,
6271 ett_cac_completion_radio_list
,
6272 NULL
, "Radio list");
6274 while (radio_num
< radio_count
) {
6275 proto_tree
*radio
= NULL
;
6277 radio
= proto_tree_add_subtree_format(radio_list
, tvb
, offset
, 9,
6278 ett_cac_completion_radio
, NULL
,
6279 "Radio %u", radio_num
);
6281 proto_tree_add_item(radio
, hf_ieee1905_cac_completion_radio_id
, tvb
,
6285 proto_tree_add_item(radio
, hf_ieee1905_cac_completion_op_class
, tvb
,
6289 proto_tree_add_item(radio
, hf_ieee1905_cac_completion_channel
, tvb
,
6293 proto_tree_add_item(radio
, hf_ieee1905_cac_completion_status
, tvb
,
6297 radar_count
= tvb_get_uint8(tvb
, offset
);
6299 proto_tree_add_item(radio
, hf_ieee1905_cac_completion_radar_count
,
6300 tvb
, offset
, 1, ENC_NA
);
6303 if (radar_count
> 0) {
6304 proto_tree
*radar_det_list
= NULL
;
6305 uint8_t radar_num
= 0;
6307 radar_det_list
= proto_tree_add_subtree(radio
, tvb
, offset
,
6309 ett_cac_completion_radar_list
,
6310 NULL
, "Radar detection list");
6311 while (radar_num
< radar_count
) {
6312 proto_tree
*radar
= NULL
;
6314 radar
= proto_tree_add_subtree_format(radar_det_list
, tvb
,
6316 ett_cac_completion_radar
, NULL
,
6317 "Class/Channel pair %u",
6320 proto_tree_add_item(radar
,
6321 hf_ieee1905_cac_comp_radar_op_class
,
6322 tvb
, offset
, 1, ENC_NA
);
6325 proto_tree_add_item(radar
,
6326 hf_ieee1905_cac_comp_radar_channel
,
6327 tvb
, offset
, 1, ENC_NA
);
6342 * Dissect a CAC Status Report TLV
6345 dissect_cac_status_report(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6346 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6348 uint8_t channel_count
= tvb_get_uint8(tvb
, offset
);
6349 uint8_t non_occupancy_count
= 0;
6350 uint8_t active_cac_count
= 0;
6352 proto_tree_add_item(tree
, hf_ieee1905_cac_status_rpt_active_chan
, tvb
,
6356 if (channel_count
> 0) {
6357 uint8_t channel_num
= 0;
6358 proto_tree
*active_chan_list
= NULL
;
6360 active_chan_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
6362 ett_cac_status_rpt_avail_list
,
6363 NULL
, "Available Channels List");
6364 while (channel_num
< channel_count
) {
6365 proto_tree
*active_chan_tree
= NULL
;
6367 active_chan_tree
= proto_tree_add_subtree_format(active_chan_list
,
6369 ett_cac_status_rpt_avail_chan
,
6370 NULL
, "Available Channel %u",
6373 proto_tree_add_item(active_chan_tree
,
6374 hf_ieee1905_cac_status_rpt_avail_op_class
,
6375 tvb
, offset
, 1, ENC_NA
);
6378 proto_tree_add_item(active_chan_tree
,
6379 hf_ieee1905_cac_status_rpt_avail_channel
,
6380 tvb
, offset
, 1, ENC_NA
);
6383 proto_tree_add_item(active_chan_tree
,
6384 hf_ieee1905_cac_status_rpt_avail_minutes
,
6385 tvb
, offset
, 2, ENC_BIG_ENDIAN
);
6392 non_occupancy_count
= tvb_get_uint8(tvb
, offset
);
6393 proto_tree_add_item(tree
, hf_ieee1905_cac_status_rpt_non_occ_cnt
, tvb
,
6397 if (non_occupancy_count
> 0) {
6398 uint8_t non_occupancy_num
= 0;
6399 proto_tree
*non_occupancy_list
= NULL
;
6401 non_occupancy_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
6402 4 * non_occupancy_count
,
6403 ett_cac_status_rpt_non_occupy_list
,
6404 NULL
, "Non-occupancy List");
6405 while (non_occupancy_num
< non_occupancy_count
) {
6406 proto_tree
*non_occupancy_tree
= NULL
;
6408 non_occupancy_tree
= proto_tree_add_subtree_format(
6409 non_occupancy_list
, tvb
, offset
, 4,
6410 ett_cac_status_rpt_unocc_chan
,
6411 NULL
, "Unoccupied Channel %u",
6414 proto_tree_add_item(non_occupancy_tree
,
6415 hf_ieee1905_cac_status_rpt_non_occ_op_class
,
6416 tvb
, offset
, 1, ENC_NA
);
6419 proto_tree_add_item(non_occupancy_tree
,
6420 hf_ieee1905_cac_status_rpt_non_occ_channel
,
6421 tvb
, offset
, 1, ENC_NA
);
6424 proto_tree_add_item(non_occupancy_tree
,
6425 hf_ieee1905_cac_status_rpt_non_occ_seconds
,
6426 tvb
, offset
, 2, ENC_BIG_ENDIAN
);
6429 non_occupancy_num
+= 1;
6433 active_cac_count
= tvb_get_uint8(tvb
, offset
);
6434 proto_tree_add_item(tree
, hf_ieee1905_cac_status_rpt_active_cac_cnt
, tvb
,
6438 if (active_cac_count
> 0) {
6439 uint8_t active_cac_num
= 0;
6440 proto_tree
*active_cac_list
= NULL
;
6442 active_cac_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
6443 5 * active_cac_count
,
6444 ett_cac_status_rpt_active_cac_list
,
6445 NULL
, "Active CAC List");
6446 while (active_cac_num
< active_cac_count
) {
6447 proto_tree
*active_cac_tree
= NULL
;
6449 active_cac_tree
= proto_tree_add_subtree_format(active_cac_list
,
6451 ett_cac_status_rpt_active_cac_tree
,
6452 NULL
, "Active CAC %u",
6455 proto_tree_add_item(active_cac_tree
,
6456 hf_ieee1905_cac_status_rpt_active_cac_op_class
,
6457 tvb
, offset
, 1, ENC_NA
);
6460 proto_tree_add_item(active_cac_tree
,
6461 hf_ieee1905_cac_status_rpt_active_cac_channel
,
6462 tvb
, offset
, 1, ENC_NA
);
6465 proto_tree_add_item(active_cac_tree
,
6466 hf_ieee1905_cac_status_rpt_active_cac_seconds
,
6467 tvb
, offset
, 3, ENC_BIG_ENDIAN
);
6470 active_cac_num
+= 1;
6478 * Dissect a CAC Capabilities TLV
6480 static const range_string cac_mode_supported_rvals
[] = {
6481 { 0, 0, "Continuous CAC" },
6482 { 1, 1, "Continuous with dedicated radio" },
6483 { 2, 2, "MIMO dimension reduced" },
6484 { 3, 3, "Time sliced CAC" },
6485 { 4, 255, "Reserved" },
6490 dissect_cac_capabilities(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6491 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6493 uint8_t cac_radios
= 0;
6495 proto_tree_add_item(tree
, hf_ieee1905_cac_capa_country_code
, tvb
, offset
,
6496 2, ENC_NA
|ENC_ASCII
);
6499 cac_radios
= tvb_get_uint8(tvb
, offset
);
6500 proto_tree_add_item(tree
, hf_ieee1905_cac_capa_radio_cnt
, tvb
, offset
,
6504 if (cac_radios
> 0) {
6505 uint8_t radio_num
= 0;
6506 proto_tree
*radio_list
= NULL
;
6507 proto_item
*rli
= NULL
;
6508 unsigned start_offset
= offset
;
6510 radio_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
6511 ett_cac_capabilities_radio_list
,
6512 &rli
, "Radio List");
6513 while (radio_num
< cac_radios
) {
6514 proto_tree
*radio_tree
= NULL
;
6515 uint8_t cac_types
= 0;
6517 radio_tree
= proto_tree_add_subtree_format(radio_list
,
6519 ett_cac_capabilities_radio_tree
,
6523 proto_tree_add_item(radio_tree
,
6524 hf_ieee1905_cac_capabilities_radio_id
, tvb
,
6528 cac_types
= tvb_get_uint8(tvb
, offset
);
6529 proto_tree_add_item(radio_tree
,
6530 hf_ieee1905_cac_capabilities_types_num
,
6531 tvb
, offset
, 1, ENC_NA
);
6534 if (cac_types
> 0) {
6535 uint8_t cac_num
= 0;
6536 proto_tree
*cac_type_list
= NULL
;
6537 proto_item
*rci
= NULL
;
6538 unsigned cac_type_start
= offset
;
6539 uint8_t cac_classes
= 0;
6541 cac_type_list
= proto_tree_add_subtree(radio_tree
, tvb
, offset
,
6542 -1, ett_cac_capabilities_type_list
,
6543 &rci
, "CAC Type List");
6544 while (cac_num
< cac_types
) {
6545 proto_tree
*cac_type_tree
= NULL
;
6546 proto_item
*cti
= NULL
;
6548 cac_type_tree
= proto_tree_add_subtree_format(cac_type_list
,
6550 -1, ett_cac_capabilities_type_tree
,
6551 &cti
, "CAC Type %u", cac_num
);
6553 proto_tree_add_item(cac_type_tree
,
6554 hf_ieee1905_cac_capabilities_cac_mode
, tvb
,
6558 proto_tree_add_item(cac_type_tree
,
6559 hf_ieee1905_cac_capabilities_cac_seconds
, tvb
,
6560 offset
, 3, ENC_BIG_ENDIAN
);
6563 cac_classes
= tvb_get_uint8(tvb
, offset
);
6564 proto_tree_add_item(cac_type_tree
,
6565 hf_ieee1905_cac_capabilities_op_class_num
, tvb
,
6569 if (cac_classes
> 0) {
6570 proto_tree
*cac_class_list
= NULL
;
6571 uint8_t cac_class_num
= 0;
6572 proto_item
*cli
= NULL
;
6574 cac_class_list
= proto_tree_add_subtree(cac_type_tree
,
6576 ett_cac_capabilities_class_list
, &cli
,
6579 while (cac_class_num
< cac_classes
) {
6580 uint8_t channel_cnt
= 0;
6581 proto_tree
*cac_class_tree
= NULL
;
6582 unsigned cac_class_start
= offset
;
6584 cac_class_tree
= proto_tree_add_subtree_format(
6585 cac_class_list
, tvb
, offset
, -1,
6586 ett_cac_capabilities_class_tree
, &cti
,
6587 "Operating Class %u", cac_class_num
);
6589 proto_tree_add_item(cac_class_tree
,
6590 hf_ieee1905_cac_capabilities_op_class
, tvb
,
6594 channel_cnt
= tvb_get_uint8(tvb
, offset
);
6595 proto_tree_add_item(cac_class_tree
,
6596 hf_ieee1905_cac_capabilities_channel_cnt
,
6597 tvb
, offset
, 1, ENC_NA
);
6600 if (channel_cnt
> 0) {
6601 proto_tree
*channel_list
= NULL
;
6603 channel_list
= proto_tree_add_subtree(
6604 cac_class_tree
, tvb
, offset
,
6606 ett_cac_capabilities_channel_list
,
6607 NULL
, "Channel List");
6609 while (channel_cnt
> 0) {
6610 proto_tree_add_item(channel_list
,
6611 hf_ieee1905_cac_capabillity_channel
,
6612 tvb
, offset
, 1, ENC_NA
);
6618 proto_item_set_len(cti
, offset
- cac_class_start
);
6624 proto_item_set_len(rci
, offset
- cac_type_start
);
6629 proto_item_set_len(rli
, offset
- start_offset
);
6636 * Dissect a Multi-AP Version TLV
6639 static const range_string multi_ap_version_rvals
[] = {
6640 { 0, 0, "Reserved" },
6641 { 1, 1, "Multi-AP Profile 1" },
6642 { 2, 2, "Multi-AP Profile 2" },
6643 { 3, 3, "Multi-AP Profile 3" },
6644 { 4, 255, "Reserved" },
6649 dissect_multi_ap_version(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6650 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6652 proto_tree_add_item(tree
, hf_ieee1905_multi_ap_version
, tvb
, offset
, 1,
6660 * Dissect an R2 AP Capabilities TLV
6662 static const value_string byte_counter_units_vals
[] = {
6664 { 1, "kibibytes (KiB)" },
6665 { 2, "mebibytes (MiB)" },
6670 static int* const r2_ap_capa_flags
[] = {
6671 &hf_ieee1905_byte_counter_units
,
6672 &hf_ieee1905_ctag_service_prio_flag
,
6673 &hf_ieee1905_dpp_onboarding_flag
,
6674 &hf_ieee1905_traffic_separation_flag
,
6675 &hf_ieee1905_r2_ap_capa_flags_reserved
,
6680 dissect_r2_ap_capability(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6681 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6683 proto_tree_add_item(tree
, hf_ieee1905_max_total_serv_prio_rules
, tvb
,
6687 proto_tree_add_item(tree
, hf_ieee1905_r2_ap_capa_reserved
, tvb
, offset
, 1,
6691 proto_tree_add_bitmask(tree
, tvb
, offset
,
6692 hf_ieee1905_r2_ap_capa_flags
,
6693 ett_r2_ap_capa_flags
,
6694 r2_ap_capa_flags
, ENC_NA
);
6697 proto_tree_add_item(tree
, hf_ieee1905_max_vid_count
, tvb
, offset
, 1,
6705 * Dissect a Service Prioritization Rule TLV
6707 static int * const default_802_1q_settings_flags
[] = {
6708 &hf_ieee1905_default_802_1q_settings_default_pcp
,
6709 &hf_ieee1905_default_802_1q_settings_reserved
,
6714 dissect_default_802_1q_settings(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6715 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6717 proto_tree_add_item(tree
, hf_ieee1905_default_802_1q_settings_primary_vlan
, tvb
,
6721 proto_tree_add_bitmask(tree
, tvb
, offset
,
6722 hf_ieee1905_default_802_1q_settings_flags
,
6723 ett_default_802_1q_settings_flags
,
6724 default_802_1q_settings_flags
, ENC_NA
);
6731 * Dissect a Traffic Separation Policy TLV
6734 dissect_traffic_separation_policy(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6735 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6737 uint8_t ssid_cnt
= tvb_get_uint8(tvb
, offset
);
6738 uint8_t ssid_num
= 0;
6739 proto_tree
*ssid_list
= NULL
;
6740 proto_item
*sli
= NULL
;
6741 unsigned saved_offset
= 0;
6743 proto_tree_add_item(tree
, hf_ieee1905_traffic_separation_policy_num_ssids
,
6744 tvb
, offset
, 1, ENC_NA
);
6748 ssid_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
6749 ett_traffic_separation_ssid_list
,
6751 saved_offset
= offset
;
6754 while (ssid_num
< ssid_cnt
) {
6755 proto_tree
*ssid_tree
= NULL
;
6756 proto_item
*si
= NULL
;
6757 uint8_t ssid_len
= tvb_get_uint8(tvb
, offset
);
6758 unsigned start_offset
= offset
;
6760 ssid_tree
= proto_tree_add_subtree_format(ssid_list
, tvb
, offset
, -1,
6761 ett_traffic_separation_ssid
,
6762 &si
, "SSID %u", ssid_num
);
6764 proto_tree_add_item(ssid_tree
,
6765 hf_ieee1905_traffic_separation_policy_ssid_len
,
6766 tvb
, offset
, 1, ENC_NA
);
6769 proto_tree_add_item(ssid_tree
,
6770 hf_ieee1905_traffic_separation_policy_ssid
,
6771 tvb
, offset
, ssid_len
, ENC_ASCII
);
6774 proto_tree_add_item(ssid_tree
,
6775 hf_ieee1905_traffic_separation_policy_vlanid
, tvb
,
6776 offset
, 2, ENC_BIG_ENDIAN
);
6779 proto_item_set_len(si
, offset
- start_offset
);
6784 proto_item_set_len(sli
, offset
- saved_offset
);
6791 * Dissect a BSS Configuration Report
6793 static int * const bss_config_report_flags
[] = {
6794 &hf_ieee1905_bss_config_report_backhaul_bss
,
6795 &hf_ieee1905_bss_config_report_fronthaul_bss
,
6796 &hf_ieee1905_bss_config_report_r1_disallowed_status
,
6797 &hf_ieee1905_bss_config_report_r2_disallowed_status
,
6798 &hf_ieee1905_bss_config_report_multiple_bssid_set
,
6799 &hf_ieee1905_bss_config_report_transmitted_bssid
,
6800 &hf_ieee1905_bss_config_report_reserved
,
6804 static const true_false_string tfs_disallowed_allowed
= {
6809 static const true_false_string tfs_configured_not_configured
= {
6814 static const true_false_string tfs_not_inuse_inuse
= {
6819 static const true_false_string tfs_transmitted_non_transmitted
= {
6825 dissect_bss_configuration_report(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6826 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6828 uint8_t radio_count
= tvb_get_uint8(tvb
, offset
);
6829 uint8_t radio_id
= 0;
6830 unsigned start_offset
;
6831 proto_tree
*radio_list
= NULL
;
6832 proto_item
*rti
= NULL
;
6834 proto_tree_add_item(tree
, hf_ieee1905_bss_config_report_radio_count
, tvb
,
6838 start_offset
= offset
;
6840 radio_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
6841 ett_bss_config_report_list
, &rti
,
6842 "BSS Configuration Radio List");
6843 while (radio_id
< radio_count
) {
6844 proto_tree
*radio_tree
= NULL
;
6845 proto_tree
*bss_list
= NULL
;
6846 proto_item
*rli
= NULL
, *bli
= NULL
;
6847 unsigned radio_saved_offset
= offset
, bss_start_offset
= 0;
6848 uint8_t bss_count
, bss_id
= 0;
6850 radio_tree
= proto_tree_add_subtree_format(radio_list
, tvb
, offset
, -1,
6851 ett_bss_config_report_tree
,
6852 &rli
, "Radio %d", radio_id
);
6854 proto_tree_add_item(radio_tree
, hf_ieee1905_bss_config_report_radio_id
,
6855 tvb
, offset
, 6, ENC_NA
);
6858 bss_count
= tvb_get_uint8(tvb
, offset
);
6860 proto_tree_add_item(radio_tree
, hf_ieee1905_bss_config_report_bss_cnt
,
6861 tvb
, offset
, 1, ENC_NA
);
6864 radio_id
++; /* Increment this before we continue */
6866 /* If no BSSes on the radio, skip it. Spec says so. */
6867 if (bss_count
== 0) {
6868 proto_item_set_len(rli
, offset
- radio_saved_offset
);
6872 bss_list
= proto_tree_add_subtree(radio_tree
, tvb
, offset
, -1,
6873 ett_bss_config_report_bss_list
, &bli
,
6875 bss_start_offset
= offset
;
6877 while (bss_id
< bss_count
) {
6878 proto_tree
*bss_tree
= NULL
;
6879 proto_item
*bti
= NULL
;
6880 unsigned bss_item_start
= offset
;
6881 uint8_t ssid_len
= 0;
6883 bss_tree
= proto_tree_add_subtree_format(bss_list
, tvb
, offset
,
6884 -1, ett_bss_config_report_bss_tree
,
6885 &bti
, "BSS %d", bss_id
);
6887 proto_tree_add_item(bss_tree
, hf_ieee1902_bss_config_report_mac
,
6888 tvb
, offset
, 6, ENC_NA
);
6891 proto_tree_add_bitmask(bss_tree
, tvb
, offset
,
6892 hf_ieee1905_bss_config_report_flags
,
6893 ett_bss_config_report_flags
,
6894 bss_config_report_flags
, ENC_NA
);
6897 proto_tree_add_item(bss_tree
, hf_ieee1905_bss_config_report_res
,
6898 tvb
, offset
, 1, ENC_NA
);
6901 ssid_len
= tvb_get_uint8(tvb
, offset
);
6903 proto_tree_add_item(bss_tree
,
6904 hf_ieee1902_bss_config_report_ssid_len
,
6905 tvb
, offset
, 1, ENC_NA
);
6908 proto_tree_add_item(bss_tree
,
6909 hf_ieee1905_bss_config_report_ssid
,
6910 tvb
, offset
, ssid_len
, ENC_ASCII
);
6913 proto_item_set_len(bti
, offset
- bss_item_start
);
6918 proto_item_set_len(bli
, offset
- bss_start_offset
);
6919 proto_item_set_len(rli
, offset
- radio_saved_offset
);
6922 proto_item_set_len(rti
, offset
- start_offset
);
6928 dissect_bssid(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
,
6929 unsigned offset
, uint16_t len _U_
)
6931 proto_tree_add_item(tree
, hf_ieee1905_bssid_tlv_bssid
, tvb
, offset
, 6,
6939 * Dissect a Service Prioritization Format TLV
6941 static int * const sp_rule_flags_headers
[] = {
6942 &hf_ieee1905_service_prio_rule_add_remove_filter_bit
,
6943 &hf_ieee1905_service_prio_rule_flags_reserved
,
6947 static int * const sp_rule_match_headers
[] = {
6948 &hf_ieee1905_service_prio_rule_match_always
,
6949 &hf_ieee1905_service_prio_rule_match_reserved
,
6950 &hf_ieee1905_service_prio_rule_match_up_in_qos
,
6951 &hf_ieee1905_service_prio_rule_match_up_control_match
,
6952 &hf_ieee1905_service_prio_rule_match_source_mac
,
6953 &hf_ieee1905_service_prio_rule_match_source_mac_sense
,
6954 &hf_ieee1905_service_prio_rule_match_dest_mac
,
6955 &hf_ieee1905_service_prio_rule_match_dest_mac_sense
,
6959 static const true_false_string tfs_add_remove
= {
6961 "Remove this filter"
6965 dissect_service_prioritization_rule(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
6966 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
6969 uint8_t match_flags
= 0;
6971 proto_tree_add_item(tree
, hf_ieee1905_service_prio_rule_id
, tvb
, offset
, 4,
6975 flags
= tvb_get_uint8(tvb
, offset
);
6976 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_ieee1905_service_prio_rule_flags
,
6977 ett_ieee1905_service_prio_rule_flags
,
6978 sp_rule_flags_headers
, ENC_NA
);
6981 if ((flags
& 0x80) == 0) {
6982 return offset
; /* We are done here ... */
6985 proto_tree_add_item(tree
, hf_ieee1905_service_prio_rule_precedence
, tvb
,
6989 proto_tree_add_item(tree
, hf_ieee1905_service_prio_rule_output
, tvb
, offset
,
6993 match_flags
= tvb_get_uint8(tvb
, offset
);
6994 proto_tree_add_bitmask(tree
, tvb
, offset
,
6995 hf_ieee1905_service_prio_match_flags
,
6996 ett_ieee1905_service_prio_rule_match_flags
,
6997 sp_rule_match_headers
, ENC_NA
);
7000 if (match_flags
& 0x20) { /* MATCH UP in 802.11 QOS ... */
7001 proto_tree_add_item(tree
, hf_ieee1905_service_prio_rule_up_control
, tvb
,
7006 if (match_flags
& 0x08) {
7007 proto_tree_add_item(tree
, hf_ieee1905_service_prio_rule_source_mac
, tvb
,
7012 if (match_flags
& 0x02) {
7013 proto_tree_add_item(tree
, hf_ieee1905_service_prio_rule_dest_mac
, tvb
,
7022 * Dissect a DSCP Mapping Table TLV
7025 dissect_dscp_mapping_table(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7026 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7030 for (i
= 0; i
< 64; i
++) {
7031 uint8_t pcp_val
= tvb_get_uint8(tvb
, offset
);
7033 proto_tree_add_uint_format(tree
, hf_ieee1905_dscp_mapping_table_val
, tvb
,
7034 offset
, 1, pcp_val
, "DSCP:%d -> PCP: %u", i
, pcp_val
);
7042 * Dissect an R2 Error Code TLV
7044 static const range_string r2_error_code_rvals
[] = {
7045 { 0, 0, "Reserved" },
7046 { 1, 1, "Service Prioritization Rule not found" },
7047 { 2, 2, "Number of Service Prioritization Rules reached the max supported" },
7048 { 3, 3, "Default PCP or VLAN ID not provided" },
7049 { 4, 4, "Reserved" },
7050 { 5, 5, "Number of unique VID exceeds maximum supported" },
7051 { 6, 6, "Reserved" },
7052 { 7, 7, "Traffic Separation one combined fronthaul and Profile-1 backhaul unsupported" },
7053 { 8, 8, "Traffic Separation on combined Profile-1 backhaul and Profile-2 backhaul unsupported" },
7054 { 9, 9, "Service Prioritization Rule not supported" },
7055 { 10, 255, "Reserved" },
7060 dissect_r2_error_code(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7061 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7063 uint8_t reason_code
= tvb_get_uint8(tvb
, offset
);
7065 proto_tree_add_item(tree
, hf_ieee1905_r2_error_reason_code
, tvb
, offset
, 1,
7069 if (reason_code
== 7 || reason_code
== 8) {
7070 proto_tree_add_item(tree
, hf_ieee1905_r2_error_bssid
,
7071 tvb
, offset
, 6, ENC_NA
);
7079 * Dissect an AP Radio Advanced Capabilities TLV
7082 static int * const ap_radio_advanced_capa_flags
[] = {
7083 &hf_ieee1905_ap_radio_advance_capa_backhaul_bss_traffic_sep
,
7084 &hf_ieee1905_ap_radio_advance_capa_combined_r1_r2_backhaul
,
7085 &hf_ieee1905_ap_radio_advance_capa_reserved
,
7090 dissect_ap_radio_advanced_capabilities(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7091 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7093 proto_tree_add_item(tree
, hf_ieee1905_ap_radio_advanced_capa_radio_id
, tvb
,
7097 proto_tree_add_bitmask(tree
, tvb
, offset
,
7098 hf_ieee1905_radio_advanced_capa_flags
,
7099 ett_radio_advanced_capa_flags
,
7100 ap_radio_advanced_capa_flags
, ENC_NA
);
7107 * Dissect an Association Status Notification TLV:
7109 static const range_string assoc_status_notif_status_rvals
[] = {
7110 { 0, 0, "No more associations allowed" },
7111 { 1, 1, "Associations allowed" },
7112 { 2, 255, "Reserved" },
7117 dissect_association_status_notification(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7118 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7120 uint8_t num_bssids
= tvb_get_uint8(tvb
, offset
);
7122 proto_tree_add_item(tree
, hf_ieee1905_assoc_status_notif_num_bssid
, tvb
,
7126 if (num_bssids
> 0) {
7127 proto_tree
*bssid_list
= NULL
;
7128 uint8_t bssid_num
= 0;
7130 bssid_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
7132 ett_assoc_status_notif_bssid_list
, NULL
,
7134 while (bssid_num
< num_bssids
) {
7135 proto_tree
*bssid_tree
= NULL
;
7137 bssid_tree
= proto_tree_add_subtree_format(bssid_list
, tvb
, offset
,
7138 7, ett_assoc_status_notif_bssid_tree
, NULL
,
7139 "BSSID %u", bssid_num
);
7141 proto_tree_add_item(bssid_tree
,
7142 hf_ieee1905_assoc_status_notif_bssid
, tvb
,
7146 proto_tree_add_item(bssid_tree
,
7147 hf_ieee1905_assoc_status_notif_status
,
7148 tvb
, offset
, 1, ENC_NA
);
7159 * Dissect a Source Info TLV:
7162 dissect_source_info(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7163 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7165 proto_tree_add_item(tree
, hf_ieee1905_source_info_mac_addr
, tvb
, offset
,
7173 * Dissect a Tunneled Message Type TLV:
7175 static const range_string tunneled_message_type_rvals
[] = {
7176 { 0, 0, "Association Request" },
7177 { 1, 1, "Re-Association Request" },
7178 { 2, 2, "BTM Query" },
7179 { 3, 3, "WNM Request" },
7180 { 4, 4, "ANQP Request for Neighbor Report" },
7181 { 5, 5, "DPP Message" },
7182 { 6, 255, "Reserved" },
7187 dissect_tunneled_message_type(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7188 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7190 proto_tree_add_item(tree
, hf_ieee1905_tunneled_message_type
, tvb
, offset
,
7198 * Dissect a Tunneled TLV:
7201 dissect_tunneled(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7202 proto_tree
*tree
, unsigned offset
, uint16_t len
)
7204 proto_tree_add_item(tree
, hf_ieee1905_tunneled_data
, tvb
, offset
, len
,
7208 * TODO: Save the tunnelled type and then dissect the message
7216 * Dissect an R2 Steering Request TLV:
7218 static int * const r2_steering_flags
[] = {
7219 &hf_ieee1905_r2_steering_request_mode_flag
,
7220 &hf_ieee1905_r2_btm_disassoc_imminent_flag
,
7221 &hf_ieee1905_r2_btm_abridged_flag
,
7222 &hf_ieee1905_r2_steering_req_reserved
,
7227 dissect_r2_steering_request(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7228 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7230 uint8_t sta_list_count
= 0;
7231 uint8_t target_count
= 0;
7232 proto_item
*steer_item
= NULL
;
7234 proto_tree_add_item(tree
, hf_ieee1905_r2_steering_req_src_bssid
, tvb
,
7238 proto_tree_add_bitmask(tree
, tvb
, offset
,
7239 hf_ieee1905_r2_steering_req_flags
,
7240 ett_ieee1905_steering_request_flags
,
7241 r2_steering_flags
, ENC_NA
);
7244 proto_tree_add_item(tree
, hf_ieee1905_r2_steering_op_window
, tvb
, offset
,
7248 proto_tree_add_item(tree
, hf_ieee1905_r2_steering_btm_dissasoc_tmr
, tvb
,
7249 offset
, 2, ENC_BIG_ENDIAN
);
7252 sta_list_count
= tvb_get_uint8(tvb
, offset
);
7253 steer_item
= proto_tree_add_item(tree
, hf_ieee1905_r2_steering_sta_count
,
7254 tvb
, offset
, 1, ENC_NA
);
7257 if (sta_list_count
== 0) {
7258 proto_item_append_text(steer_item
, " (Steering request applies to all"
7259 "AMB capable associated STAs in the"
7262 proto_tree
*amb_list
= NULL
;
7264 amb_list
= proto_tree_add_subtree(tree
, tvb
, offset
, 6 * sta_list_count
,
7265 ett_r2_steering_sta_list
, NULL
,
7266 "AMB capable STA list");
7267 while (sta_list_count
> 0) {
7268 proto_tree_add_item(amb_list
, hf_ieee1905_r2_steering_sta_mac
, tvb
,
7272 sta_list_count
-= 1;
7276 target_count
= tvb_get_uint8(tvb
, offset
);
7277 proto_tree_add_item(tree
, hf_ieee1905_r2_steering_target_count
, tvb
, offset
,
7281 if (target_count
> 0) {
7282 proto_tree
*target_list
= NULL
;
7285 target_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
7287 ett_r2_steering_target_list
,
7288 NULL
, "Target BSS list");
7289 while (target_num
< target_count
) {
7290 proto_tree
*target
= NULL
;
7292 target
= proto_tree_add_subtree_format(target_list
, tvb
, offset
, 9,
7293 ett_r2_steering_target
,
7294 NULL
, "Target BSS %u",
7297 proto_tree_add_item(target
, hf_ieee1905_r2_steering_target_bssid
,
7298 tvb
, offset
, 6, ENC_NA
);
7301 proto_tree_add_item(target
, hf_ieee1905_r2_steering_target_op_class
,
7302 tvb
, offset
, 1, ENC_NA
);
7305 proto_tree_add_item(target
, hf_ieee1905_r2_steering_target_channel
,
7306 tvb
, offset
, 1, ENC_NA
);
7309 proto_tree_add_item(target
, hf_ieee1905_r2_steering_reason
, tvb
,
7321 * Dissect an Unsuccessful Association Policy TLV:
7324 dissect_unsuccessful_association_policy(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7325 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7327 static int * const capabilities
[] = {
7328 &hf_ieee1905_rpt_unsuccessful_assoc_report
,
7332 proto_tree_add_bitmask(tree
, tvb
, offset
,
7333 hf_ieee1905_rpt_unsuccessful_associations
,
7334 ett_ieee1905_unsuccessful_associations
,
7335 capabilities
, ENC_NA
);
7338 proto_tree_add_item(tree
, hf_ieee1905_max_reporting_rate
,
7339 tvb
, offset
, 4, ENC_NA
);
7346 * Dissect a Metric Collection Interval TLV:
7349 dissect_metric_collection_interval(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7350 proto_tree
*tree
, unsigned offset
, uint16_t len
)
7352 proto_tree_add_item(tree
, hf_ieee1905_metric_collection_interval
,
7353 tvb
, offset
, 4, ENC_NA
);
7360 * Dissect a Radio Metrics TLV:
7363 dissect_radio_metrics(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7364 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7366 proto_tree_add_item(tree
, hf_ieee1905_radio_metrics_radio_id
,
7367 tvb
, offset
, 6, ENC_NA
);
7370 proto_tree_add_item(tree
, hf_ieee1905_radio_metrics_noise
, tvb
,
7374 proto_tree_add_item(tree
, hf_ieee1905_radio_metrics_transmit
, tvb
,
7378 proto_tree_add_item(tree
, hf_ieee1905_radio_metrics_receive_self
, tvb
,
7382 proto_tree_add_item(tree
, hf_ieee1905_radio_metrics_receive_other
, tvb
,
7390 * Dissect an AP Extended Metrics TLV:
7393 dissect_ap_extended_metrics(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7394 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7396 proto_tree_add_item(tree
, hf_ieee1905_ap_extended_metrics_bssid
, tvb
,
7400 proto_tree_add_item(tree
, hf_ieee1905_ap_extended_metrics_unicast_sent
, tvb
,
7404 proto_tree_add_item(tree
, hf_ieee1905_ap_extended_metrics_unicast_rcvd
,
7405 tvb
, offset
, 4, ENC_NA
);
7408 proto_tree_add_item(tree
, hf_ieee1905_ap_extended_metrics_multicast_sent
,
7409 tvb
, offset
, 4, ENC_NA
);
7412 proto_tree_add_item(tree
, hf_ieee1905_ap_extended_metrics_multicast_rcvd
,
7413 tvb
, offset
, 4, ENC_NA
);
7416 proto_tree_add_item(tree
, hf_ieee1905_ap_extended_metrics_bcast_sent
,
7417 tvb
, offset
, 4, ENC_NA
);
7420 proto_tree_add_item(tree
, hf_ieee1905_ap_extended_metrics_bcast_rcvd
,
7421 tvb
, offset
, 4, ENC_NA
);
7428 * Dissect an Status Code TLV:
7431 dissect_status_code(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7432 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7434 proto_tree_add_item(tree
, hf_ieee1905_status_code_status
, tvb
,
7442 * Dissect a Disassociation Reason Code TLV:
7445 dissect_disassociation_reason_code(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7446 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7448 proto_tree_add_item(tree
, hf_ieee1905_disassociation_reason_code
, tvb
,
7449 offset
, 2, ENC_BIG_ENDIAN
);
7456 * Dissect a Backhaul STA Radio Capabilitoes TLV:
7458 static int * const backhaul_sta_radio_capa_flags
[] = {
7459 &hf_ieee1905_backhaul_sta_radio_capa_mac_included
,
7460 &hf_ieee1905_backhaul_sta_radio_capa_reserved
,
7465 dissect_backhaul_sta_radio_capabilities(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7466 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7468 uint8_t mac_addr_included
= 0;
7470 proto_tree_add_item(tree
, hf_ieee1905_backhaul_sta_radio_id
, tvb
, offset
,
7474 mac_addr_included
= tvb_get_uint8(tvb
, offset
);
7475 proto_tree_add_bitmask(tree
, tvb
, offset
,
7476 hf_ieee1905_backhaul_sta_radio_capabilities
,
7477 ett_backhaul_sta_radio_capa_flags
,
7478 backhaul_sta_radio_capa_flags
, ENC_NA
);
7481 if (mac_addr_included
& 0x80) {
7482 proto_tree_add_item(tree
, hf_ieee1905_backhaul_sta_addr
, tvb
, offset
,
7491 * Dissect an AKM Suite Capabilities TLV:
7494 dissect_akm_suite_capabilities(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7495 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7497 uint8_t backhaul_akm_suite_count
= 0;
7498 uint8_t fronthaul_akm_suite_count
= 0;
7500 backhaul_akm_suite_count
= tvb_get_uint8(tvb
, offset
);
7501 proto_tree_add_item(tree
, hf_ieee1905_backhaul_akm_suite_capa_count
, tvb
,
7505 if (backhaul_akm_suite_count
> 0) {
7506 uint8_t backhaul_suite_num
= 0;
7507 proto_tree
*backhaul_suite_list
= NULL
;
7509 backhaul_suite_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
7510 backhaul_akm_suite_count
* 4,
7511 ett_backhaul_akm_suite_list
, NULL
,
7512 "Backhaul AKM Suite list");
7514 while (backhaul_suite_num
< backhaul_akm_suite_count
) {
7515 proto_tree
*backhaul_akm_suite
= NULL
;
7517 backhaul_akm_suite
= proto_tree_add_subtree_format(backhaul_suite_list
,
7518 tvb
, offset
, 4, ett_backhaul_akm_suite
, NULL
,
7519 "Backhaul AKM Suite %u", backhaul_suite_num
++);
7521 proto_tree_add_item(backhaul_akm_suite
,
7522 hf_ieee1905_akm_backhaul_suite_oui
, tvb
,
7526 proto_tree_add_item(backhaul_akm_suite
,
7527 hf_ieee1905_akm_backhaul_suite_type
, tvb
,
7533 fronthaul_akm_suite_count
= tvb_get_uint8(tvb
, offset
);
7534 proto_tree_add_item(tree
, hf_ieee1905_fronthaul_akm_suite_capa_count
, tvb
,
7538 if (fronthaul_akm_suite_count
> 0) {
7539 uint8_t fronthaul_suite_num
= 0;
7540 proto_tree
*fronthaul_suite_list
= NULL
;
7542 fronthaul_suite_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
7543 fronthaul_akm_suite_count
* 4,
7544 ett_fronthaul_akm_suite_list
, NULL
,
7545 "Fronthaul AKM Suite list");
7547 while (fronthaul_suite_num
< fronthaul_akm_suite_count
) {
7548 proto_tree
*fronthaul_akm_suite
= NULL
;
7550 fronthaul_akm_suite
= proto_tree_add_subtree_format(fronthaul_suite_list
,
7551 tvb
, offset
, 4, ett_fronthaul_akm_suite
, NULL
,
7552 "Fronthaul AKM Suite %u", fronthaul_suite_num
++);
7554 proto_tree_add_item(fronthaul_akm_suite
,
7555 hf_ieee1905_akm_fronthaul_suite_oui
, tvb
,
7559 proto_tree_add_item(fronthaul_akm_suite
,
7560 hf_ieee1905_akm_fronthaul_suite_type
, tvb
,
7569 static const true_false_string tfs_dpp_frame_indicator
= {
7571 "DPP public action frame"
7574 static int * const ieee1905_encap_dpp_flags
[] = {
7575 &hf_ieee1905_dpp_encap_enrollee_mac_present
,
7576 &hf_ieee1905_dpp_encap_reserved
,
7577 &hf_ieee1905_dpp_encap_frame_type_flag
,
7578 &hf_ieee1905_dpp_encap_reserved2
,
7583 dissect_1905_encap_dpp(tvbuff_t
*tvb
, packet_info
*pinfo
,
7584 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7586 uint8_t flags
= tvb_get_uint8(tvb
, offset
);
7587 uint16_t frame_length
;
7589 proto_tree_add_bitmask(tree
, tvb
, offset
,
7590 hf_ieee1905_encap_dpp_flags
,
7591 ett_1905_encap_dpp_flags
,
7592 ieee1905_encap_dpp_flags
, ENC_NA
);
7595 if (flags
& 0x80) { /* Enrollee MAC present */
7596 proto_tree_add_item(tree
, hf_ieee1905_encap_dpp_sta_mac
, tvb
, offset
,
7601 proto_tree_add_item(tree
, hf_ieee1905_dpp_encap_frame_type
, tvb
, offset
, 1,
7605 frame_length
= tvb_get_ntohs(tvb
, offset
);
7606 proto_tree_add_item(tree
, hf_ieee1905_dpp_encap_frame_length
, tvb
, offset
,
7614 code
= tvb_get_uint8(tvb
, offset
);
7615 proto_tree_add_item(tree
, hf_ieee1905_dpp_message_public_action
, tvb
,
7619 new_tvb
= tvb_new_subset_length(tvb
, offset
, frame_length
- 1);
7621 add_ff_action_public_fields(tree
, new_tvb
, pinfo
, 0, code
);
7623 offset
+= frame_length
- 1;
7627 proto_tree_add_item(tree
, hf_ieee1905_dpp_encap_public_action
, tvb
,
7631 proto_tree_add_item(tree
, hf_ieee1905_dpp_encap_dpp_oui
, tvb
, offset
,
7635 proto_tree_add_item(tree
, hf_ieee1905_dpp_encap_dpp_subtype
, tvb
,
7639 new_tvb
= tvb_new_subset_length(tvb
, offset
, frame_length
- 5);
7640 dissect_wifi_dpp_public_action(new_tvb
, pinfo
, tree
, NULL
);
7642 offset
+= (frame_length
- 5);
7649 * Dissect a 1905 Encap EAPOL TLV:
7652 dissect_1905_encap_eapol(tvbuff_t
*tvb
, packet_info
*pinfo
,
7653 proto_tree
*tree
, unsigned offset
, uint16_t len
)
7655 offset
+= call_dissector(eapol_handle
,
7656 tvb_new_subset_length(tvb
, offset
, len
),
7663 * Dissect a DPP Bootstrapping URI Notification TLV:
7666 dissect_dpp_bootstrapping_uri_notification(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7667 proto_tree
*tree
, unsigned offset
, uint16_t len
)
7671 proto_tree_add_item(tree
, hf_ieee1905_dpp_bootstrapping_uri_radio_id
,
7672 tvb
, offset
, 6, ENC_NA
);
7675 proto_tree_add_item(tree
, hf_ieee1905_dpp_bootstrapping_uri_local_mac_addr
,
7676 tvb
, offset
, 6, ENC_NA
);
7679 proto_tree_add_item(tree
, hf_ieee1905_dpp_bootstrapping_uri_bsta_mac_addr
,
7680 tvb
, offset
, 6, ENC_NA
);
7683 /* Assume we got the whole URI */
7685 proto_tree_add_item(tree
, hf_ieee1905_dpp_bootstrapping_uri_received
,
7686 tvb
, offset
, uri_len
, ENC_ASCII
);
7693 * Dissect a DPP CCE Indication TLV:
7696 dissect_dpp_cce_indication(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7697 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7699 proto_tree_add_item(tree
, hf_ieee1905_dpp_advertise_cce_flag
, tvb
, offset
,
7707 * Dissect a DPP Chirp Value TLV:
7709 static int * const dpp_chirp_headers
[] = {
7710 &hf_ieee1905_dpp_chirp_enrollee_mac_addr_present
,
7711 &hf_ieee1905_dpp_chirp_hash_validity
,
7712 &hf_ieee1905_dpp_chirp_reserved
,
7716 static const true_false_string tfs_chirp_hash_validity_bit
= {
7717 "Establish DPP authentication state pertaining to this hash value",
7718 "Purge any DPP authentication state pertaining to this hash value"
7722 dissect_dpp_chirp_value(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7723 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7725 uint8_t flags
= tvb_get_uint8(tvb
, offset
);
7726 uint8_t hash_length
= 0;
7728 proto_tree_add_bitmask_with_flags(tree
, tvb
, offset
,
7729 hf_ieee1905_dpp_chirp_value_flags
,
7730 ett_ieee1905_dpp_chirp
, dpp_chirp_headers
, ENC_NA
,
7735 proto_tree_add_item(tree
, hf_ieee1905_dpp_chirp_enrollee_mac_addr
, tvb
,
7740 hash_length
= tvb_get_uint8(tvb
, offset
);
7741 proto_tree_add_item(tree
, hf_ieee1905_dpp_chirp_value_hash_length
, tvb
,
7746 proto_tree_add_item(tree
, hf_ieee1905_dpp_chirp_value_hash_value
, tvb
,
7747 offset
, hash_length
, ENC_NA
);
7748 offset
+= hash_length
;
7755 dissect_device_inventory(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7756 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7758 uint8_t lsn
= tvb_get_uint8(tvb
, offset
);
7759 unsigned lsv
= 0, lee
= 0, num_radios
= 0;
7761 proto_tree_add_item(tree
, hf_ieee1905_dev_inventory_lsn
, tvb
, offset
, 1,
7765 proto_tree_add_item(tree
, hf_ieee1905_dev_inventory_serial
, tvb
, offset
,
7769 lsv
= tvb_get_uint8(tvb
, offset
);
7770 proto_tree_add_item(tree
, hf_ieee1905_dev_inventory_lsv
, tvb
, offset
, 1,
7774 proto_tree_add_item(tree
, hf_ieee1905_dev_inventory_sw_vers
, tvb
, offset
,
7778 lee
= tvb_get_uint8(tvb
, offset
);
7779 proto_tree_add_item(tree
, hf_ieee1905_dev_inventory_lee
, tvb
, offset
, 1,
7783 proto_tree_add_item(tree
, hf_ieee1905_dev_inventory_exec_env
, tvb
, offset
,
7787 num_radios
= tvb_get_uint8(tvb
, offset
);
7788 proto_tree_add_item(tree
, hf_ieee1905_dev_inventory_num_radios
, tvb
, offset
,
7792 if (num_radios
> 0) {
7793 uint8_t radio_id
= 0;
7794 proto_tree
*radio_list
= NULL
;
7795 proto_item
*rli
= NULL
;
7796 unsigned start_list_offset
= offset
;
7798 radio_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
7799 ett_device_inventory_radio_list
,
7800 &rli
, "Radio List");
7802 while (num_radios
> 0) {
7804 proto_tree
*radio_tree
= NULL
;
7805 proto_item
*rti
= NULL
;
7806 unsigned start_tree_offset
= offset
;
7808 radio_tree
= proto_tree_add_subtree_format(radio_list
, tvb
, offset
,
7809 -1, ett_device_inventory_radio_tree
,
7810 &rti
, "Radio %u", radio_id
);
7812 proto_tree_add_item(radio_tree
, hf_ieee1905_dev_inventory_radio_id
,
7813 tvb
, offset
, 6, ENC_NA
);
7816 lcv
= tvb_get_uint8(tvb
, offset
);
7817 proto_tree_add_item(radio_tree
, hf_ieee1905_dev_inventory_lcv
, tvb
,
7821 proto_tree_add_item(radio_tree
, hf_ieee1905_dev_inventory_chp_ven
,
7822 tvb
, offset
, lcv
, ENC_ASCII
);
7825 proto_item_set_len(rti
, offset
- start_tree_offset
);
7829 proto_item_set_len(rli
, offset
- start_list_offset
);
7836 dissect_bss_configuration_request(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7837 proto_tree
*tree
, unsigned offset
, uint16_t len
)
7839 proto_tree_add_item(tree
, hf_ieee1905_bss_configuration_request
, tvb
,
7840 offset
, len
, ENC_NA
);
7847 dissect_bss_configuration_response(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7848 proto_tree
*tree
, unsigned offset
, uint16_t len
)
7850 proto_tree_add_item(tree
, hf_ieee1905_bss_configuration_response
, tvb
,
7851 offset
, len
, ENC_NA
);
7858 dissect_dpp_message(tvbuff_t
*tvb
, packet_info
*pinfo
,
7859 proto_tree
*tree
, unsigned offset
, uint16_t len
)
7864 code
= tvb_get_uint8(tvb
, offset
);
7865 proto_tree_add_item(tree
, hf_ieee1905_dpp_message_public_action
, tvb
,
7869 new_tvb
= tvb_new_subset_length(tvb
, offset
, len
- 1);
7871 add_ff_action_public_fields(tree
, new_tvb
, pinfo
, 0, code
);
7878 static int * const spatial_reuse_bss_color
[] = {
7879 &hf_ieee1905_spatial_reuse_reserved
,
7880 &hf_ieee1905_spatial_reuse_bss_color
,
7884 static int * const spatial_reuse_hesiga_flags
[] = {
7885 &hf_ieee1905_spatial_reuse_reserved2
,
7886 &hf_ieee1905_spatial_reuse_hesiga_value15_allowed
,
7887 &hf_ieee1905_spatial_reuse_srg_info_valid
,
7888 &hf_ieee1905_spatial_reuse_non_srg_offset_valid
,
7889 &hf_ieee1905_spatial_reuse_reserved3
,
7890 &hf_ieee1905_spatial_reuse_psr_disallowed
,
7894 #define SRG_INFO_VALID 0x08
7895 #define NON_SRG_OFFSET_VALID 0x04
7898 dissect_spatial_reuse_request(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7899 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
7903 proto_tree_add_item(tree
, hf_ieee1905_spatial_reuse_req_radio_id
,
7904 tvb
, offset
, 6, ENC_NA
);
7907 proto_tree_add_bitmask(tree
, tvb
, offset
,
7908 hf_ieee1905_spatial_reuse_color_flags
,
7909 ett_ieee1905_spatial_reuse_color
,
7910 spatial_reuse_bss_color
, ENC_NA
);
7913 flags2
= tvb_get_uint8(tvb
, offset
);
7914 proto_tree_add_bitmask(tree
, tvb
, offset
,
7915 hf_ieee1905_spatial_reuse_hesiga_flags
,
7916 ett_ieee1905_spatial_reuse_hesiga
,
7917 spatial_reuse_hesiga_flags
, ENC_NA
);
7920 if (flags2
& NON_SRG_OFFSET_VALID
) {
7921 proto_tree_add_item(tree
, hf_ieee1905_spatial_reuse_non_srg_obsspd_max_offset
,
7922 tvb
, offset
, 1, ENC_NA
);
7925 proto_tree_add_item(tree
, hf_ieee1905_spatial_reuse_not_valid1
, tvb
,
7930 if (flags2
& SRG_INFO_VALID
) {
7931 proto_tree_add_item(tree
,
7932 hf_ieee1905_spatial_reuse_srg_obsspd_min_offset
,
7933 tvb
, offset
, 1, ENC_NA
);
7936 proto_tree_add_item(tree
,
7937 hf_ieee1905_spatial_reuse_srg_obsspd_max_offset
,
7938 tvb
, offset
, 1, ENC_NA
);
7941 proto_tree_add_item(tree
,
7942 hf_ieee1905_spatial_reuse_srg_bss_color_bitmap
,
7943 tvb
, offset
, 8, ENC_BIG_ENDIAN
);
7946 proto_tree_add_item(tree
,
7947 hf_ieee1905_spatial_reuse_srg_partial_bssid_bitmap
,
7948 tvb
, offset
, 8, ENC_BIG_ENDIAN
);
7951 proto_tree_add_item(tree
,
7952 hf_ieee1905_spatial_reuse_not_valid2
, tvb
,
7956 proto_tree_add_item(tree
,
7957 hf_ieee1905_spatial_reuse_not_valid3
, tvb
,
7961 proto_tree_add_item(tree
,
7962 hf_ieee1905_spatial_reuse_not_valid4
, tvb
,
7963 offset
, 8, ENC_BIG_ENDIAN
);
7966 proto_tree_add_item(tree
,
7967 hf_ieee1905_spatial_reuse_not_valid5
, tvb
,
7968 offset
, 8, ENC_BIG_ENDIAN
);
7972 proto_tree_add_item(tree
, hf_ieee1905_spatial_reuse_reserved4
, tvb
,
7973 offset
, 2, ENC_BIG_ENDIAN
);
7979 static int * const spatial_reuse_rep_bss_color
[] = {
7980 &hf_ieee1905_spatial_reuse_rep_reserved
,
7981 &hf_ieee1905_spatial_reuse_rep_partial_bss_color
,
7982 &hf_ieee1905_spatial_reuse_rep_bss_color
,
7986 static int * const spatial_reuse_rep_hesiga_flags
[] = {
7987 &hf_ieee1905_spatial_reuse_rep_reserved2
,
7988 &hf_ieee1905_spatial_reuse_rep_hesiga_value15_allowed
,
7989 &hf_ieee1905_spatial_reuse_rep_srg_info_valid
,
7990 &hf_ieee1905_spatial_reuse_rep_non_srg_offset_valid
,
7991 &hf_ieee1905_spatial_reuse_rep_reserved3
,
7992 &hf_ieee1905_spatial_reuse_rep_psr_disallowed
,
7997 dissect_spatial_reuse_report(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
7998 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
8002 proto_tree_add_item(tree
, hf_ieee1905_spatial_reuse_rep_radio_id
,
8003 tvb
, offset
, 6, ENC_NA
);
8006 proto_tree_add_bitmask(tree
, tvb
, offset
,
8007 hf_ieee1905_spatial_reuse_rep_color_flags
,
8008 ett_ieee1905_spatial_reuse_rep_color
,
8009 spatial_reuse_rep_bss_color
, ENC_NA
);
8012 flags2
= tvb_get_uint8(tvb
, offset
);
8013 proto_tree_add_bitmask(tree
, tvb
, offset
,
8014 hf_ieee1905_spatial_reuse_rep_hesiga_flags
,
8015 ett_ieee1905_spatial_reuse_rep_hesiga
,
8016 spatial_reuse_rep_hesiga_flags
, ENC_NA
);
8019 if (flags2
& NON_SRG_OFFSET_VALID
) {
8020 proto_tree_add_item(tree
,
8021 hf_ieee1905_spatial_reuse_rep_non_srg_obsspd_max_offset
, tvb
,
8025 proto_tree_add_item(tree
, hf_ieee1905_spatial_reuse_rep_not_valid1
, tvb
,
8030 if (flags2
& SRG_INFO_VALID
) {
8031 proto_tree_add_item(tree
,
8032 hf_ieee1905_spatial_reuse_rep_srg_obsspd_min_offset
,
8033 tvb
, offset
, 1, ENC_NA
);
8036 proto_tree_add_item(tree
,
8037 hf_ieee1905_spatial_reuse_rep_srg_obsspd_max_offset
,
8038 tvb
, offset
, 1, ENC_NA
);
8041 proto_tree_add_item(tree
,
8042 hf_ieee1905_spatial_reuse_rep_srg_bss_color_bitmap
,
8043 tvb
, offset
, 8, ENC_BIG_ENDIAN
);
8046 proto_tree_add_item(tree
,
8047 hf_ieee1905_spatial_reuse_rep_srg_partial_bssid_bitmap
,
8048 tvb
, offset
, 8, ENC_BIG_ENDIAN
);
8051 proto_tree_add_item(tree
,
8052 hf_ieee1905_spatial_reuse_rep_not_valid2
, tvb
,
8056 proto_tree_add_item(tree
,
8057 hf_ieee1905_spatial_reuse_rep_not_valid3
, tvb
,
8061 proto_tree_add_item(tree
,
8062 hf_ieee1905_spatial_reuse_rep_not_valid4
, tvb
,
8063 offset
, 8, ENC_BIG_ENDIAN
);
8066 proto_tree_add_item(tree
,
8067 hf_ieee1905_spatial_reuse_rep_not_valid5
, tvb
,
8068 offset
, 8, ENC_BIG_ENDIAN
);
8072 proto_tree_add_item(tree
,
8073 hf_ieee1905_spatial_reuse_rep_nbor_bss_color_bitmap
,
8074 tvb
, offset
, 8, ENC_BIG_ENDIAN
);
8077 proto_tree_add_item(tree
,
8078 hf_ieee1905_spatial_reuse_rep_reserved4
, tvb
, offset
,
8085 static const range_string spatial_reuse_response_rvals
[] = {
8086 { 0x00, 0x00, "Accept" },
8087 { 0x01, 0x01, "Decline because radio does not support requested configuration" },
8088 { 0x02, 0xFF, "Reserved" },
8093 dissect_spatial_reuse_config_response(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
8094 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
8096 proto_tree_add_item(tree
, hf_ieee1905_spatial_reuse_config_radio_id
,
8097 tvb
, offset
, 6, ENC_NA
);
8100 proto_tree_add_item(tree
, hf_ieee1905_spatial_reuse_config_response
,
8101 tvb
, offset
, 1, ENC_NA
);
8108 dissect_qos_management_policy(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
8109 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
8111 uint8_t num_mscs_disallowed
= tvb_get_uint8(tvb
, offset
);
8112 uint8_t num_scs_disallowed
= 0;
8113 proto_tree
*mscs_list
= NULL
;
8114 proto_tree
*scs_list
= NULL
;
8116 proto_tree_add_item(tree
, hf_ieee1905_qos_mgmt_policy_mscs_disallowed
,
8117 tvb
, offset
, 1, ENC_NA
);
8120 mscs_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
8121 num_mscs_disallowed
* 6,
8122 ett_qos_mgmt_policy_mscs_list
,
8124 while (num_mscs_disallowed
) {
8125 proto_tree_add_item(mscs_list
, hf_ieee1905_qos_mgmt_mscs_disallow_sta
,
8126 tvb
, offset
, 6, ENC_NA
);
8129 num_mscs_disallowed
--;
8132 num_scs_disallowed
= tvb_get_uint8(tvb
, offset
);
8133 proto_tree_add_item(tree
, hf_ieee1905_qos_mgmt_policy_scs_disallowed
,
8134 tvb
, offset
, 1, ENC_NA
);
8137 scs_list
= proto_tree_add_subtree(tree
, tvb
, offset
,
8138 num_scs_disallowed
* 6,
8139 ett_qos_mgmt_policy_scs_list
,
8142 while (num_scs_disallowed
) {
8143 proto_tree_add_item(scs_list
, hf_ieee1905_qos_mgmt_scs_disallow_sta
,
8144 tvb
, offset
, 6, ENC_NA
);
8147 num_scs_disallowed
--;
8154 dissect_qos_management_descriptor(tvbuff_t
*tvb
, packet_info
*pinfo
,
8155 proto_tree
*tree
, unsigned offset
, uint16_t len
)
8157 uint16_t desc_size
= 0;
8159 proto_tree_add_item(tree
, hf_ieee1905_qos_mgmt_desc_qmid
, tvb
, offset
,
8164 proto_tree_add_item(tree
, hf_ieee1905_qos_mgmt_desc_bssid
, tvb
, offset
,
8169 proto_tree_add_item(tree
, hf_ieee1905_qos_mgmt_desc_client_mac
, tvb
,
8174 /* There is MSCS, SCS or QoS element */
8176 desc_size
= add_tagged_field(pinfo
, tree
, tvb
, offset
, 0, NULL
, 0, NULL
);
8177 offset
+= desc_size
;
8184 static int * const controller_capa_header
[] = {
8185 &hf_ieee1905_controller_capa_reserved
,
8186 &hf_ieee1905_controller_capa_early_ap_capa
,
8187 &hf_ieee1905_controller_capa_kbmb_counter
,
8192 dissect_controller_capability(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
8193 proto_tree
*tree
, unsigned offset
, uint16_t len
)
8195 proto_tree_add_bitmask(tree
, tvb
, offset
,
8196 hf_ieee1905_controller_capa_flags
,
8197 ett_ieee1905_controller_capa
,
8198 controller_capa_header
, ENC_NA
);
8205 * Dissect a Wi-Fi 7 agent capability TLV:
8207 static int* const wifi_7_agent_capabilities_flags_headers
[] = {
8208 &hf_ieee1905_wifi_7_agent_capabilities_flags_ap_max_links
,
8209 &hf_ieee1905_wifi_7_agent_capabilities_flags_sta_max_links
,
8210 &hf_ieee1905_wifi_7_agent_capabilities_flags_ttl_mapping_cap
,
8211 &hf_ieee1905_wifi_7_agent_capabilities_flags_reserved
,
8215 static int* const wifi_7_agent_capabilities_radio_flags_headers
[] = {
8216 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_str_support
,
8217 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_nstr_support
,
8218 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_emlsr_support
,
8219 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_emlmr_support
,
8220 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_reserved1
,
8221 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_str_support
,
8222 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_nstr_support
,
8223 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_emlsr_support
,
8224 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_emlmr_support
,
8225 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_reserved2
,
8229 static int* const wifi_7_agent_capabilities_radio_record_flags_headers
[] = {
8230 &hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags_freq_separation
,
8231 &hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags_reserved
,
8235 static const value_string tid_to_link_mapping_capability_vals
[] = {
8236 { 0, "The Agent does not support TID-to-Link mapping" },
8237 { 1, "The Agent supports the mapping of each TID to the same or different link set" },
8239 { 3, "The Agent only supports the mapping of all TIDs to the same link set" },
8244 wifi_7_agent_cap_add_record(proto_tree
*tree
, int hf
,
8245 tvbuff_t
*tvb
, const char *list_name
, unsigned offset
)
8247 proto_tree
*record_list
= NULL
;
8248 proto_item
*rli
= NULL
;
8249 uint32_t record_count
= 0, record_num
= 0;
8250 unsigned record_list_start
= 0;
8252 proto_tree_add_item_ret_uint(tree
, hf
, tvb
, offset
, 1, ENC_NA
, &record_count
);
8255 if (record_count
== 0) {
8259 record_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
8260 ett_wifi_7_agent_capabilities_radio_record_list
,
8263 record_list_start
= offset
;
8265 while (record_num
< record_count
) {
8266 proto_tree
*record_tree
= NULL
;
8267 proto_item
*ri
= NULL
;
8269 record_tree
= proto_tree_add_subtree_format(record_list
, tvb
, offset
, -1,
8270 ett_wifi_7_agent_capabilities_radio_record
,
8271 &ri
, "Record %u", record_num
);
8273 proto_tree_add_item(record_tree
, hf_ieee1905_wifi_7_agent_capabilities_radio_record_id
,
8274 tvb
, offset
, 6, ENC_NA
);
8277 proto_tree_add_bitmask(record_tree
, tvb
, offset
,
8278 hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags
,
8279 ett_wifi_7_agent_capabilities_radio_record_flags
,
8280 wifi_7_agent_capabilities_radio_record_flags_headers
, ENC_NA
);
8286 proto_item_set_len(rli
, offset
- record_list_start
);
8292 dissect_wifi_7_agent_capabilities(tvbuff_t
*tvb
, packet_info
*pinfo _U_
,
8293 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
8295 proto_tree
*radio_list
= NULL
;
8296 proto_item
*rli
= NULL
;
8297 uint32_t radio_count
= 0, radio_num
= 0;
8298 unsigned radio_list_start
= 0;
8300 proto_tree_add_item(tree
, hf_ieee1905_wifi_7_agent_capabilities_max_num_mlds
, tvb
, offset
,
8304 proto_tree_add_bitmask(tree
, tvb
, offset
,
8305 hf_ieee1905_wifi_7_agent_capabilities_flags
,
8306 ett_wifi_7_agent_capabilities_flags
,
8307 wifi_7_agent_capabilities_flags_headers
, ENC_NA
);
8310 proto_tree_add_item(tree
, hf_ieee1905_wifi_7_agent_capabilities_reserved
,
8311 tvb
, offset
, 13, ENC_NA
);
8314 proto_tree_add_item_ret_uint(tree
, hf_ieee1905_wifi_7_agent_capabilities_radio_num
,
8315 tvb
, offset
, 1, ENC_NA
, &radio_count
);
8318 radio_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
8319 ett_wifi_7_agent_capabilities_radio_list
,
8320 &rli
, "Radio List");
8322 radio_list_start
= offset
;
8324 while (radio_num
< radio_count
) {
8325 proto_tree
*radio_tree
= NULL
;
8326 proto_item
*ri
= NULL
;
8328 radio_tree
= proto_tree_add_subtree_format(radio_list
, tvb
, offset
,
8329 -1, ett_wifi_7_agent_capabilities_radio
,
8330 &ri
, "Radio %u", radio_num
);
8332 proto_tree_add_item(radio_tree
, hf_ieee1905_wifi_7_agent_capabilities_radio_id
,
8333 tvb
, offset
, 6, ENC_NA
);
8336 proto_tree_add_item(radio_tree
, hf_ieee1905_wifi_7_agent_capabilities_radio_reserved
,
8337 tvb
, offset
, 24, ENC_NA
);
8340 proto_tree_add_bitmask(radio_tree
, tvb
, offset
,
8341 hf_ieee1905_wifi_7_agent_capabilities_radio_flags
,
8342 ett_wifi_7_agent_capabilities_radio_flags
,
8343 wifi_7_agent_capabilities_radio_flags_headers
, ENC_NA
);
8346 offset
= wifi_7_agent_cap_add_record(radio_tree
,
8347 hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_str_records
,
8348 tvb
, "AP STR Record List", offset
);
8350 offset
= wifi_7_agent_cap_add_record(radio_tree
,
8351 hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_nstr_records
,
8352 tvb
, "AP NSTR Record List", offset
);
8354 offset
= wifi_7_agent_cap_add_record(radio_tree
,
8355 hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_emlsr_records
,
8356 tvb
, "AP EMLSR Record List", offset
);
8358 offset
= wifi_7_agent_cap_add_record(radio_tree
,
8359 hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_emlmr_records
,
8360 tvb
, "AP EMLMR Record List", offset
);
8362 offset
= wifi_7_agent_cap_add_record(radio_tree
,
8363 hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_str_records
,
8364 tvb
, "bSTA STR Record List", offset
);
8366 offset
= wifi_7_agent_cap_add_record(radio_tree
,
8367 hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_nstr_records
,
8368 tvb
, "bSTA NSTR Record List", offset
);
8370 offset
= wifi_7_agent_cap_add_record(radio_tree
,
8371 hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_emlsr_records
,
8372 tvb
, "bSTA EMLSR Record List", offset
);
8374 offset
= wifi_7_agent_cap_add_record(radio_tree
,
8375 hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_emlmr_records
,
8376 tvb
, "bSTA EMLMR Record List", offset
);
8381 proto_item_set_len(rli
, offset
- radio_list_start
);
8387 * Dissect an Agent AP MLD Configuration TLV:
8389 static int* const agent_ap_mld_configuration_ap_mld_flags_headers
[] = {
8390 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags_ap_mld_mac_addr_valid
,
8391 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags_reserved
,
8395 static int* const agent_ap_mld_configuration_ap_mld_flags2_headers
[] = {
8396 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_str
,
8397 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_nstr
,
8398 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_emlsr
,
8399 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_emlmr
,
8400 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_reserved
,
8404 static int* const agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_headers
[] = {
8405 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_affiliated_ap_mac_addr_valid
,
8406 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_link_id_valid
,
8407 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_reserved
,
8412 dissect_agent_agent_ap_mld_configuration(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
,
8413 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
8415 proto_tree
*ap_mld_list
= NULL
;
8416 proto_item
*amli
= NULL
;
8417 uint32_t ap_mld_count
= 0, ap_mld_num
= 0;
8418 unsigned ap_mld_list_start
= 0;
8420 proto_tree_add_item_ret_uint(tree
, hf_ieee1905_agent_ap_mld_configuration_ap_mld_num
,
8421 tvb
, offset
, 1, ENC_NA
, &ap_mld_count
);
8424 ap_mld_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
8425 ett_agent_ap_mld_configuration_ap_mld_list
,
8426 &amli
, "AP MLD List");
8428 ap_mld_list_start
= offset
;
8430 while (ap_mld_num
< ap_mld_count
) {
8431 proto_tree
*ap_mld_tree
= NULL
;
8432 proto_item
*ami
= NULL
;
8434 proto_tree
*aff_ap_list
= NULL
;
8435 proto_item
*aali
= NULL
;
8436 uint32_t aff_ap_count
= 0, aff_ap_num
= 0;
8437 unsigned aff_ap_list_start
= 0;
8439 ap_mld_tree
= proto_tree_add_subtree_format(ap_mld_list
, tvb
, offset
,
8440 -1, ett_agent_ap_mld_configuration_ap_mld
,
8441 &ami
, "AP MLD %u", ap_mld_num
);
8443 proto_tree_add_bitmask(ap_mld_tree
, tvb
, offset
,
8444 hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags
,
8445 ett_agent_ap_mld_configuration_ap_mld_flags
,
8446 agent_ap_mld_configuration_ap_mld_flags_headers
, ENC_NA
);
8449 proto_tree_add_item_ret_uint(ap_mld_tree
, hf_ieee1905_agent_ap_mld_configuration_ap_mld_ssid_len
,
8450 tvb
, offset
, 1, ENC_NA
, &ssid_len
);
8453 proto_tree_add_item(ap_mld_tree
, hf_ieee1905_agent_ap_mld_configuration_ap_mld_ssid
,
8454 tvb
, offset
, ssid_len
, ENC_ASCII
);
8457 proto_tree_add_item(ap_mld_tree
, hf_ieee1905_agent_ap_mld_configuration_ap_mld_mac_addr
,
8458 tvb
, offset
, 6, ENC_NA
);
8461 proto_tree_add_bitmask(ap_mld_tree
, tvb
, offset
,
8462 hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2
,
8463 ett_agent_ap_mld_configuration_ap_mld_flags2
,
8464 agent_ap_mld_configuration_ap_mld_flags2_headers
, ENC_NA
);
8467 proto_tree_add_item(ap_mld_tree
, hf_ieee1905_agent_ap_mld_configuration_ap_mld_reserved
, tvb
, offset
,
8471 proto_tree_add_item_ret_uint(ap_mld_tree
, hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_num
,
8472 tvb
, offset
, 1, ENC_NA
, &aff_ap_count
);
8475 aff_ap_list
= proto_tree_add_subtree(ap_mld_tree
, tvb
, offset
, -1,
8476 ett_agent_ap_mld_configuration_ap_mld_affiliated_ap_list
,
8477 &aali
, "Affiliated AP List");
8479 aff_ap_list_start
= offset
;
8481 while (aff_ap_num
< aff_ap_count
) {
8482 proto_tree
*aff_ap_tree
= NULL
;
8483 proto_item
*aai
= NULL
;
8485 aff_ap_tree
= proto_tree_add_subtree_format(aff_ap_list
, tvb
, offset
,
8486 -1, ett_agent_ap_mld_configuration_ap_mld_affiliated_ap
,
8487 &aai
, "Affiliated AP %u", aff_ap_num
);
8489 proto_tree_add_bitmask(aff_ap_tree
, tvb
, offset
,
8490 hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags
,
8491 ett_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags
,
8492 agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_headers
, ENC_NA
);
8495 proto_tree_add_item(aff_ap_tree
, hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_radio_id
,
8496 tvb
, offset
, 6, ENC_NA
);
8499 proto_tree_add_item(aff_ap_tree
, hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_mac_addr
,
8500 tvb
, offset
, 6, ENC_NA
);
8503 proto_tree_add_item(aff_ap_tree
, hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_link_id
,
8504 tvb
, offset
, 1, ENC_NA
);
8507 proto_tree_add_item(aff_ap_tree
, hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_reserved
,
8508 tvb
, offset
, 18, ENC_NA
);
8514 proto_item_set_len(aali
, offset
- aff_ap_list_start
);
8518 proto_item_set_len(amli
, offset
- ap_mld_list_start
);
8524 * Dissect a Backhaul STA MLD Configuration TLV:
8526 static int* const backhaul_sta_mld_configuration_flags_headers
[] = {
8527 &hf_ieee1905_backhaul_sta_mld_configuration_flags_bsta_mld_mac_addr_valid
,
8528 &hf_ieee1905_backhaul_sta_mld_configuration_flags_ap_mld_mac_addr_valid
,
8529 &hf_ieee1905_backhaul_sta_mld_configuration_flags_reserved
,
8533 static int* const backhaul_sta_mld_configuration_flags2_headers
[] = {
8534 &hf_ieee1905_backhaul_sta_mld_configuration_flags2_str
,
8535 &hf_ieee1905_backhaul_sta_mld_configuration_flags2_nstr
,
8536 &hf_ieee1905_backhaul_sta_mld_configuration_flags2_emlsr
,
8537 &hf_ieee1905_backhaul_sta_mld_configuration_flags2_emlmr
,
8538 &hf_ieee1905_backhaul_sta_mld_configuration_flags2_reserved
,
8542 static int* const backhaul_sta_mld_configuration_affiliated_bsta_flags_headers
[] = {
8543 &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags_affiliated_bsta_mac_addr_valid
,
8544 &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags_reserved
,
8549 dissect_backhaul_sta_mld_configuration(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
,
8550 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
8552 proto_tree
*aff_bsta_list
= NULL
;
8553 proto_item
*abli
= NULL
;
8554 uint32_t aff_bsta_count
= 0, aff_bsta_num
= 0;
8555 unsigned aff_bsta_list_start
= 0;
8557 proto_tree_add_bitmask(tree
, tvb
, offset
,
8558 hf_ieee1905_backhaul_sta_mld_configuration_flags
,
8559 ett_backhaul_sta_mld_configuration_flags
,
8560 backhaul_sta_mld_configuration_flags_headers
, ENC_NA
);
8563 proto_tree_add_item(tree
, hf_ieee1905_backhaul_sta_mld_configuration_bsta_mld_mac_addr
,
8564 tvb
, offset
, 6, ENC_NA
);
8567 proto_tree_add_item(tree
, hf_ieee1905_backhaul_sta_mld_configuration_ap_mld_mac_addr
,
8568 tvb
, offset
, 6, ENC_NA
);
8571 proto_tree_add_bitmask(tree
, tvb
, offset
,
8572 hf_ieee1905_backhaul_sta_mld_configuration_flags2
,
8573 ett_backhaul_sta_mld_configuration_flags2
,
8574 backhaul_sta_mld_configuration_flags2_headers
, ENC_NA
);
8577 proto_tree_add_item(tree
, hf_ieee1905_backhaul_sta_mld_configuration_reserved
,
8578 tvb
, offset
, 17, ENC_NA
);
8581 proto_tree_add_item_ret_uint(tree
, hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_num
,
8582 tvb
, offset
, 1, ENC_NA
, &aff_bsta_count
);
8585 aff_bsta_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
8586 ett_backhaul_sta_mld_configuration_affiliated_bsta_list
,
8587 &abli
, "Affiliated bSTA List");
8589 aff_bsta_list_start
= offset
;
8591 while (aff_bsta_num
< aff_bsta_count
) {
8592 proto_tree
*aff_bsta_tree
= NULL
;
8593 proto_item
*abi
= NULL
;
8595 aff_bsta_tree
= proto_tree_add_subtree_format(aff_bsta_list
, tvb
, offset
,
8596 -1, ett_backhaul_sta_mld_configuration_affiliated_bsta
,
8597 &abi
, "Affiliated bSTA %u", aff_bsta_num
);
8599 proto_tree_add_bitmask(aff_bsta_tree
, tvb
, offset
,
8600 hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags
,
8601 ett_backhaul_sta_mld_configuration_affiliated_bsta_flags
,
8602 backhaul_sta_mld_configuration_affiliated_bsta_flags_headers
, ENC_NA
);
8605 proto_tree_add_item(aff_bsta_tree
, hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_radio_id
,
8606 tvb
, offset
, 6, ENC_NA
);
8609 proto_tree_add_item(aff_bsta_tree
, hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_mac_addr
,
8610 tvb
, offset
, 6, ENC_NA
);
8613 proto_tree_add_item(aff_bsta_tree
, hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_reserved
,
8614 tvb
, offset
, 19, ENC_NA
);
8620 proto_item_set_len(abli
, offset
- aff_bsta_list_start
);
8626 * Dissect a Associated STA MLD Configuration TLV:
8628 static int* const associated_sta_mld_configuration_flags_headers
[] = {
8629 &hf_ieee1905_associated_sta_mld_configuration_flags_str
,
8630 &hf_ieee1905_associated_sta_mld_configuration_flags_nstr
,
8631 &hf_ieee1905_associated_sta_mld_configuration_flags_emlsr
,
8632 &hf_ieee1905_associated_sta_mld_configuration_flags_emlmr
,
8633 &hf_ieee1905_associated_sta_mld_configuration_flags_reserved
,
8638 dissect_associated_sta_mld_configuration(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
,
8639 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
8641 proto_tree
*aff_sta_list
= NULL
;
8642 proto_item
*asli
= NULL
;
8643 uint32_t aff_sta_count
= 0, aff_sta_num
= 0;
8644 unsigned aff_sta_list_start
= 0;
8646 proto_tree_add_item(tree
, hf_ieee1905_associated_sta_mld_configuration_sta_mld_mac_addr
,
8647 tvb
, offset
, 6, ENC_NA
);
8650 proto_tree_add_item(tree
, hf_ieee1905_associated_sta_mld_configuration_ap_mld_mac_addr
,
8651 tvb
, offset
, 6, ENC_NA
);
8654 proto_tree_add_bitmask(tree
, tvb
, offset
,
8655 hf_ieee1905_associated_sta_mld_configuration_flags
,
8656 ett_associated_sta_mld_configuration_flags
,
8657 associated_sta_mld_configuration_flags_headers
, ENC_NA
);
8660 proto_tree_add_item(tree
, hf_ieee1905_associated_sta_mld_configuration_reserved
,
8661 tvb
, offset
, 18, ENC_NA
);
8664 proto_tree_add_item_ret_uint(tree
, hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_num
,
8665 tvb
, offset
, 1, ENC_NA
, &aff_sta_count
);
8668 aff_sta_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
8669 ett_associated_sta_mld_configuration_affiliated_sta_list
,
8670 &asli
, "Affiliated STA List");
8672 aff_sta_list_start
= offset
;
8674 while (aff_sta_num
< aff_sta_count
) {
8675 proto_tree
*aff_sta_tree
= NULL
;
8676 proto_item
*asi
= NULL
;
8678 aff_sta_tree
= proto_tree_add_subtree_format(aff_sta_list
, tvb
, offset
,
8679 -1, ett_associated_sta_mld_configuration_affiliated_sta
,
8680 &asi
, "Affiliated STA %u", aff_sta_num
);
8682 proto_tree_add_item(aff_sta_tree
, hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_bssid
,
8683 tvb
, offset
, 6, ENC_NA
);
8686 proto_tree_add_item(aff_sta_tree
, hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_mac_addr
,
8687 tvb
, offset
, 6, ENC_NA
);
8690 proto_tree_add_item(aff_sta_tree
, hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_reserved
,
8691 tvb
, offset
, 19, ENC_NA
);
8697 proto_item_set_len(asli
, offset
- aff_sta_list_start
);
8703 * Dissect an Affiliated STA Metrics TLV:
8706 dissect_affiliated_sta_metrics(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
,
8707 proto_tree
*tree
, unsigned offset
, uint16_t len
)
8709 unsigned end
= offset
+ len
;
8711 proto_tree_add_item(tree
, hf_ieee1905_affiliated_sta_metrics_sta_mac_addr
,
8712 tvb
, offset
, 6, ENC_NA
);
8715 proto_tree_add_item(tree
, hf_ieee1905_affiliated_sta_metrics_bytes_sent
,
8716 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8719 proto_tree_add_item(tree
, hf_ieee1905_affiliated_sta_metrics_bytes_rcvd
,
8720 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8723 proto_tree_add_item(tree
, hf_ieee1905_affiliated_sta_metrics_packets_sent
,
8724 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8727 proto_tree_add_item(tree
, hf_ieee1905_affiliated_sta_metrics_packets_rcvd
,
8728 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8731 proto_tree_add_item(tree
, hf_ieee1905_affiliated_sta_metrics_packets_sent_errors
,
8732 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8735 /* EM R6 adds N (>=0) reserved bytes */
8737 proto_tree_add_item(tree
, hf_ieee1905_affiliated_sta_metrics_reserved
,
8738 tvb
, offset
, end
- offset
, ENC_NA
);
8747 * Dissect an Affiliated AP Metrics TLV:
8750 dissect_affiliated_ap_metrics(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
,
8751 proto_tree
*tree
, unsigned offset
, uint16_t len
)
8753 unsigned end
= offset
+ len
;
8755 proto_tree_add_item(tree
, hf_ieee1905_affiliated_ap_metrics_bssid
,
8756 tvb
, offset
, 6, ENC_NA
);
8759 proto_tree_add_item(tree
, hf_ieee1905_affiliated_ap_metrics_packets_sent
,
8760 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8763 proto_tree_add_item(tree
, hf_ieee1905_affiliated_ap_metrics_packets_rcvd
,
8764 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8767 proto_tree_add_item(tree
, hf_ieee1905_affiliated_ap_metrics_packets_sent_errors
,
8768 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8771 proto_tree_add_item(tree
, hf_ieee1905_affiliated_ap_metrics_ucast_bytes_sent
,
8772 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8775 proto_tree_add_item(tree
, hf_ieee1905_affiliated_ap_metrics_ucast_bytes_rcvd
,
8776 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8779 proto_tree_add_item(tree
, hf_ieee1905_affiliated_ap_metrics_mcast_bytes_sent
,
8780 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8783 proto_tree_add_item(tree
, hf_ieee1905_affiliated_ap_metrics_mcast_bytes_rcvd
,
8784 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8787 proto_tree_add_item(tree
, hf_ieee1905_affiliated_ap_metrics_bcast_bytes_sent
,
8788 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8791 proto_tree_add_item(tree
, hf_ieee1905_affiliated_ap_metrics_bcast_bytes_rcvd
,
8792 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8795 /* EM R6 adds N (>=0) reserved bytes */
8797 proto_tree_add_item(tree
, hf_ieee1905_affiliated_ap_metrics_reserved
,
8798 tvb
, offset
, end
- offset
, ENC_NA
);
8807 * Dissect an EHT Operations TLV:
8809 static int* const eht_operations_radio_bss_flags_headers
[] = {
8810 &hf_ieee1905_eht_operations_radio_bss_flags_eht_operation_information_valid
,
8811 &hf_ieee1905_eht_operations_radio_bss_flags_disabled_subchannel_valid
,
8812 &hf_ieee1905_eht_operations_radio_bss_flags_eht_default_pe_duration
,
8813 &hf_ieee1905_eht_operations_radio_bss_flags_group_addr_bu_indication_limit
,
8814 &hf_ieee1905_eht_operations_radio_bss_flags_group_addr_bu_indication_exponent
,
8815 &hf_ieee1905_eht_operations_radio_bss_flags_reserved
,
8820 dissect_eht_operations_tlv(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
,
8821 proto_tree
*tree
, unsigned offset
, uint16_t len _U_
)
8823 proto_tree
*radio_list
= NULL
;
8824 proto_item
*rli
= NULL
;
8825 uint32_t radio_count
= 0, radio_num
= 0;
8826 unsigned radio_list_start
= 0;
8828 proto_tree_add_item(tree
, hf_ieee1905_eht_operations_reserved
,
8829 tvb
, offset
, 32, ENC_NA
);
8832 proto_tree_add_item_ret_uint(tree
, hf_ieee1905_eht_operations_radio_num
,
8833 tvb
, offset
, 1, ENC_NA
, &radio_count
);
8836 radio_list
= proto_tree_add_subtree(tree
, tvb
, offset
, -1,
8837 ett_eht_operations_radio_list
,
8838 &rli
, "Radio List");
8840 radio_list_start
= offset
;
8842 while (radio_num
< radio_count
) {
8843 proto_tree
*radio_tree
= NULL
;
8844 proto_item
*ri
= NULL
;
8845 proto_tree
*bss_list
= NULL
;
8846 proto_item
*bli
= NULL
;
8847 uint32_t bss_count
= 0, bss_num
= 0;
8848 unsigned bss_list_start
= 0;
8850 radio_tree
= proto_tree_add_subtree_format(radio_list
, tvb
, offset
,
8851 -1, ett_eht_operations_radio
,
8852 &ri
, "Radio %u", radio_num
);
8854 proto_tree_add_item(radio_tree
, hf_ieee1905_eht_operations_radio_id
,
8855 tvb
, offset
, 6, ENC_NA
);
8858 proto_tree_add_item_ret_uint(radio_tree
, hf_ieee1905_eht_operations_radio_bss_num
,
8859 tvb
, offset
, 1, ENC_NA
, &bss_count
);
8862 bss_list
= proto_tree_add_subtree(radio_tree
, tvb
, offset
, -1,
8863 ett_eht_operations_radio_bss_list
,
8866 bss_list_start
= offset
;
8868 while (bss_num
< bss_count
) {
8869 proto_tree
*bss_tree
= NULL
;
8870 proto_item
*bi
= NULL
;
8872 bss_tree
= proto_tree_add_subtree_format(bss_list
, tvb
, offset
,
8873 -1, ett_eht_operations_radio_bss
,
8874 &bi
, "BSS %u", bss_num
);
8876 proto_tree_add_item(bss_tree
, hf_ieee1905_eht_operations_radio_bss_bssid
,
8877 tvb
, offset
, 6, ENC_NA
);
8880 proto_tree_add_bitmask(bss_tree
, tvb
, offset
,
8881 hf_ieee1905_eht_operations_radio_bss_flags
,
8882 ett_eht_operations_radio_bss_flags
,
8883 eht_operations_radio_bss_flags_headers
, ENC_NA
);
8886 proto_tree_add_item(bss_tree
, hf_ieee1905_eht_operations_radio_bss_basic_eht_nss_mcs_set
,
8887 tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8890 proto_tree_add_item(bss_tree
, hf_ieee1905_eht_operations_radio_bss_control
,
8891 tvb
, offset
, 1, ENC_NA
);
8894 proto_tree_add_item(bss_tree
, hf_ieee1905_eht_operations_radio_bss_ccfs0
,
8895 tvb
, offset
, 1, ENC_NA
);
8898 proto_tree_add_item(bss_tree
, hf_ieee1905_eht_operations_radio_bss_ccfs1
,
8899 tvb
, offset
, 1, ENC_NA
);
8902 proto_tree_add_item(bss_tree
, hf_ieee1905_eht_operations_radio_bss_disabled_subchannel_bitmap
,
8903 tvb
, offset
, 2, ENC_BIG_ENDIAN
);
8906 proto_tree_add_item(bss_tree
, hf_ieee1905_eht_operations_radio_bss_reserved
,
8907 tvb
, offset
, 16, ENC_NA
);
8913 proto_item_set_len(bli
, offset
- bss_list_start
);
8915 proto_tree_add_item(radio_tree
, hf_ieee1905_eht_operations_radio_reserved
,
8916 tvb
, offset
, 25, ENC_NA
);
8922 proto_item_set_len(rli
, offset
- radio_list_start
);
8928 * Dissect an Available Spectrum Inquiry Request TLV:
8931 dissect_available_spectrum_inquiry_request(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
,
8932 proto_tree
*tree
, unsigned offset
, uint16_t len
)
8934 /* Content is a JSON message */
8935 proto_tree_add_item(tree
, hf_ieee1905_available_spectrum_inquiry_request_object
,
8936 tvb
, offset
, len
, ENC_ASCII
);
8943 * Dissect an Available Spectrum Inquiry Response TLV:
8946 dissect_available_spectrum_inquiry_response(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
,
8947 proto_tree
*tree
, unsigned offset
, uint16_t len
)
8949 /* Content is a JSON message */
8950 proto_tree_add_item(tree
, hf_ieee1905_available_spectrum_inquiry_response_object
,
8951 tvb
, offset
, len
, ENC_ASCII
);
8958 * Dissect each of the TLV types we know about
8961 dissect_ieee1905_tlv_data(tvbuff_t
*tvb
, packet_info
*pinfo
,
8962 proto_tree
*tree
, unsigned offset
, uint8_t tlv_type
, uint16_t tlv_len
)
8964 unsigned link_metric_query
;
8968 case AL_MAC_ADDRESS_TYPE_TLV
:
8969 proto_tree_add_item(tree
, hf_ieee1905_al_mac_address_type
, tvb
,
8974 case MAC_ADDRESS_TYPE_TLV
:
8975 proto_tree_add_item(tree
, hf_ieee1905_mac_address_type
, tvb
,
8980 case DEVICE_INFORMATION_TYPE_TLV
:
8981 offset
= dissect_device_information_type(tvb
, pinfo
, tree
, offset
,
8985 case DEVICE_BRIDGING_CAPABILITY_TLV
:
8986 offset
= dissect_device_bridging_capabilities(tvb
, pinfo
, tree
,
8990 case NON_1905_NEIGHBOR_DEVICE_LIST_TLV
:
8991 offset
= dissect_non_1905_neighbor_device_list(tvb
, pinfo
, tree
,
8995 case NEIGHBOR_DEVICE_TLV
:
8996 offset
= dissect_1905_neighbor_device(tvb
, pinfo
, tree
, offset
,
9000 case LINK_METRIC_QUERY_TLV
:
9001 proto_tree_add_item_ret_uint(tree
,
9002 hf_ieee1905_link_metric_query_type
,
9003 tvb
, offset
, 1, ENC_NA
,
9004 &link_metric_query
);
9007 if (link_metric_query
) {
9008 proto_tree_add_item(tree
, hf_ieee1905_al_mac_address_type
, tvb
,
9013 proto_tree_add_item(tree
, hf_ieee1905_link_metrics_requested
, tvb
,
9018 case TRANSMITTER_LINK_METRIC_TLV
:
9019 offset
= dissect_transmitter_link_metric(tvb
, pinfo
, tree
, offset
,
9023 case RECEIVER_LINK_METRIC_TLV
:
9024 offset
= dissect_receiver_link_metric(tvb
, pinfo
, tree
, offset
,
9028 case VENDOR_SPECIFIC_TLV
:
9029 offset
= dissect_vendor_specific(tvb
, pinfo
, tree
, offset
, tlv_len
);
9032 case LINK_METRIC_RESULT_CODE_TLV
:
9033 offset
= dissect_link_metric_result_code(tvb
, pinfo
, tree
, offset
);
9036 case SEARCHED_ROLE_TLV
:
9037 offset
= dissect_searched_role(tvb
, pinfo
, tree
, offset
);
9040 case AUTO_CONFIG_FREQ_BAND_TLV
:
9041 offset
= dissect_auto_config_freq_band(tvb
, pinfo
, tree
, offset
);
9044 case SUPPORTED_ROLE_TLV
:
9045 offset
= dissect_supported_role(tvb
, pinfo
, tree
, offset
);
9048 case SUPPORTED_FREQ_BAND_TLV
:
9049 offset
= dissect_supported_freq_band(tvb
, pinfo
, tree
, offset
);
9053 offset
= dissect_wsc(tvb
, pinfo
, tree
, offset
, tlv_len
);
9056 case PUSH_BUTTON_EVENT_NOTIFICATION_TLV
:
9057 offset
= dissect_push_button_event_notification(tvb
, pinfo
,
9061 case PUSH_BUTTON_JOIN_NOTIFICATION_TLV
:
9062 offset
= dissect_push_button_join_notification(tvb
, pinfo
,
9066 case GENERIC_PHY_DEVICE_INFORMATION_TLV
:
9067 offset
= dissect_generic_phy_device_info(tvb
, pinfo
, tree
,
9071 case DEVICE_IDENTIFICATION_TYPE_TLV
:
9072 offset
= dissect_device_identification(tvb
, pinfo
, tree
,
9076 case CONTROL_URL_TYPE_TLV
:
9077 offset
= dissect_control_url_type(tvb
, pinfo
, tree
, offset
, tlv_len
);
9081 offset
= dissect_ipv4_type(tvb
, pinfo
, tree
, offset
);
9085 offset
= dissect_ipv6_type(tvb
, pinfo
, tree
, offset
);
9088 case PUSH_BUTTON_EVENT_TYPE_NOTIFICATION_TLV
:
9089 offset
= dissect_push_button_event_type_notification(tvb
, pinfo
, tree
,
9093 case IEEE1905_PROFILE_VERSION_TLV
:
9094 offset
= dissect_profile_version(tvb
, pinfo
, tree
, offset
);
9097 case POWER_OFF_INTERFACE_TLV
:
9098 offset
= dissect_power_off_interface(tvb
, pinfo
, tree
, offset
);
9101 case INTERFACE_POWER_CHANGE_INFORMATION_TLV
:
9102 offset
= dissect_interface_power_change_info(tvb
, pinfo
, tree
, offset
);
9105 case INTERFACE_POWER_CHANGE_STATUS_TLV
:
9106 offset
= dissect_interface_power_change_status(tvb
, pinfo
, tree
, offset
);
9109 case L2_NEIGHBOR_DEVICE_TLV
:
9110 offset
= dissect_l2_neighbor_device(tvb
, pinfo
, tree
, offset
);
9113 case SUPPORTED_SERVICE_TLV
:
9114 offset
= dissect_supported_service(tvb
, pinfo
, tree
, offset
);
9117 case SEARCHED_SERVICE_TLV
:
9118 offset
= dissect_searched_service(tvb
, pinfo
, tree
, offset
);
9121 case AP_RADIO_IDENTIFIER_TLV
:
9122 offset
= dissect_ap_radio_identifier(tvb
, pinfo
, tree
, offset
);
9125 case AP_OPERATIONAL_BSS_TLV
:
9126 offset
= dissect_ap_operational_bss(tvb
, pinfo
, tree
, offset
);
9129 case ASSOCIATED_CLIENTS_TLV
:
9130 offset
= dissect_associated_clients(tvb
, pinfo
, tree
, offset
);
9133 case AP_RADIO_BASIC_CAPABILITIES_TLV
:
9134 offset
= dissect_ap_radio_basic_capabilities(tvb
, pinfo
, tree
, offset
);
9137 case AP_HT_CAPABILITIES_TLV
:
9138 offset
= dissect_ap_ht_capabilities(tvb
, pinfo
, tree
, offset
);
9141 case AP_VHT_CAPABILITIES_TLV
:
9142 offset
= dissect_ap_vht_capabilities(tvb
, pinfo
, tree
, offset
);
9145 case AP_HE_CAPABILITIES_TLV
:
9146 offset
= dissect_ap_he_capabilities(tvb
, pinfo
, tree
, offset
);
9149 case STEERING_POLICY_TLV
:
9150 offset
= dissect_steering_policy(tvb
, pinfo
, tree
, offset
, tlv_len
);
9153 case METRIC_REPORTING_POLICY_TLV
:
9154 offset
= dissect_metric_reporting_policy(tvb
, pinfo
, tree
, offset
);
9157 case CHANNEL_PREFERENCE_TLV
:
9158 offset
= dissect_channel_preference(tvb
, pinfo
, tree
, offset
, tlv_len
);
9161 case RADIO_OPERATION_RESTRICTION_TLV
:
9162 offset
= dissect_radio_operation_restriction(tvb
, pinfo
, tree
, offset
,
9166 case TRANSMIT_POWER_LIMIT_TLV
:
9167 offset
= dissect_transmit_power_limit(tvb
, pinfo
, tree
, offset
);
9170 case CHANNEL_SELECTION_RESPONSE_TLV
:
9171 offset
= dissect_channel_selection_response(tvb
, pinfo
, tree
, offset
);
9174 case OPERATING_CHANNEL_REPORT_TLV
:
9175 offset
= dissect_operating_channel_report(tvb
, pinfo
, tree
, offset
);
9178 case CLIENT_INFO_TLV
:
9179 offset
= dissect_client_info(tvb
, pinfo
, tree
, offset
);
9182 case CLIENT_CAPABILITY_REPORT_TLV
:
9183 offset
= dissect_client_capability_report(tvb
, pinfo
, tree
, offset
, tlv_len
);
9186 case CLIENT_ASSOCIATION_EVENT_TLV
:
9187 offset
= dissect_client_association_event(tvb
, pinfo
, tree
, offset
);
9190 case AP_METRIC_QUERY_TLV
:
9191 offset
= dissect_ap_metric_query(tvb
, pinfo
, tree
, offset
, tlv_len
);
9194 case AP_METRICS_TLV
:
9195 offset
= dissect_ap_metrics(tvb
, pinfo
, tree
, offset
, tlv_len
);
9198 case STA_MAC_ADDRESS_TYPE_TLV
:
9199 offset
= dissect_sta_mac_address_type(tvb
, pinfo
, tree
, offset
, tlv_len
);
9202 case ASSOCIATED_STA_LINK_METRICS_TLV
:
9203 offset
= dissect_associated_sta_link_metrics(tvb
, pinfo
, tree
, offset
,
9207 case UNASSOCIATED_STA_LINK_METRICS_QUERY_TLV
:
9208 offset
= dissect_unassociated_sta_link_metrics_query(tvb
, pinfo
, tree
,
9212 case UNASSOCIATED_STA_LINK_METRICS_RESPONSE_TLV
:
9213 offset
= dissect_unassociated_sta_link_metric_response(tvb
, pinfo
, tree
,
9217 case BEACON_METRICS_QUERY_TLV
:
9218 offset
= dissect_beacon_metrics_query(tvb
, pinfo
, tree
, offset
, tlv_len
);
9221 case BEACON_METRICS_RESPONSE_TLV
:
9222 offset
= dissect_beacon_metrics_response(tvb
, pinfo
, tree
, offset
, tlv_len
);
9225 case STEERING_REQUEST_TLV
:
9226 offset
= dissect_steering_request(tvb
, pinfo
, tree
, offset
, tlv_len
);
9229 case STEERING_BTM_REPORT_TLV
:
9230 offset
= dissect_steering_btm_report(tvb
, pinfo
, tree
, offset
, tlv_len
);
9233 case CLIENT_ASSOCIATION_CONTROL_REQUEST_TLV
:
9234 offset
= dissect_client_association_control_request(tvb
, pinfo
, tree
, offset
);
9237 case BACKHAUL_STEERING_REQUEST_TLV
:
9238 offset
= dissect_backhaul_steering_request(tvb
, pinfo
, tree
, offset
);
9241 case BACKHAUL_STEERING_RESPONSE_TLV
:
9242 offset
= dissect_backhaul_steering_response(tvb
, pinfo
, tree
, offset
);
9245 case HIGHER_LAYER_DATA_TLV
:
9246 offset
= dissect_higher_layer_data(tvb
, pinfo
, tree
, offset
, tlv_len
);
9249 case AP_CAPABILITY_TLV
:
9250 offset
= dissect_ap_capability(tvb
, pinfo
, tree
, offset
);
9253 case ASSOCIATED_STA_TRAFFIC_STATS_TLV
:
9254 offset
= dissect_associated_sta_traffic_stats(tvb
, pinfo
, tree
, offset
, tlv_len
);
9257 case ERROR_CODE_TLV
:
9258 offset
= dissect_error_code(tvb
, pinfo
, tree
, offset
, tlv_len
);
9261 case CHANNEL_SCAN_REPORTING_POLICY_TLV
:
9262 offset
= dissect_channel_scan_reporting_policy(tvb
, pinfo
, tree
,
9266 case CHANNEL_SCAN_CAPABILITIES_TLV
:
9267 offset
= dissect_channel_scan_capabilities(tvb
, pinfo
, tree
, offset
,
9271 case CHANNEL_SCAN_REQUEST_TLV
:
9272 offset
= dissect_channel_scan_request(tvb
, pinfo
, tree
, offset
,
9276 case CHANNEL_SCAN_RESULT_TLV
:
9277 offset
= dissect_channel_scan_result(tvb
, pinfo
, tree
, offset
, tlv_len
);
9281 offset
= dissect_timestamp(tvb
, pinfo
, tree
, offset
, tlv_len
);
9284 case IEEE1905_LAYER_SECURITY_CAPABILITY_TLV
:
9285 offset
= dissect_1905_layer_security_capability(tvb
, pinfo
, tree
,
9289 case AP_WF6_CAPABILITIES_TLV
:
9290 offset
= dissect_ap_wf6_capabilities(tvb
, pinfo
, tree
, offset
, tlv_len
);
9294 offset
= dissect_mic(tvb
, pinfo
, tree
, offset
, tlv_len
);
9298 offset
= dissect_encrypted(tvb
, pinfo
, tree
, offset
, tlv_len
);
9301 case CAC_REQUEST_TLV
:
9302 offset
= dissect_cac_request(tvb
, pinfo
, tree
, offset
, tlv_len
);
9305 case CAC_TERMINATION_TLV
:
9306 offset
= dissect_cac_termination(tvb
, pinfo
, tree
, offset
, tlv_len
);
9309 case CAC_COMPLETION_REPORT_TLV
:
9310 offset
= dissect_cac_completion_report(tvb
, pinfo
, tree
, offset
,
9314 case ASSOCIATED_WF6_STA_STATUS_REPORT_TLV
:
9315 offset
= dissect_associated_wf6_sta_status_report(tvb
, pinfo
, tree
,
9319 case CAC_STATUS_REPORT_TLV
:
9320 offset
= dissect_cac_status_report(tvb
, pinfo
, tree
, offset
, tlv_len
);
9323 case CAC_CAPABILITIES_TLV
:
9324 offset
= dissect_cac_capabilities(tvb
, pinfo
, tree
, offset
, tlv_len
);
9327 case MULTI_AP_PROFILE_TLV
:
9328 offset
= dissect_multi_ap_version(tvb
, pinfo
, tree
, offset
, tlv_len
);
9331 case PROFILE_2_AP_CAPABILITY_TLV
:
9332 offset
= dissect_r2_ap_capability(tvb
, pinfo
, tree
, offset
, tlv_len
);
9335 case DEFAULT_802_1Q_SETTINGS_TLV
:
9336 offset
= dissect_default_802_1q_settings(tvb
, pinfo
, tree
, offset
,
9340 case TRAFFIC_SEPARATION_POLICY_TLV
:
9341 offset
= dissect_traffic_separation_policy(tvb
, pinfo
, tree
, offset
,
9345 case BSS_CONFIGURATION_REPORT_TLV
:
9346 offset
= dissect_bss_configuration_report(tvb
, pinfo
, tree
, offset
,
9351 offset
= dissect_bssid(tvb
, pinfo
, tree
, offset
, tlv_len
);
9354 case SERVICE_PRIORITIZATION_RULE_TLV
:
9355 offset
= dissect_service_prioritization_rule(tvb
, pinfo
, tree
, offset
,
9359 case DSCP_MAPPING_TABLE_TLV
:
9360 offset
= dissect_dscp_mapping_table(tvb
, pinfo
, tree
, offset
, tlv_len
);
9363 case PROFILE_2_ERROR_CODE_ERROR_TLV
:
9364 offset
= dissect_r2_error_code(tvb
, pinfo
, tree
, offset
, tlv_len
);
9367 case AP_RADIO_ADVANCED_CAPABILITIES_TLV
:
9368 offset
= dissect_ap_radio_advanced_capabilities(tvb
, pinfo
, tree
,
9372 case ASSOCIATION_STATUS_NOTIFICATION_TLV
:
9373 offset
= dissect_association_status_notification(tvb
, pinfo
, tree
,
9377 case SOURCE_INFO_TLV
:
9378 offset
= dissect_source_info(tvb
, pinfo
, tree
, offset
, tlv_len
);
9381 case TUNNELED_MESSAGE_TYPE_TLV
:
9382 offset
= dissect_tunneled_message_type(tvb
, pinfo
, tree
, offset
,
9387 offset
= dissect_tunneled(tvb
, pinfo
, tree
, offset
, tlv_len
);
9390 case PROFILE_2_STEERING_REQUEST_TLV
:
9391 offset
= dissect_r2_steering_request(tvb
, pinfo
, tree
, offset
, tlv_len
);
9394 case UNSUCCESSFUL_ASSOCIATION_POLICY_TLV
:
9395 offset
= dissect_unsuccessful_association_policy(tvb
, pinfo
, tree
,
9399 case METRIC_COLLECTION_INTERVAL_TLV
:
9400 offset
= dissect_metric_collection_interval(tvb
, pinfo
, tree
, offset
,
9404 case RADIO_METRICS_TLV
:
9405 offset
= dissect_radio_metrics(tvb
, pinfo
, tree
, offset
, tlv_len
);
9408 case AP_EXTENDED_METRICS_TLV
:
9409 offset
= dissect_ap_extended_metrics(tvb
, pinfo
, tree
, offset
, tlv_len
);
9412 case ASSOCIATED_STA_EXTENDED_LINK_METRICS_TLV
:
9413 offset
= dissect_associated_sta_extended_link_metrics(tvb
, pinfo
, tree
,
9417 case STATUS_CODE_TLV
:
9418 offset
= dissect_status_code(tvb
, pinfo
, tree
, offset
,
9422 case REASON_CODE_TLV
:
9423 offset
= dissect_disassociation_reason_code(tvb
, pinfo
, tree
, offset
,
9427 case BACKHAUL_STA_RADIO_CAPABILITIES_TLV
:
9428 offset
= dissect_backhaul_sta_radio_capabilities(tvb
, pinfo
, tree
,
9432 case AKM_SUITE_CAPABILITIES_TLV
:
9433 offset
= dissect_akm_suite_capabilities(tvb
, pinfo
, tree
, offset
,
9437 case IEEE1905_ENCAP_DPP_TLV
:
9438 offset
= dissect_1905_encap_dpp(tvb
, pinfo
, tree
, offset
, tlv_len
);
9441 case IEEE1905_ENCAP_EAPOL_TLV
:
9442 offset
= dissect_1905_encap_eapol(tvb
, pinfo
, tree
, offset
, tlv_len
);
9445 case DPP_BOOTSTRAPPING_URI_NOTIFICATION_TLV
:
9446 offset
= dissect_dpp_bootstrapping_uri_notification(tvb
, pinfo
, tree
,
9450 case DPP_CCE_INDICATION_TLV
:
9451 offset
= dissect_dpp_cce_indication(tvb
, pinfo
, tree
, offset
, tlv_len
);
9454 case DPP_CHIRP_VALUE_TLV
:
9455 offset
= dissect_dpp_chirp_value(tvb
, pinfo
, tree
, offset
, tlv_len
);
9458 case DEVICE_INVENTORY_TLV
:
9459 offset
= dissect_device_inventory(tvb
, pinfo
, tree
, offset
, tlv_len
);
9462 case AGENT_LIST_TLV
:
9463 offset
= dissect_agent_list(tvb
, pinfo
, tree
, offset
, tlv_len
);
9466 case BSS_CONFIGURATION_REQUEST_TLV
:
9467 offset
= dissect_bss_configuration_request(tvb
, pinfo
, tree
, offset
,
9471 case BSS_CONFIGURATION_RESPONSE_TLV
:
9472 offset
= dissect_bss_configuration_response(tvb
, pinfo
, tree
, offset
,
9476 case DPP_MESSAGE_TLV
:
9477 offset
= dissect_dpp_message(tvb
, pinfo
, tree
, offset
, tlv_len
);
9480 case SPATIAL_REUSE_REQUEST_TLV
:
9481 offset
= dissect_spatial_reuse_request(tvb
, pinfo
, tree
, offset
,
9485 case SPATIAL_REUSE_REPORT_TLV
:
9486 offset
= dissect_spatial_reuse_report(tvb
, pinfo
, tree
, offset
,
9490 case SPATIAL_REUSE_CONFIG_RESPONSE_TLV
:
9491 offset
= dissect_spatial_reuse_config_response(tvb
, pinfo
, tree
,
9495 case QOS_MANAGEMENT_POLICY_TLV
:
9496 offset
= dissect_qos_management_policy(tvb
, pinfo
, tree
, offset
,
9500 case QOS_MANAGEMENT_DESCRIPTOR_TLV
:
9501 offset
= dissect_qos_management_descriptor(tvb
, pinfo
, tree
, offset
,
9505 case CONTROLLER_CAPABILITY_TLV
:
9506 offset
= dissect_controller_capability(tvb
, pinfo
, tree
, offset
,
9510 case WIFI7_AGENT_CAPABILITIES_TLV
:
9511 offset
= dissect_wifi_7_agent_capabilities(tvb
, pinfo
, tree
, offset
,
9515 case AGENT_AP_MLD_CONFIGURATION_TLV
:
9516 offset
= dissect_agent_agent_ap_mld_configuration(tvb
, pinfo
, tree
, offset
,
9520 case BACKHAUL_STA_MLD_CONFIGURATION_TLV
:
9521 offset
= dissect_backhaul_sta_mld_configuration(tvb
, pinfo
, tree
, offset
,
9525 case ASSOCIATED_STA_MLD_CONFIGURATION_TLV
:
9526 offset
= dissect_associated_sta_mld_configuration(tvb
, pinfo
, tree
, offset
,
9530 case AFFILIATED_STA_METRICS_TLV
:
9531 offset
= dissect_affiliated_sta_metrics(tvb
, pinfo
, tree
, offset
,
9535 case AFFILIATED_AP_METRICS_TLV
:
9536 offset
= dissect_affiliated_ap_metrics(tvb
, pinfo
, tree
, offset
,
9540 case EHT_OPERATIONS_TLV
:
9541 offset
= dissect_eht_operations_tlv(tvb
, pinfo
, tree
, offset
,
9545 case AVAILABLE_SPECTRUM_INQUIRY_REQUEST_TLV
:
9546 offset
= dissect_available_spectrum_inquiry_request(tvb
, pinfo
, tree
, offset
,
9550 case AVAILABLE_SPECTRUM_INQUIRY_RESPONSE_TLV
:
9551 offset
= dissect_available_spectrum_inquiry_response(tvb
, pinfo
, tree
, offset
,
9556 proto_tree_add_item(tree
, hf_ieee1905_tlv_data
, tvb
, offset
, tlv_len
, ENC_NA
);
9563 static int * const tlv_len_headers
[] = {
9564 &hf_ieee1905_tlv_len_reserved
,
9565 &hf_ieee1905_tlv_len_length
,
9570 #define min(a, b) ((a < b) ? a : b)
9574 dissect_ieee1905_tlvs(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
)
9577 unsigned offset
= 0;
9582 proto_item
*tlv_tree
;
9584 tlv_type
= tvb_get_uint8(tvb
, offset
);
9585 eom_seen
= (tlv_type
== EOM_TLV
) ? true : false;
9587 * We can only deal with the reported length remaining ATM so take the
9588 * min of the TLV len and the reported len.
9590 tlv_len
= min(tvb_get_ntohs(tvb
, offset
+ 1),
9591 tvb_reported_length_remaining(tvb
, offset
));
9593 tlv_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, tlv_len
+ 3,
9594 ett_tlv
, NULL
, val_to_str_ext(tlv_type
,
9595 &ieee1905_tlv_types_vals_ext
,
9598 proto_tree_add_item(tlv_tree
, hf_ieee1905_tlv_types
, tvb
, offset
, 1, ENC_NA
);
9601 proto_tree_add_bitmask(tlv_tree
, tvb
, offset
, hf_ieee1905_tlv_len
,
9602 ett_ieee1905_tlv_len
, tlv_len_headers
, ENC_BIG_ENDIAN
);
9606 offset
= dissect_ieee1905_tlv_data(tvb
, pinfo
, tlv_tree
, offset
, tlv_type
, tlv_len
);
9607 } while (eom_seen
== false);
9612 static const fragment_items ieee1905_fragment_items
= {
9613 /* Fragment subtrees */
9614 &ett_ieee1905_fragment
,
9615 &ett_ieee1905_fragments
,
9616 /* Fragment fields */
9617 &hf_ieee1905_fragments
,
9618 &hf_ieee1905_fragment
,
9619 &hf_ieee1905_fragment_overlap
,
9620 &hf_ieee1905_fragment_overlap_conflicts
,
9621 &hf_ieee1905_fragment_multiple_tails
,
9622 &hf_ieee1905_fragment_too_long_fragment
,
9623 &hf_ieee1905_fragment_error
,
9624 &hf_ieee1905_fragment_count
,
9625 &hf_ieee1905_fragment_reassembled_in
,
9626 &hf_ieee1905_fragment_reassembled_length
,
9628 "IEEE1905 Fragments"
9634 uint32_t vlan_id
; /* Take the VLAN ID into account */
9636 } ieee1905_fragment_key
;
9639 ieee1905_fragment_hash(const void *k
)
9642 const ieee1905_fragment_key
*key
= (const ieee1905_fragment_key
*)k
;
9644 if (!key
|| !key
->src
.data
|| !key
->dst
.data
) {
9648 const uint8_t src_len
= key
->src
.len
;
9649 const uint8_t dst_len
= key
->dst
.len
;
9650 const uint8_t hash_buf_len
= src_len
+ dst_len
+ sizeof(uint8_t) + sizeof(uint32_t);
9651 uint8_t* hash_buf
= (uint8_t*)wmem_alloc(wmem_packet_scope(), hash_buf_len
);
9653 memcpy(hash_buf
, key
->src
.data
, src_len
);
9654 memcpy(&hash_buf
[src_len
], key
->dst
.data
, dst_len
);
9655 hash_buf
[src_len
+ dst_len
] = key
->frag_id
;
9656 memcpy(&hash_buf
[src_len
+ dst_len
+ sizeof(uint8_t)], &key
->vlan_id
, sizeof(uint32_t));
9657 hash_val
= wmem_strong_hash((const uint8_t *)hash_buf
, hash_buf_len
);
9662 ieee1905_fragment_equal(const void *k1
, const void *k2
)
9664 const ieee1905_fragment_key
*key1
=
9665 (const ieee1905_fragment_key
*)k1
;
9666 const ieee1905_fragment_key
*key2
=
9667 (const ieee1905_fragment_key
*)k2
;
9669 if (!key1
|| !key2
) {
9673 return (key1
->frag_id
== key2
->frag_id
&&
9674 key1
->vlan_id
== key2
->vlan_id
&&
9675 addresses_equal(&key1
->src
, &key2
->src
) &&
9676 addresses_equal(&key1
->src
, &key2
->src
));
9680 ieee1905_fragment_temporary_key(const packet_info
*pinfo
, const uint32_t id
,
9681 const void *data _U_
)
9683 ieee1905_fragment_key
*key
;
9685 if (pinfo
->src
.data
== NULL
|| pinfo
->dst
.data
== NULL
) {
9689 key
= g_slice_new(ieee1905_fragment_key
);
9691 key
->frag_id
= id
& 0xFF;
9692 copy_address_shallow(&key
->src
, &pinfo
->src
);
9693 copy_address_shallow(&key
->dst
, &pinfo
->dst
);
9694 key
->vlan_id
= pinfo
->vlan_id
;
9700 ieee1905_fragment_persistent_key(const packet_info
*pinfo
, const unsigned id
,
9701 const void *data _U_
)
9703 if (pinfo
->src
.data
== NULL
|| pinfo
->dst
.data
== NULL
) {
9707 ieee1905_fragment_key
*key
= g_slice_new(ieee1905_fragment_key
);
9709 key
->frag_id
= id
& 0xFF;
9710 copy_address(&key
->src
, &pinfo
->src
);
9711 copy_address(&key
->dst
, &pinfo
->dst
);
9712 key
->vlan_id
= pinfo
->vlan_id
;
9718 ieee1905_fragment_free_temporary_key(void *ptr
)
9720 ieee1905_fragment_key
*key
= (ieee1905_fragment_key
*)ptr
;
9722 g_slice_free(ieee1905_fragment_key
, key
);
9726 ieee1905_fragment_free_persistent_key(void *ptr
)
9728 ieee1905_fragment_key
*key
= (ieee1905_fragment_key
*)ptr
;
9731 free_address(&key
->src
);
9732 free_address(&key
->dst
);
9733 g_slice_free(ieee1905_fragment_key
, key
);
9737 static reassembly_table g_ieee1905_reassembly_table
;
9739 static reassembly_table_functions ieee1905_reassembly_table_functions
= {
9740 ieee1905_fragment_hash
,
9741 ieee1905_fragment_equal
,
9742 ieee1905_fragment_temporary_key
,
9743 ieee1905_fragment_persistent_key
,
9744 ieee1905_fragment_free_temporary_key
,
9745 ieee1905_fragment_free_persistent_key
,
9748 #define LAST_IEEE1905_FRAGMENT 0x80
9751 dissect_ieee1905(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
9754 proto_tree
*ieee1905_tree
;
9755 uint16_t message_type
;
9756 unsigned offset
= 0, next_offset
= 0;
9757 static int * const flag_headers
[] = {
9758 &hf_ieee1905_last_fragment
,
9759 &hf_ieee1905_relay_indicator
,
9762 uint16_t msg_id
= tvb_get_ntohs(tvb
, 4);
9763 uint8_t frag_id
= tvb_get_uint8(tvb
, 6);
9764 uint8_t flags
= tvb_get_uint8(tvb
, 7);
9765 tvbuff_t
*next_tvb
= NULL
;
9767 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "ieee1905");
9769 col_clear(pinfo
->cinfo
, COL_INFO
);
9771 message_type
= tvb_get_ntohs(tvb
, 2);
9773 col_add_str(pinfo
->cinfo
, COL_INFO
,
9774 val_to_str_ext(message_type
, &ieee1905_message_type_vals_ext
,
9777 ti
= proto_tree_add_item(tree
, proto_ieee1905
, tvb
, 0, -1, ENC_NA
);
9779 ieee1905_tree
= proto_item_add_subtree(ti
, ett_ieee1905
);
9781 proto_tree_add_item(ieee1905_tree
, hf_ieee1905_message_version
, tvb
, offset
, 1, ENC_NA
);
9784 proto_tree_add_item(ieee1905_tree
, hf_ieee1905_message_reserved
, tvb
, offset
, 1, ENC_NA
);
9787 proto_tree_add_item(ieee1905_tree
, hf_ieee1905_message_type
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
9790 proto_tree_add_item(ieee1905_tree
, hf_ieee1905_message_id
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
9793 proto_tree_add_item(ieee1905_tree
, hf_ieee1905_fragment_id
, tvb
, offset
, 1, ENC_NA
);
9796 proto_tree_add_bitmask(ieee1905_tree
, tvb
, offset
, hf_ieee1905_flags
,
9797 ett_ieee1905_flags
, flag_headers
, ENC_NA
);
9801 * Now figure out if it is a fragment and do reassembly. If we have a
9802 * fragment but not the whole lot, just dissect it as data, otherwise
9805 if ((flags
& LAST_IEEE1905_FRAGMENT
) && frag_id
== 0) {
9806 next_tvb
= tvb_new_subset_remaining(tvb
, offset
);
9807 next_offset
= dissect_ieee1905_tlvs(next_tvb
, pinfo
, ieee1905_tree
);
9809 bool save_fragmented
= pinfo
->fragmented
;
9810 pinfo
->fragmented
= true;
9811 fragment_head
*frag_head
= NULL
;
9812 tvbuff_t
*new_tvb
= NULL
;
9813 unsigned remaining_length
= tvb_captured_length_remaining(tvb
, offset
);
9815 frag_head
= fragment_add_seq_check(&g_ieee1905_reassembly_table
, tvb
,
9817 msg_id
, NULL
, frag_id
,
9819 (flags
& LAST_IEEE1905_FRAGMENT
) == 0);
9821 new_tvb
= process_reassembled_data(tvb
, offset
, pinfo
,
9822 "Reassembled Message",
9824 &ieee1905_fragment_items
,
9825 NULL
, ieee1905_tree
);
9827 pinfo
->fragmented
= save_fragmented
;
9829 if (new_tvb
) { /* Reassembled */
9830 unsigned reassembled_length
= tvb_captured_length(new_tvb
);
9831 unsigned reassembled_next_offset
= dissect_ieee1905_tlvs(new_tvb
, pinfo
, ieee1905_tree
);
9833 tvb_set_reported_length(new_tvb
, reassembled_next_offset
);
9834 /* Calculate how many bytes of the last packet contributed to the reassembled payload */
9835 next_offset
= remaining_length
- (reassembled_length
- reassembled_next_offset
);
9837 col_append_fstr(pinfo
->cinfo
, COL_INFO
,
9838 " (Message ID: %u, Fragment ID: %u, VLAN ID: %u)",
9839 msg_id
, frag_id
, pinfo
->vlan_id
);
9840 proto_tree_add_item(ieee1905_tree
, hf_ieee1905_fragment_data
, tvb
,
9842 tvb_reported_length_remaining(tvb
, offset
),
9844 next_offset
= remaining_length
;
9848 proto_item_set_len(ti
, offset
+ next_offset
);
9849 tvb_set_reported_length(tvb
, offset
+ next_offset
);
9851 return offset
+ next_offset
;
9855 proto_register_ieee1905(void)
9857 static hf_register_info hf
[] = {
9858 { &hf_ieee1905_fragment_data
,
9859 { "Fragment Data", "ieee1905.fragment.data",
9860 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
9862 { &hf_ieee1905_message_version
,
9863 { "Message version", "ieee1905.message_version",
9864 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9866 { &hf_ieee1905_message_reserved
,
9867 { "Message reserved", "ieee1905.message_reserved",
9868 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9870 { &hf_ieee1905_message_type
,
9871 { "Message type", "ieee1905.message_type",
9872 FT_UINT16
, BASE_HEX
|BASE_EXT_STRING
, &ieee1905_message_type_vals_ext
, 0, NULL
, HFILL
}},
9874 { &hf_ieee1905_message_id
,
9875 { "Message id", "ieee1905.message_id",
9876 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
9878 { &hf_ieee1905_fragment_id
,
9879 { "Fragment id", "ieee1905.fragment_id",
9880 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
9882 { &hf_ieee1905_flags
,
9883 { "Flags", "ieee1905.flags",
9884 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
9886 { &hf_ieee1905_last_fragment
,
9887 { "Last fragment", "ieee1905.last_fragment",
9888 FT_BOOLEAN
, 8, TFS(&tfs_last_fragment
), 0x80, NULL
, HFILL
}},
9890 { &hf_ieee1905_relay_indicator
,
9891 { "Relay indicator", "ieee1905.relay_indicator",
9892 FT_BOOLEAN
, 8, TFS(&tfs_relay_indicator
), 0x40, NULL
, HFILL
}},
9894 { &hf_ieee1905_tlv_types
,
9895 { "TLV type", "ieee1905.tlv_type",
9896 FT_UINT8
, BASE_HEX
|BASE_EXT_STRING
, &ieee1905_tlv_types_vals_ext
, 0, NULL
, HFILL
}},
9898 { &hf_ieee1905_tlv_len
,
9899 { "TLV length", "ieee1905.tlv_length",
9900 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9902 { &hf_ieee1905_tlv_len_reserved
,
9903 { "TLV length reserved", "ieee1905.tlv_length.reserved",
9904 FT_UINT16
, BASE_HEX
, NULL
, 0xC000, NULL
, HFILL
}},
9906 { &hf_ieee1905_tlv_len_length
,
9907 { "TLV length length", "ieee1905.tlv_length.length",
9908 FT_UINT16
, BASE_DEC
, NULL
, 0x3FFF, NULL
, HFILL
}},
9910 { &hf_ieee1905_tlv_data
,
9911 { "TLV data", "ieee1905.tlv_data",
9912 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
9914 { &hf_ieee1905_al_mac_address_type
,
9915 { "1905 AL MAC address type", "ieee1905.1905_al_mac_addr",
9916 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
9918 { &hf_ieee1905_mac_address_type
,
9919 { "MAC address type", "ieee1905.mac_addr",
9920 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
9922 { &hf_ieee1905_link_metric_query_type
,
9923 { "Link metric query type", "ieee1905.link_metric_query_type",
9924 FT_UINT8
, BASE_DEC
, VALS(ieee1905_link_metric_query_type_vals
),
9927 { &hf_ieee1905_link_metrics_requested
,
9928 { "Link metrics requested", "ieee1905.link_metrics_requested",
9929 FT_UINT8
, BASE_DEC
, VALS(ieee1905_link_metrics_requested_vals
),
9932 { &hf_ieee1905_responder_al_mac_addr
,
9933 { "Responder MAC address", "ieee1905.responder_al_mac_addr",
9934 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
9936 { &hf_ieee1905_neighbor_al_mac_addr
,
9937 { "Neighbor MAC address", "ieee1905.neighbor_al_mac_addr",
9938 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
9940 { &hf_ieee1905_receiving_al_mac_addr
,
9941 { "Receiving AL MAC address", "ieee1905.receiving_al_mac_addr",
9942 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
9944 { &hf_ieee1905_bridge_flag
,
9945 { "IEEE 802.1 bridge flag", "ieee1905.bridgeFlag",
9946 FT_UINT8
, BASE_DEC
, VALS(ieee1905_bridge_flag_vals
), 0, NULL
, HFILL
}},
9948 { &hf_ieee1905_packet_errors
,
9949 { "Packet errors", "ieee1905.packetErrors",
9950 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9952 { &hf_ieee1905_transmitted_packets
,
9953 { "Transmitted packets", "ieee1905.transmittedPackets",
9954 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9956 { &hf_ieee1905_mac_throughput_capacity
,
9957 { "MAC throughput capacity", "ieee1905.macThroughputCapacity",
9958 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9960 { &hf_ieee1905_link_availability
,
9961 { "Link availability", "ieee1905.linkAvailability",
9962 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9964 { &hf_ieee1905_phy_rate
,
9965 { "Phy rate", "ieee1905.phyRate",
9966 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9968 { &hf_ieee1905_packets_received
,
9969 { "Packets received", "ieee1905.packets_received",
9970 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9972 { &hf_ieee1905_rssi
,
9973 { "RSSI", "ieee1905.rssi",
9974 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
9976 { &hf_ieee1905_local_interface_count
,
9977 { "Local interface count", "ieee1905.dev_info.local_int_cnt",
9978 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9980 { &hf_ieee1905_media_type
,
9981 { "Media type", "ieee1905.dev_info.media_type",
9982 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
9984 { &hf_ieee1905_media_type_high
,
9985 { "Media type bits 15 to 8", "ieee1905.media_type.bits_15_to_8",
9986 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9988 { &hf_ieee1905_media_type_low
,
9989 { "Media type bits 7 to 0", "ieee1905.media_type.bits_7_to_0",
9990 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9992 { &hf_ieee1905_media_spec_info_len
,
9993 { "Special info length", "ieee1905.dev_info.spec_info_len",
9994 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
9996 { &hf_ieee1905_media_spec_info
,
9997 { "Special info", "ieee1905.dev_info.spec_info",
9998 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10000 { &hf_ieee1905_bridging_tuples_cnt
,
10001 { "Bridging tuples count", "ieee1905.bridging_info.tuples_count",
10002 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10004 { &hf_ieee1905_bridging_mac_address_cnt
,
10005 { "Bridging MAC address count", "ieee1905.bridging_info.mac_addr_count",
10006 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10008 { &hf_ieee1905_bridging_mac_address
,
10009 { "Bridging MAC address", "ieee1905.bridging_info.mac_address",
10010 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10012 { &hf_ieee1905_local_interface_mac
,
10013 { "Local interface MAC address", "ieee1905.local_intf.mac_address",
10014 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10016 { &hf_ieee1905_non_1905_neighbor_mac
,
10017 { "Non 1905 neighbor MAC address", "ieee1905.non_1905_neighbor.mac_address",
10018 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10020 { &hf_ieee1905_neighbor_flags
,
10021 { "IEEE1905 neighbor flags", "ieee1905.neighbor_flags",
10022 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10024 { &hf_ieee1905_bridges_flag
,
10025 { "IEEE1905 bridges", "ieee1905.bridges",
10026 FT_BOOLEAN
, 8, TFS(&tfs_bridges_flag
), 0x80, NULL
, HFILL
}},
10028 { &hf_ieee1905_link_metric_result_code
,
10029 { "IEEE1905 link metric result code", "ieee1905.link_metric.result_code",
10030 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10032 { &hf_ieee1905_vendor_specific_oui
,
10033 { "Vendor specific OUI", "ieee1905.vendor_specific.oui",
10034 FT_UINT24
, BASE_OUI
, NULL
, 0, NULL
, HFILL
}},
10036 { &hf_ieee1905_vendor_specific_info
,
10037 { "Vendor specific information", "ieee1905.vendor_specific.info",
10038 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10040 { &hf_ieee1905_searched_role
,
10041 { "Searched role", "ieee1905.searched_role",
10042 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10044 { &hf_ieee1905_supported_role
,
10045 { "Supported role", "ieee1905.supported_role",
10046 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10048 { &hf_ieee1905_auto_config_freq_band
,
10049 { "Auto config frequency band", "ieee1905.auto_config.freq_band",
10050 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10052 { &hf_ieee1905_supported_freq_band
,
10053 { "Supported frequency band", "ieee1905.supported.freq_band",
10054 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10056 { &hf_ieee1905_event_notification_media_types
,
10057 { "Media types", "ieee1905.event_notif.media_types",
10058 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10060 { &hf_ieee1905_sender_al_id
,
10061 { "Sender AL ID", "ieee1905.sender.al_id",
10062 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10064 { &hf_ieee1905_push_button_event_msg_id
,
10065 { "Push button event message ID", "ieee1905.sender.msg_id",
10066 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10068 { &hf_ieee1905_sender_joining_interface
,
10069 { "Joining MAC address of sender", "ieee1905.sender.joining_intf",
10070 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10072 { &hf_ieee1905_new_device_interface
,
10073 { "New device MAC address", "ieee1905.new_device.intf",
10074 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10076 { &hf_ieee1905_device_al_mac
,
10077 { "1905 device AL MAC address", "ieee1905.device_al_mac_addr",
10078 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10080 { &hf_ieee1905_local_intf_oui
,
10081 { "Local interface OUI", "ieee1905.local_intf.oui",
10082 FT_UINT24
, BASE_OUI
, NULL
, 0, NULL
, HFILL
}},
10084 { &hf_ieee1905_local_intf_variant
,
10085 { "Local interface variant index", "ieee1905.local_intf.variant",
10086 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10088 { &hf_ieee1905_local_intf_variant_name
,
10089 { "Local interface variant name", "ieee1905.local_intf.variant_name",
10090 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10092 { &hf_ieee1905_local_intf_url_count
,
10093 { "Local interface URL octet count", "ieee1905.local_intf.url_byte_count",
10094 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10096 { &hf_ieee1905_local_intf_spec_count
,
10097 { "Local interface media specific count", "ieee1905.local_intf.media_count",
10098 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10100 { &hf_ieee1905_local_intf_url
,
10101 { "Local interface XML description URL", "ieee1905.local_intf.url",
10102 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10104 { &hf_ieee1905_local_intf_spec
,
10105 { "Local interface media specific info", "ieee1905.local_intf.spec_info",
10106 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10108 { &hf_ieee1905_dev_id_friendly_name
,
10109 { "Device Id Friendly name", "ieee1905.device_id.friendly_name",
10110 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10112 { &hf_ieee1905_dev_id_manuf_name
,
10113 { "Device Id Manufacturer name", "ieee1905.device_id.manuf_name",
10114 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10116 { &hf_ieee1905_dev_id_manuf_model
,
10117 { "Device Id Manufacturer model", "ieee1905.device_id.manuf_model",
10118 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10120 { &hf_ieee1905_control_url
,
10121 { "Device control URL", "ieee1905.device.control_url",
10122 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10124 { &hf_ieee1905_ipv4_type_count
,
10125 { "Count of IPv4 entries", "ieee1905.ipv4_type.count",
10126 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10128 { &hf_ieee1905_mac_address
,
10129 { "MAC address", "ieee1905.ipv4_type.mac_address",
10130 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10132 { &hf_ieee1905_ipv4_addr_count
,
10133 { "IPv4 address count", "ieee1905.ipv4_type.addr_count",
10134 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10136 { &hf_ieee1905_addr_type
,
10137 { "IPv4 address type", "ieee1905.ipv4_type.addr_type",
10138 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10140 { &hf_ieee1905_ipv4_addr
,
10141 { "IPv4 address", "ieee1905.ipv4_type.ipv4_addr",
10142 FT_IPv4
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10144 { &hf_ieee1905_dhcp_server
,
10145 { "DHCP server", "ieee1905.ipv4_type.dhcp_server",
10146 FT_IPv4
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10148 { &hf_ieee1905_ipv6_type_count
,
10149 { "Count of IPv6 entries", "ieee1905.ipv6_type.count",
10150 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10152 { &hf_ieee1905_ipv6_linklocal
,
10153 { "Link local address", "ieee1905.ipv6_type.link_local",
10154 FT_IPv6
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10156 { &hf_ieee1905_ipv6_mac_address
,
10157 { "MAC address", "ieee1905.ipv6_type.mac_address",
10158 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10160 { &hf_ieee1905_ipv6_addr_count
,
10161 { "IPv6 address count", "ieee1905.ipv6_type.addr_count",
10162 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10164 { &hf_ieee1905_ipv6_addr_type
,
10165 { "IPv6 address type", "ieee1905.ipv6_type.addr_type",
10166 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10168 { &hf_ieee1905_ipv6_addr
,
10169 { "IPv6 address", "ieee1905.ipv6_type.ipv6_addr",
10170 FT_IPv6
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10172 { &hf_ieee1905_ipv6_dhcp_server
,
10173 { "DHCP server", "ieee1905.ipv6_type.dhcp_server",
10174 FT_IPv6
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10176 { &hf_ieee1905_generic_phy_media_types
,
10177 { "Generic Phy media type count", "ieee1905.button_push.phy_count",
10178 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10180 { &hf_ieee1905_profile_version
,
10181 { "1905 profile version type", "ieee1905.profile.version",
10182 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10184 { &hf_ieee1905_power_off_intf_count
,
10185 { "Powered off interface count", "ieee1905.power_off.intf_count",
10186 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10188 { &hf_ieee1905_power_change_intf_count
,
10189 { "Power change local interface count", "ieee1905.power_chg.intf_count",
10190 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10192 { &hf_ieee1905_power_change_mac_addr
,
10193 { "Power change interface MAc addr", "ieee1905.power_chg.mac_addr",
10194 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10196 { &hf_ieee1905_power_change_state
,
10197 { "Power change requested state", "ieee1905.power_chg.state",
10198 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10200 { &hf_ieee1905_power_status_intf_count
,
10201 { "Power status local interface count", "ieee1905.power_sts.intf_count",
10202 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10204 { &hf_ieee1905_power_status_mac_addr
,
10205 { "Power status interface MAc addr", "ieee1905.power_sts.mac_addr",
10206 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10208 { &hf_ieee1905_power_status_state
,
10209 { "Power change status", "ieee1905.power_sts.state",
10210 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10212 { &hf_ieee1905_l2_neighbor_intf_count
,
10213 { "L2 neighbor interface count", "ieee1905.l2_neighbor.intf_count",
10214 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10216 { &hf_ieee1905_l2_local_intf_mac_addr
,
10217 { "L2 neighbor local interface MAC addr", "ieee1905.l2_neighbor.mac_addr",
10218 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10220 { &hf_ieee1905_l2_neighbor_dev_count
,
10221 { "L2 neighbor device count", "ieee1905.l2_neighbor.dev_count",
10222 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10224 { &hf_ieee1905_l2_neighbor_mac_addr
,
10225 { "L2 neighbor interface MAC address", "ieee1905.l2_neighbor.neighbor_mac_addr",
10226 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10228 { &hf_ieee1905_l2_behind_mac_addr_count
,
10229 { "L2 neighbor behind MAC addr count", "ieee1905.l2_neighbor.neighbor_behind_count",
10230 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10232 { &hf_ieee1905_l2_behind_mac_addr
,
10233 { "L2 neighbor behind MAC addr", "ieee1905.l2_neighbor.neighbor_behind_mac_addr",
10234 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10236 { &hf_ieee1905_supported_service_count
,
10237 { "Supported service count", "ieee1905.supported_service.service_count",
10238 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10240 { &hf_ieee1905_supported_service
,
10241 { "Supported service", "ieee1905.supported_service.service",
10242 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10244 { &hf_ieee1905_searched_service_count
,
10245 { "Searched service count", "ieee1905.searched_service.service_count",
10246 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10248 { &hf_ieee1905_searched_service
,
10249 { "Searched service", "ieee1905.searched_service.service",
10250 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10252 { &hf_ieee1905_ap_radio_identifier
,
10253 { "AP radio identifier", "ieee1905.ap_radio_identifier",
10254 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10256 { &hf_ieee1905_operatonal_bss_radio_count
,
10257 { "AP operational BSS radio count", "ieee1905.ap_bss_radio_count",
10258 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10260 { &hf_ieee1905_ap_operational_intf_count
,
10261 { "AP operational interface count", "ieee1905.ap_bss_intf_count",
10262 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10264 { &hf_ieee1905_ap_local_intf_mac_addr
,
10265 { "AP operational local interface MAC addr", "ieee1905.ap_bss_local_intf_addr",
10266 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10268 { &hf_ieee1905_ap_local_intf_ssid_len
,
10269 { "AP operational BSS local interface SSID len", "ieee1905.ap_bss_local_intf_ssid_len",
10270 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10272 { &hf_ieee1905_ap_local_intf_ssid
,
10273 { "AP operational BSS local interface SSID", "ieee1905.ap_bss_local_intf_ssid",
10274 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10276 { &hf_ieee1905_ap_capabilities_flags
,
10277 { "AP capabilities flags", "ieee1905.ap_capability_flags",
10278 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10280 { &hf_ieee1905_rpt_unsuccessful_associations
,
10281 { "Report Unsuccessful Associations", "ieee1905.rpt_unsuccessful_assoc",
10282 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10284 { &hf_ieee1905_unassoc_sta_metrics_oper_flag
,
10285 { "STA link metric reporting operational channels", "ieee1905.link_metric_oper",
10286 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x80, NULL
, HFILL
}},
10288 { &hf_ieee1905_unassoc_sta_metrics_non_oper_flag
,
10289 { "STA link metric reporting non-operational channels", "ieee1905.link_metric_non_oper",
10290 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x40, NULL
, HFILL
}},
10292 { &hf_ieee1905_agent_init_steering
,
10293 { "Agent-initiated RCPI-based Steering", "ieee1905.agent_init_steering",
10294 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x20, NULL
, HFILL
}},
10296 { &hf_ieee1905_rpt_unsuccessful_assoc_report
,
10297 { "Unsuccessful Association Attempts", "ieee1905.report_unsuccessful_associations",
10298 FT_BOOLEAN
, 8, TFS(&tfs_ieee1905_report_unsuccessful_association_attempt_flag
), 0x80, NULL
, HFILL
}},
10300 { &hf_ieee1905_higher_layer_protocol
,
10301 { "Higher layer protocol", "ieee1905.higher_layer_proto",
10302 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10304 { &hf_ieee1905_higher_layer_data
,
10305 { "Higher layer data", "ieee1905.higher_layer_data",
10306 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10308 { &hf_ieee1905_assoc_backhaul_station_mac
,
10309 { "Associated backhaul station MAC address", "ieee1905.assoc.mac_addr",
10310 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10312 { &hf_ieee1905_backhaul_target_bssid
,
10313 { "Target BSS BSSID", "ieee1905.assoc.target_bssid",
10314 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10316 { &hf_ieee1905_backhaul_steering_status
,
10317 { "Status code", "ieee1905.assoc.status",
10318 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10320 { &hf_ieee1905_backhaul_operating_class
,
10321 { "Backhaul operating class", "ieee1905.assoc.operating_class",
10322 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10324 { &hf_ieee1905_backhaul_channel_number
,
10325 { "Backhaul beacon channel number", "ieee1905.assoc.channel_num",
10326 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10328 { &hf_ieee1905_client_assoc_bssid
,
10329 { "Target BSSID", "ieee1905.assoc_ctrl.bssid",
10330 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10332 { &hf_ieee1905_association_control
,
10333 { "Association control", "ieee1905.assoc_ctrl.control",
10334 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10336 { &hf_ieee1905_association_control_validity
,
10337 { "Request validity period", "ieee1905.assoc_ctrl.validity",
10338 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10340 { &hf_ieee1905_client_assoc_sta_count
,
10341 { "STA control list count", "ieee1905.assoc_ctrl.sta_list_count",
10342 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10344 { &hf_ieee1905_client_assoc_mac_addr
,
10345 { "Target STA MAC address", "ieee1905.assoc_ctrl.target_mac_addr",
10346 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10348 { &hf_ieee1905_btm_reporter_bssid
,
10349 { "BTM report source BSSID", "ieee1905.btm_report.source_bssid",
10350 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10352 { &hf_ieee1905_btm_sta_mac_addr
,
10353 { "BTM report target MAC address", "ieee1905.btm_report.mac_addr",
10354 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10356 { &hf_ieee1905_btm_report_status
,
10357 { "BTM status code", "ieee1905.btm_report.status",
10358 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10360 { &hf_ieee1905_btm_report_bssid
,
10361 { "BTM target BSSID", "ieee1905.btm_report.target_bssid",
10362 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10364 { &hf_ieee1905_source_bss_bssid
,
10365 { "Source BSS BSSID", "ieee1905.steering_req.source_bssid",
10366 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10368 { &hf_ieee1905_steering_request_flags
,
10369 { "Steering request flags", "ieee1905.steering_req.flags",
10370 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10372 { &hf_ieee1905_steering_req_op_window
,
10373 { "Steering opportunity window", "ieee1905.steering_req.window",
10374 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10376 { &hf_ieee1905_steering_request_mode_flag
,
10377 { "Mode", "ieee1905.steering_req.mode",
10378 FT_BOOLEAN
, 8, TFS(&tfs_ieee1905_steering_request_mode_flag
), 0x80, NULL
, HFILL
}},
10380 { &hf_ieee1905_btm_disassoc_imminent_flag
,
10381 { "BTM disassociation imminent", "ieee1905.steering_req.disassoc_imminent",
10382 FT_BOOLEAN
, 8, TFS(&tfs_ieee1905_btm_disassoc_imminent_flag
), 0x40, NULL
, HFILL
}},
10384 { &hf_ieee1905_btm_abridged_flag
,
10385 { "BTM abridged", "ieee1905.steering_req.btm_abridged",
10386 FT_BOOLEAN
, 8, TFS(&tfs_ieee1905_btm_abridged_flag
), 0x20, NULL
, HFILL
}},
10388 { &hf_ieee1905_steering_req_reserved
,
10389 { "Reserved", "ieee1905.steering_req.reserved",
10390 FT_UINT8
, BASE_HEX
, NULL
, 0x1F, NULL
, HFILL
}},
10392 { &hf_ieee1905_steering_btm_disass_timer
,
10393 { "BTM disassociation timer", "ieee1905.steering_req.disass_timer",
10394 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10396 { &hf_ieee1905_steering_req_sta_count
,
10397 { "STA list count", "ieee1905.steering_req.sta_count",
10398 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10400 { &hf_ieee1905_steering_req_target_bssid_count
,
10401 { "Target BSSID list count", "ieee1905.steering_req.bssid_count",
10402 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10404 { &hf_ieee1905_steering_req_sta_mac
,
10405 { "Target MAC address", "ieee1905.steering_req.target_mac",
10406 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10408 { &hf_ieee1905_steering_req_target_bssid
,
10409 { "Target BSSID", "ieee1905.steering_req.target_bssid",
10410 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10412 { &hf_ieee1905_steering_req_oper_class
,
10413 { "Target BSS operating class", "ieee1905.steering_req.oper_class",
10414 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10416 { &hf_ieee1905_steering_req_target_channel
,
10417 { "Target BSS channel number", "ieee1905.steering_req.target_channel",
10418 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10420 { &hf_ieee1905_client_bssid
,
10421 { "Client BSSID", "ieee1905.client_info.bssid",
10422 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10424 { &hf_ieee1905_client_mac_addr
,
10425 { "Client MAC address", "ieee1905.client_info.mac_addr",
10426 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10428 { &hf_ieee1905_client_capability_result
,
10429 { "Result code", "ieee1905.client_capability.result",
10430 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10432 { &hf_ieee1905_client_capability_frame
,
10433 { "(Re)Association frame body", "ieee1905.client_capability.frame",
10434 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10436 { &hf_ieee1905_association_flag
,
10437 { "Association event", "ieee1905.assoc_event.assoc_event",
10438 FT_BOOLEAN
, 8, TFS(&tfs_ieee1905_association_event_flag
),
10439 0x80, NULL
, HFILL
}},
10441 { &hf_ieee1905_association_client_mac_addr
,
10442 { "Client mac address", "ieee1905.assoc_event.client_mac",
10443 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10445 { &hf_ieee1905_association_agent_bssid
,
10446 { "Multi-AP agent BSSID", "ieee1905.assoc_event.agent_bssid",
10447 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10449 { &hf_ieee1905_association_event_flags
,
10450 { "Association event flags", "ieee1905.assoc_event.flags",
10451 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10453 { &hf_ieee1905_ap_radio_max_bss
,
10454 { "Maximum BSS support", "ieee1905.radio_basic_cap.max_bss",
10455 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10457 { &hf_ieee1905_ap_radio_classes
,
10458 { "Operating class count", "ieee1905.radio_basic.op_classes",
10459 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10461 { &hf_ieee1905_ap_radio_class
,
10462 { "Operating class", "ieee1905.radio_basic.op_class",
10463 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10465 { &hf_ieee1905_ap_radio_eirp
,
10466 { "Maximum transmit power EIRP", "ieee1905.radio_basic.max_power",
10467 FT_INT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_dbm
), 0, NULL
, HFILL
}},
10469 { &hf_ieee1905_ap_radio_non_op_count
,
10470 { "Number of non-operable channels", "ieee1905.radio_basic.non_op_channels",
10471 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10473 { &hf_ieee1905_radio_basic_non_op_channel
,
10474 { "Statically non-operable channel", "ieee1905.radio_basic.non_op_channel",
10475 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10477 { &hf_ieee1905_max_supported_tx_streams
,
10478 { "Maximum supported Tx spatial streams", "ieee1905.ap_ht.max_tx_streams",
10479 FT_UINT8
, BASE_HEX
, VALS(max_supported_tx_streams_vals
), 0xC0, NULL
, HFILL
}},
10481 { &hf_ieee1905_max_supported_rx_streams
,
10482 { "Maximum supported Rx spatial streams", "ieee1905.ap_ht.max_rx_streams",
10483 FT_UINT8
, BASE_HEX
, VALS(max_supported_rx_streams_vals
), 0x30, NULL
, HFILL
}},
10485 { &hf_ieee1905_short_gi_20mhz_flag
,
10486 { "Short GI support for 20 MHz", "ieee1905.ap_ht.short_gi_20mhz",
10487 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08, NULL
, HFILL
}},
10489 { &hf_ieee1905_short_gi_40mhz_flag
,
10490 { "Short GI support for 40 MHz", "ieee1905.ap_ht.short_gi_40mhz",
10491 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04, NULL
, HFILL
}},
10493 { &hf_ieee1905_ht_support_40mhz_flag
,
10494 { "HT support for 40MHz", "ieee1905.ap_ht.ht_support_40mhz",
10495 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02, NULL
, HFILL
}},
10497 { &hf_ieee1905_ap_ht_capabilities_radio_id
,
10498 { "Radio unique ID", "ieee1905.ap_ht.radio_id",
10499 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10501 { &hf_ieee1905_ht_cap_flags
,
10502 { "Capabilities", "ieee1905.ap_ht.caps",
10503 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10505 { &hf_ieee1905_vht_max_supported_tx_streams
,
10506 { "Maximum supported Tx spatial streams", "ieee1905.ap_vht.max_tx_streams",
10507 FT_UINT16
, BASE_HEX
, VALS(vht_he_max_supported_tx_streams_vals
), 0xE000, NULL
, HFILL
}},
10509 { &hf_ieee1905_vht_max_supported_rx_streams
,
10510 { "Maximum supported Rx spatial streams", "ieee1905.ap_vht.max_rx_streams",
10511 FT_UINT16
, BASE_HEX
, VALS(vht_he_max_supported_rx_streams_vals
), 0x1C00, NULL
, HFILL
}},
10513 { &hf_ieee1905_short_gi_80mhz_flag
,
10514 { "Short GI support for 80 MHz", "ieee1905.ap_vht.short_gi_80mhz",
10515 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0200, NULL
, HFILL
}},
10517 { &hf_ieee1905_short_gi_160mhz_flag
,
10518 { "Short GI support for 160 and 80+80 MHz", "ieee1905.ap_vht.short_gi_160mhz",
10519 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0100, NULL
, HFILL
}},
10521 { &hf_ieee1905_vht_support_80plus_mhz_flag
,
10522 { "VHT support for 80+80 MHz", "ieee1905.ap_vht.vht_80plus_mhz",
10523 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0080, NULL
, HFILL
}},
10525 { &hf_ieee1905_vht_support_160_mhz_flag
,
10526 { "VHT support for 160 MHz", "ieee1905.ap_vht.vht_160mhz",
10527 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0040, NULL
, HFILL
}},
10529 { &hf_ieee1905_su_beamformer_capable_flag
,
10530 { "SU beamformer capable", "ieee1905.ap_vht.su_beamformer",
10531 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0020, NULL
, HFILL
}},
10533 { &hf_ieee1905_mu_beamformer_capable_flag
,
10534 { "MU beamformer capable", "ieee1905.ap_vht.mu_beamformer",
10535 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0010, NULL
, HFILL
}},
10537 { &hf_ieee1905_ap_vht_capabilities_radio_id
,
10538 { "Radio unique ID", "ieee1905.ap_vht.radio_id",
10539 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10541 { &hf_ieee1905_vht_cap_flags
,
10542 { "Capabilities", "ieee1905.ap_vht.caps",
10543 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10545 { &hf_ieee1905_ap_vht_supported_vht_tx_mcs
,
10546 { "Supported VHT Tx MCS", "ieee1905.ap_vht.supported_tx_mcs",
10547 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10549 { &hf_ieee1905_ap_vht_supported_vht_rx_mcs
,
10550 { "Supported VHT Rx MCS", "ieee1905.ap_vht.supported_rx_mcs",
10551 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10553 { &hf_ieee1905_ap_vht_tx_mcs_map_1ss
,
10554 { "Max Tx VHT MCS for 1 SS",
10555 "ieee1905.ap_vht.max_tx_vht_mcs_1_ss",
10556 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10557 0x0003, NULL
, HFILL
}},
10559 { &hf_ieee1905_ap_vht_tx_mcs_map_2ss
,
10560 { "Max Tx VHT MCS for 2 SS",
10561 "ieee1905.ap_vht.max_tx_vht_mcs_2_ss",
10562 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10563 0x000C, NULL
, HFILL
}},
10565 { &hf_ieee1905_ap_vht_tx_mcs_map_3ss
,
10566 { "Max Tx VHT MCS for 3 SS",
10567 "ieee1905.ap_vht.max_tx_vht_mcs_3_ss",
10568 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10569 0x0030, NULL
, HFILL
}},
10571 { &hf_ieee1905_ap_vht_tx_mcs_map_4ss
,
10572 { "Max Tx VHT MCS for 4 SS",
10573 "ieee1905.ap_vht.max_tx_vht_mcs_4_ss",
10574 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10575 0x00C0, NULL
, HFILL
}},
10577 { &hf_ieee1905_ap_vht_tx_mcs_map_5ss
,
10578 { "Max Tx VHT MCS for 5 SS",
10579 "ieee1905.ap_vht.max_tx_vht_mcs_5_ss",
10580 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10581 0x0300, NULL
, HFILL
}},
10583 { &hf_ieee1905_ap_vht_tx_mcs_map_6ss
,
10584 { "Max Tx VHT MCS for 6 SS",
10585 "ieee1905.ap_vht.max_tx_vht_mcs_6_ss",
10586 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10587 0x0C00, NULL
, HFILL
}},
10589 { &hf_ieee1905_ap_vht_tx_mcs_map_7ss
,
10590 { "Max Tx VHT MCS for 7 SS",
10591 "ieee1905.ap_vht.max_tx_vht_mcs_7_ss",
10592 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10593 0x3000, NULL
, HFILL
}},
10595 { &hf_ieee1905_ap_vht_tx_mcs_map_8ss
,
10596 { "Max Tx VHT MCS for 8 SS",
10597 "ieee1905.ap_vht.max_tx_vht_mcs_8_ss",
10598 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10599 0xC000, NULL
, HFILL
}},
10601 { &hf_ieee1905_ap_vht_rx_mcs_map_1ss
,
10602 { "Max Rx VHT MCS for 1 SS",
10603 "ieee1905.ap_vht.max_rx_vht_mcs_1_ss",
10604 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10605 0x0003, NULL
, HFILL
}},
10607 { &hf_ieee1905_ap_vht_rx_mcs_map_2ss
,
10608 { "Max Rx VHT MCS for 2 SS",
10609 "ieee1905.ap_vht.max_rx_vht_mcs_2_ss",
10610 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10611 0x000C, NULL
, HFILL
}},
10613 { &hf_ieee1905_ap_vht_rx_mcs_map_3ss
,
10614 { "Max Rx VHT MCS for 3 SS",
10615 "ieee1905.ap_vht.max_rx_vht_mcs_3_ss",
10616 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10617 0x0030, NULL
, HFILL
}},
10619 { &hf_ieee1905_ap_vht_rx_mcs_map_4ss
,
10620 { "Max Rx VHT MCS for 4 SS",
10621 "ieee1905.ap_vht.max_rx_vht_mcs_4_ss",
10622 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10623 0x00C0, NULL
, HFILL
}},
10625 { &hf_ieee1905_ap_vht_rx_mcs_map_5ss
,
10626 { "Max Rx VHT MCS for 5 SS",
10627 "ieee1905.ap_vht.max_rx_vht_mcs_5_ss",
10628 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10629 0x0300, NULL
, HFILL
}},
10631 { &hf_ieee1905_ap_vht_rx_mcs_map_6ss
,
10632 { "Max Rx VHT MCS for 6 SS",
10633 "ieee1905.ap_vht.max_rx_vht_mcs_6_ss",
10634 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10635 0x0C00, NULL
, HFILL
}},
10637 { &hf_ieee1905_ap_vht_rx_mcs_map_7ss
,
10638 { "Max Rx VHT MCS for 7 SS",
10639 "ieee1905.ap_vht.max_rx_vht_mcs_7_ss",
10640 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10641 0x3000, NULL
, HFILL
}},
10643 { &hf_ieee1905_ap_vht_rx_mcs_map_8ss
,
10644 { "Max Rx VHT MCS for 8 SS",
10645 "ieee1905.ap_vht.max_rx_vht_mcs_8_ss",
10646 FT_UINT16
, BASE_DEC
, VALS(vht_supported_mcs_vals
),
10647 0xC000, NULL
, HFILL
}},
10649 { &hf_ieee1905_assoc_clients_bss_count
,
10650 { "Included BSS count", "ieee1905.assoc_client.bss_count",
10651 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10653 { &hf_ieee1905_assoc_bssid
,
10654 { "Associated BSS", "ieee1905.assoc_client.bss",
10655 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10657 { &hf_ieee1905_bss_client_count
,
10658 { "Associated client count", "ieee1905.assoc_client.client_count",
10659 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10661 { &hf_ieee1905_bss_client_mac
,
10662 { "Associated client MAC address", "ieee1905.assoc_client.mac_addr",
10663 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10665 { &hf_ieee1905_bss_client_last_assoc
,
10666 { "Time since last association", "ieee1905.assoc_client.time_since",
10667 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10669 { &hf_ieee1905_channel_pref_preference
,
10670 { "Preference", "ieee1905.channel_pref.pref",
10671 FT_UINT8
, BASE_HEX
, VALS(channel_preference_prefs_vals
), 0xF0, NULL
, HFILL
}},
10672 { &hf_ieee1905_channel_pref_reason
,
10673 { "Reason code", "ieee1905.channel_pref.reason",
10674 FT_UINT8
, BASE_HEX
, VALS(channel_preference_reason_vals
), 0x0F, NULL
, HFILL
}},
10676 { &hf_ieee1905_channel_preference_radio_id
,
10677 { "Radio unique ID", "ieee1905.channel_pref.radio_id",
10678 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10680 { &hf_ieee1905_channel_preference_class_count
,
10681 { "Operating class count", "ieee1905.channel_prefs.class_count",
10682 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10684 { &hf_ieee1905_channel_pref_class
,
10685 { "Operating class", "ieee1905.channel_prefs.class",
10686 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10688 { &hf_ieee1905_channel_pref_channel_count
,
10689 { "Channel list count", "ieee1905.channel_prefs.channel_count",
10690 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10692 { &hf_ieee1905_channel_pref_channel
,
10693 { "Channel number", "ieee1905.channel_prefs.channel_no",
10694 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10696 { &hf_ieee1905_channel_prefs_flags
,
10697 { "Channel preference flags", "ieee1905.channel_prefs.flags",
10698 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10700 { &hf_ieee1905_trans_power_limit_radio_id
,
10701 { "Radio unique ID", "ieee1905.transmit_power.radio_id",
10702 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10704 { &hf_ieee1905_trans_power_limit_eirp
,
10705 { "Transmit power limit EIRP per 20MHz", "ieee1905.transmit_power.eirp",
10706 FT_INT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_dbm
), 0, NULL
, HFILL
}},
10708 { &hf_ieee1905_channel_select_resp_radio_id
,
10709 { "Radio unique ID", "ieee1905.channel_select.radio_id",
10710 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10712 { &hf_ieee1905_radio_metrics_radio_id
,
10713 { "Radio unique ID", "ieee1905.radio_metrics.radio_id",
10714 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10716 { &hf_ieee1905_channel_select_resp_code
,
10717 { "Response code", "ieee1905.channel_select.response_code",
10718 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10720 { &hf_ieee1905_op_channel_report_radio_id
,
10721 { "Radio unique ID", "ieee1905.operating_channel.radio_id",
10722 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10724 { &hf_ieee1905_op_channel_report_classes
,
10725 { "Currently operating classes", "ieee1905.operating_channel.classes",
10726 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10728 { &hf_ieee1905_op_channel_class
,
10729 { "Operating class", "ieee1905.operating_channel.op_class",
10730 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10732 { &hf_ieee1905_op_channel_number
,
10733 { "Operating channel number", "ieee1905.operating_channel.chan_num",
10734 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10736 { &hf_ieee1905_op_channel_eirp
,
10737 { "Current transmit power EIRP", "ieee1905.operating_channel.eirp",
10738 FT_INT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_dbm
), 0, NULL
, HFILL
}},
10740 { &hf_ieee1905_ap_he_cap_radio_id
,
10741 { "Radio unique ID", "ieee1905.ap_he_capability.radio_id",
10742 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10744 { &hf_ieee1905_ap_he_cap_mcs_length
,
10745 { "Supported HE MCS length", "ieee1905.ap_he_capability.he_mcs_count",
10746 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10748 { &hf_ieee1905_ap_he_cap_tx_mcs_le_80_mhz
,
10749 { "Supported Tx HE-MCS <= 80 MHz",
10750 "ieee1905.ap_he_capability.supported_tx_he_mcs_le_80mhz",
10751 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10753 { &hf_ieee1905_ap_he_tx_mcs_map_1ss
,
10754 { "Max Tx HE-MCS for 1 SS",
10755 "ieee1905.ap_he_capability.max_tx_he_mcs_1_ss",
10756 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_1_ss_vals
),
10757 0x0003, NULL
, HFILL
}},
10759 { &hf_ieee1905_ap_he_tx_mcs_map_2ss
,
10760 { "Max Tx HE-MCS for 2 SS",
10761 "ieee1905.ap_he_capability.max_tx_he_mcs_2_ss",
10762 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_2_ss_vals
),
10763 0x000C, NULL
, HFILL
}},
10765 { &hf_ieee1905_ap_he_tx_mcs_map_3ss
,
10766 { "Max Tx HE-MCS for 3 SS",
10767 "ieee1905.ap_he_capability.max_tx_he_mcs_3_ss",
10768 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_3_ss_vals
),
10769 0x0030, NULL
, HFILL
}},
10771 { &hf_ieee1905_ap_he_tx_mcs_map_4ss
,
10772 { "Max Tx HE-MCS for 4 SS",
10773 "ieee1905.ap_he_capability.max_tx_he_mcs_4_ss",
10774 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_4_ss_vals
),
10775 0x00C0, NULL
, HFILL
}},
10777 { &hf_ieee1905_ap_he_tx_mcs_map_5ss
,
10778 { "Max Tx HE-MCS for 5 SS",
10779 "ieee1905.ap_he_capability.max_tx_he_mcs_5_ss",
10780 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_5_ss_vals
),
10781 0x0300, NULL
, HFILL
}},
10783 { &hf_ieee1905_ap_he_tx_mcs_map_6ss
,
10784 { "Max Tx HE-MCS for 6 SS",
10785 "ieee1905.ap_he_capability.max_tx_he_mcs_6_ss",
10786 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_6_ss_vals
),
10787 0x0C00, NULL
, HFILL
}},
10789 { &hf_ieee1905_ap_he_tx_mcs_map_7ss
,
10790 { "Max Tx HE-MCS for 7 SS",
10791 "ieee1905.ap_he_capability.max_tx_he_mcs_7_ss",
10792 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_7_ss_vals
),
10793 0x3000, NULL
, HFILL
}},
10795 { &hf_ieee1905_ap_he_tx_mcs_map_8ss
,
10796 { "Max Tx HE-MCS for 8 SS",
10797 "ieee1905.ap_he_capability.max_tx_he_mcs_8_ss",
10798 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_8_ss_vals
),
10799 0xC000, NULL
, HFILL
}},
10801 { &hf_ieee1905_ap_he_cap_rx_mcs_le_80_mhz
,
10802 { "Supported Rx HE-MCS <= 80 MHz",
10803 "ieee1905.ap_he_capability.supported_rx_he_mcs_le_80mhz",
10804 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10806 { &hf_ieee1905_ap_he_rx_mcs_map_1ss
,
10807 { "Max Rx HE-MCS for 1 SS",
10808 "ieee1905.ap_he_capability.max_rx_he_mcs_1_ss",
10809 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_1_ss_vals
),
10810 0x0003, NULL
, HFILL
}},
10812 { &hf_ieee1905_ap_he_rx_mcs_map_2ss
,
10813 { "Max Rx HE-MCS for 2 SS",
10814 "ieee1905.ap_he_capability.max_rx_he_mcs_2_ss",
10815 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_2_ss_vals
),
10816 0x000C, NULL
, HFILL
}},
10818 { &hf_ieee1905_ap_he_rx_mcs_map_3ss
,
10819 { "Max Rx HE-MCS for 3 SS",
10820 "ieee1905.ap_he_capability.max_rx_he_mcs_3_ss",
10821 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_3_ss_vals
),
10822 0x0030, NULL
, HFILL
}},
10824 { &hf_ieee1905_ap_he_rx_mcs_map_4ss
,
10825 { "Max Rx HE-MCS for 4 SS",
10826 "ieee1905.ap_he_capability.max_rx_he_mcs_4_ss",
10827 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_4_ss_vals
),
10828 0x00C0, NULL
, HFILL
}},
10830 { &hf_ieee1905_ap_he_rx_mcs_map_5ss
,
10831 { "Max Rx HE-MCS for 5 SS",
10832 "ieee1905.ap_he_capability.max_rx_he_mcs_5_ss",
10833 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_5_ss_vals
),
10834 0x0300, NULL
, HFILL
}},
10836 { &hf_ieee1905_ap_he_rx_mcs_map_6ss
,
10837 { "Max Rx HE-MCS for 6 SS",
10838 "ieee1905.ap_he_capability.max_rx_he_mcs_6_ss",
10839 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_6_ss_vals
),
10840 0x0C00, NULL
, HFILL
}},
10842 { &hf_ieee1905_ap_he_rx_mcs_map_7ss
,
10843 { "Max Rx HE-MCS for 7 SS",
10844 "ieee1905.ap_he_capability.max_rx_he_mcs_7_ss",
10845 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_7_ss_vals
),
10846 0x3000, NULL
, HFILL
}},
10848 { &hf_ieee1905_ap_he_rx_mcs_map_8ss
,
10849 { "Max Rx HE-MCS for 8 SS",
10850 "ieee1905.ap_he_capability.max_rx_he_mcs_8_ss",
10851 FT_UINT16
, BASE_DEC
, VALS(max_he_mcs_8_ss_vals
),
10852 0xC000, NULL
, HFILL
}},
10854 { &hf_ieee1905_ap_he_cap_tx_mcs_160_mhz
,
10855 { "Supported Tx HE-MCS 160 MHz",
10856 "ieee1905.ap_he_capability.supported_tx_he_mcs_160mhz",
10857 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10859 { &hf_ieee1905_ap_he_cap_rx_mcs_160_mhz
,
10860 { "Supported Rx HE-MCS 160 MHz",
10861 "ieee1905.ap_he_capability.supported_rx_he_mcs_160mhz",
10862 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10864 { &hf_ieee1905_ap_he_cap_tx_mcs_80p80_mhz
,
10865 { "Supported Tx HE-MCS 80+80 MHz",
10866 "ieee1905.ap_he_capability.supported_tx_he_mcs_80p80mhz",
10867 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10869 { &hf_ieee1905_ap_he_cap_rx_mcs_80p80_mhz
,
10870 { "Supported Rx HE-MCS 80+80 MHz",
10871 "ieee1905.ap_he_capability.supported_rx_he_mcs_80p80mhz",
10872 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10874 { &hf_ieee1905_unassoc_metrics_mac_count
,
10875 {"MAC Addresses for this channel",
10876 "ieee1905.unassoc_sta_link_metrics.mac_count",
10877 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10879 { &hf_ieee1905_unassoc_link_metrics_query_mac
,
10880 { "STA MAC address", "ieee1905.unassoc_sta_link_metrics.mac_addr",
10881 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10883 { &hf_ieee1905_ap_metrics_reporting_interval
,
10884 { "AP metrics reporting interval", "ieee1905.sta_metric_policy.ap_interval",
10885 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10887 { &hf_ieee1905_metric_reporting_policy_radio_id
,
10888 { "Radio ID", "ieee1905.metric_reporting_policy.radio_id",
10889 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10891 { &hf_ieee1905_metric_reporting_radio_count
,
10892 { "Radio count", "ieee1905.sta_metric_policy.radio_count",
10893 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10895 { &hf_ieee1905_metric_rcpi_threshold
,
10896 { "RCPI reporting threshold", "ieee1905.sta_metric_policy.rcpi_threshold",
10897 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(rcpi_threshold_custom
),
10900 { &hf_ieee1905_metric_reporting_rcpi_hysteresis
,
10901 {"STA Metrics Reporting RCPI Hysteresis Margin Override",
10902 "ieee1905.sta_metric_policy.rcpi_hysteresis_margin_override",
10903 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(rcpi_hysteresis_custom
),
10906 { &hf_ieee1905_metrics_policy_flags
,
10907 {"STA Metrics Reporting Policy Flags",
10908 "ieee1905.sta_metrics_policy_flags",
10909 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10911 { &hf_ieee1905_assoc_sta_traffic_stats_inclusion
,
10912 { "Associated STA Traffic Stats Inclusion Policy",
10913 "ieee1905.sta_metrics_policy_flags.sta_traffic_stats_inclusion",
10914 FT_BOOLEAN
, 8, NULL
, 0x80, NULL
, HFILL
}},
10916 { &hf_ieee1905_assoc_sta_link_metrics_inclusion
,
10917 { "Associated STA Link Metrics Inclusion Policy",
10918 "ieee1905.sta_metrics_policy_flags.sta_link_metrics_inclusion",
10919 FT_BOOLEAN
, 8, NULL
, 0x40, NULL
, HFILL
}},
10921 { &hf_ieee1905_assoc_wf6_status_policy_inclusion
,
10922 { "Associated Wi-Fi6 STA Status Inclusion Policy",
10923 "ieee1905.sta_metrics_policy_flags.wf6_sta_status_inclusion",
10924 FT_BOOLEAN
, 8, NULL
, 0x20, NULL
, HFILL
}},
10926 { &hf_ieee1905_reporting_policy_flags_reserved
,
10927 { "Reserved", "ieee1905.sta_metrics_policy_flags.reserved",
10928 FT_UINT8
, BASE_HEX
, NULL
, 0x1F, NULL
, HFILL
}},
10930 { &hf_ieee1905_metrics_channel_util_threshold
,
10931 { "Utilization Reporting threshold", "ieee1905.sta_metric_policy.utilization_threshold",
10932 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_dbm
), 0, NULL
, HFILL
}},
10934 { &hf_ieee1905_ap_metric_query_bssid_cnt
,
10935 { "BSSID Count", "ieee1905.ap_metrics_query.bssid_cnt",
10936 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10938 { &hf_ieee1905_ap_metric_query_bssid
,
10939 { "Query BSSID", "ieee1905.ap_metrics_query.bssid",
10940 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10942 { &hf_ieee1905_sta_mac_address_type
,
10943 { "MAC address", "ieee1905.sta_mac_addr_type.mac_addr",
10944 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10946 { &hf_ieee1905_assoc_sta_mac_addr
,
10947 { "MAC address", "ieee1905.assoc_sta_link_metrics.mac_addr",
10948 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10950 { &hf_ieee1905_assoc_sta_bssid_count
,
10951 { "Number of BSSIDs for STA", "ieee1905.assoc_sta_link_metrics.bssid_count",
10952 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10954 { &hf_ieee1905_assoc_sta_link_metrics_bssid
,
10955 { "STA BSSID", "ieee1905.assoc_sta_link_metrics.bssid",
10956 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10958 { &hf_ieee1905_assoc_sta_link_metrics_time_delta
,
10959 { "Measurement time delta", "ieee1905.assoc_sta_link_metrics.time_delta",
10960 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10962 { &hf_ieee1905_assoc_sta_link_metrics_dwn_rate
,
10963 { "Downlink data rate", "ieee1905.assoc_sta_link_metrics.down_rate",
10964 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10966 { &hf_ieee1905_assoc_sta_link_metrics_up_rate
,
10967 { "Uplink data rate", "ieee1905.assoc_sta_link_metrics.up_rate",
10968 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10970 { &hf_ieee1905_assoc_sta_link_metrics_rcpi
,
10971 { "Measured uplink RCPI for STA", "ieee1905.assoc_sta_link_metrics.rcpi",
10972 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10974 { &hf_ieee1905_assoc_wf6_sta_mac_addr
,
10975 { "MAC address", "ieee1905.assoc_wf6_sta_status_report.mac_addr",
10976 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10978 { &hf_ieee1905_assoc_wf6_sta_tid_count
,
10979 { "Number of Wi-Fi 6 TIDs",
10980 "ieee1905.assoc_wf6_sta_status_report.tid_count",
10981 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10983 { &hf_ieee1905_assoc_wf6_sta_tid
,
10984 { "TID", "ieee1905.assoc_wf6_sta_status_report.tid",
10985 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
10987 { &hf_ieee1905_assoc_wf6_sta_queue_size
,
10988 { "Queue Size", "ieee1905.assoc_wf6_sta_status_report.queue_size",
10989 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
10991 { &hf_ieee1905_assoc_sta_ext_link_metrics_mac_addr
,
10992 { "Associated STA MAC Address",
10993 "ieee1905.assoc_sta_extended_link_metrics.mac_addr",
10994 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
10996 { &hf_ieee1905_assoc_sta_ext_link_metrics_count
,
10997 { "BSSID count", "ieee1905.assoc_sta_extended_link_metrics.count",
10998 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11000 { &hf_ieee1905_assoc_sta_extended_metrics_bssid
,
11001 { "BSSID", "ieee1905.assoc_sta_extended_link_metrics.bssid",
11002 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11004 { &hf_ieee1905_assoc_sta_extended_metrics_lddlr
,
11005 { "Last Data Downlink Rate",
11006 "ieee1905.assoc_sta_extended_link_metrics.lddlr",
11007 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11009 { &hf_ieee1905_assoc_sta_extended_metrics_ldulr
,
11010 { "Last Data Uplink Rate",
11011 "ieee1905.assoc_sta_extended_link_metrics.ldulr",
11012 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11014 { &hf_ieee1905_assoc_sta_extended_metrics_ur
,
11015 { "Utilization Receive",
11016 "ieee1905.assoc_sta_extended_link_metrics.ur",
11017 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11019 { &hf_ieee1905_assoc_sta_extended_metrics_tr
,
11020 { "Utilization Transmit",
11021 "ieee1905.assoc_sta_extended_link_metrics.ut",
11022 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11024 { &hf_ieee1905_unassoc_sta_link_metrics_class
,
11025 { "Operating class", "ieee1905.unassoc_sta_link_metrics.operaring_class",
11026 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11028 { &hf_ieee1905_unassoc_sta_link_channel_count
,
11029 { "Channel count", "ieee1905.unassoc_sta_link_metrics.channel_count",
11030 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11032 { &hf_ieee1905_unassoc_metrics_channel
,
11033 { "Channel number", "ieee1905.unassoc_sta_link_metrics.channel",
11034 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11036 { &hf_ieee1905_he_max_supported_tx_streams
,
11037 { "Maximum supported Tx spatial streams", "ieee1905.he_cap.max_tx_streams",
11038 FT_UINT16
, BASE_HEX
, VALS(vht_he_max_supported_tx_streams_vals
), 0xE000, NULL
, HFILL
}},
11040 { &hf_ieee1905_he_max_supported_rx_streams
,
11041 { "Maximum supported Rx spatial streams", "ieee1905.he_cap.max_rx_streams",
11042 FT_UINT16
, BASE_HEX
, VALS(vht_he_max_supported_rx_streams_vals
), 0x1C00, NULL
, HFILL
}},
11044 { &hf_ieee1905_he_support_80plus_mhz_flag
,
11045 { "HE support for 80+80 MHz", "ieee1905.ap_he.he_80plus_mhz",
11046 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
),
11047 0x0200, NULL
, HFILL
}},
11049 { &hf_ieee1905_he_support_160mhz_flag
,
11050 { "HE support for 160 MHz", "ieee1905.ap_he.he_160_mhz",
11051 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0100, NULL
, HFILL
}},
11053 { &hf_ieee1905_he_su_beamformer_capable_flag
,
11054 { "SU beanformer capable", "ieee1905.ap_he.su_beamformer",
11055 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0080, NULL
, HFILL
}},
11057 { &hf_ieee1905_he_mu_beamformer_capable_flag
,
11058 { "MU beamformer capable", "ieee1905.ap_he.mu_beamformer",
11059 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0040, NULL
, HFILL
}},
11061 { &hf_ieee1905_ul_mu_mimo_capable_flag
,
11062 { "UL MU-MIMO capable", "ieee1905.ap_he.ul_mu_mimo",
11063 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0020, NULL
, HFILL
}},
11065 { &hf_ieee1905_ul_mu_mimo_ofdma_capable_flag
,
11066 { "UL MU-MIMO OFDMA capable", "ieee1905.ap_he.he_ul_mu_mimo_ofdma",
11067 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0010, NULL
, HFILL
}},
11069 { &hf_ieee1905_dl_mu_mimo_ofdma_capable_flag
,
11070 { "DL MU-MIMO OFDMA capable", "ieee1905.ap_he.he_dl_mu_mimo_ofdma",
11071 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0008, NULL
, HFILL
}},
11073 { &hf_ieee1905_ul_ofdma_capable
,
11074 { "UL OFDMA capable", "ieee1905.ap_he.he_ul_ofdma",
11075 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0004, NULL
, HFILL
}},
11077 { &hf_ieee1905_dl_ofdma_capable
,
11078 { "DL OFDMA capable", "ieee1905.ap_he.he_dl_ofdma",
11079 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0002, NULL
, HFILL
}},
11081 { &hf_ieee1905_he_cap_flags
,
11082 { "Capabilities", "ieee1905.ap_he.caps",
11083 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11085 { &hf_ieee1905_steering_policy_local_disallowed_count
,
11086 { "Local steering disallowed STA count", "ieee1905.steering_policy.local_disallow_sta",
11087 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11089 { &hf_ieee1905_steering_disallowed_mac_addr
,
11090 { "Local steering disallowed MAC address", "ieee1905.steering_policy.local_disallow_mac",
11091 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11093 { &hf_ieee1905_btm_steering_disallowed_count
,
11094 { "BTM steering disallowed count", "ieee1905.steering_policy.btm_disall_count",
11095 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11097 { &hf_ieee1905_btm_steering_disallowed_mac_addr
,
11098 { "Local steering disallowed MAC address", "ieee1905.steering_policy.local_disallow_mac_addr",
11099 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11101 { &hf_ieee1905_steering_policy_radio_count
,
11102 { "Steering policy radio count", "ieee1905.steering_policy.radio_count",
11103 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11105 { &hf_ieee1905_steering_policy_radio_id
,
11106 { "Radio unique ID", "ieee1905.steering_policy.radio_id",
11107 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11109 { &hf_ieee1905_steering_policy_policy
,
11110 { "Steering policy", "ieee1905.steering_policy.policy",
11111 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11113 { &hf_ieee1905_steering_policy_util
,
11114 { "Channel utilization threshold", "ieee1905.steering_policy.utilization_threshold",
11115 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11117 { &hf_ieee1905_steering_policy_rcpi_threshold
,
11118 { "RCPI steering threshold", "ieee1905.steering_policy.rcpi_threshold",
11119 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11121 { &hf_ieee1905_radio_restriction_radio_id
,
11122 { "Radio unique ID", "ieee1905.radio_restriction.radio_id",
11123 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11125 { &hf_ieee1905_radio_restriction_op_class_count
,
11126 { "Restricted operating classes", "ieee1905.radio_restriction.classes",
11127 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11129 { &hf_ieee1905_radio_restriction_op_class
,
11130 { "Restricted operating class", "ieee1905.radio_restriction.class",
11131 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11133 { &hf_ieee1905_radio_restriction_chan_count
,
11134 { "Channel count", "ieee1905.radio_restriction.channel_count",
11135 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11137 { &hf_ieee1905_radio_restriction_channel
,
11138 { "Restricted channel", "ieee1905.radio_restriction.channel",
11139 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11141 { &hf_ieee1905_radio_restriction_min_separation
,
11142 { "Minimum separation", "ieee1905.radio_restriction.min_sep",
11143 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11145 { &hf_ieee1905_include_estimated_spi_ac_eq_be
,
11146 { "Include Estimated Service Parameters Information for AC=BE",
11147 "ieee1905.ap_metrics.include_ac_eq_be_params",
11148 FT_BOOLEAN
, 8, TFS(&tfs_included_not_included
), 0x80, NULL
, HFILL
}},
11150 { &hf_ieee1905_include_estimated_spi_ac_eq_bk
,
11151 { "Include Estimated Service Parameters Information for AC=BK",
11152 "ieee1905.ap_metrics.include_ac_eq_bk_params",
11153 FT_BOOLEAN
, 8, TFS(&tfs_included_not_included
), 0x40, NULL
, HFILL
}},
11155 { &hf_ieee1905_include_estimated_spi_ac_eq_vo
,
11156 { "Include Estimated Service Parameters Information for AC=VO",
11157 "ieee1905.ap_metrics.include_ac_eq_vo_params",
11158 FT_BOOLEAN
, 8, TFS(&tfs_included_not_included
), 0x20, NULL
, HFILL
}},
11160 { &hf_ieee1905_include_estimated_spi_ac_eq_vi
,
11161 { "Include Estimated Service Parameters Information for AC=VI",
11162 "ieee1905.ap_metrics.include_ac_eq_vi_params",
11163 FT_BOOLEAN
, 8, TFS(&tfs_included_not_included
), 0x10, NULL
, HFILL
}},
11165 { &hf_ieee1905_ap_metrics_agent_bssid
,
11166 { "Multi-AP agent BSSID", "ieee1905.ap_metrics.bssid",
11167 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11169 { &hf_ieee1905_ap_metrics_channel_utilization
,
11170 { "Channel utilization", "ieee1905.ap_metrics.channel_util",
11171 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11173 { &hf_ieee1905_ap_metrics_sta_count
,
11174 { "BSS STA count", "ieee1905.ap_metrics.sta_count",
11175 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11177 { &hf_ieee1905_ap_metrics_flags
,
11178 { "Estimated Service Parameters Flags", "ieee1905.ap_metrics.flags",
11179 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11181 { &hf_ieee1905_ap_metrics_service_params_be
,
11182 { "Estimated service parameters AC=BE", "ieee1905.ap_metrics.est_param_be",
11183 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11185 { &hf_ieee1905_ap_metrics_service_params_bk
,
11186 { "Estimated service parameters AC=BK", "ieee1905.ap_metrics.est_param_bk",
11187 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11189 { &hf_ieee1905_ap_metrics_service_params_vo
,
11190 { "Estimated service parameters AC=VO", "ieee1905.ap_metrics.est_param_vo",
11191 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11193 { &hf_ieee1905_ap_metrics_service_params_vi
,
11194 { "Estimated service parameters AC=VI", "ieee1905.ap_metrics.est_param_vi",
11195 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11197 { &hf_ieee1905_unassoc_sta_link_metric_op_class
,
11198 { "Operating class", "ieee1905.unassoc_sta_link_metrics.op_class",
11199 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11201 { &hf_ieee1905_unassoc_sta_link_metric_sta_count
,
11202 { "STA count", "ieee1905.unassoc_sta_link_metrics.sta_count",
11203 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11205 { &hf_ieee1905_unassoc_link_metric_mac_addr
,
11206 { "STA MAC address", "ieee1905.unassoc_sta_link_metrics.mac_addr",
11207 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11209 { &hf_ieee1905_unassoc_link_metric_channel
,
11210 { "Channel number", "ieee1905.unassoc_sta_link_metrics.channel",
11211 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11213 { &hf_ieee1905_unassoc_link_metric_delta
,
11214 { "Time delta (ms)", "ieee1905.unassoc_sta_link_metrics.delta",
11215 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11217 { &hf_ieee1905_beacon_metrics_query_mac_addr
,
11218 { "Associated STA MAC address", "ieee1905.beacon_metrics.assoc_sta_mac",
11219 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11221 { &hf_ieee1905_unassoc_link_metric_uplink_rcpi
,
11222 { "Uplink RCPI", "ieee1905.unassoc_sta_link_metrics.rcpi",
11223 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11225 { &hf_ieee1905_beacon_metrics_query_op_class
,
11226 { "Operating class", "ieee1905.beacon_metrics.op_class",
11227 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11229 { &hf_ieee1905_beacon_metrics_query_channel
,
11230 { "Channel number", "ieee1905.beacon_metrics.channel_number",
11231 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11233 { &hf_ieee1905_beacon_metrics_query_bssid
,
11234 { "BSSID", "ieee1905.beacon_metrics.bssid",
11235 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11237 { &hf_ieee1905_beacon_metrics_query_detail
,
11238 { "Reporting detail", "ieee1905.beacon_metrics.detail",
11239 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11241 { &hf_ieee1905_beacon_metrics_query_ssid_len
,
11242 { "SSID length", "ieee1905.beacon_metrics.ssid_len",
11243 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11245 { &hf_ieee1905_beacon_metrics_query_ssid
,
11246 { "SSID", "ieee1905.beacon_metrics.ssid",
11247 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11249 { &hf_ieee1905_beacon_metrics_channel_count
,
11250 { "Channel reports number", "ieee1905.beacon_metrics.report_number",
11251 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11253 { &hf_ieee1905_beacon_metrics_report_len
,
11254 { "Channel report length", "ieee1905.beacon_metrics.report_length",
11255 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11257 { &hf_ieee1905_beacon_metrics_report_op_class
,
11258 { "Channel report operating class", "ieee1905.beacon_metrics.op_class",
11259 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11261 { &hf_ieee1905_beacon_metrics_report_channel_id
,
11262 { "Channel number", "ieee1905.beacon_metrics.channel_number",
11263 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11265 { &hf_ieee1905_measurement_report
,
11266 { "Measurement Report", "ieee1905.measurement_report",
11267 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11269 { &hf_ieee1905_beacon_metrics_response_mac_addr
,
11270 { "STA MAC address", "ieee1905.beacon_metrics.mac_addr",
11271 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11273 { &hf_ieee1905_beacon_metrics_response_reserved
,
11274 { "Reserved", "ieee1905.beacon_metrics.reserved",
11275 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11277 { &hf_ieee1905_beacon_metrics_response_meas_num
,
11278 { "Number of Measurements", "ieee1905.beacon_metrics.number_of_measurements",
11279 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11281 { &hf_ieee1905_assoc_sta_traffic_stats_mac_addr
,
11282 { "Associated STA MAC address", "ieee1905.assoc_sta_traffic_stats.mac_addr",
11283 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11285 { &hf_ieee1905_assoc_sta_traffic_stats_bytes_sent
,
11286 { "Bytes Sent", "ieee1905.assoc_sta_traffic_stats.bytes_sent",
11287 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11289 { &hf_ieee1905_assoc_sta_traffic_stats_bytes_rcvd
,
11290 { "Bytes Received", "ieee1905.assoc_sta_traffic_stats.bytes_rcvd",
11291 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11293 { &hf_ieee1905_assoc_sta_traffic_stats_packets_sent
,
11294 { "Packets Sent", "ieee1905.assoc_sta_traffic_stats.packets_sent",
11295 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11297 { &hf_ieee1905_assoc_sta_traffic_stats_packets_rcvd
,
11298 { "Packets Received", "ieee1905.assoc_sta_traffic_stats.packets_rcvd",
11299 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11301 { &hf_ieee1905_assoc_sta_traffic_stats_tx_pkt_errs
,
11302 { "Tx Packet Errors", "ieee1905.assoc_sta_traffic_stats.tx_pkt_errs",
11303 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11305 { &hf_ieee1905_assoc_sta_traffic_stats_rx_pkt_errs
,
11306 { "Rx Packet Errors", "ieee1905.assoc_sta_traffic_stats.rx_packet_errs",
11307 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11309 { &hf_ieee1905_assoc_sta_traffic_stats_retrans_count
,
11310 { "Retransmission Count", "ieee1905.assoc_sta_traffic_stats.retrans_count",
11311 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11313 { &hf_ieee1905_error_code_value
,
11314 { "Reason code", "ieee1905.error_code.reason",
11315 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11317 { &hf_ieee1905_error_code_mac_addr
,
11318 { "MAC address of error-code STA", "ieee1905.error_code.mac_addr",
11319 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11321 { &hf_ieee1905_channel_scan_rep_policy
,
11322 { "Reporting Policy", "ieee1905.channel_scan_reporting_policy",
11323 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11325 { &hf_ieee1905_channel_scan_pol_report
,
11326 { "Report Independent Channel Scans",
11327 "ieee1905.channel_scan_reporting_policy.report_independent_channel_scans",
11328 FT_BOOLEAN
, 8, TFS(&report_independent_scans_tfs
), 0x01, NULL
, HFILL
}},
11330 { &hf_ieee1905_channel_scan_pol_reserved
,
11331 { "Reserved", "ieee1905.channel_scan_reporting_policy.reserved",
11332 FT_UINT8
, BASE_HEX
, NULL
, 0xFE, NULL
, HFILL
}},
11334 { &hf_ieee1905_channel_scan_capabilities_radio_num
,
11335 { "Number of radios", "ieee1905.channel_scan_capabilities.num_radios",
11336 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11338 { &hf_ieee1905_channel_scan_capa_radio_id
,
11339 { "Radio Unique ID", "ieee1905.channel_scan_capabilities.radio_id",
11340 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
11342 { &hf_ieee1905_channel_scan_capa_flags
,
11343 { "Flags", "ieee1905.channel_scan_capabilities.flags",
11344 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
11346 { &hf_ieee1905_channel_scan_capa_flags_on_boot_only
,
11347 { "On boot only", "ieee1905.channel_scan_capabilities.flags.on_boot_only",
11348 FT_BOOLEAN
, 8, TFS(&channel_scan_capa_flags_on_boot_only_tfs
),
11349 0x80, NULL
, HFILL
}},
11351 { &hf_ieee1905_channel_scan_capa_flags_scan_impact
,
11352 { "Scan Impact", "ieee1905.channel_scan_capabilities.flags.scan_impact",
11353 FT_UINT8
, BASE_HEX
, VALS(channel_scan_capa_flags_impact_vals
), 0x60,
11356 { &hf_ieee1905_channel_scan_capa_flags_reserved
,
11357 { "Reserved", "ieee1905.channel_scan_capabilities.flags.reserved",
11358 FT_UINT8
, BASE_HEX
, NULL
, 0x1F, NULL
, HFILL
}},
11360 { &hf_ieee1905_channel_scan_capa_min_scan_interval
,
11361 { "Minimum Scan Interval", "ieee1905.channel_scan_capabilities.min_scan_interval",
11362 FT_UINT32
, BASE_DEC
| BASE_UNIT_STRING
, UNS(&units_seconds
),
11365 { &hf_ieee1905_channel_scan_capa_class_num
,
11366 { "Number of Operating Classes",
11367 "ieee1905.channel_scan_capabilities.num_operating_classes",
11368 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11370 { &hf_ieee1905_channel_scan_capa_oper_class
,
11371 { "Operating Class", "ieee1905.channel_scan_capabilities.operating_class",
11372 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11374 { &hf_ieee1905_channel_scan_capa_oper_class_chan_cnt
,
11375 { "Number of Channels", "ieee1905.channel_scan_capabilities.operating_class.num_channels",
11376 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11378 { &hf_ieee1905_channel_scan_capa_channel
,
11379 { "Channel", "ieee1905.channel_scan_capabilities.operating_class.channel",
11380 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11382 { &hf_ieee1905_channel_scan_request_flags
,
11383 { "Flags", "ieee1905.channel_scan_request.flags",
11384 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11386 { &hf_ieee1905_channel_scan_request_flags_fresh_scan
,
11387 { "Perform Fresh Scan", "ieee1905.channel_scan_request.flags.perform_fresh_scan",
11388 FT_BOOLEAN
, 8, TFS(&perform_fresh_scan_tfs
), 0x80, NULL
, HFILL
}},
11390 { &hf_ieee1905_channel_scan_request_flags_reserved
,
11391 { "Reserved", "ieee1905.channel_scan_request.flags.reserved",
11392 FT_UINT8
, BASE_HEX
, NULL
, 0x7F, NULL
, HFILL
}},
11394 { &hf_ieee1905_channel_scan_request_radio_num
,
11395 { "Number of Radios", "ieee1905.channel_scan_request.number_radios",
11396 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11398 { &hf_ieee1905_channel_scan_request_radio_id
,
11399 { "Radio Unique ID", "ieee1905.channel_scan_request.radio_id",
11400 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11402 { &hf_ieee1905_channel_scan_request_class_num
,
11403 { "Number of Operating Classes",
11404 "ieee1905.channel_scan_request.num_operating_classes",
11405 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11407 { &hf_ieee1905_channel_scan_request_oper_class
,
11408 { "Operating Class", "ieee1905.channel_scan_request.operating_class",
11409 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11411 { &hf_ieee1905_channel_scan_request_oper_class_chan_cnt
,
11412 { "Number of Channels", "ieee1905.channel_scan_request.operating_class.num_channels",
11413 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11415 { &hf_ieee1905_channel_scan_request_channel
,
11416 { "Channel", "ieee1905.channel_scan_request.channel",
11417 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11419 { &hf_ieee1905_channel_scan_result_radio_id
,
11420 { "Radio Unique ID", "ieee1905.channel_scan_result.radio_id",
11421 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
11423 { &hf_ieee1905_channel_scan_result_oper_class
,
11424 { "Operating Class", "ieee1905.channel_scan_result.operating_class",
11425 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11427 { &hf_ieee1905_channel_scan_result_channel
,
11428 { "Channel", "ieee1905.channel_scan_result.channel",
11429 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11431 { &hf_ieee1905_channel_scan_result_status
,
11432 { "Status", "ieee1905.channel_scan_result.status",
11433 FT_UINT8
, BASE_HEX
|BASE_RANGE_STRING
, RVALS(channel_scan_result_status_rvals
),
11436 { &hf_ieee1905_channel_scan_result_timestamp_len
,
11437 { "Timestamp Length", "ieee1905.channel_scan_result.timestamp_len",
11438 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11440 { &hf_ieee1905_channel_scan_result_timestamp_string
,
11441 { "Timestamp", "ieee1905.channel_scan_result.timestamp",
11442 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11444 { &hf_ieee1905_channel_scan_result_utilization
,
11445 { "Utilization", "ieee1905.channel_scan_result.utilization",
11446 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11448 { &hf_ieee1905_channel_scan_result_noise
,
11449 { "Noise", "ieee1905.channel_scan_result.noise",
11450 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11452 { &hf_ieee1905_radio_metrics_noise
,
11453 { "Noise", "ieee1905.radio_metrics.noise",
11454 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11456 { &hf_ieee1905_radio_metrics_transmit
,
11457 { "Transmit", "ieee1905.radio_metrics.transmit",
11458 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11460 { &hf_ieee1905_radio_metrics_receive_self
,
11461 { "ReceiveSelf", "ieee1905.radio_metrics.receive_self",
11462 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11464 { &hf_ieee1905_radio_metrics_receive_other
,
11465 { "ReceiveOther", "ieee1905.radio_metrics.receive_other",
11466 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11468 { &hf_ieee1905_ap_extended_metrics_bssid
,
11469 { "BSSID", "ieee1905.ap_extended_metrics.bssid",
11470 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11472 { &hf_ieee1905_ap_extended_metrics_unicast_sent
,
11473 { "UnicastBytesSent",
11474 "ieee1905.ap_extended_metrics.unicast_bytes_sent",
11475 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11477 { &hf_ieee1905_ap_extended_metrics_unicast_rcvd
,
11478 { "UnicastBytesReceived",
11479 "ieee1905.ap_extended_metrics.unicast_bytes_received",
11480 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11482 { &hf_ieee1905_ap_extended_metrics_multicast_sent
,
11483 { "MulticastBytesSent",
11484 "ieee1905.ap_extended_metrics.multicast_bytes_sent",
11485 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11487 { &hf_ieee1905_ap_extended_metrics_multicast_rcvd
,
11488 { "MulticastBytesReceived",
11489 "ieee1905.ap_extended_metrics.multicast_bytes_received",
11490 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11492 { &hf_ieee1905_ap_extended_metrics_bcast_sent
,
11493 { "BroadcastBytesSent",
11494 "ieee1905.ap_extended_metrics.Broadcast_bytes_sent",
11495 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11497 { &hf_ieee1905_ap_extended_metrics_bcast_rcvd
,
11498 { "BroadcastBytesReceived",
11499 "ieee1905.ap_extended_metrics.broadcast_bytes_received",
11500 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11502 { &hf_ieee1905_channel_scan_result_neigh_num
,
11503 { "Number of Neighbors", "ieee1905.channel_scan_result.number_of_neighbors",
11504 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11506 { &hf_ieee1905_channel_scan_result_bssid
,
11507 { "BSSID", "ieee1905.channel_scan_result.bssid",
11508 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11510 { &hf_ieee1905_channel_scan_result_ssid_len
,
11511 { "SSID Length", "ieee1905.channel_scan_result.ssid_len",
11512 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11514 { &hf_ieee1905_channel_scan_result_ssid
,
11515 { "SSID", "ieee1905.channel_scan_result.ssid",
11516 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11518 { &hf_ieee1905_channel_scan_result_sig_level
,
11519 { "Signal Strength", "ieee1905.channel_scan_result.signal_strength",
11520 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11522 { &hf_ieee1905_channel_scan_result_bw_len
,
11523 { "Channel BW Length", "ieee1905.channel_scan_result.channel_bw_len",
11524 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11526 { &hf_ieee1905_channel_scan_result_bw
,
11527 { "Channel BW", "ieee1905.channel_scan_result.channel_bw",
11528 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11530 { &hf_ieee1905_channel_scan_result_neigh_flags
,
11531 { "Neighbor Flags", "ieee1905.channel_scan_result.neighbor_flags",
11532 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11534 { &hf_ieee1905_channel_scan_result_load_element_present
,
11535 { "Utilization Present", "ieee1905.channel_scan_result.neighbor_flags.load_element_present",
11536 FT_BOOLEAN
, 8, NULL
, 0x80, NULL
, HFILL
}},
11538 { &hf_ieee1905_channel_scan_result_util
,
11539 { "Channel Utilization", "ieee1905.channel_scan_result.channel_util",
11540 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11542 { &hf_ieee1905_channel_scan_result_sta_count
,
11543 { "Station Count", "ieee1905.channel_scan_result.station_count",
11544 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11546 { &hf_ieee1905_channel_scan_result_neigh_reserved
,
11547 { "Reserved", "ieee1905.channel_scan_result.neighbor_flags.reserved",
11548 FT_UINT8
, BASE_DEC
, NULL
, 0x7F, NULL
, HFILL
}},
11550 { &hf_ieee1905_channel_scan_result_scan_duration
,
11551 { "Scan Duration", "ieee1905.channel_scan_result.scan_duration",
11552 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11554 { &hf_ieee1905_channel_scan_result_flags
,
11555 { "Flags", "ieee1905.channel_scan_result.flags",
11556 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11558 { &hf_ieee1905_channel_scan_result_scan_type
,
11559 { "Scan Type", "ieee1905.channel_scan_result.flags.scan_type",
11560 FT_BOOLEAN
, 8, TFS(&channel_scan_result_type_tfs
), 0x80, NULL
, HFILL
}},
11562 { &hf_ieee1905_channel_scan_result_scan_flags_reserved
,
11563 { "Reserved", "ieee1905.channel_scan_result.flags.reserved",
11564 FT_UINT8
, BASE_HEX
, NULL
, 0x7F, NULL
, HFILL
}},
11566 { &hf_ieee1905_timestamp_length
,
11567 { "Timestamp Length", "ieee1905.timestamp.length",
11568 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11570 { &hf_ieee1905_timestamp_string
,
11571 { "Timestamp", "ieee1905.timestamp.timestamp",
11572 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11574 { &hf_ieee1905_1905_layer_sec_capa_onboarding
,
11575 { "Onboarding Protocols Supported", "ieee1905.1905_layer_security_capability.onboarding_protocols_supported",
11576 FT_UINT8
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(onboarding_protocol_supported_rvals
),
11579 { &hf_ieee1905_1905_layer_sec_capa_mic_sup
,
11580 { "Message Integrity Algorithms Supported",
11581 "ieee1905.1905_layer_security_capability.message_integrity_algorithms_supported",
11582 FT_UINT8
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(message_integrity_algorithms_sup_rvals
),
11585 { &hf_ieee1905_1905_layer_sec_capa_enc_alg_sup
,
11586 { "Message Encryption Algorithms Supported",
11587 "ieee1905.1905_layer_security_capability.message_encryption_algorithms_supported",
11588 FT_UINT8
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(message_encryption_algorithms_sup_rvals
),
11591 { &hf_ieee1905_ap_wf6_capa_radio_id
,
11592 { "Radio ID", "ieee1905.ap_wifi_6_capabilities.radio_id",
11593 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11595 { &hf_ieee1905_ap_wf6_role_count
,
11596 { "Role Count", "ieee1905.ap_wifi_6_capabilities.role_count",
11597 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11599 { &hf_ieee1905_ap_wf6_agent_role_flags
,
11600 { "Role Flags", "ieee1905.ap_wifi_6_capabilities.role_flags",
11601 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11603 { &hf_ieee1905_ap_wf6_capa_agents_role
,
11604 { "Agent's Role", "ieee1905.ap_wifi_6_capabilities.agents_role",
11605 FT_UINT8
, BASE_HEX
, VALS(ap_wf6_agent_role_vals
),
11606 0xC0, NULL
, HFILL
}},
11608 { &hf_ieee1905_ap_wf6_capa_he_160_support
,
11609 { "Support for HE 160 MHz",
11610 "ieee1905.ap_wifi_6_capabilities.support_for_he_160",
11611 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11612 0x20, NULL
, HFILL
}},
11614 { &hf_ieee1905_ap_wf6_capa_he_80p80_support
,
11615 { "Support for HE 80+80 MHz",
11616 "ieee1905.ap_wifi_6_capabilities.support_for_he_80_p_80",
11617 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11618 0x10, NULL
, HFILL
}},
11620 { &hf_ieee1905_ap_wf6_capa_reserved
,
11621 { "Reserved", "ieee1905.ap_wifi_6_capabilities.reserved",
11622 FT_UINT8
, BASE_HEX
, NULL
, 0x0F, NULL
, HFILL
}},
11624 { &hf_ieee1905_ap_wf6_he_supported_flags
,
11625 { "HE Support flags",
11626 "ieee1905.ap_wifi_6_capabilities.he_support_flags",
11627 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11629 { &hf_ieee1905_ap_wf6_su_beamformer
,
11630 { "SU Beamformer", "ieee1905.ap_wifi_6_capabilities.su_beamformer",
11631 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11632 0x80, NULL
, HFILL
}},
11634 { &hf_ieee1905_ap_wf6_su_beamformee
,
11635 { "SU Beamformee", "ieee1905.ap_wifi_6_capabilities.su_beamformee",
11636 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11637 0x40, NULL
, HFILL
}},
11639 { &hf_ieee1905_ap_wf6_mu_beamformer_status
,
11640 { "MU Beamformer Status",
11641 "ieee1905.ap_wifi_6_capabilities.mu_beamformer_status",
11642 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11643 0x20, NULL
, HFILL
}},
11645 { &hf_ieee1905_ap_wf6_beamformee_sts_le_80mhz
,
11646 { "Beamformee STS <= 80MHz",
11647 "ieee1905.ap_wifi_6_capabilities.beamformee_sts_le_80mhz",
11648 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11649 0x10, NULL
, HFILL
}},
11651 { &hf_ieee1905_ap_wf6_beamformee_sts_gt_80mhz
,
11652 { "Beamformee STS > 80MHz",
11653 "ieee1905.ap_wifi_6_capabilities.beamformee_sts_gt_80mhz",
11654 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11655 0x08, NULL
, HFILL
}},
11657 { &hf_ieee1905_ap_wf6_ul_mu_mimo
,
11658 { "UL MU MIMO", "ieee1905.ap_wifi_6_capabilities.us_mu_mimo",
11659 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11660 0x04, NULL
, HFILL
}},
11662 { &hf_ieee1905_ap_wf6_ul_ofdma
,
11663 { "UL OFDMA", "ieee1905.ap_wifi_6_capabilities.ul_ofdma",
11664 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11665 0x02, NULL
, HFILL
}},
11667 { &hf_ieee1905_ap_wf6_dl_ofdma
,
11668 { "DL OFDMA", "ieee1905.ap_wifi_6_capabilities.dl_ofdma",
11669 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11670 0x01, NULL
, HFILL
}},
11672 { &hf_ieee1905_ap_wf6_mimo_max_flags
,
11673 { "MIMO Max Users flags",
11674 "ieee1905.ap_wifi_6_capabilities.mimo_max_users_flags",
11675 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11677 { &hf_ieee1905_ap_wf6_max_ap_dl_mu_mimo_tx
,
11678 { "Max AP DL MU-MIMO TX",
11679 "ieee1905.ap_wifi_6_capabilities.max_ap_dl_mu_mimo_tx",
11680 FT_UINT8
, BASE_DEC
, NULL
, 0xF0, NULL
, HFILL
}},
11682 { &hf_ieee1905_ap_wf6_max_ap_ul_mu_mimi_rx
,
11683 { "Max AP UL MU-MIMO RX",
11684 "ieee1905.ap_wifi_6_capabilities.max_ap_ul_mu_mimo_rx",
11685 FT_UINT8
, BASE_DEC
, NULL
, 0x0F, NULL
, HFILL
}},
11687 { &hf_ieee1905_ap_wf6_dl_ofdma_max_tx
,
11688 { "Max users per DL OFDMA TX in AP role",
11689 "ieee1905.ap_wifi_6_capabilities.ap_max_users_per_dl_ofdma_tx",
11690 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11692 { &hf_ieee1905_ap_wf6_ul_ofdma_max_rx
,
11693 { "Max users per UL OFDMA RX in AP role",
11694 "ieee1905.ap_wifi_6_capabilities.ap_max_users_per_ul_ofdma_rx",
11695 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11697 { &hf_ieee1905_ap_wf6_gen_flags
,
11698 { "General flags", "ieee1905.ap_wifi_6_capabilities.general_flags",
11699 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
11701 { &hf_ieee1905_ap_wf6_gen_rts
,
11702 { "RTS", "ieee1905.ap_wifi_6_capabilities.general_flags.rts",
11703 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11704 0x80, NULL
, HFILL
}},
11706 { &hf_ieee1905_ap_wf6_gen_mu_rts
,
11707 { "MU RTS", "ieee1905.ap_wifi_6_capabilities.general_flags.mu_rts",
11708 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11709 0x40, NULL
, HFILL
}},
11711 { &hf_ieee1905_ap_wf6_gen_multi_bssid
,
11713 "ieee1905.ap_wifi_6_capabilities.general_flags.multi_bssid",
11714 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11715 0x20, NULL
, HFILL
}},
11717 { &hf_ieee1905_ap_wf6_gen_mu_edca
,
11718 { "MU EDCA", "ieee1905.ap_wifi_6_capabilities.general_flags.mu_edca",
11719 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11720 0x10, NULL
, HFILL
}},
11722 { &hf_ieee1905_ap_wf6_gen_twt_requester
,
11724 "ieee1905.ap_wifi_6_capabilities.general_flags.twt_requester",
11725 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11726 0x08, NULL
, HFILL
}},
11728 { &hf_ieee1905_ap_wf6_gen_twt_responder
,
11730 "ieee1905.ap_wifi_6_capabilities.general_flags.twt_responder",
11731 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
11732 0x04, NULL
, HFILL
}},
11734 { &hf_ieee1905_ap_wf6_gen_reserved
,
11736 "ieee1905.ap_wifi_6_capabilities.general_flags.reserved",
11737 FT_UINT8
, BASE_HEX
, NULL
, 0x03, NULL
, HFILL
}},
11739 { &hf_ieee1905_agent_list_bytes
,
11740 { "Agent List", "ieee1905.agent_list.agent_list_data",
11741 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
11743 { &hf_ieee1905_mic_group_temporal_key_id
,
11744 { "Group Temporal Key ID", "ieee1905.mic.group_temporal_key_id",
11745 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11747 { &hf_ieee1905_1905_gtk_key_id
,
11748 { "Key ID", "ieee1905.mic.group_temporal_key_id.key_id",
11749 FT_UINT8
, BASE_DEC
, NULL
, 0xC0, NULL
, HFILL
}},
11751 { &hf_ieee1905_mic_version
,
11752 { "MIC Version", "ieee1905.mic.group_temporal_key_id.mic_version",
11753 FT_UINT8
, BASE_HEX
, VALS(mic_version_vals
), 0x30, NULL
, HFILL
}},
11755 { &hf_ieee1905_mic_reserved
,
11756 { "Reserved", "ieee1905.mic.group_temporal_key_id.reserved",
11757 FT_UINT8
, BASE_HEX
, NULL
, 0x0F, NULL
, HFILL
}},
11759 { &hf_ieee1905_mic_integrity_transmission_counter
,
11760 { "Integrity Transmission Counter",
11761 "ieee1905.mic.integrity_transmission_counter",
11762 FT_UINT48
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11764 { &hf_ieee1905_mic_source_la_mac_id
,
11765 {"Source LA MAC ID", "ieee1905.mic.source_la_max_id",
11766 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11768 { &hf_ieee1905_mic_length
,
11769 { "MIC Length", "ieee1905.mic.mic_length",
11770 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11772 { &hf_ieee1905_mic_bytes
,
11773 { "MIC", "ieee1905.mic.mic_bytes",
11774 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11776 { &hf_ieee1905_encrypted_enc_transmission_count
,
11777 { "Encryption Transmission Counter",
11778 "ieee1905.encrypted.encryption_transmission_counter",
11779 FT_UINT48
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11781 { &hf_ieee1905_encrypted_dest_al_mac_addr
,
11782 { "Destination 1905 AL MAC Address",
11783 "ieee1905.encrypted.destination_1905_al_mac",
11784 FT_ETHER
, ENC_NA
, NULL
, 0, NULL
, HFILL
}},
11786 { &hf_ieee1905_encrypted_source_la_mac_id
,
11787 { "Source AL MAC", "ieee1905.encrypted.source_al_mac",
11788 FT_ETHER
, ENC_NA
, NULL
, 0, NULL
, HFILL
}},
11790 { &hf_ieee1905_encrypted_enc_output_field_len
,
11791 { "AES-SIV Encrypted Output Length",
11792 "ieee1905.encrypted.aes_siv_encrypted_output_length",
11793 FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11795 { &hf_ieee1905_encrypted_enc_output_field
,
11796 { "AES-SIV Encryption Output",
11797 "ieee1905.encrypted.aes_siv_encryption_output",
11798 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11800 { &hf_ieee1905_cac_request_radio_count
,
11801 { "Number of Radios", "ieee1905.cac_request.number_of_radios",
11802 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11804 { &hf_ieee1905_cac_request_radio_id
,
11805 { "Radio ID", "ieee1905.cac_request.radio_id",
11806 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11808 { &hf_ieee1905_cac_request_op_class
,
11809 { "Operating class", "ieee1905.cac_request.operating_class",
11810 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11812 { &hf_ieee1905_cac_request_channel
,
11813 { "Channel", "ieee1905.cac_request.channel",
11814 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11816 { &hf_ieee1905_cac_request_flags
,
11817 { "Request flags", "ieee1905.cac_request.flags",
11818 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11820 { &hf_ieee1905_cac_request_method
,
11821 { "CAC Method", "ieee1905.cac_request.flags.cac_method",
11822 FT_UINT8
, BASE_DEC
, VALS(cac_request_method_vals
),
11823 0xE0, NULL
, HFILL
}},
11825 { &hf_ieee1905_cac_request_completion_action
,
11826 { "Successful Completion Action",
11827 "ieee1905.cac_request.flags.successful_completion_action",
11828 FT_UINT8
, BASE_DEC
| BASE_RANGE_STRING
,
11829 RVALS(cac_completion_action_vals
), 0x18, NULL
, HFILL
}},
11831 { &hf_ieee1905_cac_request_completion_unsuccess
,
11832 { "Unsuccessful Completion Action",
11833 "ieee1905.cac_request.flags.unsuccessful_completion_action",
11834 FT_UINT8
, BASE_DEC
| BASE_RANGE_STRING
,
11835 RVALS(cac_completion_action_vals
), 0x06, NULL
, HFILL
}},
11837 { &hf_ieee1905_cac_request_reserved
,
11838 { "Reserved", "ieee1905.cac_request.flags.reserved",
11839 FT_UINT8
, BASE_HEX
, NULL
, 0x01, NULL
, HFILL
}},
11841 { &hf_ieee1905_cac_termination_radio_count
,
11842 { "Number of Radios", "ieee1905.cac_termination.number_of_radios",
11843 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11845 { &hf_ieee1905_cac_terminate_radio_id
,
11846 { "Radio ID", "ieee1905.cac_termination.radio_id",
11847 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
11849 { &hf_ieee1905_cac_terminate_op_class
,
11850 { "Operating class", "ieee1905.cac_termination.operating_class",
11851 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11853 { &hf_ieee1905_cac_terminate_channel
,
11854 { "Channel", "ieee1905.cac_termination.channel",
11855 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11857 { &hf_ieee1905_cac_completion_rep_radio_count
,
11858 { "Number of radios",
11859 "ieee1905.cac_completion_report.number_of_radios",
11860 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11862 { &hf_ieee1905_cac_completion_radio_id
,
11863 { "Radio ID", "ieee1905.cac_completion_report.radio_id",
11864 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
11866 { &hf_ieee1905_cac_completion_op_class
,
11867 { "Operating class", "ieee1905.cac_completion_report.operating_class",
11868 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11870 { &hf_ieee1905_cac_completion_channel
,
11871 { "Channel", "ieee1905.cac_completion_report.channel",
11872 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11874 { &hf_ieee1905_cac_completion_status
,
11875 { "CAC Completion Status",
11876 "ieee1905.cac_completion_report.cac_completion_status",
11877 FT_UINT8
, BASE_HEX
| BASE_RANGE_STRING
,
11878 RVALS(cac_completion_status_rvals
), 0, NULL
, HFILL
}},
11880 { &hf_ieee1905_cac_completion_radar_count
,
11881 { "Radar detected count",
11882 "ieee1905.cac_completion_report.radar_detected_count",
11883 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
11885 { &hf_ieee1905_cac_comp_radar_op_class
,
11886 { "Operating class",
11887 "ieee1905.cac_completion_report.radar.operating_class",
11888 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11890 { &hf_ieee1905_cac_comp_radar_channel
,
11891 { "Channel", "ieee1905.cac_completion_report.radar.channel",
11892 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11894 { &hf_ieee1905_cac_status_rpt_active_chan
,
11895 { "Available Channel Count",
11896 "ieee1905.cac_status_report.available_channel_count",
11897 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11899 { &hf_ieee1905_cac_status_rpt_avail_op_class
,
11900 { "Operating Class",
11901 "ieee1905.cac_status_report.available_channel.operating_class",
11902 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11904 { &hf_ieee1905_cac_status_rpt_avail_channel
,
11906 "ieee1905.cac_status_report.available_channel.channel",
11907 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11909 { &hf_ieee1905_cac_status_rpt_avail_minutes
,
11910 { "Minutes since CAC completed",
11911 "ieee1905.cac_status_report.available_channel.minutes_since",
11912 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11914 { &hf_ieee1905_cac_status_rpt_non_occ_cnt
,
11915 { "Non-occupied Channel Count",
11916 "ieee1905.cac_status_report.non_occupied_channel_count",
11917 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11919 { &hf_ieee1905_cac_status_rpt_non_occ_op_class
,
11920 { "Operating Class",
11921 "ieee1905.cac_status_report.non_occupied_channel.operating_class",
11922 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11924 { &hf_ieee1905_cac_status_rpt_non_occ_channel
,
11926 "ieee1905.cac_status_report.non_occupied_channel.channel",
11927 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11929 { &hf_ieee1905_cac_status_rpt_non_occ_seconds
,
11930 { "Seconds remaining",
11931 "ieee1905.cac_status_report.non_occupied_channel.second_remaining",
11932 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11934 { &hf_ieee1905_cac_status_rpt_active_cac_cnt
,
11935 { "Active CAC Channel Count",
11936 "ieee1905.cac_status_report.active_cac_channel_count",
11937 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11939 { &hf_ieee1905_cac_status_rpt_active_cac_op_class
,
11940 { "Operating Class",
11941 "ieee1905.cac_status_report.active_cac.operating_class",
11942 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11944 { &hf_ieee1905_cac_status_rpt_active_cac_channel
,
11946 "ieee1905.cac_status_report.active_cac.channel",
11947 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11949 { &hf_ieee1905_cac_status_rpt_active_cac_seconds
,
11950 { "Seconds remaining",
11951 "ieee1905.cac_status_report.active_cac.seconds_remaining",
11952 FT_UINT24
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11954 { &hf_ieee1905_cac_capa_country_code
,
11955 { "Country Code", "ieee1905.cac_capabilities.country_code",
11956 FT_STRING
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
11958 { &hf_ieee1905_cac_capa_radio_cnt
,
11959 { "Number of radios", "ieee1905.cac_capabilities.number_of_radios",
11960 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11962 { &hf_ieee1905_cac_capabilities_radio_id
,
11963 { "Radio ID", "ieee1905.cac_capabilities.radio_id",
11964 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
11966 { &hf_ieee1905_cac_capabilities_types_num
,
11967 { "Number of types", "ieee1905.cac_capabilities.number_of_types",
11968 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11970 { &hf_ieee1905_cac_capabilities_cac_mode
,
11971 { "CAC mode supported",
11972 "ieee1905.cac_capabilities.cac_mode_supported",
11973 FT_UINT8
, BASE_HEX
| BASE_RANGE_STRING
,
11974 RVALS(cac_mode_supported_rvals
), 0, NULL
, HFILL
}},
11976 { &hf_ieee1905_cac_capabilities_cac_seconds
,
11977 { "Seconds required to complete CAC",
11978 "ieee1905.cac_capabilities.seconds_required_to_complete_cac",
11979 FT_UINT24
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11981 { &hf_ieee1905_cac_capabilities_op_class_num
,
11982 { "Operating Class number",
11983 "ieee1905.cac_capabilities.operating_class_number",
11984 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11986 { &hf_ieee1905_cac_capabilities_op_class
,
11987 { "Operating Class", "ieee1905.cac_capabilities.operating_class",
11988 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11990 { &hf_ieee1905_cac_capabilities_channel_cnt
,
11991 { "Number of channels",
11992 "ieee1905.cac_capabilities.number_of_channels",
11993 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11995 { &hf_ieee1905_cac_capabillity_channel
,
11996 { "Channel", "ieee1905.cac_capabilities.channel",
11997 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
11999 { &hf_ieee1905_multi_ap_version
,
12000 { "Multi-AP Profile", "ieee1905.multi_ap_version",
12001 FT_UINT8
, BASE_DEC
| BASE_RANGE_STRING
,
12002 RVALS(multi_ap_version_rvals
), 0x0, NULL
, HFILL
}},
12004 { &hf_ieee1905_max_total_serv_prio_rules
,
12005 { "Max Total Number Service Prioritization Rules",
12006 "ieee1905.r2_ap_capabilities.max_total_service_prio_rules",
12007 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12009 { &hf_ieee1905_r2_ap_capa_reserved
,
12010 { "Reserved", "ieee1905.r2_ap_capabilities.reserved",
12011 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12013 { &hf_ieee1905_r2_ap_capa_flags
,
12014 { "Flags", "ieee1905.r2_ap_capabilities.flags",
12015 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12017 { &hf_ieee1905_byte_counter_units
,
12018 { "Byte Counter Units", "ieee1905.r2_ap_capabilities.byte_counter_units",
12019 FT_UINT8
, BASE_DEC
, VALS(byte_counter_units_vals
), 0xC0, NULL
, HFILL
}},
12021 { &hf_ieee1905_ctag_service_prio_flag
,
12022 { "802.1Q C-TAG Service Prioritization", "ieee1905.r2_ap_capabilities.ctag_service_prioritization",
12023 FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x20, NULL
, HFILL
}},
12025 { &hf_ieee1905_dpp_onboarding_flag
,
12026 { "DPP Onboarding procedure", "ieee1905.r2_ap_capabilities.dpp_onboarding" ,
12027 FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x10, NULL
, HFILL
}},
12029 { &hf_ieee1905_traffic_separation_flag
,
12030 { "802.1Q C-TAG Traffic Separation", "ieee1905.r2_ap_capabilities.traffic_separation" ,
12031 FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x08, NULL
, HFILL
}},
12033 { &hf_ieee1905_r2_ap_capa_flags_reserved
,
12034 { "Reserved", "ieee1905.r2_ap_capabilities.reserved",
12035 FT_UINT8
, BASE_HEX
, NULL
, 0x07, NULL
, HFILL
}},
12037 { &hf_ieee1905_max_vid_count
,
12038 { "Max Total Number of VIDs", "ieee1905.r2_ap_capabilities.max_total_number_of_vids",
12039 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12041 { &hf_ieee1905_default_802_1q_settings_primary_vlan
,
12042 { "Primary VLAN ID", "ieee1905.service_prioritization_rule.primary_vlan_id",
12043 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12045 { &hf_ieee1905_default_802_1q_settings_flags
,
12046 { "Flags", "ieee1905.service_prioritization_rule.flags",
12047 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12049 { &hf_ieee1905_default_802_1q_settings_default_pcp
,
12050 { "Primary PCP", "ieee1905.service_prioritization_rule.flags.primary_pcp",
12051 FT_UINT8
, BASE_HEX
, NULL
, 0xE0, NULL
, HFILL
}},
12053 { &hf_ieee1905_default_802_1q_settings_reserved
,
12054 { "Reserved", "ieee1905.service_prioritization_rule.flags.reserved",
12055 FT_UINT8
, BASE_HEX
, NULL
, 0x1F, NULL
, HFILL
}},
12057 { &hf_ieee1905_ap_radio_advanced_capa_radio_id
,
12058 { "Radio Unique ID", "ieee1905.ap_advanced_capabilities.radio_id",
12059 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12061 { &hf_ieee1905_radio_advanced_capa_flags
,
12062 { "AP Radio Advanced Capabilities Flags",
12063 "ieee1905.ap_advanced_capabilities.flags",
12064 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12066 { &hf_ieee1905_traffic_separation_policy_num_ssids
,
12067 { "Number of SSIDs", "ieee1905.traffic_separation_policy.num_ssids",
12068 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12070 { &hf_ieee1905_traffic_separation_policy_ssid_len
,
12071 { "SSID Length", "ieee1905.traffic_separation_policy.ssid_length",
12072 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12074 { &hf_ieee1905_traffic_separation_policy_ssid
,
12075 { "SSID", "ieee1905.traffic_separation_policy.ssid",
12076 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12078 { &hf_ieee1905_traffic_separation_policy_vlanid
,
12079 { "VLAN ID", "ieee1905.traffic_separation_policy.vlan_id",
12080 FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12082 { &hf_ieee1905_bss_config_report_radio_count
,
12083 { "Radio Count", "ieee1905.bss_config_report.radio_count",
12084 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12086 { &hf_ieee1905_bss_config_report_radio_id
,
12087 { "Radio ID", "ieee1905.bss_config_report.radio_id",
12088 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12090 { &hf_ieee1905_bss_config_report_flags
,
12091 { "Report Flags", "ieee1905.bss_config_report.report_flags",
12092 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12094 { &hf_ieee1905_bss_config_report_backhaul_bss
,
12095 { "Backhaul BSS", "ieee1905.bss_config_report.backhaul_bss",
12096 FT_BOOLEAN
, 8, TFS(&tfs_not_inuse_inuse
), 0x80, NULL
, HFILL
}},
12098 { &hf_ieee1905_bss_config_report_fronthaul_bss
,
12099 { "Fronthaul BSS", "ieee1905.bss_config_report.fronthaul_bss",
12100 FT_BOOLEAN
, 8, TFS(&tfs_not_inuse_inuse
), 0x40, NULL
, HFILL
}},
12102 { &hf_ieee1905_bss_config_report_r1_disallowed_status
,
12103 { "R1 Disallowed Status",
12104 "ieee1905.bss_config_report.r1_disallowed_status",
12105 FT_BOOLEAN
, 8, TFS(&tfs_disallowed_allowed
), 0x20, NULL
, HFILL
}},
12107 { &hf_ieee1905_bss_config_report_r2_disallowed_status
,
12108 { "R2 Disallowed Status",
12109 "ieee1905.bss_config_report.r2_disallowed_status",
12110 FT_BOOLEAN
, 8, TFS(&tfs_disallowed_allowed
), 0x10, NULL
, HFILL
}},
12112 { &hf_ieee1905_bss_config_report_multiple_bssid_set
,
12113 { "Multiple BSSID Set",
12114 "ieee1905.bss_config_report.multiple_bssid_set",
12115 FT_BOOLEAN
, 8, TFS(&tfs_configured_not_configured
),
12116 0x08, NULL
, HFILL
}},
12118 { &hf_ieee1905_bss_config_report_transmitted_bssid
,
12119 { "Transmitted BSSID",
12120 "ieee1905.bss_config_report.transmitted_bssid",
12121 FT_BOOLEAN
, 8, TFS(&tfs_transmitted_non_transmitted
),
12122 0x04, NULL
, HFILL
}},
12124 { &hf_ieee1905_bss_config_report_reserved
,
12125 { "Reserved", "ieee1905.bss_config_report.reserved",
12126 FT_UINT8
, BASE_HEX
, NULL
, 0x03, NULL
, HFILL
}},
12128 { &hf_ieee1905_bss_config_report_res
,
12129 { "Reserved", "ieee1905.bss_config_report.reserved",
12130 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12132 { &hf_ieee1905_bss_config_report_bss_cnt
,
12133 { "BSS Count", "ieee1905.bss_config_report.bss_count",
12134 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12136 { &hf_ieee1902_bss_config_report_mac
,
12137 { "Local Interface MAC addr",
12138 "ieee1905.bss_config_report.mac_addr",
12139 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12141 { &hf_ieee1902_bss_config_report_ssid_len
,
12142 { "SSID Length", "ieee1905.bss_config_report.ssid_length",
12143 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12145 { &hf_ieee1905_bss_config_report_ssid
,
12146 { "SSID", "ieee1905.bss_config_report.ssid",
12147 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12149 { &hf_ieee1905_bssid_tlv_bssid
,
12150 { "BSSID", "ieee1905.bssid",
12151 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12153 { &hf_ieee1905_service_prio_rule_id
,
12154 { "Rule Identifier", "ieee1905.service_prio_rule.id",
12155 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12157 { &hf_ieee1905_service_prio_rule_flags
,
12158 { "Flags", "ieee1905.service_prio_rule.flags",
12159 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12161 { &hf_ieee1905_service_prio_rule_add_remove_filter_bit
,
12162 { "Add-Remove Filter", "ieee1905.service_prio_rule.flags.add_remove",
12163 FT_BOOLEAN
, 8, TFS(&tfs_add_remove
), 0x80, NULL
, HFILL
}},
12165 { &hf_ieee1905_service_prio_rule_flags_reserved
,
12166 { "Reserved", "ieee1905.service_prio_rule.flags.reserved",
12167 FT_UINT8
, BASE_HEX
, NULL
, 0x7F, NULL
, HFILL
}},
12170 { &hf_ieee1905_service_prio_rule_precedence
,
12171 { "Rule Precedence", "ieee1905.service_prio_rule.precedence",
12172 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12174 { &hf_ieee1905_service_prio_rule_output
,
12175 { "Rule Output", "ieee1905.service_prio_rule.output",
12176 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12178 { &hf_ieee1905_service_prio_match_flags
,
12179 { "Match flags", "ieee1905.service_prio_rule.match_flags",
12180 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12182 { &hf_ieee1905_service_prio_rule_match_always
,
12183 { "Match Always", "ieee1905.service_prio_rule.match.match_always",
12184 FT_BOOLEAN
, 8, NULL
, 0x80, NULL
, HFILL
}},
12186 { &hf_ieee1905_service_prio_rule_match_reserved
,
12187 { "Reserved", "ieee1905.service_prio_rule.match.reserved",
12188 FT_UINT8
, BASE_HEX
, NULL
, 0x40, NULL
, HFILL
}},
12190 { &hf_ieee1905_service_prio_rule_match_up_in_qos
,
12191 { "Match Up in 802.11 QoS Control",
12192 "ieee1905.service_prio_rule.match.match_up_802_11_qos",
12193 FT_BOOLEAN
, 8, NULL
, 0x20, NULL
, HFILL
}},
12195 { &hf_ieee1905_service_prio_rule_match_up_control_match
,
12196 { "UP in 802.11 QoS Control Match Sense Flag",
12197 "ieee1905.service_prio_rule.match.up_in_802_11_qos_control",
12198 FT_BOOLEAN
, 8, NULL
, 0x10, NULL
, HFILL
}},
12200 { &hf_ieee1905_service_prio_rule_match_source_mac
,
12201 { "Match Source MAC Address",
12202 "ieee1905.service_prio_rule.match.match_source_mac",
12203 FT_BOOLEAN
, 8, NULL
, 0x08, NULL
, HFILL
}},
12205 { &hf_ieee1905_service_prio_rule_match_source_mac_sense
,
12206 { "Source MAC Address Match Sense",
12207 "ieee1905.service_prio_rule.match.source_mac_address_match_sense",
12208 FT_BOOLEAN
, 8, NULL
, 0x04, NULL
, HFILL
}},
12210 { &hf_ieee1905_service_prio_rule_match_dest_mac
,
12211 { "Match Destination MAC address",
12212 "ieee1905.service_prio_rule.match.match_destination_mac",
12213 FT_BOOLEAN
, 8, NULL
, 0x02, NULL
, HFILL
}},
12215 { &hf_ieee1905_service_prio_rule_match_dest_mac_sense
,
12216 { "Destination MAC Address Match Sense",
12217 "ieee1905.service_prio_rule.match.destination_mac_address_match_sense",
12218 FT_BOOLEAN
, 8, NULL
, 0x01, NULL
, HFILL
}},
12220 { &hf_ieee1905_service_prio_rule_up_control
,
12221 { "UP in 802.11 QoS Control",
12222 "ieee1905.service_prio_rule.up_in_802_11_qos_control",
12223 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12225 { &hf_ieee1905_service_prio_rule_source_mac
,
12226 { "Source MAC Address", "ieee1905.service_prio_rule.source_mac_addr",
12227 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12229 { &hf_ieee1905_service_prio_rule_dest_mac
,
12230 { "Destination MAC Address", "ieee1905.service_prio_rule.destination_mac_addr",
12231 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12233 { &hf_ieee1905_dscp_mapping_table_val
,
12234 { "PCP Value", "ieee1905.dscp_mapping_table.pcp_value",
12235 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12237 { &hf_ieee1905_r2_error_reason_code
,
12238 { "Reason Code", "ieee1905.profile_2_error.reason_code",
12239 FT_UINT8
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(r2_error_code_rvals
),
12242 { &hf_ieee1905_r2_error_bssid
,
12243 { "BSSID", "ieee1905.profile_2_error.bssid",
12244 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12246 { &hf_ieee1905_ap_radio_advance_capa_backhaul_bss_traffic_sep
,
12247 { "Traffic Separation on combined fronthaul and R1-only backhaul",
12248 "ieee1905.ap_advanced_capabilities.traffic_sep_on_combined_fronthaul_and_r1_only_backhaul",
12249 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
12250 0x80, NULL
, HFILL
}},
12252 { &hf_ieee1905_ap_radio_advance_capa_combined_r1_r2_backhaul
,
12253 { "Traffic Separation on combined R1 and R2 and above backhaul",
12254 "ieee1905.ap_advanced_capabilities.traffic_sep_on_combined_r1_and_r2_and_backhaul",
12255 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
),
12256 0x40, NULL
, HFILL
}},
12258 { &hf_ieee1905_ap_radio_advance_capa_reserved
,
12259 { "Reserved", "ieee1905.ap_advanced_capabilities.reserved",
12260 FT_UINT8
, BASE_HEX
, NULL
, 0x3F, NULL
, HFILL
}},
12262 { &hf_ieee1905_assoc_status_notif_num_bssid
,
12263 { "Number of BSSIDs",
12264 "ieee1905.association_status_notification.num_bssids",
12265 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12267 { &hf_ieee1905_assoc_status_notif_bssid
,
12268 { "BSSID of operated BSS",
12269 "ieee1905.associated_status_notification.bssid_of_operated_bss",
12270 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12272 { &hf_ieee1905_assoc_status_notif_status
,
12273 { "Status", "ieee1905.associated_status_notification.status",
12274 FT_UINT8
, BASE_DEC
| BASE_RANGE_STRING
,
12275 RVALS(assoc_status_notif_status_rvals
), 0x0, NULL
, HFILL
}},
12277 { &hf_ieee1905_source_info_mac_addr
,
12278 { "Tunneled Source MAC Address",
12279 "ieee1905.source_info.tunneled_source_mac_address",
12280 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12282 { &hf_ieee1905_tunneled_message_type
,
12283 { "Tunneled protocol payload type",
12284 "ieee1905.tunneled_message_type.tunneled_payload_type",
12285 FT_UINT8
, BASE_DEC
| BASE_RANGE_STRING
,
12286 RVALS(tunneled_message_type_rvals
), 0x0, NULL
, HFILL
}},
12288 { &hf_ieee1905_tunneled_data
,
12289 { "Tunneled protocol payload",
12290 "ieee1905.tunneled.tunneled_protocol_payload",
12291 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12293 { &hf_ieee1905_status_code_status
,
12294 { "Status Code", "ieee1905.status_code.status_code",
12295 FT_UINT16
, BASE_HEX
|BASE_EXT_STRING
, &ieee80211_status_code_ext
, 0,
12298 { &hf_ieee1905_disassociation_reason_code
,
12299 { "Reason Code", "ieee1905.disassociation_reason_code.reason_code",
12300 FT_UINT16
, BASE_HEX
|BASE_EXT_STRING
, &ieee80211_reason_code_ext
, 0,
12303 { &hf_ieee1905_backhaul_sta_radio_id
,
12304 { "Radio ID", "ieee1905.backhaul_sta_radio_capabilities.radio_id",
12305 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12307 { &hf_ieee1905_backhaul_sta_radio_capabilities
,
12308 { "Flags", "ieee1905.backhaul_sta_radio_capabilities.flags",
12309 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12311 { &hf_ieee1905_backhaul_sta_radio_capa_mac_included
,
12312 { "MAC address included",
12313 "ieee1905.backhaul_sta_radio_capabilities.mac_address_included",
12314 FT_BOOLEAN
, 8, NULL
, 0x80, NULL
, HFILL
}},
12316 { &hf_ieee1905_backhaul_sta_radio_capa_reserved
,
12317 { "Reserved", "ieee1905.backhaul_sta_radio_capabilities.reserved",
12318 FT_UINT8
, BASE_HEX
, NULL
, 0x7F, NULL
, HFILL
}},
12320 { &hf_ieee1905_backhaul_sta_addr
,
12321 { "Backhaul STA MAC address",
12322 "ieee1905.backhaul_sta_radio_capabilities.backhaul_sta_mac_address",
12323 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12325 { &hf_ieee1905_akm_backhaul_suite_oui
,
12326 { "Backhaul Suite OUI",
12327 "ieee1905.akm_suite_capabilities.backhaul.backhaul_akm_suite_oui",
12328 FT_UINT24
, BASE_OUI
, NULL
, 0, NULL
, HFILL
}},
12330 { &hf_ieee1905_akm_backhaul_suite_type
,
12331 { "Backhaul AKM Suite type",
12332 "ieee1905.akm_suite_capabilities.backhaul_akm_suite_type",
12333 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12335 { &hf_ieee1905_backhaul_akm_suite_capa_count
,
12336 { "Backhaul AKM Suite count",
12337 "ieee1905.akm_suite_capabilities.backhaul_akm_suite_count",
12338 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12340 { &hf_ieee1905_akm_fronthaul_suite_oui
,
12341 { "Fronthaul Suite OUI",
12342 "ieee1905.akm_suite_capabilities.backhaul.fronthaul_akm_suite_oui",
12343 FT_UINT24
, BASE_OUI
, NULL
, 0, NULL
, HFILL
}},
12345 { &hf_ieee1905_akm_fronthaul_suite_type
,
12346 { "Fronthaul AKM Suite type",
12347 "ieee1905.akm_suite_capabilities.fronthaul_akm_suite_type",
12348 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12350 { &hf_ieee1905_fronthaul_akm_suite_capa_count
,
12351 { "Fronthaul AKM Suite count",
12352 "ieee1905.akm_suite_capabilities.fronthaul_akm_suite_count",
12353 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12355 { &hf_ieee1905_encap_dpp_flags
,
12356 { "Flags", "ieee1905.1905_encap_dpp.flags",
12357 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12359 { &hf_ieee1905_dpp_encap_enrollee_mac_present
,
12360 { "Enrollee Mac Address Present",
12361 "ieee1905.1905_encap_dpp.flags.enrollee_mac_address_present",
12362 FT_BOOLEAN
, 8, NULL
, 0x80, NULL
, HFILL
}},
12364 { &hf_ieee1905_dpp_encap_reserved
,
12366 "ieee1905.1905_encap_dpp.flags.reserved",
12367 FT_BOOLEAN
, 8, NULL
, 0x40, NULL
, HFILL
}},
12369 { &hf_ieee1905_dpp_encap_frame_type_flag
,
12370 { "DPP Frame Indicator",
12371 "ieee1905.1905_encap_dpp.flags.dpp_frame_indicator",
12372 FT_BOOLEAN
, 8, TFS(&tfs_dpp_frame_indicator
), 0x20, NULL
, HFILL
}},
12374 { &hf_ieee1905_dpp_encap_reserved2
,
12375 { "Reserved", "ieee1905.1905_encap_dpp.flags.reserved2",
12376 FT_UINT8
, BASE_HEX
, NULL
, 0x1F, NULL
, HFILL
}},
12378 { &hf_ieee1905_encap_dpp_sta_mac
,
12379 { "Destination STA MAC address",
12380 "ieee1905.1905_encap_dpp.destination_sta_mac_address",
12381 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12383 { &hf_ieee1905_dpp_encap_frame_type
,
12384 { "Frame Type", "ieee1905.1905_encap_dpp.frame_type",
12385 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12387 { &hf_ieee1905_dpp_encap_frame_length
,
12388 { "Frame Length", "ieee1905.1905_encap_dpp.frame_length",
12389 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12391 { &hf_ieee1905_dpp_encap_dpp_oui
,
12392 { "OUI", "ieee1905.1905_encap_dpp.oui",
12393 FT_UINT24
, BASE_OUI
, NULL
, 0, NULL
, HFILL
}},
12395 { &hf_ieee1905_dpp_encap_public_action
,
12396 { "Public Action", "ieee1905.1905_encap_dpp.public_action",
12397 FT_UINT8
, BASE_HEX
|BASE_EXT_STRING
, &ff_pa_action_codes_ext
, 0,
12400 { &hf_ieee1905_dpp_encap_dpp_subtype
,
12401 { "WFA Subtype", "ieee1905.1905_encap_dpp.subtype",
12402 FT_UINT8
, BASE_DEC
, VALS(wfa_subtype_vals
), 0,
12405 { &hf_ieee1905_dpp_bootstrapping_uri_radio_id
,
12406 { "Radio ID", "ieee1905.dpp_bootstrapping_uri_notification.radio_id",
12407 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12409 { &hf_ieee1905_dpp_bootstrapping_uri_local_mac_addr
,
12410 { "MAC Address of Local Interface",
12411 "ieee1905.dpp_bootstrapping_uri_notification.mac_addr_local_intf",
12412 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12414 { &hf_ieee1905_dpp_bootstrapping_uri_bsta_mac_addr
,
12415 { "MAC Address of bSTA",
12416 "ieee1905.dpp_bootstrapping_uri_notification.mac_addr_bsta",
12417 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12419 { &hf_ieee1905_dpp_bootstrapping_uri_received
,
12420 { "DPP Bootstrapping URI",
12421 "ieee1905.dpp_bootstrapping_uri_notification.dpp_bootstrapping_uri",
12422 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12424 { &hf_ieee1905_dpp_advertise_cce_flag
,
12425 { "Advertise CCE", "ieee1905.dpp_advertise_cce.flag",
12426 FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x01, NULL
, HFILL
}},
12428 { &hf_ieee1905_dpp_chirp_value_flags
,
12429 { "Chirp Value Flags", "ieee1905.dpp_chirp_value.flags",
12430 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12432 { &hf_ieee1905_dpp_chirp_enrollee_mac_addr_present
,
12433 { "Enrollee MAC Address Present",
12434 "ieee1905.dpp_chirp_value.flags.enrollee_mac_addr_present",
12435 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x80, NULL
, HFILL
}},
12437 { &hf_ieee1905_dpp_chirp_hash_validity
,
12438 { "Hash Validity Bit", "ieee1905.dpp_chirp_value.flags.hash_validity_bit",
12439 FT_BOOLEAN
, 8, TFS(&tfs_chirp_hash_validity_bit
),
12440 0x40, NULL
, HFILL
}},
12442 { &hf_ieee1905_dpp_chirp_reserved
,
12443 { "Reserved", "ieee1905.dpp_chirp_value.flags.reserved",
12444 FT_UINT8
, BASE_HEX
, NULL
, 0x3F, NULL
, HFILL
}},
12446 { &hf_ieee1905_dpp_chirp_enrollee_mac_addr
,
12447 { "Destination STA MAC Address",
12448 "ieee1905.dpp_chirp_value.dest_mac_addr",
12449 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12451 { &hf_ieee1905_dpp_chirp_value_hash_length
,
12452 { "Hash Length", "ieee1905.dpp_chirp_value.hash_length",
12453 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12455 { &hf_ieee1905_dpp_chirp_value_hash_value
,
12456 { "Hash Value", "ieee1905.dpp_chirp_value.hash_value",
12457 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12459 { &hf_ieee1905_dev_inventory_lsn
,
12460 { "Serial Number Length", "ieee1905.device_inventory.lsn",
12461 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12463 { &hf_ieee1905_dev_inventory_serial
,
12464 { "Serial Number", "ieee1905.device_inventory.serial_number",
12465 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12467 { &hf_ieee1905_dev_inventory_lsv
,
12468 { "Software Version Length", "ieee1905.device_inventory.lsv",
12469 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12471 { &hf_ieee1905_dev_inventory_sw_vers
,
12472 { "Software Version", "ieee1905.device_inventory.software_version",
12473 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12475 { &hf_ieee1905_dev_inventory_lee
,
12476 { "Execution Env Length", "ieee1905.device_inventory.lee",
12477 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12479 { &hf_ieee1905_dev_inventory_exec_env
,
12480 { "Execution Env", "ieee1905.device_inventory.execution_env",
12481 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12483 { &hf_ieee1905_dev_inventory_num_radios
,
12484 { "Number of Radios", "ieee1905.device_inventory.number_of_radios",
12485 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12487 { &hf_ieee1905_dev_inventory_radio_id
,
12488 { "Radio ID", "ieee1905.device_inventory.radio_id",
12489 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12491 { &hf_ieee1905_dev_inventory_lcv
,
12492 { "Chipset Vendor Length", "ieee1905.device_inventory.lcv",
12493 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
12495 { &hf_ieee1905_dev_inventory_chp_ven
,
12496 { "Chipset Vendor", "ieee1905.device_inventory.chipset_vendor",
12497 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12499 { &hf_ieee1905_r2_steering_req_src_bssid
,
12500 { "Src BSSID", "ieee1905.r2_steering_request.src_bssid",
12501 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12503 { &hf_ieee1905_r2_steering_req_flags
,
12504 { "Flags", "ieee1905.r2_steering_request.flags",
12505 FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
12507 { &hf_ieee1905_r2_steering_request_mode_flag
,
12508 { "Request Mode", "ieee1905.r2_steering_request.flags.request_mode",
12509 FT_BOOLEAN
, 8, TFS(&tfs_ieee1905_steering_request_mode_flag
),
12510 0x80, NULL
, HFILL
}},
12512 { &hf_ieee1905_r2_btm_disassoc_imminent_flag
,
12513 { "BTM Disassociation Imminent",
12514 "ieee1905.r2_steering_request.flags.btm_disassociation_imminent",
12515 FT_BOOLEAN
, 8, NULL
, 0x40, NULL
, HFILL
}},
12517 { &hf_ieee1905_r2_btm_abridged_flag
,
12518 { "BTM Abridged", "ieee1905.r2_steering_request.flags.btm_abridged",
12519 FT_BOOLEAN
, 8, NULL
, 0x20, NULL
, HFILL
}},
12521 { &hf_ieee1905_r2_steering_req_reserved
,
12522 { "Reserved", "ieee1905.r2_steering_request.flags.reserved",
12523 FT_UINT8
, BASE_HEX
, NULL
, 0x1F, NULL
, HFILL
}},
12525 { &hf_ieee1905_r2_steering_op_window
,
12526 { "Steering Opportunity window",
12527 "ieee1905.r2_steering_request.steering_opportunity_window",
12528 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12530 { &hf_ieee1905_r2_steering_btm_dissasoc_tmr
,
12531 { "BTM Disassociation Timer",
12532 "ieee1905.r2_steering_request.btm_disassociation_timer",
12533 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12535 { &hf_ieee1905_r2_steering_sta_count
,
12536 { "STA List Count", "ieee1905.r2_steering_request.sta_list_count",
12537 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12539 { &hf_ieee1905_r2_steering_sta_mac
,
12540 { "AMB capable STA MAC",
12541 "ieee1905.r2_steering_request.amb_capable_sta_mac",
12542 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12544 { &hf_ieee1905_r2_steering_target_count
,
12545 { "Target BSSID Count",
12546 "ieee1905.r2_steering_request.target_bssid_count",
12547 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12549 { &hf_ieee1905_r2_steering_target_bssid
,
12550 { "Target BSSID", "ieee1905.r2_steering_request.target_bssid",
12551 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12553 { &hf_ieee1905_r2_steering_target_op_class
,
12554 { "Target Operating Class",
12555 "ieee1905.r2_steering_request.target_operating_class",
12556 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12558 { &hf_ieee1905_r2_steering_target_channel
,
12559 { "Target Channel",
12560 "ieee1905.r2_steering_request.target_channel",
12561 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12563 { &hf_ieee1905_r2_steering_reason
,
12564 { "Reason code", "ieee1905.r2_steering_request.reason_code",
12565 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12567 { &hf_ieee1905_metric_collection_interval
,
12568 { "Collection Interval", "ieee1905.metric_collection_interval.interval",
12569 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12571 { &hf_ieee1905_max_reporting_rate
,
12572 { "Maximum Reporting Rate", "ieee1905.unsuccessful_assoc.max_report_rate",
12573 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12575 { &hf_ieee1905_bss_configuration_request
,
12576 { "Configuration Request Object",
12577 "ieee1905.bss_configuration_request.configuration_request_object",
12578 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12580 { &hf_ieee1905_bss_configuration_response
,
12581 { "Configuration Response Object",
12582 "ieee1905.bss_configuration_response.configuration_response_object",
12583 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12585 { &hf_ieee1905_dpp_message_public_action
,
12586 { "Public Action", "ieee1905.dpp_message.public_action",
12587 FT_UINT8
, BASE_HEX
|BASE_EXT_STRING
, &ff_pa_action_codes_ext
, 0,
12590 { &hf_ieee1905_spatial_reuse_req_radio_id
,
12591 { "RUID", "ieee1905.spatial_reuse_req.ruid",
12592 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12594 { &hf_ieee1905_spatial_reuse_color_flags
,
12595 { "Spatial Reuse Color Flags",
12596 "ieee1905.spatial_reuse_req.color_flags",
12597 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12599 { &hf_ieee1905_spatial_reuse_reserved
,
12600 { "Reserved", "ieee1905.spatial_reuse_req.reserved1",
12601 FT_UINT8
, BASE_HEX
, NULL
, 0xC0, NULL
, HFILL
}},
12603 { &hf_ieee1905_spatial_reuse_bss_color
,
12604 { "BSS Color", "ieee1905.spatial_reuse_req.bss_color",
12605 FT_UINT8
, BASE_HEX
, NULL
, 0x3F, NULL
, HFILL
}},
12607 { &hf_ieee1905_spatial_reuse_hesiga_flags
,
12608 { "Spatial Reuse Misc Flags", "ieee1905.spatial_reuse_req.misc_flags",
12609 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12611 { &hf_ieee1905_spatial_reuse_reserved2
,
12612 { "Reserved", "ieee1905.spatial_reuse_req.reserved2",
12613 FT_UINT8
, BASE_HEX
, NULL
, 0xE0, NULL
, HFILL
}},
12615 { &hf_ieee1905_spatial_reuse_hesiga_value15_allowed
,
12616 { "HESIGA Spatial reuse value15 allowed",
12617 "ieee1905.spatial_reuse_req.hesiga_spatial_reuse_value15_allowed",
12618 FT_BOOLEAN
, 8, NULL
, 0x10, NULL
, HFILL
}},
12620 { &hf_ieee1905_spatial_reuse_srg_info_valid
,
12621 { "SRG Information Valid",
12622 "ieee1905.spatial_reuse_req.srg_information_valid",
12623 FT_BOOLEAN
, 8, NULL
, 0x08, NULL
, HFILL
}},
12625 { &hf_ieee1905_spatial_reuse_non_srg_offset_valid
,
12626 { "Non-SRG Offset Valid",
12627 "ieee1905.spatial_reuse_req.non_srg_offset_valid",
12628 FT_BOOLEAN
, 8, NULL
, 0x04, NULL
, HFILL
}},
12630 { &hf_ieee1905_spatial_reuse_reserved3
,
12631 { "Reserved", "ieee1905.spatial_reuse_req.reserved3",
12632 FT_UINT8
, BASE_HEX
, NULL
, 0x02, NULL
, HFILL
}},
12634 { &hf_ieee1905_spatial_reuse_psr_disallowed
,
12635 { "PSR Disallowed", "ieee1905.spatial_reuse_req.psr_disallowed",
12636 FT_BOOLEAN
, 8, NULL
, 0x01, NULL
, HFILL
}},
12638 { &hf_ieee1905_spatial_reuse_non_srg_obsspd_max_offset
,
12639 { "Non-SRG OBSSPD Max Offset",
12640 "ieee1905.spatial_reuse_req.non_srg_obsspd_max_offset",
12641 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12643 { &hf_ieee1905_spatial_reuse_not_valid1
,
12645 "ieee1905.spatial_reuse_req.not_valid_1",
12646 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12648 { &hf_ieee1905_spatial_reuse_srg_obsspd_min_offset
,
12649 { "SRG OBSSPD Min Offset",
12650 "ieee1905.spatial_reuse_req.srg_obsspd_min_offset",
12651 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12653 { &hf_ieee1905_spatial_reuse_srg_obsspd_max_offset
,
12654 { "SRG OBSSPD Max Offset",
12655 "ieee1905.spatial_reuse_req.srg_obsspd_max_offset",
12656 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12658 { &hf_ieee1905_spatial_reuse_srg_bss_color_bitmap
,
12659 { "SRG BSS Color Bitmap",
12660 "ieee1905.spatial_reuse_req.srg_bss_color_bitmap",
12661 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12663 { &hf_ieee1905_spatial_reuse_srg_partial_bssid_bitmap
,
12664 { "SRG Partial BSSID Bitmap",
12665 "ieee1905.spatial_reuse_req.srg_partial_bssid_bitmap",
12666 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12668 { &hf_ieee1905_spatial_reuse_not_valid2
,
12670 "ieee1905.spatial_reuse_req.not_valid_2",
12671 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12673 { &hf_ieee1905_spatial_reuse_not_valid3
,
12675 "ieee1905.spatial_reuse_req.not_valid_3",
12676 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12678 { &hf_ieee1905_spatial_reuse_not_valid4
,
12680 "ieee1905.spatial_reuse_req.not_valid_4",
12681 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12683 { &hf_ieee1905_spatial_reuse_not_valid5
,
12685 "ieee1905.spatial_reuse_req.not_valid_5",
12686 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12688 { &hf_ieee1905_spatial_reuse_reserved4
,
12690 "ieee1905.spatial_reuse_req.reserved4",
12691 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12693 { &hf_ieee1905_spatial_reuse_rep_radio_id
,
12694 { "RUID", "ieee1905.spatial_reuse_rep.ruid",
12695 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12697 { &hf_ieee1905_spatial_reuse_rep_color_flags
,
12698 { "Spatial Reuse Color Flags",
12699 "ieee1905.spatial_reuse_rep.color_flags",
12700 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12702 { &hf_ieee1905_spatial_reuse_rep_reserved
,
12703 { "Reserved", "ieee1905.spatial_reuse_rep.reserved1",
12704 FT_UINT8
, BASE_HEX
, NULL
, 0x80, NULL
, HFILL
}},
12706 { &hf_ieee1905_spatial_reuse_rep_partial_bss_color
,
12707 { "Partial BSS Color", "ieee1905.spatial_reuse_rep.partial_bss_color",
12708 FT_UINT8
, BASE_HEX
, NULL
, 0x40, NULL
, HFILL
}},
12710 { &hf_ieee1905_spatial_reuse_rep_bss_color
,
12711 { "BSS Color", "ieee1905.spatial_reuse_rep.bss_color",
12712 FT_UINT8
, BASE_HEX
, NULL
, 0x3F, NULL
, HFILL
}},
12714 { &hf_ieee1905_spatial_reuse_rep_hesiga_flags
,
12715 { "Spatial Reuse Misc Flags", "ieee1905.spatial_reuse_rep.misc_flags",
12716 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12718 { &hf_ieee1905_spatial_reuse_rep_reserved2
,
12719 { "Reserved", "ieee1905.spatial_reuse_rep.reserved2",
12720 FT_UINT8
, BASE_HEX
, NULL
, 0xE0, NULL
, HFILL
}},
12722 { &hf_ieee1905_spatial_reuse_rep_hesiga_value15_allowed
,
12723 { "HESIGA Spatial reuse value15 allowed",
12724 "ieee1905.spatial_reuse_rep.hesiga_spatial_reuse_value15_allowed",
12725 FT_BOOLEAN
, 8, NULL
, 0x10, NULL
, HFILL
}},
12727 { &hf_ieee1905_spatial_reuse_rep_srg_info_valid
,
12728 { "SRG Information Valid",
12729 "ieee1905.spatial_reuse_rep.srg_information_valid",
12730 FT_BOOLEAN
, 8, NULL
, 0x08, NULL
, HFILL
}},
12732 { &hf_ieee1905_spatial_reuse_rep_non_srg_offset_valid
,
12733 { "Non-SRG Offset Valid",
12734 "ieee1905.spatial_reuse_rep.non_srg_offset_valid",
12735 FT_BOOLEAN
, 8, NULL
, 0x04, NULL
, HFILL
}},
12737 { &hf_ieee1905_spatial_reuse_rep_reserved3
,
12738 { "Reserved", "ieee1905.spatial_reuse_rep.reserved3",
12739 FT_UINT8
, BASE_HEX
, NULL
, 0x02, NULL
, HFILL
}},
12741 { &hf_ieee1905_spatial_reuse_rep_psr_disallowed
,
12742 { "PSR Disallowed", "ieee1905.spatial_reuse_rep.psr_disallowed",
12743 FT_BOOLEAN
, 8, NULL
, 0x01, NULL
, HFILL
}},
12745 { &hf_ieee1905_spatial_reuse_rep_non_srg_obsspd_max_offset
,
12746 { "Non-SRG OBSSPD Max Offset",
12747 "ieee1905.spatial_reuse_rep.non_srg_obsspd_max_offset",
12748 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12750 { &hf_ieee1905_spatial_reuse_rep_not_valid1
,
12752 "ieee1905.spatial_reuse_rep.not_valid_1",
12753 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12755 { &hf_ieee1905_spatial_reuse_rep_srg_obsspd_min_offset
,
12756 { "SRG OBSSPD Min Offset",
12757 "ieee1905.spatial_reuse_rep.srg_obsspd_min_offset",
12758 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12760 { &hf_ieee1905_spatial_reuse_rep_srg_obsspd_max_offset
,
12761 { "SRG OBSSPD Max Offset",
12762 "ieee1905.spatial_reuse_rep.srg_obsspd_max_offset",
12763 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12765 { &hf_ieee1905_spatial_reuse_rep_srg_bss_color_bitmap
,
12766 { "SRG BSS Color Bitmap",
12767 "ieee1905.spatial_reuse_rep.srg_bss_color_bitmap",
12768 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12770 { &hf_ieee1905_spatial_reuse_rep_srg_partial_bssid_bitmap
,
12771 { "SRG Partial BSSID Bitmap",
12772 "ieee1905.spatial_reuse_rep.srg_partial_bssid_bitmap",
12773 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12775 { &hf_ieee1905_spatial_reuse_rep_not_valid2
,
12777 "ieee1905.spatial_reuse_rep.not_valid_2",
12778 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12780 { &hf_ieee1905_spatial_reuse_rep_not_valid3
,
12782 "ieee1905.spatial_reuse_rep.not_valid_3",
12783 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12785 { &hf_ieee1905_spatial_reuse_rep_not_valid4
,
12787 "ieee1905.spatial_reuse_rep.not_valid_4",
12788 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12790 { &hf_ieee1905_spatial_reuse_rep_not_valid5
,
12792 "ieee1905.spatial_reuse_rep.not_valid_5",
12793 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12795 { &hf_ieee1905_spatial_reuse_rep_nbor_bss_color_bitmap
,
12796 { "Neighbor BSS Color In Use Bitmap",
12797 "ieee1905.spatial_reuse_rep.neighbor_bss_color_in_use_bitmap",
12798 FT_UINT64
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12800 { &hf_ieee1905_spatial_reuse_rep_reserved4
,
12801 { "Reserved", "ieee1905.spatial_reuse_rep.reserved4",
12802 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12804 { &hf_ieee1905_spatial_reuse_config_radio_id
,
12805 { "RUID", "ieee1905.spatial_reuse_config_response.ruid",
12806 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12808 { &hf_ieee1905_spatial_reuse_config_response
,
12810 "ieee1905.spatial_reuse_config_response.response_code",
12811 FT_UINT8
, BASE_DEC
|BASE_RANGE_STRING
,
12812 RVALS(spatial_reuse_response_rvals
), 0x0, NULL
, HFILL
}},
12814 { &hf_ieee1905_qos_mgmt_policy_mscs_disallowed
,
12815 { "Num STAs MSCS disallowed",
12816 "ieee1905.qos_mgmt_policy.num_stas_mscs_disallowed",
12817 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12819 { &hf_ieee1905_qos_mgmt_mscs_disallow_sta
,
12820 { "MAC Addr of MSCS Disallowed STA",
12821 "ieee1905.qos_mgmt_policy.mac_addr_mscs_disallowed_sta",
12822 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12824 { &hf_ieee1905_qos_mgmt_policy_scs_disallowed
,
12825 { "Num STAs SCS disallowed",
12826 "ieee1905.qos_mgmt_policy.num_stas_scs_disallowed",
12827 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12829 { &hf_ieee1905_qos_mgmt_scs_disallow_sta
,
12830 { "MAC Addr of SCS Disallowed STA",
12831 "ieee1905.qos_mgmt_policy.mac_addr_scs_disallowed_sta",
12832 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
12834 { &hf_ieee1905_qos_mgmt_desc_qmid
,
12835 { "QMID", "ieee1905.qos_mgmt_desc.qmid",
12836 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12838 { &hf_ieee1905_qos_mgmt_desc_bssid
,
12839 { "BSSID", "ieee1905.qos_mgmt_desc.bssid",
12840 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12842 { &hf_ieee1905_qos_mgmt_desc_client_mac
,
12843 { "Client MAC", "ieee1905.qos_mgmt_desc.client_mac",
12844 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12846 { &hf_ieee1905_controller_capa_flags
,
12847 { "Controller Capability Flags",
12848 "ieee1905.controller_capa.flags",
12849 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12851 { &hf_ieee1905_controller_capa_reserved
,
12853 "ieee1905.controller_capa.reserved",
12854 FT_BOOLEAN
, 8, NULL
, 0x3f, NULL
, HFILL
}},
12856 { &hf_ieee1905_controller_capa_early_ap_capa
,
12857 { "Early AP Capability",
12858 "ieee1905.controller_capa.early_ap_capa",
12859 FT_BOOLEAN
, 8, NULL
, 0x40, NULL
, HFILL
}},
12861 { &hf_ieee1905_controller_capa_kbmb_counter
,
12862 { "KiBMiB Counter",
12863 "ieee1905.controller_capa.kbmb_counter",
12864 FT_BOOLEAN
, 8, NULL
, 0x80, NULL
, HFILL
}},
12866 { &hf_ieee1905_wifi_7_agent_capabilities_max_num_mlds
,
12867 { "Max number of MLDs", "ieee1905.wifi_7_agent_capabilities.max_num_mlds",
12868 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12870 { &hf_ieee1905_wifi_7_agent_capabilities_flags
,
12871 { "Flags", "ieee1905.wifi_7_agent_capabilities.flags",
12872 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12874 { &hf_ieee1905_wifi_7_agent_capabilities_flags_ap_max_links
,
12875 { "AP Maximum links", "ieee1905.wifi_7_agent_capabilities.flags.max_links_ap",
12876 FT_UINT16
, BASE_HEX
, NULL
, 0xf000, NULL
, HFILL
}},
12878 { &hf_ieee1905_wifi_7_agent_capabilities_flags_sta_max_links
,
12879 { "STA Maximum links", "ieee1905.wifi_7_agent_capabilities.flags.max_links_sta",
12880 FT_UINT16
, BASE_HEX
, NULL
, 0x0f00, NULL
, HFILL
}},
12882 { &hf_ieee1905_wifi_7_agent_capabilities_flags_ttl_mapping_cap
,
12883 { "TID-to-Link mapping capability", "ieee1905.wifi_7_agent_capabilities.flags.tid_to_link_mapping_capability",
12884 FT_UINT16
, BASE_HEX
, VALS(tid_to_link_mapping_capability_vals
), 0x00c0, NULL
, HFILL
}},
12886 { &hf_ieee1905_wifi_7_agent_capabilities_flags_reserved
,
12887 { "Reserved", "ieee1905.wifi_7_agent_capabilities.flags.reserved",
12888 FT_UINT16
, BASE_HEX
, NULL
, 0x003f, NULL
, HFILL
}},
12890 { &hf_ieee1905_wifi_7_agent_capabilities_reserved
,
12891 { "Reserved", "ieee1905.wifi_7_agent_capabilities.reserved",
12892 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12894 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num
,
12895 { "Number of radios", "ieee1905.wifi_7_agent_capabilities.num_radios",
12896 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12898 { &hf_ieee1905_wifi_7_agent_capabilities_radio_id
,
12899 { "Radio Unique ID", "ieee1905.wifi_7_agent_capabilities.radio_id",
12900 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12902 { &hf_ieee1905_wifi_7_agent_capabilities_radio_reserved
,
12903 { "Reserved", "ieee1905.wifi_7_agent_capabilities.radio_reserved",
12904 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12906 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags
,
12907 { "Flags", "ieee1905.wifi_7_agent_capabilities.radio_flags",
12908 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12910 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_str_support
,
12911 { "AP STR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.ap_str_support",
12912 FT_UINT16
, BASE_DEC
, NULL
, 0x8000, NULL
, HFILL
}},
12914 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_nstr_support
,
12915 { "AP NSTR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.ap_nstr_support",
12916 FT_UINT16
, BASE_DEC
, NULL
, 0x4000, NULL
, HFILL
}},
12918 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_emlsr_support
,
12919 { "AP EMLSR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.ap_emlsr_support",
12920 FT_UINT16
, BASE_DEC
, NULL
, 0x2000, NULL
, HFILL
}},
12922 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_emlmr_support
,
12923 { "AP EMLMR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.ap_emlmr_support",
12924 FT_UINT16
, BASE_DEC
, NULL
, 0x1000, NULL
, HFILL
}},
12926 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_reserved1
,
12927 { "Reserved", "ieee1905.wifi_7_agent_capabilities.radio_flags.reserved1",
12928 FT_UINT16
, BASE_HEX
, NULL
, 0x0f00, NULL
, HFILL
}},
12930 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_str_support
,
12931 { "bSTA STR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.bsta_str_support",
12932 FT_UINT16
, BASE_DEC
, NULL
, 0x0080, NULL
, HFILL
}},
12934 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_nstr_support
,
12935 { "bSTA NSTR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.bsta_nstr_support",
12936 FT_UINT16
, BASE_DEC
, NULL
, 0x0040, NULL
, HFILL
}},
12938 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_emlsr_support
,
12939 { "bSTA EMLSR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags_bsta_emlsr_support",
12940 FT_UINT16
, BASE_DEC
, NULL
, 0x0020, NULL
, HFILL
}},
12942 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_emlmr_support
,
12943 { "bSTA EMLMR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.bsta_emlmr_support",
12944 FT_UINT16
, BASE_DEC
, NULL
, 0x0010, NULL
, HFILL
}},
12946 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_reserved2
,
12947 { "Reserved", "ieee1905.wifi_7_agent_capabilities.radio_flags.reserved2",
12948 FT_UINT16
, BASE_HEX
, NULL
, 0x000f, NULL
, HFILL
}},
12950 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_str_records
,
12951 { "Number of AP STR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_ap_str_records",
12952 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12954 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_nstr_records
,
12955 { "Number of AP NSTR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_ap_nstr_records",
12956 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12958 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_emlsr_records
,
12959 { "Number of AP EMLSR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_ap_emlsr_records",
12960 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12962 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_emlmr_records
,
12963 { "Number of AP EMLMR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_ap_emlmr_records",
12964 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12966 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_str_records
,
12967 { "Number of bSTA STR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_bsta_str_records",
12968 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12970 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_nstr_records
,
12971 { "Number of bSTA NSTR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_bsta_nstr_records",
12972 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12974 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_emlsr_records
,
12975 { "Number of bSTA EMLSR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_bsta_emlsr_records",
12976 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12978 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_emlmr_records
,
12979 { "Number of bSTA EMLMR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_bsta_emlmr_records",
12980 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
12982 { &hf_ieee1905_wifi_7_agent_capabilities_radio_record_id
,
12983 { "Radio Unique ID", "ieee1905.wifi_7_agent_capabilities.radio_record_id",
12984 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
12986 { &hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags
,
12987 { "Flags", "ieee1905.wifi_7_agent_capabilities.radio_record_flags",
12988 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
12990 { &hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags_freq_separation
,
12991 { "Freq separation", "ieee1905.wifi_7_agent_capabilities.radio_record_flags.freq_separation",
12992 FT_UINT8
, BASE_DEC
, NULL
, 0xf8, NULL
, HFILL
}},
12994 { &hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags_reserved
,
12995 { "Reserved", "ieee1905.wifi_7_agent_capabilities.radio_record_flags.reserved",
12996 FT_UINT8
, BASE_HEX
, NULL
, 0x07, NULL
, HFILL
}},
12998 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_num
,
12999 { "Number of AP MLDs", "ieee1905.agent_ap_mld_configuration.ap_mld_num",
13000 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
13002 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags
,
13003 { "Flags", "ieee1905.agent_ap_mld_configuration.flags",
13004 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13006 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags_ap_mld_mac_addr_valid
,
13007 { "AP MLD MAC Addr Valid", "ieee1905.agent_ap_mld_configuration.flags.ap_mld_mac_addr_valid",
13008 FT_UINT8
, BASE_DEC
, NULL
, 0x80, NULL
, HFILL
}},
13010 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags_reserved
,
13011 { "Reserved", "ieee1905.agent_ap_mld_configuration.flags.reserved",
13012 FT_UINT8
, BASE_DEC
, NULL
, 0x7f, NULL
, HFILL
}},
13014 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_ssid_len
,
13015 { "SSID Length", "ieee1905.agent_ap_mld_configuration.ssid_length",
13016 FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13018 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_ssid
,
13019 { "SSID", "ieee1905.agent_ap_mld_configuration.ssid",
13020 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
13022 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_mac_addr
,
13023 { "AP MLD MAC Addr", "ieee1905.agent_ap_mld_configuration.ap_mld_mac_addr",
13024 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13026 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2
,
13027 { "Flags2", "ieee1905.agent_ap_mld_configuration.flags2",
13028 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13030 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_str
,
13031 { "STR", "ieee1905.agent_ap_mld_configuration.flags2.str",
13032 FT_UINT8
, BASE_DEC
, NULL
, 0x80, NULL
, HFILL
}},
13034 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_nstr
,
13035 { "NSTR", "ieee1905.agent_ap_mld_configuration.flags2.nstr",
13036 FT_UINT8
, BASE_DEC
, NULL
, 0x40, NULL
, HFILL
}},
13038 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_emlsr
,
13039 { "EMLSR", "ieee1905.agent_ap_mld_configuration.flags2.emlsr",
13040 FT_UINT8
, BASE_DEC
, NULL
, 0x20, NULL
, HFILL
}},
13042 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_emlmr
,
13043 { "EMLMR", "ieee1905.agent_ap_mld_configuration.flags2.emlmr",
13044 FT_UINT8
, BASE_DEC
, NULL
, 0x10, NULL
, HFILL
}},
13046 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_reserved
,
13047 { "Reserved", "ieee1905.agent_ap_mld_configuration.flags2.reserved",
13048 FT_UINT8
, BASE_HEX
, NULL
, 0x0f, NULL
, HFILL
}},
13050 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_reserved
,
13051 { "Reserved", "ieee1905.agent_ap_mld_configuration.reserved",
13052 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13054 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_num
,
13055 { "Number of Affiliated APs", "ieee1905.agent_ap_mld_configuration.ap_mld_affiliated_ap_num",
13056 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
13058 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags
,
13059 { "Flags", "ieee1905.agent_ap_mld_configuration.affiliated_ap_flags",
13060 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13062 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_affiliated_ap_mac_addr_valid
,
13063 { "Affiliated AP MAC Addr Valid", "ieee1905.agent_ap_mld_configuration.affiliated_ap_flags.affiliated_ap_mac_addr_valid",
13064 FT_UINT8
, BASE_DEC
, NULL
, 0x80, NULL
, HFILL
}},
13066 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_link_id_valid
,
13067 { "Link ID Valid", "ieee1905.agent_ap_mld_configuration.affiliated_ap_flags.link_id_valid",
13068 FT_UINT8
, BASE_DEC
, NULL
, 0x40, NULL
, HFILL
}},
13070 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_reserved
,
13071 { "Reserved", "ieee1905.agent_ap_mld_configuration.affiliated_ap_flags.reserved",
13072 FT_UINT8
, BASE_HEX
, NULL
, 0x3f, NULL
, HFILL
}},
13074 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_radio_id
,
13075 { "Radio Unique ID", "ieee1905.agent_ap_mld_configuration.affiliated_ap_radio_id",
13076 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13078 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_mac_addr
,
13079 { "Affiliated AP MAC Addr", "ieee1905.agent_ap_mld_configuration.affiliated_ap_mac_addr",
13080 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13082 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_link_id
,
13083 { "Link ID", "ieee1905.agent_ap_mld_configuration.ap_mld_affiliated_ap_link_id",
13084 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
13086 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_reserved
,
13087 { "Reserved", "ieee1905.agent_ap_mld_configuration.ap_mld_affiliated_ap_reserved",
13088 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13090 { &hf_ieee1905_backhaul_sta_mld_configuration_flags
,
13091 { "Flags", "ieee1905.backhaul_sta_mld_configuration.flags",
13092 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13094 { &hf_ieee1905_backhaul_sta_mld_configuration_flags_bsta_mld_mac_addr_valid
,
13095 { "bSTA MLD MAC Addr Valid", "ieee1905.backhaul_sta_mld_configuration.flags.bsta_mld_mac_addr_valid",
13096 FT_UINT8
, BASE_DEC
, NULL
, 0x80, NULL
, HFILL
}},
13098 { &hf_ieee1905_backhaul_sta_mld_configuration_flags_ap_mld_mac_addr_valid
,
13099 { "AP MLD MAC Addr Valid", "ieee1905.backhaul_sta_mld_configuration.flags.ap_mld_mac_addr_valid",
13100 FT_UINT8
, BASE_DEC
, NULL
, 0x40, NULL
, HFILL
}},
13102 { &hf_ieee1905_backhaul_sta_mld_configuration_flags_reserved
,
13103 { "Reserved", "ieee1905.backhaul_sta_mld_configuration.flags.reserved",
13104 FT_UINT8
, BASE_HEX
, NULL
, 0x3f, NULL
, HFILL
}},
13106 { &hf_ieee1905_backhaul_sta_mld_configuration_bsta_mld_mac_addr
,
13107 { "bSTA MLD MAC Addr", "ieee1905.backhaul_sta_mld_configuration.bsta_mld_mac_addr",
13108 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13110 { &hf_ieee1905_backhaul_sta_mld_configuration_ap_mld_mac_addr
,
13111 { "AP MLD MAC Addr", "ieee1905.backhaul_sta_mld_configuration.ap_mld_mac_addr",
13112 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13114 { &hf_ieee1905_backhaul_sta_mld_configuration_flags2
,
13115 { "Flags2", "ieee1905.backhaul_sta_mld_configuration.flags2",
13116 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13118 { &hf_ieee1905_backhaul_sta_mld_configuration_flags2_str
,
13119 { "STR", "ieee1905.backhaul_sta_mld_configuration.flags2.str",
13120 FT_UINT8
, BASE_DEC
, NULL
, 0x80, NULL
, HFILL
}},
13122 { &hf_ieee1905_backhaul_sta_mld_configuration_flags2_nstr
,
13123 { "NSTR", "ieee1905.backhaul_sta_mld_configuration.flags2.nstr",
13124 FT_UINT8
, BASE_DEC
, NULL
, 0x40, NULL
, HFILL
}},
13126 { &hf_ieee1905_backhaul_sta_mld_configuration_flags2_emlsr
,
13127 { "EMLSR", "ieee1905.backhaul_sta_mld_configuration.flags2.emlsr",
13128 FT_UINT8
, BASE_DEC
, NULL
, 0x20, NULL
, HFILL
}},
13130 { &hf_ieee1905_backhaul_sta_mld_configuration_flags2_emlmr
,
13131 { "EMLMR", "ieee1905.backhaul_sta_mld_configuration.flags2.emlmr",
13132 FT_UINT8
, BASE_DEC
, NULL
, 0x10, NULL
, HFILL
}},
13134 { &hf_ieee1905_backhaul_sta_mld_configuration_flags2_reserved
,
13135 { "Reserved", "ieee1905.backhaul_sta_mld_configuration.flags2.reserved",
13136 FT_UINT8
, BASE_HEX
, NULL
, 0x0f, NULL
, HFILL
}},
13138 { &hf_ieee1905_backhaul_sta_mld_configuration_reserved
,
13139 { "Reserved", "ieee1905.backhaul_sta_mld_configuration.reserved",
13140 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13142 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_num
,
13143 { "Number of Affiliated bSTAs", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_num",
13144 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
13146 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags
,
13147 { "Flags", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_flags",
13148 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13150 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags_affiliated_bsta_mac_addr_valid
,
13151 { "AP MLD MAC Addr Valid", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_flags.bsta_mac_addr_valid",
13152 FT_UINT8
, BASE_DEC
, NULL
, 0x40, NULL
, HFILL
}},
13154 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags_reserved
,
13155 { "Reserved", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_flags.reserved",
13156 FT_UINT8
, BASE_HEX
, NULL
, 0x3f, NULL
, HFILL
}},
13158 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_radio_id
,
13159 { "Radio Unique ID", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_radio_id",
13160 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13162 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_mac_addr
,
13163 { "Affiliated bSTA MAC Addr", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_mac_addr",
13164 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13166 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_reserved
,
13167 { "Reserved", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_reserved",
13168 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13170 { &hf_ieee1905_associated_sta_mld_configuration_sta_mld_mac_addr
,
13171 { "STA MLD MAC Addr", "ieee1905.associated_sta_mld_configuration.sta_mld_mac_addr",
13172 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13174 { &hf_ieee1905_associated_sta_mld_configuration_ap_mld_mac_addr
,
13175 { "AP MLD MAC Addr", "ieee1905.associated_sta_mld_configuration.ap_mld_mac_addr",
13176 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13178 { &hf_ieee1905_associated_sta_mld_configuration_flags
,
13179 { "Flags", "ieee1905.associated_sta_mld_configuration.flags",
13180 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13182 { &hf_ieee1905_associated_sta_mld_configuration_flags_str
,
13183 { "STR", "ieee1905.associated_sta_mld_configuration.flags.str",
13184 FT_UINT8
, BASE_DEC
, NULL
, 0x80, NULL
, HFILL
}},
13186 { &hf_ieee1905_associated_sta_mld_configuration_flags_nstr
,
13187 { "NSTR", "ieee1905.associated_sta_mld_configuration.flags.nstr",
13188 FT_UINT8
, BASE_DEC
, NULL
, 0x40, NULL
, HFILL
}},
13190 { &hf_ieee1905_associated_sta_mld_configuration_flags_emlsr
,
13191 { "EMLSR", "ieee1905.associated_sta_mld_configuration.flags.emlsr",
13192 FT_UINT8
, BASE_DEC
, NULL
, 0x20, NULL
, HFILL
}},
13194 { &hf_ieee1905_associated_sta_mld_configuration_flags_emlmr
,
13195 { "EMLMR", "ieee1905.associated_sta_mld_configuration.flags.emlmr",
13196 FT_UINT8
, BASE_DEC
, NULL
, 0x10, NULL
, HFILL
}},
13198 { &hf_ieee1905_associated_sta_mld_configuration_flags_reserved
,
13199 { "Reserved", "ieee1905.associated_sta_mld_configuration.flags.reserved",
13200 FT_UINT8
, BASE_HEX
, NULL
, 0x0f, NULL
, HFILL
}},
13202 { &hf_ieee1905_associated_sta_mld_configuration_reserved
,
13203 { "Reserved", "ieee1905.associated_sta_mld_configuration.reserved",
13204 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13206 { &hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_num
,
13207 { "Number of Affiliated STAs", "ieee1905.associated_sta_mld_configuration.affiliated_sta_num",
13208 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
13210 { &hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_bssid
,
13211 { "BSSID", "ieee1905.associated_sta_mld_configuration.affiliated_sta_bssid",
13212 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13214 { &hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_mac_addr
,
13215 { "Affiliated STA MAC Addr", "ieee1905.associated_sta_mld_configuration.affiliated_sta_mac_addr",
13216 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13218 { &hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_reserved
,
13219 { "Reserved", "ieee1905.associated_sta_mld_configuration.affiliated_sta_reserved",
13220 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13222 { &hf_ieee1905_affiliated_sta_metrics_sta_mac_addr
,
13223 { "STA MAC Address", "ieee1905.affiliated_sta_metrics.sta_mac_addr",
13224 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13226 { &hf_ieee1905_affiliated_sta_metrics_bytes_sent
,
13227 { "Bytes Sent", "ieee1905.affiliated_sta_metrics.bytes_sent",
13228 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13230 { &hf_ieee1905_affiliated_sta_metrics_bytes_rcvd
,
13231 { "Bytes Received", "ieee1905.affiliated_sta_metrics.bytes_rcvd",
13232 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13234 { &hf_ieee1905_affiliated_sta_metrics_packets_sent
,
13235 { "Packets Sent", "ieee1905.affiliated_sta_metrics.packets_sent",
13236 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13238 { &hf_ieee1905_affiliated_sta_metrics_packets_rcvd
,
13239 { "Packets Received", "ieee1905.affiliated_sta_metrics.packets_rcvd",
13240 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13242 { &hf_ieee1905_affiliated_sta_metrics_packets_sent_errors
,
13243 { "Packets Sent Errors", "ieee1905.affiliated_sta_metrics.packets_sent_errors",
13244 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13246 { &hf_ieee1905_affiliated_sta_metrics_reserved
,
13247 { "Reserved", "ieee1905.affiliated_sta_metrics.reserved",
13248 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13250 { &hf_ieee1905_affiliated_ap_metrics_bssid
,
13251 { "BSSID", "ieee1905.affiliated_ap_metrics.bssid",
13252 FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13254 { &hf_ieee1905_affiliated_ap_metrics_packets_sent
,
13255 { "Packets Sent", "ieee1905.affiliated_ap_metrics.packets_sent",
13256 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13258 { &hf_ieee1905_affiliated_ap_metrics_packets_rcvd
,
13259 { "Packets Received", "ieee1905.affiliated_ap_metrics.packets_rcvd",
13260 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13262 { &hf_ieee1905_affiliated_ap_metrics_packets_sent_errors
,
13263 { "Packets Sent Errors", "ieee1905.affiliated_ap_metrics.packets_sent_errors",
13264 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13266 { &hf_ieee1905_affiliated_ap_metrics_ucast_bytes_sent
,
13267 { "Unicast Bytes Sent", "ieee1905.affiliated_ap_metrics.ucast_bytes_sent",
13268 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13270 { &hf_ieee1905_affiliated_ap_metrics_ucast_bytes_rcvd
,
13271 { "Unicast Bytes Received", "ieee1905.affiliated_ap_metrics.ucast_bytes_rcvd",
13272 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13274 { &hf_ieee1905_affiliated_ap_metrics_mcast_bytes_sent
,
13275 { "Multicast Bytes Sent", "ieee1905.affiliated_ap_metrics.mcast_bytes_sent",
13276 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13278 { &hf_ieee1905_affiliated_ap_metrics_mcast_bytes_rcvd
,
13279 { "Multicast Bytes Received", "ieee1905.affiliated_ap_metrics.mcast_bytes_rcvd",
13280 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13282 { &hf_ieee1905_affiliated_ap_metrics_bcast_bytes_sent
,
13283 { "Broadcast Bytes Sent", "ieee1905.affiliated_ap_metrics.bcast_bytes_sent",
13284 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13286 { &hf_ieee1905_affiliated_ap_metrics_bcast_bytes_rcvd
,
13287 { "Broadcast Bytes Received", "ieee1905.affiliated_ap_metrics.bcast_bytes_rcvd",
13288 FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
13290 { &hf_ieee1905_affiliated_ap_metrics_reserved
,
13291 { "Reserved", "ieee1905.affiliated_ap_metrics.reserved",
13292 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13294 { &hf_ieee1905_eht_operations_reserved
,
13295 { "Reserved", "ieee1905.eht_operations.reserved",
13296 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13298 { &hf_ieee1905_eht_operations_radio_num
,
13299 { "Number of Radios", "ieee1905.eht_operations.num_radios",
13300 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
13302 { &hf_ieee1905_eht_operations_radio_id
,
13303 { "Radio Unique ID", "ieee1905.eht_operations.radio_id",
13304 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
13306 { &hf_ieee1905_eht_operations_radio_bss_num
,
13307 { "Number of BSS", "ieee1905.eht_operations.radio.num_bss",
13308 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
13310 { &hf_ieee1905_eht_operations_radio_reserved
,
13311 { "Reserved", "ieee1905.eht_operations.radio.reserved",
13312 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13314 { &hf_ieee1905_eht_operations_radio_bss_bssid
,
13315 { "BSSID", "ieee1905.eht_operations.radio.bss.bssid",
13316 FT_ETHER
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
13318 { &hf_ieee1905_eht_operations_radio_bss_flags
,
13319 { "Flags", "ieee1905.eht_operations.radio.bss.flags",
13320 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13322 { &hf_ieee1905_eht_operations_radio_bss_flags_eht_operation_information_valid
,
13323 { "EHT Operation Information Valid", "ieee1905.eht_operations.radio.bss.flags.eht_operation_information_valid",
13324 FT_UINT8
, BASE_DEC
, NULL
, 0x80, NULL
, HFILL
}},
13326 { &hf_ieee1905_eht_operations_radio_bss_flags_disabled_subchannel_valid
,
13327 { "Disabled Subchannel Valid", "ieee1905.eht_operations.radio.bss.flags.disabled_subchannel_valid",
13328 FT_UINT8
, BASE_DEC
, NULL
, 0x40, NULL
, HFILL
}},
13330 { &hf_ieee1905_eht_operations_radio_bss_flags_eht_default_pe_duration
,
13331 { "EHT Default PE Duration", "ieee1905.eht_operations.radio.bss.flags.eht_default_pe_duration",
13332 FT_UINT8
, BASE_DEC
, NULL
, 0x20, NULL
, HFILL
}},
13334 { &hf_ieee1905_eht_operations_radio_bss_flags_group_addr_bu_indication_limit
,
13335 { "Group Addr BU Indication Limit", "ieee1905.eht_operations.radio.bss.flags.group_addr_bu_indication_limit",
13336 FT_UINT8
, BASE_DEC
, NULL
, 0x10, NULL
, HFILL
}},
13338 { &hf_ieee1905_eht_operations_radio_bss_flags_group_addr_bu_indication_exponent
,
13339 { "Group Addr BU Indication Exponent", "ieee1905.eht_operations.radio.bss.flags.group_addr_bu_indication_exponent",
13340 FT_UINT8
, BASE_DEC
, NULL
, 0x0C, NULL
, HFILL
}},
13342 { &hf_ieee1905_eht_operations_radio_bss_flags_reserved
,
13343 { "Reserved", "ieee1905.eht_operations.radio.bss.flags.reserved",
13344 FT_UINT8
, BASE_HEX
, NULL
, 0x03, NULL
, HFILL
}},
13346 { &hf_ieee1905_eht_operations_radio_bss_basic_eht_nss_mcs_set
,
13347 { "Basic EHT NSS MCS Set", "ieee1905.eht_operations.radio.bss.basic_eht_nss_mcs_set",
13348 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13350 { &hf_ieee1905_eht_operations_radio_bss_control
,
13351 { "Control", "ieee1905.eht_operations.radio.bss.control",
13352 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13354 { &hf_ieee1905_eht_operations_radio_bss_ccfs0
,
13355 { "CCFS0", "ieee1905.eht_operations.radio.bss.ccfs0",
13356 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13358 { &hf_ieee1905_eht_operations_radio_bss_ccfs1
,
13359 { "CCFS1", "ieee1905.eht_operations.radio.bss.ccfs1",
13360 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13362 { &hf_ieee1905_eht_operations_radio_bss_disabled_subchannel_bitmap
,
13363 { "Disabled Subchannel Bitmap", "ieee1905.eht_operations.radio.bss.disabled_subchannel_bitmap",
13364 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}},
13366 { &hf_ieee1905_eht_operations_radio_bss_reserved
,
13367 { "Reserved", "ieee1905.eht_operations.radio.bss.reserved",
13368 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13370 { &hf_ieee1905_available_spectrum_inquiry_request_object
,
13371 { "Object", "ieee1905.available_spectrum_inquiry_request.object",
13372 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
13374 { &hf_ieee1905_available_spectrum_inquiry_response_object
,
13375 { "Object", "ieee1905.available_spectrum_inquiry_response.object",
13376 FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
13378 { &hf_ieee1905_extra_tlv_data
,
13379 { "Extraneous TLV data", "ieee1905.extra_tlv_data",
13380 FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
13382 { &hf_ieee1905_fragments
,
13383 { "IEEE1905 Message Fragments", "ieee1905.fragments",
13384 FT_NONE
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13386 { &hf_ieee1905_fragment
,
13387 { "IEEE1905 Message Fragment", "ieee1905.fragment",
13388 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13390 { &hf_ieee1905_fragment_overlap
,
13391 { "IEEE1905 Message Fragment Overlap", "ieee1905.fragment.overlap",
13392 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13394 { &hf_ieee1905_fragment_overlap_conflicts
,
13395 { "IEEE1905 Message Fragment Overlap Conflict",
13396 "ieee1905.fragment.overlap.conflicts",
13397 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13399 { &hf_ieee1905_fragment_multiple_tails
,
13400 { "IEEE1905 Message has multiple tail fragments",
13401 "ieee1905.fragment.multiple_tails",
13402 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13404 { &hf_ieee1905_fragment_too_long_fragment
,
13405 { "IEEE1905 Message Fragment too long",
13406 "ieee1905.fragment.too_long",
13407 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13409 { &hf_ieee1905_fragment_error
,
13410 { "IEEE1905 Message defragmentation error",
13411 "ieee1905.fragment.error",
13412 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13414 { &hf_ieee1905_fragment_count
,
13415 { "IEEE1905 Message Fragment count", "ieee1905.fragment.count",
13416 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
13418 { &hf_ieee1905_fragment_reassembled_in
,
13419 { "Reassembled in", "ieee1905.fragment.reassembled.in",
13420 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}},
13422 { &hf_ieee1905_fragment_reassembled_length
,
13423 { "IEEE1905 Message length", "ieee1905.fragment.reassembled.length",
13424 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}},
13428 static int *ett
[] = {
13430 &ett_ieee1905_flags
,
13431 &ett_ieee1905_tlv_len
,
13433 &ett_device_information_list
,
13434 &ett_device_information_tree
,
13436 &ett_bridging_tuples_list
,
13437 &ett_bridging_mac_list
,
13438 &ett_non_1905_neighbor_list
,
13439 &ett_1905_neighbor_list
,
13440 &ett_ieee1905_neighbor_flags
,
13441 &ett_media_type_list
,
13443 &ett_local_interface_list
,
13444 &ett_local_interface_info
,
13447 &ett_ipv4_type_addr_list
,
13448 &ett_ipv4_addr_info
,
13451 &ett_ipv6_type_addr_list
,
13452 &ett_ipv6_addr_info
,
13453 &ett_push_button_phy_list
,
13454 &ett_push_button_phy_info
,
13455 &ett_power_off_info
,
13456 &ett_power_change_list
,
13457 &ett_power_change_info
,
13458 &ett_power_status_list
,
13459 &ett_power_status_info
,
13460 &ett_l2_local_intf_list
,
13461 &ett_l2_neighbor_device_info
,
13462 &ett_l2_neighbor_dev_list
,
13463 &ett_l2_neighbor_dev_tree
,
13464 &ett_supported_service_list
,
13465 &ett_searched_service_list
,
13466 &ett_ap_operational_bss_list
,
13467 &ett_ap_operational_bss_tree
,
13468 &ett_ap_operational_bss_intf
,
13469 &ett_ap_operational_bss_intf_list
,
13470 &ett_ap_operational_bss_intf_tree
,
13471 &ett_ieee1905_capabilities_flags
,
13472 &ett_ieee1905_unsuccessful_associations
,
13473 &ett_assoc_control_list
,
13474 &ett_ieee1905_steering_request_flags
,
13475 &ett_ieee1905_association_event_flags
,
13476 &ett_client_capability_ies
,
13477 &ett_radio_basic_class_list
,
13478 &ett_ap_radio_basic_cap_class_tree
,
13479 &ett_radio_basic_non_op_list
,
13481 &ett_vht_cap_flags
,
13482 &ett_ieee1905_ap_vht_tx_mcs_set
,
13483 &ett_ieee1905_ap_vht_rx_mcs_set
,
13484 &ett_assoc_clients_bss_list
,
13485 &ett_assoc_client_bss_tree
,
13486 &ett_assoc_client_list
,
13487 &ett_assoc_client_tree
,
13488 &ett_channel_preference_class_list
,
13489 &ett_ap_channel_preference_class_tree
,
13490 &ett_channel_pref_channel_list
,
13491 &ett_ieee1905_channel_prefs_flags
,
13492 &ett_op_channel_report_class_tree
,
13493 &ett_op_channel_report_class_list
,
13494 &ett_sta_link_metrics_query_channel_list
,
13495 &ett_sta_link_link_mac_addr_list
,
13496 &ett_metric_reporting_policy_list
,
13497 &ett_metric_reporting_policy_tree
,
13498 &ett_metric_policy_flags
,
13499 &ett_ap_metric_query_bssid_list
,
13500 &ett_ieee1905_ap_metrics_flags
,
13501 &ett_sta_list_metrics_bss_list
,
13502 &ett_sta_list_metrics_bss_tree
,
13503 &ett_sta_wf6_status_report_tid_list
,
13504 &ett_sta_wf6_status_report_tid_tree
,
13505 &ett_sta_extended_link_metrics_list
,
13506 &ett_sta_extended_link_metrics_tree
,
13507 &ett_ap_he_mcs_set
,
13508 &ett_ap_he_cap_flags
,
13509 &ett_ieee1905_ap_he_tx_mcs_set
,
13510 &ett_ieee1905_ap_he_rx_mcs_set
,
13511 &ett_steering_policy_disallowed_list
,
13512 &ett_btm_steering_policy_disallowed_list
,
13513 &ett_btm_steering_radio_list
,
13514 &ett_radio_restriction_op_class_list
,
13515 &ett_radio_restriction_op_class_tree
,
13516 &ett_radio_restriction_channel_list
,
13517 &ett_radio_restriction_channel_tree
,
13518 &ett_unassoc_sta_link_metric_list
,
13519 &ett_unassoc_sta_link_metric_tree
,
13520 &ett_beacon_metrics_query_list
,
13521 &ett_beacon_metrics_query_tree
,
13522 &ett_beacon_metrics_query_channel_list
,
13523 &ett_beacon_report_subelement_list
,
13524 &ett_beacon_report_sub_element_tree
,
13525 &ett_beacon_metrics_response_report_list
,
13526 &ett_beacon_metrics_response_report_tree
,
13527 &ett_ieee1905_beacon_reported_flags
,
13528 &ett_channel_scan_rep_policy
,
13529 &ett_channel_scan_capa_radio_list
,
13530 &ett_channel_scan_capa_radio
,
13531 &ett_channel_scan_capa_flags
,
13532 &ett_channel_scan_capa_class_list
,
13533 &ett_channel_scan_capa_class
,
13534 &ett_channel_scan_capa_channels
,
13535 &ett_channel_scan_request_flags
,
13536 &ett_channel_scan_request_radio_list
,
13537 &ett_channel_scan_request_radio
,
13538 &ett_channel_scan_request_class_list
,
13539 &ett_channel_scan_request_class
,
13540 &ett_channel_scan_request_channels
,
13541 &ett_channel_scan_result_neigh_list
,
13542 &ett_channel_scan_result_neigh_flags
,
13543 &ett_ap_wf6_role_list
,
13544 &ett_ap_wf6_role_tree
,
13545 &ett_ap_wf6_agent_role_flags
,
13546 &ett_ap_wf6_supported_flags
,
13547 &ett_ap_wf6_mimo_max_flags
,
13548 &ett_ap_wf6_gen_flags
,
13549 &ett_channel_scan_result_neigh
,
13550 &ett_channel_scan_result_flags
,
13551 &ett_cac_request_flags
,
13552 &ett_cac_request_radio_list
,
13553 &ett_cac_request_radio
,
13554 &ett_cac_terminate_radio_list
,
13555 &ett_cac_terminate_radio
,
13556 &ett_cac_completion_radio_list
,
13557 &ett_cac_completion_radio
,
13558 &ett_cac_completion_radar_list
,
13559 &ett_cac_completion_radar
,
13560 &ett_cac_status_rpt_avail_list
,
13561 &ett_cac_status_rpt_avail_chan
,
13562 &ett_cac_status_rpt_non_occupy_list
,
13563 &ett_cac_status_rpt_unocc_chan
,
13564 &ett_cac_status_rpt_active_cac_list
,
13565 &ett_cac_status_rpt_active_cac_tree
,
13566 &ett_cac_capabilities_radio_list
,
13567 &ett_cac_capabilities_radio_tree
,
13568 &ett_cac_capabilities_type_list
,
13569 &ett_cac_capabilities_type_tree
,
13570 &ett_cac_capabilities_class_list
,
13571 &ett_cac_capabilities_class_tree
,
13572 &ett_cac_capabilities_channel_list
,
13573 &ett_cac_capabilities_channel
,
13574 &ett_r2_ap_capa_flags
,
13575 &ett_edge_interface_list
,
13576 &ett_radio_advanced_capa_flags
,
13577 &ett_ap_operational_backhaul_bss_tree
,
13578 &ett_ap_operational_backhaul_bss_intf_list
,
13579 &ett_default_802_1q_settings_flags
,
13580 &ett_traffic_separation_ssid_list
,
13581 &ett_traffic_separation_ssid
,
13582 &ett_bss_config_report_list
,
13583 &ett_bss_config_report_tree
,
13584 &ett_bss_config_report_bss_list
,
13585 &ett_bss_config_report_bss_tree
,
13586 &ett_bss_config_report_flags
,
13587 &ett_ethernet_config_policy_list
,
13588 &ett_ethernet_config_policy
,
13589 &ett_ethernet_config_policy_flags
,
13590 &ett_ieee1905_service_prio_rule_flags
,
13591 &ett_ieee1905_service_prio_rule_match_flags
,
13592 &ett_backhaul_sta_radio_capa_flags
,
13593 &ett_assoc_status_notif_bssid_list
,
13594 &ett_assoc_status_notif_bssid_tree
,
13595 &ett_akm_suite_list
,
13597 &ett_backhaul_akm_suite_list
,
13598 &ett_backhaul_akm_suite
,
13599 &ett_fronthaul_akm_suite_list
,
13600 &ett_fronthaul_akm_suite
,
13601 &ett_1905_encap_dpp_flags
,
13602 &ett_1905_encap_dpp_classes
,
13603 &ett_1905_encap_dpp_op_class_tree
,
13604 &ett_1905_encap_dpp_channel_list
,
13605 &ett_ieee1905_dpp_chirp
,
13606 &ett_device_inventory_radio_list
,
13607 &ett_device_inventory_radio_tree
,
13608 &ett_r2_steering_sta_list
,
13609 &ett_r2_steering_target_list
,
13610 &ett_r2_steering_target
,
13611 &ett_mic_group_temporal_key
,
13612 &ett_ieee1905_spatial_reuse_color
,
13613 &ett_ieee1905_spatial_reuse_hesiga
,
13614 &ett_ieee1905_spatial_reuse_rep_color
,
13615 &ett_ieee1905_spatial_reuse_rep_hesiga
,
13616 &ett_qos_mgmt_policy_mscs_list
,
13617 &ett_qos_mgmt_policy_scs_list
,
13618 &ett_ieee1905_controller_capa
,
13619 &ett_wifi_7_agent_capabilities_flags
,
13620 &ett_wifi_7_agent_capabilities_radio_list
,
13621 &ett_wifi_7_agent_capabilities_radio
,
13622 &ett_wifi_7_agent_capabilities_radio_flags
,
13623 &ett_wifi_7_agent_capabilities_radio_record_list
,
13624 &ett_wifi_7_agent_capabilities_radio_record
,
13625 &ett_wifi_7_agent_capabilities_radio_record_flags
,
13626 &ett_agent_ap_mld_configuration_ap_mld_list
,
13627 &ett_agent_ap_mld_configuration_ap_mld
,
13628 &ett_agent_ap_mld_configuration_ap_mld_flags
,
13629 &ett_agent_ap_mld_configuration_ap_mld_flags2
,
13630 &ett_agent_ap_mld_configuration_ap_mld_affiliated_ap_list
,
13631 &ett_agent_ap_mld_configuration_ap_mld_affiliated_ap
,
13632 &ett_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags
,
13633 &ett_backhaul_sta_mld_configuration_flags
,
13634 &ett_backhaul_sta_mld_configuration_flags2
,
13635 &ett_backhaul_sta_mld_configuration_affiliated_bsta_list
,
13636 &ett_backhaul_sta_mld_configuration_affiliated_bsta
,
13637 &ett_backhaul_sta_mld_configuration_affiliated_bsta_flags
,
13638 &ett_associated_sta_mld_configuration_flags
,
13639 &ett_associated_sta_mld_configuration_affiliated_sta_list
,
13640 &ett_associated_sta_mld_configuration_affiliated_sta
,
13641 &ett_eht_operations_radio_list
,
13642 &ett_eht_operations_radio
,
13643 &ett_eht_operations_radio_bss_list
,
13644 &ett_eht_operations_radio_bss
,
13645 &ett_eht_operations_radio_bss_flags
,
13646 &ett_ieee1905_fragment
,
13647 &ett_ieee1905_fragments
,
13650 static ei_register_info ei
[] = {
13651 { &ei_ieee1905_malformed_tlv
,
13652 { "ieee1905.tlv.too_short", PI_PROTOCOL
, PI_WARN
,
13653 "TLV is too short", EXPFILL
}},
13655 { &ei_ieee1905_extraneous_tlv_data
,
13656 { "ieee1905.tlv.extra_data", PI_PROTOCOL
, PI_WARN
,
13657 "TLV has extra data or an incorrect length", EXPFILL
}},
13660 expert_module_t
*expert_ieee1905
= NULL
;
13662 proto_ieee1905
= proto_register_protocol("IEEE 1905.1a", "ieee1905", "ieee1905");
13664 proto_register_field_array(proto_ieee1905
, hf
, array_length(hf
));
13665 proto_register_subtree_array(ett
, array_length(ett
));
13667 expert_ieee1905
= expert_register_protocol(proto_ieee1905
);
13668 expert_register_field_array(expert_ieee1905
, ei
, array_length(ei
));
13670 reassembly_table_register(&g_ieee1905_reassembly_table
,
13671 &ieee1905_reassembly_table_functions
);
13673 ieee1905_handle
= register_dissector("ieee1905", dissect_ieee1905
, proto_ieee1905
);
13677 proto_reg_handoff_ieee1905(void)
13679 dissector_add_uint("ethertype", ETHERTYPE_IEEE_1905
, ieee1905_handle
);
13681 eapol_handle
= find_dissector("eapol");
13685 * Editor modelines - https://www.wireshark.org/tools/modelines.html
13688 * c-basic-offset: 4
13690 * indent-tabs-mode: nil
13693 * vi: set shiftwidth=4 tabstop=8 expandtab:
13694 * :indentSize=4:tabSize=8:noTabs=true: