MBO: Implement MBO non-preferred channel report in Association Request
[mech_eap.git] / src / common / ieee802_11_common.c
index 9af2606..34fa968 100644 (file)
@@ -1205,3 +1205,27 @@ const u8 * get_ie(const u8 *ies, size_t len, u8 eid)
 
        return NULL;
 }
+
+
+size_t mbo_add_ie(u8 *buf, size_t len, const u8 *attr, size_t attr_len)
+{
+       /*
+        * MBO IE requires 6 bytes without the attributes: EID (1), length (1),
+        * OUI (3), OUI type (1).
+        */
+       if (len < 6 + attr_len) {
+               wpa_printf(MSG_DEBUG,
+                          "MBO: Not enough room in buffer for MBO IE: buf len = %zu, attr_len = %zu",
+                          len, attr_len);
+               return 0;
+       }
+
+       *buf++ = WLAN_EID_VENDOR_SPECIFIC;
+       *buf++ = attr_len + 4;
+       WPA_PUT_BE24(buf, OUI_WFA);
+       buf += 3;
+       *buf++ = MBO_OUI_TYPE;
+       os_memcpy(buf, attr, attr_len);
+
+       return 6 + attr_len;
+}