MSWSP: fix dissect_mswsp_smb()
[wireshark-wip.git] / epan / dissectors / packet-wassp.c
blob8679292a54d0f7479fbe908f2cde88c4ba558754
1 /* packet-wassp.c
2 * Routines for the disassembly of the Chantry/HiPath AP-Controller
3 * tunneling protocol.
5 * $Id$
7 * Copyright 2009 Joerg Mayer (see AUTHORS file)
9 * Wireshark - Network traffic analyzer
10 * By Gerald Combs <gerald@wireshark.org>
11 * Copyright 1998 Gerald Combs
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License
15 * as published by the Free Software Foundation; either version 2
16 * of the License, or (at your option) any later version.
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
29 http://ietfreport.isoc.org/all-ids/draft-singh-capwap-ctp-02.txt
30 looks very similar (but not always identical).
32 AC: Access Controller
33 BM (old):
34 BP (old):
35 MU: Mobile Unit (Wireless client)
36 RU: Radio Unit (Access point)
38 TODO:
39 - Improve heuristics!!!
40 - Verify TLV descriptions/types
41 - Add TLV descriptions
42 - Fix 802.11 frame dissection
45 #include "config.h"
47 #include <glib.h>
48 #include <epan/packet.h>
49 #include <epan/exceptions.h>
50 #include <epan/wmem/wmem.h>
51 #include <epan/expert.h>
52 #include <epan/show_exception.h>
54 /* protocol handles */
55 static int proto_wassp = -1;
57 static dissector_handle_t snmp_handle;
58 static dissector_handle_t ieee80211_handle;
60 /* ett handles */
61 static int ett_wassp = -1;
62 static int ett_wassp_tlv_header = -1;
64 /* hf elements */
65 /* tlv generic */
66 static int hf_wassp_tlv_type = -1;
67 static int hf_wassp_tlv_length = -1;
68 static int hf_wassp_tlv_data = -1;
69 /* tunnel header */
70 static int hf_wassp_version = -1;
71 static int hf_wassp_type = -1;
72 static int hf_wassp_seqno = -1;
73 static int hf_wassp_flags = -1;
74 static int hf_wassp_sessionid = -1;
75 static int hf_wassp_length = -1;
76 /* tunnel data */
77 /* static int hf_data = -1; */
78 /* tunnel tlvs */
79 static int hf_status = -1;
80 static int hf_ru_soft_version = -1;
81 static int hf_ru_serial_number = -1;
82 static int hf_ru_challenge = -1;
83 static int hf_ru_response = -1;
84 static int hf_ac_ipaddr = -1;
85 static int hf_ru_vns_id = -1;
86 static int hf_tftp_server = -1;
87 static int hf_image_path = -1;
88 static int hf_ru_config = -1;
89 static int hf_ru_state = -1;
90 static int hf_ru_session_key = -1;
91 static int hf_message_type = -1;
92 static int hf_random_number = -1;
93 static int hf_standby_timeout = -1;
94 static int hf_ru_challenge_id = -1;
95 static int hf_ru_model = -1;
96 static int hf_ru_scan_mode = -1;
97 static int hf_ru_scan_type = -1;
98 static int hf_ru_scan_interval = -1;
99 static int hf_ru_radio_type = -1;
100 static int hf_ru_channel_dwell_time = -1;
101 static int hf_ru_channel_list = -1;
102 static int hf_ru_trap = -1;
103 static int hf_ru_scan_times = -1;
104 static int hf_ru_scan_delay = -1;
105 static int hf_ru_scan_req_id = -1;
106 static int hf_static_config = -1;
107 static int hf_local_bridging = -1;
108 static int hf_static_bp_ipaddr = -1;
109 static int hf_static_bp_netmask = -1;
110 static int hf_static_bp_gateway = -1;
111 static int hf_static_bm_ipaddr = -1;
112 static int hf_ru_alarm = -1;
113 static int hf_bp_request_id = -1;
114 static int hf_snmp_error_status = -1;
115 static int hf_snmp_error_index = -1;
116 static int hf_ap_img_to_ram = -1;
117 static int hf_ap_img_role = -1;
118 static int hf_ap_stats_block = -1;
119 static int hf_ap_stats_block_ether = -1;
120 static int hf_ap_stats_block_radio_a = -1;
121 static int hf_ap_stats_block_radio_b_g = -1;
122 static int hf_mu_stats_block = -1;
123 static int hf_mu_stats_block_65 = -1;
124 static int hf_dot1x_stats_block = -1;
125 static int hf_block_config = -1;
126 static int hf_config_radio = -1;
127 static int hf_config_vns = -1;
128 static int hf_wassp_vlan_tag = -1;
129 static int hf_wassp_tunnel_type = -1;
130 static int hf_ap_dhcp_mode = -1;
131 static int hf_ap_ipaddr = -1;
132 static int hf_ap_netmask = -1;
133 static int hf_ap_gateway = -1;
134 static int hf_preauth_resp = -1;
135 static int hf_bp_pmk = -1;
136 static int hf_ac_reg_challenge = -1;
137 static int hf_ac_reg_response = -1;
138 static int hf_stats = -1;
139 static int hf_certificate = -1;
140 static int hf_radio_id = -1;
141 static int hf_network_id = -1;
142 static int hf_mu_mac = -1;
143 static int hf_time = -1;
144 static int hf_num_radios = -1;
145 static int hf_radio_info = -1;
146 static int hf_network_info = -1;
147 static int hf_vendor_id = -1;
148 static int hf_product_id = -1;
149 static int hf_radio_info_ack = -1;
150 static int hf_mu_rf_stats_block = -1;
151 static int hf_stats_request_type = -1;
152 static int hf_stats_last = -1;
153 static int hf_mu_pmkid_list = -1;
154 static int hf_mu_pmk_bp = -1;
155 static int hf_mu_pmkid_bp = -1;
156 static int hf_countdown_time = -1;
157 /* discover header */
158 static int hf_wassp_discover1 = -1;
159 /* static int hf_wassp_length = -1; */
160 static int hf_wassp_discover2 = -1;
161 static int hf_wassp_subtype = -1;
162 static int hf_wassp_ether = -1;
163 static int hf_wassp_discover3 = -1;
164 /* discover tlvs */
165 /* peer header */
166 /* peer tlvs */
167 /* stats */
168 static int hf_stats_dot11_ackfailurecount = -1;
169 static int hf_stats_dot11_fcserrorcount = -1;
170 static int hf_stats_dot11_failedcount = -1;
171 static int hf_stats_dot11_frameduplicatecount = -1;
172 static int hf_stats_dot11_multicastreceivedframecount = -1;
173 static int hf_stats_dot11_multicasttransmittedframecount = -1;
174 static int hf_stats_dot11_multipleretrycount = -1;
175 static int hf_stats_dot11_rtsfailurecount = -1;
176 static int hf_stats_dot11_rtssuccesscount = -1;
177 static int hf_stats_dot11_receivedfragementcount = -1;
178 static int hf_stats_dot11_retrycount = -1;
179 static int hf_stats_dot11_transmittedfragmentcount = -1;
180 static int hf_stats_dot11_transmittedframecount = -1;
181 static int hf_stats_dot11_webundecryptablecount = -1;
182 static int hf_stats_dot11_wepexcludedcount = -1;
183 static int hf_stats_dot11_wepicverrorcount = -1;
184 static int hf_stats_drm_allocfailures = -1;
185 static int hf_stats_drm_currentchannel = -1;
186 static int hf_stats_drm_currentpower = -1;
187 static int hf_stats_drm_datatxfailures = -1;
188 static int hf_stats_drm_devicetype = -1;
189 static int hf_stats_drm_indatapackets = -1;
190 static int hf_stats_drm_inmgmtpackets = -1;
191 static int hf_stats_drm_loadfactor = -1;
192 static int hf_stats_drm_mgmttxfailures = -1;
193 static int hf_stats_drm_msgqfailures = -1;
194 static int hf_stats_drm_nodrmcurrentchannel = -1;
195 static int hf_stats_drm_outdatapackets = -1;
196 static int hf_stats_drm_outmgmtpackets = -1;
197 static int hf_stats_if_inbcastpackets = -1;
198 static int hf_stats_if_indiscards = -1;
199 static int hf_stats_if_inerrors = -1;
200 static int hf_stats_if_inmcastpackets = -1;
201 static int hf_stats_if_inoctets = -1;
202 static int hf_stats_if_inucastpackets = -1;
203 static int hf_stats_if_mtu = -1;
204 static int hf_stats_if_outbcastpackets = -1;
205 static int hf_stats_if_outdiscards = -1;
206 static int hf_stats_if_outerrors = -1;
207 static int hf_stats_if_outoctets = -1;
208 static int hf_stats_if_outucastpackets = -1;
209 static int hf_stats_if_outmcastpackets = -1;
210 static int hf_stats_mu_address = -1;
211 static int hf_stats_mu_associationcount = -1;
212 static int hf_stats_mu_authenticationcount = -1;
213 static int hf_stats_mu_deassociationcount = -1;
214 static int hf_stats_mu_deauthenticationcount = -1;
215 static int hf_stats_mu_ifindex = -1;
216 static int hf_stats_mu_reassociationcount = -1;
217 static int hf_stats_mu_receivedbytes = -1;
218 static int hf_stats_mu_receivederrors = -1;
219 static int hf_stats_mu_receivedframecount = -1;
220 static int hf_stats_mu_receivedrssi = -1;
221 static int hf_stats_mu_receivedrate = -1;
222 static int hf_stats_mu_transmittedbytes = -1;
223 static int hf_stats_mu_transmittederrors = -1;
224 static int hf_stats_mu_transmittedframecount = -1;
225 static int hf_stats_mu_transmittedrssi = -1;
226 static int hf_stats_mu_transmittedrate = -1;
227 static int hf_stats_mu_rf_stats_end = -1;
228 static int hf_stats_rfc_1213_sysuptime = -1;
229 static int hf_dot1x_stats_credent = -1;
230 static int hf_dot1x_stats_end_date = -1;
231 static int hf_stats_tlv_max = -1;
232 /* config */
233 static int hf_config_trace_status_debug = -1;
234 static int hf_config_trace_status_config = -1;
235 static int hf_config_use_bcast_for_disassc = -1;
236 static int hf_config_bandwidth_voice_assc = -1;
237 static int hf_config_bandwidth_voice_reassc = -1;
238 static int hf_config_bandwidth_video_assc = -1;
239 static int hf_config_bandwidth_video_reassc = -1;
240 static int hf_config_bandwidth_video_reserve = -1;
241 static int hf_config_bandwidth_adm_ctrl_reserve = -1;
242 static int hf_config_vlan_tag = -1;
243 static int hf_config_country_code = -1;
244 static int hf_config_poll_duration = -1;
245 static int hf_config_poll_interval = -1;
246 static int hf_config_poll_maintain_client_session = -1;
247 static int hf_config_telnet_enable = -1;
248 static int hf_config_telnet_password = -1;
249 static int hf_config_telnet_password_entry_mode = -1;
250 static int hf_config_outdoor_enable_environment = -1;
251 static int hf_config_slp_retry_count = -1;
252 static int hf_config_slp_retry_delay = -1;
253 static int hf_config_dns_retry_count = -1;
254 static int hf_config_dns_retry_delay = -1;
255 static int hf_config_mcast_slp_retry_count = -1;
256 static int hf_config_mcast_slp_retry_delay = -1;
257 static int hf_config_disc_retry_count = -1;
258 static int hf_config_disc_retry_delay = -1;
259 static int hf_config_logging_alarm_sev = -1;
260 static int hf_config_blacklist_blacklist_add = -1;
261 static int hf_config_failover_ac_ip_addr = -1;
262 static int hf_config_static_ac_ip_addr = -1;
263 static int hf_config_dhcp_assignment = -1;
264 static int hf_config_static_ap_ip_addr = -1;
265 static int hf_config_static_ap_ip_netmask = -1;
266 static int hf_config_static_ap_default_gw = -1;
267 static int hf_config_blacklist_del = -1;
268 static int hf_config_macaddr_req = -1;
269 static int hf_config_availability_mode = -1;
270 /* config vns */
271 static int hf_config_vns_radio_id = -1;
272 static int hf_config_vns_vns_id = -1;
273 static int hf_config_vns_turbo_voice = -1;
274 static int hf_config_vns_prop_ie = -1;
275 static int hf_config_vns_enable_802_11_h = -1;
276 static int hf_config_vns_power_backoff = -1;
277 static int hf_config_vns_bridge_mode = -1;
278 static int hf_config_vns_vlan_tag = -1;
279 static int hf_config_vns_process_ie_req = -1;
280 static int hf_config_vns_enable_u_apsd = -1;
281 static int hf_config_vns_adm_ctrl_voice = -1;
282 static int hf_config_vns_adm_ctrl_video = -1;
283 static int hf_config_vns_qos_up_value = -1;
284 static int hf_config_vns_priority_override = -1;
285 static int hf_config_vns_dscp_override_value = -1;
286 static int hf_config_vns_enable_802_11_e = -1;
287 static int hf_config_vns_enable_wmm = -1;
288 static int hf_config_vns_legacy_client_priority = -1;
289 static int hf_config_vns_ssid_id = -1;
290 static int hf_config_vns_ssid_bcast_string = -1;
291 static int hf_config_vns_ssid_suppress = -1;
292 static int hf_config_vns_802_1_x_enable = -1;
293 static int hf_config_vns_802_1_x_dyn_rekey = -1;
294 static int hf_config_vns_wpa_enable = -1;
295 static int hf_config_vns_wpa_v2_enable = -1;
296 static int hf_config_vns_wpa_passphrase = -1;
297 static int hf_config_vns_wpa_cipher_type = -1;
298 static int hf_config_vns_wpa_v2_cipher_type = -1;
299 static int hf_config_vns_wep_key_index = -1;
300 static int hf_config_vns_wep_default_key_value = -1;
301 static int hf_config_vns_channel_report = -1;
302 static int hf_config_vns_wds_service = -1;
303 static int hf_config_vns_wds_pref_parent = -1;
304 static int hf_config_vns_wds_bridge = -1;
305 static int hf_config_vns_okc_enabled = -1;
306 static int hf_config_vns_mu_assoc_retries = -1;
307 static int hf_config_vns_mu_assoc_timeout = -1;
308 static int hf_config_vns_wds_parent = -1;
309 static int hf_config_vns_wds_back_parent = -1;
310 static int hf_config_vns_wds_name = -1;
311 /* config radio */
312 static int hf_config_radio_radio_id = -1;
313 static int hf_config_radio_enable_radio = -1;
314 static int hf_config_radio_channel = -1;
315 static int hf_config_radio_op_rate_set = -1;
316 static int hf_config_radio_op_rate_max = -1;
317 static int hf_config_radio_beacon_period = -1;
318 static int hf_config_radio_dtim_period = -1;
319 static int hf_config_radio_rts_threshold = -1;
320 static int hf_config_radio_fragment_threshold = -1;
321 static int hf_config_radio_power_level = -1;
322 static int hf_config_radio_diversity_rx = -1;
323 static int hf_config_radio_diversity_tx = -1;
324 static int hf_config_radio_short_preamble = -1;
325 static int hf_config_radio_basic_rate_max = -1;
326 static int hf_config_radio_basic_rate_min = -1;
327 static int hf_config_radio_hw_retries = -1;
328 static int hf_config_radio_tx_power_min = -1;
329 static int hf_config_radio_tx_power_max = -1;
330 static int hf_config_radio_domain_id = -1;
331 static int hf_config_radio_b_enable = -1;
332 static int hf_config_radio_b_basic_rates = -1;
333 static int hf_config_radio_g_enable = -1;
334 static int hf_config_radio_g_protect_mode = -1;
335 static int hf_config_radio_g_protect_type = -1;
336 static int hf_config_radio_g_protect_rate = -1;
337 static int hf_config_radio_g_basic_rate = -1;
338 static int hf_config_radio_a_support_802_11_j = -1;
339 static int hf_config_radio_atpc_en_interval = -1;
340 static int hf_config_radio_acs_ch_list = -1;
341 static int hf_config_radio_tx_power_adj = -1;
343 #define PROTO_SHORT_NAME "WASSP"
344 #define PROTO_LONG_NAME "Wireless Access Station Session Protocol"
346 #define PORT_WASSP_DISCOVER 13907
347 #define PORT_WASSP_TUNNEL 13910
348 /* #define PORT_WASSP_PEER 13913?? */
350 /* ============= copy/paste/modify from value_string.[hc] ============== */
351 typedef struct _ext_value_string {
352 guint32 value;
353 const gchar *strptr;
354 int* hf_element;
355 int (*specialfunction)(tvbuff_t *, packet_info *, proto_tree *, guint32,
356 guint32, const struct _ext_value_string *);
357 const struct _ext_value_string *evs;
358 } ext_value_string;
361 static const gchar*
362 match_strextval_idx(guint32 val, const ext_value_string *vs, gint *idx) {
363 gint i = 0;
365 if(vs) {
366 while (vs[i].strptr) {
367 if (vs[i].value == val) {
368 if (idx)
369 *idx = i;
370 return(vs[i].strptr);
372 i++;
376 if (idx)
377 *idx = -1;
378 return NULL;
381 static const gchar*
382 extval_to_str_idx(guint32 val, const ext_value_string *vs, gint *idx, const char *fmt) {
383 const gchar *ret;
385 if (!fmt)
386 fmt="Unknown";
388 ret = match_strextval_idx(val, vs, idx);
389 if (ret != NULL)
390 return ret;
392 return wmem_strdup_printf(wmem_packet_scope(), fmt, val);
394 /* ============= end copy/paste/modify ============== */
396 /* Forward decls needed by wassp_tunnel_tlv_vals et al */
397 static int dissect_snmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *wassp_tree,
398 volatile guint32 offset, guint32 length, const ext_value_string *value_array);
399 static int dissect_ieee80211(tvbuff_t *tvb, packet_info *pinfo, proto_tree *wassp_tree,
400 volatile guint32 offset, guint32 length, const ext_value_string *value_array);
401 static int dissect_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *wassp_tree,
402 guint32 offset, guint32 length, const ext_value_string *value_array);
404 static const ext_value_string wassp_tunnel_tlv_config_vns_tlv_vals[] = {
405 { 1, "V_RADIO_ID", &hf_config_vns_radio_id, NULL, NULL },
406 { 2, "V_VNS_ID", &hf_config_vns_vns_id, NULL, NULL },
407 { 3, "V_TURBO_VOICE", &hf_config_vns_turbo_voice, NULL, NULL },
408 { 4, "V_PROP_IE", &hf_config_vns_prop_ie, NULL, NULL },
409 { 5, "V_ENABLE_802_11_H", &hf_config_vns_enable_802_11_h, NULL, NULL },
410 { 6, "V_POWER_BACKOFF", &hf_config_vns_power_backoff, NULL, NULL },
411 { 7, "V_BRIDGE_MODE", &hf_config_vns_bridge_mode, NULL, NULL },
412 { 8, "V_VLAN_TAG", &hf_config_vns_vlan_tag, NULL, NULL },
413 { 9, "V_PROCESS_IE_REQ", &hf_config_vns_process_ie_req, NULL, NULL },
414 { 10, "V_ENABLE_U_APSD", &hf_config_vns_enable_u_apsd, NULL, NULL },
415 { 11, "V_ADM_CTRL_VOICE", &hf_config_vns_adm_ctrl_voice, NULL, NULL },
416 { 12, "V_ADM_CTRL_VIDEO", &hf_config_vns_adm_ctrl_video, NULL, NULL },
417 { 13, "V_QOS_UP_VALUE", &hf_config_vns_qos_up_value, NULL, NULL },
418 { 14, "V_PRIORITY_OVERRIDE", &hf_config_vns_priority_override, NULL, NULL },
419 { 15, "V_DSCP_OVERRIDE_VALUE", &hf_config_vns_dscp_override_value, NULL, NULL },
420 { 16, "V_ENABLE_802_11_E", &hf_config_vns_enable_802_11_e, NULL, NULL },
421 { 17, "V_ENABLE_WMM", &hf_config_vns_enable_wmm, NULL, NULL },
422 { 18, "V_LEGACY_CLIENT_PRIORITY", &hf_config_vns_legacy_client_priority, NULL, NULL },
423 { 19, "V_SSID_ID", &hf_config_vns_ssid_id, NULL, NULL },
424 { 20, "V_SSID_BCAST_STRING", &hf_config_vns_ssid_bcast_string, NULL, NULL },
425 { 21, "V_SSID_SUPPRESS", &hf_config_vns_ssid_suppress, NULL, NULL },
426 { 22, "V_802_1_X_ENABLE", &hf_config_vns_802_1_x_enable, NULL, NULL },
427 { 23, "V_802_1_X_DYN_REKEY", &hf_config_vns_802_1_x_dyn_rekey, NULL, NULL },
428 { 24, "V_WPA_ENABLE", &hf_config_vns_wpa_enable, NULL, NULL },
429 { 25, "V_WPA_V2_ENABLE", &hf_config_vns_wpa_v2_enable, NULL, NULL },
430 { 26, "V_WPA_PASSPHRASE", &hf_config_vns_wpa_passphrase, NULL, NULL },
431 { 27, "V_WPA_CIPHER_TYPE", &hf_config_vns_wpa_cipher_type, NULL, NULL },
432 { 28, "V_WPA_V2_CIPHER_TYPE", &hf_config_vns_wpa_v2_cipher_type, NULL, NULL },
433 { 29, "V_WEP_KEY_INDEX", &hf_config_vns_wep_key_index, NULL, NULL },
434 { 30, "V_WEP_DEFAULT_KEY_VALUE", &hf_config_vns_wep_default_key_value, NULL, NULL },
435 { 31, "V_CHANNEL_REPORT", &hf_config_vns_channel_report, NULL, NULL },
436 { 32, "V_WDS_SERVICE", &hf_config_vns_wds_service, NULL, NULL },
437 { 33, "V_WDS_PREF_PARENT", &hf_config_vns_wds_pref_parent, NULL, NULL },
438 { 34, "V_WDS_BRIDGE", &hf_config_vns_wds_bridge, NULL, NULL },
439 { 35, "V_OKC_ENABLED", &hf_config_vns_okc_enabled, NULL, NULL },
440 { 36, "V_MU_ASSOC_RETRIES", &hf_config_vns_mu_assoc_retries, NULL, NULL },
441 { 37, "V_MU_ASSOC_TIMEOUT", &hf_config_vns_mu_assoc_timeout, NULL, NULL },
442 { 38, "V_WDS_PARENT", &hf_config_vns_wds_parent, NULL, NULL },
443 { 39, "V_WDS_BACK_PARENT", &hf_config_vns_wds_back_parent, NULL, NULL },
444 { 40, "V_WDS_NAME", &hf_config_vns_wds_name, NULL, NULL },
446 { 0, NULL, NULL, NULL, NULL }
449 static const ext_value_string wassp_tunnel_tlv_config_radio_tlv_vals[] = {
450 { 1, "R_RADIO_ID", &hf_config_radio_radio_id, NULL, NULL },
451 { 2, "R_ENABLE_RADIO", &hf_config_radio_enable_radio, NULL, NULL },
452 { 3, "R_CHANNEL", &hf_config_radio_channel, NULL, NULL },
453 { 4, "R_OP_RATE_SET", &hf_config_radio_op_rate_set, NULL, NULL },
454 { 5, "R_OP_RATE_MAX", &hf_config_radio_op_rate_max, NULL, NULL },
455 { 6, "R_BEACON_PERIOD", &hf_config_radio_beacon_period, NULL, NULL },
456 { 7, "R_DTIM_PERIOD", &hf_config_radio_dtim_period, NULL, NULL },
457 { 8, "R_RTS_THRESHOLD", &hf_config_radio_rts_threshold, NULL, NULL },
458 { 9, "R_RETRY_LIMIT_SHORT", /* hf_, */ NULL, NULL, NULL },
459 { 10, "R_RETRY_LIMIT_LONG", /* hf_, */ NULL, NULL, NULL },
460 { 11, "R_FRAGMENT_THRESHOLD", &hf_config_radio_fragment_threshold, NULL, NULL },
461 { 12, "R_POWER_LEVEL", &hf_config_radio_power_level, NULL, NULL },
462 { 13, "R_DIVERSITY_LEFT", /* hf_, */ NULL, NULL, NULL },
463 { 14, "R_DIVERSITY_RIGHT", /* hf_, */ NULL, NULL, NULL },
464 { 15, "R_DIVERSITY_RX", &hf_config_radio_diversity_rx, NULL, NULL },
465 { 16, "R_DIVERSITY_TX", &hf_config_radio_diversity_tx, NULL, NULL },
466 { 17, "R_SHORT_PREAMBLE", &hf_config_radio_short_preamble, NULL, NULL },
467 { 18, "R_BASIC_RATE_MAX", &hf_config_radio_basic_rate_max, NULL, NULL },
468 { 19, "R_BASIC_RATE_MIN", &hf_config_radio_basic_rate_min, NULL, NULL },
469 { 20, "R_HW_RETRIES", &hf_config_radio_hw_retries, NULL, NULL },
470 { 21, "R_DRM_TX_POWER_MIN", &hf_config_radio_tx_power_min, NULL, NULL },
471 { 22, "R_DRM_TX_POWER_MAX", &hf_config_radio_tx_power_max, NULL, NULL },
472 { 23, "R_DRM_AVOID_WLAN", /* hf_, */ NULL, NULL, NULL },
473 { 24, "R_DRM_DOMAIN_ID", &hf_config_radio_domain_id, NULL, NULL },
474 { 25, "R_B_ENABLE", &hf_config_radio_b_enable, NULL, NULL },
475 { 26, "R_B_BASIC_RATES", &hf_config_radio_b_basic_rates, NULL, NULL },
476 { 27, "R_G_ENABLE", &hf_config_radio_g_enable, NULL, NULL },
477 { 28, "R_G_PROTECT_MODE", &hf_config_radio_g_protect_mode, NULL, NULL },
478 { 29, "R_G_PROTECT_TYPE", &hf_config_radio_g_protect_type, NULL, NULL },
479 { 30, "R_G_PROTECT_RATE", &hf_config_radio_g_protect_rate, NULL, NULL },
480 { 31, "R_G_BASIC_RATE", &hf_config_radio_g_basic_rate, NULL, NULL },
481 { 32, "R_A_SUPPORT_802_11_J", &hf_config_radio_a_support_802_11_j, NULL, NULL },
482 { 33, "R_ATPC_EN_INTERVAL", &hf_config_radio_atpc_en_interval, NULL, NULL },
483 { 34, "R_ACS_CH_LIST", &hf_config_radio_acs_ch_list, NULL, NULL },
484 { 35, "R_TX_POWER_ADJ", &hf_config_radio_tx_power_adj, NULL, NULL },
486 { 0, NULL, NULL, NULL, NULL }
489 static const ext_value_string wassp_tunnel_tlv_config_tlv_vals[] = {
490 { 1, "RADIO_CONFIG_BLOCK", &hf_config_radio, dissect_tlv, wassp_tunnel_tlv_config_radio_tlv_vals },
491 { 2, "VNS_CONFIG_BLOCK", &hf_config_vns, dissect_tlv, wassp_tunnel_tlv_config_vns_tlv_vals },
492 { 3, "DIVERSITY_LEFT", /* hf_, */ NULL, NULL, NULL },
493 { 4, "DIVERSITY_RIGHT", /* hf_, */ NULL, NULL, NULL },
494 { 5, "TRACE_STATUS_DEBUG", &hf_config_trace_status_debug, NULL, NULL },
495 { 6, "TRACE_STATUS_CONFIG", &hf_config_trace_status_config, NULL, NULL },
496 { 7, "BRIDGE_AT_AP", /* hf_, */ NULL, NULL, NULL },
497 { 8, "USE_BCAST_FOR_DISASSC", &hf_config_use_bcast_for_disassc, NULL, NULL },
498 { 9, "BANDWIDTH_VOICE_ASSC", &hf_config_bandwidth_voice_assc, NULL, NULL },
499 { 10, "BANDWIDTH_VOICE_REASSC", &hf_config_bandwidth_voice_reassc, NULL, NULL },
500 { 11, "BANDWIDTH_VIDEO_ASSC", &hf_config_bandwidth_video_assc, NULL, NULL },
501 { 12, "BANDWIDTH_VIDEO_REASSC", &hf_config_bandwidth_video_reassc, NULL, NULL },
502 { 13, "BANDWIDTH_VIDEO_RESERVE", &hf_config_bandwidth_video_reserve, NULL, NULL },
503 { 14, "BANDWIDTH_ADM_CTRL_RESERVE", &hf_config_bandwidth_adm_ctrl_reserve, NULL, NULL },
504 { 15, "VLAN_TAG", &hf_config_vlan_tag, NULL, NULL },
505 { 16, "COUNTRY_CODE", &hf_config_country_code, NULL, NULL },
506 { 17, "POLL_DURATION", &hf_config_poll_duration, NULL, NULL },
507 { 18, "POLL_INTERVAL", &hf_config_poll_interval, NULL, NULL },
508 { 19, "POLL_REBOOT_ON_FAIL", /* hf_, */ NULL, NULL, NULL },
509 { 20, "POLL_MAINTAIN_CLIENT_SESSION", &hf_config_poll_maintain_client_session, NULL, NULL },
510 { 21, "TELNET_ENABLE", &hf_config_telnet_enable, NULL, NULL },
511 { 22, "TELNET_PASSWORD", &hf_config_telnet_password, NULL, NULL },
512 { 23, "TELNET_PASSWORD_ENTRY_MODE", &hf_config_telnet_password_entry_mode, NULL, NULL },
513 { 24, "OUTDOOR_ENABLE-ENVIRONMENT", &hf_config_outdoor_enable_environment, NULL, NULL },
514 { 25, "BSS_COUNT", /* hf_, */ NULL, NULL, NULL },
515 { 26, "DRM_ENABLE", /* hf_, */ NULL, NULL, NULL },
516 { 27, "DRM_ENABLE_SHAPE_COV", /* hf_, */ NULL, NULL, NULL },
517 { 28, "SLP_RETRY_COUNT", &hf_config_slp_retry_count, NULL, NULL },
518 { 29, "SLP_RETRY_DELAY", &hf_config_slp_retry_delay, NULL, NULL },
519 { 30, "DNS_RETRY_COUNT", &hf_config_dns_retry_count, NULL, NULL },
520 { 31, "DNS_RETRY_DELAY", &hf_config_dns_retry_delay, NULL, NULL },
521 { 32, "MCAST_SLP_RETRY_COUNT", &hf_config_mcast_slp_retry_count, NULL, NULL },
522 { 33, "MCAST_SLP_RETRY_DELAY", &hf_config_mcast_slp_retry_delay, NULL, NULL },
523 { 34, "DISC_RETRY_COUNT", &hf_config_disc_retry_count, NULL, NULL },
524 { 35, "DISC_RETRY_DELAY", &hf_config_disc_retry_delay, NULL, NULL },
525 { 36, "LOGGING_ALARM_SEV", &hf_config_logging_alarm_sev, NULL, NULL },
526 { 37, "BLACKLIST-BLACKLIST_ADD", &hf_config_blacklist_blacklist_add, NULL, NULL },
527 { 38, "FAILOVER_AC_IP_ADDR", &hf_config_failover_ac_ip_addr, NULL, NULL },
528 { 39, "STATIC_AC_IP_ADDR", &hf_config_static_ac_ip_addr, NULL, NULL },
529 { 40, "DHCP_ASSIGNMENT", &hf_config_dhcp_assignment, NULL, NULL },
530 { 41, "STATIC_AP_IP_ADDR", &hf_config_static_ap_ip_addr, NULL, NULL },
531 { 42, "STATIC_AP_IP_NETMASK", &hf_config_static_ap_ip_netmask, NULL, NULL },
532 { 43, "STATIC_AP_DEFAULT_GW", &hf_config_static_ap_default_gw, NULL, NULL },
533 { 44, "BLACKLIST_DEL", &hf_config_blacklist_del, NULL, NULL },
534 { 45, "MACADDR_REQ", &hf_config_macaddr_req, NULL, NULL },
535 { 46, "AVAILABILITY_MODE", &hf_config_availability_mode, NULL, NULL },
536 { 47, "AP_PERSISTENCE", /* hf_, */ NULL, NULL, NULL },
537 { 48, "FOREIGN_AP", /* hf_, */ NULL, NULL, NULL },
538 { 49, "SUPP1X_CREDENTIAL_REMOVE", /* hf_, */ NULL, NULL, NULL },
539 { 50, "SUPP1X_CERT_TFTP_IP", /* hf_, */ NULL, NULL, NULL },
540 { 51, "SUPP1X_CERT_TFTP_PATH", /* hf_, */ NULL, NULL, NULL },
541 { 52, "SUPP1X_PRIVATE", /* hf_, */ NULL, NULL, NULL },
542 { 53, "SUPP1X_DOMAIN", /* hf_, */ NULL, NULL, NULL },
543 { 54, "SUPP1X_USERID", /* hf_, */ NULL, NULL, NULL },
544 { 55, "SUPP1X_PASSWORD", /* hf_, */ NULL, NULL, NULL },
545 { 56, "SUPP1X_CREDENT", /* hf_, */ NULL, NULL, NULL },
546 { 57, "SUPP1X_SERIAL", /* hf_, */ NULL, NULL, NULL },
547 { 58, "SUPP1X_START_DATE", /* hf_, */ NULL, NULL, NULL },
548 { 59, "SUPP1X_END_DATE", /* hf_, */ NULL, NULL, NULL },
549 { 60, "SUPP1X_ISSUED_BY", /* hf_, */ NULL, NULL, NULL },
550 { 61, "SUPP1X_ISSUED_TO", /* hf_, */ NULL, NULL, NULL },
552 { 0, NULL, NULL, NULL, NULL }
555 static const ext_value_string wassp_tunnel_mu_stats_block_65_tlv_vals[] = {
557 { 0, NULL, NULL, NULL, NULL }
560 static const ext_value_string wassp_tunnel_mu_stats_block_tlv_vals[] = {
561 { 65, "MU_STATS_BLOCK_65", &hf_mu_stats_block_65, dissect_tlv, wassp_tunnel_mu_stats_block_65_tlv_vals },
563 { 0, NULL, NULL, NULL, NULL }
566 static const ext_value_string wassp_tunnel_ap_stats_block_tlv_vals[] = {
567 { 1, "DOT11_ACKFailureCount", &hf_stats_dot11_ackfailurecount, NULL, NULL },
568 { 2, "DOT11_FCSErrorCount", &hf_stats_dot11_fcserrorcount, NULL, NULL },
569 { 3, "DOT11_FailedCount", &hf_stats_dot11_failedcount, NULL, NULL },
570 { 4, "DOT11_FrameDuplicateCount", &hf_stats_dot11_frameduplicatecount, NULL, NULL },
571 { 5, "DOT11_MulticastReceivedFrameCount", &hf_stats_dot11_multicastreceivedframecount, NULL, NULL },
572 { 6, "DOT11_MulticastTransmittedFrameCount", &hf_stats_dot11_multicasttransmittedframecount, NULL, NULL },
573 { 7, "DOT11_MultipleRetryCount", &hf_stats_dot11_multipleretrycount, NULL, NULL },
574 { 8, "DOT11_RTSFailureCount", &hf_stats_dot11_rtsfailurecount, NULL, NULL },
575 { 9, "DOT11_RTSSuccessCount", &hf_stats_dot11_rtssuccesscount, NULL, NULL },
576 { 10, "DOT11_ReceivedFragementCount", &hf_stats_dot11_receivedfragementcount, NULL, NULL },
577 { 11, "DOT11_RetryCount", &hf_stats_dot11_retrycount, NULL, NULL },
578 { 12, "DOT11_TransmittedFragmentCount", &hf_stats_dot11_transmittedfragmentcount, NULL, NULL },
579 { 13, "DOT11_TransmittedFrameCount", &hf_stats_dot11_transmittedframecount, NULL, NULL },
580 { 14, "DOT11_WEBUndecryptableCount", &hf_stats_dot11_webundecryptablecount, NULL, NULL },
581 { 15, "DOT11_WEPExcludedCount", &hf_stats_dot11_wepexcludedcount, NULL, NULL },
582 { 16, "DOT11_WEPICVErrorCount", &hf_stats_dot11_wepicverrorcount, NULL, NULL },
583 { 17, "DRM_AllocFailures", &hf_stats_drm_allocfailures, NULL, NULL },
584 { 18, "DRM_CurrentChannel", &hf_stats_drm_currentchannel, NULL, NULL },
585 { 19, "DRM_CurrentPower", &hf_stats_drm_currentpower, NULL, NULL },
586 { 20, "DRM_DataTxFailures", &hf_stats_drm_datatxfailures, NULL, NULL },
587 { 21, "DRM_DeviceType", &hf_stats_drm_devicetype, NULL, NULL },
588 { 22, "DRM_InDataPackets", &hf_stats_drm_indatapackets, NULL, NULL },
589 { 23, "DRM_InMgmtPackets", &hf_stats_drm_inmgmtpackets, NULL, NULL },
590 { 24, "DRM_LoadFactor", &hf_stats_drm_loadfactor, NULL, NULL },
591 { 25, "DRM_MgmtTxFailures", &hf_stats_drm_mgmttxfailures, NULL, NULL },
592 { 26, "DRM_MsgQFailures", &hf_stats_drm_msgqfailures, NULL, NULL },
593 { 27, "DRM_NoDRMCurrentChannel", &hf_stats_drm_nodrmcurrentchannel, NULL, NULL },
594 { 28, "DRM_OutDataPackets", &hf_stats_drm_outdatapackets, NULL, NULL },
595 { 29, "DRM_OutMgmtPackets", &hf_stats_drm_outmgmtpackets, NULL, NULL },
596 { 30, "IF_InBcastPackets", &hf_stats_if_inbcastpackets, NULL, NULL },
597 { 31, "IF_InDiscards", &hf_stats_if_indiscards, NULL, NULL },
598 { 32, "IF_InErrors", &hf_stats_if_inerrors, NULL, NULL },
599 { 33, "IF_InMcastPackets", &hf_stats_if_inmcastpackets, NULL, NULL },
600 { 34, "IF_InOctets", &hf_stats_if_inoctets, NULL, NULL },
601 { 35, "IF_InUcastPackets", &hf_stats_if_inucastpackets, NULL, NULL },
602 { 36, "IF_MTU", &hf_stats_if_mtu, NULL, NULL },
603 { 37, "IF_OutBcastPackets", &hf_stats_if_outbcastpackets, NULL, NULL },
604 { 38, "IF_OutDiscards", &hf_stats_if_outdiscards, NULL, NULL },
605 { 39, "IF_OutErrors", &hf_stats_if_outerrors, NULL, NULL },
606 { 40, "IF_OutOctets", &hf_stats_if_outoctets, NULL, NULL },
607 { 41, "IF_OutUcastPackets", &hf_stats_if_outucastpackets, NULL, NULL },
608 { 42, "IF_OutMCastPackets", &hf_stats_if_outmcastpackets, NULL, NULL },
609 { 43, "MU_Address", &hf_stats_mu_address, NULL, NULL },
610 { 44, "MU_AssociationCount", &hf_stats_mu_associationcount, NULL, NULL },
611 { 45, "MU_AuthenticationCount", &hf_stats_mu_authenticationcount, NULL, NULL },
612 { 46, "MU_DeAssociationCount", &hf_stats_mu_deassociationcount, NULL, NULL },
613 { 47, "MU_DeAuthenticationCount", &hf_stats_mu_deauthenticationcount, NULL, NULL },
614 { 48, "MU_IfIndex", &hf_stats_mu_ifindex, NULL, NULL },
615 { 49, "MU_ReAssociationCount", &hf_stats_mu_reassociationcount, NULL, NULL },
616 { 50, "MU_ReceivedBytes", &hf_stats_mu_receivedbytes, NULL, NULL },
617 { 51, "MU_ReceivedErrors", &hf_stats_mu_receivederrors, NULL, NULL },
618 { 52, "MU_ReceivedFrameCount", &hf_stats_mu_receivedframecount, NULL, NULL },
619 { 53, "MU_ReceivedRSSI", &hf_stats_mu_receivedrssi, NULL, NULL },
620 { 54, "MU_ReceivedRate", &hf_stats_mu_receivedrate, NULL, NULL },
621 { 55, "MU_TransmittedBytes", &hf_stats_mu_transmittedbytes, NULL, NULL },
622 { 56, "MU_TransmittedErrors", &hf_stats_mu_transmittederrors, NULL, NULL },
623 { 57, "MU_TransmittedFrameCount", &hf_stats_mu_transmittedframecount, NULL, NULL },
624 { 58, "MU_TransmittedRSSI", &hf_stats_mu_transmittedrssi, NULL, NULL },
625 { 59, "MU_TransmittedRate", &hf_stats_mu_transmittedrate, NULL, NULL },
626 { 60, "MU_RF_STATS_END", &hf_stats_mu_rf_stats_end, NULL, NULL },
627 { 61, "RFC_1213_SYSUPTIME", &hf_stats_rfc_1213_sysuptime, NULL, NULL },
628 { 62, "STATS_ETHER_BLOCK", &hf_ap_stats_block_ether, dissect_tlv, wassp_tunnel_ap_stats_block_tlv_vals },
629 { 63, "STATS_RADIO_A_BLOCK", &hf_ap_stats_block_radio_a, dissect_tlv, wassp_tunnel_ap_stats_block_tlv_vals },
630 { 64, "STATS_RADIO_B_G_BLOCK", &hf_ap_stats_block_radio_b_g, dissect_tlv, wassp_tunnel_ap_stats_block_tlv_vals },
631 { 65, "MU_STATS_BLOCK", &hf_mu_stats_block, dissect_tlv, wassp_tunnel_ap_stats_block_tlv_vals },
632 { 66, "WDS_BLOCK", /* hf_, */ NULL, NULL, NULL },
633 { 67, "WDS_Role", /* hf_, */ NULL, NULL, NULL },
634 { 68, "WDS_PARENT_MAC", /* hf_, */ NULL, NULL, NULL },
635 { 69, "WDS_BSSID", /* hf_, */ NULL, NULL, NULL },
636 { 70, "DOT1x_STATS_BLOCK", &hf_dot1x_stats_block, dissect_tlv, wassp_tunnel_ap_stats_block_tlv_vals },
637 { 71, "DOT1x_CREDENT", &hf_dot1x_stats_credent, NULL, NULL },
638 { 72, "DOT1x_END_DATE", &hf_dot1x_stats_end_date, NULL, NULL },
639 { 73, "TLV_MAX", &hf_stats_tlv_max, NULL, NULL },
641 { 0, NULL, NULL, NULL, NULL }
644 static const ext_value_string wassp_tunnel_tlv_vals[] = {
645 { 1, "STATUS", &hf_status, NULL, NULL },
646 { 2, "RU-SOFT-VERSION", &hf_ru_soft_version, NULL, NULL },
647 { 3, "RU-SERIAL-NUMBER", &hf_ru_serial_number, NULL, NULL },
648 { 4, "RU-REG-CHALLENGE", &hf_ru_challenge, NULL, NULL },
649 { 5, "RU-REG-RESPONSE", &hf_ru_response, NULL, NULL },
650 { 6, "AC-IPADDR", &hf_ac_ipaddr, NULL, NULL },
651 { 7, "RU-VNS-ID", &hf_ru_vns_id, NULL, NULL },
652 { 8, "TFTP-SERVER", &hf_tftp_server, NULL, NULL },
653 { 9, "IMAGE-PATH", &hf_image_path, NULL, NULL },
654 { 10, "RU-CONFIG", &hf_ru_config, dissect_snmp, NULL },
655 { 11, "RU-STATE", &hf_ru_state, NULL, NULL },
656 { 12, "RU-SESSION-KEY", &hf_ru_session_key, NULL, NULL },
657 { 13, "MESSAGE-TYPE", &hf_message_type, NULL, NULL },
658 { 14, "RANDOM-NUMBER", &hf_random_number, NULL, NULL },
659 { 15, "STANDBY-TIMEOUT", &hf_standby_timeout, NULL, NULL },
660 { 16, "RU-CHALLENGE-ID", &hf_ru_challenge_id, NULL, NULL },
661 { 17, "RU-MODEL", &hf_ru_model, NULL, NULL },
662 { 18, "RU-SCAN-MODE", &hf_ru_scan_mode, NULL, NULL },
663 { 19, "RU-SCAN-TYPE", &hf_ru_scan_type, NULL, NULL },
664 { 20, "RU-SCAN-INTERVAL", &hf_ru_scan_interval, NULL, NULL },
665 { 21, "RU-RADIO-TYPE", &hf_ru_radio_type, NULL, NULL },
666 { 22, "RU-CHANNEL-DWELL-TIME", &hf_ru_channel_dwell_time, NULL, NULL },
667 { 23, "RU-CHANNEL-LIST", &hf_ru_channel_list, NULL, NULL },
668 { 24, "RU-TRAP", &hf_ru_trap, NULL, NULL },
669 { 25, "RU-SCAN-TIMES", &hf_ru_scan_times, NULL, NULL },
670 { 26, "RU-SCAN-DELAY", &hf_ru_scan_delay, NULL, NULL },
671 { 27, "RU-SCAN-REQ-ID", &hf_ru_scan_req_id, NULL, NULL },
672 { 28, "STATIC-CONFIG", &hf_static_config, NULL, NULL },
673 { 29, "LOCAL-BRIDGING", &hf_local_bridging, NULL, NULL },
674 { 30, "STATIC-BP-IPADDR", &hf_static_bp_ipaddr, NULL, NULL },
675 { 31, "STATIC-BP-NETMASK", &hf_static_bp_netmask, NULL, NULL },
676 { 32, "STATIC-BP-GATEWAY", &hf_static_bp_gateway, NULL, NULL },
677 { 33, "STATIC-BM-IPADDR", &hf_static_bm_ipaddr, NULL, NULL },
678 { 34, "TUNNEL_PROTOCOL/BSSID", /* &hf_, */ NULL, NULL, NULL },
679 { 35, "BP_WIRED_MACADDR", /* &hf_, */ NULL, NULL, NULL },
680 { 36, "RU_CAPABILITY", /* &hf_, */ NULL, NULL, NULL },
681 { 37, "RU_SSID_NAME", /* hf_, */ NULL, NULL, NULL },
682 { 38, "RU_ALARM", &hf_ru_alarm, dissect_snmp, NULL },
683 { 39, "PREAUTH_RESP", &hf_preauth_resp, NULL, NULL },
684 { 40, "BP_PMK", &hf_bp_pmk, NULL, NULL },
685 { 41, "AC_REG_CHALLENGE", &hf_ac_reg_challenge, NULL, NULL },
686 { 42, "AC_REG_RESPONSE", &hf_ac_reg_response, NULL, NULL },
687 { 43, "STATS", &hf_stats, NULL, NULL },
688 { 44, "CERTIFICATE", &hf_certificate, NULL, NULL },
689 { 45, "RADIO_ID", &hf_radio_id, NULL, NULL },
690 { 46, "BP-REQUEST-ID", &hf_bp_request_id, NULL, NULL },
691 { 47, "NETWORK_ID", &hf_network_id, NULL, NULL },
692 { 48, "MU_MAC", &hf_mu_mac, NULL, NULL },
693 { 49, "TIME", &hf_time, NULL, NULL },
694 { 50, "NUM_RADIOS", &hf_num_radios, NULL, NULL },
695 { 51, "RADIO_INFO", &hf_radio_info, NULL, NULL },
696 { 52, "NETWORK_INFO", &hf_network_info, NULL, NULL },
697 { 53, "VENDOR_ID", &hf_vendor_id, NULL, NULL },
698 { 54, "PRODUCT_ID", &hf_product_id, NULL, NULL },
699 { 55, "RADIO_INFO_ACK", &hf_radio_info_ack, NULL, NULL },
700 { 60, "SNMP-ERROR-STATUS", &hf_snmp_error_status, NULL, NULL },
701 { 61, "SNMP-ERROR-INDEX", &hf_snmp_error_index, NULL, NULL },
702 { 62, "ALTERNATE_AC_IPADDR", /* &hf_, */ NULL, NULL, NULL },
703 { 63, "AP-IMG-TO-RAM", &hf_ap_img_to_ram, NULL, NULL },
704 { 64, "AP-IMG-ROLE", &hf_ap_img_role, NULL, NULL },
705 { 65, "AP_STATS_BLOCK", &hf_ap_stats_block, dissect_tlv, wassp_tunnel_ap_stats_block_tlv_vals },
706 { 66, "MU_RF_STATS_BLOCK", &hf_mu_rf_stats_block, dissect_tlv, wassp_tunnel_mu_stats_block_tlv_vals },
707 { 67, "STATS_REQUEST_TYPE", &hf_stats_request_type, NULL, NULL },
708 { 68, "STATS_LAST", &hf_stats_last, NULL, NULL },
709 { 69, "TLV_CONFIG", &hf_block_config, dissect_tlv, wassp_tunnel_tlv_config_tlv_vals },
710 { 70, "CONFIG_ERROR_BLOCK", /* &hf_, */ NULL, NULL, NULL },
711 { 71, "CONFIG_MODIFIED_BLOCK", /* &hf_, */ NULL, NULL, NULL },
712 { 72, "MU_PMKID_LIST", &hf_mu_pmkid_list, NULL, NULL },
713 { 73, "MU_PMK_BP", &hf_mu_pmk_bp, NULL, NULL },
714 { 74, "MU_PMKID_BP", &hf_mu_pmkid_bp, NULL, NULL },
715 { 75, "COUNTDOWN_TIME", &hf_countdown_time, NULL, NULL },
716 { 76, "WASSP-VLAN-TAG", &hf_wassp_vlan_tag, NULL, NULL },
717 { 81, "WASSP-TUNNEL-TYPE", &hf_wassp_tunnel_type, NULL, NULL },
718 { 88, "AP-DHCP-MODE", &hf_ap_dhcp_mode, NULL, NULL },
719 { 89, "AP-IPADDR", &hf_ap_ipaddr, NULL, NULL },
720 { 90, "AP-NETMASK", &hf_ap_netmask, NULL, NULL },
721 { 91, "AP-GATEWAY", &hf_ap_gateway, NULL, NULL },
723 { 0, NULL, NULL, NULL, NULL }
726 static const value_string wassp_tunnel_pdu_type[] = {
727 { 1, "?Discover?" },
728 { 2, "RU Registration Request" },
729 { 3, "RU Registration Response" },
730 { 4, "RU Authentication Request" },
731 { 5, "RU Authentication Response" },
732 { 6, "RU Software Version Validate Request" },
733 { 7, "RU Software Version Validate Response" },
734 { 8, "RU Configuration Request" },
735 { 9, "RU Configuration Response" },
736 { 10, "RU Acknowledge" },
737 { 11, "RU Configuration Status Notify" },
738 { 12, "RU Set State Request" },
739 { 13, "RU Set State Response" },
740 { 14, "RU Statistics Notify" },
741 { 15, "Data" },
742 { 16, "Poll" },
743 { 17, "SNMP Request" },
744 { 18, "SNMP Response" },
745 { 19, "BP Trap Notify" },
746 { 20, "BP Scan Request" },
747 { 21, "RFM Notify" },
748 { 22, "RU SNMP Alarm Notify" },
749 { 23, "RU SNMP Set Alarm" },
750 { 24, "RU SNMP Set Log Status" },
751 { 25, "RU SNMP Get Log Request" },
752 { 26, "RU SNMP Get Log Response" },
753 { 27, "SEC Update Notify" },
754 { 28, "RU Stats Req" },
755 { 29, "RU Stats Resp" },
756 { 30, "MU Stats Req" },
757 { 31, "MU Stats Response" },
759 { 0, NULL }
762 #if 0
763 static const value_string wassp_setresult_vals[] = {
764 { 0, "Success" },
765 { 1, "Failauth" },
767 { 0, NULL }
769 #endif
771 static int
772 dissect_snmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *wassp_tree,
773 volatile guint32 offset, guint32 length, const ext_value_string *value_array _U_)
775 tvbuff_t *snmp_tvb;
777 /* Don't add SNMP stuff to the info column */
778 col_set_writable(pinfo->cinfo, FALSE);
780 snmp_tvb = tvb_new_subset(tvb, offset, length, length);
782 /* Continue after SNMP dissection errors */
783 TRY {
784 call_dissector(snmp_handle, snmp_tvb, pinfo, wassp_tree);
785 } CATCH_NONFATAL_ERRORS {
786 show_exception(snmp_tvb, pinfo, wassp_tree, EXCEPT_CODE, GET_MESSAGE);
787 } ENDTRY;
789 col_set_writable(pinfo->cinfo, TRUE);
791 offset += length;
793 return offset;
796 static int
797 dissect_ieee80211(tvbuff_t *tvb, packet_info *pinfo, proto_tree *wassp_tree,
798 volatile guint32 offset, guint32 length, const ext_value_string *value_array _U_)
800 tvbuff_t *ieee80211_tvb;
802 /* Don't add IEEE 802.11 stuff to the info column */
803 col_set_writable(pinfo->cinfo, FALSE);
805 ieee80211_tvb = tvb_new_subset(tvb, offset, length, length);
807 /* Continue after IEEE 802.11 dissection errors */
808 TRY {
809 call_dissector(ieee80211_handle, ieee80211_tvb, pinfo, wassp_tree);
810 } CATCH_NONFATAL_ERRORS {
811 show_exception(ieee80211_tvb, pinfo, wassp_tree, EXCEPT_CODE, GET_MESSAGE);
812 } ENDTRY;
814 col_set_writable(pinfo->cinfo, TRUE);
816 offset += length;
818 return offset;
821 static int
822 dissect_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *wassp_tree,
823 guint32 offset, guint32 length _U_, const ext_value_string *value_array)
825 guint32 tlv_type;
826 guint32 tlv_length;
827 proto_item *tlv_item;
828 proto_item *tlv_tree;
829 proto_item *type_item;
830 int type_index;
831 guint32 tlv_end;
833 tlv_type = tvb_get_ntohs(tvb, offset);
834 tlv_length = tvb_get_ntohs(tvb, offset + 2);
835 DISSECTOR_ASSERT(tlv_length >= 4);
836 tlv_item = proto_tree_add_text(wassp_tree, tvb,
837 offset, tlv_length,
838 "T %d, L %d: %s",
839 tlv_type,
840 tlv_length,
841 extval_to_str_idx(tlv_type, value_array, NULL, "Unknown"));
842 tlv_tree = proto_item_add_subtree(tlv_item,
843 ett_wassp_tlv_header);
844 type_item = proto_tree_add_item(tlv_tree, hf_wassp_tlv_type,
845 tvb, offset, 2, ENC_BIG_ENDIAN);
846 proto_item_append_text(type_item, " = %s",
847 extval_to_str_idx(tlv_type, value_array,
848 &type_index, "Unknown"));
849 offset += 2;
850 proto_tree_add_item(tlv_tree, hf_wassp_tlv_length,
851 tvb, offset, 2, ENC_BIG_ENDIAN);
852 offset += 2;
854 tlv_length -= 4;
856 if (tlv_length == 0)
857 return offset;
859 tlv_end = offset + tlv_length;
861 /* Make hf_ handling independent of specialfuncion */
862 if ( type_index != -1 && value_array[type_index].hf_element) {
863 proto_tree_add_item(tlv_tree,
864 *(value_array[type_index].hf_element),
865 tvb, offset, tlv_length, ENC_BIG_ENDIAN);
866 } else {
867 proto_tree_add_item(tlv_tree, hf_wassp_tlv_data,
868 tvb, offset, tlv_length, ENC_NA);
870 if ( type_index != -1 && value_array[type_index].specialfunction ) {
871 guint32 newoffset;
873 while (offset < tlv_end) {
874 newoffset = value_array[type_index].specialfunction (
875 tvb, pinfo, tlv_tree, offset, tlv_length,
876 value_array[type_index].evs);
877 DISSECTOR_ASSERT(newoffset > offset);
878 offset = newoffset;
881 return tlv_end;
884 static int
885 dissect_wassp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
887 proto_item *ti;
888 proto_tree *wassp_tree = NULL;
889 guint32 offset = 0;
890 guint32 packet_length;
891 guint8 packet_type;
892 guint32 subtype;
894 packet_type = tvb_get_guint8(tvb, 1);
895 col_set_str(pinfo->cinfo, COL_PROTOCOL, PROTO_SHORT_NAME);
896 col_add_str(pinfo->cinfo, COL_INFO, val_to_str(packet_type,
897 wassp_tunnel_pdu_type, "Type 0x%02x"));
899 if (tree) {
900 /* Header dissection */
901 ti = proto_tree_add_item(tree, proto_wassp, tvb, offset, -1,
902 ENC_NA);
903 wassp_tree = proto_item_add_subtree(ti, ett_wassp);
905 proto_tree_add_item(wassp_tree, hf_wassp_version, tvb, offset, 1,
906 ENC_BIG_ENDIAN);
907 offset += 1;
909 proto_tree_add_item(wassp_tree, hf_wassp_type, tvb, offset, 1,
910 ENC_BIG_ENDIAN);
911 offset += 1;
913 switch (packet_type) {
914 case 1: /* Discover ??? */
915 proto_tree_add_item(wassp_tree, hf_wassp_discover1, tvb, offset, 2,
916 ENC_BIG_ENDIAN);
917 offset += 2;
918 packet_length = tvb_get_ntohs(tvb, offset);
919 proto_tree_add_item(wassp_tree, hf_wassp_length, tvb, offset, 2,
920 ENC_BIG_ENDIAN);
921 offset += 2;
922 proto_tree_add_item(wassp_tree, hf_wassp_discover2, tvb, offset, 2,
923 ENC_BIG_ENDIAN);
924 offset += 2;
925 subtype = tvb_get_ntohs(tvb, offset);
926 proto_tree_add_item(wassp_tree, hf_wassp_subtype, tvb, offset, 2,
927 ENC_BIG_ENDIAN);
928 offset += 2;
929 switch (subtype) {
930 case 1:
931 proto_tree_add_item(wassp_tree, hf_wassp_ether, tvb, offset, 6,
932 ENC_NA);
933 offset += 6;
934 break;
935 case 2:
936 proto_tree_add_item(wassp_tree, hf_wassp_discover3, tvb, offset, 2,
937 ENC_BIG_ENDIAN);
938 offset += 2;
939 break;
941 break;
942 default:
943 proto_tree_add_item(wassp_tree, hf_wassp_seqno, tvb, offset, 1,
944 ENC_BIG_ENDIAN);
945 offset += 1;
947 proto_tree_add_item(wassp_tree, hf_wassp_flags, tvb, offset, 1,
948 ENC_BIG_ENDIAN);
949 offset += 1;
951 proto_tree_add_item(wassp_tree, hf_wassp_sessionid, tvb, offset, 2,
952 ENC_BIG_ENDIAN);
953 offset += 2;
955 packet_length = tvb_get_ntohs(tvb, offset);
956 proto_tree_add_item(wassp_tree, hf_wassp_length, tvb, offset, 2,
957 ENC_BIG_ENDIAN);
958 offset += 2;
960 break;
962 /* Body dissection */
963 switch (packet_type) {
964 case 15: /* Data: 802.11 packet with FCS */
965 offset = dissect_ieee80211(tvb, pinfo, wassp_tree,
966 offset, packet_length - offset, NULL);
967 break;
968 default:
969 while (offset < packet_length)
970 offset = dissect_tlv(tvb, pinfo, wassp_tree,
971 offset, 0, wassp_tunnel_tlv_vals);
972 break;
975 return offset;
978 static gboolean
979 test_wassp(tvbuff_t *tvb)
981 /* Minimum of 8 bytes, first byte (version) has value of 3 */
982 if ( tvb_length(tvb) < 8
983 || tvb_get_guint8(tvb, 0) != 3
984 /* || tvb_get_guint8(tvb, 2) != 0
985 || tvb_get_ntohs(tvb, 6) > tvb_reported_length(tvb) */
987 return FALSE;
989 return TRUE;
992 #if 0
993 static gboolean
994 dissect_wassp_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
996 if ( !test_wassp(tvb) ) {
997 return FALSE;
999 dissect_wassp(tvb, pinfo, tree);
1000 return TRUE;
1002 #endif
1004 static int
1005 dissect_wassp_static(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1007 if ( !test_wassp(tvb) ) {
1008 return 0;
1010 return dissect_wassp(tvb, pinfo, tree);
1013 void
1014 proto_register_wassp(void)
1016 static hf_register_info hf[] = {
1018 /* TLV fields */
1019 { &hf_wassp_tlv_type,
1020 { "TlvType", "wassp.tlv.type", FT_UINT8, BASE_DEC, NULL,
1021 0x0, NULL, HFILL }},
1023 { &hf_wassp_tlv_length,
1024 { "TlvLength", "wassp.tlv.length", FT_UINT8, BASE_DEC, NULL,
1025 0x0, NULL, HFILL }},
1027 { &hf_wassp_tlv_data,
1028 { "TlvData", "wassp.tlv.data", FT_BYTES, BASE_NONE, NULL,
1029 0x0, NULL, HFILL }},
1031 /* WASSP tunnel header */
1032 { &hf_wassp_version,
1033 { "Protocol Version", "wassp.version", FT_UINT8, BASE_DEC, NULL,
1034 0x0, NULL, HFILL }},
1036 { &hf_wassp_type,
1037 { "PDU Type", "wassp.type", FT_UINT8, BASE_DEC, VALS(wassp_tunnel_pdu_type),
1038 0x0, NULL, HFILL }},
1040 { &hf_wassp_seqno,
1041 { "Sequence No", "wassp.seqno", FT_UINT8, BASE_DEC, NULL,
1042 0x0, NULL, HFILL }},
1044 { &hf_wassp_flags,
1045 { "Flags", "wassp.flags", FT_UINT8, BASE_HEX, NULL,
1046 0x0, NULL, HFILL }},
1048 { &hf_wassp_sessionid,
1049 { "Session ID", "wassp.sessionid", FT_UINT8, BASE_DEC, NULL,
1050 0x0, NULL, HFILL }},
1052 { &hf_wassp_length,
1053 { "PDU Length", "wassp.length", FT_UINT8, BASE_HEX, NULL,
1054 0x0, NULL, HFILL }},
1056 /* Data: Embedded IEEE 802.11 Frame */
1057 #if 0
1058 { &hf_data,
1059 { "DATA", "wassp.data", FT_NONE, BASE_NONE, NULL,
1060 0x0, NULL, HFILL }},
1061 #endif
1063 /* WASSP tunnel data */
1064 { &hf_status,
1065 { "STATUS", "wassp.status", FT_UINT32, BASE_DEC, NULL,
1066 0x0, NULL, HFILL }},
1068 { &hf_ru_soft_version,
1069 { "RU-SOFT-VERSION", "wassp.ru.soft.version", FT_STRING, BASE_NONE, NULL,
1070 0x0, NULL, HFILL }},
1072 { &hf_ru_serial_number,
1073 { "RU-SERIAL-NUMBER", "wassp.ru.serial.number", FT_STRING, BASE_NONE, NULL,
1074 0x0, NULL, HFILL }},
1076 { &hf_ru_challenge,
1077 { "RU-CHALLENGE", "wassp.ru.challenge", FT_BYTES, BASE_NONE, NULL,
1078 0x0, NULL, HFILL }},
1080 { &hf_ru_response,
1081 { "RU-RESPONSE", "wassp.ru.response", FT_BYTES, BASE_NONE, NULL,
1082 0x0, NULL, HFILL }},
1084 { &hf_ac_ipaddr,
1085 { "AC-IPADDR", "wassp.ac.ipaddr", FT_IPv4, BASE_NONE, NULL,
1086 0x0, NULL, HFILL }},
1088 { &hf_ru_vns_id,
1089 { "RU-VNS-ID", "wassp.ru.vns.id", FT_UINT32, BASE_DEC, NULL,
1090 0x0, NULL, HFILL }},
1092 { &hf_tftp_server,
1093 { "TFTP-SERVER", "wassp.tftp.server", FT_IPv4, BASE_NONE, NULL,
1094 0x0, NULL, HFILL }},
1096 { &hf_image_path,
1097 { "IMAGE-PATH", "wassp.image.path", FT_STRING, BASE_NONE, NULL,
1098 0x0, NULL, HFILL }},
1100 { &hf_ru_config,
1101 { "RU-CONFIG", "wassp.ru.config", FT_NONE, BASE_NONE, NULL,
1102 0x0, NULL, HFILL }},
1104 { &hf_ru_state,
1105 { "RU-STATE", "wassp.ru.state", FT_UINT32, BASE_DEC, NULL,
1106 0x0, NULL, HFILL }},
1108 { &hf_ru_session_key,
1109 { "RU-SESSION-KEY", "wassp.ru.session.key", FT_STRING, BASE_NONE, NULL,
1110 0x0, NULL, HFILL }},
1112 { &hf_message_type,
1113 { "MESSAGE-TYPE", "wassp.message.type", FT_UINT32, BASE_DEC, NULL,
1114 0x0, NULL, HFILL }},
1116 { &hf_random_number,
1117 { "RANDOM-NUMBER", "wassp.random.number", FT_BYTES, BASE_NONE, NULL,
1118 0x0, NULL, HFILL }},
1120 { &hf_standby_timeout,
1121 { "STANDBY-TIMEOUT", "wassp.standby.timeout", FT_UINT32, BASE_DEC, NULL,
1122 0x0, NULL, HFILL }},
1124 { &hf_ru_challenge_id,
1125 { "RU-CHALLENGE-ID", "wassp.ru.challenge.id", FT_UINT32, BASE_DEC, NULL,
1126 0x0, NULL, HFILL }},
1128 { &hf_ru_model,
1129 { "RU-MODEL", "wassp.ru.model", FT_STRING, BASE_NONE, NULL,
1130 0x0, NULL, HFILL }},
1132 { &hf_ru_scan_mode,
1133 { "RU-SCAN-MODE", "wassp.ru.scan.mode", FT_UINT32, BASE_DEC, NULL,
1134 0x0, NULL, HFILL }},
1136 { &hf_ru_scan_type,
1137 { "RU-SCAN-TYPE", "wassp.ru.scan.type", FT_UINT32, BASE_DEC, NULL,
1138 0x0, NULL, HFILL }},
1140 { &hf_ru_scan_interval,
1141 { "RU-SCAN-INTERVAL", "wassp.ru.scan.interval", FT_UINT32, BASE_DEC, NULL,
1142 0x0, NULL, HFILL }},
1144 { &hf_ru_radio_type,
1145 { "RU-RADIO-TYPE", "wassp.ru.radio.type", FT_UINT32, BASE_DEC, NULL,
1146 0x0, NULL, HFILL }},
1148 { &hf_ru_channel_dwell_time,
1149 { "RU-CHANNEL-DWELL-TIME", "wassp.ru.channel.dwell.time", FT_UINT32, BASE_DEC, NULL,
1150 0x0, NULL, HFILL }},
1152 { &hf_ru_channel_list,
1153 { "RU-CHANNEL-LIST", "wassp.ru.channel.list", FT_UINT32, BASE_DEC, NULL,
1154 0x0, NULL, HFILL }},
1156 { &hf_ru_trap,
1157 { "RU-TRAP", "wassp.ru.trap", FT_STRING, BASE_NONE, NULL,
1158 0x0, NULL, HFILL }},
1160 { &hf_ru_scan_times,
1161 { "RU-SCAN-TIMES", "wassp.ru.scan.times", FT_UINT32, BASE_DEC, NULL,
1162 0x0, NULL, HFILL }},
1164 { &hf_ru_scan_delay,
1165 { "RU-SCAN-DELAY", "wassp.ru.scan.delay", FT_UINT32, BASE_DEC, NULL,
1166 0x0, NULL, HFILL }},
1168 { &hf_ru_scan_req_id,
1169 { "RU-SCAN-REQ-ID", "wassp.ru.scan.req.id", FT_UINT32, BASE_DEC, NULL,
1170 0x0, NULL, HFILL }},
1172 { &hf_static_config,
1173 { "STATIC-CONFIG", "wassp.static.config", FT_UINT32, BASE_DEC, NULL,
1174 0x0, NULL, HFILL }},
1176 { &hf_local_bridging,
1177 { "LOCAL-BRIDGING", "wassp.local.bridging", FT_UINT32, BASE_DEC, NULL,
1178 0x0, NULL, HFILL }},
1180 { &hf_static_bp_ipaddr,
1181 { "STATIC-BP-IPADDR", "wassp.static.bp.ipaddr", FT_IPv4, BASE_NONE, NULL,
1182 0x0, NULL, HFILL }},
1184 { &hf_static_bp_netmask,
1185 { "STATIC-BP-NETMASK", "wassp.static.bp.netmask", FT_IPv4, BASE_NONE, NULL,
1186 0x0, NULL, HFILL }},
1188 { &hf_static_bp_gateway,
1189 { "STATIC-BP-GATEWAY", "wassp.static.bp.gateway", FT_IPv4, BASE_NONE, NULL,
1190 0x0, NULL, HFILL }},
1192 { &hf_static_bm_ipaddr,
1193 { "STATIC-BM-IPADDR", "wassp.static.bm.ipaddr", FT_IPv4, BASE_NONE, NULL,
1194 0x0, NULL, HFILL }},
1196 { &hf_ru_alarm,
1197 { "RU-ALARM", "wassp.ru.alarm", FT_NONE, BASE_NONE, NULL,
1198 0x0, NULL, HFILL }},
1200 { &hf_bp_request_id,
1201 { "BP-REQUEST-ID", "wassp.bp.request.id", FT_UINT32, BASE_DEC, NULL,
1202 0x0, NULL, HFILL }},
1204 { &hf_snmp_error_status,
1205 { "SNMP-ERROR-STATUS", "wassp.snmp.error.status", FT_UINT32, BASE_DEC, NULL,
1206 0x0, NULL, HFILL }},
1208 { &hf_snmp_error_index,
1209 { "SNMP-ERROR-INDEX", "wassp.snmp.error.index", FT_UINT32, BASE_DEC, NULL,
1210 0x0, NULL, HFILL }},
1212 { &hf_ap_img_to_ram,
1213 { "AP-IMG-TO-RAM", "wassp.ap.img.to.ram", FT_UINT32, BASE_DEC, NULL,
1214 0x0, NULL, HFILL }},
1216 { &hf_ap_img_role,
1217 { "AP-IMG-ROLE", "wassp.ap.img.role", FT_UINT32, BASE_DEC, NULL,
1218 0x0, NULL, HFILL }},
1220 { &hf_ap_stats_block,
1221 { "AP Stats Block", "wassp.ap_stats_block", FT_NONE, BASE_NONE, NULL,
1222 0x0, NULL, HFILL }},
1224 { &hf_block_config,
1225 { "Config", "wassp.tlv_config", FT_NONE, BASE_NONE, NULL,
1226 0x0, NULL, HFILL }},
1228 { &hf_wassp_vlan_tag,
1229 { "WASSP-VLAN-TAG", "wassp.vlan.tag", FT_INT32, BASE_DEC, NULL,
1230 0x0, NULL, HFILL }},
1232 { &hf_wassp_tunnel_type,
1233 { "WASSP-TUNNEL-TYPE", "wassp.tunnel.type", FT_UINT32, BASE_DEC, NULL,
1234 0x0, NULL, HFILL }},
1236 { &hf_ap_dhcp_mode,
1237 { "AP-DHCP-MODE", "wassp.ap.dhcp.mode", FT_UINT32, BASE_DEC, NULL,
1238 0x0, NULL, HFILL }},
1240 { &hf_ap_ipaddr,
1241 { "AP-IPADDR", "wassp.ap.ipaddr", FT_IPv4, BASE_NONE, NULL,
1242 0x0, NULL, HFILL }},
1244 { &hf_ap_netmask,
1245 { "AP-NETMASK", "wassp.ap.netmask", FT_IPv4, BASE_NONE, NULL,
1246 0x0, NULL, HFILL }},
1248 { &hf_ap_gateway,
1249 { "AP-GATEWAY", "wassp.ap.gateway", FT_IPv4, BASE_NONE, NULL,
1250 0x0, NULL, HFILL }},
1252 { &hf_preauth_resp,
1253 { "PREAUTH_RESP", "wassp.preauth.resp", FT_INT32, BASE_DEC, NULL,
1254 0x0, NULL, HFILL }},
1256 { &hf_bp_pmk,
1257 { "BP_PMK", "wassp.bp.pmk", FT_INT32, BASE_DEC, NULL,
1258 0x0, NULL, HFILL }},
1260 { &hf_ac_reg_challenge,
1261 { "AC_REG_CHALLENGE", "wassp.ac.reg.challenge", FT_INT32, BASE_DEC, NULL,
1262 0x0, NULL, HFILL }},
1264 { &hf_ac_reg_response,
1265 { "AC_REG_RESPONSE", "wassp.ac.reg.response", FT_INT32, BASE_DEC, NULL,
1266 0x0, NULL, HFILL }},
1268 { &hf_stats,
1269 { "STATS", "wassp.stats", FT_INT32, BASE_DEC, NULL,
1270 0x0, NULL, HFILL }},
1272 { &hf_certificate,
1273 { "CERTIFICATE", "wassp.certificate", FT_INT32, BASE_DEC, NULL,
1274 0x0, NULL, HFILL }},
1276 { &hf_radio_id,
1277 { "RADIO_ID", "wassp.radio.id", FT_INT32, BASE_DEC, NULL,
1278 0x0, NULL, HFILL }},
1280 { &hf_network_id,
1281 { "NETWORK_ID", "wassp.network.id", FT_INT32, BASE_DEC, NULL,
1282 0x0, NULL, HFILL }},
1284 { &hf_mu_mac,
1285 { "MU_MAC", "wassp.mu.mac", FT_INT32, BASE_DEC, NULL,
1286 0x0, NULL, HFILL }},
1288 { &hf_time,
1289 { "TIME", "wassp.time", FT_INT32, BASE_DEC, NULL,
1290 0x0, NULL, HFILL }},
1292 { &hf_num_radios,
1293 { "NUM_RADIOS", "wassp.num.radios", FT_INT32, BASE_DEC, NULL,
1294 0x0, NULL, HFILL }},
1296 { &hf_radio_info,
1297 { "RADIO_INFO", "wassp.radio.info", FT_INT32, BASE_DEC, NULL,
1298 0x0, NULL, HFILL }},
1300 { &hf_network_info,
1301 { "NETWORK_INFO", "wassp.network.info", FT_INT32, BASE_DEC, NULL,
1302 0x0, NULL, HFILL }},
1304 { &hf_vendor_id,
1305 { "VENDOR_ID", "wassp.vendor.id", FT_INT32, BASE_DEC, NULL,
1306 0x0, NULL, HFILL }},
1308 { &hf_product_id,
1309 { "PRODUCT_ID", "wassp.product.id", FT_INT32, BASE_DEC, NULL,
1310 0x0, NULL, HFILL }},
1312 { &hf_radio_info_ack,
1313 { "RADIO_INFO_ACK", "wassp.radio.info.ack", FT_INT32, BASE_DEC, NULL,
1314 0x0, NULL, HFILL }},
1316 { &hf_mu_rf_stats_block,
1317 { "MU_RF_STATS_BLOCK", "wassp.mu.rf.stats.block", FT_NONE, BASE_NONE, NULL,
1318 0x0, NULL, HFILL }},
1320 { &hf_stats_request_type,
1321 { "STATS_REQUEST_TYPE", "wassp.stats.request.type", FT_INT32, BASE_DEC, NULL,
1322 0x0, NULL, HFILL }},
1324 { &hf_stats_last,
1325 { "STATS_LAST", "wassp.stats.last", FT_INT32, BASE_DEC, NULL,
1326 0x0, NULL, HFILL }},
1328 { &hf_mu_pmkid_list,
1329 { "MU_PMKID_LIST", "wassp.mu.pmkid.list", FT_INT32, BASE_DEC, NULL,
1330 0x0, NULL, HFILL }},
1332 { &hf_mu_pmk_bp,
1333 { "MU_PMK_BP", "wassp.mu.pmk.bp", FT_INT32, BASE_DEC, NULL,
1334 0x0, NULL, HFILL }},
1336 { &hf_mu_pmkid_bp,
1337 { "MU_PMKID_BP", "wassp.mu.pmkid.bp", FT_INT32, BASE_DEC, NULL,
1338 0x0, NULL, HFILL }},
1340 { &hf_countdown_time,
1341 { "COUNTDOWN_TIME", "wassp.countdown.time", FT_INT32, BASE_DEC, NULL,
1342 0x0, NULL, HFILL }},
1344 /* WASSP tunnel subtypes AP stats block */
1345 { &hf_ap_stats_block_ether,
1346 { "Ether Stats", "wassp.ap_stats_block.ether", FT_NONE, BASE_NONE, NULL,
1347 0x0, NULL, HFILL }},
1349 { &hf_ap_stats_block_radio_a,
1350 { "Radio-A Stats", "wassp.ap_stats_block.radioa", FT_NONE, BASE_NONE, NULL,
1351 0x0, NULL, HFILL }},
1353 { &hf_ap_stats_block_radio_b_g,
1354 { "Radio-B/G Stats", "wassp.ap_stats_block.radiobg", FT_NONE, BASE_NONE, NULL,
1355 0x0, NULL, HFILL }},
1357 { &hf_mu_stats_block,
1358 { "Mobile User Stats", "wassp.mustats", FT_NONE, BASE_NONE, NULL,
1359 0x0, NULL, HFILL }},
1361 { &hf_mu_stats_block_65,
1362 { "MU Stats Unknown 65", "wassp.mustats.65", FT_NONE, BASE_NONE, NULL,
1363 0x0, NULL, HFILL }},
1365 { &hf_dot1x_stats_block,
1366 { "DOT1x_STATS_BLOCK", "wassp.ap_stats_block.dot1x", FT_NONE, BASE_NONE, NULL,
1367 0x0, NULL, HFILL }},
1369 /* WASSP stats */
1370 { &hf_stats_dot11_ackfailurecount,
1371 { "DOT11_ACKFailureCount", "wassp.stats.dot11.ackfailurecount", FT_INT32, BASE_DEC, NULL,
1372 0x0, NULL, HFILL }},
1374 { &hf_stats_dot11_fcserrorcount,
1375 { "DOT11_FCSErrorCount", "wassp.stats.dot11.fcserrorcount", FT_INT32, BASE_DEC, NULL,
1376 0x0, NULL, HFILL }},
1378 { &hf_stats_dot11_failedcount,
1379 { "DOT11_FailedCount", "wassp.stats.dot11.failedcount", FT_INT32, BASE_DEC, NULL,
1380 0x0, NULL, HFILL }},
1382 { &hf_stats_dot11_frameduplicatecount,
1383 { "DOT11_FrameDuplicateCount", "wassp.stats.dot11.frameduplicatecount", FT_INT32, BASE_DEC, NULL,
1384 0x0, NULL, HFILL }},
1386 { &hf_stats_dot11_multicastreceivedframecount,
1387 { "DOT11_MulticastReceivedFrameCount", "wassp.stats.dot11.multicastreceivedframecount", FT_INT32, BASE_DEC, NULL,
1388 0x0, NULL, HFILL }},
1390 { &hf_stats_dot11_multicasttransmittedframecount,
1391 { "DOT11_MulticastTransmittedFrameCount", "wassp.stats.dot11.multicasttransmittedframecount", FT_INT32, BASE_DEC, NULL,
1392 0x0, NULL, HFILL }},
1394 { &hf_stats_dot11_multipleretrycount,
1395 { "DOT11_MultipleRetryCount", "wassp.stats.dot11.multipleretrycount", FT_INT32, BASE_DEC, NULL,
1396 0x0, NULL, HFILL }},
1398 { &hf_stats_dot11_rtsfailurecount,
1399 { "DOT11_RTSFailureCount", "wassp.stats.dot11.rtsfailurecount", FT_INT32, BASE_DEC, NULL,
1400 0x0, NULL, HFILL }},
1402 { &hf_stats_dot11_rtssuccesscount,
1403 { "DOT11_RTSSuccessCount", "wassp.stats.dot11.rtssuccesscount", FT_INT32, BASE_DEC, NULL,
1404 0x0, NULL, HFILL }},
1406 { &hf_stats_dot11_receivedfragementcount,
1407 { "DOT11_ReceivedFragementCount", "wassp.stats.dot11.receivedfragementcount", FT_INT32, BASE_DEC, NULL,
1408 0x0, NULL, HFILL }},
1410 { &hf_stats_dot11_retrycount,
1411 { "DOT11_RetryCount", "wassp.stats.dot11.retrycount", FT_INT32, BASE_DEC, NULL,
1412 0x0, NULL, HFILL }},
1414 { &hf_stats_dot11_transmittedfragmentcount,
1415 { "DOT11_TransmittedFragmentCount", "wassp.stats.dot11.transmittedfragmentcount", FT_INT32, BASE_DEC, NULL,
1416 0x0, NULL, HFILL }},
1418 { &hf_stats_dot11_transmittedframecount,
1419 { "DOT11_TransmittedFrameCount", "wassp.stats.dot11.transmittedframecount", FT_INT32, BASE_DEC, NULL,
1420 0x0, NULL, HFILL }},
1422 { &hf_stats_dot11_webundecryptablecount,
1423 { "DOT11_WEBUndecryptableCount", "wassp.stats.dot11.webundecryptablecount", FT_INT32, BASE_DEC, NULL,
1424 0x0, NULL, HFILL }},
1426 { &hf_stats_dot11_wepexcludedcount,
1427 { "DOT11_WEPExcludedCount", "wassp.stats.dot11.wepexcludedcount", FT_INT32, BASE_DEC, NULL,
1428 0x0, NULL, HFILL }},
1430 { &hf_stats_dot11_wepicverrorcount,
1431 { "DOT11_WEPICVErrorCount", "wassp.stats.dot11.wepicverrorcount", FT_INT32, BASE_DEC, NULL,
1432 0x0, NULL, HFILL }},
1434 { &hf_stats_drm_allocfailures,
1435 { "DRM_AllocFailures", "wassp.stats.drm.allocfailures", FT_INT32, BASE_DEC, NULL,
1436 0x0, NULL, HFILL }},
1438 { &hf_stats_drm_currentchannel,
1439 { "DRM_CurrentChannel", "wassp.stats.drm.currentchannel", FT_INT32, BASE_DEC, NULL,
1440 0x0, NULL, HFILL }},
1442 { &hf_stats_drm_currentpower,
1443 { "DRM_CurrentPower", "wassp.stats.drm.currentpower", FT_INT32, BASE_DEC, NULL,
1444 0x0, NULL, HFILL }},
1446 { &hf_stats_drm_datatxfailures,
1447 { "DRM_DataTxFailures", "wassp.stats.drm.datatxfailures", FT_INT32, BASE_DEC, NULL,
1448 0x0, NULL, HFILL }},
1450 { &hf_stats_drm_devicetype,
1451 { "DRM_DeviceType", "wassp.stats.drm.devicetype", FT_INT32, BASE_DEC, NULL,
1452 0x0, NULL, HFILL }},
1454 { &hf_stats_drm_indatapackets,
1455 { "DRM_InDataPackets", "wassp.stats.drm.indatapackets", FT_INT32, BASE_DEC, NULL,
1456 0x0, NULL, HFILL }},
1458 { &hf_stats_drm_inmgmtpackets,
1459 { "DRM_InMgmtPackets", "wassp.stats.drm.inmgmtpackets", FT_INT32, BASE_DEC, NULL,
1460 0x0, NULL, HFILL }},
1462 { &hf_stats_drm_loadfactor,
1463 { "DRM_LoadFactor", "wassp.stats.drm.loadfactor", FT_INT32, BASE_DEC, NULL,
1464 0x0, NULL, HFILL }},
1466 { &hf_stats_drm_mgmttxfailures,
1467 { "DRM_MgmtTxFailures", "wassp.stats.drm.mgmttxfailures", FT_INT32, BASE_DEC, NULL,
1468 0x0, NULL, HFILL }},
1470 { &hf_stats_drm_msgqfailures,
1471 { "DRM_MsgQFailures", "wassp.stats.drm.msgqfailures", FT_INT32, BASE_DEC, NULL,
1472 0x0, NULL, HFILL }},
1474 { &hf_stats_drm_nodrmcurrentchannel,
1475 { "DRM_NoDRMCurrentChannel", "wassp.stats.drm.nodrmcurrentchannel", FT_INT32, BASE_DEC, NULL,
1476 0x0, NULL, HFILL }},
1478 { &hf_stats_drm_outdatapackets,
1479 { "DRM_OutDataPackets", "wassp.stats.drm.outdatapackets", FT_INT32, BASE_DEC, NULL,
1480 0x0, NULL, HFILL }},
1482 { &hf_stats_drm_outmgmtpackets,
1483 { "DRM_OutMgmtPackets", "wassp.stats.drm.outmgmtpackets", FT_INT32, BASE_DEC, NULL,
1484 0x0, NULL, HFILL }},
1486 { &hf_stats_if_inbcastpackets,
1487 { "IF_InBcastPackets", "wassp.stats.if.inbcastpackets", FT_INT32, BASE_DEC, NULL,
1488 0x0, NULL, HFILL }},
1490 { &hf_stats_if_indiscards,
1491 { "IF_InDiscards", "wassp.stats.if.indiscards", FT_INT32, BASE_DEC, NULL,
1492 0x0, NULL, HFILL }},
1494 { &hf_stats_if_inerrors,
1495 { "IF_InErrors", "wassp.stats.if.inerrors", FT_INT32, BASE_DEC, NULL,
1496 0x0, NULL, HFILL }},
1498 { &hf_stats_if_inmcastpackets,
1499 { "IF_InMcastPackets", "wassp.stats.if.inmcastpackets", FT_INT32, BASE_DEC, NULL,
1500 0x0, NULL, HFILL }},
1502 { &hf_stats_if_inoctets,
1503 { "IF_InOctets", "wassp.stats.if.inoctets", FT_INT32, BASE_DEC, NULL,
1504 0x0, NULL, HFILL }},
1506 { &hf_stats_if_inucastpackets,
1507 { "IF_InUcastPackets", "wassp.stats.if.inucastpackets", FT_INT32, BASE_DEC, NULL,
1508 0x0, NULL, HFILL }},
1510 { &hf_stats_if_mtu,
1511 { "IF_MTU", "wassp.stats.if.mtu", FT_INT32, BASE_DEC, NULL,
1512 0x0, NULL, HFILL }},
1514 { &hf_stats_if_outbcastpackets,
1515 { "IF_OutBcastPackets", "wassp.stats.if.outbcastpackets", FT_INT32, BASE_DEC, NULL,
1516 0x0, NULL, HFILL }},
1518 { &hf_stats_if_outdiscards,
1519 { "IF_OutDiscards", "wassp.stats.if.outdiscards", FT_INT32, BASE_DEC, NULL,
1520 0x0, NULL, HFILL }},
1522 { &hf_stats_if_outerrors,
1523 { "IF_OutErrors", "wassp.stats.if.outerrors", FT_INT32, BASE_DEC, NULL,
1524 0x0, NULL, HFILL }},
1526 { &hf_stats_if_outoctets,
1527 { "IF_OutOctets", "wassp.stats.if.outoctets", FT_INT32, BASE_DEC, NULL,
1528 0x0, NULL, HFILL }},
1530 { &hf_stats_if_outucastpackets,
1531 { "IF_OutUcastPackets", "wassp.stats.if.outucastpackets", FT_INT32, BASE_DEC, NULL,
1532 0x0, NULL, HFILL }},
1534 { &hf_stats_if_outmcastpackets,
1535 { "IF_OutMCastPackets", "wassp.stats.if.outmcastpackets", FT_INT32, BASE_DEC, NULL,
1536 0x0, NULL, HFILL }},
1538 { &hf_stats_mu_address,
1539 { "MU_Address", "wassp.stats.mu.address", FT_INT32, BASE_DEC, NULL,
1540 0x0, NULL, HFILL }},
1542 { &hf_stats_mu_associationcount,
1543 { "MU_AssociationCount", "wassp.stats.mu.associationcount", FT_INT32, BASE_DEC, NULL,
1544 0x0, NULL, HFILL }},
1546 { &hf_stats_mu_authenticationcount,
1547 { "MU_AuthenticationCount", "wassp.stats.mu.authenticationcount", FT_INT32, BASE_DEC, NULL,
1548 0x0, NULL, HFILL }},
1550 { &hf_stats_mu_deassociationcount,
1551 { "MU_DeAssociationCount", "wassp.stats.mu.deassociationcount", FT_INT32, BASE_DEC, NULL,
1552 0x0, NULL, HFILL }},
1554 { &hf_stats_mu_deauthenticationcount,
1555 { "MU_DeAuthenticationCount", "wassp.stats.mu.deauthenticationcount", FT_INT32, BASE_DEC, NULL,
1556 0x0, NULL, HFILL }},
1558 { &hf_stats_mu_ifindex,
1559 { "MU_IfIndex", "wassp.stats.mu.ifindex", FT_INT32, BASE_DEC, NULL,
1560 0x0, NULL, HFILL }},
1562 { &hf_stats_mu_reassociationcount,
1563 { "MU_ReAssociationCount", "wassp.stats.mu.reassociationcount", FT_INT32, BASE_DEC, NULL,
1564 0x0, NULL, HFILL }},
1566 { &hf_stats_mu_receivedbytes,
1567 { "MU_ReceivedBytes", "wassp.stats.mu.receivedbytes", FT_INT32, BASE_DEC, NULL,
1568 0x0, NULL, HFILL }},
1570 { &hf_stats_mu_receivederrors,
1571 { "MU_ReceivedErrors", "wassp.stats.mu.receivederrors", FT_INT32, BASE_DEC, NULL,
1572 0x0, NULL, HFILL }},
1574 { &hf_stats_mu_receivedframecount,
1575 { "MU_ReceivedFrameCount", "wassp.stats.mu.receivedframecount", FT_INT32, BASE_DEC, NULL,
1576 0x0, NULL, HFILL }},
1578 { &hf_stats_mu_receivedrssi,
1579 { "MU_ReceivedRSSI", "wassp.stats.mu.receivedrssi", FT_INT32, BASE_DEC, NULL,
1580 0x0, NULL, HFILL }},
1582 { &hf_stats_mu_receivedrate,
1583 { "MU_ReceivedRate", "wassp.stats.mu.receivedrate", FT_INT32, BASE_DEC, NULL,
1584 0x0, NULL, HFILL }},
1586 { &hf_stats_mu_transmittedbytes,
1587 { "MU_TransmittedBytes", "wassp.stats.mu.transmittedbytes", FT_INT32, BASE_DEC, NULL,
1588 0x0, NULL, HFILL }},
1590 { &hf_stats_mu_transmittederrors,
1591 { "MU_TransmittedErrors", "wassp.stats.mu.transmittederrors", FT_INT32, BASE_DEC, NULL,
1592 0x0, NULL, HFILL }},
1594 { &hf_stats_mu_transmittedframecount,
1595 { "MU_TransmittedFrameCount", "wassp.stats.mu.transmittedframecount", FT_INT32, BASE_DEC, NULL,
1596 0x0, NULL, HFILL }},
1598 { &hf_stats_mu_transmittedrssi,
1599 { "MU_TransmittedRSSI", "wassp.stats.mu.transmittedrssi", FT_INT32, BASE_DEC, NULL,
1600 0x0, NULL, HFILL }},
1602 { &hf_stats_mu_transmittedrate,
1603 { "MU_TransmittedRate", "wassp.stats.mu.transmittedrate", FT_INT32, BASE_DEC, NULL,
1604 0x0, NULL, HFILL }},
1606 { &hf_stats_mu_rf_stats_end,
1607 { "MU_RF_STATS_END", "wassp.stats.mu.rf.stats.end", FT_INT32, BASE_DEC, NULL,
1608 0x0, NULL, HFILL }},
1610 { &hf_stats_rfc_1213_sysuptime,
1611 { "RFC_1213_SYSUPTIME", "wassp.stats.rfc.1213.sysuptime", FT_INT32, BASE_DEC, NULL,
1612 0x0, NULL, HFILL }},
1614 { &hf_dot1x_stats_credent,
1615 { "DOT1x_CREDENT", "wassp.stats.dot1x.credent", FT_INT32, BASE_DEC, NULL,
1616 0x0, NULL, HFILL }},
1618 { &hf_dot1x_stats_end_date,
1619 { "DOT1x_END_DATE", "wassp.stats.dot1x.enddate", FT_INT32, BASE_DEC, NULL,
1620 0x0, NULL, HFILL }},
1622 { &hf_stats_tlv_max,
1623 { "TLV_MAX", "wassp.stats.tlvmax", FT_INT32, BASE_DEC, NULL,
1624 0x0, NULL, HFILL }},
1626 /* WASSP tunnel subtypes TLV config */
1627 { &hf_config_radio,
1628 { "Config Radio", "wassp.tlv_config.radio", FT_NONE, BASE_NONE, NULL,
1629 0x0, NULL, HFILL }},
1631 { &hf_config_vns,
1632 { "Config VNS", "wassp.tlv_config.vns", FT_NONE, BASE_NONE, NULL,
1633 0x0, NULL, HFILL }},
1635 /* WASSP config */
1636 { &hf_config_trace_status_debug,
1637 { "TRACE_STATUS_DEBUG", "wassp.config.trace.status.debug", FT_INT32, BASE_DEC, NULL,
1638 0x0, NULL, HFILL }},
1640 { &hf_config_trace_status_config,
1641 { "TRACE_STATUS_CONFIG", "wassp.config.trace.status.config", FT_INT32, BASE_DEC, NULL,
1642 0x0, NULL, HFILL }},
1644 { &hf_config_use_bcast_for_disassc,
1645 { "USE_BCAST_FOR_DISASSC", "wassp.config.use.bcast.for.disassc", FT_INT32, BASE_DEC, NULL,
1646 0x0, NULL, HFILL }},
1648 { &hf_config_bandwidth_voice_assc,
1649 { "BANDWIDTH_VOICE_ASSC", "wassp.config.bandwidth.voice.assc", FT_INT32, BASE_DEC, NULL,
1650 0x0, NULL, HFILL }},
1652 { &hf_config_bandwidth_voice_reassc,
1653 { "BANDWIDTH_VOICE_REASSC", "wassp.config.bandwidth.voice.reassc", FT_INT32, BASE_DEC, NULL,
1654 0x0, NULL, HFILL }},
1656 { &hf_config_bandwidth_video_assc,
1657 { "BANDWIDTH_VIDEO_ASSC", "wassp.config.bandwidth.video.assc", FT_INT32, BASE_DEC, NULL,
1658 0x0, NULL, HFILL }},
1660 { &hf_config_bandwidth_video_reassc,
1661 { "BANDWIDTH_VIDEO_REASSC", "wassp.config.bandwidth.video.reassc", FT_INT32, BASE_DEC, NULL,
1662 0x0, NULL, HFILL }},
1664 { &hf_config_bandwidth_video_reserve,
1665 { "BANDWIDTH_VIDEO_RESERVE", "wassp.config.bandwidth.video.reserve", FT_INT32, BASE_DEC, NULL,
1666 0x0, NULL, HFILL }},
1668 { &hf_config_bandwidth_adm_ctrl_reserve,
1669 { "BANDWIDTH_ADM_CTRL_RESERVE", "wassp.config.bandwidth.adm.ctrl.reserve", FT_INT32, BASE_DEC, NULL,
1670 0x0, NULL, HFILL }},
1672 { &hf_config_vlan_tag,
1673 { "VLAN_TAG", "wassp.config.vlan.tag", FT_INT32, BASE_DEC, NULL,
1674 0x0, NULL, HFILL }},
1676 { &hf_config_country_code,
1677 { "COUNTRY_CODE", "wassp.config.country.code", FT_INT32, BASE_DEC, NULL,
1678 0x0, NULL, HFILL }},
1680 { &hf_config_poll_duration,
1681 { "POLL_DURATION", "wassp.config.poll.duration", FT_INT32, BASE_DEC, NULL,
1682 0x0, NULL, HFILL }},
1684 { &hf_config_poll_interval,
1685 { "POLL_INTERVAL", "wassp.config.poll.interval", FT_INT32, BASE_DEC, NULL,
1686 0x0, NULL, HFILL }},
1688 { &hf_config_poll_maintain_client_session,
1689 { "POLL_MAINTAIN_CLIENT_SESSION", "wassp.config.poll.maintain.client.session", FT_INT32, BASE_DEC, NULL,
1690 0x0, NULL, HFILL }},
1692 { &hf_config_telnet_enable,
1693 { "TELNET_ENABLE", "wassp.config.telnet.enable", FT_INT32, BASE_DEC, NULL,
1694 0x0, NULL, HFILL }},
1696 { &hf_config_telnet_password,
1697 { "TELNET_PASSWORD", "wassp.config.telnet.password", FT_STRING, BASE_NONE, NULL,
1698 0x0, NULL, HFILL }},
1700 { &hf_config_telnet_password_entry_mode,
1701 { "TELNET_PASSWORD_ENTRY_MODE", "wassp.config.telnet.password.entry.mode", FT_INT32, BASE_DEC, NULL,
1702 0x0, NULL, HFILL }},
1704 { &hf_config_outdoor_enable_environment,
1705 { "OUTDOOR_ENABLE_ENVIRONMENT", "wassp.config.outdoor.enable.environment", FT_INT32, BASE_DEC, NULL,
1706 0x0, NULL, HFILL }},
1708 { &hf_config_slp_retry_count,
1709 { "SLP_RETRY_COUNT", "wassp.config.slp.retry.count", FT_INT32, BASE_DEC, NULL,
1710 0x0, NULL, HFILL }},
1712 { &hf_config_slp_retry_delay,
1713 { "SLP_RETRY_DELAY", "wassp.config.slp.retry.delay", FT_INT32, BASE_DEC, NULL,
1714 0x0, NULL, HFILL }},
1716 { &hf_config_dns_retry_count,
1717 { "DNS_RETRY_COUNT", "wassp.config.dns.retry.count", FT_INT32, BASE_DEC, NULL,
1718 0x0, NULL, HFILL }},
1720 { &hf_config_dns_retry_delay,
1721 { "DNS_RETRY_DELAY", "wassp.config.dns.retry.delay", FT_INT32, BASE_DEC, NULL,
1722 0x0, NULL, HFILL }},
1724 { &hf_config_mcast_slp_retry_count,
1725 { "MCAST_SLP_RETRY_COUNT", "wassp.config.mcast.slp.retry.count", FT_INT32, BASE_DEC, NULL,
1726 0x0, NULL, HFILL }},
1728 { &hf_config_mcast_slp_retry_delay,
1729 { "MCAST_SLP_RETRY_DELAY", "wassp.config.mcast.slp.retry.delay", FT_INT32, BASE_DEC, NULL,
1730 0x0, NULL, HFILL }},
1732 { &hf_config_disc_retry_count,
1733 { "DISC_RETRY_COUNT", "wassp.config.disc.retry.count", FT_INT32, BASE_DEC, NULL,
1734 0x0, NULL, HFILL }},
1736 { &hf_config_disc_retry_delay,
1737 { "DISC_RETRY_DELAY", "wassp.config.disc.retry.delay", FT_BYTES, BASE_NONE, NULL,
1738 0x0, NULL, HFILL }},
1740 { &hf_config_logging_alarm_sev,
1741 { "LOGGING_ALARM_SEV", "wassp.config.logging.alarm.sev", FT_INT32, BASE_DEC, NULL,
1742 0x0, NULL, HFILL }},
1744 { &hf_config_blacklist_blacklist_add,
1745 { "BLACKLIST_BLACKLIST_ADD", "wassp.config.blacklist.blacklist.add", FT_INT32, BASE_DEC, NULL,
1746 0x0, NULL, HFILL }},
1748 { &hf_config_failover_ac_ip_addr,
1749 { "FAILOVER_AC_IP_ADDR", "wassp.config.failover.ac.ip.addr", FT_INT32, BASE_DEC, NULL,
1750 0x0, NULL, HFILL }},
1752 { &hf_config_static_ac_ip_addr,
1753 { "STATIC_AC_IP_ADDR", "wassp.config.static.ac.ip.addr", FT_INT32, BASE_DEC, NULL,
1754 0x0, NULL, HFILL }},
1756 { &hf_config_dhcp_assignment,
1757 { "DHCP_ASSIGNMENT", "wassp.config.dhcp.assignment", FT_INT32, BASE_DEC, NULL,
1758 0x0, NULL, HFILL }},
1760 { &hf_config_static_ap_ip_addr,
1761 { "STATIC_AP_IP_ADDR", "wassp.config.static.ap.ip.addr", FT_INT32, BASE_DEC, NULL,
1762 0x0, NULL, HFILL }},
1764 { &hf_config_static_ap_ip_netmask,
1765 { "STATIC_AP_IP_NETMASK", "wassp.config.static.ap.ip.netmask", FT_INT32, BASE_DEC, NULL,
1766 0x0, NULL, HFILL }},
1768 { &hf_config_static_ap_default_gw,
1769 { "STATIC_AP_DEFAULT_GW", "wassp.config.static.ap.default.gw", FT_INT32, BASE_DEC, NULL,
1770 0x0, NULL, HFILL }},
1772 { &hf_config_blacklist_del,
1773 { "BLACKLIST_DEL", "wassp.config.blacklist.del", FT_INT32, BASE_DEC, NULL,
1774 0x0, NULL, HFILL }},
1776 { &hf_config_macaddr_req,
1777 { "MACADDR_REQ", "wassp.config.macaddr.req", FT_INT32, BASE_DEC, NULL,
1778 0x0, NULL, HFILL }},
1780 { &hf_config_availability_mode,
1781 { "AVAILABILITY_MODE", "wassp.config.availability.mode", FT_INT32, BASE_DEC, NULL,
1782 0x0, NULL, HFILL }},
1784 /* WASSP config vns */
1785 { &hf_config_vns_radio_id,
1786 { "V_RADIO_ID", "wassp.config.vns.radio.id", FT_INT32, BASE_DEC, NULL,
1787 0x0, NULL, HFILL }},
1789 { &hf_config_vns_vns_id,
1790 { "V_VNS_ID", "wassp.config.vns.vns.id", FT_INT32, BASE_DEC, NULL,
1791 0x0, NULL, HFILL }},
1793 { &hf_config_vns_turbo_voice,
1794 { "V_TURBO_VOICE", "wassp.config.vns.turbo.voice", FT_INT32, BASE_DEC, NULL,
1795 0x0, NULL, HFILL }},
1797 { &hf_config_vns_prop_ie,
1798 { "V_PROP_IE", "wassp.config.vns.prop.ie", FT_INT32, BASE_DEC, NULL,
1799 0x0, NULL, HFILL }},
1801 { &hf_config_vns_enable_802_11_h,
1802 { "V_ENABLE_802_11_H", "wassp.config.vns.enable.802.11.h", FT_INT32, BASE_DEC, NULL,
1803 0x0, NULL, HFILL }},
1805 { &hf_config_vns_power_backoff,
1806 { "V_POWER_BACKOFF", "wassp.config.vns.power.backoff", FT_INT32, BASE_DEC, NULL,
1807 0x0, NULL, HFILL }},
1809 { &hf_config_vns_bridge_mode,
1810 { "V_BRIDGE_MODE", "wassp.config.vns.bridge.mode", FT_INT32, BASE_DEC, NULL,
1811 0x0, NULL, HFILL }},
1813 { &hf_config_vns_vlan_tag,
1814 { "V_VLAN_TAG", "wassp.config.vns.vlan.tag", FT_INT32, BASE_DEC, NULL,
1815 0x0, NULL, HFILL }},
1817 { &hf_config_vns_process_ie_req,
1818 { "V_PROCESS_IE_REQ", "wassp.config.vns.process.ie.req", FT_INT32, BASE_DEC, NULL,
1819 0x0, NULL, HFILL }},
1821 { &hf_config_vns_enable_u_apsd,
1822 { "V_ENABLE_U_APSD", "wassp.config.vns.enable.u.apsd", FT_INT32, BASE_DEC, NULL,
1823 0x0, NULL, HFILL }},
1825 { &hf_config_vns_adm_ctrl_voice,
1826 { "V_ADM_CTRL_VOICE", "wassp.config.vns.adm.ctrl.voice", FT_INT32, BASE_DEC, NULL,
1827 0x0, NULL, HFILL }},
1829 { &hf_config_vns_adm_ctrl_video,
1830 { "V_ADM_CTRL_VIDEO", "wassp.config.vns.adm.ctrl.video", FT_INT32, BASE_DEC, NULL,
1831 0x0, NULL, HFILL }},
1833 { &hf_config_vns_qos_up_value,
1834 { "V_QOS_UP_VALUE", "wassp.config.vns.qos.up.value", FT_BYTES, BASE_NONE, NULL,
1835 0x0, NULL, HFILL }},
1837 { &hf_config_vns_priority_override,
1838 { "V_PRIORITY_OVERRIDE", "wassp.config.vns.priority.override", FT_INT32, BASE_DEC, NULL,
1839 0x0, NULL, HFILL }},
1841 { &hf_config_vns_dscp_override_value,
1842 { "V_DSCP_OVERRIDE_VALUE", "wassp.config.vns.dscp.override.value", FT_INT32, BASE_DEC, NULL,
1843 0x0, NULL, HFILL }},
1845 { &hf_config_vns_enable_802_11_e,
1846 { "V_ENABLE_802_11_E", "wassp.config.vns.enable.802.11.e", FT_INT32, BASE_DEC, NULL,
1847 0x0, NULL, HFILL }},
1849 { &hf_config_vns_enable_wmm,
1850 { "V_ENABLE_WMM", "wassp.config.vns.enable.wmm", FT_INT32, BASE_DEC, NULL,
1851 0x0, NULL, HFILL }},
1853 { &hf_config_vns_legacy_client_priority,
1854 { "V_LEGACY_CLIENT_PRIORITY", "wassp.config.vns.legacy.client.priority", FT_INT32, BASE_DEC, NULL,
1855 0x0, NULL, HFILL }},
1857 { &hf_config_vns_ssid_id,
1858 { "V_SSID_ID", "wassp.config.vns.ssid.id", FT_INT32, BASE_DEC, NULL,
1859 0x0, NULL, HFILL }},
1861 { &hf_config_vns_ssid_bcast_string,
1862 { "V_SSID_BCAST_STRING", "wassp.config.vns.ssid.bcast.string", FT_STRING, BASE_NONE, NULL,
1863 0x0, NULL, HFILL }},
1865 { &hf_config_vns_ssid_suppress,
1866 { "V_SSID_SUPPRESS", "wassp.config.vns.ssid.suppress", FT_INT32, BASE_DEC, NULL,
1867 0x0, NULL, HFILL }},
1869 { &hf_config_vns_802_1_x_enable,
1870 { "V_802_1_X_ENABLE", "wassp.config.vns.802.1.x.enable", FT_INT32, BASE_DEC, NULL,
1871 0x0, NULL, HFILL }},
1873 { &hf_config_vns_802_1_x_dyn_rekey,
1874 { "V_802_1_X_DYN_REKEY", "wassp.config.vns.802.1.x.dyn.rekey", FT_INT32, BASE_DEC, NULL,
1875 0x0, NULL, HFILL }},
1877 { &hf_config_vns_wpa_enable,
1878 { "V_WPA_ENABLE", "wassp.config.vns.wpa.enable", FT_INT32, BASE_DEC, NULL,
1879 0x0, NULL, HFILL }},
1881 { &hf_config_vns_wpa_v2_enable,
1882 { "V_WPA_V2_ENABLE", "wassp.config.vns.wpa.v2.enable", FT_INT32, BASE_DEC, NULL,
1883 0x0, NULL, HFILL }},
1885 { &hf_config_vns_wpa_passphrase,
1886 { "V_WPA_PASSPHRASE", "wassp.config.vns.wpa.passphrase", FT_STRING, BASE_NONE, NULL,
1887 0x0, NULL, HFILL }},
1889 { &hf_config_vns_wpa_cipher_type,
1890 { "V_WPA_CIPHER_TYPE", "wassp.config.vns.wpa.cipher.type", FT_INT32, BASE_DEC, NULL,
1891 0x0, NULL, HFILL }},
1893 { &hf_config_vns_wpa_v2_cipher_type,
1894 { "V_WPA_V2_CIPHER_TYPE", "wassp.config.vns.wpa.v2.cipher.type", FT_INT32, BASE_DEC, NULL,
1895 0x0, NULL, HFILL }},
1897 { &hf_config_vns_wep_key_index,
1898 { "V_WEP_KEY_INDEX", "wassp.config.vns.wep.key.index", FT_INT32, BASE_DEC, NULL,
1899 0x0, NULL, HFILL }},
1901 { &hf_config_vns_wep_default_key_value,
1902 { "V_WEP_DEFAULT_KEY_VALUE", "wassp.config.vns.wep.default.key.value", FT_INT32, BASE_DEC, NULL,
1903 0x0, NULL, HFILL }},
1905 { &hf_config_vns_channel_report,
1906 { "V_CHANNEL_REPORT", "wassp.config.vns.channel.report", FT_INT32, BASE_DEC, NULL,
1907 0x0, NULL, HFILL }},
1909 { &hf_config_vns_wds_service,
1910 { "V_WDS_SERVICE", "wassp.config.vns.wds.service", FT_INT32, BASE_DEC, NULL,
1911 0x0, NULL, HFILL }},
1913 { &hf_config_vns_wds_pref_parent,
1914 { "V_WDS_PREF_PARENT", "wassp.config.vns.wds.pref.parent", FT_INT32, BASE_DEC, NULL,
1915 0x0, NULL, HFILL }},
1917 { &hf_config_vns_wds_bridge,
1918 { "V_WDS_BRIDGE", "wassp.config.vns.wds.bridge", FT_INT32, BASE_DEC, NULL,
1919 0x0, NULL, HFILL }},
1921 { &hf_config_vns_okc_enabled,
1922 { "V_OKC_ENABLED", "wassp.config.vns.okc.enabled", FT_INT32, BASE_DEC, NULL,
1923 0x0, NULL, HFILL }},
1925 { &hf_config_vns_mu_assoc_retries,
1926 { "V_MU_ASSOC_RETRIES", "wassp.config.vns.mu.assoc.retries", FT_INT32, BASE_DEC, NULL,
1927 0x0, NULL, HFILL }},
1929 { &hf_config_vns_mu_assoc_timeout,
1930 { "V_MU_ASSOC_TIMEOUT", "wassp.config.vns.mu.assoc.timeout", FT_INT32, BASE_DEC, NULL,
1931 0x0, NULL, HFILL }},
1933 { &hf_config_vns_wds_parent,
1934 { "V_WDS_PARENT", "wassp.config.vns.wds.parent", FT_INT32, BASE_DEC, NULL,
1935 0x0, NULL, HFILL }},
1937 { &hf_config_vns_wds_back_parent,
1938 { "V_WDS_BACK_PARENT", "wassp.config.vns.wds.back.parent", FT_INT32, BASE_DEC, NULL,
1939 0x0, NULL, HFILL }},
1941 { &hf_config_vns_wds_name,
1942 { "V_WDS_NAME", "wassp.config.vns.wds.name", FT_STRING, BASE_NONE, NULL,
1943 0x0, NULL, HFILL }},
1945 /* WASSP config radio */
1946 { &hf_config_radio_radio_id,
1947 { "R_RADIO_ID", "wassp.config.radio.radio.id", FT_INT32, BASE_DEC, NULL,
1948 0x0, NULL, HFILL }},
1950 { &hf_config_radio_enable_radio,
1951 { "R_ENABLE_RADIO", "wassp.config.radio.enable.radio", FT_INT32, BASE_DEC, NULL,
1952 0x0, NULL, HFILL }},
1954 { &hf_config_radio_channel,
1955 { "R_CHANNEL", "wassp.config.radio.channel", FT_INT32, BASE_DEC, NULL,
1956 0x0, NULL, HFILL }},
1958 { &hf_config_radio_op_rate_set,
1959 { "R_OP_RATE_SET", "wassp.config.radio.op.rate.set", FT_INT32, BASE_DEC, NULL,
1960 0x0, NULL, HFILL }},
1962 { &hf_config_radio_op_rate_max,
1963 { "R_OP_RATE_MAX", "wassp.config.radio.op.rate.max", FT_INT32, BASE_DEC, NULL,
1964 0x0, NULL, HFILL }},
1966 { &hf_config_radio_beacon_period,
1967 { "R_BEACON_PERIOD", "wassp.config.radio.beacon.period", FT_INT32, BASE_DEC, NULL,
1968 0x0, NULL, HFILL }},
1970 { &hf_config_radio_dtim_period,
1971 { "R_DTIM_PERIOD", "wassp.config.radio.dtim.period", FT_INT32, BASE_DEC, NULL,
1972 0x0, NULL, HFILL }},
1974 { &hf_config_radio_rts_threshold,
1975 { "R_RTS_THRESHOLD", "wassp.config.radio.rts.threshold", FT_INT32, BASE_DEC, NULL,
1976 0x0, NULL, HFILL }},
1978 { &hf_config_radio_fragment_threshold,
1979 { "R_FRAGMENT_THRESHOLD", "wassp.config.radio.fragment.threshold", FT_INT32, BASE_DEC, NULL,
1980 0x0, NULL, HFILL }},
1982 { &hf_config_radio_power_level,
1983 { "R_POWER_LEVEL", "wassp.config.radio.power.level", FT_INT32, BASE_DEC, NULL,
1984 0x0, NULL, HFILL }},
1986 { &hf_config_radio_diversity_rx,
1987 { "R_DIVERSITY_RX", "wassp.config.radio.diversity.rx", FT_INT32, BASE_DEC, NULL,
1988 0x0, NULL, HFILL }},
1990 { &hf_config_radio_diversity_tx,
1991 { "R_DIVERSITY_TX", "wassp.config.radio.diversity.tx", FT_INT32, BASE_DEC, NULL,
1992 0x0, NULL, HFILL }},
1994 { &hf_config_radio_short_preamble,
1995 { "R_SHORT_PREAMBLE", "wassp.config.radio.short.preamble", FT_INT32, BASE_DEC, NULL,
1996 0x0, NULL, HFILL }},
1998 { &hf_config_radio_basic_rate_max,
1999 { "R_BASIC_RATE_MAX", "wassp.config.radio.basic.rate.max", FT_INT32, BASE_DEC, NULL,
2000 0x0, NULL, HFILL }},
2002 { &hf_config_radio_basic_rate_min,
2003 { "R_BASIC_RATE_MIN", "wassp.config.radio.basic.rate.min", FT_INT32, BASE_DEC, NULL,
2004 0x0, NULL, HFILL }},
2006 { &hf_config_radio_hw_retries,
2007 { "R_HW_RETRIES", "wassp.config.radio.hw.retries", FT_STRING, BASE_NONE, NULL,
2008 0x0, NULL, HFILL }},
2010 { &hf_config_radio_tx_power_min,
2011 { "R_TX_POWER_MIN", "wassp.config.radio.tx.power.min", FT_INT32, BASE_DEC, NULL,
2012 0x0, NULL, HFILL }},
2014 { &hf_config_radio_tx_power_max,
2015 { "R_TX_POWER_MAX", "wassp.config.radio.tx.power.max", FT_INT32, BASE_DEC, NULL,
2016 0x0, NULL, HFILL }},
2018 { &hf_config_radio_domain_id,
2019 { "R_DOMAIN_ID", "wassp.config.radio.domain.id", FT_STRING, BASE_NONE, NULL,
2020 0x0, NULL, HFILL }},
2022 { &hf_config_radio_b_enable,
2023 { "R_B_ENABLE", "wassp.config.radio.b.enable", FT_INT32, BASE_DEC, NULL,
2024 0x0, NULL, HFILL }},
2026 { &hf_config_radio_b_basic_rates,
2027 { "R_B_BASIC_RATES", "wassp.config.radio.b.basic.rates", FT_INT32, BASE_DEC, NULL,
2028 0x0, NULL, HFILL }},
2030 { &hf_config_radio_g_enable,
2031 { "R_G_ENABLE", "wassp.config.radio.g.enable", FT_INT32, BASE_DEC, NULL,
2032 0x0, NULL, HFILL }},
2034 { &hf_config_radio_g_protect_mode,
2035 { "R_G_PROTECT_MODE", "wassp.config.radio.g.protect.mode", FT_INT32, BASE_DEC, NULL,
2036 0x0, NULL, HFILL }},
2038 { &hf_config_radio_g_protect_type,
2039 { "R_G_PROTECT_TYPE", "wassp.config.radio.g.protect.type", FT_INT32, BASE_DEC, NULL,
2040 0x0, NULL, HFILL }},
2042 { &hf_config_radio_g_protect_rate,
2043 { "R_G_PROTECT_RATE", "wassp.config.radio.g.protect.rate", FT_INT32, BASE_DEC, NULL,
2044 0x0, NULL, HFILL }},
2046 { &hf_config_radio_g_basic_rate,
2047 { "R_G_BASIC_RATE", "wassp.config.radio.g.basic.rate", FT_INT32, BASE_DEC, NULL,
2048 0x0, NULL, HFILL }},
2050 { &hf_config_radio_a_support_802_11_j,
2051 { "R_A_SUPPORT_802_11_J", "wassp.config.radio.a.support.802.11.j", FT_INT32, BASE_DEC, NULL,
2052 0x0, NULL, HFILL }},
2054 { &hf_config_radio_atpc_en_interval,
2055 { "R_ATPC_EN_INTERVAL", "wassp.config.radio.atpc.en.interval", FT_INT32, BASE_DEC, NULL,
2056 0x0, NULL, HFILL }},
2058 { &hf_config_radio_acs_ch_list,
2059 { "R_ACS_CH_LIST", "wassp.config.radio.acs.ch.list", FT_BYTES, BASE_NONE, NULL,
2060 0x0, NULL, HFILL }},
2062 { &hf_config_radio_tx_power_adj,
2063 { "R_TX_POWER_ADJ", "wassp.config.radio.tx.power.adj", FT_INT32, BASE_DEC, NULL,
2064 0x0, NULL, HFILL }},
2066 /* WASSP discover header */
2067 { &hf_wassp_discover1,
2068 { "Discover Header1", "wassp.discover1", FT_UINT8, BASE_HEX, NULL,
2069 0x0, NULL, HFILL }},
2071 /* { &hf_wassp_length, */ /* see tunnel header */
2073 { &hf_wassp_discover2,
2074 { "Discover Header2", "wassp.discover2", FT_UINT8, BASE_HEX, NULL,
2075 0x0, NULL, HFILL }},
2077 { &hf_wassp_subtype,
2078 { "Discover Subtype", "wassp.subtype", FT_UINT8, BASE_DEC, NULL,
2079 0x0, NULL, HFILL }},
2081 { &hf_wassp_ether,
2082 { "Discover Ether", "wassp.ether", FT_ETHER, BASE_NONE, NULL,
2083 0x0, NULL, HFILL }},
2085 { &hf_wassp_discover3,
2086 { "Discover Header3", "wassp.discover3", FT_UINT8, BASE_HEX, NULL,
2087 0x0, NULL, HFILL }},
2090 static gint *ett[] = {
2091 &ett_wassp,
2092 &ett_wassp_tlv_header,
2095 proto_wassp = proto_register_protocol(PROTO_LONG_NAME, PROTO_SHORT_NAME, "wassp");
2096 proto_register_field_array(proto_wassp, hf, array_length(hf));
2097 proto_register_subtree_array(ett, array_length(ett));
2100 void
2101 proto_reg_handoff_wassp(void)
2103 dissector_handle_t wassp_handle;
2106 wassp_handle = new_create_dissector_handle(dissect_wassp_static, proto_wassp);
2107 dissector_add_uint("udp.port", PORT_WASSP_DISCOVER, wassp_handle);
2108 dissector_add_uint("udp.port", PORT_WASSP_TUNNEL, wassp_handle);
2109 /* dissector_add_uint("udp.port", PORT_WASSP_PEER, wassp_handle); */
2110 #if 0
2111 heur_dissector_add("udp", dissect_wassp_heur, proto_wassp);
2112 #endif
2114 snmp_handle = find_dissector("snmp");
2115 ieee80211_handle = find_dissector("wlan");