void p2p_group_notif_disassoc(struct p2p_group *group, const u8 *addr) { if (p2p_group_remove_member(group, addr)) { wpa_msg(group->p2p->cfg->msg_ctx, MSG_DEBUG, "P2P: Remove " "client " MACSTR " from group; num_members=%u/%u", MAC2STR(addr), group->num_members, group->cfg->max_clients); if (group->num_members == group->cfg->max_clients - 1) group->beacon_update = 1; p2p_group_update_ies(group); if (group->num_members == 0) group->cfg->idle_update(group->cfg->cb_ctx, 1); } }
int p2p_group_notif_assoc(struct p2p_group *group, const u8 *addr, const u8 *ie, size_t len) { struct p2p_group_member *m; if (group == NULL) return -1; p2p_add_device(group->p2p, addr, 0, NULL, 0, ie, len, 0); m = os_zalloc(sizeof(*m)); if (m == NULL) return -1; os_memcpy(m->addr, addr, ETH_ALEN); m->p2p_ie = ieee802_11_vendor_ie_concat(ie, len, P2P_IE_VENDOR_TYPE); if (m->p2p_ie) { m->client_info = p2p_build_client_info(addr, m->p2p_ie, &m->dev_capab, m->dev_addr); } #ifdef CONFIG_WIFI_DISPLAY m->wfd_ie = ieee802_11_vendor_ie_concat(ie, len, WFD_IE_VENDOR_TYPE); #endif /* CONFIG_WIFI_DISPLAY */ p2p_group_remove_member(group, addr); m->next = group->members; group->members = m; group->num_members++; p2p_dbg(group->p2p, "Add client " MACSTR " to group (p2p=%d wfd=%d client_info=%d); num_members=%u/%u", MAC2STR(addr), m->p2p_ie ? 1 : 0, m->wfd_ie ? 1 : 0, m->client_info ? 1 : 0, group->num_members, group->cfg->max_clients); if (group->num_members == group->cfg->max_clients) group->beacon_update = 1; p2p_group_update_ies(group); if (group->num_members == 1) group->cfg->idle_update(group->cfg->cb_ctx, 0); return 0; }
int p2p_group_notif_assoc(struct p2p_group *group, const u8 *addr, const u8 *ie, size_t len) { struct p2p_group_member *m; if (group == NULL) return -1; m = os_zalloc(sizeof(*m)); if (m == NULL) return -1; os_memcpy(m->addr, addr, ETH_ALEN); m->p2p_ie = ieee802_11_vendor_ie_concat(ie, len, P2P_IE_VENDOR_TYPE); if (m->p2p_ie) { m->client_info = p2p_build_client_info(addr, m->p2p_ie, &m->dev_capab, m->dev_addr); } p2p_group_remove_member(group, addr); m->next = group->members; group->members = m; group->num_members++; wpa_msg(group->p2p->cfg->msg_ctx, MSG_DEBUG, "P2P: Add client " MACSTR " to group (p2p=%d client_info=%d); num_members=%u/%u", MAC2STR(addr), m->p2p_ie ? 1 : 0, m->client_info ? 1 : 0, group->num_members, group->cfg->max_clients); if (group->num_members == group->cfg->max_clients) group->beacon_update = 1; p2p_group_update_ies(group); if (group->num_members == 1) group->cfg->idle_update(group->cfg->cb_ctx, 0); return 0; }