Lines Matching refs:msg

456 static int p2ps_validate_pd_req(struct p2p_data *p2p, struct p2p_message *msg,  in p2ps_validate_pd_req()  argument
468 if ((_val) && !msg->_attr) { \ in p2ps_validate_pd_req()
487 if (msg->status && *msg->status != P2P_SC_SUCCESS_DEFERRED) in p2ps_validate_pd_req()
502 if (msg->feature_cap_len < sizeof(struct p2ps_feature_capab)) { in p2ps_validate_pd_req()
507 switch (*msg->conn_cap) { in p2ps_validate_pd_req()
544 if (msg->persistent_dev) { in p2ps_validate_pd_req()
547 if (ether_addr_equal(msg->persistent_dev, addr)) { in p2ps_validate_pd_req()
569 struct p2p_message msg; in p2p_process_prov_disc_req() local
590 if (p2p_parse(data, len, &msg)) in p2p_process_prov_disc_req()
595 MAC2STR(sa), msg.wps_config_methods, rx_freq); in p2p_process_prov_disc_req()
596 group_mac = msg.intended_addr; in p2p_process_prov_disc_req()
617 } else if (msg.wfd_subelems) { in p2p_process_prov_disc_req()
619 dev->info.wfd_subelems = wpabuf_dup(msg.wfd_subelems); in p2p_process_prov_disc_req()
622 p2p_update_peer_6ghz_capab(dev, &msg); in p2p_process_prov_disc_req()
624 if (!msg.adv_id) { in p2p_process_prov_disc_req()
626 if (!(msg.wps_config_methods & allowed_config_methods)) { in p2p_process_prov_disc_req()
633 if (msg.group_id) { in p2p_process_prov_disc_req()
639 msg.group_id, msg.group_id_len)) in p2p_process_prov_disc_req()
655 adv_id = WPA_GET_LE32(msg.adv_id); in p2p_process_prov_disc_req()
656 if (p2ps_validate_pd_req(p2p, &msg, sa) < 0) { in p2p_process_prov_disc_req()
661 req_fcap = (struct p2ps_feature_capab *) msg.feature_cap; in p2p_process_prov_disc_req()
663 os_memcpy(session_mac, msg.session_mac, ETH_ALEN); in p2p_process_prov_disc_req()
664 os_memcpy(adv_mac, msg.adv_mac, ETH_ALEN); in p2p_process_prov_disc_req()
666 session_id = WPA_GET_LE32(msg.session_id); in p2p_process_prov_disc_req()
668 if (msg.conn_cap) in p2p_process_prov_disc_req()
669 conncap = *msg.conn_cap; in p2p_process_prov_disc_req()
676 if ((!msg.status || *msg.status == P2P_SC_SUCCESS_DEFERRED) && in p2p_process_prov_disc_req()
677 !(msg.wps_config_methods & allowed_config_methods)) { in p2p_process_prov_disc_req()
693 if (msg.wps_config_methods & WPS_CONFIG_DISPLAY) { in p2p_process_prov_disc_req()
698 } else if (msg.wps_config_methods & WPS_CONFIG_KEYPAD) { in p2p_process_prov_disc_req()
704 } else if (msg.wps_config_methods & WPS_CONFIG_P2PS) { in p2p_process_prov_disc_req()
715 msg.persistent_dev, in p2p_process_prov_disc_req()
716 msg.persistent_ssid, msg.persistent_ssid_len); in p2p_process_prov_disc_req()
725 if (!msg.adv_id) in p2p_process_prov_disc_req()
730 if (!msg.status) { in p2p_process_prov_disc_req()
733 if (!ether_addr_equal(p2p->cfg->dev_addr, msg.adv_mac)) { in p2p_process_prov_disc_req()
770 !(msg.wps_config_methods & in p2p_process_prov_disc_req()
775 msg.wps_config_methods); in p2p_process_prov_disc_req()
785 if (msg.wps_config_methods & WPS_CONFIG_KEYPAD) { in p2p_process_prov_disc_req()
791 msg.persistent_dev) && conncap != P2PS_SETUP_NEW && in p2p_process_prov_disc_req()
792 msg.channel_list && msg.channel_list_len && in p2p_process_prov_disc_req()
794 msg.channel_list, in p2p_process_prov_disc_req()
795 msg.channel_list_len) < 0) { in p2p_process_prov_disc_req()
802 msg.persistent_dev) && msg.operating_channel) { in p2p_process_prov_disc_req()
813 msg.operating_channel[3], in p2p_process_prov_disc_req()
814 msg.operating_channel[4])) { in p2p_process_prov_disc_req()
819 msg.operating_channel[3]; in p2p_process_prov_disc_req()
821 msg.operating_channel[4]; in p2p_process_prov_disc_req()
840 msg.wps_config_methods, in p2p_process_prov_disc_req()
862 if (!msg.status && !auto_accept && in p2p_process_prov_disc_req()
872 msg.wps_config_methods, in p2p_process_prov_disc_req()
883 if (!msg.status) in p2p_process_prov_disc_req()
886 if (*msg.status && *msg.status != P2P_SC_SUCCESS_DEFERRED) { in p2p_process_prov_disc_req()
887 reject = *msg.status; in p2p_process_prov_disc_req()
891 if (*msg.status != P2P_SC_SUCCESS_DEFERRED || !p2p->p2ps_prov) in p2p_process_prov_disc_req()
895 !ether_addr_equal(p2p->p2ps_prov->adv_mac, msg.adv_mac)) { in p2p_process_prov_disc_req()
902 !ether_addr_equal(p2p->p2ps_prov->session_mac, msg.session_mac)) { in p2p_process_prov_disc_req()
933 if (!conncap || !(msg.wps_config_methods & method)) { in p2p_process_prov_disc_req()
944 msg.persistent_dev) && conncap != P2PS_SETUP_NEW && in p2p_process_prov_disc_req()
945 msg.channel_list && msg.channel_list_len && in p2p_process_prov_disc_req()
947 msg.channel_list, in p2p_process_prov_disc_req()
948 msg.channel_list_len) < 0) { in p2p_process_prov_disc_req()
960 if (msg.operating_channel) in p2p_process_prov_disc_req()
962 p2p_channel_to_freq(msg.operating_channel[3], in p2p_process_prov_disc_req()
963 msg.operating_channel[4]); in p2p_process_prov_disc_req()
976 config_methods = msg.wps_config_methods; in p2p_process_prov_disc_req()
984 if (!msg.status || *msg.status == P2P_SC_SUCCESS_DEFERRED) { in p2p_process_prov_disc_req()
985 resp = p2p_build_prov_disc_resp(p2p, dev, msg.dialog_token, in p2p_process_prov_disc_req()
987 msg.group_id, msg.group_id_len, in p2p_process_prov_disc_req()
988 msg.persistent_ssid, in p2p_process_prov_disc_req()
989 msg.persistent_ssid_len, in p2p_process_prov_disc_req()
993 p2p_parse_free(&msg); in p2p_process_prov_disc_req()
1005 p2p_parse_free(&msg); in p2p_process_prov_disc_req()
1021 p2p_parse_free(&msg); in p2p_process_prov_disc_req()
1035 } else if (msg.status && *msg.status != P2P_SC_SUCCESS && in p2p_process_prov_disc_req()
1036 *msg.status != P2P_SC_SUCCESS_DEFERRED) { in p2p_process_prov_disc_req()
1037 reject = *msg.status; in p2p_process_prov_disc_req()
1041 0, 0, msg.persistent_ssid, in p2p_process_prov_disc_req()
1042 msg.persistent_ssid_len, in p2p_process_prov_disc_req()
1045 } else if (msg.status && *msg.status == P2P_SC_SUCCESS_DEFERRED && in p2p_process_prov_disc_req()
1055 msg.persistent_ssid, in p2p_process_prov_disc_req()
1056 msg.persistent_ssid_len, 0, in p2p_process_prov_disc_req()
1061 *msg.status, in p2p_process_prov_disc_req()
1066 msg.persistent_ssid, in p2p_process_prov_disc_req()
1067 msg.persistent_ssid_len, 0, in p2p_process_prov_disc_req()
1072 } else if (msg.status && p2p->p2ps_prov) { in p2p_process_prov_disc_req()
1074 p2p->cfg->p2ps_prov_complete(p2p->cfg->cb_ctx, *msg.status, sa, in p2p_process_prov_disc_req()
1078 msg.persistent_ssid, in p2p_process_prov_disc_req()
1079 msg.persistent_ssid_len, in p2p_process_prov_disc_req()
1083 } else if (msg.status) { in p2p_process_prov_disc_req()
1089 msg.persistent_ssid, in p2p_process_prov_disc_req()
1090 msg.persistent_ssid_len, in p2p_process_prov_disc_req()
1094 msg.group_id ? in p2p_process_prov_disc_req()
1095 msg.group_id + ETH_ALEN : NULL, in p2p_process_prov_disc_req()
1096 msg.group_id ? in p2p_process_prov_disc_req()
1097 msg.group_id_len - ETH_ALEN : 0); in p2p_process_prov_disc_req()
1099 (!msg.session_info || !msg.session_info_len)) { in p2p_process_prov_disc_req()
1100 p2p->p2ps_prov->method = msg.wps_config_methods; in p2p_process_prov_disc_req()
1106 msg.persistent_ssid, in p2p_process_prov_disc_req()
1107 msg.persistent_ssid_len, in p2p_process_prov_disc_req()
1112 size_t buf_len = msg.session_info_len; in p2p_process_prov_disc_req()
1116 p2p->p2ps_prov->method = msg.wps_config_methods; in p2p_process_prov_disc_req()
1118 utf8_escape((char *) msg.session_info, buf_len, in p2p_process_prov_disc_req()
1125 msg.persistent_ssid, msg.persistent_ssid_len, in p2p_process_prov_disc_req()
1153 ((reject == P2P_SC_SUCCESS && !msg.adv_id) || in p2p_process_prov_disc_req()
1154 (!msg.status && in p2p_process_prov_disc_req()
1158 (!msg.status && in p2p_process_prov_disc_req()
1162 msg.status && *msg.status == P2P_SC_SUCCESS_DEFERRED && in p2p_process_prov_disc_req()
1166 if (msg.p2p_device_addr) in p2p_process_prov_disc_req()
1167 dev_addr = msg.p2p_device_addr; in p2p_process_prov_disc_req()
1169 msg.wps_config_methods, in p2p_process_prov_disc_req()
1170 dev_addr, msg.pri_dev_type, in p2p_process_prov_disc_req()
1171 msg.device_name, msg.config_methods, in p2p_process_prov_disc_req()
1172 msg.capability ? msg.capability[0] : 0, in p2p_process_prov_disc_req()
1173 msg.capability ? msg.capability[1] : in p2p_process_prov_disc_req()
1175 msg.group_id, msg.group_id_len); in p2p_process_prov_disc_req()
1200 if (msg.intended_addr) in p2p_process_prov_disc_req()
1201 os_memcpy(dev->interface_addr, msg.intended_addr, in p2p_process_prov_disc_req()
1204 p2p_parse_free(&msg); in p2p_process_prov_disc_req()
1209 struct p2p_message *msg) in p2p_validate_p2ps_pd_resp() argument
1218 if ((_val) && !msg->_attr) { \ in p2p_validate_p2ps_pd_resp()
1233 session_id = WPA_GET_LE32(msg->session_id); in p2p_validate_p2ps_pd_resp()
1234 adv_id = WPA_GET_LE32(msg->adv_id); in p2p_validate_p2ps_pd_resp()
1242 if (!ether_addr_equal(p2p->p2ps_prov->session_mac, msg->session_mac)) { in p2p_validate_p2ps_pd_resp()
1254 if (!ether_addr_equal(p2p->p2ps_prov->adv_mac, msg->adv_mac)) { in p2p_validate_p2ps_pd_resp()
1260 if (msg->listen_channel) { in p2p_validate_p2ps_pd_resp()
1266 if (*msg->status == P2P_SC_SUCCESS && in p2p_validate_p2ps_pd_resp()
1267 !(!!msg->conn_cap ^ !!msg->persistent_dev)) { in p2p_validate_p2ps_pd_resp()
1273 if (msg->persistent_dev && *msg->status != P2P_SC_SUCCESS) { in p2p_validate_p2ps_pd_resp()
1279 if (msg->conn_cap) { in p2p_validate_p2ps_pd_resp()
1280 conn_cap_go = *msg->conn_cap == P2PS_SETUP_GROUP_OWNER; in p2p_validate_p2ps_pd_resp()
1281 conn_cap_cli = *msg->conn_cap == P2PS_SETUP_CLIENT; in p2p_validate_p2ps_pd_resp()
1284 P2PS_PD_RESP_CHECK(msg->persistent_dev || conn_cap_go || conn_cap_cli, in p2p_validate_p2ps_pd_resp()
1286 P2PS_PD_RESP_CHECK(msg->persistent_dev || conn_cap_go || conn_cap_cli, in p2p_validate_p2ps_pd_resp()
1309 struct p2p_message msg; in p2p_process_prov_disc_resp() local
1320 if (p2p_parse(data, len, &msg)) in p2p_process_prov_disc_resp()
1323 if (p2p->p2ps_prov && p2p_validate_p2ps_pd_resp(p2p, &msg)) { in p2p_process_prov_disc_resp()
1324 p2p_parse_free(&msg); in p2p_process_prov_disc_resp()
1329 if (msg.status) in p2p_process_prov_disc_resp()
1330 status = *msg.status; in p2p_process_prov_disc_resp()
1332 group_mac = msg.intended_addr; in p2p_process_prov_disc_resp()
1334 if (msg.adv_mac) in p2p_process_prov_disc_resp()
1335 os_memcpy(adv_mac, msg.adv_mac, ETH_ALEN); in p2p_process_prov_disc_resp()
1339 if (msg.adv_id) in p2p_process_prov_disc_resp()
1340 adv_id = WPA_GET_LE32(msg.adv_id); in p2p_process_prov_disc_resp()
1342 if (msg.conn_cap) { in p2p_process_prov_disc_resp()
1343 conncap = *msg.conn_cap; in p2p_process_prov_disc_resp()
1358 MAC2STR(sa), msg.wps_config_methods); in p2p_process_prov_disc_resp()
1364 p2p_parse_free(&msg); in p2p_process_prov_disc_resp()
1366 } else if (msg.wfd_subelems) { in p2p_process_prov_disc_resp()
1368 dev->info.wfd_subelems = wpabuf_dup(msg.wfd_subelems); in p2p_process_prov_disc_resp()
1371 p2p_update_peer_6ghz_capab(dev, &msg); in p2p_process_prov_disc_resp()
1373 if (dev->dialog_token != msg.dialog_token) { in p2p_process_prov_disc_resp()
1375 msg.dialog_token, dev->dialog_token); in p2p_process_prov_disc_resp()
1376 p2p_parse_free(&msg); in p2p_process_prov_disc_resp()
1401 if (msg.wps_config_methods != req_config_methods) { in p2p_process_prov_disc_resp()
1403 msg.wps_config_methods, req_config_methods); in p2p_process_prov_disc_resp()
1408 p2p_parse_free(&msg); in p2p_process_prov_disc_resp()
1422 } else if (msg.wps_config_methods & WPS_CONFIG_KEYPAD) { in p2p_process_prov_disc_resp()
1428 } else if (msg.wps_config_methods & WPS_CONFIG_P2PS) { in p2p_process_prov_disc_resp()
1447 if (msg.channel_list && msg.channel_list_len && in p2p_process_prov_disc_resp()
1449 msg.channel_list, in p2p_process_prov_disc_resp()
1450 msg.channel_list_len) < 0) in p2p_process_prov_disc_resp()
1453 if (msg.operating_channel) { in p2p_process_prov_disc_resp()
1455 msg.operating_channel[3], in p2p_process_prov_disc_resp()
1456 msg.operating_channel[4]) && in p2p_process_prov_disc_resp()
1458 msg.operating_channel[3], in p2p_process_prov_disc_resp()
1459 msg.operating_channel[4])) { in p2p_process_prov_disc_resp()
1462 msg.operating_channel[3], in p2p_process_prov_disc_resp()
1463 msg.operating_channel[4]); in p2p_process_prov_disc_resp()
1495 conncap, passwd_id, msg.persistent_ssid, in p2p_process_prov_disc_resp()
1496 msg.persistent_ssid_len, 1, 0, NULL, in p2p_process_prov_disc_resp()
1497 msg.feature_cap, msg.feature_cap_len, freq, in p2p_process_prov_disc_resp()
1498 msg.group_id ? msg.group_id + ETH_ALEN : NULL, in p2p_process_prov_disc_resp()
1499 msg.group_id ? msg.group_id_len - ETH_ALEN : 0); in p2p_process_prov_disc_resp()
1521 if (msg.session_info && msg.session_info_len) { in p2p_process_prov_disc_resp()
1522 size_t info_len = msg.session_info_len; in p2p_process_prov_disc_resp()
1526 p2p_parse_free(&msg); in p2p_process_prov_disc_resp()
1530 utf8_escape((char *) msg.session_info, info_len, in p2p_process_prov_disc_resp()
1552 p2p_parse_free(&msg); in p2p_process_prov_disc_resp()
1558 dev->wps_prov_info = msg.wps_config_methods; in p2p_process_prov_disc_resp()
1559 if (msg.intended_addr) in p2p_process_prov_disc_resp()
1560 os_memcpy(dev->interface_addr, msg.intended_addr, ETH_ALEN); in p2p_process_prov_disc_resp()
1562 p2p_parse_free(&msg); in p2p_process_prov_disc_resp()