OSSL_ACKM
int ossl_ackm_on_tx_packet(OSSL_ACKM *ackm, OSSL_ACKM_TX_PKT *pkt);
int ossl_ackm_on_rx_datagram(OSSL_ACKM *ackm, size_t num_bytes);
int ossl_ackm_on_rx_packet(OSSL_ACKM *ackm, const OSSL_ACKM_RX_PKT *pkt);
int ossl_ackm_on_rx_ack_frame(OSSL_ACKM *ackm, const OSSL_QUIC_FRAME_ACK *ack,
int ossl_ackm_on_pkt_space_discarded(OSSL_ACKM *ackm, int pkt_space);
int ossl_ackm_on_handshake_confirmed(OSSL_ACKM *ackm);
int ossl_ackm_on_timeout(OSSL_ACKM *ackm);
OSSL_TIME ossl_ackm_get_loss_detection_deadline(OSSL_ACKM *ackm);
const OSSL_QUIC_FRAME_ACK *ossl_ackm_get_ack_frame(OSSL_ACKM *ackm,
OSSL_TIME ossl_ackm_get_ack_deadline(OSSL_ACKM *ackm, int pkt_space);
int ossl_ackm_is_ack_desired(OSSL_ACKM *ackm, int pkt_space);
OSSL_ACKM *ossl_ackm_new(OSSL_TIME (*now)(void *arg),
int ossl_ackm_is_rx_pn_processable(OSSL_ACKM *ackm, QUIC_PN pn, int pkt_space);
OSSL_ACKM_PROBE_INFO *ossl_ackm_get0_probe_request(OSSL_ACKM *ackm);
void ossl_ackm_free(OSSL_ACKM *ackm);
int ossl_ackm_get_largest_unacked(OSSL_ACKM *ackm, int pkt_space, QUIC_PN *pn);
int ossl_ackm_mark_packet_pseudo_lost(OSSL_ACKM *ackm,
OSSL_TIME ossl_ackm_get_pto_duration(OSSL_ACKM *ackm);
void ossl_ackm_set_loss_detection_deadline_callback(OSSL_ACKM *ackm,
QUIC_PN ossl_ackm_get_largest_acked(OSSL_ACKM *ackm, int pkt_space);
void ossl_ackm_set_ack_deadline_callback(OSSL_ACKM *ackm,
void ossl_ackm_set_rx_max_ack_delay(OSSL_ACKM *ackm, OSSL_TIME rx_max_ack_delay);
void ossl_ackm_set_tx_max_ack_delay(OSSL_ACKM *ackm, OSSL_TIME tx_max_ack_delay);
OSSL_ACKM *ackm;
OSSL_ACKM *ackm,
OSSL_ACKM *ackm; /* QUIC Acknowledgement Manager */
OSSL_ACKM *ossl_ackm_new(OSSL_TIME (*now)(void *arg),
OSSL_ACKM *ackm;
ackm = OPENSSL_zalloc(sizeof(OSSL_ACKM));
void ossl_ackm_free(OSSL_ACKM *ackm)
int ossl_ackm_on_tx_packet(OSSL_ACKM *ackm, OSSL_ACKM_TX_PKT *pkt)
int ossl_ackm_on_rx_datagram(OSSL_ACKM *ackm, size_t num_bytes)
static void ackm_process_ecn(OSSL_ACKM *ackm, const OSSL_QUIC_FRAME_ACK *ack,
int ossl_ackm_on_rx_ack_frame(OSSL_ACKM *ackm, const OSSL_QUIC_FRAME_ACK *ack,
int ossl_ackm_on_pkt_space_discarded(OSSL_ACKM *ackm, int pkt_space)
int ossl_ackm_on_handshake_confirmed(OSSL_ACKM *ackm)
static void ackm_queue_probe_anti_deadlock_handshake(OSSL_ACKM *ackm)
static void ackm_queue_probe_anti_deadlock_initial(OSSL_ACKM *ackm)
static void ackm_queue_probe(OSSL_ACKM *ackm, int pkt_space)
int ossl_ackm_on_timeout(OSSL_ACKM *ackm)
OSSL_TIME ossl_ackm_get_loss_detection_deadline(OSSL_ACKM *ackm)
OSSL_ACKM_PROBE_INFO *ossl_ackm_get0_probe_request(OSSL_ACKM *ackm)
int ossl_ackm_get_largest_unacked(OSSL_ACKM *ackm, int pkt_space, QUIC_PN *pn)
int ossl_ackm_is_ack_desired(OSSL_ACKM *ackm, int pkt_space)
static int ackm_is_missing(OSSL_ACKM *ackm, int pkt_space, QUIC_PN pkt_num)
static int ackm_has_newly_missing(OSSL_ACKM *ackm, int pkt_space)
static void ackm_set_flush_deadline(OSSL_ACKM *ackm, int pkt_space,
static void ackm_queue_ack(OSSL_ACKM *ackm, int pkt_space)
static void ackm_on_rx_ack_eliciting(OSSL_ACKM *ackm,
int ossl_ackm_on_rx_packet(OSSL_ACKM *ackm, const OSSL_ACKM_RX_PKT *pkt)
static void ackm_fill_rx_ack_ranges(OSSL_ACKM *ackm, int pkt_space,
const OSSL_QUIC_FRAME_ACK *ossl_ackm_get_ack_frame(OSSL_ACKM *ackm,
OSSL_TIME ossl_ackm_get_ack_deadline(OSSL_ACKM *ackm, int pkt_space)
int ossl_ackm_is_rx_pn_processable(OSSL_ACKM *ackm, QUIC_PN pn, int pkt_space)
void ossl_ackm_set_loss_detection_deadline_callback(OSSL_ACKM *ackm,
void ossl_ackm_set_ack_deadline_callback(OSSL_ACKM *ackm,
int ossl_ackm_mark_packet_pseudo_lost(OSSL_ACKM *ackm,
OSSL_TIME ossl_ackm_get_pto_duration(OSSL_ACKM *ackm)
QUIC_PN ossl_ackm_get_largest_acked(OSSL_ACKM *ackm, int pkt_space)
void ossl_ackm_set_rx_max_ack_delay(OSSL_ACKM *ackm, OSSL_TIME rx_max_ack_delay)
void ossl_ackm_set_tx_max_ack_delay(OSSL_ACKM *ackm, OSSL_TIME tx_max_ack_delay)
static struct tx_pkt_history_st *get_tx_history(OSSL_ACKM *ackm, int pkt_space)
static struct rx_pkt_history_st *get_rx_history(OSSL_ACKM *ackm, int pkt_space)
static uint64_t ackm_ack_eliciting_bytes_in_flight(OSSL_ACKM *ackm)
static OSSL_ACKM_TX_PKT *ackm_detect_and_remove_newly_acked_pkts(OSSL_ACKM *ackm,
static OSSL_ACKM_TX_PKT *ackm_detect_and_remove_lost_pkts(OSSL_ACKM *ackm,
static OSSL_TIME ackm_get_loss_time_and_space(OSSL_ACKM *ackm, int *pspace)
static OSSL_TIME ackm_get_pto_time_and_space(OSSL_ACKM *ackm, int *space)
static void ackm_set_loss_detection_timer_actual(OSSL_ACKM *ackm,
static int ackm_set_loss_detection_timer(OSSL_ACKM *ackm)
static int ackm_in_persistent_congestion(OSSL_ACKM *ackm,
static void ackm_on_pkts_lost(OSSL_ACKM *ackm, int pkt_space,
static void ackm_on_pkts_acked(OSSL_ACKM *ackm, const OSSL_ACKM_TX_PKT *apkt)
OSSL_ACKM *ackm;
OSSL_ACKM *ackm,
OSSL_ACKM *ackm;
OSSL_ACKM *ackm;