diff options
author | Jean-Michel Bachot <jean-michelx.bachot@linux.intel.com> | 2011-03-17 11:45:46 +0200 |
---|---|---|
committer | Jouni Malinen <j@w1.fi> | 2011-03-17 11:45:46 +0200 |
commit | e57ae6e19edfaf1cbecbdfabbfe9fbc729e2d064 (patch) | |
tree | 2fada54df289f7daee5d6db01eff71fd458b574b /src/p2p/p2p.c | |
parent | 8e8c0df158b6ba7106d9f7e731b279fd2e7e418d (diff) | |
download | external_wpa_supplicant_8_ti-e57ae6e19edfaf1cbecbdfabbfe9fbc729e2d064.zip external_wpa_supplicant_8_ti-e57ae6e19edfaf1cbecbdfabbfe9fbc729e2d064.tar.gz external_wpa_supplicant_8_ti-e57ae6e19edfaf1cbecbdfabbfe9fbc729e2d064.tar.bz2 |
P2P: Keep track of secondary device types for peers
Signed-off-by: Jean-Michel Bachot <jean-michelx.bachot@linux.intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'src/p2p/p2p.c')
-rw-r--r-- | src/p2p/p2p.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c index 3211ba2..ba2c2c2 100644 --- a/src/p2p/p2p.c +++ b/src/p2p/p2p.c @@ -338,6 +338,9 @@ static void p2p_copy_client_info(struct p2p_device *dev, dev->info.dev_capab = cli->dev_capab; dev->info.config_methods = cli->config_methods; os_memcpy(dev->info.pri_dev_type, cli->pri_dev_type, 8); + dev->info.wps_sec_dev_type_list_len = 8 * cli->num_sec_dev_types; + os_memcpy(dev->info.wps_sec_dev_type_list, cli->sec_dev_types, + dev->info.wps_sec_dev_type_list_len); } @@ -511,6 +514,14 @@ int p2p_add_device(struct p2p_data *p2p, const u8 *addr, int freq, int level, dev->info.config_methods = msg.config_methods ? msg.config_methods : msg.wps_config_methods; + if (msg.wps_sec_dev_type_list) { + os_memcpy(dev->info.wps_sec_dev_type_list, + msg.wps_sec_dev_type_list, + msg.wps_sec_dev_type_list_len); + dev->info.wps_sec_dev_type_list_len = + msg.wps_sec_dev_type_list_len; + } + if (msg.capability) { dev->info.dev_capab = msg.capability[0]; dev->info.group_capab = msg.capability[1]; @@ -1068,6 +1079,15 @@ void p2p_add_dev_info(struct p2p_data *p2p, const u8 *addr, sizeof(dev->info.device_name)); dev->info.config_methods = msg->config_methods ? msg->config_methods : msg->wps_config_methods; + + if (msg->wps_sec_dev_type_list) { + os_memcpy(dev->info.wps_sec_dev_type_list, + msg->wps_sec_dev_type_list, + msg->wps_sec_dev_type_list_len); + dev->info.wps_sec_dev_type_list_len = + msg->wps_sec_dev_type_list_len; + } + if (msg->capability) { dev->info.dev_capab = msg->capability[0]; dev->info.group_capab = msg->capability[1]; @@ -1441,6 +1461,14 @@ static void p2p_add_dev_from_probe_req(struct p2p_data *p2p, const u8 *addr, os_memcpy(dev->info.pri_dev_type, msg.wps_pri_dev_type, sizeof(dev->info.pri_dev_type)); + if (msg.wps_sec_dev_type_list) { + os_memcpy(dev->info.wps_sec_dev_type_list, + msg.wps_sec_dev_type_list, + msg.wps_sec_dev_type_list_len); + dev->info.wps_sec_dev_type_list_len = + msg.wps_sec_dev_type_list_len; + } + p2p_parse_free(&msg); wpa_msg(p2p->cfg->msg_ctx, MSG_DEBUG, |