const u8 * p2p_group_get_dev_addr(struct p2p_group *group, const u8 *addr) { struct p2p_group_member *m; if (group == NULL) return NULL; m = p2p_group_get_client_iface(group, addr); if (m && !is_zero_ether_addr(m->dev_addr)) return m->dev_addr; return NULL; }
u8 * p2p_group_get_dev_addr(struct p2p_group *group, const u8 *addr) { struct p2p_group_member *m; m = p2p_group_get_client_iface(group, addr); if (m) return m->dev_addr; else return NULL; }
u8 p2p_group_presence_req(struct p2p_group *group, const u8 *client_interface_addr, const u8 *noa, size_t noa_len) { struct p2p_group_member *m; u8 curr_noa[50]; int curr_noa_len; m = p2p_group_get_client_iface(group, client_interface_addr); if (m == NULL || m->client_info == NULL) { wpa_printf(MSG_DEBUG, "P2P: Client was not in this group"); return P2P_SC_FAIL_UNABLE_TO_ACCOMMODATE; } wpa_hexdump(MSG_DEBUG, "P2P: Presence Request NoA", noa, noa_len); if (group->p2p->cfg->get_noa) curr_noa_len = group->p2p->cfg->get_noa( group->p2p->cfg->cb_ctx, group->cfg->interface_addr, curr_noa, sizeof(curr_noa)); else curr_noa_len = -1; if (curr_noa_len < 0) wpa_printf(MSG_DEBUG, "P2P: Failed to fetch current NoA"); else if (curr_noa_len == 0) wpa_printf(MSG_DEBUG, "P2P: No NoA being advertized"); else wpa_hexdump(MSG_DEBUG, "P2P: Current NoA", curr_noa, curr_noa_len); /* TODO: properly process request and store copy */ if (curr_noa_len > 0 || curr_noa_len == -1) return P2P_SC_FAIL_UNABLE_TO_ACCOMMODATE; return P2P_SC_SUCCESS; }