Lines Matching refs:rcid

38                                      const QUIC_CONN_ID *rcid);
245 static void rcidm_transition_rcid(QUIC_RCIDM *rcidm, RCID *rcid,
249 static void rcidm_check_rcid(QUIC_RCIDM *rcidm, RCID *rcid) in rcidm_check_rcid() argument
251 assert(rcid->state == RCID_STATE_PENDING in rcidm_check_rcid()
252 || rcid->state == RCID_STATE_CUR in rcidm_check_rcid()
253 || rcid->state == RCID_STATE_RETIRING); in rcidm_check_rcid()
254 assert((rcid->state == RCID_STATE_PENDING) in rcidm_check_rcid()
255 == (rcid->pq_idx != SIZE_MAX)); in rcidm_check_rcid()
256 assert((rcid->state == RCID_STATE_CUR) in rcidm_check_rcid()
257 == (rcidm->cur_rcid == rcid)); in rcidm_check_rcid()
258 assert((ossl_list_retiring_next(rcid) != NULL in rcidm_check_rcid()
259 || ossl_list_retiring_prev(rcid) != NULL in rcidm_check_rcid()
260 || ossl_list_retiring_head(&rcidm->retiring_list) == rcid) in rcidm_check_rcid()
261 == (rcid->state == RCID_STATE_RETIRING)); in rcidm_check_rcid()
262 assert(rcid->type != RCID_TYPE_INITIAL || rcid->seq_num == 0); in rcidm_check_rcid()
263 assert(rcid->type != RCID_TYPE_PREF_ADDR || rcid->seq_num == 1); in rcidm_check_rcid()
264 assert(rcid->seq_num <= OSSL_QUIC_VLINT_MAX); in rcidm_check_rcid()
265 assert(rcid->cid.id_len > 0 && rcid->cid.id_len <= QUIC_MAX_CONN_ID_LEN); in rcidm_check_rcid()
266 assert(rcid->seq_num >= rcidm->retire_prior_to in rcidm_check_rcid()
267 || rcid->state == RCID_STATE_RETIRING); in rcidm_check_rcid()
269 assert(rcid->state != RCID_STATE_RETIRING || rcidm->num_retiring > 0); in rcidm_check_rcid()
304 RCID *rcid, *rnext; in ossl_quic_rcidm_free() local
310 while ((rcid = ossl_pqueue_RCID_pop(rcidm->rcids)) != NULL) in ossl_quic_rcidm_free()
311 OPENSSL_free(rcid); in ossl_quic_rcidm_free()
313 OSSL_LIST_FOREACH_DELSAFE(rcid, rnext, retiring, &rcidm->retiring_list) in ossl_quic_rcidm_free()
314 OPENSSL_free(rcid); in ossl_quic_rcidm_free()
321 const QUIC_CONN_ID *rcid) in rcidm_set_preferred_rcid() argument
323 if (rcid == NULL) { in rcidm_set_preferred_rcid()
329 if (ossl_quic_conn_id_eq(&rcidm->preferred_rcid, rcid)) in rcidm_set_preferred_rcid()
332 rcidm->preferred_rcid = *rcid; in rcidm_set_preferred_rcid()
345 RCID *rcid; in rcidm_create_rcid() local
353 if ((rcid = OPENSSL_zalloc(sizeof(*rcid))) == NULL) in rcidm_create_rcid()
356 rcid->seq_num = seq_num; in rcidm_create_rcid()
357 rcid->cid = *cid; in rcidm_create_rcid()
358 rcid->type = type; in rcidm_create_rcid()
360 if (rcid->seq_num >= rcidm->retire_prior_to) { in rcidm_create_rcid()
361 rcid->state = RCID_STATE_PENDING; in rcidm_create_rcid()
363 if (!ossl_pqueue_RCID_push(rcidm->rcids, rcid, &rcid->pq_idx)) { in rcidm_create_rcid()
364 OPENSSL_free(rcid); in rcidm_create_rcid()
369 rcid->state = RCID_STATE_RETIRING; in rcidm_create_rcid()
370 rcid->pq_idx = SIZE_MAX; in rcidm_create_rcid()
371 ossl_list_retiring_insert_tail(&rcidm->retiring_list, rcid); in rcidm_create_rcid()
375 rcidm_check_rcid(rcidm, rcid); in rcidm_create_rcid()
376 return rcid; in rcidm_create_rcid()
379 static void rcidm_transition_rcid(QUIC_RCIDM *rcidm, RCID *rcid, in rcidm_transition_rcid() argument
382 unsigned int old_state = rcid->state; in rcidm_transition_rcid()
385 rcidm_check_rcid(rcidm, rcid); in rcidm_transition_rcid()
395 ossl_pqueue_RCID_remove(rcidm->rcids, rcid->pq_idx); in rcidm_transition_rcid()
396 rcid->pq_idx = SIZE_MAX; in rcidm_transition_rcid()
399 rcid->state = state; in rcidm_transition_rcid()
402 rcidm->cur_rcid = rcid; in rcidm_transition_rcid()
407 ossl_list_retiring_insert_tail(&rcidm->retiring_list, rcid); in rcidm_transition_rcid()
411 rcidm_check_rcid(rcidm, rcid); in rcidm_transition_rcid()
414 static void rcidm_free_rcid(QUIC_RCIDM *rcidm, RCID *rcid) in rcidm_free_rcid() argument
416 if (rcid == NULL) in rcidm_free_rcid()
419 rcidm_check_rcid(rcidm, rcid); in rcidm_free_rcid()
421 switch (rcid->state) { in rcidm_free_rcid()
423 ossl_pqueue_RCID_remove(rcidm->rcids, rcid->pq_idx); in rcidm_free_rcid()
429 ossl_list_retiring_remove(&rcidm->retiring_list, rcid); in rcidm_free_rcid()
437 OPENSSL_free(rcid); in rcidm_free_rcid()
443 RCID *rcid; in rcidm_handle_retire_prior_to() local
459 while ((rcid = ossl_pqueue_RCID_peek(rcidm->rcids)) != NULL in rcidm_handle_retire_prior_to()
460 && rcid->seq_num < retire_prior_to) in rcidm_handle_retire_prior_to()
461 rcidm_transition_rcid(rcidm, rcid, RCID_STATE_RETIRING); in rcidm_handle_retire_prior_to()
473 RCID *rcid; in rcidm_roll() local
475 if ((rcid = ossl_pqueue_RCID_peek(rcidm->rcids)) == NULL) in rcidm_roll()
478 rcidm_transition_rcid(rcidm, rcid, RCID_STATE_CUR); in rcidm_roll()
491 RCID *rcid; in rcidm_update() local
497 && (rcid = ossl_pqueue_RCID_peek(rcidm->rcids)) != NULL) { in rcidm_update()
498 rcidm_transition_rcid(rcidm, rcid, RCID_STATE_CUR); in rcidm_update()
581 const QUIC_CONN_ID *rcid) in ossl_quic_rcidm_add_from_initial() argument
589 rcid, RCID_TYPE_INITIAL); in ossl_quic_rcidm_add_from_initial()
613 RCID *rcid; in ossl_quic_rcidm_add_from_ncid() local
615 rcid = rcidm_create_rcid(rcidm, ncid->seq_num, &ncid->conn_id, RCID_TYPE_NCID); in ossl_quic_rcidm_add_from_ncid()
616 if (rcid == NULL) in ossl_quic_rcidm_add_from_ncid()
631 RCID *rcid = ossl_list_retiring_head(&rcidm->retiring_list); in rcidm_get_retire() local
633 if (rcid == NULL) in rcidm_get_retire()
637 *seq_num = rcid->seq_num; in rcidm_get_retire()
640 rcidm_free_rcid(rcidm, rcid); in rcidm_get_retire()