summaryrefslogtreecommitdiffstats
path: root/usr.bin/netstat/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/netstat/main.c')
-rw-r--r--usr.bin/netstat/main.c49
1 files changed, 29 insertions, 20 deletions
diff --git a/usr.bin/netstat/main.c b/usr.bin/netstat/main.c
index 0876460..dbec760 100644
--- a/usr.bin/netstat/main.c
+++ b/usr.bin/netstat/main.c
@@ -552,41 +552,41 @@ main(int argc, char *argv[])
* used for the queries, which is slower.
*/
#endif
- kread(0, NULL, 0);
if (iflag && !sflag) {
- intpr(interval, NULL);
+ intpr(interval, NULL, af);
exit(0);
}
if (rflag) {
if (sflag) {
- rt_stats(nl[N_RTSTAT].n_value, nl[N_RTTRASH].n_value);
+ rt_stats();
flowtable_stats();
} else
- routepr(nl[N_RTREE].n_value, fib);
+ routepr(fib, af);
exit(0);
}
+
if (gflag) {
if (sflag) {
if (af == AF_INET || af == AF_UNSPEC)
- mrt_stats(nl[N_MRTSTAT].n_value);
+ mrt_stats();
#ifdef INET6
if (af == AF_INET6 || af == AF_UNSPEC)
- mrt6_stats(nl[N_MRT6STAT].n_value);
+ mrt6_stats();
#endif
} else {
if (af == AF_INET || af == AF_UNSPEC)
- mroutepr(nl[N_MFCHASHTBL].n_value,
- nl[N_MFCTABLESIZE].n_value,
- nl[N_VIFTABLE].n_value);
+ mroutepr();
#ifdef INET6
if (af == AF_INET6 || af == AF_UNSPEC)
- mroute6pr(nl[N_MF6CTABLE].n_value,
- nl[N_MIF6TABLE].n_value);
+ mroute6pr();
#endif
}
exit(0);
}
+ /* Load all necessary kvm symbols */
+ kresolve_list(nl);
+
if (tp) {
printproto(tp, tp->pr_name);
exit(0);
@@ -639,7 +639,7 @@ printproto(struct protox *tp, const char *name)
if (sflag) {
if (iflag) {
if (tp->pr_istats)
- intpr(interval, tp->pr_istats);
+ intpr(interval, tp->pr_istats, af);
else if (pflag)
printf("%s: no per-interface stats routine\n",
tp->pr_name);
@@ -702,7 +702,23 @@ kvmd_init(void)
return (-1);
}
- if (kvm_nlist(kvmd, nl) < 0) {
+ return (0);
+}
+
+/*
+ * Resolve symbol list, return 0 on success.
+ */
+int
+kresolve_list(struct nlist *_nl)
+{
+
+ if ((kvmd == NULL) && (kvmd_init() != 0))
+ return (-1);
+
+ if (_nl[0].n_type != 0)
+ return (0);
+
+ if (kvm_nlist(kvmd, _nl) < 0) {
if (nlistf)
errx(1, "%s: kvm_nlist: %s", nlistf,
kvm_geterr(kvmd));
@@ -710,13 +726,6 @@ kvmd_init(void)
errx(1, "kvm_nlist: %s", kvm_geterr(kvmd));
}
- if (nl[0].n_type == 0) {
- if (nlistf)
- errx(1, "%s: no namelist", nlistf);
- else
- errx(1, "no namelist");
- }
-
return (0);
}
OpenPOWER on IntegriCloud