[PATCH 1/3] P2P: rejecting provision discovery request for single p2p interface as GC
Avichal Agarwal
avichal.a
Wed Aug 5 01:28:52 PDT 2015
From: Avichal Agarwal <avichal.a at samsung.com>
Date: Wed, 5 Aug 2015 12:13:25 +0530
Subject: [PATCH 1/3] P2P: rejecting provision discovery request for single
p2p interface as GC
This patch will work when there is only single p2p interface (which act as both GC and GO).
It rejects provision discovery request when single p2p interface is already connected as group client.
Signed-off-by: Avichal Agarwal <avichal.a at samsung.com>
Signed-off-by: Kyeong-Chae Lim <kcya.lim at samsung.com>
---
src/p2p/p2p_pd.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/src/p2p/p2p_pd.c b/src/p2p/p2p_pd.c
index 065321c..f54c093 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;
@@ -456,7 +456,24 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
" with config methods 0x%x (freq=%d)",
MAC2STR(sa), msg.wps_config_methods, rx_freq);
+ #ifdef SINGLE_P2P_INTERAFCE
+ 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;
+ }
+ }
+ #endif
+
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 +488,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