Lines Matching refs:data

55 static void eap_wsc_state(struct eap_wsc_data *data, int state)  in eap_wsc_state()  argument
58 eap_wsc_state_txt(data->state), in eap_wsc_state()
60 data->state = state; in eap_wsc_state()
67 struct eap_wsc_data *data = timeout_ctx; in eap_wsc_ext_reg_timeout() local
74 data->ext_reg_timeout = 1; in eap_wsc_ext_reg_timeout()
81 struct eap_wsc_data *data; in eap_wsc_init() local
99 data = os_zalloc(sizeof(*data)); in eap_wsc_init()
100 if (data == NULL) in eap_wsc_init()
102 data->state = registrar ? START : MESG; in eap_wsc_init()
103 data->registrar = registrar; in eap_wsc_init()
112 os_free(data); in eap_wsc_init()
144 data->wps = wps_init(&cfg); in eap_wsc_init()
145 if (data->wps == NULL) { in eap_wsc_init()
146 os_free(data); in eap_wsc_init()
149 data->fragment_size = sm->cfg->fragment_size > 0 ? in eap_wsc_init()
152 return data; in eap_wsc_init()
158 struct eap_wsc_data *data = priv; in eap_wsc_reset() local
159 eloop_cancel_timeout(eap_wsc_ext_reg_timeout, sm, data); in eap_wsc_reset()
160 wpabuf_free(data->in_buf); in eap_wsc_reset()
161 wpabuf_free(data->out_buf); in eap_wsc_reset()
162 wps_deinit(data->wps); in eap_wsc_reset()
163 os_free(data); in eap_wsc_reset()
168 struct eap_wsc_data *data, u8 id) in eap_wsc_build_start() argument
188 static struct wpabuf * eap_wsc_build_msg(struct eap_wsc_data *data, u8 id) in eap_wsc_build_msg() argument
195 send_len = wpabuf_len(data->out_buf) - data->out_used; in eap_wsc_build_msg()
196 if (2 + send_len > data->fragment_size) { in eap_wsc_build_msg()
197 send_len = data->fragment_size - 2; in eap_wsc_build_msg()
199 if (data->out_used == 0) { in eap_wsc_build_msg()
215 wpabuf_put_u8(req, data->out_op_code); /* Op-Code */ in eap_wsc_build_msg()
218 wpabuf_put_be16(req, wpabuf_len(data->out_buf)); in eap_wsc_build_msg()
220 wpabuf_put_data(req, wpabuf_head_u8(data->out_buf) + data->out_used, in eap_wsc_build_msg()
222 data->out_used += send_len; in eap_wsc_build_msg()
224 if (data->out_used == wpabuf_len(data->out_buf)) { in eap_wsc_build_msg()
228 wpabuf_free(data->out_buf); in eap_wsc_build_msg()
229 data->out_buf = NULL; in eap_wsc_build_msg()
230 data->out_used = 0; in eap_wsc_build_msg()
231 eap_wsc_state(data, MESG); in eap_wsc_build_msg()
235 (unsigned long) wpabuf_len(data->out_buf) - in eap_wsc_build_msg()
236 data->out_used); in eap_wsc_build_msg()
237 eap_wsc_state(data, WAIT_FRAG_ACK); in eap_wsc_build_msg()
246 struct eap_wsc_data *data = priv; in eap_wsc_buildReq() local
248 switch (data->state) { in eap_wsc_buildReq()
250 return eap_wsc_build_start(sm, data, id); in eap_wsc_buildReq()
252 if (data->out_buf == NULL) { in eap_wsc_buildReq()
253 data->out_buf = wps_get_msg(data->wps, in eap_wsc_buildReq()
254 &data->out_op_code); in eap_wsc_buildReq()
255 if (data->out_buf == NULL) { in eap_wsc_buildReq()
260 data->out_used = 0; in eap_wsc_buildReq()
264 return eap_wsc_build_msg(data, id); in eap_wsc_buildReq()
269 "buildReq", data->state); in eap_wsc_buildReq()
292 static int eap_wsc_process_cont(struct eap_wsc_data *data, in eap_wsc_process_cont() argument
296 if (op_code != data->in_op_code) { in eap_wsc_process_cont()
299 op_code, data->in_op_code); in eap_wsc_process_cont()
300 eap_wsc_state(data, FAIL); in eap_wsc_process_cont()
304 if (len > wpabuf_tailroom(data->in_buf)) { in eap_wsc_process_cont()
306 eap_wsc_state(data, FAIL); in eap_wsc_process_cont()
310 wpabuf_put_data(data->in_buf, buf, len); in eap_wsc_process_cont()
313 (unsigned long) wpabuf_tailroom(data->in_buf)); in eap_wsc_process_cont()
319 static int eap_wsc_process_fragment(struct eap_wsc_data *data, in eap_wsc_process_fragment() argument
324 if (data->in_buf == NULL && !(flags & WSC_FLAGS_LF)) { in eap_wsc_process_fragment()
330 if (data->in_buf == NULL) { in eap_wsc_process_fragment()
332 data->in_buf = wpabuf_alloc(message_length); in eap_wsc_process_fragment()
333 if (data->in_buf == NULL) { in eap_wsc_process_fragment()
338 data->in_op_code = op_code; in eap_wsc_process_fragment()
339 wpabuf_put_data(data->in_buf, buf, len); in eap_wsc_process_fragment()
343 (unsigned long) wpabuf_tailroom(data->in_buf)); in eap_wsc_process_fragment()
353 struct eap_wsc_data *data = priv; in eap_wsc_process() local
361 eloop_cancel_timeout(eap_wsc_ext_reg_timeout, sm, data); in eap_wsc_process()
362 if (data->ext_reg_timeout) { in eap_wsc_process()
363 eap_wsc_state(data, FAIL); in eap_wsc_process()
396 if (data->state == WAIT_FRAG_ACK) { in eap_wsc_process()
400 eap_wsc_state(data, FAIL); in eap_wsc_process()
404 eap_wsc_state(data, MESG); in eap_wsc_process()
412 eap_wsc_state(data, FAIL); in eap_wsc_process()
416 if (data->in_buf && in eap_wsc_process()
417 eap_wsc_process_cont(data, pos, end - pos, op_code) < 0) { in eap_wsc_process()
418 eap_wsc_state(data, FAIL); in eap_wsc_process()
423 if (eap_wsc_process_fragment(data, flags, op_code, in eap_wsc_process()
426 eap_wsc_state(data, FAIL); in eap_wsc_process()
428 eap_wsc_state(data, FRAG_ACK); in eap_wsc_process()
432 if (data->in_buf == NULL) { in eap_wsc_process()
435 data->in_buf = &tmpbuf; in eap_wsc_process()
438 res = wps_process_msg(data->wps, op_code, data->in_buf); in eap_wsc_process()
443 eap_wsc_state(data, FAIL); in eap_wsc_process()
446 eap_wsc_state(data, MESG); in eap_wsc_process()
450 eap_wsc_state(data, FAIL); in eap_wsc_process()
453 eap_wsc_state(data, MESG); in eap_wsc_process()
455 eloop_cancel_timeout(eap_wsc_ext_reg_timeout, sm, data); in eap_wsc_process()
457 sm, data); in eap_wsc_process()
461 if (data->in_buf != &tmpbuf) in eap_wsc_process()
462 wpabuf_free(data->in_buf); in eap_wsc_process()
463 data->in_buf = NULL; in eap_wsc_process()
469 struct eap_wsc_data *data = priv; in eap_wsc_isDone() local
470 return data->state == FAIL; in eap_wsc_isDone()