memory stats -> wrong type in getting some sysctls
cpu stats -> wrong sysctl getting cpu model process stats -> netbsd5 was not defined leading to wrong process stats
This commit is contained in:
parent
e0da5ba7ae
commit
8773b6736e
4 changed files with 205 additions and 26 deletions
|
@ -1,8 +1,16 @@
|
|||
$NetBSD: patch-agent_mibgroup_hardware_cpu_cpu__sysctl.c,v 1.1 2013/03/23 12:23:25 joerg Exp $
|
||||
$NetBSD: patch-agent_mibgroup_hardware_cpu_cpu__sysctl.c,v 1.2 2013/04/04 19:59:06 christos Exp $
|
||||
|
||||
--- agent/mibgroup/hardware/cpu/cpu_sysctl.c.orig 2013-03-23 10:53:47.000000000 +0000
|
||||
+++ agent/mibgroup/hardware/cpu/cpu_sysctl.c
|
||||
@@ -24,6 +24,9 @@
|
||||
--- agent/mibgroup/hardware/cpu/cpu_sysctl.c.orig 2012-10-09 18:28:58.000000000 -0400
|
||||
+++ agent/mibgroup/hardware/cpu/cpu_sysctl.c 2013-04-04 15:33:49.000000000 -0400
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
+#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#if defined(__FreeBSD__)
|
||||
@@ -24,6 +25,9 @@
|
||||
#include <sys/param.h>
|
||||
#include <sys/sysctl.h>
|
||||
#include <sys/vmmeter.h>
|
||||
|
@ -12,3 +20,68 @@ $NetBSD: patch-agent_mibgroup_hardware_cpu_cpu__sysctl.c,v 1.1 2013/03/23 12:23:
|
|||
#ifdef HAVE_VM_VM_PARAM_H
|
||||
#include <vm/vm_param.h>
|
||||
#endif
|
||||
@@ -43,7 +47,7 @@
|
||||
int i, n;
|
||||
size_t siz;
|
||||
int ncpu_mib[] = { CTL_HW, HW_NCPU };
|
||||
-#if !(defined(__NetBSD__) && ( defined(__i386__) || defined(__x86_64__) ) )
|
||||
+#if !(defined(__FreeBSD__) && ( defined(__i386__) || defined(__x86_64__) ) )
|
||||
int model_mib[] = { CTL_HW, HW_MODEL };
|
||||
#endif
|
||||
char descr[ SNMP_MAXBUF ];
|
||||
@@ -51,14 +55,17 @@
|
||||
strcpy(cpu->name, "Overall CPU statistics");
|
||||
|
||||
siz = sizeof(n);
|
||||
- sysctl(ncpu_mib, 2, &n, &siz, NULL, 0);
|
||||
+ if (sysctl(ncpu_mib, 2, &n, &siz, NULL, 0) == -1)
|
||||
+ snmp_log(LOG_ERR, "sysctl hw.ncpu failed (errno %d)\n", errno);
|
||||
if ( n <= 0 )
|
||||
n = 1; /* Single CPU system */
|
||||
siz = sizeof(descr);
|
||||
-#if defined(__NetBSD__) && ( defined(__i386__) || defined(__x86_64__) )
|
||||
- sysctlbyname("machdep.cpu_brand", descr, &siz, NULL, 0);
|
||||
+#if defined(__FreeBSD__) && ( defined(__i386__) || defined(__x86_64__) )
|
||||
+ if (sysctlbyname("machdep.cpu_brand", descr, &siz, NULL, 0) == -1)
|
||||
+ snmp_log(LOG_ERR, "sysctl machdep.cpu_brand failed (errno %d)\n", errno)
|
||||
#else
|
||||
- sysctl(model_mib, 2, descr, &siz, NULL, 0);
|
||||
+ if (sysctl(model_mib, 2, descr, &siz, NULL, 0) == -1)
|
||||
+ snmp_log(LOG_ERR, "sysctl hw.model failed (errno %d)\n", errno);
|
||||
#endif
|
||||
for ( i = 0; i < n; i++ ) {
|
||||
cpu = netsnmp_cpu_get_byIdx( i, 1 );
|
||||
@@ -174,9 +181,11 @@
|
||||
netsnmp_cpu_info *cpu = netsnmp_cpu_get_byIdx( -1, 0 );
|
||||
|
||||
#if (defined(__FreeBSD__) || defined(__NetBSD__))
|
||||
- sysctlbyname("kern.cp_time", cpu_stats, &cpu_size, NULL, 0);
|
||||
+ if (sysctlbyname("kern.cp_time", cpu_stats, &cpu_size, NULL, 0) == -1)
|
||||
+ snmp_log(LOG_ERR, "sysctl kern.cp_time failed (errno %d)\n", errno);
|
||||
#else
|
||||
- sysctl(cpu_mib, 2, cpu_stats, &cpu_size, NULL, 0);
|
||||
+ if (sysctl(cpu_mib, 2, cpu_stats, &cpu_size, NULL, 0) == -1)
|
||||
+ snmp_log(LOG_ERR, "sysctl kern.cpu failed (errno %d)\n", errno);
|
||||
#endif
|
||||
cpu->user_ticks = (unsigned long long)cpu_stats[CP_USER];
|
||||
cpu->nice_ticks = (unsigned long long)cpu_stats[CP_NICE];
|
||||
@@ -190,7 +199,8 @@
|
||||
* Interrupt/Context Switch statistics
|
||||
* XXX - Do these really belong here ?
|
||||
*/
|
||||
- sysctl(mem_mib, 2, &mem_stats, &mem_size, NULL, 0);
|
||||
+ if (sysctl(mem_mib, 2, &mem_stats, &mem_size, NULL, 0) == -1)
|
||||
+ snmp_log(LOG_ERR, "sysctl vm.vm_meter failed (errno %d)\n", errno);
|
||||
cpu->nInterrupts = (unsigned long long)mem_stats.NS_VM_INTR;
|
||||
cpu->nCtxSwitches = (unsigned long long)mem_stats.NS_VM_SWTCH;
|
||||
cpu->swapIn = (unsigned long long)mem_stats.NS_VM_SWAPIN;
|
||||
@@ -205,7 +215,8 @@
|
||||
#ifdef NETSNMP_KERN_MCPU
|
||||
mcpu_size = cpu_num*sizeof(NETSNMP_KERN_MCPU_TYPE);
|
||||
mcpu_stats = malloc(mcpu_size);
|
||||
- sysctl(mcpu_mib, 2, mcpu_stats, &mcpu_size, NULL, 0);
|
||||
+ if (sysctl(mcpu_mib, 2, mcpu_stats, &mcpu_size, NULL, 0) == -1)
|
||||
+ snmp_log(LOG_ERR, "sysctl kern.mcpu failed (errno %d)\n", errno);
|
||||
for ( i = 0; i < cpu_num; i++ ) {
|
||||
cpu = netsnmp_cpu_get_byIdx( i, 0 );
|
||||
/* XXX - per-CPU statistics - mcpu_mib[i].??? */
|
||||
|
|
|
@ -1,13 +1,107 @@
|
|||
$NetBSD: patch-agent_mibgroup_hardware_memory_memory__netbsd.c,v 1.1 2013/03/17 00:18:31 gdt Exp $
|
||||
$NetBSD: patch-agent_mibgroup_hardware_memory_memory__netbsd.c,v 1.2 2013/04/04 19:59:07 christos Exp $
|
||||
|
||||
--- agent/mibgroup/hardware/memory/memory_netbsd.c.orig 2012-10-09 22:28:58.000000000 +0000
|
||||
+++ agent/mibgroup/hardware/memory/memory_netbsd.c
|
||||
@@ -174,7 +174,7 @@ int netsnmp_mem_arch_load( netsnmp_cache
|
||||
--- agent/mibgroup/hardware/memory/memory_netbsd.c.orig 2012-10-09 18:28:58.000000000 -0400
|
||||
+++ agent/mibgroup/hardware/memory/memory_netbsd.c 2013-04-04 15:09:23.000000000 -0400
|
||||
@@ -48,8 +48,8 @@
|
||||
int uvmexp_mib[] = { CTL_VM, VM_UVMEXP };
|
||||
int total_mib[] = { CTL_VM, VM_METER };
|
||||
#else
|
||||
- unsigned int bufspace;
|
||||
- unsigned int maxbufspace;
|
||||
+ uint64_t bufspace;
|
||||
+ uint64_t maxbufspace;
|
||||
size_t buf_size = sizeof(bufspace);
|
||||
#endif
|
||||
|
||||
@@ -102,6 +102,7 @@
|
||||
mem->units = pagesize;
|
||||
mem->size = phys_mem/pagesize;
|
||||
mem->free = total.t_free;
|
||||
+ mem->other = -1;
|
||||
}
|
||||
|
||||
mem = netsnmp_memory_get_byIdx( NETSNMP_MEM_TYPE_USERMEM, 1 );
|
||||
@@ -113,6 +114,7 @@
|
||||
mem->units = pagesize;
|
||||
mem->size = user_mem/pagesize;
|
||||
mem->free = uvmexp.free;
|
||||
+ mem->other = -1;
|
||||
}
|
||||
|
||||
#if 1
|
||||
@@ -125,6 +127,7 @@
|
||||
mem->units = pagesize;
|
||||
mem->size = total.t_vm;
|
||||
mem->free = total.t_avm;
|
||||
+ mem->other = -1;
|
||||
}
|
||||
|
||||
mem = netsnmp_memory_get_byIdx( NETSNMP_MEM_TYPE_SHARED, 1 );
|
||||
@@ -136,6 +139,7 @@
|
||||
mem->units = pagesize;
|
||||
mem->size = total.t_vmshr;
|
||||
mem->free = total.t_avmshr;
|
||||
+ mem->other = -1;
|
||||
}
|
||||
|
||||
mem = netsnmp_memory_get_byIdx( NETSNMP_MEM_TYPE_SHARED2, 1 );
|
||||
@@ -147,6 +151,7 @@
|
||||
mem->units = pagesize;
|
||||
mem->size = total.t_rmshr;
|
||||
mem->free = total.t_armshr;
|
||||
+ mem->other = -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -174,7 +179,8 @@
|
||||
mem->descr = strdup("Memory buffers");
|
||||
mem->units = 1024;
|
||||
mem->size = maxbufspace /1024;
|
||||
- mem->size = (maxbufspace - bufspace)/1024;
|
||||
+ mem->free = (maxbufspace - bufspace)/1024;
|
||||
+ mem->other = -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -199,18 +205,28 @@
|
||||
* If there's only one swap device, don't bother
|
||||
*/
|
||||
n = swapctl( SWAP_NSWAP, NULL, 0 );
|
||||
- if ( n <= 1 )
|
||||
+ if ( n <= 1 ) {
|
||||
+ if (n == -1)
|
||||
+ snmp_log_perror("error getting swap");
|
||||
return;
|
||||
+ }
|
||||
|
||||
- s = (struct swapent*)calloc(n, sizeof(struct swapent));
|
||||
- swapctl( SWAP_STATS, s, n );
|
||||
-
|
||||
+ s = calloc(n, sizeof(struct swapent));
|
||||
+ if (s == NULL) {
|
||||
+ snmp_log_perror("Out of memory for swap");
|
||||
+ return;
|
||||
+ }
|
||||
+ if (swapctl( SWAP_STATS, s, n ) == -1) {
|
||||
+ snmp_log_perror("error getting swap");
|
||||
+ return;
|
||||
+ }
|
||||
for (i = 0; i < n; ++i) {
|
||||
mem = netsnmp_memory_get_byIdx( NETSNMP_MEM_TYPE_SWAP+1+i, 1 );
|
||||
- if (!mem)
|
||||
+ if (!mem) {
|
||||
+ snmp_log_perror("no swapindex");
|
||||
continue;
|
||||
+ }
|
||||
if (!mem->descr) {
|
||||
- /* sprintf(buf, "swap #%d", s[i].se_dev); */
|
||||
sprintf(buf, "swap %s", s[i].se_path);
|
||||
mem->descr = strdup( buf );
|
||||
}
|
||||
@@ -219,5 +235,6 @@
|
||||
mem->free = s[i].se_nblks - s[i].se_inuse;
|
||||
mem->other = -1;
|
||||
}
|
||||
+/*###238 [cc] error: expected identifier or '(' before '}' token%%%*/
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
$NetBSD: patch-fa,v 1.5 2013/03/17 00:15:29 gdt Exp $
|
||||
|
||||
--- include/net-snmp/system/netbsd.h.orig 2012-10-09 22:28:58.000000000 +0000
|
||||
+++ include/net-snmp/system/netbsd.h
|
||||
@@ -68,6 +68,13 @@
|
||||
|
||||
#if __NetBSD_Version__ >= 499005800
|
||||
#define NETBSD_STATS_VIA_SYSCTL
|
||||
+
|
||||
+/* Why these undefs? */
|
||||
+#undef IPSTAT_SYMBOL
|
||||
+#undef ICMPSTAT_SYMBOL
|
||||
+#undef TCPSTAT_SYMBOL
|
||||
+#undef UDPSTAT_SYMBOL
|
||||
+
|
||||
#endif /* __NetBSD_Version__ >= 499005800 */
|
||||
|
||||
/* define the extra mib modules that are supported */
|
30
net/net-snmp/patches/patch-include_net-snmp_system_netbsd.h
Normal file
30
net/net-snmp/patches/patch-include_net-snmp_system_netbsd.h
Normal file
|
@ -0,0 +1,30 @@
|
|||
$NetBSD: patch-include_net-snmp_system_netbsd.h,v 1.1 2013/04/04 19:59:07 christos Exp $
|
||||
|
||||
--- include/net-snmp/system/netbsd.h.orig 2012-10-09 18:28:58.000000000 -0400
|
||||
+++ include/net-snmp/system/netbsd.h 2013-04-04 15:07:09.000000000 -0400
|
||||
@@ -33,6 +33,11 @@
|
||||
#define UTMP_FILE _PATH_UTMP
|
||||
|
||||
#define UDP_ADDRESSES_IN_HOST_ORDER 1
|
||||
+#if __NetBSD_Version__ >= 600000000 && !defined(netbsdelf6)
|
||||
+#define netbsdelf6
|
||||
+#elif __NetBSD_Version__ >= 500000000 && !defined(netbsdelf5)
|
||||
+#define netbsdelf5
|
||||
+#endif
|
||||
|
||||
#ifdef netbsdelf6
|
||||
#define netbsd6
|
||||
@@ -68,6 +73,13 @@
|
||||
|
||||
#if __NetBSD_Version__ >= 499005800
|
||||
#define NETBSD_STATS_VIA_SYSCTL
|
||||
+
|
||||
+/* Why these undefs? */
|
||||
+#undef IPSTAT_SYMBOL
|
||||
+#undef ICMPSTAT_SYMBOL
|
||||
+#undef TCPSTAT_SYMBOL
|
||||
+#undef UDPSTAT_SYMBOL
|
||||
+
|
||||
#endif /* __NetBSD_Version__ >= 499005800 */
|
||||
|
||||
/* define the extra mib modules that are supported */
|
Loading…
Reference in a new issue