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

Andrei Otcheretianski andrei.otc
Mon Aug 3 06:22:07 PDT 2015


This table shows that the client can't, for example transmit PD
request (Since it is already connected to GO), however the p2p device
can do it.
P2P Device, client  and GO are separate entities. P2P device is not
connected to GO - the client is connected.
Once a client is connected p2p device continues to exist and can
listen/search etc..
Multiple P2P clients or GO's can co-exist.

On Mon, Aug 3, 2015 at 4:07 PM, Avichal Agarwal <avichal.a at samsung.com> wrote:
> In this case  device is already connected  as a group client.
> In wifi p2p technical specifications   section 4.3 FRAM USGAE   Table shows  the information when device is group client or group owner ,
> which  frame can be transmitted and which frame can be received , or can not be done both.
> So according to that if  device is  already connected as group client then it can not receive provision discovery request.
>
> ------ Original Message -------
> Sender : Andrei Otcheretianski<andrei.otc at gmail.com>
> Date : Aug 03, 2015 18:24 (GMT+05:30)
> Title : Re: [PATCH 1/3] P2P: Rejecting provision discovery request for group client
>
> I admit I couldn't find this part in the spec, but I guess the spec
> specifies that a client may be connected to a single GO.
> However, there is no obstacle to have multiple concurrent clients / go's.
>
> On Mon, Aug 3, 2015 at 2:07 PM, Avichal Agarwal wrote:
>>
>> From: Avichal Agarwal
>> 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
>> ---
>>  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 ");
>> +                               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
>> _______________________________________________
>> HostAP mailing list
>> HostAP at lists.shmoo.com
>> http://lists.shmoo.com/mailman/listinfo/hostap
> _______________________________________________
> HostAP mailing list
> HostAP at lists.shmoo.com
> http://lists.shmoo.com/mailman/listinfo/hostap



More information about the Hostap mailing list