summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/wmnet2/Makefile6
-rw-r--r--net/wmnet2/files/patch-aa227
-rw-r--r--net/wmnet2/files/patch-ac10
-rw-r--r--net/wmnet2/pkg-descr2
4 files changed, 198 insertions, 47 deletions
diff --git a/net/wmnet2/Makefile b/net/wmnet2/Makefile
index 0273c4a..06a3706 100644
--- a/net/wmnet2/Makefile
+++ b/net/wmnet2/Makefile
@@ -7,13 +7,13 @@
PORTNAME= wmnet2
PORTVERSION= 1.06
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= net
MASTER_SITES= http://www.digitalkaos.net/linux/wmnet/download/
DISTNAME= wmnet-${PORTVERSION}
-MAINTAINER= flag@libero.it
-COMMENT= A cool network monitor for WindowMaker
+MAINTAINER= flag@gufi.org
+COMMENT= A nice network monitor for WindowMaker
USE_IMAKE= yes
diff --git a/net/wmnet2/files/patch-aa b/net/wmnet2/files/patch-aa
index ac87895..3fd56aa 100644
--- a/net/wmnet2/files/patch-aa
+++ b/net/wmnet2/files/patch-aa
@@ -1,37 +1,198 @@
---- drivers.c.orig Thu May 4 20:34:29 2000
-+++ drivers.c Mon Feb 18 12:54:45 2002
-@@ -15,6 +15,7 @@
- #include<X11/Xlib.h>
- #include<fcntl.h>
- #include<sys/types.h>
-+#include <sys/time.h>
- #include<sys/stat.h>
- #include<sys/socket.h>
- #include<unistd.h>
-@@ -24,6 +25,8 @@
- /* For FreeBSD */
+--- Imakefile Fri May 5 02:34:29 2000
++++ Imakefile Tue Nov 11 10:54:42 2003
+@@ -10,9 +10,12 @@
+ LOCAL_LIBRARIES = $(XLIB) -lm
+ #endif
+
+-#if defined (FreeBSDArchitecture) || defined (OpenBSDArchitecture)
++#if defined (OpenBSDArchitecture)
+ LOCAL_LIBRARIES = $(XLIB) -lm -lkvm
+ INSTPGMFLAGS = -s -g kmem -m 2755
++#elif defined (FreeBSDArchitecture)
++LOCAL_LIBRARIES = $(XLIB) -lm
++INSTPGMFLAGS = -s -m 0755
+ #endif
+
+ LINTLIBS = $(LINTXLIB)
+--- config.h Fri May 5 02:34:29 2000
++++ config.h Tue Nov 11 10:59:05 2003
+@@ -1,6 +1,6 @@
+-#if defined (__FreeBSD__) || defined (__OpenBSD__)
++#if defined (__OpenBSD__)
+
+-/* Our only FreeBSD driver, this goes straight into kernel memory
++/* Our only OpenBSD driver(old FreeBSD-4.x driver), this goes straight into kernel memory
+ * and reads the raw structures from right underneath the kernel using the
+ * kvm library. This made the code a require a little more thought, but
+ * the end result is a statistics driver thats faster than the linux ones
+@@ -12,7 +12,11 @@
+
+ #endif
+
++#if defined (__FreeBSD__)
+
++#define USE_SYSCTL
++
++#endif
+
+ #ifdef linux
+
+--- drivers.c Fri May 5 02:34:29 2000
++++ drivers.c Wed Nov 12 11:42:40 2003
+@@ -21,7 +21,7 @@
+ #include"config.h"
+
+
+-/* For FreeBSD */
++/* For OpenBSD */
#ifdef USE_KVM
#include<net/if.h>
-+#include <net/if_var.h>
-+#include <net/if_types.h>
#include<kvm.h>
- #include<nlist.h>
-
-@@ -455,6 +458,8 @@
- unsigned long ifnet_addr = ifnet_savedaddr;
- char devname[16];
- int flag = 0;
-+ rx = False;
-+ tx = False;
- while (ifnet_addr && flag != (ACCOUNT_IN_FOUND|ACCOUNT_OUT_FOUND)) {
- kvm_read(kvmfd, ifnet_addr, buffer, sizeof(struct ifnet));
- #ifdef __OpenBSD__
-@@ -490,7 +495,7 @@
- #ifdef __OpenBSD__
- ifnet_addr = (unsigned long)ifnet->if_list.tqe_next;
- #else
-- ifnet_addr = (unsigned long)ifnet->if_next;
-+ ifnet_addr = (unsigned long) TAILQ_NEXT(ifnet,if_link);
+@@ -37,6 +37,22 @@
+ int kvm_updateStats(void);
+ #endif /* USE_KVM */
+
++#ifdef USE_SYSCTL
++/* system headers */
++#include <sys/types.h>
++#include <sys/sysctl.h>
++#include <sys/socket.h>
++#include <net/if.h>
++#include <net/if_mib.h>
++#include <sys/errno.h>
++
++int id = 0; /* interface id */
++int len = 0; /* sizeof libmibdata */
++struct ifmibdata *data = NULL;
++
++int sysctl_test(void);
++int sysctl_updateStats(void);
++#endif
+
+ #ifdef USE_LINUX_PPP
+ #include<net/ppp_defs.h>
+@@ -104,6 +120,9 @@
+ #ifdef USE_KVM
+ {"kmem",kvm_updateStats, kvm_test},
#endif
- }
- }
++#ifdef USE_SYSCTL
++ {"sysctl",sysctl_updateStats, sysctl_test},
++#endif
+ {NULL, NULL}
+ };
+
+@@ -439,6 +458,114 @@
+
+
+ #endif /* linux */
++
++/* new FreeBSD driver */
++#ifdef USE_SYSCTL
++
++int sysctl_test(void) {
++ struct ifmibdata tempndata;
++ int numifaces, len2;
++ int mib[5], datamib[6];
++ int i;
++
++ if(device == NULL) device = "lo0";
++
++ mib[0] = CTL_NET;
++ mib[1] = PF_LINK;
++ mib[2] = NETLINK_GENERIC;
++ mib[3] = IFMIB_SYSTEM;
++ mib[4] = IFMIB_IFCOUNT;
++
++ datamib[0] = CTL_NET;
++ datamib[1] = PF_LINK;
++ datamib[2] = NETLINK_GENERIC;
++ datamib[3] = IFMIB_IFDATA;
++ datamib[4] = 1;
++ datamib[5] = IFDATA_GENERAL;
++
++ len = sizeof(struct ifmibdata);
++ len2 = sizeof(numifaces);
++
++ if(sysctl(mib, 5, &numifaces, &len2, NULL, 0) < 0)
++ {
++ fprintf( stderr, "wmnet: failed to perform sysctl" );
++ return 0;
++ }
++
++ for(i = 1; i <= numifaces; i++)
++ {
++ datamib[4] = i;
++ if(sysctl(datamib, 6, &tempndata, &len, NULL, 0) < 0)
++ {
++ fprintf( stderr, "wmnet: failed to get device(%d) data", i );
++ break;
++ }
++
++ if( strcmp( device, tempndata.ifmd_name ) == 0 )
++ {
++ id = i;
++ break;
++ }
++ }
++
++ if ( id == 0 ) {
++ fprintf( stderr, "%s doesn't seem to exist!\n", device );
++ exit( -1 );
++ }
++
++ /* calculate and allocate mem for ifmibdata containing the if stats */
++ data = malloc(len);
++
++ fprintf(stderr, "wmnet: using sysctl driver to monitor %s\n", device);
++ return True;
++}
++
++int sysctl_updateStats(void) {
++ int datamib[6];
++
++ datamib[0] = CTL_NET;
++ datamib[1] = PF_LINK;
++ datamib[2] = NETLINK_GENERIC;
++ datamib[3] = IFMIB_IFDATA;
++ datamib[4] = id;
++ datamib[5] = IFDATA_GENERAL;
++
++ if(sysctl( datamib, 6, data, &len, NULL, 0) < 0 ) {
++ fprintf( stderr, "wmnet: can't monitor %s device\n", device );
++ exit( -1 );
++ }
++
++ // printf( "if name: %s\n", data->ifmd_name );
++
++ /* get the stats from the if */
++ totalpackets_in = data->ifmd_data.ifi_ipackets;
++ totalpackets_out = data->ifmd_data.ifi_opackets;
++
++ if (totalpackets_in != lastpackets_in) {
++ totalbytes_in = data->ifmd_data.ifi_ibytes;
++ diffpackets_in += totalpackets_in - lastpackets_in;
++ diffbytes_in += totalbytes_in - lastbytes_in;
++ lastpackets_in = totalpackets_in;
++ lastbytes_in = totalbytes_in;
++ rx = True;
++ } else rx = False;
++
++ if (totalpackets_out != lastpackets_out) {
++ totalbytes_out = data->ifmd_data.ifi_obytes;
++ diffpackets_out += totalpackets_out - lastpackets_out;
++ diffbytes_out += totalbytes_out - lastbytes_out;
++ lastpackets_out = totalpackets_out;
++ lastbytes_out = totalbytes_out;
++ tx = True;
++ } else tx = False;
++
++ /* return True if no change to tx/rx
++ * return False if display will need to be updated
++ */
++ return((rx == current_rx) && (tx == current_tx));
++}
++
++#endif
+
+ #ifdef USE_KVM
+ int kvm_test(void) {
diff --git a/net/wmnet2/files/patch-ac b/net/wmnet2/files/patch-ac
deleted file mode 100644
index 6f1bac1..0000000
--- a/net/wmnet2/files/patch-ac
+++ /dev/null
@@ -1,10 +0,0 @@
---- wmnet.c.orig Thu May 4 21:01:14 2000
-+++ wmnet.c Wed Dec 19 17:43:40 2001
-@@ -732,6 +732,7 @@
- case ButtonPress:
- if(event.xbutton.button == Button1 && click_command != NULL) {
- if (fork() == 0) {
-+ setgid(getgid());
- execl("/bin/sh", "sh", "-c", click_command, NULL);
- perror("wmnet: execl()");
- exit(15);
diff --git a/net/wmnet2/pkg-descr b/net/wmnet2/pkg-descr
index 3116388..be1c450 100644
--- a/net/wmnet2/pkg-descr
+++ b/net/wmnet2/pkg-descr
@@ -11,4 +11,4 @@ background.
WWW: http://www.digitalkaos.net/linux/wmnet/
- Paolo
-flag@libero.it
+flag@gufi.org
OpenPOWER on IntegriCloud