Lines Matching +full:back +full:- +full:channel
2 * P2P - IE builder
3 * Copyright (c) 2009-2010, Atheros Communications
14 #include "common/qca-vendor.h"
59 *len = (u8 *) wpabuf_put(buf, 0) - len - 1; in p2p_buf_update_ie_hdr()
87 u8 reg_class, u8 channel) in p2p_buf_add_listen_channel() argument
89 /* Listen Channel */ in p2p_buf_add_listen_channel()
94 wpabuf_put_u8(buf, channel); /* Channel Number */ in p2p_buf_add_listen_channel()
95 wpa_printf(MSG_DEBUG, "P2P: * Listen Channel: Regulatory Class %u " in p2p_buf_add_listen_channel()
96 "Channel %u", reg_class, channel); in p2p_buf_add_listen_channel()
101 u8 reg_class, u8 channel) in p2p_buf_add_operating_channel() argument
103 /* Operating Channel */ in p2p_buf_add_operating_channel()
108 wpabuf_put_u8(buf, channel); /* Channel Number */ in p2p_buf_add_operating_channel()
109 wpa_printf(MSG_DEBUG, "P2P: * Operating Channel: Regulatory Class %u " in p2p_buf_add_operating_channel()
110 "Channel %u", reg_class, channel); in p2p_buf_add_operating_channel()
160 /* Channel List */ in p2p_buf_add_channel_list()
165 for (i = 0; i < chan->reg_classes; i++) { in p2p_buf_add_channel_list()
166 struct p2p_reg_class *c = &chan->reg_class[i]; in p2p_buf_add_channel_list()
168 if (is_6ghz_op_class(c->reg_class) && !is_6ghz_capab) in p2p_buf_add_channel_list()
170 wpabuf_put_u8(buf, c->reg_class); in p2p_buf_add_channel_list()
171 wpabuf_put_u8(buf, c->channels); in p2p_buf_add_channel_list()
172 wpabuf_put_data(buf, c->channel, c->channels); in p2p_buf_add_channel_list()
176 WPA_PUT_LE16(len, (u8 *) wpabuf_put(buf, 0) - len - 2); in p2p_buf_add_channel_list()
177 wpa_hexdump(MSG_DEBUG, "P2P: * Channel List", in p2p_buf_add_channel_list()
178 len + 2, (u8 *) wpabuf_put(buf, 0) - len - 2); in p2p_buf_add_channel_list()
204 wpabuf_put_data(buf, p2p->cfg->dev_addr, ETH_ALEN); in p2p_buf_add_device_info()
208 if (peer && peer->wps_method != WPS_NOT_READY) { in p2p_buf_add_device_info()
209 if (peer->wps_method == WPS_PBC) in p2p_buf_add_device_info()
211 else if (peer->wps_method == WPS_P2PS) in p2p_buf_add_device_info()
213 else if (peer->wps_method == WPS_PIN_DISPLAY || in p2p_buf_add_device_info()
214 peer->wps_method == WPS_PIN_KEYPAD) in p2p_buf_add_device_info()
216 } else if (p2p->cfg->config_methods) { in p2p_buf_add_device_info()
217 methods |= p2p->cfg->config_methods & in p2p_buf_add_device_info()
228 wpabuf_put_data(buf, p2p->cfg->pri_dev_type, in p2p_buf_add_device_info()
229 sizeof(p2p->cfg->pri_dev_type)); in p2p_buf_add_device_info()
232 wpabuf_put_u8(buf, p2p->cfg->num_sec_dev_types); in p2p_buf_add_device_info()
235 for (i = 0; i < p2p->cfg->num_sec_dev_types; i++) in p2p_buf_add_device_info()
236 wpabuf_put_data(buf, p2p->cfg->sec_dev_type[i], in p2p_buf_add_device_info()
240 nlen = p2p->cfg->dev_name ? os_strlen(p2p->cfg->dev_name) : 0; in p2p_buf_add_device_info()
243 wpabuf_put_data(buf, p2p->cfg->dev_name, nlen); in p2p_buf_add_device_info()
246 WPA_PUT_LE16(len, (u8 *) wpabuf_put(buf, 0) - len - 2); in p2p_buf_add_device_info()
325 wpabuf_put_u8(buf, desc->count_type); in p2p_buf_add_noa_desc()
326 wpabuf_put_le32(buf, desc->duration); in p2p_buf_add_noa_desc()
327 wpabuf_put_le32(buf, desc->interval); in p2p_buf_add_noa_desc()
328 wpabuf_put_le32(buf, desc->start_time); in p2p_buf_add_noa_desc()
365 wpabuf_put_data(buf, p2p->cfg->dev_addr, ETH_ALEN); in p2p_buf_add_p2p_interface()
372 wpabuf_put_data(buf, p2p->cfg->dev_addr, ETH_ALEN); in p2p_buf_add_p2p_interface()
377 u8 oper_class, u8 channel, in p2p_buf_add_oob_go_neg_channel() argument
380 /* OOB Group Owner Negotiation Channel */ in p2p_buf_add_oob_go_neg_channel()
385 wpabuf_put_u8(buf, channel); /* Channel Number */ in p2p_buf_add_oob_go_neg_channel()
387 wpa_printf(MSG_DEBUG, "P2P: * OOB GO Negotiation Channel: Operating " in p2p_buf_add_oob_go_neg_channel()
388 "Class %u Channel %u Role %d", in p2p_buf_add_oob_go_neg_channel()
389 oper_class, channel, role); in p2p_buf_add_oob_go_neg_channel()
400 wpabuf_put_le16(buf, p2p->p2ps_seek_count * P2PS_HASH_LEN); in p2p_buf_add_service_hash()
401 wpabuf_put_data(buf, p2p->p2ps_seek_hash, in p2p_buf_add_service_hash()
402 p2p->p2ps_seek_count * P2PS_HASH_LEN); in p2p_buf_add_service_hash()
404 p2p->p2ps_seek_hash, p2p->p2ps_seek_count * P2PS_HASH_LEN); in p2p_buf_add_service_hash()
459 if (os_memcmp(test, p2p->wild_card_hash, P2PS_HASH_LEN) == 0) in p2ps_wildcard_hash()
472 for (adv = p2p->p2ps_adv_list; adv; adv = adv->next) { in p2p_wfa_service_adv()
473 if (os_strncmp(adv->svc_name, P2PS_WILD_HASH_STR, in p2p_wfa_service_adv()
499 return -1; in p2p_buf_add_service_info()
506 return -1; in p2p_buf_add_service_info()
510 int ie_data_len = (*pos - *ie_len) - 1; in p2p_buf_add_service_info()
515 return -1; in p2p_buf_add_service_info()
517 remaining = 255 - ie_data_len; in p2p_buf_add_service_info()
521 * - 2 byte IE header (1 byte IE id and 1 byte length) in p2p_buf_add_service_info()
522 * - 4 bytes of IE_VENDOR_TYPE are reduced from 255 below in p2p_buf_add_service_info()
525 remaining = 255 - 4; in p2p_buf_add_service_info()
534 size_t back = sizeof(u32) + sizeof(u16) + sizeof(u8) - front; in p2p_buf_add_service_info() local
547 wpabuf_put_data(buf, &holder[front], back); in p2p_buf_add_service_info()
548 remaining = 255 - 4 - (sizeof(u32) + sizeof(u16) + sizeof(u8)) - in p2p_buf_add_service_info()
549 back; in p2p_buf_add_service_info()
554 remaining -= sizeof(adv_id) + sizeof(config_methods) + in p2p_buf_add_service_info()
561 size_t back = svc_len - front; in p2p_buf_add_service_info() local
570 if (back > 255 - 4) { in p2p_buf_add_service_info()
571 wpabuf_put_data(buf, &svc_name[front], 255 - 4); in p2p_buf_add_service_info()
572 back -= 255 - 4; in p2p_buf_add_service_info()
573 front += 255 - 4; in p2p_buf_add_service_info()
578 wpabuf_put_data(buf, &svc_name[front], back); in p2p_buf_add_service_info()
579 remaining = 255 - 4 - back; in p2p_buf_add_service_info()
582 remaining -= svc_len; in p2p_buf_add_service_info()
638 /* org.wi-fi.wfds match found */ in p2p_buf_add_service_instance()
645 adv = adv->next) { in p2p_buf_add_service_instance()
651 if (os_memcmp(test, adv->hash, P2PS_HASH_LEN) == 0 && in p2p_buf_add_service_instance()
653 adv->id, in p2p_buf_add_service_instance()
654 adv->config_methods, in p2p_buf_add_service_instance()
655 adv->svc_name, in p2p_buf_add_service_instance()
719 return -1; in p2p_add_wps_string()
724 * Some deployed WPS implementations fail to parse zeor-length in p2p_add_wps_string()
729 return -1; in p2p_add_wps_string()
749 return -1; in p2p_build_wps_ie()
755 return -1; in p2p_build_wps_ie()
759 return -1; in p2p_build_wps_ie()
767 return -1; in p2p_build_wps_ie()
778 return -1; in p2p_build_wps_ie()
783 if (wps_build_uuid_e(buf, p2p->cfg->uuid) < 0 || in p2p_build_wps_ie()
785 p2p->cfg->manufacturer) < 0 || in p2p_build_wps_ie()
787 p2p->cfg->model_name) < 0 || in p2p_build_wps_ie()
789 p2p->cfg->model_number) < 0 || in p2p_build_wps_ie()
791 p2p->cfg->serial_number) < 0) in p2p_build_wps_ie()
792 return -1; in p2p_build_wps_ie()
795 return -1; in p2p_build_wps_ie()
798 wpabuf_put_data(buf, p2p->cfg->pri_dev_type, WPS_DEV_TYPE_LEN); in p2p_build_wps_ie()
800 if (p2p_add_wps_string(buf, ATTR_DEV_NAME, p2p->cfg->dev_name) in p2p_build_wps_ie()
802 return -1; in p2p_build_wps_ie()
805 return -1; in p2p_build_wps_ie()
808 wpabuf_put_be16(buf, p2p->cfg->config_methods); in p2p_build_wps_ie()
812 return -1; in p2p_build_wps_ie()
814 if (all_attr && p2p->cfg->num_sec_dev_types) { in p2p_build_wps_ie()
816 4 + WPS_DEV_TYPE_LEN * p2p->cfg->num_sec_dev_types) in p2p_build_wps_ie()
817 return -1; in p2p_build_wps_ie()
820 p2p->cfg->num_sec_dev_types); in p2p_build_wps_ie()
821 wpabuf_put_data(buf, p2p->cfg->sec_dev_type, in p2p_build_wps_ie()
823 p2p->cfg->num_sec_dev_types); in p2p_build_wps_ie()
828 if (p2p->wps_vendor_ext[i] == NULL) in p2p_build_wps_ie()
831 4 + wpabuf_len(p2p->wps_vendor_ext[i])) in p2p_build_wps_ie()
834 wpabuf_put_be16(buf, wpabuf_len(p2p->wps_vendor_ext[i])); in p2p_build_wps_ie()
835 wpabuf_put_buf(buf, p2p->wps_vendor_ext[i]); in p2p_build_wps_ie()