#include <getopt.h>
#include <stdbool.h>
#include <limits.h>
+#include <stdarg.h>
#include "utils.h"
#include "rt_names.h"
}
}
+static void out(const char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ vfprintf(stdout, fmt, args);
+ va_end(args);
+}
+
static void sock_state_print(struct sockstat *s)
{
const char *sock_name;
}
if (netid_width)
- printf("%-*s ", netid_width,
- is_sctp_assoc(s, sock_name) ? "" : sock_name);
+ out("%-*s ", netid_width,
+ is_sctp_assoc(s, sock_name) ? "" : sock_name);
if (state_width) {
if (is_sctp_assoc(s, sock_name))
- printf("`- %-*s ", state_width - 3,
- sctp_sstate_name[s->state]);
+ out("`- %-*s ", state_width - 3,
+ sctp_sstate_name[s->state]);
else
- printf("%-*s ", state_width, sstate_name[s->state]);
+ out("%-*s ", state_width, sstate_name[s->state]);
}
- printf("%-6d %-6d %s", s->rq, s->wq, odd_width_pad);
+ out("%-6d %-6d %s", s->rq, s->wq, odd_width_pad);
}
static void sock_details_print(struct sockstat *s)
{
if (s->uid)
- printf(" uid:%u", s->uid);
+ out(" uid:%u", s->uid);
- printf(" ino:%u", s->ino);
- printf(" sk:%llx", s->sk);
+ out(" ino:%u", s->ino);
+ out(" sk:%llx", s->sk);
if (s->mark)
- printf(" fwmark:0x%x", s->mark);
+ out(" fwmark:0x%x", s->mark);
}
static void sock_addr_print_width(int addr_len, const char *addr, char *delim,
int port_len, const char *port, const char *ifname)
{
if (ifname) {
- printf("%*s%%%s%s%-*s ", addr_len, addr, ifname, delim,
- port_len, port);
+ out("%*s%%%s%s%-*s ", addr_len, addr, ifname, delim,
+ port_len, port);
} else {
- printf("%*s%s%-*s ", addr_len, addr, delim, port_len, port);
+ out("%*s%s%-*s ", addr_len, addr, delim, port_len, port);
}
}
if (find_entry(s->ino, &buf,
(show_proc_ctx & show_sock_ctx) ?
PROC_SOCK_CTX : PROC_CTX) > 0) {
- printf(" users:(%s)", buf);
+ out(" users:(%s)", buf);
free(buf);
}
} else if (show_users) {
if (find_entry(s->ino, &buf, USERS) > 0) {
- printf(" users:(%s)", buf);
+ out(" users:(%s)", buf);
free(buf);
}
}
static void sctp_stats_print(struct sctp_info *s)
{
if (s->sctpi_tag)
- printf(" tag:%x", s->sctpi_tag);
+ out(" tag:%x", s->sctpi_tag);
if (s->sctpi_state)
- printf(" state:%s", sctp_sstate_name[s->sctpi_state]);
+ out(" state:%s", sctp_sstate_name[s->sctpi_state]);
if (s->sctpi_rwnd)
- printf(" rwnd:%d", s->sctpi_rwnd);
+ out(" rwnd:%d", s->sctpi_rwnd);
if (s->sctpi_unackdata)
- printf(" unackdata:%d", s->sctpi_unackdata);
+ out(" unackdata:%d", s->sctpi_unackdata);
if (s->sctpi_penddata)
- printf(" penddata:%d", s->sctpi_penddata);
+ out(" penddata:%d", s->sctpi_penddata);
if (s->sctpi_instrms)
- printf(" instrms:%d", s->sctpi_instrms);
+ out(" instrms:%d", s->sctpi_instrms);
if (s->sctpi_outstrms)
- printf(" outstrms:%d", s->sctpi_outstrms);
+ out(" outstrms:%d", s->sctpi_outstrms);
if (s->sctpi_inqueue)
- printf(" inqueue:%d", s->sctpi_inqueue);
+ out(" inqueue:%d", s->sctpi_inqueue);
if (s->sctpi_outqueue)
- printf(" outqueue:%d", s->sctpi_outqueue);
+ out(" outqueue:%d", s->sctpi_outqueue);
if (s->sctpi_overall_error)
- printf(" overerr:%d", s->sctpi_overall_error);
+ out(" overerr:%d", s->sctpi_overall_error);
if (s->sctpi_max_burst)
- printf(" maxburst:%d", s->sctpi_max_burst);
+ out(" maxburst:%d", s->sctpi_max_burst);
if (s->sctpi_maxseg)
- printf(" maxseg:%d", s->sctpi_maxseg);
+ out(" maxseg:%d", s->sctpi_maxseg);
if (s->sctpi_peer_rwnd)
- printf(" prwnd:%d", s->sctpi_peer_rwnd);
+ out(" prwnd:%d", s->sctpi_peer_rwnd);
if (s->sctpi_peer_tag)
- printf(" ptag:%x", s->sctpi_peer_tag);
+ out(" ptag:%x", s->sctpi_peer_tag);
if (s->sctpi_peer_capable)
- printf(" pcapable:%d", s->sctpi_peer_capable);
+ out(" pcapable:%d", s->sctpi_peer_capable);
if (s->sctpi_peer_sack)
- printf(" psack:%d", s->sctpi_peer_sack);
+ out(" psack:%d", s->sctpi_peer_sack);
if (s->sctpi_s_autoclose)
- printf(" autoclose:%d", s->sctpi_s_autoclose);
+ out(" autoclose:%d", s->sctpi_s_autoclose);
if (s->sctpi_s_adaptation_ind)
- printf(" adapind:%d", s->sctpi_s_adaptation_ind);
+ out(" adapind:%d", s->sctpi_s_adaptation_ind);
if (s->sctpi_s_pd_point)
- printf(" pdpoint:%d", s->sctpi_s_pd_point);
+ out(" pdpoint:%d", s->sctpi_s_pd_point);
if (s->sctpi_s_nodelay)
- printf(" nodealy:%d", s->sctpi_s_nodelay);
+ out(" nodealy:%d", s->sctpi_s_nodelay);
if (s->sctpi_s_disable_fragments)
- printf(" nofrag:%d", s->sctpi_s_disable_fragments);
+ out(" nofrag:%d", s->sctpi_s_disable_fragments);
if (s->sctpi_s_v4mapped)
- printf(" v4mapped:%d", s->sctpi_s_v4mapped);
+ out(" v4mapped:%d", s->sctpi_s_v4mapped);
if (s->sctpi_s_frag_interleave)
- printf(" fraginl:%d", s->sctpi_s_frag_interleave);
+ out(" fraginl:%d", s->sctpi_s_frag_interleave);
}
static void tcp_stats_print(struct tcpstat *s)
char b1[64];
if (s->has_ts_opt)
- printf(" ts");
+ out(" ts");
if (s->has_sack_opt)
- printf(" sack");
+ out(" sack");
if (s->has_ecn_opt)
- printf(" ecn");
+ out(" ecn");
if (s->has_ecnseen_opt)
- printf(" ecnseen");
+ out(" ecnseen");
if (s->has_fastopen_opt)
- printf(" fastopen");
+ out(" fastopen");
if (s->cong_alg[0])
- printf(" %s", s->cong_alg);
+ out(" %s", s->cong_alg);
if (s->has_wscale_opt)
- printf(" wscale:%d,%d", s->snd_wscale, s->rcv_wscale);
+ out(" wscale:%d,%d", s->snd_wscale, s->rcv_wscale);
if (s->rto)
- printf(" rto:%g", s->rto);
+ out(" rto:%g", s->rto);
if (s->backoff)
- printf(" backoff:%u", s->backoff);
+ out(" backoff:%u", s->backoff);
if (s->rtt)
- printf(" rtt:%g/%g", s->rtt, s->rttvar);
+ out(" rtt:%g/%g", s->rtt, s->rttvar);
if (s->ato)
- printf(" ato:%g", s->ato);
+ out(" ato:%g", s->ato);
if (s->qack)
- printf(" qack:%d", s->qack);
+ out(" qack:%d", s->qack);
if (s->qack & 1)
- printf(" bidir");
+ out(" bidir");
if (s->mss)
- printf(" mss:%d", s->mss);
+ out(" mss:%d", s->mss);
if (s->rcv_mss)
- printf(" rcvmss:%d", s->rcv_mss);
+ out(" rcvmss:%d", s->rcv_mss);
if (s->advmss)
- printf(" advmss:%d", s->advmss);
+ out(" advmss:%d", s->advmss);
if (s->cwnd)
- printf(" cwnd:%u", s->cwnd);
+ out(" cwnd:%u", s->cwnd);
if (s->ssthresh)
- printf(" ssthresh:%d", s->ssthresh);
+ out(" ssthresh:%d", s->ssthresh);
if (s->bytes_acked)
- printf(" bytes_acked:%llu", s->bytes_acked);
+ out(" bytes_acked:%llu", s->bytes_acked);
if (s->bytes_received)
- printf(" bytes_received:%llu", s->bytes_received);
+ out(" bytes_received:%llu", s->bytes_received);
if (s->segs_out)
- printf(" segs_out:%u", s->segs_out);
+ out(" segs_out:%u", s->segs_out);
if (s->segs_in)
- printf(" segs_in:%u", s->segs_in);
+ out(" segs_in:%u", s->segs_in);
if (s->data_segs_out)
- printf(" data_segs_out:%u", s->data_segs_out);
+ out(" data_segs_out:%u", s->data_segs_out);
if (s->data_segs_in)
- printf(" data_segs_in:%u", s->data_segs_in);
+ out(" data_segs_in:%u", s->data_segs_in);
if (s->dctcp && s->dctcp->enabled) {
struct dctcpstat *dctcp = s->dctcp;
- printf(" dctcp:(ce_state:%u,alpha:%u,ab_ecn:%u,ab_tot:%u)",
- dctcp->ce_state, dctcp->alpha, dctcp->ab_ecn,
- dctcp->ab_tot);
+ out(" dctcp:(ce_state:%u,alpha:%u,ab_ecn:%u,ab_tot:%u)",
+ dctcp->ce_state, dctcp->alpha, dctcp->ab_ecn,
+ dctcp->ab_tot);
} else if (s->dctcp) {
- printf(" dctcp:fallback_mode");
+ out(" dctcp:fallback_mode");
}
if (s->bbr_info) {
bw <<= 32;
bw |= s->bbr_info->bbr_bw_lo;
- printf(" bbr:(bw:%sbps,mrtt:%g",
- sprint_bw(b1, bw * 8.0),
- (double)s->bbr_info->bbr_min_rtt / 1000.0);
+ out(" bbr:(bw:%sbps,mrtt:%g",
+ sprint_bw(b1, bw * 8.0),
+ (double)s->bbr_info->bbr_min_rtt / 1000.0);
if (s->bbr_info->bbr_pacing_gain)
- printf(",pacing_gain:%g",
- (double)s->bbr_info->bbr_pacing_gain / 256.0);
+ out(",pacing_gain:%g",
+ (double)s->bbr_info->bbr_pacing_gain / 256.0);
if (s->bbr_info->bbr_cwnd_gain)
- printf(",cwnd_gain:%g",
- (double)s->bbr_info->bbr_cwnd_gain / 256.0);
- printf(")");
+ out(",cwnd_gain:%g",
+ (double)s->bbr_info->bbr_cwnd_gain / 256.0);
+ out(")");
}
if (s->send_bps)
- printf(" send %sbps", sprint_bw(b1, s->send_bps));
+ out(" send %sbps", sprint_bw(b1, s->send_bps));
if (s->lastsnd)
- printf(" lastsnd:%u", s->lastsnd);
+ out(" lastsnd:%u", s->lastsnd);
if (s->lastrcv)
- printf(" lastrcv:%u", s->lastrcv);
+ out(" lastrcv:%u", s->lastrcv);
if (s->lastack)
- printf(" lastack:%u", s->lastack);
+ out(" lastack:%u", s->lastack);
if (s->pacing_rate) {
- printf(" pacing_rate %sbps", sprint_bw(b1, s->pacing_rate));
+ out(" pacing_rate %sbps", sprint_bw(b1, s->pacing_rate));
if (s->pacing_rate_max)
- printf("/%sbps", sprint_bw(b1,
- s->pacing_rate_max));
+ out("/%sbps", sprint_bw(b1, s->pacing_rate_max));
}
if (s->delivery_rate)
- printf(" delivery_rate %sbps", sprint_bw(b1, s->delivery_rate));
+ out(" delivery_rate %sbps", sprint_bw(b1, s->delivery_rate));
if (s->app_limited)
- printf(" app_limited");
+ out(" app_limited");
if (s->busy_time) {
- printf(" busy:%llums", s->busy_time / 1000);
+ out(" busy:%llums", s->busy_time / 1000);
if (s->rwnd_limited)
- printf(" rwnd_limited:%llums(%.1f%%)",
- s->rwnd_limited / 1000,
- 100.0 * s->rwnd_limited / s->busy_time);
+ out(" rwnd_limited:%llums(%.1f%%)",
+ s->rwnd_limited / 1000,
+ 100.0 * s->rwnd_limited / s->busy_time);
if (s->sndbuf_limited)
- printf(" sndbuf_limited:%llums(%.1f%%)",
- s->sndbuf_limited / 1000,
- 100.0 * s->sndbuf_limited / s->busy_time);
+ out(" sndbuf_limited:%llums(%.1f%%)",
+ s->sndbuf_limited / 1000,
+ 100.0 * s->sndbuf_limited / s->busy_time);
}
if (s->unacked)
- printf(" unacked:%u", s->unacked);
+ out(" unacked:%u", s->unacked);
if (s->retrans || s->retrans_total)
- printf(" retrans:%u/%u", s->retrans, s->retrans_total);
+ out(" retrans:%u/%u", s->retrans, s->retrans_total);
if (s->lost)
- printf(" lost:%u", s->lost);
+ out(" lost:%u", s->lost);
if (s->sacked && s->ss.state != SS_LISTEN)
- printf(" sacked:%u", s->sacked);
+ out(" sacked:%u", s->sacked);
if (s->fackets)
- printf(" fackets:%u", s->fackets);
+ out(" fackets:%u", s->fackets);
if (s->reordering != 3)
- printf(" reordering:%d", s->reordering);
+ out(" reordering:%d", s->reordering);
if (s->rcv_rtt)
- printf(" rcv_rtt:%g", s->rcv_rtt);
+ out(" rcv_rtt:%g", s->rcv_rtt);
if (s->rcv_space)
- printf(" rcv_space:%d", s->rcv_space);
+ out(" rcv_space:%d", s->rcv_space);
if (s->rcv_ssthresh)
- printf(" rcv_ssthresh:%u", s->rcv_ssthresh);
+ out(" rcv_ssthresh:%u", s->rcv_ssthresh);
if (s->not_sent)
- printf(" notsent:%u", s->not_sent);
+ out(" notsent:%u", s->not_sent);
if (s->min_rtt)
- printf(" minrtt:%g", s->min_rtt);
+ out(" minrtt:%g", s->min_rtt);
}
static void tcp_timer_print(struct tcpstat *s)
if (s->timer) {
if (s->timer > 4)
s->timer = 5;
- printf(" timer:(%s,%s,%d)",
- tmr_name[s->timer],
- print_ms_timer(s->timeout),
- s->retrans);
+ out(" timer:(%s,%s,%d)",
+ tmr_name[s->timer],
+ print_ms_timer(s->timeout),
+ s->retrans);
}
}
static void sctp_timer_print(struct tcpstat *s)
{
if (s->timer)
- printf(" timer:(T3_RTX,%s,%d)",
- print_ms_timer(s->timeout), s->retrans);
+ out(" timer:(T3_RTX,%s,%d)",
+ print_ms_timer(s->timeout), s->retrans);
}
static int tcp_show_line(char *line, const struct filter *f, int family)
if (show_details) {
sock_details_print(&s.ss);
if (opt[0])
- printf(" opt:\"%s\"", opt);
+ out(" opt:\"%s\"", opt);
}
if (show_tcpinfo)
tcp_stats_print(&s);
- printf("\n");
+ out("\n");
return 0;
}
const struct inet_diag_meminfo *minfo =
RTA_DATA(tb[INET_DIAG_MEMINFO]);
- printf(" mem:(r%u,w%u,f%u,t%u)",
- minfo->idiag_rmem,
- minfo->idiag_wmem,
- minfo->idiag_fmem,
- minfo->idiag_tmem);
+ out(" mem:(r%u,w%u,f%u,t%u)",
+ minfo->idiag_rmem,
+ minfo->idiag_wmem,
+ minfo->idiag_fmem,
+ minfo->idiag_tmem);
}
return;
}
skmeminfo = RTA_DATA(tb[attrtype]);
- printf(" skmem:(r%u,rb%u,t%u,tb%u,f%u,w%u,o%u",
- skmeminfo[SK_MEMINFO_RMEM_ALLOC],
- skmeminfo[SK_MEMINFO_RCVBUF],
- skmeminfo[SK_MEMINFO_WMEM_ALLOC],
- skmeminfo[SK_MEMINFO_SNDBUF],
- skmeminfo[SK_MEMINFO_FWD_ALLOC],
- skmeminfo[SK_MEMINFO_WMEM_QUEUED],
- skmeminfo[SK_MEMINFO_OPTMEM]);
+ out(" skmem:(r%u,rb%u,t%u,tb%u,f%u,w%u,o%u",
+ skmeminfo[SK_MEMINFO_RMEM_ALLOC],
+ skmeminfo[SK_MEMINFO_RCVBUF],
+ skmeminfo[SK_MEMINFO_WMEM_ALLOC],
+ skmeminfo[SK_MEMINFO_SNDBUF],
+ skmeminfo[SK_MEMINFO_FWD_ALLOC],
+ skmeminfo[SK_MEMINFO_WMEM_QUEUED],
+ skmeminfo[SK_MEMINFO_OPTMEM]);
if (RTA_PAYLOAD(tb[attrtype]) >=
(SK_MEMINFO_BACKLOG + 1) * sizeof(__u32))
- printf(",bl%u", skmeminfo[SK_MEMINFO_BACKLOG]);
+ out(",bl%u", skmeminfo[SK_MEMINFO_BACKLOG]);
if (RTA_PAYLOAD(tb[attrtype]) >=
(SK_MEMINFO_DROPS + 1) * sizeof(__u32))
- printf(",d%u", skmeminfo[SK_MEMINFO_DROPS]);
+ out(",d%u", skmeminfo[SK_MEMINFO_DROPS]);
- printf(")");
+ out(")");
}
static void print_md5sig(struct tcp_diag_md5sig *sig)
{
- printf("%s/%d=",
- format_host(sig->tcpm_family,
- sig->tcpm_family == AF_INET6 ? 16 : 4,
- &sig->tcpm_addr),
- sig->tcpm_prefixlen);
+ out("%s/%d=",
+ format_host(sig->tcpm_family,
+ sig->tcpm_family == AF_INET6 ? 16 : 4,
+ &sig->tcpm_addr),
+ sig->tcpm_prefixlen);
print_escape_buf(sig->tcpm_key, sig->tcpm_keylen, " ,");
}
struct tcp_diag_md5sig *sig = RTA_DATA(tb[INET_DIAG_MD5SIG]);
int len = RTA_PAYLOAD(tb[INET_DIAG_MD5SIG]);
- printf(" md5keys:");
+ out(" md5keys:");
print_md5sig(sig++);
for (len -= sizeof(*sig); len > 0; len -= sizeof(*sig)) {
- printf(",");
+ out(",");
print_md5sig(sig++);
}
}
len = RTA_PAYLOAD(tb[INET_DIAG_LOCALS]);
sa = RTA_DATA(tb[INET_DIAG_LOCALS]);
- printf("locals:%s", format_host_sa(sa));
+ out("locals:%s", format_host_sa(sa));
for (sa++, len -= sizeof(*sa); len > 0; sa++, len -= sizeof(*sa))
- printf(",%s", format_host_sa(sa));
+ out(",%s", format_host_sa(sa));
}
if (tb[INET_DIAG_PEERS]) {
len = RTA_PAYLOAD(tb[INET_DIAG_PEERS]);
sa = RTA_DATA(tb[INET_DIAG_PEERS]);
- printf(" peers:%s", format_host_sa(sa));
+ out(" peers:%s", format_host_sa(sa));
for (sa++, len -= sizeof(*sa); len > 0; sa++, len -= sizeof(*sa))
- printf(",%s", format_host_sa(sa));
+ out(",%s", format_host_sa(sa));
}
if (tb[INET_DIAG_INFO]) {
struct sctp_info *info;
if (show_details) {
sock_details_print(s);
if (s->local.family == AF_INET6 && tb[INET_DIAG_SKV6ONLY])
- printf(" v6only:%u", v6only);
+ out(" v6only:%u", v6only);
if (tb[INET_DIAG_SHUTDOWN]) {
unsigned char mask;
mask = rta_getattr_u8(tb[INET_DIAG_SHUTDOWN]);
- printf(" %c-%c", mask & 1 ? '-' : '<', mask & 2 ? '-' : '>');
+ out(" %c-%c",
+ mask & 1 ? '-' : '<', mask & 2 ? '-' : '>');
}
}
if (show_mem || (show_tcpinfo && s->type != IPPROTO_UDP)) {
- printf("\n\t");
+ out("\n\t");
if (s->type == IPPROTO_SCTP)
sctp_show_info(nlh, r, tb);
else
}
sctp_ino = s->ino;
- printf("\n");
+ out("\n");
return 0;
}
inet_stats_print(&s, false);
if (show_details && opt[0])
- printf(" opt:\"%s\"", opt);
+ out(" opt:\"%s\"", opt);
- printf("\n");
+ out("\n");
return 0;
}
unsigned char mask;
mask = rta_getattr_u8(tb[UNIX_DIAG_SHUTDOWN]);
- printf(" %c-%c", mask & 1 ? '-' : '<', mask & 2 ? '-' : '>');
+ out(" %c-%c",
+ mask & 1 ? '-' : '<', mask & 2 ? '-' : '>');
}
}
- printf("\n");
+ out("\n");
return 0;
}
if (++cnt > MAX_UNIX_REMEMBER) {
while (list) {
unix_stats_print(list, f);
- printf("\n");
+ out("\n");
unix_list_drop_first(&list);
}
fclose(fp);
while (list) {
unix_stats_print(list, f);
- printf("\n");
+ out("\n");
unix_list_drop_first(&list);
}
static void packet_show_ring(struct packet_diag_ring *ring)
{
- printf("blk_size:%d", ring->pdr_block_size);
- printf(",blk_nr:%d", ring->pdr_block_nr);
- printf(",frm_size:%d", ring->pdr_frame_size);
- printf(",frm_nr:%d", ring->pdr_frame_nr);
- printf(",tmo:%d", ring->pdr_retire_tmo);
- printf(",features:0x%x", ring->pdr_features);
+ out("blk_size:%d", ring->pdr_block_size);
+ out(",blk_nr:%d", ring->pdr_block_nr);
+ out(",frm_size:%d", ring->pdr_frame_size);
+ out(",frm_nr:%d", ring->pdr_frame_nr);
+ out(",tmo:%d", ring->pdr_retire_tmo);
+ out(",features:0x%x", ring->pdr_features);
}
static int packet_show_sock(const struct sockaddr_nl *addr,
if (show_details) {
if (pinfo) {
- printf("\n\tver:%d", pinfo->pdi_version);
- printf(" cpy_thresh:%d", pinfo->pdi_copy_thresh);
- printf(" flags( ");
+ out("\n\tver:%d", pinfo->pdi_version);
+ out(" cpy_thresh:%d", pinfo->pdi_copy_thresh);
+ out(" flags( ");
if (pinfo->pdi_flags & PDI_RUNNING)
- printf("running");
+ out("running");
if (pinfo->pdi_flags & PDI_AUXDATA)
- printf(" auxdata");
+ out(" auxdata");
if (pinfo->pdi_flags & PDI_ORIGDEV)
- printf(" origdev");
+ out(" origdev");
if (pinfo->pdi_flags & PDI_VNETHDR)
- printf(" vnethdr");
+ out(" vnethdr");
if (pinfo->pdi_flags & PDI_LOSS)
- printf(" loss");
+ out(" loss");
if (!pinfo->pdi_flags)
- printf("0");
- printf(" )");
+ out("0");
+ out(" )");
}
if (ring_rx) {
- printf("\n\tring_rx(");
+ out("\n\tring_rx(");
packet_show_ring(ring_rx);
- printf(")");
+ out(")");
}
if (ring_tx) {
- printf("\n\tring_tx(");
+ out("\n\tring_tx(");
packet_show_ring(ring_tx);
- printf(")");
+ out(")");
}
if (has_fanout) {
uint16_t type = (fanout >> 16) & 0xffff;
- printf("\n\tfanout(");
- printf("id:%d,", fanout & 0xffff);
- printf("type:");
+ out("\n\tfanout(");
+ out("id:%d,", fanout & 0xffff);
+ out("type:");
if (type == 0)
- printf("hash");
+ out("hash");
else if (type == 1)
- printf("lb");
+ out("lb");
else if (type == 2)
- printf("cpu");
+ out("cpu");
else if (type == 3)
- printf("roll");
+ out("roll");
else if (type == 4)
- printf("random");
+ out("random");
else if (type == 5)
- printf("qm");
+ out("qm");
else
- printf("0x%x", type);
+ out("0x%x", type);
- printf(")");
+ out(")");
}
}
int num = RTA_PAYLOAD(tb[PACKET_DIAG_FILTER]) /
sizeof(struct sock_filter);
- printf("\n\tbpf filter (%d): ", num);
+ out("\n\tbpf filter (%d): ", num);
while (num) {
- printf(" 0x%02x %u %u %u,",
- fil->code, fil->jt, fil->jf, fil->k);
+ out(" 0x%02x %u %u %u,",
+ fil->code, fil->jt, fil->jf, fil->k);
num--;
fil++;
}
}
- printf("\n");
+ out("\n");
return 0;
}
if (packet_stats_print(&stat, f))
return 0;
- printf("\n");
+ out("\n");
return 0;
}
else if (pid > 0)
getpidcon(pid, &pid_context);
- printf(" proc_ctx=%s", pid_context ? : "unavailable");
+ out(" proc_ctx=%s", pid_context ? : "unavailable");
free(pid_context);
}
if (show_details) {
- printf(" sk=%llx cb=%llx groups=0x%08x", sk, cb, groups);
+ out(" sk=%llx cb=%llx groups=0x%08x", sk, cb, groups);
}
- printf("\n");
+ out("\n");
return 0;
}
}
if (show_mem) {
- printf("\t");
+ out("\t");
print_skmeminfo(tb, NETLINK_DIAG_MEMINFO);
- printf("\n");
+ out("\n");
}
return 0;
proc_ctx_print(s);
- printf("\n");
+ out("\n");
}
static int vsock_show_sock(const struct sockaddr_nl *addr,
if (show_header) {
if (netid_width)
- printf("%-*s ", netid_width, "Netid");
+ out("%-*s ", netid_width, "Netid");
if (state_width)
- printf("%-*s ", state_width, "State");
- printf("%-6s %-6s %s", "Recv-Q", "Send-Q", odd_width_pad);
+ out("%-*s ", state_width, "State");
+ out("%-6s %-6s %s", "Recv-Q", "Send-Q", odd_width_pad);
}
/* Make enough space for the local/remote port field */
serv_width += 13;
if (show_header) {
- printf("%*s:%-*s %*s:%-*s\n",
- addr_width, "Local Address", serv_width, "Port",
- addr_width, "Peer Address", serv_width, "Port");
+ out("%*s:%-*s %*s:%-*s\n",
+ addr_width, "Local Address", serv_width, "Port",
+ addr_width, "Peer Address", serv_width, "Port");
}
fflush(stdout);