Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-capwap.c
blobf213392445384d2bf98fa2c420d19725dae74e94
1 /* packet-capwap.c
2 * Routines for CAPWAP dissection (RFC 5415 / RFC 5416)
3 * Copyright 2009, Alexis La Goutte <alexis.lagoutte at gmail dot com>
5 * Wireshark - Network traffic analyzer
6 * By Gerald Combs <gerald@wireshark.org>
7 * Copyright 1998 Gerald Combs
9 * SPDX-License-Identifier: GPL-2.0-or-later
12 #include "config.h"
14 #include <epan/packet.h>
15 #include <epan/prefs.h>
16 #include <epan/reassemble.h>
17 #include <epan/expert.h>
18 #include <epan/sminmpec.h>
19 #include <epan/addr_resolv.h>
20 #include <epan/tfs.h>
22 #include "packet-ieee80211.h"
24 void proto_register_capwap_control(void);
25 void proto_reg_handoff_capwap(void);
27 static dissector_handle_t capwap_control_handle;
28 static dissector_handle_t capwap_data_handle;
30 #define UDP_PORT_CAPWAP_CONTROL 5246
31 #define UDP_PORT_CAPWAP_DATA 5247
33 static range_t *global_capwap_data_udp_ports;
34 static bool global_capwap_draft_8_cisco;
35 static bool global_capwap_reassemble = true;
36 static bool global_capwap_swap_frame_control = true;
38 static reassembly_table capwap_reassembly_table;
40 /* TODO LIST !
41 * add decryption of DLTS Message
42 * add support of all Messages Element Type
45 static int proto_capwap_control;
46 static int proto_capwap_data;
48 static int hf_capwap_preamble;
49 static int hf_capwap_preamble_version;
50 static int hf_capwap_preamble_type;
51 static int hf_capwap_preamble_reserved;
53 static int hf_capwap_header;
54 static int hf_capwap_header_hlen;
55 static int hf_capwap_header_rid;
56 static int hf_capwap_header_wbid;
58 static int hf_capwap_header_flags;
59 static int hf_capwap_header_flags_t;
60 static int hf_capwap_header_flags_f;
61 static int hf_capwap_header_flags_l;
62 static int hf_capwap_header_flags_w;
63 static int hf_capwap_header_flags_m;
64 static int hf_capwap_header_flags_k;
65 static int hf_capwap_header_flags_r;
67 static int hf_capwap_header_fragment_id;
68 static int hf_capwap_header_fragment_offset;
69 static int hf_capwap_header_reserved;
71 static int hf_capwap_header_mac_length;
72 static int hf_capwap_header_mac_eui48;
73 static int hf_capwap_header_mac_eui64;
74 static int hf_capwap_header_mac_data;
76 static int hf_capwap_header_wireless_length;
77 static int hf_capwap_header_wireless_data;
79 static int hf_capwap_header_wireless_data_ieee80211_fi;
80 static int hf_capwap_header_wireless_data_ieee80211_fi_rssi;
81 static int hf_capwap_header_wireless_data_ieee80211_fi_snr;
82 static int hf_capwap_header_wireless_data_ieee80211_fi_data_rate;
83 static int hf_capwap_header_wireless_data_ieee80211_dest_wlan;
84 static int hf_capwap_header_wireless_data_ieee80211_dw_wlan_id_bitmap;
85 static int hf_capwap_header_wireless_data_ieee80211_dw_reserved;
86 static int hf_capwap_header_padding;
88 static int hf_capwap_control_header;
89 static int hf_capwap_control_header_msg_type;
90 static int hf_capwap_control_header_msg_type_enterprise_nbr;
91 static int hf_capwap_control_header_msg_type_enterprise_specific;
92 static int hf_capwap_control_header_seq_number;
93 static int hf_capwap_control_header_flags;
94 static int hf_capwap_control_header_msg_element_length;
96 static int hf_capwap_message_element;
97 static int hf_capwap_msg_element;
98 static int hf_capwap_msg_element_type;
99 static int hf_capwap_msg_element_length;
100 static int hf_capwap_msg_element_value;
102 static int hf_capwap_msg_element_type_ac_descriptor_stations;
103 static int hf_capwap_msg_element_type_ac_descriptor_limit;
104 static int hf_capwap_msg_element_type_ac_descriptor_active_wtp;
105 static int hf_capwap_msg_element_type_ac_descriptor_max_wtp;
106 /* AC Descriptor Security Flags... */
107 static int hf_capwap_msg_element_type_ac_descriptor_security;
108 static int hf_capwap_msg_element_type_ac_descriptor_security_s;
109 static int hf_capwap_msg_element_type_ac_descriptor_security_x;
110 static int hf_capwap_msg_element_type_ac_descriptor_security_r;
111 static int hf_capwap_msg_element_type_ac_descriptor_rmac_field;
112 static int hf_capwap_msg_element_type_ac_descriptor_reserved;
113 /* AC Descriptor DTLS Policy Flags... */
114 static int hf_capwap_msg_element_type_ac_descriptor_dtls_policy;
115 static int hf_capwap_msg_element_type_ac_descriptor_dtls_policy_d;
116 static int hf_capwap_msg_element_type_ac_descriptor_dtls_policy_c;
117 static int hf_capwap_msg_element_type_ac_descriptor_dtls_policy_r;
119 static int hf_capwap_msg_element_type_ac_information;
120 static int hf_capwap_msg_element_type_ac_information_vendor;
121 static int hf_capwap_msg_element_type_ac_information_type;
122 static int hf_capwap_msg_element_type_ac_information_length;
123 static int hf_capwap_msg_element_type_ac_information_value;
124 static int hf_capwap_msg_element_type_ac_information_hardware_version;
125 static int hf_capwap_msg_element_type_ac_information_software_version;
127 static int hf_capwap_msg_element_type_ac_name;
128 static int hf_capwap_msg_element_type_ac_name_with_priority;
130 static int hf_capwap_msg_element_type_ac_timestamp;
132 static int hf_capwap_msg_element_type_add_station_radio_id;
133 static int hf_capwap_msg_element_type_add_station_length;
134 static int hf_capwap_msg_element_type_add_station_mac_eui48;
135 static int hf_capwap_msg_element_type_add_station_mac_eui64;
136 static int hf_capwap_msg_element_type_add_station_mac_data;
137 static int hf_capwap_msg_element_type_add_station_vlan_name;
139 static int hf_capwap_msg_element_type_ac_ipv4_list;
140 static int hf_capwap_msg_element_type_ac_ipv6_list;
142 static int hf_capwap_msg_element_type_capwap_control_ipv4;
143 static int hf_capwap_msg_element_type_capwap_control_ipv6;
144 static int hf_capwap_msg_element_type_capwap_control_wtp_count;
146 static int hf_capwap_msg_element_type_capwap_timers_discovery;
147 static int hf_capwap_msg_element_type_capwap_timers_echo_request;
149 static int hf_capwap_msg_element_type_decryption_error_report_period_radio_id;
150 static int hf_capwap_msg_element_type_decryption_error_report_period_interval;
152 static int hf_capwap_msg_element_type_delete_station_radio_id;
153 static int hf_capwap_msg_element_type_delete_station_length;
154 static int hf_capwap_msg_element_type_delete_station_mac_eui48;
155 static int hf_capwap_msg_element_type_delete_station_mac_eui64;
156 static int hf_capwap_msg_element_type_delete_station_mac_data;
158 static int hf_capwap_msg_element_type_discovery_type;
160 static int hf_capwap_msg_element_type_location_data;
162 static int hf_capwap_msg_element_type_maximum_message_length;
164 static int hf_capwap_msg_element_type_capwap_local_ipv4_address;
166 static int hf_capwap_msg_element_type_idle_timeout;
167 static int hf_capwap_msg_element_type_radio_admin_id;
168 static int hf_capwap_msg_element_type_radio_admin_state;
170 static int hf_capwap_msg_element_type_radio_op_state_radio_id;
171 static int hf_capwap_msg_element_type_radio_op_state_radio_state;
172 static int hf_capwap_msg_element_type_radio_op_state_radio_cause;
173 static int hf_capwap_msg_element_type_result_code;
175 static int hf_capwap_msg_element_type_session_id;
177 static int hf_capwap_msg_element_type_statistics_timer;
179 static int hf_capwap_msg_element_type_vsp_vendor_identifier;
180 static int hf_capwap_msg_element_type_vsp_vendor_element_id;
181 static int hf_capwap_msg_element_type_vsp_vendor_data;
183 static int hf_capwap_msg_element_type_wtp_board_data;
184 static int hf_capwap_msg_element_type_wtp_board_data_vendor;
185 static int hf_capwap_msg_element_type_wtp_board_data_type;
186 static int hf_capwap_msg_element_type_wtp_board_data_length;
187 static int hf_capwap_msg_element_type_wtp_board_data_value;
188 static int hf_capwap_msg_element_type_wtp_board_data_wtp_model_number;
189 static int hf_capwap_msg_element_type_wtp_board_data_wtp_serial_number;
190 static int hf_capwap_msg_element_type_wtp_board_data_wtp_board_id;
191 static int hf_capwap_msg_element_type_wtp_board_data_wtp_board_revision;
192 static int hf_capwap_msg_element_type_wtp_board_data_base_mac_address;
194 static int hf_capwap_msg_element_type_wtp_descriptor_max_radios;
195 static int hf_capwap_msg_element_type_wtp_descriptor_radio_in_use;
196 static int hf_capwap_msg_element_type_wtp_descriptor_number_encrypt;
197 static int hf_capwap_msg_element_type_wtp_descriptor_encrypt;
198 static int hf_capwap_msg_element_type_wtp_descriptor_encrypt_reserved;
199 static int hf_capwap_msg_element_type_wtp_descriptor_encrypt_wbid;
200 static int hf_capwap_msg_element_type_wtp_descriptor_encrypt_capabilities;
202 static int hf_capwap_msg_element_type_wtp_descriptor;
203 static int hf_capwap_msg_element_type_wtp_descriptor_vendor;
204 static int hf_capwap_msg_element_type_wtp_descriptor_type;
205 static int hf_capwap_msg_element_type_wtp_descriptor_length;
206 static int hf_capwap_msg_element_type_wtp_descriptor_value;
207 static int hf_capwap_msg_element_type_wtp_descriptor_hardware_version;
208 static int hf_capwap_msg_element_type_wtp_descriptor_active_software_version;
209 static int hf_capwap_msg_element_type_wtp_descriptor_boot_version;
210 static int hf_capwap_msg_element_type_wtp_descriptor_other_software_version;
212 static int hf_capwap_msg_element_type_wtp_fallback;
213 static int hf_capwap_msg_element_type_wtp_frame_tunnel_mode;
214 static int hf_capwap_msg_element_type_wtp_frame_tunnel_mode_n;
215 static int hf_capwap_msg_element_type_wtp_frame_tunnel_mode_e;
216 static int hf_capwap_msg_element_type_wtp_frame_tunnel_mode_l;
217 static int hf_capwap_msg_element_type_wtp_frame_tunnel_mode_r;
219 static int hf_capwap_msg_element_type_wtp_mac_type;
221 static int hf_capwap_msg_element_type_wtp_name;
223 static int hf_capwap_msg_element_type_wtp_reboot_statistics_reboot_count;
224 static int hf_capwap_msg_element_type_wtp_reboot_statistics_ac_initiated_count;
225 static int hf_capwap_msg_element_type_wtp_reboot_statistics_link_failure_count;
226 static int hf_capwap_msg_element_type_wtp_reboot_statistics_sw_failure_count;
227 static int hf_capwap_msg_element_type_wtp_reboot_statistics_hw_failure_count;
228 static int hf_capwap_msg_element_type_wtp_reboot_statistics_other_failure_count;
229 static int hf_capwap_msg_element_type_wtp_reboot_statistics_unknown_failure_count;
230 static int hf_capwap_msg_element_type_wtp_reboot_statistics_last_failure_type;
232 static int hf_capwap_msg_element_type_capwap_local_ipv6_address;
234 static int hf_capwap_msg_element_type_capwap_transport_protocol;
236 static int hf_capwap_msg_element_type_mtu_discovery_padding;
238 static int hf_capwap_msg_element_type_ecn_support;
240 static int hf_capwap_msg_element_type_ieee80211_add_wlan_radio_id;
241 static int hf_capwap_msg_element_type_ieee80211_add_wlan_wlan_id;
242 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability;
243 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_e;
244 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_i;
245 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_c;
246 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_f;
247 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_p;
248 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_s;
249 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_b;
250 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_a;
251 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_m;
252 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_q;
253 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_t;
254 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_d;
255 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_v;
256 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_o;
257 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_k;
258 static int hf_capwap_msg_element_type_ieee80211_add_wlan_capability_l;
259 static int hf_capwap_msg_element_type_ieee80211_add_wlan_key_index;
260 static int hf_capwap_msg_element_type_ieee80211_add_wlan_key_status;
261 static int hf_capwap_msg_element_type_ieee80211_add_wlan_key_length;
262 static int hf_capwap_msg_element_type_ieee80211_add_wlan_key;
263 static int hf_capwap_msg_element_type_ieee80211_add_wlan_group_tsc;
264 static int hf_capwap_msg_element_type_ieee80211_add_wlan_qos;
265 static int hf_capwap_msg_element_type_ieee80211_add_wlan_auth_type;
266 static int hf_capwap_msg_element_type_ieee80211_add_wlan_mac_mode;
267 static int hf_capwap_msg_element_type_ieee80211_add_wlan_tunnel_mode;
268 static int hf_capwap_msg_element_type_ieee80211_add_wlan_suppress_ssid;
269 static int hf_capwap_msg_element_type_ieee80211_add_wlan_ssid;
271 static int hf_capwap_msg_element_type_ieee80211_antenna_radio_id;
272 static int hf_capwap_msg_element_type_ieee80211_antenna_diversity;
273 static int hf_capwap_msg_element_type_ieee80211_antenna_combiner;
274 static int hf_capwap_msg_element_type_ieee80211_antenna_count;
275 static int hf_capwap_msg_element_type_ieee80211_antenna_selection;
277 static int hf_capwap_msg_element_type_ieee80211_assigned_wtp_bssid_radio_id;
278 static int hf_capwap_msg_element_type_ieee80211_assigned_wtp_bssid_wlan_id;
279 static int hf_capwap_msg_element_type_ieee80211_assigned_wtp_bssid_bssid;
281 static int hf_capwap_msg_element_type_ieee80211_delete_wlan_radio_id;
282 static int hf_capwap_msg_element_type_ieee80211_delete_wlan_wlan_id;
284 static int hf_capwap_msg_element_type_ieee80211_direct_sequence_control_radio_id;
285 static int hf_capwap_msg_element_type_ieee80211_direct_sequence_control_reserved;
286 static int hf_capwap_msg_element_type_ieee80211_direct_sequence_control_current_channel;
287 static int hf_capwap_msg_element_type_ieee80211_direct_sequence_control_current_cca;
288 static int hf_capwap_msg_element_type_ieee80211_direct_sequence_control_energy_detect_threshold;
290 static int hf_capwap_msg_element_type_ieee80211_ie_radio_id;
291 static int hf_capwap_msg_element_type_ieee80211_ie_wlan_id;
292 static int hf_capwap_msg_element_type_ieee80211_ie_flags;
293 static int hf_capwap_msg_element_type_ieee80211_ie_flags_b;
294 static int hf_capwap_msg_element_type_ieee80211_ie_flags_p;
295 static int hf_capwap_msg_element_type_ieee80211_ie_flags_rsv;
297 static int hf_capwap_msg_element_type_ieee80211_mac_operation_radio_id;
298 static int hf_capwap_msg_element_type_ieee80211_mac_operation_reserved;
299 static int hf_capwap_msg_element_type_ieee80211_mac_operation_rts_threshold;
300 static int hf_capwap_msg_element_type_ieee80211_mac_operation_short_retry;
301 static int hf_capwap_msg_element_type_ieee80211_mac_operation_long_retry;
302 static int hf_capwap_msg_element_type_ieee80211_mac_operation_fragmentation_threshold;
303 static int hf_capwap_msg_element_type_ieee80211_mac_operation_tx_msdu_lifetime;
304 static int hf_capwap_msg_element_type_ieee80211_mac_operation_rx_msdu_lifetime;
306 static int hf_capwap_msg_element_type_ieee80211_mic_countermeasures_radio_id;
307 static int hf_capwap_msg_element_type_ieee80211_mic_countermeasures_wlan_id;
308 static int hf_capwap_msg_element_type_ieee80211_mic_countermeasures_mac_address;
310 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_radio_id;
311 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_reserved;
312 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_current_channel;
313 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support;
314 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit0;
315 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit1;
316 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit2;
317 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit3;
318 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit4;
319 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit5;
320 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit6;
321 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit7;
322 static int hf_capwap_msg_element_type_ieee80211_ofdm_control_ti_threshold;
324 static int hf_capwap_msg_element_type_ieee80211_multi_domain_capability_radio_id;
325 static int hf_capwap_msg_element_type_ieee80211_multi_domain_capability_reserved;
326 static int hf_capwap_msg_element_type_ieee80211_multi_domain_capability_first_channel;
327 static int hf_capwap_msg_element_type_ieee80211_multi_domain_capability_number_of_channels;
328 static int hf_capwap_msg_element_type_ieee80211_multi_domain_capability_max_tx_power_level;
330 static int hf_capwap_msg_element_type_ieee80211_rate_set_radio_id;
331 static int hf_capwap_msg_element_type_ieee80211_rate_set_rate_set;
333 static int hf_capwap_msg_element_type_ieee80211_station_radio_id;
334 static int hf_capwap_msg_element_type_ieee80211_station_association_id;
335 static int hf_capwap_msg_element_type_ieee80211_station_flags;
336 static int hf_capwap_msg_element_type_ieee80211_station_mac_address;
337 static int hf_capwap_msg_element_type_ieee80211_station_capabilities;
338 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_e;
339 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_i;
340 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_c;
341 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_f;
342 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_p;
343 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_s;
344 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_b;
345 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_a;
346 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_m;
347 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_q;
348 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_t;
349 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_d;
350 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_v;
351 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_o;
352 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_k;
353 static int hf_capwap_msg_element_type_ieee80211_station_capabilities_l;
354 static int hf_capwap_msg_element_type_ieee80211_station_wlan_id;
355 static int hf_capwap_msg_element_type_ieee80211_station_supported_rates;
357 static int hf_capwap_msg_element_type_ieee80211_station_session_key_mac;
358 static int hf_capwap_msg_element_type_ieee80211_station_session_key_flags;
359 static int hf_capwap_msg_element_type_ieee80211_station_session_key_flags_a;
360 static int hf_capwap_msg_element_type_ieee80211_station_session_key_flags_c;
361 static int hf_capwap_msg_element_type_ieee80211_station_session_key_pairwire_tsc;
362 static int hf_capwap_msg_element_type_ieee80211_station_session_key_pairwire_rsc;
363 static int hf_capwap_msg_element_type_ieee80211_station_session_key_key;
365 static int hf_capwap_msg_element_type_ieee80211_supported_rates_radio_id;
366 static int hf_capwap_msg_element_type_ieee80211_supported_rates_rate;
368 static int hf_capwap_msg_element_type_ieee80211_tx_power_radio_id;
369 static int hf_capwap_msg_element_type_ieee80211_tx_power_reserved;
370 static int hf_capwap_msg_element_type_ieee80211_tx_power_current_tx_power;
372 static int hf_capwap_msg_element_type_ieee80211_tx_power_level_radio_id;
373 static int hf_capwap_msg_element_type_ieee80211_tx_power_level_num_levels;
374 static int hf_capwap_msg_element_type_ieee80211_tx_power_level_power_level;
376 static int hf_capwap_msg_element_type_ieee80211_update_wlan_radio_id;
377 static int hf_capwap_msg_element_type_ieee80211_update_wlan_wlan_id;
378 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability;
379 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_e;
380 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_i;
381 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_c;
382 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_f;
383 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_p;
384 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_s;
385 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_b;
386 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_a;
387 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_m;
388 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_q;
389 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_t;
390 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_d;
391 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_v;
392 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_o;
393 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_k;
394 static int hf_capwap_msg_element_type_ieee80211_update_wlan_capability_l;
395 static int hf_capwap_msg_element_type_ieee80211_update_wlan_key_index;
396 static int hf_capwap_msg_element_type_ieee80211_update_wlan_key_status;
397 static int hf_capwap_msg_element_type_ieee80211_update_wlan_key_length;
398 static int hf_capwap_msg_element_type_ieee80211_update_wlan_key;
400 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_radio_id;
401 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_short_preamble;
402 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_num_of_bssids;
403 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_dtim_period;
404 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_bssid;
405 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_beacon_period;
406 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_country_string;
408 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_id;
409 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_reserved;
410 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_n;
411 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_g;
412 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_a;
413 static int hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_b;
415 static int hf_capwap_msg_element_type_ieee80211_supported_mac_profiles_numbers;
416 static int hf_capwap_msg_element_type_ieee80211_supported_mac_profiles_profile;
417 static int hf_capwap_msg_element_type_ieee80211_mac_profile;
419 static int hf_capwap_data_keep_alive;
420 static int hf_capwap_data_keep_alive_length;
422 static int hf_capwap_fortinet_element_id;
423 static int hf_capwap_fortinet_value;
424 static int hf_capwap_fortinet_ap_scan_rid;
425 static int hf_capwap_fortinet_ap_scan_bgscan_intv;
426 static int hf_capwap_fortinet_ap_scan_bgscan_idle;
427 static int hf_capwap_fortinet_ap_scan_bgscan_rpt_intv;
428 static int hf_capwap_fortinet_ap_scan_fgscan_rpt_intv;
429 static int hf_capwap_fortinet_passive_rid;
430 static int hf_capwap_fortinet_passive;
431 static int hf_capwap_fortinet_daemon_rst;
432 static int hf_capwap_fortinet_mac_rid;
433 static int hf_capwap_fortinet_mac_wid;
434 static int hf_capwap_fortinet_mac_len;
435 static int hf_capwap_fortinet_mac;
436 static int hf_capwap_fortinet_wtp_allow_sn;
437 static int hf_capwap_fortinet_wtp_allow_allow;
438 static int hf_capwap_fortinet_wbh_sta_rid;
439 static int hf_capwap_fortinet_wbh_sta_len;
440 static int hf_capwap_fortinet_wbh_sta_mac;
441 static int hf_capwap_fortinet_wbh_sta_bssid;
442 static int hf_capwap_fortinet_wbh_sta_mhc;
443 static int hf_capwap_fortinet_htcap_rid;
444 static int hf_capwap_fortinet_htcap_mcs;
445 static int hf_capwap_fortinet_htcap_gi;
446 static int hf_capwap_fortinet_htcap_bw;
447 static int hf_capwap_fortinet_mvap_sn_length;
448 static int hf_capwap_fortinet_mvap_sn;
449 static int hf_capwap_fortinet_mvap_unknown;
450 static int hf_capwap_fortinet_mvap_age;
451 static int hf_capwap_fortinet_mvap_period;
452 static int hf_capwap_fortinet_mvap_vfid;
453 static int hf_capwap_fortinet_mode_rid;
454 static int hf_capwap_fortinet_mode;
455 static int hf_capwap_fortinet_coext_rid;
456 static int hf_capwap_fortinet_coext;
457 static int hf_capwap_fortinet_amsdu_rid;
458 static int hf_capwap_fortinet_amsdu;
459 static int hf_capwap_fortinet_ps_opt_rid;
460 static int hf_capwap_fortinet_ps_opt;
461 static int hf_capwap_fortinet_pure_rid;
462 static int hf_capwap_fortinet_pure;
463 static int hf_capwap_fortinet_ebptag_ebp;
464 static int hf_capwap_fortinet_ebptag_tag;
465 static int hf_capwap_fortinet_telnet_enable;
466 static int hf_capwap_fortinet_admin_passwd;
467 static int hf_capwap_fortinet_regcode;
468 static int hf_capwap_fortinet_countrycode_rid;
469 static int hf_capwap_fortinet_countrycode_code;
470 static int hf_capwap_fortinet_countrycode_string;
471 static int hf_capwap_fortinet_sta_scan_rid;
472 static int hf_capwap_fortinet_sta_scan;
473 static int hf_capwap_fortinet_fho_rid;
474 static int hf_capwap_fortinet_fho;
475 static int hf_capwap_fortinet_apho_rid;
476 static int hf_capwap_fortinet_apho;
477 static int hf_capwap_fortinet_sta_locate_rid;
478 static int hf_capwap_fortinet_sta_locate_enable;
479 static int hf_capwap_fortinet_sta_locate_interval;
480 static int hf_capwap_fortinet_sa_rid;
481 static int hf_capwap_fortinet_sa_enable;
482 static int hf_capwap_fortinet_sa_ssid;
483 static int hf_capwap_fortinet_darrp_cfg_rid;
484 static int hf_capwap_fortinet_darrp_cfg_enable;
485 static int hf_capwap_fortinet_darrp_cfg_interval;
486 static int hf_capwap_fortinet_ap_suppress_list_ver;
487 static int hf_capwap_fortinet_ap_suppress_list_op;
488 static int hf_capwap_fortinet_ap_suppress_list_rid;
489 static int hf_capwap_fortinet_ap_suppress_list_len;
490 static int hf_capwap_fortinet_wds_rid;
491 static int hf_capwap_fortinet_wds_wid;
492 static int hf_capwap_fortinet_wds_enable;
493 static int hf_capwap_fortinet_vap_vlan_tag_rid;
494 static int hf_capwap_fortinet_vap_vlan_tag_wid;
495 static int hf_capwap_fortinet_vap_vlan_tag;
496 static int hf_capwap_fortinet_vap_bitmap_rid;
497 static int hf_capwap_fortinet_vap_bitmap;
498 static int hf_capwap_fortinet_mcast_rate_rid;
499 static int hf_capwap_fortinet_mcast_rate_wid;
500 static int hf_capwap_fortinet_mcast_rate;
501 static int hf_capwap_fortinet_cfg_rid;
502 static int hf_capwap_fortinet_cfg_wid;
503 static int hf_capwap_fortinet_cfg_ip;
504 static int hf_capwap_fortinet_cfg_mask;
505 static int hf_capwap_fortinet_split_tun_cfg_enable_local_subnet;
506 static int hf_capwap_fortinet_split_tun_cfg_cnt;
507 static int hf_capwap_fortinet_mgmt_vlan_id;
508 static int hf_capwap_fortinet_vap_psk_passwd_rid;
509 static int hf_capwap_fortinet_vap_psk_passwd_wid;
510 static int hf_capwap_fortinet_vap_psk_passwd_key;
511 static int hf_capwap_fortinet_mesh_eth_bridge_enable;
512 static int hf_capwap_fortinet_mesh_eth_bridge_type;
513 static int hf_capwap_fortinet_wtp_cap;
514 static int hf_capwap_fortinet_txpwr_rid;
515 static int hf_capwap_fortinet_txpwr;
516 static int hf_capwap_fortinet_wids_enable_rid;
517 static int hf_capwap_fortinet_wids_enable;
518 static int hf_capwap_fortinet_unknown_rid;
519 static int hf_capwap_fortinet_unknown_wid;
520 static int hf_capwap_fortinet_unknown;
522 static int hf_capwap_cisco_element_id;
523 static int hf_capwap_cisco_value;
524 static int hf_capwap_cisco_mwar_addr;
525 static int hf_capwap_cisco_rad_name;
526 static int hf_capwap_cisco_mwar_type;
527 static int hf_capwap_cisco_mwar_hardware;
528 static int hf_capwap_cisco_mwar_software;
529 static int hf_capwap_cisco_mwar_active_ms;
530 static int hf_capwap_cisco_mwar_supported_ms;
531 static int hf_capwap_cisco_mwar_active_rad;
532 static int hf_capwap_cisco_mwar_supported_rad;
533 static int hf_capwap_cisco_ap_mode_and_type_mode;
534 static int hf_capwap_cisco_ap_mode_and_type_type;
535 static int hf_capwap_cisco_ap_static_ip_addr;
536 static int hf_capwap_cisco_ap_static_ip_netmask;
537 static int hf_capwap_cisco_ap_static_ip_gateway;
538 static int hf_capwap_cisco_ap_static_ip_type;
539 static int hf_capwap_cisco_ap_static_ip_reserved;
540 static int hf_capwap_cisco_ap_uptime_current;
541 static int hf_capwap_cisco_ap_uptime_last;
542 static int hf_capwap_cisco_ap_group_name;
543 static int hf_capwap_cisco_ap_led_state;
544 static int hf_capwap_cisco_ap_timesync;
545 static int hf_capwap_cisco_ap_timesync_type;
546 static int hf_capwap_cisco_board_data_options_ant_type;
547 static int hf_capwap_cisco_board_data_options_flex_connect;
548 static int hf_capwap_cisco_board_data_options_ap_type;
549 static int hf_capwap_cisco_board_data_options_join_priority;
550 static int hf_capwap_cisco_unknown;
552 static int hf_msg_fragments;
553 static int hf_msg_fragment;
554 static int hf_msg_fragment_overlap;
555 static int hf_msg_fragment_overlap_conflicts;
556 static int hf_msg_fragment_multiple_tails;
557 static int hf_msg_fragment_too_long_fragment;
558 static int hf_msg_fragment_error;
559 static int hf_msg_fragment_count;
560 static int hf_msg_reassembled_in;
561 static int hf_msg_reassembled_length;
563 static dissector_handle_t dtls_handle;
564 static dissector_handle_t ieee8023_handle;
565 static dissector_handle_t ieee80211_handle;
566 static dissector_handle_t ieee80211_bsfc_handle;
568 static int ett_capwap;
569 static int ett_capwap_control;
570 static int ett_capwap_data;
571 static int ett_capwap_preamble;
572 static int ett_capwap_header;
573 static int ett_capwap_header_flags;
574 static int ett_capwap_control_header;
575 static int ett_capwap_control_header_msg;
576 static int ett_capwap_data_keep_alive;
577 static int ett_capwap_message_element;
578 static int ett_capwap_data_message_bindings_ieee80211;
579 static int ett_capwap_encryption_capabilities;
580 static int ett_capwap_encryption_capability;
581 static int ett_capwap_ac_information;
582 static int ett_capwap_wtp_descriptor;
583 static int ett_capwap_board_data;
584 static int ett_capwap_message_element_type;
585 static int ett_capwap_ac_descriptor_security_flags;
586 static int ett_capwap_ac_descriptor_dtls_flags;
587 static int ett_capwap_wtp_frame_tunnel_mode;
588 static int ett_capwap_ieee80211_add_wlan_capability;
589 static int ett_capwap_ieee80211_ie_flags;
590 static int ett_capwap_ieee80211_update_wlan_capability;
591 static int ett_capwap_ieee80211_station_capabilities;
592 static int ett_capwap_ieee80211_ofdm_control_band_support;
594 static int ett_msg_fragment;
595 static int ett_msg_fragments;
597 static expert_field ei_capwap_header_length_bad;
598 static expert_field ei_capwap_data_keep_alive_length;
599 static expert_field ei_capwap_msg_element_length;
600 static expert_field ei_capwap_message_element_type;
601 static expert_field ei_capwap_fortinet_mac_len;
602 static expert_field ei_capwap_message_element_fortinet_type;
603 static expert_field ei_capwap_message_element_cisco_type;
605 static int * const ieee80211_ofdm_control_band_support_flags[] = {
606 &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit0,
607 &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit1,
608 &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit2,
609 &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit3,
610 &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit4,
611 &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit5,
612 &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit6,
613 &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit7,
614 NULL
617 static int * const ieee80211_ie_flags[] = {
618 &hf_capwap_msg_element_type_ieee80211_ie_flags_b,
619 &hf_capwap_msg_element_type_ieee80211_ie_flags_p,
620 &hf_capwap_msg_element_type_ieee80211_ie_flags_rsv,
621 NULL
624 static int * const capwap_ac_descriptor_security_flags[] = {
625 &hf_capwap_msg_element_type_ac_descriptor_security_r,
626 &hf_capwap_msg_element_type_ac_descriptor_security_s,
627 &hf_capwap_msg_element_type_ac_descriptor_security_x,
628 NULL
631 static int * const capwap_ac_descriptor_dtls_flags[] = {
632 &hf_capwap_msg_element_type_ac_descriptor_dtls_policy_r,
633 &hf_capwap_msg_element_type_ac_descriptor_dtls_policy_d,
634 &hf_capwap_msg_element_type_ac_descriptor_dtls_policy_c,
635 NULL
638 static int * const capwap_wtp_frame_tunnel_mode_flags[] = {
639 &hf_capwap_msg_element_type_wtp_frame_tunnel_mode_n,
640 &hf_capwap_msg_element_type_wtp_frame_tunnel_mode_e,
641 &hf_capwap_msg_element_type_wtp_frame_tunnel_mode_l,
642 &hf_capwap_msg_element_type_wtp_frame_tunnel_mode_r,
643 NULL
646 static int * const ieee80211_add_wlan_capability_flags[] = {
647 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_e,
648 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_i,
649 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_c,
650 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_f,
651 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_p,
652 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_s,
653 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_b,
654 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_a,
655 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_m,
656 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_q,
657 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_t,
658 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_d,
659 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_v,
660 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_o,
661 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_k,
662 &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_l,
663 NULL
666 static int * const ieee80211_station_capabilities_flags[] ={
667 &hf_capwap_msg_element_type_ieee80211_station_capabilities_e,
668 &hf_capwap_msg_element_type_ieee80211_station_capabilities_i,
669 &hf_capwap_msg_element_type_ieee80211_station_capabilities_c,
670 &hf_capwap_msg_element_type_ieee80211_station_capabilities_f,
671 &hf_capwap_msg_element_type_ieee80211_station_capabilities_p,
672 &hf_capwap_msg_element_type_ieee80211_station_capabilities_s,
673 &hf_capwap_msg_element_type_ieee80211_station_capabilities_b,
674 &hf_capwap_msg_element_type_ieee80211_station_capabilities_a,
675 &hf_capwap_msg_element_type_ieee80211_station_capabilities_m,
676 &hf_capwap_msg_element_type_ieee80211_station_capabilities_q,
677 &hf_capwap_msg_element_type_ieee80211_station_capabilities_t,
678 &hf_capwap_msg_element_type_ieee80211_station_capabilities_d,
679 &hf_capwap_msg_element_type_ieee80211_station_capabilities_v,
680 &hf_capwap_msg_element_type_ieee80211_station_capabilities_o,
681 &hf_capwap_msg_element_type_ieee80211_station_capabilities_k,
682 &hf_capwap_msg_element_type_ieee80211_station_capabilities_l,
683 NULL
686 static int * const ieee80211_update_wlan_capability_flags[] = {
687 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_e,
688 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_i,
689 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_c,
690 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_f,
691 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_p,
692 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_s,
693 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_b,
694 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_a,
695 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_m,
696 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_q,
697 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_t,
698 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_d,
699 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_v,
700 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_o,
701 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_k,
702 &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_l,
703 NULL
706 /* ************************************************************************* */
707 /* Fragment items */
708 /* ************************************************************************* */
710 static const fragment_items capwap_frag_items = {
711 /* Fragment subtrees */
712 &ett_msg_fragment,
713 &ett_msg_fragments,
714 /* Fragment fields */
715 &hf_msg_fragments,
716 &hf_msg_fragment,
717 &hf_msg_fragment_overlap,
718 &hf_msg_fragment_overlap_conflicts,
719 &hf_msg_fragment_multiple_tails,
720 &hf_msg_fragment_too_long_fragment,
721 &hf_msg_fragment_error,
722 &hf_msg_fragment_count,
723 /* Reassembled in field */
724 &hf_msg_reassembled_in,
725 /* Reassembled length field */
726 &hf_msg_reassembled_length,
727 /* Reassembled data field */
728 NULL,
729 /* Tag */
730 "Message fragments"
733 /* ************************************************************************* */
734 /* Header Type */
735 /* ************************************************************************* */
736 static const value_string type_header_vals[] = {
737 { 0, "CAPWAP Header" },
738 { 1, "CAPWAP DTLS Header" },
739 { 0, NULL }
741 /* ************************************************************************* */
742 /* Wireless Binding IDentifier (WBID) */
743 /* ************************************************************************* */
744 static const value_string type_wbid[] = {
745 { 0, "Reserved" },
746 { 1, "IEEE 802.11" },
747 { 2, "IEEE 802.16" }, /* From old RFC Draft... */
748 { 3, "EPCGlobal" },
749 { 0, NULL }
751 /* ************************************************************************* */
752 /* flag Type Transported (payload) */
753 /* ************************************************************************* */
754 static const true_false_string flag_type_t = {
755 "Native frame format (see Wireless Binding ID field)",
756 "IEEE 802.3 frame"
758 /* ************************************************************************* */
759 /* flag Type Fragment */
760 /* ************************************************************************* */
761 static const true_false_string flag_type_f = {
762 "Fragmented",
763 "Don't Fragment"
765 /* ************************************************************************* */
766 /* flag Type Last Fragment */
767 /* ************************************************************************* */
768 static const true_false_string flag_type_l = {
769 "This is the last fragment",
770 "More fragments follow"
772 /* ************************************************************************* */
773 /* flag Type Wireless */
774 /* ************************************************************************* */
775 static const true_false_string flag_type_w = {
776 "Wireless Specific Information is present",
777 "No Wireless Specific Information"
779 /* ************************************************************************* */
780 /* flag Type Radio Mac */
781 /* ************************************************************************* */
782 static const true_false_string flag_type_m = {
783 "Radio MAC Address is present",
784 "No Radio MAC Address"
786 /* ************************************************************************* */
787 /* flag Type Keep Alive */
788 /* ************************************************************************* */
789 static const true_false_string flag_type_k = {
790 "Keep-Alive Packet",
791 "No Keep-Alive"
793 /* ************************************************************************* */
794 /* Message Type Value */
795 /* ************************************************************************* */
796 static const value_string message_type[] = {
797 { 1, "Discovery Request" },
798 { 2, "Discovery Response" },
799 { 3, "Join Request" },
800 { 4, "Join Response" },
801 { 5, "Configuration Status Request" },
802 { 6, "Configuration Status Response" },
803 { 7, "Configuration Update Request" },
804 { 8, "Configuration Update Response" },
805 { 9, "WTP Event Request" },
806 { 10, "WTP Event Response" },
807 { 11, "Change State Request" },
808 { 12, "Change State Response" },
809 { 13, "Echo Request" },
810 { 14, "Echo Response" },
811 { 15, "Image Data Request" },
812 { 16, "Image Data Response" },
813 { 17, "Reset Request" },
814 { 18, "Reset Response" },
815 { 19, "Primary Discovery Request" },
816 { 20, "Primary Discovery Response" },
817 { 21, "Data Transfer Request" },
818 { 22, "Data Transfer Response" },
819 { 23, "Clear Configuration Request" },
820 { 24, "Clear Configuration Response" },
821 { 25, "Station Configuration Request" },
822 { 26, "Station Configuration Response" },
823 /* RFC5416 : Section 3 : IEEE 802.11 Specific CAPWAP Control Messages */
824 { 3398913, "IEEE 802.11 WLAN Configuration Request" },
825 { 3398914, "IEEE 802.11 WLAN Configuration Response" },
826 { 0, NULL }
828 /* ************************************************************************* */
829 /* Message Element Type */
830 /* ************************************************************************* */
831 #define TYPE_AC_DESCRIPTOR 1
832 #define TYPE_AC_IPV4_LIST 2
833 #define TYPE_AC_IPV6_LIST 3
834 #define TYPE_AC_NAME 4
835 #define TYPE_AC_NAME_W_PRIORITY 5
836 #define TYPE_AC_TIMESTAMP 6
837 #define TYPE_ADD_MAC_ACL_ENTRY 7
838 #define TYPE_ADD_STATION 8
839 #define TYPE_RESERVED_9 9
840 #define TYPE_CAPWAP_CONTROL_IPV4_ADDRESS 10
841 #define TYPE_CAPWAP_CONTROL_IPV6_ADDRESS 11
842 #define TYPE_CAPWAP_TIMERS 12
843 #define TYPE_DATA_TRANSFER_DATA 13
844 #define TYPE_DATA_TRANSFER_MODE 14
845 #define TYPE_DESCRYPTION_ERROR_REPORT 15
846 #define TYPE_DECRYPTION_ERROR_REPORT_PERIOD 16
847 #define TYPE_DELETE_MAC_ENTRY 17
848 #define TYPE_DELETE_STATION 18
849 #define TYPE_RESERVED_19 19
850 #define TYPE_DISCOVERY_TYPE 20
851 #define TYPE_DUPLICATE_IPV4_ADDRESS 21
852 #define TYPE_DUPLICATE_IPV6_ADDRESS 22
853 #define TYPE_IDLE_TIMEOUT 23
854 #define TYPE_IMAGE_DATA 24
855 #define TYPE_IMAGE_IDENTIFIER 25
856 #define TYPE_IMAGE_INFORMATION 26
857 #define TYPE_INITIATE_DOWNLOAD 27
858 #define TYPE_LOCATION_DATA 28
859 #define TYPE_MAXIMUM_MESSAGE_LENGTH 29
860 #define TYPE_CAPWAP_LOCAL_IPV4_ADDRESS 30
861 #define TYPE_RADIO_ADMINISTRATIVE_STATE 31
862 #define TYPE_RADIO_OPERATIONAL_STATE 32
863 #define TYPE_RESULT_CODE 33
864 #define TYPE_RETURNED_MESSAGE_ELEMENT 34
865 #define TYPE_SESSION_ID 35
866 #define TYPE_STATISTICS_TIMER 36
867 #define TYPE_VENDOR_SPECIFIC_PAYLOAD 37
868 #define TYPE_WTP_BOARD_DATA 38
869 #define TYPE_WTP_DESCRIPTOR 39
870 #define TYPE_WTP_FALLBACK 40
871 #define TYPE_WTP_FRAME_TUNNEL_MODE 41
872 #define TYPE_RESERVED_42 42
873 #define TYPE_RESERVED_43 43
874 #define TYPE_WTP_MAC_TYPE 44
875 #define TYPE_WTP_NAME 45
876 #define TYPE_RESERVED_46 46
877 #define TYPE_WTP_RADIO_STATISTICS 47
878 #define TYPE_WTP_REBOOT_STATISTICS 48
879 #define TYPE_WTP_STATIC_IP_ADDRESS_INFORMATION 49
880 #define TYPE_CAPWAP_LOCAL_IPV6_ADDRESS 50
881 #define TYPE_CAPWAP_TRANSPORT_PROTOCOL 51
882 #define TYPE_MTU_DISCOVERY_PADDING 52
883 #define TYPE_ECN_SUPPORT 53
885 #define IEEE80211_ADD_WLAN 1024
886 #define IEEE80211_ANTENNA 1025
887 #define IEEE80211_ASSIGNED_WTP_BSSID 1026
888 #define IEEE80211_DELETE_WLAN 1027
889 #define IEEE80211_DIRECT_SEQUENCE_CONTROL 1028
890 #define IEEE80211_INFORMATION_ELEMENT 1029
891 #define IEEE80211_MAC_OPERATION 1030
892 #define IEEE80211_MIC_COUNTERMEASURES 1031
893 #define IEEE80211_MULTI_DOMAIN_CAPABILITY 1032
894 #define IEEE80211_OFDM_CONTROL 1033
895 #define IEEE80211_RATE_SET 1034
896 #define IEEE80211_RSNA_ERROR_REPORT_FROM_STATION 1035
897 #define IEEE80211_STATION 1036
898 #define IEEE80211_STATION_QOS_PROFILE 1037
899 #define IEEE80211_STATION_SESSION_KEY 1038
900 #define IEEE80211_STATISTICS 1039
901 #define IEEE80211_SUPPORTED_RATES 1040
902 #define IEEE80211_TX_POWER 1041
903 #define IEEE80211_TX_POWER_LEVEL 1042
904 #define IEEE80211_UPDATE_STATION_QOS 1043
905 #define IEEE80211_UPDATE_WLAN 1044
906 #define IEEE80211_WTP_QUALITY_OF_SERVICE 1045
907 #define IEEE80211_WTP_RADIO_CONFIGURATION 1046
908 #define IEEE80211_WTP_RADIO_FAIL_ALARM_INDICATION 1047
909 #define IEEE80211_WTP_RADIO_INFORMATION 1048
910 #define IEEE80211_SUPPORTED_MAC_PROFILES 1060
911 #define IEEE80211_MAC_PROFILE 1061
912 /* ************************************************************************* */
913 /* Message Element Type Value */
914 /* ************************************************************************* */
915 static const value_string message_element_type_vals[] = {
916 { TYPE_AC_DESCRIPTOR, "AC Descriptor" },
917 { TYPE_AC_IPV4_LIST, "AC IPv4 List" },
918 { TYPE_AC_IPV6_LIST, "AC IPv6 List" },
919 { TYPE_AC_NAME, "AC Name" },
920 { TYPE_AC_NAME_W_PRIORITY, "AC Name With Priority" },
921 { TYPE_AC_TIMESTAMP, "AC Timestamp" },
922 { TYPE_ADD_MAC_ACL_ENTRY, "Add MAC ACL Entry" },
923 { TYPE_ADD_STATION, "Add Station" },
924 { TYPE_RESERVED_9, "Reserved" },
925 { TYPE_CAPWAP_CONTROL_IPV4_ADDRESS, "CAPWAP Control IPv4 Address" },
926 { TYPE_CAPWAP_CONTROL_IPV6_ADDRESS, "CAPWAP Control IPv6 Address" },
927 { TYPE_CAPWAP_TIMERS, "CAPWAP Timers" },
928 { TYPE_DATA_TRANSFER_DATA, "Data Transfer Data" },
929 { TYPE_DATA_TRANSFER_MODE, "Data Transfer Mode" },
930 { TYPE_DESCRYPTION_ERROR_REPORT, "Decryption Error Report" },
931 { TYPE_DECRYPTION_ERROR_REPORT_PERIOD, "Decryption Error Report Period" },
932 { TYPE_DELETE_MAC_ENTRY, "Delete MAC ACL Entry" },
933 { TYPE_DELETE_STATION, "Delete Station" },
934 { TYPE_RESERVED_19, "Reserved" },
935 { TYPE_DISCOVERY_TYPE, "Discovery Type" },
936 { TYPE_DUPLICATE_IPV4_ADDRESS, "Duplicate IPv4 Address" },
937 { TYPE_DUPLICATE_IPV6_ADDRESS, "Duplicate IPv6 Address" },
938 { TYPE_IDLE_TIMEOUT, "Idle Timeout" },
939 { TYPE_IMAGE_DATA, "Image Data" },
940 { TYPE_IMAGE_IDENTIFIER, "Image Identifier" },
941 { TYPE_IMAGE_INFORMATION, "Image Information" },
942 { TYPE_INITIATE_DOWNLOAD, "Initiate Download" },
943 { TYPE_LOCATION_DATA, "Location Data" },
944 { TYPE_MAXIMUM_MESSAGE_LENGTH, "Maximum Message Length" },
945 { TYPE_CAPWAP_LOCAL_IPV4_ADDRESS, "CAPWAP Local IPv4 Address" },
946 { TYPE_RADIO_ADMINISTRATIVE_STATE, "Radio Administrative State " },
947 { TYPE_RADIO_OPERATIONAL_STATE, "Radio Operational State" },
948 { TYPE_RESULT_CODE, "Result Code" },
949 { TYPE_RETURNED_MESSAGE_ELEMENT, "Returned Message Element" },
950 { TYPE_SESSION_ID, "Session ID" },
951 { TYPE_STATISTICS_TIMER, "Statistics Timer" },
952 { TYPE_VENDOR_SPECIFIC_PAYLOAD, "Vendor Specific Payload" },
953 { TYPE_WTP_BOARD_DATA, "WTP Board Data" },
954 { TYPE_WTP_DESCRIPTOR, "WTP Descriptor" },
955 { TYPE_WTP_FALLBACK, "WTP Fallback " },
956 { TYPE_WTP_FRAME_TUNNEL_MODE, "WTP Frame Tunnel Mode " },
957 { TYPE_RESERVED_42, "Reserved" },
958 { TYPE_RESERVED_43, "Reserved" },
959 { TYPE_WTP_MAC_TYPE, "WTP MAC Type" },
960 { TYPE_WTP_NAME, "WTP Name" },
961 { TYPE_RESERVED_46, "Unused/Reserved" },
962 { TYPE_WTP_RADIO_STATISTICS, "WTP Radio Statistics" },
963 { TYPE_WTP_REBOOT_STATISTICS, "WTP Reboot Statistics" },
964 { TYPE_WTP_STATIC_IP_ADDRESS_INFORMATION, "WTP Static IP Address Information" },
965 { TYPE_CAPWAP_LOCAL_IPV6_ADDRESS, "CAPWAP Local IPv6 Address" },
966 { TYPE_CAPWAP_TRANSPORT_PROTOCOL, "CAPWAP Transport Protocol" },
967 { TYPE_MTU_DISCOVERY_PADDING, "MTU Discovery Padding" },
968 { TYPE_ECN_SUPPORT, "ECN Support" },
970 { IEEE80211_ADD_WLAN, "IEEE 802.11 Add WLAN" },
971 { IEEE80211_ANTENNA, "IEEE 802.11 Antenna" },
972 { IEEE80211_ASSIGNED_WTP_BSSID, "IEEE 802.11 Assigned WTP BSSID" },
973 { IEEE80211_DELETE_WLAN, "IEEE 802.11 Delete WLAN" },
974 { IEEE80211_DIRECT_SEQUENCE_CONTROL, "IEEE 802.11 Direct Sequence Control" },
975 { IEEE80211_INFORMATION_ELEMENT, "IEEE 802.11 Information Element" },
976 { IEEE80211_MAC_OPERATION, "IEEE 802.11 MAC Operation" },
977 { IEEE80211_MIC_COUNTERMEASURES, "IEEE 802.11 MIC Countermeasures" },
978 { IEEE80211_MULTI_DOMAIN_CAPABILITY, "IEEE 802.11 Multi-Domain Capability" },
979 { IEEE80211_OFDM_CONTROL, "IEEE 802.11 OFDM Control" },
980 { IEEE80211_RATE_SET, "IEEE 802.11 Rate Set" },
981 { IEEE80211_RSNA_ERROR_REPORT_FROM_STATION, "IEEE 802.11 RSNA Error Report From Station" },
982 { IEEE80211_STATION, "IEEE 802.11 Station" },
983 { IEEE80211_STATION_QOS_PROFILE, "IEEE 802.11 Station QoS Profile" },
984 { IEEE80211_STATION_SESSION_KEY, "IEEE 802.11 Station Session Key" },
985 { IEEE80211_STATISTICS, "IEEE 802.11 Statistics" },
986 { IEEE80211_SUPPORTED_RATES, "IEEE 802.11 Supported Rates" },
987 { IEEE80211_TX_POWER, "IEEE 802.11 Tx Power" },
988 { IEEE80211_TX_POWER_LEVEL, "IEEE 802.11 Tx Power Level" },
989 { IEEE80211_UPDATE_STATION_QOS, "IEEE 802.11 Update Station QoS" },
990 { IEEE80211_UPDATE_WLAN, "IEEE 802.11 Update WLAN" },
991 { IEEE80211_WTP_QUALITY_OF_SERVICE, "IEEE 802.11 WTP Quality of Service" },
992 { IEEE80211_WTP_RADIO_CONFIGURATION, "IEEE 802.11 WTP Radio Configuration" },
993 { IEEE80211_WTP_RADIO_FAIL_ALARM_INDICATION, "IEEE 802.11 WTP Radio Fail Alarm Indication" },
994 { IEEE80211_WTP_RADIO_INFORMATION, "IEEE 802.11 WTP Radio Information" },
995 { IEEE80211_SUPPORTED_MAC_PROFILES, "IEEE 802.11 Supported MAC Profiles" },
996 { IEEE80211_MAC_PROFILE, "IEEE 802.11 MAC Profile" },
997 { 0, NULL }
999 /* ************************************************************************* */
1000 /* Discovery Type */
1001 /* ************************************************************************* */
1002 static const value_string discovery_type_vals[] = {
1003 { 0, "Unknown" },
1004 { 1, "Static Configuration" },
1005 { 2, "DHCP" },
1006 { 3, "DNS" },
1007 { 4, "AC Referral" },
1008 { 0, NULL }
1010 /* ************************************************************************* */
1011 /* Radio Administrative State */
1012 /* ************************************************************************* */
1013 static const value_string radio_admin_state_vals[] = {
1014 { 1, "Enabled" },
1015 { 2, "Disabled" },
1016 { 0, NULL }
1018 /* ************************************************************************* */
1019 /* Radio Operational State */
1020 /* ************************************************************************* */
1021 static const value_string radio_op_state_vals[] = {
1022 { 0, "Reserved" },
1023 { 1, "Enabled" },
1024 { 2, "Disabled" },
1025 { 0, NULL }
1027 /* ************************************************************************* */
1028 /* Radio Operational Cause */
1029 /* ************************************************************************* */
1030 static const value_string radio_op_cause_vals[] = {
1031 { 0, "Normal" },
1032 { 1, "Radio Failure" },
1033 { 2, "Software Failure" },
1034 { 3, "Administratively Set" },
1035 { 0, NULL }
1037 /* ************************************************************************* */
1038 /* Result Code */
1039 /* ************************************************************************* */
1040 static const value_string result_code_vals[] = {
1041 { 0 , "Success" },
1042 { 1 , "Failure (AC List Message Element MUST Be Present)" },
1043 { 2 , "Success (NAT Detected)" },
1044 { 3 , "Join Failure (Unspecified)" },
1045 { 4 , "Join Failure (Resource Depletion)" },
1046 { 5 , "Join Failure (Unknown Source)" },
1047 { 6 , "Join Failure (Incorrect Data)" },
1048 { 7 , "Join Failure (Session ID Already in Use)" },
1049 { 8 , "Join Failure (WTP Hardware Not Supported)" },
1050 { 9 , "Join Failure (Binding Not Supported)" },
1051 { 10, "Reset Failure (Unable to Reset)" },
1052 { 11, "Reset Failure (Firmware Write Error)" },
1053 { 12, "Configuration Failure (Unable to Apply Requested Configuration - Service Provided Anyhow)" },
1054 { 13, "Configuration Failure (Unable to Apply Requested Configuration - Service Not Provided)" },
1055 { 14, "Image Data Error (Invalid Checksum)" },
1056 { 15, "Image Data Error (Invalid Data Length)" },
1057 { 16, "Image Data Error (Other Error)" },
1058 { 17, "Image Data Error (Image Already Present)" },
1059 { 18, "Message Unexpected (Invalid in Current State)" },
1060 { 19, "Message Unexpected (Unrecognized Request)" },
1061 { 20, "Failure - Missing Mandatory Message Element" },
1062 { 21, "Failure - Unrecognized Message Element" },
1063 { 22, "Data Transfer Error (No Information to Transfer)" },
1064 { 0 , NULL }
1066 /* ************************************************************************* */
1067 /* Radio MAC Address Field */
1068 /* ************************************************************************* */
1069 static const value_string rmac_field_vals[] = {
1070 { 0, "Reserved" },
1071 { 1, "Supported" },
1072 { 2, "Not Supported" },
1073 { 0, NULL }
1075 /* ************************************************************************* */
1076 /* Board Data Type Value */
1077 /* ************************************************************************* */
1078 #define BOARD_DATA_WTP_MODEL_NUMBER 0
1079 #define BOARD_DATA_WTP_SERIAL_NUMBER 1
1080 #define BOARD_DATA_BOARD_ID 2
1081 #define BOARD_DATA_BOARD_REVISION 3
1082 #define BOARD_DATA_BASE_MAC_ADDRESS 4
1084 static const value_string board_data_type_vals[] = {
1085 { BOARD_DATA_WTP_MODEL_NUMBER, "WTP Model Number" },
1086 { BOARD_DATA_WTP_SERIAL_NUMBER, "WTP Serial Number" },
1087 { BOARD_DATA_BOARD_ID, "Board ID" },
1088 { BOARD_DATA_BOARD_REVISION, "Board Revision" },
1089 { BOARD_DATA_BASE_MAC_ADDRESS, "Base MAC Address" },
1090 { 0, NULL }
1092 /* ************************************************************************* */
1093 /* Descriptor WTP Type Value */
1094 /* ************************************************************************* */
1095 #define WTP_DESCRIPTOR_HARDWARE_VERSION 0
1096 #define WTP_DESCRIPTOR_ACTIVE_SOFTWARE_VERSION 1
1097 #define WTP_DESCRIPTOR_BOOT_VERSION 2
1098 #define WTP_DESCRIPTOR_OTHER_SOFTWARE_VERSION 3
1100 static const value_string wtp_descriptor_type_vals[] = {
1101 { WTP_DESCRIPTOR_HARDWARE_VERSION, "WTP Hardware Version" },
1102 { WTP_DESCRIPTOR_ACTIVE_SOFTWARE_VERSION, "WTP Active Software Version" },
1103 { WTP_DESCRIPTOR_BOOT_VERSION, "WTP Boot Version" },
1104 { WTP_DESCRIPTOR_OTHER_SOFTWARE_VERSION, "WTP Other Software Version" },
1105 { 0, NULL }
1107 /* ************************************************************************* */
1108 /* AC Information Type Value */
1109 /* ************************************************************************* */
1110 #define AC_INFORMATION_HARDWARE_VERSION 4
1111 #define AC_INFORMATION_SOFTWARE_VERSION 5
1113 static const value_string ac_information_type_vals[] = {
1114 { AC_INFORMATION_HARDWARE_VERSION, "AC Hardware Version" },
1115 { AC_INFORMATION_SOFTWARE_VERSION, "AC Software Version" },
1116 { 0, NULL }
1118 /* ************************************************************************* */
1119 /* WTP MAC Type */
1120 /* ************************************************************************* */
1121 static const value_string wtp_mac_vals[] = {
1122 { 0, "Local MAC" },
1123 { 1, "Split MAC" },
1124 { 2, "Both (Local and Split MAC)" },
1125 { 0, NULL }
1127 /* ************************************************************************* */
1128 /* WTP Fallback */
1129 /* ************************************************************************* */
1130 static const value_string wtp_fallback_vals[] = {
1131 { 0, "Reserved" },
1132 { 1, "Enabled" },
1133 { 2, "Disabled" },
1134 { 0, NULL }
1136 /* ************************************************************************* */
1137 /* Last Failure Type */
1138 /* ************************************************************************* */
1139 static const value_string last_failure_type_vals[] = {
1140 { 0, "Not Supported" },
1141 { 1, "AC Initiated" },
1142 { 2, "Link Failure" },
1143 { 3, "Software Failure" },
1144 { 4, "Hardware Failure" },
1145 { 5, "Other Failure" },
1146 { 255, "Unknown (e.g., WTP doesn't keep track of info)" },
1147 { 0, NULL }
1150 /* ************************************************************************* */
1151 /* CAPWAP Transport Protocol */
1152 /* ************************************************************************* */
1153 static const value_string capwap_transport_protocol_vals[] = {
1154 { 1, "UDP-Lite" },
1155 { 2, "UDP" },
1156 { 0, NULL }
1159 /* ************************************************************************* */
1160 /* ECN Support */
1161 /* ************************************************************************* */
1162 static const value_string ecn_support_vals[] = {
1163 { 0, "Limited ECN Support" },
1164 { 1, "Full and Limited ECN Support" },
1165 { 0, NULL }
1168 /* ************************************************************************* */
1169 /* Add/Update WLAN : Key Status */
1170 /* ************************************************************************* */
1171 static const value_string ieee80211_wlan_key_status_vals[] = {
1172 { 0, "SN Information Element means that the WLAN uses per-station encryption keys" },
1173 { 1, "static WEP Key" },
1174 { 2, "Rekeying the GTK with the STA's in the BSS" },
1175 { 3, "Rekeying the GTK and broadcast" },
1176 { 0, NULL }
1179 /* ************************************************************************* */
1180 /* Add WLAN : QoS */
1181 /* ************************************************************************* */
1182 static const value_string ieee80211_add_wlan_qos_vals[] = {
1183 { 0, "Best Effort" },
1184 { 1, "Video" },
1185 { 2, "Voice" },
1186 { 3, "Background" },
1187 { 0, NULL }
1190 /* ************************************************************************* */
1191 /* Add WLAN : Auth Type */
1192 /* ************************************************************************* */
1193 static const value_string ieee80211_add_wlan_auth_type_vals[] = {
1194 { 0, "Open System" },
1195 { 1, "WEP Shared Key" },
1196 { 0, NULL }
1199 /* ************************************************************************* */
1200 /* Add WLAN : MAC Mode */
1201 /* ************************************************************************* */
1202 static const value_string ieee80211_add_wlan_mac_mode_vals[] = {
1203 { 0, "Local MAC" },
1204 { 1, "Split MAC" },
1205 { 0, NULL }
1208 /* ************************************************************************* */
1209 /* Add WLAN : Tunnel Mode */
1210 /* ************************************************************************* */
1211 static const value_string ieee80211_add_wlan_tunnel_mode_vals[] = {
1212 { 0, "Local Bridging" },
1213 { 1, "802.3 Tunnel" },
1214 { 2, "802.11 Tunnel" },
1215 { 0, NULL }
1218 /* ************************************************************************* */
1219 /* IEE8011 Antenna */
1220 /* ************************************************************************* */
1221 static const value_string ieee80211_antenna_diversity_vals[] = {
1222 { 0, "Disabled" },
1223 { 1, "Enabled" },
1224 { 0, NULL }
1227 static const value_string ieee80211_antenna_combiner_vals[] = {
1228 { 1, "Sectorized (Left)" },
1229 { 2, "Sectorized (Right)" },
1230 { 3, "Omni" },
1231 { 4, "Multiple Input/Multiple Output (MIMO)" },
1232 { 0, NULL }
1235 static const value_string ieee80211_antenna_selection_vals[] = {
1236 { 1, "Internal Antenna" },
1237 { 2, "External Antenna" },
1238 { 0, NULL }
1240 /* ************************************************************************* */
1241 /* IEE8011 MAC Profile */
1242 /* ************************************************************************* */
1243 static const value_string ieee80211_mac_profile_vals[] = {
1244 { 0, "Split MAC with WTP encryption" },
1245 { 1, "Split MAC with AC encryption" },
1246 { 0, NULL }
1249 static void
1250 dissect_capwap_data_message_bindings_ieee80211(tvbuff_t *tvb, proto_tree *data_message_binding_tree, unsigned offset, packet_info *pinfo)
1252 proto_item *data_message_binding_item, *ti;
1253 proto_tree *sub_data_message_binding_tree;
1255 if (value_is_in_range(global_capwap_data_udp_ports, pinfo->destport))
1257 uint16_t data_rate;
1258 /* (WTP -> AC) IEEE 802.11 Frame Info */
1259 data_message_binding_item = proto_tree_add_item(data_message_binding_tree, hf_capwap_header_wireless_data_ieee80211_fi, tvb, offset, 4, ENC_NA);
1260 sub_data_message_binding_tree = proto_item_add_subtree(data_message_binding_item, ett_capwap_data_message_bindings_ieee80211);
1262 proto_tree_add_item(sub_data_message_binding_tree, hf_capwap_header_wireless_data_ieee80211_fi_rssi, tvb, offset, 1, ENC_BIG_ENDIAN);
1264 proto_tree_add_item(sub_data_message_binding_tree, hf_capwap_header_wireless_data_ieee80211_fi_snr, tvb, offset+1, 1, ENC_BIG_ENDIAN);
1266 ti = proto_tree_add_item(sub_data_message_binding_tree, hf_capwap_header_wireless_data_ieee80211_fi_data_rate, tvb, offset+2, 2, ENC_BIG_ENDIAN);
1267 data_rate = tvb_get_ntohs(tvb, offset+2);
1268 proto_item_append_text(ti, " (%.1f Mb/s)", ((float)data_rate / 10));
1270 else
1272 /* (AC -> WTP) IEEE 802.11 Destination Wlans */
1273 data_message_binding_item = proto_tree_add_item(data_message_binding_tree, hf_capwap_header_wireless_data_ieee80211_dest_wlan,tvb, offset, 4, ENC_NA);
1274 sub_data_message_binding_tree = proto_item_add_subtree(data_message_binding_item, ett_capwap_data_message_bindings_ieee80211);
1276 proto_tree_add_item(sub_data_message_binding_tree, hf_capwap_header_wireless_data_ieee80211_dw_wlan_id_bitmap, tvb, offset, 2, ENC_BIG_ENDIAN);
1278 proto_tree_add_item(sub_data_message_binding_tree, hf_capwap_header_wireless_data_ieee80211_dw_reserved, tvb, offset+2, 2, ENC_BIG_ENDIAN);
1282 static void
1283 dissect_capwap_encryption_capabilities(tvbuff_t *tvb, proto_tree *encryption_capabilities_tree, unsigned offset)
1285 proto_item *encryption_capabilities_item;
1286 proto_tree *sub_encryption_capabilities_tree;
1288 encryption_capabilities_item = proto_tree_add_item(encryption_capabilities_tree, hf_capwap_msg_element_type_wtp_descriptor_encrypt, tvb, offset, 3, ENC_NA);
1289 sub_encryption_capabilities_tree = proto_item_add_subtree(encryption_capabilities_item, ett_capwap_encryption_capability);
1291 proto_tree_add_item(sub_encryption_capabilities_tree, hf_capwap_msg_element_type_wtp_descriptor_encrypt_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
1293 proto_tree_add_item (sub_encryption_capabilities_tree, hf_capwap_msg_element_type_wtp_descriptor_encrypt_wbid, tvb, offset, 1, ENC_BIG_ENDIAN);
1294 proto_item_append_text(encryption_capabilities_item, ": (WBID %d)",tvb_get_uint8(tvb, offset) & 0x1F);
1297 proto_tree_add_item(sub_encryption_capabilities_tree, hf_capwap_msg_element_type_wtp_descriptor_encrypt_capabilities, tvb, offset+1, 2, ENC_BIG_ENDIAN);
1298 proto_item_append_text(encryption_capabilities_item, " %d",tvb_get_ntohs(tvb, offset+1));
1302 /* Returns the number of bytes consumed by this option. */
1303 static int
1304 dissect_capwap_ac_information(tvbuff_t *tvb, proto_tree *ac_information_type_tree, unsigned offset)
1306 unsigned optlen,ac_information_type = 0;
1307 proto_item *ac_information_type_item;
1308 proto_tree *sub_ac_information_type_tree;
1310 ac_information_type = tvb_get_ntohs(tvb, offset+4);
1311 optlen = tvb_get_ntohs(tvb, offset+6);
1312 ac_information_type_item = proto_tree_add_item(ac_information_type_tree, hf_capwap_msg_element_type_ac_information, tvb, offset, 4+2+2+optlen, ENC_NA );
1314 proto_item_append_text(ac_information_type_item,": (t=%d,l=%d) %s", ac_information_type, optlen, val_to_str(ac_information_type,ac_information_type_vals,"Unknown AC Information Type (%02d)") );
1316 sub_ac_information_type_tree = proto_item_add_subtree(ac_information_type_item, ett_capwap_ac_information);
1318 proto_tree_add_item(sub_ac_information_type_tree, hf_capwap_msg_element_type_ac_information_vendor, tvb, offset, 4, ENC_BIG_ENDIAN);
1320 proto_tree_add_item(sub_ac_information_type_tree, hf_capwap_msg_element_type_ac_information_type, tvb, offset+4, 2, ENC_BIG_ENDIAN);
1322 proto_tree_add_item(sub_ac_information_type_tree, hf_capwap_msg_element_type_ac_information_length, tvb, offset+6, 2, ENC_BIG_ENDIAN);
1324 proto_tree_add_item(sub_ac_information_type_tree, hf_capwap_msg_element_type_ac_information_value, tvb, offset+8, optlen, ENC_NA);
1326 switch (ac_information_type) {
1327 case AC_INFORMATION_HARDWARE_VERSION:
1328 proto_tree_add_item(sub_ac_information_type_tree, hf_capwap_msg_element_type_ac_information_hardware_version, tvb, offset+8, optlen, ENC_ASCII);
1329 break;
1331 case AC_INFORMATION_SOFTWARE_VERSION:
1332 proto_tree_add_item(sub_ac_information_type_tree, hf_capwap_msg_element_type_ac_information_software_version, tvb, offset+8, optlen, ENC_ASCII);
1333 break;
1335 default:
1336 /* No Default Action */
1337 break;
1339 return 4+2+2+optlen;
1342 /* Returns the number of bytes consumed by this option. */
1343 static int
1344 dissect_capwap_wtp_descriptor(tvbuff_t *tvb, proto_tree *wtp_descriptor_type_tree, unsigned offset)
1346 unsigned optlen,wtp_descriptor_type = 0;
1347 proto_item *wtp_descriptor_type_item;
1348 proto_tree *sub_wtp_descriptor_type_tree;
1350 wtp_descriptor_type = tvb_get_ntohs(tvb, offset+4);
1351 optlen = tvb_get_ntohs(tvb, offset+6);
1352 wtp_descriptor_type_item = proto_tree_add_item(wtp_descriptor_type_tree, hf_capwap_msg_element_type_wtp_descriptor, tvb, offset, 4+2+2+optlen, ENC_NA);
1354 proto_item_append_text(wtp_descriptor_type_item, ": (t=%d,l=%d) %s", wtp_descriptor_type, optlen, val_to_str(wtp_descriptor_type,wtp_descriptor_type_vals,"Unknown WTP Descriptor Type (%02d)") );
1356 sub_wtp_descriptor_type_tree = proto_item_add_subtree(wtp_descriptor_type_item, ett_capwap_wtp_descriptor);
1358 proto_tree_add_item(sub_wtp_descriptor_type_tree, hf_capwap_msg_element_type_wtp_descriptor_vendor, tvb, offset, 4, ENC_BIG_ENDIAN);
1360 proto_tree_add_item(sub_wtp_descriptor_type_tree, hf_capwap_msg_element_type_wtp_descriptor_type, tvb, offset+4, 2, ENC_BIG_ENDIAN);
1362 proto_tree_add_item(sub_wtp_descriptor_type_tree, hf_capwap_msg_element_type_wtp_descriptor_length, tvb, offset+6, 2, ENC_BIG_ENDIAN);
1364 proto_tree_add_item(sub_wtp_descriptor_type_tree, hf_capwap_msg_element_type_wtp_descriptor_value, tvb, offset+8, optlen, ENC_NA);
1366 switch (wtp_descriptor_type) {
1367 case WTP_DESCRIPTOR_HARDWARE_VERSION:
1368 proto_tree_add_item(sub_wtp_descriptor_type_tree, hf_capwap_msg_element_type_wtp_descriptor_hardware_version, tvb, offset+8, optlen, ENC_ASCII);
1369 break;
1371 case WTP_DESCRIPTOR_ACTIVE_SOFTWARE_VERSION:
1372 proto_tree_add_item(sub_wtp_descriptor_type_tree, hf_capwap_msg_element_type_wtp_descriptor_active_software_version, tvb, offset+8, optlen, ENC_ASCII);
1373 break;
1375 case WTP_DESCRIPTOR_BOOT_VERSION:
1376 proto_tree_add_item(sub_wtp_descriptor_type_tree, hf_capwap_msg_element_type_wtp_descriptor_boot_version, tvb, offset+8, optlen, ENC_ASCII);
1377 break;
1379 case WTP_DESCRIPTOR_OTHER_SOFTWARE_VERSION:
1380 proto_tree_add_item(sub_wtp_descriptor_type_tree, hf_capwap_msg_element_type_wtp_descriptor_other_software_version, tvb, offset+8, optlen, ENC_ASCII);
1381 break;
1383 default:
1384 /* No Default Action */
1385 break;
1388 return 4+2+2+optlen;
1391 /* Returns the number of bytes consumed by this option. */
1392 static int
1393 dissect_capwap_board_data(tvbuff_t *tvb, proto_tree *board_data_type_tree, unsigned offset)
1395 unsigned optlen,board_data_type = 0;
1396 proto_item *board_data_type_item;
1397 proto_tree *sub_board_data_type_tree;
1399 board_data_type = tvb_get_ntohs(tvb, offset);
1400 optlen = tvb_get_ntohs(tvb, offset+2);
1401 board_data_type_item = proto_tree_add_item(board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data, tvb, offset, 2+2+optlen, ENC_NA );
1403 proto_item_append_text(board_data_type_item, ": (t=%d,l=%d) %s", board_data_type, optlen, val_to_str(board_data_type,board_data_type_vals,"Unknown Board Data Type (%02d)") );
1405 sub_board_data_type_tree = proto_item_add_subtree(board_data_type_item, ett_capwap_board_data);
1407 proto_tree_add_item(sub_board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data_type, tvb, offset, 2, ENC_BIG_ENDIAN);
1409 proto_tree_add_item(sub_board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data_length, tvb, offset+2, 2, ENC_BIG_ENDIAN);
1411 proto_tree_add_item(sub_board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data_value, tvb, offset+4, optlen, ENC_NA);
1412 switch (board_data_type) {
1413 case BOARD_DATA_WTP_MODEL_NUMBER:
1414 proto_tree_add_item(sub_board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data_wtp_model_number, tvb, offset+4, optlen, ENC_ASCII);
1415 break;
1417 case BOARD_DATA_WTP_SERIAL_NUMBER:
1418 proto_tree_add_item(sub_board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data_wtp_serial_number, tvb, offset+4, optlen, ENC_ASCII);
1419 break;
1421 case BOARD_DATA_BOARD_ID:
1422 proto_tree_add_item(sub_board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data_wtp_board_id, tvb, offset+4, optlen, ENC_ASCII);
1423 break;
1425 case BOARD_DATA_BOARD_REVISION:
1426 proto_tree_add_item(sub_board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data_wtp_board_revision, tvb, offset+4, optlen, ENC_ASCII);
1427 break;
1429 case BOARD_DATA_BASE_MAC_ADDRESS:
1430 proto_tree_add_item(sub_board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data_base_mac_address, tvb, offset+4, 6, ENC_NA);
1431 break;
1433 default:
1434 /* No Default Action */
1435 break;
1438 return 2+2+optlen;
1441 /* From FortiAP/WiFI 5.2.0
1445 #define VSP_FORTINET_AP_SCAN 16
1446 #define VSP_FORTINET_PASSIVE 24
1447 #define VSP_FORTINET_DAEMON_RST 32
1448 #define VSP_FORTINET_MAC 33
1449 #define VSP_FORTINET_WTP_ALLOW 34
1450 #define VSP_FORTINET_WBH_STA 36
1451 #define VSP_FORTINET_HTCAP 49
1452 #define VSP_FORTINET_MGMT_VAP 50 /* MVAP */
1453 #define VSP_FORTINET_MODE 51
1454 #define VSP_FORTINET_COEXT 52
1455 #define VSP_FORTINET_AMSDU 53
1456 #define VSP_FORTINET_PS_OPT 54
1457 #define VSP_FORTINET_PURE 55
1458 #define VSP_FORTINET_EBP_TAG 56 /* ?? */
1459 #define VSP_FORTINET_TELNET_ENABLE 81
1460 #define VSP_FORTINET_ADMIN_PASSWD 82
1461 #define VSP_FORTINET_REGCODE 83
1462 #define VSP_FORTINET_COUNTRYCODE 84
1463 #define VSP_FORTINET_STA_SCAN 99
1464 #define VSP_FORTINET_FHO 103
1465 #define VSP_FORTINET_APHO 104
1466 #define VSP_FORTINET_STA_LOCATE 106
1467 #define VSP_FORTINET_SPECTRUM_ANALYSIS 108
1468 #define VSP_FORTINET_DARRP_CFG 112
1469 #define VSP_FORTINET_AP_SUPPRESS_LIST 128
1470 #define VSP_FORTINET_WDS 145
1471 #define VSP_FORTINET_VAP_VLAN_TAG 147
1472 #define VSP_FORTINET_VAP_BITMAP 148
1473 #define VSP_FORTINET_MCAST_RATE 149
1474 #define VSP_FORTINET_CFG 150
1475 #define VSP_FORTINET_SPLIT_TUN_CFG 151
1476 #define VSP_FORTINET_MGMT_VLAN_TAG 161
1477 #define VSP_FORTINET_VAP_PSK_PASSWD 167
1478 #define VSP_FORTINET_MESH_ETH_BRIDGE_ENABLE 176
1479 #define VSP_FORTINET_MESH_ETH_BRIDGE_TYPE 177
1480 #define VSP_FORTINET_WTP_CAP 192
1481 #define VSP_FORTINET_TXPWR 193
1482 #define VSP_FORTINET_WIDS_ENABLE 209
1484 static const value_string fortinet_element_id_vals[] = {
1485 { VSP_FORTINET_AP_SCAN, "AP Scan" },
1486 { VSP_FORTINET_DAEMON_RST, "Daemon Reset" },
1487 { VSP_FORTINET_MAC, "MAC" },
1488 { VSP_FORTINET_PASSIVE, "Passive" },
1489 { VSP_FORTINET_WTP_ALLOW, "WTP Allow" },
1490 { VSP_FORTINET_WBH_STA, "Mesh WBH STA" },
1491 { VSP_FORTINET_HTCAP, "HT Capabilities" },
1492 { VSP_FORTINET_MGMT_VAP, "Management VAP" },
1493 { VSP_FORTINET_MODE, "Mode" },
1494 { VSP_FORTINET_COEXT, "Coext" },
1495 { VSP_FORTINET_AMSDU, "AMSDU" },
1496 { VSP_FORTINET_PS_OPT, "PS OPT" },
1497 { VSP_FORTINET_PURE, "Pure" },
1498 { VSP_FORTINET_EBP_TAG, "EBP Tag" },
1499 { VSP_FORTINET_TELNET_ENABLE, "Telnet Enable" },
1500 { VSP_FORTINET_ADMIN_PASSWD, "Admin Password" },
1501 { VSP_FORTINET_REGCODE, "Reg Code" },
1502 { VSP_FORTINET_COUNTRYCODE, "Country Code" },
1503 { VSP_FORTINET_STA_SCAN, "STA Scan" },
1504 { VSP_FORTINET_FHO, "FHO" },
1505 { VSP_FORTINET_APHO, "APHO" },
1506 { VSP_FORTINET_STA_LOCATE, "STA Locate" },
1507 { VSP_FORTINET_SPECTRUM_ANALYSIS, "Spectrum Analysis" },
1508 { VSP_FORTINET_DARRP_CFG, "DARRP Configuration" },
1509 { VSP_FORTINET_AP_SUPPRESS_LIST, "AP Suppress List" },
1510 { VSP_FORTINET_WDS, "WDS" },
1511 { VSP_FORTINET_VAP_VLAN_TAG, "VAP Vlan" },
1512 { VSP_FORTINET_VAP_BITMAP, "VAP Bitmap" },
1513 { VSP_FORTINET_MCAST_RATE, "Multicast Rate" },
1514 { VSP_FORTINET_CFG, "Configuration" },
1515 { VSP_FORTINET_SPLIT_TUN_CFG, "Split Tunnel Configuration" },
1516 { VSP_FORTINET_MGMT_VLAN_TAG, "Management Vlan" },
1517 { VSP_FORTINET_VAP_PSK_PASSWD, "VAP PSK Password" },
1518 { VSP_FORTINET_MESH_ETH_BRIDGE_ENABLE, "Mesh Eth Bridge Enable" },
1519 { VSP_FORTINET_MESH_ETH_BRIDGE_TYPE, "Mesh Eth Bridge Type" },
1520 { VSP_FORTINET_WTP_CAP, "WTP Capabilities" },
1521 { VSP_FORTINET_TXPWR, "Tx Power" },
1522 { VSP_FORTINET_WIDS_ENABLE, "WIDS Enable" },
1523 { 0, NULL }
1527 static int
1528 dissect_capwap_message_element_vendor_fortinet_type(tvbuff_t *tvb, proto_tree *sub_msg_element_type_tree, unsigned offset, packet_info *pinfo, unsigned optlen, proto_item *msg_element_type_item)
1530 unsigned element_id, i;
1532 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_element_id, tvb, offset, 2, ENC_BIG_ENDIAN);
1533 element_id = tvb_get_ntohs(tvb, offset);
1534 proto_item_append_text(msg_element_type_item, ": Fortinet %s", val_to_str(element_id, fortinet_element_id_vals,"Unknown Vendor Specific Element Type (%02d)") );
1535 offset += 2;
1537 /* Remove length and element id to optlen */
1538 optlen -= 6;
1539 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_value, tvb, offset, optlen, ENC_NA);
1541 switch(element_id){
1542 case VSP_FORTINET_AP_SCAN: /* 16 */
1543 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ap_scan_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1544 offset += 1;
1545 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ap_scan_bgscan_intv, tvb, offset, 2, ENC_BIG_ENDIAN);
1546 offset += 2;
1547 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ap_scan_bgscan_idle, tvb, offset, 3, ENC_BIG_ENDIAN);
1548 offset += 3;
1549 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ap_scan_bgscan_rpt_intv, tvb, offset, 2, ENC_BIG_ENDIAN);
1550 offset += 2;
1551 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ap_scan_fgscan_rpt_intv, tvb, offset, 2, ENC_BIG_ENDIAN);
1552 offset += 2;
1553 break;
1554 case VSP_FORTINET_PASSIVE: /* 24 */
1555 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_passive_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1556 offset += 1;
1557 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_passive, tvb, offset, 1, ENC_BIG_ENDIAN);
1558 offset += 1;
1559 break;
1560 case VSP_FORTINET_DAEMON_RST: /* 32 */
1561 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_daemon_rst, tvb, offset, 1, ENC_BIG_ENDIAN);
1562 offset += 1;
1563 break;
1564 case VSP_FORTINET_MAC:{ /* 33 */
1565 unsigned mac_length;
1566 proto_item *ti;
1567 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mac_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1568 offset += 1;
1569 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mac_wid, tvb, offset, 1, ENC_BIG_ENDIAN);
1570 offset += 1;
1571 ti =proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mac_len, tvb, offset, 1, ENC_BIG_ENDIAN);
1572 mac_length = tvb_get_uint8(tvb, offset);
1573 offset += 1;
1574 if(mac_length %6 != 0)
1576 expert_add_info(pinfo, ti, &ei_capwap_fortinet_mac_len );
1577 break;
1579 for(i = 0; i < mac_length/6; i++){
1580 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mac, tvb, offset, 6, ENC_NA);
1581 offset += 6;
1584 break;
1585 case VSP_FORTINET_WTP_ALLOW: /* 34 */
1586 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wtp_allow_sn, tvb, offset, optlen-1, ENC_ASCII);
1587 offset += optlen - 1;
1588 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wtp_allow_allow, tvb, offset, 1, ENC_BIG_ENDIAN);
1589 offset += 1;
1590 break;
1591 case VSP_FORTINET_WBH_STA:{ /* 36 */
1592 unsigned mac_length;
1593 proto_item *ti;
1595 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wbh_sta_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1596 offset += 1;
1597 ti = proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wbh_sta_len, tvb, offset, 1, ENC_BIG_ENDIAN);
1598 mac_length = tvb_get_uint8(tvb, offset);
1599 offset += 1;
1600 if(mac_length %6 != 0)
1602 expert_add_info(pinfo, ti, &ei_capwap_fortinet_mac_len );
1603 break;
1605 for(i = 0; i < mac_length/6; i++){
1606 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wbh_sta_mac, tvb, offset, 6, ENC_NA);
1607 offset += 6;
1609 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wbh_sta_bssid, tvb, offset, 6, ENC_NA);
1610 offset += 6;
1611 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wbh_sta_mhc, tvb, offset, 1, ENC_BIG_ENDIAN);
1612 offset += 1;
1614 break;
1615 case VSP_FORTINET_HTCAP: /* 49 */
1616 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_htcap_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1617 offset += 1;
1618 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_htcap_mcs, tvb, offset, 1, ENC_BIG_ENDIAN);
1619 offset += 1;
1620 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_htcap_gi, tvb, offset, 1, ENC_BIG_ENDIAN);
1621 offset += 1;
1622 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_htcap_bw, tvb, offset, 1, ENC_BIG_ENDIAN);
1623 offset += 1;
1624 break;
1625 case VSP_FORTINET_MGMT_VAP:{ /* 50 */
1626 uint16_t sn_length;
1627 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mvap_sn_length, tvb, offset, 2, ENC_NA);
1628 sn_length = tvb_get_ntohs(tvb, offset);
1629 offset += 2;
1630 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mvap_sn, tvb, offset, sn_length, ENC_ASCII);
1631 offset += sn_length;
1632 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mvap_unknown, tvb, offset, 4, ENC_BIG_ENDIAN);
1633 offset += 4;
1634 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mvap_unknown, tvb, offset, 4, ENC_BIG_ENDIAN);
1635 offset += 4;
1636 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mvap_age, tvb, offset, 4, ENC_BIG_ENDIAN);
1637 offset += 4;
1638 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mvap_period, tvb, offset, 4, ENC_BIG_ENDIAN);
1639 offset += 4;
1640 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mvap_vfid, tvb, offset, 4, ENC_BIG_ENDIAN);
1641 offset += 4;
1642 break;
1644 case VSP_FORTINET_MODE: /* 51 */
1645 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mode_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1646 offset += 1;
1647 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
1648 offset += 1;
1649 break;
1650 case VSP_FORTINET_COEXT: /* 52 */
1651 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_coext_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1652 offset += 1;
1653 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_coext, tvb, offset, 1, ENC_BIG_ENDIAN);
1654 offset += 1;
1655 break;
1656 case VSP_FORTINET_AMSDU: /* 53 */
1657 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_amsdu_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1658 offset += 1;
1659 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_amsdu, tvb, offset, 1, ENC_BIG_ENDIAN);
1660 offset += 1;
1661 break;
1662 case VSP_FORTINET_PS_OPT: /* 54 */
1663 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ps_opt_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1664 offset += 1;
1665 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ps_opt, tvb, offset, 1, ENC_BIG_ENDIAN);
1666 offset += 1;
1667 break;
1668 case VSP_FORTINET_PURE: /* 55 */
1669 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_pure_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1670 offset += 1;
1671 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_pure, tvb, offset, 1, ENC_BIG_ENDIAN);
1672 offset += 1;
1673 break;
1674 case VSP_FORTINET_EBP_TAG: /* 56 */
1675 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ebptag_ebp, tvb, offset, 1, ENC_BIG_ENDIAN);
1676 offset += 1;
1677 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ebptag_tag, tvb, offset, 6, ENC_NA);
1678 offset += 6;
1679 break;
1680 case VSP_FORTINET_TELNET_ENABLE: /* 81 */
1681 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_telnet_enable, tvb, offset, 4, ENC_BIG_ENDIAN);
1682 offset += 4;
1683 break;
1684 case VSP_FORTINET_ADMIN_PASSWD: /* 82 */
1685 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_admin_passwd, tvb, offset, optlen, ENC_ASCII);
1686 offset += optlen;
1687 break;
1688 case VSP_FORTINET_REGCODE: /* 83 */
1689 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_regcode, tvb, offset, 3, ENC_ASCII);
1690 offset += 3;
1691 break;
1692 case VSP_FORTINET_COUNTRYCODE: /* 84 */
1693 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_countrycode_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1694 offset += 1;
1695 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_countrycode_code, tvb, offset, 2, ENC_BIG_ENDIAN);
1696 offset += 2;
1697 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_countrycode_string, tvb, offset, 3, ENC_ASCII);
1698 offset += 3;
1699 break;
1700 case VSP_FORTINET_STA_SCAN: /* 99 */
1701 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_sta_scan_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1702 offset += 1;
1703 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_sta_scan, tvb, offset, 2, ENC_BIG_ENDIAN);
1704 offset += 2;
1705 break;
1706 case VSP_FORTINET_FHO: /* 103 */
1707 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_fho_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1708 offset += 1;
1709 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_fho, tvb, offset, 1, ENC_BIG_ENDIAN);
1710 offset += 1;
1711 break;
1712 case VSP_FORTINET_APHO: /* 104 */
1713 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_apho_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1714 offset += 1;
1715 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_apho, tvb, offset, 1, ENC_BIG_ENDIAN);
1716 offset += 1;
1717 break;
1718 case VSP_FORTINET_STA_LOCATE: /* 106 */
1719 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_sta_locate_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1720 offset += 1;
1721 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_sta_locate_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
1722 offset += 1;
1723 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_sta_locate_interval, tvb, offset, 2, ENC_BIG_ENDIAN);
1724 offset += 2;
1725 break;
1726 case VSP_FORTINET_SPECTRUM_ANALYSIS: /* 108 */
1727 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_sa_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1728 offset += 1;
1729 optlen -= 1;
1730 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_sa_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
1731 offset += 1;
1732 optlen -= 1;
1733 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_sa_ssid, tvb, offset, optlen, ENC_ASCII);
1734 offset += optlen;
1735 break;
1736 case VSP_FORTINET_DARRP_CFG: /* 112 */
1737 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_darrp_cfg_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1738 offset += 1;
1739 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_darrp_cfg_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
1740 offset += 1;
1741 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_darrp_cfg_interval, tvb, offset, 1, ENC_BIG_ENDIAN);
1742 offset += 1;
1743 break;
1744 case VSP_FORTINET_AP_SUPPRESS_LIST: /* 128 */
1745 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ap_suppress_list_ver, tvb, offset, 1, ENC_BIG_ENDIAN);
1746 offset += 1;
1747 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ap_suppress_list_op, tvb, offset, 1, ENC_BIG_ENDIAN);
1748 offset += 1;
1749 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ap_suppress_list_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1750 offset += 1;
1751 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_ap_suppress_list_len, tvb, offset, 1, ENC_BIG_ENDIAN);
1752 offset += 1;
1753 break;
1754 case VSP_FORTINET_WDS: /* 145 */
1755 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wds_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1756 offset += 1;
1757 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wds_wid, tvb, offset, 1, ENC_BIG_ENDIAN);
1758 offset += 1;
1759 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wds_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
1760 offset += 1;
1761 break;
1762 case VSP_FORTINET_VAP_VLAN_TAG: /* 147 */
1763 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_vap_vlan_tag_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1764 offset += 1;
1765 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_vap_vlan_tag_wid, tvb, offset, 1, ENC_BIG_ENDIAN);
1766 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_vap_vlan_tag, tvb, offset, 2, ENC_BIG_ENDIAN);
1767 offset += 2;
1768 break;
1769 case VSP_FORTINET_VAP_BITMAP: /* 148 */
1770 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_vap_bitmap_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1771 offset += 1;
1772 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_vap_bitmap, tvb, offset, 2, ENC_BIG_ENDIAN);
1773 offset += 2;
1774 break;
1775 case VSP_FORTINET_MCAST_RATE: /* 149 */
1776 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mcast_rate_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1777 offset += 1;
1778 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mcast_rate_wid, tvb, offset, 1, ENC_BIG_ENDIAN);
1779 offset += 1;
1780 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mcast_rate, tvb, offset, 4, ENC_BIG_ENDIAN);
1781 offset += 4;
1782 break;
1783 case VSP_FORTINET_CFG: /* 150 */
1784 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_cfg_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1785 offset += 1;
1786 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_cfg_wid, tvb, offset, 1, ENC_BIG_ENDIAN);
1787 offset += 1;
1788 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_cfg_ip, tvb, offset, 4, ENC_BIG_ENDIAN);
1789 offset += 4;
1790 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_cfg_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
1791 offset += 4;
1792 break;
1793 case VSP_FORTINET_SPLIT_TUN_CFG: /* 151 */
1794 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_split_tun_cfg_enable_local_subnet, tvb, offset, 1, ENC_BIG_ENDIAN);
1795 offset += 1;
1796 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_split_tun_cfg_cnt, tvb, offset, 1, ENC_BIG_ENDIAN);
1797 offset += 1;
1798 break;
1799 case VSP_FORTINET_MGMT_VLAN_TAG: /* 161 */
1800 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mgmt_vlan_id, tvb, offset, 2, ENC_BIG_ENDIAN);
1801 offset += 2;
1802 break;
1803 case VSP_FORTINET_VAP_PSK_PASSWD: /* 167 */
1804 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_vap_psk_passwd_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1805 offset += 1;
1806 optlen -= 1;
1807 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_vap_psk_passwd_wid, tvb, offset, 1, ENC_BIG_ENDIAN);
1808 offset += 1;
1809 optlen -= 1;
1810 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_vap_psk_passwd_key, tvb, offset, optlen, ENC_ASCII);
1811 offset += optlen;
1812 break;
1813 case VSP_FORTINET_MESH_ETH_BRIDGE_ENABLE: /* 176 */
1814 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mesh_eth_bridge_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
1815 offset += 1;
1816 break;
1817 case VSP_FORTINET_MESH_ETH_BRIDGE_TYPE: /* 177 */
1818 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mesh_eth_bridge_type, tvb, offset, 2, ENC_BIG_ENDIAN);
1819 offset += 2;
1820 break;
1821 case VSP_FORTINET_WTP_CAP: /* 192 */
1822 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wtp_cap, tvb, offset, optlen, ENC_NA);
1823 offset += optlen;
1824 break;
1825 case VSP_FORTINET_TXPWR: /* 193 */
1826 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_txpwr_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1827 offset += 1;
1828 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_txpwr, tvb, offset, 2, ENC_NA);
1829 offset += 2;
1830 break;
1831 case VSP_FORTINET_WIDS_ENABLE: /* 209 */
1832 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wids_enable_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1833 offset += 1;
1834 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wids_enable, tvb, offset, 4, ENC_BIG_ENDIAN);
1835 offset += 4;
1836 break;
1837 case 146: /* VAP (ak Virtual AP) stuff, there is Radio ID and Wlan ID to start... */
1838 case 152:
1839 case 153:
1840 case 163:
1841 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_unknown_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1842 offset += 1;
1843 optlen -= 1;
1844 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_unknown_wid, tvb, offset, 1, ENC_BIG_ENDIAN);
1845 offset += 1;
1846 optlen -= 1;
1847 expert_add_info_format(pinfo, msg_element_type_item, &ei_capwap_message_element_fortinet_type,
1848 "Dissector for CAPWAP Vendor Specific (Fortinet) Message Element"
1849 " (%d) type not implemented (VAP Stuff..)", element_id);
1850 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_unknown, tvb, offset, optlen, ENC_NA);
1851 offset += optlen;
1852 break;
1854 case 65: /* Radio stuff, there is Radio ID to start... */
1855 case 170:
1856 case 171:
1857 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_unknown_rid, tvb, offset, 1, ENC_BIG_ENDIAN);
1858 offset += 1;
1859 optlen -= 1;
1860 expert_add_info_format(pinfo, msg_element_type_item, &ei_capwap_message_element_fortinet_type,
1861 "Dissector for CAPWAP Vendor Specific (Fortinet) Message Element"
1862 " (%d) type not implemented (VAP Stuff..)", element_id);
1863 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_unknown, tvb, offset, optlen, ENC_NA);
1864 offset += optlen;
1865 break;
1866 default:
1867 expert_add_info_format(pinfo, msg_element_type_item, &ei_capwap_message_element_fortinet_type,
1868 "Dissector for CAPWAP Vendor Specific (Fortinet) Message Element"
1869 " (%d) type not implemented", element_id);
1870 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_unknown, tvb, offset, optlen, ENC_NA);
1871 offset += optlen;
1872 break;
1875 return offset;
1878 /* From Cisco WLC with help of actube (http://www.github.com/7u83/actube */
1880 /* Copy and rename (CW_ => VSP_ for actube/capwap/capwap_cisco.h (revision g387cc5da) */
1881 #define VSP_CISCO_AP_NAME 5
1882 #define VSP_CISCO_MWAR 6
1883 #define VSP_CISCO_AP_TIMESYNC 151
1885 #define VSP_CISCO_MWAR_ADDR 2
1886 #define VSP_CISCO_RAD 3
1887 #define VSP_CISCO_RAD_SLOT 4
1888 #define VSP_CISCO_RAD_NAME 5
1889 #define VSP_CISCO_MWAR 6
1890 #define VSP_CISCO_ADD_WLAN 7
1891 #define VSP_CISCO_WTP_RADIO_CFG 8
1893 #define VSP_CISCO_MULTI_DOMAIN_CAPAB 10
1894 #define VSP_CISCO_MAC_OPERATION 11
1896 #define VSP_CISCO_TX_POWER 12
1897 #define VSP_CISCO_TX_POWER_LEVELS 13
1898 #define VSP_CISCO_DIRECT_SEQUENCE_CONTROL 14
1899 #define VSP_CISCO_SUPPORTED_RATES 16
1901 #define VSP_CISCO_80211_DELETE_WLAN 28
1903 #define VSP_CISCO_MWAR_NAME 31
1905 #define VSP_CISCO_LOCATION_DATA 35
1906 #define VSP_CISCO_STATISTICS_TIMER 37
1908 #define VSP_CISCO_ANTENNA_PAYLOAD 41
1910 #define VSP_CISCO_CERTIFICATE 44
1911 #define VSP_CISCO_WTP_BOARD_DATA 50
1912 #define VSP_CISCO_AP_MODE_AND_TYPE 54
1913 #define VSP_CISCO_AP_QOS 57
1914 #define VSP_CISCO_AC_IPV4_LIST 59
1916 #define VSP_CISCO_AP_STATIC_IP_ADDR 83
1917 #define VSP_CISCO_SIG_PAYLOAD 84
1918 #define VSP_CISCO_SIG_TOGGLE 87
1920 #define VSP_CISCO_AC_NAME_WITH_INDEX 91
1921 #define VSP_CISCO_SPAM_DOMAIN_SECRET 96
1923 #define VSP_CISCO_SPAM_VENDOR_SPECIFIC 104
1925 #define VSP_CISCO_AP_UPTIME 108
1927 #define VSP_CISCO_AP_GROUP_NAME 123
1929 #define VSP_CISCO_AP_LED_STATE_CONFIG 125
1930 #define VSP_CISCO_AP_REGULATORY_DOMAIN 126
1931 #define VSP_CISCO_AP_MODEL 127
1932 #define VSP_CISCO_AP_RESET_BUTTON_STATE 128
1934 #define VSP_CISCO_LWAPP_CHANNEL_POWER 134
1935 #define VSP_CISCO_AP_PRE_STD_SWITCH_CONFIG 137
1936 #define VSP_CISCO_AP_POWER_INJECTOR_CONFIG 138
1938 #define VSP_CISCO_AP_MINIOS_VERSION 149
1939 #define VSP_CISCO_AP_TIMESYNC 151
1940 #define VSP_CISCO_AP_DOMAIN 169
1941 #define VSP_CISCO_AP_DNS 170
1943 #define VSP_CISCO_AP_BACKUP_SOFTWARE_VERSION 183
1944 #define VSP_CISCO_BOARD_DATA_OPTIONS 207
1945 #define VSP_CISCO_MWAR_TYPE 208
1946 #define VSP_CISCO_80211_ASSOC_LIMIT 213
1947 #define VSP_CISCO_TLV_PAYLOAD 215
1948 #define VSP_CISCO_AP_LOG_FACILITY 224
1949 #define VSP_CISCO_AP_RETRANSMIT_PARAM 240
1950 #define VSP_CISCO_AP_VENUE_SETTINGS 249
1953 static const value_string cisco_element_id_vals[] = {
1954 { VSP_CISCO_MWAR_ADDR, "MWAR Address" },
1955 { VSP_CISCO_RAD, "RAD" },
1956 { VSP_CISCO_RAD_SLOT, "RAD Slot" },
1957 { VSP_CISCO_RAD_NAME, "RAD (AP) Name" },
1958 { VSP_CISCO_MWAR, "MWAR" },
1959 { VSP_CISCO_ADD_WLAN, "Add WLAN" },
1960 { VSP_CISCO_WTP_RADIO_CFG, "WTP Radio Configuration" },
1962 { VSP_CISCO_MULTI_DOMAIN_CAPAB, "Multi Domain Capability" },
1963 { VSP_CISCO_MAC_OPERATION, "MAC Operation" },
1965 { VSP_CISCO_TX_POWER, "TX Power" },
1966 { VSP_CISCO_TX_POWER_LEVELS, "TX Power Levels" },
1967 { VSP_CISCO_DIRECT_SEQUENCE_CONTROL, "Direct Sequence Control" },
1968 { VSP_CISCO_SUPPORTED_RATES, "Supported Rates" },
1970 { VSP_CISCO_80211_DELETE_WLAN, "802.11 Delete WLAN" },
1972 { VSP_CISCO_MWAR_NAME, "MWAR NAME" },
1974 { VSP_CISCO_LOCATION_DATA, "Location Data" },
1975 { VSP_CISCO_STATISTICS_TIMER, "Statistics Timer" },
1977 { VSP_CISCO_ANTENNA_PAYLOAD, "Antenna Payload" },
1979 { VSP_CISCO_CERTIFICATE, "Certificate" },
1980 { VSP_CISCO_WTP_BOARD_DATA, "WTP Board Data" },
1981 { VSP_CISCO_AP_MODE_AND_TYPE, "AP Mode and Type" },
1983 { VSP_CISCO_AP_QOS, "AP QoS"},
1984 { VSP_CISCO_AC_IPV4_LIST, "AC IPv4 List" },
1986 { VSP_CISCO_AP_STATIC_IP_ADDR, "AP Static IP Addr" },
1987 { VSP_CISCO_SIG_PAYLOAD, "SIG Payload" },
1988 { VSP_CISCO_SIG_TOGGLE, "SIG Toggle" },
1990 { VSP_CISCO_AC_NAME_WITH_INDEX, "AC Name with Index" },
1991 { VSP_CISCO_SPAM_DOMAIN_SECRET, "SPAM Domain Secret" },
1993 { VSP_CISCO_SPAM_VENDOR_SPECIFIC, "SPAM Vendor Specific" },
1995 { VSP_CISCO_AP_UPTIME, "AP Uptime" },
1997 { VSP_CISCO_AP_GROUP_NAME, "AP Group Name" },
1998 { VSP_CISCO_AP_MODEL, "AP Model" },
1999 { VSP_CISCO_AP_RESET_BUTTON_STATE, "AP reset button state" },
2001 { VSP_CISCO_AP_LED_STATE_CONFIG, "AP Led State Config" },
2002 { VSP_CISCO_AP_REGULATORY_DOMAIN, "AP Regulatory domain" },
2004 { VSP_CISCO_LWAPP_CHANNEL_POWER, "LWAPP Channel Power" },
2005 { VSP_CISCO_AP_PRE_STD_SWITCH_CONFIG, "AP Pre STD Switch Config" },
2006 { VSP_CISCO_AP_POWER_INJECTOR_CONFIG, "AP Power Injector config" },
2008 { VSP_CISCO_AP_MINIOS_VERSION, "AP MinIOS Version" },
2009 { VSP_CISCO_AP_TIMESYNC, "AP Time Sync" },
2010 { VSP_CISCO_AP_DOMAIN, "AP Domain" },
2011 { VSP_CISCO_AP_DNS, "AP DNS" },
2013 { VSP_CISCO_AP_BACKUP_SOFTWARE_VERSION, "AP Backup software version" },
2014 { VSP_CISCO_BOARD_DATA_OPTIONS, "Board Data Options" },
2015 { VSP_CISCO_MWAR_TYPE, "MWAR Type" },
2016 { VSP_CISCO_80211_ASSOC_LIMIT, "802.11 Assoc Limit" },
2017 { VSP_CISCO_TLV_PAYLOAD, "TLV Payload" },
2018 { VSP_CISCO_AP_LOG_FACILITY, "AP Log Facility" },
2020 { VSP_CISCO_AP_RETRANSMIT_PARAM, "AP Retransmit Param" },
2021 { VSP_CISCO_AP_VENUE_SETTINGS, "AP Venue Settings" },
2022 { 0, NULL }
2025 static const value_string cisco_ap_mode_and_type_mode_vals[] = {
2026 { 0, "Split MAC / Local Mode" },
2027 { 1, "Monitor" },
2028 { 2, "Local MAC / FlexConnect" },
2029 { 3, "Rogue Detector" },
2030 { 4, "Sniffer" },
2031 { 0, NULL }
2035 static int
2036 dissect_capwap_message_element_vendor_cisco_type(tvbuff_t *tvb, proto_tree *sub_msg_element_type_tree, unsigned offset, packet_info *pinfo, unsigned optlen, proto_item *msg_element_type_item)
2038 unsigned element_id;
2040 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_element_id, tvb, offset, 2, ENC_BIG_ENDIAN);
2041 element_id = tvb_get_ntohs(tvb, offset);
2042 proto_item_append_text(msg_element_type_item, ": Cisco %s", val_to_str(element_id, cisco_element_id_vals,"Unknown Vendor Specific Element Type (%02d)") );
2043 offset += 2;
2045 /* Remove length and element id to optlen */
2046 optlen -= 6;
2047 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_value, tvb, offset, optlen, ENC_NA);
2049 switch(element_id){
2050 case VSP_CISCO_MWAR_ADDR: /* MWAR Address (2) */
2051 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2052 offset += 1;
2053 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
2054 offset += 4;
2055 break;
2056 case VSP_CISCO_RAD_NAME: /* RAD (AP) Name (5) */
2057 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_rad_name, tvb, offset, optlen, ENC_ASCII);
2058 offset += optlen;
2059 break;
2060 case VSP_CISCO_MWAR: /* MWAR (6) */
2061 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_type, tvb, offset, 1, ENC_NA);
2062 offset += 1;
2063 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_hardware, tvb, offset, 4, ENC_ASCII);
2064 offset += 4;
2065 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_software, tvb, offset, 4, ENC_ASCII);
2066 offset += 4;
2067 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_active_ms, tvb, offset, 2, ENC_NA);
2068 offset += 2;
2069 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_supported_ms, tvb, offset, 2, ENC_NA);
2070 offset += 2;
2071 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_active_rad, tvb, offset, 2, ENC_NA);
2072 offset += 2;
2073 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_supported_rad, tvb, offset, 2, ENC_NA);
2074 offset += 2;
2075 break;
2076 case VSP_CISCO_AP_MODE_AND_TYPE: /* AP_MODE_AND_TYPE (54) */
2077 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_mode_and_type_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
2078 offset += 1;
2079 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_mode_and_type_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2080 offset += 1;
2081 break;
2082 case VSP_CISCO_AP_STATIC_IP_ADDR: /* AP_MODE_AND_TYPE (83) */
2083 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_static_ip_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
2084 offset += 4;
2085 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_static_ip_netmask, tvb, offset, 4, ENC_BIG_ENDIAN);
2086 offset += 4;
2087 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_static_ip_gateway, tvb, offset, 4, ENC_BIG_ENDIAN);
2088 offset += 4;
2089 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_static_ip_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2090 offset += 1;
2091 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_static_ip_reserved, tvb, offset, 4, ENC_NA);
2092 offset += 4;
2093 break;
2094 case VSP_CISCO_AP_UPTIME: /* AP Uptime (108) */
2095 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_uptime_current, tvb, offset, 4, ENC_BIG_ENDIAN);
2096 offset += 4;
2097 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_uptime_last, tvb, offset, 4, ENC_BIG_ENDIAN);
2098 offset += 4;
2099 break;
2100 case VSP_CISCO_AP_GROUP_NAME: /* AP Group Name (123) */
2101 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_group_name, tvb, offset, optlen, ENC_ASCII);
2102 offset += optlen;
2103 break;
2104 case VSP_CISCO_AP_LED_STATE_CONFIG: /* AP Led State (125) */
2105 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_led_state, tvb, offset, 2, ENC_NA);
2106 offset += 2;
2107 break;
2108 case VSP_CISCO_AP_TIMESYNC: /* AP Timesync (151) */
2109 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_timesync, tvb, offset, 4, ENC_NA);
2110 offset += 4;
2112 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_timesync_type, tvb, offset, 1, ENC_NA);
2113 offset += 1;
2114 break;
2115 case VSP_CISCO_BOARD_DATA_OPTIONS: /* Board Data Options (207) */
2116 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_board_data_options_ant_type, tvb, offset, 1, ENC_NA);
2117 offset += 1;
2118 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_board_data_options_flex_connect, tvb, offset, 1, ENC_NA);
2119 offset += 1;
2120 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_board_data_options_ap_type, tvb, offset, 1, ENC_NA);
2121 offset += 1;
2122 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_board_data_options_join_priority, tvb, offset, 1, ENC_NA);
2123 offset += 1;
2124 break;
2126 case VSP_CISCO_MWAR_TYPE: /* MWAR_TYPE (208) */
2127 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_type, tvb, offset, 1, ENC_NA);
2128 offset += 1;
2129 break;
2130 default:
2131 expert_add_info_format(pinfo, msg_element_type_item, &ei_capwap_message_element_cisco_type,
2132 "Dissector for CAPWAP Vendor Specific (Cisco) Message Element"
2133 " (%d) type not implemented", element_id);
2134 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_unknown, tvb, offset, optlen, ENC_NA);
2135 offset += optlen;
2136 break;
2139 return offset;
2141 /* Returns the number of bytes consumed by this option. */
2142 static int
2143 dissect_capwap_message_element_type(tvbuff_t *tvb, proto_tree *msg_element_type_tree, unsigned offset, packet_info *pinfo)
2145 unsigned optlen, offset_end, number_encrypt, i, msg_element_type = 0;
2146 proto_item *msg_element_type_item, *msg_element_type_item_flag, *ti_len, *ti_type;
2147 proto_tree *sub_msg_element_type_tree, *sub_msg_element_type_flag_tree;
2149 msg_element_type = tvb_get_ntohs(tvb, offset);
2150 optlen = tvb_get_ntohs(tvb, offset+2);
2151 msg_element_type_item = proto_tree_add_item(msg_element_type_tree, hf_capwap_msg_element, tvb, offset, 2+2+optlen, ENC_NA );
2153 proto_item_append_text(msg_element_type_item, ": (t=%d,l=%d) %s", msg_element_type, optlen, val_to_str(msg_element_type,message_element_type_vals,"Unknown Message Element Type (%02d)") );
2155 sub_msg_element_type_tree = proto_item_add_subtree(msg_element_type_item, ett_capwap_message_element_type);
2157 ti_type = proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type, tvb, offset, 2, ENC_BIG_ENDIAN);
2159 ti_len = proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_length, tvb, offset+2, 2, ENC_BIG_ENDIAN);
2161 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_value, tvb, offset+4, optlen, ENC_NA);
2163 switch (msg_element_type) {
2164 case TYPE_AC_DESCRIPTOR: /* AC Descriptor (1) */
2165 if (optlen < 12) {
2166 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2167 "AC Descriptor length %u wrong, must be >= 12", optlen);
2168 break;
2170 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_descriptor_stations, tvb, offset+4, 2, ENC_BIG_ENDIAN);
2171 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_descriptor_limit, tvb, offset+6, 2, ENC_BIG_ENDIAN);
2172 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_descriptor_active_wtp, tvb, offset+8, 2, ENC_BIG_ENDIAN);
2173 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_descriptor_max_wtp, tvb, offset+10, 2, ENC_BIG_ENDIAN);
2175 /* AC Descriptor Security Flags... */
2176 proto_tree_add_bitmask_with_flags(sub_msg_element_type_tree, tvb, offset+12,
2177 hf_capwap_msg_element_type_ac_descriptor_security, ett_capwap_ac_descriptor_security_flags, capwap_ac_descriptor_security_flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2179 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_descriptor_rmac_field, tvb, offset+13, 1, ENC_BIG_ENDIAN);
2180 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_descriptor_reserved, tvb, offset+14, 1, ENC_BIG_ENDIAN);
2182 /* AC Descriptor DTLS Flags... */
2183 proto_tree_add_bitmask_with_flags(sub_msg_element_type_tree, tvb, offset+15,
2184 hf_capwap_msg_element_type_ac_descriptor_dtls_policy, ett_capwap_ac_descriptor_dtls_flags, capwap_ac_descriptor_dtls_flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2186 offset_end = offset + optlen -4;
2187 offset += 4 + 12;
2188 while (offset < offset_end) {
2189 offset += dissect_capwap_ac_information(tvb, sub_msg_element_type_tree, offset);
2191 break;
2193 case TYPE_AC_IPV4_LIST: /* AC IPv4 List (2) */
2194 if (optlen < 4) {
2195 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2196 "AC IPv4 List length %u wrong, must be >= 4", optlen);
2197 break;
2199 offset += 4;
2201 if (optlen%4 == 0)
2203 for (i = 0; i < optlen/4; i++)
2205 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_ipv4_list, tvb, offset, 4, ENC_BIG_ENDIAN);
2206 offset += 4;
2210 break;
2211 case TYPE_AC_IPV6_LIST: /* AC IPv6 List (3) */
2212 if (optlen < 16) {
2213 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2214 "AC IPv6 List length %u wrong, must be >= 4", optlen);
2215 break;
2217 offset += 4;
2219 if (optlen%16 == 0)
2221 for (i = 0; i < optlen/16; i++)
2223 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_ipv6_list, tvb, offset, 16, ENC_NA);
2224 offset += 16;
2228 break;
2229 case TYPE_AC_NAME: /* AC Name (4) */
2230 if (optlen < 1) {
2231 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2232 "AC Name length %u wrong, must be >= 1", optlen);
2233 break;
2235 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_name, tvb, offset+4, optlen, ENC_ASCII);
2236 break;
2238 case TYPE_AC_NAME_W_PRIORITY: /* AC Name With Priority (5) */
2239 if (optlen < 2) {
2240 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2241 "AC Name with Priority length %u wrong, must be >= 2", optlen);
2242 break;
2244 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_name_with_priority, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2245 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_name, tvb, offset+5, optlen-1, ENC_ASCII);
2246 break;
2248 case TYPE_AC_TIMESTAMP: /* AC Timestamp (6) */
2249 if (optlen != 4) {
2250 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2251 "AC Timestamp length %u wrong, must be = 4", optlen);
2252 break;
2254 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_timestamp, tvb, offset + 4, 4, ENC_TIME_SECS_NTP|ENC_BIG_ENDIAN);
2255 break;
2257 case TYPE_ADD_STATION:{ /* Add Station (8) */
2258 uint8_t maclength;
2259 if (optlen < 8) {
2260 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2261 "Add Station length %u wrong, must be >= 8", optlen);
2262 break;
2264 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_add_station_radio_id, tvb, offset + 4, 1, ENC_BIG_ENDIAN);
2265 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_add_station_length, tvb, offset + 5, 1, ENC_BIG_ENDIAN);
2266 maclength = tvb_get_uint8(tvb, offset+5);
2267 switch(maclength){
2268 case 6:
2269 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_add_station_mac_eui48, tvb, offset+6, maclength, ENC_NA);
2270 break;
2271 case 8:
2272 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_add_station_mac_eui64, tvb, offset+6, maclength, ENC_BIG_ENDIAN);
2273 break;
2274 default:
2275 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_add_station_mac_data, tvb, offset+6, maclength, ENC_NA);
2276 break;
2279 if(optlen -(2 + maclength)) {
2280 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_add_station_vlan_name, tvb, offset+6+maclength, optlen -(2 + maclength), ENC_ASCII);
2283 break;
2285 case TYPE_CAPWAP_CONTROL_IPV4_ADDRESS: /* CAPWAP Control IPv4 Address (10) */
2286 if (optlen != 6) {
2287 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2288 "CAPWAP Control IPv4 Address length %u wrong, must be = 6", optlen);
2289 break;
2291 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_capwap_control_ipv4, tvb, offset+4, 4, ENC_BIG_ENDIAN);
2292 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_capwap_control_wtp_count, tvb, offset+8, 2, ENC_BIG_ENDIAN);
2293 break;
2295 case TYPE_CAPWAP_CONTROL_IPV6_ADDRESS: /* CAPWAP Control IPv6 Address (11) */
2296 if (optlen != 18) {
2297 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2298 "CAPWAP Control IPv6 Address length %u wrong, must be = 18", optlen);
2299 break;
2301 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_capwap_control_ipv6, tvb, offset+4, 16, ENC_NA);
2302 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_capwap_control_wtp_count, tvb, offset+20, 2, ENC_BIG_ENDIAN);
2303 break;
2305 case TYPE_CAPWAP_TIMERS: /* CAPWAP Timers (12) */
2306 if (optlen != 2) {
2307 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2308 "CAPWAP Timers length %u wrong, must be = 2", optlen);
2309 break;
2311 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_capwap_timers_discovery, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2312 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_capwap_timers_echo_request, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2313 break;
2315 case TYPE_DECRYPTION_ERROR_REPORT_PERIOD: /* Decryption Error Report Period (16) */
2316 if (optlen != 3) {
2317 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2318 "Decryption Error Report Period length %u wrong, must be = 3", optlen);
2319 break;
2321 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_decryption_error_report_period_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2322 proto_tree_add_item(sub_msg_element_type_tree,hf_capwap_msg_element_type_decryption_error_report_period_interval, tvb, offset+5, 2, ENC_BIG_ENDIAN);
2323 break;
2325 case TYPE_DELETE_STATION:{ /* Delete Station (18) */
2326 uint8_t maclength;
2327 if (optlen < 8) {
2328 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2329 "Delete Station length %u wrong, must be >= 8", optlen);
2330 break;
2332 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_delete_station_radio_id, tvb, offset + 4, 1, ENC_BIG_ENDIAN);
2333 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_delete_station_length, tvb, offset + 5, 1, ENC_BIG_ENDIAN);
2334 maclength = tvb_get_uint8(tvb, offset+5);
2335 switch(maclength){
2336 case 6:
2337 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_delete_station_mac_eui48, tvb, offset+6, maclength, ENC_NA);
2338 break;
2339 case 8:
2340 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_delete_station_mac_eui64, tvb, offset+6, maclength, ENC_BIG_ENDIAN);
2341 break;
2342 default:
2343 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_delete_station_mac_data, tvb, offset+6, maclength, ENC_NA);
2344 break;
2348 break;
2350 case TYPE_DISCOVERY_TYPE: /* Discovery Type (20) */
2351 if (optlen != 1) {
2352 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2353 "Discovery Type length %u wrong, must be = 1", optlen);
2354 break;
2356 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_discovery_type, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2357 break;
2358 case TYPE_IDLE_TIMEOUT: /* Idle Timeout (23) */
2359 if (optlen != 4) {
2360 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2361 "Idle Timeout length %u wrong, must be = 4", optlen);
2362 break;
2364 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_idle_timeout, tvb, offset+4, 4, ENC_BIG_ENDIAN);
2365 break;
2367 case TYPE_LOCATION_DATA: /* Location Data (28) */
2368 if (optlen < 1) {
2369 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2370 "Location Data length %u wrong, must be >= 1", optlen);
2371 break;
2373 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_location_data, tvb, offset+4, optlen, ENC_ASCII);
2374 break;
2376 case TYPE_MAXIMUM_MESSAGE_LENGTH: /* Maximum Message Length (29) */
2377 if (optlen != 2) {
2378 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2379 "Maximum Message length %u wrong, must be = 2", optlen);
2380 break;
2382 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_maximum_message_length, tvb, offset+4, 2, ENC_BIG_ENDIAN);
2383 break;
2385 case TYPE_CAPWAP_LOCAL_IPV4_ADDRESS: /* CAPWAP Local IPv4 Address (30) */
2386 if (optlen != 4) {
2387 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2388 "CAPWAP Local IPv4 Address length %u wrong, must be = 4", optlen);
2389 break;
2391 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_capwap_local_ipv4_address, tvb, offset+4, 4, ENC_BIG_ENDIAN);
2392 break;
2395 case TYPE_RADIO_ADMINISTRATIVE_STATE: /* Radio Administrative State (31) */
2396 if (optlen != 2) {
2397 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2398 "Radio Administrative State length %u wrong, must be = 2", optlen);
2399 break;
2401 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_radio_admin_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2402 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_radio_admin_state, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2404 break;
2406 case TYPE_RADIO_OPERATIONAL_STATE: /* Radio Operational State (32) */
2407 if (optlen != 3) {
2408 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2409 "Radio Operational State length %u wrong, must be = 3", optlen);
2410 break;
2412 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_radio_op_state_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2413 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_radio_op_state_radio_state, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2414 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_radio_op_state_radio_cause, tvb, offset+6, 1, ENC_BIG_ENDIAN);
2415 break;
2417 case TYPE_RESULT_CODE: /* Result Code (33) */
2418 if (optlen != 4) {
2419 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2420 "Result Code length %u wrong, must be = 4", optlen);
2421 break;
2423 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_result_code, tvb, offset+4, 4, ENC_BIG_ENDIAN);
2425 break;
2427 case TYPE_SESSION_ID: /* Session ID (35) */
2428 if (optlen != 16) {
2429 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2430 "Session ID length %u wrong, must be = 16", optlen);
2431 break;
2433 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_session_id, tvb, offset+4, 16, ENC_NA);
2434 break;
2436 case TYPE_STATISTICS_TIMER: /* Statistics Timer (36) */
2437 if (optlen != 2) {
2438 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2439 "Statistics Timer length %u wrong, must be = 2", optlen);
2440 break;
2442 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_statistics_timer, tvb, offset+4, 2, ENC_BIG_ENDIAN);
2443 break;
2445 case TYPE_VENDOR_SPECIFIC_PAYLOAD:{ /* Vendor Specific Payload (37) */
2446 uint32_t vendor_id;
2447 if (optlen < 7) {
2448 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2449 "Vendor Specific Payload length %u wrong, must be >= 7", optlen);
2450 break;
2452 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_vsp_vendor_identifier, tvb, offset+4, 4, ENC_BIG_ENDIAN);
2453 vendor_id = tvb_get_ntohl(tvb, offset+4);
2454 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_vsp_vendor_element_id, tvb, offset+8, 2, ENC_BIG_ENDIAN);
2455 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_vsp_vendor_data, tvb, offset+10, optlen-6, ENC_NA);
2456 switch(vendor_id){
2457 case VENDOR_FORTINET:
2458 dissect_capwap_message_element_vendor_fortinet_type(tvb, sub_msg_element_type_tree, offset+8, pinfo, optlen, msg_element_type_item);
2459 break;
2460 case VENDOR_CISCO_WIFI:
2461 dissect_capwap_message_element_vendor_cisco_type(tvb, sub_msg_element_type_tree, offset+8, pinfo, optlen, msg_element_type_item);
2462 break;
2463 default:
2464 /* No default... */
2465 break;
2468 break;
2470 case TYPE_WTP_BOARD_DATA: /* WTP Board Data (38) */
2471 if (optlen < 14) {
2472 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2473 "WTP Board Data length %u wrong, must be >= 14", optlen);
2474 break;
2476 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_board_data_vendor, tvb, offset+4, 4, ENC_BIG_ENDIAN);
2477 offset += 8;
2478 offset_end = offset + optlen -4;
2479 while (offset < offset_end) {
2480 offset += dissect_capwap_board_data(tvb, sub_msg_element_type_tree, offset);
2482 break;
2484 case TYPE_WTP_DESCRIPTOR: /* WTP Descriptor (39) */
2485 if (optlen < 33) {
2486 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2487 "WTP Descriptor length %u wrong, must be >= 33", optlen);
2488 break;
2490 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_descriptor_max_radios, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2491 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_descriptor_radio_in_use, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2492 if (global_capwap_draft_8_cisco == 0)
2494 number_encrypt = tvb_get_uint8(tvb,offset+6);
2495 msg_element_type_item_flag = proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_descriptor_number_encrypt, tvb, offset+6, 1, ENC_BIG_ENDIAN);
2496 sub_msg_element_type_flag_tree = proto_item_add_subtree(msg_element_type_item_flag, ett_capwap_encryption_capabilities);
2497 for (i=0; i < number_encrypt; i++) {
2498 dissect_capwap_encryption_capabilities(tvb, sub_msg_element_type_flag_tree, offset+4+3+i*3);
2500 offset_end = offset + optlen -4;
2501 offset += 4 + 3 + number_encrypt * 3;
2503 else
2505 /*in Draft 8, there is only one "encryption_capabilities*/
2506 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_descriptor_encrypt_capabilities, tvb, offset+6, 2, ENC_BIG_ENDIAN);
2507 offset_end = offset + optlen -4;
2508 offset += 6 + 2;
2510 while (offset < offset_end) {
2511 offset += dissect_capwap_wtp_descriptor(tvb, sub_msg_element_type_tree, offset);
2513 break;
2515 case TYPE_WTP_FALLBACK: /* WTP Fallback (40) */
2516 if (optlen != 1) {
2517 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2518 "WTP Fallback length %u wrong, must be = 1", optlen);
2519 break;
2521 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_fallback, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2522 break;
2524 case TYPE_WTP_FRAME_TUNNEL_MODE: /* WTP Frame Tunnel Mode (41) */
2525 if (optlen != 1) {
2526 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2527 "WTP Frame Tunnel Mode length %u wrong, must be = 1", optlen);
2528 break;
2531 proto_tree_add_bitmask_with_flags(sub_msg_element_type_tree, tvb, offset+4,
2532 hf_capwap_msg_element_type_wtp_frame_tunnel_mode, ett_capwap_wtp_frame_tunnel_mode, capwap_wtp_frame_tunnel_mode_flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2533 break;
2534 case TYPE_WTP_MAC_TYPE: /* WTP MAC Type (44) */
2535 if (optlen != 1) {
2536 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2537 "WTP MAC Type length %u wrong, must be = 1", optlen);
2538 break;
2540 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_mac_type, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2541 break;
2543 case TYPE_WTP_NAME: /* WTP Name (45) */
2544 if (optlen < 1) {
2545 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2546 "WTP Name length %u wrong, must be >= 1", optlen);
2547 break;
2549 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_name, tvb, offset+4, optlen, ENC_ASCII);
2550 break;
2552 case TYPE_WTP_REBOOT_STATISTICS: /* WTP Reboot Statistics (48) */
2553 if (optlen != 15) {
2554 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2555 "WTP Reboot Statistics length %u wrong, must be = 15", optlen);
2556 break;
2558 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_reboot_statistics_reboot_count, tvb, offset+4, 2, ENC_BIG_ENDIAN);
2559 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_reboot_statistics_ac_initiated_count, tvb, offset+6, 2, ENC_BIG_ENDIAN);
2560 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_reboot_statistics_link_failure_count, tvb, offset+8, 2, ENC_BIG_ENDIAN);
2561 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_reboot_statistics_sw_failure_count, tvb, offset+10, 2, ENC_BIG_ENDIAN);
2562 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_reboot_statistics_hw_failure_count, tvb, offset+12, 2, ENC_BIG_ENDIAN);
2563 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_reboot_statistics_other_failure_count, tvb, offset+14, 2, ENC_BIG_ENDIAN);
2564 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_reboot_statistics_unknown_failure_count, tvb, offset+16, 2, ENC_BIG_ENDIAN);
2565 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_wtp_reboot_statistics_last_failure_type, tvb, offset+18, 1, ENC_BIG_ENDIAN);
2566 break;
2568 case TYPE_CAPWAP_LOCAL_IPV6_ADDRESS: /* CAPWAP Local IPv6 Address (50) */
2569 if (optlen != 16) {
2570 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2571 "CAPWAP Local IPv6 Address length %u wrong, must be = 16", optlen);
2572 break;
2574 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_capwap_local_ipv6_address, tvb, offset+4, 16, ENC_NA);
2575 break;
2577 case TYPE_CAPWAP_TRANSPORT_PROTOCOL: /* CAPWAP Transport Protocol (51) */
2578 if (optlen != 1) {
2579 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2580 "CAPWAP Transport Protocol length %u wrong, must be = 1", optlen);
2581 break;
2583 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_capwap_transport_protocol, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2584 break;
2586 case TYPE_MTU_DISCOVERY_PADDING: /* MTU Discovery Padding (52) */
2587 if (optlen < 1) {
2588 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2589 "MTU Discovery Padding length %u wrong, must be >= 1", optlen);
2590 break;
2592 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_mtu_discovery_padding, tvb, offset+4, optlen, ENC_NA);
2593 break;
2596 case TYPE_ECN_SUPPORT: /* ECN Support (53) */
2597 if (optlen != 1) {
2598 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2599 "ECN Support length %u wrong, must be = 1", optlen);
2600 break;
2602 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ecn_support, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2603 break;
2605 case IEEE80211_ADD_WLAN:{ /* ieee80211 Add WLAN (1024) */
2606 uint16_t key_length;
2607 if (optlen < 20) {
2608 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2609 "IEEE80211 Add Wlan length %u wrong, must be >= 20", optlen);
2610 break;
2612 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2613 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_wlan_id, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2614 proto_tree_add_bitmask_with_flags(sub_msg_element_type_tree, tvb, offset+6,
2615 hf_capwap_msg_element_type_ieee80211_add_wlan_capability, ett_capwap_ieee80211_add_wlan_capability, ieee80211_add_wlan_capability_flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2616 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_key_index, tvb, offset+8, 1, ENC_BIG_ENDIAN);
2617 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_key_status, tvb, offset+9, 1, ENC_BIG_ENDIAN);
2618 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_key_length, tvb, offset+10, 2, ENC_BIG_ENDIAN);
2619 key_length = tvb_get_ntohs(tvb, offset+10);
2620 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_key, tvb, offset+12, key_length, ENC_NA);
2621 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_group_tsc, tvb, offset+key_length+12, 6, ENC_BIG_ENDIAN);
2622 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_qos, tvb, offset+key_length+18, 1, ENC_BIG_ENDIAN);
2623 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_auth_type, tvb, offset+key_length+19, 1, ENC_BIG_ENDIAN);
2624 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_mac_mode, tvb, offset+key_length+20, 1, ENC_BIG_ENDIAN);
2625 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_tunnel_mode, tvb, offset+key_length+21, 1, ENC_BIG_ENDIAN);
2626 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_suppress_ssid, tvb, offset+key_length+22, 1, ENC_BIG_ENDIAN);
2627 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_add_wlan_ssid, tvb, offset+key_length+23, optlen-(key_length+23-4), ENC_ASCII);
2629 break;
2631 case IEEE80211_ANTENNA:{ /* ieee80211 Antenna (1025) */
2632 uint8_t antenna_count, antenna = 0;
2633 if (optlen < 5) {
2634 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2635 "IEEE80211 Antenna length %u wrong, must be >= 5", optlen);
2636 break;
2638 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_antenna_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2639 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_antenna_diversity, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2640 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_antenna_combiner, tvb, offset+6, 1, ENC_BIG_ENDIAN);
2641 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_antenna_count, tvb, offset+7, 1, ENC_BIG_ENDIAN);
2642 antenna_count = tvb_get_uint8(tvb, offset+7);
2643 while(antenna < antenna_count){
2644 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_antenna_selection, tvb, offset+8+antenna, 1, ENC_BIG_ENDIAN);
2645 antenna += 1;
2648 break;
2650 case IEEE80211_ASSIGNED_WTP_BSSID: /* ieee80211 Assigned WTP BSSID (1026) */
2651 if (optlen != 8) {
2652 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2653 "IEEE80211 Assigned WTP BSSID length %u wrong, must be = 8", optlen);
2654 break;
2656 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_assigned_wtp_bssid_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2657 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_assigned_wtp_bssid_wlan_id, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2658 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_assigned_wtp_bssid_bssid, tvb, offset+6, 6, ENC_NA);
2659 break;
2661 case IEEE80211_DELETE_WLAN: /* ieee80211 Delete WLAN (1027) */
2662 if (optlen != 2) {
2663 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2664 "IEEE80211 Delete Wlan length %u wrong, must be = 2", optlen);
2665 break;
2667 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_delete_wlan_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2668 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_delete_wlan_wlan_id, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2669 break;
2671 case IEEE80211_DIRECT_SEQUENCE_CONTROL: /* ieee80211 Direct Sequence Control (1028) */
2672 if (optlen != 8) {
2673 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2674 "IEEE80211 Direct Sequence Control length %u wrong, must be = 8", optlen);
2675 break;
2677 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_direct_sequence_control_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2678 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_direct_sequence_control_reserved, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2679 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_direct_sequence_control_current_channel, tvb, offset+6, 1, ENC_BIG_ENDIAN);
2680 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_direct_sequence_control_current_cca, tvb, offset+7, 1, ENC_BIG_ENDIAN);
2681 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_direct_sequence_control_energy_detect_threshold, tvb, offset+8, 4, ENC_BIG_ENDIAN);
2682 break;
2684 case IEEE80211_INFORMATION_ELEMENT: /* ieee80211 Information Element (1029) */
2685 if (optlen < 4) {
2686 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2687 "IEEE80211 Information Element length %u wrong, must be >= 4", optlen);
2688 break;
2690 offset += 4;
2691 offset_end = offset + optlen;
2693 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_ie_radio_id, tvb, offset, 1, ENC_BIG_ENDIAN);
2694 offset += 1;
2696 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_ie_wlan_id, tvb, offset, 1, ENC_BIG_ENDIAN);
2697 offset += 1;
2699 proto_tree_add_bitmask_with_flags(sub_msg_element_type_tree, tvb, offset,
2700 hf_capwap_msg_element_type_ieee80211_ie_flags, ett_capwap_ieee80211_ie_flags, ieee80211_ie_flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2701 offset += 1;
2703 while (offset < offset_end) {
2704 offset += add_tagged_field(pinfo, sub_msg_element_type_tree, tvb, offset, 0, NULL, 0, NULL);
2707 break;
2709 case IEEE80211_MAC_OPERATION: /* ieee80211 MAC Operation (1030) */
2710 if (optlen != 16) {
2711 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2712 "IEEE80211 MAC Operation length %u wrong, must be = 16", optlen);
2713 break;
2715 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_mac_operation_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2716 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_mac_operation_reserved, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2717 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_mac_operation_rts_threshold, tvb, offset+6, 2, ENC_BIG_ENDIAN);
2718 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_mac_operation_short_retry, tvb, offset+8, 1, ENC_BIG_ENDIAN);
2719 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_mac_operation_long_retry, tvb, offset+9, 1, ENC_BIG_ENDIAN);
2720 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_mac_operation_fragmentation_threshold, tvb, offset+10, 2, ENC_BIG_ENDIAN);
2721 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_mac_operation_tx_msdu_lifetime, tvb, offset+12, 4, ENC_BIG_ENDIAN);
2722 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_mac_operation_rx_msdu_lifetime, tvb, offset+16, 4, ENC_BIG_ENDIAN);
2723 break;
2725 case IEEE80211_MIC_COUNTERMEASURES: /* ieee80211 MIC Countermeasures (1031) */
2726 if (optlen != 8) {
2727 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2728 "IEEE80211 MIC Countermeasures length %u wrong, must be = 8", optlen);
2729 break;
2731 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_mic_countermeasures_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2732 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_mic_countermeasures_wlan_id, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2733 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_mic_countermeasures_mac_address, tvb, offset+6, 6, ENC_NA);
2734 break;
2736 case IEEE80211_MULTI_DOMAIN_CAPABILITY: /* ieee80211 Multi-Domain Capability (1032) */
2737 if (optlen != 8) {
2738 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2739 "IEEE80211 Multi-Domain Capability length %u wrong, must be = 8", optlen);
2740 break;
2742 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_multi_domain_capability_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2743 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_multi_domain_capability_reserved, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2744 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_multi_domain_capability_first_channel, tvb, offset+6, 2, ENC_BIG_ENDIAN);
2745 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_multi_domain_capability_number_of_channels, tvb, offset+8, 2, ENC_BIG_ENDIAN);
2746 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_multi_domain_capability_max_tx_power_level, tvb, offset+10, 2, ENC_BIG_ENDIAN);
2747 break;
2749 case IEEE80211_OFDM_CONTROL: /* ieee80211 OFDM Control (1033) */
2750 if (optlen != 8) {
2751 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2752 "IEEE80211 OFDM Control length %u wrong, must be = 8", optlen);
2753 break;
2755 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_ofdm_control_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2756 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_ofdm_control_reserved, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2757 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_ofdm_control_current_channel, tvb, offset+6, 1, ENC_BIG_ENDIAN);
2758 proto_tree_add_bitmask_with_flags(sub_msg_element_type_tree, tvb, offset+7, hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support, ett_capwap_ieee80211_ofdm_control_band_support, ieee80211_ofdm_control_band_support_flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2760 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_ofdm_control_ti_threshold, tvb, offset+8, 4, ENC_BIG_ENDIAN);
2761 break;
2763 case IEEE80211_RATE_SET: /* ieee80211 Rate Set (1034) */
2764 if (optlen < 3) {
2765 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2766 "IEEE80211 Rate Set length %u wrong, must be >= 3", optlen);
2767 break;
2769 offset += 4;
2770 offset_end = offset + optlen;
2772 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_rate_set_radio_id, tvb, offset, 1, ENC_BIG_ENDIAN);
2773 offset += 1;
2775 while (offset < offset_end) {
2776 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_rate_set_rate_set, tvb, offset, 1, ENC_BIG_ENDIAN);
2777 offset += 1;
2781 break;
2782 case IEEE80211_STATION: /* ieee80211 Station (1036) */
2783 if (optlen < 14) {
2784 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2785 "IEEE80211 Station length %u wrong, must be >= 14", optlen);
2786 break;
2788 offset_end = offset + 4 + optlen;
2789 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2790 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_association_id, tvb, offset+5, 2, ENC_BIG_ENDIAN);
2791 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_flags, tvb, offset+7, 1, ENC_BIG_ENDIAN);
2792 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_mac_address, tvb, offset+8, 6, ENC_NA);
2793 proto_tree_add_bitmask_with_flags(sub_msg_element_type_tree, tvb, offset+14,
2794 hf_capwap_msg_element_type_ieee80211_station_capabilities, ett_capwap_ieee80211_station_capabilities, ieee80211_station_capabilities_flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2795 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_wlan_id, tvb, offset+16, 1, ENC_BIG_ENDIAN);
2797 offset += 17;
2798 while (offset < offset_end) {
2799 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_supported_rates, tvb, offset, 1, ENC_BIG_ENDIAN);
2800 offset += 1;
2803 break;
2805 case IEEE80211_STATION_SESSION_KEY: /* ieee80211 Station Session Key (1038) */
2806 if (optlen < 25) {
2807 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2808 "IEEE80211 Station Session Key length %u wrong, must be >= 25", optlen);
2809 break;
2811 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_session_key_mac, tvb, offset+4, 6, ENC_NA);
2812 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_session_key_flags, tvb, offset+10, 2, ENC_BIG_ENDIAN);
2813 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_session_key_flags_a, tvb, offset+10, 2, ENC_BIG_ENDIAN);
2814 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_session_key_flags_c, tvb, offset+10, 2, ENC_BIG_ENDIAN);
2815 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_session_key_pairwire_tsc, tvb, offset+12, 6, ENC_NA);
2816 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_session_key_pairwire_rsc, tvb, offset+18, 6, ENC_NA);
2817 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_station_session_key_key, tvb, offset+24, optlen-24, ENC_NA);
2818 break;
2820 case IEEE80211_SUPPORTED_RATES: /* ieee80211 Supported Rates (1040) */
2821 if (optlen < 3) {
2822 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2823 "IEEE80211 Supported Rates length %u wrong, must be >= 3", optlen);
2824 break;
2826 offset += 4;
2827 offset_end = offset + optlen;
2829 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_supported_rates_radio_id, tvb, offset, 1, ENC_BIG_ENDIAN);
2830 offset += 1;
2832 while (offset < offset_end) {
2833 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_supported_rates_rate, tvb, offset, 1, ENC_BIG_ENDIAN);
2834 offset += 1;
2836 break;
2838 case IEEE80211_TX_POWER: /* ieee80211 Tx Power (1041) */
2839 if (optlen != 4) {
2840 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2841 "IEEE80211 Tx Power length %u wrong, must be = 4", optlen);
2842 break;
2844 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_tx_power_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2845 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_tx_power_reserved, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2846 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_tx_power_current_tx_power, tvb, offset+6, 2, ENC_BIG_ENDIAN);
2847 break;
2849 case IEEE80211_TX_POWER_LEVEL:{ /* ieee80211 Tx Power Level (1042) */
2850 uint8_t num_levels, level = 0;
2851 if (optlen < 3) {
2852 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2853 "IEEE80211 Antenna length %u wrong, must be >= 3", optlen);
2854 break;
2856 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_tx_power_level_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2857 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_tx_power_level_num_levels, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2858 num_levels = tvb_get_uint8(tvb, offset+5);
2859 while(level < num_levels){
2860 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_tx_power_level_power_level, tvb, offset+6+(level*2), 2, ENC_BIG_ENDIAN);
2861 level += 1;
2864 break;
2866 case IEEE80211_UPDATE_WLAN:{ /* ieee80211 Update WLAN (1044) */
2867 uint16_t key_length;
2868 if (optlen < 8) {
2869 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2870 "IEEE80211 Update Wlan length %u wrong, must be >= 8", optlen);
2871 break;
2873 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_update_wlan_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2874 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_update_wlan_wlan_id, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2875 proto_tree_add_bitmask_with_flags(sub_msg_element_type_tree, tvb, offset+6,
2876 hf_capwap_msg_element_type_ieee80211_update_wlan_capability, ett_capwap_ieee80211_update_wlan_capability, ieee80211_update_wlan_capability_flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
2877 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_update_wlan_key_index, tvb, offset+8, 1, ENC_BIG_ENDIAN);
2878 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_update_wlan_key_status, tvb, offset+9, 1, ENC_BIG_ENDIAN);
2879 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_update_wlan_key_length, tvb, offset+10, 2, ENC_BIG_ENDIAN);
2880 key_length = tvb_get_ntohs(tvb, offset+10);
2881 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_update_wlan_key, tvb, offset+12, key_length, ENC_NA);
2883 break;
2885 case IEEE80211_WTP_RADIO_CONFIGURATION: /* ieee80211 WTP Radio Configuration (1046) */
2886 if (optlen != 16) {
2887 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2888 "IEEE80211 WTP Radio Configuration length %u wrong, must be = 16", optlen);
2889 break;
2891 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2892 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_short_preamble, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2893 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_num_of_bssids, tvb, offset+6, 1, ENC_BIG_ENDIAN);
2894 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_dtim_period, tvb, offset+7, 1, ENC_BIG_ENDIAN);
2895 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_bssid, tvb, offset+8, 6, ENC_NA);
2896 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_beacon_period, tvb, offset+14, 2, ENC_BIG_ENDIAN);
2897 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_country_string, tvb, offset+16, 4, ENC_ASCII);
2898 break;
2900 case IEEE80211_WTP_RADIO_INFORMATION: /* ieee80211 WTP Radio Information (1048) */
2901 if (optlen != 5) {
2902 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2903 "IEEE80211 WTP Radio Information length %u wrong, must be = 5", optlen);
2904 break;
2906 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_id, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2907 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_reserved, tvb, offset+5, 3, ENC_NA);
2908 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_n, tvb, offset+8, 1, ENC_BIG_ENDIAN);
2909 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_g, tvb, offset+8, 1, ENC_BIG_ENDIAN);
2910 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_a, tvb, offset+8, 1, ENC_BIG_ENDIAN);
2911 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_b, tvb, offset+8, 1, ENC_BIG_ENDIAN);
2912 break;
2916 case IEEE80211_SUPPORTED_MAC_PROFILES:{ /* ieee80211 Supported MAC Profiles (1060) */
2917 uint8_t num_profiles;
2918 if (optlen < 2) {
2919 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2920 "IEEE80211 Supported MAC Profiles length %u wrong, must be >= 2", optlen);
2921 break;
2923 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_supported_mac_profiles_numbers, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2924 num_profiles = tvb_get_uint8(tvb ,offset);
2925 while(num_profiles){
2926 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_supported_mac_profiles_profile, tvb, offset+5, 1, ENC_BIG_ENDIAN);
2927 offset += 1;
2928 num_profiles--;
2931 break;
2933 case IEEE80211_MAC_PROFILE: /* ieee80211 MAC Profile (1061) */
2934 if (optlen != 1) {
2935 expert_add_info_format(pinfo, ti_len, &ei_capwap_msg_element_length,
2936 "IEEE80211 MAC Profile length %u wrong, must be = 1", optlen);
2937 break;
2939 proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ieee80211_mac_profile, tvb, offset+4, 1, ENC_BIG_ENDIAN);
2941 break;
2943 default:
2944 expert_add_info_format(pinfo, ti_type, &ei_capwap_message_element_type,
2945 "Dissector for CAPWAP Message Element"
2946 " (%s) type not implemented, Contact"
2947 " Wireshark developers if you want this supported",
2948 val_to_str(msg_element_type, message_element_type_vals, "(%d)"));
2949 break;
2952 return 2+2+optlen;
2955 /* Returns the number of bytes consumed by this option. */
2956 static int
2957 dissect_capwap_message_element(tvbuff_t *tvb, proto_tree *capwap_control_tree, unsigned offset, packet_info *pinfo)
2959 unsigned plen = 0, offset_end;
2960 proto_item *ti;
2961 proto_tree *capwap_message_element_tree;
2963 ti = proto_tree_add_item(capwap_control_tree, hf_capwap_message_element, tvb, offset, tvb_reported_length(tvb) - offset, ENC_NA);
2964 capwap_message_element_tree = proto_item_add_subtree(ti, ett_capwap_message_element);
2966 offset_end = tvb_reported_length(tvb);
2968 while (offset+plen < offset_end) {
2969 plen += dissect_capwap_message_element_type(tvb, capwap_message_element_tree, offset+plen, pinfo);
2972 return plen;
2975 /* Returns the number of bytes consumed by this option. */
2976 static int
2977 dissect_capwap_data_keep_alive(tvbuff_t *tvb, packet_info *pinfo, proto_tree *capwap_data_tree, unsigned offset)
2979 uint16_t len;
2980 unsigned plen = 0, offset_end;
2981 proto_item *ti;
2982 proto_tree *capwap_data_keep_alive_tree;
2984 ti = proto_tree_add_item(capwap_data_tree, hf_capwap_data_keep_alive, tvb, offset, tvb_reported_length(tvb), ENC_NA);
2985 capwap_data_keep_alive_tree = proto_item_add_subtree(ti, ett_capwap_data_keep_alive);
2987 ti = proto_tree_add_item(capwap_data_keep_alive_tree, hf_capwap_data_keep_alive_length, tvb, offset, 2, ENC_BIG_ENDIAN);
2988 len = tvb_get_ntohs(tvb, offset);
2989 if (len != tvb_reported_length(tvb))
2990 expert_add_info(pinfo, ti, &ei_capwap_data_keep_alive_length);
2992 plen += 2;
2994 offset_end = tvb_reported_length(tvb);
2996 while (offset+plen < offset_end) {
2997 plen += dissect_capwap_message_element_type(tvb, capwap_data_keep_alive_tree, offset+plen, pinfo);
3000 return plen;
3003 /* Returns the number of bytes consumed by this option. */
3004 static int
3005 dissect_capwap_control_header(tvbuff_t *tvb, proto_tree *capwap_control_tree, unsigned offset, packet_info *pinfo)
3007 unsigned plen = 0;
3008 proto_item *ti, *ti_flag;
3009 proto_tree *capwap_control_header_tree;
3010 proto_tree *capwap_control_msg_type_tree;
3012 ti = proto_tree_add_item(capwap_control_tree, hf_capwap_control_header, tvb, offset, 8, ENC_NA);
3013 capwap_control_header_tree = proto_item_add_subtree(ti, ett_capwap_control_header);
3015 /* Message Type 32 bits */
3016 ti_flag = proto_tree_add_item(capwap_control_header_tree, hf_capwap_control_header_msg_type, tvb, offset, 4, ENC_BIG_ENDIAN);
3017 capwap_control_msg_type_tree = proto_item_add_subtree(ti_flag, ett_capwap_control_header_msg);
3019 proto_tree_add_item(capwap_control_msg_type_tree, hf_capwap_control_header_msg_type_enterprise_nbr, tvb, offset, 3, ENC_BIG_ENDIAN);
3020 proto_tree_add_item(capwap_control_msg_type_tree, hf_capwap_control_header_msg_type_enterprise_specific, tvb, offset, 4, ENC_BIG_ENDIAN);
3022 col_append_fstr(pinfo->cinfo, COL_INFO, " - %s",val_to_str(tvb_get_ntohl(tvb, offset),message_type,"Unknown Message Type (0x%x)"));
3024 plen += 4;
3025 /* Sequence 8 bits */
3026 proto_tree_add_item(capwap_control_header_tree, hf_capwap_control_header_seq_number, tvb, offset+plen, 1, ENC_BIG_ENDIAN);
3027 plen += 1;
3029 /* Message Element Length 16 bits */
3030 proto_tree_add_item(capwap_control_header_tree, hf_capwap_control_header_msg_element_length, tvb, offset+plen, 2, ENC_BIG_ENDIAN);
3031 plen += 2;
3032 /* Flags 8 bits */
3033 proto_tree_add_item(capwap_control_header_tree, hf_capwap_control_header_flags, tvb, offset+plen, 1, ENC_BIG_ENDIAN);
3034 plen += 1;
3035 return plen;
3038 /* Returns the number of bytes consumed by this option. */
3039 static int
3040 dissect_capwap_header(tvbuff_t *tvb, proto_tree *capwap_control_tree, unsigned offset, packet_info *pinfo, uint8_t *payload_type, uint8_t *payload_wbid, bool *fragment_is, bool *fragment_more, uint32_t *fragment_id, uint32_t *fragment_offset)
3042 unsigned plen = 0, hlen = 0;
3043 proto_item *ti, *ti_flag, *ti_len;
3044 proto_tree *capwap_header_tree;
3045 proto_tree *capwap_header_flags_tree;
3046 unsigned flags = 0;
3047 uint8_t maclength, wirelesslength;
3048 unsigned align = 0;
3050 /* RFC 5415 HLEN: A 5-bit field containing the length of the CAPWAP transport header in 4-byte words */
3051 /* As we display the preamble separately reduce the length by 1 */
3052 hlen = tvb_get_bits8(tvb, (offset+plen)*8, 5)*4-1;
3053 ti = proto_tree_add_item(capwap_control_tree, hf_capwap_header, tvb, offset+plen, hlen, ENC_NA);
3054 capwap_header_tree = proto_item_add_subtree(ti, ett_capwap_header);
3056 /* Header Length : 5 Bits */
3057 ti_len = proto_tree_add_item(capwap_header_tree, hf_capwap_header_hlen, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
3058 proto_item_append_text(ti_len, " (%d)",hlen+1);
3059 /* Radio ID : 5 Bits */
3060 proto_tree_add_item(capwap_header_tree, hf_capwap_header_rid, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
3062 /* Wireless Binding ID : 5 Bits */
3063 proto_tree_add_item(capwap_header_tree, hf_capwap_header_wbid, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
3065 /* WBid of Payload (for CAPWAP Data Packet) */
3066 *payload_wbid = tvb_get_bits8(tvb, (offset+plen)*8+10, 5);
3068 /* Flags : 9 Bits */
3069 flags = tvb_get_bits16(tvb, (offset+plen)*8+15, 9, ENC_BIG_ENDIAN);
3070 ti_flag = proto_tree_add_item(capwap_header_tree, hf_capwap_header_flags, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
3071 capwap_header_flags_tree = proto_item_add_subtree(ti_flag, ett_capwap_header_flags);
3073 proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_t, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
3074 proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_f, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
3075 proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_l, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
3076 proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_w, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
3077 proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_m, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
3078 proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_k, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
3079 proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_r, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
3081 /* Fragment ??*/
3082 *fragment_is = ((flags & 0x80) == 0x80) ? true : false;
3083 *fragment_more = ((flags &0x40) == 0x40) ? false : true;
3085 /* Type of Payload (for CAPWAP Data Packet), use 0xff for Keep-Alive */
3086 if (flags &0x08 /* data channel Keep-Alive packet */) {
3087 col_append_str(pinfo->cinfo, COL_INFO, " Keep-Alive");
3088 *payload_type = 0xff;
3089 } else
3090 *payload_type = tvb_get_bits8(tvb, (offset+plen)*8+15,1);
3092 plen += 3;
3094 /* Fragment ID : 16 Bits */
3095 proto_tree_add_item(capwap_header_tree, hf_capwap_header_fragment_id, tvb, offset+plen, 2, ENC_BIG_ENDIAN);
3096 *fragment_id = (uint32_t)tvb_get_ntohs(tvb, offset+plen);
3097 plen += 2;
3099 /* Fragment offset : 13 Bits */
3100 proto_tree_add_item(capwap_header_tree, hf_capwap_header_fragment_offset, tvb, offset+plen, 2, ENC_BIG_ENDIAN);
3101 *fragment_offset = 8 * (uint32_t)tvb_get_bits16(tvb, (offset+plen)*8, 13, ENC_BIG_ENDIAN);
3103 /* Reserved 3 Bits */
3104 proto_tree_add_item(capwap_header_tree, hf_capwap_header_reserved, tvb, offset+plen+1, 1, ENC_BIG_ENDIAN);
3105 plen += 2;
3106 /* Optional Headers */
3107 if (flags & 0x10 /* Radio MAC address */) {
3108 maclength=tvb_get_uint8(tvb, offset+plen);
3109 proto_tree_add_item(capwap_header_tree, hf_capwap_header_mac_length, tvb, offset+plen, 1, ENC_BIG_ENDIAN);
3110 plen += 1;
3111 if (maclength == 6) {
3112 proto_tree_add_item(capwap_header_tree, hf_capwap_header_mac_eui48, tvb, offset+plen, maclength, ENC_NA);
3114 } else if (maclength == 8) {
3115 proto_tree_add_item(capwap_header_tree, hf_capwap_header_mac_eui64, tvb, offset+plen, maclength, ENC_BIG_ENDIAN);
3116 } else {
3117 proto_tree_add_item(capwap_header_tree, hf_capwap_header_mac_data, tvb, offset+plen, maclength, ENC_NA);
3119 plen += maclength;
3120 /* 4 Bytes Alignment ? */
3121 align = 4-((offset+plen)%4);
3122 if (align != 4)
3124 proto_tree_add_item(capwap_header_tree, hf_capwap_header_padding, tvb, offset+plen, align, ENC_NA);
3125 plen += align;
3128 if (flags & 0x20 /* Wireless specific information */) {
3129 wirelesslength=tvb_get_uint8(tvb, offset+plen);
3131 /* in Draft 8, the WBid is add in Wireless Specific Information*/
3132 if (global_capwap_draft_8_cisco == 1)
3134 plen += 1;
3135 wirelesslength = 4;
3137 proto_tree_add_item(capwap_header_tree, hf_capwap_header_wireless_length, tvb, offset+plen, 1, ENC_BIG_ENDIAN);
3138 plen += 1;
3139 proto_tree_add_item(capwap_header_tree, hf_capwap_header_wireless_data, tvb, offset+plen, wirelesslength, ENC_NA);
3141 /* Optional Wireless Specific Information for ieee80211 (wbid = 1) Section 4 of RFC5416 */
3142 if (*payload_wbid == 1)
3144 dissect_capwap_data_message_bindings_ieee80211(tvb, capwap_header_tree, offset+plen, pinfo);
3147 plen += wirelesslength;
3148 /* 4 Bytes Alignment ? */
3149 align = 4-((offset+plen)%4);
3150 if (align != 4)
3152 proto_tree_add_item(capwap_header_tree, hf_capwap_header_padding, tvb, offset+plen, align, ENC_NA);
3153 plen += align;
3156 if ((plen != hlen) && global_capwap_draft_8_cisco == 0)
3158 expert_add_info_format(pinfo, ti_len, &ei_capwap_header_length_bad, "Wrong calculate length (%d) =! header length (%d) ! (May be try to use Cisco Wireless Controller Support Preference ?)", plen, hlen);
3160 return hlen;
3163 /* Returns the number of bytes consumed by this option. */
3164 static int
3165 dissect_capwap_preamble(tvbuff_t *tvb, proto_tree *capwap_control_tree, unsigned offset, uint8_t *type_header)
3167 unsigned plen = 0;
3168 proto_item *ti;
3169 proto_tree *capwap_preamble_tree;
3171 ti = proto_tree_add_item(capwap_control_tree, hf_capwap_preamble, tvb, offset+plen, -1, ENC_NA);
3172 capwap_preamble_tree = proto_item_add_subtree(ti, ett_capwap_preamble);
3174 proto_tree_add_item(capwap_preamble_tree, hf_capwap_preamble_version, tvb, offset+plen, 1, ENC_BIG_ENDIAN);
3175 proto_tree_add_item(capwap_preamble_tree, hf_capwap_preamble_type, tvb, offset+plen, 1, ENC_BIG_ENDIAN);
3176 *type_header = tvb_get_uint8(tvb, offset+plen) & 0x0F;
3177 plen++;
3178 /* DTLS Header ? */
3179 if (*type_header == 1) {
3180 proto_tree_add_item(capwap_preamble_tree, hf_capwap_preamble_reserved, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
3181 plen +=3;
3183 proto_item_set_len(ti, plen);
3184 return plen;
3187 /* Code to actually dissect the packets */
3188 static int
3189 dissect_capwap_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
3191 proto_item *ti;
3192 proto_tree *capwap_control_tree;
3193 unsigned offset = 0;
3194 tvbuff_t *next_tvb = NULL;
3195 uint8_t type_header;
3196 uint8_t payload_type;
3197 uint8_t payload_wbid;
3198 bool fragment_is;
3199 bool fragment_more;
3200 uint32_t fragment_id;
3201 uint32_t fragment_offset;
3202 fragment_head *frag_msg = NULL;
3203 bool save_fragmented;
3205 col_set_str(pinfo->cinfo, COL_PROTOCOL, "CAPWAP-Control");
3206 col_set_str(pinfo->cinfo, COL_INFO, "CAPWAP-Control");
3208 ti = proto_tree_add_item(tree, proto_capwap_control, tvb, 0, -1, ENC_NA);
3209 capwap_control_tree = proto_item_add_subtree(ti, ett_capwap_control);
3211 /* CAPWAP Preamble */
3212 offset += dissect_capwap_preamble(tvb, capwap_control_tree, offset, &type_header);
3214 if (type_header == 1) {
3215 next_tvb = tvb_new_subset_remaining (tvb, offset);
3216 call_dissector(dtls_handle, next_tvb, pinfo, tree);
3217 return offset;
3220 /* CAPWAP Header */
3221 offset += dissect_capwap_header(tvb, capwap_control_tree, offset, pinfo, &payload_type, &payload_wbid, &fragment_is, &fragment_more, &fragment_id, &fragment_offset );
3223 /* CAPWAP Reassemble */
3224 save_fragmented = pinfo->fragmented;
3226 if (global_capwap_reassemble && fragment_is)
3228 const int len_rem = tvb_reported_length_remaining(tvb, offset);
3229 if (len_rem <= 0)
3230 return offset;
3232 pinfo->fragmented = true;
3234 frag_msg = fragment_add_check(&capwap_reassembly_table,
3235 tvb, offset, pinfo, fragment_id, NULL,
3236 fragment_offset,
3237 len_rem,
3238 fragment_more);
3240 next_tvb = process_reassembled_data(tvb, offset, pinfo,
3241 "Reassembled CAPWAP", frag_msg,
3242 &capwap_frag_items, NULL, tree);
3244 if (next_tvb == NULL)
3245 { /* make a new subset */
3246 next_tvb = tvb_new_subset_remaining(tvb, offset);
3247 call_data_dissector(next_tvb, pinfo, tree);
3248 col_append_fstr(pinfo->cinfo, COL_INFO, " (Fragment ID: %u, Fragment Offset: %u)", fragment_id, fragment_offset);
3250 else
3252 /* CAPWAP Control Header */
3253 offset = dissect_capwap_control_header(next_tvb, capwap_control_tree, 0, pinfo);
3255 /* CAPWAP Message Element */
3256 offset += dissect_capwap_message_element(next_tvb, capwap_control_tree, offset, pinfo);
3257 col_append_fstr(pinfo->cinfo, COL_INFO, " (Reassembled, Fragment ID: %u)", fragment_id);
3260 else
3262 /* CAPWAP Control Header */
3263 offset += dissect_capwap_control_header(tvb, capwap_control_tree, offset, pinfo);
3265 /* CAPWAP Message Element */
3266 offset += dissect_capwap_message_element(tvb, capwap_control_tree, offset, pinfo);
3268 pinfo->fragmented = save_fragmented;
3269 return offset;
3272 static int
3273 dissect_capwap_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
3275 proto_item *ti;
3276 proto_tree *capwap_data_tree;
3277 unsigned offset = 0;
3278 tvbuff_t *next_tvb;
3279 uint8_t type_header;
3280 uint8_t payload_type;
3281 uint8_t payload_wbid;
3282 bool fragment_is;
3283 bool fragment_more;
3284 uint32_t fragment_id;
3285 uint32_t fragment_offset;
3286 fragment_head *frag_msg = NULL;
3287 bool save_fragmented;
3290 col_set_str(pinfo->cinfo, COL_PROTOCOL, "CAPWAP-Data");
3291 col_set_str(pinfo->cinfo, COL_INFO, "CAPWAP-Data");
3293 ti = proto_tree_add_item(tree, proto_capwap_data, tvb, 0, -1, ENC_NA);
3294 capwap_data_tree = proto_item_add_subtree(ti, ett_capwap_data);
3296 /* CAPWAP Preamble */
3297 offset += dissect_capwap_preamble(tvb, capwap_data_tree, offset, &type_header);
3299 if (type_header == 1) {
3300 next_tvb = tvb_new_subset_remaining (tvb, offset);
3301 call_dissector(dtls_handle, next_tvb, pinfo, tree);
3302 return tvb_captured_length(tvb);
3305 /* CAPWAP Header */
3306 offset += dissect_capwap_header(tvb, capwap_data_tree, offset, pinfo, &payload_type, &payload_wbid, &fragment_is, &fragment_more, &fragment_id, &fragment_offset);
3308 /* CAPWAP Reassemble */
3309 save_fragmented = pinfo->fragmented;
3311 if (global_capwap_reassemble && fragment_is)
3313 int len_rem = tvb_reported_length_remaining(tvb, offset);
3314 if (len_rem <= 0)
3315 return offset;
3317 pinfo->fragmented = true;
3319 frag_msg = fragment_add_check(&capwap_reassembly_table,
3320 tvb, offset, pinfo, fragment_id, NULL,
3321 fragment_offset,
3322 len_rem,
3323 fragment_more);
3325 next_tvb = process_reassembled_data(tvb, offset, pinfo,
3326 "Reassembled CAPWAP", frag_msg,
3327 &capwap_frag_items, NULL, tree);
3329 if (next_tvb == NULL)
3330 { /* make a new subset */
3331 next_tvb = tvb_new_subset_remaining(tvb, offset);
3332 call_data_dissector(next_tvb, pinfo, tree);
3333 col_append_fstr(pinfo->cinfo, COL_INFO, " (Fragment ID: %u, Fragment Offset: %u)", fragment_id, fragment_offset);
3334 return tvb_captured_length(tvb);
3336 else
3338 col_append_fstr(pinfo->cinfo, COL_INFO, " (Reassembled, Fragment ID: %u)", fragment_id);
3341 else
3343 next_tvb = tvb_new_subset_remaining (tvb, offset);
3346 /* CAPWAP Data Payload */
3347 if (payload_type == 0) {
3348 /* IEEE 802.3 Frame */
3349 call_dissector(ieee8023_handle, next_tvb, pinfo, tree);
3351 else if (payload_type == 0xff) {
3352 /* CAPWAP Keep-Alive Payload */
3353 dissect_capwap_data_keep_alive(next_tvb, pinfo, capwap_data_tree, 0);
3355 else
3357 switch (payload_wbid) {
3358 case 0: /* Reserved - Cisco seems to use this instead of 1 */
3359 /* It seems that just calling ieee80211_handle is not
3360 * quite enough to get this right, so call data dissector
3361 * for now:
3363 call_data_dissector(next_tvb, pinfo, tree);
3364 break;
3365 case 1: /* IEEE 802.11 */
3366 call_dissector(global_capwap_swap_frame_control ? ieee80211_bsfc_handle : ieee80211_handle, next_tvb, pinfo, tree);
3367 break;
3368 default: /* Unknown Data */
3369 call_data_dissector(next_tvb, pinfo, tree);
3370 break;
3373 pinfo->fragmented = save_fragmented;
3374 return tvb_captured_length(tvb);
3377 static void
3378 apply_capwap_prefs(void)
3380 global_capwap_data_udp_ports = prefs_get_range_value("capwap.data", "udp.port");
3383 void
3384 proto_register_capwap_control(void)
3386 module_t *capwap_module;
3388 static hf_register_info hf[] = {
3389 /* Preamble */
3390 { &hf_capwap_preamble,
3391 { "Preamble", "capwap.preamble",
3392 FT_NONE, BASE_NONE, NULL, 0x0,
3393 NULL, HFILL }
3395 { &hf_capwap_preamble_version,
3396 { "Version", "capwap.preamble.version",
3397 FT_UINT8, BASE_DEC, NULL, 0xF0,
3398 "Version of CAPWAP", HFILL }
3400 { &hf_capwap_preamble_type,
3401 { "Type", "capwap.preamble.type",
3402 FT_UINT8, BASE_DEC, VALS(type_header_vals), 0x0F,
3403 "Type of Payload", HFILL }
3405 { &hf_capwap_preamble_reserved,
3406 { "Reserved", "capwap.preamble.reserved",
3407 FT_UINT24, BASE_DEC, NULL, 0x0,
3408 NULL, HFILL }
3410 /* CAPWAP Header */
3411 { &hf_capwap_header,
3412 { "Header", "capwap.header",
3413 FT_NONE, BASE_NONE, NULL, 0x0,
3414 NULL, HFILL }
3416 { &hf_capwap_header_hlen,
3417 { "Header Length", "capwap.header.length",
3418 FT_UINT24, BASE_DEC, NULL, 0xF80000,
3419 "Length of the CAPWAP transport header in 4-byte words (similar to IP header length)", HFILL }
3421 { &hf_capwap_header_rid,
3422 { "Radio ID", "capwap.header.rid",
3423 FT_UINT24, BASE_DEC, NULL, 0x07C000,
3424 NULL, HFILL }
3426 { &hf_capwap_header_wbid,
3427 { "Wireless Binding ID", "capwap.header.wbid",
3428 FT_UINT24, BASE_DEC, VALS(type_wbid), 0x003E00,
3429 NULL, HFILL }
3431 { &hf_capwap_header_flags,
3432 { "Header Flags", "capwap.header.flags",
3433 FT_UINT24, BASE_HEX, NULL, 0x0001FF,
3434 NULL, HFILL }
3436 { &hf_capwap_header_flags_t,
3437 { "Payload Type", "capwap.header.flags.t",
3438 FT_BOOLEAN, 24, TFS(&flag_type_t), 0x000100,
3439 NULL, HFILL }
3441 { &hf_capwap_header_flags_f,
3442 { "Fragment", "capwap.header.flags.f",
3443 FT_BOOLEAN, 24, TFS(&flag_type_f), 0x000080,
3444 NULL, HFILL }
3446 { &hf_capwap_header_flags_l,
3447 { "Last Fragment", "capwap.header.flags.l",
3448 FT_BOOLEAN, 24, TFS(&flag_type_l), 0x000040,
3449 NULL, HFILL }
3451 { &hf_capwap_header_flags_w,
3452 { "Wireless header", "capwap.header.flags.w",
3453 FT_BOOLEAN, 24, TFS(&flag_type_w), 0x000020,
3454 NULL, HFILL }
3456 { &hf_capwap_header_flags_m,
3457 { "Radio MAC header", "capwap.header.flags.m",
3458 FT_BOOLEAN, 24, TFS(&flag_type_m), 0x000010,
3459 NULL, HFILL }
3461 { &hf_capwap_header_flags_k,
3462 { "Keep-Alive", "capwap.header.flags.k",
3463 FT_BOOLEAN, 24, TFS(&flag_type_k), 0x000008,
3464 NULL, HFILL }
3466 { &hf_capwap_header_flags_r,
3467 { "Reserved", "capwap.header.flags.r",
3468 FT_UINT24, BASE_HEX, 0x0, 0x000007,
3469 NULL, HFILL }
3471 { &hf_capwap_header_fragment_id,
3472 { "Fragment ID", "capwap.header.fragment.id",
3473 FT_UINT16, BASE_DEC, NULL, 0x0,
3474 NULL, HFILL }
3476 { &hf_capwap_header_fragment_offset,
3477 { "Fragment Offset", "capwap.header.fragment.offset",
3478 FT_UINT16, BASE_DEC, NULL, 0xFFF8,
3479 NULL, HFILL }
3481 { &hf_capwap_header_reserved,
3482 { "Reserved", "capwap.header.fragment.reserved",
3483 FT_UINT16, BASE_DEC, NULL, 0x0007,
3484 NULL, HFILL }
3486 { &hf_capwap_header_mac_length,
3487 { "MAC length", "capwap.header.mac.length",
3488 FT_UINT8, BASE_DEC, NULL, 0x0,
3489 NULL, HFILL }
3491 { &hf_capwap_header_mac_eui48,
3492 { "MAC address", "capwap.header.mac.eui48",
3493 FT_ETHER, BASE_NONE, NULL, 0x0,
3494 NULL, HFILL }
3496 { &hf_capwap_header_mac_eui64,
3497 { "MAC address", "capwap.header.mac.eui64",
3498 FT_EUI64, BASE_NONE, NULL, 0x0,
3499 NULL, HFILL }
3501 { &hf_capwap_header_mac_data,
3502 { "MAC address", "capwap.header.mac.data",
3503 FT_BYTES, BASE_NONE, NULL, 0x0,
3504 NULL, HFILL }
3506 { &hf_capwap_header_wireless_length,
3507 { "Wireless length", "capwap.header.wireless.length",
3508 FT_UINT8, BASE_DEC, NULL, 0x0,
3509 NULL, HFILL }
3511 { &hf_capwap_header_wireless_data,
3512 { "Wireless data", "capwap.header.wireless.data",
3513 FT_BYTES, BASE_NONE, NULL, 0x0,
3514 NULL, HFILL }
3516 { &hf_capwap_header_wireless_data_ieee80211_fi,
3517 { "Wireless data ieee80211 Frame Info", "capwap.header.wireless.data.ieee80211.fi",
3518 FT_BYTES, BASE_NONE, NULL, 0x0,
3519 NULL, HFILL }
3521 { &hf_capwap_header_wireless_data_ieee80211_fi_rssi,
3522 { "Wireless data ieee80211 RSSI (dBm)", "capwap.header.wireless.data.ieee80211.fi.rssi",
3523 FT_INT8, BASE_DEC, NULL, 0x0,
3524 NULL, HFILL }
3526 { &hf_capwap_header_wireless_data_ieee80211_fi_snr,
3527 { "Wireless data ieee80211 SNR (dB)", "capwap.header.wireless.data.ieee80211.fi.snr",
3528 FT_UINT8, BASE_DEC, NULL, 0x0,
3529 NULL, HFILL }
3531 { &hf_capwap_header_wireless_data_ieee80211_fi_data_rate,
3532 { "Wireless data ieee80211 Data Rate (Mbps)", "capwap.header.wireless.data.ieee80211.fi.data_rate",
3533 FT_UINT16, BASE_DEC, NULL, 0x0,
3534 NULL, HFILL }
3536 { &hf_capwap_header_wireless_data_ieee80211_dest_wlan,
3537 { "Wireless data ieee80211 Destination WLANs", "capwap.header.wireless.data.ieee80211.dw",
3538 FT_BYTES, BASE_NONE, NULL, 0x0,
3539 NULL, HFILL }
3541 { &hf_capwap_header_wireless_data_ieee80211_dw_wlan_id_bitmap,
3542 { "Wireless data ieee80211 Destination Wlan Id bitmap",
3543 "capwap.header.wireless.data.ieee80211.dw.wlan_id_bitmap",
3544 FT_UINT16, BASE_DEC, NULL, 0x0,
3545 NULL, HFILL }
3547 { &hf_capwap_header_wireless_data_ieee80211_dw_reserved,
3548 { "Wireless data ieee80211 Destination Wlan reserved", "capwap.header.wireless.data.ieee80211.dw.reserved",
3549 FT_UINT16, BASE_DEC, NULL, 0x0,
3550 NULL, HFILL }
3552 { &hf_capwap_header_padding,
3553 { "Padding for 4 Byte Alignment", "capwap.header.padding",
3554 FT_BYTES, BASE_NONE, NULL, 0x0,
3555 NULL, HFILL }
3558 /* CAPWAP Control Header Message */
3560 { &hf_capwap_control_header,
3561 { "Control Header", "capwap.control.header",
3562 FT_NONE, BASE_NONE, NULL, 0x0,
3563 NULL, HFILL }
3565 { &hf_capwap_control_header_msg_type,
3566 { "Message Type", "capwap.control.header.message_type",
3567 FT_UINT32, BASE_DEC, NULL, 0x0,
3568 NULL, HFILL }
3570 { &hf_capwap_control_header_msg_type_enterprise_nbr,
3571 { "Message Type (Enterprise Number)", "capwap.control.header.message_type.enterprise_number",
3572 FT_UINT24, BASE_ENTERPRISES, STRINGS_ENTERPRISES, 0x0,
3573 NULL, HFILL }
3575 { &hf_capwap_control_header_msg_type_enterprise_specific,
3576 { "Message Type (Enterprise Specific)", "capwap.control.header.message_type.enterprise_specific",
3577 FT_UINT32, BASE_DEC, VALS(message_type), 0x0,
3578 NULL, HFILL }
3580 { &hf_capwap_control_header_seq_number,
3581 { "Sequence Number", "capwap.control.header.sequence_number",
3582 FT_UINT8, BASE_DEC, NULL, 0x0,
3583 NULL, HFILL }
3585 { &hf_capwap_control_header_msg_element_length,
3586 { "Message Element Length", "capwap.control.header.message_element_length",
3587 FT_UINT16, BASE_DEC, NULL, 0x0,
3588 NULL, HFILL }
3590 { &hf_capwap_control_header_flags,
3591 { "Flags", "capwap.control.header.flags",
3592 FT_UINT8, BASE_DEC, NULL, 0x0,
3593 NULL, HFILL }
3596 /* CAPWAP Protocol Message Elements */
3598 { &hf_capwap_message_element,
3599 { "Message Element", "capwap.message_element",
3600 FT_NONE, BASE_NONE, NULL, 0x0,
3601 NULL, HFILL }
3603 { &hf_capwap_msg_element,
3604 { "Type", "capwap.message_element",
3605 FT_NONE, BASE_NONE, NULL, 0x0,
3606 NULL, HFILL }
3609 { &hf_capwap_msg_element_type,
3610 { "Type", "capwap.message_element.type",
3611 FT_UINT16, BASE_DEC, VALS(message_element_type_vals), 0x0,
3612 "CAPWAP Message Element type", HFILL }
3614 { &hf_capwap_msg_element_length,
3615 { "Length", "capwap.message_element.length",
3616 FT_UINT16, BASE_DEC, NULL, 0x0,
3617 "CAPWAP Message Element length", HFILL }
3619 { &hf_capwap_msg_element_value,
3620 { "Value", "capwap.message_element.value",
3621 FT_BYTES, BASE_NONE, NULL, 0x0,
3622 "CAPWAP Message Element value", HFILL }
3625 /* CAPWAP Protocol Message Element Type */
3627 /* AC Descriptor */
3628 { &hf_capwap_msg_element_type_ac_descriptor_stations,
3629 { "Stations", "capwap.control.message_element.ac_descriptor.stations",
3630 FT_UINT16, BASE_DEC, NULL, 0x0,
3631 NULL, HFILL }
3633 { &hf_capwap_msg_element_type_ac_descriptor_limit,
3634 { "Limit Stations", "capwap.control.message_element.ac_descriptor.limit",
3635 FT_UINT16, BASE_DEC, NULL, 0x0,
3636 NULL, HFILL }
3638 { &hf_capwap_msg_element_type_ac_descriptor_active_wtp,
3639 { "Active WTPs", "capwap.control.message_element.ac_descriptor.active_wtp",
3640 FT_UINT16, BASE_DEC, NULL, 0x0,
3641 NULL, HFILL }
3643 { &hf_capwap_msg_element_type_ac_descriptor_max_wtp,
3644 { "Max WTPs", "capwap.control.message_element.ac_descriptor.max_wtp",
3645 FT_UINT16, BASE_DEC, NULL, 0x0,
3646 NULL, HFILL }
3648 /* AC Descriptor Security Flags... */
3649 { &hf_capwap_msg_element_type_ac_descriptor_security,
3650 { "Security Flags", "capwap.control.message_element.ac_descriptor.security",
3651 FT_UINT8, BASE_HEX, NULL, 0x0,
3652 NULL, HFILL }
3654 { &hf_capwap_msg_element_type_ac_descriptor_security_s,
3655 { "AC supports the pre-shared", "capwap.control.message_element.ac_descriptor.security.s",
3656 FT_BOOLEAN, 8, NULL, 0x04,
3657 NULL, HFILL }
3659 { &hf_capwap_msg_element_type_ac_descriptor_security_x,
3660 { "AC supports X.509 Certificate", "capwap.control.message_element.ac_descriptor.security.x",
3661 FT_BOOLEAN, 8, NULL, 0x02,
3662 NULL, HFILL }
3664 { &hf_capwap_msg_element_type_ac_descriptor_security_r,
3665 { "Reserved", "capwap.control.message_element.ac_descriptor.security.r",
3666 FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0xF9,
3667 NULL, HFILL }
3670 { &hf_capwap_msg_element_type_ac_descriptor_rmac_field,
3671 { "R-MAC Field", "capwap.control.message_element.ac_descriptor.rmac_field",
3672 FT_UINT8, BASE_DEC, VALS(rmac_field_vals), 0x0,
3673 NULL, HFILL }
3675 { &hf_capwap_msg_element_type_ac_descriptor_reserved,
3676 { "Reserved", "capwap.control.message_element.ac_descriptor.reserved",
3677 FT_UINT8, BASE_DEC, NULL, 0x0,
3678 NULL, HFILL }
3680 /* AC Descriptor DTLS Policy Flags... */
3681 { &hf_capwap_msg_element_type_ac_descriptor_dtls_policy,
3682 { "DTLS Policy Flags", "capwap.control.message_element.ac_descriptor.dtls_policy",
3683 FT_UINT8, BASE_HEX, NULL, 0x0,
3684 NULL, HFILL }
3686 { &hf_capwap_msg_element_type_ac_descriptor_dtls_policy_d,
3687 { "DTLS-Enabled Data Channel Supported", "capwap.control.message_element.ac_descriptor.dtls_policy.d",
3688 FT_BOOLEAN, 8, NULL, 0x04,
3689 NULL, HFILL }
3691 { &hf_capwap_msg_element_type_ac_descriptor_dtls_policy_c,
3692 { "Clear Text Data Channel Supported", "capwap.control.message_element.ac_descriptor.dtls_policy.c",
3693 FT_BOOLEAN, 8, NULL, 0x02,
3694 NULL, HFILL }
3696 { &hf_capwap_msg_element_type_ac_descriptor_dtls_policy_r,
3697 { "Reserved", "capwap.control.message_element.ac_descriptor.dtls_policy.r",
3698 FT_UINT8, BASE_HEX, 0x0, 0xF9,
3699 "Must be zero", HFILL }
3702 { &hf_capwap_msg_element_type_ac_information,
3703 { "AC Information", "capwap.control.message_element.ac_information",
3704 FT_NONE, BASE_NONE, NULL, 0x0,
3705 NULL, HFILL }
3708 { &hf_capwap_msg_element_type_ac_information_vendor,
3709 { "AC Information Vendor", "capwap.control.message_element.ac_information.vendor",
3710 FT_UINT32, BASE_ENTERPRISES, STRINGS_ENTERPRISES, 0x0,
3711 NULL, HFILL }
3713 { &hf_capwap_msg_element_type_ac_information_type,
3714 { "AC Information Type", "capwap.control.message_element.ac_information.type",
3715 FT_UINT16, BASE_DEC, VALS(ac_information_type_vals), 0x0,
3716 NULL, HFILL }
3718 { &hf_capwap_msg_element_type_ac_information_length,
3719 { "AC Information Length", "capwap.control.message_element.ac_information.length",
3720 FT_UINT16, BASE_DEC, NULL, 0x0,
3721 NULL, HFILL }
3724 { &hf_capwap_msg_element_type_ac_information_value,
3725 { "AC Information Value", "capwap.control.message_element.ac_information.value",
3726 FT_BYTES, BASE_NONE, NULL, 0x0,
3727 NULL, HFILL }
3729 { &hf_capwap_msg_element_type_ac_information_hardware_version,
3730 { "AC Hardware Version", "capwap.control.message_element.ac_information.hardware_version",
3731 FT_STRING, BASE_NONE, NULL, 0x0,
3732 NULL, HFILL }
3734 { &hf_capwap_msg_element_type_ac_information_software_version,
3735 { "AC Software Version", "capwap.control.message_element.ac_information.software_version",
3736 FT_STRING, BASE_NONE, NULL, 0x0,
3737 NULL, HFILL }
3739 { &hf_capwap_msg_element_type_ac_ipv4_list,
3740 { "AC IPv4 List", "capwap.control.message_element.message_element.ac_ipv4_list",
3741 FT_IPv4, BASE_NONE, NULL, 0x0,
3742 NULL, HFILL }
3744 { &hf_capwap_msg_element_type_ac_ipv6_list,
3745 { "AC IPv6 List", "capwap.control.message_element.message_element.ac_ipv6_list",
3746 FT_IPv6, BASE_NONE, NULL, 0x0,
3747 NULL, HFILL }
3749 /* CAPWAP Control IPvX Address*/
3750 { &hf_capwap_msg_element_type_capwap_control_ipv4,
3751 { "CAPWAP Control IP Address", "capwap.control.message_element.message_element.capwap_control_ipv4",
3752 FT_IPv4, BASE_NONE, NULL, 0x0,
3753 NULL, HFILL }
3755 { &hf_capwap_msg_element_type_capwap_control_ipv6,
3756 { "CAPWAP Control IP Address", "capwap.control.message_element.message_element.capwap_control_ipv6",
3757 FT_IPv6, BASE_NONE, NULL, 0x0,
3758 NULL, HFILL }
3760 { &hf_capwap_msg_element_type_capwap_control_wtp_count,
3761 { "CAPWAP Control WTP Count", "capwap.control.message_element.capwap_control_wtp_count",
3762 FT_UINT16, BASE_DEC, NULL, 0x0,
3763 NULL, HFILL }
3765 { &hf_capwap_msg_element_type_capwap_timers_discovery,
3766 { "CAPWAP Timers Discovery (Sec)", "capwap.control.message_element.capwap_timers_discovery",
3767 FT_UINT8, BASE_DEC, NULL, 0x0,
3768 NULL, HFILL }
3770 { &hf_capwap_msg_element_type_capwap_timers_echo_request,
3771 { "CAPWAP Timers Echo Request (Sec)", "capwap.control.message_element.capwap_timers_echo_request",
3772 FT_UINT8, BASE_DEC, NULL, 0x0,
3773 NULL, HFILL }
3775 { &hf_capwap_msg_element_type_decryption_error_report_period_radio_id,
3776 { "Decryption Error Report Period Radio ID", "capwap.control.message_element.decryption_error_report_period.radio_id",
3777 FT_UINT8, BASE_DEC, NULL, 0x0,
3778 NULL, HFILL }
3780 { &hf_capwap_msg_element_type_decryption_error_report_period_interval,
3781 { "Decryption Error Report Period Interval (Sec)", "capwap.control.message_element.decryption_error_report_period.interval",
3782 FT_UINT16, BASE_DEC, NULL, 0x0,
3783 NULL, HFILL }
3785 { &hf_capwap_msg_element_type_delete_station_radio_id,
3786 { "Radio ID", "capwap.control.message_element.delete_station.radio_id",
3787 FT_UINT8, BASE_DEC, NULL, 0x0,
3788 "Representing the radio, whose value is between one (1) and 31", HFILL }
3790 { &hf_capwap_msg_element_type_delete_station_length,
3791 { "Mac Length", "capwap.control.message_element.delete_station.length",
3792 FT_UINT8, BASE_DEC, NULL, 0x0,
3793 "The length of the MAC Address field", HFILL }
3795 { &hf_capwap_msg_element_type_delete_station_mac_eui48,
3796 { "MAC address", "capwap.control.message_element.delete_station.mac.eui48",
3797 FT_ETHER, BASE_NONE, NULL, 0x0,
3798 NULL, HFILL }
3800 { &hf_capwap_msg_element_type_delete_station_mac_eui64,
3801 { "MAC address", "capwap.control.message_element.delete_station.mac.eui64",
3802 FT_EUI64, BASE_NONE, NULL, 0x0,
3803 NULL, HFILL }
3805 { &hf_capwap_msg_element_type_delete_station_mac_data,
3806 { "MAC address", "capwap.control.message_element.delete_station.mac.data",
3807 FT_BYTES, BASE_NONE, NULL, 0x0,
3808 NULL, HFILL }
3810 { &hf_capwap_msg_element_type_ac_name,
3811 { "AC Name", "capwap.control.message_element.ac_name",
3812 FT_STRING, BASE_NONE, NULL, 0x0,
3813 NULL, HFILL }
3815 { &hf_capwap_msg_element_type_ac_name_with_priority,
3816 { "AC Name Priority", "capwap.control.message_element.ac_name_with_priority",
3817 FT_UINT8, BASE_DEC, NULL, 0x0,
3818 NULL, HFILL }
3821 { &hf_capwap_msg_element_type_ac_timestamp,
3822 { "AC Timestamp", "capwap.control.message_element.ac_timestamp",
3823 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0,
3824 NULL, HFILL }
3827 { &hf_capwap_msg_element_type_add_station_radio_id,
3828 { "Radio ID", "capwap.control.message_element.add_station.radio_id",
3829 FT_UINT8, BASE_DEC, NULL, 0x0,
3830 "Representing the radio, whose value is between one (1) and 31", HFILL }
3832 { &hf_capwap_msg_element_type_add_station_length,
3833 { "Mac Length", "capwap.control.message_element.add_station.length",
3834 FT_UINT8, BASE_DEC, NULL, 0x0,
3835 "The length of the MAC Address field", HFILL }
3837 { &hf_capwap_msg_element_type_add_station_mac_eui48,
3838 { "MAC address", "capwap.control.message_element.add_station.mac.eui48",
3839 FT_ETHER, BASE_NONE, NULL, 0x0,
3840 NULL, HFILL }
3842 { &hf_capwap_msg_element_type_add_station_mac_eui64,
3843 { "MAC address", "capwap.control.message_element.add_station.mac.eui64",
3844 FT_EUI64, BASE_NONE, NULL, 0x0,
3845 NULL, HFILL }
3847 { &hf_capwap_msg_element_type_add_station_mac_data,
3848 { "MAC address", "capwap.control.message_element.add_station.mac.data",
3849 FT_BYTES, BASE_NONE, NULL, 0x0,
3850 NULL, HFILL }
3852 { &hf_capwap_msg_element_type_add_station_vlan_name,
3853 { "Vlan Name", "capwap.control.message_element.add_station.vlan_name",
3854 FT_STRING, BASE_NONE, NULL, 0x0,
3855 "Containing the VLAN Name on which the WTP is to locally bridge user data", HFILL }
3858 { &hf_capwap_msg_element_type_discovery_type,
3859 { "Discovery Type", "capwap.control.message_element.discovery_type",
3860 FT_UINT8, BASE_DEC, VALS(discovery_type_vals), 0x0,
3861 NULL, HFILL }
3864 { &hf_capwap_msg_element_type_idle_timeout,
3865 { "Idle Timeout (Sec)", "capwap.control.message_element.idle_timeout",
3866 FT_UINT32, BASE_DEC, NULL, 0x0,
3867 NULL, HFILL }
3869 { &hf_capwap_msg_element_type_location_data,
3870 { "Location Data", "capwap.control.message_element.location_data",
3871 FT_STRING, BASE_NONE, NULL, 0x0,
3872 NULL, HFILL }
3874 { &hf_capwap_msg_element_type_maximum_message_length,
3875 { "Maximum Message Length", "capwap.control.message_element.maximum_message_length",
3876 FT_UINT16, BASE_DEC, NULL, 0x0,
3877 NULL, HFILL }
3880 { &hf_capwap_msg_element_type_capwap_local_ipv4_address,
3881 { "CAPWAP Local IPv4 Address", "capwap.control.message_element.capwap_local_ipv4_address",
3882 FT_IPv4, BASE_NONE, NULL, 0x0,
3883 "The IP address of the sender", HFILL }
3887 { &hf_capwap_msg_element_type_radio_admin_id,
3888 { "Radio Administrative ID", "capwap.control.message_element.radio_admin.id",
3889 FT_UINT8, BASE_DEC, NULL, 0x0,
3890 NULL, HFILL }
3892 { &hf_capwap_msg_element_type_radio_admin_state,
3893 { "Radio Administrative State", "capwap.control.message_element.radio_admin.state",
3894 FT_UINT8, BASE_DEC, VALS(radio_admin_state_vals), 0x0,
3895 NULL, HFILL }
3897 { &hf_capwap_msg_element_type_radio_op_state_radio_id,
3898 { "Radio Operational ID", "capwap.control.message_element.radio_op_state.radio_id",
3899 FT_UINT8, BASE_DEC, NULL, 0x0,
3900 NULL, HFILL }
3902 { &hf_capwap_msg_element_type_radio_op_state_radio_state,
3903 { "Radio Operational State", "capwap.control.message_element.radio_op_state.radio_state",
3904 FT_UINT8, BASE_DEC, VALS(radio_op_state_vals), 0x0,
3905 NULL, HFILL }
3907 { &hf_capwap_msg_element_type_radio_op_state_radio_cause,
3908 { "Radio Operational Cause", "capwap.control.message_element.radio_op_state.radio_cause",
3909 FT_UINT8, BASE_DEC, VALS(radio_op_cause_vals), 0x0,
3910 NULL, HFILL }
3912 { &hf_capwap_msg_element_type_result_code,
3913 { "Result Code", "capwap.control.message_element.result_code",
3914 FT_UINT32, BASE_DEC, VALS(result_code_vals), 0x0,
3915 NULL, HFILL }
3917 { &hf_capwap_msg_element_type_session_id,
3918 { "Session ID", "capwap.control.message_element.session_id",
3919 FT_BYTES, BASE_NONE, NULL, 0x0,
3920 NULL, HFILL }
3922 { &hf_capwap_msg_element_type_statistics_timer,
3923 { "Statistics Timer (Sec)", "capwap.control.message_element.statistics_timer",
3924 FT_UINT16, BASE_DEC, NULL, 0x0,
3925 NULL, HFILL }
3927 { &hf_capwap_msg_element_type_vsp_vendor_identifier,
3928 { "Vendor Identifier", "capwap.control.message_element.vsp.vendor_identifier",
3929 FT_UINT32, BASE_ENTERPRISES, STRINGS_ENTERPRISES, 0x0,
3930 NULL, HFILL }
3932 { &hf_capwap_msg_element_type_vsp_vendor_element_id,
3933 { "Vendor Element ID", "capwap.control.message_element.vsp.vendor_element_id",
3934 FT_UINT16, BASE_DEC, NULL, 0x0,
3935 NULL, HFILL }
3937 { &hf_capwap_msg_element_type_vsp_vendor_data,
3938 { "Vendor Data", "capwap.control.message_element.vsp.vendor_data",
3939 FT_BYTES, BASE_NONE, NULL, 0x0,
3940 NULL, HFILL }
3943 { &hf_capwap_msg_element_type_wtp_board_data,
3944 { "WTP Board Data", "capwap.control.message_element.wtp_board_data",
3945 FT_NONE, BASE_NONE, NULL, 0x0,
3946 NULL, HFILL }
3948 { &hf_capwap_msg_element_type_wtp_board_data_vendor,
3949 { "WTP Board Data Vendor", "capwap.control.message_element.wtp_board_data.vendor",
3950 FT_UINT32, BASE_ENTERPRISES, STRINGS_ENTERPRISES, 0x0,
3951 NULL, HFILL }
3953 { &hf_capwap_msg_element_type_wtp_board_data_type,
3954 { "Board Data Type", "capwap.control.message_element.wtp_board_data.type",
3955 FT_UINT16, BASE_DEC, VALS(board_data_type_vals), 0x0,
3956 NULL, HFILL }
3958 { &hf_capwap_msg_element_type_wtp_board_data_length,
3959 { "Board Data Length", "capwap.control.message_element.wtp_board_data.length",
3960 FT_UINT16, BASE_DEC, NULL, 0x0,
3961 NULL, HFILL }
3963 { &hf_capwap_msg_element_type_wtp_board_data_value,
3964 { "Board Data Value", "capwap.control.message_element.wtp_board_data.value",
3965 FT_BYTES, BASE_NONE, NULL, 0x0,
3966 NULL, HFILL }
3969 { &hf_capwap_msg_element_type_wtp_board_data_wtp_model_number,
3970 { "WTP Model Number", "capwap.control.message_element.wtp_board_data.wtp_model_number",
3971 FT_STRING, BASE_NONE, NULL, 0x0,
3972 NULL, HFILL }
3974 { &hf_capwap_msg_element_type_wtp_board_data_wtp_serial_number,
3975 { "WTP Serial Number", "capwap.control.message_element.wtp_board_data.wtp_serial_number",
3976 FT_STRING, BASE_NONE, NULL, 0x0,
3977 NULL, HFILL }
3979 { &hf_capwap_msg_element_type_wtp_board_data_wtp_board_id,
3980 { "WTP Board ID", "capwap.control.message_element.wtp_board_data.wtp_board_id",
3981 FT_STRING, BASE_NONE, NULL, 0x0,
3982 NULL, HFILL }
3984 { &hf_capwap_msg_element_type_wtp_board_data_wtp_board_revision,
3985 { "WTP Board Revision", "capwap.control.message_element.wtp_board_data.wtp_board_revision",
3986 FT_STRING, BASE_NONE, NULL, 0x0,
3987 NULL, HFILL }
3989 { &hf_capwap_msg_element_type_wtp_board_data_base_mac_address,
3990 { "Base Mac Address", "capwap.control.message_element.wtp_board_data.base_mac_address",
3991 FT_ETHER, BASE_NONE, NULL, 0x0,
3992 NULL, HFILL }
3995 { &hf_capwap_msg_element_type_wtp_descriptor_max_radios,
3996 { "Max Radios", "capwap.control.message_element.wtp_descriptor.max_radios",
3997 FT_UINT8, BASE_DEC, NULL, 0x0,
3998 NULL, HFILL }
4000 { &hf_capwap_msg_element_type_wtp_descriptor_radio_in_use,
4001 { "Radio in use", "capwap.control.message_element.wtp_descriptor.radio_in_use",
4002 FT_UINT8, BASE_DEC, NULL, 0x0,
4003 NULL, HFILL }
4005 { &hf_capwap_msg_element_type_wtp_descriptor_number_encrypt,
4006 { "Encryption Capabilities (Number)", "capwap.control.message_element.wtp_descriptor.number_encrypt",
4007 FT_UINT8, BASE_DEC, NULL, 0x0,
4008 NULL, HFILL }
4010 { &hf_capwap_msg_element_type_wtp_descriptor_encrypt,
4011 { "Encryption Capabilities", "capwap.control.message_element.wtp_descriptor.encrypt",
4012 FT_NONE, BASE_NONE, NULL, 0x0,
4013 NULL, HFILL }
4015 { &hf_capwap_msg_element_type_wtp_descriptor_encrypt_reserved,
4016 { "Reserved (Encrypt)", "capwap.control.message_element.wtp_descriptor.encrypt_reserved",
4017 FT_UINT8, BASE_DEC, NULL, 0xE0,
4018 NULL, HFILL }
4020 { &hf_capwap_msg_element_type_wtp_descriptor_encrypt_wbid,
4021 { "Encrypt WBID", "capwap.control.message_element.wtp_descriptor.encrypt_wbid",
4022 FT_UINT8, BASE_DEC, VALS(type_wbid), 0x1F,
4023 NULL, HFILL }
4025 { &hf_capwap_msg_element_type_wtp_descriptor_encrypt_capabilities,
4026 { "Encryption Capabilities", "capwap.control.message_element.wtp_descriptor.encrypt_capabilities",
4027 FT_UINT16, BASE_DEC, NULL, 0x0,
4028 NULL, HFILL }
4031 { &hf_capwap_msg_element_type_wtp_descriptor,
4032 { "WTP Descriptor", "capwap.control.message_element.wtp_descriptor",
4033 FT_NONE, BASE_NONE, NULL, 0x0,
4034 NULL, HFILL }
4036 { &hf_capwap_msg_element_type_wtp_descriptor_vendor,
4037 { "WTP Descriptor Vendor", "capwap.control.message_element.wtp_descriptor.vendor",
4038 FT_UINT32, BASE_ENTERPRISES, STRINGS_ENTERPRISES, 0x0,
4039 NULL, HFILL }
4041 { &hf_capwap_msg_element_type_wtp_descriptor_type,
4042 { "Descriptor Type", "capwap.control.message_element.wtp_descriptor.type",
4043 FT_UINT16, BASE_DEC, VALS(wtp_descriptor_type_vals), 0x0,
4044 NULL, HFILL }
4046 { &hf_capwap_msg_element_type_wtp_descriptor_length,
4047 { "Descriptor Length", "capwap.control.message_element.wtp_descriptor.length",
4048 FT_UINT16, BASE_DEC, NULL, 0x0,
4049 NULL, HFILL }
4051 { &hf_capwap_msg_element_type_wtp_descriptor_value,
4052 { "Descriptor Value", "capwap.control.message_element.wtp_descriptor.value",
4053 FT_BYTES, BASE_NONE, NULL, 0x0,
4054 NULL, HFILL }
4056 { &hf_capwap_msg_element_type_wtp_descriptor_hardware_version,
4057 { "WTP Hardware Version", "capwap.control.message_element.wtp_descriptor.hardware_version",
4058 FT_STRING, BASE_NONE, NULL, 0x0,
4059 NULL, HFILL }
4061 { &hf_capwap_msg_element_type_wtp_descriptor_active_software_version,
4062 { "WTP Active Software Version", "capwap.control.message_element.wtp_descriptor.active_software_version",
4063 FT_STRING, BASE_NONE, NULL, 0x0,
4064 NULL, HFILL }
4066 { &hf_capwap_msg_element_type_wtp_descriptor_boot_version,
4067 { "WTP Boot Version", "capwap.control.message_element.wtp_descriptor.boot_version",
4068 FT_STRING, BASE_NONE, NULL, 0x0,
4069 NULL, HFILL }
4071 { &hf_capwap_msg_element_type_wtp_descriptor_other_software_version,
4072 { "WTP Other Software Version", "capwap.control.message_element.wtp_descriptor.other_software_version",
4073 FT_STRING, BASE_NONE, NULL, 0x0,
4074 NULL, HFILL }
4076 { &hf_capwap_msg_element_type_wtp_fallback,
4077 { "WTP Fallback", "capwap.control.message_element.wtp_fallback",
4078 FT_UINT8, BASE_DEC, VALS(wtp_fallback_vals), 0x0,
4079 NULL, HFILL }
4082 { &hf_capwap_msg_element_type_wtp_frame_tunnel_mode,
4083 { "WTP Frame Tunnel Mode", "capwap.control.message_element.wtp_frame_tunnel_mode",
4084 FT_UINT8, BASE_HEX, NULL, 0x0,
4085 NULL, HFILL }
4087 { &hf_capwap_msg_element_type_wtp_frame_tunnel_mode_n,
4088 { "Native Frame Tunnel Mode", "capwap.control.message_element.wtp_frame_tunnel_mode.n",
4089 FT_BOOLEAN, 8, NULL, 0x08,
4090 NULL, HFILL }
4092 { &hf_capwap_msg_element_type_wtp_frame_tunnel_mode_e,
4093 { "802.3 Frame Tunnel Mode", "capwap.control.message_element.wtp_frame_tunnel_mode.e",
4094 FT_BOOLEAN, 8, NULL, 0x04,
4095 NULL, HFILL }
4097 { &hf_capwap_msg_element_type_wtp_frame_tunnel_mode_l,
4098 { "Local Bridging", "capwap.control.message_element.wtp_frame_tunnel_mode.l",
4099 FT_BOOLEAN, 8, NULL, 0x02,
4100 NULL, HFILL }
4102 { &hf_capwap_msg_element_type_wtp_frame_tunnel_mode_r,
4103 { "Reserved", "capwap.control.message_element.wtp_frame_tunnel_mode.r",
4104 FT_UINT8, BASE_HEX, 0x0, 0xF1,
4105 NULL, HFILL }
4108 { &hf_capwap_msg_element_type_wtp_mac_type,
4109 { "WTP MAC Type", "capwap.control.message_element.wtp_mac_type",
4110 FT_UINT8, BASE_DEC, VALS(wtp_mac_vals), 0x0,
4111 "The MAC mode of operation supported by the WTP", HFILL }
4113 { &hf_capwap_msg_element_type_wtp_name,
4114 { "WTP Name", "capwap.control.message_element.wtp_name",
4115 FT_STRING, BASE_NONE, NULL, 0x0,
4116 NULL, HFILL }
4118 { &hf_capwap_msg_element_type_wtp_reboot_statistics_reboot_count,
4119 { "Reboot Count", "capwap.control.message_element.wtp_reboot_statistics.reboot_count",
4120 FT_UINT16, BASE_DEC, NULL, 0x0,
4121 "The number of reboots that have occurred due to a WTP crash", HFILL }
4123 { &hf_capwap_msg_element_type_wtp_reboot_statistics_ac_initiated_count,
4124 { "AC Initiated Count", "capwap.control.message_element.wtp_reboot_statistics.ac_initiated_count",
4125 FT_UINT16, BASE_DEC, NULL, 0x0,
4126 "The number of reboots that have occurred at the request of a CAPWAP protocol message", HFILL }
4128 { &hf_capwap_msg_element_type_wtp_reboot_statistics_link_failure_count,
4129 { "Link Failure Count", "capwap.control.message_element.wtp_reboot_statistics.link_failure_count",
4130 FT_UINT16, BASE_DEC, NULL, 0x0,
4131 "The number of times that a CAPWAP protocol connection with an AC has failed due to link failure", HFILL }
4133 { &hf_capwap_msg_element_type_wtp_reboot_statistics_sw_failure_count,
4134 { "SW Failure Count", "capwap.control.message_element.wtp_reboot_statistics.sw_failure_count",
4135 FT_UINT16, BASE_DEC, NULL, 0x0,
4136 "The number of times that a CAPWAP protocol connection with an AC has failed due to software-related reasons", HFILL }
4138 { &hf_capwap_msg_element_type_wtp_reboot_statistics_hw_failure_count,
4139 { "HW Failure Count", "capwap.control.message_element.wtp_reboot_statistics.hw_failure_count",
4140 FT_UINT16, BASE_DEC, NULL, 0x0,
4141 "The number of times that a CAPWAP protocol connection with an AC has failed due to hardware-related reasons", HFILL }
4143 { &hf_capwap_msg_element_type_wtp_reboot_statistics_other_failure_count,
4144 { "Other Failure Count", "capwap.control.message_element.wtp_reboot_statistics.other_failure_count",
4145 FT_UINT16, BASE_DEC, NULL, 0x0,
4146 "The number of times that a CAPWAP protocol connection with an AC has failed due to known reasons, other than AC initiated, link, SW or HW failure", HFILL }
4148 { &hf_capwap_msg_element_type_wtp_reboot_statistics_unknown_failure_count,
4149 { "Unknown Failure Count", "capwap.control.message_element.wtp_reboot_statistics.unknown_failure_count",
4150 FT_UINT16, BASE_DEC, NULL, 0x0,
4151 "The number of times that a CAPWAP protocol connection with an AC has failed for unknown reasons", HFILL }
4153 { &hf_capwap_msg_element_type_wtp_reboot_statistics_last_failure_type,
4154 { "Last Failure Type", "capwap.control.message_element.wtp_reboot_statistics.last_failure_type",
4155 FT_UINT8, BASE_DEC, VALS(last_failure_type_vals), 0x0,
4156 "The failure type of the most recent WTP failure", HFILL }
4159 { &hf_capwap_msg_element_type_capwap_local_ipv6_address,
4160 { "CAPWAP Local IPv6 Address", "capwap.control.message_element.capwap_local_ipv6_address",
4161 FT_IPv6, BASE_NONE, NULL, 0x0,
4162 "The IP address of the sender", HFILL }
4165 { &hf_capwap_msg_element_type_capwap_transport_protocol,
4166 { "CAPWAP Transport Protocol", "capwap.control.message_element.capwap_transport_protocol",
4167 FT_UINT8, BASE_DEC, VALS(capwap_transport_protocol_vals), 0x0,
4168 "The transport to use for the CAPWAP Data channel", HFILL }
4171 { &hf_capwap_msg_element_type_mtu_discovery_padding,
4172 { "MTU Discovery Padding", "capwap.control.message_element.mtu_discovery_padding",
4173 FT_BYTES, BASE_NONE, NULL, 0x0,
4174 "A variable-length pad, filled with the value 0xFF", HFILL }
4177 { &hf_capwap_msg_element_type_ecn_support,
4178 { "ECN Support", "capwap.control.message_element.ecn_support",
4179 FT_UINT8, BASE_DEC, VALS(ecn_support_vals), 0x0,
4180 "The sender's support for ECN, as defined in [RFC3168]", HFILL }
4184 /* Message element type IEEE80211 : RFC 5416 Section 6 */
4185 { &hf_capwap_msg_element_type_ieee80211_add_wlan_radio_id,
4186 { "Radio ID", "capwap.control.message_element.ieee80211_add_wlan.radio_id",
4187 FT_UINT8, BASE_DEC, NULL, 0x0,
4188 NULL, HFILL }
4190 { &hf_capwap_msg_element_type_ieee80211_add_wlan_wlan_id,
4191 { "WLAN ID", "capwap.control.message_element.ieee80211_add_wlan.wlan_id",
4192 FT_UINT8, BASE_DEC, NULL, 0x0,
4193 NULL, HFILL }
4195 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability,
4196 { "Capability", "capwap.control.message_element.ieee80211_add_wlan.capability",
4197 FT_UINT16, BASE_HEX, NULL, 0x0,
4198 NULL, HFILL }
4200 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_e,
4201 { "ESS", "capwap.control.message_element.ieee80211_add_wlan.capability.e",
4202 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x8000,
4203 NULL, HFILL }
4205 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_i,
4206 { "IBSS", "capwap.control.message_element.ieee80211_add_wlan.capability.i",
4207 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x4000,
4208 NULL, HFILL }
4210 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_c,
4211 { "CF-Pollable", "capwap.control.message_element.ieee80211_add_wlan.capability.c",
4212 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x2000,
4213 NULL, HFILL }
4215 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_f,
4216 { "CF-Poll Request", "capwap.control.message_element.ieee80211_add_wlan.capability.f",
4217 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x1000,
4218 NULL, HFILL }
4220 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_p,
4221 { "Privacy", "capwap.control.message_element.ieee80211_add_wlan.capability.p",
4222 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0800,
4223 NULL, HFILL }
4225 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_s,
4226 { "Short Preamble", "capwap.control.message_element.ieee80211_add_wlan.capability.s",
4227 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0400,
4228 NULL, HFILL }
4230 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_b,
4231 { "PBCC", "capwap.control.message_element.ieee80211_add_wlan.capability.b",
4232 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0200,
4233 NULL, HFILL }
4235 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_a,
4236 { "Channel Agility", "capwap.control.message_element.ieee80211_add_wlan.capability.a",
4237 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0100,
4238 NULL, HFILL }
4240 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_m,
4241 { "Spectrum Management", "capwap.control.message_element.ieee80211_add_wlan.capability.m",
4242 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0080,
4243 NULL, HFILL }
4245 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_q,
4246 { "QoS", "capwap.control.message_element.ieee80211_add_wlan.capability.q",
4247 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0040,
4248 NULL, HFILL }
4250 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_t,
4251 { "Short Slot Time", "capwap.control.message_element.ieee80211_add_wlan.capability.t",
4252 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0020,
4253 NULL, HFILL }
4255 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_d,
4256 { "APSD", "capwap.control.message_element.ieee80211_add_wlan.capability.d",
4257 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0010,
4258 NULL, HFILL }
4260 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_v,
4261 { "Reserved", "capwap.control.message_element.ieee80211_add_wlan.capability.v",
4262 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0008,
4263 NULL, HFILL }
4265 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_o,
4266 { "DSSS-OFDM", "capwap.control.message_element.ieee80211_add_wlan.capability.o",
4267 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0004,
4268 NULL, HFILL }
4270 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_k,
4271 { "Delayed Block ACK", "capwap.control.message_element.ieee80211_add_wlan.capability.k",
4272 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0002,
4273 NULL, HFILL }
4275 { &hf_capwap_msg_element_type_ieee80211_add_wlan_capability_l,
4276 { "Immediate Block ACK", "capwap.control.message_element.ieee80211_add_wlan.capability.l",
4277 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0001,
4278 NULL, HFILL }
4280 { &hf_capwap_msg_element_type_ieee80211_add_wlan_key_index,
4281 { "Key-Index", "capwap.control.message_element.ieee80211_add_wlan.key_index",
4282 FT_UINT8, BASE_DEC, NULL, 0x0,
4283 NULL, HFILL }
4285 { &hf_capwap_msg_element_type_ieee80211_add_wlan_key_status,
4286 { "Key Status", "capwap.control.message_element.ieee80211_add_wlan.key_status",
4287 FT_UINT8, BASE_DEC, VALS(ieee80211_wlan_key_status_vals), 0x0,
4288 NULL, HFILL }
4290 { &hf_capwap_msg_element_type_ieee80211_add_wlan_key_length,
4291 { "Key Length", "capwap.control.message_element.ieee80211_add_wlan.key_length",
4292 FT_UINT16, BASE_DEC, NULL, 0x0,
4293 NULL, HFILL }
4295 { &hf_capwap_msg_element_type_ieee80211_add_wlan_key,
4296 { "Key", "capwap.control.message_element.ieee80211_add_wlan.key",
4297 FT_BYTES, BASE_NONE, NULL, 0x0,
4298 NULL, HFILL }
4300 { &hf_capwap_msg_element_type_ieee80211_add_wlan_group_tsc,
4301 { "Group TSC", "capwap.control.message_element.ieee80211_add_wlan.group_tsc",
4302 FT_UINT64, BASE_DEC, NULL, 0x00FFFFFF,
4303 NULL, HFILL }
4305 { &hf_capwap_msg_element_type_ieee80211_add_wlan_qos,
4306 { "QoS", "capwap.control.message_element.ieee80211_add_wlan.qos",
4307 FT_UINT8, BASE_DEC, VALS(ieee80211_add_wlan_qos_vals), 0x0,
4308 NULL, HFILL }
4310 { &hf_capwap_msg_element_type_ieee80211_add_wlan_auth_type,
4311 { "Auth Type", "capwap.control.message_element.ieee80211_add_wlan.auth_type",
4312 FT_UINT8, BASE_DEC, VALS(ieee80211_add_wlan_auth_type_vals), 0x0,
4313 NULL, HFILL }
4315 { &hf_capwap_msg_element_type_ieee80211_add_wlan_mac_mode,
4316 { "MAC Mode", "capwap.control.message_element.ieee80211_add_wlan.mac_mode",
4317 FT_UINT8, BASE_DEC, VALS(ieee80211_add_wlan_mac_mode_vals), 0x0,
4318 NULL, HFILL }
4320 { &hf_capwap_msg_element_type_ieee80211_add_wlan_tunnel_mode,
4321 { "Tunnel Mode", "capwap.control.message_element.ieee80211_add_wlan.tunnel_mode",
4322 FT_UINT8, BASE_DEC, VALS(ieee80211_add_wlan_tunnel_mode_vals), 0x0,
4323 NULL, HFILL }
4325 { &hf_capwap_msg_element_type_ieee80211_add_wlan_suppress_ssid,
4326 { "Suppress SSID", "capwap.control.message_element.ieee80211_add_wlan.suppress_ssid",
4327 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01,
4328 NULL, HFILL }
4330 { &hf_capwap_msg_element_type_ieee80211_add_wlan_ssid,
4331 { "SSID", "capwap.control.message_element.ieee80211_add_wlan.ssid",
4332 FT_STRING, BASE_NONE, NULL, 0x0,
4333 NULL, HFILL }
4335 { &hf_capwap_msg_element_type_ieee80211_antenna_radio_id,
4336 { "Radio ID", "capwap.control.message_element.ieee80211_antenna.radio_id",
4337 FT_UINT8, BASE_DEC, NULL, 0x0,
4338 NULL, HFILL }
4340 { &hf_capwap_msg_element_type_ieee80211_antenna_diversity,
4341 { "Diversity", "capwap.control.message_element.ieee80211_antenna.diversity",
4342 FT_UINT8, BASE_DEC, VALS(ieee80211_antenna_diversity_vals), 0x0,
4343 NULL, HFILL }
4345 { &hf_capwap_msg_element_type_ieee80211_antenna_combiner,
4346 { "Combiner", "capwap.control.message_element.ieee80211_antenna.combiner",
4347 FT_UINT8, BASE_DEC, VALS(ieee80211_antenna_combiner_vals), 0x0,
4348 NULL, HFILL }
4350 { &hf_capwap_msg_element_type_ieee80211_antenna_count,
4351 { "Antenna Count", "capwap.control.message_element.ieee80211_antenna.count",
4352 FT_UINT8, BASE_DEC, NULL, 0x0,
4353 NULL, HFILL }
4355 { &hf_capwap_msg_element_type_ieee80211_antenna_selection,
4356 { "Selection", "capwap.control.message_element.ieee80211_antenna.selection",
4357 FT_UINT8, BASE_DEC, VALS(ieee80211_antenna_selection_vals), 0x0,
4358 NULL, HFILL }
4360 { &hf_capwap_msg_element_type_ieee80211_assigned_wtp_bssid_radio_id,
4361 { "Radio ID", "capwap.control.message_element.ieee80211_assigned_wtp_bssid.radio_id",
4362 FT_UINT8, BASE_DEC, NULL, 0x0,
4363 NULL, HFILL }
4365 { &hf_capwap_msg_element_type_ieee80211_assigned_wtp_bssid_wlan_id,
4366 { "WLAN ID", "capwap.control.message_element.ieee80211_assigned_wtp_bssid.wlan_id",
4367 FT_UINT8, BASE_DEC, NULL, 0x0,
4368 NULL, HFILL }
4370 { &hf_capwap_msg_element_type_ieee80211_assigned_wtp_bssid_bssid,
4371 { "BSSID", "capwap.control.message_element.ieee80211_assigned_wtp_bssid.bssid",
4372 FT_ETHER, BASE_NONE, NULL, 0x0,
4373 NULL, HFILL }
4375 { &hf_capwap_msg_element_type_ieee80211_delete_wlan_radio_id,
4376 { "Radio ID", "capwap.control.message_element.ieee80211_delete_wlan.radio_id",
4377 FT_UINT8, BASE_DEC, NULL, 0x0,
4378 NULL, HFILL }
4380 { &hf_capwap_msg_element_type_ieee80211_delete_wlan_wlan_id,
4381 { "WLAN ID", "capwap.control.message_element.ieee80211_delete_wlan.wlan_id",
4382 FT_UINT8, BASE_DEC, NULL, 0x0,
4383 NULL, HFILL }
4385 { &hf_capwap_msg_element_type_ieee80211_direct_sequence_control_radio_id,
4386 { "Radio ID", "capwap.control.message_element.ieee80211_direct_sequence_control.radio_id",
4387 FT_UINT8, BASE_DEC, NULL, 0x0,
4388 NULL, HFILL }
4390 { &hf_capwap_msg_element_type_ieee80211_direct_sequence_control_reserved,
4391 { "Reserved", "capwap.control.message_element.ieee80211_direct_sequence_control.reserved",
4392 FT_UINT8, BASE_HEX, NULL, 0x0,
4393 NULL, HFILL }
4395 { &hf_capwap_msg_element_type_ieee80211_direct_sequence_control_current_channel,
4396 { "Current Channel", "capwap.control.message_element.ieee80211_direct_sequence_control.current_channel",
4397 FT_UINT8, BASE_DEC, NULL, 0x0,
4398 NULL, HFILL }
4400 { &hf_capwap_msg_element_type_ieee80211_direct_sequence_control_current_cca,
4401 { "Current CCA", "capwap.control.message_element.ieee80211_direct_sequence_control.current_cca",
4402 FT_UINT8, BASE_DEC, NULL, 0x0,
4403 NULL, HFILL }
4405 { &hf_capwap_msg_element_type_ieee80211_direct_sequence_control_energy_detect_threshold,
4406 { "Energy Detect Threshold", "capwap.control.message_element.ieee80211_direct_sequence_control.energy_detect_threshold",
4407 FT_UINT32, BASE_DEC, NULL, 0x0,
4408 NULL, HFILL }
4410 { &hf_capwap_msg_element_type_ieee80211_ie_radio_id,
4411 { "Radio ID", "capwap.control.message_element.ieee80211_ie.radio_id",
4412 FT_UINT8, BASE_DEC, NULL, 0x0,
4413 NULL, HFILL }
4415 { &hf_capwap_msg_element_type_ieee80211_ie_wlan_id,
4416 { "WLAN ID", "capwap.control.message_element.ieee80211_ie.wlan_id",
4417 FT_UINT8, BASE_DEC, NULL, 0x0,
4418 NULL, HFILL }
4420 { &hf_capwap_msg_element_type_ieee80211_ie_flags,
4421 { "Flags", "capwap.control.message_element.ieee80211_ie.flags",
4422 FT_UINT8, BASE_HEX, NULL, 0x0,
4423 NULL, HFILL }
4425 { &hf_capwap_msg_element_type_ieee80211_ie_flags_b,
4426 { "Include IE in Beacons", "capwap.control.message_element.ieee80211_ie.flags.b",
4427 FT_BOOLEAN, 8, NULL, 0x80,
4428 "When set, the WTP is to include the Information Element in IEEE 802.11 Beacons associated with the WLAN", HFILL }
4430 { &hf_capwap_msg_element_type_ieee80211_ie_flags_p,
4431 { "Include IE in Probe Responses", "capwap.control.message_element.ieee80211_ie.flags.p",
4432 FT_BOOLEAN, 8, NULL, 0x40,
4433 "When set, the WTP is to include the Information Element in Probe Responses associated with the WLAN", HFILL }
4435 { &hf_capwap_msg_element_type_ieee80211_ie_flags_rsv,
4436 { "Reserved", "capwap.control.message_element.ieee80211_ie.flags.rsv",
4437 FT_UINT8, BASE_HEX, NULL, 0x3F,
4438 "Must be Zero", HFILL }
4440 { &hf_capwap_msg_element_type_ieee80211_mac_operation_radio_id,
4441 { "Radio ID", "capwap.control.message_element.ieee80211_mac_operation.radio_id",
4442 FT_UINT8, BASE_DEC, NULL, 0x0,
4443 NULL, HFILL }
4445 { &hf_capwap_msg_element_type_ieee80211_mac_operation_reserved,
4446 { "Reserved", "capwap.control.message_element.ieee80211_mac_operation.reserved",
4447 FT_UINT8, BASE_HEX, NULL, 0x0,
4448 NULL, HFILL }
4450 { &hf_capwap_msg_element_type_ieee80211_mac_operation_rts_threshold,
4451 { "RTS Threshold", "capwap.control.message_element.ieee80211_mac_operation.rts_threshold",
4452 FT_UINT16, BASE_DEC, NULL, 0x0,
4453 NULL, HFILL }
4455 { &hf_capwap_msg_element_type_ieee80211_mac_operation_short_retry,
4456 { "Short Retry", "capwap.control.message_element.ieee80211_mac_operation.short_retry",
4457 FT_UINT8, BASE_DEC, NULL, 0x0,
4458 NULL, HFILL }
4460 { &hf_capwap_msg_element_type_ieee80211_mac_operation_long_retry,
4461 { "Long Retry", "capwap.control.message_element.ieee80211_mac_operation.long_retry",
4462 FT_UINT8, BASE_DEC, NULL, 0x0,
4463 NULL, HFILL }
4465 { &hf_capwap_msg_element_type_ieee80211_mac_operation_fragmentation_threshold,
4466 { "Fragmentation Threshold", "capwap.control.message_element.ieee80211_mac_operation.fragmentation_threshold",
4467 FT_UINT16, BASE_DEC, NULL, 0x0,
4468 NULL, HFILL }
4470 { &hf_capwap_msg_element_type_ieee80211_mac_operation_tx_msdu_lifetime,
4471 { "Tx MDSU Lifetime", "capwap.control.message_element.ieee80211_mac_operation.tx_msdu_lifetime",
4472 FT_UINT32, BASE_DEC, NULL, 0x0,
4473 NULL, HFILL }
4475 { &hf_capwap_msg_element_type_ieee80211_mac_operation_rx_msdu_lifetime,
4476 { "Rx MDSU Lifetime", "capwap.control.message_element.ieee80211_mac_operation.rx_msdu_lifetime",
4477 FT_UINT32, BASE_DEC, NULL, 0x0,
4478 NULL, HFILL }
4480 { &hf_capwap_msg_element_type_ieee80211_mic_countermeasures_radio_id,
4481 { "Radio ID", "capwap.control.message_element.ieee80211_mic_countermeasures.radio_id",
4482 FT_UINT8, BASE_DEC, NULL, 0x0,
4483 NULL, HFILL }
4485 { &hf_capwap_msg_element_type_ieee80211_mic_countermeasures_wlan_id,
4486 { "WLAN ID", "capwap.control.message_element.ieee80211_mic_countermeasures.wlan_id",
4487 FT_UINT8, BASE_DEC, NULL, 0x0,
4488 NULL, HFILL }
4490 { &hf_capwap_msg_element_type_ieee80211_mic_countermeasures_mac_address,
4491 { "MAC Address", "capwap.control.message_element.ieee80211_mic_countermeasures.mac_address",
4492 FT_ETHER, BASE_NONE, NULL, 0x0,
4493 NULL, HFILL }
4495 { &hf_capwap_msg_element_type_ieee80211_multi_domain_capability_radio_id,
4496 { "Radio ID", "capwap.control.message_element.ieee80211_multi_domain_capability.radio_id",
4497 FT_UINT8, BASE_DEC, NULL, 0x0,
4498 NULL, HFILL }
4500 { &hf_capwap_msg_element_type_ieee80211_multi_domain_capability_reserved,
4501 { "Reserved", "capwap.control.message_element.ieee80211_multi_domain_capability.reserved",
4502 FT_UINT8, BASE_HEX, NULL, 0x0,
4503 NULL, HFILL }
4505 { &hf_capwap_msg_element_type_ieee80211_multi_domain_capability_first_channel,
4506 { "First Channel", "capwap.control.message_element.ieee80211_multi_domain_capability.first_channel",
4507 FT_UINT16, BASE_DEC, NULL, 0x0,
4508 NULL, HFILL }
4510 { &hf_capwap_msg_element_type_ieee80211_multi_domain_capability_number_of_channels,
4511 { "Number of Channels", "capwap.control.message_element.ieee80211_multi_domain_capability.number_of_channels",
4512 FT_UINT16, BASE_DEC, NULL, 0x0,
4513 NULL, HFILL }
4515 { &hf_capwap_msg_element_type_ieee80211_multi_domain_capability_max_tx_power_level,
4516 { "Max TX Power Level", "capwap.control.message_element.ieee80211_multi_domain_capability.max_tx_power_level",
4517 FT_UINT16, BASE_DEC, NULL, 0x0,
4518 NULL, HFILL }
4521 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_radio_id,
4522 { "Radio ID", "capwap.control.message_element.ieee80211_ofdm_control.radio_id",
4523 FT_UINT8, BASE_DEC, NULL, 0x0,
4524 NULL, HFILL }
4526 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_reserved,
4527 { "Reserved", "capwap.control.message_element.ieee80211_ofdm_control.reserved",
4528 FT_UINT8, BASE_HEX, NULL, 0x0,
4529 NULL, HFILL }
4531 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_current_channel,
4532 { "Current Channel", "capwap.control.message_element.ieee80211_ofdm_control.current_channel",
4533 FT_UINT8, BASE_DEC, NULL, 0x0,
4534 NULL, HFILL }
4536 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support,
4537 { "Band Support", "capwap.control.message_element.ieee80211_ofdm_control.band_support",
4538 FT_UINT8, BASE_HEX, NULL, 0x0,
4539 NULL, HFILL }
4541 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit0,
4542 { "Operating in the 5.15-5.25 GHz band", "capwap.control.message_element.ieee80211_ofdm_control.band_support.bit0",
4543 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01,
4544 NULL, HFILL }
4546 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit1,
4547 { "Operating in the 5.25-5.35 GHz band", "capwap.control.message_element.ieee80211_ofdm_control.band_support.bit1",
4548 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x02,
4549 NULL, HFILL }
4551 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit2,
4552 { "Operating in the 5.725-5.825 GHz band", "capwap.control.message_element.ieee80211_ofdm_control.band_support.bit2",
4553 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x04,
4554 NULL, HFILL }
4556 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit3,
4557 { "Operating in the 5.47-5.725 GHz band", "capwap.control.message_element.ieee80211_ofdm_control.band_support.bit3",
4558 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x08,
4559 NULL, HFILL }
4561 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit4,
4562 { "Operating in the lower Japanese 5.25 GHz band", "capwap.control.message_element.ieee80211_ofdm_control.band_support.bit4",
4563 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10,
4564 NULL, HFILL }
4566 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit5,
4567 { "Operating in the l5.03-5.091 GHz band", "capwap.control.message_element.ieee80211_ofdm_control.band_support.bit5",
4568 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20,
4569 NULL, HFILL }
4571 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit6,
4572 { "Operating in the l5.03-5.091 GHz band", "capwap.control.message_element.ieee80211_ofdm_control.band_support.bit5",
4573 FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40,
4574 NULL, HFILL }
4576 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_band_support_bit7,
4577 { "Reserved", "capwap.control.message_element.ieee80211_ofdm_control.band_support.bit7",
4578 FT_UINT8, BASE_HEX, NULL, 0x80,
4579 NULL, HFILL }
4581 { &hf_capwap_msg_element_type_ieee80211_ofdm_control_ti_threshold,
4582 { "TI Threshold", "capwap.control.message_element.ieee80211_mofdm_control.ti_threshold",
4583 FT_UINT32, BASE_DEC, NULL, 0x0,
4584 NULL, HFILL }
4587 { &hf_capwap_msg_element_type_ieee80211_rate_set_radio_id,
4588 { "Radio ID", "capwap.control.message_element.ieee80211_rate_set.radio_id",
4589 FT_UINT8, BASE_DEC, NULL, 0x0,
4590 NULL, HFILL }
4592 { &hf_capwap_msg_element_type_ieee80211_rate_set_rate_set,
4593 { "Rate Set", "capwap.control.message_element.ieee80211_rate_set.rate_set",
4594 FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_supported_rates_vals_ext, 0x0,
4595 "In Mbit/sec, (B) for Basic Rates", HFILL }
4597 { &hf_capwap_msg_element_type_ieee80211_station_radio_id,
4598 { "Radio ID", "capwap.control.message_element.ieee80211_station.radio_id",
4599 FT_UINT8, BASE_DEC, NULL, 0x0,
4600 NULL, HFILL }
4602 { &hf_capwap_msg_element_type_ieee80211_station_association_id,
4603 { "Association ID", "capwap.control.message_element.ieee80211_station.association_id",
4604 FT_UINT16, BASE_DEC, NULL, 0x0,
4605 NULL, HFILL }
4607 { &hf_capwap_msg_element_type_ieee80211_station_flags,
4608 { "Flags", "capwap.control.message_element.ieee80211_station.flags",
4609 FT_UINT8, BASE_HEX, NULL, 0x0,
4610 NULL, HFILL }
4612 { &hf_capwap_msg_element_type_ieee80211_station_mac_address,
4613 { "MAC Address", "capwap.control.message_element.ieee80211_station.mac_address",
4614 FT_ETHER, BASE_NONE, NULL, 0x0,
4615 NULL, HFILL }
4617 { &hf_capwap_msg_element_type_ieee80211_station_capabilities,
4618 { "Capabilities", "capwap.control.message_element.ieee80211_station.capabilities",
4619 FT_UINT16, BASE_HEX, NULL, 0x0,
4620 NULL, HFILL }
4622 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_e,
4623 { "ESS", "capwap.control.message_element.ieee80211_station.capabilities.e",
4624 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x8000,
4625 NULL, HFILL }
4627 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_i,
4628 { "IBSS", "capwap.control.message_element.ieee80211_station.capabilities.i",
4629 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x4000,
4630 NULL, HFILL }
4632 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_c,
4633 { "CF-Pollable", "capwap.control.message_element.ieee80211_station.capabilities.c",
4634 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x2000,
4635 NULL, HFILL }
4637 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_f,
4638 { "CF-Poll Request", "capwap.control.message_element.ieee80211_station.capabilities.f",
4639 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x1000,
4640 NULL, HFILL }
4642 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_p,
4643 { "Privacy", "capwap.control.message_element.ieee80211_station.capabilities.p",
4644 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0800,
4645 NULL, HFILL }
4647 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_s,
4648 { "Short Preamble", "capwap.control.message_element.ieee80211_station.capabilities.s",
4649 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0400,
4650 NULL, HFILL }
4652 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_b,
4653 { "PBCC", "capwap.control.message_element.ieee80211_station.capabilities.b",
4654 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0200,
4655 NULL, HFILL }
4657 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_a,
4658 { "Channel Agility", "capwap.control.message_element.ieee80211_station.capabilities.a",
4659 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0100,
4660 NULL, HFILL }
4662 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_m,
4663 { "Spectrum Management", "capwap.control.message_element.ieee80211_station.capabilities.m",
4664 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0080,
4665 NULL, HFILL }
4667 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_q,
4668 { "QoS", "capwap.control.message_element.ieee80211_station.capabilities.q",
4669 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0040,
4670 NULL, HFILL }
4672 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_t,
4673 { "Short Slot Time", "capwap.control.message_element.ieee80211_station.capabilities.t",
4674 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0020,
4675 NULL, HFILL }
4677 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_d,
4678 { "APSD", "capwap.control.message_element.ieee80211_station.capabilities.d",
4679 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0010,
4680 NULL, HFILL }
4682 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_v,
4683 { "Reserved", "capwap.control.message_element.ieee80211_station.capabilities.v",
4684 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0008,
4685 NULL, HFILL }
4687 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_o,
4688 { "DSSS-OFDM", "capwap.control.message_element.ieee80211_station.capabilities.o",
4689 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0004,
4690 NULL, HFILL }
4692 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_k,
4693 { "Delayed Block ACK", "capwap.control.message_element.ieee80211_station.capabilities.k",
4694 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0002,
4695 NULL, HFILL }
4697 { &hf_capwap_msg_element_type_ieee80211_station_capabilities_l,
4698 { "Immediate Block ACK", "capwap.control.message_element.ieee80211_station.capabilities.l",
4699 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0001,
4700 NULL, HFILL }
4702 { &hf_capwap_msg_element_type_ieee80211_station_wlan_id,
4703 { "WLAN ID", "capwap.control.message_element.ieee80211_station.wlan_id",
4704 FT_UINT8, BASE_DEC, NULL, 0x0,
4705 NULL, HFILL }
4707 { &hf_capwap_msg_element_type_ieee80211_station_supported_rates,
4708 { "Supported Rates", "capwap.control.message_element.ieee80211_station.supported_rates",
4709 FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_supported_rates_vals_ext, 0x0,
4710 "In Mbit/sec, (B) for Basic Rates", HFILL }
4712 { &hf_capwap_msg_element_type_ieee80211_station_session_key_mac,
4713 { "Mac Address", "capwap.control.message_element.ieee80211_station_session_key.mac",
4714 FT_ETHER, BASE_NONE, NULL, 0x0,
4715 "The station's MAC Address", HFILL }
4717 { &hf_capwap_msg_element_type_ieee80211_station_session_key_flags,
4718 { "Flags", "capwap.control.message_element.ieee80211_station_session_key.flags",
4719 FT_UINT16, BASE_DEC, NULL, 0x3FFF,
4720 NULL, HFILL }
4722 { &hf_capwap_msg_element_type_ieee80211_station_session_key_flags_a,
4723 { "Flag A", "capwap.control.message_element.ieee80211_station_session_key.flags_a",
4724 FT_BOOLEAN, 16, NULL, 0x2000,
4725 NULL, HFILL }
4727 { &hf_capwap_msg_element_type_ieee80211_station_session_key_flags_c,
4728 { "Flag C", "capwap.control.message_element.ieee80211_station_session_key.flags_c",
4729 FT_BOOLEAN, 16, NULL, 0x1000,
4730 NULL, HFILL }
4732 { &hf_capwap_msg_element_type_ieee80211_station_session_key_pairwire_tsc,
4733 { "Pairwise TSC", "capwap.control.message_element.ieee80211_station_session_key.pairwire_tsc",
4734 FT_BYTES, BASE_NONE, NULL, 0x0,
4735 "Transmit Sequence Counter (TSC)", HFILL }
4737 { &hf_capwap_msg_element_type_ieee80211_station_session_key_pairwire_rsc,
4738 { "Pairwise RSC", "capwap.control.message_element.ieee80211_station_session_key.pairwire_rsc",
4739 FT_BYTES, BASE_NONE, NULL, 0x0,
4740 "Receive Sequence Counter (TSC)", HFILL }
4742 { &hf_capwap_msg_element_type_ieee80211_station_session_key_key,
4743 { "Key", "capwap.control.message_element.ieee80211_station_session_key.key",
4744 FT_BYTES, BASE_NONE, NULL, 0x0,
4745 NULL, HFILL }
4747 { &hf_capwap_msg_element_type_ieee80211_supported_rates_radio_id,
4748 { "Radio ID", "capwap.control.message_element.ieee80211_supported_rates.radio_id",
4749 FT_UINT8, BASE_DEC, NULL, 0x0,
4750 NULL, HFILL }
4752 { &hf_capwap_msg_element_type_ieee80211_supported_rates_rate,
4753 { "Rates", "capwap.control.message_element.ieee80211_supported_rates.rate",
4754 FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ieee80211_supported_rates_vals_ext, 0x0,
4755 "In Mbit/sec, (B) for Basic Rates", HFILL }
4757 { &hf_capwap_msg_element_type_ieee80211_tx_power_radio_id,
4758 { "Radio ID", "capwap.control.message_element.ieee80211_tx_power.radio_id",
4759 FT_UINT8, BASE_DEC, NULL, 0x0,
4760 NULL, HFILL }
4762 { &hf_capwap_msg_element_type_ieee80211_tx_power_reserved,
4763 { "Reserved", "capwap.control.message_element.ieee80211_tx_power.reserved",
4764 FT_UINT8, BASE_HEX, NULL, 0x0,
4765 NULL, HFILL }
4767 { &hf_capwap_msg_element_type_ieee80211_tx_power_current_tx_power,
4768 { "Current Tx Power", "capwap.control.message_element.ieee80211_tx_power.current_tx_power",
4769 FT_UINT16, BASE_DEC, NULL, 0x0,
4770 NULL, HFILL }
4772 { &hf_capwap_msg_element_type_ieee80211_tx_power_level_radio_id,
4773 { "Radio ID", "capwap.control.message_element.ieee80211_tx_power_level.radio_id",
4774 FT_UINT8, BASE_DEC, NULL, 0x0,
4775 NULL, HFILL }
4777 { &hf_capwap_msg_element_type_ieee80211_tx_power_level_num_levels,
4778 { "Num Levels", "capwap.control.message_element.ieee80211_tx_power_level.num_levels",
4779 FT_UINT8, BASE_DEC, NULL, 0x0,
4780 NULL, HFILL }
4782 { &hf_capwap_msg_element_type_ieee80211_tx_power_level_power_level,
4783 { "Power Level", "capwap.control.message_element.ieee80211_tx_power_level.power_level",
4784 FT_UINT16, BASE_DEC, NULL, 0x0,
4785 NULL, HFILL }
4787 { &hf_capwap_msg_element_type_ieee80211_update_wlan_radio_id,
4788 { "Radio ID", "capwap.control.message_element.ieee80211_update_wlan.radio_id",
4789 FT_UINT8, BASE_DEC, NULL, 0x0,
4790 NULL, HFILL }
4792 { &hf_capwap_msg_element_type_ieee80211_update_wlan_wlan_id,
4793 { "WLAN ID", "capwap.control.message_element.ieee80211_update_wlan.wlan_id",
4794 FT_UINT8, BASE_DEC, NULL, 0x0,
4795 NULL, HFILL }
4797 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability,
4798 { "Capability", "capwap.control.message_element.ieee80211_update_wlan.capability",
4799 FT_UINT16, BASE_HEX, NULL, 0x0,
4800 NULL, HFILL }
4802 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_e,
4803 { "ESS", "capwap.control.message_element.ieee80211_update_wlan.capability.e",
4804 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x8000,
4805 NULL, HFILL }
4807 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_i,
4808 { "IBSS", "capwap.control.message_element.ieee80211_update_wlan.capability.i",
4809 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x4000,
4810 NULL, HFILL }
4812 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_c,
4813 { "CF-Pollable", "capwap.control.message_element.ieee80211_update_wlan.capability.c",
4814 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x2000,
4815 NULL, HFILL }
4817 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_f,
4818 { "CF-Poll Request", "capwap.control.message_element.ieee80211_update_wlan.capability.f",
4819 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x1000,
4820 NULL, HFILL }
4822 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_p,
4823 { "Privacy", "capwap.control.message_element.ieee80211_update_wlan.capability.p",
4824 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0800,
4825 NULL, HFILL }
4827 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_s,
4828 { "Short Preamble", "capwap.control.message_element.ieee80211_update_wlan.capability.s",
4829 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0400,
4830 NULL, HFILL }
4832 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_b,
4833 { "PBCC", "capwap.control.message_element.ieee80211_update_wlan.capability.b",
4834 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0200,
4835 NULL, HFILL }
4837 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_a,
4838 { "Channel Agility", "capwap.control.message_element.ieee80211_update_wlan.capability.a",
4839 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0100,
4840 NULL, HFILL }
4842 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_m,
4843 { "Spectrum Management", "capwap.control.message_element.ieee80211_update_wlan.capability.m",
4844 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0080,
4845 NULL, HFILL }
4847 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_q,
4848 { "QoS", "capwap.control.message_element.ieee80211_update_wlan.capability.q",
4849 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0040,
4850 NULL, HFILL }
4852 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_t,
4853 { "Short Slot Time", "capwap.control.message_element.ieee80211_update_wlan.capability.t",
4854 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0020,
4855 NULL, HFILL }
4857 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_d,
4858 { "APSD", "capwap.control.message_element.ieee80211_update_wlan.capability.d",
4859 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0010,
4860 NULL, HFILL }
4862 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_v,
4863 { "Reserved", "capwap.control.message_element.ieee80211_update_wlan.capability.v",
4864 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0008,
4865 NULL, HFILL }
4867 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_o,
4868 { "DSSS-OFDM", "capwap.control.message_element.ieee80211_update_wlan.capability.o",
4869 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0004,
4870 NULL, HFILL }
4872 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_k,
4873 { "Delayed Block ACK", "capwap.control.message_element.ieee80211_update_wlan.capability.k",
4874 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0002,
4875 NULL, HFILL }
4877 { &hf_capwap_msg_element_type_ieee80211_update_wlan_capability_l,
4878 { "Immediate Block ACK", "capwap.control.message_element.ieee80211_update_wlan.capability.l",
4879 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0001,
4880 NULL, HFILL }
4882 { &hf_capwap_msg_element_type_ieee80211_update_wlan_key_index,
4883 { "Key-Index", "capwap.control.message_element.ieee80211_update_wlan.key_index",
4884 FT_UINT8, BASE_DEC, NULL, 0x0,
4885 NULL, HFILL }
4887 { &hf_capwap_msg_element_type_ieee80211_update_wlan_key_status,
4888 { "Key Status", "capwap.control.message_element.ieee80211_update_wlan.key_status",
4889 FT_UINT8, BASE_DEC, VALS(ieee80211_wlan_key_status_vals), 0x0,
4890 NULL, HFILL }
4892 { &hf_capwap_msg_element_type_ieee80211_update_wlan_key_length,
4893 { "Key Length", "capwap.control.message_element.ieee80211_update_wlan.key_length",
4894 FT_UINT16, BASE_DEC, NULL, 0x0,
4895 NULL, HFILL }
4897 { &hf_capwap_msg_element_type_ieee80211_update_wlan_key,
4898 { "Key", "capwap.control.message_element.ieee80211_update_wlan.key",
4899 FT_BYTES, BASE_NONE, NULL, 0x0,
4900 NULL, HFILL }
4902 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_radio_id,
4903 { "Radio ID", "capwap.control.message_element.ieee80211_wtp_radio_info.cfg_id",
4904 FT_UINT8, BASE_DEC, NULL, 0x0,
4905 NULL, HFILL }
4907 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_short_preamble,
4908 { "Short Preamble", "capwap.control.message_element.ieee80211_wtp_radio_info.short_preamble",
4909 FT_UINT8, BASE_DEC, NULL, 0x0,
4910 NULL, HFILL }
4912 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_num_of_bssids,
4913 { "Num of BSSIDs", "capwap.control.message_element.ieee80211_wtp_radio_info.num_of_bssids",
4914 FT_UINT8, BASE_DEC, NULL, 0x0,
4915 NULL, HFILL }
4917 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_dtim_period,
4918 { "DTIM Period", "capwap.control.message_element.ieee80211_wtp_radio_info.dtim_period",
4919 FT_UINT8, BASE_DEC, NULL, 0x0,
4920 NULL, HFILL }
4922 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_bssid,
4923 { "BSSID", "capwap.control.message_element.ieee80211_wtp_radio_info.bssid",
4924 FT_ETHER, BASE_NONE, NULL, 0x0,
4925 NULL, HFILL }
4927 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_beacon_period,
4928 { "Beacon Period", "capwap.control.message_element.ieee80211_wtp_radio_info.beacon_period",
4929 FT_UINT16, BASE_DEC, NULL, 0x0,
4930 NULL, HFILL }
4932 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_cfg_country_string,
4933 { "Country String", "capwap.control.message_element.ieee80211_wtp_radio_info.country_string",
4934 FT_STRING, BASE_NONE, NULL, 0x0,
4935 NULL, HFILL }
4937 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_id,
4938 { "Radio ID", "capwap.control.message_element.ieee80211_wtp_radio_info.radio_id",
4939 FT_UINT8, BASE_DEC, NULL, 0x0,
4940 NULL, HFILL }
4942 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_reserved,
4943 { "Radio Type Reserved", "capwap.control.message_element.ieee80211_wtp_info_radio.radio_type_reserved",
4944 FT_BYTES, BASE_NONE, NULL, 0x0,
4945 NULL, HFILL }
4947 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_n,
4948 { "Radio Type 802.11n", "capwap.control.message_element.ieee80211_wtp_info_radio.radio_type_n",
4949 FT_BOOLEAN, 4, NULL, 0x8,
4950 NULL, HFILL }
4952 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_g,
4953 { "Radio Type 802.11g", "capwap.control.message_element.ieee80211_wtp_info_radio.radio_type_g",
4954 FT_BOOLEAN, 4, NULL, 0x4,
4955 NULL, HFILL }
4957 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_a,
4958 { "Radio Type 802.11a", "capwap.control.message_element.ieee80211_wtp_info_radio.radio_type_a",
4959 FT_BOOLEAN, 4, NULL, 0x2,
4960 NULL, HFILL }
4962 { &hf_capwap_msg_element_type_ieee80211_wtp_radio_info_radio_type_b,
4963 { "Radio Type 802.11b", "capwap.control.message_element.ieee80211_wtp_info_radio.radio_type_b",
4964 FT_BOOLEAN, 4, NULL, 0x1,
4965 NULL, HFILL }
4968 { &hf_capwap_msg_element_type_ieee80211_supported_mac_profiles_numbers,
4969 { "Numbers Profiles", "capwap.control.message_element.ieee80211_supported_mac_profiles.numbers",
4970 FT_UINT8, BASE_DEC, NULL, 0x0,
4971 NULL, HFILL }
4973 { &hf_capwap_msg_element_type_ieee80211_supported_mac_profiles_profile,
4974 { "Profile", "capwap.control.message_element.ieee80211_supported_mac_profiles.profile",
4975 FT_UINT8, BASE_DEC, VALS(ieee80211_mac_profile_vals), 0x0,
4976 NULL, HFILL }
4978 { &hf_capwap_msg_element_type_ieee80211_mac_profile,
4979 { "Profile", "capwap.control.message_element.ieee80211_mac_profile",
4980 FT_UINT8, BASE_DEC, VALS(ieee80211_mac_profile_vals), 0x0,
4981 NULL, HFILL }
4984 /* Data Channel Keep-Alive entries */
4985 { &hf_capwap_data_keep_alive,
4986 { "Keep-Alive", "capwap.keep_alive",
4987 FT_NONE, BASE_NONE, NULL, 0x0,
4988 NULL, HFILL }
4990 { &hf_capwap_data_keep_alive_length,
4991 { "Message Element Length", "capwap.keep_alive.length",
4992 FT_UINT16, BASE_DEC, NULL, 0x0,
4993 NULL, HFILL }
4996 /* Fortinet Vendor Specific*/
4998 { &hf_capwap_fortinet_element_id,
4999 { "Fortinet Element ID", "capwap.control.fortinet.element_id",
5000 FT_UINT16, BASE_DEC, VALS(fortinet_element_id_vals), 0x0,
5001 NULL, HFILL }
5003 { &hf_capwap_fortinet_value,
5004 { "Fortinet Value", "capwap.control.fortinet.value",
5005 FT_BYTES, BASE_NONE, NULL, 0x0,
5006 NULL, HFILL }
5008 { &hf_capwap_fortinet_ap_scan_rid,
5009 { "Radio ID", "capwap.control.fortinet.ap_scan.rid",
5010 FT_UINT8, BASE_DEC, NULL, 0x0,
5011 NULL, HFILL }
5013 { &hf_capwap_fortinet_ap_scan_bgscan_intv,
5014 { "bg scan interval", "capwap.control.fortinet.ap_scan.bgpscan.interval",
5015 FT_UINT16, BASE_DEC, NULL, 0x0,
5016 NULL, HFILL }
5018 { &hf_capwap_fortinet_ap_scan_bgscan_idle,
5019 { "bg scan idle", "capwap.control.fortinet.ap_scan.bgpscan.idle",
5020 FT_UINT24, BASE_DEC, NULL, 0x0,
5021 NULL, HFILL }
5023 { &hf_capwap_fortinet_ap_scan_bgscan_rpt_intv,
5024 { "bg scan rpt interval", "capwap.control.fortinet.ap_scan.bgscan.rpt_interval",
5025 FT_UINT16, BASE_DEC, NULL, 0x0,
5026 NULL, HFILL }
5028 { &hf_capwap_fortinet_ap_scan_fgscan_rpt_intv,
5029 { "fg scan rpt interval", "capwap.control.fortinet.ap_scan.fgscan.rpt_interval",
5030 FT_UINT16, BASE_DEC, NULL, 0x0,
5031 NULL, HFILL }
5033 { &hf_capwap_fortinet_passive_rid,
5034 { "Radio ID", "capwap.control.fortinet.passive.rid",
5035 FT_UINT8, BASE_DEC, NULL, 0x0,
5036 NULL, HFILL }
5038 { &hf_capwap_fortinet_passive,
5039 { "Passive", "capwap.control.fortinet.passive",
5040 FT_UINT8, BASE_DEC, NULL, 0x0,
5041 NULL, HFILL }
5043 { &hf_capwap_fortinet_daemon_rst,
5044 { "Daemon RST", "capwap.control.fortinet.daemon_rst",
5045 FT_UINT8, BASE_DEC, NULL, 0x0,
5046 NULL, HFILL }
5048 { &hf_capwap_fortinet_mac_rid,
5049 { "Radio ID", "capwap.control.fortinet.mac.rid",
5050 FT_UINT8, BASE_DEC, NULL, 0x0,
5051 NULL, HFILL }
5053 { &hf_capwap_fortinet_mac_wid,
5054 { "WLAN ID", "capwap.control.fortinet.mac.wid",
5055 FT_UINT8, BASE_DEC, NULL, 0x0,
5056 NULL, HFILL }
5058 { &hf_capwap_fortinet_mac_len,
5059 { "Length", "capwap.control.fortinet.mac.len",
5060 FT_UINT8, BASE_DEC, NULL, 0x0,
5061 NULL, HFILL }
5063 { &hf_capwap_fortinet_mac,
5064 { "MAC", "capwap.control.fortinet.mac",
5065 FT_ETHER, BASE_NONE, NULL, 0x0,
5066 NULL, HFILL }
5068 { &hf_capwap_fortinet_wtp_allow_sn,
5069 { "Serial Number", "capwap.control.fortinet.wtp_allow.sn",
5070 FT_STRING, BASE_NONE, NULL, 0x0,
5071 "WTP Serial Number", HFILL }
5073 { &hf_capwap_fortinet_wtp_allow_allow,
5074 { "Allowed", "capwap.control.fortinet.wtp_allow.allowed",
5075 FT_BOOLEAN, BASE_NONE, TFS(&tfs_yes_no), 0x0,
5076 NULL, HFILL }
5078 { &hf_capwap_fortinet_wbh_sta_rid,
5079 { "Radio ID", "capwap.control.fortinet.wbh_sta.rid",
5080 FT_UINT8, BASE_DEC, NULL, 0x0,
5081 NULL, HFILL }
5083 { &hf_capwap_fortinet_wbh_sta_len,
5084 { "Length", "capwap.control.fortinet.wbh_sta.length",
5085 FT_UINT8, BASE_DEC, NULL, 0x0,
5086 NULL, HFILL }
5088 { &hf_capwap_fortinet_wbh_sta_mac,
5089 { "STA MAC", "capwap.control.fortinet.wbh_sta.mac",
5090 FT_ETHER, BASE_NONE, NULL, 0x0,
5091 NULL, HFILL }
5093 { &hf_capwap_fortinet_wbh_sta_bssid,
5094 { "BSSID", "capwap.control.fortinet.wbh_sta.bssid",
5095 FT_ETHER, BASE_NONE, NULL, 0x0,
5096 NULL, HFILL }
5098 { &hf_capwap_fortinet_wbh_sta_mhc,
5099 { "MHC", "capwap.control.fortinet.wbh_sta.mhc",
5100 FT_UINT8, BASE_DEC, NULL, 0x0,
5101 NULL, HFILL }
5103 { &hf_capwap_fortinet_htcap_rid,
5104 { "Radio ID", "capwap.control.fortinet.htcap.rid",
5105 FT_UINT8, BASE_DEC, NULL, 0x0,
5106 NULL, HFILL }
5108 { &hf_capwap_fortinet_htcap_mcs,
5109 { "MCS", "capwap.control.fortinet.htcap.mcs",
5110 FT_UINT8, BASE_DEC, NULL, 0x0,
5111 NULL, HFILL }
5113 { &hf_capwap_fortinet_htcap_gi,
5114 { "HT Short GI", "capwap.control.fortinet.htcap.mcs.gi",
5115 FT_UINT8, BASE_DEC, NULL, 0x0,
5116 NULL, HFILL }
5118 { &hf_capwap_fortinet_htcap_bw,
5119 { "Bandwidth", "capwap.control.fortinet.htcap.mcs.bw",
5120 FT_UINT8, BASE_DEC, NULL, 0x0,
5121 "20 or 40Mhz Mode", HFILL }
5123 { &hf_capwap_fortinet_mvap_sn_length,
5124 { "SN Length", "capwap.control.fortinet.mvap.sn.length",
5125 FT_UINT16, BASE_DEC, NULL, 0x0,
5126 NULL, HFILL }
5128 { &hf_capwap_fortinet_mvap_sn,
5129 { "SN", "capwap.control.fortinet.mvap.sn",
5130 FT_STRING, BASE_NONE, NULL, 0x0,
5131 NULL, HFILL }
5133 { &hf_capwap_fortinet_mvap_unknown,
5134 { "Unknown", "capwap.control.fortinet.mvap.unknown",
5135 FT_UINT32, BASE_DEC_HEX, NULL, 0x0,
5136 NULL, HFILL }
5138 { &hf_capwap_fortinet_mvap_age,
5139 { "Age", "capwap.control.fortinet.mvap.age",
5140 FT_UINT32, BASE_DEC, NULL, 0x0,
5141 NULL, HFILL }
5143 { &hf_capwap_fortinet_mvap_period,
5144 { "Period", "capwap.control.fortinet.mvap.period",
5145 FT_UINT32, BASE_DEC, NULL, 0x0,
5146 NULL, HFILL }
5148 { &hf_capwap_fortinet_mvap_vfid,
5149 { "Vfid", "capwap.control.fortinet.mvap.vfid",
5150 FT_UINT32, BASE_DEC, NULL, 0x0,
5151 NULL, HFILL }
5153 { &hf_capwap_fortinet_mode_rid,
5154 { "Radio ID", "capwap.control.fortinet.mode.rid",
5155 FT_UINT8, BASE_DEC, NULL, 0x0,
5156 NULL, HFILL }
5158 { &hf_capwap_fortinet_mode,
5159 { "Mode", "capwap.control.fortinet.mode",
5160 FT_UINT8, BASE_DEC, NULL, 0x0,
5161 NULL, HFILL }
5163 { &hf_capwap_fortinet_coext_rid,
5164 { "Radio ID", "capwap.control.fortinet.coext.rid",
5165 FT_UINT8, BASE_DEC, NULL, 0x0,
5166 NULL, HFILL }
5168 { &hf_capwap_fortinet_coext,
5169 { "Coext", "capwap.control.fortinet.coext",
5170 FT_UINT8, BASE_DEC, NULL, 0x0,
5171 NULL, HFILL }
5173 { &hf_capwap_fortinet_amsdu_rid,
5174 { "Radio ID", "capwap.control.fortinet.amsdu.rid",
5175 FT_UINT8, BASE_DEC, NULL, 0x0,
5176 NULL, HFILL }
5178 { &hf_capwap_fortinet_amsdu,
5179 { "AMSDU", "capwap.control.fortinet.amsdu",
5180 FT_UINT8, BASE_DEC, NULL, 0x0,
5181 NULL, HFILL }
5183 { &hf_capwap_fortinet_ps_opt_rid,
5184 { "Radio ID", "capwap.control.fortinet.ps_opt.rid",
5185 FT_UINT8, BASE_DEC, NULL, 0x0,
5186 NULL, HFILL }
5188 { &hf_capwap_fortinet_ps_opt,
5189 { "PS OPT", "capwap.control.fortinet.ps_opt",
5190 FT_UINT8, BASE_DEC, NULL, 0x0,
5191 NULL, HFILL }
5193 { &hf_capwap_fortinet_pure_rid,
5194 { "Radio ID", "capwap.control.fortinet.pure.rid",
5195 FT_UINT8, BASE_DEC, NULL, 0x0,
5196 NULL, HFILL }
5198 { &hf_capwap_fortinet_pure,
5199 { "Pure", "capwap.control.fortinet.pure",
5200 FT_UINT8, BASE_DEC, NULL, 0x0,
5201 NULL, HFILL }
5203 { &hf_capwap_fortinet_ebptag_ebp,
5204 { "EBP", "capwap.control.fortinet.ebptag.ebp",
5205 FT_UINT8, BASE_DEC, NULL, 0x0,
5206 NULL, HFILL }
5208 { &hf_capwap_fortinet_ebptag_tag,
5209 { "Tag", "capwap.control.fortinet.ebptag.tag",
5210 FT_ETHER, BASE_NONE, NULL, 0x0,
5211 NULL, HFILL }
5213 { &hf_capwap_fortinet_telnet_enable,
5214 { "Telnet Enable", "capwap.control.fortinet.telnet_enable",
5215 FT_UINT32, BASE_DEC, NULL, 0x0,
5216 NULL, HFILL }
5218 { &hf_capwap_fortinet_admin_passwd,
5219 { "Admin Password", "capwap.control.fortinet.admin_password",
5220 FT_STRING, BASE_NONE, NULL, 0x0,
5221 NULL, HFILL }
5223 { &hf_capwap_fortinet_regcode,
5224 { "Reg Code", "capwap.control.fortinet.reg_code",
5225 FT_STRING, BASE_NONE, NULL, 0x0,
5226 NULL, HFILL }
5228 { &hf_capwap_fortinet_countrycode_rid,
5229 { "Radio ID", "capwap.control.fortinet.countrycode.rid",
5230 FT_UINT8, BASE_DEC, NULL, 0x0,
5231 NULL, HFILL }
5233 { &hf_capwap_fortinet_countrycode_code,
5234 { "Country Code", "capwap.control.fortinet.countrycode.code",
5235 FT_UINT16, BASE_DEC, NULL, 0x0,
5236 NULL, HFILL }
5238 { &hf_capwap_fortinet_countrycode_string,
5239 { "Country Code", "capwap.control.fortinet.countrycode.string",
5240 FT_STRING, BASE_NONE, NULL, 0x0,
5241 NULL, HFILL }
5243 { &hf_capwap_fortinet_sta_scan_rid,
5244 { "Radio ID", "capwap.control.fortinet.sta_scan.rid",
5245 FT_UINT8, BASE_DEC, NULL, 0x0,
5246 NULL, HFILL }
5248 { &hf_capwap_fortinet_sta_scan,
5249 { "STA Scan", "capwap.control.fortinet.sta_scan",
5250 FT_UINT16, BASE_DEC, NULL, 0x0,
5251 NULL, HFILL }
5253 { &hf_capwap_fortinet_fho_rid,
5254 { "Radio ID", "capwap.control.fortinet.fho.rid",
5255 FT_UINT8, BASE_DEC, NULL, 0x0,
5256 NULL, HFILL }
5258 { &hf_capwap_fortinet_fho,
5259 { "FHO", "capwap.control.fortinet.fho",
5260 FT_UINT8, BASE_DEC, NULL, 0x0,
5261 NULL, HFILL }
5263 { &hf_capwap_fortinet_apho_rid,
5264 { "Radio ID", "capwap.control.fortinet.fho.rid",
5265 FT_UINT8, BASE_DEC, NULL, 0x0,
5266 NULL, HFILL }
5268 { &hf_capwap_fortinet_apho,
5269 { "APHO", "capwap.control.fortinet.apho",
5270 FT_UINT8, BASE_DEC, NULL, 0x0,
5271 NULL, HFILL }
5273 { &hf_capwap_fortinet_sta_locate_rid,
5274 { "Radio ID", "capwap.control.fortinet.sta_locate.rid",
5275 FT_UINT8, BASE_DEC, NULL, 0x0,
5276 NULL, HFILL }
5278 { &hf_capwap_fortinet_sta_locate_enable,
5279 { "Locate Enable", "capwap.control.fortinet.sta_locate.enable",
5280 FT_UINT8, BASE_DEC, NULL, 0x0,
5281 NULL, HFILL }
5283 { &hf_capwap_fortinet_sta_locate_interval,
5284 { "Locate Interval", "capwap.control.fortinet.sta_locate.interval",
5285 FT_UINT16, BASE_DEC, NULL, 0x0,
5286 NULL, HFILL }
5288 { &hf_capwap_fortinet_sa_rid,
5289 { "Radio ID", "capwap.control.fortinet.spectrum_analysis.rid",
5290 FT_UINT8, BASE_DEC, NULL, 0x0,
5291 NULL, HFILL }
5293 { &hf_capwap_fortinet_sa_enable,
5294 { "Spectrum Analysis Enable", "capwap.control.fortinet.spectrum_analysis.enable",
5295 FT_UINT8, BASE_DEC, NULL, 0x0,
5296 NULL, HFILL }
5298 { &hf_capwap_fortinet_sa_ssid,
5299 { "SSID", "capwap.control.fortinet.spectrum_analysis.ssid",
5300 FT_STRING, BASE_NONE, NULL, 0x0,
5301 NULL, HFILL }
5303 { &hf_capwap_fortinet_darrp_cfg_rid,
5304 { "Radio ID", "capwap.control.fortinet.darrp_cfg.rid",
5305 FT_UINT8, BASE_DEC, NULL, 0x0,
5306 NULL, HFILL }
5308 { &hf_capwap_fortinet_darrp_cfg_enable,
5309 { "DARRP CFG Enable", "capwap.control.fortinet.darrp_cfg.enable",
5310 FT_UINT8, BASE_DEC, NULL, 0x0,
5311 NULL, HFILL }
5313 { &hf_capwap_fortinet_darrp_cfg_interval,
5314 { "DARRP CFG Interval", "capwap.control.fortinet.darrp_cfg.interval",
5315 FT_UINT8, BASE_DEC, NULL, 0x0,
5316 NULL, HFILL }
5318 { &hf_capwap_fortinet_ap_suppress_list_ver,
5319 { "Ver", "capwap.control.fortinet.ap_suppress_list.ver",
5320 FT_UINT8, BASE_DEC, NULL, 0x0,
5321 NULL, HFILL }
5323 { &hf_capwap_fortinet_ap_suppress_list_op,
5324 { "Op", "capwap.control.fortinet.ap_suppress_list.op",
5325 FT_UINT8, BASE_DEC, NULL, 0x0,
5326 "Operation ?", HFILL }
5328 { &hf_capwap_fortinet_ap_suppress_list_rid,
5329 { "Radio ID", "capwap.control.fortinet.ap_suppress_list.rid",
5330 FT_UINT8, BASE_DEC, NULL, 0x0,
5331 NULL, HFILL }
5333 { &hf_capwap_fortinet_ap_suppress_list_len,
5334 { "Length", "capwap.control.fortinet.ap_suppress_list.length",
5335 FT_UINT8, BASE_DEC, NULL, 0x0,
5336 NULL, HFILL }
5338 { &hf_capwap_fortinet_wds_rid,
5339 { "Radio ID", "capwap.control.fortinet.wds.rid",
5340 FT_UINT8, BASE_DEC, NULL, 0x0,
5341 NULL, HFILL }
5343 { &hf_capwap_fortinet_wds_wid,
5344 { "WLAN ID", "capwap.control.fortinet.wds.wid",
5345 FT_UINT8, BASE_DEC, NULL, 0x0,
5346 NULL, HFILL }
5348 { &hf_capwap_fortinet_wds_enable,
5349 { "WDS Enable", "capwap.control.fortinet.wds.enable",
5350 FT_UINT8, BASE_DEC, NULL, 0x0,
5351 NULL, HFILL }
5353 { &hf_capwap_fortinet_vap_vlan_tag_rid,
5354 { "Radio ID", "capwap.control.fortinet.vap_vlan_tag.rid",
5355 FT_UINT8, BASE_DEC, NULL, 0x0,
5356 NULL, HFILL }
5358 { &hf_capwap_fortinet_vap_vlan_tag_wid,
5359 { "WLAN ID", "capwap.control.fortinet.vap_vlan_tag.wid",
5360 FT_UINT8, BASE_DEC, NULL, 0x0,
5361 NULL, HFILL }
5363 { &hf_capwap_fortinet_vap_vlan_tag,
5364 { "Vlan ID", "capwap.control.fortinet.vap_vlan_tag",
5365 FT_UINT16, BASE_DEC, NULL, 0x0,
5366 NULL, HFILL }
5368 { &hf_capwap_fortinet_vap_bitmap_rid,
5369 { "Radio ID", "capwap.control.fortinet.bitmap.rid",
5370 FT_UINT8, BASE_DEC, NULL, 0x0,
5371 NULL, HFILL }
5373 { &hf_capwap_fortinet_vap_bitmap,
5374 { "Bitmap", "capwap.control.fortinet.vap_bitmap",
5375 FT_UINT16, BASE_HEX, NULL, 0x0,
5376 NULL, HFILL }
5378 { &hf_capwap_fortinet_mcast_rate_rid,
5379 { "Radio ID", "capwap.control.fortinet.mcast_rate.rid",
5380 FT_UINT8, BASE_DEC, NULL, 0x0,
5381 NULL, HFILL }
5383 { &hf_capwap_fortinet_mcast_rate_wid,
5384 { "WLAN ID", "capwap.control.fortinet.mcast_rate.wid",
5385 FT_UINT8, BASE_DEC, NULL, 0x0,
5386 NULL, HFILL }
5388 { &hf_capwap_fortinet_mcast_rate,
5389 { "Multicast Rate", "capwap.control.fortinet.mcast_rate",
5390 FT_UINT32, BASE_DEC, NULL, 0x0,
5391 NULL, HFILL }
5393 { &hf_capwap_fortinet_cfg_rid,
5394 { "Radio ID", "capwap.control.fortinet.cfg.rid",
5395 FT_UINT8, BASE_DEC, NULL, 0x0,
5396 NULL, HFILL }
5398 { &hf_capwap_fortinet_cfg_wid,
5399 { "WLAN ID", "capwap.control.fortinet.cfg.wid",
5400 FT_UINT8, BASE_DEC, NULL, 0x0,
5401 NULL, HFILL }
5403 { &hf_capwap_fortinet_cfg_ip,
5404 { "IP", "capwap.control.fortinet.cfg.ip",
5405 FT_IPv4, BASE_NONE, NULL, 0x0,
5406 NULL, HFILL }
5408 { &hf_capwap_fortinet_cfg_mask,
5409 { "Mask", "capwap.control.fortinet.cfg.mask",
5410 FT_IPv4, BASE_NETMASK, NULL, 0x0,
5411 NULL, HFILL }
5413 { &hf_capwap_fortinet_split_tun_cfg_enable_local_subnet,
5414 { "Enable Local Subnet", "capwap.control.fortinet.split_tun_cfg.enable_local_subnet",
5415 FT_UINT8, BASE_DEC, NULL, 0x0,
5416 NULL, HFILL }
5418 { &hf_capwap_fortinet_split_tun_cfg_cnt,
5419 { "CNT", "capwap.control.fortinet.split_tun_cfg.cnt",
5420 FT_UINT8, BASE_DEC, NULL, 0x0,
5421 NULL, HFILL }
5423 { &hf_capwap_fortinet_mgmt_vlan_id,
5424 { "Vlan ID", "capwap.control.fortinet.mgmt_vlan.id",
5425 FT_UINT16, BASE_DEC, NULL, 0x0,
5426 NULL, HFILL }
5428 { &hf_capwap_fortinet_vap_psk_passwd_rid,
5429 { "Radio ID", "capwap.control.fortinet.vap_psk_passwd.rid",
5430 FT_UINT8, BASE_DEC, NULL, 0x0,
5431 NULL, HFILL }
5433 { &hf_capwap_fortinet_vap_psk_passwd_wid,
5434 { "WLAN ID", "capwap.control.fortinet.vap_psk_passwd.wid",
5435 FT_UINT8, BASE_DEC, NULL, 0x0,
5436 NULL, HFILL }
5438 { &hf_capwap_fortinet_vap_psk_passwd_key,
5439 { "Key", "capwap.control.fortinet.vap_psk_passwd.key",
5440 FT_STRING, BASE_NONE, NULL, 0x0,
5441 NULL, HFILL }
5443 { &hf_capwap_fortinet_mesh_eth_bridge_enable,
5444 { "Mesh Eth Bridge Enable", "capwap.control.fortinet.mesh_eth_bridge.enable",
5445 FT_UINT8, BASE_DEC, NULL, 0x0,
5446 NULL, HFILL }
5448 { &hf_capwap_fortinet_mesh_eth_bridge_type,
5449 { "Mesh Eth Bridge Type", "capwap.control.fortinet.mesh_eth_bridge.type",
5450 FT_UINT16, BASE_DEC_HEX, NULL, 0x0,
5451 NULL, HFILL }
5453 { &hf_capwap_fortinet_wtp_cap,
5454 { "WTP CAP", "capwap.control.fortinet.wtp_cap",
5455 FT_BYTES, SEP_SPACE, NULL, 0x0,
5456 NULL, HFILL }
5458 { &hf_capwap_fortinet_txpwr_rid,
5459 { "Radio ID", "capwap.control.fortinet.tx_power.rid",
5460 FT_UINT8, BASE_DEC, NULL, 0x0,
5461 NULL, HFILL }
5463 { &hf_capwap_fortinet_txpwr,
5464 { "TX Power", "capwap.control.fortinet.tx_power",
5465 FT_UINT16, BASE_DEC, NULL, 0x0,
5466 "In Percentage", HFILL }
5468 { &hf_capwap_fortinet_wids_enable_rid,
5469 { "Radio ID", "capwap.control.fortinet.wids_enable.rid",
5470 FT_UINT8, BASE_DEC, NULL, 0x0,
5471 NULL, HFILL }
5473 { &hf_capwap_fortinet_wids_enable,
5474 { "WIDS Enable", "capwap.control.fortinet.wids_enable.enable",
5475 FT_UINT32, BASE_DEC, NULL, 0x0,
5476 NULL, HFILL }
5478 { &hf_capwap_fortinet_unknown_rid,
5479 { "Radio ID", "capwap.control.fortinet.unknown.rid",
5480 FT_UINT8, BASE_DEC, NULL, 0x0,
5481 NULL, HFILL }
5483 { &hf_capwap_fortinet_unknown_wid,
5484 { "WLAN ID", "capwap.control.fortinet.unknown.wid",
5485 FT_UINT8, BASE_DEC, NULL, 0x0,
5486 NULL, HFILL }
5488 { &hf_capwap_fortinet_unknown,
5489 { "Unknown Data", "capwap.control.fortinet.unknown",
5490 FT_BYTES, BASE_NONE, NULL, 0x0,
5491 NULL, HFILL }
5495 /* Cisco Vendor Specific*/
5497 { &hf_capwap_cisco_element_id,
5498 { "Cisco Element ID", "capwap.control.cisco.element_id",
5499 FT_UINT16, BASE_DEC, VALS(cisco_element_id_vals), 0x0,
5500 NULL, HFILL }
5502 { &hf_capwap_cisco_value,
5503 { "Cisco Value", "capwap.control.cisco.value",
5504 FT_BYTES, BASE_NONE, NULL, 0x0,
5505 NULL, HFILL }
5507 { &hf_capwap_cisco_mwar_addr,
5508 { "Address", "capwap.control.cisco.mwar.address",
5509 FT_IPv4, BASE_NONE, NULL, 0x0,
5510 NULL, HFILL }
5512 { &hf_capwap_cisco_rad_name,
5513 { "RAD (AP) Name", "capwap.control.cisco.rad_name",
5514 FT_STRING, BASE_NONE, NULL, 0x0,
5515 NULL, HFILL }
5517 { &hf_capwap_cisco_mwar_type,
5518 { "Type", "capwap.control.cisco.mwar.type",
5519 FT_UINT8, BASE_DEC, NULL, 0x0,
5520 NULL, HFILL }
5522 { &hf_capwap_cisco_mwar_hardware,
5523 { "Hardware version", "capwap.control.cisco.mwar.hardware",
5524 FT_STRING, BASE_NONE, NULL, 0x0,
5525 NULL, HFILL }
5527 { &hf_capwap_cisco_mwar_software,
5528 { "Software version", "capwap.control.cisco.mwar.software",
5529 FT_STRING, BASE_NONE, NULL, 0x0,
5530 NULL, HFILL }
5532 { &hf_capwap_cisco_mwar_active_ms,
5533 { "Active MS", "capwap.control.cisco.mwar.active_ms",
5534 FT_UINT16, BASE_DEC, NULL, 0x0,
5535 NULL, HFILL }
5537 { &hf_capwap_cisco_mwar_supported_ms,
5538 { "Supported MS", "capwap.control.cisco.mwar.supported_ms",
5539 FT_UINT16, BASE_DEC, NULL, 0x0,
5540 NULL, HFILL }
5542 { &hf_capwap_cisco_mwar_active_rad,
5543 { "Active RAD", "capwap.control.cisco.mwar.active_rad",
5544 FT_UINT16, BASE_DEC, NULL, 0x0,
5545 NULL, HFILL }
5547 { &hf_capwap_cisco_mwar_supported_rad,
5548 { "Supported RAD", "capwap.control.cisco.mwar.supported_rad",
5549 FT_UINT16, BASE_DEC, NULL, 0x0,
5550 NULL, HFILL }
5552 { &hf_capwap_cisco_ap_mode_and_type_mode,
5553 { "Mode", "capwap.control.cisco.ap_mode_and_type.mode",
5554 FT_UINT8, BASE_DEC, VALS(cisco_ap_mode_and_type_mode_vals), 0x0,
5555 NULL, HFILL }
5557 { &hf_capwap_cisco_ap_mode_and_type_type,
5558 { "Type", "capwap.control.cisco.ap_mode_and_type.type",
5559 FT_UINT8, BASE_DEC, NULL, 0x0,
5560 NULL, HFILL }
5562 { &hf_capwap_cisco_ap_static_ip_addr,
5563 { "IP Address", "capwap.control.cisco.ap_static_ip.addr",
5564 FT_IPv4, BASE_NONE, NULL, 0x0,
5565 NULL, HFILL }
5567 { &hf_capwap_cisco_ap_static_ip_netmask,
5568 { "Netmask", "capwap.control.cisco.ap_static_ip.netmask",
5569 FT_IPv4, BASE_NETMASK, NULL, 0x0,
5570 NULL, HFILL }
5572 { &hf_capwap_cisco_ap_static_ip_gateway,
5573 { "Gateway", "capwap.control.cisco.ap_static_ip.gateway",
5574 FT_IPv4, BASE_NONE, NULL, 0x0,
5575 NULL, HFILL }
5577 { &hf_capwap_cisco_ap_static_ip_type,
5578 { "Type", "capwap.control.cisco.ap_static_ip.type",
5579 FT_UINT8, BASE_DEC, NULL, 0x0,
5580 NULL, HFILL }
5582 { &hf_capwap_cisco_ap_static_ip_reserved,
5583 { "Reserved", "capwap.control.cisco.ap_static_ip.reserved",
5584 FT_BYTES, BASE_NONE, NULL, 0x0,
5585 NULL, HFILL }
5587 { &hf_capwap_cisco_ap_uptime_current,
5588 { "AP Uptime Current", "capwap.control.cisco.ap_uptime.current",
5589 FT_UINT32, BASE_DEC, NULL, 0x0,
5590 NULL, HFILL }
5592 { &hf_capwap_cisco_ap_uptime_last,
5593 { "AP Uptime Last", "capwap.control.cisco.ap_uptime.last",
5594 FT_UINT32, BASE_DEC, NULL, 0x0,
5595 NULL, HFILL }
5597 { &hf_capwap_cisco_ap_group_name,
5598 { "AP Group Name", "capwap.control.cisco.ap_group_name",
5599 FT_STRING, BASE_NONE, NULL, 0x0,
5600 NULL, HFILL }
5602 { &hf_capwap_cisco_ap_led_state,
5603 { "Led State", "capwap.control.cisco.ap_led_state",
5604 FT_UINT16, BASE_DEC, NULL, 0x0,
5605 NULL, HFILL }
5607 { &hf_capwap_cisco_ap_timesync,
5608 { "AP TimeSync", "capwap.control.cisco.ap_timesync",
5609 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0,
5610 NULL, HFILL }
5612 { &hf_capwap_cisco_ap_timesync_type,
5613 { "Type (?)", "capwap.control.cisco.ap_timesync.type",
5614 FT_UINT8, BASE_DEC, NULL, 0x0,
5615 NULL, HFILL }
5617 { &hf_capwap_cisco_board_data_options_ant_type,
5618 { "Antenna Type", "capwap.control.cisco.board_data_options.ant_type",
5619 FT_UINT8, BASE_DEC, NULL, 0x0,
5620 NULL, HFILL }
5622 { &hf_capwap_cisco_board_data_options_flex_connect,
5623 { "Flex Connect", "capwap.control.cisco.board_data_options.flex_connect",
5624 FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
5625 NULL, HFILL }
5627 { &hf_capwap_cisco_board_data_options_ap_type,
5628 { "AP Type", "capwap.control.cisco.board_data_options.ap_type",
5629 FT_UINT8, BASE_DEC, NULL, 0x0,
5630 NULL, HFILL }
5632 { &hf_capwap_cisco_board_data_options_join_priority,
5633 { "Join Priority", "capwap.control.cisco.board_data_options.join_priority",
5634 FT_UINT8, BASE_DEC, NULL, 0x0,
5635 NULL, HFILL }
5637 { &hf_capwap_cisco_unknown,
5638 { "Unknown Data", "capwap.control.cisco.unknown",
5639 FT_BYTES, BASE_NONE, NULL, 0x0,
5640 NULL, HFILL }
5643 /* Fragment entries */
5644 { &hf_msg_fragments,
5645 { "Message fragments", "capwap.fragments",
5646 FT_NONE, BASE_NONE, NULL, 0x0,
5647 NULL, HFILL }
5649 { &hf_msg_fragment,
5650 { "Message fragment", "capwap.fragment",
5651 FT_FRAMENUM, BASE_NONE, NULL, 0x0,
5652 NULL, HFILL }
5654 { &hf_msg_fragment_overlap,
5655 { "Message fragment overlap", "capwap.fragment.overlap",
5656 FT_BOOLEAN, BASE_NONE, NULL, 0x0,
5657 NULL, HFILL }
5659 { &hf_msg_fragment_overlap_conflicts,
5660 { "Message fragment overlapping with conflicting data", "capwap.fragment.overlap.conflicts",
5661 FT_BOOLEAN, BASE_NONE, NULL, 0x0,
5662 NULL, HFILL }
5664 { &hf_msg_fragment_multiple_tails,
5665 { "Message has multiple tail fragments", "capwap.fragment.multiple_tails",
5666 FT_BOOLEAN, BASE_NONE, NULL, 0x0,
5667 NULL, HFILL }
5669 { &hf_msg_fragment_too_long_fragment,
5670 { "Message fragment too long", "capwap.fragment.too_long_fragment",
5671 FT_BOOLEAN, BASE_NONE, NULL, 0x0,
5672 NULL, HFILL }
5674 { &hf_msg_fragment_error,
5675 { "Message defragmentation error", "capwap.fragment.error",
5676 FT_FRAMENUM, BASE_NONE, NULL, 0x0,
5677 NULL, HFILL }
5679 { &hf_msg_fragment_count,
5680 { "Message fragment count", "capwap.fragment.count",
5681 FT_UINT32, BASE_DEC, NULL, 0x0,
5682 NULL, HFILL }
5684 { &hf_msg_reassembled_in,
5685 { "Reassembled in", "capwap.reassembled.in",
5686 FT_FRAMENUM, BASE_NONE, NULL, 0x0,
5687 NULL, HFILL }
5689 { &hf_msg_reassembled_length,
5690 { "Reassembled CAPWAP length", "capwap.reassembled.length",
5691 FT_UINT32, BASE_DEC, NULL, 0x0,
5692 NULL, HFILL }
5696 /* Setup protocol subtree array */
5697 static int *ett[] = {
5698 &ett_capwap,
5699 &ett_capwap_control,
5700 &ett_capwap_data,
5701 &ett_capwap_preamble,
5702 &ett_capwap_header,
5703 &ett_capwap_header_flags,
5704 &ett_capwap_control_header,
5705 &ett_capwap_control_header_msg,
5706 &ett_capwap_data_keep_alive,
5707 &ett_capwap_message_element,
5708 &ett_capwap_data_message_bindings_ieee80211,
5709 &ett_capwap_encryption_capabilities,
5710 &ett_capwap_encryption_capability,
5711 &ett_capwap_ac_information,
5712 &ett_capwap_wtp_descriptor,
5713 &ett_capwap_board_data,
5714 &ett_capwap_message_element_type,
5715 &ett_capwap_ac_descriptor_security_flags,
5716 &ett_capwap_ac_descriptor_dtls_flags,
5717 &ett_capwap_wtp_frame_tunnel_mode,
5718 &ett_capwap_ieee80211_add_wlan_capability,
5719 &ett_capwap_ieee80211_ie_flags,
5720 &ett_capwap_ieee80211_update_wlan_capability,
5721 &ett_capwap_ieee80211_station_capabilities,
5722 &ett_capwap_ieee80211_ofdm_control_band_support,
5723 &ett_msg_fragment,
5724 &ett_msg_fragments
5727 static ei_register_info ei[] = {
5728 { &ei_capwap_header_length_bad, { "capwap.header.length.bad", PI_MALFORMED, PI_WARN, "Wrong calculate length =! header length", EXPFILL }},
5729 { &ei_capwap_data_keep_alive_length, { "capwap.keep_alive.length.bad", PI_MALFORMED, PI_WARN, "Invalid Keep Alive length", EXPFILL }},
5730 { &ei_capwap_msg_element_length, { "capwap.message_element.length.bad", PI_MALFORMED, PI_ERROR, "Bad Message Element length", EXPFILL }},
5731 { &ei_capwap_message_element_type, { "capwap.message_element.type.undecoded", PI_UNDECODED, PI_NOTE, "Dissector for CAPWAP message element Type not implemented, Contact Wireshark developers if you want this supported", EXPFILL }},
5732 { &ei_capwap_fortinet_mac_len, { "capwap.control.fortinet.mac.length.bad", PI_MALFORMED, PI_ERROR, "Bad length: Should be a multiple of 6", EXPFILL }},
5733 { &ei_capwap_message_element_fortinet_type, { "capwap.message_element.type.fortinet.undecoded", PI_UNDECODED, PI_NOTE, "Dissector for CAPWAP message element Fortinet Type not implemented", EXPFILL }},
5734 { &ei_capwap_message_element_cisco_type, { "capwap.message_element.type.cisco.undecoded", PI_UNDECODED, PI_NOTE, "Dissector for CAPWAP message element Cisco Type not implemented", EXPFILL }}
5737 expert_module_t* expert_capwap;
5739 proto_capwap_control = proto_register_protocol("Control And Provisioning of Wireless Access Points - Control", "CAPWAP-CONTROL", "capwap");
5740 proto_capwap_data = proto_register_protocol("Control And Provisioning of Wireless Access Points - Data", "CAPWAP-DATA", "capwap.data");
5742 proto_register_field_array(proto_capwap_control, hf, array_length(hf));
5744 proto_register_subtree_array(ett, array_length(ett));
5746 expert_capwap = expert_register_protocol(proto_capwap_control);
5747 expert_register_field_array(expert_capwap, ei, array_length(ei));
5749 reassembly_table_register(&capwap_reassembly_table,
5750 &addresses_reassembly_table_functions);
5752 capwap_module = prefs_register_protocol(proto_capwap_control, NULL);
5753 /* Need to create a placeholder for "port" preferences so there is a callback */
5754 prefs_register_protocol(proto_capwap_data, apply_capwap_prefs);
5756 prefs_register_bool_preference(capwap_module, "draft_8_cisco", "Cisco Wireless Controller Support",
5757 "Enable support of Cisco Wireless Controller (based on old 8 draft revision).",
5758 &global_capwap_draft_8_cisco);
5760 prefs_register_bool_preference(capwap_module, "reassemble", "Reassemble fragmented CAPWAP packets",
5761 "Reassemble fragmented CAPWAP packets.",
5762 &global_capwap_reassemble);
5764 prefs_register_bool_preference(capwap_module, "swap_fc", "Swap Frame Control",
5765 "Swap frame control bytes (needed for some APs).",
5766 &global_capwap_swap_frame_control);
5768 capwap_control_handle = register_dissector("capwap", dissect_capwap_control, proto_capwap_control);
5769 capwap_data_handle = register_dissector("capwap.data", dissect_capwap_data, proto_capwap_data);
5772 void
5773 proto_reg_handoff_capwap(void)
5775 dtls_handle = find_dissector_add_dependency("dtls", proto_capwap_control);
5776 find_dissector_add_dependency("dtls", proto_capwap_data);
5777 ieee8023_handle = find_dissector_add_dependency("eth_withoutfcs", proto_capwap_data);
5778 ieee80211_handle = find_dissector_add_dependency("wlan_withoutfcs", proto_capwap_data);
5779 ieee80211_bsfc_handle = find_dissector_add_dependency("wlan_bsfc", proto_capwap_data);
5781 dissector_add_uint_with_preference("udp.port", UDP_PORT_CAPWAP_CONTROL, capwap_control_handle);
5782 dissector_add_uint_with_preference("udp.port", UDP_PORT_CAPWAP_DATA, capwap_data_handle);
5783 apply_capwap_prefs();
5786 * Editor modelines
5788 * Local Variables:
5789 * c-basic-offset: 4
5790 * tab-width: 8
5791 * indent-tabs-mode: nil
5792 * End:
5794 * ex: set shiftwidth=4 tabstop=8 expandtab:
5795 * :indentSize=4:tabSize=8:noTabs=true: