From: Doug MacEachern Date: Wed, 6 May 2009 08:41:08 +0000 (+0200) Subject: tcpconns plugin: Compilation fixes for NetBSD. X-Git-Tag: collectd-4.5.4~8 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=5b17ea02b681f681e30db9e0359633d987949b50;p=collectd.git tcpconns plugin: Compilation fixes for NetBSD. Signed-off-by: Doug MacEachern Signed-off-by: Florian Forster --- diff --git a/src/tcpconns.c b/src/tcpconns.c index e1bc8820..02241f3d 100644 --- a/src/tcpconns.c +++ b/src/tcpconns.c @@ -61,6 +61,10 @@ #include "common.h" #include "plugin.h" +#if defined(__OpenBSD__) || defined(__NetBSD__) +#undef HAVE_SYSCTLBYNAME /* force HAVE_LIBKVM_NLIST path */ +#endif + #if !KERNEL_LINUX && !HAVE_SYSCTLBYNAME && !HAVE_LIBKVM_NLIST # error "No applicable input method." #endif @@ -97,7 +101,7 @@ # include /* #endif HAVE_SYSCTLBYNAME */ -/* This is for OpenBSD and possibly NetBSD. */ +/* This is for OpenBSD and NetBSD. */ #elif HAVE_LIBKVM_NLIST # include # include @@ -105,6 +109,7 @@ # include # include # include +# include # include # include # include @@ -673,7 +678,7 @@ static int conn_read (void) /* Get the `head' pcb */ head = (struct inpcb *) &(inpcbtable_ptr->inpt_queue); /* Get the first pcb */ - next = CIRCLEQ_FIRST (&table.inpt_queue); + next = (struct inpcb *)CIRCLEQ_FIRST (&table.inpt_queue); while (next != head) { @@ -681,15 +686,20 @@ static int conn_read (void) kread ((u_long) next, &inpcb, sizeof (inpcb)); /* Advance `next' */ - next = CIRCLEQ_NEXT (&inpcb, inp_queue); + next = (struct inpcb *)CIRCLEQ_NEXT (&inpcb, inp_queue); /* Ignore sockets, that are not connected. */ +#ifdef __NetBSD__ + if (inpcb.inp_af == AF_INET6) + continue; /* XXX see netbsd/src/usr.bin/netstat/inet6.c */ +#else if (!(inpcb.inp_flags & INP_IPV6) && (inet_lnaof(inpcb.inp_laddr) == INADDR_ANY)) continue; if ((inpcb.inp_flags & INP_IPV6) && IN6_IS_ADDR_UNSPECIFIED (&inpcb.inp_laddr6)) continue; +#endif kread ((u_long) inpcb.inp_ppcb, &tcpcb, sizeof (tcpcb)); conn_handle_ports (ntohs(inpcb.inp_lport), ntohs(inpcb.inp_fport), tcpcb.t_state);