netstat(1) support for UNIX SOCK_SEQPACKET sockets -- changes were required
only for the kvm case, as we supported SOCK_SEQPACKET via sysctl already. Sponsored by: Google MFC after: 3 months
This commit is contained in:
parent
3ac5a8e8b1
commit
963b7ccd3b
@ -186,6 +186,8 @@ static struct nlist nl[] = {
|
||||
{ .n_name = "_mfctablesize" },
|
||||
#define N_ARPSTAT 55
|
||||
{ .n_name = "_arpstat" },
|
||||
#define N_UNP_SPHEAD 56
|
||||
{ .n_name = "unp_sphead" },
|
||||
{ .n_name = NULL },
|
||||
};
|
||||
|
||||
@ -601,7 +603,8 @@ main(int argc, char *argv[])
|
||||
#endif /* NETGRAPH */
|
||||
if ((af == AF_UNIX || af == AF_UNSPEC) && !sflag)
|
||||
unixpr(nl[N_UNP_COUNT].n_value, nl[N_UNP_GENCNT].n_value,
|
||||
nl[N_UNP_DHEAD].n_value, nl[N_UNP_SHEAD].n_value);
|
||||
nl[N_UNP_DHEAD].n_value, nl[N_UNP_SHEAD].n_value,
|
||||
nl[N_UNP_SPHEAD].n_value);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
@ -150,7 +150,7 @@ void ddp_stats(u_long, const char *, int, int);
|
||||
void netgraphprotopr(u_long, const char *, int, int);
|
||||
#endif
|
||||
|
||||
void unixpr(u_long, u_long, u_long, u_long);
|
||||
void unixpr(u_long, u_long, u_long, u_long, u_long);
|
||||
|
||||
void esis_stats(u_long, const char *, int, int);
|
||||
void clnp_stats(u_long, const char *, int, int);
|
||||
|
@ -193,21 +193,37 @@ pcblist_kvm(u_long count_off, u_long gencnt_off, u_long head_off, char **bufp)
|
||||
}
|
||||
|
||||
void
|
||||
unixpr(u_long count_off, u_long gencnt_off, u_long dhead_off, u_long shead_off)
|
||||
unixpr(u_long count_off, u_long gencnt_off, u_long dhead_off, u_long shead_off,
|
||||
u_long sphead_off)
|
||||
{
|
||||
char *buf;
|
||||
int ret, type;
|
||||
struct xsocket *so;
|
||||
struct xunpgen *xug, *oxug;
|
||||
struct xunpcb *xunp;
|
||||
u_long head_off;
|
||||
|
||||
for (type = SOCK_STREAM; type <= SOCK_SEQPACKET; type++) {
|
||||
if (live)
|
||||
ret = pcblist_sysctl(type, &buf);
|
||||
else
|
||||
ret = pcblist_kvm(count_off, gencnt_off,
|
||||
type == SOCK_STREAM ? shead_off :
|
||||
(type == SOCK_DGRAM ? dhead_off : 0), &buf);
|
||||
else {
|
||||
head_off = 0;
|
||||
switch (type) {
|
||||
case SOCK_STREAM:
|
||||
head_off = shead_off;
|
||||
break;
|
||||
|
||||
case SOCK_DGRAM:
|
||||
head_off = dhead_off;
|
||||
break;
|
||||
|
||||
case SOCK_SEQPACKET:
|
||||
head_off = sphead_off;
|
||||
break;
|
||||
}
|
||||
ret = pcblist_kvm(count_off, gencnt_off, head_off,
|
||||
&buf);
|
||||
}
|
||||
if (ret == -1)
|
||||
continue;
|
||||
if (ret < 0)
|
||||
|
Loading…
Reference in New Issue
Block a user