diff --git a/src/ie.c b/src/ie.c index d6fc4955..070cbe85 100644 --- a/src/ie.c +++ b/src/ie.c @@ -422,3 +422,19 @@ done: return 0; } + +int ie_parse_rsne_from_data(const uint8_t *data, size_t len, + struct ie_rsn_info *info) +{ + struct ie_tlv_iter iter; + + ie_tlv_iter_init(&iter, data, len); + + if (!ie_tlv_iter_next(&iter)) + return -EMSGSIZE; + + if (ie_tlv_iter_get_tag(&iter) != IE_TYPE_RSN) + return -EPROTOTYPE; + + return ie_parse_rsne(&iter, info); +} diff --git a/src/ie.h b/src/ie.h index dfac6a3a..41c87f77 100644 --- a/src/ie.h +++ b/src/ie.h @@ -239,3 +239,5 @@ void ie_tlv_builder_finalize(struct ie_tlv_builder *builder, unsigned int *out_len); int ie_parse_rsne(struct ie_tlv_iter *iter, struct ie_rsn_info *info); +int ie_parse_rsne_from_data(const uint8_t *data, size_t len, + struct ie_rsn_info *info);