1 /*
2 * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License 2.0 (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
8 */
9
10 #include "internal/quic_cc.h"
11
12 typedef struct ossl_cc_dummy_st {
13 char dummy;
14 } OSSL_CC_DUMMY;
15
dummy_new(OSSL_PARAM * settings,OSSL_PARAM * options,OSSL_PARAM * changeables)16 static OSSL_CC_DATA *dummy_new(OSSL_PARAM *settings, OSSL_PARAM *options,
17 OSSL_PARAM *changeables)
18 {
19 return OPENSSL_zalloc(sizeof(OSSL_CC_DUMMY));
20 }
21
dummy_free(OSSL_CC_DATA * cc)22 static void dummy_free(OSSL_CC_DATA *cc)
23 {
24 OPENSSL_free(cc);
25 }
26
dummy_reset(OSSL_CC_DATA * cc,int flags)27 static void dummy_reset(OSSL_CC_DATA *cc, int flags)
28 {
29
30 }
31
dummy_set_exemption(OSSL_CC_DATA * cc,int numpackets)32 static int dummy_set_exemption(OSSL_CC_DATA *cc, int numpackets)
33 {
34 return 1;
35 }
36
dummy_get_exemption(OSSL_CC_DATA * cc)37 static int dummy_get_exemption(OSSL_CC_DATA *cc)
38 {
39 return 0;
40 }
41
dummy_can_send(OSSL_CC_DATA * cc)42 static int dummy_can_send(OSSL_CC_DATA *cc)
43 {
44 return 1;
45 }
46
dummy_get_send_allowance(OSSL_CC_DATA * cc,OSSL_TIME time_since_last_send,int time_valid)47 static size_t dummy_get_send_allowance(OSSL_CC_DATA *cc,
48 OSSL_TIME time_since_last_send,
49 int time_valid)
50 {
51 return SIZE_MAX;
52 }
53
dummy_get_bytes_in_flight_max(OSSL_CC_DATA * cc)54 static size_t dummy_get_bytes_in_flight_max(OSSL_CC_DATA *cc)
55 {
56 return SIZE_MAX;
57 }
58
dummy_on_data_sent(OSSL_CC_DATA * cc,size_t num_retransmittable_bytes)59 static int dummy_on_data_sent(OSSL_CC_DATA *cc, size_t num_retransmittable_bytes)
60 {
61 return 1;
62 }
63
dummy_on_data_invalidated(OSSL_CC_DATA * cc,size_t num_retransmittable_bytes)64 static int dummy_on_data_invalidated(OSSL_CC_DATA *cc,
65 size_t num_retransmittable_bytes)
66 {
67 return 1;
68 }
69
dummy_on_data_acked(OSSL_CC_DATA * cc,OSSL_TIME time_now,uint64_t last_pn_acked,size_t num_retransmittable_bytes)70 static int dummy_on_data_acked(OSSL_CC_DATA *cc, OSSL_TIME time_now,
71 uint64_t last_pn_acked,
72 size_t num_retransmittable_bytes)
73 {
74 return 1;
75 }
76
dummy_on_data_lost(OSSL_CC_DATA * cc,uint64_t largest_pn_lost,uint64_t largest_pn_sent,size_t num_retransmittable_bytes,int persistent_congestion)77 static void dummy_on_data_lost(OSSL_CC_DATA *cc,
78 uint64_t largest_pn_lost,
79 uint64_t largest_pn_sent,
80 size_t num_retransmittable_bytes,
81 int persistent_congestion)
82 {
83
84 }
85
dummy_on_spurious_congestion_event(OSSL_CC_DATA * cc)86 static int dummy_on_spurious_congestion_event(OSSL_CC_DATA *cc)
87 {
88 return 1;
89 }
90
91 const OSSL_CC_METHOD ossl_cc_dummy_method = {
92 NULL,
93 dummy_new,
94 dummy_free,
95 dummy_reset,
96 dummy_set_exemption,
97 dummy_get_exemption,
98 dummy_can_send,
99 dummy_get_send_allowance,
100 dummy_get_bytes_in_flight_max,
101 dummy_on_data_sent,
102 dummy_on_data_invalidated,
103 dummy_on_data_acked,
104 dummy_on_data_lost,
105 dummy_on_spurious_congestion_event,
106 };
107