Skip to content

Commit

Permalink
QUIC LCIDM: Add debug calls
Browse files Browse the repository at this point in the history
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from openssl/openssl#22673)

Signed-off-by: fly2x <fly2x@hitls.org>
  • Loading branch information
hlandau authored and fly2x committed Dec 7, 2023
1 parent 1acd878 commit ebb6445
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
17 changes: 17 additions & 0 deletions include/internal/quic_lcidm.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,23 @@ int ossl_quic_lcidm_lookup(QUIC_LCIDM *lcidm,
uint64_t *seq_num,
void **opaque);

/*
* Debug call to manually remove a specific LCID. Should not be needed in normal
* usage. Returns 1 if the LCID was successfully found and removed and 0
* otherwise.
*/
int ossl_quic_lcidm_debug_remove(QUIC_LCIDM *lcidm,
const QUIC_CONN_ID *lcid);

/*
* Debug call to manually add a numbered LCID with a specific CID value and
* sequence number. Should not be needed in normal usage. Returns 1 on success
* and 0 on failure.
*/
int ossl_quic_lcidm_debug_add(QUIC_LCIDM *lcidm, void *opaque,
const QUIC_CONN_ID *lcid,
uint64_t seq_num);

# endif

#endif
38 changes: 38 additions & 0 deletions ssl/quic/quic_lcidm.c
Original file line number Diff line number Diff line change
Expand Up @@ -473,3 +473,41 @@ int ossl_quic_lcidm_lookup(QUIC_LCIDM *lcidm,

return 1;
}

int ossl_quic_lcidm_debug_remove(QUIC_LCIDM *lcidm,
const QUIC_CONN_ID *lcid)
{
QUIC_LCID key, *lcid_obj;

key.cid = *lcid;
if ((lcid_obj = lh_QUIC_LCID_retrieve(lcidm->lcids, &key)) == NULL)
return 0;

lcidm_delete_conn_lcid(lcidm, lcid_obj);
return 1;
}

int ossl_quic_lcidm_debug_add(QUIC_LCIDM *lcidm, void *opaque,
const QUIC_CONN_ID *lcid,
uint64_t seq_num)
{
QUIC_LCIDM_CONN *conn;
QUIC_LCID key, *lcid_obj;

if (lcid == NULL || lcid->id_len > QUIC_MAX_CONN_ID_LEN)
return 0;

if ((conn = lcidm_upsert_conn(lcidm, opaque)) == NULL)
return 0;

key.cid = *lcid;
if (lh_QUIC_LCID_retrieve(lcidm->lcids, &key) != NULL)
return 0;

if ((lcid_obj = lcidm_conn_new_lcid(lcidm, conn, lcid)) == NULL)
return 0;

lcid_obj->seq_num = seq_num;
lcid_obj->type = LCID_TYPE_NCID;
return 1;
}

0 comments on commit ebb6445

Please sign in to comment.