summaryrefslogtreecommitdiffstats
path: root/test/cc_dummy.c
diff options
context:
space:
mode:
authorHugo Landau <hlandau@openssl.org>2023-04-21 10:56:48 +0100
committerMatt Caswell <matt@openssl.org>2023-05-01 11:03:54 +0100
commit878df9be67df14c90ef584e5762a8c1f5c8f9749 (patch)
tree29f19d39fd3315f59bab61ca555073ac2b20f2fa /test/cc_dummy.c
parentb633cf876435f094e4944f30be4dbbc70115f230 (diff)
QUIC CC: Use OSSL_PARAM
Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/20423)
Diffstat (limited to 'test/cc_dummy.c')
-rw-r--r--test/cc_dummy.c68
1 files changed, 46 insertions, 22 deletions
diff --git a/test/cc_dummy.c b/test/cc_dummy.c
index af0d548379..0331a7cdcf 100644
--- a/test/cc_dummy.c
+++ b/test/cc_dummy.c
@@ -12,8 +12,11 @@
typedef struct ossl_cc_dummy_st {
size_t max_dgram_len;
+ size_t *p_diag_max_dgram_len;
} OSSL_CC_DUMMY;
+static void dummy_update_diag(OSSL_CC_DUMMY *d);
+
static OSSL_CC_DATA *dummy_new(OSSL_TIME (*now_cb)(void *arg),
void *now_cb_arg)
{
@@ -36,39 +39,59 @@ static void dummy_reset(OSSL_CC_DATA *cc)
}
-static int dummy_set_option_uint(OSSL_CC_DATA *cc,
- uint32_t option_id,
- uint64_t value)
+static int dummy_set_input_params(OSSL_CC_DATA *cc, const OSSL_PARAM *params)
{
OSSL_CC_DUMMY *d = (OSSL_CC_DUMMY *)cc;
+ const OSSL_PARAM *p;
+ size_t value;
- switch (option_id) {
- case OSSL_CC_OPTION_MAX_DGRAM_PAYLOAD_LEN:
- if (value > SIZE_MAX)
+ p = OSSL_PARAM_locate_const(params, OSSL_CC_OPTION_MAX_DGRAM_PAYLOAD_LEN);
+ if (p != NULL) {
+ if (!OSSL_PARAM_get_size_t(p, &value))
+ return 0;
+ if (value < QUIC_MIN_INITIAL_DGRAM_LEN)
return 0;
- d->max_dgram_len = (size_t)value;
- return 1;
-
- default:
- return 0;
+ d->max_dgram_len = value;
+ dummy_update_diag(d);
}
+
+ return 1;
}
-static int dummy_get_option_uint(OSSL_CC_DATA *cc,
- uint32_t option_id,
- uint64_t *value)
+static int dummy_bind_diagnostic(OSSL_CC_DATA *cc, OSSL_PARAM *params)
{
OSSL_CC_DUMMY *d = (OSSL_CC_DUMMY *)cc;
+ const OSSL_PARAM *p;
- switch (option_id) {
- case OSSL_CC_OPTION_MAX_DGRAM_PAYLOAD_LEN:
- *value = (uint64_t)d->max_dgram_len;
- return 1;
+ p = OSSL_PARAM_locate_const(params, OSSL_CC_OPTION_MAX_DGRAM_PAYLOAD_LEN);
+ if (p != NULL) {
+ if (p->data_type != OSSL_PARAM_UNSIGNED_INTEGER
+ || p->data_size != sizeof(size_t))
+ return 0;
- default:
- return 0;
+ d->p_diag_max_dgram_len = p->data;
}
+
+ dummy_update_diag(d);
+ return 1;
+}
+
+static int dummy_unbind_diagnostic(OSSL_CC_DATA *cc, OSSL_PARAM *params)
+{
+ OSSL_CC_DUMMY *d = (OSSL_CC_DUMMY *)cc;
+
+ if (OSSL_PARAM_locate_const(params, OSSL_CC_OPTION_MAX_DGRAM_PAYLOAD_LEN)
+ != NULL)
+ d->p_diag_max_dgram_len = NULL;
+
+ return 1;
+}
+
+static void dummy_update_diag(OSSL_CC_DUMMY *d)
+{
+ if (d->p_diag_max_dgram_len != NULL)
+ *d->p_diag_max_dgram_len = d->max_dgram_len;
}
static uint64_t dummy_get_tx_allowance(OSSL_CC_DATA *cc)
@@ -115,8 +138,9 @@ const OSSL_CC_METHOD ossl_cc_dummy_method = {
dummy_new,
dummy_free,
dummy_reset,
- dummy_set_option_uint,
- dummy_get_option_uint,
+ dummy_set_input_params,
+ dummy_bind_diagnostic,
+ dummy_unbind_diagnostic,
dummy_get_tx_allowance,
dummy_get_wakeup_deadline,
dummy_on_data_sent,