diff --git a/src/p2p/p2p.h b/src/p2p/p2p.h index ba88f74f4..0a7e6b253 100644 --- a/src/p2p/p2p.h +++ b/src/p2p/p2p.h @@ -1324,4 +1324,20 @@ void p2p_set_best_channels(struct p2p_data *p2p, int freq_24, int freq_5, const u8 * p2p_get_go_neg_peer(struct p2p_data *p2p); +/** + * p2p_get_group_num_members - Get number of members in group + * @group: P2P group context from p2p_group_init() + * Returns: Number of members in the group + */ +unsigned int p2p_get_group_num_members(struct p2p_group *group); + +/** + * p2p_iterate_group_members - Iterate group members + * @group: P2P group context from p2p_group_init() + * @next: iteration pointer, must be a pointer to a void * that is set to %NULL + * on the first call and not modified later + * Returns: A P2P Interface Address for each call and %NULL for no more members + */ +const u8 * p2p_iterate_group_members(struct p2p_group *group, void **next); + #endif /* P2P_H */ diff --git a/src/p2p/p2p_group.c b/src/p2p/p2p_group.c index 7d2588598..14a475d01 100644 --- a/src/p2p/p2p_group.c +++ b/src/p2p/p2p_group.c @@ -647,3 +647,27 @@ u8 p2p_group_presence_req(struct p2p_group *group, return P2P_SC_SUCCESS; } + + +unsigned int p2p_get_group_num_members(struct p2p_group *group) +{ + return group->num_members; +} + + +const u8 * p2p_iterate_group_members(struct p2p_group *group, void **next) +{ + struct p2p_group_member *iter = *next; + + if (!iter) + iter = group->members; + else + iter = iter->next; + + *next = iter; + + if (!iter) + return NULL; + + return iter->addr; +}