Amaury Denoyelle 32691e7c25 MINOR: quic: support frame type as a varint
QUIC frame type is encoded as a variable-length integer. Thus, 64-bit
integer should be used for them. Currently, this was not the case as
type was represented as a 1-byte char inside quic_frame structure. This
does not cause any issue with QUIC from RFC9000, as all frame types fit
in this range. Furthermore, a QUIC implementation is required to use the
smallest size varint when encoding a frame type.

However, the current code is unable to accept QUIC extension with bigger
frame types. This is notably the case for quic-on-streams draft. Thus,
this commit readjusts quic_frame architecture to be able to support
higher frame type values.

First, type field of quic_frame is changed to a 64-bits variable. Both
encoding and decoding frame functions uses variable-length integer
helpers to manipulate the frame type field.

Secondly, the quic_frame builders/parsers infrastructure is still
preserved. However, it could be impossible to define new large frame
type as an index into quic_frame_builders / quic_frame_parsers arrays.
Thus, wrapper functions are now provided to access the builders and
parsers. Both qf_builder() and qf_parser() wrappers can then be extended
to return custom builder/parser instances for larger frame type.

Finally, unknown frame type detection also uses the new wrapper
quic_frame_is_known(). As with builders/parsers, for large frame type,
this function must be manually completed to support a new type value.
2025-02-14 09:00:05 +01:00
..
2023-08-01 10:49:06 +02:00
2024-04-05 15:40:42 +02:00
2024-05-16 10:31:17 +02:00
2024-11-29 07:22:32 +01:00
2022-04-22 15:45:47 +02:00
2024-12-10 16:04:11 +01:00
2024-12-10 16:04:11 +01:00
2022-11-29 15:14:39 +01:00
2024-10-24 16:12:46 +02:00
2025-01-30 18:12:40 +01:00
2024-12-12 11:19:10 +01:00
2024-07-12 15:27:04 +02:00
2024-08-07 15:40:52 +02:00