Lines Matching +full:timing +full:- +full:role
2 * P2P - IE parser
3 * Copyright (c) 2009-2010, Atheros Communications
24 src_len = dst_len - 1; in p2p_copy_filter_devname()
48 return -1; in p2p_parse_attribute()
50 msg->capability = data; in p2p_parse_attribute()
59 return -1; in p2p_parse_attribute()
61 msg->device_id = data; in p2p_parse_attribute()
63 MAC2STR(msg->device_id)); in p2p_parse_attribute()
69 return -1; in p2p_parse_attribute()
71 msg->go_intent = data; in p2p_parse_attribute()
79 return -1; in p2p_parse_attribute()
81 msg->status = data; in p2p_parse_attribute()
93 return -1; in p2p_parse_attribute()
95 msg->listen_channel = data; in p2p_parse_attribute()
116 return -1; in p2p_parse_attribute()
118 msg->operating_channel = data; in p2p_parse_attribute()
134 return -1; 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()
159 return -1; 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()
173 return -1; in p2p_parse_attribute()
175 pos += msg->num_sec_dev_types * 8; in p2p_parse_attribute()
176 if (data + len - pos < 4) { in p2p_parse_attribute()
178 "length %d", (int) (data + len - pos)); in p2p_parse_attribute()
179 return -1; in p2p_parse_attribute()
184 return -1; in p2p_parse_attribute()
189 if (nlen > data + len - pos || nlen > WPS_DEV_NAME_MAX_LEN) { in p2p_parse_attribute()
192 (int) (data + len - pos)); in p2p_parse_attribute()
193 return -1; 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()
209 return -1; in p2p_parse_attribute()
211 msg->config_timeout = data; in p2p_parse_attribute()
219 return -1; in p2p_parse_attribute()
221 msg->intended_addr = data; in p2p_parse_attribute()
223 MACSTR, MAC2STR(msg->intended_addr)); in p2p_parse_attribute()
229 return -1; in p2p_parse_attribute()
231 msg->group_bssid = data; in p2p_parse_attribute()
233 MAC2STR(msg->group_bssid)); in p2p_parse_attribute()
239 return -1; 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()
253 return -1; in p2p_parse_attribute()
255 msg->invitation_flags = data; in p2p_parse_attribute()
263 return -1; in p2p_parse_attribute()
265 msg->manageability = data; in p2p_parse_attribute()
273 return -1; in p2p_parse_attribute()
275 msg->noa = data; in p2p_parse_attribute()
276 msg->noa_len = len; in p2p_parse_attribute()
282 "Timing attribute (length %d)", len); in p2p_parse_attribute()
283 return -1; in p2p_parse_attribute()
285 msg->ext_listen_timing = data; in p2p_parse_attribute()
286 wpa_printf(MSG_DEBUG, "P2P: * Extended Listen Timing " 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()
295 return -1; in p2p_parse_attribute()
297 msg->minor_reason_code = data; in p2p_parse_attribute()
299 *msg->minor_reason_code); in p2p_parse_attribute()
305 return -1; in p2p_parse_attribute()
307 msg->oob_go_neg_channel = data; in p2p_parse_attribute()
310 "Channel Number %d Role %d", in p2p_parse_attribute()
319 return -1; 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()
328 wpa_printf(MSG_DEBUG, "P2P: * Service Instance: %u bytes - %p", in p2p_parse_attribute()
336 return -1; in p2p_parse_attribute()
338 msg->conn_cap = data; in p2p_parse_attribute()
340 *msg->conn_cap); in p2p_parse_attribute()
347 return -1; in p2p_parse_attribute()
349 msg->adv_id = data; in p2p_parse_attribute()
350 msg->adv_mac = &data[sizeof(u32)]; in p2p_parse_attribute()
359 return -1; 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()
368 if (namelen > len - 7) in p2p_parse_attribute()
372 wpa_printf(MSG_DEBUG, "P2P: * Service Instance: %x-%s", in p2p_parse_attribute()
384 return -1; 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()
396 return -1; in p2p_parse_attribute()
398 msg->feature_cap = data; in p2p_parse_attribute()
399 msg->feature_cap_len = len; in p2p_parse_attribute()
408 return -1; 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()
431 * p2p_parse_p2p_ie - Parse P2P IE
434 * Returns: 0 on success, -1 on failure
450 if (end - pos < 3) { in p2p_parse_p2p_ie()
452 return -1; in p2p_parse_p2p_ie()
459 if (attr_len > end - pos) { in p2p_parse_p2p_ie()
462 attr_len, (int) (end - pos)); in p2p_parse_p2p_ie()
463 wpa_hexdump(MSG_MSGDUMP, "P2P: Data", pos, end - pos); in p2p_parse_p2p_ie()
464 return -1; in p2p_parse_p2p_ie()
467 return -1; in p2p_parse_p2p_ie()
482 return -1; in p2p_parse_wps_ie()
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()
532 * p2p_parse_ies - Parse P2P message IEs (both WPS and P2P IE)
536 * Returns: 0 on success, -1 on failure
549 return -1; in p2p_parse_ies()
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()
561 return -1; 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()
573 return -1; 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()
591 * p2p_parse - Parse a P2P Action frame contents
595 * Returns: 0 on success, -1 on failure
606 return -1; 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()
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()
624 return -1; 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()
635 return -1; in p2p_parse_ies_separate()
643 * p2p_parse_free - Free temporary data from P2P parsing
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()
676 cli = &info->client[info->num_clients]; in p2p_group_info_parse()
678 if (len > gend - g || len < 2 * ETH_ALEN + 1 + 2 + 8 + 1) in p2p_group_info_parse()
679 return -1; /* invalid data */ in p2p_group_info_parse()
682 cli->p2p_device_addr = g; in p2p_group_info_parse()
684 cli->p2p_interface_addr = g; in p2p_group_info_parse()
686 cli->dev_capab = *g++; in p2p_group_info_parse()
688 cli->config_methods = WPA_GET_BE16(g); in p2p_group_info_parse()
690 cli->pri_dev_type = g; in p2p_group_info_parse()
695 if (8 * len > cend - g) in p2p_group_info_parse()
696 return -1; /* invalid data */ in p2p_group_info_parse()
697 cli->num_sec_dev_types = len; in p2p_group_info_parse()
698 cli->sec_dev_types = g; in p2p_group_info_parse()
702 if (cend - g < 2 + 2) in p2p_group_info_parse()
703 return -1; /* invalid data */ in p2p_group_info_parse()
705 return -1; /* invalid Device Name TLV */ in p2p_group_info_parse()
709 if (count > cend - g) in p2p_group_info_parse()
710 return -1; /* invalid Device Name TLV */ in p2p_group_info_parse()
713 cli->dev_name = (const char *) g; in p2p_group_info_parse()
714 cli->dev_name_len = count; in p2p_group_info_parse()
718 info->num_clients++; in p2p_group_info_parse()
719 if (info->num_clients == P2P_MAX_GROUP_ENTRIES) in p2p_group_info_parse()
720 return -1; in p2p_group_info_parse()
746 ret = os_snprintf(pos, end - pos, "p2p_group_client: " in p2p_group_info_text()
748 MAC2STR(cli->p2p_device_addr), in p2p_group_info_text()
749 MAC2STR(cli->p2p_interface_addr)); in p2p_group_info_text()
750 if (os_snprintf_error(end - pos, ret)) in p2p_group_info_text()
751 return pos - buf; in p2p_group_info_text()
754 ret = os_snprintf(pos, end - pos, in p2p_group_info_text()
757 cli->dev_capab, cli->config_methods, in p2p_group_info_text()
758 wps_dev_type_bin2str(cli->pri_dev_type, in p2p_group_info_text()
761 if (os_snprintf_error(end - pos, ret)) in p2p_group_info_text()
762 return pos - buf; in p2p_group_info_text()
765 for (s = 0; s < cli->num_sec_dev_types; s++) { in p2p_group_info_text()
766 ret = os_snprintf(pos, end - pos, " dev_type=%s", in p2p_group_info_text()
768 &cli->sec_dev_types[s * 8], in p2p_group_info_text()
770 if (os_snprintf_error(end - pos, ret)) in p2p_group_info_text()
771 return pos - buf; in p2p_group_info_text()
775 os_memcpy(name, cli->dev_name, cli->dev_name_len); in p2p_group_info_text()
776 name[cli->dev_name_len] = '\0'; in p2p_group_info_text()
777 count = (int) cli->dev_name_len - 1; in p2p_group_info_text()
781 count--; in p2p_group_info_text()
784 ret = os_snprintf(pos, end - pos, " dev_name='%s'\n", name); in p2p_group_info_text()
785 if (os_snprintf_error(end - pos, ret)) in p2p_group_info_text()
786 return pos - buf; in p2p_group_info_text()
790 return pos - buf; in p2p_group_info_text()
795 * p2p_attr_text - Build text format description of P2P IE attributes
799 * Returns: Number of octets written to the buffer or -1 on faikure
812 return -1; in p2p_attr_text()
815 ret = os_snprintf(pos, end - pos, in p2p_attr_text()
819 if (os_snprintf_error(end - pos, ret)) in p2p_attr_text()
820 return pos - buf; in p2p_attr_text()
826 ret = os_snprintf(pos, end - pos, in p2p_attr_text()
831 if (os_snprintf_error(end - pos, ret)) in p2p_attr_text()
832 return pos - buf; in p2p_attr_text()
836 ret = os_snprintf(pos, end - pos, "p2p_device_name=%s\n", in p2p_attr_text()
838 if (os_snprintf_error(end - pos, ret)) in p2p_attr_text()
839 return pos - buf; in p2p_attr_text()
843 ret = os_snprintf(pos, end - pos, "p2p_device_addr=" MACSTR in p2p_attr_text()
846 if (os_snprintf_error(end - pos, ret)) in p2p_attr_text()
847 return pos - buf; in p2p_attr_text()
851 ret = os_snprintf(pos, end - pos, "p2p_config_methods=0x%x\n", in p2p_attr_text()
853 if (os_snprintf_error(end - pos, ret)) in p2p_attr_text()
854 return pos - buf; in p2p_attr_text()
860 return pos - buf; in p2p_attr_text()
863 return pos - buf; in p2p_attr_text()