Home | History | Annotate | Download | only in rsn_supp

Lines Matching refs:pos

42 	u8 *pos;
54 pos = (u8 *) (hdr + 1);
62 RSN_SELECTOR_PUT(pos, suite);
63 pos += WPA_SELECTOR_LEN;
65 *pos++ = 1;
66 *pos++ = 0;
75 RSN_SELECTOR_PUT(pos, suite);
76 pos += WPA_SELECTOR_LEN;
78 *pos++ = 1;
79 *pos++ = 0;
81 RSN_SELECTOR_PUT(pos, WPA_AUTH_KEY_MGMT_UNSPEC_802_1X);
83 RSN_SELECTOR_PUT(pos, WPA_AUTH_KEY_MGMT_PSK_OVER_802_1X);
85 RSN_SELECTOR_PUT(pos, WPA_AUTH_KEY_MGMT_NONE);
87 RSN_SELECTOR_PUT(pos, WPA_AUTH_KEY_MGMT_CCKM);
93 pos += WPA_SELECTOR_LEN;
97 hdr->len = (pos - wpa_ie) - 2;
99 WPA_ASSERT((size_t) (pos - wpa_ie) <= wpa_ie_len);
101 return pos - wpa_ie;
110 u8 *pos;
126 pos = (u8 *) (hdr + 1);
134 RSN_SELECTOR_PUT(pos, suite);
135 pos += RSN_SELECTOR_LEN;
137 *pos++ = 1;
138 *pos++ = 0;
147 RSN_SELECTOR_PUT(pos, suite);
148 pos += RSN_SELECTOR_LEN;
150 *pos++ = 1;
151 *pos++ = 0;
153 RSN_SELECTOR_PUT(pos, RSN_AUTH_KEY_MGMT_UNSPEC_802_1X);
155 RSN_SELECTOR_PUT(pos, RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X);
157 RSN_SELECTOR_PUT(pos, RSN_AUTH_KEY_MGMT_CCKM);
160 RSN_SELECTOR_PUT(pos, RSN_AUTH_KEY_MGMT_FT_802_1X);
162 RSN_SELECTOR_PUT(pos, RSN_AUTH_KEY_MGMT_FT_PSK);
166 RSN_SELECTOR_PUT(pos, RSN_AUTH_KEY_MGMT_802_1X_SHA256);
168 RSN_SELECTOR_PUT(pos, RSN_AUTH_KEY_MGMT_PSK_SHA256);
172 RSN_SELECTOR_PUT(pos, RSN_AUTH_KEY_MGMT_SAE);
174 RSN_SELECTOR_PUT(pos, RSN_AUTH_KEY_MGMT_FT_SAE);
181 pos += RSN_SELECTOR_LEN;
191 WPA_PUT_LE16(pos, capab);
192 pos += 2;
196 *pos++ = 1;
197 *pos++ = 0;
199 os_memcpy(pos, sm->cur_pmksa->pmkid, PMKID_LEN);
200 pos += PMKID_LEN;
207 WPA_PUT_LE16(pos, 0);
208 pos += 2;
212 RSN_SELECTOR_PUT(pos, RSN_CIPHER_SUITE_AES_128_CMAC);
213 pos += RSN_SELECTOR_LEN;
217 hdr->len = (pos - rsn_ie) - 2;
219 WPA_ASSERT((size_t) (pos - rsn_ie) <= rsn_ie_len);
221 return pos - rsn_ie;
250 * @pos: Pointer to the IE header
255 static int wpa_parse_generic(const u8 *pos, const u8 *end,
258 if (pos[1] == 0)
261 if (pos[1] >= 6 &&
262 RSN_SELECTOR_GET(pos + 2) == WPA_OUI_TYPE &&
263 pos[2 + WPA_SELECTOR_LEN] == 1 &&
264 pos[2 + WPA_SELECTOR_LEN + 1] == 0) {
265 ie->wpa_ie = pos;
266 ie->wpa_ie_len = pos[1] + 2;
272 if (pos + 1 + RSN_SELECTOR_LEN < end &&
273 pos[1] >= RSN_SELECTOR_LEN + PMKID_LEN &&
274 RSN_SELECTOR_GET(pos + 2) == RSN_KEY_DATA_PMKID) {
275 ie->pmkid = pos + 2 + RSN_SELECTOR_LEN;
277 pos, pos[1] + 2);
281 if (pos[1] > RSN_SELECTOR_LEN + 2 &&
282 RSN_SELECTOR_GET(pos + 2) == RSN_KEY_DATA_GROUPKEY) {
283 ie->gtk = pos + 2 + RSN_SELECTOR_LEN;
284 ie->gtk_len = pos[1] - RSN_SELECTOR_LEN;
286 pos, pos[1] + 2);
290 if (pos[1] > RSN_SELECTOR_LEN + 2 &&
291 RSN_SELECTOR_GET(pos + 2) == RSN_KEY_DATA_MAC_ADDR) {
292 ie->mac_addr = pos + 2 + RSN_SELECTOR_LEN;
293 ie->mac_addr_len = pos[1] - RSN_SELECTOR_LEN;
295 pos, pos[1] + 2);
300 if (pos[1] > RSN_SELECTOR_LEN + 2 &&
301 RSN_SELECTOR_GET(pos + 2) == RSN_KEY_DATA_SMK) {
302 ie->smk = pos + 2 + RSN_SELECTOR_LEN;
303 ie->smk_len = pos[1] - RSN_SELECTOR_LEN;
305 pos, pos[1] + 2);
309 if (pos[1] > RSN_SELECTOR_LEN + 2 &&
310 RSN_SELECTOR_GET(pos + 2) == RSN_KEY_DATA_NONCE) {
311 ie->nonce = pos + 2 + RSN_SELECTOR_LEN;
312 ie->nonce_len = pos[1] - RSN_SELECTOR_LEN;
314 pos, pos[1] + 2);
318 if (pos[1] > RSN_SELECTOR_LEN + 2 &&
319 RSN_SELECTOR_GET(pos + 2) == RSN_KEY_DATA_LIFETIME) {
320 ie->lifetime = pos + 2 + RSN_SELECTOR_LEN;
321 ie->lifetime_len = pos[1] - RSN_SELECTOR_LEN;
323 pos, pos[1] + 2);
327 if (pos[1] > RSN_SELECTOR_LEN + 2 &&
328 RSN_SELECTOR_GET(pos + 2) == RSN_KEY_DATA_ERROR) {
329 ie->error = pos + 2 + RSN_SELECTOR_LEN;
330 ie->error_len = pos[1] - RSN_SELECTOR_LEN;
332 pos, pos[1] + 2);
338 if (pos[1] > RSN_SELECTOR_LEN + 2 &&
339 RSN_SELECTOR_GET(pos + 2) == RSN_KEY_DATA_IGTK) {
340 ie->igtk = pos + 2 + RSN_SELECTOR_LEN;
341 ie->igtk_len = pos[1] - RSN_SELECTOR_LEN;
343 pos, pos[1] + 2);
362 const u8 *pos, *end;
366 for (pos = buf, end = pos + len; pos + 1 < end; pos += 2 + pos[1]) {
367 if (pos[0] == 0xdd &&
368 ((pos == buf + len - 1) || pos[1] == 0)) {
372 if (pos + 2 + pos[1] > end) {
374 "underflow (ie=%d len=%d pos=%d)",
375 pos[0], pos[1], (int) (pos - buf));
381 if (*pos == WLAN_EID_RSN) {
382 ie->rsn_ie = pos;
383 ie->rsn_ie_len = pos[1] + 2;
386 } else if (*pos == WLAN_EID_MOBILITY_DOMAIN) {
387 ie->mdie = pos;
388 ie->mdie_len = pos[1] + 2;
391 } else if (*pos == WLAN_EID_FAST_BSS_TRANSITION) {
392 ie->ftie = pos;
393 ie->ftie_len = pos[1] + 2;
396 } else if (*pos == WLAN_EID_TIMEOUT_INTERVAL && pos[1] >= 5) {
397 if (pos[2] == WLAN_TIMEOUT_REASSOC_DEADLINE) {
398 ie->reassoc_deadline = pos;
401 ie->reassoc_deadline, pos[1] + 2);
402 } else if (pos[2] == WLAN_TIMEOUT_KEY_LIFETIME) {
403 ie->key_lifetime = pos;
406 ie->key_lifetime, pos[1] + 2);
410 pos, 2 + pos[1]);
412 } else if (*pos == WLAN_EID_LINK_ID) {
413 if (pos[1] >= 18) {
414 ie->lnkid = pos;
415 ie->lnkid_len = pos[1] + 2;
417 } else if (*pos == WLAN_EID_EXT_CAPAB) {
418 ie->ext_capab = pos;
419 ie->ext_capab_len = pos[1] + 2;
420 } else if (*pos == WLAN_EID_SUPP_RATES) {
421 ie->supp_rates = pos;
422 ie->supp_rates_len = pos[1] + 2;
423 } else if (*pos == WLAN_EID_EXT_SUPP_RATES) {
424 ie->ext_supp_rates = pos;
425 ie->ext_supp_rates_len = pos[1] + 2;
426 } else if (*pos == WLAN_EID_HT_CAP) {
427 ie->ht_capabilities = pos + 2;
428 ie->ht_capabilities_len = pos[1];
429 } else if (*pos == WLAN_EID_VHT_AID) {
430 if (pos[1] >= 2)
431 ie->aid = WPA_GET_LE16(pos + 2);
432 } else if (*pos == WLAN_EID_VHT_CAP) {
433 ie->vht_capabilities = pos + 2;
434 ie->vht_capabilities_len = pos[1];
435 } else if (*pos == WLAN_EID_QOS && pos[1] >= 1) {
436 ie->qosinfo = pos[2];
437 } else if (*pos == WLAN_EID_VENDOR_SPECIFIC) {
438 ret = wpa_parse_generic(pos, end, ie);
447 "Key Data IE", pos, 2 + pos[1]);