int eapol_auth_eap_pending_cb(struct eapol_state_machine *sm, void *ctx) { if (sm == NULL || ctx == NULL || ctx != sm->eap) return -1; eap_sm_pending_cb(sm->eap); eapol_auth_step(sm); return 0; }
static void eap_wsc_ext_reg_timeout(void *eloop_ctx, void *timeout_ctx) { struct eap_sm *sm = eloop_ctx; struct eap_wsc_data *data = timeout_ctx; if (sm->method_pending != METHOD_PENDING_WAIT) return; wpa_printf(MSG_DEBUG, "EAP-WSC: Timeout while waiting for an External " "Registrar"); data->ext_reg_timeout = 1; eap_sm_pending_cb(sm); }
void radius_server_eap_pending_cb(struct radius_server_data *data, void *ctx) { struct radius_client *cli; struct radius_session *s, *sess = NULL; struct radius_msg *msg; if (data == NULL) return; for (cli = data->clients; cli; cli = cli->next) { for (s = cli->sessions; s; s = s->next) { if (s->eap == ctx && s->last_msg) { sess = s; break; } if (sess) break; } if (sess) break; } if (sess == NULL) { RADIUS_DEBUG("No session matched callback ctx"); return; } msg = sess->last_msg; sess->last_msg = NULL; eap_sm_pending_cb(sess->eap); if (radius_server_request(data, msg, (struct sockaddr *) &sess->last_from, sess->last_fromlen, cli, sess->last_from_addr, sess->last_from_port, sess) == -2) return; /* msg was stored with the session */ radius_msg_free(msg); os_free(msg); }