aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/systat
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2017-03-21 06:39:49 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2017-03-21 06:39:49 +0000
commitcc65eb4e792a203a8b4a17b0e3af7831e5044eca (patch)
tree969a970e8707f4144afbe92a15b95806217ec748 /usr.bin/systat
parent5a33a2afb3a35949545a572cffa0b8e637446d4a (diff)
Notes
Diffstat (limited to 'usr.bin/systat')
-rw-r--r--usr.bin/systat/extern.h6
-rw-r--r--usr.bin/systat/netcmds.c10
-rw-r--r--usr.bin/systat/netstat.c65
3 files changed, 41 insertions, 40 deletions
diff --git a/usr.bin/systat/extern.h b/usr.bin/systat/extern.h
index 1e214df3d08d..5d92f88f4b66 100644
--- a/usr.bin/systat/extern.h
+++ b/usr.bin/systat/extern.h
@@ -56,7 +56,7 @@ extern int protos;
extern int verbose;
extern unsigned int delay;
-struct inpcb;
+struct in_conninfo;
extern struct device_selection *dev_select;
extern long generation;
@@ -67,8 +67,8 @@ extern long select_generation;
extern struct nlist namelist[];
-int checkhost(struct inpcb *);
-int checkport(struct inpcb *);
+int checkhost(struct in_conninfo *);
+int checkport(struct in_conninfo *);
void closeicmp(WINDOW *);
void closeicmp6(WINDOW *);
void closeifstat(WINDOW *);
diff --git a/usr.bin/systat/netcmds.c b/usr.bin/systat/netcmds.c
index 084496804479..f8ff64a35c99 100644
--- a/usr.bin/systat/netcmds.c
+++ b/usr.bin/systat/netcmds.c
@@ -224,13 +224,13 @@ selectport(long port, int onoff)
}
int
-checkport(struct inpcb *inp)
+checkport(struct in_conninfo *inc)
{
struct pitem *p;
if (ports)
for (p = ports; p < ports+nports; p++)
- if (p->port == inp->inp_lport || p->port == inp->inp_fport)
+ if (p->port == inc->inc_lport || p->port == inc->inc_fport)
return (p->onoff);
return (1);
}
@@ -281,14 +281,14 @@ selecthost(struct in_addr *in, int onoff)
}
int
-checkhost(struct inpcb *inp)
+checkhost(struct in_conninfo *inc)
{
struct hitem *p;
if (hosts)
for (p = hosts; p < hosts+nhosts; p++)
- if (p->addr.s_addr == inp->inp_laddr.s_addr ||
- p->addr.s_addr == inp->inp_faddr.s_addr)
+ if (p->addr.s_addr == inc->inc_laddr.s_addr ||
+ p->addr.s_addr == inc->inc_faddr.s_addr)
return (p->onoff);
return (1);
}
diff --git a/usr.bin/systat/netstat.c b/usr.bin/systat/netstat.c
index 0ac2244b25b2..5ab367a0a878 100644
--- a/usr.bin/systat/netstat.c
+++ b/usr.bin/systat/netstat.c
@@ -52,6 +52,7 @@ static const char sccsid[] = "@(#)netstat.c 8.1 (Berkeley) 6/6/93";
#ifdef INET6
#include <netinet/ip6.h>
#endif
+#define _WANT_INPCB
#include <netinet/in_pcb.h>
#include <netinet/ip_icmp.h>
#include <netinet/icmp_var.h>
@@ -62,6 +63,7 @@ static const char sccsid[] = "@(#)netstat.c 8.1 (Berkeley) 6/6/93";
#define TCPSTATES
#include <netinet/tcp_fsm.h>
#include <netinet/tcp_timer.h>
+#define _WANT_TCPCB
#include <netinet/tcp_var.h>
#include <netinet/tcp_debug.h>
#include <netinet/udp.h>
@@ -76,9 +78,9 @@ static const char sccsid[] = "@(#)netstat.c 8.1 (Berkeley) 6/6/93";
#include "systat.h"
#include "extern.h"
-static struct netinfo *enter(struct inpcb *, int, const char *);
+static struct netinfo *enter(struct in_conninfo *, uint8_t, int, const char *);
static void enter_kvm(struct inpcb *, struct socket *, int, const char *);
-static void enter_sysctl(struct inpcb *, struct xsocket *, int, const char *);
+static void enter_sysctl(struct xinpcb *, struct xsocket *, int, const char *);
static void fetchnetstat_kvm(void);
static void fetchnetstat_sysctl(void);
static char *inetname(struct sockaddr *);
@@ -212,9 +214,9 @@ again:
}
#endif
}
- if (nhosts && !checkhost(&inpcb))
+ if (nhosts && !checkhost(&inpcb.inp_inc))
continue;
- if (nports && !checkport(&inpcb))
+ if (nports && !checkport(&inpcb.inp_inc))
continue;
if (istcp) {
if (inpcb.inp_flags & INP_TIMEWAIT) {
@@ -245,7 +247,6 @@ fetchnetstat_sysctl(void)
int idx;
struct xinpgen *inpg;
char *cur, *end;
- struct inpcb *inpcb;
struct xinpcb *xip = NULL;
struct xtcpcb *xtp = NULL;
int plen;
@@ -291,37 +292,36 @@ fetchnetstat_sysctl(void)
while (cur + plen <= end) {
if (idx == 0) { /* TCP */
xtp = (struct xtcpcb *)cur;
- inpcb = &xtp->xt_inp;
+ xip = &xtp->xt_inp;
} else {
xip = (struct xinpcb *)cur;
- inpcb = &xip->xi_inp;
}
cur += plen;
if (!aflag) {
- if (inpcb->inp_vflag & INP_IPV4) {
- if (inet_lnaof(inpcb->inp_laddr) ==
+ if (xip->inp_vflag & INP_IPV4) {
+ if (inet_lnaof(xip->inp_laddr) ==
INADDR_ANY)
continue;
}
#ifdef INET6
- else if (inpcb->inp_vflag & INP_IPV6) {
- if (memcmp(&inpcb->in6p_laddr,
+ else if (xip->inp_vflag & INP_IPV6) {
+ if (memcmp(&xip->in6p_laddr,
&in6addr_any, sizeof(in6addr_any))
== 0)
continue;
}
#endif
}
- if (nhosts && !checkhost(inpcb))
+ if (nhosts && !checkhost(&xip->inp_inc))
continue;
- if (nports && !checkport(inpcb))
+ if (nports && !checkport(&xip->inp_inc))
continue;
- if (idx == 0) /* TCP */
- enter_sysctl(inpcb, &xtp->xt_socket,
- xtp->xt_tp.t_state, "tcp");
- else /* UDP */
- enter_sysctl(inpcb, &xip->xi_socket, 0, "udp");
+ if (idx == 0)
+ enter_sysctl(xip, &xip->xi_socket,
+ xtp->t_state, "tcp");
+ else
+ enter_sysctl(xip, &xip->xi_socket, 0, "udp");
}
free(inpg);
}
@@ -332,25 +332,26 @@ enter_kvm(struct inpcb *inp, struct socket *so, int state, const char *proto)
{
struct netinfo *p;
- if ((p = enter(inp, state, proto)) != NULL) {
+ if ((p = enter(&inp->inp_inc, inp->inp_vflag, state, proto)) != NULL) {
p->ni_rcvcc = so->so_rcv.sb_ccc;
p->ni_sndcc = so->so_snd.sb_ccc;
}
}
static void
-enter_sysctl(struct inpcb *inp, struct xsocket *so, int state, const char *proto)
+enter_sysctl(struct xinpcb *xip, struct xsocket *so, int state,
+ const char *proto)
{
struct netinfo *p;
- if ((p = enter(inp, state, proto)) != NULL) {
+ if ((p = enter(&xip->inp_inc, xip->inp_vflag, state, proto)) != NULL) {
p->ni_rcvcc = so->so_rcv.sb_cc;
p->ni_sndcc = so->so_snd.sb_cc;
}
}
static struct netinfo *
-enter(struct inpcb *inp, int state, const char *proto)
+enter(struct in_conninfo *inc, uint8_t vflag, int state, const char *proto)
{
struct netinfo *p;
struct sockaddr_storage lsa, fsa;
@@ -361,32 +362,32 @@ enter(struct inpcb *inp, int state, const char *proto)
memset(&lsa, 0, sizeof(lsa));
memset(&fsa, 0, sizeof(fsa));
- if (inp->inp_vflag & INP_IPV4) {
+ if (vflag & INP_IPV4) {
sa4 = (struct sockaddr_in *)&lsa;
- sa4->sin_addr = inp->inp_laddr;
- sa4->sin_port = inp->inp_lport;
+ sa4->sin_addr = inc->inc_laddr;
+ sa4->sin_port = inc->inc_lport;
sa4->sin_family = AF_INET;
sa4->sin_len = sizeof(struct sockaddr_in);
sa4 = (struct sockaddr_in *)&fsa;
- sa4->sin_addr = inp->inp_faddr;
- sa4->sin_port = inp->inp_fport;
+ sa4->sin_addr = inc->inc_faddr;
+ sa4->sin_port = inc->inc_fport;
sa4->sin_family = AF_INET;
sa4->sin_len = sizeof(struct sockaddr_in);
}
#ifdef INET6
- else if (inp->inp_vflag & INP_IPV6) {
+ else if (vflag & INP_IPV6) {
sa6 = (struct sockaddr_in6 *)&lsa;
- memcpy(&sa6->sin6_addr, &inp->in6p_laddr,
+ memcpy(&sa6->sin6_addr, &inc->inc6_laddr,
sizeof(struct in6_addr));
- sa6->sin6_port = inp->inp_lport;
+ sa6->sin6_port = inc->inc_lport;
sa6->sin6_family = AF_INET6;
sa6->sin6_len = sizeof(struct sockaddr_in6);
sa6 = (struct sockaddr_in6 *)&fsa;
- memcpy(&sa6->sin6_addr, &inp->in6p_faddr,
+ memcpy(&sa6->sin6_addr, &inc->inc6_faddr,
sizeof(struct in6_addr));
- sa6->sin6_port = inp->inp_fport;
+ sa6->sin6_port = inc->inc_fport;
sa6->sin6_family = AF_INET6;
sa6->sin6_len = sizeof(struct sockaddr_in6);
}