$OpenBSD: patch-agent_mibgroup_host_data_access_swrun_kinfo_c,v 1.5 2011/07/07 21:51:22 sthen Exp $
--- agent/mibgroup/host/data_access/swrun_kinfo.c.orig	Fri Jul  1 23:35:46 2011
+++ agent/mibgroup/host/data_access/swrun_kinfo.c	Thu Jul  7 00:02:27 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
@@ -158,6 +162,8 @@ netsnmp_arch_swrun_container_load( netsnmp_container *
     }
 #if HAVE_KVM_GETPROC2
     proc_table = kvm_getproc2(kd, KERN_PROC_ALL, 0, sizeof(struct kinfo_proc2), &nprocs );
+#elif defined(openbsd5)
+    proc_table = kvm_getprocs(kd, KERN_PROC_ALL, 0, sizeof(struct kinfo_proc2), &nprocs );
 #else
     proc_table = kvm_getprocs(kd, KERN_PROC_ALL, 0, &nprocs );
 #endif
@@ -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
          */
