Home | History | Annotate | Download | only in radius

Lines Matching refs:sess

166 	struct radius_session *sess = client->sessions;
168 while (sess) {
169 if (sess->sess_id == sess_id) {
172 sess = sess->next;
175 return sess;
180 struct radius_session *sess)
182 eloop_cancel_timeout(radius_server_session_timeout, data, sess);
183 eloop_cancel_timeout(radius_server_session_remove_timeout, data, sess);
184 eap_server_sm_deinit(sess->eap);
185 if (sess->last_msg) {
186 radius_msg_free(sess->last_msg);
187 os_free(sess->last_msg);
189 os_free(sess->last_from_addr);
190 if (sess->last_reply) {
191 radius_msg_free(sess->last_reply);
192 os_free(sess->last_reply);
194 os_free(sess);
200 struct radius_session *sess)
202 struct radius_client *client = sess->client;
205 eloop_cancel_timeout(radius_server_session_remove_timeout, data, sess);
210 if (session == sess) {
212 client->sessions = sess->next;
214 prev->next = sess->next;
216 radius_server_session_free(data, sess);
229 struct radius_session *sess = timeout_ctx;
230 RADIUS_DEBUG("Removing completed session 0x%x", sess->sess_id);
231 radius_server_session_remove(data, sess);
238 struct radius_session *sess = timeout_ctx;
240 RADIUS_DEBUG("Timing out authentication session 0x%x", sess->sess_id);
241 radius_server_session_remove(data, sess);
249 struct radius_session *sess;
257 sess = os_zalloc(sizeof(*sess));
258 if (sess == NULL)
261 sess->server = data;
262 sess->client = client;
263 sess->sess_id = data->next_sess_id++;
264 sess->next = client->sessions;
265 client->sessions = sess;
267 radius_server_session_timeout, data, sess);
269 return sess;
281 struct radius_session *sess;
304 sess = radius_server_new_session(data, client);
305 if (sess == NULL) {
329 sess->eap = eap_server_sm_init(sess, &radius_server_eapol_cb,
331 if (sess->eap == NULL) {
334 radius_server_session_free(data, sess);
337 sess->eap_if = eap_get_interface(sess->eap);
338 sess->eap_if->eapRestart = TRUE;
339 sess->eap_if->portEnabled = TRUE;
341 RADIUS_DEBUG("New session 0x%x initialized", sess->sess_id);
343 return sess;
350 struct radius_session *sess,
357 if (sess->eap_if->eapFail) {
358 sess->eap_if->eapFail = FALSE;
360 } else if (sess->eap_if->eapSuccess) {
361 sess->eap_if->eapSuccess = FALSE;
364 sess->eap_if->eapReq = FALSE;
374 sess_id = htonl(sess->sess_id);
381 if (sess->eap_if->eapReqData &&
382 !radius_msg_add_eap(msg, wpabuf_head(sess->eap_if->eapReqData),
383 wpabuf_len(sess->eap_if->eapReqData))) {
387 if (code == RADIUS_CODE_ACCESS_ACCEPT && sess->eap_if->eapKeyData) {
389 if (sess->eap_if->eapKeyDataLen > 64) {
392 len = sess->eap_if->eapKeyDataLen / 2;
397 sess->eap_if->eapKeyData + len,
398 len, sess->eap_if->eapKeyData,
493 struct radius_session *sess;
498 sess = force_sess;
505 sess = radius_server_get_session(client, state);
507 sess = NULL;
511 if (sess) {
512 RADIUS_DEBUG("Request for session 0x%x", sess->sess_id);
519 sess = radius_server_get_new_session(data, client, msg);
520 if (sess == NULL) {
528 if (sess->last_from_port == from_port &&
529 sess->last_identifier == msg->hdr->identifier &&
530 os_memcmp(sess->last_authenticator, msg->hdr->authenticator, 16) ==
536 if (sess->last_reply) {
537 res = sendto(data->auth_sock, sess->last_reply->buf,
538 sess->last_reply->buf_used, 0,
569 wpabuf_free(sess->eap_if->eapRespData);
570 sess->eap_if->eapRespData = wpabuf_alloc_ext_data(eap, eap_len);
571 if (sess->eap_if->eapRespData == NULL)
574 sess->eap_if->eapResp = TRUE;
575 eap_server_sm_step(sess->eap);
577 if ((sess->eap_if->eapReq || sess->eap_if->eapSuccess ||
578 sess->eap_if->eapFail) && sess->eap_if->eapReqData) {
580 wpabuf_head(sess->eap_if->eapReqData),
581 wpabuf_len(sess->eap_if->eapReqData));
582 } else if (sess->eap_if->eapFail) {
585 } else if (eap_sm_method_pending(sess->eap)) {
586 if (sess->last_msg) {
587 radius_msg_free(sess->last_msg);
588 os_free(sess->last_msg);
590 sess->last_msg = msg;
591 sess->last_from_port = from_port;
592 os_free(sess->last_from_addr);
593 sess->last_from_addr = os_strdup(from_addr);
594 sess->last_fromlen = fromlen;
595 os_memcpy(&sess->last_from, from, fromlen);
606 if (sess->eap_if->eapSuccess || sess->eap_if->eapFail)
609 reply = radius_server_encapsulate_eap(data, client, sess, msg);
636 if (sess->last_reply) {
637 radius_msg_free(sess->last_reply);
638 os_free(sess->last_reply);
640 sess->last_reply = reply;
641 sess->last_from_port = from_port;
642 sess->last_identifier = msg->hdr->identifier;
643 os_memcpy(sess->last_authenticator, msg->hdr->authenticator,
652 sess->sess_id);
654 data, sess);
657 data, sess);
1248 struct radius_session *sess = ctx;
1249 struct radius_server_data *data = sess->server;
1258 struct radius_session *sess = ctx;
1259 struct radius_server_data *data = sess->server;
1275 struct radius_session *s, *sess = NULL;
1284 sess = s;
1287 if (sess)
1290 if (sess)
1294 if (sess == NULL) {
1299 msg = sess->last_msg;
1300 sess->last_msg = NULL;
1301 eap_sm_pending_cb(sess->eap);
1303 (struct sockaddr *) &sess->last_from,
1304 sess->last_fromlen, cli,
1305 sess->last_from_addr,
1306 sess->last_from_port, sess) == -2)