MINOR: cli: display the 4 IP addresses and ports on "show sess XXX"

I have modified dumpstats.c to show additional information for the show
session <id> command on the statistics socket. This will dump the
public, frontend, backend, and server ip/tcp addresses and port. We
found it useful to have this information available in real time and
could not find another way of getting this information.
This commit is contained in:
Daniel Schultze 2012-03-23 10:53:36 -07:00 committed by Willy Tarreau
parent d017f113c0
commit 90690c7aca

View File

@ -3252,20 +3252,74 @@ static int stats_dump_full_sess_to_buffer(struct stream_interface *si)
sess->flags, sess->si[1].conn_retries, sess->srv_conn, sess->pend_pos);
chunk_printf(&msg,
" frontend=%s (id=%u mode=%s), listener=%s (id=%u)\n",
" frontend=%s (id=%u mode=%s), listener=%s (id=%u)",
sess->fe->id, sess->fe->uuid, sess->fe->mode ? "http" : "tcp",
sess->listener ? sess->listener->name ? sess->listener->name : "?" : "?",
sess->listener ? sess->listener->luid : 0);
stream_sock_get_to_addr(&sess->si[0]);
switch (addr_to_str(&sess->si[0].addr.to, pn, sizeof(pn))) {
case AF_INET:
case AF_INET6:
chunk_printf(&msg, " addr=%s:%d\n",
pn, get_host_port(&sess->si[0].addr.to));
break;
case AF_UNIX:
chunk_printf(&msg, " addr=unix:%d\n", sess->listener->luid);
break;
default:
/* no more information to print right now */
chunk_printf(&msg, "\n");
break;
}
if (sess->be->cap & PR_CAP_BE)
chunk_printf(&msg,
" backend=%s (id=%u mode=%s) server=%s (id=%u)\n",
" backend=%s (id=%u mode=%s)",
sess->be->id,
sess->be->uuid, sess->be->mode ? "http" : "tcp",
sess->be->uuid, sess->be->mode ? "http" : "tcp");
else
chunk_printf(&msg, " backend=<NONE> (id=-1 mode=-)");
stream_sock_get_from_addr(&sess->si[1]);
switch (addr_to_str(&sess->si[1].addr.from, pn, sizeof(pn))) {
case AF_INET:
case AF_INET6:
chunk_printf(&msg, " addr=%s:%d\n",
pn, get_host_port(&sess->si[1].addr.from));
break;
case AF_UNIX:
chunk_printf(&msg, " addr=unix\n");
break;
default:
/* no more information to print right now */
chunk_printf(&msg, "\n");
break;
}
if (sess->be->cap & PR_CAP_BE)
chunk_printf(&msg,
" server=%s (id=%u)",
target_srv(&sess->target) ? target_srv(&sess->target)->id : "<none>",
target_srv(&sess->target) ? target_srv(&sess->target)->puid : 0);
else
chunk_printf(&msg, " backend=<NONE> (id=-1 mode=-) server=<NONE> (id=-1)\n");
chunk_printf(&msg, " server=<NONE> (id=-1)");
stream_sock_get_to_addr(&sess->si[1]);
switch (addr_to_str(&sess->si[1].addr.to, pn, sizeof(pn))) {
case AF_INET:
case AF_INET6:
chunk_printf(&msg, " addr=%s:%d\n",
pn, get_host_port(&sess->si[1].addr.to));
break;
case AF_UNIX:
chunk_printf(&msg, " addr=unix\n");
break;
default:
/* no more information to print right now */
chunk_printf(&msg, "\n");
break;
}
chunk_printf(&msg,
" task=%p (state=0x%02x nice=%d calls=%d exp=%s%s)\n",