diff options
author | Florin Coras <fcoras@cisco.com> | 2019-08-31 09:45:13 -0700 |
---|---|---|
committer | Florin Coras <fcoras@cisco.com> | 2019-09-04 10:38:49 -0700 |
commit | 5bb23ecd098eac639641e2b3d62eb8744e0efef0 (patch) | |
tree | 6a9a4e77ea11641c51b381af7019e409e3f013cf /src/vnet/session/transport.c | |
parent | 8b4114e52f69b9292efb282e49ed4d90699ceeb8 (diff) |
session: improve cli
Type: feature
Allow session cli filtering based on thread index, transport protocol,
session state and range of session pool indices. For instance
show session thread 1 proto tcp state ready range 0 20 verbose
Shows the session ids for the first 20 tcp sessions in thread 1 that are
in ready state.
To avoid excessive output that could reasult in the worker barrier being
held by the main thread for long periods of time, the session cli will
only output:
- session ids (verbose == 1) for a maximum of 50 sessions / worker
- verbose > 1 details for a maximum of 10 sessions
Change-Id: I2cfb351b548e2e0a1d5b4345810be613e2917d17
Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/session/transport.c')
-rw-r--r-- | src/vnet/session/transport.c | 85 |
1 files changed, 19 insertions, 66 deletions
diff --git a/src/vnet/session/transport.c b/src/vnet/session/transport.c index aa8deac5400..c1c908eae1a 100644 --- a/src/vnet/session/transport.c +++ b/src/vnet/session/transport.c @@ -57,27 +57,12 @@ format_transport_proto (u8 * s, va_list * args) u32 transport_proto = va_arg (*args, u32); switch (transport_proto) { - case TRANSPORT_PROTO_TCP: - s = format (s, "TCP"); - break; - case TRANSPORT_PROTO_UDP: - s = format (s, "UDP"); - break; - case TRANSPORT_PROTO_SCTP: - s = format (s, "SCTP"); - break; - case TRANSPORT_PROTO_NONE: - s = format (s, "NONE"); - break; - case TRANSPORT_PROTO_TLS: - s = format (s, "TLS"); - break; - case TRANSPORT_PROTO_UDPC: - s = format (s, "UDPC"); - break; - case TRANSPORT_PROTO_QUIC: - s = format (s, "QUIC"); +#define _(sym, str, sstr) \ + case TRANSPORT_PROTO_ ## sym: \ + s = format (s, str); \ break; + foreach_transport_proto +#undef _ default: s = format (s, "UNKNOWN"); break; @@ -91,27 +76,12 @@ format_transport_proto_short (u8 * s, va_list * args) u32 transport_proto = va_arg (*args, u32); switch (transport_proto) { - case TRANSPORT_PROTO_TCP: - s = format (s, "T"); - break; - case TRANSPORT_PROTO_UDP: - s = format (s, "U"); - break; - case TRANSPORT_PROTO_SCTP: - s = format (s, "S"); - break; - case TRANSPORT_PROTO_NONE: - s = format (s, "N"); - break; - case TRANSPORT_PROTO_TLS: - s = format (s, "J"); - break; - case TRANSPORT_PROTO_UDPC: - s = format (s, "U"); - break; - case TRANSPORT_PROTO_QUIC: - s = format (s, "Q"); +#define _(sym, str, sstr) \ + case TRANSPORT_PROTO_ ## sym: \ + s = format (s, sstr); \ break; + foreach_transport_proto +#undef _ default: s = format (s, "?"); break; @@ -179,33 +149,16 @@ uword unformat_transport_proto (unformat_input_t * input, va_list * args) { u32 *proto = va_arg (*args, u32 *); - if (unformat (input, "tcp")) - *proto = TRANSPORT_PROTO_TCP; - else if (unformat (input, "TCP")) - *proto = TRANSPORT_PROTO_TCP; - else if (unformat (input, "udpc")) - *proto = TRANSPORT_PROTO_UDPC; - else if (unformat (input, "UDPC")) - *proto = TRANSPORT_PROTO_UDPC; - else if (unformat (input, "udp")) - *proto = TRANSPORT_PROTO_UDP; - else if (unformat (input, "UDP")) - *proto = TRANSPORT_PROTO_UDP; - else if (unformat (input, "sctp")) - *proto = TRANSPORT_PROTO_SCTP; - else if (unformat (input, "SCTP")) - *proto = TRANSPORT_PROTO_SCTP; - else if (unformat (input, "tls")) - *proto = TRANSPORT_PROTO_TLS; - else if (unformat (input, "TLS")) - *proto = TRANSPORT_PROTO_TLS; - else if (unformat (input, "quic")) - *proto = TRANSPORT_PROTO_QUIC; - else if (unformat (input, "QUIC")) - *proto = TRANSPORT_PROTO_QUIC; - else + +#define _(sym, str, sstr) \ + if (unformat (input, str)) \ + { \ + *proto = TRANSPORT_PROTO_ ## sym; \ + return 1; \ + } + foreach_transport_proto +#undef _ return 0; - return 1; } u32 |