about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/libwifi/core/frame/tag.c16
-rw-r--r--src/libwifi/core/frame/tag.h9
2 files changed, 25 insertions, 0 deletions
diff --git a/src/libwifi/core/frame/tag.c b/src/libwifi/core/frame/tag.c index 9dec547..1d43c55 100644 --- a/src/libwifi/core/frame/tag.c +++ b/src/libwifi/core/frame/tag.c
@@ -129,3 +129,19 @@ int libwifi_quick_add_tag(struct libwifi_tagged_parameters *tags, int tag_number
129 129
130 return 0; 130 return 0;
131} 131}
132
133int libwifi_check_tag(struct libwifi_tagged_parameters *tags, int tag_number) {
134 int tag_count = 0;
135 struct libwifi_tag_iterator it = {0};
136 if (libwifi_tag_iterator_init(&it, tags->parameters, tags->length) != 0) {
137 return -EINVAL;
138 }
139
140 do {
141 if (it.tag_header->tag_num == tag_number) {
142 tag_count++;
143 }
144 } while (libwifi_tag_iterator_next(&it) != -1);
145
146 return tag_count;
147}
diff --git a/src/libwifi/core/frame/tag.h b/src/libwifi/core/frame/tag.h index 02928fe..030c0b9 100644 --- a/src/libwifi/core/frame/tag.h +++ b/src/libwifi/core/frame/tag.h
@@ -303,4 +303,13 @@ size_t libwifi_dump_tag(struct libwifi_tagged_parameter *tag, unsigned char *buf
303int libwifi_quick_add_tag(struct libwifi_tagged_parameters *tagged_parameters, int tag_number, 303int libwifi_quick_add_tag(struct libwifi_tagged_parameters *tagged_parameters, int tag_number,
304 const unsigned char *tag_data, size_t tag_length); 304 const unsigned char *tag_data, size_t tag_length);
305 305
306/**
307 * Check if a tagged parameter is present via tag number.
308 *
309 * @param tags A tagged parameters list
310 * @param tag_number The number of the tagged parameter to find
311 * @returns The number of times the supplied tag_number was found in tags
312 */
313int libwifi_check_tag(struct libwifi_tagged_parameters *tags, int tag_number);
314
306#endif /* LIBWIFI_CORE_TAG_H */ 315#endif /* LIBWIFI_CORE_TAG_H */