From: Frédéric Lécaille Date: Tue, 7 Mar 2023 14:18:02 +0000 (+0100) Subject: MINOR: quic: Add transport parameters to "show quic" X-Git-Tag: v2.8-dev5~22 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5e3201ea77cc62291a9fa48fcb7622aaae628553;p=thirdparty%2Fhaproxy.git MINOR: quic: Add transport parameters to "show quic" Modify quic_transport_params_dump() and others function relative to the transport parameters value dump from TRACE() to make their output more compact. Add call to quic_transport_params_dump() to dump the transport parameters from "show quic" CLI command. Must be backported to 2.7. --- diff --git a/include/haproxy/quic_tp.h b/include/haproxy/quic_tp.h index 18d568f387..16296e5f8a 100644 --- a/include/haproxy/quic_tp.h +++ b/include/haproxy/quic_tp.h @@ -35,12 +35,8 @@ static inline void quic_tp_cid_dump(struct buffer *buf, { int i; - chunk_appendf(buf, "(%d", cid->len); - if (cid->len) - chunk_appendf(buf, ","); for (i = 0; i < cid->len; i++) chunk_appendf(buf, "%02x", cid->data[i]); - chunk_appendf(buf, ")"); } static inline void quic_tp_version_info_dump(struct buffer *b, @@ -49,7 +45,7 @@ static inline void quic_tp_version_info_dump(struct buffer *b, if (!tp->chosen) return; - chunk_appendf(b, "\n\tversion_information:(chosen=0x%08x", tp->chosen); + chunk_appendf(b, " version_information:(chosen=0x%08x", tp->chosen); if (tp->nb_others) { int i = 0; const uint32_t *ver; @@ -62,8 +58,8 @@ static inline void quic_tp_version_info_dump(struct buffer *b, else chunk_appendf(b, "0x%08x", ntohl(*ver)); } - chunk_appendf(b, ")\n"); } + chunk_appendf(b, ")\n"); } static inline void quic_transport_params_dump(struct buffer *b, @@ -72,30 +68,60 @@ static inline void quic_transport_params_dump(struct buffer *b, { int local = p == &qc->rx.params; - chunk_appendf(b, "\n\toriginal_destination_connection_id:"); - quic_tp_cid_dump(b, &p->original_destination_connection_id); - chunk_appendf(b, "\n\tinitial_source_connection_id:"); + if (p->original_destination_connection_id.len) { + chunk_appendf(b, " odcid="); + quic_tp_cid_dump(b, &p->original_destination_connection_id); + } + chunk_appendf(b, " iscid="); quic_tp_cid_dump(b, &p->initial_source_connection_id); - chunk_appendf(b, "\n\tretry_source_connection_id:"); - quic_tp_cid_dump(b, &p->retry_source_connection_id); + if (p->retry_source_connection_id.len) { + chunk_appendf(b, " rscid="); + quic_tp_cid_dump(b, &p->retry_source_connection_id); + } + chunk_appendf(b, "\n"); + + chunk_appendf(b, " midle_timeout=%llums", (ull)p->max_idle_timeout); + chunk_appendf(b, " mudp_payload_sz=%llu", (ull)p->max_udp_payload_size); + chunk_appendf(b, " ack_delay_exp=%llu", (ull)p->ack_delay_exponent); + chunk_appendf(b, " mack_delay=%llums", (ull)p->max_ack_delay); + chunk_appendf(b, " act_cid_limit=%llu\n", (ull)p->active_connection_id_limit); - chunk_appendf(b, "\n\tmax_idle_timeout=%llu", (ull)p->max_idle_timeout); - chunk_appendf(b, "\n\tmax_udp_payload_size=%llu", (ull)p->max_udp_payload_size); - chunk_appendf(b, "\n\tinitial_max_data=%llu", (ull)p->initial_max_data); - chunk_appendf(b, "\n\tinitial_max_stream_data_bidi_local=%llu", + chunk_appendf(b, " md=%llu", (ull)p->initial_max_data); + chunk_appendf(b, " msd_bidi_l=%llu", (ull)p->initial_max_stream_data_bidi_local); - chunk_appendf(b, "\n\tinitial_max_stream_data_bidi_remote=%llu", + chunk_appendf(b, " msd_bidi_r=%llu", (ull)p->initial_max_stream_data_bidi_remote); - chunk_appendf(b, "\n\tinitial_max_stream_data_uni=%llu", + chunk_appendf(b, " msd_uni=%llu", (ull)p->initial_max_stream_data_uni); - chunk_appendf(b, "\n\tinitial_max_streams_bidi=%llu", (ull)p->initial_max_streams_bidi); - chunk_appendf(b, "\n\tinitial_max_streams_uni=%llu", (ull)p->initial_max_streams_uni); - chunk_appendf(b, "\n\tack_delay_exponent=%llu", (ull)p->ack_delay_exponent); - chunk_appendf(b, "\n\tmax_ack_delay=%llu", (ull)p->max_ack_delay); - chunk_appendf(b, "\n\tactive_connection_id_limit=%llu", (ull)p->active_connection_id_limit); - chunk_appendf(b, "\n\tdisable_active_migration? %s", p->disable_active_migration ? "yes" : "no"); - chunk_appendf(b, "\n\twith_stateless_reset_token? %s", p->with_stateless_reset_token ? "yes" : "no"); - chunk_appendf(b, "\n\twith_preferred_address? %s", p->with_preferred_address ? "yes" : "no"); + chunk_appendf(b, " ms_bidi=%llu", (ull)p->initial_max_streams_bidi); + chunk_appendf(b, " ms_uni=%llu\n", (ull)p->initial_max_streams_uni); + + if (p->disable_active_migration || p->with_stateless_reset_token || + p->with_preferred_address) { + int prev = 0; + + chunk_appendf(b, " ("); + if (p->disable_active_migration) { + if (prev) + chunk_appendf(b, ","); + prev = 1; + chunk_appendf(b, "no_act_migr"); + } + if (p->with_stateless_reset_token) { + if (prev) + chunk_appendf(b, ","); + prev = 1; + chunk_appendf(b, "stless_rst_tok"); + } + if (p->with_preferred_address) { + if (prev) + chunk_appendf(b, ","); + prev = 1; + chunk_appendf(b, "pref_addr"); + } + chunk_appendf(b, ")\n"); + } + quic_tp_version_info_dump(b, &p->version_information, local); } diff --git a/src/quic_conn.c b/src/quic_conn.c index 2cae51cc3e..90a2c5dd25 100644 --- a/src/quic_conn.c +++ b/src/quic_conn.c @@ -8204,6 +8204,11 @@ static int cli_io_handler_dump_quic(struct appctx *appctx) chunk_appendf(&trash, "\n"); + chunk_appendf(&trash, " loc. TPs:"); + quic_transport_params_dump(&trash, qc, &qc->rx.params); + chunk_appendf(&trash, " rem. TPs:"); + quic_transport_params_dump(&trash, qc, &qc->tx.params); + /* Connection state */ if (qc->flags & QUIC_FL_CONN_CLOSING) chunk_appendf(&trash, " st=closing ");