$OpenBSD: patch-agent_mibgroup_host_data_access_swrun_kinfo_c,v 1.6 2011/11/18 12:39:06 sthen Exp $
--- agent/mibgroup/host/data_access/swrun_kinfo.c.orig	Wed Aug 31 03:21:51 2011
+++ agent/mibgroup/host/data_access/swrun_kinfo.c	Thu Sep  1 23:53:44 2011
@@ -3,7 +3,7 @@
  *     hrSWRunTable data access:
  *     kvm_getprocs() interface - FreeBSD, NetBSD, OpenBSD
  *
- * NB: later FreeBSD uses a different kinfo_proc structure
+ * NB: later FreeBSD and OpenBSD use different kinfo_proc structures
  */
 #include <net-snmp/net-snmp-config.h>
 
@@ -58,11 +58,15 @@
 #define SWRUN_K_FLAG	ki_flag
 #define SWRUN_K_CLASS	ki_pri.pri_class
 
-#elif HAVE_KVM_GETPROC2
+#elif HAVE_KVM_GETPROC2 || defined(openbsd5)
     /*
      * newer NetBSD, OpenBSD kinfo_proc2 field names
      */
+#if defined(openbsd5)
+#define SWRUN_TABLE	kinfo_proc
+#else
 #define SWRUN_TABLE	kinfo_proc2
+#endif
 #define SWRUN_K_STAT	p_stat
 #define SWRUN_K_PID	p_pid
 #define SWRUN_K_COMM	p_comm
@@ -156,7 +160,9 @@ netsnmp_arch_swrun_container_load( netsnmp_container *
         DEBUGMSGTL(("swrun:load:arch"," Can't query kvm info\n"));
         return 1;     /* No handle for retrieving process table */
     }
-#if HAVE_KVM_GETPROC2
+#if defined(openbsd5)
+    proc_table = kvm_getprocs(kd, KERN_PROC_ALL, 0, sizeof(struct kinfo_proc), &nprocs );
+#elif defined(HAVE_KVM_GETPROC2)
     proc_table = kvm_getproc2(kd, KERN_PROC_ALL, 0, sizeof(struct kinfo_proc2), &nprocs );
 #else
     proc_table = kvm_getprocs(kd, KERN_PROC_ALL, 0, &nprocs );
@@ -287,7 +293,7 @@ netsnmp_arch_swrun_container_load( netsnmp_container *
 # endif
         entry->hrSWRunPerfCPU  = proc_table[i].ki_runtime / 100000;
         entry->hrSWRunPerfMem  = proc_table[i].ki_size / 1024;;
-#elif defined(HAVE_KVM_GETPROC2)
+#elif defined(HAVE_KVM_GETPROC2) || defined(openbsd5)
         /*
          * newer NetBSD, OpenBSD
          */
