1 /* packet-ieee80211.h
2  * Routines for Wireless LAN (IEEE 802.11) dissection
3  *
4  * Copyright 2000, Axis Communications AB
5  * Inquiries/bugreports should be sent to Johan.Jorgensen@axis.com
6  *
7  * Wireshark - Network traffic analyzer
8  * By Gerald Combs <gerald@wireshark.org>
9  * Copyright 1998 Gerald Combs
10  *
11  * Copied from README.developer
12  *
13  * SPDX-License-Identifier: GPL-2.0-or-later
14  */
15 
16 #include "ws_symbol_export.h"
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif /* __cplusplus */
21 
22 typedef struct {
23   gboolean association_has_mobility_domain_element;
24   gboolean has_ft_akm_suite;
25   gboolean has_non_ft_akm_suite;
26   gboolean has_fils_session;
27   guint32 last_akm_suite;
28   guint16 owe_group;
29   proto_node *rsn_first_ft_akm_suite;
30   proto_node *rsn_first_non_ft_akm_suite;
31   guint8 ampe_frame;
32 } association_sanity_check_t;
33 
34 typedef struct {
35   guint16 discovered_key_mic_len; /* Discovered from the first EAPOL frame */
36   gboolean last_akm_suite_set;    /* Have we set this? */
37   guint32 last_akm_suite;
38   guint16 owe_group;
39 } ieee80211_conversation_data_t;
40 
41 typedef struct {
42   gboolean last_akm_suite_set;
43   guint32 last_akm_suite;
44   guint16 owe_group;
45 } ieee80211_packet_data_t;
46 
47 typedef struct ieee80211_tagged_field_data
48 {
49   int ftype;
50   association_sanity_check_t* sanity_check;
51   gboolean isDMG;
52   proto_item* item_tag;
53   proto_item* item_tag_length;
54 } ieee80211_tagged_field_data_t;
55 
56 int add_tagged_field(packet_info *pinfo, proto_tree *tree,
57                             tvbuff_t *tvb, int offset, int ftype,
58                             const guint8 *valid_element_ids,
59                             guint valid_element_ids_count,
60                             association_sanity_check_t *association_sanity_check);
61 
62 int add_tagged_field_with_validation(packet_info *pinfo, proto_tree *tree,
63                                       tvbuff_t *tvb, int offset, int ftype,
64                                       const guint8 *element_ids,
65                                       guint element_ids_count,
66                                       gboolean elements_ids_assume_invalid,
67                                       const guint8 *ext_element_ids,
68                                       guint ext_element_ids_count,
69                                       gboolean ext_element_ids_assume_invalid,
70                                       association_sanity_check_t *association_sanity_check);
71 
72 int dissect_wifi_dpp_config_proto(packet_info *pinfo, proto_tree *query,
73                                   tvbuff_t *tvb, int offset);
74 #define MAX_SSID_LEN    32
75 #define MAX_PROTECT_LEN 10
76 
77 /*
78  * Table of data rates, indexed by MCS index, bandwidth (0 for 20, 1 for 40),
79  * amd guard interval (0 for long, 1 for short).
80  */
81 #define MAX_MCS_INDEX 76
82 
83 WS_DLL_PUBLIC const guint16 ieee80211_ht_Dbps[MAX_MCS_INDEX+1];
84 float ieee80211_htrate(int mcs_index, gboolean bandwidth, gboolean short_gi);
85 
86 WS_DLL_PUBLIC value_string_ext ieee80211_supported_rates_vals_ext;
87 
88 WS_DLL_PUBLIC
89 gboolean is_broadcast_bssid(const address *bssid);
90 
91 #ifdef __cplusplus
92 }
93 #endif /* __cplusplus */
94 
95 /*
96  * Extract the protocol version from the frame control field
97  */
98 #define FCF_PROT_VERSION(x)  ((x) & 0x3)
99 
100 #define PV0 0x0
101 #define PV1 0x1
102 #define PC2 0x2
103 #define PV3 0x3
104 
105 /*
106  * Extract the frame type from the frame control field.
107  */
108 #define FCF_FRAME_TYPE(x)    (((x) & 0xC) >> 2)
109 #define FCF_PV1_TYPE(x)      (((x) >> 2) & 0x7)
110 
111 /*
112  * Extract the frame subtype from the frame control field.
113  */
114 #define FCF_FRAME_SUBTYPE(x) (((x) & 0xF0) >> 4)
115 #define FCF_PV1_SUBTYPE(x)   (((x) >> 5) & 0x7)
116 
117 /*
118  * Extract the control frame extension from the frame control field.
119  */
120 #define FCF_FRAME_EXTENSION(x) (((x) & 0xF00) >> 8)
121 
122 /*
123  * Checks if the frame is control frame extension.
124  */
125 #define IS_FRAME_EXTENSION(x) ((FCF_FRAME_TYPE(x) == 0x1 && FCF_FRAME_SUBTYPE(x) == 0x6) ? 1 : 0)
126 
127 /*
128  * Convert the frame type and subtype from the frame control field into
129  * one of the MGT_, CTRL_, or DATA_ values.
130  * Now includes extension subtype in case present.
131  */
132 #define COMPOSE_FRAME_TYPE(x) ((FCF_FRAME_TYPE(x) == 0x1 && FCF_FRAME_SUBTYPE(x) == 0x6) ? (((x & 0x0C)<< 6) + ((x) & 0xF0) + FCF_FRAME_EXTENSION(x)) : (((x & 0x0C)<< 2)+FCF_FRAME_SUBTYPE(x)))  /* Create key to (sub)type */
133 
134 /*
135  * The subtype field of a data frame is, in effect, composed of 4 flag
136  * bits - CF-Ack, CF-Poll, Null (means the frame doesn't actually have
137  * any data), and QoS.
138  */
139 #define DATA_FRAME_IS_CF_ACK(x)  ((x) & 0x01)
140 #define DATA_FRAME_IS_CF_POLL(x) ((x) & 0x02)
141 #define DATA_FRAME_IS_NULL(x)    ((x) & 0x04)
142 #define DATA_FRAME_IS_QOS(x)     ((x) & 0x08)
143 
144 /*
145  * Extract the flags from the frame control field.
146  * Now includes subset of flags when the subtype is control frame extension.
147  */
148 #define FCF_FLAGS(x)           ((FCF_FRAME_TYPE(x) == 0x1 && FCF_FRAME_SUBTYPE(x) == 0x6) ? (((x) & 0xF000) >> 12) : (((x) & 0xFF00) >> 8))
149 
150 /*
151  * Bits from the flags field.
152  */
153 #define FLAG_TO_DS            0x01
154 #define FLAG_FROM_DS          0x02
155 #define FLAG_MORE_FRAGMENTS   0x04
156 #define FLAG_RETRY            0x08
157 #define FLAG_POWER_MGT        0x10
158 #define FLAG_MORE_DATA        0x20
159 #define FLAG_PROTECTED        0x40
160 #define FLAG_ORDER            0x80    /* overloaded for "has HT control" */
161 
162 /*
163  * Test bits in the flags field.
164  */
165 /*
166  * XXX - Only HAVE_FRAGMENTS, IS_PROTECTED, and HAS_HT_CONTROL
167  * are in use.  Should the rest be removed?
168  */
169 #define IS_TO_DS(x)            ((x) & FLAG_TO_DS)
170 #define IS_FROM_DS(x)          ((x) & FLAG_FROM_DS)
171 #define HAVE_FRAGMENTS(x)      ((x) & FLAG_MORE_FRAGMENTS)
172 #define IS_RETRY(x)            ((x) & FLAG_RETRY)
173 #define POWER_MGT_STATUS(x)    ((x) & FLAG_POWER_MGT)
174 #define HAS_MORE_DATA(x)       ((x) & FLAG_MORE_DATA)
175 #define IS_PROTECTED(x)        ((x) & FLAG_PROTECTED)
176 #define IS_STRICTLY_ORDERED(x) ((x) & FLAG_ORDER)      /* for non-QoS data frames */
177 #define HAS_HT_CONTROL(x)      ((x) & FLAG_ORDER)      /* for management and QoS data frames */
178 
179 /*
180  * Extract subfields from the flags field.
181  */
182 #define FLAGS_DS_STATUS(x)          ((x) & (FLAG_FROM_DS|FLAG_TO_DS))
183 
184 /*
185  * Extract an indication of the types of addresses in a data frame from
186  * the frame control field.
187  */
188 #define FCF_ADDR_SELECTOR(x) ((x) & ((FLAG_TO_DS|FLAG_FROM_DS) << 8))
189 
190 #define DATA_ADDR_T1         0
191 #define DATA_ADDR_T2         (FLAG_FROM_DS << 8)
192 #define DATA_ADDR_T3         (FLAG_TO_DS << 8)
193 #define DATA_ADDR_T4         ((FLAG_TO_DS|FLAG_FROM_DS) << 8)
194 
195 /*
196  * COMPOSE_FRAME_TYPE() values for management frames.
197  */
198 #define MGT_ASSOC_REQ          0x00  /* association request        */
199 #define MGT_ASSOC_RESP         0x01  /* association response       */
200 #define MGT_REASSOC_REQ        0x02  /* reassociation request      */
201 #define MGT_REASSOC_RESP       0x03  /* reassociation response     */
202 #define MGT_PROBE_REQ          0x04  /* Probe request              */
203 #define MGT_PROBE_RESP         0x05  /* Probe response             */
204 #define MGT_MEASUREMENT_PILOT  0x06  /* Measurement Pilot          */
205 #define MGT_BEACON             0x08  /* Beacon frame               */
206 #define MGT_ATIM               0x09  /* ATIM                       */
207 #define MGT_DISASS             0x0A  /* Disassociation             */
208 #define MGT_AUTHENTICATION     0x0B  /* Authentication             */
209 #define MGT_DEAUTHENTICATION   0x0C  /* Deauthentication           */
210 #define MGT_ACTION             0x0D  /* Action                     */
211 #define MGT_ACTION_NO_ACK      0x0E  /* Action No Ack              */
212 #define MGT_ARUBA_WLAN         0x0F  /* Aruba WLAN Specific        */
213 
214 /*
215  * COMPOSE_FRAME_TYPE() values for control frames.
216  * 0x160 - 0x16A are for control frame extension where type = 1 and subtype =6.
217  */
218 #define CTRL_TRIGGER           0x12  /* HE Trigger                     */
219 #define CTRL_TACK              0x13  /* S1G TWT Ack                    */
220 #define CTRL_BEAMFORM_RPT_POLL 0x14  /* Beamforming Report             */
221 #define CTRL_VHT_NDP_ANNC      0x15  /* VHT NDP Announcement           */
222 #define CTRL_POLL              0x162  /* Poll                          */
223 #define CTRL_SPR               0x163  /* Service Period Request        */
224 #define CTRL_GRANT             0x164  /* Grant                         */
225 #define CTRL_DMG_CTS           0x165  /* DMG Clear to Send             */
226 #define CTRL_DMG_DTS           0x166  /* DMG Denial to Send            */
227 #define CTRL_GRANT_ACK         0x167  /* Grant Acknowledgment          */
228 #define CTRL_SSW               0x168  /* Sector Sweep                  */
229 #define CTRL_SSW_FEEDBACK      0x169  /* Sector Sweep Feedback         */
230 #define CTRL_SSW_ACK           0x16A  /* Sector Sweep Acknowledgment   */
231 #define CTRL_CONTROL_WRAPPER   0x17  /* Control Wrapper                */
232 #define CTRL_BLOCK_ACK_REQ     0x18  /* Block ack Request              */
233 #define CTRL_BLOCK_ACK         0x19  /* Block ack                      */
234 #define CTRL_PS_POLL           0x1A  /* power-save poll                */
235 #define CTRL_RTS               0x1B  /* request to send                */
236 #define CTRL_CTS               0x1C  /* clear to send                  */
237 #define CTRL_ACKNOWLEDGEMENT   0x1D  /* acknowledgement                */
238 #define CTRL_CFP_END           0x1E  /* contention-free period end     */
239 #define CTRL_CFP_ENDACK        0x1F  /* contention-free period end/ack */
240 
241 /*
242  * COMPOSE_FRAME_TYPE() values for data frames.
243  */
244 #define DATA                        0x20  /* Data                       */
245 #define DATA_CF_ACK                 0x21  /* Data + CF-Ack              */
246 #define DATA_CF_POLL                0x22  /* Data + CF-Poll             */
247 #define DATA_CF_ACK_POLL            0x23  /* Data + CF-Ack + CF-Poll    */
248 #define DATA_NULL_FUNCTION          0x24  /* Null function (no data)    */
249 #define DATA_CF_ACK_NOD             0x25  /* CF-Ack (no data)           */
250 #define DATA_CF_POLL_NOD            0x26  /* CF-Poll (No data)          */
251 #define DATA_CF_ACK_POLL_NOD        0x27  /* CF-Ack + CF-Poll (no data) */
252 
253 #define DATA_QOS_DATA               0x28  /* QoS Data                   */
254 #define DATA_QOS_DATA_CF_ACK        0x29  /* QoS Data + CF-Ack        */
255 #define DATA_QOS_DATA_CF_POLL       0x2A  /* QoS Data + CF-Poll      */
256 #define DATA_QOS_DATA_CF_ACK_POLL   0x2B  /* QoS Data + CF-Ack + CF-Poll    */
257 #define DATA_QOS_NULL               0x2C  /* QoS Null        */
258 #define DATA_QOS_CF_POLL_NOD        0x2E  /* QoS CF-Poll (No Data)      */
259 #define DATA_QOS_CF_ACK_POLL_NOD    0x2F  /* QoS CF-Ack + CF-Poll (No Data) */
260 
261 /*
262  * COMPOSE_FRAME_TYPE() values for extension frames.
263  */
264 #define EXTENSION_DMG_BEACON         0x30  /* Extension DMG beacon */
265 #define EXTENSION_S1G_BEACON         0x31  /* Extension S1G beacon */
266 
267 /*
268  * PV1 frame types
269  */
270 #define PV1_QOS_DATA_1MAC            0x00  /* QoS data, one SID, one MAC     */
271 #define PV1_MANAGEMENT               0x01  /* PV1 Management frame           */
272 #define PV1_CONTROL                  0x02  /* PV1 Control frame              */
273 #define PV1_QOS_DATA_2MAC            0x03  /* QoS data, two MAC addresses    */
274 
275 /*
276  * PV1 frame subtypes
277  */
278 #define PV1_CONTROL_STACK             0x00   /* Control STACK */
279 #define PV1_CONTROL_BAT               0x01   /* Control BAT   */
280 
281 #define PV1_MANAGEMENT_ACTION         0x00
282 #define PV1_MANAGEMENT_ACTION_NO_ACK  0x01
283 #define PV1_MANAGEMENT_PROBE_RESPONSE 0x02
284 #define PV1_MANAGEMENT_RESOURCE_ALLOC 0x03
285 
286 /*
287  * PV1 SID constants
288  */
289 #define SID_AID_MASK                  0x1FFF
290 #define SID_A3_PRESENT                0x2000
291 #define SID_A4_PRESENT                0x4000
292 #define SID_A_MSDU                    0x8000
293 
294 #define TBTT_INFO(x)          (((x) & 0x3) >> 0)
295 #define TBTT_INFO_COUNT(x)    (((x) & (0xf<<4)) >> 4)
296 #define TBTT_INFO_LENGTH(x)   (((x) & (0xff<<8)) >> 8)
297 
298 typedef struct _wlan_stats {
299   guint8 channel;
300   guint8 ssid_len;
301   guchar ssid[MAX_SSID_LEN];
302   gchar protection[MAX_PROTECT_LEN];
303   gboolean fc_retry;
304 } wlan_stats_t;
305 
306 typedef struct _wlan_hdr {
307   address bssid;
308   address src;
309   address dst;
310   guint16 type;
311   struct _wlan_stats stats;
312 } wlan_hdr_t;
313 
314 #define WLANCAP_MAGIC_COOKIE_BASE 0x80211000
315 #define WLANCAP_MAGIC_COOKIE_V1 0x80211001
316 #define WLANCAP_MAGIC_COOKIE_V2 0x80211002
317 
318 /* UAT entry structure. */
319 typedef struct {
320   guint8    key;
321   gchar    *string;
322 } uat_wep_key_record_t;
323 
324 #define ADV_PROTO_ID_ANQP      0
325 #define ANV_PROTO_ID_MIH_IS    1
326 #define ADV_PROTO_ID_MIH_CESCD 2
327 #define ADV_PROTO_ID_EAS       3
328 #define ADV_PROTO_ID_RLQP       4
329 #define ADV_PROTO_ID_VS        221
330 
331 typedef struct anqp_info_dissector_data {
332   gboolean request;
333   int idx;
334 } anqp_info_dissector_data_t;
335 
336 /* WFA vendor specific element subtypes */
337 #define WFA_SUBTYPE_SUBSCRIPTION_REMEDIATION   0
338 #define WFA_SUBTYPE_DEAUTHENTICATION_IMMINENT  1
339 #define WFA_SUBTYPE_P2P                        9
340 #define WFA_SUBTYPE_WIFI_DISPLAY               10
341 #define WFA_SUBTYPE_HS20_INDICATION            16
342 #define WFA_SUBTYPE_OSEN                       18
343 #define WFA_SUBTYPE_NAN_IE                     19
344 #define WFA_SUBTYPE_MBO_OCE                    22
345 #define WFA_SUBTYPE_WIFI_60G                   23
346 #define WFA_SUBTYPE_NAN_ACTION                 24
347 #define WFA_SUBTYPE_DPP                        26
348 #define WFA_SUBTYPE_IEEE1905_MULTI_AP          27 /* ox1B */
349 #define WFA_SUBTYPE_OWE_TRANSITION_MODE        28
350 #define WFA_SUBTYPE_QOS_MGMT                   33 /* 0x21 */
351 
352 /* WFA Public Action Types */
353 #define WFA_SUBTYPE_ACTION_QOS_MGMT          0x1A
354 
355 /* WFA vendor specific ANQP subtypes */
356 #define WFA_ANQP_SUBTYPE_HS20                  17
357 #define WFA_ANQP_SUBTYPE_MBO                   18
358 
359 /* WFA WNM notification request subtypes */
360 #define WFA_WNM_SUBTYPE_NON_PREF_CHAN_REPORT   2
361 #define WFA_WNM_SUBTYPE_CELL_DATA_CAPABILITIES 3
362 
363 /* Information Element tags */
364 #define TAG_SSID                       0
365 #define TAG_SUPP_RATES                 1
366 #define TAG_FH_PARAMETER               2
367 #define TAG_DS_PARAMETER               3
368 #define TAG_CF_PARAMETER               4
369 #define TAG_TIM                        5
370 #define TAG_IBSS_PARAMETER             6
371 #define TAG_COUNTRY_INFO               7
372 #define TAG_FH_HOPPING_PARAMETER       8
373 #define TAG_FH_HOPPING_TABLE           9
374 #define TAG_REQUEST                   10
375 #define TAG_QBSS_LOAD                 11
376 #define TAG_EDCA_PARAM_SET            12
377 #define TAG_TSPEC                     13
378 #define TAG_TCLAS                     14
379 #define TAG_SCHEDULE                  15
380 #define TAG_CHALLENGE_TEXT            16
381 
382 #define TAG_POWER_CONSTRAINT          32
383 #define TAG_POWER_CAPABILITY          33
384 #define TAG_TPC_REQUEST               34
385 #define TAG_TPC_REPORT                35
386 #define TAG_SUPPORTED_CHANNELS        36
387 #define TAG_CHANNEL_SWITCH_ANN        37
388 #define TAG_MEASURE_REQ               38
389 #define TAG_MEASURE_REP               39
390 #define TAG_QUIET                     40
391 #define TAG_IBSS_DFS                  41
392 #define TAG_ERP_INFO                  42
393 #define TAG_TS_DELAY                  43
394 #define TAG_TCLAS_PROCESS             44
395 #define TAG_HT_CAPABILITY             45 /* IEEE Stc 802.11n/D2.0 */
396 #define TAG_QOS_CAPABILITY            46
397 #define TAG_ERP_INFO_OLD              47 /* IEEE Std 802.11g/D4.0 */
398 #define TAG_RSN_IE                    48
399 /* Reserved 49 */
400 #define TAG_EXT_SUPP_RATES            50
401 #define TAG_AP_CHANNEL_REPORT         51
402 #define TAG_NEIGHBOR_REPORT           52
403 #define TAG_RCPI                      53
404 #define TAG_MOBILITY_DOMAIN           54  /* IEEE Std 802.11r-2008 */
405 #define TAG_FAST_BSS_TRANSITION       55  /* IEEE Std 802.11r-2008 */
406 #define TAG_TIMEOUT_INTERVAL          56  /* IEEE Std 802.11r-2008 */
407 #define TAG_RIC_DATA                  57  /* IEEE Std 802.11r-2008 */
408 #define TAG_DSE_REG_LOCATION          58
409 #define TAG_SUPPORTED_OPERATING_CLASSES             59 /* IEEE Std 802.11w-2009 */
410 #define TAG_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT    60 /* IEEE Std 802.11w-2009 */
411 #define TAG_HT_INFO                   61  /* IEEE Stc 802.11n/D2.0 */
412 #define TAG_SECONDARY_CHANNEL_OFFSET  62  /* IEEE Stc 802.11n/D1.10/D2.0 */
413 #define TAG_BSS_AVG_ACCESS_DELAY      63
414 #define TAG_ANTENNA                   64
415 #define TAG_RSNI                      65
416 #define TAG_MEASURE_PILOT_TRANS       66
417 #define TAG_BSS_AVB_ADM_CAPACITY      67
418 #define TAG_IE_68_CONFLICT            68  /* Conflict: WAPI Vs. IEEE */
419 #define TAG_WAPI_PARAM_SET            68
420 #define TAG_BSS_AC_ACCESS_DELAY       68
421 #define TAG_TIME_ADV                  69  /* IEEE Std 802.11p-2010 */
422 #define TAG_RM_ENABLED_CAPABILITY     70
423 #define TAG_MULTIPLE_BSSID            71
424 #define TAG_20_40_BSS_CO_EX           72  /* IEEE P802.11n/D6.0 */
425 #define TAG_20_40_BSS_INTOL_CH_REP    73  /* IEEE P802.11n/D6.0 */
426 #define TAG_OVERLAP_BSS_SCAN_PAR      74  /* IEEE P802.11n/D6.0 */
427 #define TAG_RIC_DESCRIPTOR            75  /* IEEE Std 802.11r-2008 */
428 #define TAG_MMIE                      76  /* IEEE Std 802.11w-2009 */
429 #define TAG_EVENT_REQUEST             78
430 #define TAG_EVENT_REPORT              79
431 #define TAG_DIAGNOSTIC_REQUEST        80
432 #define TAG_DIAGNOSTIC_REPORT         81
433 #define TAG_LOCATION_PARAMETERS       82
434 #define TAG_NO_BSSID_CAPABILITY       83
435 #define TAG_SSID_LIST                 84
436 #define TAG_MULTIPLE_BSSID_INDEX      85
437 #define TAG_FMS_DESCRIPTOR            86
438 #define TAG_FMS_REQUEST               87
439 #define TAG_FMS_RESPONSE              88
440 #define TAG_QOS_TRAFFIC_CAPABILITY    89
441 #define TAG_BSS_MAX_IDLE_PERIOD       90
442 #define TAG_TFS_REQUEST               91
443 #define TAG_TFS_RESPONSE              92
444 #define TAG_WNM_SLEEP_MODE            93
445 #define TAG_TIM_BROADCAST_REQUEST     94
446 #define TAG_TIM_BROADCAST_RESPONSE    95
447 #define TAG_COLLOCATED_INTER_REPORT   96
448 #define TAG_CHANNEL_USAGE             97
449 #define TAG_TIME_ZONE                 98  /* IEEE Std 802.11v-2011 */
450 #define TAG_DMS_REQUEST               99
451 #define TAG_DMS_RESPONSE             100
452 #define TAG_LINK_IDENTIFIER          101  /* IEEE Std 802.11z-2010 */
453 #define TAG_WAKEUP_SCHEDULE          102  /* IEEE Std 802.11z-2010 */
454 #define TAG_CHANNEL_SWITCH_TIMING    104  /* IEEE Std 802.11z-2010 */
455 #define TAG_PTI_CONTROL              105  /* IEEE Std 802.11z-2010 */
456 #define TAG_PU_BUFFER_STATUS         106  /* IEEE Std 802.11z-2010 */
457 #define TAG_INTERWORKING             107  /* IEEE Std 802.11u-2011 */
458 #define TAG_ADVERTISEMENT_PROTOCOL   108  /* IEEE Std 802.11u-2011 */
459 #define TAG_EXPIDITED_BANDWIDTH_REQ  109  /* IEEE Std 802.11u-2011 */
460 #define TAG_QOS_MAP_SET              110  /* IEEE Std 802.11u-2011 */
461 #define TAG_ROAMING_CONSORTIUM       111  /* IEEE Std 802.11u-2011 */
462 #define TAG_EMERGENCY_ALERT_ID       112  /* IEEE Std 802.11u-2011 */
463 #define TAG_MESH_CONFIGURATION       113  /* IEEE Std 802.11s-2011 */
464 #define TAG_MESH_ID                  114  /* IEEE Std 802.11s-2011 */
465 #define TAG_MESH_LINK_METRIC_REPORT  115
466 #define TAG_CONGESTION_NOTIFICATION  116
467 #define TAG_MESH_PEERING_MGMT        117  /* IEEE Std 802.11s-2011 */
468 #define TAG_MESH_CHANNEL_SWITCH      118
469 #define TAG_MESH_AWAKE_WINDOW        119  /* IEEE Std 802.11s-2011 */
470 #define TAG_BEACON_TIMING            120
471 #define TAG_MCCAOP_SETUP_REQUEST     121
472 #define TAG_MCCAOP_SETUP_REPLY       122
473 #define TAG_MCCAOP_ADVERTISEMENT     123
474 #define TAG_MCCAOP_TEARDOWN          124
475 #define TAG_GANN                     125
476 #define TAG_RANN                     126  /* IEEE Std 802.11s-2011 */
477 #define TAG_EXTENDED_CAPABILITIES    127  /* IEEE Stc 802.11n/D1.10/D2.0 */
478 #define TAG_AGERE_PROPRIETARY        128
479 #define TAG_MESH_PREQ                130  /* IEEE Std 802.11s-2011 */
480 #define TAG_MESH_PREP                131  /* IEEE Std 802.11s-2011 */
481 #define TAG_MESH_PERR                132  /* IEEE Std 802.11s-2011 */
482 #define TAG_CISCO_CCX1_CKIP          133  /* Cisco Compatible eXtensions v1 */
483 #define TAG_CISCO_CCX2               136  /* Cisco Compatible eXtensions v2 */
484 #define TAG_PXU                      137
485 #define TAG_PXUC                     138
486 #define TAG_AUTH_MESH_PEERING_EXCH   139
487 #define TAG_MIC                      140
488 #define TAG_DESTINATION_URI          141
489 #define TAG_U_APSD_COEX              142
490 #define TAG_WAKEUP_SCHEDULE_AD       143  /* IEEE Std 802.11ad */
491 #define TAG_EXTENDED_SCHEDULE        144  /* IEEE Std 802.11ad */
492 #define TAG_STA_AVAILABILITY         145  /* IEEE Std 802.11ad */
493 #define TAG_DMG_TSPEC                146  /* IEEE Std 802.11ad */
494 #define TAG_NEXT_DMG_ATI             147  /* IEEE Std 802.11ad */
495 #define TAG_DMG_CAPABILITIES         148  /* IEEE Std 802.11ad */
496 #define TAG_CISCO_CCX3               149  /* Cisco Compatible eXtensions v3 */
497 #define TAG_CISCO_VENDOR_SPECIFIC    150  /* Cisco Compatible eXtensions */
498 #define TAG_DMG_OPERATION            151  /* IEEE Std 802.11ad */
499 #define TAG_DMG_BSS_PARAMETER_CHANGE 152  /* IEEE Std 802.11ad */
500 #define TAG_DMG_BEAM_REFINEMENT      153  /* IEEE Std 802.11ad */
501 #define TAG_CHANNEL_MEASURMENT_FB    154  /* IEEE Std 802.11ad */
502 #define TAG_AWAKE_WINDOW             157  /* IEEE Std 802.11ad */
503 #define TAG_MULTI_BAND               158  /* IEEE Std 802.11ad */
504 #define TAG_ADDBA_EXT                159  /* IEEE Std 802.11ad */
505 #define TAG_NEXTPCP_LIST             160  /* IEEE Std 802.11ad */
506 #define TAG_PCP_HANDOVER             161  /* IEEE Std 802.11ad */
507 #define TAG_DMG_LINK_MARGIN          162  /* IEEE Std 802.11ad */
508 #define TAG_SWITCHING_STREAM         163  /* IEEE Std 802.11ad */
509 #define TAG_SESSION_TRANSMISSION     164  /* IEEE Std 802.11ad */
510 #define TAG_DYN_TONE_PAIR_REP        165  /* IEEE Std 802.11ad */
511 #define TAG_CLUSTER_REP              166  /* IEEE Std 802.11ad */
512 #define TAG_RELAY_CAPABILITIES       167  /* IEEE Std 802.11ad */
513 #define TAG_RELAY_TRANSFER_PARAM     168  /* IEEE Std 802.11ad */
514 #define TAG_BEAMLINK_MAINTENANCE     169  /* IEEE Std 802.11ad */
515 #define TAG_MULTIPLE_MAC_SUBLAYERS   170  /* IEEE Std 802.11ad */
516 #define TAG_U_PID                    171  /* IEEE Std 802.11ad */
517 #define TAG_DMG_LINK_ADAPTION_ACK    172  /* IEEE Std 802.11ad */
518 #define TAG_SYMBOL_PROPRIETARY       173
519 #define TAG_MCCAOP_ADVERTISEMENT_OV  174
520 #define TAG_QUIET_PERIOD_REQ         175  /* IEEE Std 802.11ad */
521 #define TAG_QUIET_PERIOD_RES         177  /* IEEE Std 802.11ad */
522 #define TAG_ECAPC_POLICY             182  /* IEEE Std 802.11ad */
523 #define TAG_CLUSTER_TIME_OFFSET      183  /* IEEE Std 802.11ad */
524 #define TAG_INTRA_ACCESS_CAT_PRIO    184
525 #define TAG_SCS_DESCRIPTOR           185  /* IEEE Std 802.11   */
526 #define TAG_ANTENNA_SECTOR_ID        190  /* IEEE Std 802.11ad */
527 #define TAG_VHT_CAPABILITY           191  /* IEEE Std 802.11ac/D3.1 */
528 #define TAG_VHT_OPERATION            192  /* IEEE Std 802.11ac/D3.1 */
529 #define TAG_EXT_BSS_LOAD             193  /* IEEE Std 802.11ac */
530 #define TAG_WIDE_BW_CHANNEL_SWITCH   194  /* IEEE Std 802.11ac */
531 #define TAG_TX_PWR_ENVELOPE          195  /* IEEE Std 802.11-2020 */
532 #define TAG_CHANNEL_SWITCH_WRAPPER   196  /* IEEE Std 802.11ac */
533 #define TAG_OPERATING_MODE_NOTIFICATION 199  /* IEEE Std 802.11ac */
534 #define TAG_REDUCED_NEIGHBOR_REPORT  201
535 #define TAG_FINE_TIME_MEASUREMENT_PARAM 206  /* IEEE Std 802.11-REVmd/D2.0 */
536 #define TAG_S1G_OPEN_LOOP_LINK_MARGIN_INDEX 207 /* IEEE Std 802.11ah */
537 #define TAG_RPS                      208  /* IEEE Stf 802.11ah */
538 #define TAG_PAGE_SLICE               209  /* IEEE Stf 802.11ah */
539 #define TAG_AID_REQUEST              210  /* IEEE Stf 802.11ah */
540 #define TAG_AID_RESPONSE             211  /* IEEE Stf 802.11ah */
541 #define TAG_S1G_SECTOR_OPERATION     212  /* IEEE Stf 802.11ah */
542 #define TAG_S1G_BEACON_COMPATIBILITY 213  /* IEEE Stf 802.11ah */
543 #define TAG_SHORT_BEACON_INTERVAL    214  /* IEEE Stf 802.11ah */
544 #define TAG_CHANGE_SEQUENCE          215  /* IEEE Stf 802.11ah */
545 #define TAG_TWT                      216  /* IEEE Std 802.11ah */
546 #define TAG_S1G_CAPABILITIES         217  /* IEEE Stf 802.11ah */
547 #define TAG_SUBCHANNEL_SELECTIVE_TRANSMISSION 220  /* IEEE Stf 802.11ah */
548 #define TAG_VENDOR_SPECIFIC_IE       221
549 #define TAG_AUTHENTICATION_CONTROL   222  /* IEEE Stf 802.11ah */
550 #define TAG_TSF_TIMER_ACCURACY       223  /* IEEE Stf 802.11ah */
551 #define TAG_S1G_RELAY                224  /* IEEE Stf 802.11ah */
552 #define TAG_REACHABLE_ADDRESS        225  /* IEEE Stf 802.11ah */
553 #define TAG_S1G_RELAY_DISCOVERY      226  /* IEEE Stf 802.11ah */
554 #define TAG_AID_ANNOUNCEMENT         228  /* IEEE Stf 802.11ah */
555 #define TAG_PV1_PROBE_RESPONSE_OPTION 229  /* IEEE Stf 802.11ah */
556 #define TAG_EL_OPERATION             230  /* IEEE Stf 802.11ah */
557 #define TAG_SECTORIZED_GROUP_ID_LIST 231  /* IEEE Stf 802.11ah */
558 #define TAG_S1G_OPERATION            232  /* IEEE Stf 802.11ah */
559 #define TAG_HEADER_COMPRESSION       233  /* IEEE Stf 802.11ah */
560 #define TAG_SST_OPERATION            234  /* IEEE Stf 802.11ah */
561 #define TAG_MAD                      235  /* IEEE Stf 802.11ah */
562 #define TAG_S1G_RELAY_ACTIVATION     236  /* IEEE Stf 802.11ah */
563 #define TAG_CAG_NUMBER               237  /* IEEE Std 802.11ai */
564 #define TAG_AP_CSN                   239  /* IEEE Std 802.11ai */
565 #define TAG_FILS_INDICATION          240  /* IEEE Std 802.11ai */
566 #define TAG_DIFF_INITIAL_LINK_SETUP  241  /* IEEE Std 802.11ai */
567 #define TAG_FRAGMENT                 242  /* IEEE Std 802.11ai */
568 #define TAG_RSNX                     244
569 #define TAG_ELEMENT_ID_EXTENSION     255  /* IEEE Std 802.11ai */
570 
571 extern const value_string ie_tag_num_vals[];
572 
573 guint
574 add_ff_action(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset,
575               association_sanity_check_t *association_sanity_check );
576 
577 guint
578 add_ff_action_public_fields(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo,
579                             int offset, guint8 code);
580 
581 /*
582  * Editor modelines
583  *
584  * Local Variables:
585  * c-basic-offset: 2
586  * tab-width: 8
587  * indent-tabs-mode: nil
588  * End:
589  *
590  * ex: set shiftwidth=2 tabstop=8 expandtab:
591  * :indentSize=2:tabSize=8:noTabs=true:
592  */
593