Skip to content

Commit 20ec83d

Browse files
committed
MINOR: quic: register QMux transport parameter as an extra frame
Use the newly introduced infrastructure for extra QUIC frames definition for QMux usage. This only concerns the frame used for transport parameters exchange. This allows to remove specific code in qf_parser()/qf_builder() helper functions.
1 parent d9f70e5 commit 20ec83d

1 file changed

Lines changed: 19 additions & 16 deletions

File tree

src/quic_frame.c

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1169,17 +1169,16 @@ const struct quic_frame_parser quic_frame_parsers[] = {
11691169
[QUIC_FT_HANDSHAKE_DONE] = { .func = quic_parse_handshake_done_frame, .proto = QF_PROTO_QUIC, .flags = QUIC_FL_RX_PACKET_ACK_ELICITING, .mask = QUIC_FT_PKT_TYPE____1_BITMASK, },
11701170
};
11711171

1172-
/* quic-on-streams transport parameters frame. */
1173-
const uint64_t QUIC_FT_QX_TRANSPORT_PARAMETERS = 0x3f5153300d0a0d0a;
1174-
const struct quic_frame_parser qf_parser_qx_transport_parameters = {
1175-
.func = quic_parse_qmux_transport_parameters,
1176-
.proto = QF_PROTO_QMUX,
1172+
static const struct quic_frame_builder qf_builder_qx_transport_parameters = {
1173+
.func = quic_build_qmux_transport_parameters,
11771174
.mask = 0,
11781175
.flags = 0,
11791176
};
1180-
const struct quic_frame_builder qf_builder_qx_transport_parameters = {
1181-
.func = quic_build_qmux_transport_parameters,
1182-
.mask = 0,
1177+
1178+
static const struct quic_frame_parser qf_parser_qx_transport_parameters = {
1179+
.func = quic_parse_qmux_transport_parameters,
1180+
.proto = QF_PROTO_QMUX,
1181+
.mask = 0,
11831182
.flags = 0,
11841183
};
11851184

@@ -1202,17 +1201,25 @@ static void quic_register_extra_frame(uint64_t type,
12021201
LIST_APPEND(&quic_extra_frame_handlers.list, &handler->list);
12031202
}
12041203

1204+
static struct quic_extra_frame_handler qf_handler_qx_transport_parameters = {
1205+
.builder = qf_builder_qx_transport_parameters,
1206+
.parser = qf_parser_qx_transport_parameters,
1207+
};
1208+
1209+
/* quic-on-streams transport parameters frame. */
1210+
const uint64_t QUIC_FT_QX_TRANSPORT_PARAMETERS = 0x3f5153300d0a0d0a;
1211+
1212+
INITCALL2(STG_REGISTER, quic_register_extra_frame,
1213+
QUIC_FT_QX_TRANSPORT_PARAMETERS,
1214+
&qf_handler_qx_transport_parameters);
1215+
12051216
static const struct quic_frame_parser *qf_parser(uint64_t type)
12061217
{
12071218
const struct quic_extra_frame_handler *frm_handler;
12081219

12091220
if (type < QUIC_FT_MAX)
12101221
return &quic_frame_parsers[type];
12111222

1212-
/* Complete here for extra frame types greater than QUIC_FT_MAX. */
1213-
if (type == QUIC_FT_QX_TRANSPORT_PARAMETERS)
1214-
return &qf_parser_qx_transport_parameters;
1215-
12161223
list_for_each_entry(frm_handler, &quic_extra_frame_handlers.list, list) {
12171224
if (frm_handler->type == type)
12181225
return &frm_handler->parser;
@@ -1247,10 +1254,6 @@ const struct quic_frame_builder *qf_builder(uint64_t type)
12471254
if (type < QUIC_FT_MAX)
12481255
return &quic_frame_builders[type];
12491256

1250-
/* Complete here for extra frame types greater than QUIC_FT_MAX. */
1251-
if (type == QUIC_FT_QX_TRANSPORT_PARAMETERS)
1252-
return &qf_builder_qx_transport_parameters;
1253-
12541257
list_for_each_entry(frm_handler, &quic_extra_frame_handlers.list, list) {
12551258
if (frm_handler->type == type)
12561259
return &frm_handler->builder;

0 commit comments

Comments
 (0)