Lines Matching full:msg
37 struct p2p_message *msg) in p2p_parse_attribute() argument
50 msg->capability = data; in p2p_parse_attribute()
61 msg->device_id = data; in p2p_parse_attribute()
63 MAC2STR(msg->device_id)); in p2p_parse_attribute()
71 msg->go_intent = data; in p2p_parse_attribute()
81 msg->status = data; in p2p_parse_attribute()
95 msg->listen_channel = data; in p2p_parse_attribute()
118 msg->operating_channel = data; in p2p_parse_attribute()
136 msg->channel_list = data; in p2p_parse_attribute()
137 msg->channel_list_len = len; in p2p_parse_attribute()
148 msg->channel_list, msg->channel_list_len); in p2p_parse_attribute()
151 msg->group_info = data; in p2p_parse_attribute()
152 msg->group_info_len = len; in p2p_parse_attribute()
161 msg->p2p_device_info = data; in p2p_parse_attribute()
162 msg->p2p_device_info_len = len; in p2p_parse_attribute()
164 msg->p2p_device_addr = pos; in p2p_parse_attribute()
166 msg->config_methods = WPA_GET_BE16(pos); in p2p_parse_attribute()
168 msg->pri_dev_type = pos; in p2p_parse_attribute()
170 msg->num_sec_dev_types = *pos++; in p2p_parse_attribute()
171 if (msg->num_sec_dev_types * 8 > data + len - pos) { in p2p_parse_attribute()
175 pos += msg->num_sec_dev_types * 8; in p2p_parse_attribute()
195 p2p_copy_filter_devname(msg->device_name, in p2p_parse_attribute()
196 sizeof(msg->device_name), pos, nlen); in p2p_parse_attribute()
200 MAC2STR(msg->p2p_device_addr), in p2p_parse_attribute()
201 wps_dev_type_bin2str(msg->pri_dev_type, devtype, in p2p_parse_attribute()
203 msg->device_name, msg->config_methods); in p2p_parse_attribute()
211 msg->config_timeout = data; in p2p_parse_attribute()
221 msg->intended_addr = data; in p2p_parse_attribute()
223 MACSTR, MAC2STR(msg->intended_addr)); in p2p_parse_attribute()
231 msg->group_bssid = data; in p2p_parse_attribute()
233 MAC2STR(msg->group_bssid)); in p2p_parse_attribute()
241 msg->group_id = data; in p2p_parse_attribute()
242 msg->group_id_len = len; in p2p_parse_attribute()
244 MACSTR, MAC2STR(msg->group_id)); in p2p_parse_attribute()
246 msg->group_id + ETH_ALEN, in p2p_parse_attribute()
247 msg->group_id_len - ETH_ALEN); in p2p_parse_attribute()
255 msg->invitation_flags = data; in p2p_parse_attribute()
265 msg->manageability = data; in p2p_parse_attribute()
275 msg->noa = data; in p2p_parse_attribute()
276 msg->noa_len = len; in p2p_parse_attribute()
285 msg->ext_listen_timing = data; in p2p_parse_attribute()
288 WPA_GET_LE16(msg->ext_listen_timing), in p2p_parse_attribute()
289 WPA_GET_LE16(msg->ext_listen_timing + 2)); in p2p_parse_attribute()
297 msg->minor_reason_code = data; in p2p_parse_attribute()
299 *msg->minor_reason_code); in p2p_parse_attribute()
307 msg->oob_go_neg_channel = data; in p2p_parse_attribute()
321 msg->service_hash_count = len / P2PS_HASH_LEN; in p2p_parse_attribute()
322 msg->service_hash = data; in p2p_parse_attribute()
326 msg->session_info = data; in p2p_parse_attribute()
327 msg->session_info_len = len; in p2p_parse_attribute()
338 msg->conn_cap = data; in p2p_parse_attribute()
340 *msg->conn_cap); in p2p_parse_attribute()
349 msg->adv_id = data; in p2p_parse_attribute()
350 msg->adv_mac = &data[sizeof(u32)]; in p2p_parse_attribute()
361 msg->adv_service_instance = data; in p2p_parse_attribute()
362 msg->adv_service_instance_len = len; in p2p_parse_attribute()
386 msg->session_id = data; in p2p_parse_attribute()
387 msg->session_mac = &data[sizeof(u32)]; in p2p_parse_attribute()
389 WPA_GET_LE32(data), MAC2STR(msg->session_mac)); in p2p_parse_attribute()
398 msg->feature_cap = data; in p2p_parse_attribute()
399 msg->feature_cap_len = len; in p2p_parse_attribute()
411 msg->persistent_dev = data; in p2p_parse_attribute()
412 msg->persistent_ssid_len = len - ETH_ALEN; in p2p_parse_attribute()
413 msg->persistent_ssid = &data[ETH_ALEN]; in p2p_parse_attribute()
415 MAC2STR(msg->persistent_dev), in p2p_parse_attribute()
416 wpa_ssid_txt(msg->persistent_ssid, in p2p_parse_attribute()
417 msg->persistent_ssid_len)); in p2p_parse_attribute()
433 * @msg: Buffer for returning parsed attributes
436 * Note: Caller is responsible for clearing the msg data structure before
439 int p2p_parse_p2p_ie(const struct wpabuf *buf, struct p2p_message *msg) in p2p_parse_p2p_ie() argument
466 if (p2p_parse_attribute(id, pos, attr_len, msg)) in p2p_parse_p2p_ie()
475 static int p2p_parse_wps_ie(const struct wpabuf *buf, struct p2p_message *msg) in p2p_parse_wps_ie() argument
483 if (attr.dev_name && attr.dev_name_len < sizeof(msg->device_name) && in p2p_parse_wps_ie()
484 !msg->device_name[0]) in p2p_parse_wps_ie()
485 os_memcpy(msg->device_name, attr.dev_name, attr.dev_name_len); in p2p_parse_wps_ie()
487 msg->wps_config_methods = in p2p_parse_wps_ie()
490 msg->wps_config_methods); in p2p_parse_wps_ie()
493 msg->dev_password_id = WPA_GET_BE16(attr.dev_password_id); in p2p_parse_wps_ie()
495 msg->dev_password_id); in p2p_parse_wps_ie()
496 msg->dev_password_id_present = 1; in p2p_parse_wps_ie()
500 msg->wps_pri_dev_type = attr.primary_dev_type; in p2p_parse_wps_ie()
502 wps_dev_type_bin2str(msg->wps_pri_dev_type, devtype, in p2p_parse_wps_ie()
506 msg->wps_sec_dev_type_list = attr.sec_dev_type_list; in p2p_parse_wps_ie()
507 msg->wps_sec_dev_type_list_len = attr.sec_dev_type_list_len; in p2p_parse_wps_ie()
511 msg->wps_vendor_ext[i] = attr.vendor_ext[i]; in p2p_parse_wps_ie()
512 msg->wps_vendor_ext_len[i] = attr.vendor_ext_len[i]; in p2p_parse_wps_ie()
515 msg->manufacturer = attr.manufacturer; in p2p_parse_wps_ie()
516 msg->manufacturer_len = attr.manufacturer_len; in p2p_parse_wps_ie()
517 msg->model_name = attr.model_name; in p2p_parse_wps_ie()
518 msg->model_name_len = attr.model_name_len; in p2p_parse_wps_ie()
519 msg->model_number = attr.model_number; in p2p_parse_wps_ie()
520 msg->model_number_len = attr.model_number_len; in p2p_parse_wps_ie()
521 msg->serial_number = attr.serial_number; in p2p_parse_wps_ie()
522 msg->serial_number_len = attr.serial_number_len; in p2p_parse_wps_ie()
524 msg->oob_dev_password = attr.oob_dev_password; in p2p_parse_wps_ie()
525 msg->oob_dev_password_len = attr.oob_dev_password_len; in p2p_parse_wps_ie()
535 * @msg: Buffer for returning parsed attributes
538 * Note: Caller is responsible for clearing the msg data structure before
544 int p2p_parse_ies(const u8 *data, size_t len, struct p2p_message *msg) in p2p_parse_ies() argument
552 msg->ds_params = elems.ds_params; in p2p_parse_ies()
554 msg->ssid = elems.ssid - 2; in p2p_parse_ies()
556 msg->wps_attributes = ieee802_11_vendor_ie_concat(data, len, in p2p_parse_ies()
558 if (msg->wps_attributes && in p2p_parse_ies()
559 p2p_parse_wps_ie(msg->wps_attributes, msg)) { in p2p_parse_ies()
560 p2p_parse_free(msg); in p2p_parse_ies()
564 msg->p2p_attributes = ieee802_11_vendor_ie_concat(data, len, in p2p_parse_ies()
566 if (msg->p2p_attributes && in p2p_parse_ies()
567 p2p_parse_p2p_ie(msg->p2p_attributes, msg)) { in p2p_parse_ies()
569 if (msg->p2p_attributes) in p2p_parse_ies()
571 msg->p2p_attributes); in p2p_parse_ies()
572 p2p_parse_free(msg); in p2p_parse_ies()
578 msg->wfd_subelems = ieee802_11_vendor_ie_concat( in p2p_parse_ies()
583 msg->pref_freq_list = elems.pref_freq_list; in p2p_parse_ies()
584 msg->pref_freq_list_len = elems.pref_freq_list_len; in p2p_parse_ies()
594 * @msg: Buffer for returning parsed attributes
600 int p2p_parse(const u8 *data, size_t len, struct p2p_message *msg) in p2p_parse() argument
602 os_memset(msg, 0, sizeof(*msg)); in p2p_parse()
608 msg->dialog_token = data[0]; in p2p_parse()
609 wpa_printf(MSG_DEBUG, "P2P: * Dialog Token: %d", msg->dialog_token); in p2p_parse()
611 return p2p_parse_ies(data + 1, len - 1, msg); in p2p_parse()
616 size_t p2p_len, struct p2p_message *msg) in p2p_parse_ies_separate() argument
618 os_memset(msg, 0, sizeof(*msg)); in p2p_parse_ies_separate()
620 msg->wps_attributes = wpabuf_alloc_copy(wsc, wsc_len); in p2p_parse_ies_separate()
621 if (msg->wps_attributes && in p2p_parse_ies_separate()
622 p2p_parse_wps_ie(msg->wps_attributes, msg)) { in p2p_parse_ies_separate()
623 p2p_parse_free(msg); in p2p_parse_ies_separate()
627 msg->p2p_attributes = wpabuf_alloc_copy(p2p, p2p_len); in p2p_parse_ies_separate()
628 if (msg->p2p_attributes && in p2p_parse_ies_separate()
629 p2p_parse_p2p_ie(msg->p2p_attributes, msg)) { in p2p_parse_ies_separate()
631 if (msg->p2p_attributes) in p2p_parse_ies_separate()
633 msg->p2p_attributes); in p2p_parse_ies_separate()
634 p2p_parse_free(msg); in p2p_parse_ies_separate()
644 * @msg: Parsed attributes
646 void p2p_parse_free(struct p2p_message *msg) in p2p_parse_free() argument
648 wpabuf_free(msg->p2p_attributes); in p2p_parse_free()
649 msg->p2p_attributes = NULL; in p2p_parse_free()
650 wpabuf_free(msg->wps_attributes); in p2p_parse_free()
651 msg->wps_attributes = NULL; in p2p_parse_free()
653 wpabuf_free(msg->wfd_subelems); in p2p_parse_free()
654 msg->wfd_subelems = NULL; in p2p_parse_free()
806 struct p2p_message msg; in p2p_attr_text() local
810 os_memset(&msg, 0, sizeof(msg)); in p2p_attr_text()
811 if (p2p_parse_p2p_ie(data, &msg)) in p2p_attr_text()
814 if (msg.capability) { in p2p_attr_text()
818 msg.capability[0], msg.capability[1]); in p2p_attr_text()
824 if (msg.pri_dev_type) { in p2p_attr_text()
828 wps_dev_type_bin2str(msg.pri_dev_type, in p2p_attr_text()
837 msg.device_name); in p2p_attr_text()
842 if (msg.p2p_device_addr) { in p2p_attr_text()
845 MAC2STR(msg.p2p_device_addr)); in p2p_attr_text()
852 msg.config_methods); in p2p_attr_text()
857 ret = p2p_group_info_text(msg.group_info, msg.group_info_len, in p2p_attr_text()
869 struct p2p_message msg; in p2p_get_cross_connect_disallowed() local
871 os_memset(&msg, 0, sizeof(msg)); in p2p_get_cross_connect_disallowed()
872 if (p2p_parse_p2p_ie(p2p_ie, &msg)) in p2p_get_cross_connect_disallowed()
875 if (!msg.manageability) in p2p_get_cross_connect_disallowed()
878 return !(msg.manageability[0] & P2P_MAN_CROSS_CONNECTION_PERMITTED); in p2p_get_cross_connect_disallowed()
884 struct p2p_message msg; in p2p_get_group_capab() local
886 os_memset(&msg, 0, sizeof(msg)); in p2p_get_group_capab()
887 if (p2p_parse_p2p_ie(p2p_ie, &msg)) in p2p_get_group_capab()
890 if (!msg.capability) in p2p_get_group_capab()
893 return msg.capability[1]; in p2p_get_group_capab()
899 struct p2p_message msg; in p2p_get_go_dev_addr() local
901 os_memset(&msg, 0, sizeof(msg)); in p2p_get_go_dev_addr()
902 if (p2p_parse_p2p_ie(p2p_ie, &msg)) in p2p_get_go_dev_addr()
905 if (msg.p2p_device_addr) in p2p_get_go_dev_addr()
906 return msg.p2p_device_addr; in p2p_get_go_dev_addr()
907 if (msg.device_id) in p2p_get_go_dev_addr()
908 return msg.device_id; in p2p_get_go_dev_addr()