netstat(1): Complete libxo transition

Reviewed by:	des
MFC after:	3 days
Differential Revision:	https://reviews.freebsd.org/D41427
This commit is contained in:
Yan-Hao Wang 2024-10-12 23:03:00 +08:00 committed by Li-Wen Hsu
parent 3d1b233e03
commit 95968ea7ec
No known key found for this signature in database
GPG Key ID: 7377A4A02A2954DD
17 changed files with 103 additions and 109 deletions

View File

@ -39,7 +39,6 @@
#include <net/bpfdesc.h>
#include <arpa/inet.h>
#include <err.h>
#include <errno.h>
#include <stdint.h>
#include <stdio.h>

View File

@ -50,7 +50,6 @@
#include <string.h>
#include <sysexits.h>
#include <unistd.h>
#include <err.h>
#include <libxo/xo.h>
#include "netstat.h"
#include "common.h"
@ -100,7 +99,7 @@ prepare_ifmap(size_t *pifmap_size)
* since we need #ifindex -> if_xname match
*/
if (getifaddrs(&ifap) != 0)
err(EX_OSERR, "getifaddrs");
xo_err(EX_OSERR, "getifaddrs");
for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
@ -114,7 +113,7 @@ prepare_ifmap(size_t *pifmap_size)
size = roundup2(ifindex + 1, 32) *
sizeof(struct ifmap_entry);
if ((ifmap = realloc(ifmap, size)) == NULL)
errx(2, "realloc(%d) failed", size);
xo_errx(EX_OSERR, "realloc(%d) failed", size);
memset(&ifmap[ifmap_size], 0,
size - ifmap_size *
sizeof(struct ifmap_entry));

View File

@ -49,7 +49,6 @@
#include <net/if_pfsync.h>
#endif
#include <err.h>
#include <errno.h>
#include <ifaddrs.h>
#include <libutil.h>
@ -395,9 +394,9 @@ intpr(void (*pfunc)(char *), int af)
return sidewaysintpr();
if (getifaddrs(&ifap) != 0)
err(EX_OSERR, "getifaddrs");
xo_err(EX_OSERR, "getifaddrs");
if (aflag && getifmaddrs(&ifmap) != 0)
err(EX_OSERR, "getifmaddrs");
xo_err(EX_OSERR, "getifmaddrs");
for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
if (interface != NULL &&

View File

@ -63,7 +63,6 @@
#include <netinet/udp_var.h>
#include <arpa/inet.h>
#include <err.h>
#include <errno.h>
#include <libutil.h>
#include <netdb.h>

View File

@ -54,7 +54,6 @@
#include <arpa/inet.h>
#include <netdb.h>
#include <err.h>
#include <stdint.h>
#include <stdio.h>
#include <stdbool.h>

View File

@ -46,7 +46,6 @@
#endif
#include <ctype.h>
#include <err.h>
#include <errno.h>
#ifdef JAIL
#include <jail.h>
@ -61,6 +60,7 @@
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <sysexits.h>
#include <unistd.h>
#include "netstat.h"
#include "nl_defs.h"
@ -258,14 +258,14 @@ main(int argc, char *argv[])
#ifdef INET
af = AF_INET;
#else
errx(1, "IPv4 support is not compiled in");
xo_errx(EX_UNAVAILABLE, "IPv4 support is not compiled in");
#endif
break;
case '6':
#ifdef INET6
af = AF_INET6;
#else
errx(1, "IPv6 support is not compiled in");
xo_errx(EX_UNAVAILABLE, "IPv6 support is not compiled in");
#endif
break;
case 'A':
@ -293,7 +293,7 @@ main(int argc, char *argv[])
fib = strtol(optarg, &endptr, 0);
if (*endptr != '\0' ||
(fib == 0 && (errno == EINVAL || errno == ERANGE)))
xo_errx(1, "%s: invalid fib", optarg);
xo_errx(EX_DATAERR, "%s: invalid fib", optarg);
break;
case 'f':
if (strcmp(optarg, "inet") == 0)
@ -317,7 +317,7 @@ main(int argc, char *argv[])
else if (strcmp(optarg, "link") == 0)
af = AF_LINK;
else {
xo_errx(1, "%s: unknown address family",
xo_errx(EX_DATAERR, "%s: unknown address family",
optarg);
}
break;
@ -345,7 +345,7 @@ main(int argc, char *argv[])
usage();
jail_name = optarg;
#else
errx(1, "Jail support is not compiled in");
xo_errx(EX_UNAVAILABLE, "Jail support is not compiled in");
#endif
break;
case 'L':
@ -374,7 +374,7 @@ main(int argc, char *argv[])
break;
case 'p':
if ((tp = name2protox(optarg)) == NULL) {
xo_errx(1, "%s: unknown or uninstrumented "
xo_errx(EX_DATAERR, "%s: unknown or uninstrumented "
"protocol", optarg);
}
pflag = 1;
@ -448,9 +448,9 @@ main(int argc, char *argv[])
if (jail_name != NULL) {
jid = jail_getid(jail_name);
if (jid == -1)
errx(1, "Jail not found");
xo_errx(EX_UNAVAILABLE, "Jail not found");
if (jail_attach(jid) != 0)
errx(1, "Cannot attach to jail");
xo_errx(EX_UNAVAILABLE, "Cannot attach to jail");
}
#endif
@ -461,20 +461,21 @@ main(int argc, char *argv[])
live = (nlistf == NULL && memf == NULL);
if (!live) {
if (setgid(getgid()) != 0)
xo_err(-1, "setgid");
xo_err(EX_OSERR, "setgid");
/* Load all necessary kvm symbols */
kresolve_list(nl);
}
if (xflag && Tflag)
xo_errx(1, "-x and -T are incompatible, pick one.");
xo_errx(EX_USAGE, "-x and -T are incompatible, pick one.");
if (Bflag) {
if (!live)
usage();
bpf_stats(interface);
xo_finish();
exit(0);
if (xo_finish() < 0)
xo_err(EX_IOERR, "stdout");
exit(EX_OK);
}
if (mflag) {
if (!live) {
@ -482,8 +483,9 @@ main(int argc, char *argv[])
mbpr(kvmd, nl[N_SFSTAT].n_value);
} else
mbpr(NULL, 0);
xo_finish();
exit(0);
if (xo_finish() < 0)
xo_err(EX_IOERR, "stdout");
exit(EX_OK);
}
if (Qflag) {
if (!live) {
@ -491,8 +493,9 @@ main(int argc, char *argv[])
netisr_stats();
} else
netisr_stats();
xo_finish();
exit(0);
if (xo_finish() < 0)
xo_err(EX_IOERR, "stdout");
exit(EX_OK);
}
#if 0
/*
@ -513,8 +516,9 @@ main(int argc, char *argv[])
xo_set_version(NETSTAT_XO_VERSION);
intpr(NULL, af);
xo_close_container("statistics");
xo_finish();
exit(0);
if (xo_finish() < 0)
xo_err(EX_IOERR, "stdout");
exit(EX_OK);
}
if (rflag) {
xo_open_container("statistics");
@ -527,24 +531,27 @@ main(int argc, char *argv[])
} else
routepr(fib, af);
xo_close_container("statistics");
xo_finish();
exit(0);
if (xo_finish() < 0)
xo_err(EX_IOERR, "stdout");
exit(EX_OK);
}
if (oflag) {
xo_open_container("statistics");
xo_set_version(NETSTAT_XO_VERSION);
nhops_print(fib, af);
xo_close_container("statistics");
xo_finish();
exit(0);
if (xo_finish() < 0)
xo_err(EX_IOERR, "stdout");
exit(EX_OK);
}
if (Oflag) {
xo_open_container("statistics");
xo_set_version(NETSTAT_XO_VERSION);
nhgrp_print(fib, af);
xo_close_container("statistics");
xo_finish();
exit(0);
if (xo_finish() < 0)
xo_err(EX_IOERR, "stdout");
exit(EX_OK);
}
@ -568,8 +575,9 @@ main(int argc, char *argv[])
#endif
}
xo_close_container("statistics");
xo_finish();
exit(0);
if (xo_finish() < 0)
xo_err(EX_IOERR, "stdout");
exit(EX_OK);
}
if (tp) {
@ -579,8 +587,9 @@ main(int argc, char *argv[])
if (!first)
xo_close_list("socket");
xo_close_container("statistics");
xo_finish();
exit(0);
if (xo_finish() < 0)
xo_err(EX_IOERR, "stdout");
exit(EX_OK);
}
xo_open_container("statistics");
@ -611,8 +620,9 @@ main(int argc, char *argv[])
if (!first)
xo_close_list("socket");
xo_close_container("statistics");
xo_finish();
exit(0);
if (xo_finish() < 0)
xo_err(EX_IOERR, "stdout");
exit(EX_OK);
}
static int
@ -732,7 +742,7 @@ kvmd_init(void)
kvmd = kvm_openfiles(nlistf, memf, NULL, O_RDONLY, errbuf);
if (setgid(getgid()) != 0)
xo_err(-1, "setgid");
xo_err(EX_OSERR, "setgid");
if (kvmd == NULL) {
xo_warnx("kvm not available: %s", errbuf);
@ -757,10 +767,10 @@ kresolve_list(struct nlist *_nl)
if (kvm_nlist(kvmd, _nl) < 0) {
if (nlistf)
xo_errx(1, "%s: kvm_nlist: %s", nlistf,
xo_errx(EX_UNAVAILABLE, "%s: kvm_nlist: %s", nlistf,
kvm_geterr(kvmd));
else
xo_errx(1, "kvm_nlist: %s", kvm_geterr(kvmd));
xo_errx(EX_UNAVAILABLE, "kvm_nlist: %s", kvm_geterr(kvmd));
}
return (0);
@ -774,10 +784,10 @@ kset_dpcpu(u_int cpuid)
{
if ((kvmd == NULL) && (kvmd_init() != 0))
xo_errx(-1, "%s: kvm is not available", __func__);
xo_errx(EX_UNAVAILABLE, "%s: kvm is not available", __func__);
if (kvm_dpcpu_setcpu(kvmd, cpuid) < 0)
xo_errx(-1, "%s: kvm_dpcpu_setcpu(%u): %s", __func__,
xo_errx(EX_UNAVAILABLE, "%s: kvm_dpcpu_setcpu(%u): %s", __func__,
cpuid, kvm_geterr(kvmd));
return;
}
@ -834,7 +844,7 @@ kread_counters(u_long addr, void *buf, size_t size)
n = size / sizeof(uint64_t);
if ((counters = malloc(n * sizeof(u_long))) == NULL)
xo_err(-1, "malloc");
xo_err(EX_OSERR, "malloc");
if (kread(addr, counters, n * sizeof(u_long)) < 0) {
free(counters);
return (-1);
@ -914,7 +924,7 @@ name2protox(const char *name)
static void
usage(void)
{
(void)xo_error("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
xo_error("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
"usage: netstat [-j jail] [-46AaCcLnRSTWx] [-f protocol_family | -p protocol]\n"
" [-M core] [-N system]",
" netstat [-j jail] -i | -I interface [-46abdhnW] [-f address_family]\n"
@ -933,6 +943,5 @@ usage(void)
" netstat [-j jail] -g [-46W] [-f address_family] [-M core] [-N system]",
" netstat [-j jail] -gs [-46s] [-f address_family] [-M core] [-N system]",
" netstat [-j jail] -Q");
xo_finish();
exit(1);
exit(EX_USAGE);
}

View File

@ -43,7 +43,6 @@
#include <sys/socketvar.h>
#include <sys/sysctl.h>
#include <err.h>
#include <kvm.h>
#include <memstat.h>
#include <stdint.h>

View File

@ -62,7 +62,6 @@
#include <netinet/ip_mroute.h>
#undef _NETSTAT_
#include <err.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

View File

@ -81,7 +81,6 @@
#include <netinet/in.h>
#include <err.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

View File

@ -53,7 +53,6 @@
#include <stdbool.h>
#include <string.h>
#include <unistd.h>
#include <err.h>
#include <libxo/xo.h>
#include "netstat.h"

View File

@ -40,12 +40,12 @@
#include <net/netisr.h>
#include <net/netisr_internal.h>
#include <err.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <sysexits.h>
#include <libxo/xo.h>
#include "netstat.h"
#include "nl_defs.h"
@ -112,7 +112,7 @@ netisr_load_kvm_string(uintptr_t addr, char *dest, u_int limit)
for (i = 0; i < limit; i++) {
if (kread(addr + i, &dest[i], sizeof(dest[i])) != 0)
xo_errx(-1, "%s: kread()", __func__);
xo_errx(EX_OSERR, "%s: kread()", __func__);
if (dest[i] == '\0')
break;
}
@ -167,9 +167,9 @@ netisr_load_sysctl_uint(const char *name, u_int *p)
retlen = sizeof(u_int);
if (sysctlbyname(name, p, &retlen, NULL, 0) < 0)
xo_err(-1, "%s", name);
xo_err(EX_OSERR, "%s", name);
if (retlen != sizeof(u_int))
xo_errx(-1, "%s: invalid len %ju", name, (uintmax_t)retlen);
xo_errx(EX_DATAERR, "%s: invalid len %ju", name, (uintmax_t)retlen);
}
static void
@ -179,7 +179,7 @@ netisr_load_sysctl_string(const char *name, char *p, size_t len)
retlen = len;
if (sysctlbyname(name, p, &retlen, NULL, 0) < 0)
xo_err(-1, "%s", name);
xo_err(EX_OSERR, "%s", name);
p[len - 1] = '\0';
}
@ -212,13 +212,13 @@ netisr_load_kvm_proto(void)
*/
kread(nl[N_NETISR_MAXPROT].n_value, &maxprot, sizeof(u_int));
if (maxprot != NETISR_MAXPROT)
xo_errx(-1, "%s: NETISR_MAXPROT mismatch", __func__);
xo_errx(EX_DATAERR, "%s: NETISR_MAXPROT mismatch", __func__);
len = maxprot * sizeof(*np_array);
np_array = malloc(len);
if (np_array == NULL)
xo_err(-1, "%s: malloc", __func__);
xo_err(EX_OSERR, "%s: malloc", __func__);
if (kread(nl[N_NETISR_PROTO].n_value, np_array, len) != 0)
xo_errx(-1, "%s: kread(_netisr_proto)", __func__);
xo_errx(EX_DATAERR, "%s: kread(_netisr_proto)", __func__);
/*
* Size and allocate memory to hold only live protocols.
@ -231,7 +231,7 @@ netisr_load_kvm_proto(void)
}
proto_array = calloc(protocount, sizeof(*proto_array));
if (proto_array == NULL)
err(-1, "malloc");
xo_err(EX_OSERR, "malloc");
protocount = 0;
for (i = 0; i < maxprot; i++) {
npp = &np_array[i];
@ -263,21 +263,21 @@ netisr_load_sysctl_proto(void)
size_t len;
if (sysctlbyname("net.isr.proto", NULL, &len, NULL, 0) < 0)
xo_err(-1, "net.isr.proto: query len");
xo_err(EX_OSERR, "net.isr.proto: query len");
if (len % sizeof(*proto_array) != 0)
xo_errx(-1, "net.isr.proto: invalid len");
xo_errx(EX_DATAERR, "net.isr.proto: invalid len");
proto_array = malloc(len);
if (proto_array == NULL)
xo_err(-1, "malloc");
xo_err(EX_OSERR, "malloc");
if (sysctlbyname("net.isr.proto", proto_array, &len, NULL, 0) < 0)
xo_err(-1, "net.isr.proto: query data");
xo_err(EX_OSERR, "net.isr.proto: query data");
if (len % sizeof(*proto_array) != 0)
xo_errx(-1, "net.isr.proto: invalid len");
xo_errx(EX_DATAERR, "net.isr.proto: invalid len");
proto_array_len = len / sizeof(*proto_array);
if (proto_array_len < 1)
xo_errx(-1, "net.isr.proto: no data");
xo_errx(EX_DATAERR, "net.isr.proto: no data");
if (proto_array[0].snp_version != sizeof(proto_array[0]))
xo_errx(-1, "net.isr.proto: invalid version");
xo_errx(EX_DATAERR, "net.isr.proto: invalid version");
}
static void
@ -293,22 +293,22 @@ netisr_load_kvm_workstream(void)
len = numthreads * sizeof(*nws_array);
nws_array = malloc(len);
if (nws_array == NULL)
xo_err(-1, "malloc");
xo_err(EX_OSERR, "malloc");
if (kread(nl[N_NWS_ARRAY].n_value, nws_array, len) != 0)
xo_errx(-1, "%s: kread(_nws_array)", __func__);
xo_errx(EX_OSERR, "%s: kread(_nws_array)", __func__);
workstream_array = calloc(numthreads, sizeof(*workstream_array));
if (workstream_array == NULL)
xo_err(-1, "calloc");
xo_err(EX_OSERR, "calloc");
workstream_array_len = numthreads;
work_array = calloc(numthreads * proto_array_len, sizeof(*work_array));
if (work_array == NULL)
xo_err(-1, "calloc");
xo_err(EX_OSERR, "calloc");
counter = 0;
for (wsid = 0; wsid < numthreads; wsid++) {
cpuid = nws_array[wsid];
kset_dpcpu(cpuid);
if (kread(nl[N_NWS].n_value, &nws, sizeof(nws)) != 0)
xo_errx(-1, "%s: kread(nw)", __func__);
xo_errx(EX_OSERR, "%s: kread(nw)", __func__);
snwsp = &workstream_array[wsid];
snwsp->snws_version = sizeof(*snwsp);
snwsp->snws_wsid = cpuid;
@ -348,22 +348,22 @@ netisr_load_sysctl_workstream(void)
size_t len;
if (sysctlbyname("net.isr.workstream", NULL, &len, NULL, 0) < 0)
xo_err(-1, "net.isr.workstream: query len");
xo_err(EX_OSERR, "net.isr.workstream: query len");
if (len % sizeof(*workstream_array) != 0)
xo_errx(-1, "net.isr.workstream: invalid len");
xo_errx(EX_DATAERR, "net.isr.workstream: invalid len");
workstream_array = malloc(len);
if (workstream_array == NULL)
xo_err(-1, "malloc");
xo_err(EX_OSERR, "malloc");
if (sysctlbyname("net.isr.workstream", workstream_array, &len, NULL,
0) < 0)
xo_err(-1, "net.isr.workstream: query data");
xo_err(EX_OSERR, "net.isr.workstream: query data");
if (len % sizeof(*workstream_array) != 0)
xo_errx(-1, "net.isr.workstream: invalid len");
xo_errx(EX_DATAERR, "net.isr.workstream: invalid len");
workstream_array_len = len / sizeof(*workstream_array);
if (workstream_array_len < 1)
xo_errx(-1, "net.isr.workstream: no data");
xo_errx(EX_DATAERR, "net.isr.workstream: no data");
if (workstream_array[0].snws_version != sizeof(workstream_array[0]))
xo_errx(-1, "net.isr.workstream: invalid version");
xo_errx(EX_DATAERR, "net.isr.workstream: invalid version");
}
static void
@ -372,21 +372,21 @@ netisr_load_sysctl_work(void)
size_t len;
if (sysctlbyname("net.isr.work", NULL, &len, NULL, 0) < 0)
xo_err(-1, "net.isr.work: query len");
xo_err(EX_OSERR, "net.isr.work: query len");
if (len % sizeof(*work_array) != 0)
xo_errx(-1, "net.isr.work: invalid len");
xo_errx(EX_DATAERR, "net.isr.work: invalid len");
work_array = malloc(len);
if (work_array == NULL)
xo_err(-1, "malloc");
xo_err(EX_OSERR, "malloc");
if (sysctlbyname("net.isr.work", work_array, &len, NULL, 0) < 0)
xo_err(-1, "net.isr.work: query data");
xo_err(EX_OSERR, "net.isr.work: query data");
if (len % sizeof(*work_array) != 0)
xo_errx(-1, "net.isr.work: invalid len");
xo_errx(EX_DATAERR, "net.isr.work: invalid len");
work_array_len = len / sizeof(*work_array);
if (work_array_len < 1)
xo_errx(-1, "net.isr.work: no data");
xo_errx(EX_DATAERR, "net.isr.work: no data");
if (work_array[0].snw_version != sizeof(work_array[0]))
xo_errx(-1, "net.isr.work: invalid version");
xo_errx(EX_DATAERR, "net.isr.work: invalid version");
}
static void

View File

@ -45,7 +45,6 @@
#include <string.h>
#include <sysexits.h>
#include <unistd.h>
#include <err.h>
#include <libxo/xo.h>
#include "netstat.h"
#include "common.h"
@ -209,12 +208,12 @@ dump_nhgrp_sysctl(int fibnum, int af, struct nhops_dump *nd)
mib[5] = 0;
mib[6] = fibnum;
if (sysctl(mib, nitems(mib), NULL, &needed, NULL, 0) < 0)
err(EX_OSERR, "sysctl: net.route.0.%d.nhgrpdump.%d estimate",
xo_err(EX_OSERR, "sysctl: net.route.0.%d.nhgrpdump.%d estimate",
af, fibnum);
if ((buf = malloc(needed)) == NULL)
errx(2, "malloc(%lu)", (unsigned long)needed);
xo_errx(EX_OSERR, "malloc(%lu)", (unsigned long)needed);
if (sysctl(mib, nitems(mib), buf, &needed, NULL, 0) < 0)
err(1, "sysctl: net.route.0.%d.nhgrpdump.%d", af, fibnum);
xo_err(EX_OSERR, "sysctl: net.route.0.%d.nhgrpdump.%d", af, fibnum);
lim = buf + needed;
/*
@ -337,7 +336,7 @@ nhgrp_print(int fibnum, int af)
if (sysctlbyname("net.fibs", &numfibs, &intsize, NULL, 0) == -1)
numfibs = 1;
if (fibnum < 0 || fibnum > numfibs - 1)
errx(EX_USAGE, "%d: invalid fib", fibnum);
xo_errx(EX_USAGE, "%d: invalid fib", fibnum);
ifmap = prepare_ifmap(&ifmap_size);
prepare_nh_map(fibnum, af);

View File

@ -58,7 +58,6 @@
#include <string.h>
#include <sysexits.h>
#include <unistd.h>
#include <err.h>
#include <libxo/xo.h>
#include "netstat.h"
#include "common.h"
@ -213,7 +212,7 @@ nhop_map_update(struct nhop_map *map, uint32_t idx, char *gw, char *ifname)
sz = new_size * (sizeof(struct nhop_entry));
if ((map->ptr = realloc(map->ptr, sz)) == NULL)
errx(2, "realloc(%zu) failed", sz);
xo_errx(EX_OSERR, "realloc(%zu) failed", sz);
memset(&map->ptr[map->size], 0, (new_size - map->size) * sizeof(struct nhop_entry));
map->size = new_size;
@ -352,12 +351,12 @@ dump_nhops_sysctl(int fibnum, int af, struct nhops_dump *nd)
mib[5] = 0;
mib[6] = fibnum;
if (sysctl(mib, nitems(mib), NULL, &needed, NULL, 0) < 0)
err(EX_OSERR, "sysctl: net.route.0.%d.nhdump.%d estimate", af,
xo_err(EX_OSERR, "sysctl: net.route.0.%d.nhdump.%d estimate", af,
fibnum);
if ((buf = malloc(needed)) == NULL)
errx(2, "malloc(%lu)", (unsigned long)needed);
xo_errx(EX_OSERR, "malloc(%lu)", (unsigned long)needed);
if (sysctl(mib, nitems(mib), buf, &needed, NULL, 0) < 0)
err(1, "sysctl: net.route.0.%d.nhdump.%d", af, fibnum);
xo_err(EX_OSERR, "sysctl: net.route.0.%d.nhdump.%d", af, fibnum);
lim = buf + needed;
/*
@ -463,7 +462,7 @@ nhops_print(int fibnum, int af)
if (sysctlbyname("net.fibs", &numfibs, &intsize, NULL, 0) == -1)
numfibs = 1;
if (fibnum < 0 || fibnum > numfibs - 1)
errx(EX_USAGE, "%d: invalid fib", fibnum);
xo_errx(EX_USAGE, "%d: invalid fib", fibnum);
ifmap = prepare_ifmap(&ifmap_size);

View File

@ -57,7 +57,6 @@
#include <string.h>
#include <sysexits.h>
#include <unistd.h>
#include <err.h>
#include <libxo/xo.h>
#include "netstat.h"
#include "common.h"
@ -124,14 +123,14 @@ routepr(int fibnum, int af)
if (sysctlbyname("net.fibs", &numfibs, &intsize, NULL, 0) == -1)
numfibs = 1;
if (fibnum < 0 || fibnum > numfibs - 1)
errx(EX_USAGE, "%d: invalid fib", fibnum);
xo_errx(EX_USAGE, "%d: invalid fib", fibnum);
/*
* Since kernel & userland use different timebase
* (time_uptime vs time_second) and we are reading kernel memory
* directly we should do rt_expire --> expire_time conversion.
*/
if (clock_gettime(CLOCK_UPTIME, &uptime) < 0)
err(EX_OSERR, "clock_gettime() failed");
xo_err(EX_OSERR, "clock_gettime() failed");
xo_open_container("route-information");
xo_emit("{T:Routing tables}");
@ -259,12 +258,12 @@ p_rtable_sysctl(int fibnum, int af)
mib[5] = 0;
mib[6] = fibnum;
if (sysctl(mib, nitems(mib), NULL, &needed, NULL, 0) < 0)
err(EX_OSERR, "sysctl: net.route.0.%d.dump.%d estimate", af,
xo_err(EX_OSERR, "sysctl: net.route.0.%d.dump.%d estimate", af,
fibnum);
if ((buf = malloc(needed)) == NULL)
errx(2, "malloc(%lu)", (unsigned long)needed);
xo_errx(EX_OSERR, "malloc(%lu)", (unsigned long)needed);
if (sysctl(mib, nitems(mib), buf, &needed, NULL, 0) < 0)
err(1, "sysctl: net.route.0.%d.dump.%d", af, fibnum);
xo_err(EX_OSERR, "sysctl: net.route.0.%d.dump.%d", af, fibnum);
lim = buf + needed;
xo_open_container("route-table");
xo_open_list("rt-family");

View File

@ -62,7 +62,6 @@
#include <string.h>
#include <sysexits.h>
#include <unistd.h>
#include <err.h>
#include <libxo/xo.h>
#include "netstat.h"
#include "common.h"
@ -104,7 +103,7 @@ prepare_ifmap_netlink(struct snl_state *ss, size_t *pifmap_size)
if (link.ifi_index >= ifmap_size) {
size_t size = roundup2(link.ifi_index + 1, 32) * sizeof(struct ifmap_entry);
if ((ifmap = realloc(ifmap, size)) == NULL)
errx(2, "realloc(%zu) failed", size);
xo_errx(EX_OSERR, "realloc(%zu) failed", size);
memset(&ifmap[ifmap_size], 0,
size - ifmap_size *
sizeof(struct ifmap_entry));

View File

@ -44,7 +44,6 @@
#include <netinet/sctp_constants.h>
#include <arpa/inet.h>
#include <err.h>
#include <errno.h>
#include <libutil.h>
#include <netdb.h>

View File

@ -48,7 +48,6 @@
#include <netinet/in.h>
#include <errno.h>
#include <err.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>