mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-11-24 17:44:17 +01:00
netstat(1): Complete libxo transition
Reviewed by: des MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D41427
This commit is contained in:
parent
3d1b233e03
commit
95968ea7ec
@ -39,7 +39,6 @@
|
||||
#include <net/bpfdesc.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
@ -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));
|
||||
|
@ -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 &&
|
||||
|
@ -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>
|
||||
|
@ -54,7 +54,6 @@
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
|
||||
#include <err.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -43,7 +43,6 @@
|
||||
#include <sys/socketvar.h>
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
#include <err.h>
|
||||
#include <kvm.h>
|
||||
#include <memstat.h>
|
||||
#include <stdint.h>
|
||||
|
@ -62,7 +62,6 @@
|
||||
#include <netinet/ip_mroute.h>
|
||||
#undef _NETSTAT_
|
||||
|
||||
#include <err.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -81,7 +81,6 @@
|
||||
|
||||
#include <netinet/in.h>
|
||||
|
||||
#include <err.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -53,7 +53,6 @@
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <err.h>
|
||||
#include <libxo/xo.h>
|
||||
#include "netstat.h"
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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));
|
||||
|
@ -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>
|
||||
|
@ -48,7 +48,6 @@
|
||||
#include <netinet/in.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <err.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
Loading…
Reference in New Issue
Block a user