@@ -2771,3 +2771,24 @@ const u8 * get_ml_ie(const u8 *ies, size_t len, u8 type)
return NULL;
}
+
+const u8 * get_basic_mle_mld_addr(const u8 *buf, size_t len)
+{
+#define BASIC_ML_IE_FIXED_LENGTH \
+ (2 + /* Control field */ \
+ 1 + /* Common info length field */ \
+ 6) /* MLD mac address field */
+ if (len < BASIC_ML_IE_FIXED_LENGTH)
+ return NULL;
+#undef BASIC_ML_IE_FIXED_LENGTH
+
+ if ((buf[0] & MULTI_LINK_CONTROL_TYPE_MASK) !=
+ MULTI_LINK_CONTROL_TYPE_BASIC)
+ return NULL;
+
+#define BASIC_ML_IE_MLD_ADDR_IDX \
+ (2 + /* Control field */ \
+ 1) /* Common Info length field */
+ return &buf[BASIC_ML_IE_MLD_ADDR_IDX];
+#undef BASIC_ML_IE_MLD_ADDR_IDX
+}
@@ -344,5 +344,6 @@ struct wpabuf * ieee802_11_defrag_data(struct ieee802_11_elems *elems,
struct wpabuf * ieee802_11_defrag(struct ieee802_11_elems *elems,
u8 eid, u8 eid_ext);
const u8 * get_ml_ie(const u8 *ies, size_t len, u8 type);
+const u8 * get_basic_mle_mld_addr(const u8 *buf, size_t len);
#endif /* IEEE802_11_COMMON_H */