From ryan@ren.sasknow.com  Thu Jun 26 23:29:01 2003
Return-Path: <ryan@ren.sasknow.com>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 2091837B401
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 26 Jun 2003 23:29:01 -0700 (PDT)
Received: from ren.sasknow.com (ren.sasknow.com [207.195.92.131])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 54EE343FF5
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 26 Jun 2003 23:29:00 -0700 (PDT)
	(envelope-from ryan@ren.sasknow.com)
Received: from ren.sasknow.com (localhost [127.0.0.1])
	by ren.sasknow.com (8.12.6p2/8.12.6) with ESMTP id h5R6SxDN086546
	for <FreeBSD-gnats-submit@freebsd.org>; Fri, 27 Jun 2003 00:28:59 -0600 (CST)
	(envelope-from ryan@ren.sasknow.com)
Received: (from ryan@localhost)
	by ren.sasknow.com (8.12.6p2/8.12.6/Submit) id h5R6SxLM086545;
	Fri, 27 Jun 2003 00:28:59 -0600 (CST)
	(envelope-from ryan)
Message-Id: <200306270628.h5R6SxLM086545@ren.sasknow.com>
Date: Fri, 27 Jun 2003 00:28:59 -0600 (CST)
From: Ryan Thompson <ryan@sasknow.com>
Reply-To: Ryan Thompson <ryan@sasknow.com>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: MAINTAINER-UPDATE net/trafshow new feature
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         53807
>Category:       ports
>Synopsis:       MAINTAINER-UPDATE net/trafshow new feature
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jun 26 23:30:01 PDT 2003
>Closed-Date:    Sun Jun 29 10:49:07 PDT 2003
>Last-Modified:  Sun Jun 29 10:49:07 PDT 2003
>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@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@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:
State-Changed-From-To: open->closed 
State-Changed-By: leeym 
State-Changed-When: Sun Jun 29 10:49:06 PDT 2003 
State-Changed-Why:  
Committed, thanks. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=53807 
>Unformatted:
