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