On Sun 2010.01.17 at 22:38 -0500, Brad wrote:
> I don't use this but someone mentioned it needed an update for KERN_PROC2.
>
> Please test.
i don't use this either; however, here's an updated diff with the the
fifth and sixth levels added.
please test.
Index: Makefile
===================================================================
RCS file: /home/open/anoncvs/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 22:04:57 -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 22:14:35
-0000
@@ -0,0 +1,173 @@
+$OpenBSD$
+--- src/libs/zbxsysinfo/openbsd/proc.c.orig Mon Dec 7 14:43:56 2009
++++ src/libs/zbxsysinfo/openbsd/proc.c Mon Jan 18 17:10:47 2010
+@@ -43,9 +43,11 @@ static int proc_argv(pid_t pid, char ***argv, size_t *
+ mib[1] = KERN_PROC_ARGS;
+ mib[2] = (int)pid;
+ mib[3] = KERN_PROC_ARGV;
++ mib[4] = sizeof(struct kinfo_proc2);
++ mib[5] = 0;
+ retry:
+ sz = *argv_alloc;
+- if (0 != sysctl(mib, 4, *argv, &sz, NULL, 0)) {
++ if (0 != sysctl(mib, 6, *argv, &sz, NULL, 0)) {
+ if (errno == ENOMEM) {
+ *argv_alloc *= 2;
+ *argv = zbx_realloc(*argv, *argv_alloc);
+@@ -57,7 +59,8 @@ retry:
+ mib[3] = KERN_PROC_NARGV;
+
+ sz = sizeof(int);
+- if (0 != sysctl(mib, 4, argc, &sz, NULL, 0))
++ mib[5] = (int)(sz / sizeof(struct kinfo_proc2));
++ if (0 != sysctl(mib, 6, argc, &sz, NULL, 0))
+ return FAIL;
+
+ return SUCCEED;
+@@ -98,7 +101,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 +153,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;
+@@ -158,28 +161,31 @@ int PROC_MEMORY(const char *cmd, const char *param
+ mib[2] = KERN_PROC_ALL;
+ mib[3] = 0;
+ }
++ mib[4] = sizeof(struct kinfo_proc2);
++ mib[5] = 0;
+
+ sz = 0;
+- if (0 != sysctl(mib, 4, NULL, &sz, NULL, 0))
++ if (0 != sysctl(mib, 6, NULL, &sz, NULL, 0))
+ return SYSINFO_RET_FAIL;
+
+- proc = (struct kinfo_proc *)zbx_malloc(proc, sz);
+- if (0 != sysctl(mib, 4, proc, &sz, NULL, 0)) {
++ proc = (struct kinfo_proc2 *)zbx_malloc(proc, sz);
++ mib[5] = (int)(sz / sizeof(struct kinfo_proc2));
++ if (0 != sysctl(mib, 6, 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 +194,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 +237,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 +287,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;
+@@ -289,39 +295,42 @@ int PROC_NUM(const char *cmd, const char *param,
unsig
+ mib[2] = KERN_PROC_ALL;
+ mib[3] = 0;
+ }
++ mib[4] = sizeof(struct kinfo_proc2);
++ mib[5] = 0;
+
+ sz = 0;
+- if (0 != sysctl(mib, 4, NULL, &sz, NULL, 0))
++ if (0 != sysctl(mib, 6, NULL, &sz, NULL, 0))
+ return SYSINFO_RET_FAIL;
+
+- proc = (struct kinfo_proc *)zbx_malloc(proc, sz);
+- if (0 != sysctl(mib, 4, proc, &sz, NULL, 0)) {
++ proc = (struct kinfo_proc2 *)zbx_malloc(proc, sz);
++ mib[5] = (int)(sz / sizeof(struct kinfo_proc2));
++ if (0 != sysctl(mib, 6, 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 +338,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;