static struct wpabuf * p2p_build_gas_comeback_resp(u8 dialog_token, u16 status_code, u16 update_indic, const u8 *data, size_t len, u8 frag_id, u8 more, u16 total_len) { struct wpabuf *buf; buf = gas_anqp_build_comeback_resp(dialog_token, status_code, frag_id, more, 0, 100 + len); if (buf == NULL) return NULL; if (frag_id == 0) { /* ANQP Query Response Frame */ wpabuf_put_le16(buf, ANQP_VENDOR_SPECIFIC); /* Info ID */ wpabuf_put_le16(buf, 3 + 1 + 2 + total_len); wpabuf_put_be32(buf, P2P_IE_VENDOR_TYPE); /* Service Update Indicator */ wpabuf_put_le16(buf, update_indic); } wpabuf_put_data(buf, data, len); gas_anqp_set_len(buf); return buf; }
struct wpabuf * gas_anqp_build_comeback_resp_buf(u8 dialog_token, u16 status_code, u8 frag_id, u8 more, u16 comeback_delay, struct wpabuf *payload) { struct wpabuf *buf; buf = gas_anqp_build_comeback_resp(dialog_token, status_code, frag_id, more, comeback_delay, payload ? wpabuf_len(payload) : 0); if (buf == NULL) return NULL; if (payload) wpabuf_put_buf(buf, payload); gas_anqp_set_len(buf); return buf; }