• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

cygwin-includes/H01-Jul-2013-1,637844

cygwin-libs/H01-Jul-2013-

flex_bison/H01-Jul-2013-

input/H03-May-2022-72,42270,489

.gitignoreH A D01-Jul-2013144 1412

ARGSH A D01-Jul-20131.9 KiB4440

CHANGESH A D01-Jul-201326.2 KiB667564

COPYINGH A D01-Jul-201317.6 KiB341281

COPYRIGHTH A D01-Jul-20132.3 KiB5554

FAQH A D01-Jul-201340.4 KiB978700

INSTALLH A D01-Jul-20131.1 KiB4029

Makefile.emptyH A D01-Jul-201364 54

Makefile.inH A D01-Jul-201311.5 KiB430231

READMEH A D01-Jul-20131.9 KiB7553

README.OpenVMSH A D01-Jul-20134.6 KiB147108

README.cygwinH A D01-Jul-2013656 2115

README.linuxH A D01-Jul-2013731 2624

README.mailing_listH A D01-Jul-20132.9 KiB5044

README.modulesH A D01-Jul-2013272 96

README.pcapH A D01-Jul-20132.5 KiB6748

README.sgiH A D01-Jul-20132.2 KiB5743

README.tline_graphsH A D01-Jul-201318.8 KiB600583

README.tput_graphsH A D01-Jul-20131.1 KiB2719

README.tru64H A D01-Jul-2013554 1711

README.versionH A D01-Jul-20132 KiB8944

README.xpl2gplH A D01-Jul-20131.4 KiB4935

THANKSH A D01-Jul-20133.2 KiB7367

WWWH A D01-Jul-201373 42

aclocal.m4H A D01-Jul-201326.3 KiB1,0551,007

avl.cH A D01-Jul-201311.5 KiB511337

compress.cH A D01-Jul-201318.8 KiB777482

compress.hH A D01-Jul-20133.9 KiB10223

config.guessH A D01-Jul-201338.2 KiB1,3691,189

config.hH A D01-Jul-20132.9 KiB786

config.subH A D01-Jul-201326.8 KiB1,3571,218

configureH A D01-Jul-2013161.7 KiB5,7935,138

configure.inH A D01-Jul-20132.4 KiB10479

dot_tcptracercH A D01-Jul-2013629 2521

dstring.cH A D01-Jul-20134.5 KiB19687

dstring.hH A D01-Jul-2013375 168

dyncounter.cH A D01-Jul-201316.2 KiB760475

dyncounter.hH A D01-Jul-20133.1 KiB8114

erf.cH A D01-Jul-201311.3 KiB363240

etherpeek.cH A D01-Jul-201312.9 KiB435262

file_formats.hH A D01-Jul-20134.6 KiB12334

filt_parser.yH A D01-Jul-20134.6 KiB18699

filt_scanner.lH A D01-Jul-20134.7 KiB16378

filter.cH A D01-Jul-201343 KiB1,8211,353

filter.hH A D01-Jul-20135.6 KiB206101

filter_vars.hH A D01-Jul-20137.9 KiB14972

gcache.cH A D01-Jul-201320.5 KiB859510

gcache.hH A D01-Jul-20133.4 KiB9925

install-shH A D01-Jul-20135.5 KiB251152

ipv6.cH A D01-Jul-201318 KiB719432

ipv6.hH A D01-Jul-20135.1 KiB15153

make_vms.comH A D01-Jul-201313.2 KiB414413

mfiles.cH A D01-Jul-20139.9 KiB489295

mod_collie.cH A D01-Jul-20139.4 KiB412246

mod_collie.hH A D01-Jul-20132.6 KiB658

mod_http.cH A D01-Jul-201342.1 KiB1,6591,149

mod_http.hH A D01-Jul-20132.6 KiB658

mod_inbounds.cH A D01-Jul-201343.5 KiB1,5981,156

mod_inbounds.hH A D01-Jul-20131.9 KiB4312

mod_realtime.cH A D01-Jul-201310.3 KiB383252

mod_realtime.hH A D01-Jul-20132.7 KiB6710

mod_rttgraph.cH A D01-Jul-201311.4 KiB486308

mod_rttgraph.hH A D01-Jul-20132.6 KiB647

mod_slice.cH A D01-Jul-20139.6 KiB377207

mod_slice.hH A D01-Jul-20132.6 KiB657

mod_tcplib.cH A D01-Jul-2013103.4 KiB3,9062,086

mod_tcplib.hH A D01-Jul-20135.3 KiB15371

mod_traffic.cH A D03-May-202235.8 KiB1,377981

mod_traffic.hH A D01-Jul-20132.6 KiB657

modules.hH A D01-Jul-201311.2 KiB284145

names.cH A D01-Jul-20137.3 KiB277157

netm.cH A D01-Jul-20136.9 KiB278154

netscout.cH A D01-Jul-20138.2 KiB279162

nlanr.cH A D01-Jul-20137.6 KiB24093

ns.cH A D01-Jul-201311.8 KiB471295

output.cH A D01-Jul-201335.3 KiB1,153843

plotter.cH A D01-Jul-201319.6 KiB924634

pool.cH A D01-Jul-201315 KiB534349

pool.hH A D01-Jul-20132.5 KiB699

poolaccess.cH A D01-Jul-20134.6 KiB215131

print.cH A D01-Jul-201320.1 KiB787583

rexmit.cH A D01-Jul-201320.9 KiB794478

snoop.cH A D01-Jul-201312 KiB446252

snprintf_vms.cH A D01-Jul-2013213 1411

tcpdump.cH A D03-May-202214.3 KiB497336

tcpdump.hH A D03-May-20228.7 KiB257142

tcptrace.cH A D01-Jul-201380.1 KiB2,7922,063

tcptrace.hH A D03-May-202237.4 KiB1,203732

tcptrace.manH A D01-Jul-201310 KiB404400

tcptrace.optH A D01-Jul-2013483 3736

thruput.cH A D01-Jul-20135 KiB16072

trace.cH A D01-Jul-2013104.8 KiB3,6792,558

udp.cH A D01-Jul-201311.3 KiB440273

version.cH A D01-Jul-20132.5 KiB666

version.hH A D01-Jul-20132.8 KiB7611

versnum.cH A D01-Jul-20132.5 KiB6912

xpl2gplH A D01-Jul-201342 KiB1,4031,247

README

1Fri May 25, 2001
2
3Shawn Ostermann
4ostermann@cs.ohiou.edu
5
6tcptrace is a TCP connection analysis tool.  It can tell you detailed
7information about TCP connections by sifting through dump files.  The
8dump file formats supported are:
9   Standard tcpdump format (you need the pcap library)
10   Sun's snoop format
11   Macintosh Etherpeek format
12   HP/NetMetrix protocol analysis format
13   NS simulator output format
14   NetScout
15   NLANR Tsh Format
16
17To see the graphs, you'll also need Tim Shepard's xplot program,
18available at http://www.xplot.org
19
20I've switched to using "./configure" to set up the Makefile.  That
21seems to have eased portability problems a great deal.  Just say
22"./configure" and then "make" to build the program.
23
24Most of the rest of the Docs are on the web.  Check out:
25  http://www.tcptrace.org/
26
27
28Supported Platforms
29-------------------
30
31The program is developed here at OU on Sparc machines running Solaris
328.  Our intention is that it also run under common Unix variants.  In
33particular, we try to test each release on the following platforms:
34  NetBSD
35  FreeBSD
36  Linux
37  Darwin/OSX (Mac)
38  Tru64 (Alpha)
39
40We appreciate feedback and fixes on these or other platforms and will
41attempt to modify the program to work on other platforms if we can get
42enough help from people with access to those platforms and the changes
43are not too "esthetically disagreeable".
44
45Running the program
46-------------------
47
48Some simple examples:
49
500) What are the args and what do they mean???
51     tcptrace
52
531) Run the program quickly over a dump file
54     tcptrace dumpfile
55
562) Get longer output
57     tcptrace -l dumpfile
58
593) Generate lots of pretty plot files (you need xplot to see them)
60     tcptrace -G dumpfile
61
624) Print the segment contents as you go
63     tcptrace -p dumpfile
64
655) Print progress info (useful for large files)
66     tcptrace -t dumpfile
67
68Of course, you can chain arguments together until you get just what
69you want.
70
71
72Let me know what you think....
73
74Shawn
75

README.OpenVMS

1Wed May 22, 2002
2
3Matt Muggeridge
4Matt.Muggeridge@hp.com
5
6The information contained in this document describes the OpenVMS port
7of the tcptrace tool, written by Shawn Ostermann.  Refer to the
8"README" file for more information on tcptrace.
9
10This document contains:
11
12   A) Running tcptrace
13   B) Build and Install
14   C) Code Changes to Support OpenVMS
15
16
17A) Running tcptrace
18-------------------
19
20OpenVMS applications that parse command-line arguments, such as
21tcptrace, must be invoked with a foreign command.  A foreign command
22can be manually created by declaring a DCL symbol, or automatically
23created by defining the DCL$PATH logical to include the directory
24path of your application. The examples below use a DCL symbol.
25
26There is a name-space clash with "tcptrace".  TCP/IP Services V5.0 and
27later ship an application named TCPTRACE.EXE which is used to capture
28trace information, similar to "tcpdump".  To avoid this name-space
29clash, it is recommended that this "tcptrace" program is invoked by a
30different name.  In the examples below, the name used is "tcpanal",
31for TCP Analysis.
32
33The steps for running tcpanal are as follows:
34
35  1) Creating the foreign command
36   This is created for you in the DCL command procedure MAKE_VMS.COM.
37   If desired, modify MAKE_VMS.COM to change the name of the foreign
38   command.  By default, a command similar to the following is used in
39   MAKE_VMS.COM:
40     $ tcpanal :== $<directory path>tcptrace.exe
41
42  2) Execute the foreign command
43     $ tcpanal
44
45
46B) Build and Install
47--------------------
48tcptrace on OpenVMS was built and tested using:
49
50  Compaq C V6.4-006 on OpenVMS Alpha V7.2-2 and OpenVMS Alpha V7.3,
51  Compaq C V6.2-009 on OpenVMS Alpha V7.2-2
52  No VAX testing has been attempted.
53
54Step 1: Get pcap library
55  If you don't want to analyse dump files that were created using the
56  PCAP library, such as tcpdump, WinDump, Ethereal, then you should
57  comment out "GROK_TCPDUMP" from the MAKE_VMS.COM procedure and it
58  will be skipped in the compilation.
59
60Step 2: Edit MAKE_VMS.COM
61  Only necessary if you want to change the file formats supported,
62  the modules compiled in, compiler flags, etc (it's commented)
63
64Step 3: Run "$ @MAKE_VMS"
65  That should create tcptrace and define the foreign symbol for
66  invoking it.  The foreign symbol is needed due to the name-space
67  clash (see README_VMS.TXT).  It is suggested you use the name
68  "tcpanal".
69
70  To manually create a foreign command use syntax similar to:
71
72  $ tcpanal :== $<directory path>tcptrace.exe
73
74  For automatic foreign commands, copy tcptrace.exe to a directory
75  specified in the DCL$PATH logical.  E.g. assuming DCL$PATH logical
76  has been created as:
77
78  $ define DCL$PATH disk$tools:[bin]
79  $ copy tcptrace.exe disk$tools:[bin]tcpanal.exe
80
81
82C) Code Changes to Support OpenVMS
83----------------------------------
84
85New Files
86====================================================================
87readme.OpenVMS   - this file
88make_vms.com	 - DCL command procedure to build tcptrace
89snprintf_vms.c	 - replacement for snprintf()
90includes_vms.tlb - library of include files not shipped with OpenVMS
91tcptrace.opt     - linker options file
92
93Missing Header Files - includes_vms.tlb
94---------------------------------------
95  The following header files are not supplied with the current version
96  of OpenVMS compilers nor TCP/IP.  They have been built into a text
97  library "includes_vms.tlb" which is referenced during compilation.
98
99	 netinet/in_systm.h
100	 machine/endian.h
101	 netinet/if_ether.h
102	 netinet/ip.h
103	 netinet/udp.h
104	 netinet/tcp.h (newer version needed than in tcpip$examples)
105	 pcap.h (from PCAP distribution)
106	 net/bpf.h
107
108  The command used to build this library was:
109
110      $ libr/create/text includes_vms in_systm.h, endian.h, -
111        if_ether.h, ip.h, udp.h, tcp.h, pcap.h, bpf.h
112
113
114Missing snprintf() - snprintf_vms()
115-----------------------------------
116The current version of the CRTL does not support snprintf().  An
117OpenVMS specific module was created "snprintf_vms.c" to resolve this.
118The redefinition was made in tcptrace.h (see below).
119
120Modified Files
121====================================================================
122
123compress.c
124----------
125The current release of OpenVMS does not support fork().  These
126occurrences were changed to vfork().
127
128filter_parser.c
129---------------
130OpenVMS uses a builtin function for alloca().  The necessary
131redefinitions were made.
132
133gcache.c
134--------
135Check if bzero or bcopy are defined before redefining them.  On
136OpenVMS bzero and bcopy are defined to use the C builtins which are
137supposed to be higher performing.
138
139tcptrace.h
140----------
141Define snprintf() to point to OpenVMS declaration snprintf_vms()
142
143
144Matt.
145
146--- end ---
147

README.cygwin

1To build tcptrace on windows using the cygwin UNIX environment follow the
2steps below:
3
41. For Windows 95/98/Me:
5       cp cygwin-libs/win9x/libwpcap.a cygwin-libs/
6
7   For Windows NT/2000/XP:
8       cp cygwin-libs/winNT/libwpcap.a cygwin-libs/
9
102. ./configure
113. make (This leaves tcptrace.exe in the current directory)
124. Installation:
13       - Copy the *.dll files from cygwin-libs/win9x/ "OR" cygwin-libs/winNT/
14         into C:\WINDOWS\System32\ (OR C:\WINDOWS\System\)
15       - Copy tcptrace.exe (just built in step 3) into C:\WINDOWS\
16
17You should now be able to access tcptrace system-wide.
18
19--Avinash Lakhiani (alakhian@tcptrace.org)
20  4 July 2002
21

README.linux

1If you have trouble, try this suggestion from Peter Waltenberg:
2
3>> From peterw@dascom.com Mon Jul 13 22:32 EST 1998
4>> X-Priority: 3 (Normal)
5>> Date: Tue, 14 Jul 1998 08:31:57 +1000 (EST)
6>> Reply-To: peterw@dascom.com
7>> Organization: DASCOM
8>> Sender: peterw@mulga.surf.dascom.com
9>> From: Peter Waltenberg <peterw@dascom.com>
10>> To: Shawn Ostermann <sdo@picard.cs.ohiou.edu>
11>> Subject: Re: tcptrace
12>>
13>> On Linux with glibc-2 it needs
14>>
15>> DEFINES += -D_BSD_SOURCE
16>>
17>> to build properly.
18>>
19>> It's simply a matter of which "style" of tcphdr struct naming is
20>> pulled in from the include files.
21>>
22>> From memory the "-D_BSD_SOURCE" is safe for older Linux setups as
23>> well, however I can't test it.
24>>
25>> Peter
26

README.mailing_list

1There are currently four mailing lists that pertain to tcptrace.  The
2two intended for normal users are the "tcptrace" and "tcptrace-announce"
3mailing lists.
4
5tcptrace-announce is a very low traffic list, which probably only sees
6one or two messages a year.  Everyone who uses tcptrace is encouraged to
7subscribe to this list, as it is used to spread the word when significant
8new versions of the program come out and major bugs are found and fixed.
9You can subscribe to the tcptrace-announce list by sending an email to
10majordomo@tcptrace.org that contains the text "subscribe tcptrace-announce".
11Should you wish to be removed from the list, all you need to do is send
12an email to majordomo@tcptrace.org with the text "unsubscribe tcptrace-announce"
13in the body.  No one except the list owner at tcptrace.org may post to this
14list.
15
16The list that serves as a forum for most tcptrace related discussion can
17be subscribed to by sending email to majordomo@tcptrace.org with the text
18"subscribe tcptrace" contained in the body.  Unsubscribing is as easy as
19sending majordomo@tcptrace.org a message containing "unsubscribe tcptrace" in
20the body.  Posting to this list is restricted to list members only, due to
21problems with spam and such.  Traffic on this list is rather light as well,
22mostly occurring in short spurts when someone has a question or shares some
23tcptrace related software they've written with the community.  You may post
24to the list by sending your message to tcptrace@tcptrace.org, if you are
25subscribed to the list.  Before posting questions to this list, please consider
26that there are about 400 members, so if your question is just something basic
27about compiling the program or reading input files perhaps the tcptrace-
28maintainers list discussed in the next paragraph is a better venue to ask it.
29Problems with subscribing/unsubscribing should be sent to
30owner-tcptrace@tcptrace.org
31
32There are also two lists "tcptrace-bugs" and "tcptrace-maintainers" which are
33used for notifying us that there is a problem.  If you find what you think is
34a bug in the software, please send a message to tcptrace-bugs@tcptrace.org.
35This list has all the active tcptrace developers on it, so usually someone can
36get on it and write a bugfix fairly quickly, but it's also quite nice when
37people send in their own bugfix code.  tcptrace-maintainers@tcptrace.org is
38the list which you can use to contact all the people responsible for keeping
39up the tcptrace mailing lists, website, and CVS tree.  Problems compiling
40tcptrace and questions about how to use the software or interpreting the
41output it produces should be addressed to the tcptrace-maintainers list.
42You will generally receive an answer fairly promptly.
43
44tcptrace was written by Shawn Ostermann at Ohio University, who can be
45reached at ostermann@cs.ohiou.edu to ask questions about the licensing
46of the software.
47
48HTML archives of the "tcptrace" and "tcptrace-bugs" lists can be found on
49the tcptrace website at http://www.tcptrace.org.
50

README.modules

1Mon Jul 14, 1997
2
3I added a "plugin module" interface (actually, "compile-in") which
4makes it a lot easier to add warts to the program for special purpose
5tasks.  There's an example in the modules.h header file (commented
6out) that include the module in mod_http.c
7
8Shawn
9

README.pcap

1Mon Jul 14, 1997
2
3To read tcpdump files, you need to packet capture library from LBL.
4If you already have tcpdump, then your probably already have it
5installed.  If not, then check out:
6
7	ftp://ftp.ee.lbl.gov/libpcap.tar.Z
8
9These sources have been tested with the 0.4 version of libpcap...
10
11--sdo
12
13----------------------------------------------------------------------
14
15The pcap README file:
16
17@(#) $Header$ (LBL)
18
19LIBPCAP 0.4
20Lawrence Berkeley National Laboratory
21Network Research Group
22libpcap@ee.lbl.gov
23ftp://ftp.ee.lbl.gov/libpcap.tar.Z
24
25This directory contains source code for libpcap, a system-independent
26interface for user-level packet capture.  libpcap provides a portable
27framework for low-level network monitoring.  Applications include
28network statistics collection, security monitoring, network debugging,
29etc.  Since almost every system vendor provides a different interface
30for packet capture, and since we've developed several tools that
31require this functionality, we've created this system-independent API
32to ease in porting and to alleviate the need for several
33system-dependent packet capture modules in each application.
34
35Note well: this interface is new and is likely to change.
36
37The libpcap interface supports a filtering mechanism based on the
38architecture in the BSD packet filter.  BPF is described in the 1993
39Winter Usenix paper ``The BSD Packet Filter: A New Architecture for
40User-level Packet Capture''.  A compressed postscript version is in:
41
42	ftp://ftp.ee.lbl.gov/papers/bpf-usenix93.ps.Z.
43
44Although most packet capture interfaces support in-kernel filtering,
45libpcap utilizes in-kernel filtering only for the BPF interface.
46On systems that don't have BPF, all packets are read into user-space
47and the BPF filters are evaluated in the libpcap library, incurring
48added overhead (especially, for selective filters).  Ideally, libpcap
49would translate BPF filters into a filter program that is compatible
50with the underlying kernel subsystem, but this is not yet implemented.
51
52BPF is standard in 4.4BSD, BSD/386, NetBSD, and FreeBSD.  DEC OSF/1
53uses the packetfilter interface but has been extended to accept BPF
54filters (which libpcap utilizes).  Also, you can add BPF filter support
55to Ultrix using the kernel source and/or object patches available in:
56
57	ftp://gatekeeper.dec.com/pub/DEC/net/bpfext42.tar.Z.
58
59Problems, bugs, questions, desirable enhancements, source code
60contributions, etc., should be sent to the email address
61"libpcap@ee.lbl.gov".
62
63 - Steve McCanne
64   Craig Leres
65   Van Jacobson
66
67

README.sgi

1[I got the following very useful note from a user at SGI with some notes
2 on compiler problems.  As nobody has ever mentioned these problems before,
3 I suspect that they are peculiar to the SGI C compiler.  Perhaps these
4 notes will be helpful to others...
5
6 sdo - Fri Sep 18, 1998]
7
8
9Date: Mon, 14 Sep 1998 22:07:02 -0300
10From: Alejandro Saez <xxxxxxxxxxxx>
11Organization: Silicon Chile
12To: ostermann@cs.ohiou.edu
13Subject: IRIX problem solved
14
15Hi,
16
17[...]
18
19I compiled the program on a IRIX 6.2 SGI workstation. First of all,
20the SGI cc compiler didn't work basically because it doesn't accept
21(unlike gcc) unterminated strings for formated output functions (it
22forces you to have a long line) so this was a problem for the
23postscript generation bit. I installed gcc, and here a new problem
24arose. Some of your files (mfiles.c, tcptrace.c and plotter.c),
25includes and uses the stdarg.h include file. This file uses a SGI
26compiler built-in macro called __builtin_alignof, so when using gcc,
27ld would complain about not being able to resolve that symbol (makes
28sense, it's provided by cc). I was able to solve it by making a local
29copy of stdarg.h and changing ocurences of __builtin_alignof by
30__alignof__ which is a gcc extension. Of course I had to change
31#include <stdarg.h> for #include "stdarg.h" but the nice thing is it
32worked (well, it compiled and run with no arguments). I though you
33would like to hear about this. Hope comes in handy.
34
35
36------------------------------------------------------------------------
37Alejandro Saez
38Software Engineer
39Silicon Chile S.A.
40
41------------------------------------------------------------
42Mon Sep 21, 1998
43
44
45[...] After I got your e-mail I did a full search and realized that
46the gcc distribution included the stdarg.h file (they were pretty
47hidden too, and undocumented ) . Funny since I've compiled with gcc on
48other SGI boxes and always used SGI's includes, and it made sense,
49they are the STANDARD libraries, it never ocurred to me that I needed
50two pairs of standard library headers, until now that this one include
51depended on a compiler internal.  So maybe is not a good idea to
52include the stuff in the notes, or at least say that it's only
53necessary if you are using the gcc compiler and SGI's header files,
54which of course doesn't make much sense.
55
56
57

README.tline_graphs

1README - Time Line Graphs
2
3NOTE:
4-----
5This code is lacking about a 1000 lines of intellegence that is needed
6to draw these graphs correctly. The basic problem we face is that we have
7the time values for the segments arriving/leaving on one end since the
8traffic dump is carried out on that end. The time values for the other end
9have to be estimated based on some heuristic. This requires a lot of
10intellegence and requires taking care of various conditions like
11retransmits, timeouts etc. The current heuristic is a simple one of
12adding/subtacting 1/3rd of the rtt.
13
14We started this project thinking it is easy to draw these graphs, and then
15realized that it is infact quite a complicated task. All this works with a
16-L option at command line, but may not accurately reflect the segment
17timings.
18
19We are currently working on fixing this problem and should be able to
20provide more accurate results in the near future.
21
22For tcptrace maintainers:
23-------------------------
24
25I have left the code in here as the starting point to work on. Whoever is
26working on this project would want to clean up this file trace.c (based on
27the diffs below), and continue development as a seperate module.
28
29Don't forget to update this file when this option is fully developed.
30
31--Avinash (alakhian@tcptrace.org)
329 July 2002
33
34-------------------
35 DIFFS - plotter.c
36-------------------
37
3868,75d67
39<     Bool header_done;           /* Flag indicating plotter header written to file */
40<     Bool axis_switched;         /* Switch x & y axis types.
41< 				 * (Needed for Time Line Charts,
42< 				 * Default = FALSE)
43< 				 */
44<     char *title;                /* Plotter title */
45<     char *xlabel;               /* Plotter x-axis label */
46<     char *ylabel;               /* Plotter y-axis label */
4791,92d82
48< static void WritePlotHeader(PLOTTER pl);
49< static void CallDoPlot(PLOTTER pl, char *plot_cmd, int plot_argc, ...);
5094a85,88
51>
52>
53>
54>
55114,119d107
56<     struct plotter_info *ppi;
57<
58<     ppi = &pplotters[pl];
59<
60<     /* see if we're graphing from "0" OR if the axis type is switched */
61<     if (graph_time_zero || ppi->axis_switched) {
62120a109,111
63>     /* see if we're graphing from "0" */
64>     if (graph_time_zero) {
65> 	struct plotter_info *ppi = &pplotters[pl];
66268c259
67<
68---
69>
70273,276d263
71<
72<     /* Write the plotter header if not already written */
73<     if(!ppi->header_done)
74<      WritePlotHeader(pl);
75327a315,336
76>     /* graph coordinates... */
77>     /*  X coord is timeval unless graph_time_zero is true */
78>     /*  Y is signed except when it's a sequence number */
79>     /* ugly hack -- unsigned makes the graphs hard to work with and is
80>        only needed for the time sequence graphs */
81>     /* suggestion by Michele Clark at UNC - make them double instead */
82>     Mfprintf(f,"%s %s\n",
83> 	     graph_time_zero?"dtime":"timeval",
84> 	     ((strcmp(ylabel,"sequence number") == 0)&&(!graph_seq_zero))?
85> 	     "double":"signed");
86>
87>     if (show_title) {
88> 	if (xplot_title_prefix)
89> 	    Mfprintf(f,"title\n%s %s\n",
90> 		     ExpandFormat(xplot_title_prefix),
91> 		     title);
92> 	else
93> 	    Mfprintf(f,"title\n%s\n", title);
94>     }
95>     Mfprintf(f,"xlabel\n%s\n", xlabel);
96>     Mfprintf(f,"ylabel\n%s\n", ylabel);
97>
98331,338c340
99<     ppi->axis_switched = FALSE;
100<     ppi->header_done = FALSE;
101<
102<     /* Save these fields to be writtn to the plotter header later in DoPlot() */
103<     ppi->title  = strdup(title);
104<     ppi->xlabel = strdup(xlabel);
105<     ppi->ylabel = strdup(ylabel);
106<
107---
108>
109369,373c371
110<
111<         /* Write the plotter header if not already written */
112<         if(!ppi->header_done)
113< 	 WritePlotHeader(pl);
114<
115---
116>
117424,425c422,423
118<    if (colorplot)
119< 	CallDoPlot(pl, color, 0);
120---
121>     if (colorplot)
122> 	DoPlot(pl,"%s",color);
123437c435,437
124<     CallDoPlot(pl,"line", 4, t1, x1, t2, x2);
125---
126>     DoPlot(pl,"line %s %u %s %u",
127> 	   xp_timestamp(pl,t1), x1,
128> 	   xp_timestamp(pl,t2), x2);
129449c449,451
130<     CallDoPlot(pl,"dline", 4, t1, x1, t2, x2);
131---
132>     DoPlot(pl,"dline %s %u %s %u",
133>            xp_timestamp(pl,t1), x1,
134>            xp_timestamp(pl,t2), x2);
135459c461
136<     CallDoPlot(pl,"diamond", 2, t, x);
137---
138>     DoPlot(pl,"diamond %s %u", xp_timestamp(pl,t), x);
139469c471
140<     CallDoPlot(pl,"dot", 2, t, x);
141---
142>     DoPlot(pl,"dot %s %u", xp_timestamp(pl,t), x);
143479c481
144<     CallDoPlot(pl,"plus", 2, t, x);
145---
146>     DoPlot(pl,"plus %s %u", xp_timestamp(pl,t), x);
147489c491
148<     CallDoPlot(pl,"box", 2, t, x);
149---
150>     DoPlot(pl,"box %s %u", xp_timestamp(pl,t), x);
151501,503c503
152<     char arrow_type[7];
153<     snprintf(arrow_type, sizeof(arrow_type), "%carrow", dir);
154<     CallDoPlot(pl, arrow_type, 2, t, x);
155---
156>     DoPlot(pl,"%carrow %s %u", dir, xp_timestamp(pl,t), x);
157554,556c554
158<     char tick_type[6];
159<     snprintf(tick_type, sizeof(tick_type), "%ctick", dir);
160<     CallDoPlot(pl, tick_type, 2, t, x);
161---
162>     DoPlot(pl,"%ctick %s %u", dir, xp_timestamp(pl,t), x);
163643,646c641
164<     char text_type[6];
165<     snprintf(text_type, sizeof(text_type), "%stext", where);
166<
167<     CallDoPlot(pl, text_type, 2, t, x);
168---
169>     DoPlot(pl,"%stext %s %u", where, xp_timestamp(pl,t), x);
170653c648
171<     CallDoPlot(pl, str, 0);
172---
173>     DoPlot(pl,"%s", str);
174656,663d650
175< void
176< plotter_invisible(
177<     PLOTTER pl,
178<     struct timeval	t,
179<     u_long		x)
180< {
181<     CallDoPlot(pl,"invisible", 2, t, x);
182< }
183665d651
184<
185768,925d753
186< /* This function may be called with 0, 2 or 4 arguments depending on plot command.
187<  * case 0:
188<  *   The arguments t1, x1, t2, x2 do not hold any valid values, and are not used.
189<  * case 2:
190<  *   Arguments t2 and x2 are the same as arguments t1 and x1. Only t1 and x1 are used.
191<  * case 4:
192<  *   All arguments are valid and are used.
193<  */
194< static void
195< CallDoPlot(
196<     PLOTTER pl,
197<     char *plot_cmd,
198<     int plot_argc,
199<     ...)
200< {
201<    struct timeval t1;
202<    u_long x1;
203<    struct timeval t2;
204<    u_long x2;
205<    va_list ap;
206<    struct plotter_info *ppi;
207<    char fmt[200];
208<
209<    if (pl == NO_PLOTTER)
210<      return;
211<
212<    if (pl > plotter_ix) {
213<       fprintf(stderr,"Illegal plotter: %d\n", pl);
214<       exit(-1);
215<    }
216<
217<    ppi = &pplotters[pl];
218<
219<    /* Get the arguments from the variable list */
220<    va_start(ap, plot_argc);
221<    if(plot_argc > 0)
222<      {
223< 	t1 = va_arg(ap, struct timeval);
224< 	x1 = va_arg(ap, u_long);
225<      }
226<    if(plot_argc > 2)
227<      {
228< 	t2 = va_arg(ap, struct timeval);
229< 	x2 = va_arg(ap, u_long);
230<      }
231<    va_end(ap);
232<
233<    if(ppi->axis_switched) {
234<       switch(plot_argc) {
235<        case 0:
236< 	 snprintf(fmt, sizeof(fmt), "%s%c", plot_cmd, NULL);
237< 	 DoPlot(pl, fmt);
238< 	 break;
239<        case 2:
240< 	 snprintf(fmt, sizeof(fmt), "%s %%u -%%s%c", plot_cmd, NULL);
241< 	 DoPlot(pl, fmt,
242< 		x1, xp_timestamp(pl,t1));
243< 	 break;
244<        case 4:
245< 	 snprintf(fmt, sizeof(fmt), "%s %%u -%%s %%u -%%s%c", plot_cmd, NULL);
246< 	 DoPlot(pl, fmt,
247< 		x1, xp_timestamp(pl,t1),
248< 		x2, xp_timestamp(pl,t2));
249< 	 break;
250<        default:
251< 	 fprintf(stderr, "CallDoPlot: Illegal number of arguments (%d)\n", plot_argc);
252<       }
253<    }
254<    else {
255<       switch(plot_argc) {
256<        case 0:
257< 	 snprintf(fmt, sizeof(fmt), "%s%c", plot_cmd, NULL);
258< 	 DoPlot(pl, fmt);
259< 	 break;
260<        case 2:
261< 	 snprintf(fmt, sizeof(fmt), "%s %%s %%u%c", plot_cmd, NULL);
262< 	 DoPlot(pl, fmt,
263< 		xp_timestamp(pl,t1), x1);
264< 	 break;
265<        case 4:
266< 	 snprintf(fmt, sizeof(fmt), "%s %%s %%u %%s %%u%c", plot_cmd, NULL);
267< 	 DoPlot(pl, fmt,
268< 		xp_timestamp(pl,t1), x1,
269< 		xp_timestamp(pl,t2), x2);
270< 	 break;
271<        default:
272< 	 fprintf(stderr, "CallDoPlot: Illegal number of arguments (%d)\n", plot_argc);
273<       }
274<    }
275<
276<    return;
277< }
278<
279< static void
280< WritePlotHeader(
281<     PLOTTER pl)
282< {
283<    MFILE *f = NULL;
284<    struct plotter_info *ppi;
285<
286<    if (pl == NO_PLOTTER)
287<      return;
288<
289<    if (pl > plotter_ix) {
290<       fprintf(stderr,"Illegal plotter: %d\n", pl);
291<       exit(-1);
292<    }
293<
294<    ppi = &pplotters[pl];
295<
296<    if ((f = ppi->fplot) == NULL)
297<      return;
298<
299<    if(ppi->axis_switched) {
300<       /* Header for the Time Line Charts */
301<       Mfprintf(f,"%s %s\n", "unsigned", "dtime");
302<    }
303<    else {
304<       /* Header for all other plots */
305<       /* graph coordinates... */
306<       /*  X coord is timeval unless graph_time_zero is true */
307<       /*  Y is signed except when it's a sequence number */
308<       /* ugly hack -- unsigned makes the graphs hard to work with and is
309<        only needed for the time sequence graphs */
310<       /* suggestion by Michele Clark at UNC - make them double instead */
311<       Mfprintf(f,"%s %s\n",
312< 	       graph_time_zero?"dtime":"timeval",
313< 	       ((strcmp(ppi->ylabel,"sequence number") == 0)&&(!graph_seq_zero))?
314< 	       "double":"signed");
315<    }
316<
317<    if (show_title) {
318<       if (xplot_title_prefix)
319< 	Mfprintf(f,"title\n%s %s\n",
320< 		 ExpandFormat(xplot_title_prefix),
321< 		 ppi->title);
322<       else
323< 	Mfprintf(f,"title\n%s\n", ppi->title);
324<    }
325<
326<    Mfprintf(f,"xlabel\n%s\n", ppi->xlabel);
327<    Mfprintf(f,"ylabel\n%s\n", ppi->ylabel);
328<
329<    /* Indicate that the header has now been written to the plotter file */
330<    ppi->header_done = TRUE;
331<
332<    return;
333< }
334<
335< /* Switch the x and y axis type (Needed for Time Line Charts. Default = FLASE) */
336< void plotter_switch_axis(
337<     PLOTTER pl,
338<     Bool flag)
339< {
340<    struct plotter_info *ppi = &pplotters[pl];
341<
342<    ppi->axis_switched = flag;
343< }
344
345--------------------
346 DIFFS - tcptrace.h
347--------------------
348
349450,452d449
350<     /* Time Line Graph */
351<     PLOTTER     tline_plotter;
352<
353634d630
354< extern Bool graph_tline;
355744,746c740
356< void plotter_nothing(PLOTTER, timeval);
357< void plotter_invisible(PLOTTER, timeval, u_long);
358< void plotter_switch_axis(PLOTTER, Bool);
359---
360> void plotter_nothing(PLOTTER pl, struct timeval t);
361991d984
362< #define TLINE_FILE_EXTENSION		"_tline.xpl"
363
364--------------------
365 DIFFS - tcptrace.c
366--------------------
367
368107d106
369< Bool graph_tline = FALSE;
370531d529
371<   -L      create time line graph[s]\n\
3721800d1797
373< 		    graph_tline = TRUE;
3741802,1804d1798
375< 		  case 'L': graph_tline = TRUE;
376< 		    fprintf(stderr, "\nWarning: You have chosen the option '-L' to plot Time Line Graphs.\n         This option is yet under development and may not reflect accurate results.\n         Please take a look at the file README.tline_graphs for more details.\n\n");
377< 		    break;
3781927d1920
379< 		  case 'L': graph_tline = !TRUE; break;
3801998a1992
381>     fprintf(stderr,"graph tsg:        %s\n", BOOL2STR(graph_tsg));
3822001,2004d1994
383<     fprintf(stderr,"graph tsg:        %s\n", BOOL2STR(graph_tsg));
384<     fprintf(stderr,"graph segsize:    %s\n", BOOL2STR(graph_segsize));
385<     fprintf(stderr,"graph owin:       %s\n", BOOL2STR(graph_owin));
386<     fprintf(stderr,"graph tline:      %s\n", BOOL2STR(graph_tline));
387
388
389-----------------
390 DIFFS - trace.c
391-----------------
392
39374,75d73
394< static int tline_left  = 0; /* left and right time lines for the time line charts */
395< static int tline_right = 0;
396138,140d135
397< char *a2b_seg_color     = "green";     /* colors for segments on the time line chart */
398< char *b2a_seg_color     = "yellow";
399<
400470,521d464
401<     /* init time line graphs (Avinash, 2 July 2002) */
402<     ptp->a2b.tline_plotter = ptp->b2a.tline_plotter = NO_PLOTTER;
403<     if (graph_tline && !ptp->ignore_pair) {
404< 	if (!ignore_non_comp || (SYN_SET(ptcp))) {
405< 	    /* We don't want the standard a2b type name so we will specify
406< 	     * a filename of type a_b when we call new_plotter.
407< 	     */
408< 	    char filename[25];
409< 	    snprintf(filename,sizeof(filename),"%s_%s",
410< 		     ptp->a2b.host_letter, ptp->a2b.ptwin->host_letter);
411<
412< 	    snprintf(title,sizeof(title),"%s_==>_%s (time line graph)",
413< 		    ptp->a_endpoint, ptp->b_endpoint);
414< 	    /* We will keep both the plotters the same since we want all
415< 	     * segments going in either direction to be plotted on the same
416< 	     * graph
417< 	     */
418< 	    ptp->a2b.tline_plotter = ptp->b2a.tline_plotter =
419< 		new_plotter(&ptp->a2b,filename,title,
420< 			    "segments",
421< 			    "relative time",
422< 			    TLINE_FILE_EXTENSION);
423<
424< 	    /* Switch the x & y axis types.
425< 	     * The default is x - timeval, y - unsigned,
426< 	     * we need x - unsigned, y - dtime.
427< 	     * Both the plotters are the same so we will
428< 	     * only call this function once.
429< 	     */
430< 	    plotter_switch_axis(ptp->a2b.tline_plotter, TRUE);
431<
432< 	    /* set graph zero points */
433< 	    plotter_nothing(ptp->a2b.tline_plotter, current_time);
434< 	    plotter_nothing(ptp->b2a.tline_plotter, current_time);
435<
436< 	    /* Some graph initializations
437< 	     * Generating a drawing space between x=0-100.
438< 	     * The time lines will be at x=40 for source, x=60 for destination.
439< 	     * Rest of the area on either sides will be used to print segment
440< 	     * information.
441< 	     *
442< 	     *  seg info |----->|
443< 	     *           |<-----| seg info
444< 	     */
445< 	    tline_left  = 40;
446< 	    tline_right = 60;
447< 	    plotter_invisible(ptp->a2b.tline_plotter, current_time, 0);
448< 	    plotter_invisible(ptp->a2b.tline_plotter, current_time, 100);
449< 	}
450<     }
451<
452<
4531159d1101
454<     PLOTTER     tlinepl;
4551412,1414d1353
456<
457<     /* plotter shorthand (NOTE: we are using one plotter for both directions) */
458<     tlinepl      = thisdir->tline_plotter;
4591415a1355
460>
4611726,1861c1666
462<     }
463<
464<    /* graph time line */
465<    /* Since the axis types have been switched specially for these graphs,
466<     * x is actually used as y and y as x
467<     * -Avinash.
468<     *
469<     * NOTE: This code is lacking about a 1000 lines of intellegence that is needed
470<     * ----- to draw these graphs correctly. I have left it in here as the starting
471<     *       point to work on. Whoever is working on this project would want to clean
472<     *       up this file trace.c (based on the patches in the README.tline_graphs
473<     *       file), and continue development as a seperate module. We started this
474<     *       project thinking it is easy to draw these graphs, and then realized that
475<     *       it is infact quite a complicated task. All this works with a -L option at
476<     *       command line.
477<     */
478<    if (tlinepl != NO_PLOTTER) {
479<       char buf1[200];
480<       char buf2[50];
481<       static seqnum a2b_first_seqnum = 0;
482<       static seqnum b2a_first_seqnum = 0;
483<       /* 1/3rd rtt. Since we have the timestamps only on one side, we calculate the
484<        * arrrival/departure time of the segments on the other side by adding/subtracting
485<        * 1/3rd rtt. We assume that it takes 1/3rd time for the segment to travel in
486<        * either direction, and 1/3rd time for processing.
487<        * We also skew the calculated times so that the acks are not seen before the
488<        * segments actually arrive.
489<        */
490<       struct timeval one3rd_rtt;
491<       struct timeval copy_current_time;
492<       /* Make a copy of the current time (Needed for calculations) */
493<       copy_current_time.tv_sec  = current_time.tv_sec;
494<       copy_current_time.tv_usec = current_time.tv_usec;
495<       /* Compute 1/3rd rtt */
496<       one3rd_rtt.tv_sec  = 0;
497<       one3rd_rtt.tv_usec = thisdir->rtt_last/3;
498<       /* Adjust seconds and microseconds */
499<       while(one3rd_rtt.tv_usec >= US_PER_SEC) {
500< 	 one3rd_rtt.tv_usec -= US_PER_SEC;
501< 	 one3rd_rtt.tv_sec += 1;
502<       }
503<
504<       /* Initializations */
505<       memset(&buf1, 0, sizeof(buf1));
506<       memset(&buf2, 0, sizeof(buf2));
507<
508<       /* Segment information */
509<       /* Check the flags */
510<       if(SYN_SET(ptcp))
511< 	strncat(buf1, "SYN ", 4);
512<       if(FIN_SET(ptcp))
513< 	strncat(buf1, "FIN ", 4);
514<       if(RESET_SET(ptcp))
515< 	strncat(buf1, "RST ", 4);
516<       if(PUSH_SET(ptcp))
517< 	strncat(buf1, "PSH ", 4);
518<       if(URGENT_SET(ptcp))
519< 	strncat(buf1, "URG ", 4);
520<
521<
522<       /* Write the sequence numbers */
523<       if(dir == A2B) {
524< 	 /* Use relative sequence numbers after the first segment in either direction */
525< 	 snprintf(buf2, sizeof(buf2), "%u:%u(%u) %c", (start - a2b_first_seqnum),
526< 		  (end - a2b_first_seqnum), (end-start), NULL);
527< 	 strncat(buf1, buf2, strlen(buf2));
528< 	 if(a2b_first_seqnum == 0 && !SYN_SET(ptcp)) // Don't use relative sequence numbers until handshake is complete.
529< 	   a2b_first_seqnum = thisdir->min_seq;
530<       }else if(dir == B2A) {
531< 	 /* Use relative sequence numbers after the first segment in either direction */
532< 	 snprintf(buf2, sizeof(buf2), "%u:%u(%u) %c", (start - b2a_first_seqnum),
533< 		  (end - b2a_first_seqnum), (end-start), NULL);
534< 	 strncat(buf1, buf2, strlen(buf2));
535< 	 if(b2a_first_seqnum == 0 && !SYN_SET(ptcp))
536< 	   b2a_first_seqnum = thisdir->min_seq;
537<       }
538<
539<       /* Acknowledgements */
540<       if(ACK_SET(ptcp)) {
541< 	 memset(&buf2, 0, sizeof(buf2));
542< 	 if(dir == A2B)
543< 	   snprintf(buf2, sizeof(buf2), "ack %u %c", (th_ack - b2a_first_seqnum), NULL);
544< 	 else if(dir == B2A)
545< 	   snprintf(buf2, sizeof(buf2), "ack %u %c", (th_ack - a2b_first_seqnum), NULL);
546< 	 strncat(buf1, buf2, strlen(buf2));
547<       }
548<
549<       /* Advertised Window */
550< 	 memset(&buf2, 0, sizeof(buf2));
551< 	 snprintf(buf2, sizeof(buf2), "win %u %c", eff_win,NULL);
552< 	 strncat(buf1, buf2, strlen(buf2));
553<
554<       /* Retransmits */
555<       if(retrans) {
556< 	 memset(&buf2, 0, sizeof(buf2));
557< 	 snprintf(buf2, sizeof(buf2), "R %c", NULL);
558< 	 strncat(buf1, buf2, strlen(buf2));
559<       }
560<
561<       /* Hardware Duplicates */
562<       if(hw_dup) {
563< 	 memset(&buf2, 0, sizeof(buf2));
564< 	 snprintf(buf2, sizeof(buf2), "HD %c", NULL);
565< 	 strncat(buf1, buf2, strlen(buf2));
566<       }
567<
568<       /* Draw the segment ------>/<------- */
569<       if(dir == A2B) {
570< 	 tv_add(&copy_current_time, one3rd_rtt);
571< 	 plotter_line(tlinepl, ptp_save->first_time, tline_left, copy_current_time, tline_left);
572< 	 plotter_line(tlinepl, ptp_save->first_time, tline_right, copy_current_time, tline_right);
573< 	 if(SYN_SET(ptcp)|| FIN_SET(ptcp) || RESET_SET(ptcp))
574< 	   plotter_perm_color(tlinepl, synfin_color);
575< 	 else
576< 	   plotter_perm_color(tlinepl, a2b_seg_color);
577< 	 plotter_line(tlinepl, current_time, tline_left, copy_current_time, tline_right);
578< 	 plotter_rarrow(tlinepl, copy_current_time, tline_right);
579< 	 plotter_perm_color(tlinepl, default_color);
580< 	 plotter_text(tlinepl, current_time, tline_left, "l", buf1);
581<       }
582<       else if(dir == B2A) {
583< 	 tv_sub(&copy_current_time, one3rd_rtt);
584< 	 plotter_line(tlinepl, ptp_save->first_time, tline_left, copy_current_time, tline_left);
585< 	 plotter_line(tlinepl, ptp_save->first_time, tline_right, copy_current_time, tline_right);
586< 	 if(SYN_SET(ptcp)|| FIN_SET(ptcp) || RESET_SET(ptcp))
587< 	   plotter_perm_color(tlinepl, synfin_color);
588< 	 else
589< 	   plotter_perm_color(tlinepl, b2a_seg_color);
590< 	 plotter_line(tlinepl, copy_current_time, tline_right, current_time, tline_left);
591< 	 plotter_larrow(tlinepl, current_time, tline_left);
592< 	 plotter_perm_color(tlinepl, default_color);
593< 	 plotter_text(tlinepl, copy_current_time, tline_right, "r", buf1);
594<       }
595<
596<    }
597<
598---
599>      }
600

README.tput_graphs

1
2>> When I plot a2b_tput.xpl I get two curves, one red and one blue
3>> plus the yellow dots for packets. What is not clear for me is what
4>> are the blue and red curves represents with respect to throughput?
5
6Sorry, that stuff hasn't been documented very well, partly because I'm
7not sure how to display it more clearly, but here's what it means:
8
9The yellow dots are the instantaneous throughput samples.  They're
10calculated by using the time since the last segment for the connection
11and the size of the current segment to get bytes/second for this
12sample.
13
14The red line is the result of averaging together multiple yellow
15dots.  By default (see -A), the red line uses the last 10 segments to
16calculate a throughput.  Higher -A values give smoother curves.
17
18The blue line is simply a running average throughput from the
19beginning of the transfer, and it's final value is the same as what is
20reported for the connection's transfer rate.
21
22Hope that helps.  As I said, I'm not really sure what should be on
23this graph.  What's there is the stuff that we've wanted here locally,
24but I'd be glad to hear other ideas!
25
26Shawn
27

README.tru64

1Fri May 25, 2001
2
3The version 6 beta version mostly compiles fine on Tru64/Alpha
4machines with the following exceptions:
5
61) You need to modify tcptrace.h to find the unusual definitions that
7   Tru64 uses for the bit-field level TCP and IP fields
8
9#define IP_HL(pip)   ((pip)->ip_vhl&0xf)
10#define IP_V(pip)    ((pip)->ip_vhl>>4)
11#define TH_X2(ptcp)  ((ptcp)->th_xoff&0xf)
12#define TH_OFF(ptcp) ((ptcp)->th_xoff>>4)
13
142) the NS module can't handle those, so you'll need to remove
15   "-DGROK_NS" from the Makefile (which will remove NS input file support)
16
17

README.version

1README.version: convention used for version numbers,
2                and release instructions
3
4Convention followed for version numbers:
5----------------------------------------
6
7Starting with release 6.2.0 of tcptrace, we will be using version
8numbers similar to those used for linux software. Following is the
9convention followed for version numbers of the form x.y.z:
10
11 - 'z' changes for small bug fixes
12
13 - 'y' changes for certain feature enhancements and reasonably large
14       modifications. Also, even numbers indicate stable release and
15       odd numbers are for development versions
16
17 - 'x' changes when a whole lot has changed since the previous release
18
19
20Release Instructions:
21---------------------
22
23NOTE: Stable release in this example      : 6.4.0
24----- Development version that follows    : 6.5.0
25
26~/tcptrace-cvs$ cvs tag release-6_4_0
27~/tcptrace-cvs$ cd
28~$ cvs export -d tcptrace-6.4.0 -r release-6_4_0 tcptrace
29~$ tar cf tcptrace-6.4.0.tar tcptrace-6.4.0
30
31etc. to create the build.
32
33After that, go back to the tcptrace cvs workspace and *immediately* do the
34following:
35
36~/tcptrace-cvs$ cvs tag start-6_5
37~/tcptrace-cvs$ cvs tag -b branch-6_5
38
39Then modify the two branches appropriately:
40
41*FOR BUG FIXES*
42^^^^^^^^^^^^^^^
43~/$ cvs co -d tcptrace-stable tcptrace
44(change to *6.4.1, 6.4.2* etc. for each bug fixed and check in)
45
46*FOR NEW FEATURE DEVELOPMENT*
47^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
48~/$ cvs co -d tcptrace-devel -r branch-6_5 tcptrace
49(change to *6.5.0* and check in)
50
51Now anyone checking out 'tcptrace' with no args will get the
52current *stable* branch (bug-fixes only), and anyone checking out with
53'-r branch-6_5' would get the current development version with all of its
54glorious new features, etc.
55
56Version numbers then go on as 6.4.1, 6.4.2 bug-fixes and,
576.5.1, 6.5.2 etc for development versions until released as 6.6.0 or 7.0.0,
58depending on magnitude of development.
59
60--Avinash Lakhiani (alakhian@tcptrace.org)
61--Ethan Blanton    (eblanton@tcptrace.org)
62  27 Jul 2002
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89

README.xpl2gpl

1Introduction:
2-------------
3xpl2gpl is a utility that converters tcptrace-style xplot input to gnuplot input.
4This converter gives a nearly perfect gnuplot reproduction of the corresponding
5xplot graph.
6
7Installation:
8-------------
9Simply copy the script file xpl2gpl to a system-wide area like /bin, /usr/bin,
10/usr/local/bin or any other suitable location if you wish to make it available to
11all users.
12
13Usage:
14------
15xpl2gpl [-s] <file_name[.xpl]>
16
17This would produce files by the names "file_name.gpl", "file_name.datasets" and
18"file_name.labels".
19Load the file "file_name.gpl" in gnuplot and it should give you the plot. The
20contents of the other files are as follows:
21"file_name.datasets" : contains all the plotting coordinates.
22"file_name.labels    : contains all the labels of the plot.
23
24"file_name.ps" is the postscript version of the plot that is created when the
25file "file_name.gpl" is loaded in gnuplot.
26
27
28Options:
29--------
30-s : seperate files (for expert users)
31
32If you wish to plot only some data from the xpl file, you may use the -s (seperate
33files) option which generates a bunch of data-files filtered based on the color
34and plotting style.
35
36Look at the xplot version of the plot, and based upon the color and style, you may
37alter the corresponding lines in the ".gpl" file, for whatever data you want to
38alter in the plot.
39
40
41On behalf of Dr. Shawn Ostermann,
42
43Avinash Lakhiani
44Email: avinash.lakhiani@ohiou.edu
45Ohio University.
46
47Jun 18, 2001
48
49