From fa21bd3ed4ab2ed3dee8152e079efea3556e1d23 Mon Sep 17 00:00:00 2001 From: sthen Date: Mon, 22 Sep 2008 18:46:36 +0000 Subject: [PATCH] - re-enable kmem support, with 5.4.2 there don't seem to be any problems on tested arch (including the ones that used to have trouble). - repair sysctl() use in cpu_sysctl.c, it was using the wrong type and at least on some arch the system call was failing, so because the code isn't careful about checking return codes and thus used uninitialized space, it tried to allocate memory for info structures for 128 million CPUs on one of my systems... "definitely ok" rui@ --- net/net-snmp/Makefile | 8 ++-- ...h-agent_mibgroup_hardware_cpu_cpu_sysctl_c | 42 +++++++++++++++++++ 2 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 net/net-snmp/patches/patch-agent_mibgroup_hardware_cpu_cpu_sysctl_c diff --git a/net/net-snmp/Makefile b/net/net-snmp/Makefile index 4d4e3ed8608..5158280bc16 100644 --- a/net/net-snmp/Makefile +++ b/net/net-snmp/Makefile @@ -1,12 +1,12 @@ -# $OpenBSD: Makefile,v 1.31 2008/09/20 22:15:51 rui Exp $ +# $OpenBSD: Makefile,v 1.32 2008/09/22 18:46:36 sthen Exp $ COMMENT-main= extendable SNMP implementation COMMENT-perl= SNMP modules for Perl V= 5.4.2 DISTNAME= net-snmp-${V} -PKGNAME-main= ${DISTNAME} -PKGNAME-perl= p5-SNMP-${V} +PKGNAME-main= ${DISTNAME}p0 +PKGNAME-perl= p5-SNMP-${V}p0 SHARED_LIBS= netsnmp 8.0 \ netsnmpagent 8.0 \ netsnmphelpers 8.0 \ @@ -41,8 +41,6 @@ CONFIGURE_ARGS= ${CONFIGURE_SHARED} --with-libwrap --with-perl-modules \ --with-sys-contact="nobody@nowhere.invalid" \ --with-sys-location="somewhere" \ --with-logfile="/var/log/snmpd" \ - --without-kmem-usage \ - --with-out-mib-modules=host/hr_swrun \ --with-persistent-directory="/var/net-snmp" REGRESS_TARGET= test diff --git a/net/net-snmp/patches/patch-agent_mibgroup_hardware_cpu_cpu_sysctl_c b/net/net-snmp/patches/patch-agent_mibgroup_hardware_cpu_cpu_sysctl_c new file mode 100644 index 00000000000..d1927ef66b4 --- /dev/null +++ b/net/net-snmp/patches/patch-agent_mibgroup_hardware_cpu_cpu_sysctl_c @@ -0,0 +1,42 @@ +$OpenBSD: patch-agent_mibgroup_hardware_cpu_cpu_sysctl_c,v 1.1 2008/09/22 18:46:36 sthen Exp $ + +the last chunk is probably not used yet, but what they have now +is plain wrong, so it may as well go in here so it's not lost. + +--- agent/mibgroup/hardware/cpu/cpu_sysctl.c.orig Mon Sep 22 00:58:02 2008 ++++ agent/mibgroup/hardware/cpu/cpu_sysctl.c Mon Sep 22 01:06:11 2008 +@@ -37,19 +37,20 @@ void _cpu_copy_stats( netsnmp_cpu_info *cpu ); + * (including descriptions) + */ + void init_cpu_sysctl( void ) { +- int i, n; ++ int n; + int ncpu_mib[] = { CTL_HW, HW_NCPU }; + int model_mib[] = { CTL_HW, HW_MODEL }; ++ size_t i; + char descr[ SNMP_MAXBUF ]; + netsnmp_cpu_info *cpu = netsnmp_cpu_get_byIdx( -1, 1 ); + strcpy(cpu->name, "Overall CPU statistics"); + + i = sizeof(n); +- sysctl(ncpu_mib, 2, &n, (void *)&i, NULL, 0); ++ sysctl(ncpu_mib, 2, &n, &i, NULL, 0); + if ( n <= 0 ) + n = 1; /* Single CPU system */ + i = sizeof(descr); +- sysctl(model_mib, 2, descr, (void *)&i, NULL, 0); ++ sysctl(model_mib, 2, descr, &i, NULL, 0); + for ( i = 0; i < n; i++ ) { + cpu = netsnmp_cpu_get_byIdx( i, 1 ); + cpu->status = 2; /* running */ +@@ -190,8 +191,8 @@ int netsnmp_cpu_arch_load( netsnmp_cache *cache, void + + #ifdef NETSNMP_KERN_MCPU + mcpu_stats = malloc(cpu_num*sizeof(NETSNMP_KERN_MCPU_TYPE)); +- sysctl(mcpu_mib, 2, mcpu_stats, +- cpu_num*sizeof(NETSNMP_KERN_MCPU_TYPE), NULL, 0); ++ mcpu_size = sizeof(mcpu_stats); ++ sysctl(mcpu_mib, 2, mcpu_stats, &mcpu_size, NULL, 0); + for ( i = 0; i < cpu_num; i++ ) { + cpu = netsnmp_cpu_get_byIdx( i, 0 ); + /* XXX - per-CPU statistics - mcpu_mib[i].??? */