[RFC 29/56] NAN: Add a function to add element container attribute
Andrei Otcheretianski
andrei.otcheretianski at intel.com
Sun Dec 7 03:18:38 PST 2025
From: Ilan Peer <ilan.peer at intel.com>
Signed-off-by: Ilan Peer <ilan.peer at intel.com>
---
src/nan/nan_i.h | 4 +++-
src/nan/nan_ndl.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 1 deletion(-)
diff --git a/src/nan/nan_i.h b/src/nan/nan_i.h
index 13090d8625..baccfa6467 100644
--- a/src/nan/nan_i.h
+++ b/src/nan/nan_i.h
@@ -388,7 +388,9 @@ int nan_parse_naf(struct nan_data *nan, const struct ieee80211_mgmt *mgmt,
size_t len, struct nan_msg *msg);
void nan_attrs_clear(struct nan_data *nan, struct nan_attrs *attrs);
void nan_add_dev_capa_attr(struct nan_data *nan, struct wpabuf *buf);
-
+void nan_ndl_add_elem_container_attr(struct nan_data *nan,
+ struct nan_peer *peer,
+ struct wpabuf *buf);
int nan_ndp_setup_req(struct nan_data *nan, struct nan_peer *peer,
struct nan_ndp_params *params);
int nan_ndp_setup_resp(struct nan_data *nan, struct nan_peer *peer,
diff --git a/src/nan/nan_ndl.c b/src/nan/nan_ndl.c
index b6a9200ff3..f33fb15a74 100644
--- a/src/nan/nan_ndl.c
+++ b/src/nan/nan_ndl.c
@@ -1710,3 +1710,51 @@ int nan_ndl_naf_sent(struct nan_data *nan, struct nan_peer *peer,
*/
return 0;
}
+
+
+/*
+ * nan_ndl_add_elem_container_attr - Add NAN element container attribute
+ *
+ * @nan: NAN module context from nan_init()
+ * @peer: the peer with whom the NDL is being setup
+ * @buf: wpabuf to which the attribute would be added
+ */
+void nan_ndl_add_elem_container_attr(struct nan_data *nan,
+ struct nan_peer *peer,
+ struct wpabuf *buf)
+{
+ struct nan_ndl *ndl;
+
+ if (!peer || !peer->ndl || !peer->ndl->sched.elems)
+ return;
+
+ ndl = peer->ndl;
+
+ wpa_printf(MSG_DEBUG,
+ "NAN: Add element container. state=%s, status=%u",
+ nan_ndl_state_str(ndl->state), ndl->status);
+
+ if (peer->ndl->status == NAN_NDL_STATUS_REJECTED)
+ return;
+
+ /* Element container is expected only in NDP request/response */
+ switch (ndl->state) {
+ case NAN_NDL_STATE_START:
+ case NAN_NDL_STATE_REQ_RECV:
+ break;
+ case NAN_NDL_STATE_NONE:
+ case NAN_NDL_STATE_RES_RECV:
+ case NAN_NDL_STATE_REQ_SENT:
+ case NAN_NDL_STATE_RES_SENT:
+ case NAN_NDL_STATE_CON_SENT:
+ case NAN_NDL_STATE_CON_RECV:
+ case NAN_NDL_STATE_DONE:
+ default:
+ return;
+ }
+
+ wpabuf_put_u8(buf, NAN_ATTR_ELEM_CONTAINER);
+ wpabuf_put_le16(buf, 1 + wpabuf_len(peer->ndl->sched.elems));
+ wpabuf_put_u8(buf, 0);
+ wpabuf_put_buf(buf, peer->ndl->sched.elems);
+}
--
2.49.0
More information about the Hostap
mailing list