Bug Summary

File:builds/wireshark/wireshark/epan/dissectors/packet-ieee1905.c
Warning:line 10813, column 13
Branch condition evaluates to a garbage value

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-pc-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name packet-ieee1905.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -fno-delete-null-pointer-checks -mframe-pointer=all -relaxed-aliasing -fmath-errno -ffp-contract=on -fno-rounding-math -ffloat16-excess-precision=fast -fbfloat16-excess-precision=fast -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/builds/wireshark/wireshark/build -fcoverage-compilation-dir=/builds/wireshark/wireshark/build -resource-dir /usr/lib/llvm-22/lib/clang/22 -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /builds/wireshark/wireshark/epan/dissectors -isystem /builds/wireshark/wireshark/build/epan/dissectors -isystem /usr/include/mit-krb5 -isystem /usr/include/libxml2 -isystem /builds/wireshark/wireshark/epan -D CARES_NO_DEPRECATED -D G_DISABLE_DEPRECATED -D G_DISABLE_SINGLE_INCLUDES -D WS_BUILD_DLL -D WS_DEBUG -D WS_DEBUG_UTF_8 -I /builds/wireshark/wireshark/build -I /builds/wireshark/wireshark -I /builds/wireshark/wireshark/include -D _GLIBCXX_ASSERTIONS -internal-isystem /usr/lib/llvm-22/lib/clang/22/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/16/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fmacro-prefix-map=/builds/wireshark/wireshark/= -fmacro-prefix-map=/builds/wireshark/wireshark/build/= -fmacro-prefix-map=../= -Wno-format-nonliteral -std=gnu17 -ferror-limit 19 -fvisibility=hidden -fwrapv -fwrapv-pointer -fstrict-flex-arrays=3 -stack-protector 2 -fstack-clash-protection -fcf-protection=full -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fexceptions -fcolor-diagnostics -analyzer-output=html -faddrsig -fdwarf2-cfi-asm -o /builds/wireshark/wireshark/sbout/2026-10-29-100330-3661-1 -x c /builds/wireshark/wireshark/epan/dissectors/packet-ieee1905.c
1/* packet-ieee1905.c
2 * Routines for IEEE1905 dissection
3 *
4 * Copyright 2017, Richard Sharpe <[email protected]>
5 * Copyright 2017, The Wi-Fi Alliance.
6 *
7 * Wireshark - Network traffic analyzer
8 * By Gerald Combs <[email protected]>
9 * Copyright 1998 Gerald Combs
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 */
13
14/*
15 * https://standards.ieee.org/ieee/1905.1/4995/
16 *
17 * IEEE Standard for a Convergent Digital Home Network for Heterogeneous
18 * Technologies
19 *
20 * Plus incorporating the changes in the Multi-AP Technical Specification.
21 */
22
23#include <config.h>
24
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>
32#include <epan/tfs.h>
33#include <epan/unit_strings.h>
34#include <epan/proto_data.h>
35#include <epan/crypt/dot1905decrypt.h>
36#include <epan/crypt/dot1905mic.h>
37#include <epan/uat.h>
38#include <epan/strutil.h>
39#include <wsutil/array.h>
40#include <wsutil/pint.h>
41#include "packet-wps.h"
42#include "packet-wifi-dpp.h"
43#include "packet-ieee80211.h"
44
45static dissector_handle_t ieee1905_handle;
46static dissector_handle_t eapol_handle;
47
48void proto_reg_handoff_ieee1905(void);
49void proto_register_ieee1905(void);
50
51/* Reassembly header fields */
52static int hf_ieee1905_fragments;
53static int hf_ieee1905_fragment;
54static int hf_ieee1905_fragment_overlap;
55static int hf_ieee1905_fragment_overlap_conflicts;
56static int hf_ieee1905_fragment_multiple_tails;
57static int hf_ieee1905_fragment_too_long_fragment;
58static int hf_ieee1905_fragment_error;
59static int hf_ieee1905_fragment_count;
60static int hf_ieee1905_fragment_reassembled_in;
61static int hf_ieee1905_fragment_reassembled_length;
62
63/* Normal header fields */
64static int proto_ieee1905;
65static int hf_ieee1905_fragment_data;
66static int hf_ieee1905_message_version;
67static int hf_ieee1905_message_reserved;
68static int hf_ieee1905_message_type;
69static int hf_ieee1905_message_id;
70static int hf_ieee1905_fragment_id;
71static int hf_ieee1905_flags;
72static int hf_ieee1905_last_fragment;
73static int hf_ieee1905_relay_indicator;
74static int hf_ieee1905_tlv_types;
75static int hf_ieee1905_tlv_len;
76static int hf_ieee1905_tlv_len_reserved;
77static int hf_ieee1905_tlv_len_length;
78static int hf_ieee1905_tlv_data;
79static int hf_ieee1905_al_mac_address_type;
80static int hf_ieee1905_mac_address_type;
81static int hf_ieee1905_link_metric_query_type;
82static int hf_ieee1905_link_metrics_requested;
83static int hf_ieee1905_responder_al_mac_addr;
84static int hf_ieee1905_neighbor_al_mac_addr;
85static int hf_ieee1905_receiving_al_mac_addr;
86static int hf_ieee1905_bridge_flag;
87static int hf_ieee1905_packet_errors;
88static int hf_ieee1905_transmitted_packets;
89static int hf_ieee1905_mac_throughput_capacity;
90static int hf_ieee1905_link_availability;
91static int hf_ieee1905_phy_rate;
92static int hf_ieee1905_packets_received;
93static int hf_ieee1905_rssi;
94static int hf_ieee1905_extra_tlv_data;
95static int hf_ieee1905_local_interface_count;
96static int hf_ieee1905_media_type;
97static int hf_ieee1905_media_spec_info_len;
98static int hf_ieee1905_media_spec_info;
99static int hf_ieee1905_media_type_high;
100static int hf_ieee1905_media_type_low;
101static int hf_ieee1905_bridging_tuples_cnt;
102static int hf_ieee1905_bridging_mac_address_cnt;
103static int hf_ieee1905_bridging_mac_address;
104static int hf_ieee1905_local_interface_mac;
105static int hf_ieee1905_non_1905_neighbor_mac;
106static int hf_ieee1905_neighbor_flags;
107static int hf_ieee1905_bridges_flag;
108static int hf_ieee1905_link_metric_result_code;
109static int hf_ieee1905_vendor_specific_oui;
110static int hf_ieee1905_vendor_specific_info;
111static int hf_ieee1905_searched_role;
112static int hf_ieee1905_supported_role;
113static int hf_ieee1905_auto_config_freq_band;
114static int hf_ieee1905_supported_freq_band;
115static int hf_ieee1905_event_notification_media_types;
116static int hf_ieee1905_sender_al_id;
117static int hf_ieee1905_push_button_event_msg_id;
118static int hf_ieee1905_sender_joining_interface;
119static int hf_ieee1905_new_device_interface;
120static int hf_ieee1905_device_al_mac;
121static int hf_ieee1905_local_intf_oui;
122static int hf_ieee1905_local_intf_variant;
123static int hf_ieee1905_local_intf_variant_name;
124static int hf_ieee1905_local_intf_url_count;
125static int hf_ieee1905_local_intf_spec_count;
126static int hf_ieee1905_local_intf_url;
127static int hf_ieee1905_local_intf_spec;
128static int hf_ieee1905_dev_id_friendly_name;
129static int hf_ieee1905_dev_id_manuf_name;
130static int hf_ieee1905_dev_id_manuf_model;
131static int hf_ieee1905_control_url;
132static int hf_ieee1905_ipv4_type_count;
133static int hf_ieee1905_mac_address;
134static int hf_ieee1905_ipv4_addr_count;
135static int hf_ieee1905_addr_type;
136static int hf_ieee1905_ipv4_addr;
137static int hf_ieee1905_dhcp_server;
138static int hf_ieee1905_ipv6_mac_address;
139static int hf_ieee1905_ipv6_linklocal;
140static int hf_ieee1905_ipv6_type_count;
141static int hf_ieee1905_ipv6_addr_count;
142static int hf_ieee1905_ipv6_addr_type;
143static int hf_ieee1905_ipv6_addr;
144static int hf_ieee1905_ipv6_address_origin;
145static int hf_ieee1905_generic_phy_media_types;
146static int hf_ieee1905_profile_version;
147static int hf_ieee1905_power_off_intf_count;
148static int hf_ieee1905_power_change_intf_count;
149static int hf_ieee1905_power_change_mac_addr;
150static int hf_ieee1905_power_change_state;
151static int hf_ieee1905_power_status_intf_count;
152static int hf_ieee1905_power_status_mac_addr;
153static int hf_ieee1905_power_status_state;
154static int hf_ieee1905_l2_neighbor_intf_count;
155static int hf_ieee1905_l2_local_intf_mac_addr;
156static int hf_ieee1905_l2_neighbor_dev_count;
157static int hf_ieee1905_l2_neighbor_mac_addr;
158static int hf_ieee1905_l2_behind_mac_addr_count;
159static int hf_ieee1905_l2_behind_mac_addr;
160static int hf_ieee1905_supported_service_count;
161static int hf_ieee1905_supported_service;
162static int hf_ieee1905_searched_service_count;
163static int hf_ieee1905_searched_service;
164static int hf_ieee1905_ap_radio_identifier;
165static int hf_ieee1905_operatonal_bss_radio_count;
166static int hf_ieee1905_ap_operational_intf_count;
167static int hf_ieee1905_ap_local_intf_mac_addr;
168static int hf_ieee1905_ap_local_intf_ssid_len;
169static int hf_ieee1905_ap_local_intf_ssid;
170static int hf_ieee1905_ap_capabilities_flags;
171static int hf_ieee1905_unassoc_sta_metrics_oper_flag;
172static int hf_ieee1905_unassoc_sta_metrics_non_oper_flag;
173static int hf_ieee1905_agent_init_steering;
174static int hf_ieee1905_m8_bsta_reconfiguration;
175static int hf_ieee1905_rsn_overriding;
176static int hf_ieee1905_rpt_unsuccessful_associations;
177static int hf_ieee1905_rpt_unsuccessful_assoc_report;
178static int hf_ieee1905_higher_layer_protocol;
179static int hf_ieee1905_higher_layer_data;
180static int hf_ieee1905_assoc_backhaul_station_mac;
181static int hf_ieee1905_backhaul_target_bssid;
182static int hf_ieee1905_backhaul_steering_status;
183static int hf_ieee1905_backhaul_operating_class;
184static int hf_ieee1905_backhaul_channel_number;
185static int hf_ieee1905_client_assoc_bssid;
186static int hf_ieee1905_association_control;
187static int hf_ieee1905_association_control_validity;
188static int hf_ieee1905_client_assoc_sta_count;
189static int hf_ieee1905_client_assoc_mac_addr;
190static int hf_ieee1905_btm_reporter_bssid;
191static int hf_ieee1905_btm_sta_mac_addr;
192static int hf_ieee1905_btm_report_status;
193static int hf_ieee1905_btm_report_bssid;
194static int hf_ieee1905_source_bss_bssid;
195static int hf_ieee1905_steering_request_flags;
196static int hf_ieee1905_steering_req_op_window;
197static int hf_ieee1905_steering_request_mode_flag;
198static int hf_ieee1905_btm_disassoc_imminent_flag;
199static int hf_ieee1905_btm_abridged_flag;
200static int hf_ieee1905_steering_req_reserved;
201static int hf_ieee1905_steering_btm_disass_timer;
202static int hf_ieee1905_steering_req_sta_count;
203static int hf_ieee1905_steering_req_sta_mac;
204static int hf_ieee1905_steering_req_target_bssid_count;
205static int hf_ieee1905_steering_req_target_bssid;
206static int hf_ieee1905_steering_req_oper_class;
207static int hf_ieee1905_steering_req_target_channel;
208static int hf_ieee1905_client_bssid;
209static int hf_ieee1905_client_mac_addr;
210static int hf_ieee1905_client_capability_result;
211static int hf_ieee1905_client_capability_frame;
212static int hf_ieee1905_association_flag;
213static int hf_ieee1905_association_client_mac_addr;
214static int hf_ieee1905_association_agent_bssid;
215static int hf_ieee1905_association_event_flags;
216static int hf_ieee1905_ap_radio_max_bss;
217static int hf_ieee1905_ap_radio_classes;
218static int hf_ieee1905_ap_radio_class;
219static int hf_ieee1905_ap_radio_eirp;
220static int hf_ieee1905_ap_radio_non_op_count;
221static int hf_ieee1905_radio_basic_non_op_channel;
222static int hf_ieee1905_max_supported_tx_streams;
223static int hf_ieee1905_max_supported_rx_streams;
224static int hf_ieee1905_short_gi_20mhz_flag;
225static int hf_ieee1905_short_gi_40mhz_flag;
226static int hf_ieee1905_ht_support_40mhz_flag;
227static int hf_ieee1905_ap_ht_capabilities_radio_id;
228static int hf_ieee1905_ht_cap_flags;
229static int hf_ieee1905_vht_max_supported_tx_streams;
230static int hf_ieee1905_vht_max_supported_rx_streams;
231static int hf_ieee1905_short_gi_80mhz_flag;
232static int hf_ieee1905_short_gi_160mhz_flag;
233static int hf_ieee1905_vht_support_80plus_mhz_flag;
234static int hf_ieee1905_vht_support_160_mhz_flag;
235static int hf_ieee1905_su_beamformer_capable_flag;
236static int hf_ieee1905_mu_beamformer_capable_flag;
237static int hf_ieee1905_ap_vht_capabilities_radio_id;
238static int hf_ieee1905_vht_cap_flags;
239static int hf_ieee1905_assoc_clients_bss_count;
240static int hf_ieee1905_assoc_bssid;
241static int hf_ieee1905_bss_client_count;
242static int hf_ieee1905_bss_client_mac;
243static int hf_ieee1905_bss_client_last_assoc;
244static int hf_ieee1905_ap_vht_supported_vht_tx_mcs;
245static int hf_ieee1905_ap_vht_supported_vht_rx_mcs;
246static int hf_ieee1905_ap_vht_tx_mcs_map_1ss;
247static int hf_ieee1905_ap_vht_tx_mcs_map_2ss;
248static int hf_ieee1905_ap_vht_tx_mcs_map_3ss;
249static int hf_ieee1905_ap_vht_tx_mcs_map_4ss;
250static int hf_ieee1905_ap_vht_tx_mcs_map_5ss;
251static int hf_ieee1905_ap_vht_tx_mcs_map_6ss;
252static int hf_ieee1905_ap_vht_tx_mcs_map_7ss;
253static int hf_ieee1905_ap_vht_tx_mcs_map_8ss;
254static int hf_ieee1905_ap_vht_rx_mcs_map_1ss;
255static int hf_ieee1905_ap_vht_rx_mcs_map_2ss;
256static int hf_ieee1905_ap_vht_rx_mcs_map_3ss;
257static int hf_ieee1905_ap_vht_rx_mcs_map_4ss;
258static int hf_ieee1905_ap_vht_rx_mcs_map_5ss;
259static int hf_ieee1905_ap_vht_rx_mcs_map_6ss;
260static int hf_ieee1905_ap_vht_rx_mcs_map_7ss;
261static int hf_ieee1905_ap_vht_rx_mcs_map_8ss;
262static int hf_ieee1905_channel_pref_preference;
263static int hf_ieee1905_channel_pref_reason;
264static int hf_ieee1905_channel_preference_radio_id;
265static int hf_ieee1905_channel_preference_class_count;
266static int hf_ieee1905_channel_pref_class;
267static int hf_ieee1905_channel_pref_channel_count;
268static int hf_ieee1905_channel_pref_channel;
269static int hf_ieee1905_channel_prefs_flags;
270static int hf_ieee1905_trans_power_limit_radio_id;
271static int hf_ieee1905_trans_power_limit_eirp;
272static int hf_ieee1905_channel_select_resp_radio_id;
273static int hf_ieee1905_radio_metrics_radio_id;
274static int hf_ieee1905_channel_select_resp_code;
275static int hf_ieee1905_op_channel_report_radio_id;
276static int hf_ieee1905_op_channel_report_classes;
277static int hf_ieee1905_op_channel_class;
278static int hf_ieee1905_op_channel_number;
279static int hf_ieee1905_op_channel_eirp;
280static int hf_ieee1905_ap_he_cap_radio_id;
281static int hf_ieee1905_ap_he_cap_mcs_length;
282static int hf_ieee1905_ap_he_cap_tx_mcs_le_80_mhz;
283static int hf_ieee1905_ap_he_tx_mcs_map_1ss;
284static int hf_ieee1905_ap_he_tx_mcs_map_2ss;
285static int hf_ieee1905_ap_he_tx_mcs_map_3ss;
286static int hf_ieee1905_ap_he_tx_mcs_map_4ss;
287static int hf_ieee1905_ap_he_tx_mcs_map_5ss;
288static int hf_ieee1905_ap_he_tx_mcs_map_6ss;
289static int hf_ieee1905_ap_he_tx_mcs_map_7ss;
290static int hf_ieee1905_ap_he_tx_mcs_map_8ss;
291static int hf_ieee1905_ap_he_cap_rx_mcs_le_80_mhz;
292static int hf_ieee1905_ap_he_rx_mcs_map_1ss;
293static int hf_ieee1905_ap_he_rx_mcs_map_2ss;
294static int hf_ieee1905_ap_he_rx_mcs_map_3ss;
295static int hf_ieee1905_ap_he_rx_mcs_map_4ss;
296static int hf_ieee1905_ap_he_rx_mcs_map_5ss;
297static int hf_ieee1905_ap_he_rx_mcs_map_6ss;
298static int hf_ieee1905_ap_he_rx_mcs_map_7ss;
299static int hf_ieee1905_ap_he_rx_mcs_map_8ss;
300static int hf_ieee1905_ap_he_cap_tx_mcs_160_mhz;
301static int hf_ieee1905_ap_he_cap_rx_mcs_160_mhz;
302static int hf_ieee1905_ap_he_cap_tx_mcs_80p80_mhz;
303static int hf_ieee1905_ap_he_cap_rx_mcs_80p80_mhz;
304static int hf_ieee1905_unassoc_link_metrics_query_mac;
305static int hf_ieee1905_unassoc_sta_link_metrics_class;
306static int hf_ieee1905_ap_metrics_reporting_interval;
307static int hf_ieee1905_metric_reporting_policy_radio_id;
308static int hf_ieee1905_metric_reporting_radio_count;
309static int hf_ieee1905_metric_rcpi_threshold;
310static int hf_ieee1905_metric_reporting_rcpi_hysteresis;
311static int hf_ieee1905_metrics_policy_flags;
312static int hf_ieee1905_metrics_channel_util_threshold;
313static int hf_ieee1905_assoc_sta_traffic_stats_inclusion;
314static int hf_ieee1905_assoc_sta_link_metrics_inclusion;
315static int hf_ieee1905_assoc_wf6_status_policy_inclusion;
316static int hf_ieee1905_reporting_policy_flags_reserved;
317static int hf_ieee1905_ap_metric_query_bssid_cnt;
318static int hf_ieee1905_ap_metric_query_bssid;
319static int hf_ieee1905_sta_mac_address_type;
320static int hf_ieee1905_assoc_sta_mac_addr;
321static int hf_ieee1905_assoc_sta_bssid_count;
322static int hf_ieee1905_assoc_sta_link_metrics_bssid;
323static int hf_ieee1905_assoc_sta_link_metrics_time_delta;
324static int hf_ieee1905_assoc_sta_link_metrics_dwn_rate;
325static int hf_ieee1905_assoc_sta_link_metrics_up_rate;
326static int hf_ieee1905_assoc_sta_link_metrics_rcpi;
327static int hf_ieee1905_assoc_wf6_sta_mac_addr;
328static int hf_ieee1905_assoc_wf6_sta_tid_count;
329static int hf_ieee1905_assoc_wf6_sta_tid;
330static int hf_ieee1905_assoc_wf6_sta_queue_size;
331static int hf_ieee1905_assoc_sta_ext_link_metrics_mac_addr;
332static int hf_ieee1905_assoc_sta_ext_link_metrics_count;
333static int hf_ieee1905_assoc_sta_extended_metrics_bssid;
334static int hf_ieee1905_assoc_sta_extended_metrics_lddlr;
335static int hf_ieee1905_assoc_sta_extended_metrics_ldulr;
336static int hf_ieee1905_assoc_sta_extended_metrics_ur;
337static int hf_ieee1905_assoc_sta_extended_metrics_tr;
338static int hf_ieee1905_unassoc_sta_link_channel_count;
339static int hf_ieee1905_unassoc_metrics_channel;
340static int hf_ieee1905_unassoc_metrics_mac_count;
341static int hf_ieee1905_he_max_supported_tx_streams;
342static int hf_ieee1905_he_max_supported_rx_streams;
343static int hf_ieee1905_he_support_80plus_mhz_flag;
344static int hf_ieee1905_he_support_160mhz_flag;
345static int hf_ieee1905_he_su_beamformer_capable_flag;
346static int hf_ieee1905_he_mu_beamformer_capable_flag;
347static int hf_ieee1905_ul_mu_mimo_capable_flag;
348static int hf_ieee1905_ul_mu_mimo_ofdma_capable_flag;
349static int hf_ieee1905_dl_mu_mimo_ofdma_capable_flag;
350static int hf_ieee1905_ul_ofdma_capable;
351static int hf_ieee1905_dl_ofdma_capable;
352static int hf_ieee1905_he_cap_flags;
353static int hf_ieee1905_steering_policy_local_disallowed_count;
354static int hf_ieee1905_steering_disallowed_mac_addr;
355static int hf_ieee1905_btm_steering_disallowed_count;
356static int hf_ieee1905_btm_steering_disallowed_mac_addr;
357static int hf_ieee1905_steering_policy_radio_count;
358static int hf_ieee1905_steering_policy_radio_id;
359static int hf_ieee1905_steering_policy_policy;
360static int hf_ieee1905_steering_policy_util;
361static int hf_ieee1905_steering_policy_rcpi_threshold;
362static int hf_ieee1905_radio_restriction_radio_id;
363static int hf_ieee1905_radio_restriction_op_class_count;
364static int hf_ieee1905_radio_restriction_op_class;
365static int hf_ieee1905_radio_restriction_chan_count;
366static int hf_ieee1905_radio_restriction_channel;
367static int hf_ieee1905_radio_restriction_min_separation;
368static int hf_ieee1905_ap_metrics_agent_bssid;
369static int hf_ieee1905_include_estimated_spi_ac_eq_be;
370static int hf_ieee1905_include_estimated_spi_ac_eq_bk;
371static int hf_ieee1905_include_estimated_spi_ac_eq_vo;
372static int hf_ieee1905_include_estimated_spi_ac_eq_vi;
373static int hf_ieee1905_ap_metrics_channel_utilization;
374static int hf_ieee1905_ap_metrics_sta_count;
375static int hf_ieee1905_ap_metrics_flags;
376static int hf_ieee1905_ap_metrics_service_params_be;
377static int hf_ieee1905_ap_metrics_service_params_bk;
378static int hf_ieee1905_ap_metrics_service_params_vo;
379static int hf_ieee1905_ap_metrics_service_params_vi;
380static int hf_ieee1905_unassoc_sta_link_metric_op_class;
381static int hf_ieee1905_unassoc_sta_link_metric_sta_count;
382static int hf_ieee1905_unassoc_link_metric_mac_addr;
383static int hf_ieee1905_unassoc_link_metric_channel;
384static int hf_ieee1905_unassoc_link_metric_delta;
385static int hf_ieee1905_unassoc_link_metric_uplink_rcpi;
386static int hf_ieee1905_beacon_metrics_query_mac_addr;
387static int hf_ieee1905_beacon_metrics_query_op_class;
388static int hf_ieee1905_beacon_metrics_query_channel;
389static int hf_ieee1905_beacon_metrics_query_bssid;
390static int hf_ieee1905_beacon_metrics_query_detail;
391static int hf_ieee1905_beacon_metrics_query_ssid_len;
392static int hf_ieee1905_beacon_metrics_query_ssid;
393static int hf_ieee1905_beacon_metrics_channel_count;
394static int hf_ieee1905_beacon_metrics_report_len;
395static int hf_ieee1905_beacon_metrics_report_op_class;
396static int hf_ieee1905_beacon_metrics_report_channel_id;
397static int hf_ieee1905_measurement_report;
398static int hf_ieee1905_beacon_metrics_response_mac_addr;
399static int hf_ieee1905_beacon_metrics_response_reserved;
400static int hf_ieee1905_beacon_metrics_response_meas_num;
401static int hf_ieee1905_assoc_sta_traffic_stats_mac_addr;
402static int hf_ieee1905_assoc_sta_traffic_stats_bytes_sent;
403static int hf_ieee1905_assoc_sta_traffic_stats_bytes_rcvd;
404static int hf_ieee1905_assoc_sta_traffic_stats_packets_sent;
405static int hf_ieee1905_assoc_sta_traffic_stats_packets_rcvd;
406static int hf_ieee1905_assoc_sta_traffic_stats_tx_pkt_errs;
407static int hf_ieee1905_assoc_sta_traffic_stats_rx_pkt_errs;
408static int hf_ieee1905_assoc_sta_traffic_stats_retrans_count;
409static int hf_ieee1905_error_code_value;
410static int hf_ieee1905_error_code_mac_addr;
411static int hf_ieee1905_channel_scan_rep_policy;
412static int hf_ieee1905_channel_scan_pol_report;
413static int hf_ieee1905_channel_scan_pol_reserved;
414static int hf_ieee1905_channel_scan_capabilities_radio_num;
415static int hf_ieee1905_channel_scan_capa_radio_id;
416static int hf_ieee1905_channel_scan_capa_flags;
417static int hf_ieee1905_channel_scan_capa_flags_on_boot_only;
418static int hf_ieee1905_channel_scan_capa_flags_scan_impact;
419static int hf_ieee1905_channel_scan_capa_flags_reserved;
420static int hf_ieee1905_channel_scan_capa_min_scan_interval;
421static int hf_ieee1905_channel_scan_capa_class_num;
422static int hf_ieee1905_channel_scan_capa_oper_class;
423static int hf_ieee1905_channel_scan_capa_oper_class_chan_cnt;
424static int hf_ieee1905_channel_scan_capa_channel;
425static int hf_ieee1905_channel_scan_request_flags;
426static int hf_ieee1905_channel_scan_request_flags_fresh_scan;
427static int hf_ieee1905_channel_scan_request_flags_reserved;
428static int hf_ieee1905_channel_scan_request_radio_num;
429static int hf_ieee1905_channel_scan_request_radio_id;
430static int hf_ieee1905_channel_scan_request_class_num;
431static int hf_ieee1905_channel_scan_request_oper_class;
432static int hf_ieee1905_channel_scan_request_oper_class_chan_cnt;
433static int hf_ieee1905_channel_scan_request_channel;
434static int hf_ieee1905_channel_scan_result_radio_id;
435static int hf_ieee1905_channel_scan_result_oper_class;
436static int hf_ieee1905_channel_scan_result_channel;
437static int hf_ieee1905_channel_scan_result_status;
438static int hf_ieee1905_channel_scan_result_timestamp_len;
439static int hf_ieee1905_channel_scan_result_timestamp_string;
440static int hf_ieee1905_channel_scan_result_utilization;
441static int hf_ieee1905_channel_scan_result_noise;
442static int hf_ieee1905_radio_metrics_noise;
443static int hf_ieee1905_radio_metrics_transmit;
444static int hf_ieee1905_radio_metrics_receive_self;
445static int hf_ieee1905_radio_metrics_receive_other;
446static int hf_ieee1905_ap_extended_metrics_bssid;
447static int hf_ieee1905_ap_extended_metrics_unicast_sent;
448static int hf_ieee1905_ap_extended_metrics_unicast_rcvd;
449static int hf_ieee1905_ap_extended_metrics_multicast_sent;
450static int hf_ieee1905_ap_extended_metrics_multicast_rcvd;
451static int hf_ieee1905_ap_extended_metrics_bcast_sent;
452static int hf_ieee1905_ap_extended_metrics_bcast_rcvd;
453static int hf_ieee1905_channel_scan_result_neigh_num;
454static int hf_ieee1905_channel_scan_result_bssid;
455static int hf_ieee1905_channel_scan_result_ssid_len;
456static int hf_ieee1905_channel_scan_result_ssid;
457static int hf_ieee1905_channel_scan_result_sig_level;
458static int hf_ieee1905_channel_scan_result_bw_len;
459static int hf_ieee1905_channel_scan_result_bw;
460static int hf_ieee1905_channel_scan_result_neigh_flags;
461static int hf_ieee1905_channel_scan_result_load_element_present;
462static int hf_ieee1905_channel_scan_result_neigh_reserved;
463static int hf_ieee1905_channel_scan_result_util;
464static int hf_ieee1905_channel_scan_result_sta_count;
465static int hf_ieee1905_channel_scan_result_scan_duration;
466static int hf_ieee1905_channel_scan_result_flags;
467static int hf_ieee1905_channel_scan_result_scan_type;
468static int hf_ieee1905_channel_scan_result_scan_flags_reserved;
469static int hf_ieee1905_timestamp_length;
470static int hf_ieee1905_timestamp_string;
471static int hf_ieee1905_1905_layer_sec_capa_onboarding;
472static int hf_ieee1905_1905_layer_sec_capa_mic_sup;
473static int hf_ieee1905_1905_layer_sec_capa_enc_alg_sup;
474static int hf_ieee1905_ap_wf6_capa_radio_id;
475static int hf_ieee1905_ap_wf6_role_count;
476static int hf_ieee1905_ap_wf6_agent_role_flags;
477static int hf_ieee1905_ap_wf6_capa_agents_role;
478static int hf_ieee1905_ap_wf6_capa_he_160_support;
479static int hf_ieee1905_ap_wf6_capa_he_80p80_support;
480static int hf_ieee1905_ap_wf6_capa_reserved;
481static int hf_ieee1905_ap_wf6_he_supported_flags;
482static int hf_ieee1905_ap_wf6_su_beamformer;
483static int hf_ieee1905_ap_wf6_su_beamformee;
484static int hf_ieee1905_ap_wf6_mu_beamformer_status;
485static int hf_ieee1905_ap_wf6_beamformee_sts_le_80mhz;
486static int hf_ieee1905_ap_wf6_beamformee_sts_gt_80mhz;
487static int hf_ieee1905_ap_wf6_ul_mu_mimo;
488static int hf_ieee1905_ap_wf6_ul_ofdma;
489static int hf_ieee1905_ap_wf6_dl_ofdma;
490static int hf_ieee1905_ap_wf6_mimo_max_flags;
491static int hf_ieee1905_ap_wf6_max_ap_dl_mu_mimo_tx;
492static int hf_ieee1905_ap_wf6_max_ap_ul_mu_mimi_rx;
493static int hf_ieee1905_ap_wf6_dl_ofdma_max_tx;
494static int hf_ieee1905_ap_wf6_ul_ofdma_max_rx;
495static int hf_ieee1905_ap_wf6_gen_flags;
496static int hf_ieee1905_ap_wf6_gen_rts;
497static int hf_ieee1905_ap_wf6_gen_mu_rts;
498static int hf_ieee1905_ap_wf6_gen_multi_bssid;
499static int hf_ieee1905_ap_wf6_gen_mu_edca;
500static int hf_ieee1905_ap_wf6_gen_twt_requester;
501static int hf_ieee1905_ap_wf6_gen_twt_responder;
502static int hf_ieee1905_ap_wf6_gen_reserved;
503static int hf_ieee1905_agent_list_agent_num;
504static int hf_ieee1905_agent_list_al_mac_addr;
505static int hf_ieee1905_agent_list_multiap_profile;
506static int hf_ieee1905_agent_list_security;
507static int hf_ieee1905_mic_group_temporal_key_id;
508static int hf_ieee1905_mic_integrity_transmission_counter;
509static int hf_ieee1905_mic_source_la_mac_id;
510static int hf_ieee1905_mic_length;
511static int hf_ieee1905_mic_bytes;
512static int hf_ieee1905_1905_gtk_key_id;
513static int hf_ieee1905_mic_version;
514static int hf_ieee1905_mic_reserved;
515static int hf_ieee1905_encrypted_dest_al_mac_addr;
516static int hf_ieee1905_encrypted_enc_transmission_count;
517static int hf_ieee1905_encrypted_source_la_mac_id;
518static int hf_ieee1905_encrypted_enc_output_field_len;
519static int hf_ieee1905_encrypted_enc_output_field;
520static int hf_ieee1905_cac_request_radio_count;
521static int hf_ieee1905_cac_request_radio_id;
522static int hf_ieee1905_cac_request_op_class;
523static int hf_ieee1905_cac_request_channel;
524static int hf_ieee1905_cac_request_flags;
525static int hf_ieee1905_cac_request_method;
526static int hf_ieee1905_cac_request_completion_action;
527static int hf_ieee1905_cac_request_completion_unsuccess;
528static int hf_ieee1905_cac_request_reserved;
529static int hf_ieee1905_cac_termination_radio_count;
530static int hf_ieee1905_cac_terminate_radio_id;
531static int hf_ieee1905_cac_terminate_op_class;
532static int hf_ieee1905_cac_terminate_channel;
533static int hf_ieee1905_cac_completion_rep_radio_count;
534static int hf_ieee1905_cac_completion_radio_id;
535static int hf_ieee1905_cac_completion_op_class;
536static int hf_ieee1905_cac_completion_channel;
537static int hf_ieee1905_cac_completion_status;
538static int hf_ieee1905_cac_completion_radar_count;
539static int hf_ieee1905_cac_comp_radar_op_class;
540static int hf_ieee1905_cac_comp_radar_channel;
541static int hf_ieee1905_cac_status_rpt_active_chan;
542static int hf_ieee1905_cac_status_rpt_avail_op_class;
543static int hf_ieee1905_cac_status_rpt_avail_channel;
544static int hf_ieee1905_cac_status_rpt_avail_minutes;
545static int hf_ieee1905_cac_status_rpt_non_occ_cnt;
546static int hf_ieee1905_cac_status_rpt_non_occ_op_class;
547static int hf_ieee1905_cac_status_rpt_non_occ_channel;
548static int hf_ieee1905_cac_status_rpt_non_occ_seconds;
549static int hf_ieee1905_cac_status_rpt_active_cac_cnt;
550static int hf_ieee1905_cac_status_rpt_active_cac_op_class;
551static int hf_ieee1905_cac_status_rpt_active_cac_channel;
552static int hf_ieee1905_cac_status_rpt_active_cac_seconds;
553static int hf_ieee1905_cac_capa_country_code;
554static int hf_ieee1905_cac_capa_radio_cnt;
555static int hf_ieee1905_cac_capabilities_radio_id;
556static int hf_ieee1905_cac_capabilities_types_num;
557static int hf_ieee1905_cac_capabilities_cac_mode;
558static int hf_ieee1905_cac_capabilities_cac_seconds;
559static int hf_ieee1905_cac_capabilities_op_class_num;
560static int hf_ieee1905_cac_capabilities_op_class;
561static int hf_ieee1905_cac_capabilities_channel_cnt;
562static int hf_ieee1905_cac_capabillity_channel;
563static int hf_ieee1905_multi_ap_version;
564static int hf_ieee1905_max_total_serv_prio_rules;
565static int hf_ieee1905_r2_ap_capa_reserved;
566static int hf_ieee1905_r2_ap_capa_flags;
567static int hf_ieee1905_byte_counter_units;
568static int hf_ieee1905_ctag_service_prio_flag;
569static int hf_ieee1905_dpp_onboarding_flag;
570static int hf_ieee1905_traffic_separation_flag;
571static int hf_ieee1905_r2_ap_capa_flags_reserved;
572static int hf_ieee1905_max_vid_count;
573static int hf_ieee1905_default_802_1q_settings_primary_vlan;
574static int hf_ieee1905_default_802_1q_settings_flags;
575static int hf_ieee1905_default_802_1q_settings_default_pcp;
576static int hf_ieee1905_default_802_1q_settings_reserved;
577static int hf_ieee1905_ap_radio_advanced_capa_radio_id;
578static int hf_ieee1905_radio_advanced_capa_flags;
579static int hf_ieee1905_traffic_separation_policy_num_ssids;
580static int hf_ieee1905_traffic_separation_policy_ssid_len;
581static int hf_ieee1905_traffic_separation_policy_ssid;
582static int hf_ieee1905_traffic_separation_policy_vlanid;
583static int hf_ieee1905_bss_config_report_radio_count;
584static int hf_ieee1905_bss_config_report_radio_id;
585static int hf_ieee1905_bss_config_report_flags;
586static int hf_ieee1905_bss_config_report_backhaul_bss;
587static int hf_ieee1905_bss_config_report_fronthaul_bss;
588static int hf_ieee1905_bss_config_report_r1_disallowed_status;
589static int hf_ieee1905_bss_config_report_r2_disallowed_status;
590static int hf_ieee1905_bss_config_report_multiple_bssid_set;
591static int hf_ieee1905_bss_config_report_transmitted_bssid;
592static int hf_ieee1905_bss_config_report_reserved;
593static int hf_ieee1905_bss_config_report_res;
594static int hf_ieee1905_bss_config_report_bss_cnt;
595static int hf_ieee1905_bss_config_report_mac;
596static int hf_ieee1905_bss_config_report_ssid_len;
597static int hf_ieee1905_bss_config_report_ssid;
598static int hf_ieee1905_bssid_tlv_bssid;
599static int hf_ieee1905_service_prio_rule_id;
600static int hf_ieee1905_service_prio_rule_flags;
601static int hf_ieee1905_service_prio_rule_add_remove_filter_bit;
602static int hf_ieee1905_service_prio_rule_flags_reserved;
603static int hf_ieee1905_service_prio_match_flags;
604static int hf_ieee1905_service_prio_rule_precedence;
605static int hf_ieee1905_service_prio_rule_output;
606static int hf_ieee1905_service_prio_rule_match_always;
607static int hf_ieee1905_service_prio_rule_match_reserved;
608static int hf_ieee1905_service_prio_rule_match_up_in_qos;
609static int hf_ieee1905_service_prio_rule_match_up_control_match;
610static int hf_ieee1905_service_prio_rule_match_source_mac;
611static int hf_ieee1905_service_prio_rule_match_source_mac_sense;
612static int hf_ieee1905_service_prio_rule_match_dest_mac;
613static int hf_ieee1905_service_prio_rule_match_dest_mac_sense;
614static int hf_ieee1905_service_prio_rule_up_control;
615static int hf_ieee1905_service_prio_rule_source_mac;
616static int hf_ieee1905_service_prio_rule_dest_mac;
617static int hf_ieee1905_dscp_mapping_table_val;
618static int hf_ieee1905_r2_error_reason_code;
619static int hf_ieee1905_r2_error_bssid;
620static int hf_ieee1905_r2_error_service_prio_rule_id;
621static int hf_ieee1905_r2_error_qmid;
622static int hf_ieee1905_ap_radio_advanced_capa_backhaul_bss_traffic_sep;
623static int hf_ieee1905_ap_radio_advanced_capa_combined_r1_r2_backhaul;
624static int hf_ieee1905_ap_radio_advanced_capa_mscs;
625static int hf_ieee1905_ap_radio_advanced_capa_scs;
626static int hf_ieee1905_ap_radio_advanced_capa_qos_map;
627static int hf_ieee1905_ap_radio_advanced_capa_dscp_policy;
628static int hf_ieee1905_ap_radio_advanced_capa_qm_scs_traffic_descr;
629static int hf_ieee1905_ap_radio_advanced_capa_reserved;
630static int hf_ieee1905_assoc_status_notif_num_bssid;
631static int hf_ieee1905_assoc_status_notif_bssid;
632static int hf_ieee1905_assoc_status_notif_status;
633static int hf_ieee1905_source_info_mac_addr;
634static int hf_ieee1905_tunneled_message_type;
635static int hf_ieee1905_tunneled_data;
636static int hf_ieee1905_status_code_status;
637static int hf_ieee1905_disassociation_reason_code;
638static int hf_ieee1905_backhaul_sta_radio_id;
639static int hf_ieee1905_backhaul_sta_radio_capabilities;
640static int hf_ieee1905_backhaul_sta_radio_capa_mac_included;
641static int hf_ieee1905_backhaul_sta_radio_capa_reserved;
642static int hf_ieee1905_backhaul_sta_addr;
643static int hf_ieee1905_backhaul_akm_suite_capa_count;
644static int hf_ieee1905_akm_backhaul_suite_oui;
645static int hf_ieee1905_akm_backhaul_suite_type;
646static int hf_ieee1905_fronthaul_akm_suite_capa_count;
647static int hf_ieee1905_akm_fronthaul_suite_oui;
648static int hf_ieee1905_akm_fronthaul_suite_type;
649static int hf_ieee1905_encap_dpp_flags;
650static int hf_ieee1905_dpp_encap_enrollee_mac_present;
651static int hf_ieee1905_dpp_encap_reserved;
652static int hf_ieee1905_dpp_encap_frame_type_flag;
653static int hf_ieee1905_dpp_encap_reserved2;
654static int hf_ieee1905_encap_dpp_sta_mac;
655static int hf_ieee1905_dpp_encap_frame_type;
656static int hf_ieee1905_dpp_encap_frame_length;
657static int hf_ieee1905_dpp_encap_dpp_oui;
658static int hf_ieee1905_dpp_encap_public_action;
659static int hf_ieee1905_dpp_encap_dpp_subtype;
660static int hf_ieee1905_dpp_bootstrapping_uri_radio_id;
661static int hf_ieee1905_dpp_bootstrapping_uri_local_mac_addr;
662static int hf_ieee1905_dpp_bootstrapping_uri_bsta_mac_addr;
663static int hf_ieee1905_dpp_bootstrapping_uri_received;
664static int hf_ieee1905_dpp_advertise_cce_flag;
665static int hf_ieee1905_dpp_chirp_value_flags;
666static int hf_ieee1905_dpp_chirp_enrollee_mac_addr_present;
667static int hf_ieee1905_dpp_chirp_hash_validity;
668static int hf_ieee1905_dpp_chirp_reserved;
669static int hf_ieee1905_dpp_chirp_enrollee_mac_addr;
670static int hf_ieee1905_dpp_chirp_value_hash_length;
671static int hf_ieee1905_dpp_chirp_value_hash_value;
672static int hf_ieee1905_dev_inventory_lsn;
673static int hf_ieee1905_dev_inventory_serial;
674static int hf_ieee1905_dev_inventory_lsv;
675static int hf_ieee1905_dev_inventory_sw_vers;
676static int hf_ieee1905_dev_inventory_lee;
677static int hf_ieee1905_dev_inventory_exec_env;
678static int hf_ieee1905_dev_inventory_num_radios;
679static int hf_ieee1905_dev_inventory_radio_id;
680static int hf_ieee1905_dev_inventory_lcv;
681static int hf_ieee1905_dev_inventory_chp_ven;
682static int hf_ieee1905_r2_steering_req_src_bssid;
683static int hf_ieee1905_r2_steering_req_flags;
684static int hf_ieee1905_r2_steering_request_mode_flag;
685static int hf_ieee1905_r2_btm_disassoc_imminent_flag;
686static int hf_ieee1905_r2_btm_abridged_flag;
687static int hf_ieee1905_r2_steering_req_reserved;
688static int hf_ieee1905_r2_steering_op_window;
689static int hf_ieee1905_r2_steering_btm_disassoc_tmr;
690static int hf_ieee1905_r2_steering_sta_count;
691static int hf_ieee1905_r2_steering_sta_mac;
692static int hf_ieee1905_r2_steering_target_count;
693static int hf_ieee1905_r2_steering_target_bssid;
694static int hf_ieee1905_r2_steering_target_op_class;
695static int hf_ieee1905_r2_steering_target_channel;
696static int hf_ieee1905_r2_steering_reason;
697static int hf_ieee1905_metric_collection_interval;
698static int hf_ieee1905_max_reporting_rate;
699static int hf_ieee1905_bss_configuration_request;
700static int hf_ieee1905_bss_configuration_response;
701static int hf_ieee1905_dpp_message_public_action;
702static int hf_ieee1905_spatial_reuse_req_radio_id;
703static int hf_ieee1905_spatial_reuse_color_flags;
704static int hf_ieee1905_spatial_reuse_reserved;
705static int hf_ieee1905_spatial_reuse_bss_color;
706static int hf_ieee1905_spatial_reuse_hesiga_flags;
707static int hf_ieee1905_spatial_reuse_reserved2;
708static int hf_ieee1905_spatial_reuse_hesiga_value15_allowed;
709static int hf_ieee1905_spatial_reuse_srg_info_valid;
710static int hf_ieee1905_spatial_reuse_non_srg_offset_valid;
711static int hf_ieee1905_spatial_reuse_reserved3;
712static int hf_ieee1905_spatial_reuse_psr_disallowed;
713static int hf_ieee1905_spatial_reuse_non_srg_obsspd_max_offset;
714static int hf_ieee1905_spatial_reuse_not_valid1;
715static int hf_ieee1905_spatial_reuse_srg_obsspd_min_offset;
716static int hf_ieee1905_spatial_reuse_srg_obsspd_max_offset;
717static int hf_ieee1905_spatial_reuse_srg_bss_color_bitmap;
718static int hf_ieee1905_spatial_reuse_srg_partial_bssid_bitmap;
719static int hf_ieee1905_spatial_reuse_not_valid2;
720static int hf_ieee1905_spatial_reuse_not_valid3;
721static int hf_ieee1905_spatial_reuse_not_valid4;
722static int hf_ieee1905_spatial_reuse_not_valid5;
723static int hf_ieee1905_spatial_reuse_reserved4;
724static int hf_ieee1905_spatial_reuse_rep_radio_id;
725static int hf_ieee1905_spatial_reuse_rep_color_flags;
726static int hf_ieee1905_spatial_reuse_rep_reserved;
727static int hf_ieee1905_spatial_reuse_rep_partial_bss_color;
728static int hf_ieee1905_spatial_reuse_rep_bss_color;
729static int hf_ieee1905_spatial_reuse_rep_hesiga_flags;
730static int hf_ieee1905_spatial_reuse_rep_reserved2;
731static int hf_ieee1905_spatial_reuse_rep_hesiga_value15_allowed;
732static int hf_ieee1905_spatial_reuse_rep_srg_info_valid;
733static int hf_ieee1905_spatial_reuse_rep_non_srg_offset_valid;
734static int hf_ieee1905_spatial_reuse_rep_reserved3;
735static int hf_ieee1905_spatial_reuse_rep_psr_disallowed;
736static int hf_ieee1905_spatial_reuse_rep_non_srg_obsspd_max_offset;
737static int hf_ieee1905_spatial_reuse_rep_not_valid1;
738static int hf_ieee1905_spatial_reuse_rep_srg_obsspd_min_offset;
739static int hf_ieee1905_spatial_reuse_rep_srg_obsspd_max_offset;
740static int hf_ieee1905_spatial_reuse_rep_srg_bss_color_bitmap;
741static int hf_ieee1905_spatial_reuse_rep_srg_partial_bssid_bitmap;
742static int hf_ieee1905_spatial_reuse_rep_not_valid2;
743static int hf_ieee1905_spatial_reuse_rep_not_valid3;
744static int hf_ieee1905_spatial_reuse_rep_not_valid4;
745static int hf_ieee1905_spatial_reuse_rep_not_valid5;
746static int hf_ieee1905_spatial_reuse_rep_nbor_bss_color_bitmap;
747static int hf_ieee1905_spatial_reuse_rep_reserved4;
748static int hf_ieee1905_spatial_reuse_config_radio_id;
749static int hf_ieee1905_spatial_reuse_config_response;
750static int hf_ieee1905_qos_mgmt_policy_mscs_disallowed;
751static int hf_ieee1905_qos_mgmt_mscs_disallow_sta;
752static int hf_ieee1905_qos_mgmt_policy_scs_disallowed;
753static int hf_ieee1905_qos_mgmt_scs_disallow_sta;
754static int hf_ieee1905_qos_mgmt_desc_qmid;
755static int hf_ieee1905_qos_mgmt_desc_bssid;
756static int hf_ieee1905_qos_mgmt_desc_client_mac;
757static int hf_ieee1905_controller_capa_flags;
758static int hf_ieee1905_controller_capa_reserved;
759static int hf_ieee1905_controller_capa_early_ap_capa;
760static int hf_ieee1905_controller_capa_kbmb_counter;
761static int hf_ieee1905_wifi_7_agent_capabilities_max_num_mlds;
762static int hf_ieee1905_wifi_7_agent_capabilities_flags;
763static int hf_ieee1905_wifi_7_agent_capabilities_flags_sta_max_links;
764static int hf_ieee1905_wifi_7_agent_capabilities_flags_ap_max_links;
765static int hf_ieee1905_wifi_7_agent_capabilities_flags_ttl_mapping_cap;
766static int hf_ieee1905_wifi_7_agent_capabilities_flags_reserved;
767static int hf_ieee1905_wifi_7_agent_capabilities_reserved;
768static int hf_ieee1905_wifi_7_agent_capabilities_radio_num;
769static int hf_ieee1905_wifi_7_agent_capabilities_radio_id;
770static int hf_ieee1905_wifi_7_agent_capabilities_radio_reserved;
771static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags;
772static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_str_support;
773static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_nstr_support;
774static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_emlsr_support;
775static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_emlmr_support;
776static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_reserved1;
777static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_str_support;
778static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_nstr_support;
779static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_emlsr_support;
780static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_emlmr_support;
781static int hf_ieee1905_wifi_7_agent_capabilities_radio_flags_reserved2;
782static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_str_records;
783static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_nstr_records;
784static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_emlsr_records;
785static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_emlmr_records;
786static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_str_records;
787static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_nstr_records;
788static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_emlsr_records;
789static int hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_emlmr_records;
790static int hf_ieee1905_wifi_7_agent_capabilities_radio_record_id;
791static int hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags;
792static int hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags_freq_separation;
793static int hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags_reserved;
794static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_num;
795static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags;
796static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags_ap_mld_mac_addr_valid;
797static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags_reserved;
798static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_ssid_len;
799static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_ssid;
800static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_mac_addr;
801static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2;
802static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_str;
803static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_nstr;
804static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_emlsr;
805static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_emlmr;
806static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_reserved;
807static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_reserved;
808static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_num;
809static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags;
810static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_affiliated_ap_mac_addr_valid;
811static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_link_id_valid;
812static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_reserved;
813static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_radio_id;
814static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_mac_addr;
815static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_link_id;
816static int hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_reserved;
817static int hf_ieee1905_backhaul_sta_mld_configuration_flags;
818static int hf_ieee1905_backhaul_sta_mld_configuration_flags_bsta_mld_mac_addr_valid;
819static int hf_ieee1905_backhaul_sta_mld_configuration_flags_ap_mld_mac_addr_valid;
820static int hf_ieee1905_backhaul_sta_mld_configuration_flags_reserved;
821static int hf_ieee1905_backhaul_sta_mld_configuration_bsta_mld_mac_addr;
822static int hf_ieee1905_backhaul_sta_mld_configuration_ap_mld_mac_addr;
823static int hf_ieee1905_backhaul_sta_mld_configuration_flags2;
824static int hf_ieee1905_backhaul_sta_mld_configuration_flags2_str;
825static int hf_ieee1905_backhaul_sta_mld_configuration_flags2_nstr;
826static int hf_ieee1905_backhaul_sta_mld_configuration_flags2_emlsr;
827static int hf_ieee1905_backhaul_sta_mld_configuration_flags2_emlmr;
828static int hf_ieee1905_backhaul_sta_mld_configuration_flags2_reserved;
829static int hf_ieee1905_backhaul_sta_mld_configuration_reserved;
830static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_num;
831static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags;
832static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags_affiliated_bsta_mac_addr_valid;
833static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags_reserved;
834static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_radio_id;
835static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_mac_addr;
836static int hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_reserved;
837static int hf_ieee1905_associated_sta_mld_configuration_sta_mld_mac_addr;
838static int hf_ieee1905_associated_sta_mld_configuration_ap_mld_mac_addr;
839static int hf_ieee1905_associated_sta_mld_configuration_flags;
840static int hf_ieee1905_associated_sta_mld_configuration_flags_str;
841static int hf_ieee1905_associated_sta_mld_configuration_flags_nstr;
842static int hf_ieee1905_associated_sta_mld_configuration_flags_emlsr;
843static int hf_ieee1905_associated_sta_mld_configuration_flags_emlmr;
844static int hf_ieee1905_associated_sta_mld_configuration_flags_reserved;
845static int hf_ieee1905_associated_sta_mld_configuration_reserved;
846static int hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_num;
847static int hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_bssid;
848static int hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_mac_addr;
849static int hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_reserved;
850static int hf_ieee1905_mld_structure_mld_mac_addr;
851static int hf_ieee1905_mld_structure_reserved;
852static int hf_ieee1905_mld_structure_affiliated_num;
853static int hf_ieee1905_mld_structure_affiliated_mac_addr;
854static int hf_ieee1905_mld_structure_affiliated_reserved;
855static int hf_ieee1905_affiliated_sta_metrics_sta_mac_addr;
856static int hf_ieee1905_affiliated_sta_metrics_bytes_sent;
857static int hf_ieee1905_affiliated_sta_metrics_bytes_rcvd;
858static int hf_ieee1905_affiliated_sta_metrics_packets_sent;
859static int hf_ieee1905_affiliated_sta_metrics_packets_rcvd;
860static int hf_ieee1905_affiliated_sta_metrics_packets_sent_errors;
861static int hf_ieee1905_affiliated_sta_metrics_reserved;
862static int hf_ieee1905_affiliated_ap_metrics_bssid;
863static int hf_ieee1905_affiliated_ap_metrics_packets_sent;
864static int hf_ieee1905_affiliated_ap_metrics_packets_rcvd;
865static int hf_ieee1905_affiliated_ap_metrics_packets_sent_errors;
866static int hf_ieee1905_affiliated_ap_metrics_ucast_bytes_sent;
867static int hf_ieee1905_affiliated_ap_metrics_ucast_bytes_rcvd;
868static int hf_ieee1905_affiliated_ap_metrics_mcast_bytes_sent;
869static int hf_ieee1905_affiliated_ap_metrics_mcast_bytes_rcvd;
870static int hf_ieee1905_affiliated_ap_metrics_bcast_bytes_sent;
871static int hf_ieee1905_affiliated_ap_metrics_bcast_bytes_rcvd;
872static int hf_ieee1905_affiliated_ap_metrics_reserved;
873static int hf_ieee1905_tid_to_link_mapping_policy_flags;
874static int hf_ieee1905_tid_to_link_mapping_policy_flags_bsta_config;
875static int hf_ieee1905_tid_to_link_mapping_policy_flags_reserved;
876static int hf_ieee1905_tid_to_link_mapping_policy_mld_mac_addr;
877static int hf_ieee1905_tid_to_link_mapping_policy_flags2;
878static int hf_ieee1905_tid_to_link_mapping_policy_flags2_ttlm_negotiation;
879static int hf_ieee1905_tid_to_link_mapping_policy_flags2_reserved;
880static int hf_ieee1905_tid_to_link_mapping_policy_reserved;
881static int hf_ieee1905_tid_to_link_mapping_policy_mapping_num;
882static int hf_ieee1905_tid_to_link_mapping_policy_mapping_flags;
883static int hf_ieee1905_tid_to_link_mapping_policy_mapping_flags_add;
884static int hf_ieee1905_tid_to_link_mapping_policy_mapping_flags_reserved;
885static int hf_ieee1905_tid_to_link_mapping_policy_sta_mld_mac_addr;
886static int hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2;
887static int hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_direction;
888static int hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_default_link_mapping;
889static int hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_mapping_switch_time_present;
890static int hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_expected_duration_present;
891static int hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_link_mapping_size;
892static int hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_reserved;
893static int hf_ieee1905_tid_to_link_mapping_policy_link_mapping_presence_indicator;
894static int hf_ieee1905_tid_to_link_mapping_policy_expected_duration;
895static int hf_ieee190t_tid_to_link_mapping_policy_tid_n_link_mapping[8];
896static int hf_ieee1905_tid_to_link_mapping_policy_mapping_reserved;
897static int hf_ieee1905_eht_operations_reserved;
898static int hf_ieee1905_eht_operations_radio_num;
899static int hf_ieee1905_eht_operations_radio_id;
900static int hf_ieee1905_eht_operations_radio_reserved;
901static int hf_ieee1905_eht_operations_radio_bss_num;
902static int hf_ieee1905_eht_operations_radio_bss_bssid;
903static int hf_ieee1905_eht_operations_radio_bss_reserved;
904static int hf_ieee1905_eht_operations_radio_bss_flags;
905static int hf_ieee1905_eht_operations_radio_bss_flags_eht_operation_information_valid;
906static int hf_ieee1905_eht_operations_radio_bss_flags_disabled_subchannel_valid;
907static int hf_ieee1905_eht_operations_radio_bss_flags_eht_default_pe_duration;
908static int hf_ieee1905_eht_operations_radio_bss_flags_group_addr_bu_indication_limit;
909static int hf_ieee1905_eht_operations_radio_bss_flags_group_addr_bu_indication_exponent;
910static int hf_ieee1905_eht_operations_radio_bss_flags_reserved;
911static int hf_ieee1905_eht_operations_radio_bss_basic_eht_nss_mcs_set;
912static int hf_ieee1905_eht_operations_radio_bss_control;
913static int hf_ieee1905_eht_operations_radio_bss_ccfs0;
914static int hf_ieee1905_eht_operations_radio_bss_ccfs1;
915static int hf_ieee1905_eht_operations_radio_bss_disabled_subchannel_bitmap;
916static int hf_ieee1905_available_spectrum_inquiry_request_object;
917static int hf_ieee1905_available_spectrum_inquiry_response_object;
918static int hf_ieee1905_rsn_diagnostic_report_rsn_error;
919static int hf_ieee1905_rsn_diagnostic_report_reserved;
920static int hf_ieee1905_rsn_diagnostic_report_frame_body_len;
921static int hf_ieee1905_rsn_diagnostic_report_frame_body;
922static int hf_ieee1905_rsn_parameter_configuration_radio_num;
923static int hf_ieee1905_rsn_parameter_configuration_radio_id;
924static int hf_ieee1905_rsn_parameter_configuration_radio_reserved;
925static int hf_ieee1905_rsn_parameter_configuration_radio_bss_num;
926static int hf_ieee1905_rsn_parameter_configuration_radio_bss_bssid;
927static int hf_ieee1905_rsn_parameter_configuration_radio_bss_index;
928static int hf_ieee1905_rsn_parameter_configuration_radio_bss_security_ies_len;
929static int hf_ieee1905_rsn_parameter_configuration_radio_bss_security_ies;
930static int hf_ieee1905_rsn_parameter_configuration_radio_bss_reserved;
931static int hf_ieee1905_bss_advanced_configuration_radio_num;
932static int hf_ieee1905_bss_advanced_configuration_radio_id;
933static int hf_ieee1905_bss_advanced_configuration_radio_bss_num;
934static int hf_ieee1905_bss_advanced_configuration_radio_bss_bssid;
935static int hf_ieee1905_bss_advanced_configuration_radio_bss_index;
936static int hf_ieee1905_bss_advanced_configuration_radio_bss_flags;
937static int hf_ieee1905_bss_advanced_configuration_radio_bss_flags_ssid_advertisement;
938static int hf_ieee1905_bss_advanced_configuration_radio_bss_flags_reserved;
939static int hf_ieee1905_bss_advanced_configuration_radio_bss_reserved;
940static int hf_ieee1905_supported_cipher_suites_num_cs;
941static int hf_ieee1905_supported_cipher_suites_cs_list;
942static int hf_ieee1905_supported_cipher_suites_cs;
943static int hf_ieee1905_supported_cipher_suites_cs_oui;
944static int hf_ieee1905_supported_cipher_suites_cs_type;
945
946static int ett_ieee1905;
947static int ett_ieee1905_flags;
948static int ett_ieee1905_tlv_len;
949static int ett_tlv;
950static int ett_device_information_list;
951static int ett_device_information_tree;
952static int ett_media_type;
953static int ett_bridging_tuples_list;
954static int ett_bridging_mac_list;
955static int ett_non_1905_neighbor_list;
956static int ett_1905_neighbor_list;
957static int ett_ieee1905_neighbor_flags;
958static int ett_media_type_list;
959static int ett_media_item;
960static int ett_local_interface_list;
961static int ett_local_interface_info;
962static int ett_ipv4_list;
963static int ett_ipv4_info;
964static int ett_ipv4_type_addr_list;
965static int ett_ipv4_addr_info;
966static int ett_ipv6_list;
967static int ett_ipv6_info;
968static int ett_ipv6_type_addr_list;
969static int ett_ipv6_addr_info;
970static int ett_push_button_phy_list;
971static int ett_push_button_phy_info;
972static int ett_power_off_info;
973static int ett_power_change_list;
974static int ett_power_change_info;
975static int ett_power_status_list;
976static int ett_power_status_info;
977static int ett_l2_local_intf_list;
978static int ett_l2_neighbor_device_info;
979static int ett_l2_neighbor_dev_list;
980static int ett_l2_neighbor_dev_tree;
981static int ett_supported_service_list;
982static int ett_searched_service_list;
983static int ett_ap_operational_bss_list;
984static int ett_ap_operational_bss_tree;
985static int ett_ap_operational_bss_intf;
986static int ett_ap_operational_bss_intf_list;
987static int ett_ap_operational_bss_intf_tree;
988static int ett_ieee1905_capabilities_flags;
989static int ett_ieee1905_unsuccessful_associations;
990static int ett_assoc_control_list;
991static int ett_ieee1905_steering_request_flags;
992static int ett_ieee1905_association_event_flags;
993static int ett_client_capability_body;
994static int ett_radio_basic_class_list;
995static int ett_ap_radio_basic_cap_class_tree;
996static int ett_radio_basic_non_op_list;
997static int ett_ht_cap_flags;
998static int ett_vht_cap_flags;
999static int ett_ieee1905_ap_vht_tx_mcs_set;
1000static int ett_ieee1905_ap_vht_rx_mcs_set;
1001static int ett_assoc_clients_bss_list;
1002static int ett_assoc_client_bss_tree;
1003static int ett_assoc_client_list;
1004static int ett_assoc_client_tree;
1005static int ett_channel_preference_class_list;
1006static int ett_ap_channel_preference_class_tree;
1007static int ett_channel_pref_channel_list;
1008static int ett_ieee1905_channel_prefs_flags;
1009static int ett_op_channel_report_class_tree;
1010static int ett_op_channel_report_class_list;
1011static int ett_sta_link_metrics_query_channel_list;
1012static int ett_sta_link_link_mac_addr_list;
1013static int ett_metric_reporting_policy_list;
1014static int ett_metric_reporting_policy_tree;
1015static int ett_metric_policy_flags;
1016static int ett_ap_metric_query_bssid_list;
1017static int ett_ieee1905_ap_metrics_flags;
1018static int ett_sta_list_metrics_bss_list;
1019static int ett_sta_list_metrics_bss_tree;
1020static int ett_sta_wf6_status_report_tid_list;
1021static int ett_sta_wf6_status_report_tid_tree;
1022static int ett_sta_extended_link_metrics_list;
1023static int ett_sta_extended_link_metrics_tree;
1024static int ett_ap_he_mcs_set;
1025static int ett_ap_he_cap_flags;
1026static int ett_ieee1905_ap_he_tx_mcs_set;
1027static int ett_ieee1905_ap_he_rx_mcs_set;
1028static int ett_steering_policy_disallowed_list;
1029static int ett_btm_steering_policy_disallowed_list;
1030static int ett_btm_steering_radio_list;
1031static int ett_radio_restriction_op_class_list;
1032static int ett_radio_restriction_op_class_tree;
1033static int ett_radio_restriction_channel_list;
1034static int ett_radio_restriction_channel_tree;
1035static int ett_unassoc_sta_link_metric_list;
1036static int ett_unassoc_sta_link_metric_tree;
1037static int ett_beacon_metrics_query_list;
1038static int ett_beacon_metrics_query_tree;
1039static int ett_beacon_metrics_query_channel_list;
1040static int ett_beacon_report_subelement_list;
1041static int ett_beacon_report_sub_element_tree;
1042static int ett_beacon_metrics_response_report_list;
1043static int ett_beacon_metrics_response_report_tree;
1044static int ett_ieee1905_beacon_reported_flags;
1045static int ett_channel_scan_rep_policy;
1046static int ett_channel_scan_capa_radio_list;
1047static int ett_channel_scan_capa_radio;
1048static int ett_channel_scan_capa_flags;
1049static int ett_channel_scan_capa_class_list;
1050static int ett_channel_scan_capa_class;
1051static int ett_channel_scan_capa_channels;
1052static int ett_channel_scan_request_flags;
1053static int ett_channel_scan_request_radio_list;
1054static int ett_channel_scan_request_radio;
1055static int ett_channel_scan_request_class_list;
1056static int ett_channel_scan_request_class;
1057static int ett_channel_scan_request_channels;
1058static int ett_channel_scan_result_neigh_list;
1059static int ett_channel_scan_result_neigh_flags;
1060static int ett_channel_scan_result_neigh;
1061static int ett_channel_scan_result_flags;
1062static int ett_ap_wf6_role_list;
1063static int ett_ap_wf6_role_tree;
1064static int ett_ap_wf6_agent_role_flags;
1065static int ett_ap_wf6_supported_flags;
1066static int ett_ap_wf6_mimo_max_flags;
1067static int ett_ap_wf6_gen_flags;
1068static int ett_encrypted_decrypted;
1069static int ett_agent_list_agent_list;
1070static int ett_agent_list_agent;
1071static int ett_cac_request_flags;
1072static int ett_cac_request_radio_list;
1073static int ett_cac_request_radio;
1074static int ett_cac_terminate_radio_list;
1075static int ett_cac_terminate_radio;
1076static int ett_cac_completion_radio_list;
1077static int ett_cac_completion_radio;
1078static int ett_cac_completion_radar_list;
1079static int ett_cac_completion_radar;
1080static int ett_cac_status_rpt_avail_list;
1081static int ett_cac_status_rpt_avail_chan;
1082static int ett_cac_status_rpt_non_occupy_list;
1083static int ett_cac_status_rpt_unocc_chan;
1084static int ett_cac_status_rpt_active_cac_list;
1085static int ett_cac_status_rpt_active_cac_tree;
1086static int ett_cac_capabilities_radio_list;
1087static int ett_cac_capabilities_radio_tree;
1088static int ett_cac_capabilities_type_list;
1089static int ett_cac_capabilities_type_tree;
1090static int ett_cac_capabilities_class_list;
1091static int ett_cac_capabilities_class_tree;
1092static int ett_cac_capabilities_channel_list;
1093static int ett_cac_capabilities_channel;
1094static int ett_r2_ap_capa_flags;
1095static int ett_edge_interface_list;
1096static int ett_radio_advanced_capa_flags;
1097static int ett_ap_operational_backhaul_bss_tree;
1098static int ett_ap_operational_backhaul_bss_intf_list;
1099static int ett_default_802_1q_settings_flags;
1100static int ett_traffic_separation_ssid_list;
1101static int ett_traffic_separation_ssid;
1102static int ett_bss_config_report_list;
1103static int ett_bss_config_report_tree;
1104static int ett_bss_config_report_bss_list;
1105static int ett_bss_config_report_bss_tree;
1106static int ett_bss_config_report_flags;
1107static int ett_ethernet_config_policy_list;
1108static int ett_ethernet_config_policy;
1109static int ett_ethernet_config_policy_flags;
1110static int ett_ieee1905_service_prio_rule_flags;
1111static int ett_ieee1905_service_prio_rule_match_flags;
1112static int ett_backhaul_sta_radio_capa_flags;
1113static int ett_assoc_status_notif_bssid_list;
1114static int ett_assoc_status_notif_bssid_tree;
1115static int ett_tunneled_body;
1116static int ett_akm_suite_list;
1117static int ett_akm_suite;
1118static int ett_backhaul_akm_suite_list;
1119static int ett_backhaul_akm_suite;
1120static int ett_fronthaul_akm_suite_list;
1121static int ett_fronthaul_akm_suite;
1122static int ett_1905_encap_dpp_flags;
1123static int ett_1905_encap_dpp_classes;
1124static int ett_1905_encap_dpp_op_class_tree;
1125static int ett_1905_encap_dpp_channel_list;
1126static int ett_ieee1905_dpp_chirp;
1127static int ett_device_inventory_radio_list;
1128static int ett_device_inventory_radio_tree;
1129static int ett_r2_steering_sta_list;
1130static int ett_r2_steering_target_list;
1131static int ett_r2_steering_target;
1132static int ett_mic_group_temporal_key;
1133static int ett_mic_check;
1134static int ett_ieee1905_spatial_reuse_color;
1135static int ett_ieee1905_spatial_reuse_hesiga;
1136static int ett_ieee1905_spatial_reuse_rep_color;
1137static int ett_ieee1905_spatial_reuse_rep_hesiga;
1138static int ett_qos_mgmt_policy_mscs_list;
1139static int ett_qos_mgmt_policy_scs_list;
1140static int ett_ieee1905_controller_capa;
1141static int ett_wifi_7_agent_capabilities_flags;
1142static int ett_wifi_7_agent_capabilities_radio_list;
1143static int ett_wifi_7_agent_capabilities_radio;
1144static int ett_wifi_7_agent_capabilities_radio_flags;
1145static int ett_wifi_7_agent_capabilities_radio_record_list;
1146static int ett_wifi_7_agent_capabilities_radio_record;
1147static int ett_wifi_7_agent_capabilities_radio_record_flags;
1148static int ett_agent_ap_mld_configuration_ap_mld_list;
1149static int ett_agent_ap_mld_configuration_ap_mld;
1150static int ett_agent_ap_mld_configuration_ap_mld_flags;
1151static int ett_agent_ap_mld_configuration_ap_mld_flags2;
1152static int ett_agent_ap_mld_configuration_ap_mld_affiliated_ap_list;
1153static int ett_agent_ap_mld_configuration_ap_mld_affiliated_ap;
1154static int ett_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags;
1155static int ett_backhaul_sta_mld_configuration_flags;
1156static int ett_backhaul_sta_mld_configuration_flags2;
1157static int ett_backhaul_sta_mld_configuration_affiliated_bsta_list;
1158static int ett_backhaul_sta_mld_configuration_affiliated_bsta;
1159static int ett_backhaul_sta_mld_configuration_affiliated_bsta_flags;
1160static int ett_associated_sta_mld_configuration_flags;
1161static int ett_associated_sta_mld_configuration_affiliated_sta_list;
1162static int ett_associated_sta_mld_configuration_affiliated_sta;
1163static int ett_mld_structure_affiliated_list;
1164static int ett_mld_structure_affiliated;
1165static int ett_tid_to_link_mapping_policy_flags;
1166static int ett_tid_to_link_mapping_policy_flags2;
1167static int ett_tid_to_link_mapping_policy_mapping_flags;
1168static int ett_tid_to_link_mapping_policy_mapping_flags2;
1169static int ett_tid_to_link_mapping_mapping_list;
1170static int ett_tid_to_link_mapping_mapping;
1171static int ett_eht_operations_radio_list;
1172static int ett_eht_operations_radio;
1173static int ett_eht_operations_radio_bss_list;
1174static int ett_eht_operations_radio_bss;
1175static int ett_eht_operations_radio_bss_flags;
1176static int ett_rsn_diagnostic_report_frame_body;
1177static int ett_rsn_parameter_configuration_radio_list;
1178static int ett_rsn_parameter_configuration_radio;
1179static int ett_rsn_parameter_configuration_radio_bss_list;
1180static int ett_rsn_parameter_configuration_radio_bss;
1181static int ett_rsn_parameter_configuration_radio_bss_security_ies;
1182static int ett_bss_advanced_configuration_radio_list;
1183static int ett_bss_advanced_configuration_radio;
1184static int ett_bss_advanced_configuration_radio_bss_list;
1185static int ett_bss_advanced_configuration_radio_bss;
1186static int ett_bss_advanced_configuration_radio_bss_flags;
1187static int ett_supported_cipher_security_cs_tree;
1188static int ett_supported_cipher_security_cs_sub_tree;
1189
1190static int ett_ieee1905_fragment;
1191static int ett_ieee1905_fragments;
1192
1193static expert_field ei_ieee1905_malformed_tlv;
1194static expert_field ei_ieee1905_extraneous_tlv_data;
1195static expert_field ei_ieee1905_mic_check_unsupported;
1196static expert_field ei_ieee1905_mic_check_failed;
1197
1198typedef enum {
1199 DECRYPT_MIC_CMDU_OCTETS_KEY,
1200 MIC_TLVS_KEY,
1201 MIC_TLVS_LEN_KEY,
1202 MIC_EOM_KEY,
1203 TUNNELED_MESSAGE_TYPE_KEY,
1204 TUNNELED_MESSAGE_TYPE_SET_KEY
1205} ieee1905_proto_key_t;
1206
1207#define TOPOLOGY_DISCOVERY_MESSAGE0x0000 0x0000
1208#define TOPOLOGY_NOTIFICATION_MESSAGE0x0001 0x0001
1209#define TOPOLOGY_QUERY_MESSAGE0x0002 0x0002
1210#define TOPOLOGY_RESPONSE_MESSAGE0x0003 0x0003
1211#define VENDOR_SPECIFIC_MESSAGE0x0004 0x0004
1212#define LINK_METRIC_QUERY_MESSAGE0x0005 0x0005
1213#define LINK_METRIC_RESPONSE_MESSAGE0x0006 0x0006
1214#define AP_AUTOCONFIGURATION_SEARCH_MESSAGE0x0007 0x0007
1215#define AP_AUTOCONFIGURATION_RESPONSE_MESSAGE0x0008 0x0008
1216#define AP_AUTOCONFIGURATION_WSC_MESSAGE0x0009 0x0009
1217#define AP_AUTOCONFIGURATION_RENEW_MESSAGE0x000A 0x000A
1218#define IEEE1905_PUSH_BUTTON_EVENT_NOTIFICATION_MESSAGE0x000B 0x000B
1219#define IEEE1905_PUSH_BUTTON_JOIN_NOTIFICATION_MESSAGE0x000C 0x000C
1220#define HIGHER_LAYER_QUERY_MESSAGE0x000D 0x000D
1221#define HIGHER_LAYER_RESPONSE_MESSAGE0x000E 0x000E
1222#define INTERFACE_POWER_CHANGE_REQUEST_MESSAGE0x000F 0x000F
1223#define INTERFACE_POWER_CHANGE_RESPONSE_MESSAGE0x0010 0x0010
1224#define GENERIC_PHY_QUERY_MESSAGE0x0011 0x0011
1225#define GENERIC_PHY_RESPONSE_MESSAGE0x0012 0x0012
1226#define IEEE1905_ACK_MESSAGE0x8000 0x8000
1227#define AP_CAPABILITY_QUERY_MESSAGE0x8001 0x8001
1228#define AP_CAPABILITY_REPORT_MESSAGE0x8002 0x8002
1229#define MULTI_AP_POLICY_CONFIG_REQUEST_MESSAGE0x8003 0x8003
1230#define CHANNEL_PREFERENCE_QUERY_MESSAGE0x8004 0x8004
1231#define CHANNEL_PREFERENCE_REPORT_MESSAGE0x8005 0x8005
1232#define CHANNEL_SELECTION_REQUEST_MESSAGE0x8006 0x8006
1233#define CHANNEL_SELECTION_RESPONSE_MESSAGE0x8007 0x8007
1234#define OPERATING_CHANNEL_REPORT_MESSAGE0x8008 0x8008
1235#define CLIENT_CAPABILITIES_QUERY_MESSAGE0x8009 0x8009
1236#define CLIENT_CAPABILITIES_REPORT_MESSAGE0x800A 0x800A
1237#define AP_METRICS_QUERY_MESSAGE0x800B 0x800B
1238#define AP_METRICS_RESPONSE_MESSAGE0x800C 0x800C
1239#define ASSOCIATED_STA_LINK_METRICS_QUERY_MESSAGE0x800D 0x800D
1240#define ASSOCIATED_STA_LINK_METRICS_RESPONSE_MESSAGE0x800E 0x800E
1241#define UNASSOCIATED_STA_LINK_METRICS_QUERY_MESSAGE0x800F 0x800F
1242#define UNASSOCIATED_STA_LINK_METRICS_RESPONSE_MESSAGE0x8010 0x8010
1243#define BEACON_METRICS_QUERY_MESSAGE0x8011 0x8011
1244#define BEACON_METRICS_RESPONSE_METRICS0x8012 0x8012
1245#define COMBINED_INFRASTRUCTURE_METRICS_MESSAGE0x8013 0x8013
1246#define CLIENT_STEERING_REQUEST_MESSAGE0x8014 0x8014
1247#define CLIENT_STEERING_BTM_REPORT_MESSAGE0x8015 0x8015
1248#define CLIENT_ASSOCIATION_CONTROL_REQUEST_MESSAGE0x8016 0x8016
1249#define STEERING_COMPLETED_MESSAGE0x8017 0x8017
1250#define HIGHER_LAYER_DATA_MESSAGE0x8018 0x8018
1251#define BACKHAUL_STEERING_REQUEST_MESSAGE0x8019 0x8019
1252#define BACKHAUL_STEERING_RESPONSE_MESSAGE0x801A 0x801A
1253#define CHANNEL_SCAN_REQUEST_MESSAGE0x801B 0x801B
1254#define CHANNEL_SCAN_REPORT_MESSAGE0x801C 0x801C
1255#define DPP_CCE_INDICATION_MESSAGE0x801D 0x801D
1256#define IEEE1905_REKEY_REQUEST_MESSAGE0x801E 0x801E
1257#define IEEE1905_DECRYPTION_FAILURE0x801F 0x801F
1258#define CAC_REQUEST_MESSAGE0x8020 0x8020
1259#define CAC_TERMINATION_MESSAGE0x8021 0x8021
1260#define CLIENT_DISASSOCIATION_STATS_MESSAGE0x8022 0x8022
1261#define SERVICE_PRIORITIZATION_REQUEST0x8023 0x8023
1262#define ERROR_RESPONSE_MESSAGE0x8024 0x8024
1263#define ASSOCIATION_STATUS_NOTIFICATION_MESSAGE0x8025 0x8025
1264#define TUNNELLED_MESSAGE0x8026 0x8026
1265#define BACKHAUL_STA_CAPABILITY_QUERY_MESSAGE0x8027 0x8027
1266#define BACKHAUL_STA_CAPABILITY_REPORT_MESSAGE0x8028 0x8028
1267#define PROXIED_ENCAP_DPP_MESSAGE0x8029 0x8029
1268#define DIRECT_ENCAP_DPP_MESSAGE0x802A 0x802A
1269#define RECONFIGURATION_TRIGGER_MESSAGE0x802B 0x802B
1270#define BSS_CONFIGURATION_REQUEST_MESSAGE0x802C 0x802C
1271#define BSS_CONFIGURATION_RESPONSE_MESSAGE0x802D 0x802D
1272#define BSS_CONFIGURATION_RESULT_MESSAGE0x802E 0x802E
1273#define CHIRP_NOTIFICATION_MESSAGE0x802F 0x802F
1274#define IEEE1905_ENCAP_EAPOL_MESSAGE0x8030 0x8030
1275#define DPP_BOOTSTRAPPING_URI_NOTIFICATION_MESSAGE0x8031 0x8031
1276#define ANTICIPATED_CHANNEL_PREFERENCE_MESSAGE0x8032 0x8032
1277#define FAILED_CONNECTION_MESSAGE0x8033 0x8033
1278#define AGENT_LIST_MESSAGE0x8035 0x8035
1279#define ANTICIPATED_CHANNEL_USAGE_MESSAGE0x8036 0x8036
1280#define QOS_MANAGEMENT_NOTIFICATION_MESSAGE0x8037 0x8037
1281#define EARLY_AP_CAPABILITY_REPORT_MESSAGE0x8043 0x8043
1282#define AP_MLD_CONFIGURATION_REQUEST_MESSAGE0x8044 0x8044
1283#define AP_MLD_CONFIGURATION_RESPONSE_MESSAGE0x8045 0x8045
1284#define BSTA_MLD_CONFIGURATION_REQUEST_MESSAGE0x8046 0x8046
1285#define BSTA_MLD_CONFIGURATION_RESPONSE_MESSAGE0x8047 0x8047
1286#define AVAILABLE_SPECTRUM_INQUIRY_MESSAGE0x8049 0x8049
1287#define OPERATING_CHANNEL_NOTIFICATION_MESSAGE0x804A 0x804A
1288#define OPERATING_CHANNEL_QUERY_MESSAGE0x804B 0x804B
1289#define BSS_CONFIGURATION_EXTENDED_REQUEST_MESSAGE0x804C 0x804C
1290#define BSS_CONFIGURATION_EXTENDED_REPORT_MESSAGE0x804D 0x804D
1291
1292static const value_string ieee1905_message_type_vals[] = {
1293 { TOPOLOGY_DISCOVERY_MESSAGE0x0000, "Topology discovery" },
1294 { TOPOLOGY_NOTIFICATION_MESSAGE0x0001, "Topology notification" },
1295 { TOPOLOGY_QUERY_MESSAGE0x0002, "Topology query" },
1296 { TOPOLOGY_RESPONSE_MESSAGE0x0003, "Topology response" },
1297 { VENDOR_SPECIFIC_MESSAGE0x0004, "Vendor specific" },
1298 { LINK_METRIC_QUERY_MESSAGE0x0005, "Link metric query" },
1299 { LINK_METRIC_RESPONSE_MESSAGE0x0006, "Link metric response" },
1300 { AP_AUTOCONFIGURATION_SEARCH_MESSAGE0x0007, "AP autoconfiguration search" },
1301 { AP_AUTOCONFIGURATION_RESPONSE_MESSAGE0x0008, "AP autoconfiguration response" },
1302 { AP_AUTOCONFIGURATION_WSC_MESSAGE0x0009, "AP autoconfiguration Wi-Fi simple configuration (WSC)" },
1303 { AP_AUTOCONFIGURATION_RENEW_MESSAGE0x000A, "AP autoconfiguration renew" },
1304 { IEEE1905_PUSH_BUTTON_EVENT_NOTIFICATION_MESSAGE0x000B, "1905 push button event notification" },
1305 { IEEE1905_PUSH_BUTTON_JOIN_NOTIFICATION_MESSAGE0x000C, "1905 push button join notification" },
1306 { HIGHER_LAYER_QUERY_MESSAGE0x000D, "Higher layer query" },
1307 { HIGHER_LAYER_RESPONSE_MESSAGE0x000E, "Higher layer response" },
1308 { INTERFACE_POWER_CHANGE_REQUEST_MESSAGE0x000F, "Interface power change request" },
1309 { INTERFACE_POWER_CHANGE_RESPONSE_MESSAGE0x0010, "Interface power change response" },
1310 { GENERIC_PHY_QUERY_MESSAGE0x0011, "Generic phy query" },
1311 { GENERIC_PHY_RESPONSE_MESSAGE0x0012, "Generic phy response" },
1312 { IEEE1905_ACK_MESSAGE0x8000, "1905 Ack" },
1313 { AP_CAPABILITY_QUERY_MESSAGE0x8001, "AP Capability Query" },
1314 { AP_CAPABILITY_REPORT_MESSAGE0x8002, "AP Capability Report" },
1315 { MULTI_AP_POLICY_CONFIG_REQUEST_MESSAGE0x8003, "Multi-AP Policy Config Request" },
1316 { CHANNEL_PREFERENCE_QUERY_MESSAGE0x8004, "Channel Preference Query" },
1317 { CHANNEL_PREFERENCE_REPORT_MESSAGE0x8005, "Channel Preference Report" },
1318 { CHANNEL_SELECTION_REQUEST_MESSAGE0x8006, "Channel Selection Request" },
1319 { CHANNEL_SELECTION_RESPONSE_MESSAGE0x8007, "Channel Selection Response" },
1320 { OPERATING_CHANNEL_REPORT_MESSAGE0x8008, "Operating Channel Report" },
1321 { CLIENT_CAPABILITIES_QUERY_MESSAGE0x8009, "Client Capability Query" },
1322 { CLIENT_CAPABILITIES_REPORT_MESSAGE0x800A, "Client Capability Report" },
1323 { AP_METRICS_QUERY_MESSAGE0x800B, "AP Metrics Query" },
1324 { AP_METRICS_RESPONSE_MESSAGE0x800C, "AP Metrics Response" },
1325 { ASSOCIATED_STA_LINK_METRICS_QUERY_MESSAGE0x800D, "Associated STA Link Metrics Query" },
1326 { ASSOCIATED_STA_LINK_METRICS_RESPONSE_MESSAGE0x800E, "Associated STA Link Metrics Response" },
1327 { UNASSOCIATED_STA_LINK_METRICS_QUERY_MESSAGE0x800F, "Unassociated STA Link Metrics Query" },
1328 { UNASSOCIATED_STA_LINK_METRICS_RESPONSE_MESSAGE0x8010, "Unassociated STA Link Metrics Response" },
1329 { BEACON_METRICS_QUERY_MESSAGE0x8011, "Beacon Metrics Query" },
1330 { BEACON_METRICS_RESPONSE_METRICS0x8012, "Beacon Metrics Response" },
1331 { COMBINED_INFRASTRUCTURE_METRICS_MESSAGE0x8013, "Combined Infrastructure Metrics" },
1332 { CLIENT_STEERING_REQUEST_MESSAGE0x8014, "Client Steering Request" },
1333 { CLIENT_STEERING_BTM_REPORT_MESSAGE0x8015, "Client Steering BTM Report" },
1334 { CLIENT_ASSOCIATION_CONTROL_REQUEST_MESSAGE0x8016, "Client Association Control Request" },
1335 { STEERING_COMPLETED_MESSAGE0x8017, "Steering Completed" },
1336 { HIGHER_LAYER_DATA_MESSAGE0x8018, "Higher Layer Data" },
1337 { BACKHAUL_STEERING_REQUEST_MESSAGE0x8019, "Backhaul Steering Request" },
1338 { BACKHAUL_STEERING_RESPONSE_MESSAGE0x801A, "Backhaul Steering Response" },
1339 { CHANNEL_SCAN_REQUEST_MESSAGE0x801B, "Channel Scan Request" },
1340 { CHANNEL_SCAN_REPORT_MESSAGE0x801C, "Channel Scan Report" },
1341 { DPP_CCE_INDICATION_MESSAGE0x801D, "DPP CCE Indication" },
1342 { IEEE1905_REKEY_REQUEST_MESSAGE0x801E, "1905 Rekey Request" },
1343 { IEEE1905_DECRYPTION_FAILURE0x801F, "1905 Decryption Failure" },
1344 { CAC_REQUEST_MESSAGE0x8020, "CAC Request" },
1345 { CAC_TERMINATION_MESSAGE0x8021, "CAC Termination" },
1346 { CLIENT_DISASSOCIATION_STATS_MESSAGE0x8022, "Client Disassociation Stats" },
1347 { SERVICE_PRIORITIZATION_REQUEST0x8023, "Service Prioritization Request" },
1348 { ERROR_RESPONSE_MESSAGE0x8024, "Error Response" },
1349 { ASSOCIATION_STATUS_NOTIFICATION_MESSAGE0x8025, "Association Status Notification" },
1350 { TUNNELLED_MESSAGE0x8026, "Tunnelled" },
1351 { BACKHAUL_STA_CAPABILITY_QUERY_MESSAGE0x8027, "Backhaul STA Capability Query" },
1352 { BACKHAUL_STA_CAPABILITY_REPORT_MESSAGE0x8028, "Backhaul STA Capability Report" },
1353 { PROXIED_ENCAP_DPP_MESSAGE0x8029, "Proxied Encap DPP" },
1354 { DIRECT_ENCAP_DPP_MESSAGE0x802A, "Direct Encap DPP" },
1355 { RECONFIGURATION_TRIGGER_MESSAGE0x802B, "Reconfiguration Trigger" },
1356 { BSS_CONFIGURATION_REQUEST_MESSAGE0x802C, "BSS Configuration Request" },
1357 { BSS_CONFIGURATION_RESPONSE_MESSAGE0x802D, "BSS Configuration Response" },
1358 { BSS_CONFIGURATION_RESULT_MESSAGE0x802E, "BSS Configuration Result" },
1359 { CHIRP_NOTIFICATION_MESSAGE0x802F, "Chirp Notification" },
1360 { IEEE1905_ENCAP_EAPOL_MESSAGE0x8030, "1905 Encap EAPOL" },
1361 { DPP_BOOTSTRAPPING_URI_NOTIFICATION_MESSAGE0x8031, "DPP Bootstrapping URI Notification" },
1362 { ANTICIPATED_CHANNEL_PREFERENCE_MESSAGE0x8032, "Anticipated Channel Preference" },
1363 { FAILED_CONNECTION_MESSAGE0x8033, "Failed Connection" },
1364 { AGENT_LIST_MESSAGE0x8035, "Agent List" },
1365 { ANTICIPATED_CHANNEL_USAGE_MESSAGE0x8036, "Anticipated Channel Usage" },
1366 { QOS_MANAGEMENT_NOTIFICATION_MESSAGE0x8037, "QoS Management Notification" },
1367 { EARLY_AP_CAPABILITY_REPORT_MESSAGE0x8043, "Early AP Capability Report" },
1368 { AP_MLD_CONFIGURATION_REQUEST_MESSAGE0x8044, "AP MLD Configuration Request" },
1369 { AP_MLD_CONFIGURATION_RESPONSE_MESSAGE0x8045, "AP MLD Configuration Response" },
1370 { BSTA_MLD_CONFIGURATION_REQUEST_MESSAGE0x8046, "BSTA MLD Configuration Request" },
1371 { BSTA_MLD_CONFIGURATION_RESPONSE_MESSAGE0x8047, "BSTA MLD Configuration Response" },
1372 { AVAILABLE_SPECTRUM_INQUIRY_MESSAGE0x8049, "Available Spectrum Inquiry" },
1373 { OPERATING_CHANNEL_NOTIFICATION_MESSAGE0x804A, "Operating Channel Notification" },
1374 { OPERATING_CHANNEL_QUERY_MESSAGE0x804B, "Operating Channel Query" },
1375 { BSS_CONFIGURATION_EXTENDED_REQUEST_MESSAGE0x804C, "BSS Configuration Extended Request" },
1376 { BSS_CONFIGURATION_EXTENDED_REPORT_MESSAGE0x804D, "BSS Configuration Extended Report" },
1377 { 0, NULL((void*)0) }
1378};
1379static value_string_ext ieee1905_message_type_vals_ext = VALUE_STRING_EXT_INIT(ieee1905_message_type_vals){ _try_val_to_str_ext_init, 0, (sizeof (ieee1905_message_type_vals
) / sizeof ((ieee1905_message_type_vals)[0]))-1, ieee1905_message_type_vals
, "ieee1905_message_type_vals", ((void*)0) }
;
1380
1381#define EOM_TLV0x00 0x00
1382#define AL_MAC_ADDRESS_TYPE_TLV1 1
1383#define MAC_ADDRESS_TYPE_TLV2 2
1384#define DEVICE_INFORMATION_TYPE_TLV3 3
1385#define DEVICE_BRIDGING_CAPABILITY_TLV4 4
1386#define NON_1905_NEIGHBOR_DEVICE_LIST_TLV6 6
1387#define NEIGHBOR_DEVICE_TLV7 7
1388#define LINK_METRIC_QUERY_TLV8 8
1389#define TRANSMITTER_LINK_METRIC_TLV9 9
1390#define RECEIVER_LINK_METRIC_TLV10 10
1391#define VENDOR_SPECIFIC_TLV11 11
1392#define LINK_METRIC_RESULT_CODE_TLV12 12
1393#define SEARCHED_ROLE_TLV13 13
1394#define AUTO_CONFIG_FREQ_BAND_TLV14 14
1395#define SUPPORTED_ROLE_TLV15 15
1396#define SUPPORTED_FREQ_BAND_TLV16 16
1397#define WSC_TLV17 17
1398#define PUSH_BUTTON_EVENT_NOTIFICATION_TLV18 18
1399#define PUSH_BUTTON_JOIN_NOTIFICATION_TLV19 19
1400#define GENERIC_PHY_DEVICE_INFORMATION_TLV20 20
1401#define DEVICE_IDENTIFICATION_TYPE_TLV21 21
1402#define CONTROL_URL_TYPE_TLV22 22
1403#define IPV4_TYPE_TLV23 23
1404#define IPV6_TYPE_TLV24 24
1405#define PUSH_BUTTON_EVENT_TYPE_NOTIFICATION_TLV25 25
1406#define IEEE1905_PROFILE_VERSION_TLV26 26
1407#define POWER_OFF_INTERFACE_TLV27 27
1408#define INTERFACE_POWER_CHANGE_INFORMATION_TLV28 28
1409#define INTERFACE_POWER_CHANGE_STATUS_TLV29 29
1410#define L2_NEIGHBOR_DEVICE_TLV30 30
1411#define SUPPORTED_SERVICE_TLV0x80 0x80
1412#define SEARCHED_SERVICE_TLV0x81 0x81
1413#define AP_RADIO_IDENTIFIER_TLV0x82 0x82
1414#define AP_OPERATIONAL_BSS_TLV0x83 0x83
1415#define ASSOCIATED_CLIENTS_TLV0x84 0x84
1416#define AP_RADIO_BASIC_CAPABILITIES_TLV0x85 0x85
1417#define AP_HT_CAPABILITIES_TLV0x86 0x86
1418#define AP_VHT_CAPABILITIES_TLV0x87 0x87
1419#define AP_HE_CAPABILITIES_TLV0x88 0x88
1420#define STEERING_POLICY_TLV0x89 0x89
1421#define METRIC_REPORTING_POLICY_TLV0x8A 0x8A
1422#define CHANNEL_PREFERENCE_TLV0x8B 0x8B
1423#define RADIO_OPERATION_RESTRICTION_TLV0x8C 0x8C
1424#define TRANSMIT_POWER_LIMIT_TLV0x8D 0x8D
1425#define CHANNEL_SELECTION_RESPONSE_TLV0x8E 0x8E
1426#define OPERATING_CHANNEL_REPORT_TLV0x8F 0x8F
1427#define CLIENT_INFO_TLV0x90 0x90
1428#define CLIENT_CAPABILITY_REPORT_TLV0x91 0x91
1429#define CLIENT_ASSOCIATION_EVENT_TLV0x92 0x92
1430#define AP_METRIC_QUERY_TLV0x93 0x93
1431#define AP_METRICS_TLV0x94 0x94
1432#define STA_MAC_ADDRESS_TYPE_TLV0x95 0x95
1433#define ASSOCIATED_STA_LINK_METRICS_TLV0x96 0x96
1434#define UNASSOCIATED_STA_LINK_METRICS_QUERY_TLV0x97 0x97
1435#define UNASSOCIATED_STA_LINK_METRICS_RESPONSE_TLV0x98 0x98
1436#define BEACON_METRICS_QUERY_TLV0x99 0x99
1437#define BEACON_METRICS_RESPONSE_TLV0x9A 0x9A
1438#define STEERING_REQUEST_TLV0x9B 0x9B
1439#define STEERING_BTM_REPORT_TLV0x9C 0x9C
1440#define CLIENT_ASSOCIATION_CONTROL_REQUEST_TLV0x9D 0x9D
1441#define BACKHAUL_STEERING_REQUEST_TLV0x9E 0x9E
1442#define BACKHAUL_STEERING_RESPONSE_TLV0x9F 0x9F
1443#define HIGHER_LAYER_DATA_TLV0xA0 0xA0
1444#define AP_CAPABILITY_TLV0xA1 0xA1
1445#define ASSOCIATED_STA_TRAFFIC_STATS_TLV0xA2 0xA2
1446#define ERROR_CODE_TLV0xA3 0xA3
1447#define CHANNEL_SCAN_REPORTING_POLICY_TLV0xA4 0xA4
1448#define CHANNEL_SCAN_CAPABILITIES_TLV0xA5 0xA5
1449#define CHANNEL_SCAN_REQUEST_TLV0xA6 0xA6
1450#define CHANNEL_SCAN_RESULT_TLV0xA7 0xA7
1451#define TIMESTAMP_TLV0xA8 0xA8
1452#define IEEE1905_LAYER_SECURITY_CAPABILITY_TLV0xA9 0xA9
1453#define AP_WF6_CAPABILITIES_TLV0xAA 0xAA
1454#define MIC_TLV0xAB 0xAB
1455#define ENCRYPTED_TLV0xAC 0xAC
1456#define CAC_REQUEST_TLV0xAD 0xAD
1457#define CAC_TERMINATION_TLV0xAE 0xAE
1458#define CAC_COMPLETION_REPORT_TLV0xAF 0xAF
1459#define ASSOCIATED_WF6_STA_STATUS_REPORT_TLV0xB0 0xB0
1460#define CAC_STATUS_REPORT_TLV0xB1 0xB1
1461#define CAC_CAPABILITIES_TLV0xB2 0xB2
1462#define MULTI_AP_PROFILE_TLV0xB3 0xB3
1463#define PROFILE_2_AP_CAPABILITY_TLV0xB4 0xB4
1464#define DEFAULT_802_1Q_SETTINGS_TLV0xB5 0xB5
1465#define TRAFFIC_SEPARATION_POLICY_TLV0xB6 0xB6
1466#define BSS_CONFIGURATION_REPORT_TLV0xB7 0xB7
1467#define BSSID_TLV0xB8 0xB8
1468#define SERVICE_PRIORITIZATION_RULE_TLV0xB9 0xB9
1469#define DSCP_MAPPING_TABLE_TLV0xBA 0xBA
1470#define BSS_CONFIGURATION_REQUEST_TLV0xBB 0xBB
1471#define PROFILE_2_ERROR_CODE_TLV0xBC 0xBC
1472#define BSS_CONFIGURATION_RESPONSE_TLV0xBD 0xBD
1473#define AP_RADIO_ADVANCED_CAPABILITIES_TLV0xBE 0xBE
1474#define ASSOCIATION_STATUS_NOTIFICATION_TLV0xBF 0xBF
1475#define SOURCE_INFO_TLV0xC0 0xC0
1476#define TUNNELED_MESSAGE_TYPE_TLV0xC1 0xC1
1477#define TUNNELED_TLV0xC2 0xC2
1478#define PROFILE_2_STEERING_REQUEST_TLV0xC3 0xC3
1479#define UNSUCCESSFUL_ASSOCIATION_POLICY_TLV0xC4 0xC4
1480#define METRIC_COLLECTION_INTERVAL_TLV0xC5 0xC5
1481#define RADIO_METRICS_TLV0xC6 0xC6
1482#define AP_EXTENDED_METRICS_TLV0xC7 0xC7
1483#define ASSOCIATED_STA_EXTENDED_LINK_METRICS_TLV0xC8 0xC8
1484#define STATUS_CODE_TLV0xC9 0xC9
1485#define REASON_CODE_TLV0xCA 0xCA
1486#define BACKHAUL_STA_RADIO_CAPABILITIES_TLV0xCB 0xCB
1487#define AKM_SUITE_CAPABILITIES_TLV0xCC 0xCC
1488#define IEEE1905_ENCAP_DPP_TLV0xCD 0xCD
1489#define IEEE1905_ENCAP_EAPOL_TLV0xCE 0xCE
1490#define DPP_BOOTSTRAPPING_URI_NOTIFICATION_TLV0xCF 0xCF
1491#define BACKHAUL_BSS_CONFIGURATION0xD0 0xD0
1492#define DPP_MESSAGE_TLV0xD1 0xD1
1493#define DPP_CCE_INDICATION_TLV0xD2 0xD2
1494#define DPP_CHIRP_VALUE_TLV0xD3 0xD3
1495#define DEVICE_INVENTORY_TLV0xD4 0xD4
1496#define AGENT_LIST_TLV0xD5 0xD5
1497#define ANTICIPATED_CHANNEL_PREFERENCE_TLV0xD6 0xD6
1498#define ANTICIPATED_CHANNEL_USAGE_TLV0xD7 0xD7
1499#define SPATIAL_REUSE_REQUEST_TLV0xD8 0xD8
1500#define SPATIAL_REUSE_REPORT_TLV0xD9 0xD9
1501#define SPATIAL_REUSE_CONFIG_RESPONSE_TLV0xDA 0xDA
1502#define QOS_MANAGEMENT_POLICY_TLV0xDB 0xDB
1503#define QOS_MANAGEMENT_DESCRIPTOR_TLV0xDC 0xDC
1504#define CONTROLLER_CAPABILITY_TLV0xDD 0xDD
1505#define WIFI7_AGENT_CAPABILITIES_TLV0xDF 0xDF
1506#define AGENT_AP_MLD_CONFIGURATION_TLV0xE0 0xE0
1507#define BACKHAUL_STA_MLD_CONFIGURATION_TLV0xE1 0xE1
1508#define ASSOCIATED_STA_MLD_CONFIGURATION_TLV0xE2 0xE2
1509#define MLD_STRUCTURE_TLV0xE3 0xE3
1510#define AFFILIATED_STA_METRICS_TLV0xE4 0xE4
1511#define AFFILIATED_AP_METRICS_TLV0xE5 0xE5
1512#define TID_TO_LINK_MAPPING_POLICY_TLV0xE6 0xE6
1513#define EHT_OPERATIONS_TLV0xE7 0xE7
1514#define AVAILABLE_SPECTRUM_INQUIRY_REQUEST_TLV0xE8 0xE8
1515#define AVAILABLE_SPECTRUM_INQUIRY_RESPONSE_TLV0xE9 0xE9
1516#define RSN_DIAGNOSTIC_REPORT_TLV0xEA 0xEA
1517#define RSN_PARAMETER_CONFIGURATION_TLV0xEB 0xEB
1518#define BSS_ADVANCED_CONFIGURATION_TLV0xEC 0xEC
1519#define SUPPORTED_CIPHER_SUITES_TLV0xED 0xED
1520
1521static const value_string ieee1905_tlv_types_vals[] = {
1522 { EOM_TLV0x00, "End of message" },
1523 { AL_MAC_ADDRESS_TYPE_TLV1, "1905 AL MAC address type" },
1524 { MAC_ADDRESS_TYPE_TLV2, "MAC address type" },
1525 { DEVICE_INFORMATION_TYPE_TLV3, "1905 device information type" },
1526 { DEVICE_BRIDGING_CAPABILITY_TLV4, "Device bridging capability" },
1527 { NON_1905_NEIGHBOR_DEVICE_LIST_TLV6, "Non-1905 neighbor device list" },
1528 { NEIGHBOR_DEVICE_TLV7, "1905 neighbor device" },
1529 { LINK_METRIC_QUERY_TLV8, "Link metric query" },
1530 { TRANSMITTER_LINK_METRIC_TLV9, "1905 transmitter link metric" },
1531 { RECEIVER_LINK_METRIC_TLV10, "1905 receiver link metric" },
1532 { VENDOR_SPECIFIC_TLV11, "Vendor specific" },
1533 { LINK_METRIC_RESULT_CODE_TLV12, "1905 link metric result code" },
1534 { SEARCHED_ROLE_TLV13, "SearchedRole" },
1535 { AUTO_CONFIG_FREQ_BAND_TLV14, "AutoconfigFreqBand" },
1536 { SUPPORTED_ROLE_TLV15, "SupportedRole" },
1537 { SUPPORTED_FREQ_BAND_TLV16, "SupportedFreqBand" },
1538 { WSC_TLV17, "WSC" },
1539 { PUSH_BUTTON_EVENT_NOTIFICATION_TLV18, "Push_Button_Event notification" },
1540 { PUSH_BUTTON_JOIN_NOTIFICATION_TLV19, "Push_Button_Join notification" },
1541 { GENERIC_PHY_DEVICE_INFORMATION_TLV20, "Generic Phy device information" },
1542 { DEVICE_IDENTIFICATION_TYPE_TLV21, "Device identification type" },
1543 { CONTROL_URL_TYPE_TLV22, "Control URL type" },
1544 { IPV4_TYPE_TLV23, "IPv4 type" },
1545 { IPV6_TYPE_TLV24, "IPv6 type" },
1546 { PUSH_BUTTON_EVENT_TYPE_NOTIFICATION_TLV25, "Push_Button_Generic_Phy_Event notification" },
1547 { IEEE1905_PROFILE_VERSION_TLV26, "1905 profile version" },
1548 { POWER_OFF_INTERFACE_TLV27, "Power off interface" },
1549 { INTERFACE_POWER_CHANGE_INFORMATION_TLV28, "Interface power change information" },
1550 { INTERFACE_POWER_CHANGE_STATUS_TLV29, "Interface power change status" },
1551 { L2_NEIGHBOR_DEVICE_TLV30, "L2 neighbor device" },
1552 { SUPPORTED_SERVICE_TLV0x80, "Supported service information" },
1553 { SEARCHED_SERVICE_TLV0x81, "Searched service information" },
1554 { AP_RADIO_IDENTIFIER_TLV0x82, "AP radio identifier" },
1555 { AP_OPERATIONAL_BSS_TLV0x83, "AP operational BSS" },
1556 { ASSOCIATED_CLIENTS_TLV0x84, "Associated clients" },
1557 { AP_RADIO_BASIC_CAPABILITIES_TLV0x85, "AP radio basic capabilities" },
1558 { AP_HT_CAPABILITIES_TLV0x86, "AP HT capabilities" },
1559 { AP_VHT_CAPABILITIES_TLV0x87, "AP VHT capabilities" },
1560 { AP_HE_CAPABILITIES_TLV0x88, "AP HE capabilities" },
1561 { STEERING_POLICY_TLV0x89, "Steering policy" },
1562 { METRIC_REPORTING_POLICY_TLV0x8A, "Metric reporting policy" },
1563 { CHANNEL_PREFERENCE_TLV0x8B, "Channel preference" },
1564 { RADIO_OPERATION_RESTRICTION_TLV0x8C, "Radio operation restriction" },
1565 { TRANSMIT_POWER_LIMIT_TLV0x8D, "Transmit power limit" },
1566 { CHANNEL_SELECTION_RESPONSE_TLV0x8E, "Channel selection response" },
1567 { OPERATING_CHANNEL_REPORT_TLV0x8F, "Operating channel report" },
1568 { CLIENT_INFO_TLV0x90, "Client info" },
1569 { CLIENT_CAPABILITY_REPORT_TLV0x91, "Client capability report" },
1570 { CLIENT_ASSOCIATION_EVENT_TLV0x92, "Client association event" },
1571 { AP_METRIC_QUERY_TLV0x93, "AP metric query" },
1572 { AP_METRICS_TLV0x94, "AP metrics" },
1573 { STA_MAC_ADDRESS_TYPE_TLV0x95, "STA MAC address type" },
1574 { ASSOCIATED_STA_LINK_METRICS_TLV0x96, "Associated STA Link Metrics" },
1575 { UNASSOCIATED_STA_LINK_METRICS_QUERY_TLV0x97, "Unassociated STA link metrics query" },
1576 { UNASSOCIATED_STA_LINK_METRICS_RESPONSE_TLV0x98, "Unassociated STA link metrics response" },
1577 { BEACON_METRICS_QUERY_TLV0x99, "Beacon metrics query" },
1578 { BEACON_METRICS_RESPONSE_TLV0x9A, "Beacon metrics response" },
1579 { STEERING_REQUEST_TLV0x9B, "Steering request" },
1580 { STEERING_BTM_REPORT_TLV0x9C, "Steering BTM report" },
1581 { CLIENT_ASSOCIATION_CONTROL_REQUEST_TLV0x9D, "Client association control request" },
1582 { BACKHAUL_STEERING_REQUEST_TLV0x9E, "Backhaul steering request" },
1583 { BACKHAUL_STEERING_RESPONSE_TLV0x9F, "Backhaul steering response" },
1584 { HIGHER_LAYER_DATA_TLV0xA0, "Higher layer data" },
1585 { AP_CAPABILITY_TLV0xA1, "AP capability" },
1586 { ASSOCIATED_STA_TRAFFIC_STATS_TLV0xA2, "Associated STA Traffic Stats" },
1587 { ERROR_CODE_TLV0xA3, "Error Code" },
1588 { CHANNEL_SCAN_REPORTING_POLICY_TLV0xA4, "Channel Scan Reporting Policy" },
1589 { CHANNEL_SCAN_CAPABILITIES_TLV0xA5, "Channel Scan Capabilities" },
1590 { CHANNEL_SCAN_REQUEST_TLV0xA6, "Channel Scan Request" },
1591 { CHANNEL_SCAN_RESULT_TLV0xA7, "Channel Scan Result" },
1592 { TIMESTAMP_TLV0xA8, "Timestamp" },
1593 { IEEE1905_LAYER_SECURITY_CAPABILITY_TLV0xA9, "1905 Layer Security Capability" },
1594 { AP_WF6_CAPABILITIES_TLV0xAA, "AP Wi-Fi 6 Capabilities" },
1595 { MIC_TLV0xAB, "MIC" },
1596 { ENCRYPTED_TLV0xAC, "Encrypted" },
1597 { CAC_REQUEST_TLV0xAD, "CAC Request" },
1598 { CAC_TERMINATION_TLV0xAE, "CAC Termination" },
1599 { CAC_COMPLETION_REPORT_TLV0xAF, "CAC Completion Report" },
1600 { ASSOCIATED_WF6_STA_STATUS_REPORT_TLV0xB0, "Associated Wi-Fi 6 STA Status Report" },
1601 { CAC_STATUS_REPORT_TLV0xB1, "CAC Status Report" },
1602 { CAC_CAPABILITIES_TLV0xB2, "CAC Capabilities" },
1603 { MULTI_AP_PROFILE_TLV0xB3, "Multi AP Profile" },
1604 { PROFILE_2_AP_CAPABILITY_TLV0xB4, "Profile 2 AP Capability" },
1605 { DEFAULT_802_1Q_SETTINGS_TLV0xB5, "Default 802.1Q Settings" },
1606 { TRAFFIC_SEPARATION_POLICY_TLV0xB6, "Traffic Separation Policy" },
1607 { BSS_CONFIGURATION_REPORT_TLV0xB7, "BSS Configuration Report" },
1608 { BSSID_TLV0xB8, "BSSID" },
1609 { SERVICE_PRIORITIZATION_RULE_TLV0xB9, "Service Prioritization Rule" },
1610 { DSCP_MAPPING_TABLE_TLV0xBA, "DSCP Mapping Table" },
1611 { BSS_CONFIGURATION_REQUEST_TLV0xBB, "BSS Configuration Request" },
1612 { PROFILE_2_ERROR_CODE_TLV0xBC, "Profile 2 Error Code" },
1613 { BSS_CONFIGURATION_RESPONSE_TLV0xBD, "BSS Configuration Response" },
1614 { AP_RADIO_ADVANCED_CAPABILITIES_TLV0xBE, "AP Radio Advanced Capabilities" },
1615 { ASSOCIATION_STATUS_NOTIFICATION_TLV0xBF, "Associated Status Notification" },
1616 { SOURCE_INFO_TLV0xC0, "Source Info" },
1617 { TUNNELED_MESSAGE_TYPE_TLV0xC1, "Tunneled Message Type" },
1618 { TUNNELED_TLV0xC2, "Tunneled" },
1619 { PROFILE_2_STEERING_REQUEST_TLV0xC3, "Profile 2 Steering Request" },
1620 { UNSUCCESSFUL_ASSOCIATION_POLICY_TLV0xC4, "Unsuccessful Association Policy" },
1621 { METRIC_COLLECTION_INTERVAL_TLV0xC5, "Metric Collection Interval" },
1622 { RADIO_METRICS_TLV0xC6, "Radio Metrics" },
1623 { AP_EXTENDED_METRICS_TLV0xC7, "AP Extended Metrics" },
1624 { ASSOCIATED_STA_EXTENDED_LINK_METRICS_TLV0xC8,"Associated STA Extended Link Metrics" },
1625 { STATUS_CODE_TLV0xC9, "Status Code" },
1626 { REASON_CODE_TLV0xCA, "Reason Code" },
1627 { BACKHAUL_STA_RADIO_CAPABILITIES_TLV0xCB, "Backhaul STA Radio Capabilities" },
1628 { AKM_SUITE_CAPABILITIES_TLV0xCC, "AKM Suite Capabilities" },
1629 { IEEE1905_ENCAP_DPP_TLV0xCD, "1905 Encap DPP" },
1630 { IEEE1905_ENCAP_EAPOL_TLV0xCE, "1905 Encap EAPOL" },
1631 { DPP_BOOTSTRAPPING_URI_NOTIFICATION_TLV0xCF, "DPP Bootstrapping URI Notification" },
1632 { BACKHAUL_BSS_CONFIGURATION0xD0, "Backhaul BSS Configuration" },
1633 { DPP_MESSAGE_TLV0xD1, "DPP Message" },
1634 { DPP_CCE_INDICATION_TLV0xD2, "DPP CCE Indication" },
1635 { DPP_CHIRP_VALUE_TLV0xD3, "DPP Chirp Value" },
1636 { DEVICE_INVENTORY_TLV0xD4, "Device Inventory" },
1637 { AGENT_LIST_TLV0xD5, "Agent List" },
1638 { ANTICIPATED_CHANNEL_PREFERENCE_TLV0xD6, "Anticipated Channel Preference" },
1639 { ANTICIPATED_CHANNEL_USAGE_TLV0xD7, "Anticipated Channel Usage" },
1640 { SPATIAL_REUSE_REQUEST_TLV0xD8, "Spatial Reuse Request" },
1641 { SPATIAL_REUSE_REPORT_TLV0xD9, "Spatial Reuse Report" },
1642 { SPATIAL_REUSE_CONFIG_RESPONSE_TLV0xDA, "Spatial Reuse Config Response" },
1643 { QOS_MANAGEMENT_POLICY_TLV0xDB, "QoS Management Policy" },
1644 { QOS_MANAGEMENT_DESCRIPTOR_TLV0xDC, "QoS Management Descriptor" },
1645 { CONTROLLER_CAPABILITY_TLV0xDD, "Controller Capability" },
1646 { WIFI7_AGENT_CAPABILITIES_TLV0xDF, "Wi-Fi 7 Agent Capabilities" },
1647 { AGENT_AP_MLD_CONFIGURATION_TLV0xE0, "Agent AP MLD Configuration" },
1648 { BACKHAUL_STA_MLD_CONFIGURATION_TLV0xE1, "Backhaul STA MLD Configuration" },
1649 { ASSOCIATED_STA_MLD_CONFIGURATION_TLV0xE2, "Associated STA MLD Configuration" },
1650 { MLD_STRUCTURE_TLV0xE3, "MLD Structure" },
1651 { AFFILIATED_STA_METRICS_TLV0xE4, "Affiliated STA Metrics" },
1652 { AFFILIATED_AP_METRICS_TLV0xE5, "Affiliated AP Metrics" },
1653 { TID_TO_LINK_MAPPING_POLICY_TLV0xE6, "TID To Link Mapping Policy" },
1654 { EHT_OPERATIONS_TLV0xE7, "EHT Operations" },
1655 { AVAILABLE_SPECTRUM_INQUIRY_REQUEST_TLV0xE8, "Available Spectrum Inquiry Request" },
1656 { AVAILABLE_SPECTRUM_INQUIRY_RESPONSE_TLV0xE9, "Available Spectrum Inquiry Response" },
1657 { RSN_DIAGNOSTIC_REPORT_TLV0xEA, "RSN Diagnostic Report" },
1658 { RSN_PARAMETER_CONFIGURATION_TLV0xEB, "RSN Parameter Configuration" },
1659 { BSS_ADVANCED_CONFIGURATION_TLV0xEC, "BSS Advanced Configuration" },
1660 { SUPPORTED_CIPHER_SUITES_TLV0xED, "Supported Cipher Suites" },
1661 { 0, NULL((void*)0) }
1662};
1663static value_string_ext ieee1905_tlv_types_vals_ext = VALUE_STRING_EXT_INIT(ieee1905_tlv_types_vals){ _try_val_to_str_ext_init, 0, (sizeof (ieee1905_tlv_types_vals
) / sizeof ((ieee1905_tlv_types_vals)[0]))-1, ieee1905_tlv_types_vals
, "ieee1905_tlv_types_vals", ((void*)0) }
;
1664
1665static const true_false_string tfs_last_fragment = {
1666 "This is the last fragment",
1667 "This is not the last fragment"
1668};
1669
1670static const true_false_string tfs_relay_indicator = {
1671 "Relayed multicast",
1672 "Neighbor multicast or unicast"
1673};
1674
1675static const value_string ieee1905_link_metric_query_type_vals[] = {
1676 { 0x00, "All neighbors" },
1677 { 0x01, "Specific neighbor" },
1678 { 0, NULL((void*)0) }
1679};
1680
1681static const value_string ieee1905_link_metrics_requested_vals[] = {
1682 { 0x00, "Tx link metrics only" },
1683 { 0x01, "Rx link metrics only" },
1684 { 0x02, "Both Tx and Rx link metrics" },
1685 { 0, NULL((void*)0) }
1686};
1687
1688static const value_string ieee1905_bridge_flag_vals[] = {
1689 { 0x00, "1905 link does not include an IEEE 802.1 bridge" },
1690 { 0x01, "1905 link includes one or more IEEE 802.1 bridges" },
1691 { 0, NULL((void*)0) }
1692};
1693
1694static const value_string ieee1905_media_type_0_vals[] = {
1695 { 0, "IEEE 802.3u fast Ethernet" },
1696 { 1, "IEEE 802.3ab gigabit" },
1697 { 0, NULL((void*)0) }
1698};
1699
1700static const value_string ieee1905_media_type_1_vals[] = {
1701 { 0, "IEEE 802.11b (2.4 GHz)" },
1702 { 1, "IEEE 802.11g (2.4 GHz)" },
1703 { 2, "IEEE 802.11a (5 GHz)" },
1704 { 3, "IEEE 802.11n (2.4 GHz)" },
1705 { 4, "IEEE 802.11n (5 GHz)" },
1706 { 5, "IEEE 802.11ac (5 GHz)" },
1707 { 6, "IEEE 802.11ad (60 GHz)" },
1708 { 7, "IEEE 802.11af (whitespace)" },
1709 { 8, "IEEE 802.11ax" },
1710 { 9, "IEEE 802.11be" },
1711 { 0, NULL((void*)0) }
1712};
1713
1714static const value_string ieee1905_media_type_2_vals[] = {
1715 { 0, "IEEE 1901 wavelet" },
1716 { 1, "IEEE 1901 FFT" },
1717 { 0, NULL((void*)0) }
1718};
1719
1720static const value_string ieee1905_media_type_3_vals[] = {
1721 { 0, "MoCA v1.1" },
1722 { 0, NULL((void*)0) }
1723};
1724
1725static const value_string ieee1905_link_metric_result_vals[] = {
1726 { 0, "Invalid neighbor" },
1727 { 0, NULL((void*)0) }
1728};
1729
1730static const true_false_string tfs_bridges_flag = {
1731 "At least one IEEE 802.1 bridge exists between this device and the neighbor",
1732 "No IEEE 802.1 bridges exist"
1733};
1734
1735static const value_string ieee1905_searched_role_vals[] = {
1736 { 0, "Registrar" },
1737 { 0, NULL((void*)0) }
1738};
1739
1740static const value_string ieee1905_freq_band_vals[] = {
1741 { 0, "802.11 2.4 GHz" },
1742 { 1, "802.11 5 GHz" },
1743 { 2, "802.11 60 GHz" },
1744 { 3, "802.11 6 GHz" },
1745 { 0, NULL((void*)0) }
1746};
1747
1748static const value_string ieee1905_ipv4_addr_type_vals[] = {
1749 { 0, "Unknown" },
1750 { 1, "DHCP" },
1751 { 2, "Static" },
1752 { 3, "Auto-IP" },
1753 { 0, NULL((void*)0) }
1754};
1755
1756static const value_string ieee1905_ipv6_addr_type_vals[] = {
1757 { 0, "Unknown" },
1758 { 1, "DHCP" },
1759 { 2, "Static" },
1760 { 3, "SLAAC" },
1761 { 0, NULL((void*)0)}
1762};
1763
1764static const value_string ieee1905_profile_version_vals[] = {
1765 { 0, "1905.1" },
1766 { 1, "1905.1a" },
1767 { 0, NULL((void*)0) }
1768};
1769
1770static const value_string ieee1905_power_state_vals[] = {
1771 { 0, "PWR_OFF" },
1772 { 1, "PWR_ON" },
1773 { 2, "PWR_SAVE" },
1774 { 0, NULL((void*)0) }
1775};
1776
1777static const value_string ieee1905_power_status_vals[] = {
1778 { 0, "Request completed" },
1779 { 1, "No change made" },
1780 { 2, "Alternate change made" },
1781 { 0, NULL((void*)0) }
1782};
1783
1784static const value_string ieee1905_supported_service_vals[] = {
1785 { 0x00, "Multi-AP Controller" },
1786 { 0x01, "Multi-AP Agent" },
1787 { 0, NULL((void*)0) }
1788};
1789
1790static const value_string ieee1905_higher_layer_protocol_vals[] = {
1791 { 0x00, "Reserved" },
1792 { 0x01, "TR-181 transport protocol" },
1793 { 0, NULL((void*)0) }
1794};
1795
1796static const value_string ieee1905_backhaul_status_vals[] = {
1797 { 0x00, "Success" },
1798 { 0x01, "Rejected because the backhaul station cannot operate on the channel specified" },
1799 { 0x02, "Rejected because the target BSS signal is too weak or not found" },
1800 { 0x03, "Authentication or association rejected by the target BSS" },
1801 { 0, NULL((void*)0) },
1802};
1803
1804static const value_string ieee1905_association_control_vals[] = {
1805 { 0x00, "Block" },
1806 { 0x01, "Unblock" },
1807 { 0x02, "Timed block" },
1808 { 0x03, "Indefinite block" },
1809 { 0, NULL((void*)0) }
1810};
1811
1812static const true_false_string tfs_ieee1905_steering_request_mode_flag = {
1813 "Request is a steering mandate to trigger steering for specific client STA(s)",
1814 "Request is a steering opportunity",
1815};
1816
1817static const true_false_string tfs_ieee1905_report_unsuccessful_association_attempt_flag = {
1818 "Report",
1819 "Do not Report",
1820};
1821
1822static const true_false_string tfs_ieee1905_btm_disassoc_imminent_flag = {
1823 "BTM disassociation imminent",
1824 "BTM disassociation not imminent"
1825};
1826
1827static const true_false_string tfs_ieee1905_btm_abridged_flag = {
1828 "BTM abridged",
1829 "BTM not abridged"
1830};
1831
1832static const value_string ieee1905_client_capability_result_vals[] = {
1833 { 0x00, "Success" },
1834 { 0x01, "Unspecified failure" },
1835 { 0x02, "Client not associated with specified BSSID" },
1836 { 0, NULL((void*)0) }
1837};
1838
1839static const true_false_string tfs_ieee1905_association_event_flag = {
1840 "Client has joined the BSS",
1841 "Client has left the BSS"
1842};
1843
1844static const value_string max_supported_tx_streams_vals[] = {
1845 { 0x00, "1 Tx spatial stream" },
1846 { 0x01, "2 Tx spatial streams" },
1847 { 0x02, "3 Tx spatial streams" },
1848 { 0x03, "4 Tx spatial streams" },
1849 { 0, NULL((void*)0) },
1850};
1851
1852static const value_string max_supported_rx_streams_vals[] = {
1853 { 0x00, "1 Rx spatial stream" },
1854 { 0x01, "2 Rx spatial streams" },
1855 { 0x02, "3 Rx spatial streams" },
1856 { 0x03, "4 Rx spatial streams" },
1857 { 0, NULL((void*)0) },
1858};
1859
1860static const value_string vht_he_max_supported_tx_streams_vals[] = {
1861 { 0x00, "1 Tx spatial stream" },
1862 { 0x01, "2 Tx spatial streams" },
1863 { 0x02, "3 Tx spatial streams" },
1864 { 0x03, "4 Tx spatial streams" },
1865 { 0x04, "5 Tx spatial streams" },
1866 { 0x05, "6 Tx spatial streams" },
1867 { 0x06, "7 Tx spatial streams" },
1868 { 0x07, "8 Tx spatial streams" },
1869 { 0, NULL((void*)0) },
1870};
1871
1872static const value_string vht_he_max_supported_rx_streams_vals[] = {
1873 { 0x00, "1 Rx spatial stream" },
1874 { 0x01, "2 Rx spatial streams" },
1875 { 0x02, "3 Rx spatial streams" },
1876 { 0x03, "4 Rx spatial streams" },
1877 { 0x04, "5 Rx spatial streams" },
1878 { 0x05, "6 Rx spatial streams" },
1879 { 0x06, "7 Rx spatial streams" },
1880 { 0x07, "8 Rx spatial streams" },
1881 { 0, NULL((void*)0) },
1882};
1883
1884static const value_string channel_preference_prefs_vals[] = {
1885 { 0x0, "Non-operable" },
1886 { 0x1, "Operable with preference score 1" },
1887 { 0x2, "Operable with preference score 2" },
1888 { 0x3, "Operable with preference score 3" },
1889 { 0x4, "Operable with preference score 4" },
1890 { 0x5, "Operable with preference score 5" },
1891 { 0x6, "Operable with preference score 6" },
1892 { 0x7, "Operable with preference score 7" },
1893 { 0x8, "Operable with preference score 8" },
1894 { 0x9, "Operable with preference score 9" },
1895 { 0xA, "Operable with preference score 10" },
1896 { 0xB, "Operable with preference score 11" },
1897 { 0xC, "Operable with preference score 12" },
1898 { 0xD, "Operable with preference score 13" },
1899 { 0xE, "Operable with preference score 14" },
1900 { 0, NULL((void*)0) }
1901};
1902
1903static const value_string channel_preference_reason_vals[] = {
1904 { 0x0, "Unspecified" },
1905 { 0x1, "Proximate non-802.11 interference in local environment" },
1906 { 0x2, "Intra-network 802.11 OBSS interference management" },
1907 { 0x3, "External network 802.11 OBSS interference management" },
1908 { 0x4, "Reduced coverage (e.g. due to limited transmit power" },
1909 { 0x5, "Reduced throughput (e.g. due to limited channel bandwidth..." },
1910 { 0x6, "In-device interference within AP" },
1911 { 0x7, "Operation disallowed due to radar detection on a DFS channel" },
1912 { 0x8, "Operation would prevent backhaul operation using shared radio" },
1913 { 0x9, "Immediate operation possible on a DFS channel" },
1914 { 0xA, "DFS channel state unknown" },
1915 { 0xB, "Controller DFS Channel Clear Indication" },
1916 { 0xC, "Operation disallowed by AFC restriction" },
1917 { 0, NULL((void*)0) }
1918};
1919
1920static const value_string ieee1905_channel_select_resp_code_vals[] = {
1921 { 0x00, "Accept" },
1922 { 0x01, "Declined because request violates current preferences" },
1923 { 0x02, "Declined because request violates most recently reported preferences" },
1924 { 0x03, "Declined because request would prevent operation of a current backhaul link" },
1925 { 0, NULL((void*)0) }
1926};
1927
1928static const value_string ieee1905_steering_policy_vals[] = {
1929 { 0x0, "Agent initiated steering disallowed" },
1930 { 0x1, "Agent initiated RCPI-based steering mandated" },
1931 { 0x2, "Agent initiated RCPI-based steering allowed" },
1932 { 0, NULL((void*)0)}
1933};
1934
1935static const value_string ieee1905_error_code_vals[] = {
1936 { 0x01, "STA associated with a BSS operated by the Agent" },
1937 { 0x02, "STA not associated with any BSS operated by the Agent" },
1938 { 0x03, "Client capability report unspecified failure" },
1939 { 0x04, "Backhaul steering request rejected because station cannot operate on specified channel" },
1940 { 0x05, "Backhaul steering request rejected because target BSS signal too weak or not found" },
1941 { 0x06, "Backhaul steering request authentication or association Rejected by target BSS" },
1942 { 0, NULL((void*)0) }
1943};
1944
1945/*
1946 * Decryption User Access Table
1947 */
1948
1949/* UAT entry structure. */
1950typedef struct {
1951 /* Input fro GUI */
1952 char *almac1;
1953 char *almac2;
1954 char *key;
1955
1956 /* Parsed */
1957 struct {
1958 bool_Bool valid;
1959 uint8_t almac1[6];
1960 uint8_t almac2[6];
1961 GByteArray *key;
1962 bool_Bool gtk;
1963 } bin;
1964} uat_key_record_t;
1965
1966static bool_Bool enable_decryption = true1;
1967static uat_key_record_t *uat_key_records;
1968static uat_t *uat;
1969static unsigned uat_num_keys;
1970
1971static const uint8_t broadcast_mac[] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
1972
1973static int mac_str_to_mac(const char *mac_str, uint8_t *mac)
1974{
1975 return sscanf(mac_str, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx",
1976 mac, mac + 1, mac + 2, mac + 3, mac + 4, mac + 5) == 6 ? 0 : -1;
1977}
1978
1979static void *
1980uat_key_record_copy_cb(void* n, const void* o, size_t size _U___attribute__((unused)))
1981{
1982 uat_key_record_t *new_key = n;
1983 const uat_key_record_t *old_key = o;
1984
1985 new_key->almac1 = g_strdup(old_key->almac1)g_strdup_inline (old_key->almac1);
1986 new_key->almac2 = g_strdup(old_key->almac2)g_strdup_inline (old_key->almac2);
1987 new_key->key = g_strdup(old_key->key)g_strdup_inline (old_key->key);
1988
1989 new_key->bin.valid = old_key->bin.valid;
1990
1991 memcpy(new_key->bin.almac1, old_key->bin.almac1, 6);
1992 memcpy(new_key->bin.almac2, old_key->bin.almac2, 6);
1993
1994 if (old_key->bin.key) {
1995 new_key->bin.key = byte_array_dup(old_key->bin.key);
1996 }
1997
1998 return new_key;
1999}
2000
2001static bool_Bool
2002uat_key_record_update_cb(void* r, char** err)
2003{
2004 uat_key_record_t *rec = r;
2005 char *p;
2006
2007 rec->bin.valid = false0;
2008
2009 if (rec->key == NULL((void*)0)) {
2010 *err = g_strdup("Key can't be blank")g_strdup_inline ("Key can't be blank");
2011 return false0;
2012 }
2013
2014 if (rec->almac1 == NULL((void*)0) || rec->almac2 == NULL((void*)0)) {
2015 *err = g_strdup("ALMAC can't be blank")g_strdup_inline ("ALMAC can't be blank");
2016 return false0;
2017 }
2018
2019 *err = NULL((void*)0);
2020 g_strstrip(rec->almac1)g_strchomp (g_strchug (rec->almac1));
2021 g_strstrip(rec->almac2)g_strchomp (g_strchug (rec->almac2));
2022 g_strstrip(rec->key)g_strchomp (g_strchug (rec->key));
2023
2024 /* Parse almac1 */
2025 if (strlen(rec->almac1) == 0) {
2026 memcpy(rec->bin.almac1, broadcast_mac, 6);
2027 } else {
2028 if (mac_str_to_mac(rec->almac1, rec->bin.almac1)) {
2029 *err = g_strdup("Invalid ALMAC1")g_strdup_inline ("Invalid ALMAC1");
2030 return false0;
2031 }
2032 }
2033
2034 /* Parse almac1 */
2035 if (strlen(rec->almac2) == 0) {
2036 memcpy(rec->bin.almac2, broadcast_mac, 6);
2037 } else {
2038 if (mac_str_to_mac(rec->almac2, rec->bin.almac2)) {
2039 *err = g_strdup("Invalid ALMAC2")g_strdup_inline ("Invalid ALMAC2");
2040 return false0;
2041 }
2042 }
2043
2044 /* Parse key */
2045 p = rec->key;
2046 if (!strncmp(p, "ptk:", 4)) {
2047 p += 4;
2048 } else if (!strncmp(p, "gtk:", 4)) {
2049 rec->bin.gtk = true1;
2050 p += 4;
2051 } else {
2052 *err = g_strdup("Key must start with 'ptk:' or 'gtk:'")g_strdup_inline ("Key must start with 'ptk:' or 'gtk:'");
2053 return false0;
2054 }
2055
2056 g_strstrip(p)g_strchomp (g_strchug (p));
2057
2058 if (rec->bin.key) {
2059 g_byte_array_free(rec->bin.key, true1);
2060 }
2061 rec->bin.key = g_byte_array_new();
2062 if (!hex_str_to_bytes(p, rec->bin.key, false0) || rec->bin.key->len != DOT1905DECRYPT_KEY_LEN32) {
2063 *err = g_strdup("Key must be a 256 bit hexadecimal string")g_strdup_inline ("Key must be a 256 bit hexadecimal string");
2064 g_byte_array_free(rec->bin.key, true1);
2065 rec->bin.key = NULL((void*)0);
2066 return false0;
2067 }
2068
2069 rec->bin.valid = true1;
2070
2071 return true1;
2072}
2073
2074static void
2075uat_key_record_free_cb(void*r)
2076{
2077 uat_key_record_t* rec = r;
2078
2079 g_free(rec->almac1)(__builtin_object_size ((rec->almac1), 0) != ((size_t) - 1
)) ? g_free_sized (rec->almac1, __builtin_object_size ((rec
->almac1), 0)) : (g_free) (rec->almac1)
;
2080 g_free(rec->almac2)(__builtin_object_size ((rec->almac2), 0) != ((size_t) - 1
)) ? g_free_sized (rec->almac2, __builtin_object_size ((rec
->almac2), 0)) : (g_free) (rec->almac2)
;
2081 g_free(rec->key)(__builtin_object_size ((rec->key), 0) != ((size_t) - 1)) ?
g_free_sized (rec->key, __builtin_object_size ((rec->key
), 0)) : (g_free) (rec->key)
;
2082
2083 if (rec->bin.key) {
2084 g_byte_array_free(rec->bin.key, true1);
2085 }
2086}
2087
2088UAT_CSTRING_CB_DEF(uat_key_records, almac1, uat_key_record_t)static void uat_key_records_almac1_set_cb(void* rec, const char
* buf, unsigned len, const void* u1 __attribute__((unused)), const
void* u2 __attribute__((unused))) { char* new_buf = g_strndup
(buf,len); (__builtin_object_size (((((uat_key_record_t*)rec)
->almac1)), 0) != ((size_t) - 1)) ? g_free_sized ((((uat_key_record_t
*)rec)->almac1), __builtin_object_size (((((uat_key_record_t
*)rec)->almac1)), 0)) : (g_free) ((((uat_key_record_t*)rec
)->almac1)); (((uat_key_record_t*)rec)->almac1) = new_buf
; } static void uat_key_records_almac1_tostr_cb(void* rec, char
** out_ptr, unsigned* out_len, const void* u1 __attribute__((
unused)), const void* u2 __attribute__((unused))) { if (((uat_key_record_t
*)rec)->almac1 ) { *out_ptr = g_strdup_inline ((((uat_key_record_t
*)rec)->almac1)); *out_len = (unsigned)strlen((((uat_key_record_t
*)rec)->almac1)); } else { *out_ptr = g_strdup_inline ("")
; *out_len = 0; } }
2089UAT_CSTRING_CB_DEF(uat_key_records, almac2, uat_key_record_t)static void uat_key_records_almac2_set_cb(void* rec, const char
* buf, unsigned len, const void* u1 __attribute__((unused)), const
void* u2 __attribute__((unused))) { char* new_buf = g_strndup
(buf,len); (__builtin_object_size (((((uat_key_record_t*)rec)
->almac2)), 0) != ((size_t) - 1)) ? g_free_sized ((((uat_key_record_t
*)rec)->almac2), __builtin_object_size (((((uat_key_record_t
*)rec)->almac2)), 0)) : (g_free) ((((uat_key_record_t*)rec
)->almac2)); (((uat_key_record_t*)rec)->almac2) = new_buf
; } static void uat_key_records_almac2_tostr_cb(void* rec, char
** out_ptr, unsigned* out_len, const void* u1 __attribute__((
unused)), const void* u2 __attribute__((unused))) { if (((uat_key_record_t
*)rec)->almac2 ) { *out_ptr = g_strdup_inline ((((uat_key_record_t
*)rec)->almac2)); *out_len = (unsigned)strlen((((uat_key_record_t
*)rec)->almac2)); } else { *out_ptr = g_strdup_inline ("")
; *out_len = 0; } }
2090UAT_CSTRING_CB_DEF(uat_key_records, key, uat_key_record_t)static void uat_key_records_key_set_cb(void* rec, const char*
buf, unsigned len, const void* u1 __attribute__((unused)), const
void* u2 __attribute__((unused))) { char* new_buf = g_strndup
(buf,len); (__builtin_object_size (((((uat_key_record_t*)rec)
->key)), 0) != ((size_t) - 1)) ? g_free_sized ((((uat_key_record_t
*)rec)->key), __builtin_object_size (((((uat_key_record_t*
)rec)->key)), 0)) : (g_free) ((((uat_key_record_t*)rec)->
key)); (((uat_key_record_t*)rec)->key) = new_buf; } static
void uat_key_records_key_tostr_cb(void* rec, char** out_ptr,
unsigned* out_len, const void* u1 __attribute__((unused)), const
void* u2 __attribute__((unused))) { if (((uat_key_record_t*)
rec)->key ) { *out_ptr = g_strdup_inline ((((uat_key_record_t
*)rec)->key)); *out_len = (unsigned)strlen((((uat_key_record_t
*)rec)->key)); } else { *out_ptr = g_strdup_inline (""); *
out_len = 0; } }
2091
2092/*
2093 * Decryption
2094 */
2095#define DECRYPT_MIC_CMDU_OCTETS6 6
2096#define DECRYPT_COUNTER_OCTETS6 6
2097
2098static int
2099dissect_ieee1905_tlvs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
2100
2101static bool_Bool
2102is_mac_equal(const uint8_t *mac1, const uint8_t *mac2)
2103{
2104 return !memcmp(mac1, mac2, 6);
2105}
2106
2107static bool_Bool
2108is_broadcast_mac(const uint8_t *mac)
2109{
2110 return is_mac_equal(mac, broadcast_mac);
2111}
2112
2113static void
2114// NOLINTNEXTLINE(misc-no-recursion)
2115decrypt_encrypted_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
2116{
2117 proto_tree *decrypt_tree = NULL((void*)0);
2118 proto_item *decrypt_item = NULL((void*)0);
2119 bool_Bool has_valid_key = false0;
2120
2121 decrypt_tree = proto_tree_add_subtree(tree, tvb, offset, -1,
2122 ett_encrypted_decrypted,
2123 &decrypt_item, "Decrypted");
2124
2125 if (!enable_decryption) {
2126 proto_item_append_text(decrypt_item, ": Disabled");
2127 return;
2128 }
2129
2130 for (unsigned int i = 0; i < uat_num_keys; i++) {
2131 uat_key_record_t *rec = &uat_key_records[i];
2132
2133 if (rec->bin.valid && !rec->bin.gtk) {
2134 has_valid_key = true1;
2135 break;
2136 }
2137 }
2138
2139 if (!has_valid_key) {
2140 proto_item_append_text(decrypt_item, ": No (valid) decryption keys configured");
2141 return;
2142 }
2143
2144 /* Get data from CMDU and Encrypted TLV */
2145 const uint8_t *cmdu = p_get_proto_data(pinfo->pool, pinfo, proto_ieee1905, DECRYPT_MIC_CMDU_OCTETS_KEY);
2146
2147 const uint8_t *tx_counter = tvb_get_ptr(tvb, offset, DECRYPT_COUNTER_OCTETS6);
2148 offset += DECRYPT_COUNTER_OCTETS6;
2149
2150 const uint8_t *source_al_mac = tvb_get_ptr(tvb, offset, 6);
2151 offset += 6;
2152
2153 const uint8_t *dest_al_mac = tvb_get_ptr(tvb, offset, 6);
2154 offset += 6;
2155
2156 uint16_t encrypted_data_len = tvb_get_ntohs(tvb, offset);
2157 offset += 2;
2158
2159 const uint8_t *encrypted_data = tvb_get_ptr(tvb, offset, encrypted_data_len);
2160
2161 /* Get decrypted_data_len and buffer */
2162 uint8_t *decrypted_data = NULL((void*)0);
2163 size_t decrypted_data_len = 0;
2164
2165 if (Dot1905DecryptGetDecryptLength(encrypted_data_len, &decrypted_data_len)) {
2166 proto_item_append_text(decrypt_item, ": Encrypted data too short");
2167 return;
2168 }
2169
2170 /* Add dummy EOM TLV to avoid dissect warning by dissect_ieee1905_tlvs */
2171 decrypted_data_len += 3;
2172 decrypted_data = wmem_alloc0(pinfo->pool, decrypted_data_len);
2173
2174 /* Decryption parameters */
2175 const uint8_t *params[] = {cmdu, tx_counter, source_al_mac, dest_al_mac};
2176 size_t params_lens[] = {DECRYPT_MIC_CMDU_OCTETS6, DECRYPT_COUNTER_OCTETS6, 6, 6};
2177
2178 /* Loop over all available keys */
2179 bool_Bool success = false0;
2180
2181 for (unsigned int i = 0; i < uat_num_keys; i++) {
2182 uat_key_record_t *rec = &uat_key_records[i];
2183 tvbuff_t *decrypted_tvb;
2184
2185 /* Skip invalid */
2186 if (!rec->bin.valid) {
2187 continue;
2188 }
2189
2190 /* Skip GTK */
2191 if (rec->bin.gtk) {
2192 continue;
2193 }
2194
2195 /* Check source/dest al mac */
2196 if ((is_broadcast_mac(rec->bin.almac1) || is_mac_equal(rec->bin.almac1, source_al_mac)) &&
2197 (is_broadcast_mac(rec->bin.almac2) || is_mac_equal(rec->bin.almac2, dest_al_mac ))) {
2198 /* ok */
2199 } else if ((is_broadcast_mac(rec->bin.almac1) || is_mac_equal(rec->bin.almac1, dest_al_mac )) &&
2200 (is_broadcast_mac(rec->bin.almac2) || is_mac_equal(rec->bin.almac2, source_al_mac))) {
2201 /* ok */
2202 } else {
2203 continue;
2204 }
2205
2206 if (Dot1905DecryptDecrypt(rec->bin.key->data, rec->bin.key->len,
2207 encrypted_data, encrypted_data_len,
2208 array_length(params)(sizeof (params) / sizeof (params)[0]), params, params_lens,
2209 decrypted_data)) {
2210 continue;
2211 }
2212
2213 decrypted_tvb = tvb_new_child_real_data(tvb, decrypted_data, (unsigned)decrypted_data_len, (unsigned)decrypted_data_len);
2214
2215 dissect_ieee1905_tlvs(decrypted_tvb, pinfo, decrypt_tree);
2216
2217 success = true1;
2218 break;
2219 }
2220
2221 if (!success) {
2222 proto_item_append_text(decrypt_item, ": No valid decryption key found");
2223 }
2224}
2225
2226#define MIC_TLV_OCTETS13 13
2227
2228static void
2229check_mic_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
2230{
2231 proto_item *check_item = NULL((void*)0);
2232 bool_Bool has_valid_key = false0;
2233
2234 proto_tree_add_subtree(tree, tvb, offset, -1,
2235 ett_mic_check,
2236 &check_item, "Check");
2237
2238 if (!enable_decryption) {
2239 proto_item_append_text(check_item, ": Disabled");
2240 return;
2241 }
2242
2243 for (unsigned int i = 0; i < uat_num_keys; i++) {
2244 uat_key_record_t *rec = &uat_key_records[i];
2245
2246 if (rec->bin.valid && rec->bin.gtk) {
2247 has_valid_key = true1;
2248 break;
2249 }
2250 }
2251
2252 if (!has_valid_key) {
2253 proto_item_append_text(check_item, ": No (valid) GTK configured");
2254 return;
2255 }
2256
2257 /* Check if packet lenghts where correct */
2258 if (!GPOINTER_TO_UINT(p_get_proto_data(pinfo->pool, pinfo, proto_ieee1905, MIC_EOM_KEY))((guint) (gulong) (p_get_proto_data(pinfo->pool, pinfo, proto_ieee1905
, MIC_EOM_KEY)))
) {
2259 proto_item_append_text(check_item, ": Invalid TLV lenghts");
2260 return;
2261 }
2262
2263 /* Check version */
2264 uint8_t version = tvb_get_uint8(tvb, offset) & 0x30 >> 4;
2265
2266 if (version != 1) {
2267 proto_item_append_text(check_item, ": Unsupported version [%d]", version);
2268 expert_add_info(pinfo, check_item, &ei_ieee1905_mic_check_unsupported);
2269 return;
2270 }
2271
2272 /* Get 13 first bytes from MIC TLV */
2273 const uint8_t *mic_tlv = tvb_get_ptr(tvb, offset, MIC_TLV_OCTETS13);
2274 offset += MIC_TLV_OCTETS13;
2275
2276 /* Get MIC */
2277 uint16_t mic_len = tvb_get_ntohs(tvb, offset);
2278 offset += 2;
2279
2280 if (mic_len != DOT1905MIC_HASH_LEN32) {
2281 proto_item_append_text(check_item, ": Unsupported MIC length [%d]", mic_len);
2282 expert_add_info(pinfo, check_item, &ei_ieee1905_mic_check_unsupported);
2283 return;
2284 }
2285
2286 const uint8_t *mic = tvb_get_ptr(tvb, offset, mic_len);
2287
2288 /* Get CMDU and TLVs */
2289 const uint8_t *cmdu = p_get_proto_data(pinfo->pool, pinfo, proto_ieee1905, DECRYPT_MIC_CMDU_OCTETS_KEY);
2290 const uint8_t *tlvs = p_get_proto_data(pinfo->pool, pinfo, proto_ieee1905, MIC_TLVS_KEY);
2291 uint16_t tlvs_len = GPOINTER_TO_UINT(p_get_proto_data(pinfo->pool, pinfo, proto_ieee1905, MIC_TLVS_LEN_KEY))((guint) (gulong) (p_get_proto_data(pinfo->pool, pinfo, proto_ieee1905
, MIC_TLVS_LEN_KEY)))
;
2292
2293 /* Construct data on which MIC is to be checked - allocate larger buffer then needed (part of tlvs is omitted) */
2294 uint8_t *data = wmem_alloc0(pinfo->pool, DECRYPT_MIC_CMDU_OCTETS6 + tlvs_len);
2295 uint16_t data_len = 0;
2296
2297 /* 6 first bytes from CMDU */
2298 memcpy(data + data_len, cmdu, DECRYPT_MIC_CMDU_OCTETS6);
2299 data_len += DECRYPT_MIC_CMDU_OCTETS6;
2300
2301 /* 13 first bytes from MIC TLV */
2302 memcpy(data + data_len, mic_tlv, MIC_TLV_OCTETS13);
2303 data_len += MIC_TLV_OCTETS13;
2304
2305 /* Copy all TLV except the MIC TLV itself and include EOM TLV */
2306 /* Note: TLV lenghts are guaranteed to be ok at this point */
2307 const uint8_t *p = tlvs;
2308
2309 do {
2310 uint8_t tlv_type = p[0];
2311 uint16_t tlv_len = pntohu16(p + 1);
2312 uint16_t tlv_tot_len = 3 + tlv_len;
2313
2314 if (tlv_type != MIC_TLV0xAB) {
2315 memcpy(data + data_len, p, tlv_tot_len);
2316 data_len += tlv_tot_len;
2317 }
2318
2319 p += tlv_tot_len;
2320 } while (p < tlvs + tlvs_len);
2321
2322 /* Loop over all available keys */
2323 bool_Bool success = false0;
2324
2325 for (unsigned int i = 0; i < uat_num_keys; i++) {
2326 uat_key_record_t *rec = &uat_key_records[i];
2327 uint8_t hash[DOT1905MIC_HASH_LEN32];
2328
2329 /* Skip invalid */
2330 if (!rec->bin.valid) {
2331 continue;
2332 }
2333
2334 /* Skip PTK */
2335 if (!rec->bin.gtk) {
2336 continue;
2337 }
2338
2339 /* Derive MIC */
2340 if (Dot1905MICDerive(rec->bin.key->data, rec->bin.key->len, data, data_len, hash)) {
2341 continue;
2342 }
2343
2344 /* Check MIC */
2345 if (memcmp(mic, hash, mic_len)) {
2346 continue;
2347 }
2348
2349 success = true1;
2350 break;
2351 }
2352
2353 proto_item_append_text(check_item, success ? ": Success" : ": Failed");
2354
2355 if (!success) {
2356 expert_add_info(pinfo, check_item, &ei_ieee1905_mic_check_failed);
2357 }
2358}
2359
2360/*
2361 * Minimum message has a single End of Message TLV with 3 bytes, plus 8 byte
2362 * header.
2363 */
2364#define IEEE1905_MIN_LENGTH11 11
2365
2366static int
2367dissect_80211_information_elements(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int len)
2368{
2369 int offset_end = offset + len;
2370 while (offset < offset_end) {
2371 int tlen = add_tagged_field(pinfo, tree, tvb, offset, 0, NULL((void*)0), 0, NULL((void*)0));
2372 if (tlen == 0) {
2373 break;
2374 }
2375 offset += tlen;
2376 }
2377 return offset;
2378}
2379
2380static int
2381dissect_media_type(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2382 proto_tree *tree, unsigned offset)
2383{
2384 proto_item *pi = NULL((void*)0);
2385 proto_tree *media_type = NULL((void*)0);
2386 uint8_t bits_15_to_8 = 0, bits_7_to_0 = 0;
2387
2388 pi = proto_tree_add_item(tree, hf_ieee1905_media_type, tvb, offset,
2389 2, ENC_BIG_ENDIAN0x00000000);
2390
2391 media_type = proto_item_add_subtree(pi, ett_media_type);
2392
2393 /*
2394 * Now, break it out
2395 */
2396 bits_15_to_8 = tvb_get_uint8(tvb, offset);
2397 bits_7_to_0 = tvb_get_uint8(tvb, offset + 1);
2398
2399 proto_tree_add_item(media_type, hf_ieee1905_media_type_high, tvb, offset,
2400 1, ENC_NA0x00000000);
2401 offset++;
2402
2403 proto_tree_add_item(media_type, hf_ieee1905_media_type_low, tvb, offset,
2404 1, ENC_NA0x00000000);
2405 offset++;
2406
2407 switch (bits_15_to_8) {
2408 case 0:
2409 proto_item_append_text(pi, ", %s",
2410 val_to_str_const(bits_7_to_0,
2411 ieee1905_media_type_0_vals,
2412 "Reserved"));
2413 break;
2414
2415 case 1:
2416 proto_item_append_text(pi, ", %s",
2417 val_to_str_const(bits_7_to_0,
2418 ieee1905_media_type_1_vals,
2419 "Reserved"));
2420 break;
2421
2422 case 2:
2423 proto_item_append_text(pi, ", %s",
2424 val_to_str(pinfo->pool, bits_7_to_0,
2425 ieee1905_media_type_2_vals,
2426 "Reserved"));
2427 break;
2428
2429 case 3:
2430 proto_item_append_text(pi, ", %s",
2431 val_to_str_const(bits_7_to_0,
2432 ieee1905_media_type_3_vals,
2433 "Reserved"));
2434 break;
2435
2436 case 0xff:
2437 proto_item_append_text(pi, ", Unknown media");
2438 break;
2439
2440 default:
2441 proto_item_append_text(pi, ", Reserved");
2442 break;
2443 }
2444
2445 return offset;
2446}
2447
2448/*
2449 * Dissect a local interface list, putting them each in a subtree labeled
2450 * with the number of the interface.
2451 */
2452static int
2453dissect_local_interface_list(tvbuff_t *tvb, packet_info *pinfo,
2454 proto_tree *tree, unsigned offset, uint8_t count)
2455{
2456 unsigned lil_index = 0;
2457 unsigned media_type_offset;
2458 proto_item *pi = NULL((void*)0);
2459 proto_tree *dev_tree = NULL((void*)0);
2460
2461 while (count > 0) {
2462 uint8_t spec_info_len = 0;
2463
2464 dev_tree = proto_tree_add_subtree_format(tree, tvb, offset, 8,
2465 ett_device_information_tree,
2466 &pi, "Local interface %u device info",
2467 lil_index);
2468
2469 proto_tree_add_item(dev_tree, hf_ieee1905_mac_address_type, tvb,
2470 offset, 6, ENC_NA0x00000000);
2471 offset += 6;
2472
2473 media_type_offset = offset;
2474
2475 offset = dissect_media_type(tvb, pinfo, dev_tree, offset);
2476
2477 spec_info_len = tvb_get_uint8(tvb, offset);
2478
2479 proto_tree_add_item(dev_tree, hf_ieee1905_media_spec_info_len,
2480 tvb, offset, 1, ENC_NA0x00000000);
2481 offset++;
2482
2483 if (spec_info_len) {
2484 /* FIXME: This should be dissected ... */
2485 proto_tree_add_item(dev_tree, hf_ieee1905_media_spec_info,
2486 tvb, offset, spec_info_len, ENC_NA0x00000000);
2487 offset += spec_info_len;
2488 }
2489
2490 proto_item_set_len(pi, 6 + (offset - media_type_offset));
2491
2492 count--;
2493 lil_index++;
2494 }
2495
2496 return offset;
2497}
2498
2499/*
2500 * Dissect device bridging capabilities
2501 */
2502static int
2503dissect_device_bridging_capabilities(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2504 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
2505{
2506 uint8_t count = tvb_get_uint8(tvb, offset);
2507 uint8_t tuple_no = 0;
2508 uint8_t mac_addresses;
2509 unsigned start = 0;
2510 proto_tree *tuple_list = NULL((void*)0);
2511 proto_tree *bridging_list = NULL((void*)0);
2512 proto_item *tpi = NULL((void*)0), *mpi = NULL((void*)0);
2513
2514 proto_tree_add_item(tree, hf_ieee1905_bridging_tuples_cnt, tvb, offset,
2515 1, ENC_NA0x00000000);
2516 tuple_list = proto_tree_add_subtree(tree, tvb, offset, -1,
2517 ett_bridging_tuples_list,
2518 &tpi, "Bridging tuples list");
2519
2520 start = offset; /* Starts at the count! */
2521 offset++;
2522
2523 while (count > 0) {
2524 unsigned bl_start = offset;
2525 mac_addresses = tvb_get_uint8(tvb, offset);
2526
2527 bridging_list = proto_tree_add_subtree_format(tuple_list, tvb, offset,
2528 -1, ett_bridging_mac_list,
2529 &mpi, "Bridging tuple %u", tuple_no);
2530
2531 proto_tree_add_item(bridging_list,
2532 hf_ieee1905_bridging_mac_address_cnt,
2533 tvb, offset, 1, ENC_NA0x00000000);
2534
2535 offset++;
2536 tuple_no++;
2537
2538 while (mac_addresses) {
2539 proto_tree_add_item(bridging_list,
2540 hf_ieee1905_bridging_mac_address, tvb,
2541 offset, 6, ENC_NA0x00000000);
2542 offset += 6;
2543 mac_addresses--;
2544
2545 }
2546
2547 proto_item_set_len(mpi, offset - bl_start);
2548 count--;
2549 }
2550
2551 proto_item_set_len(tpi, offset - start);
2552 return offset;
2553}
2554
2555/*
2556 * Dissect the non 1905 neighbor device list TLV
2557 */
2558static int
2559dissect_non_1905_neighbor_device_list(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2560 proto_tree *tree, unsigned offset, uint16_t len)
2561{
2562 proto_tree *neighbor_list = NULL((void*)0);
2563 proto_item *pi = NULL((void*)0);
2564 unsigned start;
2565 int remaining = len;
2566
2567 proto_tree_add_item(tree, hf_ieee1905_local_interface_mac, tvb,
2568 offset, 6, ENC_NA0x00000000);
2569
2570 remaining -= 6;
2571 offset += 6;
2572
2573 neighbor_list = proto_tree_add_subtree(tree, tvb, offset, -1,
2574 ett_non_1905_neighbor_list,
2575 &pi, "Non IEEE1905 neighbor devices");
2576
2577 start = offset;
2578
2579 while (remaining > 0) {
2580 proto_tree_add_item(neighbor_list, hf_ieee1905_neighbor_al_mac_addr,
2581 tvb, offset, 6, ENC_NA0x00000000);
2582
2583 remaining -= 6;
2584 offset += 6;
2585 }
2586
2587 proto_item_set_len(pi, offset - start);
2588
2589 return offset;
2590}
2591
2592/*
2593 * Dissect an IEEE1905 Neighbor device TLV
2594 */
2595static int
2596dissect_1905_neighbor_device(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2597 proto_tree *tree, unsigned offset, uint16_t len)
2598{
2599 proto_tree *neighbor_list = NULL((void*)0);
2600 proto_item *pi = NULL((void*)0);
2601 unsigned start;
2602 int remaining = len;
2603 static int * const flags[] = {
2604 &hf_ieee1905_bridges_flag,
2605 NULL((void*)0),
2606 };
2607
2608 proto_tree_add_item(tree, hf_ieee1905_local_interface_mac, tvb,
2609 offset, 6, ENC_NA0x00000000);
2610
2611 remaining -= 6;
2612 offset += 6;
2613
2614 neighbor_list = proto_tree_add_subtree(tree, tvb, offset, -1,
2615 ett_1905_neighbor_list, &pi,
2616 "IEEE1905 neighbor devices");
2617
2618 start = offset;
2619
2620 while (remaining > 0) {
2621 proto_tree_add_item(neighbor_list, hf_ieee1905_neighbor_al_mac_addr,
2622 tvb, offset, 6, ENC_NA0x00000000);
2623
2624 remaining -= 6;
2625 offset += 6;
2626
2627 proto_tree_add_bitmask(neighbor_list, tvb, offset,
2628 hf_ieee1905_neighbor_flags,
2629 ett_ieee1905_neighbor_flags, flags, ENC_NA0x00000000);
2630
2631 remaining--;
2632 offset++;
2633
2634 }
2635
2636 proto_item_set_len(pi, offset - start);
2637
2638 return offset;
2639}
2640
2641/*
2642 * Dissect the link metric result code
2643 */
2644static int
2645dissect_link_metric_result_code(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2646 proto_tree *tree, unsigned offset)
2647{
2648 proto_item *pi = NULL((void*)0);
2649 uint8_t code = tvb_get_uint8(tvb, offset);
2650
2651 pi = proto_tree_add_item(tree, hf_ieee1905_link_metric_result_code,
2652 tvb, offset, 1, ENC_NA0x00000000);
2653
2654 proto_item_append_text(pi, ", %s",
2655 val_to_str_const(code, ieee1905_link_metric_result_vals,
2656 "Reserved"));
2657
2658 offset++;
2659
2660 return offset;
2661}
2662
2663/*
2664 * Dissect a vendor specific TLV.
2665 */
2666static int
2667dissect_vendor_specific(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2668 proto_tree *tree, unsigned offset, uint16_t len)
2669{
2670
2671 proto_tree_add_item(tree, hf_ieee1905_vendor_specific_oui, tvb, offset,
2672 3, ENC_BIG_ENDIAN0x00000000);
2673 offset += 3;
2674
2675 proto_tree_add_item(tree, hf_ieee1905_vendor_specific_info, tvb, offset,
2676 len - 3, ENC_NA0x00000000);
2677 offset += (len - 3);
2678
2679 return offset;
2680}
2681
2682/*
2683 * Dissect the searched role TLV
2684 */
2685static int
2686dissect_searched_role(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2687 proto_tree *tree, unsigned offset)
2688{
2689 proto_item *pi = NULL((void*)0);
2690 uint8_t role = tvb_get_uint8(tvb, offset);
2691
2692 pi = proto_tree_add_item(tree, hf_ieee1905_searched_role, tvb, offset,
2693 1, ENC_NA0x00000000);
2694
2695 proto_item_append_text(pi, ", %s",
2696 val_to_str_const(role, ieee1905_searched_role_vals,
2697 "Reserved"));
2698
2699 offset++;
2700
2701 return offset;
2702}
2703
2704/*
2705 * Dissect the supported role TLV
2706 */
2707static int
2708dissect_supported_role(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2709 proto_tree *tree, unsigned offset)
2710{
2711 proto_item *pi = NULL((void*)0);
2712 uint8_t role = tvb_get_uint8(tvb, offset);
2713
2714 pi = proto_tree_add_item(tree, hf_ieee1905_supported_role, tvb, offset,
2715 1, ENC_NA0x00000000);
2716
2717 /*
2718 * We can re-use this.
2719 */
2720 proto_item_append_text(pi, ", %s",
2721 val_to_str_const(role, ieee1905_searched_role_vals,
2722 "Reserved"));
2723
2724 offset++;
2725
2726 return offset;
2727}
2728
2729/*
2730 * Dissect an Auto config frequency band TLV
2731 */
2732static int
2733dissect_auto_config_freq_band(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2734 proto_tree *tree, unsigned offset)
2735{
2736 proto_item *pi = NULL((void*)0);
2737 uint8_t freq = tvb_get_uint8(tvb, offset);
2738
2739 pi = proto_tree_add_item(tree, hf_ieee1905_auto_config_freq_band, tvb,
2740 offset, 1, ENC_NA0x00000000);
2741
2742 proto_item_append_text(pi, ", %s",
2743 val_to_str_const(freq, ieee1905_freq_band_vals,
2744 "Reserved"));
2745
2746 offset++;
2747
2748 return offset;
2749}
2750
2751/*
2752 * Dissect a Supported frequency band TLV
2753 */
2754static int
2755dissect_supported_freq_band(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2756 proto_tree *tree, unsigned offset)
2757{
2758 proto_item *pi = NULL((void*)0);
2759 uint8_t freq = tvb_get_uint8(tvb, offset);
2760
2761 pi = proto_tree_add_item(tree, hf_ieee1905_supported_freq_band, tvb,
2762 offset, 1, ENC_NA0x00000000);
2763
2764 proto_item_append_text(pi, ", %s",
2765 val_to_str_const(freq, ieee1905_freq_band_vals,
2766 "Reserved"));
2767
2768 offset++;
2769
2770 return offset;
2771}
2772
2773/*
2774 * Dissect a WSC TLV
2775 */
2776static int
2777dissect_wsc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
2778 unsigned offset, uint16_t len)
2779{
2780 dissect_wps_tlvs(tree, tvb, offset, len, pinfo, true1);
2781 offset += len;
2782
2783 return offset;
2784}
2785
2786/*
2787 * Dissect a push button notification event TLV
2788 */
2789static int
2790dissect_push_button_event_notification(tvbuff_t *tvb, packet_info *pinfo,
2791 proto_tree *tree, unsigned offset)
2792{
2793 proto_item *pi = NULL((void*)0), *mpi = NULL((void*)0);
2794 proto_tree *media_type_list = NULL((void*)0), *media_item = NULL((void*)0);
2795 unsigned list_offset, media_type_offset;
2796 uint8_t media_types = tvb_get_uint8(tvb, offset);
2797 uint8_t media_type_index = 0;
2798
2799 proto_tree_add_item(tree, hf_ieee1905_event_notification_media_types,
2800 tvb, offset, 1, ENC_NA0x00000000);
2801 offset++;
2802
2803 /* If there are none, nothing more to do. */
2804 if (media_types == 0)
2805 return offset;
2806
2807 media_type_list = proto_tree_add_subtree(tree, tvb, offset, -1,
2808 ett_media_type_list,
2809 &pi, "Media type list");
2810 list_offset = offset;
2811
2812 while (media_type_index < media_types) {
2813 uint8_t spec_info_len = 0;
2814
2815 media_item = proto_tree_add_subtree_format(media_type_list,
2816 tvb, offset, -1,
2817 ett_media_item, &mpi,
2818 "Media type %u", media_type_index);
2819
2820 media_type_offset = offset;
2821
2822 offset = dissect_media_type(tvb, pinfo, media_item, offset);
2823
2824 spec_info_len = tvb_get_uint8(tvb, offset);
2825
2826 proto_tree_add_item(media_item, hf_ieee1905_media_spec_info_len,
2827 tvb, offset, 1, ENC_NA0x00000000);
2828 offset++;
2829
2830 if (spec_info_len) {
2831 /* FIXME: This should be dissected ... */
2832 proto_tree_add_item(media_item, hf_ieee1905_media_spec_info,
2833 tvb, offset, spec_info_len, ENC_NA0x00000000);
2834 offset += spec_info_len;
2835 }
2836
2837 proto_item_set_len(mpi, offset - media_type_offset);
2838
2839 media_type_index++;
2840 }
2841
2842 proto_item_set_len(pi, offset - list_offset);
2843
2844 return offset;
2845}
2846
2847/*
2848 * Dissect a push button event join TLV
2849 */
2850static int
2851dissect_push_button_join_notification(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2852 proto_tree *tree, unsigned offset)
2853{
2854 proto_tree_add_item(tree, hf_ieee1905_sender_al_id, tvb, offset, 6,
2855 ENC_NA0x00000000);
2856 offset += 6;
2857
2858 proto_tree_add_item(tree, hf_ieee1905_push_button_event_msg_id, tvb,
2859 offset, 2, ENC_BIG_ENDIAN0x00000000);
2860 offset += 2;
2861
2862 proto_tree_add_item(tree, hf_ieee1905_sender_joining_interface, tvb,
2863 offset, 2, ENC_NA0x00000000);
2864 offset += 6;
2865
2866 proto_tree_add_item(tree, hf_ieee1905_new_device_interface, tvb,
2867 offset, 2, ENC_NA0x00000000);
2868
2869 return offset;
2870}
2871
2872/*
2873 * Dissect a generic phy device info TLV
2874 */
2875static int
2876dissect_generic_phy_device_info(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2877 proto_tree *tree, unsigned offset)
2878{
2879 proto_item *pi = NULL((void*)0);
2880 proto_tree *local_interface_list = NULL((void*)0);
2881 uint8_t local_intf_count, local_intf_index = 0;
2882 int saved_offset = 0;
2883
2884 proto_tree_add_item(tree, hf_ieee1905_device_al_mac, tvb, offset,
2885 6, ENC_NA0x00000000);
2886 offset += 6;
2887
2888 local_intf_count = tvb_get_uint8(tvb, offset);
2889
2890 proto_tree_add_item(tree, hf_ieee1905_local_interface_count, tvb,
2891 offset, 1, ENC_NA0x00000000);
2892
2893 offset++;
2894
2895 if (local_intf_count == 0)
2896 return offset;
2897
2898 local_interface_list = proto_tree_add_subtree(tree, tvb, offset, -1,
2899 ett_local_interface_list,
2900 &pi, "Local interface list");
2901 saved_offset = 0;
2902
2903 while (local_intf_index < local_intf_count) {
2904 proto_tree *intf_tree = NULL((void*)0);
2905 proto_item *ipi = NULL((void*)0);
2906 unsigned start_offset = offset;
2907 uint8_t url_field_count, media_spec_count;
2908
2909 intf_tree = proto_tree_add_subtree_format(local_interface_list,
2910 tvb, offset, -1,
2911 ett_local_interface_info,
2912 &ipi, "Local interface %u generic info",
2913 local_intf_index);
2914
2915 proto_tree_add_item(intf_tree, hf_ieee1905_local_interface_mac,
2916 tvb, offset, 6, ENC_NA0x00000000);
2917 offset += 6;
2918
2919 proto_tree_add_item(intf_tree, hf_ieee1905_local_intf_oui,
2920 tvb, offset, 3, ENC_BIG_ENDIAN0x00000000);
2921 offset+= 3;
2922
2923 proto_tree_add_item(intf_tree, hf_ieee1905_local_intf_variant,
2924 tvb, offset, 1, ENC_NA0x00000000);
2925 offset++;
2926
2927 proto_tree_add_item(intf_tree, hf_ieee1905_local_intf_variant_name,
2928 tvb, offset, 32, ENC_UTF_80x00000002);
2929 offset += 32;
2930
2931 url_field_count = tvb_get_uint8(tvb, offset);
2932 proto_tree_add_item(intf_tree, hf_ieee1905_local_intf_url_count,
2933 tvb, offset, 1, ENC_NA0x00000000);
2934 offset++;
2935
2936 media_spec_count = tvb_get_uint8(tvb, offset);
2937 proto_tree_add_item(intf_tree, hf_ieee1905_local_intf_spec_count,
2938 tvb, offset, 1, ENC_NA0x00000000);
2939 offset++;
2940
2941 proto_tree_add_item(intf_tree, hf_ieee1905_local_intf_url, tvb,
2942 offset, url_field_count, ENC_ASCII0x00000000);
2943 offset += url_field_count;
2944
2945 proto_tree_add_item(intf_tree, hf_ieee1905_local_intf_spec, tvb,
2946 offset, media_spec_count, ENC_NA0x00000000);
2947 offset+= media_spec_count;
2948
2949 proto_item_set_len(ipi, offset - start_offset);
2950
2951 local_intf_index++;
2952 }
2953
2954 proto_item_set_len(pi, offset - saved_offset);
2955
2956 return offset;
2957}
2958
2959/*
2960 * Dissect a Device Identification Type TLV
2961 */
2962static int
2963dissect_device_identification(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2964 proto_tree *tree, unsigned offset)
2965{
2966 proto_tree_add_item(tree, hf_ieee1905_dev_id_friendly_name, tvb,
2967 offset, 64, ENC_UTF_80x00000002);
2968 offset += 64;
2969
2970 proto_tree_add_item(tree, hf_ieee1905_dev_id_manuf_name, tvb,
2971 offset, 64, ENC_UTF_80x00000002);
2972 offset += 64;
2973
2974 proto_tree_add_item(tree, hf_ieee1905_dev_id_manuf_model, tvb,
2975 offset, 64, ENC_UTF_80x00000002);
2976 offset += 64;
2977
2978 return offset;
2979}
2980
2981/*
2982 * Dissect a Control URL Type TLV
2983 */
2984static int
2985dissect_control_url_type(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
2986 proto_tree *tree, unsigned offset, uint16_t len)
2987{
2988 proto_tree_add_item(tree, hf_ieee1905_control_url, tvb, offset,
2989 len, ENC_ASCII0x00000000);
2990 offset += len;
2991
2992 return offset;
2993}
2994
2995/*
2996 * Dissect an IPv4 Type TLV
2997 */
2998static int
2999dissect_ipv4_type(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3000 proto_tree *tree, unsigned offset)
3001{
3002 uint8_t entry_count = tvb_get_uint8(tvb, offset);
3003 uint8_t entry_index = 0;
3004 proto_item *pi = NULL((void*)0);
3005 proto_tree *ipv4_list = NULL((void*)0);
3006 unsigned saved_offset = 0;
3007
3008 proto_tree_add_item(tree, hf_ieee1905_ipv4_type_count, tvb, offset,
3009 1, ENC_NA0x00000000);
3010 offset++;
3011
3012 if (entry_count == 0)
3013 return offset;
3014
3015 ipv4_list = proto_tree_add_subtree(tree, tvb, offset, -1,
3016 ett_ipv4_list,
3017 &pi, "IPv4 type list");
3018 saved_offset = offset;
3019
3020 while (entry_index < entry_count) {
3021 proto_tree *ipv4_tree = NULL((void*)0), *addr_list = NULL((void*)0);
3022 proto_item *ipi = NULL((void*)0);
3023 unsigned start_offset = offset;
3024 uint8_t addr_count = 0, addr_index = 0;
3025
3026 ipv4_tree = proto_tree_add_subtree_format(ipv4_list,
3027 tvb, offset, -1,
3028 ett_ipv4_info,
3029 &ipi, "IPv4 type %u info",
3030 entry_index);
3031
3032 proto_tree_add_item(ipv4_tree, hf_ieee1905_mac_address, tvb,
3033 offset, 6, ENC_NA0x00000000);
3034 offset += 6;
3035
3036 addr_count = tvb_get_uint8(tvb, offset);
3037 proto_tree_add_item(ipv4_tree, hf_ieee1905_ipv4_addr_count,
3038 tvb, offset, 1, ENC_NA0x00000000);
3039 offset++;
3040
3041 if (addr_count == 0)
3042 continue;
3043
3044 addr_list = proto_tree_add_subtree(ipv4_tree, tvb, offset,
3045 addr_count * 9,
3046 ett_ipv4_type_addr_list,
3047 NULL((void*)0), "IPv4 address list");
3048
3049 while (addr_index < addr_count) {
3050 proto_tree *addr_tree = NULL((void*)0);
3051 proto_item *atpi = NULL((void*)0);
3052 uint8_t addr_type = tvb_get_uint8(tvb, offset);
3053
3054 addr_tree = proto_tree_add_subtree_format(addr_list, tvb,
3055 offset, 9, ett_ipv4_addr_info,
3056 NULL((void*)0), "IPv4 address %u info",
3057 addr_index);
3058
3059 atpi = proto_tree_add_item(addr_tree, hf_ieee1905_addr_type,
3060 tvb, offset, 1, ENC_NA0x00000000);
3061 proto_item_append_text(atpi, ", %s",
3062 val_to_str_const(addr_type, ieee1905_ipv4_addr_type_vals,
3063 "Reserved"));
3064 offset++;
3065
3066 proto_tree_add_item(addr_tree, hf_ieee1905_ipv4_addr, tvb,
3067 offset, 4, ENC_BIG_ENDIAN0x00000000);
3068 offset += 4;
3069
3070 proto_tree_add_item(addr_tree, hf_ieee1905_dhcp_server, tvb,
3071 offset, 4, ENC_BIG_ENDIAN0x00000000);
3072 offset += 4;
3073
3074 addr_index++;
3075 }
3076
3077 proto_item_set_len(ipi, offset - start_offset);
3078
3079 entry_index++;
3080 }
3081
3082 proto_item_set_len(pi, offset - saved_offset);
3083
3084 return offset;
3085}
3086
3087/*
3088 * Dissect an IPv6 Type TLV
3089 */
3090static int
3091dissect_ipv6_type(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3092 proto_tree *tree, unsigned offset)
3093{
3094 uint8_t entry_count = tvb_get_uint8(tvb, offset);
3095 uint8_t entry_index = 0;
3096 proto_item *pi = NULL((void*)0);
3097 proto_tree *ipv6_list = NULL((void*)0);
3098 unsigned saved_offset = 0;
3099
3100 proto_tree_add_item(tree, hf_ieee1905_ipv6_type_count, tvb, offset,
3101 1, ENC_NA0x00000000);
3102 offset++;
3103
3104 if (entry_count == 0)
3105 return offset;
3106
3107 ipv6_list = proto_tree_add_subtree(tree, tvb, offset, -1,
3108 ett_ipv6_list,
3109 &pi, "IPv6 type list");
3110 saved_offset = offset;
3111
3112 while (entry_index < entry_count) {
3113 proto_tree *ipv6_tree = NULL((void*)0), *addr_list = NULL((void*)0);
3114 proto_item *ipi = NULL((void*)0);
3115 unsigned start_offset = offset;
3116 uint8_t addr_count = 0, addr_index = 0;
3117
3118 ipv6_tree = proto_tree_add_subtree_format(ipv6_list,
3119 tvb, offset, -1,
3120 ett_ipv6_info,
3121 &ipi, "IPv6 type %u info",
3122 entry_index);
3123
3124 proto_tree_add_item(ipv6_tree, hf_ieee1905_ipv6_mac_address, tvb,
3125 offset, 6, ENC_NA0x00000000);
3126 offset += 6;
3127
3128 proto_tree_add_item(ipv6_tree, hf_ieee1905_ipv6_linklocal, tvb,
3129 offset, 16, ENC_NA0x00000000);
3130
3131 offset += 16;
3132
3133 addr_count = tvb_get_uint8(tvb, offset);
3134 proto_tree_add_item(ipv6_tree, hf_ieee1905_ipv6_addr_count,
3135 tvb, offset, 1, ENC_NA0x00000000);
3136 offset++;
3137
3138 if (addr_count == 0) {
3139 entry_index++;
3140 continue;
3141 }
3142
3143 addr_list = proto_tree_add_subtree(ipv6_tree, tvb, offset,
3144 addr_count * 9,
3145 ett_ipv6_type_addr_list,
3146 NULL((void*)0), "IPv6 address list");
3147
3148 while (addr_index < addr_count) {
3149 proto_tree *addr_tree = NULL((void*)0);
3150 proto_item *atpi = NULL((void*)0);
3151 uint8_t addr_type = tvb_get_uint8(tvb, offset);
3152
3153 addr_tree = proto_tree_add_subtree_format(addr_list, tvb,
3154 offset, 9, ett_ipv6_addr_info,
3155 NULL((void*)0), "IPv6 address %u info",
3156 addr_index);
3157
3158 atpi = proto_tree_add_item(addr_tree, hf_ieee1905_ipv6_addr_type,
3159 tvb, offset, 1, ENC_NA0x00000000);
3160 proto_item_append_text(atpi, ", %s",
3161 val_to_str_const(addr_type, ieee1905_ipv6_addr_type_vals,
3162 "Reserved"));
3163 offset++;
3164
3165 proto_tree_add_item(addr_tree, hf_ieee1905_ipv6_addr, tvb,
3166 offset, 16, ENC_NA0x00000000);
3167 offset += 16;
3168
3169 proto_tree_add_item(addr_tree, hf_ieee1905_ipv6_address_origin, tvb,
3170 offset, 16, ENC_NA0x00000000);
3171 offset += 16;
3172
3173 addr_index++;
3174 }
3175
3176 proto_item_set_len(ipi, offset - start_offset);
3177
3178 entry_index++;
3179 }
3180
3181 proto_item_set_len(pi, offset - saved_offset);
3182
3183 return offset;
3184}
3185
3186/*
3187 * Dissect a push button generic phy event notification
3188 */
3189static int
3190dissect_push_button_event_type_notification(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3191 proto_tree *tree, unsigned offset)
3192{
3193 uint8_t media_type_count = tvb_get_uint8(tvb, offset);
3194 uint8_t media_type_index = 0;
3195 unsigned saved_offset;
3196 proto_item *pi = NULL((void*)0);
3197 proto_tree *phy_list = NULL((void*)0);
3198
3199 proto_tree_add_item(tree, hf_ieee1905_generic_phy_media_types,
3200 tvb, offset, 1, ENC_NA0x00000000);
3201 offset++;
3202
3203 phy_list = proto_tree_add_subtree(tree, tvb, offset, -1,
3204 ett_push_button_phy_list,
3205 &pi, "Generic Phy media type list");
3206 saved_offset = offset;
3207
3208 while (media_type_index < media_type_count) {
3209 proto_item *ppi = NULL((void*)0);
3210 proto_tree *phy_tree;
3211 unsigned start_offset = offset;
3212 uint8_t media_specific_len;
3213
3214 phy_tree = proto_tree_add_subtree_format(phy_list, tvb,
3215 offset, -1, ett_push_button_phy_info,
3216 &ppi, "Generic Phy media type %u info",
3217 media_type_index);
3218
3219 proto_tree_add_item(phy_tree, hf_ieee1905_local_intf_oui,
3220 tvb, offset, 3, ENC_BIG_ENDIAN0x00000000);
3221 offset+= 3;
3222
3223 proto_tree_add_item(phy_tree, hf_ieee1905_local_intf_variant,
3224 tvb, offset, 1, ENC_NA0x00000000);
3225 offset++;
3226
3227 media_specific_len = tvb_get_uint8(tvb, offset);
3228
3229 proto_tree_add_item(phy_tree, hf_ieee1905_local_intf_spec_count,
3230 tvb, offset, 1, ENC_NA0x00000000);
3231 offset++;
3232
3233 proto_tree_add_item(phy_tree, hf_ieee1905_local_intf_spec, tvb,
3234 offset, media_specific_len, ENC_NA0x00000000);
3235 offset += media_specific_len;
3236
3237 proto_item_set_len(ppi, offset - start_offset);
3238
3239 media_type_index++;
3240 }
3241
3242 proto_item_set_len(pi, offset - saved_offset);
3243
3244 return offset;
3245}
3246
3247/*
3248 * Dissect a 1905 profile version TLV
3249 */
3250static int
3251dissect_profile_version(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3252 proto_tree *tree, unsigned offset)
3253{
3254 uint8_t profile_version = tvb_get_uint8(tvb, offset);
3255 proto_item *pi = NULL((void*)0);
3256
3257 pi = proto_tree_add_item(tree, hf_ieee1905_profile_version, tvb,
3258 offset, 1, ENC_NA0x00000000);
3259 proto_item_append_text(pi, ", %s",
3260 val_to_str_const(profile_version, ieee1905_profile_version_vals,
3261 "Reserved"));
3262 offset++;
3263
3264 return offset;
3265}
3266
3267/*
3268 * Dissect the power off interface TLV
3269 */
3270static int
3271dissect_power_off_interface(tvbuff_t *tvb, packet_info *pinfo,
3272 proto_tree *tree, unsigned offset)
3273{
3274 uint8_t local_intf_count = tvb_get_uint8(tvb, offset);
3275 uint8_t local_intf_index = 0;
3276 proto_item *pi = NULL((void*)0);
3277 proto_tree *intf_list = NULL((void*)0);
3278 unsigned saved_offset = 0;
3279
3280 proto_tree_add_item(tree, hf_ieee1905_power_off_intf_count, tvb,
3281 offset, 1, ENC_NA0x00000000);
3282 offset++;
3283
3284 if (local_intf_count == 0)
3285 return offset;
3286
3287 intf_list = proto_tree_add_subtree(tree, tvb, offset, -1,
3288 ett_push_button_phy_list,
3289 &pi, "Generic Phy media type list");
3290 saved_offset = offset;
3291
3292 while (local_intf_index < local_intf_count) {
3293 proto_tree *intf_tree = NULL((void*)0);
3294 proto_item *ppi = NULL((void*)0);
3295 uint8_t media_specific_len = 0;
3296
3297 intf_tree = proto_tree_add_subtree_format(intf_list, tvb,
3298 offset, -1, ett_power_off_info,
3299 &ppi, "Powered off interface %u info",
3300 local_intf_index);
3301
3302 proto_tree_add_item(intf_tree, hf_ieee1905_mac_address, tvb,
3303 offset, 6, ENC_NA0x00000000);
3304 offset += 6;
3305
3306 offset = dissect_media_type(tvb, pinfo, intf_tree, offset);
3307
3308 proto_tree_add_item(intf_tree, hf_ieee1905_local_intf_oui,
3309 tvb, offset, 3, ENC_BIG_ENDIAN0x00000000);
3310 offset+= 3;
3311
3312 proto_tree_add_item(intf_tree, hf_ieee1905_local_intf_variant,
3313 tvb, offset, 1, ENC_NA0x00000000);
3314 offset++;
3315
3316 media_specific_len = tvb_get_uint8(tvb, offset);
3317
3318 proto_tree_add_item(intf_tree, hf_ieee1905_local_intf_spec_count,
3319 tvb, offset, 1, ENC_NA0x00000000);
3320 offset++;
3321
3322 proto_tree_add_item(intf_tree, hf_ieee1905_local_intf_spec, tvb,
3323 offset, media_specific_len, ENC_NA0x00000000);
3324 offset += media_specific_len;
3325
3326 local_intf_index++;
3327 }
3328
3329 proto_item_set_len(pi, offset - saved_offset);
3330
3331 return offset;
3332}
3333
3334/*
3335 * Dissect an interface power change information TLV.
3336 */
3337static int
3338dissect_interface_power_change_info(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3339 proto_tree *tree, unsigned offset)
3340{
3341 unsigned intf_count = tvb_get_uint8(tvb, offset);
3342 unsigned intf_index = 0;
3343 proto_tree *intf_list = NULL((void*)0);
3344
3345 proto_tree_add_item(tree, hf_ieee1905_power_change_intf_count, tvb,
3346 offset, 1, ENC_NA0x00000000);
3347
3348 intf_list = proto_tree_add_subtree(tree, tvb, offset, intf_count * 7,
3349 ett_power_change_list, NULL((void*)0),
3350 "Interface power change list");
3351
3352 while (intf_index < intf_count) {
3353 proto_tree *intf_tree = NULL((void*)0);
3354 proto_item *pi = NULL((void*)0);
3355 uint8_t power_state = 0;
3356
3357 intf_tree = proto_tree_add_subtree_format(intf_list, tvb,
3358 offset, 7, ett_power_change_info,
3359 NULL((void*)0), "Power change interface %u info",
3360 intf_index);
3361
3362 proto_tree_add_item(intf_tree, hf_ieee1905_power_change_mac_addr,
3363 tvb, offset, 6, ENC_NA0x00000000);
3364 offset += 6;
3365
3366 power_state = tvb_get_uint8(tvb, offset);
3367 pi = proto_tree_add_item(tree, hf_ieee1905_power_change_state, tvb,
3368 offset, 1, ENC_NA0x00000000);
3369 proto_item_append_text(pi, ", %s",
3370 val_to_str(pinfo->pool, power_state,
3371 ieee1905_power_state_vals,
3372 "Reserved"));
3373 offset++;
3374
3375 intf_index++;
3376 }
3377
3378 return offset;
3379}
3380
3381/*
3382 * Dissect an interface power change status TLV.
3383 */
3384static int
3385dissect_interface_power_change_status(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3386 proto_tree *tree, unsigned offset)
3387{
3388 unsigned intf_count = tvb_get_uint8(tvb, offset);
3389 unsigned intf_index = 0;
3390 proto_tree *intf_list = NULL((void*)0);
3391
3392 proto_tree_add_item(tree, hf_ieee1905_power_status_intf_count, tvb,
3393 offset, 1, ENC_NA0x00000000);
3394
3395 intf_list = proto_tree_add_subtree(tree, tvb, offset, intf_count * 7,
3396 ett_power_status_list, NULL((void*)0),
3397 "Interface power status list");
3398
3399 while (intf_index < intf_count) {
3400 proto_tree *intf_tree = NULL((void*)0);
3401 proto_item *pi = NULL((void*)0);
3402 uint8_t power_state = 0;
3403
3404 intf_tree = proto_tree_add_subtree_format(intf_list, tvb,
3405 offset, 7, ett_power_status_info,
3406 NULL((void*)0), "Power status interface %u info",
3407 intf_index);
3408
3409 proto_tree_add_item(intf_tree, hf_ieee1905_power_status_mac_addr,
3410 tvb, offset, 6, ENC_NA0x00000000);
3411 offset += 6;
3412
3413 power_state = tvb_get_uint8(tvb, offset);
3414 pi = proto_tree_add_item(tree, hf_ieee1905_power_status_state, tvb,
3415 offset, 1, ENC_NA0x00000000);
3416 proto_item_append_text(pi, ", %s",
3417 val_to_str(pinfo->pool, power_state,
3418 ieee1905_power_status_vals,
3419 "Reserved"));
3420 offset++;
3421
3422 intf_index++;
3423 }
3424
3425 return offset;
3426}
3427
3428static int
3429dissect_l2_neighbor_device(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3430 proto_tree *tree, unsigned offset)
3431{
3432 unsigned intf_count = tvb_get_uint8(tvb, offset);
3433 unsigned intf_index = 0;
3434 proto_tree *intf_list = NULL((void*)0);
3435 proto_item *pi = NULL((void*)0);
3436 unsigned saved_offset = 0;
3437
3438 proto_tree_add_item(tree, hf_ieee1905_l2_neighbor_intf_count, tvb,
3439 offset, 1, ENC_NA0x00000000);
3440 offset++;
3441
3442 if (intf_count == 0)
3443 return offset;
3444
3445 intf_list = proto_tree_add_subtree(tree, tvb, offset, -1,
3446 ett_l2_local_intf_list, &pi,
3447 "L2 local interface list");
3448
3449 saved_offset = offset;
3450
3451 while (intf_index < intf_count) {
3452 proto_tree *intf_tree = NULL((void*)0), *neighbor_list = NULL((void*)0);
3453 proto_item *ipi = NULL((void*)0), *mpi = NULL((void*)0);
3454 uint16_t neighbor_device_count = 0, neighbor_device_index = 0;
3455 unsigned start_offset = offset, ndl_start_offset = 0;
3456
3457 intf_tree = proto_tree_add_subtree_format(intf_list, tvb, offset, -1,
3458 ett_l2_neighbor_device_info, &ipi,
3459 "L2 neighbor device %u info", intf_count);
3460
3461 proto_tree_add_item(intf_tree, hf_ieee1905_l2_local_intf_mac_addr, tvb,
3462 offset, 6, ENC_NA0x00000000);
3463 offset += 6;
3464
3465 neighbor_device_count = tvb_get_ntohs(tvb, offset);
3466 proto_tree_add_item(intf_tree, hf_ieee1905_l2_neighbor_dev_count, tvb,
3467 offset, 2, ENC_BIG_ENDIAN0x00000000);
3468 offset += 2;
3469
3470 neighbor_list = proto_tree_add_subtree(intf_tree, tvb, offset, -1,
3471 ett_l2_neighbor_dev_list, &mpi,
3472 "Neighbor device list");
3473
3474 ndl_start_offset = offset;
3475
3476 while (neighbor_device_index < neighbor_device_count) {
3477 proto_tree *neighbor_dev_tree = NULL((void*)0);
3478 proto_item *bmpi = NULL((void*)0);
3479 uint16_t behind_mac_addr_count = 0, behind_mac_addr_index = 0;
3480 unsigned ndt_start_offset = offset;
3481
3482 neighbor_dev_tree = proto_tree_add_subtree_format(neighbor_list,
3483 tvb, offset, -1,
3484 ett_l2_neighbor_dev_tree, &bmpi,
3485 "Neighbor device %u info",
3486 neighbor_device_index);
3487
3488 proto_tree_add_item(neighbor_dev_tree,
3489 hf_ieee1905_l2_neighbor_mac_addr, tvb,
3490 offset, 6, ENC_NA0x00000000);
3491 offset += 6;
3492
3493 behind_mac_addr_count = tvb_get_ntohs(tvb, offset);
3494 proto_tree_add_item(neighbor_dev_tree,
3495 hf_ieee1905_l2_behind_mac_addr_count,
3496 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
3497 offset += 2;
3498
3499 while(behind_mac_addr_index < behind_mac_addr_count) {
3500 proto_tree_add_item(neighbor_dev_tree,
3501 hf_ieee1905_l2_behind_mac_addr, tvb,
3502 offset, 6, ENC_NA0x00000000);
3503 offset += 6;
3504
3505 behind_mac_addr_index++;
3506 }
3507
3508 neighbor_device_index++;
3509
3510 proto_item_set_len(bmpi, offset - ndt_start_offset);
3511
3512 }
3513
3514 proto_item_set_len(mpi, offset - ndl_start_offset);
3515 proto_item_set_len(ipi, offset - start_offset);
3516
3517 intf_index++;
3518 }
3519
3520 proto_item_set_len(pi, offset - saved_offset);
3521
3522 return offset;
3523}
3524
3525static int
3526dissect_supported_service(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3527 proto_tree *tree, unsigned offset)
3528{
3529 unsigned service_count = tvb_get_uint8(tvb, offset);
3530 unsigned service_index = 0;
3531 proto_tree *service_list = NULL((void*)0);
3532
3533 proto_tree_add_item(tree, hf_ieee1905_supported_service_count, tvb,
3534 offset, 1, ENC_NA0x00000000);
3535 offset++;
3536
3537 service_list = proto_tree_add_subtree(tree, tvb, offset, service_count,
3538 ett_supported_service_list, NULL((void*)0),
3539 "Supported service list");
3540
3541 while (service_index < service_count) {
3542 proto_item *pi = NULL((void*)0);
3543 uint8_t service = tvb_get_uint8(tvb, offset);
3544
3545 pi = proto_tree_add_item(service_list, hf_ieee1905_supported_service,
3546 tvb, offset, 1, ENC_NA0x00000000);
3547
3548 proto_item_append_text(pi, ", %s",
3549 val_to_str(pinfo->pool, service,
3550 ieee1905_supported_service_vals,
3551 "Reserved"));
3552 offset++;
3553
3554 service_index++;
3555 }
3556
3557 return offset;
3558}
3559
3560/*
3561 * Dissect a searched service TLV\
3562 */
3563static int
3564dissect_searched_service(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3565 proto_tree *tree, unsigned offset)
3566{
3567 unsigned service_count = tvb_get_uint8(tvb, offset);
3568 unsigned service_index = 0;
3569 proto_tree *service_list = NULL((void*)0);
3570
3571 proto_tree_add_item(tree, hf_ieee1905_searched_service_count, tvb,
3572 offset, 1, ENC_NA0x00000000);
3573 offset++;
3574
3575 service_list = proto_tree_add_subtree(tree, tvb, offset, service_count,
3576 ett_searched_service_list, NULL((void*)0),
3577 "Searched service list");
3578
3579 while (service_index < service_count) {
3580 proto_item *pi = NULL((void*)0);
3581 uint8_t service = tvb_get_uint8(tvb, offset);
3582
3583 pi = proto_tree_add_item(service_list, hf_ieee1905_searched_service,
3584 tvb, offset, 1, ENC_NA0x00000000);
3585
3586 /*
3587 * Use the same set of values until we figure out if the spec has
3588 * an error in 17.2.2.
3589 */
3590 proto_item_append_text(pi, ", %s",
3591 val_to_str(pinfo->pool, service,
3592 ieee1905_supported_service_vals,
3593 "Reserved"));
3594 offset++;
3595
3596 service_index++;
3597 }
3598
3599 return offset;
3600}
3601
3602/*
3603 * Dissect an AP Radio Identifier TLV
3604 */
3605static int
3606dissect_ap_radio_identifier(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3607 proto_tree *tree, unsigned offset)
3608{
3609 proto_tree_add_item(tree, hf_ieee1905_ap_radio_identifier, tvb,
3610 offset, 6, ENC_NA0x00000000);
3611 offset += 6;
3612
3613 return offset;
3614}
3615
3616/*
3617 * Dissect an AP Operational BSS TLV
3618 */
3619static int
3620dissect_ap_operational_bss(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3621 proto_tree *tree, unsigned offset)
3622{
3623 proto_item *rpi = NULL((void*)0);
3624 proto_tree *radio_list = NULL((void*)0);
3625 uint8_t radio_count = tvb_get_uint8(tvb, offset);
3626 uint8_t radio_index = 0;
3627 unsigned saved_offset = 0;
3628
3629 proto_tree_add_item(tree, hf_ieee1905_operatonal_bss_radio_count,
3630 tvb, offset, 1, ENC_NA0x00000000);
3631 offset++;
3632
3633 if (radio_count == 0)
3634 return offset;
3635
3636 radio_list = proto_tree_add_subtree(tree, tvb, offset, -1,
3637 ett_ap_operational_bss_list, &rpi,
3638 "AP operational BSS radio list");
3639 saved_offset = offset;
3640
3641 while (radio_index < radio_count) {
3642 proto_tree *radio_tree = NULL((void*)0), *local_intf_list = NULL((void*)0);
3643 proto_item *opi = NULL((void*)0), *ipi = NULL((void*)0);
3644 unsigned start_offset = offset, list_start_offset;
3645 uint8_t local_intf_count = 0;
3646 uint8_t local_intf_index = 0;
3647
3648 radio_tree = proto_tree_add_subtree_format(radio_list,
3649 tvb, offset, -1,
3650 ett_ap_operational_bss_tree, &opi,
3651 "AP operational BSS %u info",
3652 radio_index);
3653
3654 proto_tree_add_item(radio_tree, hf_ieee1905_ap_radio_identifier,
3655 tvb, offset, 6, ENC_NA0x00000000);
3656 offset += 6;
3657
3658 local_intf_count = tvb_get_uint8(tvb, offset);
3659
3660 proto_tree_add_item(radio_tree, hf_ieee1905_ap_operational_intf_count,
3661 tvb, offset, 1, ENC_NA0x00000000);
3662 offset++;
3663
3664 list_start_offset = offset;
3665
3666 local_intf_list = proto_tree_add_subtree(radio_tree, tvb, offset, -1,
3667 ett_ap_operational_bss_intf_list, &ipi,
3668 "AP operational BSS local interface list");
3669
3670 while (local_intf_index < local_intf_count) {
3671 uint8_t ssid_len = 0;
3672 proto_tree *local_intf_tree = NULL((void*)0);
3673 proto_item *itpi = NULL((void*)0);
3674 unsigned local_intf_offset = offset;
3675
3676 local_intf_tree = proto_tree_add_subtree_format(local_intf_list,
3677 tvb, offset, -1,
3678 ett_ap_operational_bss_intf_tree, &itpi,
3679 "AP operational BSS Interface %u",
3680 local_intf_index);
3681
3682 proto_tree_add_item(local_intf_tree, hf_ieee1905_ap_local_intf_mac_addr,
3683 tvb, offset, 6, ENC_NA0x00000000);
3684 offset += 6;
3685
3686 ssid_len = tvb_get_uint8(tvb, offset);
3687
3688 proto_tree_add_item(local_intf_tree, hf_ieee1905_ap_local_intf_ssid_len,
3689 tvb, offset, 1, ENC_NA0x00000000);
3690 offset++;
3691
3692 proto_tree_add_item(local_intf_tree, hf_ieee1905_ap_local_intf_ssid,
3693 tvb, offset, ssid_len, ENC_ASCII0x00000000);
3694 offset += ssid_len;
3695
3696 proto_item_set_len(itpi, offset - local_intf_offset);
3697
3698 local_intf_index++;
3699 }
3700
3701 proto_item_set_len(ipi, offset - list_start_offset);
3702 proto_item_set_len(opi, offset - start_offset);
3703 radio_index++;
3704 }
3705
3706 proto_item_set_len(rpi, offset - saved_offset);
3707
3708 return offset;
3709}
3710
3711/*
3712 * Dissect an Associated Clients TLV
3713 */
3714static int
3715dissect_associated_clients(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3716 proto_tree *tree, unsigned offset)
3717{
3718 uint8_t bss_count = tvb_get_uint8(tvb, offset);
3719 uint8_t bss_index = 0;
3720 proto_tree *bss_list = NULL((void*)0);
3721 proto_item *pi = NULL((void*)0);
3722 unsigned saved_offset = 0;
3723
3724 proto_tree_add_item(tree, hf_ieee1905_assoc_clients_bss_count,
3725 tvb, offset, 1, ENC_NA0x00000000);
3726 offset++;
3727
3728 bss_list = proto_tree_add_subtree(tree, tvb, offset, -1,
3729 ett_assoc_clients_bss_list, &pi,
3730 "Associated BSS list");
3731 saved_offset = offset;
3732
3733 while (bss_index < bss_count) {
3734 proto_tree *bss_tree = NULL((void*)0), *client_list = NULL((void*)0);
3735 proto_item *bpi = NULL((void*)0);
3736 unsigned start_offset = offset;
3737 uint16_t client_count = 0, client_index = 0;
3738
3739
3740 bss_tree = proto_tree_add_subtree_format(bss_list,
3741 tvb, offset, -1,
3742 ett_assoc_client_bss_tree, &bpi,
3743 "Associated BSS %u",
3744 bss_index);
3745
3746 proto_tree_add_item(bss_tree, hf_ieee1905_assoc_bssid, tvb,
3747 offset, 6, ENC_NA0x00000000);
3748 offset += 6;
3749
3750 client_count = tvb_get_ntohs(tvb, offset);
3751 proto_tree_add_item(bss_tree, hf_ieee1905_bss_client_count,
3752 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
3753 offset += 2;
3754
3755 client_list = proto_tree_add_subtree(bss_tree, tvb, offset,
3756 client_count * 8, ett_assoc_client_list,
3757 NULL((void*)0), "Associated BSS clients list");
3758
3759 while (client_index < client_count) {
3760 proto_tree *client_tree = NULL((void*)0);
3761
3762 client_tree = proto_tree_add_subtree_format(client_list, tvb,
3763 offset, 8, ett_assoc_client_tree,
3764 NULL((void*)0), "Client %u", client_index);
3765
3766 proto_tree_add_item(client_tree, hf_ieee1905_bss_client_mac,
3767 tvb, offset, 6, ENC_NA0x00000000);
3768 offset += 6;
3769
3770 proto_tree_add_item(client_tree, hf_ieee1905_bss_client_last_assoc,
3771 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
3772 offset += 2;
3773
3774 client_index++;
3775 }
3776
3777 proto_item_set_len(bpi, offset - start_offset);
3778 bss_index++;
3779 }
3780
3781 proto_item_set_len(pi, offset - saved_offset);
3782
3783 return offset;
3784}
3785
3786/*
3787 * Dissect an AP Capability TLV
3788 */
3789static int
3790dissect_ap_capability(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3791 proto_tree *tree, unsigned offset)
3792{
3793 static int * const capabilities[] = {
3794 &hf_ieee1905_unassoc_sta_metrics_oper_flag,
3795 &hf_ieee1905_unassoc_sta_metrics_non_oper_flag,
3796 &hf_ieee1905_agent_init_steering,
3797 &hf_ieee1905_m8_bsta_reconfiguration,
3798 &hf_ieee1905_rsn_overriding,
3799 NULL((void*)0),
3800 };
3801
3802 proto_tree_add_bitmask(tree, tvb, offset,
3803 hf_ieee1905_ap_capabilities_flags,
3804 ett_ieee1905_capabilities_flags,
3805 capabilities, ENC_NA0x00000000);
3806 offset++;
3807
3808 return offset;
3809}
3810
3811/*
3812 * Dissect an AP Radio Basic Capabilities TLV
3813 */
3814static int
3815dissect_ap_radio_basic_capabilities(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3816 proto_tree *tree, unsigned offset)
3817{
3818 uint8_t classes = 0, class_index = 0;
3819 proto_tree *class_list = NULL((void*)0);
3820 proto_item *pi = NULL((void*)0);
3821 unsigned saved_offset = 0;
3822
3823 proto_tree_add_item(tree, hf_ieee1905_ap_radio_identifier, tvb,
3824 offset, 6, ENC_NA0x00000000);
3825 offset += 6;
3826
3827 proto_tree_add_item(tree, hf_ieee1905_ap_radio_max_bss, tvb,
3828 offset, 1, ENC_NA0x00000000);
3829 offset++;
3830
3831 classes = tvb_get_uint8(tvb, offset);
3832 proto_tree_add_item(tree, hf_ieee1905_ap_radio_classes, tvb,
3833 offset, 1, ENC_NA0x00000000);
3834 offset++;
3835
3836 class_list = proto_tree_add_subtree(tree, tvb, offset, -1,
3837 ett_radio_basic_class_list, &pi,
3838 "Supported operating classes list");
3839 saved_offset = offset;
3840
3841 while (class_index < classes) {
3842 proto_tree *class_tree = NULL((void*)0);
3843 proto_tree *non_op_channel_list = NULL((void*)0);
3844 proto_item *cpi = NULL((void*)0);
3845 unsigned class_offset = offset;
3846 uint8_t non_op_channel_count = 0;
3847
3848 class_tree = proto_tree_add_subtree_format(class_list,
3849 tvb, offset, -1,
3850 ett_ap_radio_basic_cap_class_tree, &cpi,
3851 "Operating class %u",
3852 class_index);
3853
3854 proto_tree_add_item(class_tree, hf_ieee1905_ap_radio_class, tvb,
3855 offset, 1, ENC_NA0x00000000);
3856 offset++;
3857
3858 proto_tree_add_item(class_tree, hf_ieee1905_ap_radio_eirp,
3859 tvb, offset, 1, ENC_NA0x00000000);
3860 offset++;
3861
3862 non_op_channel_count = tvb_get_uint8(tvb, offset);
3863 proto_tree_add_item(class_tree, hf_ieee1905_ap_radio_non_op_count,
3864 tvb, offset, 1, ENC_NA0x00000000);
3865 offset++;
3866
3867 if (non_op_channel_count > 0) {
3868
3869 non_op_channel_list = proto_tree_add_subtree(class_tree, tvb, offset,
3870 non_op_channel_count,
3871 ett_radio_basic_non_op_list, NULL((void*)0),
3872 "Non-operating channel list");
3873
3874 while (non_op_channel_count > 0) {
3875 proto_tree_add_item(non_op_channel_list,
3876 hf_ieee1905_radio_basic_non_op_channel,
3877 tvb, offset, 1, ENC_NA0x00000000);
3878 offset++;
3879
3880 non_op_channel_count--;
3881 }
3882 }
3883
3884 proto_item_set_len(cpi, offset - class_offset);
3885 class_index++;
3886 }
3887
3888 proto_item_set_len(pi, offset - saved_offset);
3889 return offset;
3890}
3891
3892/*
3893 * Dissect an AP HT Capabilities TLV
3894 */
3895static int
3896dissect_ap_ht_capabilities(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3897 proto_tree *tree, unsigned offset)
3898{
3899 static int * const capabilities[] = {
3900 &hf_ieee1905_max_supported_tx_streams,
3901 &hf_ieee1905_max_supported_rx_streams,
3902 &hf_ieee1905_short_gi_20mhz_flag,
3903 &hf_ieee1905_short_gi_40mhz_flag,
3904 &hf_ieee1905_ht_support_40mhz_flag,
3905 NULL((void*)0),
3906 };
3907
3908 proto_tree_add_item(tree, hf_ieee1905_ap_ht_capabilities_radio_id,
3909 tvb, offset, 6, ENC_NA0x00000000);
3910 offset += 6;
3911
3912 proto_tree_add_bitmask(tree, tvb, offset, hf_ieee1905_ht_cap_flags,
3913 ett_ht_cap_flags, capabilities, ENC_NA0x00000000);
3914 offset++;
3915
3916 return offset;
3917}
3918
3919/*
3920 * Dissect an AP VHT Capabilities TLV
3921 */
3922
3923static const value_string vht_supported_mcs_vals[] = {
3924 { 0, "Support for VHT-MCS 0-7" },
3925 { 1, "Support for VHT-MCS 0-8" },
3926 { 2, "Support for VHT-MCS 0-9" },
3927 { 3, "Not supported" },
3928 { 0, NULL((void*)0) }
3929};
3930
3931static int * const tx_vht_mcs_map_headers[] = {
3932 &hf_ieee1905_ap_vht_tx_mcs_map_8ss,
3933 &hf_ieee1905_ap_vht_tx_mcs_map_7ss,
3934 &hf_ieee1905_ap_vht_tx_mcs_map_6ss,
3935 &hf_ieee1905_ap_vht_tx_mcs_map_5ss,
3936 &hf_ieee1905_ap_vht_tx_mcs_map_4ss,
3937 &hf_ieee1905_ap_vht_tx_mcs_map_3ss,
3938 &hf_ieee1905_ap_vht_tx_mcs_map_2ss,
3939 &hf_ieee1905_ap_vht_tx_mcs_map_1ss,
3940 NULL((void*)0)
3941};
3942
3943static int * const rx_vht_mcs_map_headers[] = {
3944 &hf_ieee1905_ap_vht_rx_mcs_map_8ss,
3945 &hf_ieee1905_ap_vht_rx_mcs_map_7ss,
3946 &hf_ieee1905_ap_vht_rx_mcs_map_6ss,
3947 &hf_ieee1905_ap_vht_rx_mcs_map_5ss,
3948 &hf_ieee1905_ap_vht_rx_mcs_map_4ss,
3949 &hf_ieee1905_ap_vht_rx_mcs_map_3ss,
3950 &hf_ieee1905_ap_vht_rx_mcs_map_2ss,
3951 &hf_ieee1905_ap_vht_rx_mcs_map_1ss,
3952 NULL((void*)0)
3953};
3954
3955static int
3956dissect_ap_vht_capabilities(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
3957 proto_tree *tree, unsigned offset)
3958{
3959 static int * const capabilities[] = {
3960 &hf_ieee1905_vht_max_supported_tx_streams,
3961 &hf_ieee1905_vht_max_supported_rx_streams,
3962 &hf_ieee1905_short_gi_80mhz_flag,
3963 &hf_ieee1905_short_gi_160mhz_flag,
3964 &hf_ieee1905_vht_support_80plus_mhz_flag,
3965 &hf_ieee1905_vht_support_160_mhz_flag,
3966 &hf_ieee1905_su_beamformer_capable_flag,
3967 &hf_ieee1905_mu_beamformer_capable_flag,
3968 NULL((void*)0),
3969 };
3970
3971 proto_tree_add_item(tree, hf_ieee1905_ap_vht_capabilities_radio_id,
3972 tvb, offset, 6, ENC_NA0x00000000);
3973 offset += 6;
3974
3975 proto_tree_add_bitmask_with_flags(tree, tvb, offset,
3976 hf_ieee1905_ap_vht_supported_vht_tx_mcs,
3977 ett_ieee1905_ap_vht_tx_mcs_set,
3978 tx_vht_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
3979 offset += 2;
3980
3981 proto_tree_add_bitmask_with_flags(tree, tvb, offset,
3982 hf_ieee1905_ap_vht_supported_vht_rx_mcs,
3983 ett_ieee1905_ap_vht_rx_mcs_set,
3984 rx_vht_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
3985 offset += 2;
3986
3987 proto_tree_add_bitmask(tree, tvb, offset, hf_ieee1905_vht_cap_flags,
3988 ett_vht_cap_flags, capabilities, ENC_BIG_ENDIAN0x00000000);
3989 offset += 2;
3990
3991 return offset;
3992}
3993
3994/*
3995 * Dissect an AP HE Capabilities TLV
3996 */
3997static int * const he_capabilities[] = {
3998 &hf_ieee1905_he_max_supported_tx_streams,
3999 &hf_ieee1905_he_max_supported_rx_streams,
4000 &hf_ieee1905_he_support_80plus_mhz_flag,
4001 &hf_ieee1905_he_support_160mhz_flag,
4002 &hf_ieee1905_he_su_beamformer_capable_flag,
4003 &hf_ieee1905_he_mu_beamformer_capable_flag,
4004 &hf_ieee1905_ul_mu_mimo_capable_flag,
4005 &hf_ieee1905_ul_mu_mimo_ofdma_capable_flag,
4006 &hf_ieee1905_dl_mu_mimo_ofdma_capable_flag,
4007 &hf_ieee1905_ul_ofdma_capable,
4008 &hf_ieee1905_dl_ofdma_capable,
4009 NULL((void*)0),
4010};
4011
4012static const value_string max_he_mcs_1_ss_vals[] = {
4013 { 0, "Support for HE-MCS 0-7 for 1 Spatial Stream" },
4014 { 1, "Support for HE-MCS 0-9 for 1 Spatial Stream" },
4015 { 2, "Support for HE-MCS 0-11 for 1 Spatial Stream" },
4016 { 3, "1 Spatial Stream not supported" },
4017 { 0, NULL((void*)0) }
4018};
4019
4020static const value_string max_he_mcs_2_ss_vals[] = {
4021 { 0, "Support for HE-MCS 0-7 for 2 Spatial Streams" },
4022 { 1, "Support for HE-MCS 0-9 for 2 Spatial Streams" },
4023 { 2, "Support for HE-MCS 0-11 for 2 Spatial Streams" },
4024 { 3, "2 Spatial Streams not supported" },
4025 { 0, NULL((void*)0) }
4026};
4027
4028static const value_string max_he_mcs_3_ss_vals[] = {
4029 { 0, "Support for HE-MCS 0-7 for 3 Spatial Streams" },
4030 { 1, "Support for HE-MCS 0-9 for 3 Spatial Streams" },
4031 { 2, "Support for HE-MCS 0-11 for 3 Spatial Streams" },
4032 { 3, "3 Spatial Streams not supported" },
4033 { 0, NULL((void*)0) }
4034};
4035
4036static const value_string max_he_mcs_4_ss_vals[] = {
4037 { 0, "Support for HE-MCS 0-7 for 4 Spatial Streams" },
4038 { 1, "Support for HE-MCS 0-9 for 4 Spatial Streams" },
4039 { 2, "Support for HE-MCS 0-11 for 4 Spatial Streams" },
4040 { 3, "4 Spatial Streams not supported" },
4041 { 0, NULL((void*)0) }
4042};
4043
4044static const value_string max_he_mcs_5_ss_vals[] = {
4045 { 0, "Support for HE-MCS 0-7 for 5 Spatial Streams" },
4046 { 1, "Support for HE-MCS 0-9 for 5 Spatial Streams" },
4047 { 2, "Support for HE-MCS 0-11 for 5 Spatial Streams" },
4048 { 3, "5 Spatial Streams not supported" },
4049 { 0, NULL((void*)0) }
4050};
4051
4052static const value_string max_he_mcs_6_ss_vals[] = {
4053 { 0, "Support for HE-MCS 0-7 for 6 Spatial Streams" },
4054 { 1, "Support for HE-MCS 0-9 for 6 Spatial Streams" },
4055 { 2, "Support for HE-MCS 0-11 for 6 Spatial Streams" },
4056 { 3, "6 Spatial Streams not supported" },
4057 { 0, NULL((void*)0) }
4058};
4059
4060static const value_string max_he_mcs_7_ss_vals[] = {
4061 { 0, "Support for HE-MCS 0-7 for 7 Spatial Streams" },
4062 { 1, "Support for HE-MCS 0-9 for 7 Spatial Streams" },
4063 { 2, "Support for HE-MCS 0-11 for 7 Spatial Streams" },
4064 { 3, "7 Spatial Streams not supported" },
4065 { 0, NULL((void*)0) }
4066};
4067
4068static const value_string max_he_mcs_8_ss_vals[] = {
4069 { 0, "Support for HE-MCS 0-7 for 8 Spatial Streams" },
4070 { 1, "Support for HE-MCS 0-9 for 8 Spatial Streams" },
4071 { 2, "Support for HE-MCS 0-11 for 8 Spatial Streams" },
4072 { 3, "8 Spatial Streams not supported" },
4073 { 0, NULL((void*)0) }
4074};
4075
4076static int * const rx_he_mcs_map_headers[] = {
4077 &hf_ieee1905_ap_he_rx_mcs_map_8ss,
4078 &hf_ieee1905_ap_he_rx_mcs_map_7ss,
4079 &hf_ieee1905_ap_he_rx_mcs_map_6ss,
4080 &hf_ieee1905_ap_he_rx_mcs_map_5ss,
4081 &hf_ieee1905_ap_he_rx_mcs_map_4ss,
4082 &hf_ieee1905_ap_he_rx_mcs_map_3ss,
4083 &hf_ieee1905_ap_he_rx_mcs_map_2ss,
4084 &hf_ieee1905_ap_he_rx_mcs_map_1ss,
4085 NULL((void*)0)
4086};
4087
4088static int * const tx_he_mcs_map_headers[] = {
4089 &hf_ieee1905_ap_he_tx_mcs_map_8ss,
4090 &hf_ieee1905_ap_he_tx_mcs_map_7ss,
4091 &hf_ieee1905_ap_he_tx_mcs_map_6ss,
4092 &hf_ieee1905_ap_he_tx_mcs_map_5ss,
4093 &hf_ieee1905_ap_he_tx_mcs_map_4ss,
4094 &hf_ieee1905_ap_he_tx_mcs_map_3ss,
4095 &hf_ieee1905_ap_he_tx_mcs_map_2ss,
4096 &hf_ieee1905_ap_he_tx_mcs_map_1ss,
4097 NULL((void*)0)
4098};
4099
4100static int
4101dissect_ap_he_capabilities(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
4102 proto_tree *tree, unsigned offset)
4103{
4104 uint8_t he_mcs_len = 0;
4105
4106 proto_tree_add_item(tree, hf_ieee1905_ap_he_cap_radio_id, tvb,
4107 offset, 6, ENC_NA0x00000000);
4108 offset += 6;
4109
4110 he_mcs_len = tvb_get_uint8(tvb, offset);
4111 proto_tree_add_item(tree, hf_ieee1905_ap_he_cap_mcs_length, tvb,
4112 offset, 1, ENC_NA0x00000000);
4113 offset++;
4114
4115 /*
4116 * If the count is not 4, 8, or 12, it is an error.
4117 */
4118 if (he_mcs_len != 4 && he_mcs_len != 8 && he_mcs_len != 12) {
4119
4120 } else {
4121 proto_tree *mcs_set = NULL((void*)0);
4122
4123 mcs_set = proto_tree_add_subtree(tree, tvb, offset, 4,
4124 ett_ap_he_mcs_set, NULL((void*)0),
4125 "Supported HE-MCS and NSS Set <= 80 MHz");
4126
4127 proto_tree_add_bitmask_with_flags(mcs_set, tvb, offset,
4128 hf_ieee1905_ap_he_cap_tx_mcs_le_80_mhz,
4129 ett_ieee1905_ap_he_tx_mcs_set,
4130 tx_he_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
4131 offset += 2;
4132
4133 proto_tree_add_bitmask_with_flags(mcs_set, tvb, offset,
4134 hf_ieee1905_ap_he_cap_rx_mcs_le_80_mhz,
4135 ett_ieee1905_ap_he_rx_mcs_set,
4136 rx_he_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
4137 offset += 2;
4138
4139 if (he_mcs_len > 4) {
4140 mcs_set = proto_tree_add_subtree(tree, tvb, offset, 4,
4141 ett_ap_he_mcs_set, NULL((void*)0),
4142 "Supported HE-MCS and NSS Set 160 MHz");
4143
4144 proto_tree_add_bitmask_with_flags(mcs_set, tvb, offset,
4145 hf_ieee1905_ap_he_cap_tx_mcs_160_mhz,
4146 ett_ieee1905_ap_he_tx_mcs_set,
4147 tx_he_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
4148 offset += 2;
4149
4150 proto_tree_add_bitmask_with_flags(mcs_set, tvb, offset,
4151 hf_ieee1905_ap_he_cap_rx_mcs_160_mhz,
4152 ett_ieee1905_ap_he_rx_mcs_set,
4153 rx_he_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
4154 offset += 2;
4155 }
4156
4157 if (he_mcs_len > 8) {
4158 mcs_set = proto_tree_add_subtree(tree, tvb, offset, 4,
4159 ett_ap_he_mcs_set, NULL((void*)0),
4160 "Supported HE-MCS and NSS Set 80+80 MHz");
4161
4162 proto_tree_add_bitmask_with_flags(mcs_set, tvb, offset,
4163 hf_ieee1905_ap_he_cap_tx_mcs_80p80_mhz,
4164 ett_ieee1905_ap_he_tx_mcs_set,
4165 tx_he_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
4166 offset += 2;
4167
4168 proto_tree_add_bitmask_with_flags(mcs_set, tvb, offset,
4169 hf_ieee1905_ap_he_cap_rx_mcs_80p80_mhz,
4170 ett_ieee1905_ap_he_rx_mcs_set,
4171 rx_he_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
4172 offset += 2;
4173 }
4174 }
4175
4176 proto_tree_add_bitmask(tree, tvb, offset, hf_ieee1905_he_cap_flags,
4177 ett_ap_he_cap_flags, he_capabilities,
4178 ENC_BIG_ENDIAN0x00000000);
4179 offset += 2;
4180
4181 return offset;
4182}
4183
4184/*
4185 * Dissect a Steering Policy TLV
4186 */
4187static int
4188dissect_steering_policy(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
4189 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
4190{
4191 uint8_t steering_disallowed_count = tvb_get_uint8(tvb, offset);
4192 uint8_t btm_steering_disallowed_count = 0;
4193 uint8_t radio_count = 0, radio_index = 0;
4194
4195 proto_tree_add_item(tree, hf_ieee1905_steering_policy_local_disallowed_count,
4196 tvb, offset, 1, ENC_NA0x00000000);
4197 offset++;
4198
4199 if (steering_disallowed_count) {
4200 proto_tree *disallowed_list = NULL((void*)0);
4201
4202 disallowed_list = proto_tree_add_subtree(tree, tvb, offset,
4203 steering_disallowed_count * 6,
4204 ett_steering_policy_disallowed_list, NULL((void*)0),
4205 "Steering disallowed STA list");
4206
4207 while (steering_disallowed_count > 0) {
4208 proto_tree_add_item(disallowed_list,
4209 hf_ieee1905_steering_disallowed_mac_addr,
4210 tvb, offset, 6, ENC_NA0x00000000);
4211 offset += 6;
4212 steering_disallowed_count--;
4213 }
4214 }
4215
4216 btm_steering_disallowed_count = tvb_get_uint8(tvb, offset);
4217 proto_tree_add_item(tree, hf_ieee1905_btm_steering_disallowed_count,
4218 tvb, offset, 1, ENC_NA0x00000000);
4219 offset++;
4220
4221 if (btm_steering_disallowed_count > 0) {
4222 proto_tree *btm_disallowed_list = NULL((void*)0);
4223
4224 btm_disallowed_list = proto_tree_add_subtree(tree, tvb, offset,
4225 btm_steering_disallowed_count * 6,
4226 ett_btm_steering_policy_disallowed_list, NULL((void*)0),
4227 "BTM steering disallowed STA list");
4228
4229 while (btm_steering_disallowed_count > 0) {
4230
4231 proto_tree_add_item(btm_disallowed_list,
4232 hf_ieee1905_btm_steering_disallowed_mac_addr,
4233 tvb, offset, 6, ENC_NA0x00000000);
4234 offset += 6;
4235
4236 btm_steering_disallowed_count--;
4237 }
4238 }
4239
4240 radio_count = tvb_get_uint8(tvb, offset);
4241 proto_tree_add_item(tree, hf_ieee1905_steering_policy_radio_count,
4242 tvb, offset, 1, ENC_NA0x00000000);
4243 offset++;
4244
4245 if (radio_count > 0) {
4246 proto_tree *policy_list = NULL((void*)0);
4247
4248 policy_list = proto_tree_add_subtree(tree, tvb, offset,
4249 radio_count * 9,
4250 ett_btm_steering_radio_list, NULL((void*)0),
4251 "BTM steering policy radio list");
4252
4253 while (radio_index < radio_count) {
4254 proto_tree *policy_tree = NULL((void*)0);
4255 proto_item *pi = NULL((void*)0);
4256 uint8_t policy = 0;
4257
4258 policy_tree = proto_tree_add_subtree_format(policy_list,
4259 tvb, offset, 9,
4260 ett_ap_operational_bss_intf_tree, NULL((void*)0),
4261 "Radio %u", radio_index);
4262
4263 proto_tree_add_item(policy_tree, hf_ieee1905_steering_policy_radio_id,
4264 tvb, offset, 6, ENC_NA0x00000000);
4265 offset += 6;
4266
4267 policy = tvb_get_uint8(tvb, offset);
4268 pi = proto_tree_add_item(policy_tree, hf_ieee1905_steering_policy_policy,
4269 tvb, offset, 1, ENC_NA0x00000000);
4270 proto_item_append_text(pi, ", %s",
4271 val_to_str(pinfo->pool, policy,
4272 ieee1905_steering_policy_vals,
4273 "Reserved"));
4274 offset++;
4275
4276 proto_tree_add_item(policy_tree, hf_ieee1905_steering_policy_util,
4277 tvb, offset, 1, ENC_NA0x00000000);
4278 offset++;
4279
4280 proto_tree_add_item(policy_tree,
4281 hf_ieee1905_steering_policy_rcpi_threshold,
4282 tvb, offset, 1, ENC_NA0x00000000);
4283 offset++;
4284
4285 radio_index++;
4286 }
4287
4288 }
4289
4290 return offset;
4291}
4292
4293static void
4294rcpi_threshold_custom(char *result, uint8_t rcpi_threshold)
4295{
4296 if (rcpi_threshold == 0) {
4297 snprintf(result, ITEM_LABEL_LENGTH240, "Do not report STA Metrics based on RCPI threshold");
4298 } else if (rcpi_threshold > 0 && rcpi_threshold < 220) {
4299 snprintf(result, ITEM_LABEL_LENGTH240, "RCPI Threshold = %.1fdBm",
4300 (float)rcpi_threshold/2 - 110);
4301 } else if (rcpi_threshold == 220) {
4302 snprintf(result, ITEM_LABEL_LENGTH240, "RCPI Threshold >= 0dBm");
4303 } else {
4304 snprintf(result, ITEM_LABEL_LENGTH240, "Reserved");
4305 }
4306}
4307
4308static void
4309rcpi_hysteresis_custom(char *result, uint8_t rcpi_hysteresis)
4310{
4311 if (rcpi_hysteresis == 0) {
4312 snprintf(result, ITEM_LABEL_LENGTH240, "Use Agent's implementation-specific default RCPI Hysteresis margin");
4313 } else {
4314 snprintf(result, ITEM_LABEL_LENGTH240, "%udB", rcpi_hysteresis);
4315 }
4316}
4317
4318/*
4319 * Dissect a Metric Reporting Policy TLV
4320 */
4321static int
4322dissect_metric_reporting_policy(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
4323 proto_tree *tree, unsigned offset)
4324{
4325 uint8_t radio_count = 0, radio_index = 0;
4326 proto_tree *radio_list = NULL((void*)0);
4327 proto_tree *radio_tree = NULL((void*)0);
4328 proto_item *pi = NULL((void*)0);
4329 unsigned saved_offset = 0;
4330 static int * const ieee1905_reporting_policy_flags[] = {
4331 &hf_ieee1905_assoc_sta_traffic_stats_inclusion,
4332 &hf_ieee1905_assoc_sta_link_metrics_inclusion,
4333 &hf_ieee1905_assoc_wf6_status_policy_inclusion,
4334 &hf_ieee1905_reporting_policy_flags_reserved,
4335 NULL((void*)0)
4336 };
4337
4338 proto_tree_add_item(tree, hf_ieee1905_ap_metrics_reporting_interval,
4339 tvb, offset, 1, ENC_NA0x00000000);
4340 offset++;
4341
4342 radio_count = tvb_get_uint8(tvb, offset);
4343 proto_tree_add_item(tree, hf_ieee1905_metric_reporting_radio_count,
4344 tvb, offset, 1, ENC_NA0x00000000);
4345 offset++;
4346
4347 if (radio_count == 0)
4348 return offset;
4349
4350 radio_list = proto_tree_add_subtree(tree, tvb, offset, -1,
4351 ett_metric_reporting_policy_list, &pi,
4352 "Metric reporting policy list");
4353 saved_offset = offset;
4354
4355 while (radio_index < radio_count) {
4356 radio_tree = proto_tree_add_subtree_format(radio_list,
4357 tvb, offset, 8,
4358 ett_metric_reporting_policy_tree, NULL((void*)0),
4359 "Reporting policy for radio %u",
4360 radio_index);
4361
4362 proto_tree_add_item(radio_tree, hf_ieee1905_metric_reporting_policy_radio_id,
4363 tvb, offset, 6, ENC_NA0x00000000);
4364 offset += 6;
4365
4366 proto_tree_add_item(radio_tree, hf_ieee1905_metric_rcpi_threshold, tvb,
4367 offset, 1, ENC_NA0x00000000);
4368 offset++;
4369
4370 proto_tree_add_item(radio_tree, hf_ieee1905_metric_reporting_rcpi_hysteresis,
4371 tvb, offset, 1, ENC_NA0x00000000);
4372 offset++;
4373
4374 proto_tree_add_item(radio_tree, hf_ieee1905_metrics_channel_util_threshold,
4375 tvb, offset, 1, ENC_NA0x00000000);
4376 offset++;
4377
4378 proto_tree_add_bitmask_with_flags(radio_tree, tvb, offset,
4379 hf_ieee1905_metrics_policy_flags,
4380 ett_metric_policy_flags,
4381 ieee1905_reporting_policy_flags, ENC_NA0x00000000,
4382 BMT_NO_APPEND0x01);
4383 offset++;
4384
4385 radio_index++;
4386 }
4387
4388 proto_item_set_len(pi, offset - saved_offset);
4389
4390 return offset;
4391}
4392
4393/*
4394 * Dissect a Channel Preference TLV
4395 */
4396static int
4397dissect_channel_preference(tvbuff_t *tvb, packet_info *pinfo,
4398 proto_tree *tree, unsigned offset, uint16_t len)
4399{
4400 uint8_t operating_classes = 0, operating_index = 0;
4401 proto_tree *class_list = NULL((void*)0);
4402 proto_item *pi = NULL((void*)0);
4403 unsigned saved_offset = 0;
4404 static int * const preference[] = {
4405 &hf_ieee1905_channel_pref_preference,
4406 &hf_ieee1905_channel_pref_reason,
4407 NULL((void*)0),
4408 };
4409
4410 if (len < 6) {
4411 expert_add_info(pinfo, tree, &ei_ieee1905_malformed_tlv);
4412 return offset + len;
4413 }
4414
4415 proto_tree_add_item(tree, hf_ieee1905_channel_preference_radio_id,
4416 tvb, offset, 6, ENC_NA0x00000000);
4417 offset += 6;
4418
4419 if (len < 7) {
4420 expert_add_info(pinfo, tree, &ei_ieee1905_malformed_tlv);
4421 return offset;
4422 }
4423
4424 operating_classes = tvb_get_uint8(tvb, offset);
4425 proto_tree_add_item(tree, hf_ieee1905_channel_preference_class_count,
4426 tvb, offset, 1, ENC_NA0x00000000);
4427 offset++;
4428
4429 if (operating_classes == 0)
4430 return offset;
4431
4432 class_list = proto_tree_add_subtree(tree, tvb, offset, -1,
4433 ett_channel_preference_class_list, &pi,
4434 "Supported operating classes list");
4435 saved_offset = offset;
4436
4437 /*
4438 * There should be at least 2 more bytes here ... add some more expert
4439 * info soon.
4440 */
4441
4442 while (operating_index < operating_classes) {
4443 proto_tree *class_tree = NULL((void*)0);
4444 proto_item *cpi = NULL((void*)0);
4445 uint8_t channels = 0;
4446 unsigned start_offset = offset;
4447
4448 class_tree = proto_tree_add_subtree_format(class_list,
4449 tvb, offset, -1,
4450 ett_ap_channel_preference_class_tree, &cpi,
4451 "Operating class %u",
4452 operating_index);
4453
4454 proto_tree_add_item(class_tree, hf_ieee1905_channel_pref_class,
4455 tvb, offset, 1, ENC_NA0x00000000);
4456 offset++;
4457
4458 channels = tvb_get_uint8(tvb, offset);
4459 proto_tree_add_item(class_tree, hf_ieee1905_channel_pref_channel_count,
4460 tvb, offset, 1, ENC_NA0x00000000);
4461 offset++;
4462
4463 if (channels > 0) {
4464 proto_tree *channel_list = NULL((void*)0);
4465
4466 channel_list = proto_tree_add_subtree(class_tree, tvb, offset,
4467 channels,
4468 ett_channel_pref_channel_list, NULL((void*)0),
4469 "Channel list");
4470
4471 while (channels > 0) {
4472 proto_tree_add_item(channel_list,
4473 hf_ieee1905_channel_pref_channel,
4474 tvb, offset, 1, ENC_NA0x00000000);
4475 offset++;
4476
4477 channels--;
4478 }
4479
4480 }
4481
4482 proto_tree_add_bitmask(class_tree, tvb, offset,
4483 hf_ieee1905_channel_prefs_flags,
4484 ett_ieee1905_channel_prefs_flags,
4485 preference, ENC_NA0x00000000);
4486 offset++;
4487
4488 proto_item_set_len(cpi, offset - start_offset);
4489
4490 operating_index++;
4491 }
4492
4493 proto_item_set_len(pi, offset - saved_offset);
4494
4495 return offset;
4496}
4497
4498/*
4499 * Dissect a Radio Operation Restriction TLV
4500 */
4501static int
4502dissect_radio_operation_restriction(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
4503 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
4504{
4505 uint8_t op_class_count = 0, op_class_index = 0;
4506 proto_tree *op_class_list = NULL((void*)0), *op_class_tree = NULL((void*)0);
4507 proto_item *pi = NULL((void*)0);
4508 unsigned saved_offset = 0;
4509
4510 proto_tree_add_item(tree, hf_ieee1905_radio_restriction_radio_id,
4511 tvb, offset, 6, ENC_NA0x00000000);
4512 offset += 6;
4513
4514 op_class_count = tvb_get_uint8(tvb, offset);
4515 proto_tree_add_item(tree, hf_ieee1905_radio_restriction_op_class_count,
4516 tvb, offset, 1, ENC_NA0x00000000);
4517 offset++;
4518
4519 if (op_class_count == 0)
4520 return offset;
4521
4522 op_class_list = proto_tree_add_subtree(tree, tvb, offset, -1,
4523 ett_radio_restriction_op_class_list, &pi,
4524 "Restricted operating class list");
4525 saved_offset = offset;
4526
4527 while (op_class_index < op_class_count) {
4528 proto_item *ocpi = NULL((void*)0);
4529 proto_tree *channel_list = NULL((void*)0), *channel_tree = NULL((void*)0);
4530 unsigned start_offset = offset;
4531 uint8_t channel_count = 0, channel_index = 0;
4532
4533 op_class_tree = proto_tree_add_subtree_format(op_class_list,
4534 tvb, offset, -1,
4535 ett_radio_restriction_op_class_tree, &ocpi,
4536 "Operating class %u",
4537 op_class_index);
4538
4539 proto_tree_add_item(op_class_tree, hf_ieee1905_radio_restriction_op_class,
4540 tvb, offset, 1, ENC_NA0x00000000);
4541 offset++;
4542
4543 channel_count = tvb_get_uint8(tvb, offset);
4544 proto_tree_add_item(op_class_tree, hf_ieee1905_radio_restriction_chan_count,
4545 tvb, offset, 1, ENC_NA0x00000000);
4546 offset++;
4547
4548 if (channel_count == 0) {
4549 proto_item_set_len(ocpi, offset - start_offset);
4550 op_class_index++;
4551 continue;
4552 }
4553
4554 channel_list = proto_tree_add_subtree(op_class_tree, tvb, offset, channel_count * 2,
4555 ett_radio_restriction_channel_list, NULL((void*)0),
4556 "Restricted channel(s) list");
4557
4558 while (channel_index < channel_count) {
4559 uint8_t separation = 0;
4560 unsigned sep_mhz = 0;
4561
4562 channel_tree = proto_tree_add_subtree_format(channel_list,
4563 tvb, offset, 2,
4564 ett_radio_restriction_channel_tree, NULL((void*)0),
4565 "Channel restriction %u",
4566 channel_index);
4567
4568 proto_tree_add_item(channel_tree, hf_ieee1905_radio_restriction_channel,
4569 tvb, offset, 1, ENC_NA0x00000000);
4570 offset++;
4571
4572 separation = tvb_get_uint8(tvb, offset);
4573 sep_mhz = separation * 10;
4574 proto_tree_add_uint_format(channel_tree,
4575 hf_ieee1905_radio_restriction_min_separation,
4576 tvb, offset, 1, separation,
4577 "Min frequency separation: %dMHz", sep_mhz);
4578 offset++;
4579
4580 channel_index++;
4581 }
4582
4583 proto_item_set_len(ocpi, offset - start_offset);
4584 op_class_index++;
4585 }
4586
4587 proto_item_set_len(pi, offset - saved_offset);
4588
4589 return offset;
4590}
4591
4592/*
4593 * Dissect a Transmit Power Limit TLV
4594 */
4595static int
4596dissect_transmit_power_limit(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
4597 proto_tree *tree, unsigned offset)
4598{
4599 proto_tree_add_item(tree, hf_ieee1905_trans_power_limit_radio_id,
4600 tvb, offset, 6, ENC_NA0x00000000);
4601 offset += 6;
4602
4603 proto_tree_add_item(tree, hf_ieee1905_trans_power_limit_eirp,
4604 tvb, offset, 1, ENC_NA0x00000000);
4605 offset++;
4606
4607 return offset;
4608}
4609
4610/*
4611 * Dissect a Channel Selection Response TLV
4612 */
4613static int
4614dissect_channel_selection_response(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
4615 proto_tree *tree, unsigned offset)
4616{
4617 uint8_t response_code = 0;
4618 proto_item *pi = NULL((void*)0);
4619
4620 proto_tree_add_item(tree, hf_ieee1905_channel_select_resp_radio_id,
4621 tvb, offset, 6, ENC_NA0x00000000);
4622 offset += 6;
4623
4624 response_code = tvb_get_uint8(tvb, offset);
4625 pi = proto_tree_add_item(tree, hf_ieee1905_channel_select_resp_code, tvb,
4626 offset, 1, ENC_NA0x00000000);
4627 proto_item_append_text(pi, ", %s",
4628 val_to_str(pinfo->pool, response_code,
4629 ieee1905_channel_select_resp_code_vals,
4630 "Reserved"));
4631 offset++;
4632
4633 return offset;
4634}
4635
4636/*
4637 * Dissect an Operaring Channel Report TLV
4638 */
4639static int
4640dissect_operating_channel_report(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
4641 proto_tree *tree, unsigned offset)
4642{
4643 uint8_t class_count = 0, class_index = 0;
4644 proto_tree *class_list = NULL((void*)0), *class_tree = NULL((void*)0);
4645
4646 proto_tree_add_item(tree, hf_ieee1905_op_channel_report_radio_id,
4647 tvb, offset, 6, ENC_NA0x00000000);
4648 offset += 6;
4649
4650 class_count = tvb_get_uint8(tvb, offset);
4651 proto_tree_add_item(tree, hf_ieee1905_op_channel_report_classes,
4652 tvb, offset, 1, ENC_NA0x00000000);
4653 offset++;
4654
4655 if (class_count > 0) {
4656
4657 class_list = proto_tree_add_subtree(tree, tvb, offset, 2 * class_count,
4658 ett_op_channel_report_class_list, NULL((void*)0),
4659 "Operating classes list");
4660
4661 while (class_index < class_count) {
4662 class_tree = proto_tree_add_subtree_format(class_list, tvb,
4663 offset, 2, ett_op_channel_report_class_tree,
4664 NULL((void*)0), "Operating class %u", class_index);
4665
4666 proto_tree_add_item(class_tree, hf_ieee1905_op_channel_class,
4667 tvb, offset, 1, ENC_NA0x00000000);
4668 offset++;
4669
4670 proto_tree_add_item(class_tree, hf_ieee1905_op_channel_number,
4671 tvb, offset, 1, ENC_NA0x00000000);
4672 offset++;
4673
4674 class_index++;
4675 }
4676 }
4677
4678 proto_tree_add_item(tree, hf_ieee1905_op_channel_eirp, tvb,
4679 offset, 1, ENC_NA0x00000000);
4680 offset++;
4681
4682 return offset;
4683}
4684
4685/*
4686 * Dissect a Higher Layer Data TLV
4687 */
4688static int
4689dissect_higher_layer_data(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
4690 proto_tree *tree, unsigned offset, uint16_t len)
4691{
4692 uint8_t protocol = tvb_get_uint8(tvb, offset);
4693 proto_item *pi = NULL((void*)0);
4694
4695 pi = proto_tree_add_item(tree, hf_ieee1905_higher_layer_protocol,
4696 tvb, offset, 1, ENC_NA0x00000000);
4697
4698 proto_item_append_text(pi, ", %s",
4699 val_to_str(pinfo->pool, protocol,
4700 ieee1905_higher_layer_protocol_vals,
4701 "Reserved"));
4702 offset++;
4703
4704 proto_tree_add_item(tree, hf_ieee1905_higher_layer_data, tvb,
4705 offset, len - 1, ENC_NA0x00000000);
4706 offset += len - 1;
4707
4708 return offset;
4709}
4710
4711/*
4712 * Dissect an unassociated sta link metric response TLV
4713 */
4714static int
4715dissect_unassociated_sta_link_metric_response(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
4716 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
4717{
4718 uint8_t sta_count = 0, sta_index = 0;
4719 proto_tree *sta_list = NULL((void*)0);
4720
4721 proto_tree_add_item(tree, hf_ieee1905_unassoc_sta_link_metric_op_class,
4722 tvb, offset, 1, ENC_NA0x00000000);
4723 offset++;
4724
4725 sta_count = tvb_get_uint8(tvb, offset);
4726 proto_tree_add_item(tree, hf_ieee1905_unassoc_sta_link_metric_sta_count,
4727 tvb, offset, 1, ENC_NA0x00000000);
4728 offset++;
4729
4730 sta_list = proto_tree_add_subtree(tree, tvb, offset, sta_count * 12,
4731 ett_unassoc_sta_link_metric_list, NULL((void*)0),
4732 "Unassociated STA list");
4733
4734 while (sta_index < sta_count) {
4735 proto_tree *sta_tree = NULL((void*)0);
4736
4737 sta_tree = proto_tree_add_subtree_format(sta_list, tvb,
4738 offset, 12, ett_unassoc_sta_link_metric_tree,
4739 NULL((void*)0), "STA %u", sta_index);
4740
4741 proto_tree_add_item(sta_tree, hf_ieee1905_unassoc_link_metric_mac_addr,
4742 tvb, offset, 6, ENC_NA0x00000000);
4743 offset += 6;
4744
4745 proto_tree_add_item(sta_tree, hf_ieee1905_unassoc_link_metric_channel,
4746 tvb, offset, 1, ENC_NA0x00000000);
4747 offset++;
4748
4749 proto_tree_add_item(sta_tree, hf_ieee1905_unassoc_link_metric_delta,
4750 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
4751 offset += 4;
4752
4753 proto_tree_add_item(sta_tree, hf_ieee1905_unassoc_link_metric_uplink_rcpi,
4754 tvb, offset, 1, ENC_NA0x00000000);
4755 offset++;
4756
4757 sta_index++;
4758 }
4759
4760 return offset;
4761}
4762
4763/*
4764 * Dissect a Steering request TLV
4765 */
4766static int * const steering_flags[] = {
4767 &hf_ieee1905_steering_request_mode_flag,
4768 &hf_ieee1905_btm_disassoc_imminent_flag,
4769 &hf_ieee1905_btm_abridged_flag,
4770 &hf_ieee1905_steering_req_reserved,
4771 NULL((void*)0),
4772};
4773
4774static int
4775dissect_steering_request(tvbuff_t *tvb, packet_info *pinfo,
4776 proto_tree *tree, unsigned offset, uint16_t len)
4777{
4778 uint8_t mode = 0;
4779 uint8_t steering_count = 0;
4780 proto_item *pi = NULL((void*)0);
4781 proto_tree *sta_list = NULL((void*)0), *bssid_list = NULL((void*)0);
4782 uint8_t target_bssid_count;
4783 unsigned start_offset = offset;
4784
4785 proto_tree_add_item(tree, hf_ieee1905_source_bss_bssid, tvb, offset,
4786 6, ENC_NA0x00000000);
4787 offset += 6;
4788
4789 mode = tvb_get_uint8(tvb, offset);
4790 proto_tree_add_bitmask(tree, tvb, offset,
4791 hf_ieee1905_steering_request_flags,
4792 ett_ieee1905_steering_request_flags,
4793 steering_flags, ENC_NA0x00000000);
4794 offset++;
4795
4796 /* If Request Mode is 1, this field is ignored. */
4797 proto_tree_add_item(tree, hf_ieee1905_steering_req_op_window,
4798 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
4799 offset += 2;
4800
4801 proto_tree_add_item(tree, hf_ieee1905_steering_btm_disass_timer,
4802 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
4803 offset += 2;
4804
4805 steering_count = tvb_get_uint8(tvb, offset);
4806 pi = proto_tree_add_item(tree, hf_ieee1905_steering_req_sta_count,
4807 tvb, offset, 1, ENC_NA0x00000000);
4808 offset++;
4809
4810 if (steering_count > 0) {
4811 sta_list = proto_tree_add_subtree(tree, tvb, offset, steering_count * 6,
4812 ett_assoc_control_list, NULL((void*)0),
4813 "Steering request MAC list");
4814
4815 while (steering_count > 0) {
4816 proto_tree_add_item(sta_list, hf_ieee1905_steering_req_sta_mac,
4817 tvb, offset, 6, ENC_NA0x00000000);
4818 offset += 6;
4819
4820 steering_count--;
4821 }
4822
4823
4824 } else {
4825 proto_item_append_text(pi, " (Request applies to all STA(s) in BSS)");
4826 }
4827
4828 /*
4829 * These fields only appear if Request mode is one.
4830 */
4831 if (mode & 0x80) {
4832 target_bssid_count = tvb_get_uint8(tvb, offset);
4833 proto_tree_add_item(tree, hf_ieee1905_steering_req_target_bssid_count,
4834 tvb, offset, 1, ENC_NA0x00000000);
4835 offset++;
4836
4837 bssid_list = proto_tree_add_subtree(tree, tvb, offset,
4838 target_bssid_count * 8,
4839 ett_assoc_control_list, NULL((void*)0),
4840 "Target BSSID list");
4841
4842 while (target_bssid_count > 0) {
4843 /* Have to add a tree here ... */
4844 proto_tree_add_item(bssid_list,
4845 hf_ieee1905_steering_req_target_bssid,
4846 tvb, offset, 6, ENC_NA0x00000000);
4847 offset += 6;
4848
4849 proto_tree_add_item(bssid_list,
4850 hf_ieee1905_steering_req_oper_class,
4851 tvb, offset, 1, ENC_NA0x00000000);
4852 offset++;
4853
4854 proto_tree_add_item(bssid_list,
4855 hf_ieee1905_steering_req_target_channel,
4856 tvb, offset, 1, ENC_NA0x00000000);
4857 offset++;
4858
4859 target_bssid_count--;
4860 }
4861 }
4862
4863 if ((offset - start_offset) < len) {
4864 proto_item *ei = NULL((void*)0);
4865
4866 ei = proto_tree_add_item(tree, hf_ieee1905_extra_tlv_data, tvb, offset,
4867 len - (offset - start_offset), ENC_NA0x00000000);
4868 expert_add_info(pinfo, ei, &ei_ieee1905_extraneous_tlv_data);
4869 offset = start_offset + len; /* Skip the extras. */
4870 }
4871 return offset;
4872}
4873
4874/*
4875 * Dissect a Steering BTM report TLV
4876 */
4877static int
4878dissect_steering_btm_report(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
4879 proto_tree *tree, unsigned offset, uint16_t len)
4880{
4881 proto_tree_add_item(tree, hf_ieee1905_btm_reporter_bssid, tvb, offset,
4882 6, ENC_NA0x00000000);
4883 offset += 6;
4884
4885 proto_tree_add_item(tree, hf_ieee1905_btm_sta_mac_addr, tvb, offset,
4886 6, ENC_NA0x00000000);
4887 offset += 6;
4888
4889 proto_tree_add_item(tree, hf_ieee1905_btm_report_status, tvb, offset,
4890 1, ENC_NA0x00000000);
4891 offset++;
4892
4893 /*
4894 * Handle the BSSID if present. Not sure which status values indicate
4895 * its presence. 13 is the number of bytes already dissected above.
4896 */
4897 if (len >= 13 + 6) {
4898 proto_tree_add_item(tree, hf_ieee1905_btm_report_bssid, tvb, offset,
4899 len - 13, ENC_NA0x00000000);
4900 offset += len - 13; /* Should check for more entries ... */
4901 }
4902
4903 return offset;
4904}
4905
4906/*
4907 * Dissect a Client association control request TLV
4908 */
4909static int
4910dissect_client_association_control_request(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
4911 proto_tree *tree, unsigned offset)
4912{
4913 unsigned sta_list_count = 0;
4914 unsigned control = 0;
4915 proto_tree *sta_list = NULL((void*)0);
4916 proto_item *pi = NULL((void*)0);
4917
4918 proto_tree_add_item(tree, hf_ieee1905_client_assoc_bssid, tvb, offset,
4919 6, ENC_NA0x00000000);
4920 offset += 6;
4921
4922 control = tvb_get_uint8(tvb, offset);
4923 pi = proto_tree_add_item(tree, hf_ieee1905_association_control, tvb,
4924 offset, 1, ENC_NA0x00000000);
4925 proto_item_append_text(pi, ", %s",
4926 val_to_str(pinfo->pool, control,
4927 ieee1905_association_control_vals,
4928 "Reserved"));
4929 offset++;
4930
4931 pi = proto_tree_add_item(tree, hf_ieee1905_association_control_validity,
4932 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
4933 proto_item_append_text(pi, " seconds");
4934 offset += 2;
4935
4936 sta_list_count = tvb_get_uint8(tvb, offset);
4937 proto_tree_add_item(tree, hf_ieee1905_client_assoc_sta_count, tvb,
4938 offset, 1, ENC_NA0x00000000);
4939 offset++;
4940
4941 sta_list = proto_tree_add_subtree(tree, tvb, offset, sta_list_count * 6,
4942 ett_assoc_control_list, NULL((void*)0),
4943 "Client association control MAC list");
4944
4945 while (sta_list_count > 0) {
4946 proto_tree_add_item(sta_list, hf_ieee1905_client_assoc_mac_addr,
4947 tvb, offset, 6, ENC_NA0x00000000);
4948 offset += 6;
4949
4950 sta_list_count--;
4951 }
4952
4953 return offset;
4954}
4955
4956/*
4957 * Dissect a Beacon Metrics Query TLV
4958 */
4959static int
4960dissect_beacon_metrics_query(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
4961 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
4962{
4963 uint8_t ssid_len = 0;
4964 uint8_t channel_count = 0, channel_index = 0;
4965 unsigned saved_offset = 0;
4966 proto_tree *channel_report_list = NULL((void*)0);
4967 proto_item *pi = NULL((void*)0);
4968
4969 proto_tree_add_item(tree, hf_ieee1905_beacon_metrics_query_mac_addr,
4970 tvb, offset, 6, ENC_NA0x00000000);
4971 offset += 6;
4972
4973 proto_tree_add_item(tree, hf_ieee1905_beacon_metrics_query_op_class,
4974 tvb, offset, 1, ENC_NA0x00000000);
4975 offset++;
4976
4977 proto_tree_add_item(tree, hf_ieee1905_beacon_metrics_query_channel,
4978 tvb, offset, 1, ENC_NA0x00000000);
4979 offset++;
4980
4981 proto_tree_add_item(tree, hf_ieee1905_beacon_metrics_query_bssid,
4982 tvb, offset, 6, ENC_NA0x00000000);
4983 offset += 6;
4984
4985 proto_tree_add_item(tree, hf_ieee1905_beacon_metrics_query_detail,
4986 tvb, offset, 1, ENC_NA0x00000000);
4987 offset++;
4988
4989 ssid_len = tvb_get_uint8(tvb, offset);
4990 proto_tree_add_item(tree, hf_ieee1905_beacon_metrics_query_ssid_len,
4991 tvb, offset, 1, ENC_NA0x00000000);
4992 offset++;
4993
4994 proto_tree_add_item(tree, hf_ieee1905_beacon_metrics_query_ssid,
4995 tvb, offset, ssid_len, ENC_ASCII0x00000000);
4996 offset += ssid_len;
4997
4998 /*
4999 * This field should only be non-zero if query_channel above is
5000 * not 255 ... should check
5001 */
5002 channel_count = tvb_get_uint8(tvb, offset);
5003 proto_tree_add_item(tree, hf_ieee1905_beacon_metrics_channel_count,
5004 tvb, offset, 1, ENC_NA0x00000000);
5005 offset++;
5006
5007 channel_report_list = proto_tree_add_subtree(tree, tvb, offset, -1,
5008 ett_beacon_metrics_query_list, &pi,
5009 "Channel report list");
5010 saved_offset = offset;
5011
5012 while (channel_index < channel_count) {
5013 uint8_t report_len = 0, report_index = 0;
5014 proto_tree *channel_report_tree = NULL((void*)0);
5015 proto_item *lpi = NULL((void*)0);
5016 unsigned start_offset = offset;
5017 proto_tree *channel_list = NULL((void*)0);
5018
5019 channel_report_tree = proto_tree_add_subtree_format(channel_report_list, tvb,
5020 offset, -1, ett_beacon_metrics_query_tree,
5021 &lpi, "Channel report %u", channel_index);
5022
5023 report_len = tvb_get_uint8(tvb, offset);
5024 proto_tree_add_item(channel_report_tree,
5025 hf_ieee1905_beacon_metrics_report_len,
5026 tvb, offset, 1, ENC_NA0x00000000);
5027 offset++;
5028
5029 proto_tree_add_item(channel_report_tree,
5030 hf_ieee1905_beacon_metrics_report_op_class,
5031 tvb, offset, 1, ENC_NA0x00000000);
5032 offset++;
5033
5034 channel_list = proto_tree_add_subtree(channel_report_tree, tvb, offset,
5035 report_len - 1,
5036 ett_beacon_metrics_query_channel_list, NULL((void*)0),
5037 "Channel report list");
5038 while (report_index < report_len - 1) {
5039 proto_tree_add_item(channel_list,
5040 hf_ieee1905_beacon_metrics_report_channel_id,
5041 tvb, offset, 1, ENC_NA0x00000000);
5042 offset++;
5043
5044 report_index++;
5045 }
5046
5047 proto_item_set_len(lpi, offset - start_offset);
5048
5049 channel_index++;
5050 }
5051
5052 proto_item_set_len(pi, offset - saved_offset);
5053
5054 return offset;
5055}
5056
5057/*
5058 * Dissect a measurement report. This should go into ieee80211.c but not
5059 * for now. We expect a new TVB that contains only one measurement report.
5060 */
5061static int
5062dissect_measurement_report(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5063 proto_tree *tree)
5064{
5065 int offset = 0;
5066 unsigned rep_len = tvb_reported_length_remaining(tvb, offset);
5067
5068 proto_tree_add_item(tree, hf_ieee1905_measurement_report, tvb, offset,
5069 rep_len, ENC_NA0x00000000);
5070 offset += rep_len;
5071
5072 return offset;
5073}
5074
5075/*
5076 * Dissect a Beacon Metrics Response TLV
5077 */
5078static int
5079dissect_beacon_metrics_response(tvbuff_t *tvb, packet_info *pinfo,
5080 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
5081{
5082 uint8_t report_index = 0;
5083 proto_item *pi = NULL((void*)0);
5084 proto_tree *report_list = NULL((void*)0);
5085 unsigned saved_offset = 0;
5086 uint8_t meas_count = 0;
5087
5088 proto_tree_add_item(tree, hf_ieee1905_beacon_metrics_response_mac_addr,
5089 tvb, offset, 6, ENC_NA0x00000000);
5090 offset += 6;
5091
5092 proto_tree_add_item(tree, hf_ieee1905_beacon_metrics_response_reserved,
5093 tvb, offset, 1, ENC_NA0x00000000);
5094 offset++;
5095
5096 meas_count = tvb_get_uint8(tvb, offset);
5097 pi = proto_tree_add_item(tree, hf_ieee1905_beacon_metrics_response_meas_num,
5098 tvb, offset, 1, ENC_NA0x00000000);
5099 offset++;
5100
5101 /* Now, the report(s) ... */
5102 report_list = proto_tree_add_subtree(tree, tvb, offset, -1,
5103 ett_beacon_metrics_response_report_list, &pi,
5104 "Measurement report list");
5105 saved_offset = offset;
5106
5107 while (meas_count > 0) {
5108 proto_tree *report_tree = NULL((void*)0);
5109 proto_item *lpi = NULL((void*)0);
5110 tvbuff_t *new_tvb = NULL((void*)0);
5111 uint8_t new_len = 0;
5112
5113 report_tree = proto_tree_add_subtree_format(report_list, tvb,
5114 offset, -1,
5115 ett_beacon_metrics_response_report_tree,
5116 &lpi, "Beacon report %u", report_index);
5117
5118 /*
5119 * This is a measurement report, so the elt-id must be 39. The length
5120 * is the next field. Create a new TVB?
5121 */
5122 new_len = tvb_get_uint8(tvb, offset + 1);
5123 new_tvb = tvb_new_subset_length(tvb, offset + 2, new_len);
5124
5125 dissect_measurement_report(new_tvb, pinfo, report_tree);
5126
5127 proto_item_set_len(lpi, new_len + 2);
5128
5129 offset += 2 + new_len;
5130 report_index++;
5131 meas_count--;
5132 }
5133
5134 proto_item_set_len(pi, offset - saved_offset);
5135
5136 return offset;
5137}
5138
5139/*
5140 * Dissect a Backhaul steering request TLV
5141 */
5142static int
5143dissect_backhaul_steering_request(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5144 proto_tree *tree, unsigned offset)
5145{
5146 proto_tree_add_item(tree, hf_ieee1905_assoc_backhaul_station_mac, tvb,
5147 offset, 6, ENC_NA0x00000000);
5148 offset += 6;
5149
5150 proto_tree_add_item(tree, hf_ieee1905_backhaul_target_bssid, tvb, offset,
5151 6, ENC_NA0x00000000);
5152 offset += 6;
5153
5154 proto_tree_add_item(tree, hf_ieee1905_backhaul_operating_class, tvb,
5155 offset, 1, ENC_NA0x00000000);
5156 offset++;
5157
5158 proto_tree_add_item(tree, hf_ieee1905_backhaul_channel_number, tvb,
5159 offset, 1, ENC_NA0x00000000);
5160 offset++;
5161
5162 return offset;
5163}
5164
5165/*
5166 * Dissect a Backhaul steering response TLV
5167 */
5168static int
5169dissect_backhaul_steering_response(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5170 proto_tree *tree, unsigned offset)
5171{
5172 proto_item *pi = NULL((void*)0);
5173 uint8_t status = 0;
5174
5175 proto_tree_add_item(tree, hf_ieee1905_assoc_backhaul_station_mac, tvb,
5176 offset, 6, ENC_NA0x00000000);
5177 offset += 6;
5178
5179 proto_tree_add_item(tree, hf_ieee1905_backhaul_target_bssid, tvb, offset,
5180 6, ENC_NA0x00000000);
5181 offset += 6;
5182
5183 status = tvb_get_uint8(tvb, offset);
5184 pi = proto_tree_add_item(tree, hf_ieee1905_backhaul_steering_status,
5185 tvb, offset, 1, ENC_NA0x00000000);
5186 proto_item_append_text(pi, ", %s",
5187 val_to_str(pinfo->pool, status,
5188 ieee1905_backhaul_status_vals,
5189 "Reserved"));
5190 offset++;
5191
5192 return offset;
5193}
5194
5195/*
5196 * Dissect a client info TLV
5197 */
5198static int
5199dissect_client_info(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5200 proto_tree *tree, unsigned offset)
5201{
5202 proto_tree_add_item(tree, hf_ieee1905_client_bssid, tvb, offset,
5203 6, ENC_NA0x00000000);
5204 offset += 6;
5205
5206 proto_tree_add_item(tree, hf_ieee1905_client_mac_addr, tvb, offset,
5207 6, ENC_NA0x00000000);
5208 offset += 6;
5209 return offset;
5210}
5211
5212/*
5213 * Dissect a client capability report TLV
5214 */
5215static int
5216dissect_client_capability_report(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5217 proto_tree *tree, unsigned offset, uint16_t len)
5218{
5219 uint8_t result = tvb_get_uint8(tvb, offset);
5220 proto_item *pi = NULL((void*)0);
5221
5222 pi = proto_tree_add_item(tree, hf_ieee1905_client_capability_result, tvb,
5223 offset, 1, ENC_NA0x00000000);
5224 proto_item_append_text(pi, ", %s",
5225 val_to_str(pinfo->pool, result,
5226 ieee1905_client_capability_result_vals,
5227 "Reserved"));
5228 offset++;
5229
5230 if (len > 1) { /* Must be the frame body of most recent assoc req */
5231 tvbuff_t *mgmt_tvb;
5232 proto_item *frame_item;
5233 proto_tree *mgmt_tree;
5234
5235 len--;
5236 frame_item =proto_tree_add_item(tree, hf_ieee1905_client_capability_frame, tvb,
5237 offset, len, ENC_NA0x00000000);
5238
5239 /* Attempt to decode Information Elements from the Assoc Request.
5240 *
5241 * According to the EM standard, the frame can either be an Assoc or a Reassoc Request.
5242 * The data starts at the "Fixed Parameters", which have length 4 for an Assoc Request and
5243 * 10 for a Reassoc Request.
5244 *
5245 * => The problem is that you don't know which of the 2 it is and where the IE start
5246 * => Assume the most occurring case and thus useful case (Assoc Request)
5247 */
5248 mgmt_tvb = tvb_new_subset_length(tvb, offset, len);
5249 mgmt_tree = proto_item_add_subtree(frame_item, ett_client_capability_body);
5250
5251 dissect_ieee80211_mgt(MGT_TO_FCF(MGT_ASSOC_REQ)(((0x00) & 0x0F) << 4), mgmt_tvb, pinfo, mgmt_tree);
5252
5253 offset += len;
5254 }
5255
5256 return offset;
5257}
5258
5259/*
5260 * Dissect a client capability report TLV
5261 */
5262static int
5263dissect_client_association_event(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5264 proto_tree *tree, unsigned offset)
5265{
5266 static int * const association_flags[] = {
5267 &hf_ieee1905_association_flag,
5268 NULL((void*)0),
5269 };
5270
5271 proto_tree_add_item(tree, hf_ieee1905_association_client_mac_addr,
5272 tvb, offset, 6, ENC_NA0x00000000);
5273 offset += 6;
5274
5275 proto_tree_add_item(tree, hf_ieee1905_association_agent_bssid,
5276 tvb, offset, 6, ENC_NA0x00000000);
5277 offset += 6;
5278
5279 proto_tree_add_bitmask(tree, tvb, offset,
5280 hf_ieee1905_association_event_flags,
5281 ett_ieee1905_association_event_flags,
5282 association_flags, ENC_NA0x00000000);
5283 offset++;
5284
5285 return offset;
5286}
5287
5288/*
5289 * Dissect an AP Metrics Query TLV
5290 */
5291static int
5292dissect_ap_metric_query(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5293 proto_tree *tree, unsigned offset, uint16_t len)
5294{
5295 proto_tree *bssid_list = NULL((void*)0);
5296 proto_item *pi = NULL((void*)0);
5297 unsigned saved_offset;
5298 int remaining = len;
5299
5300 proto_tree_add_item(tree, hf_ieee1905_ap_metric_query_bssid_cnt, tvb,
5301 offset, 1, ENC_NA0x00000000);
5302 offset++;
5303
5304 bssid_list = proto_tree_add_subtree(tree, tvb, offset, -1,
5305 ett_ap_metric_query_bssid_list, &pi,
5306 "AP BSSID list");
5307 saved_offset = offset;
5308
5309 while (remaining >= 6) {
5310 proto_tree_add_item(bssid_list, hf_ieee1905_ap_metric_query_bssid,
5311 tvb, offset, 6, ENC_NA0x00000000);
5312 offset += 6;
5313 remaining -= 6;
5314 }
5315
5316 proto_item_set_len(pi, offset - saved_offset);
5317
5318 return offset;
5319}
5320
5321/*
5322 * Dissect an STA MAC address type TLV
5323 */
5324#define INCLUDE_ESTIMATED_SP_AC_EQ_BE0x80 0x80
5325#define INCLUDE_ESTIMATED_SP_AC_EQ_BK0x40 0x40
5326#define INCLUDE_ESTIMATED_SP_AC_EQ_VO0x20 0x20
5327#define INCLUDE_ESTIMATED_SP_AC_EQ_VI0x10 0x10
5328
5329static int
5330dissect_ap_metrics(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5331 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
5332{
5333 uint8_t presence_flags = 0;
5334 static int * const flags[] = {
5335 &hf_ieee1905_include_estimated_spi_ac_eq_be,
5336 &hf_ieee1905_include_estimated_spi_ac_eq_bk,
5337 &hf_ieee1905_include_estimated_spi_ac_eq_vo,
5338 &hf_ieee1905_include_estimated_spi_ac_eq_vi,
5339 NULL((void*)0)
5340 };
5341
5342 proto_tree_add_item(tree, hf_ieee1905_ap_metrics_agent_bssid,
5343 tvb, offset, 6, ENC_NA0x00000000);
5344 offset += 6;
5345
5346 proto_tree_add_item(tree, hf_ieee1905_ap_metrics_channel_utilization,
5347 tvb, offset, 1, ENC_NA0x00000000);
5348 offset++;
5349
5350 proto_tree_add_item(tree, hf_ieee1905_ap_metrics_sta_count,
5351 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
5352 offset += 2;
5353
5354 presence_flags = tvb_get_uint8(tvb, offset);
5355 proto_tree_add_bitmask_with_flags(tree, tvb, offset,
5356 hf_ieee1905_ap_metrics_flags,
5357 ett_ieee1905_ap_metrics_flags, flags, ENC_NA0x00000000,
5358 BMT_NO_APPEND0x01);
5359 offset++;
5360
5361 /*
5362 * This field should always be present, and the associated flag bit
5363 * should be 1 (TODO:check that).
5364 */
5365 proto_tree_add_item(tree, hf_ieee1905_ap_metrics_service_params_be,
5366 tvb, offset, 3, ENC_NA0x00000000);
5367 offset += 3;
5368
5369 /*
5370 * We should indicate an error if the field is too small. Also,
5371 * need to know the format of these fields.
5372 */
5373 if (presence_flags & INCLUDE_ESTIMATED_SP_AC_EQ_BK0x40) {
5374 proto_tree_add_item(tree, hf_ieee1905_ap_metrics_service_params_bk,
5375 tvb, offset, 3, ENC_NA0x00000000);
5376 offset += 3;
5377 }
5378
5379 if (presence_flags & INCLUDE_ESTIMATED_SP_AC_EQ_VO0x20) {
5380 proto_tree_add_item(tree, hf_ieee1905_ap_metrics_service_params_vo,
5381 tvb, offset, 3, ENC_NA0x00000000);
5382 offset += 3;
5383 }
5384
5385 if (presence_flags & INCLUDE_ESTIMATED_SP_AC_EQ_VI0x10) {
5386 proto_tree_add_item(tree, hf_ieee1905_ap_metrics_service_params_vi,
5387 tvb, offset, 3, ENC_NA0x00000000);
5388 offset += 3;
5389 }
5390
5391 return offset;
5392}
5393
5394/*
5395 * Dissect an STA MAC address type TLV
5396 */
5397static int
5398dissect_sta_mac_address_type(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5399 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
5400{
5401 proto_tree_add_item(tree, hf_ieee1905_sta_mac_address_type, tvb,
5402 offset, 6, ENC_NA0x00000000);
5403 offset += 6;
5404
5405 return offset;
5406}
5407
5408/*
5409 * Dissect an Associated STA Link Metrics TLV
5410 */
5411static int
5412dissect_associated_sta_link_metrics(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5413 proto_tree *tree, unsigned offset, uint16_t len)
5414{
5415 proto_tree *bss_list = NULL((void*)0);
5416 proto_tree *bss_tree = NULL((void*)0);
5417 proto_item *pi = NULL((void*)0);
5418 int remaining;
5419 uint8_t bss_list_index = 0;
5420 unsigned start_offset = 0;
5421
5422 proto_tree_add_item(tree, hf_ieee1905_assoc_sta_mac_addr, tvb, offset,
5423 6, ENC_NA0x00000000);
5424 offset += 6;
5425 len -= 6;
5426
5427 proto_tree_add_item(tree, hf_ieee1905_assoc_sta_bssid_count, tvb, offset,
5428 1, ENC_NA0x00000000);
5429 offset++;
5430 len--;
5431
5432 bss_list = proto_tree_add_subtree(tree, tvb, offset, -1,
5433 ett_sta_list_metrics_bss_list, NULL((void*)0),
5434 "BSS list");
5435
5436 remaining = len;
5437 while (remaining >= 19) {
5438 bss_tree = proto_tree_add_subtree_format(bss_list, tvb,
5439 offset, 18, ett_sta_list_metrics_bss_tree,
5440 NULL((void*)0), "BSS %u", bss_list_index);
5441
5442 proto_tree_add_item(bss_tree, hf_ieee1905_assoc_sta_link_metrics_bssid,
5443 tvb, offset, 6, ENC_NA0x00000000);
5444 offset += 6;
5445
5446 proto_tree_add_item(bss_tree, hf_ieee1905_assoc_sta_link_metrics_time_delta,
5447 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5448 offset += 4;
5449
5450 proto_tree_add_item(bss_tree, hf_ieee1905_assoc_sta_link_metrics_dwn_rate,
5451 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5452 offset += 4;
5453
5454 proto_tree_add_item(bss_tree, hf_ieee1905_assoc_sta_link_metrics_up_rate,
5455 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5456 offset += 4;
5457
5458 proto_tree_add_item(bss_tree, hf_ieee1905_assoc_sta_link_metrics_rcpi,
5459 tvb, offset, 1, ENC_NA0x00000000);
5460 offset++;
5461
5462 bss_list_index++;
5463 remaining -= 19;
5464 }
5465
5466 proto_item_set_len(pi, offset - start_offset);
5467
5468 if (remaining > 0) {
5469 offset += remaining;
5470 }
5471
5472 return offset;
5473}
5474
5475/*
5476 * Dissect an Associated Wi-Fi 6 STA Status Report TLV
5477 */
5478static int
5479dissect_associated_wf6_sta_status_report(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5480 proto_tree *tree, unsigned offset, uint16_t len)
5481{
5482 proto_tree *tid_list = NULL((void*)0);
5483 proto_tree *tid_tree = NULL((void*)0);
5484 proto_item *pi = NULL((void*)0);
5485 int remaining;
5486 uint8_t tid_list_index = 0;
5487 unsigned start_offset = 0;
5488
5489 proto_tree_add_item(tree, hf_ieee1905_assoc_wf6_sta_mac_addr, tvb, offset,
5490 6, ENC_NA0x00000000);
5491 offset += 6;
5492 len -= 6; //BUG: Introduce remaining variable
5493
5494 proto_tree_add_item(tree, hf_ieee1905_assoc_wf6_sta_tid_count, tvb, offset,
5495 1, ENC_NA0x00000000);
5496 offset++;
5497 len--;
5498
5499 tid_list = proto_tree_add_subtree(tree, tvb, offset, -1,
5500 ett_sta_wf6_status_report_tid_list, NULL((void*)0),
5501 "TID list");
5502
5503 remaining = len;
5504 while (remaining >= 2) {
5505 uint8_t tid = tvb_get_uint8(tvb, offset);
5506
5507 tid_tree = proto_tree_add_subtree_format(tid_list, tvb,
5508 offset, 2, ett_sta_wf6_status_report_tid_tree,
5509 NULL((void*)0), "TID %u (%0x)", tid_list_index, tid);
5510
5511 proto_tree_add_item(tid_tree, hf_ieee1905_assoc_wf6_sta_tid,
5512 tvb, offset, 1, ENC_NA0x00000000);
5513 offset += 1;
5514
5515 proto_tree_add_item(tid_tree, hf_ieee1905_assoc_wf6_sta_queue_size,
5516 tvb, offset, 1, ENC_NA0x00000000);
5517 offset += 1;
5518
5519 tid_list_index++;
5520 remaining -= 2;
5521 }
5522
5523 proto_item_set_len(pi, offset - start_offset);
5524
5525 if (remaining > 0) {
5526 offset += remaining;
5527 }
5528
5529 return offset;
5530}
5531
5532/*
5533 * Dissect an Associated STA extended link metrics TLV
5534 */
5535static int
5536dissect_associated_sta_extended_link_metrics(tvbuff_t *tvb,
5537 packet_info *pinfo _U___attribute__((unused)), proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
5538{
5539 uint8_t bssid_count = 0;
5540
5541 proto_tree_add_item(tree, hf_ieee1905_assoc_sta_ext_link_metrics_mac_addr,
5542 tvb, offset, 6, ENC_NA0x00000000);
5543 offset += 6;
5544
5545 bssid_count = tvb_get_uint8(tvb, offset);
5546 proto_tree_add_item(tree, hf_ieee1905_assoc_sta_ext_link_metrics_count, tvb,
5547 offset, 1, ENC_NA0x00000000);
5548 offset += 1;
5549
5550 if (bssid_count > 0) {
5551 proto_tree *bss_list = NULL((void*)0), *bss_tree = NULL((void*)0);
5552 proto_item *bli = NULL((void*)0);
5553 unsigned saved_offset = offset;
5554 uint8_t bssid_id = 0;
5555
5556 bss_list = proto_tree_add_subtree(tree, tvb, offset, -1,
5557 ett_sta_extended_link_metrics_list,
5558 &bli, "BSS List");
5559 while (bssid_id < bssid_count) {
5560 bss_tree = proto_tree_add_subtree_format(bss_list, tvb, offset, 22,
5561 ett_sta_extended_link_metrics_tree,
5562 NULL((void*)0), "BSS #%u", bssid_id);
5563
5564 proto_tree_add_item(bss_tree,
5565 hf_ieee1905_assoc_sta_extended_metrics_bssid,
5566 tvb, offset, 6, ENC_NA0x00000000);
5567 offset += 6;
5568
5569 proto_tree_add_item(bss_tree,
5570 hf_ieee1905_assoc_sta_extended_metrics_lddlr,
5571 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5572 offset += 4;
5573
5574 proto_tree_add_item(bss_tree,
5575 hf_ieee1905_assoc_sta_extended_metrics_ldulr,
5576 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5577 offset += 4;
5578
5579 proto_tree_add_item(bss_tree,
5580 hf_ieee1905_assoc_sta_extended_metrics_ur,
5581 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5582 offset += 4;
5583
5584 proto_tree_add_item(bss_tree,
5585 hf_ieee1905_assoc_sta_extended_metrics_tr,
5586 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5587 offset += 4;
5588
5589 bssid_id++;
5590 }
5591 proto_item_set_len(bli, offset - saved_offset);
5592 }
5593
5594 return offset;
5595}
5596
5597/*
5598 * Dissect an Unassociated STA Link Metrics Query TLV
5599 */
5600static int
5601dissect_unassociated_sta_link_metrics_query(tvbuff_t *tvb,
5602 packet_info *pinfo _U___attribute__((unused)), proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
5603{
5604 uint8_t channel_count = 0;
5605 uint8_t mac_count;
5606 proto_tree *channel_list = NULL((void*)0);
5607 proto_tree *sta_mac_list = NULL((void*)0);
5608 proto_item *pi = NULL((void*)0), *ci = NULL((void*)0);
5609 unsigned saved_offset, chan_saved_offset;
5610
5611 proto_tree_add_item(tree, hf_ieee1905_unassoc_sta_link_metrics_class,
5612 tvb, offset, 1, ENC_NA0x00000000);
5613 offset++;
5614
5615 channel_count = tvb_get_uint8(tvb, offset);
5616 proto_tree_add_item(tree, hf_ieee1905_unassoc_sta_link_channel_count,
5617 tvb, offset, 1, ENC_NA0x00000000);
5618 offset++;
5619
5620 if (channel_count > 0) {
5621 chan_saved_offset = offset;
5622
5623 channel_list = proto_tree_add_subtree(tree, tvb, offset, -1,
5624 ett_sta_link_metrics_query_channel_list, &ci,
5625 "Channel list");
5626
5627 while (channel_count > 0) {
5628 proto_tree_add_item(channel_list,
5629 hf_ieee1905_unassoc_metrics_channel,
5630 tvb, offset, 1, ENC_NA0x00000000);
5631 offset++;
5632 channel_count--;
5633
5634 mac_count = tvb_get_uint8(tvb, offset);
5635
5636 proto_tree_add_item(channel_list,
5637 hf_ieee1905_unassoc_metrics_mac_count,
5638 tvb, offset, 1, ENC_NA0x00000000);
5639 offset += 1;
5640
5641 saved_offset = offset;
5642 sta_mac_list = proto_tree_add_subtree(channel_list, tvb, offset, -1,
5643 ett_sta_link_link_mac_addr_list, &pi,
5644 "MAC address list");
5645
5646 while (mac_count) {
5647 proto_tree_add_item(sta_mac_list,
5648 hf_ieee1905_unassoc_link_metrics_query_mac,
5649 tvb, offset, 6, ENC_NA0x00000000);
5650 offset += 6;
5651 mac_count--;
5652 }
5653
5654 proto_item_set_len(pi, offset - saved_offset);
5655 }
5656 proto_item_set_len(ci, offset - chan_saved_offset);
5657 }
5658
5659 return offset;
5660}
5661
5662/*
5663 * Dissect a Device Information Type TLV
5664 */
5665static int
5666dissect_device_information_type(tvbuff_t *tvb, packet_info *pinfo,
5667 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
5668{
5669 proto_item *pi = NULL((void*)0);
5670 proto_tree *sub_tree = NULL((void*)0);
5671 uint8_t count;
5672 unsigned start_offset;
5673
5674 proto_tree_add_item(tree, hf_ieee1905_al_mac_address_type, tvb,
5675 offset, 6, ENC_NA0x00000000);
5676 offset += 6;
5677
5678 count = tvb_get_uint8(tvb, offset);
5679 proto_tree_add_item(tree, hf_ieee1905_local_interface_count, tvb,
5680 offset, 1, ENC_NA0x00000000);
5681 offset++;
5682 start_offset = offset;
5683
5684 sub_tree = proto_tree_add_subtree(tree, tvb, offset, -1,
5685 ett_device_information_list,
5686 &pi, "Local interface list");
5687
5688 offset = dissect_local_interface_list(tvb, pinfo, sub_tree,
5689 offset, count);
5690
5691 proto_item_set_len(pi, offset - start_offset);
5692
5693 return offset;
5694}
5695
5696/*
5697 * Dissect a Transmitter Link Metric TLV
5698 */
5699static int
5700dissect_transmitter_link_metric(tvbuff_t *tvb, packet_info *pinfo,
5701 proto_tree *tree, unsigned offset, uint16_t len)
5702{
5703 int remaining;
5704
5705 proto_tree_add_item(tree, hf_ieee1905_responder_al_mac_addr, tvb,
5706 offset, 6, ENC_NA0x00000000);
5707 offset += 6;
5708
5709 proto_tree_add_item(tree, hf_ieee1905_neighbor_al_mac_addr, tvb,
5710 offset, 6, ENC_NA0x00000000);
5711 offset += 6;
5712
5713 remaining = len - 12;
5714 while (remaining > 0) {
5715 proto_tree_add_item(tree, hf_ieee1905_receiving_al_mac_addr,
5716 tvb, offset, 6, ENC_NA0x00000000);
5717 offset += 6;
5718
5719 proto_tree_add_item(tree, hf_ieee1905_neighbor_al_mac_addr,
5720 tvb, offset, 6, ENC_NA0x00000000);
5721 offset += 6;
5722
5723 offset = dissect_media_type(tvb, pinfo, tree, offset);
5724
5725 proto_tree_add_item(tree, hf_ieee1905_bridge_flag, tvb, offset,
5726 1, ENC_NA0x00000000);
5727 offset += 1;
5728
5729 proto_tree_add_item(tree, hf_ieee1905_packet_errors, tvb, offset,
5730 4, ENC_BIG_ENDIAN0x00000000);
5731 offset += 4;
5732
5733 proto_tree_add_item(tree, hf_ieee1905_transmitted_packets, tvb,
5734 offset, 4, ENC_BIG_ENDIAN0x00000000);
5735 offset += 4;
5736
5737 proto_tree_add_item(tree, hf_ieee1905_mac_throughput_capacity, tvb,
5738 offset, 2, ENC_BIG_ENDIAN0x00000000);
5739 offset += 2;
5740
5741 proto_tree_add_item(tree, hf_ieee1905_link_availability, tvb,
5742 offset, 2, ENC_BIG_ENDIAN0x00000000);
5743 offset += 2;
5744
5745 proto_tree_add_item(tree, hf_ieee1905_phy_rate, tvb, offset,
5746 2, ENC_BIG_ENDIAN0x00000000);
5747 offset += 2;
5748
5749 remaining -= 29;
5750 }
5751
5752 return offset;
5753}
5754
5755/*
5756 * Dissect a Receiver Link Metric TLV
5757 */
5758static int
5759dissect_receiver_link_metric(tvbuff_t *tvb, packet_info *pinfo,
5760 proto_tree *tree, unsigned offset, uint16_t len)
5761{
5762 int remaining;
5763
5764 proto_tree_add_item(tree, hf_ieee1905_responder_al_mac_addr, tvb,
5765 offset, 6, ENC_NA0x00000000);
5766 offset += 6;
5767 proto_tree_add_item(tree, hf_ieee1905_neighbor_al_mac_addr, tvb,
5768 offset, 6, ENC_NA0x00000000);
5769 offset += 6;
5770
5771 remaining = len - 12;
5772 while (remaining > 0) {
5773 proto_tree_add_item(tree, hf_ieee1905_receiving_al_mac_addr,
5774 tvb, offset, 6, ENC_NA0x00000000);
5775 offset += 6;
5776
5777 proto_tree_add_item(tree, hf_ieee1905_neighbor_al_mac_addr,
5778 tvb, offset, 6, ENC_NA0x00000000);
5779 offset += 6;
5780
5781 offset = dissect_media_type(tvb, pinfo, tree, offset);
5782
5783 proto_tree_add_item(tree, hf_ieee1905_packet_errors, tvb, offset,
5784 4, ENC_BIG_ENDIAN0x00000000);
5785 offset += 4;
5786
5787 proto_tree_add_item(tree, hf_ieee1905_packets_received, tvb,
5788 offset, 4, ENC_BIG_ENDIAN0x00000000);
5789 offset += 4;
5790
5791 proto_tree_add_item(tree, hf_ieee1905_rssi, tvb, offset, 1, ENC_NA0x00000000);
5792 offset++;
5793
5794 remaining -= 23;
5795 }
5796 return offset;
5797}
5798
5799/*
5800 * Dissect an Associated STA Traffic Stats TLV
5801 */
5802static int
5803dissect_associated_sta_traffic_stats(tvbuff_t *tvb,
5804 packet_info *pinfo _U___attribute__((unused)), proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
5805{
5806 proto_tree_add_item(tree, hf_ieee1905_assoc_sta_traffic_stats_mac_addr, tvb,
5807 offset, 6, ENC_NA0x00000000);
5808 offset += 6;
5809
5810 proto_tree_add_item(tree, hf_ieee1905_assoc_sta_traffic_stats_bytes_sent,
5811 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5812 offset += 4;
5813
5814 proto_tree_add_item(tree, hf_ieee1905_assoc_sta_traffic_stats_bytes_rcvd,
5815 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5816 offset += 4;
5817
5818 proto_tree_add_item(tree, hf_ieee1905_assoc_sta_traffic_stats_packets_sent,
5819 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5820 offset += 4;
5821
5822 proto_tree_add_item(tree, hf_ieee1905_assoc_sta_traffic_stats_packets_rcvd,
5823 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5824 offset += 4;
5825
5826 proto_tree_add_item(tree, hf_ieee1905_assoc_sta_traffic_stats_tx_pkt_errs,
5827 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5828 offset += 4;
5829
5830 proto_tree_add_item(tree, hf_ieee1905_assoc_sta_traffic_stats_rx_pkt_errs,
5831 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5832 offset += 4;
5833
5834 proto_tree_add_item(tree, hf_ieee1905_assoc_sta_traffic_stats_retrans_count,
5835 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5836 offset += 4;
5837
5838 return offset;
5839}
5840
5841/*
5842 * Dissect an Error code TLV
5843 */
5844static int
5845dissect_error_code(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)), proto_tree *tree,
5846 unsigned offset, uint16_t len _U___attribute__((unused)))
5847{
5848 proto_item *pi = NULL((void*)0);
5849 uint8_t error_code = tvb_get_uint8(tvb, offset);
5850
5851 pi = proto_tree_add_item(tree, hf_ieee1905_error_code_value, tvb,
5852 offset, 1, ENC_NA0x00000000);
5853 proto_item_append_text(pi, ", %s",
5854 val_to_str(pinfo->pool, error_code,
5855 ieee1905_error_code_vals,
5856 "Reserved"));
5857 offset++;
5858
5859 proto_tree_add_item(tree, hf_ieee1905_error_code_mac_addr, tvb, offset,
5860 6, ENC_NA0x00000000);
5861 offset += 6;
5862
5863 return offset;
5864}
5865
5866/*
5867 * Dissect a Channel Scan Reporting Policy TLV
5868 */
5869static int * const channel_scan_rep_policy_headers[] = {
5870 &hf_ieee1905_channel_scan_pol_report,
5871 &hf_ieee1905_channel_scan_pol_reserved,
5872 NULL((void*)0)
5873};
5874
5875static const true_false_string report_independent_scans_tfs = {
5876 "Report Independent Channel Scans",
5877 "Do not report Independent Channel Scans unless requested"
5878};
5879
5880static int
5881dissect_channel_scan_reporting_policy(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5882 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
5883{
5884 proto_tree_add_bitmask(tree, tvb, offset,
5885 hf_ieee1905_channel_scan_rep_policy,
5886 ett_channel_scan_rep_policy,
5887 channel_scan_rep_policy_headers, ENC_NA0x00000000);
5888 offset += 1;
5889
5890 return offset;
5891}
5892
5893/*
5894 * Dissect a Channel Scan Capabilities TLV
5895 */
5896static int * const channel_scan_capa_flags_headers[] = {
5897 &hf_ieee1905_channel_scan_capa_flags_on_boot_only,
5898 &hf_ieee1905_channel_scan_capa_flags_scan_impact,
5899 &hf_ieee1905_channel_scan_capa_flags_reserved,
5900 NULL((void*)0)
5901};
5902
5903static const true_false_string channel_scan_capa_flags_on_boot_only_tfs = {
5904 "Agent can only perform scan on boot",
5905 "Agent can perform requested scans"
5906};
5907
5908static const value_string channel_scan_capa_flags_impact_vals[] = {
5909 { 0, "No impact" },
5910 { 1, "Reduced number of spacial streams" },
5911 { 2, "Time slicing impairment" },
5912 { 3, "Radio unavailable for >= 2 seconds" },
5913 { 0, NULL((void*)0) }
5914};
5915
5916static int
5917dissect_channel_scan_capabilities(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
5918 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
5919{
5920 proto_tree *radio_list = NULL((void*)0);
5921 proto_item *rli = NULL((void*)0);
5922 uint8_t radio_count = 0, radio_num = 0;
5923 unsigned radio_list_start = 0;
5924
5925 radio_count = tvb_get_uint8(tvb, offset);
5926 proto_tree_add_item(tree, hf_ieee1905_channel_scan_capabilities_radio_num,
5927 tvb, offset, 1, ENC_NA0x00000000);
5928 offset += 1;
5929
5930 radio_list = proto_tree_add_subtree(tree, tvb, offset, -1,
5931 ett_channel_scan_capa_radio_list,
5932 &rli, "Radio List");
5933 radio_list_start = offset;
5934
5935 while (radio_num < radio_count) {
5936 proto_tree *radio_tree = NULL((void*)0);
5937 proto_item *ri = NULL((void*)0);
5938 proto_tree *oper_class_list = NULL((void*)0);
5939 proto_item *cli = NULL((void*)0);
5940 unsigned start_offset = offset;
5941 uint8_t oper_class_count = 0, oper_class_num = 0;
5942 unsigned class_start_offset = 0;
5943
5944 radio_tree = proto_tree_add_subtree_format(radio_list, tvb, offset,
5945 -1, ett_channel_scan_capa_radio,
5946 &ri, "Radio %u", radio_num);
5947
5948 proto_tree_add_item(radio_tree, hf_ieee1905_channel_scan_capa_radio_id,
5949 tvb, offset, 6, ENC_NA0x00000000);
5950 offset += 6;
5951
5952 proto_tree_add_bitmask(radio_tree, tvb, offset,
5953 hf_ieee1905_channel_scan_capa_flags,
5954 ett_channel_scan_capa_flags,
5955 channel_scan_capa_flags_headers, ENC_NA0x00000000);
5956 offset += 1;
5957
5958 proto_tree_add_item(radio_tree,
5959 hf_ieee1905_channel_scan_capa_min_scan_interval,
5960 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
5961 offset += 4;
5962
5963 oper_class_count = tvb_get_uint8(tvb, offset);
5964 proto_tree_add_item(radio_tree, hf_ieee1905_channel_scan_capa_class_num,
5965 tvb, offset, 1, ENC_NA0x00000000);
5966 offset += 1;
5967
5968 oper_class_list = proto_tree_add_subtree(radio_tree, tvb, offset, -1,
5969 ett_channel_scan_capa_class_list,
5970 &cli, "Operating Class List");
5971
5972 class_start_offset = offset;
5973 while (oper_class_num < oper_class_count) {
5974 uint8_t chan_num = 0;
5975 proto_tree *oper_class = NULL((void*)0);
5976 proto_item *ci = NULL((void*)0);
5977 int oper_class_start_offset = offset;
5978
5979 oper_class = proto_tree_add_subtree_format(oper_class_list, tvb,
5980 offset, -1,
5981 ett_channel_scan_capa_class,
5982 &ci, "Operating Class %d",
5983 oper_class_num);
5984
5985
5986 proto_tree_add_item(oper_class,
5987 hf_ieee1905_channel_scan_capa_oper_class, tvb,
5988 offset, 1, ENC_NA0x00000000);
5989 offset += 1;
5990
5991 chan_num = tvb_get_uint8(tvb, offset);
5992 proto_tree_add_item(oper_class,
5993 hf_ieee1905_channel_scan_capa_oper_class_chan_cnt,
5994 tvb, offset, 1, ENC_NA0x00000000);
5995 offset += 1;
5996
5997 if (chan_num > 0) {
5998 /* Add them */
5999 proto_tree *channels = NULL((void*)0);
6000
6001 channels = proto_tree_add_subtree(oper_class, tvb, offset, chan_num,
6002 ett_channel_scan_capa_channels,
6003 NULL((void*)0), "Channel List");
6004
6005 while (chan_num > 0) {
6006 proto_tree_add_item(channels, hf_ieee1905_channel_scan_capa_channel,
6007 tvb, offset, 1, ENC_NA0x00000000);
6008 offset += 1;
6009 chan_num--;
6010 }
6011
6012 offset += chan_num;
6013 }
6014
6015 proto_item_set_len(ci, offset - oper_class_start_offset);
6016 oper_class_num++;
6017 }
6018
6019 proto_item_set_len(cli, offset - class_start_offset);
6020 proto_item_set_len(ri, offset - start_offset);
6021 radio_num++;
6022 }
6023
6024 proto_item_set_len(rli, offset - radio_list_start);
6025
6026 return offset;
6027}
6028
6029/*
6030 * Dissect a Channel Scan Request TLV
6031 */
6032static int * const channel_scan_request_flags_headers[] = {
6033 &hf_ieee1905_channel_scan_request_flags_fresh_scan,
6034 &hf_ieee1905_channel_scan_request_flags_reserved,
6035 NULL((void*)0)
6036};
6037
6038static const true_false_string perform_fresh_scan_tfs = {
6039 "Perform a fresh scan",
6040 "Return results from previous scan"
6041};
6042
6043static int
6044dissect_channel_scan_request(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
6045 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
6046{
6047 proto_tree *radio_list = NULL((void*)0);
6048 proto_item *rli = NULL((void*)0);
6049 uint8_t radio_count = 0, radio_num = 0;
6050 unsigned radio_list_start = 0;
6051
6052 proto_tree_add_bitmask(tree, tvb, offset,
6053 hf_ieee1905_channel_scan_request_flags,
6054 ett_channel_scan_request_flags,
6055 channel_scan_request_flags_headers, ENC_NA0x00000000);
6056 offset += 1;
6057
6058 radio_count = tvb_get_uint8(tvb, offset);
6059 proto_tree_add_item(tree, hf_ieee1905_channel_scan_request_radio_num,
6060 tvb, offset, 1, ENC_NA0x00000000);
6061 offset += 1;
6062
6063 radio_list = proto_tree_add_subtree(tree, tvb, offset, -1,
6064 ett_channel_scan_request_radio_list,
6065 &rli, "Radio List");
6066 radio_list_start = offset;
6067
6068 while (radio_num < radio_count) {
6069 proto_tree *radio_tree = NULL((void*)0);
6070 proto_item *ri = NULL((void*)0);
6071 proto_tree *oper_class_list = NULL((void*)0);
6072 proto_item *cli = NULL((void*)0);
6073 unsigned start_offset = offset;
6074 uint8_t oper_class_count = 0, oper_class_num = 0;
6075 unsigned class_start_offset = 0;
6076
6077 radio_tree = proto_tree_add_subtree_format(radio_list, tvb, offset,
6078 -1, ett_channel_scan_request_radio,
6079 &ri, "Radio %u", radio_num);
6080
6081 proto_tree_add_item(radio_tree, hf_ieee1905_channel_scan_request_radio_id,
6082 tvb, offset, 6, ENC_NA0x00000000);
6083 offset += 6;
6084
6085 oper_class_count = tvb_get_uint8(tvb, offset);
6086 proto_tree_add_item(radio_tree, hf_ieee1905_channel_scan_request_class_num,
6087 tvb, offset, 1, ENC_NA0x00000000);
6088 offset += 1;
6089
6090 if (oper_class_count > 0) {
6091 oper_class_list = proto_tree_add_subtree(radio_tree, tvb, offset, -1,
6092 ett_channel_scan_request_class_list,
6093 &cli, "Operating Class List");
6094
6095 class_start_offset = offset;
6096 while (oper_class_num < oper_class_count) {
6097 uint8_t chan_num = 0;
6098 proto_tree *oper_class = NULL((void*)0);
6099 proto_item *ci = NULL((void*)0);
6100 int oper_class_start_offset = offset;
6101
6102 oper_class = proto_tree_add_subtree_format(oper_class_list, tvb,
6103 offset, -1,
6104 ett_channel_scan_request_class,
6105 &ci, "Operating Class %d",
6106 oper_class_num);
6107
6108
6109 proto_tree_add_item(oper_class,
6110 hf_ieee1905_channel_scan_request_oper_class, tvb,
6111 offset, 1, ENC_NA0x00000000);
6112 offset += 1;
6113
6114 chan_num = tvb_get_uint8(tvb, offset);
6115 proto_tree_add_item(oper_class,
6116 hf_ieee1905_channel_scan_request_oper_class_chan_cnt,
6117 tvb, offset, 1, ENC_NA0x00000000);
6118 offset += 1;
6119
6120 if (chan_num > 0) {
6121 /* Add them */
6122 proto_tree *channels = NULL((void*)0);
6123
6124 channels = proto_tree_add_subtree(oper_class, tvb, offset, chan_num,
6125 ett_channel_scan_request_channels,
6126 NULL((void*)0), "Channel List");
6127
6128 while (chan_num > 0) {
6129 proto_tree_add_item(channels, hf_ieee1905_channel_scan_request_channel,
6130 tvb, offset, 1, ENC_NA0x00000000);
6131 offset += 1;
6132 chan_num--;
6133 }
6134 }
6135
6136 proto_item_set_len(ci, offset - oper_class_start_offset);
6137 oper_class_num++;
6138 }
6139 }
6140
6141 proto_item_set_len(cli, offset - class_start_offset);
6142 proto_item_set_len(ri, offset - start_offset);
6143 radio_num++;
6144 }
6145
6146 proto_item_set_len(rli, offset - radio_list_start);
6147
6148 return offset;
6149}
6150
6151/*
6152 * Dissect a Channel Scan Result TLV
6153 */
6154static const range_string channel_scan_result_status_rvals[] = {
6155 { 0, 0, "Success" },
6156 { 1, 1, "Scan not supported on this operating class/channel on this radio" },
6157 { 2, 2, "Request too soon after last scan" },
6158 { 3, 3, "Radio too busy to perform scan" },
6159 { 4, 4, "Scan not completed" },
6160 { 5, 5, "Scan aborted" },
6161 { 6, 6, "Fresh scan not supported. Radio only supports on-boot scans" },
6162 { 7, 255, "Reserved" },
6163 { 0, 0, NULL((void*)0) }
6164};
6165
6166static int * const channel_scan_result_neigh_flags[] = {
6167 &hf_ieee1905_channel_scan_result_load_element_present,
6168 &hf_ieee1905_channel_scan_result_neigh_reserved,
6169 NULL((void*)0)
6170};
6171
6172static int * const channel_scan_result_flags[] = {
6173 &hf_ieee1905_channel_scan_result_scan_type,
6174 &hf_ieee1905_channel_scan_result_scan_flags_reserved,
6175 NULL((void*)0)
6176};
6177
6178static const true_false_string channel_scan_result_type_tfs = {
6179 "Scan was an Active scan",
6180 "Scan was a Passive scan"
6181};
6182
6183static int
6184dissect_channel_scan_result(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
6185 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
6186{
6187 uint8_t status = 0;
6188
6189 proto_tree_add_item(tree, hf_ieee1905_channel_scan_result_radio_id, tvb,
6190 offset, 6, ENC_NA0x00000000);
6191 offset += 6;
6192
6193 proto_tree_add_item(tree, hf_ieee1905_channel_scan_result_oper_class, tvb,
6194 offset, 1, ENC_NA0x00000000);
6195 offset += 1;
6196
6197 proto_tree_add_item(tree, hf_ieee1905_channel_scan_result_channel, tvb,
6198 offset, 1, ENC_NA0x00000000);
6199 offset += 1;
6200
6201 status = tvb_get_uint8(tvb, offset);
6202 proto_tree_add_item(tree, hf_ieee1905_channel_scan_result_status, tvb,
6203 offset, 1, ENC_NA0x00000000);
6204 offset += 1;
6205
6206 if (status == 0) {
6207 uint8_t timestamp_len = tvb_get_uint8(tvb, offset);
6208 uint8_t ssid_len;
6209 uint16_t neighbor_num = 0, neighbor_cnt = 0;
6210 proto_tree *neigh_list = NULL((void*)0);
6211 proto_item *nli = NULL((void*)0);
6212 unsigned saved_offset = 0;
6213
6214 proto_tree_add_item(tree, hf_ieee1905_channel_scan_result_timestamp_len,
6215 tvb, offset, 1, ENC_NA0x00000000);
6216 offset += 1;
6217
6218 proto_tree_add_item(tree, hf_ieee1905_channel_scan_result_timestamp_string,
6219 tvb, offset, timestamp_len, ENC_ASCII0x00000000);
6220 offset += timestamp_len;
6221
6222 proto_tree_add_item(tree, hf_ieee1905_channel_scan_result_utilization,
6223 tvb, offset, 1, ENC_NA0x00000000);
6224 offset += 1;
6225
6226 proto_tree_add_item(tree, hf_ieee1905_channel_scan_result_noise, tvb,
6227 offset, 1, ENC_NA0x00000000);
6228 offset += 1;
6229
6230 neighbor_num = tvb_get_ntohs(tvb, offset);
6231 proto_tree_add_item(tree, hf_ieee1905_channel_scan_result_neigh_num,
6232 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
6233 offset += 2;
6234
6235 if (neighbor_num > 0) {
6236 neigh_list = proto_tree_add_subtree(tree, tvb, offset, -1,
6237 ett_channel_scan_result_neigh_list,
6238 &nli, "Neighbor List");
6239 saved_offset = offset;
6240
6241 while (neighbor_cnt < neighbor_num) {
6242 proto_tree *neigh_tree = NULL((void*)0);
6243 proto_item *nti = NULL((void*)0);
6244 unsigned neigh_saved_offset = offset;
6245 uint8_t channel_bw_len = 0;
6246 uint8_t flags = 0;
6247
6248 neigh_tree = proto_tree_add_subtree_format(neigh_list, tvb,
6249 offset, -1,
6250 ett_channel_scan_result_neigh,
6251 &nti, "Neighbor %u", neighbor_cnt);
6252
6253 proto_tree_add_item(neigh_tree,
6254 hf_ieee1905_channel_scan_result_bssid, tvb,
6255 offset, 6, ENC_NA0x00000000);
6256 offset += 6;
6257
6258 ssid_len = tvb_get_uint8(tvb, offset);
6259 proto_tree_add_item(neigh_tree,
6260 hf_ieee1905_channel_scan_result_ssid_len, tvb,
6261 offset, 1, ENC_NA0x00000000);
6262 offset += 1;
6263
6264 proto_tree_add_item(neigh_tree, hf_ieee1905_channel_scan_result_ssid,
6265 tvb, offset, ssid_len, ENC_ASCII0x00000000);
6266 offset += ssid_len;
6267
6268 proto_tree_add_item(neigh_tree,
6269 hf_ieee1905_channel_scan_result_sig_level,
6270 tvb, offset, 1, ENC_NA0x00000000);
6271 offset += 1;
6272
6273 channel_bw_len = tvb_get_uint8(tvb, offset);
6274 proto_tree_add_item(neigh_tree, hf_ieee1905_channel_scan_result_bw_len,
6275 tvb, offset, 1, ENC_NA0x00000000);
6276 offset += 1;
6277
6278 proto_tree_add_item(neigh_tree, hf_ieee1905_channel_scan_result_bw,
6279 tvb, offset, channel_bw_len, ENC_ASCII0x00000000);
6280 offset += channel_bw_len;
6281
6282 flags = tvb_get_uint8(tvb, offset);
6283 proto_tree_add_bitmask(neigh_tree, tvb, offset,
6284 hf_ieee1905_channel_scan_result_neigh_flags,
6285 ett_channel_scan_result_neigh_flags,
6286 channel_scan_result_neigh_flags, ENC_NA0x00000000);
6287 offset += 1;
6288
6289 if (flags & 0x80) {
6290 proto_tree_add_item(neigh_tree, hf_ieee1905_channel_scan_result_util,
6291 tvb, offset, 1, ENC_NA0x00000000);
6292 offset += 1;
6293
6294 proto_tree_add_item(neigh_tree, hf_ieee1905_channel_scan_result_sta_count,
6295 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
6296 offset += 2;
6297 }
6298
6299 proto_item_set_len(nti, offset - neigh_saved_offset);
6300 neighbor_cnt++;
6301 }
6302 }
6303
6304 proto_item_set_len(nli, offset - saved_offset);
6305
6306 proto_tree_add_item(tree, hf_ieee1905_channel_scan_result_scan_duration,
6307 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
6308 offset += 4;
6309
6310 proto_tree_add_bitmask(tree, tvb, offset,
6311 hf_ieee1905_channel_scan_result_flags,
6312 ett_channel_scan_result_flags,
6313 channel_scan_result_flags, ENC_NA0x00000000);
6314 offset += 1;
6315
6316 }
6317
6318 return offset;
6319}
6320
6321/*
6322 * Dissect a Timestamp TLV
6323 */
6324static int
6325dissect_timestamp(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
6326 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
6327{
6328 uint8_t timestamp_len = tvb_get_uint8(tvb, offset);
6329
6330 proto_tree_add_item(tree, hf_ieee1905_timestamp_length, tvb, offset, 1,
6331 ENC_NA0x00000000);
6332 offset += 1;
6333
6334 proto_tree_add_item(tree, hf_ieee1905_timestamp_string, tvb, offset,
6335 timestamp_len, ENC_ASCII0x00000000);
6336 offset += timestamp_len;
6337
6338 return offset;
6339}
6340
6341/*
6342 * Dissect a 1905 Layer Security Capability TLV
6343 */
6344static const range_string onboarding_protocol_supported_rvals[] = {
6345 { 0, 0, "1905 Device Provisioning Protocol" },
6346 { 1, 255, "Reserved" },
6347 { 0, 0, NULL((void*)0) }
6348};
6349
6350static const range_string message_integrity_algorithms_sup_rvals[] = {
6351 { 0, 0, "HMAC-SHAR256" },
6352 { 1, 255, "Reserved" },
6353 { 0, 0, NULL((void*)0) }
6354};
6355
6356static const range_string message_encryption_algorithms_sup_rvals[] = {
6357 { 0, 0, "AES-SIV" },
6358 { 1, 255, "Reserved" },
6359 { 0, 0, NULL((void*)0) }
6360};
6361
6362static int
6363dissect_1905_layer_security_capability(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
6364 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
6365{
6366 proto_tree_add_item(tree, hf_ieee1905_1905_layer_sec_capa_onboarding, tvb,
6367 offset, 1, ENC_NA0x00000000);
6368 offset += 1;
6369
6370 proto_tree_add_item(tree, hf_ieee1905_1905_layer_sec_capa_mic_sup, tvb,
6371 offset, 1, ENC_NA0x00000000);
6372 offset += 1;
6373
6374 proto_tree_add_item(tree, hf_ieee1905_1905_layer_sec_capa_enc_alg_sup, tvb,
6375 offset, 1, ENC_NA0x00000000);
6376 offset += 1;
6377
6378 return offset;
6379}
6380
6381/*
6382 * Dissect an AP Wi-Fi 6 Capabilities TLV
6383 */
6384static int * const ap_wf6_role_flags[] = {
6385 &hf_ieee1905_ap_wf6_capa_agents_role,
6386 &hf_ieee1905_ap_wf6_capa_he_160_support,
6387 &hf_ieee1905_ap_wf6_capa_he_80p80_support,
6388 &hf_ieee1905_ap_wf6_capa_reserved,
6389 NULL((void*)0)
6390};
6391
6392static int * const ap_wf6_supported_flags[] = {
6393 &hf_ieee1905_ap_wf6_su_beamformer,
6394 &hf_ieee1905_ap_wf6_su_beamformee,
6395 &hf_ieee1905_ap_wf6_mu_beamformer_status,
6396 &hf_ieee1905_ap_wf6_beamformee_sts_le_80mhz,
6397 &hf_ieee1905_ap_wf6_beamformee_sts_gt_80mhz,
6398 &hf_ieee1905_ap_wf6_ul_mu_mimo,
6399 &hf_ieee1905_ap_wf6_ul_ofdma,
6400 &hf_ieee1905_ap_wf6_dl_ofdma,
6401 NULL((void*)0)
6402};
6403
6404static int * const ap_wf6_mimo_flags[] = {
6405 &hf_ieee1905_ap_wf6_max_ap_dl_mu_mimo_tx,
6406 &hf_ieee1905_ap_wf6_max_ap_ul_mu_mimi_rx,
6407 NULL((void*)0)
6408};
6409
6410static int * const ap_wf6_gen_flags[] = {
6411 &hf_ieee1905_ap_wf6_gen_rts,
6412 &hf_ieee1905_ap_wf6_gen_mu_rts,
6413 &hf_ieee1905_ap_wf6_gen_multi_bssid,
6414 &hf_ieee1905_ap_wf6_gen_mu_edca,
6415 &hf_ieee1905_ap_wf6_gen_twt_requester,
6416 &hf_ieee1905_ap_wf6_gen_twt_responder,
6417 &hf_ieee1905_ap_wf6_gen_reserved,
6418 NULL((void*)0)
6419};
6420
6421static const value_string ap_wf6_agent_role_vals[] = {
6422 { 0, "Wi-Fi 6 support info for the AP role" },
6423 { 1, "Wi-Fi 6 support info for the non-AP STA role" },
6424 { 0, NULL((void*)0) }
6425};
6426
6427static int
6428dissect_ap_wf6_capabilities(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
6429 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
6430{
6431 uint8_t role_count, role_id = 0;
6432 proto_tree *role_list = NULL((void*)0);
6433 proto_item *rli = NULL((void*)0);
6434 unsigned start_list_offset;
6435
6436 proto_tree_add_item(tree, hf_ieee1905_ap_wf6_capa_radio_id, tvb,
6437 offset, 6, ENC_NA0x00000000);
6438 offset += 6;
6439
6440 role_count = tvb_get_uint8(tvb, offset);
6441
6442 proto_tree_add_item(tree, hf_ieee1905_ap_wf6_role_count, tvb, offset, 1,
6443 ENC_NA0x00000000);
6444 offset += 1;
6445
6446 start_list_offset = offset;
6447 role_list = proto_tree_add_subtree(tree, tvb, offset, -1,
6448 ett_ap_wf6_role_list,
6449 &rli, "Role List");
6450
6451 while (role_id < role_count) {
6452 proto_tree *role_tree;
6453 proto_item *rti = NULL((void*)0);
6454 unsigned start_tree_offset = offset;
6455 proto_tree *mcs_set = NULL((void*)0);
6456
6457 role_tree = proto_tree_add_subtree_format(role_list, tvb, offset, -1,
6458 ett_ap_wf6_role_tree,
6459 &rti, "Role %u", role_id);
6460
6461 uint8_t role_flags = tvb_get_uint8(tvb, offset);
6462
6463 proto_tree_add_bitmask(role_tree, tvb, offset,
6464 hf_ieee1905_ap_wf6_agent_role_flags,
6465 ett_ap_wf6_agent_role_flags, ap_wf6_role_flags,
6466 ENC_NA0x00000000);
6467 offset += 1;
6468
6469 mcs_set = proto_tree_add_subtree(role_tree, tvb, offset, 4,
6470 ett_ap_he_mcs_set, NULL((void*)0),
6471 "Supported HE-MCS and NSS Set <= 80 MHz");
6472
6473 proto_tree_add_bitmask_with_flags(mcs_set, tvb, offset,
6474 hf_ieee1905_ap_he_cap_tx_mcs_le_80_mhz,
6475 ett_ieee1905_ap_he_rx_mcs_set,
6476 tx_he_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
6477 offset += 2;
6478
6479 proto_tree_add_bitmask_with_flags(mcs_set, tvb, offset,
6480 hf_ieee1905_ap_he_cap_rx_mcs_le_80_mhz,
6481 ett_ieee1905_ap_he_rx_mcs_set,
6482 rx_he_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
6483 offset += 2;
6484
6485
6486 if (role_flags & 0x20) { /* HE MCS & NSS for 160MHz */
6487 mcs_set = proto_tree_add_subtree(role_tree, tvb, offset, 4,
6488 ett_ap_he_mcs_set, NULL((void*)0),
6489 "Supported HE-MCS and NSS Set 160 MHz");
6490
6491 proto_tree_add_bitmask_with_flags(mcs_set, tvb, offset,
6492 hf_ieee1905_ap_he_cap_tx_mcs_160_mhz,
6493 ett_ieee1905_ap_he_rx_mcs_set,
6494 tx_he_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
6495 offset += 2;
6496
6497 proto_tree_add_bitmask_with_flags(mcs_set, tvb, offset,
6498 hf_ieee1905_ap_he_cap_rx_mcs_160_mhz,
6499 ett_ieee1905_ap_he_rx_mcs_set,
6500 rx_he_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
6501 offset += 2;
6502 }
6503
6504 if (role_flags & 0x10) { /* HE MCS & NSS for 80+80MHz */
6505 mcs_set = proto_tree_add_subtree(role_tree, tvb, offset, 4,
6506 ett_ap_he_mcs_set, NULL((void*)0),
6507 "Supported HE-MCS and NSS Set 80+80 MHz");
6508
6509 proto_tree_add_bitmask_with_flags(mcs_set, tvb, offset,
6510 hf_ieee1905_ap_he_cap_tx_mcs_80p80_mhz,
6511 ett_ieee1905_ap_he_rx_mcs_set,
6512 tx_he_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
6513 offset += 2;
6514
6515 proto_tree_add_bitmask_with_flags(mcs_set, tvb, offset,
6516 hf_ieee1905_ap_he_cap_rx_mcs_80p80_mhz,
6517 ett_ieee1905_ap_he_rx_mcs_set,
6518 rx_he_mcs_map_headers, ENC_BIG_ENDIAN0x00000000, BMT_NO_APPEND0x01);
6519 offset += 2;
6520 }
6521
6522 proto_tree_add_bitmask(role_tree, tvb, offset,
6523 hf_ieee1905_ap_wf6_he_supported_flags,
6524 ett_ap_wf6_supported_flags,
6525 ap_wf6_supported_flags, ENC_NA0x00000000);
6526 offset += 1;
6527
6528 proto_tree_add_bitmask(role_tree, tvb, offset,
6529 hf_ieee1905_ap_wf6_mimo_max_flags,
6530 ett_ap_wf6_mimo_max_flags, ap_wf6_mimo_flags,
6531 ENC_NA0x00000000);
6532 offset += 1;
6533
6534 proto_tree_add_item(role_tree, hf_ieee1905_ap_wf6_dl_ofdma_max_tx, tvb,
6535 offset, 1, ENC_NA0x00000000);
6536 offset += 1;
6537
6538 proto_tree_add_item(role_tree, hf_ieee1905_ap_wf6_ul_ofdma_max_rx, tvb,
6539 offset, 1, ENC_NA0x00000000);
6540 offset += 1;
6541
6542 proto_tree_add_bitmask(role_tree, tvb, offset,
6543 hf_ieee1905_ap_wf6_gen_flags,
6544 ett_ap_wf6_gen_flags, ap_wf6_gen_flags,
6545 ENC_NA0x00000000);
6546 offset += 1;
6547
6548 proto_item_set_len(rti, offset - start_tree_offset);
6549 role_id++;
6550 }
6551
6552 proto_item_set_len(rli, offset - start_list_offset);
6553 return offset;
6554}
6555
6556/*
6557 * Dissect an Agent List TLV
6558 */
6559static const range_string agent_list_multiap_profile_rvals[] = {
6560 { 0, 0, "Reserved" },
6561 { 1, 1, "Multi-AP Profile-1" },
6562 { 2, 2, "Multi-AP Profile-2" },
6563 { 3, 3, "Multi-AP Profile-3" },
6564 { 4, 255, "Reserved" },
6565 { 0, 0, NULL((void*)0) }
6566};
6567
6568static const range_string agent_list_security_rvals[] = {
6569 { 0, 0, "1905 Security Not Enabled" },
6570 { 1, 1, "1905 Security Enabled" },
6571 { 2, 255, "Reserved" },
6572 { 0, 0, NULL((void*)0) }
6573};
6574
6575static int
6576dissect_agent_list(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
6577 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
6578{
6579 proto_tree *agent_list = NULL((void*)0);
6580 proto_item *agent_list_item = NULL((void*)0);
6581 uint8_t count;
6582 unsigned start_list_offset;
6583
6584 proto_tree_add_item_ret_uint8(tree, hf_ieee1905_agent_list_agent_num,
6585 tvb, offset, 1, ENC_NA0x00000000, &count);
6586 offset++;
6587
6588 agent_list = proto_tree_add_subtree(tree, tvb, offset, -1,
6589 ett_agent_list_agent_list,
6590 &agent_list_item, "Agent List");
6591
6592 start_list_offset = offset;
6593
6594 for (uint8_t i = 0; i < count; i++) {
6595 proto_tree *agent_tree = NULL((void*)0);
6596 proto_item *agent_tree_item = NULL((void*)0);
6597
6598 agent_tree = proto_tree_add_subtree_format(agent_list, tvb, offset, -1,
6599 ett_agent_list_agent,
6600 &agent_tree_item, "Agent %u", i);
6601
6602 proto_tree_add_item(agent_tree, hf_ieee1905_agent_list_al_mac_addr, tvb,
6603 offset, 6, ENC_NA0x00000000);
6604 offset += 6;
6605
6606 proto_tree_add_item(agent_tree, hf_ieee1905_agent_list_multiap_profile, tvb,
6607 offset, 1, ENC_NA0x00000000);
6608 offset++;
6609
6610 proto_tree_add_item(agent_tree, hf_ieee1905_agent_list_security, tvb,
6611 offset, 1, ENC_NA0x00000000);
6612 offset++;
6613 }
6614
6615 proto_item_set_len(agent_list_item, offset - start_list_offset);
6616
6617 return offset;
6618}
6619
6620/*
6621 * Dissect a MIC TLV
6622 */
6623static int * const gtk_key_id_headers[] = {
6624 &hf_ieee1905_1905_gtk_key_id,
6625 &hf_ieee1905_mic_version,
6626 &hf_ieee1905_mic_reserved,
6627 NULL((void*)0)
6628};
6629
6630static const value_string mic_version_vals[] = {
6631 { 0, "Version 1" },
6632 { 1, "Reserved" },
6633 { 2, "Reserved" },
6634 { 3, "Reserved" },
6635 { 0, NULL((void*)0) }
6636};
6637
6638static int
6639dissect_mic(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
6640 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
6641{
6642 unsigned offset_start = offset;
6643 uint16_t mic_len = 0;
6644
6645 proto_tree_add_bitmask(tree, tvb, offset,
6646 hf_ieee1905_mic_group_temporal_key_id,
6647 ett_mic_group_temporal_key,
6648 gtk_key_id_headers, ENC_NA0x00000000);
6649 offset += 1;
6650
6651 proto_tree_add_item(tree, hf_ieee1905_mic_integrity_transmission_counter,
6652 tvb, offset, 6, ENC_BIG_ENDIAN0x00000000);
6653 offset += 6;
6654
6655 proto_tree_add_item(tree, hf_ieee1905_mic_source_la_mac_id, tvb, offset, 6,
6656 ENC_NA0x00000000);
6657 offset += 6;
6658
6659 proto_tree_add_item_ret_uint16(tree, hf_ieee1905_mic_length, tvb, offset, 2, ENC_BIG_ENDIAN0x00000000, &mic_len);
6660 offset += 2;
6661
6662 proto_tree_add_item(tree, hf_ieee1905_mic_bytes, tvb, offset, mic_len,
6663 ENC_NA0x00000000);
6664 offset += mic_len;
6665
6666 check_mic_tlv(tvb, pinfo, tree, offset_start);
6667
6668 return offset;
6669}
6670
6671/*
6672 * Dissect an Encrypted TLV
6673 */
6674static int
6675// NOLINTNEXTLINE(misc-no-recursion)
6676dissect_encrypted(tvbuff_t *tvb, packet_info *pinfo,
6677 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
6678{
6679 unsigned offset_start = offset;
6680 uint16_t enc_len = 0;
6681
6682 proto_tree_add_item(tree, hf_ieee1905_encrypted_enc_transmission_count,
6683 tvb, offset, 6, ENC_BIG_ENDIAN0x00000000);
6684 offset += 6;
6685
6686 proto_tree_add_item(tree, hf_ieee1905_encrypted_source_la_mac_id, tvb,
6687 offset, 6, ENC_NA0x00000000);
6688 offset += 6;
6689
6690 proto_tree_add_item(tree, hf_ieee1905_encrypted_dest_al_mac_addr, tvb,
6691 offset, 6, ENC_NA0x00000000);
6692 offset += 6;
6693
6694 proto_tree_add_item_ret_uint16(tree, hf_ieee1905_encrypted_enc_output_field_len, tvb,
6695 offset, 2, ENC_BIG_ENDIAN0x00000000, &enc_len);
6696 offset += 2;
6697
6698 proto_tree_add_item(tree, hf_ieee1905_encrypted_enc_output_field, tvb,
6699 offset, enc_len, ENC_NA0x00000000);
6700 offset += enc_len;
6701
6702 decrypt_encrypted_tlv(tvb, pinfo, tree, offset_start);
6703
6704 return offset;
6705}
6706
6707/*
6708 * Dissect a CAC Request TLV
6709 */
6710static int * const cac_request_method_flags[] = {
6711 &hf_ieee1905_cac_request_method,
6712 &hf_ieee1905_cac_request_completion_action,
6713 &hf_ieee1905_cac_request_completion_unsuccess,
6714 &hf_ieee1905_cac_request_reserved,
6715 NULL((void*)0)
6716};
6717
6718static const value_string cac_request_method_vals[] = {
6719 { 0, "Continuous CAC" },
6720 { 1, "Continuous with dedicated radio" },
6721 { 2, "MIMO dimension reduced" },
6722 { 3, "Time sliced CAC" },
6723 { 4, "Reserved" },
6724 { 5, "Reserved" },
6725 { 6, "Reserved" },
6726 { 7, "Reserved" },
6727 { 0, NULL((void*)0) }
6728};
6729
6730static const range_string cac_completion_action_vals[] = {
6731 { 0, 0, "Remain on channel and continue to monitor for radar" },
6732 { 1, 1, "Return to previous state" },
6733 { 2, 255, "Reserved" },
6734 { 0, 0, NULL((void*)0) }
6735};
6736
6737static int
6738dissect_cac_request(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
6739 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
6740{
6741 unsigned radio_count = tvb_get_uint8(tvb, offset);
6742
6743 proto_tree_add_item(tree, hf_ieee1905_cac_request_radio_count, tvb,
6744 offset, 1, ENC_NA0x00000000);
6745 offset += 1;
6746
6747 if (radio_count > 0) {
6748 proto_tree *radio_list = NULL((void*)0);
6749 uint8_t radio_num = 0;
6750
6751 radio_list = proto_tree_add_subtree(tree, tvb, offset, radio_count * 9,
6752 ett_cac_request_radio_list,
6753 NULL((void*)0), "Radio List");
6754
6755 while (radio_num < radio_count) {
6756 proto_tree *radio = NULL((void*)0);
6757
6758 radio = proto_tree_add_subtree_format(radio_list, tvb, offset, 9,
6759 ett_cac_request_radio, NULL((void*)0),
6760 "Radio %u", radio_num);
6761
6762 proto_tree_add_item(radio, hf_ieee1905_cac_request_radio_id, tvb,
6763 offset, 6, ENC_NA0x00000000);
6764 offset += 6;
6765
6766 proto_tree_add_item(radio, hf_ieee1905_cac_request_op_class, tvb,
6767 offset, 1, ENC_NA0x00000000);
6768 offset += 1;
6769
6770 proto_tree_add_item(radio, hf_ieee1905_cac_request_channel, tvb,
6771 offset, 1, ENC_NA0x00000000);
6772 offset += 1;
6773
6774 proto_tree_add_bitmask(radio, tvb, offset,
6775 hf_ieee1905_cac_request_flags,
6776 ett_cac_request_flags,
6777 cac_request_method_flags, ENC_NA0x00000000);
6778 offset += 1;
6779
6780 radio_num += 1;
6781 }
6782
6783
6784 }
6785
6786 return offset;
6787}
6788
6789/*
6790 * Dissect a CAC Termination TLV
6791 */
6792static int
6793dissect_cac_termination(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
6794 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
6795{
6796 uint8_t radio_count = tvb_get_uint8(tvb, offset);
6797
6798 proto_tree_add_item(tree, hf_ieee1905_cac_termination_radio_count, tvb,
6799 offset, 1, ENC_NA0x00000000);
6800 offset += 1;
6801
6802 if (radio_count > 0) {
6803 proto_tree *radio_list = NULL((void*)0);
6804 uint8_t radio_num = 0;
6805
6806 radio_list = proto_tree_add_subtree(tree, tvb, offset, radio_count * 9,
6807 ett_cac_terminate_radio_list,
6808 NULL((void*)0), "Radio list");
6809
6810 while (radio_num < radio_count) {
6811 proto_tree *radio = NULL((void*)0);
6812
6813 radio = proto_tree_add_subtree_format(radio_list, tvb, offset, 9,
6814 ett_cac_terminate_radio, NULL((void*)0),
6815 "Radio %u", radio_num);
6816
6817 proto_tree_add_item(radio, hf_ieee1905_cac_terminate_radio_id, tvb,
6818 offset, 6, ENC_NA0x00000000);
6819 offset += 6;
6820
6821 proto_tree_add_item(radio, hf_ieee1905_cac_terminate_op_class, tvb,
6822 offset, 1, ENC_NA0x00000000);
6823 offset += 1;
6824
6825 proto_tree_add_item(radio, hf_ieee1905_cac_terminate_channel, tvb,
6826 offset, 1, ENC_NA0x00000000);
6827 offset += 1;
6828
6829 radio_num += 1;
6830 }
6831 }
6832
6833 return offset;
6834}
6835
6836/*
6837 * Dissect a CAC Completion Report TLV
6838 */
6839static const range_string cac_completion_status_rvals[] = {
6840 { 0, 0, "Successful" },
6841 { 1, 1, "Radar detected" },
6842 { 2, 2, "CAC not supported as requested" },
6843 { 3, 3, "Radio too busy to perform CAC" },
6844 { 4, 4, "Request was considered non conformant to regulations in country of operation" },
6845 { 5, 5, "Other error" },
6846 { 6, 255, "Reserved" },
6847 { 0, 0, NULL((void*)0) },
6848};
6849
6850static int
6851dissect_cac_completion_report(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
6852 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
6853{
6854 uint8_t radio_count = tvb_get_uint8(tvb, offset);
6855
6856 proto_tree_add_item(tree, hf_ieee1905_cac_completion_rep_radio_count, tvb,
6857 offset, 1, ENC_NA0x00000000);
6858 offset += 1;
6859
6860 if (radio_count > 0) {
6861 proto_tree *radio_list = NULL((void*)0);
6862 uint8_t radio_num = 0;
6863 uint8_t radar_count;
6864
6865 radio_list = proto_tree_add_subtree(tree, tvb, offset, radio_count * 9,
6866 ett_cac_completion_radio_list,
6867 NULL((void*)0), "Radio list");
6868
6869 while (radio_num < radio_count) {
6870 proto_tree *radio = NULL((void*)0);
6871
6872 radio = proto_tree_add_subtree_format(radio_list, tvb, offset, 9,
6873 ett_cac_completion_radio, NULL((void*)0),
6874 "Radio %u", radio_num);
6875
6876 proto_tree_add_item(radio, hf_ieee1905_cac_completion_radio_id, tvb,
6877 offset, 6, ENC_NA0x00000000);
6878 offset += 6;
6879
6880 proto_tree_add_item(radio, hf_ieee1905_cac_completion_op_class, tvb,
6881 offset, 1, ENC_NA0x00000000);
6882 offset += 1;
6883
6884 proto_tree_add_item(radio, hf_ieee1905_cac_completion_channel, tvb,
6885 offset, 1, ENC_NA0x00000000);
6886 offset += 1;
6887
6888 proto_tree_add_item(radio, hf_ieee1905_cac_completion_status, tvb,
6889 offset, 1, ENC_NA0x00000000);
6890 offset += 1;
6891
6892 radar_count = tvb_get_uint8(tvb, offset);
6893
6894 proto_tree_add_item(radio, hf_ieee1905_cac_completion_radar_count,
6895 tvb, offset, 1, ENC_NA0x00000000);
6896 offset += 1;
6897
6898 if (radar_count > 0) {
6899 proto_tree *radar_det_list = NULL((void*)0);
6900 uint8_t radar_num = 0;
6901
6902 radar_det_list = proto_tree_add_subtree(radio, tvb, offset,
6903 radar_count * 2,
6904 ett_cac_completion_radar_list,
6905 NULL((void*)0), "Radar detection list");
6906 while (radar_num < radar_count) {
6907 proto_tree *radar = NULL((void*)0);
6908
6909 radar = proto_tree_add_subtree_format(radar_det_list, tvb,
6910 offset, 2,
6911 ett_cac_completion_radar, NULL((void*)0),
6912 "Class/Channel pair %u",
6913 radar_num);
6914
6915 proto_tree_add_item(radar,
6916 hf_ieee1905_cac_comp_radar_op_class,
6917 tvb, offset, 1, ENC_NA0x00000000);
6918 offset += 1;
6919
6920 proto_tree_add_item(radar,
6921 hf_ieee1905_cac_comp_radar_channel,
6922 tvb, offset, 1, ENC_NA0x00000000);
6923 offset += 1;
6924
6925 radar_num += 1;
6926 }
6927 }
6928
6929 radio_num += 1;
6930 }
6931 }
6932
6933 return offset;
6934}
6935
6936/*
6937 * Dissect a CAC Status Report TLV
6938 */
6939static int
6940dissect_cac_status_report(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
6941 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
6942{
6943 uint8_t channel_count = tvb_get_uint8(tvb, offset);
6944 uint8_t non_occupancy_count = 0;
6945 uint8_t active_cac_count = 0;
6946
6947 proto_tree_add_item(tree, hf_ieee1905_cac_status_rpt_active_chan, tvb,
6948 offset, 1, ENC_NA0x00000000);
6949 offset += 1;
6950
6951 if (channel_count > 0) {
6952 uint8_t channel_num = 0;
6953 proto_tree *active_chan_list = NULL((void*)0);
6954
6955 active_chan_list = proto_tree_add_subtree(tree, tvb, offset,
6956 4 * channel_count,
6957 ett_cac_status_rpt_avail_list,
6958 NULL((void*)0), "Available Channels List");
6959 while (channel_num < channel_count) {
6960 proto_tree *active_chan_tree = NULL((void*)0);
6961
6962 active_chan_tree = proto_tree_add_subtree_format(active_chan_list,
6963 tvb, offset, 4,
6964 ett_cac_status_rpt_avail_chan,
6965 NULL((void*)0), "Available Channel %u",
6966 channel_num);
6967
6968 proto_tree_add_item(active_chan_tree,
6969 hf_ieee1905_cac_status_rpt_avail_op_class,
6970 tvb, offset, 1, ENC_NA0x00000000);
6971 offset += 1;
6972
6973 proto_tree_add_item(active_chan_tree,
6974 hf_ieee1905_cac_status_rpt_avail_channel,
6975 tvb, offset, 1, ENC_NA0x00000000);
6976 offset += 1;
6977
6978 proto_tree_add_item(active_chan_tree,
6979 hf_ieee1905_cac_status_rpt_avail_minutes,
6980 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
6981 offset += 2;
6982
6983 channel_num += 1;
6984 }
6985 }
6986
6987 non_occupancy_count = tvb_get_uint8(tvb, offset);
6988 proto_tree_add_item(tree, hf_ieee1905_cac_status_rpt_non_occ_cnt, tvb,
6989 offset, 1, ENC_NA0x00000000);
6990 offset += 1;
6991
6992 if (non_occupancy_count > 0) {
6993 uint8_t non_occupancy_num = 0;
6994 proto_tree *non_occupancy_list = NULL((void*)0);
6995
6996 non_occupancy_list = proto_tree_add_subtree(tree, tvb, offset,
6997 4 * non_occupancy_count,
6998 ett_cac_status_rpt_non_occupy_list,
6999 NULL((void*)0), "Non-occupancy List");
7000 while (non_occupancy_num < non_occupancy_count) {
7001 proto_tree *non_occupancy_tree = NULL((void*)0);
7002
7003 non_occupancy_tree = proto_tree_add_subtree_format(
7004 non_occupancy_list, tvb, offset, 4,
7005 ett_cac_status_rpt_unocc_chan,
7006 NULL((void*)0), "Unoccupied Channel %u",
7007 non_occupancy_num);
7008
7009 proto_tree_add_item(non_occupancy_tree,
7010 hf_ieee1905_cac_status_rpt_non_occ_op_class,
7011 tvb, offset, 1, ENC_NA0x00000000);
7012 offset += 1;
7013
7014 proto_tree_add_item(non_occupancy_tree,
7015 hf_ieee1905_cac_status_rpt_non_occ_channel,
7016 tvb, offset, 1, ENC_NA0x00000000);
7017 offset += 1;
7018
7019 proto_tree_add_item(non_occupancy_tree,
7020 hf_ieee1905_cac_status_rpt_non_occ_seconds,
7021 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
7022 offset += 2;
7023
7024 non_occupancy_num += 1;
7025 }
7026 }
7027
7028 active_cac_count = tvb_get_uint8(tvb, offset);
7029 proto_tree_add_item(tree, hf_ieee1905_cac_status_rpt_active_cac_cnt, tvb,
7030 offset, 1, ENC_NA0x00000000);
7031 offset += 1;
7032
7033 if (active_cac_count > 0) {
7034 uint8_t active_cac_num = 0;
7035 proto_tree *active_cac_list = NULL((void*)0);
7036
7037 active_cac_list = proto_tree_add_subtree(tree, tvb, offset,
7038 5 * active_cac_count,
7039 ett_cac_status_rpt_active_cac_list,
7040 NULL((void*)0), "Active CAC List");
7041 while (active_cac_num < active_cac_count) {
7042 proto_tree *active_cac_tree = NULL((void*)0);
7043
7044 active_cac_tree = proto_tree_add_subtree_format(active_cac_list,
7045 tvb, offset, 5,
7046 ett_cac_status_rpt_active_cac_tree,
7047 NULL((void*)0), "Active CAC %u",
7048 active_cac_num);
7049
7050 proto_tree_add_item(active_cac_tree,
7051 hf_ieee1905_cac_status_rpt_active_cac_op_class,
7052 tvb, offset, 1, ENC_NA0x00000000);
7053 offset += 1;
7054
7055 proto_tree_add_item(active_cac_tree,
7056 hf_ieee1905_cac_status_rpt_active_cac_channel,
7057 tvb, offset, 1, ENC_NA0x00000000);
7058 offset += 1;
7059
7060 proto_tree_add_item(active_cac_tree,
7061 hf_ieee1905_cac_status_rpt_active_cac_seconds,
7062 tvb, offset, 3, ENC_BIG_ENDIAN0x00000000);
7063 offset += 3;
7064
7065 active_cac_num += 1;
7066 }
7067 }
7068
7069 return offset;
7070}
7071
7072/*
7073 * Dissect a CAC Capabilities TLV
7074 */
7075static const range_string cac_mode_supported_rvals[] = {
7076 { 0, 0, "Continuous CAC" },
7077 { 1, 1, "Continuous with dedicated radio" },
7078 { 2, 2, "MIMO dimension reduced" },
7079 { 3, 3, "Time sliced CAC" },
7080 { 4, 255, "Reserved" },
7081 { 0, 0, NULL((void*)0) }
7082};
7083
7084static int
7085dissect_cac_capabilities(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7086 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7087{
7088 uint8_t cac_radios = 0;
7089
7090 proto_tree_add_item(tree, hf_ieee1905_cac_capa_country_code, tvb, offset,
7091 2, ENC_ASCII0x00000000);
7092 offset += 2;
7093
7094 cac_radios = tvb_get_uint8(tvb, offset);
7095 proto_tree_add_item(tree, hf_ieee1905_cac_capa_radio_cnt, tvb, offset,
7096 1, ENC_NA0x00000000);
7097 offset += 1;
7098
7099 if (cac_radios > 0) {
7100 uint8_t radio_num = 0;
7101 proto_tree *radio_list = NULL((void*)0);
7102 proto_item *rli = NULL((void*)0);
7103 unsigned start_offset = offset;
7104
7105 radio_list = proto_tree_add_subtree(tree, tvb, offset, -1,
7106 ett_cac_capabilities_radio_list,
7107 &rli, "Radio List");
7108 while (radio_num < cac_radios) {
7109 proto_tree *radio_tree = NULL((void*)0);
7110 uint8_t cac_types = 0;
7111
7112 radio_tree = proto_tree_add_subtree_format(radio_list,
7113 tvb, offset, 5,
7114 ett_cac_capabilities_radio_tree,
7115 NULL((void*)0), "Radio %u",
7116 radio_num);
7117
7118 proto_tree_add_item(radio_tree,
7119 hf_ieee1905_cac_capabilities_radio_id, tvb,
7120 offset, 6, ENC_NA0x00000000);
7121 offset += 6;
7122
7123 cac_types = tvb_get_uint8(tvb, offset);
7124 proto_tree_add_item(radio_tree,
7125 hf_ieee1905_cac_capabilities_types_num,
7126 tvb, offset, 1, ENC_NA0x00000000);
7127 offset += 1;
7128
7129 if (cac_types > 0) {
7130 uint8_t cac_num = 0;
7131 proto_tree *cac_type_list = NULL((void*)0);
7132 proto_item *rci = NULL((void*)0);
7133 unsigned cac_type_start = offset;
7134 uint8_t cac_classes;
7135
7136 cac_type_list = proto_tree_add_subtree(radio_tree, tvb, offset,
7137 -1, ett_cac_capabilities_type_list,
7138 &rci, "CAC Type List");
7139 while (cac_num < cac_types) {
7140 proto_tree *cac_type_tree = NULL((void*)0);
7141 proto_item *cti = NULL((void*)0);
7142
7143 cac_type_tree = proto_tree_add_subtree_format(cac_type_list,
7144 tvb, offset,
7145 -1, ett_cac_capabilities_type_tree,
7146 &cti, "CAC Type %u", cac_num);
7147
7148 proto_tree_add_item(cac_type_tree,
7149 hf_ieee1905_cac_capabilities_cac_mode, tvb,
7150 offset, 1, ENC_NA0x00000000);
7151 offset += 1;
7152
7153 proto_tree_add_item(cac_type_tree,
7154 hf_ieee1905_cac_capabilities_cac_seconds, tvb,
7155 offset, 3, ENC_BIG_ENDIAN0x00000000);
7156 offset += 3;
7157
7158 cac_classes = tvb_get_uint8(tvb, offset);
7159 proto_tree_add_item(cac_type_tree,
7160 hf_ieee1905_cac_capabilities_op_class_num, tvb,
7161 offset, 1, ENC_NA0x00000000);
7162 offset += 1;
7163
7164 if (cac_classes > 0) {
7165 proto_tree *cac_class_list = NULL((void*)0);
7166 uint8_t cac_class_num = 0;
7167 proto_item *cli = NULL((void*)0);
7168
7169 cac_class_list = proto_tree_add_subtree(cac_type_tree,
7170 tvb, offset, -1,
7171 ett_cac_capabilities_class_list, &cli,
7172 "Class List");
7173
7174 while (cac_class_num < cac_classes) {
7175 uint8_t channel_cnt = 0;
7176 proto_tree *cac_class_tree = NULL((void*)0);
7177 unsigned cac_class_start = offset;
7178
7179 cac_class_tree = proto_tree_add_subtree_format(
7180 cac_class_list, tvb, offset, -1,
7181 ett_cac_capabilities_class_tree, &cti,
7182 "Operating Class %u", cac_class_num);
7183
7184 proto_tree_add_item(cac_class_tree,
7185 hf_ieee1905_cac_capabilities_op_class, tvb,
7186 offset, 1, ENC_NA0x00000000);
7187 offset += 1;
7188
7189 channel_cnt = tvb_get_uint8(tvb, offset);
7190 proto_tree_add_item(cac_class_tree,
7191 hf_ieee1905_cac_capabilities_channel_cnt,
7192 tvb, offset, 1, ENC_NA0x00000000);
7193 offset += 1;
7194
7195 if (channel_cnt > 0) {
7196 proto_tree *channel_list = NULL((void*)0);
7197
7198 channel_list = proto_tree_add_subtree(
7199 cac_class_tree, tvb, offset,
7200 channel_cnt,
7201 ett_cac_capabilities_channel_list,
7202 NULL((void*)0), "Channel List");
7203
7204 while (channel_cnt > 0) {
7205 proto_tree_add_item(channel_list,
7206 hf_ieee1905_cac_capabillity_channel,
7207 tvb, offset, 1, ENC_NA0x00000000);
7208 channel_cnt -= 1;
7209 offset += 1;
7210 }
7211 }
7212
7213 proto_item_set_len(cti, offset - cac_class_start);
7214 cac_class_num += 1;
7215 }
7216 }
7217 cac_num += 1;
7218 }
7219 proto_item_set_len(rci, offset - cac_type_start);
7220 }
7221
7222 radio_num += 1;
7223 }
7224 proto_item_set_len(rli, offset - start_offset);
7225 }
7226
7227 return offset;
7228}
7229
7230/*
7231 * Dissect a Multi-AP Version TLV
7232 */
7233
7234static const range_string multi_ap_version_rvals[] = {
7235 { 0, 0, "Reserved" },
7236 { 1, 1, "Multi-AP Profile 1" },
7237 { 2, 2, "Multi-AP Profile 2" },
7238 { 3, 3, "Multi-AP Profile 3" },
7239 { 4, 255, "Reserved" },
7240 { 0, 0, NULL((void*)0) }
7241};
7242
7243static int
7244dissect_multi_ap_version(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7245 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7246{
7247 proto_tree_add_item(tree, hf_ieee1905_multi_ap_version, tvb, offset, 1,
7248 ENC_NA0x00000000);
7249 offset += 1;
7250
7251 return offset;
7252}
7253
7254/*
7255 * Dissect an R2 AP Capabilities TLV
7256 */
7257static const value_string byte_counter_units_vals[] = {
7258 { 0, "bytes" },
7259 { 1, "kibibytes (KiB)" },
7260 { 2, "mebibytes (MiB)" },
7261 { 3, "reserved" },
7262 { 0, NULL((void*)0) }
7263};
7264
7265static int* const r2_ap_capa_flags[] = {
7266 &hf_ieee1905_byte_counter_units,
7267 &hf_ieee1905_ctag_service_prio_flag,
7268 &hf_ieee1905_dpp_onboarding_flag,
7269 &hf_ieee1905_traffic_separation_flag,
7270 &hf_ieee1905_r2_ap_capa_flags_reserved,
7271 NULL((void*)0)
7272};
7273
7274static int
7275dissect_r2_ap_capability(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7276 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7277{
7278 proto_tree_add_item(tree, hf_ieee1905_max_total_serv_prio_rules, tvb,
7279 offset, 1, ENC_NA0x00000000);
7280 offset += 1;
7281
7282 proto_tree_add_item(tree, hf_ieee1905_r2_ap_capa_reserved, tvb, offset, 1,
7283 ENC_NA0x00000000);
7284 offset += 1;
7285
7286 proto_tree_add_bitmask(tree, tvb, offset,
7287 hf_ieee1905_r2_ap_capa_flags,
7288 ett_r2_ap_capa_flags,
7289 r2_ap_capa_flags, ENC_NA0x00000000);
7290 offset += 1;
7291
7292 proto_tree_add_item(tree, hf_ieee1905_max_vid_count, tvb, offset, 1,
7293 ENC_NA0x00000000);
7294 offset += 1;
7295
7296 return offset;
7297}
7298
7299/*
7300 * Dissect a Service Prioritization Rule TLV
7301 */
7302static int * const default_802_1q_settings_flags[] = {
7303 &hf_ieee1905_default_802_1q_settings_default_pcp,
7304 &hf_ieee1905_default_802_1q_settings_reserved,
7305 NULL((void*)0)
7306};
7307
7308static int
7309dissect_default_802_1q_settings(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7310 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7311{
7312 proto_tree_add_item(tree, hf_ieee1905_default_802_1q_settings_primary_vlan, tvb,
7313 offset, 2, ENC_BIG_ENDIAN0x00000000);
7314 offset += 2;
7315
7316 proto_tree_add_bitmask(tree, tvb, offset,
7317 hf_ieee1905_default_802_1q_settings_flags,
7318 ett_default_802_1q_settings_flags,
7319 default_802_1q_settings_flags, ENC_NA0x00000000);
7320 offset += 1;
7321
7322 return offset;
7323}
7324
7325/*
7326 * Dissect a Traffic Separation Policy TLV
7327 */
7328static int
7329dissect_traffic_separation_policy(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7330 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7331{
7332 uint8_t ssid_cnt = tvb_get_uint8(tvb, offset);
7333 uint8_t ssid_num = 0;
7334 proto_tree *ssid_list = NULL((void*)0);
7335 proto_item *sli = NULL((void*)0);
7336 unsigned saved_offset = 0;
7337
7338 proto_tree_add_item(tree, hf_ieee1905_traffic_separation_policy_num_ssids,
7339 tvb, offset, 1, ENC_NA0x00000000);
7340 offset += 1;
7341
7342 if (ssid_cnt > 0) {
7343 ssid_list = proto_tree_add_subtree(tree, tvb, offset, -1,
7344 ett_traffic_separation_ssid_list,
7345 &sli, "SSID List");
7346 saved_offset = offset;
7347 }
7348
7349 while (ssid_num < ssid_cnt) {
7350 proto_tree *ssid_tree = NULL((void*)0);
7351 proto_item *si = NULL((void*)0);
7352 uint8_t ssid_len = tvb_get_uint8(tvb, offset);
7353 unsigned start_offset = offset;
7354
7355 ssid_tree = proto_tree_add_subtree_format(ssid_list, tvb, offset, -1,
7356 ett_traffic_separation_ssid,
7357 &si, "SSID %u", ssid_num);
7358
7359 proto_tree_add_item(ssid_tree,
7360 hf_ieee1905_traffic_separation_policy_ssid_len,
7361 tvb, offset, 1, ENC_NA0x00000000);
7362 offset += 1;
7363
7364 proto_tree_add_item(ssid_tree,
7365 hf_ieee1905_traffic_separation_policy_ssid,
7366 tvb, offset, ssid_len, ENC_ASCII0x00000000);
7367 offset += ssid_len;
7368
7369 proto_tree_add_item(ssid_tree,
7370 hf_ieee1905_traffic_separation_policy_vlanid, tvb,
7371 offset, 2, ENC_BIG_ENDIAN0x00000000);
7372 offset += 2;
7373
7374 proto_item_set_len(si, offset - start_offset);
7375 ssid_num++;
7376 }
7377
7378 if (ssid_cnt > 0) {
7379 proto_item_set_len(sli, offset - saved_offset);
7380 }
7381
7382 return offset;
7383}
7384
7385/*
7386 * Dissect a BSS Configuration Report
7387 */
7388static int * const bss_config_report_flags[] = {
7389 &hf_ieee1905_bss_config_report_backhaul_bss,
7390 &hf_ieee1905_bss_config_report_fronthaul_bss,
7391 &hf_ieee1905_bss_config_report_r1_disallowed_status,
7392 &hf_ieee1905_bss_config_report_r2_disallowed_status,
7393 &hf_ieee1905_bss_config_report_multiple_bssid_set,
7394 &hf_ieee1905_bss_config_report_transmitted_bssid,
7395 &hf_ieee1905_bss_config_report_reserved,
7396 NULL((void*)0)
7397};
7398
7399static const true_false_string tfs_disallowed_allowed = {
7400 "Disallowed",
7401 "Allowed"
7402};
7403
7404static const true_false_string tfs_configured_not_configured = {
7405 "Configured",
7406 "Not-Configured"
7407};
7408
7409static const true_false_string tfs_not_inuse_inuse = {
7410 "Not in use",
7411 "In use"
7412};
7413
7414static const true_false_string tfs_transmitted_non_transmitted = {
7415 "Transmitted",
7416 "Non-transmitted"
7417};
7418
7419static int
7420dissect_bss_configuration_report(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7421 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7422{
7423 uint8_t radio_count = tvb_get_uint8(tvb, offset);
7424 uint8_t radio_id = 0;
7425 unsigned start_offset;
7426 proto_tree *radio_list = NULL((void*)0);
7427 proto_item *rti = NULL((void*)0);
7428
7429 proto_tree_add_item(tree, hf_ieee1905_bss_config_report_radio_count, tvb,
7430 offset, 1, ENC_NA0x00000000);
7431 offset += 1;
7432
7433 start_offset = offset;
7434
7435 radio_list = proto_tree_add_subtree(tree, tvb, offset, -1,
7436 ett_bss_config_report_list, &rti,
7437 "BSS Configuration Radio List");
7438 while (radio_id < radio_count) {
7439 proto_tree *radio_tree = NULL((void*)0);
7440 proto_tree *bss_list = NULL((void*)0);
7441 proto_item *rli = NULL((void*)0), *bli = NULL((void*)0);
7442 unsigned radio_saved_offset = offset, bss_start_offset = 0;
7443 uint8_t bss_count, bss_id = 0;
7444
7445 radio_tree = proto_tree_add_subtree_format(radio_list, tvb, offset, -1,
7446 ett_bss_config_report_tree,
7447 &rli, "Radio %d", radio_id);
7448
7449 proto_tree_add_item(radio_tree, hf_ieee1905_bss_config_report_radio_id,
7450 tvb, offset, 6, ENC_NA0x00000000);
7451 offset += 6;
7452
7453 bss_count = tvb_get_uint8(tvb, offset);
7454
7455 proto_tree_add_item(radio_tree, hf_ieee1905_bss_config_report_bss_cnt,
7456 tvb, offset, 1, ENC_NA0x00000000);
7457 offset += 1;
7458
7459 radio_id++; /* Increment this before we continue */
7460
7461 /* If no BSSes on the radio, skip it. Spec says so. */
7462 if (bss_count == 0) {
7463 proto_item_set_len(rli, offset - radio_saved_offset);
7464 continue;
7465 }
7466
7467 bss_list = proto_tree_add_subtree(radio_tree, tvb, offset, -1,
7468 ett_bss_config_report_bss_list, &bli,
7469 "BSS List");
7470 bss_start_offset = offset;
7471
7472 while (bss_id < bss_count) {
7473 proto_tree *bss_tree = NULL((void*)0);
7474 proto_item *bti = NULL((void*)0);
7475 unsigned bss_item_start = offset;
7476 uint8_t ssid_len = 0;
7477
7478 bss_tree = proto_tree_add_subtree_format(bss_list, tvb, offset,
7479 -1, ett_bss_config_report_bss_tree,
7480 &bti, "BSS %d", bss_id);
7481
7482 proto_tree_add_item(bss_tree, hf_ieee1905_bss_config_report_mac,
7483 tvb, offset, 6, ENC_NA0x00000000);
7484 offset += 6;
7485
7486 proto_tree_add_bitmask_with_flags(bss_tree, tvb, offset,
7487 hf_ieee1905_bss_config_report_flags,
7488 ett_bss_config_report_flags,
7489 bss_config_report_flags, ENC_NA0x00000000, BMT_NO_APPEND0x01);
7490 offset += 1;
7491
7492 proto_tree_add_item(bss_tree, hf_ieee1905_bss_config_report_res,
7493 tvb, offset, 1, ENC_NA0x00000000);
7494 offset += 1;
7495
7496 ssid_len = tvb_get_uint8(tvb, offset);
7497
7498 proto_tree_add_item(bss_tree,
7499 hf_ieee1905_bss_config_report_ssid_len,
7500 tvb, offset, 1, ENC_NA0x00000000);
7501 offset += 1;
7502
7503 proto_tree_add_item(bss_tree,
7504 hf_ieee1905_bss_config_report_ssid,
7505 tvb, offset, ssid_len, ENC_ASCII0x00000000);
7506 offset += ssid_len;
7507
7508 proto_item_set_len(bti, offset - bss_item_start);
7509
7510 bss_id++;
7511 }
7512
7513 proto_item_set_len(bli, offset - bss_start_offset);
7514 proto_item_set_len(rli, offset - radio_saved_offset);
7515 }
7516
7517 proto_item_set_len(rti, offset - start_offset);
7518
7519 return offset;
7520}
7521
7522static int
7523dissect_bssid(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)), proto_tree *tree,
7524 unsigned offset, uint16_t len _U___attribute__((unused)))
7525{
7526 proto_tree_add_item(tree, hf_ieee1905_bssid_tlv_bssid, tvb, offset, 6,
7527 ENC_NA0x00000000);
7528 offset += 6;
7529
7530 return offset;
7531}
7532
7533/*
7534 * Dissect a Service Prioritization Format TLV
7535 */
7536static int * const sp_rule_flags_headers[] = {
7537 &hf_ieee1905_service_prio_rule_add_remove_filter_bit,
7538 &hf_ieee1905_service_prio_rule_flags_reserved,
7539 NULL((void*)0)
7540};
7541
7542static int * const sp_rule_match_headers[] = {
7543 &hf_ieee1905_service_prio_rule_match_always,
7544 &hf_ieee1905_service_prio_rule_match_reserved,
7545 &hf_ieee1905_service_prio_rule_match_up_in_qos,
7546 &hf_ieee1905_service_prio_rule_match_up_control_match,
7547 &hf_ieee1905_service_prio_rule_match_source_mac,
7548 &hf_ieee1905_service_prio_rule_match_source_mac_sense,
7549 &hf_ieee1905_service_prio_rule_match_dest_mac,
7550 &hf_ieee1905_service_prio_rule_match_dest_mac_sense,
7551 NULL((void*)0)
7552};
7553
7554static const true_false_string tfs_add_remove = {
7555 "Add this filter",
7556 "Remove this filter"
7557};
7558
7559static int
7560dissect_service_prioritization_rule(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7561 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7562{
7563 uint8_t flags = 0;
7564 uint8_t match_flags = 0;
7565
7566 proto_tree_add_item(tree, hf_ieee1905_service_prio_rule_id, tvb, offset, 4,
7567 ENC_BIG_ENDIAN0x00000000);
7568 offset += 4;
7569
7570 flags = tvb_get_uint8(tvb, offset);
7571 proto_tree_add_bitmask(tree, tvb, offset, hf_ieee1905_service_prio_rule_flags,
7572 ett_ieee1905_service_prio_rule_flags,
7573 sp_rule_flags_headers, ENC_NA0x00000000);
7574 offset += 1;
7575
7576 if ((flags & 0x80) == 0) {
7577 return offset; /* We are done here ... */
7578 }
7579
7580 proto_tree_add_item(tree, hf_ieee1905_service_prio_rule_precedence, tvb,
7581 offset, 1, ENC_NA0x00000000);
7582 offset += 1;
7583
7584 proto_tree_add_item(tree, hf_ieee1905_service_prio_rule_output, tvb, offset,
7585 1, ENC_NA0x00000000);
7586 offset += 1;
7587
7588 match_flags = tvb_get_uint8(tvb, offset);
7589 proto_tree_add_bitmask(tree, tvb, offset,
7590 hf_ieee1905_service_prio_match_flags,
7591 ett_ieee1905_service_prio_rule_match_flags,
7592 sp_rule_match_headers, ENC_NA0x00000000);
7593 offset += 1;
7594
7595 if (match_flags & 0x20) { /* MATCH UP in 802.11 QOS ... */
7596 proto_tree_add_item(tree, hf_ieee1905_service_prio_rule_up_control, tvb,
7597 offset, 1, ENC_NA0x00000000);
7598 offset += 1;
7599 }
7600
7601 if (match_flags & 0x08) {
7602 proto_tree_add_item(tree, hf_ieee1905_service_prio_rule_source_mac, tvb,
7603 offset, 6, ENC_NA0x00000000);
7604 offset += 6;
7605 }
7606
7607 if (match_flags & 0x02) {
7608 proto_tree_add_item(tree, hf_ieee1905_service_prio_rule_dest_mac, tvb,
7609 offset, 6, ENC_NA0x00000000);
7610 offset += 6;
7611 }
7612
7613 return offset;
7614}
7615
7616/*
7617 * Dissect a DSCP Mapping Table TLV
7618 */
7619static int
7620dissect_dscp_mapping_table(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7621 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7622{
7623 int i = 0;
7624
7625 for (i = 0; i < 64; i++) {
7626 uint8_t pcp_val = tvb_get_uint8(tvb, offset);
7627
7628 proto_tree_add_uint_format(tree, hf_ieee1905_dscp_mapping_table_val, tvb,
7629 offset, 1, pcp_val, "DSCP:%d -> PCP: %u", i, pcp_val);
7630 offset += 1;
7631 }
7632
7633 return offset;
7634}
7635
7636/*
7637 * Dissect an R2 Error Code TLV
7638 */
7639static const range_string r2_error_code_rvals[] = {
7640 { 0x00, 0x00, "Reserved" },
7641 { 0x01, 0x01, "Service Prioritization Rule not found" },
7642 { 0x02, 0x02, "Number of Service Prioritization Rules exceeded the maximum supported" },
7643 { 0x03, 0x03, "Default PCP or VLAN ID not provided" },
7644 { 0x04, 0x04, "Reserved" },
7645 { 0x05, 0x05, "Number of unique VID exceeds maximum supported" },
7646 { 0x06, 0x06, "Reserved" },
7647 { 0x07, 0x07, "Traffic Separation on combined BSS for fronthaul and a backhaul that does support Traffic Separation unsupported" },
7648 { 0x08, 0x08, "Cannot support mixture of backhauls that do and do not support Traffic Separation" },
7649 { 0x09, 0x09, "Reserved" },
7650 { 0x0A, 0x0A, "Traffic Separation not supported" },
7651 { 0x0B, 0x0B, "Unable to configure requested QoS Management Policy" },
7652 { 0x0C, 0x0C, "QoS Management DSCP Policy Request rejected" },
7653 { 0x0D, 0x0D, "Agent can not onboard other Agents via DPP over Wi-Fi" },
7654 { 0x0E, 0x0E, "Agent cannot apply the Disabled_Subchannel_Bitmap given in the EHT Operations TLV for this BSSID" },
7655 { 0x0F, 0x0F, "No operating channel report available for requested 1905.1 AL MAC Address" },
7656 { 0x10, 0xFF, "Reserved" },
7657 { 0, 0, NULL((void*)0) }
7658};
7659
7660static int
7661dissect_r2_error_code(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7662 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7663{
7664 uint8_t reason_code = tvb_get_uint8(tvb, offset);
7665
7666 proto_tree_add_item(tree, hf_ieee1905_r2_error_reason_code, tvb, offset, 1,
7667 ENC_NA0x00000000);
7668 offset++;
7669
7670 /* For some reason_codes there is an additional field */
7671 switch (reason_code) {
7672 case 0x07:
7673 case 0x08:
7674 case 0x0E:
7675 /* BSSID (or AP MLD MAC) */
7676 proto_tree_add_item(tree, hf_ieee1905_r2_error_bssid,
7677 tvb, offset, 6, ENC_NA0x00000000);
7678 offset += 6;
7679 break;
7680 case 0x01:
7681 case 0x02:
7682 /* Service Prioritization Rule ID */
7683 proto_tree_add_item(tree, hf_ieee1905_r2_error_service_prio_rule_id,
7684 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
7685 offset += 4;
7686 break;
7687 case 0x0B:
7688 /* Qos Management Rule ID */
7689 proto_tree_add_item(tree, hf_ieee1905_r2_error_qmid,
7690 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
7691 offset += 2;
7692 break;
7693 default:
7694 break;
7695 }
7696
7697 return offset;
7698}
7699
7700/*
7701 * Dissect an AP Radio Advanced Capabilities TLV
7702 */
7703
7704static int * const ap_radio_advanced_capa_flags[] = {
7705 &hf_ieee1905_ap_radio_advanced_capa_backhaul_bss_traffic_sep,
7706 &hf_ieee1905_ap_radio_advanced_capa_combined_r1_r2_backhaul,
7707 &hf_ieee1905_ap_radio_advanced_capa_mscs,
7708 &hf_ieee1905_ap_radio_advanced_capa_scs,
7709 &hf_ieee1905_ap_radio_advanced_capa_qos_map,
7710 &hf_ieee1905_ap_radio_advanced_capa_dscp_policy,
7711 &hf_ieee1905_ap_radio_advanced_capa_qm_scs_traffic_descr,
7712 &hf_ieee1905_ap_radio_advanced_capa_reserved,
7713 NULL((void*)0)
7714};
7715
7716static int
7717dissect_ap_radio_advanced_capabilities(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7718 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7719{
7720 proto_tree_add_item(tree, hf_ieee1905_ap_radio_advanced_capa_radio_id, tvb,
7721 offset, 6, ENC_NA0x00000000);
7722 offset += 6;
7723
7724 proto_tree_add_bitmask(tree, tvb, offset,
7725 hf_ieee1905_radio_advanced_capa_flags,
7726 ett_radio_advanced_capa_flags,
7727 ap_radio_advanced_capa_flags, ENC_NA0x00000000);
7728 offset += 1;
7729
7730 return offset;
7731}
7732
7733/*
7734 * Dissect an Association Status Notification TLV:
7735 */
7736static const range_string assoc_status_notif_status_rvals[] = {
7737 { 0, 0, "No more associations allowed" },
7738 { 1, 1, "Associations allowed" },
7739 { 2, 255, "Reserved" },
7740 { 0, 0, NULL((void*)0) }
7741};
7742
7743static int
7744dissect_association_status_notification(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7745 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7746{
7747 uint8_t num_bssids = tvb_get_uint8(tvb, offset);
7748
7749 proto_tree_add_item(tree, hf_ieee1905_assoc_status_notif_num_bssid, tvb,
7750 offset, 1, ENC_NA0x00000000);
7751 offset += 1;
7752
7753 if (num_bssids > 0) {
7754 proto_tree *bssid_list = NULL((void*)0);
7755 uint8_t bssid_num = 0;
7756
7757 bssid_list = proto_tree_add_subtree(tree, tvb, offset,
7758 7 * num_bssids,
7759 ett_assoc_status_notif_bssid_list, NULL((void*)0),
7760 "BSSID list");
7761 while (bssid_num < num_bssids) {
7762 proto_tree *bssid_tree = NULL((void*)0);
7763
7764 bssid_tree = proto_tree_add_subtree_format(bssid_list, tvb, offset,
7765 7, ett_assoc_status_notif_bssid_tree, NULL((void*)0),
7766 "BSSID %u", bssid_num);
7767
7768 proto_tree_add_item(bssid_tree,
7769 hf_ieee1905_assoc_status_notif_bssid, tvb,
7770 offset, 6, ENC_NA0x00000000);
7771 offset += 6;
7772
7773 proto_tree_add_item(bssid_tree,
7774 hf_ieee1905_assoc_status_notif_status,
7775 tvb, offset, 1, ENC_NA0x00000000);
7776 offset += 1;
7777
7778 bssid_num++;
7779 }
7780 }
7781
7782 return offset;
7783}
7784
7785/*
7786 * Dissect a Source Info TLV:
7787 */
7788static int
7789dissect_source_info(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7790 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7791{
7792 proto_tree_add_item(tree, hf_ieee1905_source_info_mac_addr, tvb, offset,
7793 6, ENC_NA0x00000000);
7794 offset += 6;
7795
7796 return offset;
7797}
7798
7799/*
7800 * Dissect a Tunneled Message Type TLV:
7801 */
7802#define TUNNELED_MESSAGE_TYPE_ASSOCIATION_REQUEST0 0
7803#define TUNNELED_MESSAGE_TYPE_REASSOCIATION_REQUEST1 1
7804#define TUNNELED_MESSAGE_TYPE_BTM_QUERY2 2
7805#define TUNNELED_MESSAGE_TYPE_WNM_REQUEST3 3
7806#define TUNNELED_MESSAGE_TYPE_ANQP_REQUEST4 4
7807#define TUNNELED_MESSAGE_TYPE_DPP_MESSAGE5 5
7808#define TUNNELED_MESSAGE_TYPE_DSCP_POLICY_QUERY6 6
7809#define TUNNELED_MESSAGE_TYPE_DSCP_POLICY_RESPONSE7 7
7810#define TUNNELED_MESSAGE_TYPE_RESERVED_FIRST8 8
7811#define TUNNELED_MESSAGE_TYPE_RESERVED_LAST255 255
7812
7813static const range_string tunneled_message_type_rvals[] = {
7814 { TUNNELED_MESSAGE_TYPE_ASSOCIATION_REQUEST0, TUNNELED_MESSAGE_TYPE_ASSOCIATION_REQUEST0, "Association Request" },
7815 { TUNNELED_MESSAGE_TYPE_REASSOCIATION_REQUEST1, TUNNELED_MESSAGE_TYPE_REASSOCIATION_REQUEST1, "Re-Association Request" },
7816 { TUNNELED_MESSAGE_TYPE_BTM_QUERY2, TUNNELED_MESSAGE_TYPE_BTM_QUERY2, "BTM Query" },
7817 { TUNNELED_MESSAGE_TYPE_WNM_REQUEST3, TUNNELED_MESSAGE_TYPE_WNM_REQUEST3, "WNM Request" },
7818 { TUNNELED_MESSAGE_TYPE_ANQP_REQUEST4, TUNNELED_MESSAGE_TYPE_ANQP_REQUEST4, "ANQP Request for Neighbor Report" },
7819 { TUNNELED_MESSAGE_TYPE_DPP_MESSAGE5, TUNNELED_MESSAGE_TYPE_DPP_MESSAGE5, "DPP Message" },
7820 { TUNNELED_MESSAGE_TYPE_DSCP_POLICY_QUERY6, TUNNELED_MESSAGE_TYPE_DSCP_POLICY_QUERY6, "DSCP Policy Query" },
7821 { TUNNELED_MESSAGE_TYPE_DSCP_POLICY_RESPONSE7, TUNNELED_MESSAGE_TYPE_DSCP_POLICY_RESPONSE7, "DSCP Policy Response" },
7822 { TUNNELED_MESSAGE_TYPE_RESERVED_FIRST8, TUNNELED_MESSAGE_TYPE_RESERVED_LAST255, "Reserved" },
7823 { 0, 0, NULL((void*)0) }
7824};
7825
7826static int
7827dissect_tunneled_message_type(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7828 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7829{
7830 uint8_t message_type = tvb_get_uint8(tvb, offset);
7831
7832 proto_tree_add_item(tree, hf_ieee1905_tunneled_message_type, tvb, offset,
7833 1, ENC_NA0x00000000);
7834 offset += 1;
7835
7836 /* Store message_type for use in dissect_tunneled */
7837 p_add_proto_data(pinfo->pool, pinfo, proto_ieee1905, TUNNELED_MESSAGE_TYPE_KEY, GUINT_TO_POINTER(message_type)((gpointer) (gulong) (message_type)));
7838 p_add_proto_data(pinfo->pool, pinfo, proto_ieee1905, TUNNELED_MESSAGE_TYPE_SET_KEY, GUINT_TO_POINTER(true)((gpointer) (gulong) (1)));
7839
7840 return offset;
7841}
7842
7843/*
7844 * Dissect a Tunneled TLV:
7845 */
7846static int
7847dissect_tunneled(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7848 proto_tree *tree, unsigned offset, uint16_t len)
7849{
7850 proto_item *data_item;
7851
7852 data_item = proto_tree_add_item(tree, hf_ieee1905_tunneled_data, tvb, offset, len, ENC_NA0x00000000);
7853
7854 /* Check if tunneled message type is known and call 802.11 dissector */
7855 if (GPOINTER_TO_UINT(p_get_proto_data(pinfo->pool, pinfo, proto_ieee1905, TUNNELED_MESSAGE_TYPE_SET_KEY))((guint) (gulong) (p_get_proto_data(pinfo->pool, pinfo, proto_ieee1905
, TUNNELED_MESSAGE_TYPE_SET_KEY)))
) {
7856 uint8_t message_type = GPOINTER_TO_UINT(p_get_proto_data(pinfo->pool, pinfo, proto_ieee1905, TUNNELED_MESSAGE_TYPE_KEY))((guint) (gulong) (p_get_proto_data(pinfo->pool, pinfo, proto_ieee1905
, TUNNELED_MESSAGE_TYPE_KEY)))
;
7857 tvbuff_t *mgmt_tvb;
7858 proto_tree *mgmt_tree;
7859
7860 mgmt_tvb = tvb_new_subset_length(tvb, offset, len);
7861 mgmt_tree = proto_item_add_subtree(data_item, ett_tunneled_body);
7862
7863 switch (message_type) {
7864 case TUNNELED_MESSAGE_TYPE_ASSOCIATION_REQUEST0:
7865 dissect_ieee80211_mgt(MGT_TO_FCF(MGT_ASSOC_REQ)(((0x00) & 0x0F) << 4), mgmt_tvb, pinfo, mgmt_tree);
7866 break;
7867 case TUNNELED_MESSAGE_TYPE_REASSOCIATION_REQUEST1:
7868 dissect_ieee80211_mgt(MGT_TO_FCF(MGT_REASSOC_REQ)(((0x02) & 0x0F) << 4), mgmt_tvb, pinfo, mgmt_tree);
7869 break;
7870 case TUNNELED_MESSAGE_TYPE_BTM_QUERY2:
7871 case TUNNELED_MESSAGE_TYPE_WNM_REQUEST3:
7872 case TUNNELED_MESSAGE_TYPE_ANQP_REQUEST4:
7873 case TUNNELED_MESSAGE_TYPE_DSCP_POLICY_QUERY6:
7874 case TUNNELED_MESSAGE_TYPE_DSCP_POLICY_RESPONSE7:
7875 dissect_ieee80211_mgt(MGT_TO_FCF(MGT_ACTION)(((0x0D) & 0x0F) << 4), mgmt_tvb, pinfo, mgmt_tree);
7876 break;
7877 case TUNNELED_MESSAGE_TYPE_DPP_MESSAGE5:
7878 /* TODO */
7879 break;
7880 default:
7881 break;
7882 }
7883 }
7884
7885 offset += len;
7886
7887 return offset;
7888}
7889
7890/*
7891 * Dissect an R2 Steering Request TLV:
7892 */
7893static int * const r2_steering_flags[] = {
7894 &hf_ieee1905_r2_steering_request_mode_flag,
7895 &hf_ieee1905_r2_btm_disassoc_imminent_flag,
7896 &hf_ieee1905_r2_btm_abridged_flag,
7897 &hf_ieee1905_r2_steering_req_reserved,
7898 NULL((void*)0),
7899};
7900
7901static int
7902dissect_r2_steering_request(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
7903 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
7904{
7905 uint8_t sta_list_count = 0;
7906 uint8_t target_count = 0;
7907 proto_item *steer_item = NULL((void*)0);
7908
7909 proto_tree_add_item(tree, hf_ieee1905_r2_steering_req_src_bssid, tvb,
7910 offset, 6, ENC_NA0x00000000);
7911 offset += 6;
7912
7913 proto_tree_add_bitmask(tree, tvb, offset,
7914 hf_ieee1905_r2_steering_req_flags,
7915 ett_ieee1905_steering_request_flags,
7916 r2_steering_flags, ENC_NA0x00000000);
7917 offset += 1;
7918
7919 proto_tree_add_item(tree, hf_ieee1905_r2_steering_op_window, tvb, offset,
7920 2, ENC_BIG_ENDIAN0x00000000);
7921 offset += 2;
7922
7923 proto_tree_add_item(tree, hf_ieee1905_r2_steering_btm_disassoc_tmr, tvb,
7924 offset, 2, ENC_BIG_ENDIAN0x00000000);
7925 offset += 2;
7926
7927 sta_list_count = tvb_get_uint8(tvb, offset);
7928 steer_item = proto_tree_add_item(tree, hf_ieee1905_r2_steering_sta_count,
7929 tvb, offset, 1, ENC_NA0x00000000);
7930 offset += 1;
7931
7932 if (sta_list_count == 0) {
7933 proto_item_append_text(steer_item, " (Steering request applies to all"
7934 "AMB capable associated STAs in the"
7935 "BSS)");
7936 } else {
7937 proto_tree *amb_list = NULL((void*)0);
7938
7939 amb_list = proto_tree_add_subtree(tree, tvb, offset, 6 * sta_list_count,
7940 ett_r2_steering_sta_list, NULL((void*)0),
7941 "AMB capable STA list");
7942 while (sta_list_count > 0) {
7943 proto_tree_add_item(amb_list, hf_ieee1905_r2_steering_sta_mac, tvb,
7944 offset, 6, ENC_NA0x00000000);
7945 offset += 6;
7946
7947 sta_list_count -= 1;
7948 }
7949 }
7950
7951 target_count = tvb_get_uint8(tvb, offset);
7952 proto_tree_add_item(tree, hf_ieee1905_r2_steering_target_count, tvb, offset,
7953 1, ENC_NA0x00000000);
7954 offset += 1;
7955
7956 if (target_count > 0) {
7957 proto_tree *target_list = NULL((void*)0);
7958 int target_num = 0;
7959
7960 target_list = proto_tree_add_subtree(tree, tvb, offset,
7961 9 * target_count,
7962 ett_r2_steering_target_list,
7963 NULL((void*)0), "Target BSS list");
7964 while (target_num < target_count) {
7965 proto_tree *target = NULL((void*)0);
7966
7967 target = proto_tree_add_subtree_format(target_list, tvb, offset, 9,
7968 ett_r2_steering_target,
7969 NULL((void*)0), "Target BSS %u",
7970 target_num);
7971
7972 proto_tree_add_item(target, hf_ieee1905_r2_steering_target_bssid,
7973 tvb, offset, 6, ENC_NA0x00000000);
7974 offset += 6;
7975
7976 proto_tree_add_item(target, hf_ieee1905_r2_steering_target_op_class,
7977 tvb, offset, 1, ENC_NA0x00000000);
7978 offset += 1;
7979
7980 proto_tree_add_item(target, hf_ieee1905_r2_steering_target_channel,
7981 tvb, offset, 1, ENC_NA0x00000000);
7982 offset += 1;
7983
7984 proto_tree_add_item(target, hf_ieee1905_r2_steering_reason, tvb,
7985 offset, 1, ENC_NA0x00000000);
7986 offset += 1;
7987
7988 target_num += 1;
7989 }
7990 }
7991
7992 return offset;
7993}
7994
7995/*
7996 * Dissect an Unsuccessful Association Policy TLV:
7997 */
7998static int
7999dissect_unsuccessful_association_policy(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8000 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8001{
8002 static int * const capabilities[] = {
8003 &hf_ieee1905_rpt_unsuccessful_assoc_report,
8004 NULL((void*)0),
8005 };
8006
8007 proto_tree_add_bitmask(tree, tvb, offset,
8008 hf_ieee1905_rpt_unsuccessful_associations,
8009 ett_ieee1905_unsuccessful_associations,
8010 capabilities, ENC_NA0x00000000);
8011 offset++;
8012
8013 proto_tree_add_item(tree, hf_ieee1905_max_reporting_rate,
8014 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
8015 offset += 4;
8016
8017 return offset;
8018}
8019
8020/*
8021 * Dissect a Metric Collection Interval TLV:
8022 */
8023static int
8024dissect_metric_collection_interval(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8025 proto_tree *tree, unsigned offset, uint16_t len)
8026{
8027 proto_tree_add_item(tree, hf_ieee1905_metric_collection_interval,
8028 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
8029 offset += len;
8030
8031 return offset;
8032}
8033
8034/*
8035 * Dissect a Radio Metrics TLV:
8036 */
8037static int
8038dissect_radio_metrics(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8039 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8040{
8041 proto_tree_add_item(tree, hf_ieee1905_radio_metrics_radio_id,
8042 tvb, offset, 6, ENC_NA0x00000000);
8043 offset += 6;
8044
8045 proto_tree_add_item(tree, hf_ieee1905_radio_metrics_noise, tvb,
8046 offset, 1, ENC_NA0x00000000);
8047 offset += 1;
8048
8049 proto_tree_add_item(tree, hf_ieee1905_radio_metrics_transmit, tvb,
8050 offset, 1, ENC_NA0x00000000);
8051 offset += 1;
8052
8053 proto_tree_add_item(tree, hf_ieee1905_radio_metrics_receive_self, tvb,
8054 offset, 1, ENC_NA0x00000000);
8055 offset += 1;
8056
8057 proto_tree_add_item(tree, hf_ieee1905_radio_metrics_receive_other, tvb,
8058 offset, 1, ENC_NA0x00000000);
8059 offset += 1;
8060
8061 return offset;
8062}
8063
8064/*
8065 * Dissect an AP Extended Metrics TLV:
8066 */
8067static int
8068dissect_ap_extended_metrics(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8069 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8070{
8071 proto_tree_add_item(tree, hf_ieee1905_ap_extended_metrics_bssid, tvb,
8072 offset, 6, ENC_NA0x00000000);
8073 offset += 6;
8074
8075 proto_tree_add_item(tree, hf_ieee1905_ap_extended_metrics_unicast_sent, tvb,
8076 offset, 4, ENC_BIG_ENDIAN0x00000000);
8077 offset += 4;
8078
8079 proto_tree_add_item(tree, hf_ieee1905_ap_extended_metrics_unicast_rcvd,
8080 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
8081 offset += 4;
8082
8083 proto_tree_add_item(tree, hf_ieee1905_ap_extended_metrics_multicast_sent,
8084 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
8085 offset += 4;
8086
8087 proto_tree_add_item(tree, hf_ieee1905_ap_extended_metrics_multicast_rcvd,
8088 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
8089 offset += 4;
8090
8091 proto_tree_add_item(tree, hf_ieee1905_ap_extended_metrics_bcast_sent,
8092 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
8093 offset += 4;
8094
8095 proto_tree_add_item(tree, hf_ieee1905_ap_extended_metrics_bcast_rcvd,
8096 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
8097 offset += 4;
8098
8099 return offset;
8100}
8101
8102/*
8103 * Dissect an Status Code TLV:
8104 */
8105static int
8106dissect_status_code(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8107 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8108{
8109 proto_tree_add_item(tree, hf_ieee1905_status_code_status, tvb,
8110 offset, 2, ENC_BIG_ENDIAN0x00000000);
8111 offset += 2;
8112
8113 return offset;
8114}
8115
8116/*
8117 * Dissect a Disassociation Reason Code TLV:
8118 */
8119static int
8120dissect_disassociation_reason_code(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8121 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8122{
8123 proto_tree_add_item(tree, hf_ieee1905_disassociation_reason_code, tvb,
8124 offset, 2, ENC_BIG_ENDIAN0x00000000);
8125 offset += 2;
8126
8127 return offset;
8128}
8129
8130/*
8131 * Dissect a Backhaul STA Radio Capabilities TLV:
8132 */
8133static int * const backhaul_sta_radio_capa_flags[] = {
8134 &hf_ieee1905_backhaul_sta_radio_capa_mac_included,
8135 &hf_ieee1905_backhaul_sta_radio_capa_reserved,
8136 NULL((void*)0)
8137};
8138
8139static int
8140dissect_backhaul_sta_radio_capabilities(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8141 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8142{
8143 uint8_t mac_addr_included = 0;
8144
8145 proto_tree_add_item(tree, hf_ieee1905_backhaul_sta_radio_id, tvb, offset,
8146 6, ENC_NA0x00000000);
8147 offset += 6;
8148
8149 mac_addr_included = tvb_get_uint8(tvb, offset);
8150 proto_tree_add_bitmask(tree, tvb, offset,
8151 hf_ieee1905_backhaul_sta_radio_capabilities,
8152 ett_backhaul_sta_radio_capa_flags,
8153 backhaul_sta_radio_capa_flags, ENC_NA0x00000000);
8154 offset += 1;
8155
8156 if (mac_addr_included & 0x80) {
8157 proto_tree_add_item(tree, hf_ieee1905_backhaul_sta_addr, tvb, offset,
8158 6, ENC_NA0x00000000);
8159 offset += 6;
8160 }
8161
8162 return offset;
8163}
8164
8165/*
8166 * Dissect an AKM Suite Capabilities TLV:
8167 */
8168static int
8169dissect_akm_suite_capabilities(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8170 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8171{
8172 uint8_t backhaul_akm_suite_count = 0;
8173 uint8_t fronthaul_akm_suite_count = 0;
8174
8175 backhaul_akm_suite_count = tvb_get_uint8(tvb, offset);
8176 proto_tree_add_item(tree, hf_ieee1905_backhaul_akm_suite_capa_count, tvb,
8177 offset, 1, ENC_NA0x00000000);
8178 offset += 1;
8179
8180 if (backhaul_akm_suite_count > 0) {
8181 uint8_t backhaul_suite_num = 0;
8182 proto_tree *backhaul_suite_list = NULL((void*)0);
8183
8184 backhaul_suite_list = proto_tree_add_subtree(tree, tvb, offset,
8185 backhaul_akm_suite_count * 4,
8186 ett_backhaul_akm_suite_list, NULL((void*)0),
8187 "Backhaul AKM Suite list");
8188
8189 while (backhaul_suite_num < backhaul_akm_suite_count) {
8190 proto_tree *backhaul_akm_suite = NULL((void*)0);
8191
8192 backhaul_akm_suite = proto_tree_add_subtree_format(backhaul_suite_list,
8193 tvb, offset, 4, ett_backhaul_akm_suite, NULL((void*)0),
8194 "Backhaul AKM Suite %u", backhaul_suite_num++);
8195
8196 proto_tree_add_item(backhaul_akm_suite,
8197 hf_ieee1905_akm_backhaul_suite_oui, tvb,
8198 offset, 3, ENC_BIG_ENDIAN0x00000000);
8199 offset += 3;
8200
8201 proto_tree_add_item(backhaul_akm_suite,
8202 hf_ieee1905_akm_backhaul_suite_type, tvb,
8203 offset, 1, ENC_NA0x00000000);
8204 offset += 1;
8205 }
8206 }
8207
8208 fronthaul_akm_suite_count = tvb_get_uint8(tvb, offset);
8209 proto_tree_add_item(tree, hf_ieee1905_fronthaul_akm_suite_capa_count, tvb,
8210 offset, 1, ENC_NA0x00000000);
8211 offset += 1;
8212
8213 if (fronthaul_akm_suite_count > 0) {
8214 uint8_t fronthaul_suite_num = 0;
8215 proto_tree *fronthaul_suite_list = NULL((void*)0);
8216
8217 fronthaul_suite_list = proto_tree_add_subtree(tree, tvb, offset,
8218 fronthaul_akm_suite_count * 4,
8219 ett_fronthaul_akm_suite_list, NULL((void*)0),
8220 "Fronthaul AKM Suite list");
8221
8222 while (fronthaul_suite_num < fronthaul_akm_suite_count) {
8223 proto_tree *fronthaul_akm_suite = NULL((void*)0);
8224
8225 fronthaul_akm_suite = proto_tree_add_subtree_format(fronthaul_suite_list,
8226 tvb, offset, 4, ett_fronthaul_akm_suite, NULL((void*)0),
8227 "Fronthaul AKM Suite %u", fronthaul_suite_num++);
8228
8229 proto_tree_add_item(fronthaul_akm_suite,
8230 hf_ieee1905_akm_fronthaul_suite_oui, tvb,
8231 offset, 3, ENC_BIG_ENDIAN0x00000000);
8232 offset += 3;
8233
8234 proto_tree_add_item(fronthaul_akm_suite,
8235 hf_ieee1905_akm_fronthaul_suite_type, tvb,
8236 offset, 1, ENC_NA0x00000000);
8237 offset += 1;
8238 }
8239 }
8240
8241 return offset;
8242}
8243
8244static const true_false_string tfs_dpp_frame_indicator = {
8245 "GAS frame",
8246 "DPP public action frame"
8247};
8248
8249static int * const ieee1905_encap_dpp_flags[] = {
8250 &hf_ieee1905_dpp_encap_enrollee_mac_present,
8251 &hf_ieee1905_dpp_encap_reserved,
8252 &hf_ieee1905_dpp_encap_frame_type_flag,
8253 &hf_ieee1905_dpp_encap_reserved2,
8254 NULL((void*)0)
8255};
8256
8257static int
8258dissect_1905_encap_dpp(tvbuff_t *tvb, packet_info *pinfo,
8259 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8260{
8261 uint8_t flags = tvb_get_uint8(tvb, offset);
8262 uint16_t frame_length;
8263
8264 proto_tree_add_bitmask(tree, tvb, offset,
8265 hf_ieee1905_encap_dpp_flags,
8266 ett_1905_encap_dpp_flags,
8267 ieee1905_encap_dpp_flags, ENC_NA0x00000000);
8268 offset += 1;
8269
8270 if (flags & 0x80) { /* Enrollee MAC present */
8271 proto_tree_add_item(tree, hf_ieee1905_encap_dpp_sta_mac, tvb, offset,
8272 6, ENC_NA0x00000000);
8273 offset += 6;
8274 }
8275
8276 proto_tree_add_item(tree, hf_ieee1905_dpp_encap_frame_type, tvb, offset, 1,
8277 ENC_NA0x00000000);
8278 offset += 1;
8279
8280 frame_length = tvb_get_ntohs(tvb, offset);
8281 proto_tree_add_item(tree, hf_ieee1905_dpp_encap_frame_length, tvb, offset,
8282 2, ENC_BIG_ENDIAN0x00000000);
8283 offset += 2;
8284
8285 if (flags & 0x20) {
8286 uint8_t code;
8287 tvbuff_t *new_tvb;
8288
8289 code = tvb_get_uint8(tvb, offset);
8290 proto_tree_add_item(tree, hf_ieee1905_dpp_message_public_action, tvb,
8291 offset, 1, ENC_NA0x00000000);
8292 offset += 1;
8293
8294 new_tvb = tvb_new_subset_length(tvb, offset, frame_length - 1);
8295
8296 add_ff_action_public_fields(tree, new_tvb, pinfo, 0, code);
8297
8298 offset += frame_length - 1;
8299 } else {
8300 tvbuff_t *new_tvb;
8301
8302 proto_tree_add_item(tree, hf_ieee1905_dpp_encap_public_action, tvb,
8303 offset, 1, ENC_NA0x00000000);
8304 offset += 1;
8305
8306 proto_tree_add_item(tree, hf_ieee1905_dpp_encap_dpp_oui, tvb, offset,
8307 3, ENC_BIG_ENDIAN0x00000000);
8308 offset += 3;
8309
8310 proto_tree_add_item(tree, hf_ieee1905_dpp_encap_dpp_subtype, tvb,
8311 offset, 1, ENC_NA0x00000000);
8312 offset += 1;
8313
8314 new_tvb = tvb_new_subset_length(tvb, offset, frame_length - 5);
8315 dissect_wifi_dpp_public_action(new_tvb, pinfo, tree, NULL((void*)0));
8316
8317 offset += (frame_length - 5);
8318 }
8319
8320 return offset;
8321}
8322
8323/*
8324 * Dissect a 1905 Encap EAPOL TLV:
8325 */
8326static int
8327dissect_1905_encap_eapol(tvbuff_t *tvb, packet_info *pinfo,
8328 proto_tree *tree, unsigned offset, uint16_t len)
8329{
8330 offset += call_dissector(eapol_handle,
8331 tvb_new_subset_length(tvb, offset, len),
8332 pinfo, tree);
8333
8334 return offset;
8335}
8336
8337/*
8338 * Dissect a DPP Bootstrapping URI Notification TLV:
8339 */
8340static int
8341dissect_dpp_bootstrapping_uri_notification(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8342 proto_tree *tree, unsigned offset, uint16_t len)
8343{
8344 uint16_t uri_len;
8345
8346 proto_tree_add_item(tree, hf_ieee1905_dpp_bootstrapping_uri_radio_id,
8347 tvb, offset, 6, ENC_NA0x00000000);
8348 offset += 6;
8349
8350 proto_tree_add_item(tree, hf_ieee1905_dpp_bootstrapping_uri_local_mac_addr,
8351 tvb, offset, 6, ENC_NA0x00000000);
8352 offset += 6;
8353
8354 proto_tree_add_item(tree, hf_ieee1905_dpp_bootstrapping_uri_bsta_mac_addr,
8355 tvb, offset, 6, ENC_NA0x00000000);
8356 offset += 6;
8357
8358 /* Assume we got the whole URI */
8359 uri_len = len - 18;
8360 proto_tree_add_item(tree, hf_ieee1905_dpp_bootstrapping_uri_received,
8361 tvb, offset, uri_len, ENC_ASCII0x00000000);
8362 offset += uri_len;
8363
8364 return offset;
8365}
8366
8367/*
8368 * Dissect a DPP CCE Indication TLV:
8369 */
8370static int
8371dissect_dpp_cce_indication(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8372 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8373{
8374 proto_tree_add_item(tree, hf_ieee1905_dpp_advertise_cce_flag, tvb, offset,
8375 1, ENC_NA0x00000000);
8376 offset += 1;
8377
8378 return offset;
8379}
8380
8381/*
8382 * Dissect a DPP Chirp Value TLV:
8383 */
8384static int * const dpp_chirp_headers[] = {
8385 &hf_ieee1905_dpp_chirp_enrollee_mac_addr_present,
8386 &hf_ieee1905_dpp_chirp_hash_validity,
8387 &hf_ieee1905_dpp_chirp_reserved,
8388 NULL((void*)0)
8389};
8390
8391static const true_false_string tfs_chirp_hash_validity_bit = {
8392 "Establish DPP authentication state pertaining to this hash value",
8393 "Purge any DPP authentication state pertaining to this hash value"
8394};
8395
8396static int
8397dissect_dpp_chirp_value(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8398 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8399{
8400 uint8_t flags = tvb_get_uint8(tvb, offset);
8401 uint8_t hash_length = 0;
8402
8403 proto_tree_add_bitmask_with_flags(tree, tvb, offset,
8404 hf_ieee1905_dpp_chirp_value_flags,
8405 ett_ieee1905_dpp_chirp, dpp_chirp_headers, ENC_NA0x00000000,
8406 BMT_NO_APPEND0x01);
8407 offset += 1;
8408
8409 if (flags & 0x80) {
8410 proto_tree_add_item(tree, hf_ieee1905_dpp_chirp_enrollee_mac_addr, tvb,
8411 offset, 6, ENC_NA0x00000000);
8412 offset += 6;
8413 }
8414
8415 hash_length = tvb_get_uint8(tvb, offset);
8416 proto_tree_add_item(tree, hf_ieee1905_dpp_chirp_value_hash_length, tvb,
8417 offset, 1, ENC_NA0x00000000);
8418 offset += 1;
8419
8420 if (hash_length) {
8421 proto_tree_add_item(tree, hf_ieee1905_dpp_chirp_value_hash_value, tvb,
8422 offset, hash_length, ENC_NA0x00000000);
8423 offset += hash_length;
8424 }
8425
8426 return offset;
8427}
8428
8429static int
8430dissect_device_inventory(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8431 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8432{
8433 uint8_t lsn = tvb_get_uint8(tvb, offset);
8434 unsigned lsv = 0, lee = 0, num_radios = 0;
8435
8436 proto_tree_add_item(tree, hf_ieee1905_dev_inventory_lsn, tvb, offset, 1,
8437 ENC_NA0x00000000);
8438 offset += 1;
8439
8440 proto_tree_add_item(tree, hf_ieee1905_dev_inventory_serial, tvb, offset,
8441 lsn, ENC_ASCII0x00000000);
8442 offset += lsn;
8443
8444 lsv = tvb_get_uint8(tvb, offset);
8445 proto_tree_add_item(tree, hf_ieee1905_dev_inventory_lsv, tvb, offset, 1,
8446 ENC_NA0x00000000);
8447 offset += 1;
8448
8449 proto_tree_add_item(tree, hf_ieee1905_dev_inventory_sw_vers, tvb, offset,
8450 lsv, ENC_ASCII0x00000000);
8451 offset += lsv;
8452
8453 lee = tvb_get_uint8(tvb, offset);
8454 proto_tree_add_item(tree, hf_ieee1905_dev_inventory_lee, tvb, offset, 1,
8455 ENC_NA0x00000000);
8456 offset += 1;
8457
8458 proto_tree_add_item(tree, hf_ieee1905_dev_inventory_exec_env, tvb, offset,
8459 lee, ENC_ASCII0x00000000);
8460 offset += lee;
8461
8462 num_radios = tvb_get_uint8(tvb, offset);
8463 proto_tree_add_item(tree, hf_ieee1905_dev_inventory_num_radios, tvb, offset,
8464 1, ENC_NA0x00000000);
8465 offset += 1;
8466
8467 if (num_radios > 0) {
8468 uint8_t radio_id = 0;
8469 proto_tree *radio_list = NULL((void*)0);
8470 proto_item *rli = NULL((void*)0);
8471 unsigned start_list_offset = offset;
8472
8473 radio_list = proto_tree_add_subtree(tree, tvb, offset, -1,
8474 ett_device_inventory_radio_list,
8475 &rli, "Radio List");
8476
8477 while (num_radios > 0) {
8478 uint8_t lcv = 0;
8479 proto_tree *radio_tree = NULL((void*)0);
8480 proto_item *rti = NULL((void*)0);
8481 unsigned start_tree_offset = offset;
8482
8483 radio_tree = proto_tree_add_subtree_format(radio_list, tvb, offset,
8484 -1, ett_device_inventory_radio_tree,
8485 &rti, "Radio %u", radio_id);
8486
8487 proto_tree_add_item(radio_tree, hf_ieee1905_dev_inventory_radio_id,
8488 tvb, offset, 6, ENC_NA0x00000000);
8489 offset += 6;
8490
8491 lcv = tvb_get_uint8(tvb, offset);
8492 proto_tree_add_item(radio_tree, hf_ieee1905_dev_inventory_lcv, tvb,
8493 offset, 1, ENC_NA0x00000000);
8494 offset += 1;
8495
8496 proto_tree_add_item(radio_tree, hf_ieee1905_dev_inventory_chp_ven,
8497 tvb, offset, lcv, ENC_ASCII0x00000000);
8498 offset += lcv;
8499
8500 proto_item_set_len(rti, offset - start_tree_offset);
8501 num_radios -= 1;
8502 radio_id += 1;
8503 }
8504 proto_item_set_len(rli, offset - start_list_offset);
8505 }
8506
8507 return offset;
8508}
8509
8510static int
8511dissect_bss_configuration_request(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8512 proto_tree *tree, unsigned offset, uint16_t len)
8513{
8514 proto_tree_add_item(tree, hf_ieee1905_bss_configuration_request, tvb,
8515 offset, len, ENC_NA0x00000000);
8516 offset += len;
8517
8518 return offset;
8519}
8520
8521static int
8522dissect_bss_configuration_response(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8523 proto_tree *tree, unsigned offset, uint16_t len)
8524{
8525 proto_tree_add_item(tree, hf_ieee1905_bss_configuration_response, tvb,
8526 offset, len, ENC_NA0x00000000);
8527 offset += len;
8528
8529 return offset;
8530}
8531
8532static int
8533dissect_dpp_message(tvbuff_t *tvb, packet_info *pinfo,
8534 proto_tree *tree, unsigned offset, uint16_t len)
8535{
8536 uint8_t code;
8537 tvbuff_t *new_tvb;
8538
8539 code = tvb_get_uint8(tvb, offset);
8540 proto_tree_add_item(tree, hf_ieee1905_dpp_message_public_action, tvb,
8541 offset, 1, ENC_NA0x00000000);
8542 offset += 1;
8543
8544 new_tvb = tvb_new_subset_length(tvb, offset, len - 1);
8545
8546 add_ff_action_public_fields(tree, new_tvb, pinfo, 0, code);
8547
8548 offset += len -1;
8549
8550 return offset;
8551}
8552
8553static int * const spatial_reuse_bss_color[] = {
8554 &hf_ieee1905_spatial_reuse_reserved,
8555 &hf_ieee1905_spatial_reuse_bss_color,
8556 NULL((void*)0)
8557};
8558
8559static int * const spatial_reuse_hesiga_flags[] = {
8560 &hf_ieee1905_spatial_reuse_reserved2,
8561 &hf_ieee1905_spatial_reuse_hesiga_value15_allowed,
8562 &hf_ieee1905_spatial_reuse_srg_info_valid,
8563 &hf_ieee1905_spatial_reuse_non_srg_offset_valid,
8564 &hf_ieee1905_spatial_reuse_reserved3,
8565 &hf_ieee1905_spatial_reuse_psr_disallowed,
8566 NULL((void*)0)
8567};
8568
8569#define SRG_INFO_VALID0x08 0x08
8570#define NON_SRG_OFFSET_VALID0x04 0x04
8571
8572static int
8573dissect_spatial_reuse_request(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8574 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8575{
8576 uint8_t flags2;
8577
8578 proto_tree_add_item(tree, hf_ieee1905_spatial_reuse_req_radio_id,
8579 tvb, offset, 6, ENC_NA0x00000000);
8580 offset += 6;
8581
8582 proto_tree_add_bitmask(tree, tvb, offset,
8583 hf_ieee1905_spatial_reuse_color_flags,
8584 ett_ieee1905_spatial_reuse_color,
8585 spatial_reuse_bss_color, ENC_NA0x00000000);
8586 offset += 1;
8587
8588 flags2 = tvb_get_uint8(tvb, offset);
8589 proto_tree_add_bitmask(tree, tvb, offset,
8590 hf_ieee1905_spatial_reuse_hesiga_flags,
8591 ett_ieee1905_spatial_reuse_hesiga,
8592 spatial_reuse_hesiga_flags, ENC_NA0x00000000);
8593 offset += 1;
8594
8595 if (flags2 & NON_SRG_OFFSET_VALID0x04) {
8596 proto_tree_add_item(tree, hf_ieee1905_spatial_reuse_non_srg_obsspd_max_offset,
8597 tvb, offset, 1, ENC_NA0x00000000);
8598 offset += 1;
8599 } else {
8600 proto_tree_add_item(tree, hf_ieee1905_spatial_reuse_not_valid1, tvb,
8601 offset, 1, ENC_NA0x00000000);
8602 offset += 1;
8603 }
8604
8605 if (flags2 & SRG_INFO_VALID0x08) {
8606 proto_tree_add_item(tree,
8607 hf_ieee1905_spatial_reuse_srg_obsspd_min_offset,
8608 tvb, offset, 1, ENC_NA0x00000000);
8609 offset += 1;
8610
8611 proto_tree_add_item(tree,
8612 hf_ieee1905_spatial_reuse_srg_obsspd_max_offset,
8613 tvb, offset, 1, ENC_NA0x00000000);
8614 offset += 1;
8615
8616 proto_tree_add_item(tree,
8617 hf_ieee1905_spatial_reuse_srg_bss_color_bitmap,
8618 tvb, offset, 8, ENC_BIG_ENDIAN0x00000000);
8619 offset += 8;
8620
8621 proto_tree_add_item(tree,
8622 hf_ieee1905_spatial_reuse_srg_partial_bssid_bitmap,
8623 tvb, offset, 8, ENC_BIG_ENDIAN0x00000000);
8624 offset += 8;
8625 } else {
8626 proto_tree_add_item(tree,
8627 hf_ieee1905_spatial_reuse_not_valid2, tvb,
8628 offset, 1, ENC_NA0x00000000);
8629 offset += 1;
8630
8631 proto_tree_add_item(tree,
8632 hf_ieee1905_spatial_reuse_not_valid3, tvb,
8633 offset, 1, ENC_NA0x00000000);
8634 offset += 1;
8635
8636 proto_tree_add_item(tree,
8637 hf_ieee1905_spatial_reuse_not_valid4, tvb,
8638 offset, 8, ENC_BIG_ENDIAN0x00000000);
8639 offset += 8;
8640
8641 proto_tree_add_item(tree,
8642 hf_ieee1905_spatial_reuse_not_valid5, tvb,
8643 offset, 8, ENC_BIG_ENDIAN0x00000000);
8644 offset += 8;
8645 }
8646
8647 proto_tree_add_item(tree, hf_ieee1905_spatial_reuse_reserved4, tvb,
8648 offset, 2, ENC_BIG_ENDIAN0x00000000);
8649 offset += 2;
8650
8651 return offset;
8652}
8653
8654static int * const spatial_reuse_rep_bss_color[] = {
8655 &hf_ieee1905_spatial_reuse_rep_reserved,
8656 &hf_ieee1905_spatial_reuse_rep_partial_bss_color,
8657 &hf_ieee1905_spatial_reuse_rep_bss_color,
8658 NULL((void*)0)
8659};
8660
8661static int * const spatial_reuse_rep_hesiga_flags[] = {
8662 &hf_ieee1905_spatial_reuse_rep_reserved2,
8663 &hf_ieee1905_spatial_reuse_rep_hesiga_value15_allowed,
8664 &hf_ieee1905_spatial_reuse_rep_srg_info_valid,
8665 &hf_ieee1905_spatial_reuse_rep_non_srg_offset_valid,
8666 &hf_ieee1905_spatial_reuse_rep_reserved3,
8667 &hf_ieee1905_spatial_reuse_rep_psr_disallowed,
8668 NULL((void*)0)
8669};
8670
8671static int
8672dissect_spatial_reuse_report(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8673 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8674{
8675 uint8_t flags2;
8676
8677 proto_tree_add_item(tree, hf_ieee1905_spatial_reuse_rep_radio_id,
8678 tvb, offset, 6, ENC_NA0x00000000);
8679 offset += 6;
8680
8681 proto_tree_add_bitmask(tree, tvb, offset,
8682 hf_ieee1905_spatial_reuse_rep_color_flags,
8683 ett_ieee1905_spatial_reuse_rep_color,
8684 spatial_reuse_rep_bss_color, ENC_NA0x00000000);
8685 offset += 1;
8686
8687 flags2 = tvb_get_uint8(tvb, offset);
8688 proto_tree_add_bitmask(tree, tvb, offset,
8689 hf_ieee1905_spatial_reuse_rep_hesiga_flags,
8690 ett_ieee1905_spatial_reuse_rep_hesiga,
8691 spatial_reuse_rep_hesiga_flags, ENC_NA0x00000000);
8692 offset += 1;
8693
8694 if (flags2 & NON_SRG_OFFSET_VALID0x04) {
8695 proto_tree_add_item(tree,
8696 hf_ieee1905_spatial_reuse_rep_non_srg_obsspd_max_offset, tvb,
8697 offset, 1, ENC_NA0x00000000);
8698 offset += 1;
8699 } else {
8700 proto_tree_add_item(tree, hf_ieee1905_spatial_reuse_rep_not_valid1, tvb,
8701 offset, 1, ENC_NA0x00000000);
8702 offset += 1;
8703 }
8704
8705 if (flags2 & SRG_INFO_VALID0x08) {
8706 proto_tree_add_item(tree,
8707 hf_ieee1905_spatial_reuse_rep_srg_obsspd_min_offset,
8708 tvb, offset, 1, ENC_NA0x00000000);
8709 offset += 1;
8710
8711 proto_tree_add_item(tree,
8712 hf_ieee1905_spatial_reuse_rep_srg_obsspd_max_offset,
8713 tvb, offset, 1, ENC_NA0x00000000);
8714 offset += 1;
8715
8716 proto_tree_add_item(tree,
8717 hf_ieee1905_spatial_reuse_rep_srg_bss_color_bitmap,
8718 tvb, offset, 8, ENC_BIG_ENDIAN0x00000000);
8719 offset += 8;
8720
8721 proto_tree_add_item(tree,
8722 hf_ieee1905_spatial_reuse_rep_srg_partial_bssid_bitmap,
8723 tvb, offset, 8, ENC_BIG_ENDIAN0x00000000);
8724 offset += 8;
8725 } else {
8726 proto_tree_add_item(tree,
8727 hf_ieee1905_spatial_reuse_rep_not_valid2, tvb,
8728 offset, 1, ENC_NA0x00000000);
8729 offset += 1;
8730
8731 proto_tree_add_item(tree,
8732 hf_ieee1905_spatial_reuse_rep_not_valid3, tvb,
8733 offset, 1, ENC_NA0x00000000);
8734 offset += 1;
8735
8736 proto_tree_add_item(tree,
8737 hf_ieee1905_spatial_reuse_rep_not_valid4, tvb,
8738 offset, 8, ENC_BIG_ENDIAN0x00000000);
8739 offset += 8;
8740
8741 proto_tree_add_item(tree,
8742 hf_ieee1905_spatial_reuse_rep_not_valid5, tvb,
8743 offset, 8, ENC_BIG_ENDIAN0x00000000);
8744 offset += 8;
8745 }
8746
8747 proto_tree_add_item(tree,
8748 hf_ieee1905_spatial_reuse_rep_nbor_bss_color_bitmap,
8749 tvb, offset, 8, ENC_BIG_ENDIAN0x00000000);
8750 offset += 8;
8751
8752 proto_tree_add_item(tree,
8753 hf_ieee1905_spatial_reuse_rep_reserved4, tvb, offset,
8754 2, ENC_BIG_ENDIAN0x00000000);
8755 offset += 2;
8756
8757 return offset;
8758}
8759
8760static const range_string spatial_reuse_response_rvals[] = {
8761 { 0x00, 0x00, "Accept" },
8762 { 0x01, 0x01, "Decline because radio does not support requested configuration" },
8763 { 0x02, 0xFF, "Reserved" },
8764 { 0, 0, NULL((void*)0) }
8765};
8766
8767static int
8768dissect_spatial_reuse_config_response(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8769 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8770{
8771 proto_tree_add_item(tree, hf_ieee1905_spatial_reuse_config_radio_id,
8772 tvb, offset, 6, ENC_NA0x00000000);
8773 offset += 6;
8774
8775 proto_tree_add_item(tree, hf_ieee1905_spatial_reuse_config_response,
8776 tvb, offset, 1, ENC_NA0x00000000);
8777 offset += 1;
8778
8779 return offset;
8780}
8781
8782static int
8783dissect_qos_management_policy(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8784 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8785{
8786 uint8_t num_mscs_disallowed = tvb_get_uint8(tvb, offset);
8787 uint8_t num_scs_disallowed = 0;
8788 proto_tree *mscs_list = NULL((void*)0);
8789 proto_tree *scs_list = NULL((void*)0);
8790
8791 proto_tree_add_item(tree, hf_ieee1905_qos_mgmt_policy_mscs_disallowed,
8792 tvb, offset, 1, ENC_NA0x00000000);
8793 offset += 1;
8794
8795 mscs_list = proto_tree_add_subtree(tree, tvb, offset,
8796 num_mscs_disallowed * 6,
8797 ett_qos_mgmt_policy_mscs_list,
8798 NULL((void*)0), "MSCS List");
8799 while (num_mscs_disallowed) {
8800 proto_tree_add_item(mscs_list, hf_ieee1905_qos_mgmt_mscs_disallow_sta,
8801 tvb, offset, 6, ENC_NA0x00000000);
8802
8803 offset += 6;
8804 num_mscs_disallowed--;
8805 }
8806
8807 num_scs_disallowed = tvb_get_uint8(tvb, offset);
8808 proto_tree_add_item(tree, hf_ieee1905_qos_mgmt_policy_scs_disallowed,
8809 tvb, offset, 1, ENC_NA0x00000000);
8810 offset += 1;
8811
8812 scs_list = proto_tree_add_subtree(tree, tvb, offset,
8813 num_scs_disallowed * 6,
8814 ett_qos_mgmt_policy_scs_list,
8815 NULL((void*)0), "SCS List");
8816
8817 while (num_scs_disallowed) {
8818 proto_tree_add_item(scs_list, hf_ieee1905_qos_mgmt_scs_disallow_sta,
8819 tvb, offset, 6, ENC_NA0x00000000);
8820
8821 offset += 6;
8822 num_scs_disallowed--;
8823 }
8824
8825 return offset;
8826}
8827
8828static int
8829dissect_qos_management_descriptor(tvbuff_t *tvb, packet_info *pinfo,
8830 proto_tree *tree, unsigned offset, uint16_t len)
8831{
8832 proto_tree_add_item(tree, hf_ieee1905_qos_mgmt_desc_qmid, tvb, offset,
8833 2, ENC_BIG_ENDIAN0x00000000);
8834 offset += 2;
8835 len -= 2;
8836
8837 proto_tree_add_item(tree, hf_ieee1905_qos_mgmt_desc_bssid, tvb, offset,
8838 6, ENC_NA0x00000000);
8839 offset += 6;
8840 len -= 6;
8841
8842 proto_tree_add_item(tree, hf_ieee1905_qos_mgmt_desc_client_mac, tvb,
8843 offset, 6, ENC_NA0x00000000);
8844 offset += 6;
8845 len -= 6;
8846
8847 /* There is MSCS, SCS or QoS element */
8848 while (len > 0) {
8849 uint16_t desc_size = add_tagged_field(pinfo, tree, tvb, offset, 0, NULL((void*)0), 0, NULL((void*)0));
8850 offset += desc_size;
8851 len -= desc_size;
8852 }
8853
8854 return offset;
8855}
8856
8857static int * const controller_capa_header[] = {
8858 &hf_ieee1905_controller_capa_reserved,
8859 &hf_ieee1905_controller_capa_early_ap_capa,
8860 &hf_ieee1905_controller_capa_kbmb_counter,
8861 NULL((void*)0)
8862};
8863
8864static int
8865dissect_controller_capability(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8866 proto_tree *tree, unsigned offset, uint16_t len)
8867{
8868 proto_tree_add_bitmask(tree, tvb, offset,
8869 hf_ieee1905_controller_capa_flags,
8870 ett_ieee1905_controller_capa,
8871 controller_capa_header, ENC_NA0x00000000);
8872 offset += len;
8873
8874 return offset;
8875}
8876
8877/*
8878 * Dissect a Wi-Fi 7 agent capability TLV:
8879 */
8880static int* const wifi_7_agent_capabilities_flags_headers[] = {
8881 &hf_ieee1905_wifi_7_agent_capabilities_flags_ap_max_links,
8882 &hf_ieee1905_wifi_7_agent_capabilities_flags_sta_max_links,
8883 &hf_ieee1905_wifi_7_agent_capabilities_flags_ttl_mapping_cap,
8884 &hf_ieee1905_wifi_7_agent_capabilities_flags_reserved,
8885 NULL((void*)0)
8886};
8887
8888static int* const wifi_7_agent_capabilities_radio_flags_headers[] = {
8889 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_str_support,
8890 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_nstr_support,
8891 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_emlsr_support,
8892 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_emlmr_support,
8893 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_reserved1,
8894 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_str_support,
8895 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_nstr_support,
8896 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_emlsr_support,
8897 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_emlmr_support,
8898 &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_reserved2,
8899 NULL((void*)0)
8900};
8901
8902static int* const wifi_7_agent_capabilities_radio_record_flags_headers[] = {
8903 &hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags_freq_separation,
8904 &hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags_reserved,
8905 NULL((void*)0)
8906};
8907
8908static const value_string tid_to_link_mapping_capability_vals[] = {
8909 { 0, "The Agent does not support TID-to-Link mapping" },
8910 { 1, "The Agent supports the mapping of each TID to the same or different link set" },
8911 { 2, "reserved" },
8912 { 3, "The Agent only supports the mapping of all TIDs to the same link set" },
8913 { 0, NULL((void*)0) }
8914};
8915
8916static unsigned
8917wifi_7_agent_cap_add_record(proto_tree *tree, int hf,
8918 tvbuff_t *tvb, const char *list_name, unsigned offset)
8919{
8920 proto_tree *record_list = NULL((void*)0);
8921 proto_item *rli = NULL((void*)0);
8922 uint32_t record_count = 0, record_num = 0;
8923 unsigned record_list_start = 0;
8924
8925 proto_tree_add_item_ret_uint(tree, hf, tvb, offset, 1, ENC_NA0x00000000, &record_count);
8926 offset += 1;
8927
8928 if (record_count == 0) {
8929 return offset;
8930 }
8931
8932 record_list = proto_tree_add_subtree(tree, tvb, offset, -1,
8933 ett_wifi_7_agent_capabilities_radio_record_list,
8934 &rli, list_name);
8935
8936 record_list_start = offset;
8937
8938 while (record_num < record_count) {
8939 proto_tree *record_tree = NULL((void*)0);
8940 proto_item *ri = NULL((void*)0);
8941
8942 record_tree = proto_tree_add_subtree_format(record_list, tvb, offset, -1,
8943 ett_wifi_7_agent_capabilities_radio_record,
8944 &ri, "Record %u", record_num);
8945
8946 proto_tree_add_item(record_tree, hf_ieee1905_wifi_7_agent_capabilities_radio_record_id,
8947 tvb, offset, 6, ENC_NA0x00000000);
8948 offset += 6;
8949
8950 proto_tree_add_bitmask(record_tree, tvb, offset,
8951 hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags,
8952 ett_wifi_7_agent_capabilities_radio_record_flags,
8953 wifi_7_agent_capabilities_radio_record_flags_headers, ENC_NA0x00000000);
8954 offset++;
8955
8956 record_num++;
8957 }
8958
8959 proto_item_set_len(rli, offset - record_list_start);
8960
8961 return offset;
8962}
8963
8964static int
8965dissect_wifi_7_agent_capabilities(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
8966 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
8967{
8968 proto_tree *radio_list = NULL((void*)0);
8969 proto_item *rli = NULL((void*)0);
8970 uint32_t radio_count = 0, radio_num = 0;
8971 unsigned radio_list_start = 0;
8972
8973 proto_tree_add_item(tree, hf_ieee1905_wifi_7_agent_capabilities_max_num_mlds, tvb, offset,
8974 1, ENC_NA0x00000000);
8975 offset++;
8976
8977 proto_tree_add_bitmask(tree, tvb, offset,
8978 hf_ieee1905_wifi_7_agent_capabilities_flags,
8979 ett_wifi_7_agent_capabilities_flags,
8980 wifi_7_agent_capabilities_flags_headers, ENC_BIG_ENDIAN0x00000000);
8981 offset += 2;
8982
8983 proto_tree_add_item(tree, hf_ieee1905_wifi_7_agent_capabilities_reserved,
8984 tvb, offset, 13, ENC_NA0x00000000);
8985 offset += 13;
8986
8987 proto_tree_add_item_ret_uint(tree, hf_ieee1905_wifi_7_agent_capabilities_radio_num,
8988 tvb, offset, 1, ENC_NA0x00000000, &radio_count);
8989 offset++;
8990
8991 radio_list = proto_tree_add_subtree(tree, tvb, offset, -1,
8992 ett_wifi_7_agent_capabilities_radio_list,
8993 &rli, "Radio List");
8994
8995 radio_list_start = offset;
8996
8997 while (radio_num < radio_count) {
8998 proto_tree *radio_tree = NULL((void*)0);
8999 proto_item *ri = NULL((void*)0);
9000
9001 radio_tree = proto_tree_add_subtree_format(radio_list, tvb, offset,
9002 -1, ett_wifi_7_agent_capabilities_radio,
9003 &ri, "Radio %u", radio_num);
9004
9005 proto_tree_add_item(radio_tree, hf_ieee1905_wifi_7_agent_capabilities_radio_id,
9006 tvb, offset, 6, ENC_NA0x00000000);
9007 offset += 6;
9008
9009 proto_tree_add_item(radio_tree, hf_ieee1905_wifi_7_agent_capabilities_radio_reserved,
9010 tvb, offset, 24, ENC_NA0x00000000);
9011 offset += 24;
9012
9013 proto_tree_add_bitmask(radio_tree, tvb, offset,
9014 hf_ieee1905_wifi_7_agent_capabilities_radio_flags,
9015 ett_wifi_7_agent_capabilities_radio_flags,
9016 wifi_7_agent_capabilities_radio_flags_headers, ENC_BIG_ENDIAN0x00000000);
9017 offset += 2;
9018
9019 offset = wifi_7_agent_cap_add_record(radio_tree,
9020 hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_str_records,
9021 tvb, "AP STR Record List", offset);
9022
9023 offset = wifi_7_agent_cap_add_record(radio_tree,
9024 hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_nstr_records,
9025 tvb, "AP NSTR Record List", offset);
9026
9027 offset = wifi_7_agent_cap_add_record(radio_tree,
9028 hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_emlsr_records,
9029 tvb, "AP EMLSR Record List", offset);
9030
9031 offset = wifi_7_agent_cap_add_record(radio_tree,
9032 hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_emlmr_records,
9033 tvb, "AP EMLMR Record List", offset);
9034
9035 offset = wifi_7_agent_cap_add_record(radio_tree,
9036 hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_str_records,
9037 tvb, "bSTA STR Record List", offset);
9038
9039 offset = wifi_7_agent_cap_add_record(radio_tree,
9040 hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_nstr_records,
9041 tvb, "bSTA NSTR Record List", offset);
9042
9043 offset = wifi_7_agent_cap_add_record(radio_tree,
9044 hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_emlsr_records,
9045 tvb, "bSTA EMLSR Record List", offset);
9046
9047 offset = wifi_7_agent_cap_add_record(radio_tree,
9048 hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_emlmr_records,
9049 tvb, "bSTA EMLMR Record List", offset);
9050
9051 radio_num++;
9052 }
9053
9054 proto_item_set_len(rli, offset - radio_list_start);
9055
9056 return offset;
9057}
9058
9059/*
9060 * Dissect an Agent AP MLD Configuration TLV:
9061 */
9062static int* const agent_ap_mld_configuration_ap_mld_flags_headers[] = {
9063 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags_ap_mld_mac_addr_valid,
9064 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags_reserved,
9065 NULL((void*)0)
9066};
9067
9068static int* const agent_ap_mld_configuration_ap_mld_flags2_headers[] = {
9069 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_str,
9070 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_nstr,
9071 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_emlsr,
9072 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_emlmr,
9073 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_reserved,
9074 NULL((void*)0)
9075};
9076
9077static int* const agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_headers[] = {
9078 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_affiliated_ap_mac_addr_valid,
9079 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_link_id_valid,
9080 &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_reserved,
9081 NULL((void*)0)
9082};
9083
9084static int
9085dissect_agent_agent_ap_mld_configuration(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
9086 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
9087{
9088 proto_tree *ap_mld_list = NULL((void*)0);
9089 proto_item *amli = NULL((void*)0);
9090 uint32_t ap_mld_count = 0, ap_mld_num = 0;
9091 unsigned ap_mld_list_start = 0;
9092
9093 proto_tree_add_item_ret_uint(tree, hf_ieee1905_agent_ap_mld_configuration_ap_mld_num,
9094 tvb, offset, 1, ENC_NA0x00000000, &ap_mld_count);
9095 offset++;
9096
9097 ap_mld_list = proto_tree_add_subtree(tree, tvb, offset, -1,
9098 ett_agent_ap_mld_configuration_ap_mld_list,
9099 &amli, "AP MLD List");
9100
9101 ap_mld_list_start = offset;
9102
9103 while (ap_mld_num < ap_mld_count) {
9104 proto_tree *ap_mld_tree = NULL((void*)0);
9105 proto_item *ami = NULL((void*)0);
9106 uint32_t ssid_len;
9107 proto_tree *aff_ap_list = NULL((void*)0);
9108 proto_item *aali = NULL((void*)0);
9109 uint32_t aff_ap_count = 0, aff_ap_num = 0;
9110 unsigned aff_ap_list_start = 0;
9111
9112 ap_mld_tree = proto_tree_add_subtree_format(ap_mld_list, tvb, offset,
9113 -1, ett_agent_ap_mld_configuration_ap_mld,
9114 &ami, "AP MLD %u", ap_mld_num);
9115
9116 proto_tree_add_bitmask(ap_mld_tree, tvb, offset,
9117 hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags,
9118 ett_agent_ap_mld_configuration_ap_mld_flags,
9119 agent_ap_mld_configuration_ap_mld_flags_headers, ENC_NA0x00000000);
9120 offset++;
9121
9122 proto_tree_add_item_ret_uint(ap_mld_tree, hf_ieee1905_agent_ap_mld_configuration_ap_mld_ssid_len,
9123 tvb, offset, 1, ENC_NA0x00000000, &ssid_len);
9124 offset++;
9125
9126 proto_tree_add_item(ap_mld_tree, hf_ieee1905_agent_ap_mld_configuration_ap_mld_ssid,
9127 tvb, offset, ssid_len, ENC_ASCII0x00000000);
9128 offset += ssid_len;
9129
9130 proto_tree_add_item(ap_mld_tree, hf_ieee1905_agent_ap_mld_configuration_ap_mld_mac_addr,
9131 tvb, offset, 6, ENC_NA0x00000000);
9132 offset += 6;
9133
9134 proto_tree_add_bitmask(ap_mld_tree, tvb, offset,
9135 hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2,
9136 ett_agent_ap_mld_configuration_ap_mld_flags2,
9137 agent_ap_mld_configuration_ap_mld_flags2_headers, ENC_NA0x00000000);
9138 offset++;
9139
9140 proto_tree_add_item(ap_mld_tree, hf_ieee1905_agent_ap_mld_configuration_ap_mld_reserved, tvb, offset,
9141 20, ENC_NA0x00000000);
9142 offset += 20;
9143
9144 proto_tree_add_item_ret_uint(ap_mld_tree, hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_num,
9145 tvb, offset, 1, ENC_NA0x00000000, &aff_ap_count);
9146 offset++;
9147
9148 aff_ap_list = proto_tree_add_subtree(ap_mld_tree, tvb, offset, -1,
9149 ett_agent_ap_mld_configuration_ap_mld_affiliated_ap_list,
9150 &aali, "Affiliated AP List");
9151
9152 aff_ap_list_start = offset;
9153
9154 while (aff_ap_num < aff_ap_count) {
9155 proto_tree *aff_ap_tree = NULL((void*)0);
9156 proto_item *aai = NULL((void*)0);
9157
9158 aff_ap_tree = proto_tree_add_subtree_format(aff_ap_list, tvb, offset,
9159 -1, ett_agent_ap_mld_configuration_ap_mld_affiliated_ap,
9160 &aai, "Affiliated AP %u", aff_ap_num);
9161
9162 proto_tree_add_bitmask(aff_ap_tree, tvb, offset,
9163 hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags,
9164 ett_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags,
9165 agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_headers, ENC_NA0x00000000);
9166 offset++;
9167
9168 proto_tree_add_item(aff_ap_tree, hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_radio_id,
9169 tvb, offset, 6, ENC_NA0x00000000);
9170 offset += 6;
9171
9172 proto_tree_add_item(aff_ap_tree, hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_mac_addr,
9173 tvb, offset, 6, ENC_NA0x00000000);
9174 offset += 6;
9175
9176 proto_tree_add_item(aff_ap_tree, hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_link_id,
9177 tvb, offset, 1, ENC_NA0x00000000);
9178 offset++;
9179
9180 proto_tree_add_item(aff_ap_tree, hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_reserved,
9181 tvb, offset, 18, ENC_NA0x00000000);
9182 offset += 18;
9183
9184 aff_ap_num++;
9185 }
9186
9187 proto_item_set_len(aali, offset - aff_ap_list_start);
9188 ap_mld_num++;
9189 }
9190
9191 proto_item_set_len(amli, offset - ap_mld_list_start);
9192
9193 return offset;
9194}
9195
9196/*
9197 * Dissect a Backhaul STA MLD Configuration TLV:
9198 */
9199static int* const backhaul_sta_mld_configuration_flags_headers[] = {
9200 &hf_ieee1905_backhaul_sta_mld_configuration_flags_bsta_mld_mac_addr_valid,
9201 &hf_ieee1905_backhaul_sta_mld_configuration_flags_ap_mld_mac_addr_valid,
9202 &hf_ieee1905_backhaul_sta_mld_configuration_flags_reserved,
9203 NULL((void*)0)
9204};
9205
9206static int* const backhaul_sta_mld_configuration_flags2_headers[] = {
9207 &hf_ieee1905_backhaul_sta_mld_configuration_flags2_str,
9208 &hf_ieee1905_backhaul_sta_mld_configuration_flags2_nstr,
9209 &hf_ieee1905_backhaul_sta_mld_configuration_flags2_emlsr,
9210 &hf_ieee1905_backhaul_sta_mld_configuration_flags2_emlmr,
9211 &hf_ieee1905_backhaul_sta_mld_configuration_flags2_reserved,
9212 NULL((void*)0)
9213};
9214
9215static int* const backhaul_sta_mld_configuration_affiliated_bsta_flags_headers[] = {
9216 &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags_affiliated_bsta_mac_addr_valid,
9217 &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags_reserved,
9218 NULL((void*)0)
9219};
9220
9221static int
9222dissect_backhaul_sta_mld_configuration(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
9223 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
9224{
9225 proto_tree *aff_bsta_list = NULL((void*)0);
9226 proto_item *abli = NULL((void*)0);
9227 uint32_t aff_bsta_count = 0, aff_bsta_num = 0;
9228 unsigned aff_bsta_list_start = 0;
9229
9230 proto_tree_add_bitmask(tree, tvb, offset,
9231 hf_ieee1905_backhaul_sta_mld_configuration_flags,
9232 ett_backhaul_sta_mld_configuration_flags,
9233 backhaul_sta_mld_configuration_flags_headers, ENC_NA0x00000000);
9234 offset++;
9235
9236 proto_tree_add_item(tree, hf_ieee1905_backhaul_sta_mld_configuration_bsta_mld_mac_addr,
9237 tvb, offset, 6, ENC_NA0x00000000);
9238 offset += 6;
9239
9240 proto_tree_add_item(tree, hf_ieee1905_backhaul_sta_mld_configuration_ap_mld_mac_addr,
9241 tvb, offset, 6, ENC_NA0x00000000);
9242 offset += 6;
9243
9244 proto_tree_add_bitmask(tree, tvb, offset,
9245 hf_ieee1905_backhaul_sta_mld_configuration_flags2,
9246 ett_backhaul_sta_mld_configuration_flags2,
9247 backhaul_sta_mld_configuration_flags2_headers, ENC_NA0x00000000);
9248 offset++;
9249
9250 proto_tree_add_item(tree, hf_ieee1905_backhaul_sta_mld_configuration_reserved,
9251 tvb, offset, 17, ENC_NA0x00000000);
9252 offset += 17;
9253
9254 proto_tree_add_item_ret_uint(tree, hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_num,
9255 tvb, offset, 1, ENC_NA0x00000000, &aff_bsta_count);
9256 offset++;
9257
9258 aff_bsta_list = proto_tree_add_subtree(tree, tvb, offset, -1,
9259 ett_backhaul_sta_mld_configuration_affiliated_bsta_list,
9260 &abli, "Affiliated bSTA List");
9261
9262 aff_bsta_list_start = offset;
9263
9264 while (aff_bsta_num < aff_bsta_count) {
9265 proto_tree *aff_bsta_tree = NULL((void*)0);
9266 proto_item *abi = NULL((void*)0);
9267
9268 aff_bsta_tree = proto_tree_add_subtree_format(aff_bsta_list, tvb, offset,
9269 -1, ett_backhaul_sta_mld_configuration_affiliated_bsta,
9270 &abi, "Affiliated bSTA %u", aff_bsta_num);
9271
9272 proto_tree_add_bitmask(aff_bsta_tree, tvb, offset,
9273 hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags,
9274 ett_backhaul_sta_mld_configuration_affiliated_bsta_flags,
9275 backhaul_sta_mld_configuration_affiliated_bsta_flags_headers, ENC_NA0x00000000);
9276 offset++;
9277
9278 proto_tree_add_item(aff_bsta_tree, hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_radio_id,
9279 tvb, offset, 6, ENC_NA0x00000000);
9280 offset += 6;
9281
9282 proto_tree_add_item(aff_bsta_tree, hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_mac_addr,
9283 tvb, offset, 6, ENC_NA0x00000000);
9284 offset += 6;
9285
9286 proto_tree_add_item(aff_bsta_tree, hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_reserved,
9287 tvb, offset, 19, ENC_NA0x00000000);
9288 offset += 19;
9289
9290 aff_bsta_num++;
9291 }
9292
9293 proto_item_set_len(abli, offset - aff_bsta_list_start);
9294
9295 return offset;
9296}
9297
9298/*
9299 * Dissect a Associated STA MLD Configuration TLV:
9300 */
9301static int* const associated_sta_mld_configuration_flags_headers[] = {
9302 &hf_ieee1905_associated_sta_mld_configuration_flags_str,
9303 &hf_ieee1905_associated_sta_mld_configuration_flags_nstr,
9304 &hf_ieee1905_associated_sta_mld_configuration_flags_emlsr,
9305 &hf_ieee1905_associated_sta_mld_configuration_flags_emlmr,
9306 &hf_ieee1905_associated_sta_mld_configuration_flags_reserved,
9307 NULL((void*)0)
9308};
9309
9310static int
9311dissect_associated_sta_mld_configuration(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
9312 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
9313{
9314 proto_tree *aff_sta_list = NULL((void*)0);
9315 proto_item *asli = NULL((void*)0);
9316 uint32_t aff_sta_count = 0, aff_sta_num = 0;
9317 unsigned aff_sta_list_start = 0;
9318
9319 proto_tree_add_item(tree, hf_ieee1905_associated_sta_mld_configuration_sta_mld_mac_addr,
9320 tvb, offset, 6, ENC_NA0x00000000);
9321 offset += 6;
9322
9323 proto_tree_add_item(tree, hf_ieee1905_associated_sta_mld_configuration_ap_mld_mac_addr,
9324 tvb, offset, 6, ENC_NA0x00000000);
9325 offset += 6;
9326
9327 proto_tree_add_bitmask(tree, tvb, offset,
9328 hf_ieee1905_associated_sta_mld_configuration_flags,
9329 ett_associated_sta_mld_configuration_flags,
9330 associated_sta_mld_configuration_flags_headers, ENC_NA0x00000000);
9331 offset++;
9332
9333 proto_tree_add_item(tree, hf_ieee1905_associated_sta_mld_configuration_reserved,
9334 tvb, offset, 18, ENC_NA0x00000000);
9335 offset += 18;
9336
9337 proto_tree_add_item_ret_uint(tree, hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_num,
9338 tvb, offset, 1, ENC_NA0x00000000, &aff_sta_count);
9339 offset++;
9340
9341 aff_sta_list = proto_tree_add_subtree(tree, tvb, offset, -1,
9342 ett_associated_sta_mld_configuration_affiliated_sta_list,
9343 &asli, "Affiliated STA List");
9344
9345 aff_sta_list_start = offset;
9346
9347 while (aff_sta_num < aff_sta_count) {
9348 proto_tree *aff_sta_tree = NULL((void*)0);
9349 proto_item *asi = NULL((void*)0);
9350
9351 aff_sta_tree = proto_tree_add_subtree_format(aff_sta_list, tvb, offset,
9352 -1, ett_associated_sta_mld_configuration_affiliated_sta,
9353 &asi, "Affiliated STA %u", aff_sta_num);
9354
9355 proto_tree_add_item(aff_sta_tree, hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_bssid,
9356 tvb, offset, 6, ENC_NA0x00000000);
9357 offset += 6;
9358
9359 proto_tree_add_item(aff_sta_tree, hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_mac_addr,
9360 tvb, offset, 6, ENC_NA0x00000000);
9361 offset += 6;
9362
9363 proto_tree_add_item(aff_sta_tree, hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_reserved,
9364 tvb, offset, 19, ENC_NA0x00000000);
9365 offset += 19;
9366
9367 aff_sta_num++;
9368 }
9369
9370 proto_item_set_len(asli, offset - aff_sta_list_start);
9371
9372 return offset;
9373}
9374
9375
9376/*
9377 * Dissect a MLD Structure TLV:
9378 */
9379static int
9380dissect_mld_structure(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
9381 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
9382{
9383 proto_tree *aff_list = NULL((void*)0);
9384 proto_item *aff_list_item = NULL((void*)0);
9385 uint8_t aff_count;
9386 unsigned aff_list_start = 0;
9387
9388 proto_tree_add_item(tree, hf_ieee1905_mld_structure_mld_mac_addr,
9389 tvb, offset, 6, ENC_NA0x00000000);
9390 offset += 6;
9391
9392 proto_tree_add_item(tree, hf_ieee1905_mld_structure_reserved,
9393 tvb, offset, 25, ENC_NA0x00000000);
9394 offset += 25;
9395
9396 proto_tree_add_item_ret_uint8(tree, hf_ieee1905_mld_structure_affiliated_num,
9397 tvb, offset, 1, ENC_NA0x00000000, &aff_count);
9398 offset++;
9399
9400 aff_list = proto_tree_add_subtree(tree, tvb, offset, -1,
9401 ett_mld_structure_affiliated_list,
9402 &aff_list_item, "Affiliated List");
9403
9404 aff_list_start = offset;
9405
9406 for (uint8_t i = 0; i < aff_count; i++) {
9407 proto_tree *aff_tree = NULL((void*)0);
9408 proto_item *aff_item = NULL((void*)0);
9409
9410 aff_tree = proto_tree_add_subtree_format(aff_list, tvb, offset,
9411 -1, ett_mld_structure_affiliated,
9412 &aff_item, "Affiliated STA %u", i);
9413
9414 proto_tree_add_item(aff_tree, hf_ieee1905_mld_structure_affiliated_mac_addr,
9415 tvb, offset, 6, ENC_NA0x00000000);
9416 offset += 6;
9417
9418 proto_tree_add_item(aff_tree, hf_ieee1905_mld_structure_affiliated_reserved,
9419 tvb, offset, 26, ENC_NA0x00000000);
9420 offset += 26;
9421 }
9422
9423 proto_item_set_len(aff_list_item, offset - aff_list_start);
9424
9425 return offset;
9426}
9427
9428/*
9429 * Dissect an Affiliated STA Metrics TLV:
9430 */
9431static int
9432dissect_affiliated_sta_metrics(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
9433 proto_tree *tree, unsigned offset, uint16_t len)
9434{
9435 unsigned end = offset + len;
9436
9437 proto_tree_add_item(tree, hf_ieee1905_affiliated_sta_metrics_sta_mac_addr,
9438 tvb, offset, 6, ENC_NA0x00000000);
9439 offset += 6;
9440
9441 proto_tree_add_item(tree, hf_ieee1905_affiliated_sta_metrics_bytes_sent,
9442 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9443 offset += 4;
9444
9445 proto_tree_add_item(tree, hf_ieee1905_affiliated_sta_metrics_bytes_rcvd,
9446 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9447 offset += 4;
9448
9449 proto_tree_add_item(tree, hf_ieee1905_affiliated_sta_metrics_packets_sent,
9450 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9451 offset += 4;
9452
9453 proto_tree_add_item(tree, hf_ieee1905_affiliated_sta_metrics_packets_rcvd,
9454 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9455 offset += 4;
9456
9457 proto_tree_add_item(tree, hf_ieee1905_affiliated_sta_metrics_packets_sent_errors,
9458 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9459 offset += 4;
9460
9461 /* EM R6 adds N (>=0) reserved bytes */
9462 if (end > offset) {
9463 proto_tree_add_item(tree, hf_ieee1905_affiliated_sta_metrics_reserved,
9464 tvb, offset, end - offset, ENC_NA0x00000000);
9465
9466 offset = end;
9467 }
9468
9469 return offset;
9470}
9471
9472/*
9473 * Dissect an Affiliated AP Metrics TLV:
9474 */
9475static int
9476dissect_affiliated_ap_metrics(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
9477 proto_tree *tree, unsigned offset, uint16_t len)
9478{
9479 unsigned end = offset + len;
9480
9481 proto_tree_add_item(tree, hf_ieee1905_affiliated_ap_metrics_bssid,
9482 tvb, offset, 6, ENC_NA0x00000000);
9483 offset += 6;
9484
9485 proto_tree_add_item(tree, hf_ieee1905_affiliated_ap_metrics_packets_sent,
9486 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9487 offset += 4;
9488
9489 proto_tree_add_item(tree, hf_ieee1905_affiliated_ap_metrics_packets_rcvd,
9490 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9491 offset += 4;
9492
9493 proto_tree_add_item(tree, hf_ieee1905_affiliated_ap_metrics_packets_sent_errors,
9494 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9495 offset += 4;
9496
9497 proto_tree_add_item(tree, hf_ieee1905_affiliated_ap_metrics_ucast_bytes_sent,
9498 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9499 offset += 4;
9500
9501 proto_tree_add_item(tree, hf_ieee1905_affiliated_ap_metrics_ucast_bytes_rcvd,
9502 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9503 offset += 4;
9504
9505 proto_tree_add_item(tree, hf_ieee1905_affiliated_ap_metrics_mcast_bytes_sent,
9506 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9507 offset += 4;
9508
9509 proto_tree_add_item(tree, hf_ieee1905_affiliated_ap_metrics_mcast_bytes_rcvd,
9510 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9511 offset += 4;
9512
9513 proto_tree_add_item(tree, hf_ieee1905_affiliated_ap_metrics_bcast_bytes_sent,
9514 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9515 offset += 4;
9516
9517 proto_tree_add_item(tree, hf_ieee1905_affiliated_ap_metrics_bcast_bytes_rcvd,
9518 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9519 offset += 4;
9520
9521 /* EM R6 adds N (>=0) reserved bytes */
9522 if (end > offset) {
9523 proto_tree_add_item(tree, hf_ieee1905_affiliated_ap_metrics_reserved,
9524 tvb, offset, end - offset, ENC_NA0x00000000);
9525
9526 offset = end;
9527 }
9528
9529 return offset;
9530}
9531
9532/*
9533 * Dissect a TID To Link Mapping Policy TLV:
9534 */
9535
9536static int* const tid_to_link_mapping_policy_flags_headers[] = {
9537 &hf_ieee1905_tid_to_link_mapping_policy_flags_bsta_config,
9538 &hf_ieee1905_tid_to_link_mapping_policy_flags_reserved,
9539 NULL((void*)0)
9540};
9541
9542static int* const tid_to_link_mapping_policy_flags2_headers[] = {
9543 &hf_ieee1905_tid_to_link_mapping_policy_flags2_ttlm_negotiation,
9544 &hf_ieee1905_tid_to_link_mapping_policy_flags2_reserved,
9545 NULL((void*)0)
9546};
9547
9548static int* const tid_to_link_mapping_policy_mapping_flags_headers[] = {
9549 &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags_add,
9550 &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags_reserved,
9551 NULL((void*)0)
9552};
9553
9554static int* const tid_to_link_mapping_policy_mapping_flags2_headers[] = {
9555 &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_direction,
9556 &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_default_link_mapping,
9557 &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_mapping_switch_time_present,
9558 &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_expected_duration_present,
9559 &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_link_mapping_size,
9560 &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_reserved,
9561 NULL((void*)0)
9562};
9563
9564static const value_string tid_to_link_mapping_policy_mapping_flags2_direction_vals[] = {
9565 { 0, "Downlink" },
9566 { 1, "Uplink" },
9567 { 2, "Downlink And Uplink" },
9568 { 3, "Reserved" },
9569 { 0, NULL((void*)0) }
9570};
9571
9572static const value_string tid_to_link_mapping_policy_mapping_flags2_link_mapping_size_vals[] = {
9573 { 0, "2 Octets" },
9574 { 1, "1 Octet" },
9575 { 0, NULL((void*)0) }
9576};
9577
9578static int
9579dissect_tid_to_link_mapping_policy_tlv(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
9580 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
9581{
9582 proto_tree *mapping_list = NULL((void*)0);
9583 proto_item *mapping_list_item = NULL((void*)0);
9584 uint16_t mappings_count = 0;
9585 unsigned mapping_list_start = 0;
9586
9587 proto_tree_add_bitmask(tree, tvb, offset,
9588 hf_ieee1905_tid_to_link_mapping_policy_flags,
9589 ett_tid_to_link_mapping_policy_flags,
9590 tid_to_link_mapping_policy_flags_headers, ENC_NA0x00000000);
9591 offset++;
9592
9593 proto_tree_add_item(tree, hf_ieee1905_tid_to_link_mapping_policy_mld_mac_addr,
9594 tvb, offset, 6, ENC_NA0x00000000);
9595 offset += 6;
9596
9597 proto_tree_add_bitmask(tree, tvb, offset,
9598 hf_ieee1905_tid_to_link_mapping_policy_flags2,
9599 ett_tid_to_link_mapping_policy_flags2,
9600 tid_to_link_mapping_policy_flags2_headers, ENC_NA0x00000000);
9601 offset++;
9602
9603 proto_tree_add_item(tree, hf_ieee1905_tid_to_link_mapping_policy_reserved,
9604 tvb, offset, 22, ENC_NA0x00000000);
9605 offset += 22;
9606
9607 proto_tree_add_item_ret_uint16(tree, hf_ieee1905_tid_to_link_mapping_policy_mapping_num,
9608 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000, &mappings_count);
9609 offset += 2;
9610
9611 mapping_list = proto_tree_add_subtree(tree, tvb, offset, -1,
9612 ett_tid_to_link_mapping_mapping_list,
9613 &mapping_list_item, "Mapping List");
9614
9615 mapping_list_start = offset;
9616
9617 for (uint16_t i = 0; i < mappings_count; i++) {
9618 proto_tree *mapping_tree = NULL((void*)0);
9619 proto_item *mapping_item = NULL((void*)0);
9620 unsigned mapping_start = offset;
9621 uint8_t presence;
9622
9623 mapping_tree = proto_tree_add_subtree_format(mapping_list, tvb, offset,
9624 -1, ett_tid_to_link_mapping_mapping_list,
9625 &mapping_item, "Mapping %u", i);
9626
9627 proto_tree_add_bitmask(mapping_tree, tvb, offset,
9628 hf_ieee1905_tid_to_link_mapping_policy_mapping_flags,
9629 ett_tid_to_link_mapping_policy_mapping_flags,
9630 tid_to_link_mapping_policy_mapping_flags_headers, ENC_NA0x00000000);
9631 offset++;
9632
9633 proto_tree_add_item(mapping_tree, hf_ieee1905_tid_to_link_mapping_policy_sta_mld_mac_addr,
9634 tvb, offset, 6, ENC_NA0x00000000);
9635 offset += 6;
9636
9637 proto_tree_add_bitmask(mapping_tree, tvb, offset,
9638 hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2,
9639 ett_tid_to_link_mapping_policy_mapping_flags2,
9640 tid_to_link_mapping_policy_mapping_flags2_headers, ENC_NA0x00000000);
9641 offset++;
9642
9643 proto_tree_add_item_ret_uint8(mapping_tree, hf_ieee1905_tid_to_link_mapping_policy_link_mapping_presence_indicator,
9644 tvb, offset, 1, ENC_NA0x00000000, &presence);
9645 offset++;
9646
9647 proto_tree_add_item(mapping_tree, hf_ieee1905_tid_to_link_mapping_policy_expected_duration,
9648 tvb, offset, 3, ENC_BIG_ENDIAN0x00000000);
9649 offset += 3;
9650
9651 /* Mapping for each bit set in the presence indicator (standard is confusing about which bit is TID 0) */
9652 for (uint8_t tid = 0; tid < 8; tid++) {
9653 if (presence & (1 << tid)) {
9654 proto_tree_add_item(mapping_tree, hf_ieee190t_tid_to_link_mapping_policy_tid_n_link_mapping[tid],
9655 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
9656 offset += 2;
9657 }
9658
9659 }
9660
9661 proto_tree_add_item(mapping_tree, hf_ieee1905_tid_to_link_mapping_policy_mapping_reserved,
9662 tvb, offset, 7, ENC_NA0x00000000);
9663 offset += 7;
9664
9665 proto_item_set_len(mapping_item, offset - mapping_start);
9666 }
9667
9668 proto_item_set_len(mapping_list_item, offset - mapping_list_start);
9669
9670 return offset;
9671}
9672
9673/*
9674 * Dissect an EHT Operations TLV:
9675 */
9676static int* const eht_operations_radio_bss_flags_headers[] = {
9677 &hf_ieee1905_eht_operations_radio_bss_flags_eht_operation_information_valid,
9678 &hf_ieee1905_eht_operations_radio_bss_flags_disabled_subchannel_valid,
9679 &hf_ieee1905_eht_operations_radio_bss_flags_eht_default_pe_duration,
9680 &hf_ieee1905_eht_operations_radio_bss_flags_group_addr_bu_indication_limit,
9681 &hf_ieee1905_eht_operations_radio_bss_flags_group_addr_bu_indication_exponent,
9682 &hf_ieee1905_eht_operations_radio_bss_flags_reserved,
9683 NULL((void*)0)
9684};
9685
9686static int
9687dissect_eht_operations_tlv(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
9688 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
9689{
9690 proto_tree *radio_list = NULL((void*)0);
9691 proto_item *rli = NULL((void*)0);
9692 uint32_t radio_count = 0, radio_num = 0;
9693 unsigned radio_list_start = 0;
9694
9695 proto_tree_add_item(tree, hf_ieee1905_eht_operations_reserved,
9696 tvb, offset, 32, ENC_NA0x00000000);
9697 offset += 32;
9698
9699 proto_tree_add_item_ret_uint(tree, hf_ieee1905_eht_operations_radio_num,
9700 tvb, offset, 1, ENC_NA0x00000000, &radio_count);
9701 offset++;
9702
9703 radio_list = proto_tree_add_subtree(tree, tvb, offset, -1,
9704 ett_eht_operations_radio_list,
9705 &rli, "Radio List");
9706
9707 radio_list_start = offset;
9708
9709 while (radio_num < radio_count) {
9710 proto_tree *radio_tree = NULL((void*)0);
9711 proto_item *ri = NULL((void*)0);
9712 proto_tree *bss_list = NULL((void*)0);
9713 proto_item *bli = NULL((void*)0);
9714 uint32_t bss_count = 0, bss_num = 0;
9715 unsigned bss_list_start = 0;
9716
9717 radio_tree = proto_tree_add_subtree_format(radio_list, tvb, offset,
9718 -1, ett_eht_operations_radio,
9719 &ri, "Radio %u", radio_num);
9720
9721 proto_tree_add_item(radio_tree, hf_ieee1905_eht_operations_radio_id,
9722 tvb, offset, 6, ENC_NA0x00000000);
9723 offset += 6;
9724
9725 proto_tree_add_item_ret_uint(radio_tree, hf_ieee1905_eht_operations_radio_bss_num,
9726 tvb, offset, 1, ENC_NA0x00000000, &bss_count);
9727 offset++;
9728
9729 bss_list = proto_tree_add_subtree(radio_tree, tvb, offset, -1,
9730 ett_eht_operations_radio_bss_list,
9731 &bli, "BSS List");
9732
9733 bss_list_start = offset;
9734
9735 while (bss_num < bss_count) {
9736 proto_tree *bss_tree = NULL((void*)0);
9737 proto_item *bi = NULL((void*)0);
9738
9739 bss_tree = proto_tree_add_subtree_format(bss_list, tvb, offset,
9740 -1, ett_eht_operations_radio_bss,
9741 &bi, "BSS %u", bss_num);
9742
9743 proto_tree_add_item(bss_tree, hf_ieee1905_eht_operations_radio_bss_bssid,
9744 tvb, offset, 6, ENC_NA0x00000000);
9745 offset += 6;
9746
9747 proto_tree_add_bitmask(bss_tree, tvb, offset,
9748 hf_ieee1905_eht_operations_radio_bss_flags,
9749 ett_eht_operations_radio_bss_flags,
9750 eht_operations_radio_bss_flags_headers, ENC_NA0x00000000);
9751 offset++;
9752
9753 proto_tree_add_item(bss_tree, hf_ieee1905_eht_operations_radio_bss_basic_eht_nss_mcs_set,
9754 tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
9755 offset += 4;
9756
9757 proto_tree_add_item(bss_tree, hf_ieee1905_eht_operations_radio_bss_control,
9758 tvb, offset, 1, ENC_NA0x00000000);
9759 offset++;
9760
9761 proto_tree_add_item(bss_tree, hf_ieee1905_eht_operations_radio_bss_ccfs0,
9762 tvb, offset, 1, ENC_NA0x00000000);
9763 offset++;
9764
9765 proto_tree_add_item(bss_tree, hf_ieee1905_eht_operations_radio_bss_ccfs1,
9766 tvb, offset, 1, ENC_NA0x00000000);
9767 offset++;
9768
9769 proto_tree_add_item(bss_tree, hf_ieee1905_eht_operations_radio_bss_disabled_subchannel_bitmap,
9770 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
9771 offset += 2;
9772
9773 proto_tree_add_item(bss_tree, hf_ieee1905_eht_operations_radio_bss_reserved,
9774 tvb, offset, 16, ENC_NA0x00000000);
9775 offset += 16;
9776
9777 bss_num++;
9778 }
9779
9780 proto_item_set_len(bli, offset - bss_list_start);
9781
9782 proto_tree_add_item(radio_tree, hf_ieee1905_eht_operations_radio_reserved,
9783 tvb, offset, 25, ENC_NA0x00000000);
9784 offset += 25;
9785
9786 radio_num++;
9787 }
9788
9789 proto_item_set_len(rli, offset - radio_list_start);
9790
9791 return offset;
9792}
9793
9794/*
9795 * Dissect an Available Spectrum Inquiry Request TLV:
9796 */
9797static int
9798dissect_available_spectrum_inquiry_request(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
9799 proto_tree *tree, unsigned offset, uint16_t len)
9800{
9801 /* Content is a JSON message */
9802 proto_tree_add_item(tree, hf_ieee1905_available_spectrum_inquiry_request_object,
9803 tvb, offset, len, ENC_ASCII0x00000000);
9804 offset += len;
9805
9806 return offset;
9807}
9808
9809/*
9810 * Dissect an Available Spectrum Inquiry Response TLV:
9811 */
9812static int
9813dissect_available_spectrum_inquiry_response(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
9814 proto_tree *tree, unsigned offset, uint16_t len)
9815{
9816 /* Content is a JSON message */
9817 proto_tree_add_item(tree, hf_ieee1905_available_spectrum_inquiry_response_object,
9818 tvb, offset, len, ENC_ASCII0x00000000);
9819 offset += len;
9820
9821 return offset;
9822}
9823
9824/*
9825 * Dissect a RSN Diagnostic Report TLV:
9826 */
9827#define RSN_ERROR_FRAME_TYPE_RESERVED0 0
9828#define RSN_ERROR_FRAME_TYPE_AUTHENTICATION1 1
9829#define RSN_ERROR_FRAME_TYPE_ASSOCIATION2 2
9830#define RSN_ERROR_FRAME_TYPE_EAPOL_MESSAGE_23 3
9831#define RSN_ERROR_FRAME_TYPE_EAPOL_MESSAGE_44 4
9832#define RSN_ERROR_FRAME_TYPE_FILS5 5
9833#define RSN_ERROR_FRAME_TYPE_PASN6 6
9834#define RSN_ERROR_FRAME_TYPE_STA_INITIATED_DEAUTH7 7
9835#define RSN_ERROR_FRAME_TYPE_RESERVED_RANGE_FIRST8 8
9836#define RSN_ERROR_FRAME_TYPE_RESERVED_RANGE_LAST255 255
9837
9838static const range_string rsn_diagnostic_report_rsn_error_rvals[] = {
9839 { RSN_ERROR_FRAME_TYPE_RESERVED0, RSN_ERROR_FRAME_TYPE_RESERVED0, "Reserved" },
9840 { RSN_ERROR_FRAME_TYPE_AUTHENTICATION1, RSN_ERROR_FRAME_TYPE_AUTHENTICATION1, "Authentication" },
9841 { RSN_ERROR_FRAME_TYPE_ASSOCIATION2, RSN_ERROR_FRAME_TYPE_ASSOCIATION2, "Association" },
9842 { RSN_ERROR_FRAME_TYPE_EAPOL_MESSAGE_23, RSN_ERROR_FRAME_TYPE_EAPOL_MESSAGE_23, "EAPOL Message 2" },
9843 { RSN_ERROR_FRAME_TYPE_EAPOL_MESSAGE_44, RSN_ERROR_FRAME_TYPE_EAPOL_MESSAGE_44, "EAPOL Message 4" },
9844 { RSN_ERROR_FRAME_TYPE_FILS5, RSN_ERROR_FRAME_TYPE_FILS5, "FILS" },
9845 { RSN_ERROR_FRAME_TYPE_PASN6, RSN_ERROR_FRAME_TYPE_PASN6, "PASN" },
9846 { RSN_ERROR_FRAME_TYPE_STA_INITIATED_DEAUTH7, RSN_ERROR_FRAME_TYPE_STA_INITIATED_DEAUTH7, "STA Initiated Deauth" },
9847 { RSN_ERROR_FRAME_TYPE_RESERVED_RANGE_FIRST8, RSN_ERROR_FRAME_TYPE_RESERVED_RANGE_LAST255, "Reserved" },
9848 { 0, 0, NULL((void*)0) }
9849};
9850
9851static int
9852dissect_rsn_diagnostic_report(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
9853 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
9854{
9855 uint8_t error_frame = 0;
9856 uint16_t frame_len = 0;
9857 proto_item *frame_item = NULL((void*)0);
9858 proto_tree *frame_tree;
9859 tvbuff_t *frame_tvb;
9860
9861 proto_tree_add_item_ret_uint8(tree, hf_ieee1905_rsn_diagnostic_report_rsn_error,
9862 tvb, offset, 1, ENC_NA0x00000000, &error_frame);
9863 offset++;
9864
9865 proto_tree_add_item(tree, hf_ieee1905_rsn_diagnostic_report_reserved,
9866 tvb, offset, 3, ENC_NA0x00000000);
9867 offset += 3;
9868
9869 proto_tree_add_item_ret_uint16(tree, hf_ieee1905_rsn_diagnostic_report_frame_body_len,
9870 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000, &frame_len);
9871 offset += 2;
9872
9873 if (frame_len > 0) {
9874 frame_item = proto_tree_add_item(tree, hf_ieee1905_rsn_diagnostic_report_frame_body,
9875 tvb, offset, frame_len, ENC_NA0x00000000);
9876
9877 frame_tree = proto_item_add_subtree(frame_item, ett_rsn_diagnostic_report_frame_body);
9878
9879 frame_tvb = tvb_new_subset_length(tvb, offset, frame_len);
9880
9881 /* Call other dissector depending on frame type */
9882 switch (error_frame) {
9883 case RSN_ERROR_FRAME_TYPE_AUTHENTICATION1:
9884 dissect_ieee80211_mgt(MGT_TO_FCF(MGT_AUTHENTICATION)(((0x0B) & 0x0F) << 4), frame_tvb, pinfo, frame_tree);
9885 break;
9886 case RSN_ERROR_FRAME_TYPE_ASSOCIATION2:
9887 dissect_ieee80211_mgt(MGT_TO_FCF(MGT_ASSOC_REQ)(((0x00) & 0x0F) << 4), frame_tvb, pinfo, frame_tree);
9888 break;
9889 case RSN_ERROR_FRAME_TYPE_EAPOL_MESSAGE_23:
9890 case RSN_ERROR_FRAME_TYPE_EAPOL_MESSAGE_44: {
9891 /* EAPOL dissector removes useful info from Protocol and Info columns so store it */
9892 char *col_info_text = wmem_strdup(pinfo->pool, col_get_text(pinfo->cinfo, COL_INFO));
9893 char *col_protocol_text = wmem_strdup(pinfo->pool, col_get_text(pinfo->cinfo, COL_PROTOCOL));
9894
9895 call_dissector(eapol_handle, frame_tvb, pinfo, frame_tree);
9896
9897 /* Restore Protocol and Info columns */
9898 col_set_str(pinfo->cinfo, COL_INFO, col_info_text);
9899 col_set_str(pinfo->cinfo, COL_PROTOCOL, col_protocol_text);
9900 }
9901 break;
9902 default:
9903 break;
9904 }
9905
9906 offset += frame_len;
9907 }
9908
9909 return offset;
9910}
9911
9912/*
9913 * Dissect a RSN Parameter Configuration TLV:
9914 */
9915static int
9916dissect_rsn_parameter_configuration(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
9917 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
9918{
9919 proto_tree *radio_list = NULL((void*)0);
9920 proto_item *rli = NULL((void*)0);
9921 uint8_t radio_count = 0, radio_num = 0;
9922 unsigned radio_list_start = 0;
9923
9924 proto_tree_add_item_ret_uint8(tree, hf_ieee1905_rsn_parameter_configuration_radio_num,
9925 tvb, offset, 1, ENC_NA0x00000000, &radio_count);
9926 offset++;
9927
9928 radio_list = proto_tree_add_subtree(tree, tvb, offset, -1,
9929 ett_rsn_parameter_configuration_radio_list,
9930 &rli, "Radio List");
9931
9932 radio_list_start = offset;
9933
9934 while (radio_num < radio_count) {
9935 proto_tree *radio_tree = NULL((void*)0);
9936 proto_item *ri = NULL((void*)0);
9937 proto_tree *bss_list = NULL((void*)0);
9938 proto_item *bli = NULL((void*)0);
9939 uint8_t bss_count = 0, bss_num = 0;
9940 unsigned bss_list_start = 0;
9941
9942 radio_tree = proto_tree_add_subtree_format(radio_list, tvb, offset,
9943 -1, ett_eht_operations_radio,
9944 &ri, "Radio %u", radio_num);
9945
9946 proto_tree_add_item(radio_tree, hf_ieee1905_rsn_parameter_configuration_radio_id,
9947 tvb, offset, 6, ENC_NA0x00000000);
9948 offset += 6;
9949
9950 proto_tree_add_item_ret_uint8(radio_tree, hf_ieee1905_rsn_parameter_configuration_radio_bss_num,
9951 tvb, offset, 1, ENC_NA0x00000000, &bss_count);
9952 offset++;
9953
9954 bss_list = proto_tree_add_subtree(radio_tree, tvb, offset, -1,
9955 ett_rsn_parameter_configuration_radio_bss_list,
9956 &bli, "BSS List");
9957
9958 bss_list_start = offset;
9959
9960 while (bss_num < bss_count) {
9961 proto_tree *bss_tree = NULL((void*)0);
9962 proto_tree *security_ies_tree;
9963 proto_item *bi = NULL((void*)0);
9964 proto_item *security_ies_item = NULL((void*)0);
9965 uint16_t security_ies_len;
9966
9967 bss_tree = proto_tree_add_subtree_format(bss_list, tvb, offset,
9968 -1, ett_rsn_parameter_configuration_radio_bss,
9969 &bi, "BSS %u", bss_num);
9970
9971 proto_tree_add_item(bss_tree, hf_ieee1905_rsn_parameter_configuration_radio_bss_bssid,
9972 tvb, offset, 6, ENC_NA0x00000000);
9973 offset += 6;
9974
9975 proto_tree_add_item(bss_tree, hf_ieee1905_rsn_parameter_configuration_radio_bss_index,
9976 tvb, offset, 1, ENC_NA0x00000000);
9977 offset++;
9978
9979 proto_tree_add_item_ret_uint16(bss_tree, hf_ieee1905_rsn_parameter_configuration_radio_bss_security_ies_len,
9980 tvb, offset, 2, ENC_BIG_ENDIAN0x00000000, &security_ies_len);
9981 offset += 2;
9982
9983 if (security_ies_len > 0) {
9984 security_ies_item = proto_tree_add_item(bss_tree,
9985 hf_ieee1905_rsn_parameter_configuration_radio_bss_security_ies,
9986 tvb, offset, security_ies_len, ENC_NA0x00000000);
9987
9988 security_ies_tree = proto_item_add_subtree(security_ies_item, ett_supported_cipher_security_cs_sub_tree);
9989
9990 dissect_80211_information_elements(tvb, pinfo, security_ies_tree, offset, security_ies_len);
9991
9992 offset += security_ies_len;
9993 }
9994
9995 proto_tree_add_item(bss_tree, hf_ieee1905_rsn_parameter_configuration_radio_bss_reserved,
9996 tvb, offset, 16, ENC_NA0x00000000);
9997 offset += 16;
9998
9999 bss_num++;
10000 }
10001
10002 proto_tree_add_item(radio_tree, hf_ieee1905_rsn_parameter_configuration_radio_reserved,
10003 tvb, offset, 16, ENC_NA0x00000000);
10004 offset += 16;
10005
10006 proto_item_set_len(bli, offset - bss_list_start);
10007
10008 radio_num++;
10009 }
10010
10011 proto_item_set_len(rli, offset - radio_list_start);
10012
10013 return offset;
10014}
10015
10016/*
10017 * Dissect a RSN Parameter Configuration TLV:
10018 */
10019static int* const bss_advanced_configuration_radio_bss_flags_headers[] = {
10020 &hf_ieee1905_bss_advanced_configuration_radio_bss_flags_ssid_advertisement,
10021 &hf_ieee1905_bss_advanced_configuration_radio_bss_flags_reserved,
10022 NULL((void*)0)
10023};
10024
10025static int
10026dissect_bss_advanced_configuration(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
10027 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
10028{
10029 proto_tree *radio_list = NULL((void*)0);
10030 proto_item *rli = NULL((void*)0);
10031 uint8_t radio_count = 0, radio_num = 0;
10032 unsigned radio_list_start = 0;
10033
10034 proto_tree_add_item_ret_uint8(tree, hf_ieee1905_bss_advanced_configuration_radio_num,
10035 tvb, offset, 1, ENC_NA0x00000000, &radio_count);
10036 offset++;
10037
10038 radio_list = proto_tree_add_subtree(tree, tvb, offset, -1,
10039 ett_bss_advanced_configuration_radio_list,
10040 &rli, "Radio List");
10041
10042 radio_list_start = offset;
10043
10044 while (radio_num < radio_count) {
10045 proto_tree *radio_tree = NULL((void*)0);
10046 proto_item *ri = NULL((void*)0);
10047 proto_tree *bss_list = NULL((void*)0);
10048 proto_item *bli = NULL((void*)0);
10049 uint8_t bss_count = 0, bss_num = 0;
10050 unsigned bss_list_start = 0;
10051
10052 radio_tree = proto_tree_add_subtree_format(radio_list, tvb, offset,
10053 -1, ett_eht_operations_radio,
10054 &ri, "Radio %u", radio_num);
10055
10056 proto_tree_add_item(radio_tree, hf_ieee1905_bss_advanced_configuration_radio_id,
10057 tvb, offset, 6, ENC_NA0x00000000);
10058 offset += 6;
10059
10060 proto_tree_add_item_ret_uint8(radio_tree, hf_ieee1905_bss_advanced_configuration_radio_bss_num,
10061 tvb, offset, 1, ENC_NA0x00000000, &bss_count);
10062 offset++;
10063
10064 bss_list = proto_tree_add_subtree(radio_tree, tvb, offset, -1,
10065 ett_bss_advanced_configuration_radio_bss_list,
10066 &bli, "BSS List");
10067
10068 bss_list_start = offset;
10069
10070 while (bss_num < bss_count) {
10071 proto_tree *bss_tree = NULL((void*)0);
10072 proto_item *bi = NULL((void*)0);
10073
10074 bss_tree = proto_tree_add_subtree_format(bss_list, tvb, offset,
10075 -1, ett_bss_advanced_configuration_radio_bss,
10076 &bi, "BSS %u", bss_num);
10077
10078 proto_tree_add_item(bss_tree, hf_ieee1905_bss_advanced_configuration_radio_bss_bssid,
10079 tvb, offset, 6, ENC_NA0x00000000);
10080 offset += 6;
10081
10082 proto_tree_add_item(bss_tree, hf_ieee1905_bss_advanced_configuration_radio_bss_index,
10083 tvb, offset, 1, ENC_NA0x00000000);
10084 offset++;
10085
10086 proto_tree_add_bitmask(bss_tree, tvb, offset,
10087 hf_ieee1905_bss_advanced_configuration_radio_bss_flags,
10088 ett_bss_advanced_configuration_radio_bss_flags,
10089 bss_advanced_configuration_radio_bss_flags_headers, ENC_NA0x00000000);
10090 offset++;
10091
10092 proto_tree_add_item(bss_tree, hf_ieee1905_bss_advanced_configuration_radio_bss_reserved,
10093 tvb, offset, 4, ENC_NA0x00000000);
10094 offset += 4;
10095
10096 bss_num++;
10097 }
10098
10099 proto_item_set_len(bli, offset - bss_list_start);
10100
10101 radio_num++;
10102 }
10103
10104 proto_item_set_len(rli, offset - radio_list_start);
10105
10106 return offset;
10107}
10108
10109/*
10110 * Dissect a Supported Cipher Suites TLV:
10111 */
10112static int
10113dissect_supported_cipher_suites(tvbuff_t *tvb, packet_info *pinfo _U___attribute__((unused)),
10114 proto_tree *tree, unsigned offset, uint16_t len _U___attribute__((unused)))
10115{
10116 proto_item *suites_item, *suites_sub_item;
10117 proto_tree *suites_tree, *suites_sub_tree;
10118 uint8_t num_suites;
10119 uint8_t i;
10120
10121 proto_tree_add_item_ret_uint8(tree, hf_ieee1905_supported_cipher_suites_num_cs,
10122 tvb, offset, 1, ENC_NA0x00000000, &num_suites);
10123
10124 offset++;
10125
10126 suites_item = proto_tree_add_item(tree, hf_ieee1905_supported_cipher_suites_cs_list , tvb, offset, num_suites * 4, ENC_NA0x00000000);
10127 suites_tree = proto_item_add_subtree(suites_item, ett_supported_cipher_security_cs_tree);
10128
10129 for (i = 0; i < num_suites; i++) {
10130 suites_sub_item = proto_tree_add_item(suites_tree, hf_ieee1905_supported_cipher_suites_cs, tvb, offset, 4, ENC_BIG_ENDIAN0x00000000);
10131 suites_sub_tree = proto_item_add_subtree(suites_sub_item, ett_supported_cipher_security_cs_sub_tree);
10132
10133 proto_tree_add_item(suites_sub_tree, hf_ieee1905_supported_cipher_suites_cs_oui, tvb, offset, 3, ENC_BIG_ENDIAN0x00000000);
10134 proto_tree_add_item(suites_sub_tree, hf_ieee1905_supported_cipher_suites_cs_type, tvb, offset + 3, 1, ENC_NA0x00000000);
10135
10136 offset +=4;
10137 }
10138
10139 return offset;
10140}
10141
10142/*
10143 * Dissect each of the TLV types we know about
10144 */
10145static int
10146// NOLINTNEXTLINE(misc-no-recursion)
10147dissect_ieee1905_tlv_data(tvbuff_t *tvb, packet_info *pinfo,
10148 proto_tree *tree, unsigned offset, uint8_t tlv_type, uint16_t tlv_len)
10149{
10150 unsigned link_metric_query;
10151
10152 switch (tlv_type) {
10153
10154 case AL_MAC_ADDRESS_TYPE_TLV1:
10155 proto_tree_add_item(tree, hf_ieee1905_al_mac_address_type, tvb,
10156 offset, 6, ENC_NA0x00000000);
10157 offset += 6;
10158 break;
10159
10160 case MAC_ADDRESS_TYPE_TLV2:
10161 proto_tree_add_item(tree, hf_ieee1905_mac_address_type, tvb,
10162 offset, 6, ENC_NA0x00000000);
10163 offset += 6;
10164 break;
10165
10166 case DEVICE_INFORMATION_TYPE_TLV3:
10167 offset = dissect_device_information_type(tvb, pinfo, tree, offset,
10168 tlv_len);
10169 break;
10170
10171 case DEVICE_BRIDGING_CAPABILITY_TLV4:
10172 offset = dissect_device_bridging_capabilities(tvb, pinfo, tree,
10173 offset, tlv_len);
10174 break;
10175
10176 case NON_1905_NEIGHBOR_DEVICE_LIST_TLV6:
10177 offset = dissect_non_1905_neighbor_device_list(tvb, pinfo, tree,
10178 offset, tlv_len);
10179 break;
10180
10181 case NEIGHBOR_DEVICE_TLV7:
10182 offset = dissect_1905_neighbor_device(tvb, pinfo, tree, offset,
10183 tlv_len);
10184 break;
10185
10186 case LINK_METRIC_QUERY_TLV8:
10187 proto_tree_add_item_ret_uint(tree,
10188 hf_ieee1905_link_metric_query_type,
10189 tvb, offset, 1, ENC_NA0x00000000,
10190 &link_metric_query);
10191 offset++;
10192
10193 if (link_metric_query) {
10194 proto_tree_add_item(tree, hf_ieee1905_al_mac_address_type, tvb,
10195 offset, 6, ENC_NA0x00000000);
10196 offset += 6;
10197 }
10198
10199 proto_tree_add_item(tree, hf_ieee1905_link_metrics_requested, tvb,
10200 offset, 1, ENC_NA0x00000000);
10201 offset++;
10202 break;
10203
10204 case TRANSMITTER_LINK_METRIC_TLV9:
10205 offset = dissect_transmitter_link_metric(tvb, pinfo, tree, offset,
10206 tlv_len);
10207 break;
10208
10209 case RECEIVER_LINK_METRIC_TLV10:
10210 offset = dissect_receiver_link_metric(tvb, pinfo, tree, offset,
10211 tlv_len);
10212 break;
10213
10214 case VENDOR_SPECIFIC_TLV11:
10215 offset = dissect_vendor_specific(tvb, pinfo, tree, offset, tlv_len);
10216 break;
10217
10218 case LINK_METRIC_RESULT_CODE_TLV12:
10219 offset = dissect_link_metric_result_code(tvb, pinfo, tree, offset);
10220 break;
10221
10222 case SEARCHED_ROLE_TLV13:
10223 offset = dissect_searched_role(tvb, pinfo, tree, offset);
10224 break;
10225
10226 case AUTO_CONFIG_FREQ_BAND_TLV14:
10227 offset = dissect_auto_config_freq_band(tvb, pinfo, tree, offset);
10228 break;
10229
10230 case SUPPORTED_ROLE_TLV15:
10231 offset = dissect_supported_role(tvb, pinfo, tree, offset);
10232 break;
10233
10234 case SUPPORTED_FREQ_BAND_TLV16:
10235 offset = dissect_supported_freq_band(tvb, pinfo, tree, offset);
10236 break;
10237
10238 case WSC_TLV17:
10239 offset = dissect_wsc(tvb, pinfo, tree, offset, tlv_len);
10240 break;
10241
10242 case PUSH_BUTTON_EVENT_NOTIFICATION_TLV18:
10243 offset = dissect_push_button_event_notification(tvb, pinfo,
10244 tree, offset);
10245 break;
10246
10247 case PUSH_BUTTON_JOIN_NOTIFICATION_TLV19:
10248 offset = dissect_push_button_join_notification(tvb, pinfo,
10249 tree, offset);
10250 break;
10251
10252 case GENERIC_PHY_DEVICE_INFORMATION_TLV20:
10253 offset = dissect_generic_phy_device_info(tvb, pinfo, tree,
10254 offset);
10255 break;
10256
10257 case DEVICE_IDENTIFICATION_TYPE_TLV21:
10258 offset = dissect_device_identification(tvb, pinfo, tree,
10259 offset);
10260 break;
10261
10262 case CONTROL_URL_TYPE_TLV22:
10263 offset = dissect_control_url_type(tvb, pinfo, tree, offset, tlv_len);
10264 break;
10265
10266 case IPV4_TYPE_TLV23:
10267 offset = dissect_ipv4_type(tvb, pinfo, tree, offset);
10268 break;
10269
10270 case IPV6_TYPE_TLV24:
10271 offset = dissect_ipv6_type(tvb, pinfo, tree, offset);
10272 break;
10273
10274 case PUSH_BUTTON_EVENT_TYPE_NOTIFICATION_TLV25:
10275 offset = dissect_push_button_event_type_notification(tvb, pinfo, tree,
10276 offset);
10277 break;
10278
10279 case IEEE1905_PROFILE_VERSION_TLV26:
10280 offset = dissect_profile_version(tvb, pinfo, tree, offset);
10281 break;
10282
10283 case POWER_OFF_INTERFACE_TLV27:
10284 offset = dissect_power_off_interface(tvb, pinfo, tree, offset);
10285 break;
10286
10287 case INTERFACE_POWER_CHANGE_INFORMATION_TLV28:
10288 offset = dissect_interface_power_change_info(tvb, pinfo, tree, offset);
10289 break;
10290
10291 case INTERFACE_POWER_CHANGE_STATUS_TLV29:
10292 offset = dissect_interface_power_change_status(tvb, pinfo, tree, offset);
10293 break;
10294
10295 case L2_NEIGHBOR_DEVICE_TLV30:
10296 offset = dissect_l2_neighbor_device(tvb, pinfo, tree, offset);
10297 break;
10298
10299 case SUPPORTED_SERVICE_TLV0x80:
10300 offset = dissect_supported_service(tvb, pinfo, tree, offset);
10301 break;
10302
10303 case SEARCHED_SERVICE_TLV0x81:
10304 offset = dissect_searched_service(tvb, pinfo, tree, offset);
10305 break;
10306
10307 case AP_RADIO_IDENTIFIER_TLV0x82:
10308 offset = dissect_ap_radio_identifier(tvb, pinfo, tree, offset);
10309 break;
10310
10311 case AP_OPERATIONAL_BSS_TLV0x83:
10312 offset = dissect_ap_operational_bss(tvb, pinfo, tree, offset);
10313 break;
10314
10315 case ASSOCIATED_CLIENTS_TLV0x84:
10316 offset = dissect_associated_clients(tvb, pinfo, tree, offset);
10317 break;
10318
10319 case AP_RADIO_BASIC_CAPABILITIES_TLV0x85:
10320 offset = dissect_ap_radio_basic_capabilities(tvb, pinfo, tree, offset);
10321 break;
10322
10323 case AP_HT_CAPABILITIES_TLV0x86:
10324 offset = dissect_ap_ht_capabilities(tvb, pinfo, tree, offset);
10325 break;
10326
10327 case AP_VHT_CAPABILITIES_TLV0x87:
10328 offset = dissect_ap_vht_capabilities(tvb, pinfo, tree, offset);
10329 break;
10330
10331 case AP_HE_CAPABILITIES_TLV0x88:
10332 offset = dissect_ap_he_capabilities(tvb, pinfo, tree, offset);
10333 break;
10334
10335 case STEERING_POLICY_TLV0x89:
10336 offset = dissect_steering_policy(tvb, pinfo, tree, offset, tlv_len);
10337 break;
10338
10339 case METRIC_REPORTING_POLICY_TLV0x8A:
10340 offset = dissect_metric_reporting_policy(tvb, pinfo, tree, offset);
10341 break;
10342
10343 case CHANNEL_PREFERENCE_TLV0x8B:
10344 offset = dissect_channel_preference(tvb, pinfo, tree, offset, tlv_len);
10345 break;
10346
10347 case RADIO_OPERATION_RESTRICTION_TLV0x8C:
10348 offset = dissect_radio_operation_restriction(tvb, pinfo, tree, offset,
10349 tlv_len);
10350 break;
10351
10352 case TRANSMIT_POWER_LIMIT_TLV0x8D:
10353 offset = dissect_transmit_power_limit(tvb, pinfo, tree, offset);
10354 break;
10355
10356 case CHANNEL_SELECTION_RESPONSE_TLV0x8E:
10357 offset = dissect_channel_selection_response(tvb, pinfo, tree, offset);
10358 break;
10359
10360 case OPERATING_CHANNEL_REPORT_TLV0x8F:
10361 offset = dissect_operating_channel_report(tvb, pinfo, tree, offset);
10362 break;
10363
10364 case CLIENT_INFO_TLV0x90:
10365 offset = dissect_client_info(tvb, pinfo, tree, offset);
10366 break;
10367
10368 case CLIENT_CAPABILITY_REPORT_TLV0x91:
10369 offset = dissect_client_capability_report(tvb, pinfo, tree, offset, tlv_len);
10370 break;
10371
10372 case CLIENT_ASSOCIATION_EVENT_TLV0x92:
10373 offset = dissect_client_association_event(tvb, pinfo, tree, offset);
10374 break;
10375
10376 case AP_METRIC_QUERY_TLV0x93:
10377 offset = dissect_ap_metric_query(tvb, pinfo, tree, offset, tlv_len);
10378 break;
10379
10380 case AP_METRICS_TLV0x94:
10381 offset = dissect_ap_metrics(tvb, pinfo, tree, offset, tlv_len);
10382 break;
10383
10384 case STA_MAC_ADDRESS_TYPE_TLV0x95:
10385 offset = dissect_sta_mac_address_type(tvb, pinfo, tree, offset, tlv_len);
10386 break;
10387
10388 case ASSOCIATED_STA_LINK_METRICS_TLV0x96:
10389 offset = dissect_associated_sta_link_metrics(tvb, pinfo, tree, offset,
10390 tlv_len);
10391 break;
10392
10393 case UNASSOCIATED_STA_LINK_METRICS_QUERY_TLV0x97:
10394 offset = dissect_unassociated_sta_link_metrics_query(tvb, pinfo, tree,
10395 offset, tlv_len);
10396 break;
10397
10398 case UNASSOCIATED_STA_LINK_METRICS_RESPONSE_TLV0x98:
10399 offset = dissect_unassociated_sta_link_metric_response(tvb, pinfo, tree,
10400 offset, tlv_len);
10401 break;
10402
10403 case BEACON_METRICS_QUERY_TLV0x99:
10404 offset = dissect_beacon_metrics_query(tvb, pinfo, tree, offset, tlv_len);
10405 break;
10406
10407 case BEACON_METRICS_RESPONSE_TLV0x9A:
10408 offset = dissect_beacon_metrics_response(tvb, pinfo, tree, offset, tlv_len);
10409 break;
10410
10411 case STEERING_REQUEST_TLV0x9B:
10412 offset = dissect_steering_request(tvb, pinfo, tree, offset, tlv_len);
10413 break;
10414
10415 case STEERING_BTM_REPORT_TLV0x9C:
10416 offset = dissect_steering_btm_report(tvb, pinfo, tree, offset, tlv_len);
10417 break;
10418
10419 case CLIENT_ASSOCIATION_CONTROL_REQUEST_TLV0x9D:
10420 offset = dissect_client_association_control_request(tvb, pinfo, tree, offset);
10421 break;
10422
10423 case BACKHAUL_STEERING_REQUEST_TLV0x9E:
10424 offset = dissect_backhaul_steering_request(tvb, pinfo, tree, offset);
10425 break;
10426
10427 case BACKHAUL_STEERING_RESPONSE_TLV0x9F:
10428 offset = dissect_backhaul_steering_response(tvb, pinfo, tree, offset);
10429 break;
10430
10431 case HIGHER_LAYER_DATA_TLV0xA0:
10432 offset = dissect_higher_layer_data(tvb, pinfo, tree, offset, tlv_len);
10433 break;
10434
10435 case AP_CAPABILITY_TLV0xA1:
10436 offset = dissect_ap_capability(tvb, pinfo, tree, offset);
10437 break;
10438
10439 case ASSOCIATED_STA_TRAFFIC_STATS_TLV0xA2:
10440 offset = dissect_associated_sta_traffic_stats(tvb, pinfo, tree, offset, tlv_len);
10441 break;
10442
10443 case ERROR_CODE_TLV0xA3:
10444 offset = dissect_error_code(tvb, pinfo, tree, offset, tlv_len);
10445 break;
10446
10447 case CHANNEL_SCAN_REPORTING_POLICY_TLV0xA4:
10448 offset = dissect_channel_scan_reporting_policy(tvb, pinfo, tree,
10449 offset, tlv_len);
10450 break;
10451
10452 case CHANNEL_SCAN_CAPABILITIES_TLV0xA5:
10453 offset = dissect_channel_scan_capabilities(tvb, pinfo, tree, offset,
10454 tlv_len);
10455 break;
10456
10457 case CHANNEL_SCAN_REQUEST_TLV0xA6:
10458 offset = dissect_channel_scan_request(tvb, pinfo, tree, offset,
10459 tlv_len);
10460 break;
10461
10462 case CHANNEL_SCAN_RESULT_TLV0xA7:
10463 offset = dissect_channel_scan_result(tvb, pinfo, tree, offset, tlv_len);
10464 break;
10465
10466 case TIMESTAMP_TLV0xA8:
10467 offset = dissect_timestamp(tvb, pinfo, tree, offset, tlv_len);
10468 break;
10469
10470 case IEEE1905_LAYER_SECURITY_CAPABILITY_TLV0xA9:
10471 offset = dissect_1905_layer_security_capability(tvb, pinfo, tree,
10472 offset, tlv_len);
10473 break;
10474
10475 case AP_WF6_CAPABILITIES_TLV0xAA:
10476 offset = dissect_ap_wf6_capabilities(tvb, pinfo, tree, offset, tlv_len);
10477 break;
10478
10479 case MIC_TLV0xAB:
10480 offset = dissect_mic(tvb, pinfo, tree, offset, tlv_len);
10481 break;
10482
10483 case ENCRYPTED_TLV0xAC:
10484 offset = dissect_encrypted(tvb, pinfo, tree, offset, tlv_len);
10485 break;
10486
10487 case CAC_REQUEST_TLV0xAD:
10488 offset = dissect_cac_request(tvb, pinfo, tree, offset, tlv_len);
10489 break;
10490
10491 case CAC_TERMINATION_TLV0xAE:
10492 offset = dissect_cac_termination(tvb, pinfo, tree, offset, tlv_len);
10493 break;
10494
10495 case CAC_COMPLETION_REPORT_TLV0xAF:
10496 offset = dissect_cac_completion_report(tvb, pinfo, tree, offset,
10497 tlv_len);
10498 break;
10499
10500 case ASSOCIATED_WF6_STA_STATUS_REPORT_TLV0xB0:
10501 offset = dissect_associated_wf6_sta_status_report(tvb, pinfo, tree,
10502 offset, tlv_len);
10503 break;
10504
10505 case CAC_STATUS_REPORT_TLV0xB1:
10506 offset = dissect_cac_status_report(tvb, pinfo, tree, offset, tlv_len);
10507 break;
10508
10509 case CAC_CAPABILITIES_TLV0xB2:
10510 offset = dissect_cac_capabilities(tvb, pinfo, tree, offset, tlv_len);
10511 break;
10512
10513 case MULTI_AP_PROFILE_TLV0xB3:
10514 offset = dissect_multi_ap_version(tvb, pinfo, tree, offset, tlv_len);
10515 break;
10516
10517 case PROFILE_2_AP_CAPABILITY_TLV0xB4:
10518 offset = dissect_r2_ap_capability(tvb, pinfo, tree, offset, tlv_len);
10519 break;
10520
10521 case DEFAULT_802_1Q_SETTINGS_TLV0xB5:
10522 offset = dissect_default_802_1q_settings(tvb, pinfo, tree, offset,
10523 tlv_len);
10524 break;
10525
10526 case TRAFFIC_SEPARATION_POLICY_TLV0xB6:
10527 offset = dissect_traffic_separation_policy(tvb, pinfo, tree, offset,
10528 tlv_len);
10529 break;
10530
10531 case BSS_CONFIGURATION_REPORT_TLV0xB7:
10532 offset = dissect_bss_configuration_report(tvb, pinfo, tree, offset,
10533 tlv_len);
10534 break;
10535
10536 case BSSID_TLV0xB8:
10537 offset = dissect_bssid(tvb, pinfo, tree, offset, tlv_len);
10538 break;
10539
10540 case SERVICE_PRIORITIZATION_RULE_TLV0xB9:
10541 offset = dissect_service_prioritization_rule(tvb, pinfo, tree, offset,
10542 tlv_len);
10543 break;
10544
10545 case DSCP_MAPPING_TABLE_TLV0xBA:
10546 offset = dissect_dscp_mapping_table(tvb, pinfo, tree, offset, tlv_len);
10547 break;
10548
10549 case PROFILE_2_ERROR_CODE_TLV0xBC:
10550 offset = dissect_r2_error_code(tvb, pinfo, tree, offset, tlv_len);
10551 break;
10552
10553 case AP_RADIO_ADVANCED_CAPABILITIES_TLV0xBE:
10554 offset = dissect_ap_radio_advanced_capabilities(tvb, pinfo, tree,
10555 offset, tlv_len);
10556 break;
10557
10558 case ASSOCIATION_STATUS_NOTIFICATION_TLV0xBF:
10559 offset = dissect_association_status_notification(tvb, pinfo, tree,
10560 offset, tlv_len);
10561 break;
10562
10563 case SOURCE_INFO_TLV0xC0:
10564 offset = dissect_source_info(tvb, pinfo, tree, offset, tlv_len);
10565 break;
10566
10567 case TUNNELED_MESSAGE_TYPE_TLV0xC1:
10568 offset = dissect_tunneled_message_type(tvb, pinfo, tree, offset,
10569 tlv_len);
10570 break;
10571
10572 case TUNNELED_TLV0xC2:
10573 offset = dissect_tunneled(tvb, pinfo, tree, offset, tlv_len);
10574 break;
10575
10576 case PROFILE_2_STEERING_REQUEST_TLV0xC3:
10577 offset = dissect_r2_steering_request(tvb, pinfo, tree, offset, tlv_len);
10578 break;
10579
10580 case UNSUCCESSFUL_ASSOCIATION_POLICY_TLV0xC4:
10581 offset = dissect_unsuccessful_association_policy(tvb, pinfo, tree,
10582 offset, tlv_len);
10583 break;
10584
10585 case METRIC_COLLECTION_INTERVAL_TLV0xC5:
10586 offset = dissect_metric_collection_interval(tvb, pinfo, tree, offset,
10587 tlv_len);
10588 break;
10589
10590 case RADIO_METRICS_TLV0xC6:
10591 offset = dissect_radio_metrics(tvb, pinfo, tree, offset, tlv_len);
10592 break;
10593
10594 case AP_EXTENDED_METRICS_TLV0xC7:
10595 offset = dissect_ap_extended_metrics(tvb, pinfo, tree, offset, tlv_len);
10596 break;
10597
10598 case ASSOCIATED_STA_EXTENDED_LINK_METRICS_TLV0xC8:
10599 offset = dissect_associated_sta_extended_link_metrics(tvb, pinfo, tree,
10600 offset, tlv_len);
10601 break;
10602
10603 case STATUS_CODE_TLV0xC9:
10604 offset = dissect_status_code(tvb, pinfo, tree, offset,
10605 tlv_len);
10606 break;
10607
10608 case REASON_CODE_TLV0xCA:
10609 offset = dissect_disassociation_reason_code(tvb, pinfo, tree, offset,
10610 tlv_len);
10611 break;
10612
10613 case BACKHAUL_STA_RADIO_CAPABILITIES_TLV0xCB:
10614 offset = dissect_backhaul_sta_radio_capabilities(tvb, pinfo, tree,
10615 offset, tlv_len);
10616 break;
10617
10618 case AKM_SUITE_CAPABILITIES_TLV0xCC:
10619 offset = dissect_akm_suite_capabilities(tvb, pinfo, tree, offset,
10620 tlv_len);
10621 break;
10622
10623 case IEEE1905_ENCAP_DPP_TLV0xCD:
10624 offset = dissect_1905_encap_dpp(tvb, pinfo, tree, offset, tlv_len);
10625 break;
10626
10627 case IEEE1905_ENCAP_EAPOL_TLV0xCE:
10628 offset = dissect_1905_encap_eapol(tvb, pinfo, tree, offset, tlv_len);
10629 break;
10630
10631 case DPP_BOOTSTRAPPING_URI_NOTIFICATION_TLV0xCF:
10632 offset = dissect_dpp_bootstrapping_uri_notification(tvb, pinfo, tree,
10633 offset, tlv_len);
10634 break;
10635
10636 case DPP_CCE_INDICATION_TLV0xD2:
10637 offset = dissect_dpp_cce_indication(tvb, pinfo, tree, offset, tlv_len);
10638 break;
10639
10640 case DPP_CHIRP_VALUE_TLV0xD3:
10641 offset = dissect_dpp_chirp_value(tvb, pinfo, tree, offset, tlv_len);
10642 break;
10643
10644 case DEVICE_INVENTORY_TLV0xD4:
10645 offset = dissect_device_inventory(tvb, pinfo, tree, offset, tlv_len);
10646 break;
10647
10648 case AGENT_LIST_TLV0xD5:
10649 offset = dissect_agent_list(tvb, pinfo, tree, offset, tlv_len);
10650 break;
10651
10652 case BSS_CONFIGURATION_REQUEST_TLV0xBB:
10653 offset = dissect_bss_configuration_request(tvb, pinfo, tree, offset,
10654 tlv_len);
10655 break;
10656
10657 case BSS_CONFIGURATION_RESPONSE_TLV0xBD:
10658 offset = dissect_bss_configuration_response(tvb, pinfo, tree, offset,
10659 tlv_len);
10660 break;
10661
10662 case DPP_MESSAGE_TLV0xD1:
10663 offset = dissect_dpp_message(tvb, pinfo, tree, offset, tlv_len);
10664 break;
10665
10666 case SPATIAL_REUSE_REQUEST_TLV0xD8:
10667 offset = dissect_spatial_reuse_request(tvb, pinfo, tree, offset,
10668 tlv_len);
10669 break;
10670
10671 case SPATIAL_REUSE_REPORT_TLV0xD9:
10672 offset = dissect_spatial_reuse_report(tvb, pinfo, tree, offset,
10673 tlv_len);
10674 break;
10675
10676 case SPATIAL_REUSE_CONFIG_RESPONSE_TLV0xDA:
10677 offset = dissect_spatial_reuse_config_response(tvb, pinfo, tree,
10678 offset, tlv_len);
10679 break;
10680
10681 case QOS_MANAGEMENT_POLICY_TLV0xDB:
10682 offset = dissect_qos_management_policy(tvb, pinfo, tree, offset,
10683 tlv_len);
10684 break;
10685
10686 case QOS_MANAGEMENT_DESCRIPTOR_TLV0xDC:
10687 offset = dissect_qos_management_descriptor(tvb, pinfo, tree, offset,
10688 tlv_len);
10689 break;
10690
10691 case CONTROLLER_CAPABILITY_TLV0xDD:
10692 offset = dissect_controller_capability(tvb, pinfo, tree, offset,
10693 tlv_len);
10694 break;
10695
10696 case WIFI7_AGENT_CAPABILITIES_TLV0xDF:
10697 offset = dissect_wifi_7_agent_capabilities(tvb, pinfo, tree, offset,
10698 tlv_len);
10699 break;
10700
10701 case AGENT_AP_MLD_CONFIGURATION_TLV0xE0:
10702 offset = dissect_agent_agent_ap_mld_configuration(tvb, pinfo, tree, offset,
10703 tlv_len);
10704 break;
10705
10706 case BACKHAUL_STA_MLD_CONFIGURATION_TLV0xE1:
10707 offset = dissect_backhaul_sta_mld_configuration(tvb, pinfo, tree, offset,
10708 tlv_len);
10709 break;
10710
10711 case ASSOCIATED_STA_MLD_CONFIGURATION_TLV0xE2:
10712 offset = dissect_associated_sta_mld_configuration(tvb, pinfo, tree, offset,
10713 tlv_len);
10714 break;
10715
10716 case MLD_STRUCTURE_TLV0xE3:
10717 offset = dissect_mld_structure(tvb, pinfo, tree, offset, tlv_len);
10718 break;
10719
10720 case AFFILIATED_STA_METRICS_TLV0xE4:
10721 offset = dissect_affiliated_sta_metrics(tvb, pinfo, tree, offset,
10722 tlv_len);
10723 break;
10724
10725 case AFFILIATED_AP_METRICS_TLV0xE5:
10726 offset = dissect_affiliated_ap_metrics(tvb, pinfo, tree, offset,
10727 tlv_len);
10728 break;
10729
10730 case TID_TO_LINK_MAPPING_POLICY_TLV0xE6:
10731 offset = dissect_tid_to_link_mapping_policy_tlv(tvb, pinfo, tree, offset,
10732 tlv_len);
10733 break;
10734
10735 case EHT_OPERATIONS_TLV0xE7:
10736 offset = dissect_eht_operations_tlv(tvb, pinfo, tree, offset,
10737 tlv_len);
10738 break;
10739
10740 case AVAILABLE_SPECTRUM_INQUIRY_REQUEST_TLV0xE8:
10741 offset = dissect_available_spectrum_inquiry_request(tvb, pinfo, tree, offset,
10742 tlv_len);
10743 break;
10744
10745 case AVAILABLE_SPECTRUM_INQUIRY_RESPONSE_TLV0xE9:
10746 offset = dissect_available_spectrum_inquiry_response(tvb, pinfo, tree, offset,
10747 tlv_len);
10748 break;
10749
10750 case RSN_DIAGNOSTIC_REPORT_TLV0xEA:
10751 offset = dissect_rsn_diagnostic_report(tvb, pinfo, tree, offset, tlv_len);
10752 break;
10753
10754 case RSN_PARAMETER_CONFIGURATION_TLV0xEB:
10755 offset = dissect_rsn_parameter_configuration(tvb, pinfo, tree, offset, tlv_len);
10756 break;
10757
10758 case BSS_ADVANCED_CONFIGURATION_TLV0xEC:
10759 offset = dissect_bss_advanced_configuration(tvb, pinfo, tree, offset, tlv_len);
10760 break;
10761
10762 case SUPPORTED_CIPHER_SUITES_TLV0xED:
10763 offset = dissect_supported_cipher_suites(tvb, pinfo, tree, offset, tlv_len);
10764 break;
10765
10766 default:
10767 proto_tree_add_item(tree, hf_ieee1905_tlv_data, tvb, offset, tlv_len, ENC_NA0x00000000);
10768 offset += tlv_len;
10769 }
10770
10771 return offset;
10772}
10773
10774static int * const tlv_len_headers[] = {
10775 &hf_ieee1905_tlv_len_reserved,
10776 &hf_ieee1905_tlv_len_length,
10777 NULL((void*)0)
10778};
10779
10780#ifndef min
10781#define min(a, b)((a < b) ? a : b) ((a < b) ? a : b)
10782#endif
10783
10784static int
10785// NOLINTNEXTLINE(misc-no-recursion)
10786dissect_ieee1905_tlvs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
10787{
10788 bool_Bool eom_seen;
7
'eom_seen' declared without an initial value
10789 bool_Bool mic_seen = false0;
10790 uint8_t tlv_type;
10791 uint16_t tlv_len;
10792 unsigned offset = 0;
10793
10794 /* If decryption is enabled check if there is a MIC TLV. If yes store all TLVs */
10795 if (enable_decryption) {
8
Assuming 'enable_decryption' is true
9
Taking true branch
10796 do {
10797 tlv_type = tvb_get_uint8(tvb, offset);
10798 tlv_len = tvb_get_ntohs(tvb, offset + 1);
10799
10800 if (tlv_len > tvb_reported_length_remaining(tvb, offset + 3)) {
10
Assuming the condition is true
11
Taking true branch
10801 /* Wrong length */
10802 break;
10803 }
10804
10805 eom_seen = (tlv_type == EOM_TLV0x00) ? true1 : false0;
10806 if (tlv_type == MIC_TLV0xAB) {
10807 mic_seen = true1;
10808 }
10809
10810 offset += 3 + tlv_len;
10811 } while (eom_seen == false0);
10812
10813 if (eom_seen && mic_seen) {
12
Branch condition evaluates to a garbage value
10814 uint8_t *p = wmem_memdup(pinfo->pool, tvb_get_ptr(tvb, 0, offset), offset);
10815
10816 p_add_proto_data(pinfo->pool, pinfo, proto_ieee1905, MIC_TLVS_KEY, p);
10817 p_add_proto_data(pinfo->pool, pinfo, proto_ieee1905, MIC_TLVS_LEN_KEY, GUINT_TO_POINTER(offset)((gpointer) (gulong) (offset)));
10818 p_add_proto_data(pinfo->pool, pinfo, proto_ieee1905, MIC_EOM_KEY, GUINT_TO_POINTER(true)((gpointer) (gulong) (1)));
10819 }
10820 }
10821
10822 offset = 0;
10823 do {
10824 proto_item *tlv_tree;
10825
10826 tlv_type = tvb_get_uint8(tvb, offset);
10827 eom_seen = (tlv_type == EOM_TLV0x00) ? true1 : false0;
10828 /*
10829 * We can only deal with the reported length remaining ATM so take the
10830 * min of the TLV len and the reported len. We have to allow 3 for the
10831 * type and len
10832 */
10833 tlv_len = min(tvb_get_ntohs(tvb, offset + 1),((tvb_get_ntohs(tvb, offset + 1) < tvb_reported_length_remaining
(tvb, offset + 3)) ? tvb_get_ntohs(tvb, offset + 1) : tvb_reported_length_remaining
(tvb, offset + 3))
10834 tvb_reported_length_remaining(tvb, offset + 3))((tvb_get_ntohs(tvb, offset + 1) < tvb_reported_length_remaining
(tvb, offset + 3)) ? tvb_get_ntohs(tvb, offset + 1) : tvb_reported_length_remaining
(tvb, offset + 3))
;
10835
10836 tlv_tree = proto_tree_add_subtree(tree, tvb, offset, tlv_len + 3,
10837 ett_tlv, NULL((void*)0), val_to_str_ext(pinfo->pool, tlv_type,
10838 &ieee1905_tlv_types_vals_ext,
10839 "Unknown: %02x"));
10840
10841 proto_tree_add_item(tlv_tree, hf_ieee1905_tlv_types, tvb, offset, 1, ENC_NA0x00000000);
10842 offset++;
10843
10844 proto_tree_add_bitmask(tlv_tree, tvb, offset, hf_ieee1905_tlv_len,
10845 ett_ieee1905_tlv_len, tlv_len_headers, ENC_BIG_ENDIAN0x00000000);
10846 offset += 2;
10847
10848 if (tlv_len)
10849 offset = dissect_ieee1905_tlv_data(tvb, pinfo, tlv_tree, offset, tlv_type, tlv_len);
10850 } while (eom_seen == false0);
10851
10852 return offset;
10853}
10854
10855static const fragment_items ieee1905_fragment_items = {
10856 /* Fragment subtrees */
10857 &ett_ieee1905_fragment,
10858 &ett_ieee1905_fragments,
10859 /* Fragment fields */
10860 &hf_ieee1905_fragments,
10861 &hf_ieee1905_fragment,
10862 &hf_ieee1905_fragment_overlap,
10863 &hf_ieee1905_fragment_overlap_conflicts,
10864 &hf_ieee1905_fragment_multiple_tails,
10865 &hf_ieee1905_fragment_too_long_fragment,
10866 &hf_ieee1905_fragment_error,
10867 &hf_ieee1905_fragment_count,
10868 &hf_ieee1905_fragment_reassembled_in,
10869 &hf_ieee1905_fragment_reassembled_length,
10870 NULL((void*)0),
10871 "IEEE1905 Fragments"
10872};
10873
10874typedef struct {
10875 address src;
10876 address dst;
10877 uint32_t vlan_id; /* Take the VLAN ID into account */
10878 uint8_t frag_id;
10879} ieee1905_fragment_key;
10880
10881static unsigned
10882ieee1905_fragment_hash(const void *k)
10883{
10884 unsigned hash_val;
10885 const ieee1905_fragment_key *key = (const ieee1905_fragment_key *)k;
10886
10887 if (!key || !key->src.data || !key->dst.data) {
10888 return 0;
10889 }
10890
10891 /* The address can be a string which concatenates the string representation
10892 * of the BDADDR (which might look up the OUI but is limited by MAXNAMELEN
10893 * in addr_resolv to 64 bytes) and the Bluetooth friendly device name, which
10894 * is a maximum of 248 bytes. (See [Vol 2] Part C, Section 4.3.5 and Vol 3
10895 * Part C, Sect 3.2.2.) */
10896 const uint16_t src_len = key->src.len;
10897 const uint16_t dst_len = key->dst.len;
10898 const unsigned hash_buf_len = src_len + dst_len + sizeof(uint8_t) + sizeof(uint32_t);
10899 uint8_t* hash_buf = (uint8_t*)wmem_alloc(NULL((void*)0), hash_buf_len);
10900
10901 memcpy(hash_buf, key->src.data, src_len);
10902 memcpy(&hash_buf[src_len], key->dst.data, dst_len);
10903 hash_buf[src_len + dst_len] = key->frag_id;
10904 memcpy(&hash_buf[src_len + dst_len + sizeof(uint8_t)], &key->vlan_id, sizeof(uint32_t));
10905 hash_val = wmem_strong_hash((const uint8_t *)hash_buf, hash_buf_len);
10906 wmem_free(NULL((void*)0), hash_buf);
10907 return hash_val;
10908}
10909
10910static gboolean
10911ieee1905_fragment_equal(const void *k1, const void *k2)
10912{
10913 const ieee1905_fragment_key *key1 =
10914 (const ieee1905_fragment_key *)k1;
10915 const ieee1905_fragment_key *key2 =
10916 (const ieee1905_fragment_key *)k2;
10917
10918 if (!key1 || !key2) {
10919 return FALSE(0);
10920 }
10921
10922 return (key1->frag_id == key2->frag_id &&
10923 key1->vlan_id == key2->vlan_id &&
10924 addresses_equal(&key1->src, &key2->src) &&
10925 addresses_equal(&key1->src, &key2->src));
10926}
10927
10928static void *
10929ieee1905_fragment_temporary_key(const packet_info *pinfo, const uint32_t id,
10930 const void *data _U___attribute__((unused)))
10931{
10932 ieee1905_fragment_key *key;
10933
10934 if (pinfo->src.data == NULL((void*)0) || pinfo->dst.data == NULL((void*)0)) {
10935 return NULL((void*)0);
10936 }
10937
10938 key = g_slice_new(ieee1905_fragment_key)((ieee1905_fragment_key*) g_slice_alloc ((sizeof (ieee1905_fragment_key
) > 0 ? sizeof (ieee1905_fragment_key) : 1)))
;
10939
10940 key->frag_id = id & 0xFF;
10941 copy_address_shallow(&key->src, &pinfo->src);
10942 copy_address_shallow(&key->dst, &pinfo->dst);
10943 key->vlan_id = pinfo->vlan_id;
10944
10945 return (void *)key;
10946}
10947
10948static void *
10949ieee1905_fragment_persistent_key(const packet_info *pinfo, const unsigned id,
10950 const void *data _U___attribute__((unused)))
10951{
10952 if (pinfo->src.data == NULL((void*)0) || pinfo->dst.data == NULL((void*)0)) {
10953 return NULL((void*)0);
10954 }
10955
10956 ieee1905_fragment_key *key = g_slice_new(ieee1905_fragment_key)((ieee1905_fragment_key*) g_slice_alloc ((sizeof (ieee1905_fragment_key
) > 0 ? sizeof (ieee1905_fragment_key) : 1)))
;
10957
10958 key->frag_id = id & 0xFF;
10959 copy_address(&key->src, &pinfo->src);
10960 copy_address(&key->dst, &pinfo->dst);
10961 key->vlan_id = pinfo->vlan_id;
10962
10963 return (void *)key;
10964}
10965
10966static void
10967ieee1905_fragment_free_temporary_key(void *ptr)
10968{
10969 ieee1905_fragment_key *key = (ieee1905_fragment_key *)ptr;
10970
10971 g_slice_free(ieee1905_fragment_key, key)do { if (1) g_slice_free1 (sizeof (ieee1905_fragment_key), (key
)); else (void) ((ieee1905_fragment_key*) 0 == (key)); } while
(0)
;
10972}
10973
10974static void
10975ieee1905_fragment_free_persistent_key(void *ptr)
10976{
10977 ieee1905_fragment_key *key = (ieee1905_fragment_key *)ptr;
10978
10979 if (key) {
10980 free_address(&key->src);
10981 free_address(&key->dst);
10982 g_slice_free(ieee1905_fragment_key, key)do { if (1) g_slice_free1 (sizeof (ieee1905_fragment_key), (key
)); else (void) ((ieee1905_fragment_key*) 0 == (key)); } while
(0)
;
10983 }
10984}
10985
10986static reassembly_table g_ieee1905_reassembly_table;
10987
10988static reassembly_table_functions ieee1905_reassembly_table_functions = {
10989 ieee1905_fragment_hash,
10990 ieee1905_fragment_equal,
10991 ieee1905_fragment_temporary_key,
10992 ieee1905_fragment_persistent_key,
10993 ieee1905_fragment_free_temporary_key,
10994 ieee1905_fragment_free_persistent_key,
10995};
10996
10997#define LAST_IEEE1905_FRAGMENT0x80 0x80
10998
10999static int
11000dissect_ieee1905(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U___attribute__((unused)))
11001{
11002 proto_item *ti;
11003 proto_tree *ieee1905_tree;
11004 uint16_t message_type;
11005 unsigned offset = 0, next_offset = 0;
11006 static int * const flag_headers[] = {
11007 &hf_ieee1905_last_fragment,
11008 &hf_ieee1905_relay_indicator,
11009 NULL((void*)0)
11010 };
11011 uint16_t msg_id = tvb_get_ntohs(tvb, 4);
11012 uint8_t frag_id = tvb_get_uint8(tvb, 6);
11013 uint8_t flags = tvb_get_uint8(tvb, 7);
11014 tvbuff_t *next_tvb = NULL((void*)0);
11015
11016 /* If decryption is enabled the first 6 bytes of the CMDU need to be stored */
11017 if (enable_decryption) {
1
Assuming 'enable_decryption' is false
2
Taking false branch
11018 uint8_t *p = wmem_memdup(pinfo->pool, tvb_get_ptr(tvb, 0, DECRYPT_MIC_CMDU_OCTETS6), DECRYPT_MIC_CMDU_OCTETS6);
11019
11020 p_add_proto_data(pinfo->pool, pinfo, proto_ieee1905, DECRYPT_MIC_CMDU_OCTETS_KEY, p);
11021 }
11022
11023 col_set_str(pinfo->cinfo, COL_PROTOCOL, "ieee1905");
11024
11025 col_clear(pinfo->cinfo, COL_INFO);
11026
11027 message_type = tvb_get_ntohs(tvb, 2);
11028
11029 col_add_str(pinfo->cinfo, COL_INFO,
11030 val_to_str_ext(pinfo->pool, message_type, &ieee1905_message_type_vals_ext,
11031 "Unknown: %u"));
11032
11033 ti = proto_tree_add_item(tree, proto_ieee1905, tvb, 0, -1, ENC_NA0x00000000);
11034
11035 ieee1905_tree = proto_item_add_subtree(ti, ett_ieee1905);
11036
11037 proto_tree_add_item(ieee1905_tree, hf_ieee1905_message_version, tvb, offset, 1, ENC_NA0x00000000);
11038 offset++;
11039
11040 proto_tree_add_item(ieee1905_tree, hf_ieee1905_message_reserved, tvb, offset, 1, ENC_NA0x00000000);
11041 offset++;
11042
11043 proto_tree_add_item(ieee1905_tree, hf_ieee1905_message_type, tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
11044 offset += 2;
11045
11046 proto_tree_add_item(ieee1905_tree, hf_ieee1905_message_id, tvb, offset, 2, ENC_BIG_ENDIAN0x00000000);
11047 offset += 2;
11048
11049 proto_tree_add_item(ieee1905_tree, hf_ieee1905_fragment_id, tvb, offset, 1, ENC_NA0x00000000);
11050 offset++;
11051
11052 proto_tree_add_bitmask(ieee1905_tree, tvb, offset, hf_ieee1905_flags,
11053 ett_ieee1905_flags, flag_headers, ENC_NA0x00000000);
11054 offset++;
11055
11056 /*
11057 * Now figure out if it is a fragment and do reassembly. If we have a
11058 * fragment but not the whole lot, just dissect it as data, otherwise
11059 * dissect it.
11060 */
11061 if ((flags & LAST_IEEE1905_FRAGMENT0x80) && frag_id == 0) {
3
Assuming the condition is true
4
Assuming 'frag_id' is equal to 0
5
Taking true branch
11062 next_tvb = tvb_new_subset_remaining(tvb, offset);
11063 next_offset = dissect_ieee1905_tlvs(next_tvb, pinfo, ieee1905_tree);
6
Calling 'dissect_ieee1905_tlvs'
11064 } else {
11065 bool_Bool save_fragmented = pinfo->fragmented;
11066 pinfo->fragmented = true1;
11067 fragment_head *frag_head = NULL((void*)0);
11068 tvbuff_t *new_tvb = NULL((void*)0);
11069 unsigned remaining_length = tvb_captured_length_remaining(tvb, offset);
11070
11071 frag_head = fragment_add_seq_check(&g_ieee1905_reassembly_table, tvb,
11072 offset, pinfo,
11073 msg_id, NULL((void*)0), frag_id,
11074 remaining_length,
11075 (flags & LAST_IEEE1905_FRAGMENT0x80) == 0);
11076
11077 new_tvb = process_reassembled_data(tvb, offset, pinfo,
11078 "Reassembled Message",
11079 frag_head,
11080 &ieee1905_fragment_items,
11081 NULL((void*)0), ieee1905_tree);
11082
11083 pinfo->fragmented = save_fragmented;
11084
11085 if (new_tvb) { /* Reassembled */
11086 unsigned reassembled_length = tvb_captured_length(new_tvb);
11087 unsigned reassembled_next_offset = dissect_ieee1905_tlvs(new_tvb, pinfo, ieee1905_tree);
11088
11089 tvb_set_reported_length(new_tvb, reassembled_next_offset);
11090 /* Calculate how many bytes of the last packet contributed to the reassembled payload */
11091 next_offset = remaining_length - (reassembled_length - reassembled_next_offset);
11092 } else {
11093 col_append_fstr(pinfo->cinfo, COL_INFO,
11094 " (Message ID: %u, Fragment ID: %u, VLAN ID: %u)",
11095 msg_id, frag_id, pinfo->vlan_id);
11096 proto_tree_add_item(ieee1905_tree, hf_ieee1905_fragment_data, tvb,
11097 offset,
11098 tvb_reported_length_remaining(tvb, offset),
11099 ENC_NA0x00000000);
11100 next_offset = remaining_length;
11101 }
11102 }
11103
11104 proto_item_set_len(ti, offset + next_offset);
11105 tvb_set_reported_length(tvb, offset + next_offset);
11106
11107 return offset + next_offset;
11108}
11109
11110static void
11111supported_cipher_suites_cs_custom(char *result, uint32_t cs)
11112{
11113 uint8_t p_oui[3] = {cs >> 24 & 0xFF, cs >> 16 & 0xFF, cs >> 8 & 0xFF};
11114 char *tmp_str;
11115
11116 tmp_str = val_to_str(NULL((void*)0), cs & 0xFF, ieee80211_rsn_cipher_vals, "Unknown %d");
11117 snprintf(result, ITEM_LABEL_LENGTH240, "%02x:%02x:%02x %s", p_oui[0], p_oui[1], p_oui[2], tmp_str);
11118 wmem_free(NULL((void*)0), tmp_str);
11119}
11120
11121void
11122proto_register_ieee1905(void)
11123{
11124 static hf_register_info hf[] = {
11125 { &hf_ieee1905_fragment_data,
11126 { "Fragment Data", "ieee1905.fragment.data",
11127 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11128
11129 { &hf_ieee1905_message_version,
11130 { "Message version", "ieee1905.message_version",
11131 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11132
11133 { &hf_ieee1905_message_reserved,
11134 { "Message reserved", "ieee1905.message_reserved",
11135 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11136
11137 { &hf_ieee1905_message_type,
11138 { "Message type", "ieee1905.message_type",
11139 FT_UINT16, BASE_HEX|BASE_EXT_STRING0x00000200, &ieee1905_message_type_vals_ext, 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11140
11141 { &hf_ieee1905_message_id,
11142 { "Message id", "ieee1905.message_id",
11143 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11144
11145 { &hf_ieee1905_fragment_id,
11146 { "Fragment id", "ieee1905.fragment_id",
11147 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11148
11149 { &hf_ieee1905_flags,
11150 { "Flags", "ieee1905.flags",
11151 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11152
11153 { &hf_ieee1905_last_fragment,
11154 { "Last fragment", "ieee1905.last_fragment",
11155 FT_BOOLEAN, 8, TFS(&tfs_last_fragment)((0 ? (const struct true_false_string*)0 : ((&tfs_last_fragment
))))
, 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11156
11157 { &hf_ieee1905_relay_indicator,
11158 { "Relay indicator", "ieee1905.relay_indicator",
11159 FT_BOOLEAN, 8, TFS(&tfs_relay_indicator)((0 ? (const struct true_false_string*)0 : ((&tfs_relay_indicator
))))
, 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11160
11161 { &hf_ieee1905_tlv_types,
11162 { "TLV type", "ieee1905.tlv_type",
11163 FT_UINT8, BASE_HEX|BASE_EXT_STRING0x00000200, &ieee1905_tlv_types_vals_ext, 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11164
11165 { &hf_ieee1905_tlv_len,
11166 { "TLV length", "ieee1905.tlv_length",
11167 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11168
11169 { &hf_ieee1905_tlv_len_reserved,
11170 { "TLV length reserved", "ieee1905.tlv_length.reserved",
11171 FT_UINT16, BASE_HEX, NULL((void*)0), 0xC000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11172
11173 { &hf_ieee1905_tlv_len_length,
11174 { "TLV length length", "ieee1905.tlv_length.length",
11175 FT_UINT16, BASE_DEC, NULL((void*)0), 0x3FFF, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11176
11177 { &hf_ieee1905_tlv_data,
11178 { "TLV data", "ieee1905.tlv_data",
11179 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11180
11181 { &hf_ieee1905_al_mac_address_type,
11182 { "1905 AL MAC address type", "ieee1905.1905_al_mac_addr",
11183 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11184
11185 { &hf_ieee1905_mac_address_type,
11186 { "MAC address type", "ieee1905.mac_addr",
11187 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11188
11189 { &hf_ieee1905_link_metric_query_type,
11190 { "Link metric query type", "ieee1905.link_metric_query_type",
11191 FT_UINT8, BASE_DEC, VALS(ieee1905_link_metric_query_type_vals)((0 ? (const struct _value_string*)0 : ((ieee1905_link_metric_query_type_vals
))))
,
11192 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11193
11194 { &hf_ieee1905_link_metrics_requested,
11195 { "Link metrics requested", "ieee1905.link_metrics_requested",
11196 FT_UINT8, BASE_DEC, VALS(ieee1905_link_metrics_requested_vals)((0 ? (const struct _value_string*)0 : ((ieee1905_link_metrics_requested_vals
))))
,
11197 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11198
11199 { &hf_ieee1905_responder_al_mac_addr,
11200 { "Responder MAC address", "ieee1905.responder_al_mac_addr",
11201 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11202
11203 { &hf_ieee1905_neighbor_al_mac_addr,
11204 { "Neighbor MAC address", "ieee1905.neighbor_al_mac_addr",
11205 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11206
11207 { &hf_ieee1905_receiving_al_mac_addr,
11208 { "Receiving AL MAC address", "ieee1905.receiving_al_mac_addr",
11209 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11210
11211 { &hf_ieee1905_bridge_flag,
11212 { "IEEE 802.1 bridge flag", "ieee1905.bridgeFlag",
11213 FT_UINT8, BASE_DEC, VALS(ieee1905_bridge_flag_vals)((0 ? (const struct _value_string*)0 : ((ieee1905_bridge_flag_vals
))))
, 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11214
11215 { &hf_ieee1905_packet_errors,
11216 { "Packet errors", "ieee1905.packetErrors",
11217 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11218
11219 { &hf_ieee1905_transmitted_packets,
11220 { "Transmitted packets", "ieee1905.transmittedPackets",
11221 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11222
11223 { &hf_ieee1905_mac_throughput_capacity,
11224 { "MAC throughput capacity", "ieee1905.macThroughputCapacity",
11225 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11226
11227 { &hf_ieee1905_link_availability,
11228 { "Link availability", "ieee1905.linkAvailability",
11229 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11230
11231 { &hf_ieee1905_phy_rate,
11232 { "Phy rate", "ieee1905.phyRate",
11233 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11234
11235 { &hf_ieee1905_packets_received,
11236 { "Packets received", "ieee1905.packets_received",
11237 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11238
11239 { &hf_ieee1905_rssi,
11240 { "RSSI", "ieee1905.rssi",
11241 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11242
11243 { &hf_ieee1905_local_interface_count,
11244 { "Local interface count", "ieee1905.dev_info.local_int_cnt",
11245 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11246
11247 { &hf_ieee1905_media_type,
11248 { "Media type", "ieee1905.dev_info.media_type",
11249 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11250
11251 { &hf_ieee1905_media_type_high,
11252 { "Media type bits 15 to 8", "ieee1905.media_type.bits_15_to_8",
11253 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11254
11255 { &hf_ieee1905_media_type_low,
11256 { "Media type bits 7 to 0", "ieee1905.media_type.bits_7_to_0",
11257 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11258
11259 { &hf_ieee1905_media_spec_info_len,
11260 { "Special info length", "ieee1905.dev_info.spec_info_len",
11261 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11262
11263 { &hf_ieee1905_media_spec_info,
11264 { "Special info", "ieee1905.dev_info.spec_info",
11265 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11266
11267 { &hf_ieee1905_bridging_tuples_cnt,
11268 { "Bridging tuples count", "ieee1905.bridging_info.tuples_count",
11269 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11270
11271 { &hf_ieee1905_bridging_mac_address_cnt,
11272 { "Bridging MAC address count", "ieee1905.bridging_info.mac_addr_count",
11273 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11274
11275 { &hf_ieee1905_bridging_mac_address,
11276 { "Bridging MAC address", "ieee1905.bridging_info.mac_address",
11277 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11278
11279 { &hf_ieee1905_local_interface_mac,
11280 { "Local interface MAC address", "ieee1905.local_intf.mac_address",
11281 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11282
11283 { &hf_ieee1905_non_1905_neighbor_mac,
11284 { "Non 1905 neighbor MAC address", "ieee1905.non_1905_neighbor.mac_address",
11285 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11286
11287 { &hf_ieee1905_neighbor_flags,
11288 { "IEEE1905 neighbor flags", "ieee1905.neighbor_flags",
11289 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11290
11291 { &hf_ieee1905_bridges_flag,
11292 { "IEEE1905 bridges", "ieee1905.bridges",
11293 FT_BOOLEAN, 8, TFS(&tfs_bridges_flag)((0 ? (const struct true_false_string*)0 : ((&tfs_bridges_flag
))))
, 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11294
11295 { &hf_ieee1905_link_metric_result_code,
11296 { "IEEE1905 link metric result code", "ieee1905.link_metric.result_code",
11297 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11298
11299 { &hf_ieee1905_vendor_specific_oui,
11300 { "Vendor specific OUI", "ieee1905.vendor_specific.oui",
11301 FT_UINT24, BASE_OUI, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11302
11303 { &hf_ieee1905_vendor_specific_info,
11304 { "Vendor specific information", "ieee1905.vendor_specific.info",
11305 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11306
11307 { &hf_ieee1905_searched_role,
11308 { "Searched role", "ieee1905.searched_role",
11309 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11310
11311 { &hf_ieee1905_supported_role,
11312 { "Supported role", "ieee1905.supported_role",
11313 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11314
11315 { &hf_ieee1905_auto_config_freq_band,
11316 { "Auto config frequency band", "ieee1905.auto_config.freq_band",
11317 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11318
11319 { &hf_ieee1905_supported_freq_band,
11320 { "Supported frequency band", "ieee1905.supported.freq_band",
11321 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11322
11323 { &hf_ieee1905_event_notification_media_types,
11324 { "Media types", "ieee1905.event_notif.media_types",
11325 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11326
11327 { &hf_ieee1905_sender_al_id,
11328 { "Sender AL ID", "ieee1905.sender.al_id",
11329 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11330
11331 { &hf_ieee1905_push_button_event_msg_id,
11332 { "Push button event message ID", "ieee1905.sender.msg_id",
11333 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11334
11335 { &hf_ieee1905_sender_joining_interface,
11336 { "Joining MAC address of sender", "ieee1905.sender.joining_intf",
11337 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11338
11339 { &hf_ieee1905_new_device_interface,
11340 { "New device MAC address", "ieee1905.new_device.intf",
11341 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11342
11343 { &hf_ieee1905_device_al_mac,
11344 { "1905 device AL MAC address", "ieee1905.device_al_mac_addr",
11345 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11346
11347 { &hf_ieee1905_local_intf_oui,
11348 { "Local interface OUI", "ieee1905.local_intf.oui",
11349 FT_UINT24, BASE_OUI, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11350
11351 { &hf_ieee1905_local_intf_variant,
11352 { "Local interface variant index", "ieee1905.local_intf.variant",
11353 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11354
11355 { &hf_ieee1905_local_intf_variant_name,
11356 { "Local interface variant name", "ieee1905.local_intf.variant_name",
11357 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11358
11359 { &hf_ieee1905_local_intf_url_count,
11360 { "Local interface URL octet count", "ieee1905.local_intf.url_byte_count",
11361 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11362
11363 { &hf_ieee1905_local_intf_spec_count,
11364 { "Local interface media specific count", "ieee1905.local_intf.media_count",
11365 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11366
11367 { &hf_ieee1905_local_intf_url,
11368 { "Local interface XML description URL", "ieee1905.local_intf.url",
11369 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11370
11371 { &hf_ieee1905_local_intf_spec,
11372 { "Local interface media specific info", "ieee1905.local_intf.spec_info",
11373 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11374
11375 { &hf_ieee1905_dev_id_friendly_name,
11376 { "Device Id Friendly name", "ieee1905.device_id.friendly_name",
11377 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11378
11379 { &hf_ieee1905_dev_id_manuf_name,
11380 { "Device Id Manufacturer name", "ieee1905.device_id.manuf_name",
11381 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11382
11383 { &hf_ieee1905_dev_id_manuf_model,
11384 { "Device Id Manufacturer model", "ieee1905.device_id.manuf_model",
11385 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11386
11387 { &hf_ieee1905_control_url,
11388 { "Device control URL", "ieee1905.device.control_url",
11389 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11390
11391 { &hf_ieee1905_ipv4_type_count,
11392 { "Count of IPv4 entries", "ieee1905.ipv4_type.count",
11393 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11394
11395 { &hf_ieee1905_mac_address,
11396 { "MAC address", "ieee1905.ipv4_type.mac_address",
11397 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11398
11399 { &hf_ieee1905_ipv4_addr_count,
11400 { "IPv4 address count", "ieee1905.ipv4_type.addr_count",
11401 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11402
11403 { &hf_ieee1905_addr_type,
11404 { "IPv4 address type", "ieee1905.ipv4_type.addr_type",
11405 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11406
11407 { &hf_ieee1905_ipv4_addr,
11408 { "IPv4 address", "ieee1905.ipv4_type.ipv4_addr",
11409 FT_IPv4, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11410
11411 { &hf_ieee1905_dhcp_server,
11412 { "DHCP server", "ieee1905.ipv4_type.dhcp_server",
11413 FT_IPv4, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11414
11415 { &hf_ieee1905_ipv6_type_count,
11416 { "Count of IPv6 entries", "ieee1905.ipv6_type.count",
11417 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11418
11419 { &hf_ieee1905_ipv6_linklocal,
11420 { "Link local address", "ieee1905.ipv6_type.link_local",
11421 FT_IPv6, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11422
11423 { &hf_ieee1905_ipv6_mac_address,
11424 { "MAC address", "ieee1905.ipv6_type.mac_address",
11425 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11426
11427 { &hf_ieee1905_ipv6_addr_count,
11428 { "IPv6 address count", "ieee1905.ipv6_type.addr_count",
11429 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11430
11431 { &hf_ieee1905_ipv6_addr_type,
11432 { "IPv6 address type", "ieee1905.ipv6_type.addr_type",
11433 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11434
11435 { &hf_ieee1905_ipv6_addr,
11436 { "IPv6 address", "ieee1905.ipv6_type.ipv6_addr",
11437 FT_IPv6, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11438
11439 { &hf_ieee1905_ipv6_address_origin,
11440 { "Address origin", "ieee1905.ipv6_type.address_origin",
11441 FT_IPv6, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11442
11443 { &hf_ieee1905_generic_phy_media_types,
11444 { "Generic Phy media type count", "ieee1905.button_push.phy_count",
11445 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11446
11447 { &hf_ieee1905_profile_version,
11448 { "1905 profile version type", "ieee1905.profile.version",
11449 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11450
11451 { &hf_ieee1905_power_off_intf_count,
11452 { "Powered off interface count", "ieee1905.power_off.intf_count",
11453 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11454
11455 { &hf_ieee1905_power_change_intf_count,
11456 { "Power change local interface count", "ieee1905.power_chg.intf_count",
11457 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11458
11459 { &hf_ieee1905_power_change_mac_addr,
11460 { "Power change interface MAc addr", "ieee1905.power_chg.mac_addr",
11461 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11462
11463 { &hf_ieee1905_power_change_state,
11464 { "Power change requested state", "ieee1905.power_chg.state",
11465 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11466
11467 { &hf_ieee1905_power_status_intf_count,
11468 { "Power status local interface count", "ieee1905.power_sts.intf_count",
11469 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11470
11471 { &hf_ieee1905_power_status_mac_addr,
11472 { "Power status interface MAc addr", "ieee1905.power_sts.mac_addr",
11473 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11474
11475 { &hf_ieee1905_power_status_state,
11476 { "Power change status", "ieee1905.power_sts.state",
11477 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11478
11479 { &hf_ieee1905_l2_neighbor_intf_count,
11480 { "L2 neighbor interface count", "ieee1905.l2_neighbor.intf_count",
11481 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11482
11483 { &hf_ieee1905_l2_local_intf_mac_addr,
11484 { "L2 neighbor local interface MAC addr", "ieee1905.l2_neighbor.mac_addr",
11485 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11486
11487 { &hf_ieee1905_l2_neighbor_dev_count,
11488 { "L2 neighbor device count", "ieee1905.l2_neighbor.dev_count",
11489 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11490
11491 { &hf_ieee1905_l2_neighbor_mac_addr,
11492 { "L2 neighbor interface MAC address", "ieee1905.l2_neighbor.neighbor_mac_addr",
11493 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11494
11495 { &hf_ieee1905_l2_behind_mac_addr_count,
11496 { "L2 neighbor behind MAC addr count", "ieee1905.l2_neighbor.neighbor_behind_count",
11497 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11498
11499 { &hf_ieee1905_l2_behind_mac_addr,
11500 { "L2 neighbor behind MAC addr", "ieee1905.l2_neighbor.neighbor_behind_mac_addr",
11501 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11502
11503 { &hf_ieee1905_supported_service_count,
11504 { "Supported service count", "ieee1905.supported_service.service_count",
11505 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11506
11507 { &hf_ieee1905_supported_service,
11508 { "Supported service", "ieee1905.supported_service.service",
11509 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11510
11511 { &hf_ieee1905_searched_service_count,
11512 { "Searched service count", "ieee1905.searched_service.service_count",
11513 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11514
11515 { &hf_ieee1905_searched_service,
11516 { "Searched service", "ieee1905.searched_service.service",
11517 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11518
11519 { &hf_ieee1905_ap_radio_identifier,
11520 { "AP radio identifier", "ieee1905.ap_radio_identifier",
11521 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11522
11523 { &hf_ieee1905_operatonal_bss_radio_count,
11524 { "AP operational BSS radio count", "ieee1905.ap_bss_radio_count",
11525 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11526
11527 { &hf_ieee1905_ap_operational_intf_count,
11528 { "AP operational interface count", "ieee1905.ap_bss_intf_count",
11529 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11530
11531 { &hf_ieee1905_ap_local_intf_mac_addr,
11532 { "AP operational local interface MAC addr", "ieee1905.ap_bss_local_intf_addr",
11533 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11534
11535 { &hf_ieee1905_ap_local_intf_ssid_len,
11536 { "AP operational BSS local interface SSID len", "ieee1905.ap_bss_local_intf_ssid_len",
11537 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11538
11539 { &hf_ieee1905_ap_local_intf_ssid,
11540 { "AP operational BSS local interface SSID", "ieee1905.ap_bss_local_intf_ssid",
11541 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11542
11543 { &hf_ieee1905_ap_capabilities_flags,
11544 { "AP capabilities flags", "ieee1905.ap_capability_flags",
11545 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11546
11547 { &hf_ieee1905_unassoc_sta_metrics_oper_flag,
11548 { "STA link metric reporting operational channels", "ieee1905.link_metric_oper",
11549 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11550
11551 { &hf_ieee1905_unassoc_sta_metrics_non_oper_flag,
11552 { "STA link metric reporting non-operational channels", "ieee1905.link_metric_non_oper",
11553 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11554
11555 { &hf_ieee1905_agent_init_steering,
11556 { "Agent-initiated RCPI-based Steering", "ieee1905.agent_init_steering",
11557 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11558
11559 { &hf_ieee1905_m8_bsta_reconfiguration,
11560 { "M8 bSTA Reconfiguration", "ieee1905.m8_bsta_reconfiguration",
11561 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11562
11563 { &hf_ieee1905_rsn_overriding,
11564 { "RSN Overriding", "ieee1905.rsn_overriding",
11565 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x08, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11566
11567 { &hf_ieee1905_rpt_unsuccessful_associations,
11568 { "Report Unsuccessful Associations", "ieee1905.rpt_unsuccessful_assoc",
11569 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11570
11571 { &hf_ieee1905_rpt_unsuccessful_assoc_report,
11572 { "Unsuccessful Association Attempts", "ieee1905.report_unsuccessful_associations",
11573 FT_BOOLEAN, 8, TFS(&tfs_ieee1905_report_unsuccessful_association_attempt_flag)((0 ? (const struct true_false_string*)0 : ((&tfs_ieee1905_report_unsuccessful_association_attempt_flag
))))
, 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11574
11575 { &hf_ieee1905_higher_layer_protocol,
11576 { "Higher layer protocol", "ieee1905.higher_layer_proto",
11577 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11578
11579 { &hf_ieee1905_higher_layer_data,
11580 { "Higher layer data", "ieee1905.higher_layer_data",
11581 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11582
11583 { &hf_ieee1905_assoc_backhaul_station_mac,
11584 { "Associated backhaul station MAC address", "ieee1905.assoc.mac_addr",
11585 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11586
11587 { &hf_ieee1905_backhaul_target_bssid,
11588 { "Target BSS BSSID", "ieee1905.assoc.target_bssid",
11589 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11590
11591 { &hf_ieee1905_backhaul_steering_status,
11592 { "Status code", "ieee1905.assoc.status",
11593 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11594
11595 { &hf_ieee1905_backhaul_operating_class,
11596 { "Backhaul operating class", "ieee1905.assoc.operating_class",
11597 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11598
11599 { &hf_ieee1905_backhaul_channel_number,
11600 { "Backhaul beacon channel number", "ieee1905.assoc.channel_num",
11601 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11602
11603 { &hf_ieee1905_client_assoc_bssid,
11604 { "Target BSSID", "ieee1905.assoc_ctrl.bssid",
11605 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11606
11607 { &hf_ieee1905_association_control,
11608 { "Association control", "ieee1905.assoc_ctrl.control",
11609 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11610
11611 { &hf_ieee1905_association_control_validity,
11612 { "Request validity period", "ieee1905.assoc_ctrl.validity",
11613 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11614
11615 { &hf_ieee1905_client_assoc_sta_count,
11616 { "STA control list count", "ieee1905.assoc_ctrl.sta_list_count",
11617 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11618
11619 { &hf_ieee1905_client_assoc_mac_addr,
11620 { "Target STA MAC address", "ieee1905.assoc_ctrl.target_mac_addr",
11621 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11622
11623 { &hf_ieee1905_btm_reporter_bssid,
11624 { "BTM report source BSSID", "ieee1905.btm_report.source_bssid",
11625 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11626
11627 { &hf_ieee1905_btm_sta_mac_addr,
11628 { "BTM report target MAC address", "ieee1905.btm_report.mac_addr",
11629 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11630
11631 { &hf_ieee1905_btm_report_status,
11632 { "BTM status code", "ieee1905.btm_report.status",
11633 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11634
11635 { &hf_ieee1905_btm_report_bssid,
11636 { "BTM target BSSID", "ieee1905.btm_report.target_bssid",
11637 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11638
11639 { &hf_ieee1905_source_bss_bssid,
11640 { "Source BSS BSSID", "ieee1905.steering_req.source_bssid",
11641 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11642
11643 { &hf_ieee1905_steering_request_flags,
11644 { "Steering request flags", "ieee1905.steering_req.flags",
11645 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11646
11647 { &hf_ieee1905_steering_req_op_window,
11648 { "Steering opportunity window", "ieee1905.steering_req.window",
11649 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11650
11651 { &hf_ieee1905_steering_request_mode_flag,
11652 { "Mode", "ieee1905.steering_req.mode",
11653 FT_BOOLEAN, 8, TFS(&tfs_ieee1905_steering_request_mode_flag)((0 ? (const struct true_false_string*)0 : ((&tfs_ieee1905_steering_request_mode_flag
))))
, 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11654
11655 { &hf_ieee1905_btm_disassoc_imminent_flag,
11656 { "BTM disassociation imminent", "ieee1905.steering_req.disassoc_imminent",
11657 FT_BOOLEAN, 8, TFS(&tfs_ieee1905_btm_disassoc_imminent_flag)((0 ? (const struct true_false_string*)0 : ((&tfs_ieee1905_btm_disassoc_imminent_flag
))))
, 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11658
11659 { &hf_ieee1905_btm_abridged_flag,
11660 { "BTM abridged", "ieee1905.steering_req.btm_abridged",
11661 FT_BOOLEAN, 8, TFS(&tfs_ieee1905_btm_abridged_flag)((0 ? (const struct true_false_string*)0 : ((&tfs_ieee1905_btm_abridged_flag
))))
, 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11662
11663 { &hf_ieee1905_steering_req_reserved,
11664 { "Reserved", "ieee1905.steering_req.reserved",
11665 FT_UINT8, BASE_HEX, NULL((void*)0), 0x1F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11666
11667 { &hf_ieee1905_steering_btm_disass_timer,
11668 { "BTM disassociation timer", "ieee1905.steering_req.disass_timer",
11669 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11670
11671 { &hf_ieee1905_steering_req_sta_count,
11672 { "STA list count", "ieee1905.steering_req.sta_count",
11673 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11674
11675 { &hf_ieee1905_steering_req_target_bssid_count,
11676 { "Target BSSID list count", "ieee1905.steering_req.bssid_count",
11677 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11678
11679 { &hf_ieee1905_steering_req_sta_mac,
11680 { "Target MAC address", "ieee1905.steering_req.target_mac",
11681 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11682
11683 { &hf_ieee1905_steering_req_target_bssid,
11684 { "Target BSSID", "ieee1905.steering_req.target_bssid",
11685 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11686
11687 { &hf_ieee1905_steering_req_oper_class,
11688 { "Target BSS operating class", "ieee1905.steering_req.oper_class",
11689 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11690
11691 { &hf_ieee1905_steering_req_target_channel,
11692 { "Target BSS channel number", "ieee1905.steering_req.target_channel",
11693 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11694
11695 { &hf_ieee1905_client_bssid,
11696 { "Client BSSID", "ieee1905.client_info.bssid",
11697 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11698
11699 { &hf_ieee1905_client_mac_addr,
11700 { "Client MAC address", "ieee1905.client_info.mac_addr",
11701 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11702
11703 { &hf_ieee1905_client_capability_result,
11704 { "Result code", "ieee1905.client_capability.result",
11705 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11706
11707 { &hf_ieee1905_client_capability_frame,
11708 { "(Re)Association frame body", "ieee1905.client_capability.frame",
11709 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11710
11711 { &hf_ieee1905_association_flag,
11712 { "Association event", "ieee1905.assoc_event.assoc_event",
11713 FT_BOOLEAN, 8, TFS(&tfs_ieee1905_association_event_flag)((0 ? (const struct true_false_string*)0 : ((&tfs_ieee1905_association_event_flag
))))
,
11714 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11715
11716 { &hf_ieee1905_association_client_mac_addr,
11717 { "Client mac address", "ieee1905.assoc_event.client_mac",
11718 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11719
11720 { &hf_ieee1905_association_agent_bssid,
11721 { "Multi-AP agent BSSID", "ieee1905.assoc_event.agent_bssid",
11722 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11723
11724 { &hf_ieee1905_association_event_flags,
11725 { "Association event flags", "ieee1905.assoc_event.flags",
11726 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11727
11728 { &hf_ieee1905_ap_radio_max_bss,
11729 { "Maximum BSS support", "ieee1905.radio_basic_cap.max_bss",
11730 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11731
11732 { &hf_ieee1905_ap_radio_classes,
11733 { "Operating class count", "ieee1905.radio_basic.op_classes",
11734 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11735
11736 { &hf_ieee1905_ap_radio_class,
11737 { "Operating class", "ieee1905.radio_basic.op_class",
11738 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11739
11740 { &hf_ieee1905_ap_radio_eirp,
11741 { "Maximum transmit power EIRP", "ieee1905.radio_basic.max_power",
11742 FT_INT8, BASE_DEC|BASE_UNIT_STRING0x00001000, UNS(&units_dbm)((0 ? (const struct unit_name_string*)0 : ((&units_dbm)))
)
, 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11743
11744 { &hf_ieee1905_ap_radio_non_op_count,
11745 { "Number of non-operable channels", "ieee1905.radio_basic.non_op_channels",
11746 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11747
11748 { &hf_ieee1905_radio_basic_non_op_channel,
11749 { "Statically non-operable channel", "ieee1905.radio_basic.non_op_channel",
11750 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11751
11752 { &hf_ieee1905_max_supported_tx_streams,
11753 { "Maximum supported Tx spatial streams", "ieee1905.ap_ht.max_tx_streams",
11754 FT_UINT8, BASE_HEX, VALS(max_supported_tx_streams_vals)((0 ? (const struct _value_string*)0 : ((max_supported_tx_streams_vals
))))
, 0xC0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11755
11756 { &hf_ieee1905_max_supported_rx_streams,
11757 { "Maximum supported Rx spatial streams", "ieee1905.ap_ht.max_rx_streams",
11758 FT_UINT8, BASE_HEX, VALS(max_supported_rx_streams_vals)((0 ? (const struct _value_string*)0 : ((max_supported_rx_streams_vals
))))
, 0x30, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11759
11760 { &hf_ieee1905_short_gi_20mhz_flag,
11761 { "Short GI support for 20 MHz", "ieee1905.ap_ht.short_gi_20mhz",
11762 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x08, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11763
11764 { &hf_ieee1905_short_gi_40mhz_flag,
11765 { "Short GI support for 40 MHz", "ieee1905.ap_ht.short_gi_40mhz",
11766 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x04, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11767
11768 { &hf_ieee1905_ht_support_40mhz_flag,
11769 { "HT support for 40MHz", "ieee1905.ap_ht.ht_support_40mhz",
11770 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x02, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11771
11772 { &hf_ieee1905_ap_ht_capabilities_radio_id,
11773 { "Radio unique ID", "ieee1905.ap_ht.radio_id",
11774 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11775
11776 { &hf_ieee1905_ht_cap_flags,
11777 { "Capabilities", "ieee1905.ap_ht.caps",
11778 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11779
11780 { &hf_ieee1905_vht_max_supported_tx_streams,
11781 { "Maximum supported Tx spatial streams", "ieee1905.ap_vht.max_tx_streams",
11782 FT_UINT16, BASE_HEX, VALS(vht_he_max_supported_tx_streams_vals)((0 ? (const struct _value_string*)0 : ((vht_he_max_supported_tx_streams_vals
))))
, 0xE000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11783
11784 { &hf_ieee1905_vht_max_supported_rx_streams,
11785 { "Maximum supported Rx spatial streams", "ieee1905.ap_vht.max_rx_streams",
11786 FT_UINT16, BASE_HEX, VALS(vht_he_max_supported_rx_streams_vals)((0 ? (const struct _value_string*)0 : ((vht_he_max_supported_rx_streams_vals
))))
, 0x1C00, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11787
11788 { &hf_ieee1905_short_gi_80mhz_flag,
11789 { "Short GI support for 80 MHz", "ieee1905.ap_vht.short_gi_80mhz",
11790 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0200, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11791
11792 { &hf_ieee1905_short_gi_160mhz_flag,
11793 { "Short GI support for 160 and 80+80 MHz", "ieee1905.ap_vht.short_gi_160mhz",
11794 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0100, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11795
11796 { &hf_ieee1905_vht_support_80plus_mhz_flag,
11797 { "VHT support for 80+80 MHz", "ieee1905.ap_vht.vht_80plus_mhz",
11798 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0080, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11799
11800 { &hf_ieee1905_vht_support_160_mhz_flag,
11801 { "VHT support for 160 MHz", "ieee1905.ap_vht.vht_160mhz",
11802 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0040, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11803
11804 { &hf_ieee1905_su_beamformer_capable_flag,
11805 { "SU beamformer capable", "ieee1905.ap_vht.su_beamformer",
11806 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0020, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11807
11808 { &hf_ieee1905_mu_beamformer_capable_flag,
11809 { "MU beamformer capable", "ieee1905.ap_vht.mu_beamformer",
11810 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0010, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11811
11812 { &hf_ieee1905_ap_vht_capabilities_radio_id,
11813 { "Radio unique ID", "ieee1905.ap_vht.radio_id",
11814 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11815
11816 { &hf_ieee1905_vht_cap_flags,
11817 { "Capabilities", "ieee1905.ap_vht.caps",
11818 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11819
11820 { &hf_ieee1905_ap_vht_supported_vht_tx_mcs,
11821 { "Supported VHT Tx MCS", "ieee1905.ap_vht.supported_tx_mcs",
11822 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11823
11824 { &hf_ieee1905_ap_vht_supported_vht_rx_mcs,
11825 { "Supported VHT Rx MCS", "ieee1905.ap_vht.supported_rx_mcs",
11826 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11827
11828 { &hf_ieee1905_ap_vht_tx_mcs_map_1ss,
11829 { "Max Tx VHT MCS for 1 SS",
11830 "ieee1905.ap_vht.max_tx_vht_mcs_1_ss",
11831 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11832 0x0003, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11833
11834 { &hf_ieee1905_ap_vht_tx_mcs_map_2ss,
11835 { "Max Tx VHT MCS for 2 SS",
11836 "ieee1905.ap_vht.max_tx_vht_mcs_2_ss",
11837 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11838 0x000C, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11839
11840 { &hf_ieee1905_ap_vht_tx_mcs_map_3ss,
11841 { "Max Tx VHT MCS for 3 SS",
11842 "ieee1905.ap_vht.max_tx_vht_mcs_3_ss",
11843 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11844 0x0030, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11845
11846 { &hf_ieee1905_ap_vht_tx_mcs_map_4ss,
11847 { "Max Tx VHT MCS for 4 SS",
11848 "ieee1905.ap_vht.max_tx_vht_mcs_4_ss",
11849 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11850 0x00C0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11851
11852 { &hf_ieee1905_ap_vht_tx_mcs_map_5ss,
11853 { "Max Tx VHT MCS for 5 SS",
11854 "ieee1905.ap_vht.max_tx_vht_mcs_5_ss",
11855 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11856 0x0300, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11857
11858 { &hf_ieee1905_ap_vht_tx_mcs_map_6ss,
11859 { "Max Tx VHT MCS for 6 SS",
11860 "ieee1905.ap_vht.max_tx_vht_mcs_6_ss",
11861 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11862 0x0C00, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11863
11864 { &hf_ieee1905_ap_vht_tx_mcs_map_7ss,
11865 { "Max Tx VHT MCS for 7 SS",
11866 "ieee1905.ap_vht.max_tx_vht_mcs_7_ss",
11867 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11868 0x3000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11869
11870 { &hf_ieee1905_ap_vht_tx_mcs_map_8ss,
11871 { "Max Tx VHT MCS for 8 SS",
11872 "ieee1905.ap_vht.max_tx_vht_mcs_8_ss",
11873 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11874 0xC000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11875
11876 { &hf_ieee1905_ap_vht_rx_mcs_map_1ss,
11877 { "Max Rx VHT MCS for 1 SS",
11878 "ieee1905.ap_vht.max_rx_vht_mcs_1_ss",
11879 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11880 0x0003, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11881
11882 { &hf_ieee1905_ap_vht_rx_mcs_map_2ss,
11883 { "Max Rx VHT MCS for 2 SS",
11884 "ieee1905.ap_vht.max_rx_vht_mcs_2_ss",
11885 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11886 0x000C, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11887
11888 { &hf_ieee1905_ap_vht_rx_mcs_map_3ss,
11889 { "Max Rx VHT MCS for 3 SS",
11890 "ieee1905.ap_vht.max_rx_vht_mcs_3_ss",
11891 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11892 0x0030, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11893
11894 { &hf_ieee1905_ap_vht_rx_mcs_map_4ss,
11895 { "Max Rx VHT MCS for 4 SS",
11896 "ieee1905.ap_vht.max_rx_vht_mcs_4_ss",
11897 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11898 0x00C0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11899
11900 { &hf_ieee1905_ap_vht_rx_mcs_map_5ss,
11901 { "Max Rx VHT MCS for 5 SS",
11902 "ieee1905.ap_vht.max_rx_vht_mcs_5_ss",
11903 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11904 0x0300, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11905
11906 { &hf_ieee1905_ap_vht_rx_mcs_map_6ss,
11907 { "Max Rx VHT MCS for 6 SS",
11908 "ieee1905.ap_vht.max_rx_vht_mcs_6_ss",
11909 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11910 0x0C00, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11911
11912 { &hf_ieee1905_ap_vht_rx_mcs_map_7ss,
11913 { "Max Rx VHT MCS for 7 SS",
11914 "ieee1905.ap_vht.max_rx_vht_mcs_7_ss",
11915 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11916 0x3000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11917
11918 { &hf_ieee1905_ap_vht_rx_mcs_map_8ss,
11919 { "Max Rx VHT MCS for 8 SS",
11920 "ieee1905.ap_vht.max_rx_vht_mcs_8_ss",
11921 FT_UINT16, BASE_DEC, VALS(vht_supported_mcs_vals)((0 ? (const struct _value_string*)0 : ((vht_supported_mcs_vals
))))
,
11922 0xC000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11923
11924 { &hf_ieee1905_assoc_clients_bss_count,
11925 { "Included BSS count", "ieee1905.assoc_client.bss_count",
11926 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11927
11928 { &hf_ieee1905_assoc_bssid,
11929 { "Associated BSS", "ieee1905.assoc_client.bss",
11930 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11931
11932 { &hf_ieee1905_bss_client_count,
11933 { "Associated client count", "ieee1905.assoc_client.client_count",
11934 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11935
11936 { &hf_ieee1905_bss_client_mac,
11937 { "Associated client MAC address", "ieee1905.assoc_client.mac_addr",
11938 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11939
11940 { &hf_ieee1905_bss_client_last_assoc,
11941 { "Time since last association", "ieee1905.assoc_client.time_since",
11942 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11943
11944 { &hf_ieee1905_channel_pref_preference,
11945 { "Preference", "ieee1905.channel_pref.pref",
11946 FT_UINT8, BASE_HEX, VALS(channel_preference_prefs_vals)((0 ? (const struct _value_string*)0 : ((channel_preference_prefs_vals
))))
, 0xF0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11947 { &hf_ieee1905_channel_pref_reason,
11948 { "Reason code", "ieee1905.channel_pref.reason",
11949 FT_UINT8, BASE_HEX, VALS(channel_preference_reason_vals)((0 ? (const struct _value_string*)0 : ((channel_preference_reason_vals
))))
, 0x0F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
11950
11951 { &hf_ieee1905_channel_preference_radio_id,
11952 { "Radio unique ID", "ieee1905.channel_pref.radio_id",
11953 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11954
11955 { &hf_ieee1905_channel_preference_class_count,
11956 { "Operating class count", "ieee1905.channel_prefs.class_count",
11957 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11958
11959 { &hf_ieee1905_channel_pref_class,
11960 { "Operating class", "ieee1905.channel_prefs.class",
11961 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11962
11963 { &hf_ieee1905_channel_pref_channel_count,
11964 { "Channel list count", "ieee1905.channel_prefs.channel_count",
11965 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11966
11967 { &hf_ieee1905_channel_pref_channel,
11968 { "Channel number", "ieee1905.channel_prefs.channel_no",
11969 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11970
11971 { &hf_ieee1905_channel_prefs_flags,
11972 { "Channel preference flags", "ieee1905.channel_prefs.flags",
11973 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11974
11975 { &hf_ieee1905_trans_power_limit_radio_id,
11976 { "Radio unique ID", "ieee1905.transmit_power.radio_id",
11977 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11978
11979 { &hf_ieee1905_trans_power_limit_eirp,
11980 { "Transmit power limit EIRP per 20MHz", "ieee1905.transmit_power.eirp",
11981 FT_INT8, BASE_DEC|BASE_UNIT_STRING0x00001000, UNS(&units_dbm)((0 ? (const struct unit_name_string*)0 : ((&units_dbm)))
)
, 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11982
11983 { &hf_ieee1905_channel_select_resp_radio_id,
11984 { "Radio unique ID", "ieee1905.channel_select.radio_id",
11985 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11986
11987 { &hf_ieee1905_radio_metrics_radio_id,
11988 { "Radio unique ID", "ieee1905.radio_metrics.radio_id",
11989 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11990
11991 { &hf_ieee1905_channel_select_resp_code,
11992 { "Response code", "ieee1905.channel_select.response_code",
11993 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11994
11995 { &hf_ieee1905_op_channel_report_radio_id,
11996 { "Radio unique ID", "ieee1905.operating_channel.radio_id",
11997 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
11998
11999 { &hf_ieee1905_op_channel_report_classes,
12000 { "Currently operating classes", "ieee1905.operating_channel.classes",
12001 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12002
12003 { &hf_ieee1905_op_channel_class,
12004 { "Operating class", "ieee1905.operating_channel.op_class",
12005 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12006
12007 { &hf_ieee1905_op_channel_number,
12008 { "Operating channel number", "ieee1905.operating_channel.chan_num",
12009 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12010
12011 { &hf_ieee1905_op_channel_eirp,
12012 { "Current transmit power EIRP", "ieee1905.operating_channel.eirp",
12013 FT_INT8, BASE_DEC|BASE_UNIT_STRING0x00001000, UNS(&units_dbm)((0 ? (const struct unit_name_string*)0 : ((&units_dbm)))
)
, 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12014
12015 { &hf_ieee1905_ap_he_cap_radio_id,
12016 { "Radio unique ID", "ieee1905.ap_he_capability.radio_id",
12017 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12018
12019 { &hf_ieee1905_ap_he_cap_mcs_length,
12020 { "Supported HE MCS length", "ieee1905.ap_he_capability.he_mcs_count",
12021 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12022
12023 { &hf_ieee1905_ap_he_cap_tx_mcs_le_80_mhz,
12024 { "Supported Tx HE-MCS <= 80 MHz",
12025 "ieee1905.ap_he_capability.supported_tx_he_mcs_le_80mhz",
12026 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12027
12028 { &hf_ieee1905_ap_he_tx_mcs_map_1ss,
12029 { "Max Tx HE-MCS for 1 SS",
12030 "ieee1905.ap_he_capability.max_tx_he_mcs_1_ss",
12031 FT_UINT16, BASE_DEC, VALS(max_he_mcs_1_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_1_ss_vals
))))
,
12032 0x0003, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12033
12034 { &hf_ieee1905_ap_he_tx_mcs_map_2ss,
12035 { "Max Tx HE-MCS for 2 SS",
12036 "ieee1905.ap_he_capability.max_tx_he_mcs_2_ss",
12037 FT_UINT16, BASE_DEC, VALS(max_he_mcs_2_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_2_ss_vals
))))
,
12038 0x000C, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12039
12040 { &hf_ieee1905_ap_he_tx_mcs_map_3ss,
12041 { "Max Tx HE-MCS for 3 SS",
12042 "ieee1905.ap_he_capability.max_tx_he_mcs_3_ss",
12043 FT_UINT16, BASE_DEC, VALS(max_he_mcs_3_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_3_ss_vals
))))
,
12044 0x0030, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12045
12046 { &hf_ieee1905_ap_he_tx_mcs_map_4ss,
12047 { "Max Tx HE-MCS for 4 SS",
12048 "ieee1905.ap_he_capability.max_tx_he_mcs_4_ss",
12049 FT_UINT16, BASE_DEC, VALS(max_he_mcs_4_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_4_ss_vals
))))
,
12050 0x00C0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12051
12052 { &hf_ieee1905_ap_he_tx_mcs_map_5ss,
12053 { "Max Tx HE-MCS for 5 SS",
12054 "ieee1905.ap_he_capability.max_tx_he_mcs_5_ss",
12055 FT_UINT16, BASE_DEC, VALS(max_he_mcs_5_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_5_ss_vals
))))
,
12056 0x0300, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12057
12058 { &hf_ieee1905_ap_he_tx_mcs_map_6ss,
12059 { "Max Tx HE-MCS for 6 SS",
12060 "ieee1905.ap_he_capability.max_tx_he_mcs_6_ss",
12061 FT_UINT16, BASE_DEC, VALS(max_he_mcs_6_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_6_ss_vals
))))
,
12062 0x0C00, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12063
12064 { &hf_ieee1905_ap_he_tx_mcs_map_7ss,
12065 { "Max Tx HE-MCS for 7 SS",
12066 "ieee1905.ap_he_capability.max_tx_he_mcs_7_ss",
12067 FT_UINT16, BASE_DEC, VALS(max_he_mcs_7_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_7_ss_vals
))))
,
12068 0x3000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12069
12070 { &hf_ieee1905_ap_he_tx_mcs_map_8ss,
12071 { "Max Tx HE-MCS for 8 SS",
12072 "ieee1905.ap_he_capability.max_tx_he_mcs_8_ss",
12073 FT_UINT16, BASE_DEC, VALS(max_he_mcs_8_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_8_ss_vals
))))
,
12074 0xC000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12075
12076 { &hf_ieee1905_ap_he_cap_rx_mcs_le_80_mhz,
12077 { "Supported Rx HE-MCS <= 80 MHz",
12078 "ieee1905.ap_he_capability.supported_rx_he_mcs_le_80mhz",
12079 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12080
12081 { &hf_ieee1905_ap_he_rx_mcs_map_1ss,
12082 { "Max Rx HE-MCS for 1 SS",
12083 "ieee1905.ap_he_capability.max_rx_he_mcs_1_ss",
12084 FT_UINT16, BASE_DEC, VALS(max_he_mcs_1_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_1_ss_vals
))))
,
12085 0x0003, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12086
12087 { &hf_ieee1905_ap_he_rx_mcs_map_2ss,
12088 { "Max Rx HE-MCS for 2 SS",
12089 "ieee1905.ap_he_capability.max_rx_he_mcs_2_ss",
12090 FT_UINT16, BASE_DEC, VALS(max_he_mcs_2_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_2_ss_vals
))))
,
12091 0x000C, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12092
12093 { &hf_ieee1905_ap_he_rx_mcs_map_3ss,
12094 { "Max Rx HE-MCS for 3 SS",
12095 "ieee1905.ap_he_capability.max_rx_he_mcs_3_ss",
12096 FT_UINT16, BASE_DEC, VALS(max_he_mcs_3_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_3_ss_vals
))))
,
12097 0x0030, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12098
12099 { &hf_ieee1905_ap_he_rx_mcs_map_4ss,
12100 { "Max Rx HE-MCS for 4 SS",
12101 "ieee1905.ap_he_capability.max_rx_he_mcs_4_ss",
12102 FT_UINT16, BASE_DEC, VALS(max_he_mcs_4_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_4_ss_vals
))))
,
12103 0x00C0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12104
12105 { &hf_ieee1905_ap_he_rx_mcs_map_5ss,
12106 { "Max Rx HE-MCS for 5 SS",
12107 "ieee1905.ap_he_capability.max_rx_he_mcs_5_ss",
12108 FT_UINT16, BASE_DEC, VALS(max_he_mcs_5_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_5_ss_vals
))))
,
12109 0x0300, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12110
12111 { &hf_ieee1905_ap_he_rx_mcs_map_6ss,
12112 { "Max Rx HE-MCS for 6 SS",
12113 "ieee1905.ap_he_capability.max_rx_he_mcs_6_ss",
12114 FT_UINT16, BASE_DEC, VALS(max_he_mcs_6_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_6_ss_vals
))))
,
12115 0x0C00, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12116
12117 { &hf_ieee1905_ap_he_rx_mcs_map_7ss,
12118 { "Max Rx HE-MCS for 7 SS",
12119 "ieee1905.ap_he_capability.max_rx_he_mcs_7_ss",
12120 FT_UINT16, BASE_DEC, VALS(max_he_mcs_7_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_7_ss_vals
))))
,
12121 0x3000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12122
12123 { &hf_ieee1905_ap_he_rx_mcs_map_8ss,
12124 { "Max Rx HE-MCS for 8 SS",
12125 "ieee1905.ap_he_capability.max_rx_he_mcs_8_ss",
12126 FT_UINT16, BASE_DEC, VALS(max_he_mcs_8_ss_vals)((0 ? (const struct _value_string*)0 : ((max_he_mcs_8_ss_vals
))))
,
12127 0xC000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12128
12129 { &hf_ieee1905_ap_he_cap_tx_mcs_160_mhz,
12130 { "Supported Tx HE-MCS 160 MHz",
12131 "ieee1905.ap_he_capability.supported_tx_he_mcs_160mhz",
12132 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12133
12134 { &hf_ieee1905_ap_he_cap_rx_mcs_160_mhz,
12135 { "Supported Rx HE-MCS 160 MHz",
12136 "ieee1905.ap_he_capability.supported_rx_he_mcs_160mhz",
12137 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12138
12139 { &hf_ieee1905_ap_he_cap_tx_mcs_80p80_mhz,
12140 { "Supported Tx HE-MCS 80+80 MHz",
12141 "ieee1905.ap_he_capability.supported_tx_he_mcs_80p80mhz",
12142 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12143
12144 { &hf_ieee1905_ap_he_cap_rx_mcs_80p80_mhz,
12145 { "Supported Rx HE-MCS 80+80 MHz",
12146 "ieee1905.ap_he_capability.supported_rx_he_mcs_80p80mhz",
12147 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12148
12149 { &hf_ieee1905_unassoc_metrics_mac_count,
12150 {"MAC Addresses for this channel",
12151 "ieee1905.unassoc_sta_link_metrics.mac_count",
12152 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12153
12154 { &hf_ieee1905_unassoc_link_metrics_query_mac,
12155 { "STA MAC address", "ieee1905.unassoc_sta_link_metrics.mac_addr",
12156 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12157
12158 { &hf_ieee1905_ap_metrics_reporting_interval,
12159 { "AP metrics reporting interval", "ieee1905.sta_metric_policy.ap_interval",
12160 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12161
12162 { &hf_ieee1905_metric_reporting_policy_radio_id,
12163 { "Radio ID", "ieee1905.metric_reporting_policy.radio_id",
12164 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12165
12166 { &hf_ieee1905_metric_reporting_radio_count,
12167 { "Radio count", "ieee1905.sta_metric_policy.radio_count",
12168 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12169
12170 { &hf_ieee1905_metric_rcpi_threshold,
12171 { "RCPI reporting threshold", "ieee1905.sta_metric_policy.rcpi_threshold",
12172 FT_UINT8, BASE_CUSTOM, CF_FUNC(rcpi_threshold_custom)((const void *) (size_t) (rcpi_threshold_custom)),
12173 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12174
12175 { &hf_ieee1905_metric_reporting_rcpi_hysteresis,
12176 {"STA Metrics Reporting RCPI Hysteresis Margin Override",
12177 "ieee1905.sta_metric_policy.rcpi_hysteresis_margin_override",
12178 FT_UINT8, BASE_CUSTOM, CF_FUNC(rcpi_hysteresis_custom)((const void *) (size_t) (rcpi_hysteresis_custom)),
12179 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12180
12181 { &hf_ieee1905_metrics_policy_flags,
12182 {"STA Metrics Reporting Policy Flags",
12183 "ieee1905.sta_metrics_policy_flags",
12184 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12185
12186 { &hf_ieee1905_assoc_sta_traffic_stats_inclusion,
12187 { "Associated STA Traffic Stats Inclusion Policy",
12188 "ieee1905.sta_metrics_policy_flags.sta_traffic_stats_inclusion",
12189 FT_BOOLEAN, 8, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12190
12191 { &hf_ieee1905_assoc_sta_link_metrics_inclusion,
12192 { "Associated STA Link Metrics Inclusion Policy",
12193 "ieee1905.sta_metrics_policy_flags.sta_link_metrics_inclusion",
12194 FT_BOOLEAN, 8, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12195
12196 { &hf_ieee1905_assoc_wf6_status_policy_inclusion,
12197 { "Associated Wi-Fi6 STA Status Inclusion Policy",
12198 "ieee1905.sta_metrics_policy_flags.wf6_sta_status_inclusion",
12199 FT_BOOLEAN, 8, NULL((void*)0), 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12200
12201 { &hf_ieee1905_reporting_policy_flags_reserved,
12202 { "Reserved", "ieee1905.sta_metrics_policy_flags.reserved",
12203 FT_UINT8, BASE_HEX, NULL((void*)0), 0x1F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12204
12205 { &hf_ieee1905_metrics_channel_util_threshold,
12206 { "Utilization Reporting threshold", "ieee1905.sta_metric_policy.utilization_threshold",
12207 FT_UINT8, BASE_DEC|BASE_UNIT_STRING0x00001000, UNS(&units_dbm)((0 ? (const struct unit_name_string*)0 : ((&units_dbm)))
)
, 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12208
12209 { &hf_ieee1905_ap_metric_query_bssid_cnt,
12210 { "BSSID Count", "ieee1905.ap_metrics_query.bssid_cnt",
12211 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12212
12213 { &hf_ieee1905_ap_metric_query_bssid,
12214 { "Query BSSID", "ieee1905.ap_metrics_query.bssid",
12215 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12216
12217 { &hf_ieee1905_sta_mac_address_type,
12218 { "MAC address", "ieee1905.sta_mac_addr_type.mac_addr",
12219 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12220
12221 { &hf_ieee1905_assoc_sta_mac_addr,
12222 { "MAC address", "ieee1905.assoc_sta_link_metrics.mac_addr",
12223 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12224
12225 { &hf_ieee1905_assoc_sta_bssid_count,
12226 { "Number of BSSIDs for STA", "ieee1905.assoc_sta_link_metrics.bssid_count",
12227 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12228
12229 { &hf_ieee1905_assoc_sta_link_metrics_bssid,
12230 { "STA BSSID", "ieee1905.assoc_sta_link_metrics.bssid",
12231 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12232
12233 { &hf_ieee1905_assoc_sta_link_metrics_time_delta,
12234 { "Measurement time delta", "ieee1905.assoc_sta_link_metrics.time_delta",
12235 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12236
12237 { &hf_ieee1905_assoc_sta_link_metrics_dwn_rate,
12238 { "Downlink data rate", "ieee1905.assoc_sta_link_metrics.down_rate",
12239 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12240
12241 { &hf_ieee1905_assoc_sta_link_metrics_up_rate,
12242 { "Uplink data rate", "ieee1905.assoc_sta_link_metrics.up_rate",
12243 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12244
12245 { &hf_ieee1905_assoc_sta_link_metrics_rcpi,
12246 { "Measured uplink RCPI for STA", "ieee1905.assoc_sta_link_metrics.rcpi",
12247 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12248
12249 { &hf_ieee1905_assoc_wf6_sta_mac_addr,
12250 { "MAC address", "ieee1905.assoc_wf6_sta_status_report.mac_addr",
12251 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12252
12253 { &hf_ieee1905_assoc_wf6_sta_tid_count,
12254 { "Number of Wi-Fi 6 TIDs",
12255 "ieee1905.assoc_wf6_sta_status_report.tid_count",
12256 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12257
12258 { &hf_ieee1905_assoc_wf6_sta_tid,
12259 { "TID", "ieee1905.assoc_wf6_sta_status_report.tid",
12260 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12261
12262 { &hf_ieee1905_assoc_wf6_sta_queue_size,
12263 { "Queue Size", "ieee1905.assoc_wf6_sta_status_report.queue_size",
12264 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12265
12266 { &hf_ieee1905_assoc_sta_ext_link_metrics_mac_addr,
12267 { "Associated STA MAC Address",
12268 "ieee1905.assoc_sta_extended_link_metrics.mac_addr",
12269 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12270
12271 { &hf_ieee1905_assoc_sta_ext_link_metrics_count,
12272 { "BSSID count", "ieee1905.assoc_sta_extended_link_metrics.count",
12273 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12274
12275 { &hf_ieee1905_assoc_sta_extended_metrics_bssid,
12276 { "BSSID", "ieee1905.assoc_sta_extended_link_metrics.bssid",
12277 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12278
12279 { &hf_ieee1905_assoc_sta_extended_metrics_lddlr,
12280 { "Last Data Downlink Rate",
12281 "ieee1905.assoc_sta_extended_link_metrics.lddlr",
12282 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12283
12284 { &hf_ieee1905_assoc_sta_extended_metrics_ldulr,
12285 { "Last Data Uplink Rate",
12286 "ieee1905.assoc_sta_extended_link_metrics.ldulr",
12287 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12288
12289 { &hf_ieee1905_assoc_sta_extended_metrics_ur,
12290 { "Utilization Receive",
12291 "ieee1905.assoc_sta_extended_link_metrics.ur",
12292 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12293
12294 { &hf_ieee1905_assoc_sta_extended_metrics_tr,
12295 { "Utilization Transmit",
12296 "ieee1905.assoc_sta_extended_link_metrics.ut",
12297 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12298
12299 { &hf_ieee1905_unassoc_sta_link_metrics_class,
12300 { "Operating class", "ieee1905.unassoc_sta_link_metrics.operaring_class",
12301 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12302
12303 { &hf_ieee1905_unassoc_sta_link_channel_count,
12304 { "Channel count", "ieee1905.unassoc_sta_link_metrics.channel_count",
12305 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12306
12307 { &hf_ieee1905_unassoc_metrics_channel,
12308 { "Channel number", "ieee1905.unassoc_sta_link_metrics.channel",
12309 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12310
12311 { &hf_ieee1905_he_max_supported_tx_streams,
12312 { "Maximum supported Tx spatial streams", "ieee1905.he_cap.max_tx_streams",
12313 FT_UINT16, BASE_HEX, VALS(vht_he_max_supported_tx_streams_vals)((0 ? (const struct _value_string*)0 : ((vht_he_max_supported_tx_streams_vals
))))
, 0xE000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12314
12315 { &hf_ieee1905_he_max_supported_rx_streams,
12316 { "Maximum supported Rx spatial streams", "ieee1905.he_cap.max_rx_streams",
12317 FT_UINT16, BASE_HEX, VALS(vht_he_max_supported_rx_streams_vals)((0 ? (const struct _value_string*)0 : ((vht_he_max_supported_rx_streams_vals
))))
, 0x1C00, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12318
12319 { &hf_ieee1905_he_support_80plus_mhz_flag,
12320 { "HE support for 80+80 MHz", "ieee1905.ap_he.he_80plus_mhz",
12321 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12322 0x0200, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12323
12324 { &hf_ieee1905_he_support_160mhz_flag,
12325 { "HE support for 160 MHz", "ieee1905.ap_he.he_160_mhz",
12326 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0100, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12327
12328 { &hf_ieee1905_he_su_beamformer_capable_flag,
12329 { "SU beanformer capable", "ieee1905.ap_he.su_beamformer",
12330 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0080, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12331
12332 { &hf_ieee1905_he_mu_beamformer_capable_flag,
12333 { "MU beamformer capable", "ieee1905.ap_he.mu_beamformer",
12334 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0040, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12335
12336 { &hf_ieee1905_ul_mu_mimo_capable_flag,
12337 { "UL MU-MIMO capable", "ieee1905.ap_he.ul_mu_mimo",
12338 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0020, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12339
12340 { &hf_ieee1905_ul_mu_mimo_ofdma_capable_flag,
12341 { "UL MU-MIMO OFDMA capable", "ieee1905.ap_he.he_ul_mu_mimo_ofdma",
12342 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0010, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12343
12344 { &hf_ieee1905_dl_mu_mimo_ofdma_capable_flag,
12345 { "DL MU-MIMO OFDMA capable", "ieee1905.ap_he.he_dl_mu_mimo_ofdma",
12346 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0008, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12347
12348 { &hf_ieee1905_ul_ofdma_capable,
12349 { "UL OFDMA capable", "ieee1905.ap_he.he_ul_ofdma",
12350 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0004, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12351
12352 { &hf_ieee1905_dl_ofdma_capable,
12353 { "DL OFDMA capable", "ieee1905.ap_he.he_dl_ofdma",
12354 FT_BOOLEAN, 16, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
, 0x0002, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12355
12356 { &hf_ieee1905_he_cap_flags,
12357 { "Capabilities", "ieee1905.ap_he.caps",
12358 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12359
12360 { &hf_ieee1905_steering_policy_local_disallowed_count,
12361 { "Local steering disallowed STA count", "ieee1905.steering_policy.local_disallow_sta",
12362 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12363
12364 { &hf_ieee1905_steering_disallowed_mac_addr,
12365 { "Local steering disallowed MAC address", "ieee1905.steering_policy.local_disallow_mac",
12366 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12367
12368 { &hf_ieee1905_btm_steering_disallowed_count,
12369 { "BTM steering disallowed count", "ieee1905.steering_policy.btm_disall_count",
12370 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12371
12372 { &hf_ieee1905_btm_steering_disallowed_mac_addr,
12373 { "Local steering disallowed MAC address", "ieee1905.steering_policy.local_disallow_mac_addr",
12374 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12375
12376 { &hf_ieee1905_steering_policy_radio_count,
12377 { "Steering policy radio count", "ieee1905.steering_policy.radio_count",
12378 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12379
12380 { &hf_ieee1905_steering_policy_radio_id,
12381 { "Radio unique ID", "ieee1905.steering_policy.radio_id",
12382 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12383
12384 { &hf_ieee1905_steering_policy_policy,
12385 { "Steering policy", "ieee1905.steering_policy.policy",
12386 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12387
12388 { &hf_ieee1905_steering_policy_util,
12389 { "Channel utilization threshold", "ieee1905.steering_policy.utilization_threshold",
12390 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12391
12392 { &hf_ieee1905_steering_policy_rcpi_threshold,
12393 { "RCPI steering threshold", "ieee1905.steering_policy.rcpi_threshold",
12394 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12395
12396 { &hf_ieee1905_radio_restriction_radio_id,
12397 { "Radio unique ID", "ieee1905.radio_restriction.radio_id",
12398 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12399
12400 { &hf_ieee1905_radio_restriction_op_class_count,
12401 { "Restricted operating classes", "ieee1905.radio_restriction.classes",
12402 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12403
12404 { &hf_ieee1905_radio_restriction_op_class,
12405 { "Restricted operating class", "ieee1905.radio_restriction.class",
12406 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12407
12408 { &hf_ieee1905_radio_restriction_chan_count,
12409 { "Channel count", "ieee1905.radio_restriction.channel_count",
12410 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12411
12412 { &hf_ieee1905_radio_restriction_channel,
12413 { "Restricted channel", "ieee1905.radio_restriction.channel",
12414 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12415
12416 { &hf_ieee1905_radio_restriction_min_separation,
12417 { "Minimum separation", "ieee1905.radio_restriction.min_sep",
12418 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12419
12420 { &hf_ieee1905_include_estimated_spi_ac_eq_be,
12421 { "Include Estimated Service Parameters Information for AC=BE",
12422 "ieee1905.ap_metrics.include_ac_eq_be_params",
12423 FT_BOOLEAN, 8, TFS(&tfs_included_not_included)((0 ? (const struct true_false_string*)0 : ((&tfs_included_not_included
))))
, 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12424
12425 { &hf_ieee1905_include_estimated_spi_ac_eq_bk,
12426 { "Include Estimated Service Parameters Information for AC=BK",
12427 "ieee1905.ap_metrics.include_ac_eq_bk_params",
12428 FT_BOOLEAN, 8, TFS(&tfs_included_not_included)((0 ? (const struct true_false_string*)0 : ((&tfs_included_not_included
))))
, 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12429
12430 { &hf_ieee1905_include_estimated_spi_ac_eq_vo,
12431 { "Include Estimated Service Parameters Information for AC=VO",
12432 "ieee1905.ap_metrics.include_ac_eq_vo_params",
12433 FT_BOOLEAN, 8, TFS(&tfs_included_not_included)((0 ? (const struct true_false_string*)0 : ((&tfs_included_not_included
))))
, 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12434
12435 { &hf_ieee1905_include_estimated_spi_ac_eq_vi,
12436 { "Include Estimated Service Parameters Information for AC=VI",
12437 "ieee1905.ap_metrics.include_ac_eq_vi_params",
12438 FT_BOOLEAN, 8, TFS(&tfs_included_not_included)((0 ? (const struct true_false_string*)0 : ((&tfs_included_not_included
))))
, 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12439
12440 { &hf_ieee1905_ap_metrics_agent_bssid,
12441 { "Multi-AP agent BSSID", "ieee1905.ap_metrics.bssid",
12442 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12443
12444 { &hf_ieee1905_ap_metrics_channel_utilization,
12445 { "Channel utilization", "ieee1905.ap_metrics.channel_util",
12446 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12447
12448 { &hf_ieee1905_ap_metrics_sta_count,
12449 { "BSS STA count", "ieee1905.ap_metrics.sta_count",
12450 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12451
12452 { &hf_ieee1905_ap_metrics_flags,
12453 { "Estimated Service Parameters Flags", "ieee1905.ap_metrics.flags",
12454 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12455
12456 { &hf_ieee1905_ap_metrics_service_params_be,
12457 { "Estimated service parameters AC=BE", "ieee1905.ap_metrics.est_param_be",
12458 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12459
12460 { &hf_ieee1905_ap_metrics_service_params_bk,
12461 { "Estimated service parameters AC=BK", "ieee1905.ap_metrics.est_param_bk",
12462 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12463
12464 { &hf_ieee1905_ap_metrics_service_params_vo,
12465 { "Estimated service parameters AC=VO", "ieee1905.ap_metrics.est_param_vo",
12466 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12467
12468 { &hf_ieee1905_ap_metrics_service_params_vi,
12469 { "Estimated service parameters AC=VI", "ieee1905.ap_metrics.est_param_vi",
12470 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12471
12472 { &hf_ieee1905_unassoc_sta_link_metric_op_class,
12473 { "Operating class", "ieee1905.unassoc_sta_link_metrics.op_class",
12474 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12475
12476 { &hf_ieee1905_unassoc_sta_link_metric_sta_count,
12477 { "STA count", "ieee1905.unassoc_sta_link_metrics.sta_count",
12478 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12479
12480 { &hf_ieee1905_unassoc_link_metric_mac_addr,
12481 { "STA MAC address", "ieee1905.unassoc_sta_link_metrics.mac_addr",
12482 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12483
12484 { &hf_ieee1905_unassoc_link_metric_channel,
12485 { "Channel number", "ieee1905.unassoc_sta_link_metrics.channel",
12486 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12487
12488 { &hf_ieee1905_unassoc_link_metric_delta,
12489 { "Time delta (ms)", "ieee1905.unassoc_sta_link_metrics.delta",
12490 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12491
12492 { &hf_ieee1905_beacon_metrics_query_mac_addr,
12493 { "Associated STA MAC address", "ieee1905.beacon_metrics.assoc_sta_mac",
12494 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12495
12496 { &hf_ieee1905_unassoc_link_metric_uplink_rcpi,
12497 { "Uplink RCPI", "ieee1905.unassoc_sta_link_metrics.rcpi",
12498 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12499
12500 { &hf_ieee1905_beacon_metrics_query_op_class,
12501 { "Operating class", "ieee1905.beacon_metrics.op_class",
12502 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12503
12504 { &hf_ieee1905_beacon_metrics_query_channel,
12505 { "Channel number", "ieee1905.beacon_metrics.channel_number",
12506 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12507
12508 { &hf_ieee1905_beacon_metrics_query_bssid,
12509 { "BSSID", "ieee1905.beacon_metrics.bssid",
12510 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12511
12512 { &hf_ieee1905_beacon_metrics_query_detail,
12513 { "Reporting detail", "ieee1905.beacon_metrics.detail",
12514 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12515
12516 { &hf_ieee1905_beacon_metrics_query_ssid_len,
12517 { "SSID length", "ieee1905.beacon_metrics.ssid_len",
12518 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12519
12520 { &hf_ieee1905_beacon_metrics_query_ssid,
12521 { "SSID", "ieee1905.beacon_metrics.ssid",
12522 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12523
12524 { &hf_ieee1905_beacon_metrics_channel_count,
12525 { "Channel reports number", "ieee1905.beacon_metrics.report_number",
12526 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12527
12528 { &hf_ieee1905_beacon_metrics_report_len,
12529 { "Channel report length", "ieee1905.beacon_metrics.report_length",
12530 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12531
12532 { &hf_ieee1905_beacon_metrics_report_op_class,
12533 { "Channel report operating class", "ieee1905.beacon_metrics.op_class",
12534 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12535
12536 { &hf_ieee1905_beacon_metrics_report_channel_id,
12537 { "Channel number", "ieee1905.beacon_metrics.channel_number",
12538 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12539
12540 { &hf_ieee1905_measurement_report,
12541 { "Measurement Report", "ieee1905.measurement_report",
12542 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12543
12544 { &hf_ieee1905_beacon_metrics_response_mac_addr,
12545 { "STA MAC address", "ieee1905.beacon_metrics.mac_addr",
12546 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12547
12548 { &hf_ieee1905_beacon_metrics_response_reserved,
12549 { "Reserved", "ieee1905.beacon_metrics.reserved",
12550 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12551
12552 { &hf_ieee1905_beacon_metrics_response_meas_num,
12553 { "Number of Measurements", "ieee1905.beacon_metrics.number_of_measurements",
12554 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12555
12556 { &hf_ieee1905_assoc_sta_traffic_stats_mac_addr,
12557 { "Associated STA MAC address", "ieee1905.assoc_sta_traffic_stats.mac_addr",
12558 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12559
12560 { &hf_ieee1905_assoc_sta_traffic_stats_bytes_sent,
12561 { "Bytes Sent", "ieee1905.assoc_sta_traffic_stats.bytes_sent",
12562 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12563
12564 { &hf_ieee1905_assoc_sta_traffic_stats_bytes_rcvd,
12565 { "Bytes Received", "ieee1905.assoc_sta_traffic_stats.bytes_rcvd",
12566 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12567
12568 { &hf_ieee1905_assoc_sta_traffic_stats_packets_sent,
12569 { "Packets Sent", "ieee1905.assoc_sta_traffic_stats.packets_sent",
12570 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12571
12572 { &hf_ieee1905_assoc_sta_traffic_stats_packets_rcvd,
12573 { "Packets Received", "ieee1905.assoc_sta_traffic_stats.packets_rcvd",
12574 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12575
12576 { &hf_ieee1905_assoc_sta_traffic_stats_tx_pkt_errs,
12577 { "Tx Packet Errors", "ieee1905.assoc_sta_traffic_stats.tx_pkt_errs",
12578 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12579
12580 { &hf_ieee1905_assoc_sta_traffic_stats_rx_pkt_errs,
12581 { "Rx Packet Errors", "ieee1905.assoc_sta_traffic_stats.rx_packet_errs",
12582 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12583
12584 { &hf_ieee1905_assoc_sta_traffic_stats_retrans_count,
12585 { "Retransmission Count", "ieee1905.assoc_sta_traffic_stats.retrans_count",
12586 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12587
12588 { &hf_ieee1905_error_code_value,
12589 { "Reason code", "ieee1905.error_code.reason",
12590 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12591
12592 { &hf_ieee1905_error_code_mac_addr,
12593 { "MAC address of error-code STA", "ieee1905.error_code.mac_addr",
12594 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12595
12596 { &hf_ieee1905_channel_scan_rep_policy,
12597 { "Reporting Policy", "ieee1905.channel_scan_reporting_policy",
12598 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12599
12600 { &hf_ieee1905_channel_scan_pol_report,
12601 { "Report Independent Channel Scans",
12602 "ieee1905.channel_scan_reporting_policy.report_independent_channel_scans",
12603 FT_BOOLEAN, 8, TFS(&report_independent_scans_tfs)((0 ? (const struct true_false_string*)0 : ((&report_independent_scans_tfs
))))
, 0x01, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12604
12605 { &hf_ieee1905_channel_scan_pol_reserved,
12606 { "Reserved", "ieee1905.channel_scan_reporting_policy.reserved",
12607 FT_UINT8, BASE_HEX, NULL((void*)0), 0xFE, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12608
12609 { &hf_ieee1905_channel_scan_capabilities_radio_num,
12610 { "Number of radios", "ieee1905.channel_scan_capabilities.num_radios",
12611 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12612
12613 { &hf_ieee1905_channel_scan_capa_radio_id,
12614 { "Radio Unique ID", "ieee1905.channel_scan_capabilities.radio_id",
12615 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12616
12617 { &hf_ieee1905_channel_scan_capa_flags,
12618 { "Flags", "ieee1905.channel_scan_capabilities.flags",
12619 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12620
12621 { &hf_ieee1905_channel_scan_capa_flags_on_boot_only,
12622 { "On boot only", "ieee1905.channel_scan_capabilities.flags.on_boot_only",
12623 FT_BOOLEAN, 8, TFS(&channel_scan_capa_flags_on_boot_only_tfs)((0 ? (const struct true_false_string*)0 : ((&channel_scan_capa_flags_on_boot_only_tfs
))))
,
12624 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12625
12626 { &hf_ieee1905_channel_scan_capa_flags_scan_impact,
12627 { "Scan Impact", "ieee1905.channel_scan_capabilities.flags.scan_impact",
12628 FT_UINT8, BASE_HEX, VALS(channel_scan_capa_flags_impact_vals)((0 ? (const struct _value_string*)0 : ((channel_scan_capa_flags_impact_vals
))))
, 0x60,
12629 NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12630
12631 { &hf_ieee1905_channel_scan_capa_flags_reserved,
12632 { "Reserved", "ieee1905.channel_scan_capabilities.flags.reserved",
12633 FT_UINT8, BASE_HEX, NULL((void*)0), 0x1F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12634
12635 { &hf_ieee1905_channel_scan_capa_min_scan_interval,
12636 { "Minimum Scan Interval", "ieee1905.channel_scan_capabilities.min_scan_interval",
12637 FT_UINT32, BASE_DEC | BASE_UNIT_STRING0x00001000, UNS(&units_seconds)((0 ? (const struct unit_name_string*)0 : ((&units_seconds
))))
,
12638 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12639
12640 { &hf_ieee1905_channel_scan_capa_class_num,
12641 { "Number of Operating Classes",
12642 "ieee1905.channel_scan_capabilities.num_operating_classes",
12643 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12644
12645 { &hf_ieee1905_channel_scan_capa_oper_class,
12646 { "Operating Class", "ieee1905.channel_scan_capabilities.operating_class",
12647 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12648
12649 { &hf_ieee1905_channel_scan_capa_oper_class_chan_cnt,
12650 { "Number of Channels", "ieee1905.channel_scan_capabilities.operating_class.num_channels",
12651 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12652
12653 { &hf_ieee1905_channel_scan_capa_channel,
12654 { "Channel", "ieee1905.channel_scan_capabilities.operating_class.channel",
12655 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12656
12657 { &hf_ieee1905_channel_scan_request_flags,
12658 { "Flags", "ieee1905.channel_scan_request.flags",
12659 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12660
12661 { &hf_ieee1905_channel_scan_request_flags_fresh_scan,
12662 { "Perform Fresh Scan", "ieee1905.channel_scan_request.flags.perform_fresh_scan",
12663 FT_BOOLEAN, 8, TFS(&perform_fresh_scan_tfs)((0 ? (const struct true_false_string*)0 : ((&perform_fresh_scan_tfs
))))
, 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12664
12665 { &hf_ieee1905_channel_scan_request_flags_reserved,
12666 { "Reserved", "ieee1905.channel_scan_request.flags.reserved",
12667 FT_UINT8, BASE_HEX, NULL((void*)0), 0x7F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12668
12669 { &hf_ieee1905_channel_scan_request_radio_num,
12670 { "Number of Radios", "ieee1905.channel_scan_request.number_radios",
12671 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12672
12673 { &hf_ieee1905_channel_scan_request_radio_id,
12674 { "Radio Unique ID", "ieee1905.channel_scan_request.radio_id",
12675 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12676
12677 { &hf_ieee1905_channel_scan_request_class_num,
12678 { "Number of Operating Classes",
12679 "ieee1905.channel_scan_request.num_operating_classes",
12680 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12681
12682 { &hf_ieee1905_channel_scan_request_oper_class,
12683 { "Operating Class", "ieee1905.channel_scan_request.operating_class",
12684 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12685
12686 { &hf_ieee1905_channel_scan_request_oper_class_chan_cnt,
12687 { "Number of Channels", "ieee1905.channel_scan_request.operating_class.num_channels",
12688 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12689
12690 { &hf_ieee1905_channel_scan_request_channel,
12691 { "Channel", "ieee1905.channel_scan_request.channel",
12692 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12693
12694 { &hf_ieee1905_channel_scan_result_radio_id,
12695 { "Radio Unique ID", "ieee1905.channel_scan_result.radio_id",
12696 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12697
12698 { &hf_ieee1905_channel_scan_result_oper_class,
12699 { "Operating Class", "ieee1905.channel_scan_result.operating_class",
12700 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12701
12702 { &hf_ieee1905_channel_scan_result_channel,
12703 { "Channel", "ieee1905.channel_scan_result.channel",
12704 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12705
12706 { &hf_ieee1905_channel_scan_result_status,
12707 { "Status", "ieee1905.channel_scan_result.status",
12708 FT_UINT8, BASE_HEX|BASE_RANGE_STRING0x00000100, RVALS(channel_scan_result_status_rvals)((0 ? (const struct _range_string*)0 : ((channel_scan_result_status_rvals
))))
,
12709 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12710
12711 { &hf_ieee1905_channel_scan_result_timestamp_len,
12712 { "Timestamp Length", "ieee1905.channel_scan_result.timestamp_len",
12713 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12714
12715 { &hf_ieee1905_channel_scan_result_timestamp_string,
12716 { "Timestamp", "ieee1905.channel_scan_result.timestamp",
12717 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12718
12719 { &hf_ieee1905_channel_scan_result_utilization,
12720 { "Utilization", "ieee1905.channel_scan_result.utilization",
12721 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12722
12723 { &hf_ieee1905_channel_scan_result_noise,
12724 { "Noise", "ieee1905.channel_scan_result.noise",
12725 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12726
12727 { &hf_ieee1905_radio_metrics_noise,
12728 { "Noise", "ieee1905.radio_metrics.noise",
12729 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12730
12731 { &hf_ieee1905_radio_metrics_transmit,
12732 { "Transmit", "ieee1905.radio_metrics.transmit",
12733 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12734
12735 { &hf_ieee1905_radio_metrics_receive_self,
12736 { "ReceiveSelf", "ieee1905.radio_metrics.receive_self",
12737 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12738
12739 { &hf_ieee1905_radio_metrics_receive_other,
12740 { "ReceiveOther", "ieee1905.radio_metrics.receive_other",
12741 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12742
12743 { &hf_ieee1905_ap_extended_metrics_bssid,
12744 { "BSSID", "ieee1905.ap_extended_metrics.bssid",
12745 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12746
12747 { &hf_ieee1905_ap_extended_metrics_unicast_sent,
12748 { "UnicastBytesSent",
12749 "ieee1905.ap_extended_metrics.unicast_bytes_sent",
12750 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12751
12752 { &hf_ieee1905_ap_extended_metrics_unicast_rcvd,
12753 { "UnicastBytesReceived",
12754 "ieee1905.ap_extended_metrics.unicast_bytes_received",
12755 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12756
12757 { &hf_ieee1905_ap_extended_metrics_multicast_sent,
12758 { "MulticastBytesSent",
12759 "ieee1905.ap_extended_metrics.multicast_bytes_sent",
12760 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12761
12762 { &hf_ieee1905_ap_extended_metrics_multicast_rcvd,
12763 { "MulticastBytesReceived",
12764 "ieee1905.ap_extended_metrics.multicast_bytes_received",
12765 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12766
12767 { &hf_ieee1905_ap_extended_metrics_bcast_sent,
12768 { "BroadcastBytesSent",
12769 "ieee1905.ap_extended_metrics.Broadcast_bytes_sent",
12770 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12771
12772 { &hf_ieee1905_ap_extended_metrics_bcast_rcvd,
12773 { "BroadcastBytesReceived",
12774 "ieee1905.ap_extended_metrics.broadcast_bytes_received",
12775 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12776
12777 { &hf_ieee1905_channel_scan_result_neigh_num,
12778 { "Number of Neighbors", "ieee1905.channel_scan_result.number_of_neighbors",
12779 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12780
12781 { &hf_ieee1905_channel_scan_result_bssid,
12782 { "BSSID", "ieee1905.channel_scan_result.bssid",
12783 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12784
12785 { &hf_ieee1905_channel_scan_result_ssid_len,
12786 { "SSID Length", "ieee1905.channel_scan_result.ssid_len",
12787 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12788
12789 { &hf_ieee1905_channel_scan_result_ssid,
12790 { "SSID", "ieee1905.channel_scan_result.ssid",
12791 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12792
12793 { &hf_ieee1905_channel_scan_result_sig_level,
12794 { "Signal Strength", "ieee1905.channel_scan_result.signal_strength",
12795 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12796
12797 { &hf_ieee1905_channel_scan_result_bw_len,
12798 { "Channel BW Length", "ieee1905.channel_scan_result.channel_bw_len",
12799 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12800
12801 { &hf_ieee1905_channel_scan_result_bw,
12802 { "Channel BW", "ieee1905.channel_scan_result.channel_bw",
12803 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12804
12805 { &hf_ieee1905_channel_scan_result_neigh_flags,
12806 { "Neighbor Flags", "ieee1905.channel_scan_result.neighbor_flags",
12807 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12808
12809 { &hf_ieee1905_channel_scan_result_load_element_present,
12810 { "Utilization Present", "ieee1905.channel_scan_result.neighbor_flags.load_element_present",
12811 FT_BOOLEAN, 8, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12812
12813 { &hf_ieee1905_channel_scan_result_util,
12814 { "Channel Utilization", "ieee1905.channel_scan_result.channel_util",
12815 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12816
12817 { &hf_ieee1905_channel_scan_result_sta_count,
12818 { "Station Count", "ieee1905.channel_scan_result.station_count",
12819 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12820
12821 { &hf_ieee1905_channel_scan_result_neigh_reserved,
12822 { "Reserved", "ieee1905.channel_scan_result.neighbor_flags.reserved",
12823 FT_UINT8, BASE_DEC, NULL((void*)0), 0x7F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12824
12825 { &hf_ieee1905_channel_scan_result_scan_duration,
12826 { "Scan Duration", "ieee1905.channel_scan_result.scan_duration",
12827 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12828
12829 { &hf_ieee1905_channel_scan_result_flags,
12830 { "Flags", "ieee1905.channel_scan_result.flags",
12831 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12832
12833 { &hf_ieee1905_channel_scan_result_scan_type,
12834 { "Scan Type", "ieee1905.channel_scan_result.flags.scan_type",
12835 FT_BOOLEAN, 8, TFS(&channel_scan_result_type_tfs)((0 ? (const struct true_false_string*)0 : ((&channel_scan_result_type_tfs
))))
, 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12836
12837 { &hf_ieee1905_channel_scan_result_scan_flags_reserved,
12838 { "Reserved", "ieee1905.channel_scan_result.flags.reserved",
12839 FT_UINT8, BASE_HEX, NULL((void*)0), 0x7F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12840
12841 { &hf_ieee1905_timestamp_length,
12842 { "Timestamp Length", "ieee1905.timestamp.length",
12843 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12844
12845 { &hf_ieee1905_timestamp_string,
12846 { "Timestamp", "ieee1905.timestamp.timestamp",
12847 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12848
12849 { &hf_ieee1905_1905_layer_sec_capa_onboarding,
12850 { "Onboarding Protocols Supported", "ieee1905.1905_layer_security_capability.onboarding_protocols_supported",
12851 FT_UINT8, BASE_DEC | BASE_RANGE_STRING0x00000100, RVALS(onboarding_protocol_supported_rvals)((0 ? (const struct _range_string*)0 : ((onboarding_protocol_supported_rvals
))))
,
12852 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12853
12854 { &hf_ieee1905_1905_layer_sec_capa_mic_sup,
12855 { "Message Integrity Algorithms Supported",
12856 "ieee1905.1905_layer_security_capability.message_integrity_algorithms_supported",
12857 FT_UINT8, BASE_DEC | BASE_RANGE_STRING0x00000100, RVALS(message_integrity_algorithms_sup_rvals)((0 ? (const struct _range_string*)0 : ((message_integrity_algorithms_sup_rvals
))))
,
12858 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12859
12860 { &hf_ieee1905_1905_layer_sec_capa_enc_alg_sup,
12861 { "Message Encryption Algorithms Supported",
12862 "ieee1905.1905_layer_security_capability.message_encryption_algorithms_supported",
12863 FT_UINT8, BASE_DEC | BASE_RANGE_STRING0x00000100, RVALS(message_encryption_algorithms_sup_rvals)((0 ? (const struct _range_string*)0 : ((message_encryption_algorithms_sup_rvals
))))
,
12864 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
12865
12866 { &hf_ieee1905_ap_wf6_capa_radio_id,
12867 { "Radio ID", "ieee1905.ap_wifi_6_capabilities.radio_id",
12868 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12869
12870 { &hf_ieee1905_ap_wf6_role_count,
12871 { "Role Count", "ieee1905.ap_wifi_6_capabilities.role_count",
12872 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12873
12874 { &hf_ieee1905_ap_wf6_agent_role_flags,
12875 { "Role Flags", "ieee1905.ap_wifi_6_capabilities.role_flags",
12876 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12877
12878 { &hf_ieee1905_ap_wf6_capa_agents_role,
12879 { "Agent's Role", "ieee1905.ap_wifi_6_capabilities.agents_role",
12880 FT_UINT8, BASE_HEX, VALS(ap_wf6_agent_role_vals)((0 ? (const struct _value_string*)0 : ((ap_wf6_agent_role_vals
))))
,
12881 0xC0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12882
12883 { &hf_ieee1905_ap_wf6_capa_he_160_support,
12884 { "Support for HE 160 MHz",
12885 "ieee1905.ap_wifi_6_capabilities.support_for_he_160",
12886 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12887 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12888
12889 { &hf_ieee1905_ap_wf6_capa_he_80p80_support,
12890 { "Support for HE 80+80 MHz",
12891 "ieee1905.ap_wifi_6_capabilities.support_for_he_80_p_80",
12892 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12893 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12894
12895 { &hf_ieee1905_ap_wf6_capa_reserved,
12896 { "Reserved", "ieee1905.ap_wifi_6_capabilities.reserved",
12897 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12898
12899 { &hf_ieee1905_ap_wf6_he_supported_flags,
12900 { "HE Support flags",
12901 "ieee1905.ap_wifi_6_capabilities.he_support_flags",
12902 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12903
12904 { &hf_ieee1905_ap_wf6_su_beamformer,
12905 { "SU Beamformer", "ieee1905.ap_wifi_6_capabilities.su_beamformer",
12906 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12907 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12908
12909 { &hf_ieee1905_ap_wf6_su_beamformee,
12910 { "SU Beamformee", "ieee1905.ap_wifi_6_capabilities.su_beamformee",
12911 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12912 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12913
12914 { &hf_ieee1905_ap_wf6_mu_beamformer_status,
12915 { "MU Beamformer Status",
12916 "ieee1905.ap_wifi_6_capabilities.mu_beamformer_status",
12917 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12918 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12919
12920 { &hf_ieee1905_ap_wf6_beamformee_sts_le_80mhz,
12921 { "Beamformee STS <= 80MHz",
12922 "ieee1905.ap_wifi_6_capabilities.beamformee_sts_le_80mhz",
12923 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12924 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12925
12926 { &hf_ieee1905_ap_wf6_beamformee_sts_gt_80mhz,
12927 { "Beamformee STS > 80MHz",
12928 "ieee1905.ap_wifi_6_capabilities.beamformee_sts_gt_80mhz",
12929 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12930 0x08, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12931
12932 { &hf_ieee1905_ap_wf6_ul_mu_mimo,
12933 { "UL MU MIMO", "ieee1905.ap_wifi_6_capabilities.us_mu_mimo",
12934 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12935 0x04, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12936
12937 { &hf_ieee1905_ap_wf6_ul_ofdma,
12938 { "UL OFDMA", "ieee1905.ap_wifi_6_capabilities.ul_ofdma",
12939 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12940 0x02, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12941
12942 { &hf_ieee1905_ap_wf6_dl_ofdma,
12943 { "DL OFDMA", "ieee1905.ap_wifi_6_capabilities.dl_ofdma",
12944 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12945 0x01, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12946
12947 { &hf_ieee1905_ap_wf6_mimo_max_flags,
12948 { "MIMO Max Users flags",
12949 "ieee1905.ap_wifi_6_capabilities.mimo_max_users_flags",
12950 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12951
12952 { &hf_ieee1905_ap_wf6_max_ap_dl_mu_mimo_tx,
12953 { "Max AP DL MU-MIMO TX",
12954 "ieee1905.ap_wifi_6_capabilities.max_ap_dl_mu_mimo_tx",
12955 FT_UINT8, BASE_DEC, NULL((void*)0), 0xF0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12956
12957 { &hf_ieee1905_ap_wf6_max_ap_ul_mu_mimi_rx,
12958 { "Max AP UL MU-MIMO RX",
12959 "ieee1905.ap_wifi_6_capabilities.max_ap_ul_mu_mimo_rx",
12960 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12961
12962 { &hf_ieee1905_ap_wf6_dl_ofdma_max_tx,
12963 { "Max users per DL OFDMA TX in AP role",
12964 "ieee1905.ap_wifi_6_capabilities.ap_max_users_per_dl_ofdma_tx",
12965 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12966
12967 { &hf_ieee1905_ap_wf6_ul_ofdma_max_rx,
12968 { "Max users per UL OFDMA RX in AP role",
12969 "ieee1905.ap_wifi_6_capabilities.ap_max_users_per_ul_ofdma_rx",
12970 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12971
12972 { &hf_ieee1905_ap_wf6_gen_flags,
12973 { "General flags", "ieee1905.ap_wifi_6_capabilities.general_flags",
12974 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12975
12976 { &hf_ieee1905_ap_wf6_gen_rts,
12977 { "RTS", "ieee1905.ap_wifi_6_capabilities.general_flags.rts",
12978 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12979 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12980
12981 { &hf_ieee1905_ap_wf6_gen_mu_rts,
12982 { "MU RTS", "ieee1905.ap_wifi_6_capabilities.general_flags.mu_rts",
12983 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12984 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12985
12986 { &hf_ieee1905_ap_wf6_gen_multi_bssid,
12987 { "Multi-BSSID",
12988 "ieee1905.ap_wifi_6_capabilities.general_flags.multi_bssid",
12989 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12990 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12991
12992 { &hf_ieee1905_ap_wf6_gen_mu_edca,
12993 { "MU EDCA", "ieee1905.ap_wifi_6_capabilities.general_flags.mu_edca",
12994 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
12995 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
12996
12997 { &hf_ieee1905_ap_wf6_gen_twt_requester,
12998 { "TWT Requester",
12999 "ieee1905.ap_wifi_6_capabilities.general_flags.twt_requester",
13000 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
13001 0x08, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
13002
13003 { &hf_ieee1905_ap_wf6_gen_twt_responder,
13004 { "TWT Responder",
13005 "ieee1905.ap_wifi_6_capabilities.general_flags.twt_responder",
13006 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
13007 0x04, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
13008
13009 { &hf_ieee1905_ap_wf6_gen_reserved,
13010 { "Reserved",
13011 "ieee1905.ap_wifi_6_capabilities.general_flags.reserved",
13012 FT_UINT8, BASE_HEX, NULL((void*)0), 0x03, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13013
13014 { &hf_ieee1905_agent_list_agent_num,
13015 { "Number of agents", "ieee1905.wifi_7_agent_capabilities.num_agents",
13016 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13017
13018 { &hf_ieee1905_agent_list_al_mac_addr,
13019 { "AL MAC Address", "ieee1905.agent_list.al_mac_addr",
13020 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13021
13022 { &hf_ieee1905_agent_list_multiap_profile,
13023 { "MultiAP Profile", "ieee1905.agent_list.multiap_profile",
13024 FT_UINT8, BASE_DEC | BASE_RANGE_STRING0x00000100, RVALS(agent_list_multiap_profile_rvals)((0 ? (const struct _range_string*)0 : ((agent_list_multiap_profile_rvals
))))
, 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13025
13026 { &hf_ieee1905_agent_list_security,
13027 { "Security", "ieee1905.agent_list.security",
13028 FT_UINT8, BASE_DEC | BASE_RANGE_STRING0x00000100, RVALS(agent_list_security_rvals)((0 ? (const struct _range_string*)0 : ((agent_list_security_rvals
))))
, 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13029
13030 { &hf_ieee1905_mic_group_temporal_key_id,
13031 { "Group Temporal Key ID", "ieee1905.mic.group_temporal_key_id",
13032 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13033
13034 { &hf_ieee1905_1905_gtk_key_id,
13035 { "Key ID", "ieee1905.mic.group_temporal_key_id.key_id",
13036 FT_UINT8, BASE_DEC, NULL((void*)0), 0xC0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13037
13038 { &hf_ieee1905_mic_version,
13039 { "MIC Version", "ieee1905.mic.group_temporal_key_id.mic_version",
13040 FT_UINT8, BASE_HEX, VALS(mic_version_vals)((0 ? (const struct _value_string*)0 : ((mic_version_vals)))), 0x30, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13041
13042 { &hf_ieee1905_mic_reserved,
13043 { "Reserved", "ieee1905.mic.group_temporal_key_id.reserved",
13044 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13045
13046 { &hf_ieee1905_mic_integrity_transmission_counter,
13047 { "Integrity Transmission Counter",
13048 "ieee1905.mic.integrity_transmission_counter",
13049 FT_UINT48, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13050
13051 { &hf_ieee1905_mic_source_la_mac_id,
13052 {"Source LA MAC ID", "ieee1905.mic.source_la_max_id",
13053 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13054
13055 { &hf_ieee1905_mic_length,
13056 { "MIC Length", "ieee1905.mic.mic_length",
13057 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13058
13059 { &hf_ieee1905_mic_bytes,
13060 { "MIC", "ieee1905.mic.mic_bytes",
13061 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13062
13063 { &hf_ieee1905_encrypted_enc_transmission_count,
13064 { "Encryption Transmission Counter",
13065 "ieee1905.encrypted.encryption_transmission_counter",
13066 FT_UINT48, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13067
13068 { &hf_ieee1905_encrypted_dest_al_mac_addr,
13069 { "Destination 1905 AL MAC Address",
13070 "ieee1905.encrypted.destination_1905_al_mac",
13071 FT_ETHER, ENC_NA0x00000000, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13072
13073 { &hf_ieee1905_encrypted_source_la_mac_id,
13074 { "Source AL MAC", "ieee1905.encrypted.source_al_mac",
13075 FT_ETHER, ENC_NA0x00000000, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13076
13077 { &hf_ieee1905_encrypted_enc_output_field_len,
13078 { "AES-SIV Encrypted Output Length",
13079 "ieee1905.encrypted.aes_siv_encrypted_output_length",
13080 FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13081
13082 { &hf_ieee1905_encrypted_enc_output_field,
13083 { "AES-SIV Encryption Output",
13084 "ieee1905.encrypted.aes_siv_encryption_output",
13085 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13086
13087 { &hf_ieee1905_cac_request_radio_count,
13088 { "Number of Radios", "ieee1905.cac_request.number_of_radios",
13089 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13090
13091 { &hf_ieee1905_cac_request_radio_id,
13092 { "Radio ID", "ieee1905.cac_request.radio_id",
13093 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13094
13095 { &hf_ieee1905_cac_request_op_class,
13096 { "Operating class", "ieee1905.cac_request.operating_class",
13097 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13098
13099 { &hf_ieee1905_cac_request_channel,
13100 { "Channel", "ieee1905.cac_request.channel",
13101 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13102
13103 { &hf_ieee1905_cac_request_flags,
13104 { "Request flags", "ieee1905.cac_request.flags",
13105 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13106
13107 { &hf_ieee1905_cac_request_method,
13108 { "CAC Method", "ieee1905.cac_request.flags.cac_method",
13109 FT_UINT8, BASE_DEC, VALS(cac_request_method_vals)((0 ? (const struct _value_string*)0 : ((cac_request_method_vals
))))
,
13110 0xE0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13111
13112 { &hf_ieee1905_cac_request_completion_action,
13113 { "Successful Completion Action",
13114 "ieee1905.cac_request.flags.successful_completion_action",
13115 FT_UINT8, BASE_DEC | BASE_RANGE_STRING0x00000100,
13116 RVALS(cac_completion_action_vals)((0 ? (const struct _range_string*)0 : ((cac_completion_action_vals
))))
, 0x18, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13117
13118 { &hf_ieee1905_cac_request_completion_unsuccess,
13119 { "Unsuccessful Completion Action",
13120 "ieee1905.cac_request.flags.unsuccessful_completion_action",
13121 FT_UINT8, BASE_DEC | BASE_RANGE_STRING0x00000100,
13122 RVALS(cac_completion_action_vals)((0 ? (const struct _range_string*)0 : ((cac_completion_action_vals
))))
, 0x06, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13123
13124 { &hf_ieee1905_cac_request_reserved,
13125 { "Reserved", "ieee1905.cac_request.flags.reserved",
13126 FT_UINT8, BASE_HEX, NULL((void*)0), 0x01, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13127
13128 { &hf_ieee1905_cac_termination_radio_count,
13129 { "Number of Radios", "ieee1905.cac_termination.number_of_radios",
13130 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13131
13132 { &hf_ieee1905_cac_terminate_radio_id,
13133 { "Radio ID", "ieee1905.cac_termination.radio_id",
13134 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13135
13136 { &hf_ieee1905_cac_terminate_op_class,
13137 { "Operating class", "ieee1905.cac_termination.operating_class",
13138 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13139
13140 { &hf_ieee1905_cac_terminate_channel,
13141 { "Channel", "ieee1905.cac_termination.channel",
13142 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13143
13144 { &hf_ieee1905_cac_completion_rep_radio_count,
13145 { "Number of radios",
13146 "ieee1905.cac_completion_report.number_of_radios",
13147 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13148
13149 { &hf_ieee1905_cac_completion_radio_id,
13150 { "Radio ID", "ieee1905.cac_completion_report.radio_id",
13151 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13152
13153 { &hf_ieee1905_cac_completion_op_class,
13154 { "Operating class", "ieee1905.cac_completion_report.operating_class",
13155 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13156
13157 { &hf_ieee1905_cac_completion_channel,
13158 { "Channel", "ieee1905.cac_completion_report.channel",
13159 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13160
13161 { &hf_ieee1905_cac_completion_status,
13162 { "CAC Completion Status",
13163 "ieee1905.cac_completion_report.cac_completion_status",
13164 FT_UINT8, BASE_HEX | BASE_RANGE_STRING0x00000100,
13165 RVALS(cac_completion_status_rvals)((0 ? (const struct _range_string*)0 : ((cac_completion_status_rvals
))))
, 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13166
13167 { &hf_ieee1905_cac_completion_radar_count,
13168 { "Radar detected count",
13169 "ieee1905.cac_completion_report.radar_detected_count",
13170 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13171
13172 { &hf_ieee1905_cac_comp_radar_op_class,
13173 { "Operating class",
13174 "ieee1905.cac_completion_report.radar.operating_class",
13175 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13176
13177 { &hf_ieee1905_cac_comp_radar_channel,
13178 { "Channel", "ieee1905.cac_completion_report.radar.channel",
13179 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13180
13181 { &hf_ieee1905_cac_status_rpt_active_chan,
13182 { "Available Channel Count",
13183 "ieee1905.cac_status_report.available_channel_count",
13184 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13185
13186 { &hf_ieee1905_cac_status_rpt_avail_op_class,
13187 { "Operating Class",
13188 "ieee1905.cac_status_report.available_channel.operating_class",
13189 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13190
13191 { &hf_ieee1905_cac_status_rpt_avail_channel,
13192 { "Channel",
13193 "ieee1905.cac_status_report.available_channel.channel",
13194 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13195
13196 { &hf_ieee1905_cac_status_rpt_avail_minutes,
13197 { "Minutes since CAC completed",
13198 "ieee1905.cac_status_report.available_channel.minutes_since",
13199 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13200
13201 { &hf_ieee1905_cac_status_rpt_non_occ_cnt,
13202 { "Non-occupied Channel Count",
13203 "ieee1905.cac_status_report.non_occupied_channel_count",
13204 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13205
13206 { &hf_ieee1905_cac_status_rpt_non_occ_op_class,
13207 { "Operating Class",
13208 "ieee1905.cac_status_report.non_occupied_channel.operating_class",
13209 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13210
13211 { &hf_ieee1905_cac_status_rpt_non_occ_channel,
13212 { "Channel",
13213 "ieee1905.cac_status_report.non_occupied_channel.channel",
13214 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13215
13216 { &hf_ieee1905_cac_status_rpt_non_occ_seconds,
13217 { "Seconds remaining",
13218 "ieee1905.cac_status_report.non_occupied_channel.second_remaining",
13219 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13220
13221 { &hf_ieee1905_cac_status_rpt_active_cac_cnt,
13222 { "Active CAC Channel Count",
13223 "ieee1905.cac_status_report.active_cac_channel_count",
13224 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13225
13226 { &hf_ieee1905_cac_status_rpt_active_cac_op_class,
13227 { "Operating Class",
13228 "ieee1905.cac_status_report.active_cac.operating_class",
13229 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13230
13231 { &hf_ieee1905_cac_status_rpt_active_cac_channel,
13232 { "Channel",
13233 "ieee1905.cac_status_report.active_cac.channel",
13234 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13235
13236 { &hf_ieee1905_cac_status_rpt_active_cac_seconds,
13237 { "Seconds remaining",
13238 "ieee1905.cac_status_report.active_cac.seconds_remaining",
13239 FT_UINT24, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13240
13241 { &hf_ieee1905_cac_capa_country_code,
13242 { "Country Code", "ieee1905.cac_capabilities.country_code",
13243 FT_STRING, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13244
13245 { &hf_ieee1905_cac_capa_radio_cnt,
13246 { "Number of radios", "ieee1905.cac_capabilities.number_of_radios",
13247 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13248
13249 { &hf_ieee1905_cac_capabilities_radio_id,
13250 { "Radio ID", "ieee1905.cac_capabilities.radio_id",
13251 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13252
13253 { &hf_ieee1905_cac_capabilities_types_num,
13254 { "Number of types", "ieee1905.cac_capabilities.number_of_types",
13255 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13256
13257 { &hf_ieee1905_cac_capabilities_cac_mode,
13258 { "CAC mode supported",
13259 "ieee1905.cac_capabilities.cac_mode_supported",
13260 FT_UINT8, BASE_HEX | BASE_RANGE_STRING0x00000100,
13261 RVALS(cac_mode_supported_rvals)((0 ? (const struct _range_string*)0 : ((cac_mode_supported_rvals
))))
, 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13262
13263 { &hf_ieee1905_cac_capabilities_cac_seconds,
13264 { "Seconds required to complete CAC",
13265 "ieee1905.cac_capabilities.seconds_required_to_complete_cac",
13266 FT_UINT24, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13267
13268 { &hf_ieee1905_cac_capabilities_op_class_num,
13269 { "Operating Class number",
13270 "ieee1905.cac_capabilities.operating_class_number",
13271 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13272
13273 { &hf_ieee1905_cac_capabilities_op_class,
13274 { "Operating Class", "ieee1905.cac_capabilities.operating_class",
13275 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13276
13277 { &hf_ieee1905_cac_capabilities_channel_cnt,
13278 { "Number of channels",
13279 "ieee1905.cac_capabilities.number_of_channels",
13280 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13281
13282 { &hf_ieee1905_cac_capabillity_channel,
13283 { "Channel", "ieee1905.cac_capabilities.channel",
13284 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13285
13286 { &hf_ieee1905_multi_ap_version,
13287 { "Multi-AP Profile", "ieee1905.multi_ap_version",
13288 FT_UINT8, BASE_DEC | BASE_RANGE_STRING0x00000100,
13289 RVALS(multi_ap_version_rvals)((0 ? (const struct _range_string*)0 : ((multi_ap_version_rvals
))))
, 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13290
13291 { &hf_ieee1905_max_total_serv_prio_rules,
13292 { "Max Total Number Service Prioritization Rules",
13293 "ieee1905.r2_ap_capabilities.max_total_service_prio_rules",
13294 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13295
13296 { &hf_ieee1905_r2_ap_capa_reserved,
13297 { "Reserved", "ieee1905.r2_ap_capabilities.reserved",
13298 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13299
13300 { &hf_ieee1905_r2_ap_capa_flags,
13301 { "Flags", "ieee1905.r2_ap_capabilities.flags",
13302 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13303
13304 { &hf_ieee1905_byte_counter_units,
13305 { "Byte Counter Units", "ieee1905.r2_ap_capabilities.byte_counter_units",
13306 FT_UINT8, BASE_DEC, VALS(byte_counter_units_vals)((0 ? (const struct _value_string*)0 : ((byte_counter_units_vals
))))
, 0xC0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}},
13307
13308 { &hf_ieee1905_ctag_service_prio_flag,
13309 { "802.1Q C-TAG Service Prioritization", "ieee1905.r2_ap_capabilities.ctag_service_prioritization",
13310 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled)((0 ? (const struct true_false_string*)0 : ((&tfs_enabled_disabled
))))
, 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13311
13312 { &hf_ieee1905_dpp_onboarding_flag,
13313 { "DPP Onboarding procedure", "ieee1905.r2_ap_capabilities.dpp_onboarding" ,
13314 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled)((0 ? (const struct true_false_string*)0 : ((&tfs_enabled_disabled
))))
, 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13315
13316 { &hf_ieee1905_traffic_separation_flag,
13317 { "802.1Q C-TAG Traffic Separation", "ieee1905.r2_ap_capabilities.traffic_separation" ,
13318 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled)((0 ? (const struct true_false_string*)0 : ((&tfs_enabled_disabled
))))
, 0x08, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13319
13320 { &hf_ieee1905_r2_ap_capa_flags_reserved,
13321 { "Reserved", "ieee1905.r2_ap_capabilities.reserved",
13322 FT_UINT8, BASE_HEX, NULL((void*)0), 0x07, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13323
13324 { &hf_ieee1905_max_vid_count,
13325 { "Max Total Number of VIDs", "ieee1905.r2_ap_capabilities.max_total_number_of_vids",
13326 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13327
13328 { &hf_ieee1905_default_802_1q_settings_primary_vlan,
13329 { "Primary VLAN ID", "ieee1905.service_prioritization_rule.primary_vlan_id",
13330 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13331
13332 { &hf_ieee1905_default_802_1q_settings_flags,
13333 { "Flags", "ieee1905.service_prioritization_rule.flags",
13334 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13335
13336 { &hf_ieee1905_default_802_1q_settings_default_pcp,
13337 { "Primary PCP", "ieee1905.service_prioritization_rule.flags.primary_pcp",
13338 FT_UINT8, BASE_HEX, NULL((void*)0), 0xE0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13339
13340 { &hf_ieee1905_default_802_1q_settings_reserved,
13341 { "Reserved", "ieee1905.service_prioritization_rule.flags.reserved",
13342 FT_UINT8, BASE_HEX, NULL((void*)0), 0x1F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13343
13344 { &hf_ieee1905_ap_radio_advanced_capa_radio_id,
13345 { "Radio Unique ID", "ieee1905.ap_advanced_capabilities.radio_id",
13346 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13347
13348 { &hf_ieee1905_radio_advanced_capa_flags,
13349 { "AP Radio Advanced Capabilities Flags",
13350 "ieee1905.ap_advanced_capabilities.flags",
13351 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13352
13353 { &hf_ieee1905_traffic_separation_policy_num_ssids,
13354 { "Number of SSIDs", "ieee1905.traffic_separation_policy.num_ssids",
13355 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13356
13357 { &hf_ieee1905_traffic_separation_policy_ssid_len,
13358 { "SSID Length", "ieee1905.traffic_separation_policy.ssid_length",
13359 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13360
13361 { &hf_ieee1905_traffic_separation_policy_ssid,
13362 { "SSID", "ieee1905.traffic_separation_policy.ssid",
13363 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13364
13365 { &hf_ieee1905_traffic_separation_policy_vlanid,
13366 { "VLAN ID", "ieee1905.traffic_separation_policy.vlan_id",
13367 FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13368
13369 { &hf_ieee1905_bss_config_report_radio_count,
13370 { "Radio Count", "ieee1905.bss_config_report.radio_count",
13371 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13372
13373 { &hf_ieee1905_bss_config_report_radio_id,
13374 { "Radio ID", "ieee1905.bss_config_report.radio_id",
13375 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13376
13377 { &hf_ieee1905_bss_config_report_flags,
13378 { "Report Flags", "ieee1905.bss_config_report.report_flags",
13379 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13380
13381 { &hf_ieee1905_bss_config_report_backhaul_bss,
13382 { "Backhaul BSS", "ieee1905.bss_config_report.backhaul_bss",
13383 FT_BOOLEAN, 8, TFS(&tfs_not_inuse_inuse)((0 ? (const struct true_false_string*)0 : ((&tfs_not_inuse_inuse
))))
, 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13384
13385 { &hf_ieee1905_bss_config_report_fronthaul_bss,
13386 { "Fronthaul BSS", "ieee1905.bss_config_report.fronthaul_bss",
13387 FT_BOOLEAN, 8, TFS(&tfs_not_inuse_inuse)((0 ? (const struct true_false_string*)0 : ((&tfs_not_inuse_inuse
))))
, 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13388
13389 { &hf_ieee1905_bss_config_report_r1_disallowed_status,
13390 { "R1 Disallowed Status",
13391 "ieee1905.bss_config_report.r1_disallowed_status",
13392 FT_BOOLEAN, 8, TFS(&tfs_disallowed_allowed)((0 ? (const struct true_false_string*)0 : ((&tfs_disallowed_allowed
))))
, 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13393
13394 { &hf_ieee1905_bss_config_report_r2_disallowed_status,
13395 { "R2 Disallowed Status",
13396 "ieee1905.bss_config_report.r2_disallowed_status",
13397 FT_BOOLEAN, 8, TFS(&tfs_disallowed_allowed)((0 ? (const struct true_false_string*)0 : ((&tfs_disallowed_allowed
))))
, 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13398
13399 { &hf_ieee1905_bss_config_report_multiple_bssid_set,
13400 { "Multiple BSSID Set",
13401 "ieee1905.bss_config_report.multiple_bssid_set",
13402 FT_BOOLEAN, 8, TFS(&tfs_configured_not_configured)((0 ? (const struct true_false_string*)0 : ((&tfs_configured_not_configured
))))
,
13403 0x08, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13404
13405 { &hf_ieee1905_bss_config_report_transmitted_bssid,
13406 { "Transmitted BSSID",
13407 "ieee1905.bss_config_report.transmitted_bssid",
13408 FT_BOOLEAN, 8, TFS(&tfs_transmitted_non_transmitted)((0 ? (const struct true_false_string*)0 : ((&tfs_transmitted_non_transmitted
))))
,
13409 0x04, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13410
13411 { &hf_ieee1905_bss_config_report_reserved,
13412 { "Reserved", "ieee1905.bss_config_report.reserved",
13413 FT_UINT8, BASE_HEX, NULL((void*)0), 0x03, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13414
13415 { &hf_ieee1905_bss_config_report_res,
13416 { "Reserved", "ieee1905.bss_config_report.reserved",
13417 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13418
13419 { &hf_ieee1905_bss_config_report_bss_cnt,
13420 { "BSS Count", "ieee1905.bss_config_report.bss_count",
13421 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13422
13423 { &hf_ieee1905_bss_config_report_mac,
13424 { "Local Interface MAC addr",
13425 "ieee1905.bss_config_report.mac_addr",
13426 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13427
13428 { &hf_ieee1905_bss_config_report_ssid_len,
13429 { "SSID Length", "ieee1905.bss_config_report.ssid_length",
13430 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13431
13432 { &hf_ieee1905_bss_config_report_ssid,
13433 { "SSID", "ieee1905.bss_config_report.ssid",
13434 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13435
13436 { &hf_ieee1905_bssid_tlv_bssid,
13437 { "BSSID", "ieee1905.bssid",
13438 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13439
13440 { &hf_ieee1905_service_prio_rule_id,
13441 { "Rule Identifier", "ieee1905.service_prio_rule.id",
13442 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13443
13444 { &hf_ieee1905_service_prio_rule_flags,
13445 { "Flags", "ieee1905.service_prio_rule.flags",
13446 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13447
13448 { &hf_ieee1905_service_prio_rule_add_remove_filter_bit,
13449 { "Add-Remove Filter", "ieee1905.service_prio_rule.flags.add_remove",
13450 FT_BOOLEAN, 8, TFS(&tfs_add_remove)((0 ? (const struct true_false_string*)0 : ((&tfs_add_remove
))))
, 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13451
13452 { &hf_ieee1905_service_prio_rule_flags_reserved,
13453 { "Reserved", "ieee1905.service_prio_rule.flags.reserved",
13454 FT_UINT8, BASE_HEX, NULL((void*)0), 0x7F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13455
13456
13457 { &hf_ieee1905_service_prio_rule_precedence,
13458 { "Rule Precedence", "ieee1905.service_prio_rule.precedence",
13459 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13460
13461 { &hf_ieee1905_service_prio_rule_output,
13462 { "Rule Output", "ieee1905.service_prio_rule.output",
13463 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13464
13465 { &hf_ieee1905_service_prio_match_flags,
13466 { "Match flags", "ieee1905.service_prio_rule.match_flags",
13467 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13468
13469 { &hf_ieee1905_service_prio_rule_match_always,
13470 { "Match Always", "ieee1905.service_prio_rule.match.match_always",
13471 FT_BOOLEAN, 8, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13472
13473 { &hf_ieee1905_service_prio_rule_match_reserved,
13474 { "Reserved", "ieee1905.service_prio_rule.match.reserved",
13475 FT_UINT8, BASE_HEX, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13476
13477 { &hf_ieee1905_service_prio_rule_match_up_in_qos,
13478 { "Match Up in 802.11 QoS Control",
13479 "ieee1905.service_prio_rule.match.match_up_802_11_qos",
13480 FT_BOOLEAN, 8, NULL((void*)0), 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13481
13482 { &hf_ieee1905_service_prio_rule_match_up_control_match,
13483 { "UP in 802.11 QoS Control Match Sense Flag",
13484 "ieee1905.service_prio_rule.match.up_in_802_11_qos_control",
13485 FT_BOOLEAN, 8, NULL((void*)0), 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13486
13487 { &hf_ieee1905_service_prio_rule_match_source_mac,
13488 { "Match Source MAC Address",
13489 "ieee1905.service_prio_rule.match.match_source_mac",
13490 FT_BOOLEAN, 8, NULL((void*)0), 0x08, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13491
13492 { &hf_ieee1905_service_prio_rule_match_source_mac_sense,
13493 { "Source MAC Address Match Sense",
13494 "ieee1905.service_prio_rule.match.source_mac_address_match_sense",
13495 FT_BOOLEAN, 8, NULL((void*)0), 0x04, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13496
13497 { &hf_ieee1905_service_prio_rule_match_dest_mac,
13498 { "Match Destination MAC address",
13499 "ieee1905.service_prio_rule.match.match_destination_mac",
13500 FT_BOOLEAN, 8, NULL((void*)0), 0x02, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13501
13502 { &hf_ieee1905_service_prio_rule_match_dest_mac_sense,
13503 { "Destination MAC Address Match Sense",
13504 "ieee1905.service_prio_rule.match.destination_mac_address_match_sense",
13505 FT_BOOLEAN, 8, NULL((void*)0), 0x01, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13506
13507 { &hf_ieee1905_service_prio_rule_up_control,
13508 { "UP in 802.11 QoS Control",
13509 "ieee1905.service_prio_rule.up_in_802_11_qos_control",
13510 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13511
13512 { &hf_ieee1905_service_prio_rule_source_mac,
13513 { "Source MAC Address", "ieee1905.service_prio_rule.source_mac_addr",
13514 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13515
13516 { &hf_ieee1905_service_prio_rule_dest_mac,
13517 { "Destination MAC Address", "ieee1905.service_prio_rule.destination_mac_addr",
13518 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13519
13520 { &hf_ieee1905_dscp_mapping_table_val,
13521 { "PCP Value", "ieee1905.dscp_mapping_table.pcp_value",
13522 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13523
13524 { &hf_ieee1905_r2_error_reason_code,
13525 { "Reason Code", "ieee1905.profile_2_error.reason_code",
13526 FT_UINT8, BASE_DEC | BASE_RANGE_STRING0x00000100, RVALS(r2_error_code_rvals)((0 ? (const struct _range_string*)0 : ((r2_error_code_rvals)
)))
,
13527 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13528
13529 { &hf_ieee1905_r2_error_bssid,
13530 { "BSSID", "ieee1905.profile_2_error.bssid",
13531 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13532
13533 { &hf_ieee1905_r2_error_service_prio_rule_id,
13534 { "Service Prioritization Rule ID", "ieee1905.r2_error.service_prio_rule.id",
13535 FT_UINT32, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13536
13537 { &hf_ieee1905_r2_error_qmid,
13538 { "QMID", "ieee1905.profile_2_error.qmid",
13539 FT_UINT16, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13540
13541 { &hf_ieee1905_ap_radio_advanced_capa_backhaul_bss_traffic_sep,
13542 { "Traffic Separation on combined fronthaul and R1-only backhaul",
13543 "ieee1905.ap_advanced_capabilities.traffic_sep_on_combined_fronthaul_and_r1_only_backhaul",
13544 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
13545 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13546
13547 { &hf_ieee1905_ap_radio_advanced_capa_combined_r1_r2_backhaul,
13548 { "Traffic Separation on combined R1 and R2 and above backhaul",
13549 "ieee1905.ap_advanced_capabilities.traffic_sep_on_combined_r1_and_r2_and_backhaul",
13550 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
13551 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13552
13553 { &hf_ieee1905_ap_radio_advanced_capa_mscs,
13554 { "MSCS and EasyMesh configuration of extensions to MSCS",
13555 "ieee1905.ap_advanced_capabilities.mscs",
13556 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
13557 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13558
13559 { &hf_ieee1905_ap_radio_advanced_capa_scs,
13560 { "SCS and EasyMesh configuration of extensions to SCS",
13561 "ieee1905.ap_advanced_capabilities.scs",
13562 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
13563 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13564
13565 { &hf_ieee1905_ap_radio_advanced_capa_qos_map,
13566 { "DSCP Mapping Table TLV based DSCP-to-UP mapping and distribution of QoS Map elements to associated STAs",
13567 "ieee1905.ap_advanced_capabilities.qos_map",
13568 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
13569 0x08, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13570
13571 { &hf_ieee1905_ap_radio_advanced_capa_dscp_policy,
13572 { "Sending DSCP Policy Requests to associated STAs, and EasyMesh configuration of such policies",
13573 "ieee1905.ap_advanced_capabilities.dscp_policy",
13574 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
13575 0x04, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13576
13577 { &hf_ieee1905_ap_radio_advanced_capa_qm_scs_traffic_descr,
13578 { "Qos Management SCS Traffic Description and EasyMesh configuration of and/or extensions to SCS using traffic descriptions",
13579 "ieee1905.ap_advanced_capabilities.qm_scs_traffic_descr",
13580 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported)((0 ? (const struct true_false_string*)0 : ((&tfs_supported_not_supported
))))
,
13581 0x02, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13582
13583 { &hf_ieee1905_ap_radio_advanced_capa_reserved,
13584 { "Reserved", "ieee1905.ap_advanced_capabilities.reserved",
13585 FT_UINT8, BASE_HEX, NULL((void*)0), 0x01, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13586
13587 { &hf_ieee1905_assoc_status_notif_num_bssid,
13588 { "Number of BSSIDs",
13589 "ieee1905.association_status_notification.num_bssids",
13590 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13591
13592 { &hf_ieee1905_assoc_status_notif_bssid,
13593 { "BSSID of operated BSS",
13594 "ieee1905.associated_status_notification.bssid_of_operated_bss",
13595 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13596
13597 { &hf_ieee1905_assoc_status_notif_status,
13598 { "Status", "ieee1905.associated_status_notification.status",
13599 FT_UINT8, BASE_DEC | BASE_RANGE_STRING0x00000100,
13600 RVALS(assoc_status_notif_status_rvals)((0 ? (const struct _range_string*)0 : ((assoc_status_notif_status_rvals
))))
, 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13601
13602 { &hf_ieee1905_source_info_mac_addr,
13603 { "Tunneled Source MAC Address",
13604 "ieee1905.source_info.tunneled_source_mac_address",
13605 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13606
13607 { &hf_ieee1905_tunneled_message_type,
13608 { "Tunneled protocol payload type",
13609 "ieee1905.tunneled_message_type.tunneled_payload_type",
13610 FT_UINT8, BASE_DEC | BASE_RANGE_STRING0x00000100,
13611 RVALS(tunneled_message_type_rvals)((0 ? (const struct _range_string*)0 : ((tunneled_message_type_rvals
))))
, 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13612
13613 { &hf_ieee1905_tunneled_data,
13614 { "Tunneled protocol payload",
13615 "ieee1905.tunneled.tunneled_protocol_payload",
13616 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13617
13618 { &hf_ieee1905_status_code_status,
13619 { "Status Code", "ieee1905.status_code.status_code",
13620 FT_UINT16, BASE_HEX|BASE_EXT_STRING0x00000200, &ieee80211_status_code_ext, 0,
13621 NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13622
13623 { &hf_ieee1905_disassociation_reason_code,
13624 { "Reason Code", "ieee1905.disassociation_reason_code.reason_code",
13625 FT_UINT16, BASE_HEX|BASE_EXT_STRING0x00000200, &ieee80211_reason_code_ext, 0,
13626 NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13627
13628 { &hf_ieee1905_backhaul_sta_radio_id,
13629 { "Radio ID", "ieee1905.backhaul_sta_radio_capabilities.radio_id",
13630 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13631
13632 { &hf_ieee1905_backhaul_sta_radio_capabilities,
13633 { "Flags", "ieee1905.backhaul_sta_radio_capabilities.flags",
13634 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13635
13636 { &hf_ieee1905_backhaul_sta_radio_capa_mac_included,
13637 { "MAC address included",
13638 "ieee1905.backhaul_sta_radio_capabilities.mac_address_included",
13639 FT_BOOLEAN, 8, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13640
13641 { &hf_ieee1905_backhaul_sta_radio_capa_reserved,
13642 { "Reserved", "ieee1905.backhaul_sta_radio_capabilities.reserved",
13643 FT_UINT8, BASE_HEX, NULL((void*)0), 0x7F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13644
13645 { &hf_ieee1905_backhaul_sta_addr,
13646 { "Backhaul STA MAC address",
13647 "ieee1905.backhaul_sta_radio_capabilities.backhaul_sta_mac_address",
13648 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13649
13650 { &hf_ieee1905_akm_backhaul_suite_oui,
13651 { "Backhaul Suite OUI",
13652 "ieee1905.akm_suite_capabilities.backhaul.backhaul_akm_suite_oui",
13653 FT_UINT24, BASE_OUI, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13654
13655 { &hf_ieee1905_akm_backhaul_suite_type,
13656 { "Backhaul AKM Suite type",
13657 "ieee1905.akm_suite_capabilities.backhaul_akm_suite_type",
13658 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13659
13660 { &hf_ieee1905_backhaul_akm_suite_capa_count,
13661 { "Backhaul AKM Suite count",
13662 "ieee1905.akm_suite_capabilities.backhaul_akm_suite_count",
13663 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13664
13665 { &hf_ieee1905_akm_fronthaul_suite_oui,
13666 { "Fronthaul Suite OUI",
13667 "ieee1905.akm_suite_capabilities.backhaul.fronthaul_akm_suite_oui",
13668 FT_UINT24, BASE_OUI, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13669
13670 { &hf_ieee1905_akm_fronthaul_suite_type,
13671 { "Fronthaul AKM Suite type",
13672 "ieee1905.akm_suite_capabilities.fronthaul_akm_suite_type",
13673 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13674
13675 { &hf_ieee1905_fronthaul_akm_suite_capa_count,
13676 { "Fronthaul AKM Suite count",
13677 "ieee1905.akm_suite_capabilities.fronthaul_akm_suite_count",
13678 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13679
13680 { &hf_ieee1905_encap_dpp_flags,
13681 { "Flags", "ieee1905.1905_encap_dpp.flags",
13682 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13683
13684 { &hf_ieee1905_dpp_encap_enrollee_mac_present,
13685 { "Enrollee Mac Address Present",
13686 "ieee1905.1905_encap_dpp.flags.enrollee_mac_address_present",
13687 FT_BOOLEAN, 8, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13688
13689 { &hf_ieee1905_dpp_encap_reserved,
13690 { "Reserved",
13691 "ieee1905.1905_encap_dpp.flags.reserved",
13692 FT_BOOLEAN, 8, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13693
13694 { &hf_ieee1905_dpp_encap_frame_type_flag,
13695 { "DPP Frame Indicator",
13696 "ieee1905.1905_encap_dpp.flags.dpp_frame_indicator",
13697 FT_BOOLEAN, 8, TFS(&tfs_dpp_frame_indicator)((0 ? (const struct true_false_string*)0 : ((&tfs_dpp_frame_indicator
))))
, 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13698
13699 { &hf_ieee1905_dpp_encap_reserved2,
13700 { "Reserved", "ieee1905.1905_encap_dpp.flags.reserved2",
13701 FT_UINT8, BASE_HEX, NULL((void*)0), 0x1F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13702
13703 { &hf_ieee1905_encap_dpp_sta_mac,
13704 { "Destination STA MAC address",
13705 "ieee1905.1905_encap_dpp.destination_sta_mac_address",
13706 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13707
13708 { &hf_ieee1905_dpp_encap_frame_type,
13709 { "Frame Type", "ieee1905.1905_encap_dpp.frame_type",
13710 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13711
13712 { &hf_ieee1905_dpp_encap_frame_length,
13713 { "Frame Length", "ieee1905.1905_encap_dpp.frame_length",
13714 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13715
13716 { &hf_ieee1905_dpp_encap_dpp_oui,
13717 { "OUI", "ieee1905.1905_encap_dpp.oui",
13718 FT_UINT24, BASE_OUI, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13719
13720 { &hf_ieee1905_dpp_encap_public_action,
13721 { "Public Action", "ieee1905.1905_encap_dpp.public_action",
13722 FT_UINT8, BASE_HEX|BASE_EXT_STRING0x00000200, &ff_pa_action_codes_ext, 0,
13723 NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13724
13725 { &hf_ieee1905_dpp_encap_dpp_subtype,
13726 { "WFA Subtype", "ieee1905.1905_encap_dpp.subtype",
13727 FT_UINT8, BASE_DEC, VALS(wfa_subtype_vals)((0 ? (const struct _value_string*)0 : ((wfa_subtype_vals)))), 0,
13728 NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13729
13730 { &hf_ieee1905_dpp_bootstrapping_uri_radio_id,
13731 { "Radio ID", "ieee1905.dpp_bootstrapping_uri_notification.radio_id",
13732 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13733
13734 { &hf_ieee1905_dpp_bootstrapping_uri_local_mac_addr,
13735 { "MAC Address of Local Interface",
13736 "ieee1905.dpp_bootstrapping_uri_notification.mac_addr_local_intf",
13737 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13738
13739 { &hf_ieee1905_dpp_bootstrapping_uri_bsta_mac_addr,
13740 { "MAC Address of bSTA",
13741 "ieee1905.dpp_bootstrapping_uri_notification.mac_addr_bsta",
13742 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13743
13744 { &hf_ieee1905_dpp_bootstrapping_uri_received,
13745 { "DPP Bootstrapping URI",
13746 "ieee1905.dpp_bootstrapping_uri_notification.dpp_bootstrapping_uri",
13747 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13748
13749 { &hf_ieee1905_dpp_advertise_cce_flag,
13750 { "Advertise CCE", "ieee1905.dpp_advertise_cce.flag",
13751 FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled)((0 ? (const struct true_false_string*)0 : ((&tfs_enabled_disabled
))))
, 0x01, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13752
13753 { &hf_ieee1905_dpp_chirp_value_flags,
13754 { "Chirp Value Flags", "ieee1905.dpp_chirp_value.flags",
13755 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13756
13757 { &hf_ieee1905_dpp_chirp_enrollee_mac_addr_present,
13758 { "Enrollee MAC Address Present",
13759 "ieee1905.dpp_chirp_value.flags.enrollee_mac_addr_present",
13760 FT_BOOLEAN, 8, TFS(&tfs_present_not_present)((0 ? (const struct true_false_string*)0 : ((&tfs_present_not_present
))))
, 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13761
13762 { &hf_ieee1905_dpp_chirp_hash_validity,
13763 { "Hash Validity Bit", "ieee1905.dpp_chirp_value.flags.hash_validity_bit",
13764 FT_BOOLEAN, 8, TFS(&tfs_chirp_hash_validity_bit)((0 ? (const struct true_false_string*)0 : ((&tfs_chirp_hash_validity_bit
))))
,
13765 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13766
13767 { &hf_ieee1905_dpp_chirp_reserved,
13768 { "Reserved", "ieee1905.dpp_chirp_value.flags.reserved",
13769 FT_UINT8, BASE_HEX, NULL((void*)0), 0x3F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13770
13771 { &hf_ieee1905_dpp_chirp_enrollee_mac_addr,
13772 { "Destination STA MAC Address",
13773 "ieee1905.dpp_chirp_value.dest_mac_addr",
13774 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13775
13776 { &hf_ieee1905_dpp_chirp_value_hash_length,
13777 { "Hash Length", "ieee1905.dpp_chirp_value.hash_length",
13778 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13779
13780 { &hf_ieee1905_dpp_chirp_value_hash_value,
13781 { "Hash Value", "ieee1905.dpp_chirp_value.hash_value",
13782 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13783
13784 { &hf_ieee1905_dev_inventory_lsn,
13785 { "Serial Number Length", "ieee1905.device_inventory.lsn",
13786 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13787
13788 { &hf_ieee1905_dev_inventory_serial,
13789 { "Serial Number", "ieee1905.device_inventory.serial_number",
13790 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13791
13792 { &hf_ieee1905_dev_inventory_lsv,
13793 { "Software Version Length", "ieee1905.device_inventory.lsv",
13794 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13795
13796 { &hf_ieee1905_dev_inventory_sw_vers,
13797 { "Software Version", "ieee1905.device_inventory.software_version",
13798 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13799
13800 { &hf_ieee1905_dev_inventory_lee,
13801 { "Execution Env Length", "ieee1905.device_inventory.lee",
13802 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13803
13804 { &hf_ieee1905_dev_inventory_exec_env,
13805 { "Execution Env", "ieee1905.device_inventory.execution_env",
13806 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13807
13808 { &hf_ieee1905_dev_inventory_num_radios,
13809 { "Number of Radios", "ieee1905.device_inventory.number_of_radios",
13810 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13811
13812 { &hf_ieee1905_dev_inventory_radio_id,
13813 { "Radio ID", "ieee1905.device_inventory.radio_id",
13814 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13815
13816 { &hf_ieee1905_dev_inventory_lcv,
13817 { "Chipset Vendor Length", "ieee1905.device_inventory.lcv",
13818 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13819
13820 { &hf_ieee1905_dev_inventory_chp_ven,
13821 { "Chipset Vendor", "ieee1905.device_inventory.chipset_vendor",
13822 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13823
13824 { &hf_ieee1905_r2_steering_req_src_bssid,
13825 { "Src BSSID", "ieee1905.r2_steering_request.src_bssid",
13826 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13827
13828 { &hf_ieee1905_r2_steering_req_flags,
13829 { "Flags", "ieee1905.r2_steering_request.flags",
13830 FT_UINT8, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13831
13832 { &hf_ieee1905_r2_steering_request_mode_flag,
13833 { "Request Mode", "ieee1905.r2_steering_request.flags.request_mode",
13834 FT_BOOLEAN, 8, TFS(&tfs_ieee1905_steering_request_mode_flag)((0 ? (const struct true_false_string*)0 : ((&tfs_ieee1905_steering_request_mode_flag
))))
,
13835 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13836
13837 { &hf_ieee1905_r2_btm_disassoc_imminent_flag,
13838 { "BTM Disassociation Imminent",
13839 "ieee1905.r2_steering_request.flags.btm_disassociation_imminent",
13840 FT_BOOLEAN, 8, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13841
13842 { &hf_ieee1905_r2_btm_abridged_flag,
13843 { "BTM Abridged", "ieee1905.r2_steering_request.flags.btm_abridged",
13844 FT_BOOLEAN, 8, NULL((void*)0), 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13845
13846 { &hf_ieee1905_r2_steering_req_reserved,
13847 { "Reserved", "ieee1905.r2_steering_request.flags.reserved",
13848 FT_UINT8, BASE_HEX, NULL((void*)0), 0x1F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13849
13850 { &hf_ieee1905_r2_steering_op_window,
13851 { "Steering Opportunity window",
13852 "ieee1905.r2_steering_request.steering_opportunity_window",
13853 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13854
13855 { &hf_ieee1905_r2_steering_btm_disassoc_tmr,
13856 { "BTM Disassociation Timer",
13857 "ieee1905.r2_steering_request.btm_disassociation_timer",
13858 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13859
13860 { &hf_ieee1905_r2_steering_sta_count,
13861 { "STA List Count", "ieee1905.r2_steering_request.sta_list_count",
13862 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13863
13864 { &hf_ieee1905_r2_steering_sta_mac,
13865 { "AMB capable STA MAC",
13866 "ieee1905.r2_steering_request.amb_capable_sta_mac",
13867 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13868
13869 { &hf_ieee1905_r2_steering_target_count,
13870 { "Target BSSID Count",
13871 "ieee1905.r2_steering_request.target_bssid_count",
13872 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13873
13874 { &hf_ieee1905_r2_steering_target_bssid,
13875 { "Target BSSID", "ieee1905.r2_steering_request.target_bssid",
13876 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13877
13878 { &hf_ieee1905_r2_steering_target_op_class,
13879 { "Target Operating Class",
13880 "ieee1905.r2_steering_request.target_operating_class",
13881 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13882
13883 { &hf_ieee1905_r2_steering_target_channel,
13884 { "Target Channel",
13885 "ieee1905.r2_steering_request.target_channel",
13886 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13887
13888 { &hf_ieee1905_r2_steering_reason,
13889 { "Reason code", "ieee1905.r2_steering_request.reason_code",
13890 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13891
13892 { &hf_ieee1905_metric_collection_interval,
13893 { "Collection Interval", "ieee1905.metric_collection_interval.interval",
13894 FT_UINT32, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13895
13896 { &hf_ieee1905_max_reporting_rate,
13897 { "Maximum Reporting Rate", "ieee1905.unsuccessful_assoc.max_report_rate",
13898 FT_UINT32, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13899
13900 { &hf_ieee1905_bss_configuration_request,
13901 { "Configuration Request Object",
13902 "ieee1905.bss_configuration_request.configuration_request_object",
13903 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13904
13905 { &hf_ieee1905_bss_configuration_response,
13906 { "Configuration Response Object",
13907 "ieee1905.bss_configuration_response.configuration_response_object",
13908 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13909
13910 { &hf_ieee1905_dpp_message_public_action,
13911 { "Public Action", "ieee1905.dpp_message.public_action",
13912 FT_UINT8, BASE_HEX|BASE_EXT_STRING0x00000200, &ff_pa_action_codes_ext, 0,
13913 NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13914
13915 { &hf_ieee1905_spatial_reuse_req_radio_id,
13916 { "RUID", "ieee1905.spatial_reuse_req.ruid",
13917 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13918
13919 { &hf_ieee1905_spatial_reuse_color_flags,
13920 { "Spatial Reuse Color Flags",
13921 "ieee1905.spatial_reuse_req.color_flags",
13922 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13923
13924 { &hf_ieee1905_spatial_reuse_reserved,
13925 { "Reserved", "ieee1905.spatial_reuse_req.reserved1",
13926 FT_UINT8, BASE_HEX, NULL((void*)0), 0xC0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13927
13928 { &hf_ieee1905_spatial_reuse_bss_color,
13929 { "BSS Color", "ieee1905.spatial_reuse_req.bss_color",
13930 FT_UINT8, BASE_HEX, NULL((void*)0), 0x3F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13931
13932 { &hf_ieee1905_spatial_reuse_hesiga_flags,
13933 { "Spatial Reuse Misc Flags", "ieee1905.spatial_reuse_req.misc_flags",
13934 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13935
13936 { &hf_ieee1905_spatial_reuse_reserved2,
13937 { "Reserved", "ieee1905.spatial_reuse_req.reserved2",
13938 FT_UINT8, BASE_HEX, NULL((void*)0), 0xE0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13939
13940 { &hf_ieee1905_spatial_reuse_hesiga_value15_allowed,
13941 { "HESIGA Spatial reuse value15 allowed",
13942 "ieee1905.spatial_reuse_req.hesiga_spatial_reuse_value15_allowed",
13943 FT_BOOLEAN, 8, NULL((void*)0), 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13944
13945 { &hf_ieee1905_spatial_reuse_srg_info_valid,
13946 { "SRG Information Valid",
13947 "ieee1905.spatial_reuse_req.srg_information_valid",
13948 FT_BOOLEAN, 8, NULL((void*)0), 0x08, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13949
13950 { &hf_ieee1905_spatial_reuse_non_srg_offset_valid,
13951 { "Non-SRG Offset Valid",
13952 "ieee1905.spatial_reuse_req.non_srg_offset_valid",
13953 FT_BOOLEAN, 8, NULL((void*)0), 0x04, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13954
13955 { &hf_ieee1905_spatial_reuse_reserved3,
13956 { "Reserved", "ieee1905.spatial_reuse_req.reserved3",
13957 FT_UINT8, BASE_HEX, NULL((void*)0), 0x02, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13958
13959 { &hf_ieee1905_spatial_reuse_psr_disallowed,
13960 { "PSR Disallowed", "ieee1905.spatial_reuse_req.psr_disallowed",
13961 FT_BOOLEAN, 8, NULL((void*)0), 0x01, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13962
13963 { &hf_ieee1905_spatial_reuse_non_srg_obsspd_max_offset,
13964 { "Non-SRG OBSSPD Max Offset",
13965 "ieee1905.spatial_reuse_req.non_srg_obsspd_max_offset",
13966 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13967
13968 { &hf_ieee1905_spatial_reuse_not_valid1,
13969 { "Not Valid",
13970 "ieee1905.spatial_reuse_req.not_valid_1",
13971 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13972
13973 { &hf_ieee1905_spatial_reuse_srg_obsspd_min_offset,
13974 { "SRG OBSSPD Min Offset",
13975 "ieee1905.spatial_reuse_req.srg_obsspd_min_offset",
13976 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13977
13978 { &hf_ieee1905_spatial_reuse_srg_obsspd_max_offset,
13979 { "SRG OBSSPD Max Offset",
13980 "ieee1905.spatial_reuse_req.srg_obsspd_max_offset",
13981 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13982
13983 { &hf_ieee1905_spatial_reuse_srg_bss_color_bitmap,
13984 { "SRG BSS Color Bitmap",
13985 "ieee1905.spatial_reuse_req.srg_bss_color_bitmap",
13986 FT_UINT64, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13987
13988 { &hf_ieee1905_spatial_reuse_srg_partial_bssid_bitmap,
13989 { "SRG Partial BSSID Bitmap",
13990 "ieee1905.spatial_reuse_req.srg_partial_bssid_bitmap",
13991 FT_UINT64, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13992
13993 { &hf_ieee1905_spatial_reuse_not_valid2,
13994 { "Not Valid",
13995 "ieee1905.spatial_reuse_req.not_valid_2",
13996 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
13997
13998 { &hf_ieee1905_spatial_reuse_not_valid3,
13999 { "Not Valid",
14000 "ieee1905.spatial_reuse_req.not_valid_3",
14001 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14002
14003 { &hf_ieee1905_spatial_reuse_not_valid4,
14004 { "Not Valid",
14005 "ieee1905.spatial_reuse_req.not_valid_4",
14006 FT_UINT64, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14007
14008 { &hf_ieee1905_spatial_reuse_not_valid5,
14009 { "Not Valid",
14010 "ieee1905.spatial_reuse_req.not_valid_5",
14011 FT_UINT64, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14012
14013 { &hf_ieee1905_spatial_reuse_reserved4,
14014 { "Reserved",
14015 "ieee1905.spatial_reuse_req.reserved4",
14016 FT_UINT16, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14017
14018 { &hf_ieee1905_spatial_reuse_rep_radio_id,
14019 { "RUID", "ieee1905.spatial_reuse_rep.ruid",
14020 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14021
14022 { &hf_ieee1905_spatial_reuse_rep_color_flags,
14023 { "Spatial Reuse Color Flags",
14024 "ieee1905.spatial_reuse_rep.color_flags",
14025 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14026
14027 { &hf_ieee1905_spatial_reuse_rep_reserved,
14028 { "Reserved", "ieee1905.spatial_reuse_rep.reserved1",
14029 FT_UINT8, BASE_HEX, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14030
14031 { &hf_ieee1905_spatial_reuse_rep_partial_bss_color,
14032 { "Partial BSS Color", "ieee1905.spatial_reuse_rep.partial_bss_color",
14033 FT_UINT8, BASE_HEX, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14034
14035 { &hf_ieee1905_spatial_reuse_rep_bss_color,
14036 { "BSS Color", "ieee1905.spatial_reuse_rep.bss_color",
14037 FT_UINT8, BASE_HEX, NULL((void*)0), 0x3F, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14038
14039 { &hf_ieee1905_spatial_reuse_rep_hesiga_flags,
14040 { "Spatial Reuse Misc Flags", "ieee1905.spatial_reuse_rep.misc_flags",
14041 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14042
14043 { &hf_ieee1905_spatial_reuse_rep_reserved2,
14044 { "Reserved", "ieee1905.spatial_reuse_rep.reserved2",
14045 FT_UINT8, BASE_HEX, NULL((void*)0), 0xE0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14046
14047 { &hf_ieee1905_spatial_reuse_rep_hesiga_value15_allowed,
14048 { "HESIGA Spatial reuse value15 allowed",
14049 "ieee1905.spatial_reuse_rep.hesiga_spatial_reuse_value15_allowed",
14050 FT_BOOLEAN, 8, NULL((void*)0), 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14051
14052 { &hf_ieee1905_spatial_reuse_rep_srg_info_valid,
14053 { "SRG Information Valid",
14054 "ieee1905.spatial_reuse_rep.srg_information_valid",
14055 FT_BOOLEAN, 8, NULL((void*)0), 0x08, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14056
14057 { &hf_ieee1905_spatial_reuse_rep_non_srg_offset_valid,
14058 { "Non-SRG Offset Valid",
14059 "ieee1905.spatial_reuse_rep.non_srg_offset_valid",
14060 FT_BOOLEAN, 8, NULL((void*)0), 0x04, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14061
14062 { &hf_ieee1905_spatial_reuse_rep_reserved3,
14063 { "Reserved", "ieee1905.spatial_reuse_rep.reserved3",
14064 FT_UINT8, BASE_HEX, NULL((void*)0), 0x02, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14065
14066 { &hf_ieee1905_spatial_reuse_rep_psr_disallowed,
14067 { "PSR Disallowed", "ieee1905.spatial_reuse_rep.psr_disallowed",
14068 FT_BOOLEAN, 8, NULL((void*)0), 0x01, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14069
14070 { &hf_ieee1905_spatial_reuse_rep_non_srg_obsspd_max_offset,
14071 { "Non-SRG OBSSPD Max Offset",
14072 "ieee1905.spatial_reuse_rep.non_srg_obsspd_max_offset",
14073 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14074
14075 { &hf_ieee1905_spatial_reuse_rep_not_valid1,
14076 { "Not Valid",
14077 "ieee1905.spatial_reuse_rep.not_valid_1",
14078 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14079
14080 { &hf_ieee1905_spatial_reuse_rep_srg_obsspd_min_offset,
14081 { "SRG OBSSPD Min Offset",
14082 "ieee1905.spatial_reuse_rep.srg_obsspd_min_offset",
14083 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14084
14085 { &hf_ieee1905_spatial_reuse_rep_srg_obsspd_max_offset,
14086 { "SRG OBSSPD Max Offset",
14087 "ieee1905.spatial_reuse_rep.srg_obsspd_max_offset",
14088 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14089
14090 { &hf_ieee1905_spatial_reuse_rep_srg_bss_color_bitmap,
14091 { "SRG BSS Color Bitmap",
14092 "ieee1905.spatial_reuse_rep.srg_bss_color_bitmap",
14093 FT_UINT64, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14094
14095 { &hf_ieee1905_spatial_reuse_rep_srg_partial_bssid_bitmap,
14096 { "SRG Partial BSSID Bitmap",
14097 "ieee1905.spatial_reuse_rep.srg_partial_bssid_bitmap",
14098 FT_UINT64, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14099
14100 { &hf_ieee1905_spatial_reuse_rep_not_valid2,
14101 { "Not Valid",
14102 "ieee1905.spatial_reuse_rep.not_valid_2",
14103 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14104
14105 { &hf_ieee1905_spatial_reuse_rep_not_valid3,
14106 { "Not Valid",
14107 "ieee1905.spatial_reuse_rep.not_valid_3",
14108 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14109
14110 { &hf_ieee1905_spatial_reuse_rep_not_valid4,
14111 { "Not Valid",
14112 "ieee1905.spatial_reuse_rep.not_valid_4",
14113 FT_UINT64, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14114
14115 { &hf_ieee1905_spatial_reuse_rep_not_valid5,
14116 { "Not Valid",
14117 "ieee1905.spatial_reuse_rep.not_valid_5",
14118 FT_UINT64, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14119
14120 { &hf_ieee1905_spatial_reuse_rep_nbor_bss_color_bitmap,
14121 { "Neighbor BSS Color In Use Bitmap",
14122 "ieee1905.spatial_reuse_rep.neighbor_bss_color_in_use_bitmap",
14123 FT_UINT64, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14124
14125 { &hf_ieee1905_spatial_reuse_rep_reserved4,
14126 { "Reserved", "ieee1905.spatial_reuse_rep.reserved4",
14127 FT_UINT16, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14128
14129 { &hf_ieee1905_spatial_reuse_config_radio_id,
14130 { "RUID", "ieee1905.spatial_reuse_config_response.ruid",
14131 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14132
14133 { &hf_ieee1905_spatial_reuse_config_response,
14134 { "Response Code",
14135 "ieee1905.spatial_reuse_config_response.response_code",
14136 FT_UINT8, BASE_DEC|BASE_RANGE_STRING0x00000100,
14137 RVALS(spatial_reuse_response_rvals)((0 ? (const struct _range_string*)0 : ((spatial_reuse_response_rvals
))))
, 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14138
14139 { &hf_ieee1905_qos_mgmt_policy_mscs_disallowed,
14140 { "Num STAs MSCS disallowed",
14141 "ieee1905.qos_mgmt_policy.num_stas_mscs_disallowed",
14142 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14143
14144 { &hf_ieee1905_qos_mgmt_mscs_disallow_sta,
14145 { "MAC Addr of MSCS Disallowed STA",
14146 "ieee1905.qos_mgmt_policy.mac_addr_mscs_disallowed_sta",
14147 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14148
14149 { &hf_ieee1905_qos_mgmt_policy_scs_disallowed,
14150 { "Num STAs SCS disallowed",
14151 "ieee1905.qos_mgmt_policy.num_stas_scs_disallowed",
14152 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14153
14154 { &hf_ieee1905_qos_mgmt_scs_disallow_sta,
14155 { "MAC Addr of SCS Disallowed STA",
14156 "ieee1905.qos_mgmt_policy.mac_addr_scs_disallowed_sta",
14157 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14158
14159 { &hf_ieee1905_qos_mgmt_desc_qmid,
14160 { "QMID", "ieee1905.qos_mgmt_desc.qmid",
14161 FT_UINT16, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14162
14163 { &hf_ieee1905_qos_mgmt_desc_bssid,
14164 { "BSSID", "ieee1905.qos_mgmt_desc.bssid",
14165 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14166
14167 { &hf_ieee1905_qos_mgmt_desc_client_mac,
14168 { "Client MAC", "ieee1905.qos_mgmt_desc.client_mac",
14169 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14170
14171 { &hf_ieee1905_controller_capa_flags,
14172 { "Controller Capability Flags",
14173 "ieee1905.controller_capa.flags",
14174 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14175
14176 { &hf_ieee1905_controller_capa_reserved,
14177 { "Reserved",
14178 "ieee1905.controller_capa.reserved",
14179 FT_BOOLEAN, 8, NULL((void*)0), 0x3f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14180
14181 { &hf_ieee1905_controller_capa_early_ap_capa,
14182 { "Early AP Capability",
14183 "ieee1905.controller_capa.early_ap_capa",
14184 FT_BOOLEAN, 8, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14185
14186 { &hf_ieee1905_controller_capa_kbmb_counter,
14187 { "KiBMiB Counter",
14188 "ieee1905.controller_capa.kbmb_counter",
14189 FT_BOOLEAN, 8, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14190
14191 { &hf_ieee1905_wifi_7_agent_capabilities_max_num_mlds,
14192 { "Max number of MLDs", "ieee1905.wifi_7_agent_capabilities.max_num_mlds",
14193 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14194
14195 { &hf_ieee1905_wifi_7_agent_capabilities_flags,
14196 { "Flags", "ieee1905.wifi_7_agent_capabilities.flags",
14197 FT_UINT16, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14198
14199 { &hf_ieee1905_wifi_7_agent_capabilities_flags_ap_max_links,
14200 { "AP Maximum links", "ieee1905.wifi_7_agent_capabilities.flags.max_links_ap",
14201 FT_UINT16, BASE_HEX, NULL((void*)0), 0xf000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14202
14203 { &hf_ieee1905_wifi_7_agent_capabilities_flags_sta_max_links,
14204 { "STA Maximum links", "ieee1905.wifi_7_agent_capabilities.flags.max_links_sta",
14205 FT_UINT16, BASE_HEX, NULL((void*)0), 0x0f00, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14206
14207 { &hf_ieee1905_wifi_7_agent_capabilities_flags_ttl_mapping_cap,
14208 { "TID-to-Link mapping capability", "ieee1905.wifi_7_agent_capabilities.flags.tid_to_link_mapping_capability",
14209 FT_UINT16, BASE_HEX, VALS(tid_to_link_mapping_capability_vals)((0 ? (const struct _value_string*)0 : ((tid_to_link_mapping_capability_vals
))))
, 0x00c0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14210
14211 { &hf_ieee1905_wifi_7_agent_capabilities_flags_reserved,
14212 { "Reserved", "ieee1905.wifi_7_agent_capabilities.flags.reserved",
14213 FT_UINT16, BASE_HEX, NULL((void*)0), 0x003f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14214
14215 { &hf_ieee1905_wifi_7_agent_capabilities_reserved,
14216 { "Reserved", "ieee1905.wifi_7_agent_capabilities.reserved",
14217 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14218
14219 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num,
14220 { "Number of radios", "ieee1905.wifi_7_agent_capabilities.num_radios",
14221 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14222
14223 { &hf_ieee1905_wifi_7_agent_capabilities_radio_id,
14224 { "Radio Unique ID", "ieee1905.wifi_7_agent_capabilities.radio_id",
14225 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14226
14227 { &hf_ieee1905_wifi_7_agent_capabilities_radio_reserved,
14228 { "Reserved", "ieee1905.wifi_7_agent_capabilities.radio_reserved",
14229 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14230
14231 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags,
14232 { "Flags", "ieee1905.wifi_7_agent_capabilities.radio_flags",
14233 FT_UINT16, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14234
14235 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_str_support,
14236 { "AP STR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.ap_str_support",
14237 FT_UINT16, BASE_DEC, NULL((void*)0), 0x8000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14238
14239 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_nstr_support,
14240 { "AP NSTR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.ap_nstr_support",
14241 FT_UINT16, BASE_DEC, NULL((void*)0), 0x4000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14242
14243 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_emlsr_support,
14244 { "AP EMLSR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.ap_emlsr_support",
14245 FT_UINT16, BASE_DEC, NULL((void*)0), 0x2000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14246
14247 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_ap_emlmr_support,
14248 { "AP EMLMR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.ap_emlmr_support",
14249 FT_UINT16, BASE_DEC, NULL((void*)0), 0x1000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14250
14251 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_reserved1,
14252 { "Reserved", "ieee1905.wifi_7_agent_capabilities.radio_flags.reserved1",
14253 FT_UINT16, BASE_HEX, NULL((void*)0), 0x0f00, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14254
14255 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_str_support,
14256 { "bSTA STR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.bsta_str_support",
14257 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0080, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14258
14259 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_nstr_support,
14260 { "bSTA NSTR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.bsta_nstr_support",
14261 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0040, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14262
14263 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_emlsr_support,
14264 { "bSTA EMLSR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags_bsta_emlsr_support",
14265 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0020, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14266
14267 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_bsta_emlmr_support,
14268 { "bSTA EMLMR Support", "ieee1905.wifi_7_agent_capabilities.radio_flags.bsta_emlmr_support",
14269 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0010, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14270
14271 { &hf_ieee1905_wifi_7_agent_capabilities_radio_flags_reserved2,
14272 { "Reserved", "ieee1905.wifi_7_agent_capabilities.radio_flags.reserved2",
14273 FT_UINT16, BASE_HEX, NULL((void*)0), 0x000f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14274
14275 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_str_records,
14276 { "Number of AP STR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_ap_str_records",
14277 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14278
14279 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_nstr_records,
14280 { "Number of AP NSTR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_ap_nstr_records",
14281 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14282
14283 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_emlsr_records,
14284 { "Number of AP EMLSR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_ap_emlsr_records",
14285 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14286
14287 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_ap_emlmr_records,
14288 { "Number of AP EMLMR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_ap_emlmr_records",
14289 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14290
14291 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_str_records,
14292 { "Number of bSTA STR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_bsta_str_records",
14293 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14294
14295 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_nstr_records,
14296 { "Number of bSTA NSTR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_bsta_nstr_records",
14297 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14298
14299 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_emlsr_records,
14300 { "Number of bSTA EMLSR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_bsta_emlsr_records",
14301 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14302
14303 { &hf_ieee1905_wifi_7_agent_capabilities_radio_num_bsta_emlmr_records,
14304 { "Number of bSTA EMLMR Records", "ieee1905.wifi_7_agent_capabilities.radio_num_bsta_emlmr_records",
14305 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14306
14307 { &hf_ieee1905_wifi_7_agent_capabilities_radio_record_id,
14308 { "Radio Unique ID", "ieee1905.wifi_7_agent_capabilities.radio_record_id",
14309 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14310
14311 { &hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags,
14312 { "Flags", "ieee1905.wifi_7_agent_capabilities.radio_record_flags",
14313 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14314
14315 { &hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags_freq_separation,
14316 { "Freq separation", "ieee1905.wifi_7_agent_capabilities.radio_record_flags.freq_separation",
14317 FT_UINT8, BASE_DEC, NULL((void*)0), 0xf8, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14318
14319 { &hf_ieee1905_wifi_7_agent_capabilities_radio_record_flags_reserved,
14320 { "Reserved", "ieee1905.wifi_7_agent_capabilities.radio_record_flags.reserved",
14321 FT_UINT8, BASE_HEX, NULL((void*)0), 0x07, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14322
14323 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_num,
14324 { "Number of AP MLDs", "ieee1905.agent_ap_mld_configuration.ap_mld_num",
14325 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14326
14327 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags,
14328 { "Flags", "ieee1905.agent_ap_mld_configuration.flags",
14329 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14330
14331 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags_ap_mld_mac_addr_valid,
14332 { "AP MLD MAC Addr Valid", "ieee1905.agent_ap_mld_configuration.flags.ap_mld_mac_addr_valid",
14333 FT_UINT8, BASE_DEC, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14334
14335 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags_reserved,
14336 { "Reserved", "ieee1905.agent_ap_mld_configuration.flags.reserved",
14337 FT_UINT8, BASE_DEC, NULL((void*)0), 0x7f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14338
14339 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_ssid_len,
14340 { "SSID Length", "ieee1905.agent_ap_mld_configuration.ssid_length",
14341 FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14342
14343 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_ssid,
14344 { "SSID", "ieee1905.agent_ap_mld_configuration.ssid",
14345 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14346
14347 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_mac_addr,
14348 { "AP MLD MAC Addr", "ieee1905.agent_ap_mld_configuration.ap_mld_mac_addr",
14349 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14350
14351 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2,
14352 { "Flags2", "ieee1905.agent_ap_mld_configuration.flags2",
14353 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14354
14355 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_str,
14356 { "STR", "ieee1905.agent_ap_mld_configuration.flags2.str",
14357 FT_UINT8, BASE_DEC, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14358
14359 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_nstr,
14360 { "NSTR", "ieee1905.agent_ap_mld_configuration.flags2.nstr",
14361 FT_UINT8, BASE_DEC, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14362
14363 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_emlsr,
14364 { "EMLSR", "ieee1905.agent_ap_mld_configuration.flags2.emlsr",
14365 FT_UINT8, BASE_DEC, NULL((void*)0), 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14366
14367 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_emlmr,
14368 { "EMLMR", "ieee1905.agent_ap_mld_configuration.flags2.emlmr",
14369 FT_UINT8, BASE_DEC, NULL((void*)0), 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14370
14371 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_flags2_reserved,
14372 { "Reserved", "ieee1905.agent_ap_mld_configuration.flags2.reserved",
14373 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14374
14375 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_reserved,
14376 { "Reserved", "ieee1905.agent_ap_mld_configuration.reserved",
14377 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14378
14379 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_num,
14380 { "Number of Affiliated APs", "ieee1905.agent_ap_mld_configuration.ap_mld_affiliated_ap_num",
14381 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14382
14383 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags,
14384 { "Flags", "ieee1905.agent_ap_mld_configuration.affiliated_ap_flags",
14385 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14386
14387 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_affiliated_ap_mac_addr_valid,
14388 { "Affiliated AP MAC Addr Valid", "ieee1905.agent_ap_mld_configuration.affiliated_ap_flags.affiliated_ap_mac_addr_valid",
14389 FT_UINT8, BASE_DEC, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14390
14391 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_link_id_valid,
14392 { "Link ID Valid", "ieee1905.agent_ap_mld_configuration.affiliated_ap_flags.link_id_valid",
14393 FT_UINT8, BASE_DEC, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14394
14395 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags_reserved,
14396 { "Reserved", "ieee1905.agent_ap_mld_configuration.affiliated_ap_flags.reserved",
14397 FT_UINT8, BASE_HEX, NULL((void*)0), 0x3f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14398
14399 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_radio_id,
14400 { "Radio Unique ID", "ieee1905.agent_ap_mld_configuration.affiliated_ap_radio_id",
14401 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14402
14403 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_mac_addr,
14404 { "Affiliated AP MAC Addr", "ieee1905.agent_ap_mld_configuration.affiliated_ap_mac_addr",
14405 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14406
14407 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_link_id,
14408 { "Link ID", "ieee1905.agent_ap_mld_configuration.ap_mld_affiliated_ap_link_id",
14409 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14410
14411 { &hf_ieee1905_agent_ap_mld_configuration_ap_mld_affiliated_ap_reserved,
14412 { "Reserved", "ieee1905.agent_ap_mld_configuration.ap_mld_affiliated_ap_reserved",
14413 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14414
14415 { &hf_ieee1905_backhaul_sta_mld_configuration_flags,
14416 { "Flags", "ieee1905.backhaul_sta_mld_configuration.flags",
14417 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14418
14419 { &hf_ieee1905_backhaul_sta_mld_configuration_flags_bsta_mld_mac_addr_valid,
14420 { "bSTA MLD MAC Addr Valid", "ieee1905.backhaul_sta_mld_configuration.flags.bsta_mld_mac_addr_valid",
14421 FT_UINT8, BASE_DEC, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14422
14423 { &hf_ieee1905_backhaul_sta_mld_configuration_flags_ap_mld_mac_addr_valid,
14424 { "AP MLD MAC Addr Valid", "ieee1905.backhaul_sta_mld_configuration.flags.ap_mld_mac_addr_valid",
14425 FT_UINT8, BASE_DEC, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14426
14427 { &hf_ieee1905_backhaul_sta_mld_configuration_flags_reserved,
14428 { "Reserved", "ieee1905.backhaul_sta_mld_configuration.flags.reserved",
14429 FT_UINT8, BASE_HEX, NULL((void*)0), 0x3f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14430
14431 { &hf_ieee1905_backhaul_sta_mld_configuration_bsta_mld_mac_addr,
14432 { "bSTA MLD MAC Addr", "ieee1905.backhaul_sta_mld_configuration.bsta_mld_mac_addr",
14433 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14434
14435 { &hf_ieee1905_backhaul_sta_mld_configuration_ap_mld_mac_addr,
14436 { "AP MLD MAC Addr", "ieee1905.backhaul_sta_mld_configuration.ap_mld_mac_addr",
14437 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14438
14439 { &hf_ieee1905_backhaul_sta_mld_configuration_flags2,
14440 { "Flags2", "ieee1905.backhaul_sta_mld_configuration.flags2",
14441 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14442
14443 { &hf_ieee1905_backhaul_sta_mld_configuration_flags2_str,
14444 { "STR", "ieee1905.backhaul_sta_mld_configuration.flags2.str",
14445 FT_UINT8, BASE_DEC, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14446
14447 { &hf_ieee1905_backhaul_sta_mld_configuration_flags2_nstr,
14448 { "NSTR", "ieee1905.backhaul_sta_mld_configuration.flags2.nstr",
14449 FT_UINT8, BASE_DEC, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14450
14451 { &hf_ieee1905_backhaul_sta_mld_configuration_flags2_emlsr,
14452 { "EMLSR", "ieee1905.backhaul_sta_mld_configuration.flags2.emlsr",
14453 FT_UINT8, BASE_DEC, NULL((void*)0), 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14454
14455 { &hf_ieee1905_backhaul_sta_mld_configuration_flags2_emlmr,
14456 { "EMLMR", "ieee1905.backhaul_sta_mld_configuration.flags2.emlmr",
14457 FT_UINT8, BASE_DEC, NULL((void*)0), 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14458
14459 { &hf_ieee1905_backhaul_sta_mld_configuration_flags2_reserved,
14460 { "Reserved", "ieee1905.backhaul_sta_mld_configuration.flags2.reserved",
14461 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14462
14463 { &hf_ieee1905_backhaul_sta_mld_configuration_reserved,
14464 { "Reserved", "ieee1905.backhaul_sta_mld_configuration.reserved",
14465 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14466
14467 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_num,
14468 { "Number of Affiliated bSTAs", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_num",
14469 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14470
14471 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags,
14472 { "Flags", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_flags",
14473 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14474
14475 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags_affiliated_bsta_mac_addr_valid,
14476 { "AP MLD MAC Addr Valid", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_flags.bsta_mac_addr_valid",
14477 FT_UINT8, BASE_DEC, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14478
14479 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_flags_reserved,
14480 { "Reserved", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_flags.reserved",
14481 FT_UINT8, BASE_HEX, NULL((void*)0), 0x3f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14482
14483 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_radio_id,
14484 { "Radio Unique ID", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_radio_id",
14485 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14486
14487 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_mac_addr,
14488 { "Affiliated bSTA MAC Addr", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_mac_addr",
14489 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14490
14491 { &hf_ieee1905_backhaul_sta_mld_configuration_affiliated_bsta_reserved,
14492 { "Reserved", "ieee1905.backhaul_sta_mld_configuration.affiliated_bsta_reserved",
14493 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14494
14495 { &hf_ieee1905_associated_sta_mld_configuration_sta_mld_mac_addr,
14496 { "STA MLD MAC Addr", "ieee1905.associated_sta_mld_configuration.sta_mld_mac_addr",
14497 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14498
14499 { &hf_ieee1905_associated_sta_mld_configuration_ap_mld_mac_addr,
14500 { "AP MLD MAC Addr", "ieee1905.associated_sta_mld_configuration.ap_mld_mac_addr",
14501 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14502
14503 { &hf_ieee1905_associated_sta_mld_configuration_flags,
14504 { "Flags", "ieee1905.associated_sta_mld_configuration.flags",
14505 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14506
14507 { &hf_ieee1905_associated_sta_mld_configuration_flags_str,
14508 { "STR", "ieee1905.associated_sta_mld_configuration.flags.str",
14509 FT_UINT8, BASE_DEC, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14510
14511 { &hf_ieee1905_associated_sta_mld_configuration_flags_nstr,
14512 { "NSTR", "ieee1905.associated_sta_mld_configuration.flags.nstr",
14513 FT_UINT8, BASE_DEC, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14514
14515 { &hf_ieee1905_associated_sta_mld_configuration_flags_emlsr,
14516 { "EMLSR", "ieee1905.associated_sta_mld_configuration.flags.emlsr",
14517 FT_UINT8, BASE_DEC, NULL((void*)0), 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14518
14519 { &hf_ieee1905_associated_sta_mld_configuration_flags_emlmr,
14520 { "EMLMR", "ieee1905.associated_sta_mld_configuration.flags.emlmr",
14521 FT_UINT8, BASE_DEC, NULL((void*)0), 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14522
14523 { &hf_ieee1905_associated_sta_mld_configuration_flags_reserved,
14524 { "Reserved", "ieee1905.associated_sta_mld_configuration.flags.reserved",
14525 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14526
14527 { &hf_ieee1905_associated_sta_mld_configuration_reserved,
14528 { "Reserved", "ieee1905.associated_sta_mld_configuration.reserved",
14529 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14530
14531 { &hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_num,
14532 { "Number of Affiliated STAs", "ieee1905.associated_sta_mld_configuration.affiliated_sta_num",
14533 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14534
14535 { &hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_bssid,
14536 { "BSSID", "ieee1905.associated_sta_mld_configuration.affiliated_sta_bssid",
14537 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14538
14539 { &hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_mac_addr,
14540 { "Affiliated STA MAC Addr", "ieee1905.associated_sta_mld_configuration.affiliated_sta_mac_addr",
14541 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14542
14543 { &hf_ieee1905_associated_sta_mld_configuration_affiliated_sta_reserved,
14544 { "Reserved", "ieee1905.associated_sta_mld_configuration.affiliated_sta_reserved",
14545 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14546
14547 { &hf_ieee1905_mld_structure_mld_mac_addr,
14548 { "MLD MAC Addr", "ieee1905.mld_structure.mld_mac_addr",
14549 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14550
14551 { &hf_ieee1905_mld_structure_reserved,
14552 { "Reserved", "ieee1905.mld_structure.reserved",
14553 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14554
14555 { &hf_ieee1905_mld_structure_affiliated_num,
14556 { "Number of Affiliated", "ieee1905.mld_structure.affiliated_num",
14557 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14558
14559 { &hf_ieee1905_mld_structure_affiliated_mac_addr,
14560 { "Affiliated MAC Addr", "ieee1905.mld_structure.affiliated.mac_addr",
14561 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14562
14563 { &hf_ieee1905_mld_structure_affiliated_reserved,
14564 { "Reserved", "ieee1905.mld_structure.affiliated.reserved",
14565 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14566
14567 { &hf_ieee1905_affiliated_sta_metrics_sta_mac_addr,
14568 { "STA MAC Address", "ieee1905.affiliated_sta_metrics.sta_mac_addr",
14569 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14570
14571 { &hf_ieee1905_affiliated_sta_metrics_bytes_sent,
14572 { "Bytes Sent", "ieee1905.affiliated_sta_metrics.bytes_sent",
14573 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14574
14575 { &hf_ieee1905_affiliated_sta_metrics_bytes_rcvd,
14576 { "Bytes Received", "ieee1905.affiliated_sta_metrics.bytes_rcvd",
14577 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14578
14579 { &hf_ieee1905_affiliated_sta_metrics_packets_sent,
14580 { "Packets Sent", "ieee1905.affiliated_sta_metrics.packets_sent",
14581 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14582
14583 { &hf_ieee1905_affiliated_sta_metrics_packets_rcvd,
14584 { "Packets Received", "ieee1905.affiliated_sta_metrics.packets_rcvd",
14585 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14586
14587 { &hf_ieee1905_affiliated_sta_metrics_packets_sent_errors,
14588 { "Packets Sent Errors", "ieee1905.affiliated_sta_metrics.packets_sent_errors",
14589 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14590
14591 { &hf_ieee1905_affiliated_sta_metrics_reserved,
14592 { "Reserved", "ieee1905.affiliated_sta_metrics.reserved",
14593 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14594
14595 { &hf_ieee1905_affiliated_ap_metrics_bssid,
14596 { "BSSID", "ieee1905.affiliated_ap_metrics.bssid",
14597 FT_ETHER, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14598
14599 { &hf_ieee1905_affiliated_ap_metrics_packets_sent,
14600 { "Packets Sent", "ieee1905.affiliated_ap_metrics.packets_sent",
14601 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14602
14603 { &hf_ieee1905_affiliated_ap_metrics_packets_rcvd,
14604 { "Packets Received", "ieee1905.affiliated_ap_metrics.packets_rcvd",
14605 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14606
14607 { &hf_ieee1905_affiliated_ap_metrics_packets_sent_errors,
14608 { "Packets Sent Errors", "ieee1905.affiliated_ap_metrics.packets_sent_errors",
14609 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14610
14611 { &hf_ieee1905_affiliated_ap_metrics_ucast_bytes_sent,
14612 { "Unicast Bytes Sent", "ieee1905.affiliated_ap_metrics.ucast_bytes_sent",
14613 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14614
14615 { &hf_ieee1905_affiliated_ap_metrics_ucast_bytes_rcvd,
14616 { "Unicast Bytes Received", "ieee1905.affiliated_ap_metrics.ucast_bytes_rcvd",
14617 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14618
14619 { &hf_ieee1905_affiliated_ap_metrics_mcast_bytes_sent,
14620 { "Multicast Bytes Sent", "ieee1905.affiliated_ap_metrics.mcast_bytes_sent",
14621 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14622
14623 { &hf_ieee1905_affiliated_ap_metrics_mcast_bytes_rcvd,
14624 { "Multicast Bytes Received", "ieee1905.affiliated_ap_metrics.mcast_bytes_rcvd",
14625 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14626
14627 { &hf_ieee1905_affiliated_ap_metrics_bcast_bytes_sent,
14628 { "Broadcast Bytes Sent", "ieee1905.affiliated_ap_metrics.bcast_bytes_sent",
14629 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14630
14631 { &hf_ieee1905_affiliated_ap_metrics_bcast_bytes_rcvd,
14632 { "Broadcast Bytes Received", "ieee1905.affiliated_ap_metrics.bcast_bytes_rcvd",
14633 FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14634
14635 { &hf_ieee1905_affiliated_ap_metrics_reserved,
14636 { "Reserved", "ieee1905.affiliated_ap_metrics.reserved",
14637 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14638
14639 { &hf_ieee1905_tid_to_link_mapping_policy_mld_mac_addr,
14640 { "MLD MAC Address", "ieee1905.tid_to_link_mapping_policy.mld_mac_addr",
14641 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14642
14643 { &hf_ieee1905_tid_to_link_mapping_policy_flags,
14644 { "Flags", "ieee1905.tid_to_link_mapping_policy.flags",
14645 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14646
14647 { &hf_ieee1905_tid_to_link_mapping_policy_flags_bsta_config,
14648 { "bSTA Config", "ieee1905.tid_to_link_mapping_policy.flags.bsta_config",
14649 FT_BOOLEAN, 8, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14650
14651 { &hf_ieee1905_tid_to_link_mapping_policy_flags_reserved,
14652 { "Reserved", "ieee1905.tid_to_link_mapping_policy.flags.reserved",
14653 FT_UINT8, BASE_HEX, NULL((void*)0), 0x7f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14654
14655 { &hf_ieee1905_tid_to_link_mapping_policy_flags2,
14656 { "Flags2", "ieee1905.tid_to_link_mapping_policy.flags2",
14657 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14658
14659 { &hf_ieee1905_tid_to_link_mapping_policy_flags2_ttlm_negotiation,
14660 { "TTLM Negotiation", "ieee1905.tid_to_link_mapping_policy.flags2.ttlm_negotiation",
14661 FT_BOOLEAN, 8, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14662
14663 { &hf_ieee1905_tid_to_link_mapping_policy_flags2_reserved,
14664 { "Reserved", "ieee1905.tid_to_link_mapping_policy.flags2.reserved",
14665 FT_UINT8, BASE_HEX, NULL((void*)0), 0x7f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14666
14667 { &hf_ieee1905_tid_to_link_mapping_policy_reserved,
14668 { "Reserved", "ieee1905.tid_to_link_mapping_policy.reserved",
14669 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14670
14671 { &hf_ieee1905_tid_to_link_mapping_policy_mapping_num,
14672 { "Number of Mappings", "ieee1905.tid_to_link_mapping_polic.num_mappings",
14673 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14674
14675 { &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags,
14676 { "Flags", "ieee1905.tid_to_link_mapping_policy.mapping.flags",
14677 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14678
14679 { &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags_add,
14680 { "Add", "ieee1905.tid_to_link_mapping_policy.mapping.flags.add",
14681 FT_BOOLEAN, 8, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14682
14683 { &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags_reserved,
14684 { "Reserved", "ieee1905.tid_to_link_mapping_policy.mapping.flags.reserved",
14685 FT_UINT8, BASE_HEX, NULL((void*)0), 0x7f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14686
14687 { &hf_ieee1905_tid_to_link_mapping_policy_sta_mld_mac_addr,
14688 { "STA MLD MAC Address", "ieee1905.tid_to_link_mapping_policy.sta_mld_mac_addr",
14689 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14690
14691 { &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2,
14692 { "Flags2", "ieee1905.tid_to_link_mapping_policy.mapping.flags2",
14693 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14694
14695 { &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_direction,
14696 { "Direction", "ieee1905.tid_to_link_mapping_policy.mapping.flags2.direction",
14697 FT_UINT8, BASE_DEC, VALS(tid_to_link_mapping_policy_mapping_flags2_direction_vals)((0 ? (const struct _value_string*)0 : ((tid_to_link_mapping_policy_mapping_flags2_direction_vals
))))
, 0xc0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14698
14699 { &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_default_link_mapping,
14700 { "Default Link Mapping", "ieee1905.tid_to_link_mapping_policy.mapping.flags2.default_link_mapping",
14701 FT_BOOLEAN, 8, NULL((void*)0), 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14702
14703 { &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_mapping_switch_time_present,
14704 { "Mapping Switch Time Present", "ieee1905.tid_to_link_mapping_policy.mapping.flags2.mapping_switch_time_present",
14705 FT_BOOLEAN, 8, NULL((void*)0), 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14706
14707 { &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_expected_duration_present,
14708 { "Expected Duration Present", "ieee1905.tid_to_link_mapping_policy.mapping.flags2.expected_duration_present",
14709 FT_BOOLEAN, 8, NULL((void*)0), 0x08, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14710
14711 { &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_link_mapping_size,
14712 { "Link Mapping Size", "ieee1905.tid_to_link_mapping_policy.mapping.flags2.link_mapping_size",
14713 FT_UINT8, BASE_DEC, VALS(tid_to_link_mapping_policy_mapping_flags2_link_mapping_size_vals)((0 ? (const struct _value_string*)0 : ((tid_to_link_mapping_policy_mapping_flags2_link_mapping_size_vals
))))
, 0x04, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14714
14715 { &hf_ieee1905_tid_to_link_mapping_policy_mapping_flags2_reserved,
14716 { "Reserved", "ieee1905.tid_to_link_mapping_policy.mapping.flags2.reserved",
14717 FT_UINT8, BASE_HEX, NULL((void*)0), 0x03, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14718
14719 { &hf_ieee1905_tid_to_link_mapping_policy_link_mapping_presence_indicator,
14720 { "Link Mapping Presence Indicator", "ieee1905.tid_to_link_mapping_policy.link_mapping_presence_indicator",
14721 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14722
14723 { &hf_ieee1905_tid_to_link_mapping_policy_expected_duration,
14724 { "Expected Duration (TU)", "ieee1905.tid_to_link_mapping_policy.expected_duration",
14725 FT_UINT24, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14726
14727 { &hf_ieee190t_tid_to_link_mapping_policy_tid_n_link_mapping[0],
14728 {"Link Mapping Of TID 0", "ieee1905.eht.tid_to_link_mapping_policy.tid_0.link_mapping",
14729 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14730
14731 { &hf_ieee190t_tid_to_link_mapping_policy_tid_n_link_mapping[1],
14732 {"Link Mapping Of TID 1", "ieee1905.eht.tid_to_link_mapping_policy.tid_1.link_mapping",
14733 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14734
14735 { &hf_ieee190t_tid_to_link_mapping_policy_tid_n_link_mapping[2],
14736 {"Link Mapping Of TID 2", "ieee1905.eht.tid_to_link_mapping_policy.tid_2.link_mapping",
14737 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14738
14739 { &hf_ieee190t_tid_to_link_mapping_policy_tid_n_link_mapping[3],
14740 {"Link Mapping Of TID 3", "ieee1905.eht.tid_to_link_mapping_policy.tid_3.link_mapping",
14741 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14742
14743 { &hf_ieee190t_tid_to_link_mapping_policy_tid_n_link_mapping[4],
14744 {"Link Mapping Of TID 4", "ieee1905.eht.tid_to_link_mapping_policy.tid_4.link_mapping",
14745 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14746
14747 { &hf_ieee190t_tid_to_link_mapping_policy_tid_n_link_mapping[5],
14748 {"Link Mapping Of TID 5", "ieee1905.eht.tid_to_link_mapping_policy.tid_5.link_mapping",
14749 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14750
14751 { &hf_ieee190t_tid_to_link_mapping_policy_tid_n_link_mapping[6],
14752 {"Link Mapping Of TID 6", "ieee1905.eht.tid_to_link_mapping_policy.tid_6.link_mapping",
14753 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14754
14755 { &hf_ieee190t_tid_to_link_mapping_policy_tid_n_link_mapping[7],
14756 {"Link Mapping Of TID 7", "ieee1905.eht.tid_to_link_mapping_policy.tid_7.link_mapping",
14757 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14758
14759 { &hf_ieee1905_tid_to_link_mapping_policy_mapping_reserved,
14760 { "Reserved", "ieee1905.tid_to_link_mapping_policy.mapping.reserved",
14761 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14762
14763 { &hf_ieee1905_eht_operations_reserved,
14764 { "Reserved", "ieee1905.eht_operations.reserved",
14765 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14766
14767 { &hf_ieee1905_eht_operations_radio_num,
14768 { "Number of Radios", "ieee1905.eht_operations.num_radios",
14769 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14770
14771 { &hf_ieee1905_eht_operations_radio_id,
14772 { "Radio Unique ID", "ieee1905.eht_operations.radio_id",
14773 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14774
14775 { &hf_ieee1905_eht_operations_radio_bss_num,
14776 { "Number of BSS", "ieee1905.eht_operations.radio.num_bss",
14777 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14778
14779 { &hf_ieee1905_eht_operations_radio_reserved,
14780 { "Reserved", "ieee1905.eht_operations.radio.reserved",
14781 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14782
14783 { &hf_ieee1905_eht_operations_radio_bss_bssid,
14784 { "BSSID", "ieee1905.eht_operations.radio.bss.bssid",
14785 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14786
14787 { &hf_ieee1905_eht_operations_radio_bss_flags,
14788 { "Flags", "ieee1905.eht_operations.radio.bss.flags",
14789 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14790
14791 { &hf_ieee1905_eht_operations_radio_bss_flags_eht_operation_information_valid,
14792 { "EHT Operation Information Valid", "ieee1905.eht_operations.radio.bss.flags.eht_operation_information_valid",
14793 FT_UINT8, BASE_DEC, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14794
14795 { &hf_ieee1905_eht_operations_radio_bss_flags_disabled_subchannel_valid,
14796 { "Disabled Subchannel Valid", "ieee1905.eht_operations.radio.bss.flags.disabled_subchannel_valid",
14797 FT_UINT8, BASE_DEC, NULL((void*)0), 0x40, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14798
14799 { &hf_ieee1905_eht_operations_radio_bss_flags_eht_default_pe_duration,
14800 { "EHT Default PE Duration", "ieee1905.eht_operations.radio.bss.flags.eht_default_pe_duration",
14801 FT_UINT8, BASE_DEC, NULL((void*)0), 0x20, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14802
14803 { &hf_ieee1905_eht_operations_radio_bss_flags_group_addr_bu_indication_limit,
14804 { "Group Addr BU Indication Limit", "ieee1905.eht_operations.radio.bss.flags.group_addr_bu_indication_limit",
14805 FT_UINT8, BASE_DEC, NULL((void*)0), 0x10, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14806
14807 { &hf_ieee1905_eht_operations_radio_bss_flags_group_addr_bu_indication_exponent,
14808 { "Group Addr BU Indication Exponent", "ieee1905.eht_operations.radio.bss.flags.group_addr_bu_indication_exponent",
14809 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0C, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14810
14811 { &hf_ieee1905_eht_operations_radio_bss_flags_reserved,
14812 { "Reserved", "ieee1905.eht_operations.radio.bss.flags.reserved",
14813 FT_UINT8, BASE_HEX, NULL((void*)0), 0x03, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14814
14815 { &hf_ieee1905_eht_operations_radio_bss_basic_eht_nss_mcs_set,
14816 { "Basic EHT NSS MCS Set", "ieee1905.eht_operations.radio.bss.basic_eht_nss_mcs_set",
14817 FT_UINT32, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14818
14819 { &hf_ieee1905_eht_operations_radio_bss_control,
14820 { "Control", "ieee1905.eht_operations.radio.bss.control",
14821 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14822
14823 { &hf_ieee1905_eht_operations_radio_bss_ccfs0,
14824 { "CCFS0", "ieee1905.eht_operations.radio.bss.ccfs0",
14825 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14826
14827 { &hf_ieee1905_eht_operations_radio_bss_ccfs1,
14828 { "CCFS1", "ieee1905.eht_operations.radio.bss.ccfs1",
14829 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14830
14831 { &hf_ieee1905_eht_operations_radio_bss_disabled_subchannel_bitmap,
14832 { "Disabled Subchannel Bitmap", "ieee1905.eht_operations.radio.bss.disabled_subchannel_bitmap",
14833 FT_UINT16, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14834
14835 { &hf_ieee1905_eht_operations_radio_bss_reserved,
14836 { "Reserved", "ieee1905.eht_operations.radio.bss.reserved",
14837 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14838
14839 { &hf_ieee1905_available_spectrum_inquiry_request_object,
14840 { "Object", "ieee1905.available_spectrum_inquiry_request.object",
14841 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14842
14843 { &hf_ieee1905_available_spectrum_inquiry_response_object,
14844 { "Object", "ieee1905.available_spectrum_inquiry_response.object",
14845 FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14846
14847 { &hf_ieee1905_rsn_diagnostic_report_rsn_error,
14848 { "RSN Error Frame", "ieee1905.rsn_diagnostic_report.rsn_error",
14849 FT_UINT8, BASE_DEC | BASE_RANGE_STRING0x00000100,
14850 RVALS(rsn_diagnostic_report_rsn_error_rvals)((0 ? (const struct _range_string*)0 : ((rsn_diagnostic_report_rsn_error_rvals
))))
, 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14851
14852 { &hf_ieee1905_rsn_diagnostic_report_reserved,
14853 { "Reserved", "ieee1905.rsn_diagnostic_report.reserved",
14854 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14855
14856 { &hf_ieee1905_rsn_diagnostic_report_frame_body_len,
14857 { "Frame Body Length", "ieee1905.rsn_diagnostic_report.frame_body_length",
14858 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14859
14860 { &hf_ieee1905_rsn_diagnostic_report_frame_body,
14861 { "Frame Body", "ieee1905.rsn_diagnostic_report.frame_body",
14862 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14863
14864 { &hf_ieee1905_rsn_parameter_configuration_radio_num,
14865 { "Number of radios", "ieee1905.rsn_parameter_configuration.num_radio",
14866 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14867
14868 { &hf_ieee1905_rsn_parameter_configuration_radio_id,
14869 { "Radio Unique ID", "ieee1905.rsn_parameter_configuration.radio.ruid",
14870 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14871
14872 { &hf_ieee1905_rsn_parameter_configuration_radio_reserved,
14873 { "Reserved", "ieee1905.rsn_parameter_configuration.radio.reserved",
14874 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14875
14876 { &hf_ieee1905_rsn_parameter_configuration_radio_bss_num,
14877 { "Number of BSS", "ieee1905.rsn_parameter_configuration.radio.num_bss",
14878 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14879
14880 { &hf_ieee1905_rsn_parameter_configuration_radio_bss_bssid,
14881 { "BSSID", "ieee1905.rsn_parameter_configuration.radio.bss.bssid",
14882 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14883
14884 { &hf_ieee1905_rsn_parameter_configuration_radio_bss_index,
14885 { "BSS Index", "ieee1905.rsn_parameter_configuration.radio.bss.index",
14886 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14887
14888 { &hf_ieee1905_rsn_parameter_configuration_radio_bss_security_ies_len,
14889 { "Security IEs Length", "ieee1905.rsn_parameter_configuration.radio.bss.security_ies_length",
14890 FT_UINT16, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14891
14892 { &hf_ieee1905_rsn_parameter_configuration_radio_bss_security_ies,
14893 { "Security IEs", "ieee1905.rsn_parameter_configuration.radio.bss.security_ie",
14894 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14895
14896 { &hf_ieee1905_rsn_parameter_configuration_radio_bss_reserved,
14897 { "Reserved", "ieee1905.rsn_parameter_configuration.radio.bss.reserved",
14898 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14899
14900 { &hf_ieee1905_bss_advanced_configuration_radio_num,
14901 { "Number of radios", "ieee1905.bss_advanced_configuration.num_radio",
14902 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14903
14904 { &hf_ieee1905_bss_advanced_configuration_radio_id,
14905 { "Radio Unique ID", "ieee1905.bss_advanced_configuration.radio.ruid",
14906 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14907
14908 { &hf_ieee1905_bss_advanced_configuration_radio_bss_num,
14909 { "Number of BSS", "ieee1905.bss_advanced_configuration.radio.num_bss",
14910 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14911
14912 { &hf_ieee1905_bss_advanced_configuration_radio_bss_bssid,
14913 { "BSSID", "ieee1905.bss_advanced_configuration.radio.bss.bssid",
14914 FT_ETHER, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14915
14916 { &hf_ieee1905_bss_advanced_configuration_radio_bss_index,
14917 { "BSS Index", "ieee1905.bss_advanced_configuration.radio.bss.index",
14918 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14919
14920 { &hf_ieee1905_bss_advanced_configuration_radio_bss_flags,
14921 { "Flags", "ieee1905.bss_advanced_configuration.radio.bss.flags",
14922 FT_UINT8, BASE_HEX, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14923
14924 { &hf_ieee1905_bss_advanced_configuration_radio_bss_flags_ssid_advertisement,
14925 { "SSID Advertisement", "ieee1905.bss_advanced_configuration.radio.bss.flags.ssid_advertisement",
14926 FT_BOOLEAN, 8, NULL((void*)0), 0x80, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14927
14928 { &hf_ieee1905_bss_advanced_configuration_radio_bss_flags_reserved,
14929 { "Reserved", "ieee1905.bss_advanced_configuration.radio.bss.flags.reserved",
14930 FT_UINT8, BASE_HEX, NULL((void*)0), 0x7f, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14931
14932 { &hf_ieee1905_bss_advanced_configuration_radio_bss_reserved,
14933 { "Reserved", "ieee1905.bss_advanced_configuration.radio.bss.reserved",
14934 FT_BYTES, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14935
14936 { &hf_ieee1905_supported_cipher_suites_num_cs,
14937 { "Number of Cipher Suites", "ieee1905.supported_cipher_suites.num_suites",
14938 FT_UINT8, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14939
14940 { &hf_ieee1905_supported_cipher_suites_cs_list,
14941 {"Cipher Suite List", "ieee1905.supported_cipher_suites.cipher_suites_list",
14942 FT_NONE, BASE_NONE, NULL((void*)0), 0,
14943 "Contains a series of cipher suite selectors", HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14944
14945 {&hf_ieee1905_supported_cipher_suites_cs,
14946 {"Pairwise Cipher Suite", "ieee1905.supported_cipher_suites.cipher_suite",
14947 FT_UINT32, BASE_CUSTOM, CF_FUNC(supported_cipher_suites_cs_custom)((const void *) (size_t) (supported_cipher_suites_cs_custom)), 0,
14948 NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14949
14950 {&hf_ieee1905_supported_cipher_suites_cs_oui,
14951 {"Cipher Suite OUI", "ieee1905.supported_cipher_suites.cipher_suite.oui",
14952 FT_UINT24, BASE_OUI, NULL((void*)0), 0,
14953 NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14954
14955 {&hf_ieee1905_supported_cipher_suites_cs_type,
14956 {"Cipher Suite type", "ieee1905.supported_cipher_suites.cipher_suite.type",
14957 FT_UINT8, BASE_DEC, VALS(ieee80211_rsn_cipher_vals)((0 ? (const struct _value_string*)0 : ((ieee80211_rsn_cipher_vals
))))
, 0,
14958 NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14959
14960 { &hf_ieee1905_extra_tlv_data,
14961 { "Extraneous TLV data", "ieee1905.extra_tlv_data",
14962 FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14963
14964 { &hf_ieee1905_fragments,
14965 { "IEEE1905 Message Fragments", "ieee1905.fragments",
14966 FT_NONE, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14967
14968 { &hf_ieee1905_fragment,
14969 { "IEEE1905 Message Fragment", "ieee1905.fragment",
14970 FT_FRAMENUM, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14971
14972 { &hf_ieee1905_fragment_overlap,
14973 { "IEEE1905 Message Fragment Overlap", "ieee1905.fragment.overlap",
14974 FT_BOOLEAN, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14975
14976 { &hf_ieee1905_fragment_overlap_conflicts,
14977 { "IEEE1905 Message Fragment Overlap Conflict",
14978 "ieee1905.fragment.overlap.conflicts",
14979 FT_BOOLEAN, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14980
14981 { &hf_ieee1905_fragment_multiple_tails,
14982 { "IEEE1905 Message has multiple tail fragments",
14983 "ieee1905.fragment.multiple_tails",
14984 FT_BOOLEAN, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14985
14986 { &hf_ieee1905_fragment_too_long_fragment,
14987 { "IEEE1905 Message Fragment too long",
14988 "ieee1905.fragment.too_long",
14989 FT_BOOLEAN, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14990
14991 { &hf_ieee1905_fragment_error,
14992 { "IEEE1905 Message defragmentation error",
14993 "ieee1905.fragment.error",
14994 FT_FRAMENUM, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14995
14996 { &hf_ieee1905_fragment_count,
14997 { "IEEE1905 Message Fragment count", "ieee1905.fragment.count",
14998 FT_UINT32, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
14999
15000 { &hf_ieee1905_fragment_reassembled_in,
15001 { "Reassembled in", "ieee1905.fragment.reassembled.in",
15002 FT_FRAMENUM, BASE_NONE, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
15003
15004 { &hf_ieee1905_fragment_reassembled_length,
15005 { "IEEE1905 Message length", "ieee1905.fragment.reassembled.length",
15006 FT_UINT32, BASE_DEC, NULL((void*)0), 0x0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }},
15007
15008 };
15009
15010 static int *ett[] = {
15011 &ett_ieee1905,
15012 &ett_ieee1905_flags,
15013 &ett_ieee1905_tlv_len,
15014 &ett_tlv,
15015 &ett_device_information_list,
15016 &ett_device_information_tree,
15017 &ett_media_type,
15018 &ett_bridging_tuples_list,
15019 &ett_bridging_mac_list,
15020 &ett_non_1905_neighbor_list,
15021 &ett_1905_neighbor_list,
15022 &ett_ieee1905_neighbor_flags,
15023 &ett_media_type_list,
15024 &ett_media_item,
15025 &ett_local_interface_list,
15026 &ett_local_interface_info,
15027 &ett_ipv4_list,
15028 &ett_ipv4_info,
15029 &ett_ipv4_type_addr_list,
15030 &ett_ipv4_addr_info,
15031 &ett_ipv6_list,
15032 &ett_ipv6_info,
15033 &ett_ipv6_type_addr_list,
15034 &ett_ipv6_addr_info,
15035 &ett_push_button_phy_list,
15036 &ett_push_button_phy_info,
15037 &ett_power_off_info,
15038 &ett_power_change_list,
15039 &ett_power_change_info,
15040 &ett_power_status_list,
15041 &ett_power_status_info,
15042 &ett_l2_local_intf_list,
15043 &ett_l2_neighbor_device_info,
15044 &ett_l2_neighbor_dev_list,
15045 &ett_l2_neighbor_dev_tree,
15046 &ett_supported_service_list,
15047 &ett_searched_service_list,
15048 &ett_ap_operational_bss_list,
15049 &ett_ap_operational_bss_tree,
15050 &ett_ap_operational_bss_intf,
15051 &ett_ap_operational_bss_intf_list,
15052 &ett_ap_operational_bss_intf_tree,
15053 &ett_ieee1905_capabilities_flags,
15054 &ett_ieee1905_unsuccessful_associations,
15055 &ett_assoc_control_list,
15056 &ett_ieee1905_steering_request_flags,
15057 &ett_ieee1905_association_event_flags,
15058 &ett_client_capability_body,
15059 &ett_radio_basic_class_list,
15060 &ett_ap_radio_basic_cap_class_tree,
15061 &ett_radio_basic_non_op_list,
15062 &ett_ht_cap_flags,
15063 &ett_vht_cap_flags,
15064 &ett_ieee1905_ap_vht_tx_mcs_set,
15065 &ett_ieee1905_ap_vht_rx_mcs_set,
15066 &ett_assoc_clients_bss_list,
15067 &ett_assoc_client_bss_tree,
15068 &ett_assoc_client_list,
15069 &ett_assoc_client_tree,
15070 &ett_channel_preference_class_list,
15071 &ett_ap_channel_preference_class_tree,
15072 &ett_channel_pref_channel_list,
15073 &ett_ieee1905_channel_prefs_flags,
15074 &ett_op_channel_report_class_tree,
15075 &ett_op_channel_report_class_list,
15076 &ett_sta_link_metrics_query_channel_list,
15077 &ett_sta_link_link_mac_addr_list,
15078 &ett_metric_reporting_policy_list,
15079 &ett_metric_reporting_policy_tree,
15080 &ett_metric_policy_flags,
15081 &ett_ap_metric_query_bssid_list,
15082 &ett_ieee1905_ap_metrics_flags,
15083 &ett_sta_list_metrics_bss_list,
15084 &ett_sta_list_metrics_bss_tree,
15085 &ett_sta_wf6_status_report_tid_list,
15086 &ett_sta_wf6_status_report_tid_tree,
15087 &ett_sta_extended_link_metrics_list,
15088 &ett_sta_extended_link_metrics_tree,
15089 &ett_ap_he_mcs_set,
15090 &ett_ap_he_cap_flags,
15091 &ett_ieee1905_ap_he_tx_mcs_set,
15092 &ett_ieee1905_ap_he_rx_mcs_set,
15093 &ett_steering_policy_disallowed_list,
15094 &ett_btm_steering_policy_disallowed_list,
15095 &ett_btm_steering_radio_list,
15096 &ett_radio_restriction_op_class_list,
15097 &ett_radio_restriction_op_class_tree,
15098 &ett_radio_restriction_channel_list,
15099 &ett_radio_restriction_channel_tree,
15100 &ett_unassoc_sta_link_metric_list,
15101 &ett_unassoc_sta_link_metric_tree,
15102 &ett_beacon_metrics_query_list,
15103 &ett_beacon_metrics_query_tree,
15104 &ett_beacon_metrics_query_channel_list,
15105 &ett_beacon_report_subelement_list,
15106 &ett_beacon_report_sub_element_tree,
15107 &ett_beacon_metrics_response_report_list,
15108 &ett_beacon_metrics_response_report_tree,
15109 &ett_ieee1905_beacon_reported_flags,
15110 &ett_channel_scan_rep_policy,
15111 &ett_channel_scan_capa_radio_list,
15112 &ett_channel_scan_capa_radio,
15113 &ett_channel_scan_capa_flags,
15114 &ett_channel_scan_capa_class_list,
15115 &ett_channel_scan_capa_class,
15116 &ett_channel_scan_capa_channels,
15117 &ett_channel_scan_request_flags,
15118 &ett_channel_scan_request_radio_list,
15119 &ett_channel_scan_request_radio,
15120 &ett_channel_scan_request_class_list,
15121 &ett_channel_scan_request_class,
15122 &ett_channel_scan_request_channels,
15123 &ett_channel_scan_result_neigh_list,
15124 &ett_channel_scan_result_neigh_flags,
15125 &ett_ap_wf6_role_list,
15126 &ett_ap_wf6_role_tree,
15127 &ett_ap_wf6_agent_role_flags,
15128 &ett_ap_wf6_supported_flags,
15129 &ett_ap_wf6_mimo_max_flags,
15130 &ett_ap_wf6_gen_flags,
15131 &ett_encrypted_decrypted,
15132 &ett_agent_list_agent_list,
15133 &ett_agent_list_agent,
15134 &ett_channel_scan_result_neigh,
15135 &ett_channel_scan_result_flags,
15136 &ett_cac_request_flags,
15137 &ett_cac_request_radio_list,
15138 &ett_cac_request_radio,
15139 &ett_cac_terminate_radio_list,
15140 &ett_cac_terminate_radio,
15141 &ett_cac_completion_radio_list,
15142 &ett_cac_completion_radio,
15143 &ett_cac_completion_radar_list,
15144 &ett_cac_completion_radar,
15145 &ett_cac_status_rpt_avail_list,
15146 &ett_cac_status_rpt_avail_chan,
15147 &ett_cac_status_rpt_non_occupy_list,
15148 &ett_cac_status_rpt_unocc_chan,
15149 &ett_cac_status_rpt_active_cac_list,
15150 &ett_cac_status_rpt_active_cac_tree,
15151 &ett_cac_capabilities_radio_list,
15152 &ett_cac_capabilities_radio_tree,
15153 &ett_cac_capabilities_type_list,
15154 &ett_cac_capabilities_type_tree,
15155 &ett_cac_capabilities_class_list,
15156 &ett_cac_capabilities_class_tree,
15157 &ett_cac_capabilities_channel_list,
15158 &ett_cac_capabilities_channel,
15159 &ett_r2_ap_capa_flags,
15160 &ett_edge_interface_list,
15161 &ett_radio_advanced_capa_flags,
15162 &ett_ap_operational_backhaul_bss_tree,
15163 &ett_ap_operational_backhaul_bss_intf_list,
15164 &ett_default_802_1q_settings_flags,
15165 &ett_traffic_separation_ssid_list,
15166 &ett_traffic_separation_ssid,
15167 &ett_bss_config_report_list,
15168 &ett_bss_config_report_tree,
15169 &ett_bss_config_report_bss_list,
15170 &ett_bss_config_report_bss_tree,
15171 &ett_bss_config_report_flags,
15172 &ett_ethernet_config_policy_list,
15173 &ett_ethernet_config_policy,
15174 &ett_ethernet_config_policy_flags,
15175 &ett_ieee1905_service_prio_rule_flags,
15176 &ett_ieee1905_service_prio_rule_match_flags,
15177 &ett_backhaul_sta_radio_capa_flags,
15178 &ett_assoc_status_notif_bssid_list,
15179 &ett_assoc_status_notif_bssid_tree,
15180 &ett_tunneled_body,
15181 &ett_akm_suite_list,
15182 &ett_akm_suite,
15183 &ett_backhaul_akm_suite_list,
15184 &ett_backhaul_akm_suite,
15185 &ett_fronthaul_akm_suite_list,
15186 &ett_fronthaul_akm_suite,
15187 &ett_1905_encap_dpp_flags,
15188 &ett_1905_encap_dpp_classes,
15189 &ett_1905_encap_dpp_op_class_tree,
15190 &ett_1905_encap_dpp_channel_list,
15191 &ett_ieee1905_dpp_chirp,
15192 &ett_device_inventory_radio_list,
15193 &ett_device_inventory_radio_tree,
15194 &ett_r2_steering_sta_list,
15195 &ett_r2_steering_target_list,
15196 &ett_r2_steering_target,
15197 &ett_mic_group_temporal_key,
15198 &ett_mic_check,
15199 &ett_ieee1905_spatial_reuse_color,
15200 &ett_ieee1905_spatial_reuse_hesiga,
15201 &ett_ieee1905_spatial_reuse_rep_color,
15202 &ett_ieee1905_spatial_reuse_rep_hesiga,
15203 &ett_qos_mgmt_policy_mscs_list,
15204 &ett_qos_mgmt_policy_scs_list,
15205 &ett_ieee1905_controller_capa,
15206 &ett_wifi_7_agent_capabilities_flags,
15207 &ett_wifi_7_agent_capabilities_radio_list,
15208 &ett_wifi_7_agent_capabilities_radio,
15209 &ett_wifi_7_agent_capabilities_radio_flags,
15210 &ett_wifi_7_agent_capabilities_radio_record_list,
15211 &ett_wifi_7_agent_capabilities_radio_record,
15212 &ett_wifi_7_agent_capabilities_radio_record_flags,
15213 &ett_agent_ap_mld_configuration_ap_mld_list,
15214 &ett_agent_ap_mld_configuration_ap_mld,
15215 &ett_agent_ap_mld_configuration_ap_mld_flags,
15216 &ett_agent_ap_mld_configuration_ap_mld_flags2,
15217 &ett_agent_ap_mld_configuration_ap_mld_affiliated_ap_list,
15218 &ett_agent_ap_mld_configuration_ap_mld_affiliated_ap,
15219 &ett_agent_ap_mld_configuration_ap_mld_affiliated_ap_flags,
15220 &ett_backhaul_sta_mld_configuration_flags,
15221 &ett_backhaul_sta_mld_configuration_flags2,
15222 &ett_backhaul_sta_mld_configuration_affiliated_bsta_list,
15223 &ett_backhaul_sta_mld_configuration_affiliated_bsta,
15224 &ett_backhaul_sta_mld_configuration_affiliated_bsta_flags,
15225 &ett_associated_sta_mld_configuration_flags,
15226 &ett_associated_sta_mld_configuration_affiliated_sta_list,
15227 &ett_associated_sta_mld_configuration_affiliated_sta,
15228 &ett_mld_structure_affiliated_list,
15229 &ett_mld_structure_affiliated,
15230 &ett_tid_to_link_mapping_policy_flags,
15231 &ett_tid_to_link_mapping_policy_flags2,
15232 &ett_tid_to_link_mapping_policy_mapping_flags,
15233 &ett_tid_to_link_mapping_policy_mapping_flags2,
15234 &ett_tid_to_link_mapping_mapping_list,
15235 &ett_tid_to_link_mapping_mapping,
15236 &ett_eht_operations_radio_list,
15237 &ett_eht_operations_radio,
15238 &ett_eht_operations_radio_bss_list,
15239 &ett_eht_operations_radio_bss,
15240 &ett_eht_operations_radio_bss_flags,
15241 &ett_rsn_diagnostic_report_frame_body,
15242 &ett_rsn_parameter_configuration_radio_list,
15243 &ett_rsn_parameter_configuration_radio,
15244 &ett_rsn_parameter_configuration_radio_bss_list,
15245 &ett_rsn_parameter_configuration_radio_bss,
15246 &ett_rsn_parameter_configuration_radio_bss_security_ies,
15247 &ett_bss_advanced_configuration_radio_list,
15248 &ett_bss_advanced_configuration_radio,
15249 &ett_bss_advanced_configuration_radio_bss_list,
15250 &ett_bss_advanced_configuration_radio_bss,
15251 &ett_bss_advanced_configuration_radio_bss_flags,
15252 &ett_supported_cipher_security_cs_tree,
15253 &ett_supported_cipher_security_cs_sub_tree,
15254 &ett_ieee1905_fragment,
15255 &ett_ieee1905_fragments,
15256 };
15257
15258 static ei_register_info ei[] = {
15259 { &ei_ieee1905_malformed_tlv,
15260 { "ieee1905.tlv.too_short", PI_PROTOCOL0x09000000, PI_WARN0x00600000,
15261 "TLV is too short", EXPFILL0, ((void*)0), 0, ((void*)0), {0, {((void*)0), ((void*)0), FT_NONE
, BASE_NONE, ((void*)0), 0, ((void*)0), -1, 0, HF_REF_TYPE_NONE
, -1, ((void*)0)}}
}},
15262
15263 { &ei_ieee1905_extraneous_tlv_data,
15264 { "ieee1905.tlv.extra_data", PI_PROTOCOL0x09000000, PI_WARN0x00600000,
15265 "TLV has extra data or an incorrect length", EXPFILL0, ((void*)0), 0, ((void*)0), {0, {((void*)0), ((void*)0), FT_NONE
, BASE_NONE, ((void*)0), 0, ((void*)0), -1, 0, HF_REF_TYPE_NONE
, -1, ((void*)0)}}
}},
15266
15267 { &ei_ieee1905_mic_check_unsupported,
15268 { "ieee1905.mic.check.unsupported", PI_PROTOCOL0x09000000, PI_WARN0x00600000,
15269 "MIC check unsupported", EXPFILL0, ((void*)0), 0, ((void*)0), {0, {((void*)0), ((void*)0), FT_NONE
, BASE_NONE, ((void*)0), 0, ((void*)0), -1, 0, HF_REF_TYPE_NONE
, -1, ((void*)0)}}
}},
15270
15271 { &ei_ieee1905_mic_check_failed,
15272 { "ieee1905.mic.check.failed", PI_PROTOCOL0x09000000, PI_WARN0x00600000,
15273 "MIC check failed", EXPFILL0, ((void*)0), 0, ((void*)0), {0, {((void*)0), ((void*)0), FT_NONE
, BASE_NONE, ((void*)0), 0, ((void*)0), -1, 0, HF_REF_TYPE_NONE
, -1, ((void*)0)}}
}},
15274 };
15275
15276 /* Decryption User Access Table */
15277 static uat_field_t uat_flds[] = {
15278 UAT_FLD_CSTRING(uat_key_records, almac1, "ALMAC1", "AL MAC Address 1 (optional)"){"almac1", "ALMAC1", PT_TXTMOD_STRING,{uat_fld_chk_str,uat_key_records_almac1_set_cb
,uat_key_records_almac1_tostr_cb},{0,0,0},0,"AL MAC Address 1 (optional)"
,((void*)0)}
,
15279 UAT_FLD_CSTRING(uat_key_records, almac2, "ALMAC2", "AL MAC Address 2 (optional)"){"almac2", "ALMAC2", PT_TXTMOD_STRING,{uat_fld_chk_str,uat_key_records_almac2_set_cb
,uat_key_records_almac2_tostr_cb},{0,0,0},0,"AL MAC Address 2 (optional)"
,((void*)0)}
,
15280 UAT_FLD_CSTRING(uat_key_records, key, "Key", "ptk|gtk:<hexadecimal 256 bit key>"){"key", "Key", PT_TXTMOD_STRING,{uat_fld_chk_str,uat_key_records_key_set_cb
,uat_key_records_key_tostr_cb},{0,0,0},0,"ptk|gtk:<hexadecimal 256 bit key>"
,((void*)0)}
,
15281 UAT_END_FIELDS{((void*)0),((void*)0),PT_TXTMOD_NONE,{0,0,0},{0,0,0},0,0,((void
*)0)}
15282 };
15283
15284 expert_module_t *expert_ieee1905 = NULL((void*)0);
15285
15286 proto_ieee1905 = proto_register_protocol("IEEE 1905.1a", "IEEE 1905", "ieee1905");
15287
15288 proto_register_field_array(proto_ieee1905, hf, array_length(hf)(sizeof (hf) / sizeof (hf)[0]));
15289 proto_register_subtree_array(ett, array_length(ett)(sizeof (ett) / sizeof (ett)[0]));
15290
15291 expert_ieee1905 = expert_register_protocol(proto_ieee1905);
15292 expert_register_field_array(expert_ieee1905, ei, array_length(ei)(sizeof (ei) / sizeof (ei)[0]));
15293
15294 reassembly_table_register(&g_ieee1905_reassembly_table,
15295 &ieee1905_reassembly_table_functions);
15296
15297 ieee1905_handle = register_dissector("ieee1905", dissect_ieee1905, proto_ieee1905);
15298
15299 module_t *ieee1905_module;
15300 ieee1905_module = prefs_register_protocol(proto_ieee1905, NULL((void*)0));
15301 prefs_register_bool_preference(ieee1905_module, "enable_decryption", "Enable decryption",
15302 "Enable IEEE1905 decryption", &enable_decryption);
15303
15304 uat = uat_new("Decryption Keys",
15305 sizeof(uat_key_record_t), /* record size */
15306 "ieee1905_keys", /* filename */
15307 true1, /* from_profile */
15308 &uat_key_records, /* data_ptr */
15309 &uat_num_keys, /* numitems_ptr */
15310 UAT_AFFECTS_DISSECTION0x00000001, /* affects dissection of packets, but not set of named fields */
15311 NULL((void*)0), /* help */
15312 uat_key_record_copy_cb, /* copy callback */
15313 uat_key_record_update_cb, /* update callback */
15314 uat_key_record_free_cb, /* free callback */
15315 NULL((void*)0), /* post update callback - update the WEP/WPA keys */
15316 NULL((void*)0), /* reset callback */
15317 uat_flds); /* UAT field definitions */
15318
15319 prefs_register_uat_preference(ieee1905_module,
15320 "key_table",
15321 "Decryption keys",
15322 "ieee1905 keys\n"
15323 "Example:\n"
15324 "ptk:<hexadecimal 256 bit key>\n"
15325 "gtk:<hexadecimal 256 bit key>\n"
15326 "Invalid keys will be ignored.",
15327 uat);
15328}
15329
15330void
15331proto_reg_handoff_ieee1905(void)
15332{
15333 dissector_add_uint("ethertype", ETHERTYPE_IEEE_19050x893A, ieee1905_handle);
15334
15335 eapol_handle = find_dissector("eapol");
15336}
15337
15338/*
15339 * Editor modelines - https://www.wireshark.org/tools/modelines.html
15340 *
15341 * Local variables:
15342 * c-basic-offset: 4
15343 * tab-width: 8
15344 * indent-tabs-mode: nil
15345 * End:
15346 *
15347 * vi: set shiftwidth=4 tabstop=8 expandtab:
15348 * :indentSize=4:tabSize=8:noTabs=true:
15349 */