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.

Reply via email to