[PATCH 1/3] P2P: Rejecting provision discovery request for group client

Avichal Agarwal avichal.a
Mon Aug 3 04:07:32 PDT 2015


From: Avichal Agarwal <avichal.a at samsung.com>
Date: Mon, 3 Aug 2015 15:22:33 +0530
Subject: [PATCH 1/3] P2P: Rejecting provision discovery request for group  client

According to p2p specs when device is a group clent it should not recieve provision discovery request.

Signed-off-by: Avichal Agarwal <avichal.a at samsung.com>
---
 src/p2p/p2p_pd.c |   22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/src/p2p/p2p_pd.c b/src/p2p/p2p_pd.c
index 065321c..92b1493 100644
--- a/src/p2p/p2p_pd.c
+++ b/src/p2p/p2p_pd.c
@@ -431,8 +431,8 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
 			       const u8 *data, size_t len, int rx_freq)
 {
 	struct p2p_message msg;
-	struct p2p_device *dev;
-	int freq;
+	struct p2p_device *dev,*n;
+	int freq,failflag=0;
 	enum p2p_status_code reject = P2P_SC_FAIL_INCOMPATIBLE_PARAMS;
 	struct wpabuf *resp;
 	u32 adv_id = 0;
@@ -455,8 +455,23 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
 	p2p_dbg(p2p, "Received Provision Discovery Request from " MACSTR
 		" with config methods 0x%x (freq=%d)",
 		MAC2STR(sa), msg.wps_config_methods, rx_freq);
+	
+	dl_list_for_each_safe(dev, n, &p2p->devices, struct p2p_device, list) {
+		if (p2p->cfg->go_connected &&
+			p2p->cfg->go_connected(p2p->cfg->cb_ctx,
+				dev->info.p2p_device_addr)) {
+				p2p_dbg(p2p, " Already connected  Provision Discovery Request  Ignored\n");
+				reject = P2P_SC_FAIL_REJECTED_BY_USER;
+				failflag=1;
+				break;
+			}
+	}
 
 	dev = p2p_get_device(p2p, sa);
+
+	if(dev && failflag)
+		goto out;
+
 	if (dev == NULL || (dev->flags & P2P_DEV_PROBE_REQ_ONLY)) {
 		p2p_dbg(p2p, "Provision Discovery Request from unknown peer "
 			MACSTR, MAC2STR(sa));
@@ -471,6 +486,9 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
 		dev->info.wfd_subelems = wpabuf_dup(msg.wfd_subelems);
 	}
 
+	if(failflag) 
+		goto out;
+
 	if (msg.adv_id)
 		allowed_config_methods |= WPS_CONFIG_P2PS;
 	else
-- 
1.7.9.5



More information about the Hostap mailing list