ddb: use %b when showing flags for a tcpcb

This is much more compact. Thanks to markj@ for suggesting the change.

Reviewed by:		markj, Peter Lei, imp, Nick Banks
MFC after:		3 days
Sponsored by:		Netflix, Inc.
Differential Revision:	https://reviews.freebsd.org/D53510
This commit is contained in:
Michael Tuexen committed 2025-11-02 11:15:47 -05:00
1 parent e8c50058e8
commit 8e8956f7f9
2 files changed
+33 -261

No files matched your search

+4 -261
View File
@@ -2798,258 +2798,6 @@ db_print_tstate(int t_state)
}
}
static void
db_print_tflags(u_int t_flags)
{
int comma;
comma = 0;
if (t_flags & TF_ACKNOW) {
db_printf("%sTF_ACKNOW", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_DELACK) {
db_printf("%sTF_DELACK", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_NODELAY) {
db_printf("%sTF_NODELAY", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_NOOPT) {
db_printf("%sTF_NOOPT", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_SENTFIN) {
db_printf("%sTF_SENTFIN", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_REQ_SCALE) {
db_printf("%sTF_REQ_SCALE", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_RCVD_SCALE) {
db_printf("%sTF_RECVD_SCALE", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_REQ_TSTMP) {
db_printf("%sTF_REQ_TSTMP", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_RCVD_TSTMP) {
db_printf("%sTF_RCVD_TSTMP", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_SACK_PERMIT) {
db_printf("%sTF_SACK_PERMIT", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_NEEDSYN) {
db_printf("%sTF_NEEDSYN", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_NEEDFIN) {
db_printf("%sTF_NEEDFIN", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_NOPUSH) {
db_printf("%sTF_NOPUSH", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_PREVVALID) {
db_printf("%sTF_PREVVALID", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_WAKESOR) {
db_printf("%sTF_WAKESOR", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_GPUTINPROG) {
db_printf("%sTF_GPUTINPROG", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_MORETOCOME) {
db_printf("%sTF_MORETOCOME", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_SONOTCONN) {
db_printf("%sTF_SONOTCONN", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_LASTIDLE) {
db_printf("%sTF_LASTIDLE", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_RXWIN0SENT) {
db_printf("%sTF_RXWIN0SENT", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_FASTRECOVERY) {
db_printf("%sTF_FASTRECOVERY", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_WASFRECOVERY) {
db_printf("%sTF_WASFRECOVERY", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_SIGNATURE) {
db_printf("%sTF_SIGNATURE", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_FORCEDATA) {
db_printf("%sTF_FORCEDATA", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_TSO) {
db_printf("%sTF_TSO", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_TOE) {
db_printf("%sTF_TOE", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_CLOSED) {
db_printf("%sTF_CLOSED", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_SENTSYN) {
db_printf("%sTF_SENTSYN", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_LRD) {
db_printf("%sTF_LRD", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_CONGRECOVERY) {
db_printf("%sTF_CONGRECOVERY", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_WASCRECOVERY) {
db_printf("%sTF_WASCRECOVERY", comma ? ", " : "");
comma = 1;
}
if (t_flags & TF_FASTOPEN) {
db_printf("%sTF_FASTOPEN", comma ? ", " : "");
comma = 1;
}
}
static void
db_print_tflags2(u_int t_flags2)
{
int comma;
comma = 0;
if (t_flags2 & TF2_PLPMTU_BLACKHOLE) {
db_printf("%sTF2_PLPMTU_BLACKHOLE", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_PLPMTU_PMTUD) {
db_printf("%sTF2_PLPMTU_PMTUD", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_PLPMTU_MAXSEGSNT) {
db_printf("%sTF2_PLPMTU_MAXSEGSNT", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_LOG_AUTO) {
db_printf("%sTF2_LOG_AUTO", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_DROP_AF_DATA) {
db_printf("%sTF2_DROP_AF_DATA", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_ECN_PERMIT) {
db_printf("%sTF2_ECN_PERMIT", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_ECN_SND_CWR) {
db_printf("%sTF2_ECN_SND_CWR", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_ECN_SND_ECE) {
db_printf("%sTF2_ECN_SND_ECE", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_ACE_PERMIT) {
db_printf("%sTF2_ACE_PERMIT", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_HPTS_CPU_SET) {
db_printf("%sTF2_HPTS_CPU_SET", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_FBYTES_COMPLETE) {
db_printf("%sTF2_FBYTES_COMPLETE", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_ECN_USE_ECT1) {
db_printf("%sTF2_ECN_USE_ECT1", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_TCP_ACCOUNTING) {
db_printf("%sTF2_TCP_ACCOUNTING", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_HPTS_CALLS) {
db_printf("%sTF2_HPTS_CALLS", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_MBUF_L_ACKS) {
db_printf("%sTF2_MBUF_L_ACKS", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_MBUF_ACKCMP) {
db_printf("%sTF2_MBUF_ACKCMP", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_SUPPORTS_MBUFQ) {
db_printf("%sTF2_SUPPORTS_MBUFQ", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_MBUF_QUEUE_READY) {
db_printf("%sTF2_MBUF_QUEUE_READY", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_DONT_SACK_QUEUE) {
db_printf("%sTF2_DONT_SACK_QUEUE", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_CANNOT_DO_ECN) {
db_printf("%sTF2_CANNOT_DO_ECN", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_PROC_SACK_PROHIBIT) {
db_printf("%sTF2_PROC_SACK_PROHIBIT", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_IPSEC_TSO) {
db_printf("%sTF2_IPSEC_TSO", comma ? ", " : "");
comma = 1;
}
if (t_flags2 & TF2_NO_ISS_CHECK) {
db_printf("%sTF2_NO_ISS_CHECK", comma ? ", " : "");
comma = 1;
}
}
static void
db_print_toobflags(char t_oobflags)
{
int comma;
comma = 0;
if (t_oobflags & TCPOOB_HAVEDATA) {
db_printf("%sTCPOOB_HAVEDATA", comma ? ", " : "");
comma = 1;
}
if (t_oobflags & TCPOOB_HADDATA) {
db_printf("%sTCPOOB_HADDATA", comma ? ", " : "");
comma = 1;
}
}
static void
db_print_bblog_state(int state)
{
@@ -3114,14 +2862,10 @@ db_print_tcpcb(struct tcpcb *tp, const char *name, int indent, bool show_bblog,
db_printf(")\n");
db_print_indent(indent);
db_printf("t_flags: 0x%x (", tp->t_flags);
db_print_tflags(tp->t_flags);
db_printf(")\n");
db_printf("t_flags: 0x%b\n", tp->t_flags, TF_BITS);
db_print_indent(indent);
db_printf("t_flags2: 0x%x (", tp->t_flags2);
db_print_tflags2(tp->t_flags2);
db_printf(")\n");
db_printf("t_flags2: 0x%b\n", tp->t_flags2, TF2_BITS);
db_print_indent(indent);
db_printf("snd_una: 0x%08x snd_max: 0x%08x snd_nxt: 0x%08x\n",
@@ -3168,9 +2912,8 @@ db_print_tcpcb(struct tcpcb *tp, const char *name, int indent, bool show_bblog,
tp->t_rttupdated, tp->max_sndwnd, tp->t_softerror);
db_print_indent(indent);
db_printf("t_oobflags: 0x%x (", tp->t_oobflags);
db_print_toobflags(tp->t_oobflags);
db_printf(") t_iobc: 0x%02x\n", tp->t_iobc);
db_printf("t_oobflags: 0x%b t_iobc: 0x%02x\n", tp->t_oobflags,
TCPOOB_BITS, tp->t_iobc);
db_print_indent(indent);
db_printf("snd_scale: %u rcv_scale: %u request_r_scale: %u\n",
+29
View File
@@ -795,6 +795,17 @@ tcp_packets_this_ack(struct tcpcb *tp, tcp_seq ack)
#define TF_WASCRECOVERY 0x40000000 /* was in congestion recovery */
#define TF_FASTOPEN 0x80000000 /* TCP Fast Open indication */
/* t_flags description for use with printf(9) %b identifier. */
#define TF_BITS "\20" \
"\1TF_ACKNOW\2TF_DELACK\3TF_NODELAY\4TF_NOOPT" \
"\5TF_SENTFIN\6TF_REQ_SCALE\7TF_RCVD_SCALE\10TF_REQ_TSTMP" \
"\11TF_RCVD_TSTMP\12TF_SACK_PERMIT\13TF_NEEDSYN\14TF_NEEDFIN" \
"\15TF_NOPUSH\16TF_PREVVALID\17TF_WAKESOR\20TF_GPUTINPROG" \
"\21TF_MORETOCOME\22TF_SONOTCONN\23TF_LASTIDLE\24TF_RXWIN0SENT" \
"\25TF_FASTRECOVERY\26TF_WASFRECOVERY\27TF_SIGNATURE\30TF_FORCEDATA" \
"\31TF_TSO\32TF_TOE\33TF_CLOSED\34TF_SENTSYN" \
"\35TF_LRD\36TF_CONGRECOVERY\37TF_WASCRECOVERY\40TF_FASTOPEN"
#define IN_FASTRECOVERY(t_flags) (t_flags & TF_FASTRECOVERY)
#define ENTER_FASTRECOVERY(t_flags) t_flags |= TF_FASTRECOVERY
#define EXIT_FASTRECOVERY(t_flags) t_flags &= ~TF_FASTRECOVERY
@@ -815,6 +826,9 @@ tcp_packets_this_ack(struct tcpcb *tp, tcp_seq ack)
#define TCPOOB_HAVEDATA 0x01
#define TCPOOB_HADDATA 0x02
/* t_oobflags description for use with printf(9) %b identifier. */
#define TCPOOB_BITS "\20\1TCPOOB_HAVEDATA\2TCPOOB_HADDATA"
/*
* Flags for the extended TCP flags field, t_flags2
*/
@@ -842,6 +856,21 @@ tcp_packets_this_ack(struct tcpcb *tp, tcp_seq ack)
#define TF2_IPSEC_TSO 0x00200000 /* IPSEC + TSO supported */
#define TF2_NO_ISS_CHECK 0x00400000 /* Don't check SEG.ACK against ISS */
/* t_flags2 description for use with printf(9) %b identifier. */
#define TF2_BITS "\20" \
"\1TF2_PLPMTU_BLACKHOLE\2TF2_PLPMTU_PMTUD" \
"\3TF2_PLPMTU_MAXSEGSNT\4TF2_LOG_AUTO" \
"\5TF2_DROP_AF_DATA\6TF2_ECN_PERMIT" \
"\7TF2_ECN_SND_CWR\10TF2_ECN_SND_ECE" \
"\11TF2_ACE_PERMIT\12TF2_HPTS_CPU_SET" \
"\13TF2_FBYTES_COMPLETE\14TF2_ECN_USE_ECT1" \
"\15TF2_TCP_ACCOUNTING\16TF2_HPTS_CALLS" \
"\17TF2_MBUF_L_ACKS\20TF2_MBUF_ACKCMP" \
"\21TF2_SUPPORTS_MBUFQ\22TF2_MBUF_QUEUE_READY" \
"\23TF2_DONT_SACK_QUEUE\24TF2_CANNOT_DO_ECN" \
"\25TF2_PROC_SACK_PROHIBIT\26TF2_IPSEC_TSO" \
"\27TF2_NO_ISS_CHECK"
/*
* Structure to hold TCP options that are only used during segment
* processing (in tcp_input), but not held in the tcpcb.