diff options
author | Marc <foxtrot@malloc.me> | 2022-01-09 16:26:03 +0000 |
---|---|---|
committer | Marc <foxtrot@malloc.me> | 2022-01-09 16:26:03 +0000 |
commit | 59a7b25170a25001472f45542e2ef29fff26d052 (patch) | |
tree | d264928822a991383aa62fe619d39a641721eb44 /src | |
parent | cd586b3525e8cc19432e1e70c2d623cdb14a8f7b (diff) | |
download | libwifi-59a7b25170a25001472f45542e2ef29fff26d052.tar.gz libwifi-59a7b25170a25001472f45542e2ef29fff26d052.tar.bz2 libwifi-59a7b25170a25001472f45542e2ef29fff26d052.zip |
core: Add a function to get the tag name via tag number.
Not very pretty, but it's also not so bad. Alternative is a huge array or a super ugly macro hack.
Diffstat (limited to 'src')
-rw-r--r-- | src/libwifi/core/frame/tag.c | 343 | ||||
-rw-r--r-- | src/libwifi/core/frame/tag.h | 8 |
2 files changed, 351 insertions, 0 deletions
diff --git a/src/libwifi/core/frame/tag.c b/src/libwifi/core/frame/tag.c index 1d43c55..4180f11 100644 --- a/src/libwifi/core/frame/tag.c +++ b/src/libwifi/core/frame/tag.c | |||
@@ -145,3 +145,346 @@ int libwifi_check_tag(struct libwifi_tagged_parameters *tags, int tag_number) { | |||
145 | 145 | ||
146 | return tag_count; | 146 | return tag_count; |
147 | } | 147 | } |
148 | |||
149 | char* libwifi_get_tag_name(int tag_number) { | ||
150 | switch (tag_number) { | ||
151 | case TAG_SSID: | ||
152 | return "TAG_SSID"; | ||
153 | case TAG_SUPP_RATES: | ||
154 | return "TAG_SUPP_RATES"; | ||
155 | case TAG_DS_PARAMETER: | ||
156 | return "TAG_DS_PARAMETER"; | ||
157 | case TAG_CF_PARAMETER: | ||
158 | return "TAG_CF_PARAMETER"; | ||
159 | case TAG_TIM: | ||
160 | return "TAG_TIM"; | ||
161 | case TAG_BSS_PARAMETERS: | ||
162 | return "TAG_BSS_PARAMETERS"; | ||
163 | case TAG_COUNTRY: | ||
164 | return "TAG_COUNTRY"; | ||
165 | case TAG_REQUEST: | ||
166 | return "TAG_REQUEST"; | ||
167 | case TAG_BSS_LOAD: | ||
168 | return "TAG_BSS_LOAD"; | ||
169 | case TAG_EDCA_PARAMETERS: | ||
170 | return "TAG_EDCA_PARAMETERS"; | ||
171 | case TAG_TSPEC: | ||
172 | return "TAG_TSPEC"; | ||
173 | case TAG_TCLAS: | ||
174 | return "TAG_TCLAS"; | ||
175 | case TAG_SCHEDULE: | ||
176 | return "TAG_SCHEDULE"; | ||
177 | case TAG_CHALLENGE_TEXT: | ||
178 | return "TAG_CHALLENGE_TEXT"; | ||
179 | case TAG_POWER_CONSTRAINT: | ||
180 | return "TAG_POWER_CONSTRAINT"; | ||
181 | case TAG_POWER_CAPABILITY: | ||
182 | return "TAG_POWER_CAPABILITY"; | ||
183 | case TAG_TPC_REQUEST: | ||
184 | return "TAG_TPC_REQUEST"; | ||
185 | case TAG_TPC_REPORT: | ||
186 | return "TAG_TPC_REPORT"; | ||
187 | case TAG_SUPPORTED_CHANNELS: | ||
188 | return "TAG_SUPPORTED_CHANNELS"; | ||
189 | case TAG_CHANNEL_SWITCH_ANNOUNCEMENT: | ||
190 | return "TAG_CHANNEL_SWITCH_ANNOUNCEMENT"; | ||
191 | case TAG_MEASUREMENT_REQUEST: | ||
192 | return "TAG_MEASUREMENT_REQUEST"; | ||
193 | case TAG_MEASUREMENT_REPORT: | ||
194 | return "TAG_MEASUREMENT_REPORT"; | ||
195 | case TAG_QUIET: | ||
196 | return "TAG_QUIET"; | ||
197 | case TAG_IBSS_DFS: | ||
198 | return "TAG_IBSS_DFS"; | ||
199 | case TAG_ERP: | ||
200 | return "TAG_ERP"; | ||
201 | case TAG_TS_DELAY: | ||
202 | return "TAG_TS_DELAY"; | ||
203 | case TAG_TCLAS_PROCESSING: | ||
204 | return "TAG_TCLAS_PROCESSING"; | ||
205 | case TAG_HT_CAPABILITIES: | ||
206 | return "TAG_HT_CAPABILITIES"; | ||
207 | case TAG_QOS_CAPABILITY: | ||
208 | return "TAG_QOS_CAPABILITY"; | ||
209 | case TAG_RSN: | ||
210 | return "TAG_RSN"; | ||
211 | case TAG_EXTENDED_SUPPORTED_RATES: | ||
212 | return "TAG_EXTENDED_SUPPORTED_RATES"; | ||
213 | case TAG_AP_CHANNEL_REPORT: | ||
214 | return "TAG_AP_CHANNEL_REPORT"; | ||
215 | case TAG_NEIGHBOR_REPORT: | ||
216 | return "TAG_NEIGHBOR_REPORT"; | ||
217 | case TAG_RCPI: | ||
218 | return "TAG_RCPI"; | ||
219 | case TAG_MOBILITY_DOMAIN: | ||
220 | return "TAG_MOBILITY_DOMAIN"; | ||
221 | case TAG_FAST_BSS_TRANSITION: | ||
222 | return "TAG_FAST_BSS_TRANSITION"; | ||
223 | case TAG_TIMEOUT_INTERVAL: | ||
224 | return "TAG_TIMEOUT_INTERVAL"; | ||
225 | case TAG_RIC_DATA: | ||
226 | return "TAG_RIC_DATA"; | ||
227 | case TAG_DSE_REGISTERED_LOCATION: | ||
228 | return "TAG_DSE_REGISTERED_LOCATION"; | ||
229 | case TAG_SUPPORTED_OPERATING_CLASSES: | ||
230 | return "TAG_SUPPORTED_OPERATING_CLASSES"; | ||
231 | case TAG_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT: | ||
232 | return "TAG_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT"; | ||
233 | case TAG_HT_OPERATION: | ||
234 | return "TAG_HT_OPERATION"; | ||
235 | case TAG_SECONDARY_CHANNEL_OFFSET: | ||
236 | return "TAG_SECONDARY_CHANNEL_OFFSET"; | ||
237 | case TAG_BSS_AVERAGE_ACCESS_DELAY: | ||
238 | return "TAG_BSS_AVERAGE_ACCESS_DELAY"; | ||
239 | case TAG_ANTENNA: | ||
240 | return "TAG_ANTENNA"; | ||
241 | case TAG_RSNI: | ||
242 | return "TAG_RSNI"; | ||
243 | case TAG_MEASUREMENT_PILOT_TRANSMISSION: | ||
244 | return "TAG_MEASUREMENT_PILOT_TRANSMISSION"; | ||
245 | case TAG_BSS_AVAILABLE_ADMISSION_CAPACITY: | ||
246 | return "TAG_BSS_AVAILABLE_ADMISSION_CAPACITY"; | ||
247 | case TAG_BSS_AC_ACCESS_DELAY: | ||
248 | return "TAG_BSS_AC_ACCESS_DELAY"; | ||
249 | case TAG_TIME_ADVERTISEMENT: | ||
250 | return "TAG_TIME_ADVERTISEMENT"; | ||
251 | case TAG_RM_ENABLED_CAPABILITIES: | ||
252 | return "TAG_RM_ENABLED_CAPABILITIES"; | ||
253 | case TAG_MULTIPLE_BSSID: | ||
254 | return "TAG_MULTIPLE_BSSID"; | ||
255 | case TAG_BSS_COEXISTENCE: | ||
256 | return "TAG_BSS_COEXISTENCE"; | ||
257 | case TAG_BSS_INTOLERANT_CHANNEL_REPORT: | ||
258 | return "TAG_BSS_INTOLERANT_CHANNEL_REPORT"; | ||
259 | case TAG_OVERLAPPING_BSS_PARAMETERS: | ||
260 | return "TAG_OVERLAPPING_BSS_PARAMETERS"; | ||
261 | case TAG_RIC_DESCRIPTOR: | ||
262 | return "TAG_RIC_DESCRIPTOR"; | ||
263 | case TAG_MANAGEMENT_MIC: | ||
264 | return "TAG_MANAGEMENT_MIC"; | ||
265 | case TAG_EVENT_REQUEST: | ||
266 | return "TAG_EVENT_REQUEST"; | ||
267 | case TAG_EVENT_REPORT: | ||
268 | return "TAG_EVENT_REPORT"; | ||
269 | case TAG_DIAGNOSTIC_REQUEST: | ||
270 | return "TAG_DIAGNOSTIC_REQUEST"; | ||
271 | case TAG_DIAGNOSTIC_REPORT: | ||
272 | return "TAG_DIAGNOSTIC_REPORT"; | ||
273 | case TAG_LOCATION_PARAMTERS: | ||
274 | return "TAG_LOCATION_PARAMTERS"; | ||
275 | case TAG_NONTRANSMITTED_BSSID_CAPABILITY: | ||
276 | return "TAG_NONTRANSMITTED_BSSID_CAPABILITY"; | ||
277 | case TAG_SSID_LIST: | ||
278 | return "TAG_SSID_LIST"; | ||
279 | case TAG_MULTIPLE_BSSID_INDEX: | ||
280 | return "TAG_MULTIPLE_BSSID_INDEX"; | ||
281 | case TAG_FMS_DESCRIPTOR: | ||
282 | return "TAG_FMS_DESCRIPTOR"; | ||
283 | case TAG_FMS_REQUEST: | ||
284 | return "TAG_FMS_REQUEST"; | ||
285 | case TAG_FMS_RESPONSE: | ||
286 | return "TAG_FMS_RESPONSE"; | ||
287 | case TAG_QOS_TRAFFIC_CAPABILITY: | ||
288 | return "TAG_QOS_TRAFFIC_CAPABILITY"; | ||
289 | case TAG_BSS_MAX_IDLE_PERIOD: | ||
290 | return "TAG_BSS_MAX_IDLE_PERIOD"; | ||
291 | case TAG_TFS_REQUEST: | ||
292 | return "TAG_TFS_REQUEST"; | ||
293 | case TAG_TFS_RESPONSE: | ||
294 | return "TAG_TFS_RESPONSE"; | ||
295 | case TAG_WNM_SLEEP_MODE: | ||
296 | return "TAG_WNM_SLEEP_MODE"; | ||
297 | case TAG_TIM_BROADCAST_REQUEST: | ||
298 | return "TAG_TIM_BROADCAST_REQUEST"; | ||
299 | case TAG_TIM_BROADCAST_RESPONSE: | ||
300 | return "TAG_TIM_BROADCAST_RESPONSE"; | ||
301 | case TAG_COLLOCATED_INTERFERENCE_REPORT: | ||
302 | return "TAG_COLLOCATED_INTERFERENCE_REPORT"; | ||
303 | case TAG_CHANNEL_USAGE: | ||
304 | return "TAG_CHANNEL_USAGE"; | ||
305 | case TAG_TIME_ZONE: | ||
306 | return "TAG_TIME_ZONE"; | ||
307 | case TAG_DMS_REQUEST: | ||
308 | return "TAG_DMS_REQUEST"; | ||
309 | case TAG_DMS_RESPONSE: | ||
310 | return "TAG_DMS_RESPONSE"; | ||
311 | case TAG_LINK_IDENTIFIER: | ||
312 | return "TAG_LINK_IDENTIFIER"; | ||
313 | case TAG_WAKEUP_SCHEDULE: | ||
314 | return "TAG_WAKEUP_SCHEDULE"; | ||
315 | case TAG_CHANNEL_SWITCH_TIMING: | ||
316 | return "TAG_CHANNEL_SWITCH_TIMING"; | ||
317 | case TAG_PTI_CONTROL: | ||
318 | return "TAG_PTI_CONTROL"; | ||
319 | case TAG_TPU_BUFFER_STATUS: | ||
320 | return "TAG_TPU_BUFFER_STATUS"; | ||
321 | case TAG_INTERWORKING: | ||
322 | return "TAG_INTERWORKING"; | ||
323 | case TAG_ADVERTISEMENT_PROTOCOL: | ||
324 | return "TAG_ADVERTISEMENT_PROTOCOL"; | ||
325 | case TAG_EXPEDITED_BANDWIDTH_REQUEST: | ||
326 | return "TAG_EXPEDITED_BANDWIDTH_REQUEST"; | ||
327 | case TAG_QOS_MAP: | ||
328 | return "TAG_QOS_MAP"; | ||
329 | case TAG_ROAMING_CONSORTIUM: | ||
330 | return "TAG_ROAMING_CONSORTIUM"; | ||
331 | case TAG_EMERGENCY_ALERT_IDENTIFIER: | ||
332 | return "TAG_EMERGENCY_ALERT_IDENTIFIER"; | ||
333 | case TAG_MESH_CONFIGURATION: | ||
334 | return "TAG_MESH_CONFIGURATION"; | ||
335 | case TAG_MESH_ID: | ||
336 | return "TAG_MESH_ID"; | ||
337 | case TAG_MESH_LINK_METRIC_REPORT: | ||
338 | return "TAG_MESH_LINK_METRIC_REPORT"; | ||
339 | case TAG_CONGESTION_NOTIFICATION: | ||
340 | return "TAG_CONGESTION_NOTIFICATION"; | ||
341 | case TAG_MESH_PEERING_MANAGEMENT: | ||
342 | return "TAG_MESH_PEERING_MANAGEMENT"; | ||
343 | case TAG_MESH_CHANNEL_SWITCH_PARAMETERS: | ||
344 | return "TAG_MESH_CHANNEL_SWITCH_PARAMETERS"; | ||
345 | case TAG_MESH_AWAKE_WINDOW: | ||
346 | return "TAG_MESH_AWAKE_WINDOW"; | ||
347 | case TAG_BEACON_TIMING: | ||
348 | return "TAG_BEACON_TIMING"; | ||
349 | case TAG_MCCAOP_SETUP_REQUEST: | ||
350 | return "TAG_MCCAOP_SETUP_REQUEST"; | ||
351 | case TAG_MCCAOP_SETUP_REPLY: | ||
352 | return "TAG_MCCAOP_SETUP_REPLY"; | ||
353 | case TAG_MCCAOP_ADVERTISEMENT: | ||
354 | return "TAG_MCCAOP_ADVERTISEMENT"; | ||
355 | case TAG_MCCAOP_TEARDOWN: | ||
356 | return "TAG_MCCAOP_TEARDOWN"; | ||
357 | case TAG_GANN: | ||
358 | return "TAG_GANN"; | ||
359 | case TAG_RANN: | ||
360 | return "TAG_RANN"; | ||
361 | case TAG_EXTENDED_CAPABILITIES: | ||
362 | return "TAG_EXTENDED_CAPABILITIES"; | ||
363 | case TAG_PREQ: | ||
364 | return "TAG_PREQ"; | ||
365 | case TAG_PREP: | ||
366 | return "TAG_PREP"; | ||
367 | case TAG_PERR: | ||
368 | return "TAG_PERR"; | ||
369 | case TAG_PXU: | ||
370 | return "TAG_PXU"; | ||
371 | case TAG_PXUC: | ||
372 | return "TAG_PXUC"; | ||
373 | case TAG_AUTHENTICATED_MESH_PEERING_EXCHANGE: | ||
374 | return "TAG_AUTHENTICATED_MESH_PEERING_EXCHANGE"; | ||
375 | case TAG_MIC: | ||
376 | return "TAG_MIC"; | ||
377 | case TAG_DESTINATION_URI: | ||
378 | return "TAG_DESTINATION_URI"; | ||
379 | case TAG_U_APSD_COEXISTENCE: | ||
380 | return "TAG_U_APSD_COEXISTENCE"; | ||
381 | case TAG_DMG_WAKEUP_SCHEDULE: | ||
382 | return "TAG_DMG_WAKEUP_SCHEDULE"; | ||
383 | case TAG_EXTENDED_SCHEDULE: | ||
384 | return "TAG_EXTENDED_SCHEDULE"; | ||
385 | case TAG_STA_AVAILABILITY: | ||
386 | return "TAG_STA_AVAILABILITY"; | ||
387 | case TAG_DMG_TSPEC: | ||
388 | return "TAG_DMG_TSPEC"; | ||
389 | case TAG_NEXT_DMG_ATI: | ||
390 | return "TAG_NEXT_DMG_ATI"; | ||
391 | case TAG_DMG_OPERATION: | ||
392 | return "TAG_DMG_OPERATION"; | ||
393 | case TAG_DMG_BSS_PARAMETER_CHANGE: | ||
394 | return "TAG_DMG_BSS_PARAMETER_CHANGE"; | ||
395 | case TAG_DMG_BEAM_REFINEMENT: | ||
396 | return "TAG_DMG_BEAM_REFINEMENT"; | ||
397 | case TAG_CHANNEL_MEASUREMENT_FEEDBACK: | ||
398 | return "TAG_CHANNEL_MEASUREMENT_FEEDBACK"; | ||
399 | case TAG_AWAKE_WINDOW: | ||
400 | return "TAG_AWAKE_WINDOW"; | ||
401 | case TAG_MULTI_BAND: | ||
402 | return "TAG_MULTI_BAND"; | ||
403 | case TAG_ADDBA_EXTENSION: | ||
404 | return "TAG_ADDBA_EXTENSION"; | ||
405 | case TAG_NEXTPCP_LIST: | ||
406 | return "TAG_NEXTPCP_LIST"; | ||
407 | case TAG_PCP_HANDOVER: | ||
408 | return "TAG_PCP_HANDOVER"; | ||
409 | case TAG_DMG_LINK_MARGIN: | ||
410 | return "TAG_DMG_LINK_MARGIN"; | ||
411 | case TAG_SWITCHING_STREAM: | ||
412 | return "TAG_SWITCHING_STREAM"; | ||
413 | case TAG_SESSION_TRANSITION: | ||
414 | return "TAG_SESSION_TRANSITION"; | ||
415 | case TAG_DYNAMIC_TONE_PAIRING_REPORT: | ||
416 | return "TAG_DYNAMIC_TONE_PAIRING_REPORT"; | ||
417 | case TAG_CLUSTER_REPORT: | ||
418 | return "TAG_CLUSTER_REPORT"; | ||
419 | case TAG_RELAY_CAPABILITIES: | ||
420 | return "TAG_RELAY_CAPABILITIES"; | ||
421 | case TAG_RELAY_TRANSFER_PARAMETER_SET: | ||
422 | return "TAG_RELAY_TRANSFER_PARAMETER_SET"; | ||
423 | case TAG_BEAMLINK_MAINTENANCE: | ||
424 | return "TAG_BEAMLINK_MAINTENANCE"; | ||
425 | case TAG_MULTIPLE_MAC_SUBLAYERS: | ||
426 | return "TAG_MULTIPLE_MAC_SUBLAYERS"; | ||
427 | case TAG_U_PID: | ||
428 | return "TAG_U_PID"; | ||
429 | case TAG_DMG_LINK_ADAPTATION_ACKNOWLEDGEMENT: | ||
430 | return "TAG_DMG_LINK_ADAPTATION_ACKNOWLEDGEMENT"; | ||
431 | case TAG_MCCAOP_ADVERTISEMENT_OVERVIEW: | ||
432 | return "TAG_MCCAOP_ADVERTISEMENT_OVERVIEW"; | ||
433 | case TAG_QUIET_PERIOD_REQUEST: | ||
434 | return "TAG_QUIET_PERIOD_REQUEST"; | ||
435 | case TAG_QUIET_PERIOD_RESPONSE: | ||
436 | return "TAG_QUIET_PERIOD_RESPONSE"; | ||
437 | case TAG_QMF_POLICY: | ||
438 | return "TAG_QMF_POLICY"; | ||
439 | case TAG_ECAPC_POLICY: | ||
440 | return "TAG_ECAPC_POLICY"; | ||
441 | case TAG_CLUSTER_TIME_OFFSET: | ||
442 | return "TAG_CLUSTER_TIME_OFFSET"; | ||
443 | case TAG_INTRA_ACCESS_CATEGORY_PRIORITY: | ||
444 | return "TAG_INTRA_ACCESS_CATEGORY_PRIORITY"; | ||
445 | case TAG_SCS_DESCRIPTOR: | ||
446 | return "TAG_SCS_DESCRIPTOR"; | ||
447 | case TAG_QLOAD_REPORT: | ||
448 | return "TAG_QLOAD_REPORT"; | ||
449 | case TAG_HCCA_TXOP_UPDATE_COUNT: | ||
450 | return "TAG_HCCA_TXOP_UPDATE_COUNT"; | ||
451 | case TAG_HIGHER_LAYER_STREAM_ID: | ||
452 | return "TAG_HIGHER_LAYER_STREAM_ID"; | ||
453 | case TAG_GCR_GROUP_ADDRESS: | ||
454 | return "TAG_GCR_GROUP_ADDRESS"; | ||
455 | case TAG_ANTENNA_SECTOR_ID_PATTERN: | ||
456 | return "TAG_ANTENNA_SECTOR_ID_PATTERN"; | ||
457 | case TAG_VHT_CAPABILITIES: | ||
458 | return "TAG_VHT_CAPABILITIES"; | ||
459 | case TAG_VHT_OPERATION: | ||
460 | return "TAG_VHT_OPERATION"; | ||
461 | case TAG_EXTENDED_BSS_LOAD: | ||
462 | return "TAG_EXTENDED_BSS_LOAD"; | ||
463 | case TAG_WIDE_BANDWIDTH_CHANNEL_SWITCH: | ||
464 | return "TAG_WIDE_BANDWIDTH_CHANNEL_SWITCH"; | ||
465 | case TAG_TRANSMIT_POWER_ENVELOPE: | ||
466 | return "TAG_TRANSMIT_POWER_ENVELOPE"; | ||
467 | case TAG_CHANNEL_SWITCH_WRAPPER: | ||
468 | return "TAG_CHANNEL_SWITCH_WRAPPER"; | ||
469 | case TAG_AID: | ||
470 | return "TAG_AID"; | ||
471 | case TAG_QUIET_CHANNEL: | ||
472 | return "TAG_QUIET_CHANNEL"; | ||
473 | case TAG_UPSIM: | ||
474 | return "TAG_UPSIM"; | ||
475 | case TAG_REDUCED_NEIGHBOR_REPORT: | ||
476 | return "TAG_REDUCED_NEIGHBOR_REPORT"; | ||
477 | case TAG_TVHT_OPERATION: | ||
478 | return "TAG_TVHT_OPERATION"; | ||
479 | case TAG_DEVICE_LOCATION: | ||
480 | return "TAG_DEVICE_LOCATION"; | ||
481 | case TAG_WHITE_SPACE_MAP: | ||
482 | return "TAG_WHITE_SPACE_MAP"; | ||
483 | case TAG_FINE_TIMING_MEASUREMENT_PARAMETERS: | ||
484 | return "TAG_FINE_TIMING_MEASUREMENT_PARAMETERS"; | ||
485 | case TAG_VENDOR_SPECIFIC: | ||
486 | return "TAG_VENDOR_SPECIFIC"; | ||
487 | default: | ||
488 | return "Unknown Tag"; | ||
489 | } | ||
490 | } | ||
diff --git a/src/libwifi/core/frame/tag.h b/src/libwifi/core/frame/tag.h index 030c0b9..5a84cb3 100644 --- a/src/libwifi/core/frame/tag.h +++ b/src/libwifi/core/frame/tag.h | |||
@@ -312,4 +312,12 @@ int libwifi_quick_add_tag(struct libwifi_tagged_parameters *tagged_parameters, i | |||
312 | */ | 312 | */ |
313 | int libwifi_check_tag(struct libwifi_tagged_parameters *tags, int tag_number); | 313 | int libwifi_check_tag(struct libwifi_tagged_parameters *tags, int tag_number); |
314 | 314 | ||
315 | /** | ||
316 | * Get the name of a tagged parameter via a supplied tag number. | ||
317 | * | ||
318 | * @param tag_number The number of the tagged parameter to name | ||
319 | * @returns The name of the tag | ||
320 | */ | ||
321 | char* libwifi_get_tag_name(int tag_number); | ||
322 | |||
315 | #endif /* LIBWIFI_CORE_TAG_H */ | 323 | #endif /* LIBWIFI_CORE_TAG_H */ |