ports/53807: MAINTAINER-UPDATE net/trafshow new feature

Ryan Thompson ryan at sasknow.com
Fri Jun 27 06:30:16 UTC 2003


>Number:         53807
>Category:       ports
>Synopsis:       MAINTAINER-UPDATE net/trafshow new feature
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jun 26 23:30:01 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Ryan Thompson
>Release:        FreeBSD 4.7-RELEASE-p6 i386
>Organization:
SaskNow Technologies 
>Environment:
System: FreeBSD ren.sasknow.com 4.7-RELEASE-p6 FreeBSD 4.7-RELEASE-p6 #0: Thu Feb 27 12:55:10 CST 2003 hutenosa at ren.sasknow.com:/customer/renhome/obj/usr/src/sys/REN i386


	
>Description:
	Supersedes ports/51002.

	This patch adds a handy column mask feature (-m) to net/trafshow, as
	revised and submitted to me by Luigi Rizzo <rizzo at icir.org>. 
	
	Trafshow has not been updated by its author since 1998, so there is
	little chance of this feature being incorporated into new versions.
	Thus, I'll maintain it locally.

	From trafshow(1):

        -m    [src-ip M] [dst-ip M]  [src-port  M]  [dst-port  M]
              [proto M]
              Mask  the specified field with mask M (which should
              be specified as  an  hex  number  e.g.  0xffff0000)
              before  further  processing  of  the  packet.  This
              allows to aggregate traffic in the display to  ease
              analysis.

	The patch also bumps PORTREVISION appropriately.

	<pcecise description of the problem (multiple lines)>
>How-To-Repeat:
	
>Fix:

diff -ruN trafshow.orig/Makefile trafshow/Makefile
--- trafshow.orig/Makefile	Fri Jun 27 00:12:54 2003
+++ trafshow/Makefile	Thu Jun 26 23:49:26 2003
@@ -7,7 +7,7 @@
 
 PORTNAME=	trafshow
 PORTVERSION=	3.1
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	net
 MASTER_SITES=	ftp://ftp.sasknow.com/pub/trafshow/ \
 		ftp://ftp.nsk.su/pub/RinetSoftware/
diff -ruN trafshow.orig/files/patch-ah trafshow/files/patch-ah
--- trafshow.orig/files/patch-ah	Wed Dec 31 18:00:00 1969
+++ trafshow/files/patch-ah	Fri Jun 27 00:07:03 2003
@@ -0,0 +1,119 @@
+--- display.c.orig	Sun Aug 23 21:51:48 1998
++++ display.c	Fri Dec  6 12:17:55 2002
+@@ -54,6 +54,7 @@
+ static int l_nflag, l_eflag;
+ static int n_entries;
+ static int err_pos;
++extern struct t_entry t_mask;  /* traffic mask */
+ 
+ void
+ init_display(reinit)
+@@ -282,6 +284,13 @@
+ 	packets_total++;
+ 	bytes_total += e->bytes;
+ 	j = page * page_size;
++
++	e->src.s_addr &= t_mask.src.s_addr;
++	e->dst.s_addr &= t_mask.dst.s_addr;
++	e->sport &= t_mask.sport;
++	e->dport &= t_mask.dport;
++	e->proto &= t_mask.proto;
++
+ 	for (i = 0; i < n_entry; i++) {
+ 		if (memcmp(&e->eh, &entries[i].eh, sizeof(e->eh)) == 0 &&
+ 		    e->src.s_addr == entries[i].src.s_addr &&
+--- trafshow.c.orig	Fri Aug 28 00:15:57 1998
++++ trafshow.c	Fri Dec  6 12:34:09 2002
+@@ -48,6 +48,7 @@
+ int pflag = 0;		/* don't put the interface into promiscuous mode */
+ int kflag = 1;		/* disable keyboard input checking */
+ int eflag = 0;		/* show ethernet traffic rather than ip */
++struct t_entry t_mask;	/* traffic mask */
+ 
+ /* global variables */
+ char *program_name;		/* myself */
+@@ -78,6 +79,12 @@
+ 	extern int abort_on_misalignment();
+ 	extern pcap_handler lookup_if();
+ 
++	t_mask.src.s_addr = 0xffffffff;	/* all bits valid */
++	t_mask.dst.s_addr = 0xffffffff;	/* all bits valid */
++	t_mask.sport = 0xffff;		/* all bits valid */
++	t_mask.dport = 0xffff;		/* all bits valid */
++	t_mask.proto = 0xffff;		/* all bits valid */
++
+ 	cnt = -1;
+ 	device_name = NULL;
+ 	infile = NULL;
+@@ -94,7 +87,7 @@
+ 
+ 	if (abort_on_misalignment(ebuf) < 0) error(0, ebuf);
+ 
+-	while ((op = getopt(argc, argv, "c:CefF:i:knNOpr:t:vh?")) != EOF)
++	while ((op = getopt(argc, argv, "c:CefF:i:kmnNOpr:t:vh?")) != EOF)
+ 		switch (op) {
+ 		case 'C':
+ #ifdef	HAVE_SLCURSES
+@@ -114,6 +121,40 @@
+ 			break;
+ 		case 'k':
+ 			kflag = 0;
++			break;
++		case 'm':
++			t_mask.src.s_addr = 0;
++			t_mask.dst.s_addr = 0;
++			t_mask.sport = 0;
++			t_mask.dport = 0;
++			t_mask.proto = 0;
++			for (;optind + 1 <= argc;) {
++			    char *s = argv[optind];
++			    u_int32_t arg = 0xffffffff;
++			    int save=optind;
++			    
++			    optind++;
++			    if (optind + 1 <= argc &&
++				    isdigit(*(argv[optind])) ) {
++				arg = strtoul(argv[optind], NULL, 0);
++				optind++;
++			    }
++				
++			    if (!strcmp(s, "src-ip"))
++				t_mask.src.s_addr = htonl(arg);
++			    else if (!strcmp(s, "dst-ip"))
++				t_mask.dst.s_addr = htonl(arg);
++			    else if (!strcmp(s, "src-port"))
++				t_mask.sport = htons((u_short)(arg));
++			    else if (!strcmp(s, "dst-port"))
++				t_mask.dport = htons((u_short)(arg));
++			    else if (!strcmp(s, "proto"))
++				t_mask.proto = arg;
++			    else {
++				optind = save;
++				break;
++			    }
++			}
+ 			break;
+ 		case 'n':
+ 			++nflag;
+--- trafshow.1.orig	Fri Aug 28 09:37:38 1998
++++ trafshow.1	Tue Apr 15 22:32:21 2003
+@@ -42,6 +42,16 @@
+ .B \-k
+ Disable input keyboard checking. It is intended to avoid loss of packets.
+ .TP
++.B \-m
++[src-ip M] [dst-ip M] [src-port M] [dst-port M] [proto M]
++.br
++Mask the specified field with mask M (which should be specified
++as an hex number e.g. 0xffff0000) before further processing
++of the packet. This allows to aggregate traffic in the display
++to ease analysis.
++.br
++.The masks for all field not specified will be set to 0.
++.TP
+ .B \-n
+ Don't convert host addresses and port numbers to names.
+ .TP
+
+
+

>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list