Lines Matching full:ch

32 static int depack_do_implicit_stream_create(QUIC_CHANNEL *ch,
44 static int depack_do_frame_ping(PACKET *pkt, QUIC_CHANNEL *ch, in depack_do_frame_ping() argument
50 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_ping()
57 ossl_quic_tx_packetiser_schedule_ack_eliciting(ch->txp, enc_level); in depack_do_frame_ping()
61 static int depack_do_frame_ack(PACKET *pkt, QUIC_CHANNEL *ch, in depack_do_frame_ack() argument
69 uint32_t ack_delay_exp = ch->rx_ack_delay_exp; in depack_do_frame_ack()
76 if (ch->num_ack_range_scratch < (size_t)total_ranges) { in depack_do_frame_ack()
77 if ((p = OPENSSL_realloc(ch->ack_range_scratch, in depack_do_frame_ack()
82 ch->ack_range_scratch = p; in depack_do_frame_ack()
83 ch->num_ack_range_scratch = (size_t)total_ranges; in depack_do_frame_ack()
86 ack.ack_ranges = ch->ack_range_scratch; in depack_do_frame_ack()
93 && (qpacket->key_epoch < ossl_qrx_get_key_epoch(ch->qrx) in depack_do_frame_ack()
94 || ch->rxku_expected) in depack_do_frame_ack()
95 && ack.ack_ranges[0].end >= ch->txku_pn) { in depack_do_frame_ack()
105 * have detected RXKU; !ch->rxku_expected, but then it sent a packet in depack_do_frame_ack()
112 * - We did spontaneous TXKU; ch->txku_pn is the starting PN of our in depack_do_frame_ack()
115 * epoch has not incremented and ch->rxku_expected is still 1. in depack_do_frame_ack()
117 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_ack()
126 if (!ossl_ackm_on_rx_ack_frame(ch->ackm, &ack, in depack_do_frame_ack()
130 ++ch->diag_num_rx_ack; in depack_do_frame_ack()
134 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_ack()
142 QUIC_CHANNEL *ch, in depack_do_frame_reset_stream() argument
150 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_reset_stream()
157 if (!depack_do_implicit_stream_create(ch, frame_data.stream_id, in depack_do_frame_reset_stream()
166 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_reset_stream()
186 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_reset_stream()
196 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_reset_stream()
209 ossl_quic_stream_map_notify_reset_recv_part(&ch->qsm, stream, in depack_do_frame_reset_stream()
213 ossl_quic_stream_map_update_state(&ch->qsm, stream); in depack_do_frame_reset_stream()
218 QUIC_CHANNEL *ch, in depack_do_frame_stop_sending() argument
225 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_stop_sending()
232 if (!depack_do_implicit_stream_create(ch, frame_data.stream_id, in depack_do_frame_stop_sending()
241 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_stop_sending()
257 ossl_quic_stream_map_reset_stream_send_part(&ch->qsm, stream, in depack_do_frame_stop_sending()
262 static int depack_do_frame_crypto(PACKET *pkt, QUIC_CHANNEL *ch, in depack_do_frame_crypto() argument
274 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_crypto()
284 rstream = ch->crypto_recv[ackm_data->pkt_space]; in depack_do_frame_crypto()
293 rxfc = &ch->crypto_rxfc[ackm_data->pkt_space]; in depack_do_frame_crypto()
297 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_crypto()
305 ossl_quic_channel_raise_protocol_error(ch, OSSL_QUIC_ERR_CRYPTO_BUFFER_EXCEEDED, in depack_do_frame_crypto()
313 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_crypto()
320 ch->did_crypto_frame = 1; in depack_do_frame_crypto()
326 static int depack_do_frame_new_token(PACKET *pkt, QUIC_CHANNEL *ch, in depack_do_frame_new_token() argument
333 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_new_token()
346 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_new_token()
354 if (!ossl_quic_set_peer_token(ossl_quic_port_get_channel_ctx(ch->port), in depack_do_frame_new_token()
355 &ch->cur_peer_addr, token, token_len)) in depack_do_frame_new_token()
366 static int depack_do_implicit_stream_create(QUIC_CHANNEL *ch, in depack_do_implicit_stream_create() argument
377 stream = ossl_quic_stream_map_get_by_id(&ch->qsm, stream_id); in depack_do_implicit_stream_create()
401 peer_role = ch->is_server in depack_do_implicit_stream_create()
419 ? &ch->next_remote_stream_ordinal_uni in depack_do_implicit_stream_create()
420 : &ch->next_remote_stream_ordinal_bidi; in depack_do_implicit_stream_create()
424 ? &ch->max_streams_uni_rxfc in depack_do_implicit_stream_create()
425 : &ch->max_streams_bidi_rxfc; in depack_do_implicit_stream_create()
430 ossl_quic_channel_raise_protocol_error(ch, in depack_do_implicit_stream_create()
438 ossl_quic_channel_raise_protocol_error(ch, OSSL_QUIC_ERR_STREAM_LIMIT_ERROR, in depack_do_implicit_stream_create()
453 stream = ossl_quic_channel_new_stream_remote(ch, cur_stream_id); in depack_do_implicit_stream_create()
455 ossl_quic_channel_raise_protocol_error(ch, in depack_do_implicit_stream_create()
469 ? &ch->next_local_stream_ordinal_uni in depack_do_implicit_stream_create()
470 : &ch->next_local_stream_ordinal_bidi; in depack_do_implicit_stream_create()
477 ossl_quic_channel_raise_protocol_error(ch, in depack_do_implicit_stream_create()
497 static int depack_do_frame_stream(PACKET *pkt, QUIC_CHANNEL *ch, in depack_do_frame_stream() argument
512 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_stream()
519 if (!depack_do_implicit_stream_create(ch, frame_data.stream_id, in depack_do_frame_stream()
531 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_stream()
543 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_stream()
553 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_stream()
586 ossl_quic_stream_map_notify_size_known_recv_part(&ch->qsm, stream, in depack_do_frame_stream()
615 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_stream()
630 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_stream()
638 ossl_quic_stream_map_notify_totally_received(&ch->qsm, stream); in depack_do_frame_stream()
647 QUIC_CHANNEL *ch = arg; in update_streams() local
649 ossl_quic_stream_map_update_state(&ch->qsm, s); in update_streams()
654 QUIC_CHANNEL *ch = arg; in update_streams_bidi() local
659 ossl_quic_stream_map_update_state(&ch->qsm, s); in update_streams_bidi()
664 QUIC_CHANNEL *ch = arg; in update_streams_uni() local
669 ossl_quic_stream_map_update_state(&ch->qsm, s); in update_streams_uni()
672 static int depack_do_frame_max_data(PACKET *pkt, QUIC_CHANNEL *ch, in depack_do_frame_max_data() argument
678 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_max_data()
685 ossl_quic_txfc_bump_cwm(&ch->conn_txfc, max_data); in depack_do_frame_max_data()
686 ossl_quic_stream_map_visit(&ch->qsm, update_streams, ch); in depack_do_frame_max_data()
691 QUIC_CHANNEL *ch, in depack_do_frame_max_stream_data() argument
700 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_max_stream_data()
707 if (!depack_do_implicit_stream_create(ch, stream_id, in depack_do_frame_max_stream_data()
716 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_max_stream_data()
725 ossl_quic_stream_map_update_state(&ch->qsm, stream); in depack_do_frame_max_stream_data()
730 QUIC_CHANNEL *ch, in depack_do_frame_max_streams() argument
737 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_max_streams()
745 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_max_streams()
754 if (max_streams > ch->max_local_streams_bidi) in depack_do_frame_max_streams()
755 ch->max_local_streams_bidi = max_streams; in depack_do_frame_max_streams()
758 ossl_quic_stream_map_visit(&ch->qsm, update_streams_bidi, ch); in depack_do_frame_max_streams()
761 if (max_streams > ch->max_local_streams_uni) in depack_do_frame_max_streams()
762 ch->max_local_streams_uni = max_streams; in depack_do_frame_max_streams()
765 ossl_quic_stream_map_visit(&ch->qsm, update_streams_uni, ch); in depack_do_frame_max_streams()
768 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_max_streams()
779 QUIC_CHANNEL *ch, in depack_do_frame_data_blocked() argument
785 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_data_blocked()
797 QUIC_CHANNEL *ch, in depack_do_frame_stream_data_blocked() argument
806 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_stream_data_blocked()
817 if (!depack_do_implicit_stream_create(ch, stream_id, in depack_do_frame_stream_data_blocked()
831 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_stream_data_blocked()
844 QUIC_CHANNEL *ch, in depack_do_frame_streams_blocked() argument
851 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_streams_blocked()
865 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_streams_blocked()
877 QUIC_CHANNEL *ch, in depack_do_frame_new_conn_id() argument
883 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_new_conn_id()
890 ossl_quic_channel_on_new_conn_id(ch, &frame_data); in depack_do_frame_new_conn_id()
896 QUIC_CHANNEL *ch, in depack_do_frame_retire_conn_id() argument
902 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_retire_conn_id()
922 if (!ch->is_server) { in depack_do_frame_retire_conn_id()
923 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_retire_conn_id()
939 QUIC_CHANNEL *ch, in depack_do_frame_path_challenge() argument
948 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_path_challenge()
976 if (!ossl_quic_cfq_add_frame(ch->cfq, 0, QUIC_PN_SPACE_APP, in depack_do_frame_path_challenge()
987 ossl_quic_channel_raise_protocol_error(ch, OSSL_QUIC_ERR_INTERNAL_ERROR, in depack_do_frame_path_challenge()
994 QUIC_CHANNEL *ch, in depack_do_frame_path_response() argument
1000 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_path_response()
1007 /* TODO(QUIC MULTIPATH): ADD CODE to send |frame_data| to the ch manager */ in depack_do_frame_path_response()
1012 static int depack_do_frame_conn_close(PACKET *pkt, QUIC_CHANNEL *ch, in depack_do_frame_conn_close() argument
1018 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_conn_close()
1025 ossl_quic_channel_on_remote_conn_close(ch, &frame_data); in depack_do_frame_conn_close()
1030 QUIC_CHANNEL *ch, in depack_do_frame_handshake_done() argument
1035 ossl_quic_channel_raise_protocol_error(ch, in depack_do_frame_handshake_done()
1042 ossl_quic_channel_on_handshake_confirmed(ch); in depack_do_frame_handshake_done()
1048 static int depack_process_frames(QUIC_CHANNEL *ch, PACKET *pkt, in depack_process_frames() argument
1061 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1074 if (ch->msg_callback != NULL) in depack_process_frames()
1078 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1086 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1114 if (!depack_do_frame_ping(pkt, ch, enc_level, ackm_data)) in depack_process_frames()
1127 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1133 if (!depack_do_frame_ack(pkt, ch, packet_space, received, in depack_process_frames()
1142 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1149 if (!depack_do_frame_reset_stream(pkt, ch, ackm_data)) in depack_process_frames()
1156 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1163 if (!depack_do_frame_stop_sending(pkt, ch, ackm_data)) in depack_process_frames()
1169 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1175 if (!depack_do_frame_crypto(pkt, ch, parent_pkt, ackm_data, &datalen)) in depack_process_frames()
1181 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1192 if (ch->is_server) { in depack_process_frames()
1193 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1200 if (!depack_do_frame_new_token(pkt, ch, ackm_data)) in depack_process_frames()
1215 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1221 if (!depack_do_frame_stream(pkt, ch, parent_pkt, ackm_data, in depack_process_frames()
1230 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1236 if (!depack_do_frame_max_data(pkt, ch, ackm_data)) in depack_process_frames()
1243 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1249 if (!depack_do_frame_max_stream_data(pkt, ch, ackm_data)) in depack_process_frames()
1258 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1264 if (!depack_do_frame_max_streams(pkt, ch, ackm_data, in depack_process_frames()
1273 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1279 if (!depack_do_frame_data_blocked(pkt, ch, ackm_data)) in depack_process_frames()
1286 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1292 if (!depack_do_frame_stream_data_blocked(pkt, ch, ackm_data)) in depack_process_frames()
1301 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1307 if (!depack_do_frame_streams_blocked(pkt, ch, ackm_data, in depack_process_frames()
1316 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1321 if (!depack_do_frame_new_conn_id(pkt, ch, ackm_data)) in depack_process_frames()
1328 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1334 if (!depack_do_frame_retire_conn_id(pkt, ch, ackm_data)) in depack_process_frames()
1341 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1347 if (!depack_do_frame_path_challenge(pkt, ch, ackm_data)) in depack_process_frames()
1354 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1360 if (!depack_do_frame_path_response(pkt, ch, ackm_data)) in depack_process_frames()
1368 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1377 if (!depack_do_frame_conn_close(pkt, ch, frame_type)) in depack_process_frames()
1384 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1390 if (!depack_do_frame_handshake_done(pkt, ch, ackm_data)) in depack_process_frames()
1396 ossl_quic_channel_raise_protocol_error(ch, in depack_process_frames()
1403 if (ch->msg_callback != NULL) { in depack_process_frames()
1416 ch->msg_callback(0, OSSL_QUIC1_VERSION, ctype, sof, framelen, in depack_process_frames()
1417 ch->msg_callback_ssl, ch->msg_callback_arg); in depack_process_frames()
1425 int ossl_quic_handle_frames(QUIC_CHANNEL *ch, OSSL_QRX_PKT *qpacket) in ossl_quic_handle_frames() argument
1432 if (ch == NULL) in ossl_quic_handle_frames()
1435 ch->did_crypto_frame = 0; in ossl_quic_handle_frames()
1464 ossl_quic_tx_packetiser_set_validated(ch->txp); in ossl_quic_handle_frames()
1466 ossl_quic_tx_packetiser_add_unvalidated_credit(ch->txp, dgram_len); in ossl_quic_handle_frames()
1470 || !depack_process_frames(ch, &pkt, qpacket, in ossl_quic_handle_frames()
1476 ossl_ackm_on_rx_packet(ch->ackm, &ackm_data); in ossl_quic_handle_frames()