I don't use this but someone mentioned it needed an update for KERN_PROC2. Please test.
Index: Makefile =================================================================== RCS file: /cvs/ports/net/zabbix/Makefile,v retrieving revision 1.16 diff -u -p -r1.16 Makefile --- Makefile 15 Jan 2010 09:08:02 -0000 1.16 +++ Makefile 18 Jan 2010 00:49:08 -0000 @@ -7,8 +7,8 @@ COMMENT-web = network and application m VERSION = 1.8 MAJOR = ${VERSION:R} DISTNAME = zabbix-${VERSION} -FULLPKGNAME-main = zabbix-agent-${VERSION}p0 -PKGNAME-server = zabbix-server-${VERSION}p1 +FULLPKGNAME-main = zabbix-agent-${VERSION}p1 +PKGNAME-server = zabbix-server-${VERSION}p2 PKGNAME-web = zabbix-web-${VERSION} CATEGORIES = net Index: patches/patch-src_libs_zbxsysinfo_openbsd_proc_c =================================================================== RCS file: patches/patch-src_libs_zbxsysinfo_openbsd_proc_c diff -N patches/patch-src_libs_zbxsysinfo_openbsd_proc_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_libs_zbxsysinfo_openbsd_proc_c 18 Jan 2010 01:05:18 -0000 @@ -0,0 +1,130 @@ +$OpenBSD$ +--- src/libs/zbxsysinfo/openbsd/proc.c.orig Sun Jan 17 19:52:39 2010 ++++ src/libs/zbxsysinfo/openbsd/proc.c Sun Jan 17 20:05:12 2010 +@@ -98,7 +98,7 @@ int PROC_MEMORY(const char *cmd, const char *param + + size_t sz; + +- struct kinfo_proc *proc = NULL; ++ struct kinfo_proc2 *proc = NULL; + struct passwd *usrinfo; + + char **argv = NULL, *args = NULL; +@@ -150,7 +150,7 @@ int PROC_MEMORY(const char *cmd, const char *param + pagesize = getpagesize(); + + mib[0] = CTL_KERN; +- mib[1] = KERN_PROC; ++ mib[1] = KERN_PROC2; + if (NULL != usrinfo) { + mib[2] = KERN_PROC_UID; + mib[3] = usrinfo->pw_uid; +@@ -163,23 +163,23 @@ int PROC_MEMORY(const char *cmd, const char *param + if (0 != sysctl(mib, 4, NULL, &sz, NULL, 0)) + return SYSINFO_RET_FAIL; + +- proc = (struct kinfo_proc *)zbx_malloc(proc, sz); ++ proc = (struct kinfo_proc2 *)zbx_malloc(proc, sz); + if (0 != sysctl(mib, 4, proc, &sz, NULL, 0)) { + zbx_free(proc); + return SYSINFO_RET_FAIL; + } + +- count = sz / sizeof(struct kinfo_proc); ++ count = sz / sizeof(struct kinfo_proc2); + + for (i = 0; i < count; i++) { + proc_ok = 0; + comm_ok = 0; + +- if (*procname == '\0' || 0 == strcmp(procname, proc[i].kp_proc.p_comm)) ++ if (*procname == '\0' || 0 == strcmp(procname, proc[i].p_comm)) + proc_ok = 1; + + if (*proccomm != '\0') { +- if (SUCCEED == proc_argv(proc[i].kp_proc.p_pid, &argv, &argv_alloc, &argc)) { ++ if (SUCCEED == proc_argv(proc[i].p_pid, &argv, &argv_alloc, &argc)) { + collect_args(argv, argc, &args, &args_alloc); + if (NULL != zbx_regexp_match(args, proccomm, NULL)) + comm_ok = 1; +@@ -188,9 +188,9 @@ int PROC_MEMORY(const char *cmd, const char *param + comm_ok = 1; + + if (proc_ok && comm_ok) { +- value = proc[i].kp_eproc.e_vm.vm_tsize +- + proc[i].kp_eproc.e_vm.vm_dsize +- + proc[i].kp_eproc.e_vm.vm_ssize; ++ value = proc[i].p_vm_tsize ++ + proc[i].p_vm_dsize ++ + proc[i].p_vm_ssize; + value *= pagesize; + + if (0 == proccount++) +@@ -231,7 +231,7 @@ int PROC_NUM(const char *cmd, const char *param, unsig + + size_t sz; + +- struct kinfo_proc *proc = NULL; ++ struct kinfo_proc2 *proc = NULL; + struct passwd *usrinfo; + + char **argv = NULL, *args = NULL; +@@ -281,7 +281,7 @@ int PROC_NUM(const char *cmd, const char *param, unsig + *proccomm = '\0'; + + mib[0] = CTL_KERN; +- mib[1] = KERN_PROC; ++ mib[1] = KERN_PROC2; + if (NULL != usrinfo) { + mib[2] = KERN_PROC_UID; + mib[3] = usrinfo->pw_uid; +@@ -294,34 +294,34 @@ int PROC_NUM(const char *cmd, const char *param, unsig + if (0 != sysctl(mib, 4, NULL, &sz, NULL, 0)) + return SYSINFO_RET_FAIL; + +- proc = (struct kinfo_proc *)zbx_malloc(proc, sz); ++ proc = (struct kinfo_proc2 *)zbx_malloc(proc, sz); + if (0 != sysctl(mib, 4, proc, &sz, NULL, 0)) { + zbx_free(proc); + return SYSINFO_RET_FAIL; + } + +- count = sz / sizeof(struct kinfo_proc); ++ count = sz / sizeof(struct kinfo_proc2); + + for (i = 0; i < count; i++) { + proc_ok = 0; + stat_ok = 0; + comm_ok = 0; + +- if (*procname == '\0' || 0 == strcmp(procname, proc[i].kp_proc.p_comm)) ++ if (*procname == '\0' || 0 == strcmp(procname, proc[i].p_comm)) + proc_ok = 1; + + if (zbx_proc_stat != ZBX_PROC_STAT_ALL) { + switch (zbx_proc_stat) { + case ZBX_PROC_STAT_RUN: +- if (proc[i].kp_proc.p_stat == SRUN || proc[i].kp_proc.p_stat == SONPROC) ++ if (proc[i].p_stat == SRUN || proc[i].p_stat == SONPROC) + stat_ok = 1; + break; + case ZBX_PROC_STAT_SLEEP: +- if (proc[i].kp_proc.p_stat == SSLEEP) ++ if (proc[i].p_stat == SSLEEP) + stat_ok = 1; + break; + case ZBX_PROC_STAT_ZOMB: +- if (proc[i].kp_proc.p_stat == SZOMB || proc[i].kp_proc.p_stat == SDEAD) ++ if (proc[i].p_stat == SZOMB || proc[i].p_stat == SDEAD) + stat_ok = 1; + break; + } +@@ -329,7 +329,7 @@ int PROC_NUM(const char *cmd, const char *param, unsig + stat_ok = 1; + + if (*proccomm != '\0') { +- if (SUCCEED == proc_argv(proc[i].kp_proc.p_pid, &argv, &argv_alloc, &argc)) { ++ if (SUCCEED == proc_argv(proc[i].p_pid, &argv, &argv_alloc, &argc)) { + collect_args(argv, argc, &args, &args_alloc); + if (zbx_regexp_match(args, proccomm, NULL) != NULL) + comm_ok = 1; -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.