diff options
author | Eugene Syromyatnikov <evgsyr@gmail.com> | 2021-12-09 20:23:12 +0100 |
---|---|---|
committer | Eugene Syromyatnikov <evgsyr@gmail.com> | 2022-07-21 11:29:23 +0200 |
commit | 87e582c5d558b15c98368acd971b3185b89b1ca2 (patch) | |
tree | 6db4a4d48b1b863ada5e0cdb7f49f7b8417e19eb | |
parent | 0077a33889f30fc410b64474e7f4ef3c3d938d4a (diff) | |
download | strace-87e582c5d558b15c98368acd971b3185b89b1ca2.tar.gz |
netlink_inet_diag: factor out struct tcp{vegas,_dctcp,_bbr}_info printing
* src/defs.h (struct tcpvegas_info, struct tcp_dctcp_info,
struct tcp_bbr_info): New type declarations.
(print_tcpvegas_info, print_tcp_dctcp_info, print_tcp_bbr_info): New
function declarations.
* src/netlink_inet_diag.c (print_tcpvegas_info): Factor out the printing
code out of decode_tcpvegas_info.
(decode_tcpvegas_info): Call print_tcpvegas_info for printing the retrieved
structure.
(print_tcp_dctcp_info): Factor out the printing code out
of decode_tcp_dctcp_info.
(decode_tcp_dctcp_info): Call print_tcp_dctcp_info for printing the retrieved
structure.
(print_tcp_bbr_info): Factor out the printing code out
of decode_tcp_bbe_info.
(decode_tcp_bbr_info): Call print_tcp_bbr_info for printing the retrieved
structure.
-rw-r--r-- | src/defs.h | 12 | ||||
-rw-r--r-- | src/netlink_inet_diag.c | 83 |
2 files changed, 64 insertions, 31 deletions
diff --git a/src/defs.h b/src/defs.h index 0b438c0c5..d50a61521 100644 --- a/src/defs.h +++ b/src/defs.h @@ -1338,6 +1338,18 @@ print_perf_event_attr(struct tcb *const tcp, const kernel_ulong_t addr); extern const char *get_ifname(const unsigned int ifindex); extern void print_ifindex(unsigned int); +struct tcpvegas_info; +extern void print_tcpvegas_info(struct tcb *tcp, + const struct tcpvegas_info *vegas, + unsigned int len); +struct tcp_dctcp_info; +extern void print_tcp_dctcp_info(struct tcb *tcp, + const struct tcp_dctcp_info *dctcp, + unsigned int len); +struct tcp_bbr_info; +extern void print_tcp_bbr_info(struct tcb *tcp, const struct tcp_bbr_info *bbr, + unsigned int len); + extern void print_bpf_filter_code(const uint16_t code, bool extended); /** diff --git a/src/netlink_inet_diag.c b/src/netlink_inet_diag.c index 036978978..320dde5cc 100644 --- a/src/netlink_inet_diag.c +++ b/src/netlink_inet_diag.c @@ -306,6 +306,21 @@ decode_inet_diag_meminfo(struct tcb *const tcp, return true; } +void +print_tcpvegas_info(struct tcb *tcp, const struct tcpvegas_info *const vegas, + const unsigned int len) +{ + MAYBE_PRINT_FIELD_LEN(tprint_struct_begin(), + *vegas, tcpv_enabled, len, PRINT_FIELD_U); + MAYBE_PRINT_FIELD_LEN(tprint_struct_next(), + *vegas, tcpv_rttcnt, len, PRINT_FIELD_U); + MAYBE_PRINT_FIELD_LEN(tprint_struct_next(), + *vegas, tcpv_rtt, len, PRINT_FIELD_U); + MAYBE_PRINT_FIELD_LEN(tprint_struct_next(), + *vegas, tcpv_minrtt, len, PRINT_FIELD_U); + tprint_struct_end(); +} + static bool decode_tcpvegas_info(struct tcb *const tcp, const kernel_ulong_t addr, @@ -319,19 +334,28 @@ decode_tcpvegas_info(struct tcb *const tcp, if (umove_or_printaddr(tcp, addr, &vegas)) return true; - tprint_struct_begin(); - PRINT_FIELD_U(vegas, tcpv_enabled); - tprint_struct_next(); - PRINT_FIELD_U(vegas, tcpv_rttcnt); - tprint_struct_next(); - PRINT_FIELD_U(vegas, tcpv_rtt); - tprint_struct_next(); - PRINT_FIELD_U(vegas, tcpv_minrtt); - tprint_struct_end(); + print_tcpvegas_info(tcp, &vegas, len); return true; } +void +print_tcp_dctcp_info(struct tcb *tcp, const struct tcp_dctcp_info *const dctcp, + const unsigned int len) +{ + MAYBE_PRINT_FIELD_LEN(tprint_struct_begin(), + *dctcp, dctcp_enabled, len, PRINT_FIELD_U); + MAYBE_PRINT_FIELD_LEN(tprint_struct_next(), + *dctcp, dctcp_ce_state, len, PRINT_FIELD_U); + MAYBE_PRINT_FIELD_LEN(tprint_struct_next(), + *dctcp, dctcp_alpha, len, PRINT_FIELD_U); + MAYBE_PRINT_FIELD_LEN(tprint_struct_next(), + *dctcp, dctcp_ab_ecn, len, PRINT_FIELD_U); + MAYBE_PRINT_FIELD_LEN(tprint_struct_next(), + *dctcp, dctcp_ab_tot, len, PRINT_FIELD_U); + tprint_struct_end(); +} + static bool decode_tcp_dctcp_info(struct tcb *const tcp, const kernel_ulong_t addr, @@ -345,21 +369,28 @@ decode_tcp_dctcp_info(struct tcb *const tcp, if (umove_or_printaddr(tcp, addr, &dctcp)) return true; - tprint_struct_begin(); - PRINT_FIELD_U(dctcp, dctcp_enabled); - tprint_struct_next(); - PRINT_FIELD_U(dctcp, dctcp_ce_state); - tprint_struct_next(); - PRINT_FIELD_U(dctcp, dctcp_alpha); - tprint_struct_next(); - PRINT_FIELD_U(dctcp, dctcp_ab_ecn); - tprint_struct_next(); - PRINT_FIELD_U(dctcp, dctcp_ab_tot); - tprint_struct_end(); + print_tcp_dctcp_info(tcp, &dctcp, len); return true; } +void +print_tcp_bbr_info(struct tcb *tcp, const struct tcp_bbr_info *const bbr, + const unsigned int len) +{ + MAYBE_PRINT_FIELD_LEN(tprint_struct_begin(), + *bbr, bbr_bw_lo, len, PRINT_FIELD_X); + MAYBE_PRINT_FIELD_LEN(tprint_struct_next(), + *bbr, bbr_bw_hi, len, PRINT_FIELD_X); + MAYBE_PRINT_FIELD_LEN(tprint_struct_next(), + *bbr, bbr_min_rtt, len, PRINT_FIELD_U); + MAYBE_PRINT_FIELD_LEN(tprint_struct_next(), + *bbr, bbr_pacing_gain, len, PRINT_FIELD_U); + MAYBE_PRINT_FIELD_LEN(tprint_struct_next(), + *bbr, bbr_cwnd_gain, len, PRINT_FIELD_U); + tprint_struct_end(); +} + static bool decode_tcp_bbr_info(struct tcb *const tcp, const kernel_ulong_t addr, @@ -373,17 +404,7 @@ decode_tcp_bbr_info(struct tcb *const tcp, if (umove_or_printaddr(tcp, addr, &bbr)) return true; - tprint_struct_begin(); - PRINT_FIELD_X(bbr, bbr_bw_lo); - tprint_struct_next(); - PRINT_FIELD_X(bbr, bbr_bw_hi); - tprint_struct_next(); - PRINT_FIELD_U(bbr, bbr_min_rtt); - tprint_struct_next(); - PRINT_FIELD_U(bbr, bbr_pacing_gain); - tprint_struct_next(); - PRINT_FIELD_U(bbr, bbr_cwnd_gain); - tprint_struct_end(); + print_tcp_bbr_info(tcp, &bbr, len); return true; } |