From 20898787fc8eb98cac50ddeb68a6a44f6769a064 Mon Sep 17 00:00:00 2001 From: Marc Date: Sat, 10 Sep 2022 20:27:14 +0100 Subject: core/parse: Add skeleton for element extension parsing --- src/libwifi/core/frame/tag.h | 7 +++++++ src/libwifi/parse/management/common.c | 11 +++++++++++ 2 files changed, 18 insertions(+) (limited to 'src') diff --git a/src/libwifi/core/frame/tag.h b/src/libwifi/core/frame/tag.h index e435061..b914c77 100644 --- a/src/libwifi/core/frame/tag.h +++ b/src/libwifi/core/frame/tag.h @@ -244,6 +244,13 @@ struct libwifi_tag_vendor_header { int8_t type; } __attribute__((packed)); +/* + * Element extension tagged parameters have a tag number + */ +struct libwifi_tag_extension_header { + uint8_t tag_num; +} __attribute__((packed)); + /** * Add a tagged parameter to a list of frame tagged parameters. * diff --git a/src/libwifi/parse/management/common.c b/src/libwifi/parse/management/common.c index 5e4fbf6..1faaf81 100644 --- a/src/libwifi/parse/management/common.c +++ b/src/libwifi/parse/management/common.c @@ -142,6 +142,7 @@ int libwifi_bss_handle_msft_tag(struct libwifi_bss *bss, const unsigned char *ms */ int libwifi_bss_tag_parser(struct libwifi_bss *bss, struct libwifi_tag_iterator *it) { struct libwifi_tag_vendor_header *vendor_header = NULL; + struct libwifi_tag_extension_header *extension_header = NULL; do { switch (it->tag_header->tag_num) { @@ -166,6 +167,16 @@ int libwifi_bss_tag_parser(struct libwifi_bss *bss, struct libwifi_tag_iterator return -EINVAL; } } + break; + case TAG_ELEMENT_EXTENSION: + extension_header = (struct libwifi_tag_extension_header *) it->tag_data; + + switch (extension_header->tag_num) { + default: + /* Not Implemented */ + break; + } + break; } } while (libwifi_tag_iterator_next(it) != -1); -- cgit 1.4.1