P2P Add a utility to run a callback on all available groups
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Mon, 2 Jun 2014 14:42:03 +0000 (17:42 +0300)
committerJouni Malinen <j@w1.fi>
Sun, 29 Jun 2014 13:56:57 +0000 (16:56 +0300)
This will be useful in wpa_supplicant to match group's SSIDs against a
specific one.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
src/p2p/p2p.h
src/p2p/p2p_group.c

index a939619..cf5efbc 100644 (file)
@@ -1817,6 +1817,19 @@ int p2p_group_is_client_connected(struct p2p_group *group, const u8 *dev_addr);
 const struct p2p_group_config * p2p_group_get_config(struct p2p_group *group);
 
 /**
+ * p2p_loop_on_all_groups - Run the given callback on all groups
+ * @p2p: P2P module context from p2p_init()
+ * @group_callback: The callback function pointer
+ * @user_data: Some user data pointer which can be %NULL
+ *
+ * The group_callback function can stop the iteration by returning 0.
+ */
+void p2p_loop_on_all_groups(struct p2p_data *p2p,
+                           int (*group_callback)(struct p2p_group *group,
+                                                 void *user_data),
+                           void *user_data);
+
+/**
  * p2p_get_peer_found - Get P2P peer info structure of a found peer
  * @p2p: P2P module context from p2p_init()
  * @addr: P2P Device Address of the peer or %NULL to indicate the first peer
index e79c295..c678208 100644 (file)
@@ -1019,3 +1019,17 @@ const struct p2p_group_config * p2p_group_get_config(struct p2p_group *group)
 {
        return group->cfg;
 }
+
+
+void p2p_loop_on_all_groups(struct p2p_data *p2p,
+                           int (*group_callback)(struct p2p_group *group,
+                                                 void *user_data),
+                           void *user_data)
+{
+       unsigned int i;
+
+       for (i = 0; i < p2p->num_groups; i++) {
+               if (!group_callback(p2p->groups[i], user_data))
+                       break;
+       }
+}