MINOR: quic: filter closing conn on "show quic"

Reduce default "show quic" output by masking connection on
closing/draing state due to a CONNECTION_CLOSE emission/reception. These
connections can still be displayed using the special argument "all".

This should be backported up to 2.7.
This commit is contained in:
Amaury Denoyelle 2023-02-01 17:31:02 +01:00
parent 2eda63b447
commit 3f9758ecab
2 changed files with 16 additions and 2 deletions

View File

@ -2966,10 +2966,11 @@ show resolvers [<resolvers section id>]
too_big: too big response
outdated: number of response arrived too late (after an other name server)
show quic
show quic [all]
Dump information on all active QUIC frontend connections. This command is
restricted and can only be issued on sockets configured for levels "operator"
or "admin".
or "admin". By default, connections on closing or draining state are not
displayed. Use the extra argument "all" to include them in the output.
show servers conn [<backend>]
Dump the current and idle connections state of the servers belonging to the

View File

@ -7624,8 +7624,11 @@ struct show_quic_ctx {
unsigned int epoch;
struct bref bref; /* back-reference to the quic-conn being dumped */
unsigned int thr;
int flags;
};
#define QC_CLI_FL_SHOW_ALL 0x1 /* show closing/draining connections */
static int cli_parse_show_quic(char **args, char *payload, struct appctx *appctx, void *private)
{
struct show_quic_ctx *ctx = applet_reserve_svcctx(appctx, sizeof(*ctx));
@ -7633,8 +7636,12 @@ static int cli_parse_show_quic(char **args, char *payload, struct appctx *appctx
if (!cli_has_level(appctx, ACCESS_LVL_OPER))
return 1;
if (*args[2] && strcmp(args[2], "all") == 0)
ctx->flags |= QC_CLI_FL_SHOW_ALL;
ctx->epoch = _HA_ATOMIC_FETCH_ADD(&qc_epoch, 1);
ctx->thr = 0;
ctx->flags = 0;
LIST_INIT(&ctx->bref.users);
@ -7699,6 +7706,12 @@ static int cli_io_handler_dump_quic(struct appctx *appctx)
continue;
}
if (!ctx->flags & QC_CLI_FL_SHOW_ALL &&
qc->flags & (QUIC_FL_CONN_CLOSING|QUIC_FL_CONN_DRAINING)) {
ctx->bref.ref = qc->el_th_ctx.n;
continue;
}
/* CIDs */
chunk_appendf(&trash, "* %p[%02u]: scid=", qc, qc->tid);
for (cid_len = 0; cid_len < qc->scid.len; ++cid_len)