1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-28 01:06:17 +00:00

- Maintainer update to make it work on recent -CURRENT

PR:		ports/60095
Submitted by:	Dark Schneider <flag@gufi.org> (maintainer)
This commit is contained in:
Pav Lucistnik 2003-12-20 00:40:01 +00:00
parent 2ac14e81c8
commit adb7ab81e7
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=96244
4 changed files with 197 additions and 46 deletions

View File

@ -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

View File

@ -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>
@@ -37,6 +37,22 @@
int kvm_updateStats(void);
#endif /* USE_KVM */
@@ -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);
+#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) {

View File

@ -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);

View File

@ -11,4 +11,4 @@ background.
WWW: http://www.digitalkaos.net/linux/wmnet/
- Paolo
flag@libero.it
flag@gufi.org