aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/auxstats
diff options
context:
space:
mode:
authorGleydson Soares <gsoares@gmail.com>2015-12-07 08:32:05 -0300
committerRuss Cox <rsc@swtch.com>2015-12-08 16:41:13 +0000
commit009b0cb5eb340b8bc3268bfaeb86abfeffdc1b1c (patch)
tree5d676152291dd81eddabf8537dc598bff588d648 /src/cmd/auxstats
parent6a93bd5c92bd2954314f492f10bbcac2c3416da0 (diff)
downloadplan9port-009b0cb5eb340b8bc3268bfaeb86abfeffdc1b1c.tar.gz
plan9port-009b0cb5eb340b8bc3268bfaeb86abfeffdc1b1c.tar.bz2
plan9port-009b0cb5eb340b8bc3268bfaeb86abfeffdc1b1c.zip
auxstats: fix OpenBSD by using getifaddrs(3) instead of kvm(3)
Change-Id: I6a096ba24809a402911c30406d384d16c03fc96c Reviewed-on: https://plan9port-review.googlesource.com/1410 Reviewed-by: Russ Cox <rsc@swtch.com>
Diffstat (limited to 'src/cmd/auxstats')
-rw-r--r--src/cmd/auxstats/OpenBSD.c97
-rw-r--r--src/cmd/auxstats/mkfile2
2 files changed, 24 insertions, 75 deletions
diff --git a/src/cmd/auxstats/OpenBSD.c b/src/cmd/auxstats/OpenBSD.c
index f800c05c..6899fc31 100644
--- a/src/cmd/auxstats/OpenBSD.c
+++ b/src/cmd/auxstats/OpenBSD.c
@@ -1,14 +1,12 @@
#include <u.h>
-#include <kvm.h>
-#include <nlist.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/sched.h>
#include <sys/socket.h>
+#include <ifaddrs.h>
#include <sys/sysctl.h>
#include <sys/time.h>
#include <net/if.h>
-#include <net/if_var.h>
#include <machine/apmvar.h>
#include <sys/ioctl.h>
#include <uvm/uvm_param.h>
@@ -24,11 +22,9 @@ void xcpu(int);
void xswap(int);
void xsysctl(int);
void xnet(int);
-void xkvm(int);
void (*statfn[])(int) =
{
- xkvm,
xapm,
xloadavg,
xcpu,
@@ -37,14 +33,6 @@ void (*statfn[])(int) =
0
};
-static kvm_t *kvm;
-
-static struct nlist nl[] = {
- { "_ifnet" },
- { "_cp_time" },
- { "" }
-};
-
void
xloadavg(int first)
{
@@ -76,78 +64,37 @@ xapm(int first)
Bprint(&bout, "battery =%d 100\n", ai.battery_life);
}
-
-void
-kvminit(void)
-{
- char buf[_POSIX2_LINE_MAX];
-
- if(kvm)
- return;
- kvm = kvm_openfiles(nil, nil, nil, O_RDONLY, buf);
- if(kvm == nil) {
- fprint(2, "kvm open error\n%s", buf);
- return;
- }
- if(kvm_nlist(kvm, nl) < 0 || nl[0].n_type == 0){
- kvm = nil;
- return;
- }
-}
-
-void
-xkvm(int first)
-{
- if(first)
- kvminit();
-}
-
-int
-kread(ulong addr, char *buf, int size)
-{
- if(kvm_read(kvm, addr, buf, size) != size){
- memset(buf, 0, size);
- return -1;
- }
- return size;
-}
-
void
xnet(int first)
{
ulong out, in, outb, inb, err;
- static ulong ifnetaddr;
- ulong addr;
- struct ifnet ifnet;
- struct ifnet_head ifnethead;
- char name[16];
+ struct ifaddrs *ifa, *ifap;
+ struct if_data *ifd = NULL;
- if(first)
+ if (first)
return;
- if(ifnetaddr == 0){
- ifnetaddr = nl[0].n_value;
- if(ifnetaddr == 0)
- return;
- }
+ out = in = outb = inb = err = 0;
- if(kread(ifnetaddr, (char*)&ifnethead, sizeof ifnethead) < 0)
+ if (getifaddrs(&ifap) == -1)
return;
- out = in = outb = inb = err = 0;
- addr = (ulong)TAILQ_FIRST(&ifnethead);
- while(addr){
- if(kread(addr, (char*)&ifnet, sizeof ifnet) < 0
- || kread((ulong)ifnet.if_xname, name, 16) < 0)
- return;
- name[15] = 0;
- addr = (ulong)TAILQ_NEXT(&ifnet, if_list);
- out += ifnet.if_opackets;
- in += ifnet.if_ipackets;
- outb += ifnet.if_obytes;
- inb += ifnet.if_ibytes;
- err += ifnet.if_oerrors+ifnet.if_ierrors;
+ for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
+ if (ifa->ifa_addr == NULL ||
+ ifa->ifa_addr->sa_family != AF_LINK)
+ continue;
+
+ ifd = ifa->ifa_data;
+
+ if (ifd != NULL) {
+ out += ifd->ifi_opackets;
+ in += ifd->ifi_ipackets;
+ outb += ifd->ifi_obytes;
+ inb += ifd->ifi_ibytes;
+ err += ifd->ifi_ierrors;
+ }
}
+
Bprint(&bout, "etherin %lud 1000\n", in);
Bprint(&bout, "etherout %lud 1000\n", out);
Bprint(&bout, "etherinb %lud 1000000\n", inb);
@@ -155,6 +102,8 @@ xnet(int first)
Bprint(&bout, "ethererr %lud 1000\n", err);
Bprint(&bout, "ether %lud 1000\n", in+out);
Bprint(&bout, "etherb %lud 1000000\n", inb+outb);
+
+ freeifaddrs(ifap);
}
void
diff --git a/src/cmd/auxstats/mkfile b/src/cmd/auxstats/mkfile
index e1771b80..818e9d39 100644
--- a/src/cmd/auxstats/mkfile
+++ b/src/cmd/auxstats/mkfile
@@ -12,6 +12,6 @@ HFILES=\
<$PLAN9/src/mkone
-KVM=`{if uname |egrep 'BSD' >/dev/null; then echo -lkvm; fi}
+KVM=`{if uname |egrep 'BSD' | egrep -v 'OpenBSD' >/dev/null; then echo -lkvm; fi}
LDFLAGS=$LDFLAGS $KVM