NeTraMet Version History
========================

v4.4    20 Feb 02
                       In examples/ directory, moved old rules.* examples
                       to non_srl.  The srl examples are now in the
                       examples/ directory.

                       SNMP security issues.  I've tested NeTraMet's
                       SNMP code using the PROTOS test suite.  A test
                       for negative lengths in the ASN.1 parsing code
                       has been added - that was the only change needed.

                       The SNMP routines (in snmplib/) perform a lot of
                       parameter checks, and calls on an ERROR() define.
                       By default ERROR does nothing.  If you're tesing
                       an SNMP manager against NeTraMet, you can turn
                       those messages on by adding -DDEBUG to the CFLAGS=
                       line in snmplib/Makefile and rebuilding the
                       snmp library.

                       Change 'interface number' attributes to use
                       16-bit integers instead of 8-bit.  This can
                       be useful when using NetFlowMet.


v4.4b11 25 Nov 01       Implement -C option for nm_rc, exactly as in
                       NeMaC.  This allows you to use nm_rc to test
                       rulesets against trace files being read by
                       crl_ntm or dd_ntm.  Sample commands to do this
                       are:
                         ./crl_ntm -T5 -m1234 -Strace_file -wW~com
                         ./nm_rc -C -m1234 -rpeers.rules localhost W~com
                       Note: you need CoralReef version 3.5 to build
                             crl_ntm!

                       Speed improvements in flowhash:
                        - move code which doesn't need to be executed
                            on every call outside blocks in match()
                        - implement list of running rulesets, instead
                            of doing serial searches of ri[] table
                        - use 32-bit hash values for flow and stream
                            hash tables, use table size specified by
                            user (rather than trying to pick a prime
                            above it - that doesn't help, since we
                            use a set of distinct primes for hashing)

                       Use long long integers (8 bytes) for counter64
                       if the host supports them.  Newer Pentiums do,
                       this provides a useful speedup.

                       Change 'shutdown' request character.  It was
                       a single ESC, but it's too easy to hit a key
                       which sends an escape sequence!  Now you have
                       to type ESC ESC Return to shut down the meter.

                       Fix little problems which gave warning messages
                       when building NeTraMet on an alpha running
                       Digital Unix.  The configure script wasn't
                       recognising the OS correctly; this didn't
                       cause problems because none of the programs
                       have defines testing this any more.

                       MinPDUs gave compilation errors on alpha,
                       fixed by adding c64geint() define.

                       Linux kernel reset promiscuous mode when
                       forking a NeTraMet daemon.  Changed meter_ux.c
                       to fork first, then open the interfaces.

                       NeTraMet, NetFlowMet, LfapMet, crl_ntm, dd_ntm
                       (i.e. all the meters) write error messages and
                       summary information to a log file using log_msg(),
                       in the same way as NeMaC.  The name of the log
                       file is meter.log, it will be written in the
                       directory where the meter starts running.


v4.4b10 23 May 01       LfapMet: RTFM meter for LFAP, code contributed
                         by Remco Poortinga, <[email protected]>
                       Added files in src/meter
                        - README_LfapMet  Notes about LfapMet
                        - lfapmet.h       LfapMet globals
                        - lfapmet.c       LfapMet support routines

                       Added two new MIB variables to reader row,
                       MinPDUs (default 0) and TimeMark.  A flow must
                       have at least MinPDUs either to or from before
                       it will be read by a meter reader.  TimeMark
                       is needed to associate an SNMP  getnext request
                       with a particular reader.

                       MinPDUs can be set using the -M option.
                       nifty default is -M20, NeMaC default is -M0

                       Improved save.sav so that it only saves the
                       files we really need in the NeTraMet distribution.


v4.4b9  11 Apr 01       Fixed bug in NeMaC include statement.
                       getarg() no longer allows semicolon in an
                       argument.

                       Fixed srl compiler bug; optimise 3 wasn't
                       recognising the end of AND expressions
                       properly.

                       NeMaC could fail to open a flow data file
                       (e.g. because it already existed with
                       no write access); it now reports this
                       and doesn't try to run that meter/ruleset.

                       NeTraMet Coral interface improved to handle
                       two Dag cards properly.  Reads blocks of
                       cells from each then merges them by timestamp.

                       NeTraMet uses -Siii to specify a Coral source
                       (instead of -C'source iii' *****).


v4.4b8   8 Aug 00       Fixed bug in fd_extract.c; needed to use
                       attr_ix[a] when listing column info.

                       Modified nmc_snmp so as to report (via log
                       file) size of "only one package" SNMP pDUs.
                       This required adding pdu_len to both snmp_pdu
                       and internal_snmp_pdu in snmplib.

                       srl compiler was warning when user redfined
                       a well-known port, but ignored the new definition.
                       This has been fixed, the new definition is used
                       instead of the default well-known port number.

                       Corrected ntm_conf.hin file so that it has ALL
                       the defines tested for by configure.in.  It
                       was missing several, including WORDS_BIGENDIAN,

                       Changed configure.in to improve matching of
                       operating system name when setting the OS define.

                       Fixed bug which prevented rate distributions from
                       being collected (this worked properly in 4.3).  A
                       test that an event (to which the distribution could
                       be linked) existed was wrongly implemented.

                       Fixed bug reported by Dylan Hall, 31 May 00
                       NeTraMet -l options wasn't working because
                       pp.p_len was being overwritten.

                       Deimplemented TCP_ATR define.  TCP attributes are
                       now implemented as part of the new attributes,
                       controlled by #define NEW_ATR.


v4.4b7  22 May 00       Increased size of symbol and label tables
                       in srl compiler, to allow compiling of *much*
                       bigger programs.
                          [Bug report and patches supplied
                           by Carsten Schmoll,  15 Mar 00]

                       fd_filter now allows != as well as == operators
                       in tag descriptions.  This allows you to create
                       a tag for bidirectional flows, e.g.
                          tag 3 ToPDUS != 0, FromPDUs != 0;

                       The srl compiler now allows Ruleset names to
                       be identifiers, not just integers, e.g.
                          set my_big_ruleset;
                       Ruleset names must be <= 16 characters long.

                       A CoralReef version of the meter, crl_ntm, has
                       been implemented.  You can use crl_ntm to analyse
                       CoralReef or tcpdump trace files.  crl_ntm
                       has tree new command-line options:

                          -C'source fn'  Tells meter to read file fn
                          -T sss         Specifies the NeMaC sample interval
                                         (default 10 seconds)
                          -N nnn         Specifies the number of intervals
                                         (default 0, i.e. process whole file)

                       NeMaC has a new command-line option too:

                          -C   Tells NeMaC that this meter is
                               runing from a Coralreef trace file


v4.4b6  22 Feb 00       Change to using autoconf Configuration
                       Header File.  The ntm_conf.h file (in the
                       base directory) is now included by all the
                       source programs.  It contains all the options
                       detetected by autoconfigure, together with
                       some defines giving NeTraMet's version number.
                       One advantage of this is that there is a lot
                       less text displayind while Making Netramet.

                       When NeMaC is shut down gracefully (by a
                       SIGTERM or SIGINT) it will now collect the
                       flow data gathered since the last collection
                       for all the meters it is controlling.
                          [This change was suggested by
                           Robert Strycharczuk, 10 Feb 00]

                       NeTraMet (on Unix and Cygwin32) has been
                       extended so as to handle PPP interfaces.
                       PPP flows are assumed to be IPv4 (the most
                       likely possibility), they have AdjacentType
                       AT_PPP (i.e. 23) and AdjacentAddresses 0.
                          [This change was suggested by
                           Gerald Richter, 10 Dec 99]

                       When displaying domain names instead of IP
                       addresses, nifty may have to wait a long time
                       for the DNS response.  It now displays a
                       'cross-hair' cursor while waiting on DNS.

                       nifty.srl has been modified to plots diamonds
                       instead of pluses for multicast flows.

                       Port NeTraMet to MS Windows, using the Cygwin32
                       environment and WinDump's BPF drivers
                       - ported libpcap to cygnus+windump
                       - changes to meter_ux for CYGWIN32 (can't
                         assume that pcap files work with select)
                       - changes to snmpapi.c and snmpclnt.c
                         (Cygwin32 doesn't have `timerset' defines)


v4.4b5  12 Jan 00       Allow fd_filter to have character constants
                       in tag specifications, e.g. DestKind = 'F';

                       Fix bugs relating to ASNs looked up using
                       OCX_BGP (i.e. in a bgp.txt file).  These were
                       - Lookup wasn't being done if DestASN was
                         saved but not SourceASN
                       - S/D ASN attributes weren't being set to zero
                         if the IP Address lookup failed (i.e. when
                         we couldn't find its ASN).

                       Correct Makefile.in files to set GF variable
                       (it was $GF by mistake).

v4.4b4  16 Nov 99       Update mib.txt to use RFC2720 version.

                       Add support for NetBSD on Alpha:
                       * Use XtPointer in nifty source, cast
                         to IntFromPtr when values are used
                       * Set __unix__ = !defined(DOS)
                         in btypes/types.h
                       * Use POINTER_DATATYPE instead of Bit32 for
                         subnet pointer arithmetic in integrat/subnetd.h
                       * Cast bytes to counter64 in getcounter64()
                         in manager/nmc_snmp.c
                       * Recognise NetBSD in configure.in
                       * Change source to use !defined(DOS)
                         instead of defined(__unix__)

v4.3    30 Sep 99
                       Added a GFLAG variable to the configure.in
                       script and the Makefiles.  By default this
                       is null.  Set it to -g to build executeables
                       which have symbolic information for debugging.

                       Replaced mib/mib.txt with a new version, using
                       the 'Proposed Standard' RTFM Meter MIB.

                       Added config support for Alpha (Tru64 Unix) systems.
                       This corrects several bugs introduced since 4.2;
                       they only showed up on a 64-bit machine.
                       * The Tru64 C compiler is much more 'picky' than gcc!
                         Cleaned up the source so as to get rid of
                         warning messages
                       * Change snmp library so as to use Int32 for
                         ASN.1 INTEGERs and Bit32 for TIMESTAMPs.
                         The original CMU code used 'unsigned long'
                         for both. Made corresponding changes to
                         the meter and manager programs.

                       NeTraMet and NeMaC as daemons: -D option
                       * NeMaC
                         ./NeMaC -D  runs NeMaC in its own Unix session
                       * NeTraMet
                         ./NeTraMet -D   and ./NetFlowMet -D
                         runs the Unix and NetFlow meters in their own
                         Unix session.  Before doing so it disables
                         the screen and keyboard, so -k -s are implied
                         by -D.
                       CAUTION: -d turns on diagnostic dumps of the
                       SNMP packets.  Don't set this by mistake for -D!

                       Implemented command-line defines for srl.
                       For example
                         ./srl -DW=16 "-Dext = DestPeerAddress/24" xxx.srl
                       defines w to be 16, and EXT to be DestPeerAddress/24.
                       Note the quotes around the second define; they are
                       required if the define text contains blanks.

                       Modified NeMaC ruleset parser to skip dots and
                       digits at the end of addresses.  This allows it
                       to download rulesets produced by an srl compiler
                       compiled with the V6 option set even if NeMaC
                       was compiled with the V6 option not set.

v4.3b10 26 May 99
                       Support for IPv6
                       * Controlled by V6 option in the source files.
                         To enable this:
                         a) If you run autoconf to build the Makefiles
                               change AC_DEFINE(V6, 0)
                               to     AC_DEFINE(V6, 1)
                            before running autoconf
                         b) Otherwise, in the configure script
                               change #define V6 0
                               to     #define V6 1
                            before running ./configure

                       * The SRL compiler allows V6 addresses, as
                         specified in RFC 2373.  Although v6 addresses
                         have a fairly simple form, it's easy to get
                         it wrong.  The compiler tries very hard to
                         produce helpful error messages for them.

                       * The NeTraMet meter handles v6 packets,
                         returning them to the manager with
                             SourcePeerType = IPv6
                         (IP and IPv4 are synonyms for IP version 4)

                       * The managers (NeMaC, nm_rc and nifty)
                         display IPv6 addresses as per RFC 2373.

                       * fd_util and fd_extract handle IPv6
                         addresses properly.

                       Other changes
                       * SRL compiler will allow redefinition of
                         'built-ins,' i.e. well-known ports, address
                         families and transport types.  A warning is
                         given telling the user what was declared.

                       * Lots of bugs fixed in SRL compiler handling
                         of syntax errors.  These either crashed the
                         compiler or sent it into infinite loops
                         while reading the source program.

v4.3b9  16 Feb 99
                       * The distribution file now has TCP_ATR set
                         by default, so that the TCP-based attributes
                         are available for use.  So as to minimise the
                         meter default memory requirements, several
                         new memory-allocation command-line options
                         have been implemented.  The complete set of
                         these is now:

                           -f fff   Max of fff flows
                           -u rrr   Max of rrr rules

                           -b bbb   Max of bbb TCP flows      <<< NEW
                           -t ttt   Max of ttt TCP streams    <<< NEW

                           -v ddd   Max of ddd distributions  <<< NEW
                           -e eee   Max of eee distrib events <<< NEW

                       * Implement ASN lookup in NeTraMet meter.
                         This uses Joel Apisdorf's bgp code from
                         OCxMON.  The src/meter Makefile contains
                         variable USE_OCX_BGP, which is commented
                         out by default.  Uncomment it, and make
                         will include ASN lookup in the meter.
                         To use it:
                          a) Set the environment variable DEFAULT_AS
                               (I set it to my own AS number)
                          b) The meter starts up by reading a file,
                               bgp.txt.  You can create this file
                               for your own network using SHOW IP BGP
                               on a Cisco router.  NOTE: a full bgp
                               routing table will take 5 to 10 MB of
                               memory space on the meter.
                          c) By default the meter looks up 'next-hop'
                               ASNs, i.e. the ASN the router would
                               send packets to.  The command-line
                               option -o will look up 'owner' ASNs
                               instead.

v4.3b8   4 Feb 99
                       * Implement distribution-valued attributes
                         in fd_filter

                       * Fix memory management problems for TCP
                         subflows in meter.  Implement TCP-related
                         distribution attributes in meter, NeMaC,
                         fd_filter and srl.

v4.3b7   8 Jan 99
                       * Implement TCPdata attribute in fd_filter

                       * Fix NEW_ATR vs TCP_ATR bugs in meter_ux.c
                         and nf_fwd.c

v4.3b6  23 Dec 98
                       * Fix bugs concerned with intermixing
                         of NEW_ATR and TCP_ATR

v4.3b5  26 Nov 98
                       * Fix bug in SRL compiler, which wasn't
                         distinguishing between
                             save sourcetransaddress;
                         and
                             save sourcetransaddress = 0;

v4.3b4  25 Nov 98
                       * Fix endian problems in netFlowMet,
                         reported by Kevin Hoadley.

v4.3b3  16 Nov 98
                       * Set up new CVS repository to make it
                         easier for co-developers to submit
                         code changes / suggestions.

v4.3b2  12 Nov 98
                       * Aufoconfigure changed to test for Motif,
                         since nifty requires Motif as well as X.

                       * Support for FreeBSD: changed source files
                         so as not to include malloc.h on systems
                         which don't have it!

                       * Documentation error for NeMaC.  Command
                         line option -P specifies open-append-close
                         behaviour for the >>log<< files only.
                         It was previously documented (see below)
                         as doing this for flow data files only.

v4.3b1  23 Oct 98       Changes contributed by Nicolai Guba (BT Labs) ..
                       * Command-line help is dispayed if no options
                         are specified for
                           NeMaC, nm_rc
                           NeTraMet (Unix meters, not PC meters)
                           NetFlowMet

                       * -b mmm   command-line option
                         Tells NeMaC and nm_rc to read the mib from
                         file mmm.

                       * The NeTraMet distribtion file, and the way
                         you install NeTraMet on a host has been
                         changed to make it more like the GNU programs.

                         The executable files are no longer in
                         separate directories.  Instead (by default)
                         they are built in the src/ directories.

                         To install NeTraMet into directory xyz
                         you can simply
                           ./configure
                           make install

                       OCxMON meter improvements ..
                       The NeTraMet meter now allocates as much of
                       its memory as possible when it starts up, so
                       as to minimise allocation overhead.  Space for
                       rulesets is allocated at startup, with a default
                       maximum of 2000 rules total for all rulesets.

                       * New meter command-line option:
                            -u nnnn
                         allocates space for a maximum of nnnn rules

v4.2.2  16 Nov 98
                       * Correct bug in nmc.h (inconsistency
                         introduced when de-implementing 'detail'
                         as synonym for 'trans' in attribute names.
                         This caused NeMaC and friends to crash

v4.2.1   2 Oct 98       Patch release ..
                       * NeMaC crashed with Owner names longer than
                         six characters.  This was because SET_STRING
                         only ever allocated RULE_ADDR_LEN chars!

                       * SRL programs which start with an imperative
                         statement now start with a GotoAct, Next
                         rule.  Without this they don't work!

                       * fd_extract and fd_util now handle 64-bit
                         counter attributes (e.g. topdus) properly.
                         'Editorial' improvements have been made to
                         the fd_util manual.

                       * A memory leak has been fixed in the SNMP
                         snmpapi.c.  Error logging has been added
                         for snmp error/info/debug messages; these
                         now go through log_msg(), as used for
                         other NeMaC errors.

v4.2     5 Aug 98
                       * The distribution file has been changed so
                         that it no longer has subdirectories for
                         the various operating systems.  The best
                         way to install NeTraMet is to use autoconfig;
                         see the INSTALL file  in the autoconf/
                         directory.

                       * The 'os-specific' directories are no longer
                         included in the distribution file.  Users
                         must build the version they need using
                         configure in the autoconfig directory.

               SRL Compiler
                       * The program srl is an optimising compiler
                         for SRL, the Simple Ruleset Language.  SRL
                         is documented in an Internet Draft, available
                         from the NeTraMet and RTFM home page.

                           srl [options] source

                         compiles the file 'source', producing a rules
                         file ready to be used by NeMaC.  Source files
                         will normally end with .srl and rules files
                         with .rules.  For example

                           srl test-prog.srl

                         produces test-prog.rules.

                         Compiler options:

                         -l     List source program
                         -s     Syntax check only
                         -ann   'Assembler output' level N
                                nn=0, rules in numeric form only.
                                  nnn   Requires NeMaC v4.2.
                                nn=1, attributes and actions given
                                       as words.  This is the default.
                                nn=2, as for nn=1, but don't delete
                                       intermediate files.
                         -Onn   Optimisation level.
                                nn=0, no optimisation at all.
                                nn=1, peephole optimising to delete
                                      redundant rules from intermediate
                                      files.  This is the default.
                                nn=2, optimise tests by mask length
                                      within expressions (shortest
                                      masks first, after allowing for
                                      overlapping addresses/masks).
                                nn=3, as for nn=2, but optimise
                                      expression between if clauses
                                      and between statements.

                       * srl extends the language (as described in
                         the Internet Draft by adding a number of
                         extra statements:

                            include fffff ;

                         Will read all the text from file fffff.
                         includes may be nested (i.e. an include
                         file may include other files).  srl looks
                         for the file in the same directory as the
                         source file.

                            optimise nn ;
                            optimise * ;
                            optimise ;

                         Allows you to change the optimisation level
                         as required for different parts of your
                         program.  optimise ; resets the level to
                         the value specified on the command line.
                         optimise * ; is used to indicate breaks
                         between optimised expression groups .

                            set nn ;
                            format aaa .. aaa ;
                            statistics ;

                         These three statements are passed on (via
                         the output file) to NeMaC.  String constants
                         in a format (specifying separators in flow
                         data files) may include C-style constants
                         (introduced with a \).

                       * A collection of SRL programs is provided in
                         the examples/srl directory.

v4.2b5  11 Jun 98
                       * Fix bug in getting reader_name.  This
                         prevented NeMaC et al from reading any
                         flows from the meter!

                        * Use riFlowRecords instead of msNbrFlows for
                          ms->NbrFlows.  This means that nifty will
                          display only the total flow for its current
                          ruleset; it used to display the total
                          number of flows for all rulesets.

v4.2b4   3 Jun 98
                       * Use LastTime instead of sysUptime to get
                         meter time in NeMaC, nm_rc and nifty.

                       * Fix bugs in SNMP library which caused
                         early timeout of some SNMP packets.

v4.2b3  22 May 98
                       * Implement better hashing algorithm for
                         flow table and rulesets.  Multiplies bytes
                         of peer and trans addresses by small primes,
                         and uses larger primes as the size of the
                         various hash tables.

                       * Fix sundry bugs revealed in beta testing.

v4.2b2  11 May 98
                 NetFlowMet  (NeTraMet + NetFlow = NetFlowMet):
                       * A new version of the meter has been added
                         to the distribution.  This takes NetFlow
                         data from a Cisco Router (I've tested it
                         using a 7200) and uses this to build the
                         flow table.

                         To start NetFlow on a router (in brief):
                         - start NetFlow on each interface
                           [no] ip route-cache flow
                         - start exporting the NetFlow data
                           [no] ip flow-export <IP addr> <UDP port>
                         <IP addr> is  the address of your NetFLowMet
                         meter, <UDP port> is the port NetFlowMet
                         will use to recieve the data.

                         You may specify the udp port number by
                         using the
                           -i pppp
                         option on NetFlowMet's command line.
                         If no -i option appears, port 9996 is used.
                         You may specify up to four port numbers
                         by giving a list of -i options, e.g.
                           -i 12001 -i 12002 -i12003
                         would listen for NetFLow data on UDP ports
                         12001, 12002 and 12003.

                         NetFlowMet provides five new attributes
                         which can be used in rulesets:

                         + MeterId  (8 bits, mask 255)
                               Index in -i option list, e.g. port
                               12002 above would produce flows with
                               MeterID = 2.
                         + SourceASN, DestASN  (16 bits, mask 255.255)
                               Autonomus System Numbers for source
                               and destination networks.  These may
                               be "Origin" or "Peer" ASNs; you must
                               specify which when you start flow export
                               from the router.
                         + SourcePrefix, DestPrefix  (8 bits, mask 255)
                               Mask length for source and destination
                               IP addresses (i.e. SourcePeerAddress
                               and DestPeerAddress).

                 Changes in downloading rules:
                       + A hashed search is used when translating
                         rulesets.  This should speed up the
                         translation process by a factor of 10x to
                         20x (NeMaC).

                       + Rules are now downloaded 10 at a time.
                         This dramatically reduces the time taken
                         to download rulesets (NeMaC).

                       + A meter bug which prevented downloading of
                         rulesets with more than 32767 rules has been
                         fixed (NeTraMet).

                 Changes to NeTraMet:
                       + When grabbing the value of an attribute from
                         a packet header, NeTraMet didn't check that
                         enough bytes were read.  This could have
                         caused problems with TCP packets with lots
                         of IP options.

                         NeTraMet now checks the data is there before
                         grabbing values from it.  If it's not, zero
                         is used instead.

                 Changes to NeMaC:
                       + When NeMaC is shut down gracefully (by a
                         SIGTERM or SIGINT signal) it now shuts down
                         the tasks it is running on all its meters.
                         It used to leave them running, which matched
                         what happened with v3 meters and managers.

                       + #EndData record added at end of every sample
                         in flow data files.  This allows real-time
                         processing of flow data - without this one
                         had to wait until the next sample started.

                       + The Unix SIGUSR1 signal is used as to
                         indicate that NeMaC should start a new flow
                         data file.  This provides an alternative to
                         using a 'flag' file to do this.

                       + The Unix SIGUSR2 signal is used to switch
                         testing on and off.

                       + New command line option:
                         -Y logname  tells NeMaC to send log messages
                                     messages to syslog.

                         Specifying -L logname writes the log to the
                         file 'logname'.  Specifying -Y logname writes
                         log messages to syslog, with 'logname' as the
                         identifying  program name within syslog.
                         You may specify both -Y and -L; this writes
                         the messages to both places.

                         If no logging is specified, the log will be
                         written to a NeMaC.log.nnn file, as usual.

                         If you wish to use the -Y option, you must
                         modify the Makefile (probably
                         autoconf\manager\Makefile.in)
                         to define the variable LOG_LOCAL.

                       + Changed behaviour when a meter fails to
                         respond to NeMaC's attempt to start it. NeMaC
                         used to ignore such meters; now it polls them
                         and will download rules when they restart.

                       + Fewer messages for 'normal' running.  Set
                         the 'verbose' option (-v) if you still wish
                         to see messages like 'xxx rules downloaded'

                       + Fixed 'file handle leak' bug, which used to
                         cause NeMaC to crash after many attempts to
                         contact a non-responding meter.



v4.1    24 Nov 97       Production release 4.1
                       * Documentation files are now in PDF format on
                         the NeTraMet home page, i.e.
                         http://www.auckland.ac.nz/net/Accounting

                       * The PC executable files have been separated
                         out from the 'distribution' file.  They're
                         in the file ntm41-pc.zip.

v4.1b15 22 Sep 97
                       * Use WORDS_BIGENDIAN and SIZEOF_LONG
                         defines to implement native Alpha code
                         for get and put of 64bit counters.
                         Use autoconfig to build this if you want
                         to try it (see below).

v4.1b14  9 Sep 97
                       * Fix 'endian' bug in nmc_c64.c (which
                         produced impossibly big counts in flow data
                         files when running NeMaC on linux).

                         These changes were implemented using the
                         WORDS_BIGENDIAN define in autoconfigure.
                         The recommended method of building NeTraMet
                         is to use autoconfig; see the INSTALL file
                         in the autoconf/ directory.

                       * Fix ASN1 OID encoding bug.  Symptoms were
                         that the NeTraMet meter would run normally
                         for about 30 days, then start sending back
                         flow data packages for flows which hadn't
                         been active.

                       * Change PC meter to initialise uptime counter
                         before starting packet drivers.

v4.1b13 17 Jul 97
                       * Owner names for NeMaC, nm_rc and nifty
                         A new parameter, the 'owner name'  has been
                         added for these programs.  It is an
                         alphameric identifier, up to 16 chars long.
                         The owner name is used to identify rulesets,
                         manager tasks and meter readers in the
                         meter control tables; this is neccessary
                         when the meter is running more than one rule
                         set.  The owner name follows the write
                         community name on the command line or
                         config file line.

                       * #Ruleset records in flow data files:
                         RuleSet numbers in flow data file records
                         no longer refer directly to the SET number
                         as they did in v3.  Instead they refer to
                         a ruleset's row in the meter RuleInfo Table.
                         The flow data file includes a new # record
                         to indicate the SET number for RuleInfo
                         rows.  Their format is as follows:

                           #Ruleset: x setname rfname owner

                         x       is the RuleSet number, as it
                                   appears in the flow data records
                         setname is the name from the SET statement
                               (for v3 AND V4.1 this is an integer)
                         rfname  is the name of the rule file
                         owner   is the owner name for this ruleset


v4.1b10 30 Jun 97
                       * New manager option:

                         -E nn   Specifies the timeout (in seconds)
                                 for rEeader rows.  If collections
                                 stop (e.g. because a manager has
                                 failed), the meter will delete the
                                 row after this time.  The default
                                 is 0, i.e. the row will never time
                                 out.

                       * Change to manager option:

                         -h pp   Specifies HighWaterMark for a manager
                                 task.  In v3 the meter default was
                                 65 (percent).  In v4.1 the default
                                 is 0 (no test for high water).

                       * MatchingStoD attribute:
                         The attribute 'matchingStoD' is set by the
                         Packet Matching Engine.  Its value is 1 if
                         the packet is being matched with its address
                         attributes in 'StoD' order, (i.e. as they
                         appear 'on the wire'), and 0 if the packet is
                         being matched with its addresses swapped.
                         See RFC 2063 for a detailed description of
                         packet matching.

                       * NeMaC keywords:
                         'nomatch' is now a synonym for 'retry.'
                         This name was discussed at the Montreal RTFM
                         WG session, and is used in the ruleset examples
                         given in RFC 2123, "Experiences with NeTraMet."


v4.1b4 22 May 97  SNMPv2, 32-bit PC meter
                       * NeTraMet and its manager/readers (NeMaC,
                         nm_rc, nm_st and nifty) all use SNMPv2
                         instead of SNMPv1.  They now implement the
                         Meter MIB of RFC2064 (and the newer RTFM
                         Internet Draft which updates it).

                         The most significant effects of this are:
                           v4 meters can run multiple rulesets
                              simultaneously, and
                           64-bit counters are used for packet
                              and byte counters.

                       * v4 managers will work properly with v3
                         meters.  v3 managers, however, will NOT
                         work with v4 meters.  To change to using
                         v4 you should change your managers first,
                         then your meters.

                       * There are two changes to the format of
                         flow data file records:
                           Dates now use four digits for the year
                             (1997 instead of 97)
                           The integer values used for PeerTypes
                             have changed.  You should not be
                             affected by this unless you have
                             analysis applications which use
                             PeerTypes to distinguish flows.

                       * The 32-bit version of the PC meter uses
                         all available memory.  16 MB of memory should
                         allow it to handle a table of 100,000 flows
                         or more.

                         The readme.txt file in the ntm41-b4.zip
                         file gives detailed setup instructions.

                 New options in Meters (PC and Unix):

                         -m pp  specifies the IP port number to
                                use for SNMP.  Default is 161

                         -l     specifies that meter should use
                                the length field from IP headers
                                for the number of bytes in IP
                                packets.  Default is to use the
                                MAC (hardware) packet size.



v3.5   6 Sep 96   Multiple ethernets for the PC meter:
                       * The PC meter (netramet.exe) can now handle
                         up to four interfaces.  New command line
                         options allow you to specify the interfaces,
                         as follows  ..

                         -i nn  specifies that the packet driver
                                using software interface nn (decimal)
                                is to be metered.
                                e.g. -i96 would meter interrupt 0x60

                         -h nn  as above, except that if you have a
                                packet driver which implements the
                                'high-performance' driver specification,
                                NeTraMet will take advantage of it.

                         -I nn  as above, except that no metering will
                                be performed on this interface, instead
                                it will be used only for IP packets
                                to or from the meter.

                         If no interface is specified as 'IP only,'
                         the first interface appearing as a -i or
                         -h option will be used as the meter's IP
                         interface.

v3.4   8 Aug 96   nifty: an X/Motif 'flow analyser' program
                       * Presented to RTFM WG at the Montreal IETF
                         as 'NetFlow,' renamed to avoid confusion
                         with Cisco's 'Net Flow Switching.'

                 Changes to NeTraMet:
                       * NeTraMet can monitor up to four interfaces
                         instead of only one.  Specify this with
                         a -i option for each one, e.g.
                            NeTraMet -inf0 -ile0 -wPASSWORD
                       * Meter performance statistics have been
                         implemented for the Unix meter. In
                         particular, aps and mps give average
                         and maximum packets per second, while
                         api and mpi give average and minimum
                         processor idle time percentage for
                         one-second intervals.
                       * NeTraMet has been restructured so as to
                         simplify the code for packet matching.

                 Make files for aix added.
                       * libpcap (current version) isn't implemented
                         for aix, so you can't (yet) build an aix
                         meter.  NeMac, nifty, etc work properly.

                 Known problems:
                       * If you start NeMaC with write access to a
                         meter, and NeMaC is already running on the
                         same host with write access to the same meter,
                         the meter gets confused.  In this situation
                         neither copy of NeMaC manages to read sensible
                         flow data from the meter.
                         Detour: before you start NeMaC, make sure it
                           isn't already running.
                         Cure: this will be addressed in version 4.1.
                           4.1. will implement the updated meter MIB
                           as set out in the current Internet Draft.

                 Bug fixes:
                       * Time for next collection have already
                         passed, e.g. because of network transit
                         delays in collecting flow data from many
                         meters.  NeMaC will not attempts to make
                         such 'missed' collections.
                       * NeMaC now displays (and logs) the meter
                         name correctly when it fails to establish
                         contact when starting a meter, and when it
                         looses or regains contact with a running
                         meter.
                       * NeMaC could create invalid flow data files
                         if it failed to start a meter properly, or
                         if an active flow data file was deleted.
                         This has been corrected.

V3.3    8 Nov 95  nm_rc: a remote console for NeTraMet
                       * nm_rc (in the /manager/ directory) combines
                            NeMaC and fd_filter to provide a simple
                            display of 'live' flow data from a single
                            meter sorted into traffic order, busiest
                            flows first.  (Briefly described in
                            doc/NeTraMet/rc-man.txt; a 'proper'
                            manual will be ready real soon now).

                 New example rule files (in examples/ directory)
                       * rules.two-adj-routers:  Meters traffic through
                            and between two routers, specified by their
                            adjacent (Ethernet) addresses.
                       * rules.two-ip-groups:  Meters traffic through
                            and between two groups of IP networks,
                            specified in a subroutine by their peer
                            (IP) network numbers.
                       * rules.rc.pr+bc:  Classifies traffic by protocol,
                            and looks at Ethernet broadcast packets in
                            detail.
                       * rules.rc.ports:  Classifies IP, IPX and
                            EtherTalk traffic by port.
                       * rules.rc.ip:     Classifies IP traffic by IP
                            address and port.
                       * rules.rc.ipx:    Classifies IPX traffic by IPX
                            address and port.

                 New options for NeMaC:
                       * -x    Don't write anything to the meter.
                            Use this if you use a second copy of NeMaC
                            (or nm_rc) to collect from a single meter.
                            Allowing two collectors to write allows
                            meter to recover flows after they've been
                            collected by only one of the two meters.
                       * -P    For each collection flow data files will
                            be opened, flow data appended to them,
                            then they will be closed.  If you move or
                            rename a closed data file a new one (with
                            the old name) will be created by the next
                            collection.  This is an alternative to using
                            the old 'flag file' method.
                       * -p    Open-append-close to NeMaC's log file as
                            well as to flow data files. Superset of -P
                       * -F name  Specifies name of flow data file.
                       * -L name  Specifies name of NeMaC log file.
                       * -c 0  Tells NeMaC to download rule file(s) to
                            the meter, then exit without collecting
                            and flow data.
                       * default values in NeMaC configuration file.
                            Since NeMaC command-line parameters can
                            displayed by any user via the Unix ps
                            command, you should specify write community
                            names in a configuration file.  Each record
                            in a configuration file specifies meter
                            parameters which override the default values
                            or the ones specified on the NeMaC command
                            line.  NeMaC now uses the meter name 'default'
                            to indicate that this record contains default
                            values for following records.  For example ..
                              ./NeMaC -f nm-config
                            tells NeMaC to read the file 'config,' which
                            contains the following records ..
                              -c900 -p -rrules.mynet  default
                                        meter1 write-1
                                        meter2 write-2
                              -c300     meter3 write-3
                            This starts three meters; all run rules.mynet,
                            and append to their flow data files.  meter3
                            is collected every 5 minutes, meter1 and meter2
                            are collected every 15 minutes.

                 Changes to NeTraMet options:
                       * PC & Unix meter: Option settings ..
                            Options no longer need spaces to separate
                            them from their arguments, e.g. -ile0
                       * PC & Unix meter: Read Communities ..
                            Only one read community can be specified.

                 Bug fixes:
                       * PC meter: -r option (to specify read community)
                            crashed meter.
                       * Solaris meter: FDDI interface didn't work.
                            pcap-dlpi.c didn't bind the dlpi stream
                            correctly.  Fixed by new version of
                            pcap-dlpi.c from lbl (included in src/meter)
                       * Unix meter: pcap socket open didn't specify
                            a timeout; 250ms now specified.  This prevents
                            Solaris from busy-waiting; allowing NeTraMet
                            to be run as a backround process.
                       * Linux meter: alters the timeout value of a
                            select() statement (this is a BSD feature).
                            Timeout value now reset to 250ms after each
                            select(); this prevents linux from
                            busy-waiting, allowing NeTraMet to be run
                            as a background process.

       8 Sep 95  Bug fixes as follows:
                       * snmplib/asn1.c changed to get integers correctly
                            out of SNMP packets.  Now works correctly
                            for OSF/1.
                       * PC meter: small memory model memcpy used to copy
                            strings from far memory.  Now uses qmove.
                            This caused snmp network managers to get
                            garbage when GETting addresses from the flow
                            table.
                       * Bug in meter/met_vars overwrote part of the
                            SNMP object tables when responding to a
                            request for a non-existent MIB object.  This
                            showed up as 'meter looses rule table when
                            a network manager such as OpenView probed
                            a meter's MIB.
                       * Ultrix Makefiles corrected.  These can now be
                            used to build meter and manager for DEC OSF/1.

       4 Jul 95  New options for NeMaC:
                       * -a sss  Collections will be made with a time lag
                            of sss seconds.  For example, 10-minute
                            collections with 30-second time lag will occur
                            at 1000'30, 1010'30, etc.
                       * -w nnn  Specifies doWnload level.  nnn=0 (the
                            default) downloads rules on collector startup
                            and after a meter restart.  nnn=1 downloads only
                            after a meter restart, and nnn=2 never downloads.
                 Bug Fixes:
                       * PC NeTraMet returned bad string for interface name.
                            NeTraMet fixed to return 'eth0,' NeMaC modified
                            to check the string, and use 'eth0' instead of
                            a bad string (from an old meter).

V3.2    8 Jun 95  NeTraMet meter reworked to use libcap to get packet headers:
                       * libpcap:
                         - libpcap is a generalised packet interface written
                           by Steve McCanne, Craig Leres and Van Jacobson
                           as part of tcpdump.
                         - libpcap is available from
                              ftp://ftp.ee.lbl.gov/libpcap-*.tar.Z
                         - to make NeTraMet you must first install it on
                           your Unix system so as to produce libpcap.a
                           The make files in the NeTraMet distribution
                           assume you have copied libpcap into the
                           same subdirectory as the Makefile.
                         - binary distribution files are provided for
                           linux (version 1.2.1) and Irix (5.2),
                           as well as Solaris (2.4) and SunOS (4.1.4).
                         - libpcap supports FDDI interfaces as well as
                           ethernet.  This is still being tested (8 Jun 95).
                       * -i option has been implemented in NeTraMet.
                           This tells NeTraMet which interface to monitor.
                           For example, -i le0  will monitor the le0
                           interace.  The interface name is displayed on
                           the NeTraMet console, and appears in the ##
                           header line of the flow data file.  If you
                           don't specify an interface libpcap will
                           use its default one.  The PC version of
                           NeTraMet doesn't allow you to specify the
                           interface name.
                       * 'other' packet handling has been extended.
                          'Other' packets set the SourcePeerAddress to
                          the packet's ether_type and the DestPeerAddress
                          to the packet's LSAP.  This allows you to use
                          NeTraMet to find out what packet types are
                          active on your network.
                       * All the source code (including the CMU SNMP
                         library) has been tidied up so as to remove
                         most of the compiler warning messages.  This
                         should make it easier to port to new systems.
                  Bug fixes:
                       * PC pointer problems cause PC Netramet to crash
                         at random times (from seconds to days).  Finding
                         more places which should use 'huge' pointers
                         instead of 'far' pointers seems to have cleared
                         (or at least reduced) this problem.
                       * PC string compare routine error.  Waterloo TCP's
                         qcmp routine compares two far pointers (same as
                         Unix memcmp).  Implementation bug meant that strings
                         which were same length and differed only in the last
                         byte were reported as being the same.  The effect
                         of this was masked because NeTraMet uses a hash
                         search of the flow table.
                       * NeTraMet crashed when it received an SNMP get
                         request for a MIB-1 objects which it didn't know
                         about.  NeTraMet implements nearly all of the
                         Accounting Meter MIB objects, but only a few MIB-1
                         objects.  The SNMP routines in met_vars.c have
                         been improved so as to give  a 'no such OID'
                         response (and keep running).
                       * NeMaC didn't handle end-of-file properly for
                         its configuration file.  This has been
                         corrected.

V3.1   16 Feb 95  New version using IANA-allocated MIB OID (mib-2 40):
                       * Rewritten and simplified MIB means that earlier
                         meters won't run with 3.1 NeMaC, and 3.1 meters
                         won't run with earlier NeMaCs.  i.e. both meter
                         and manager must move to 3.1 together.
                       * Extended and simplified rule matching.  Jumps
                         can be to the test or action part of the target
                         rule.  Attribute values can be pushed from the
                         packet (as well as from a rule), hence aggregate
                         and tally flows are no longer needed.  The
                         action table was only needed to support aggregate
                         and tally flows: it is no longer needed.
                       * Six new uesr-settable attributes are implemented.
                         SourceClass, DestClass, FlowClass and SourceKind,
                         DestKind, FlowKind allow a meter to pass information
                         gleaned during packet matching back to the flow
                         data file.
                       * NeMaC allows you to INCLUDE rule files into
                         other rule files.
                       * Emergency rule sets are implemented.  The meter
                         will switch to its emergency rule set if the % of
                         active flows gets greater than HighWaterMark.
                       * Collection times are synchronised by default, i.e.
                         they happen at multiples of the collection interval.
                         For example 15-min collections are made at 0, 15,
                         30 and 45 minutes past the hour.
                  Bug fixes:
                       * Rule tables with more than 1350 rules now work
                         properly on the PC meter.  This was a situation
                         where 'huge' pointers were required to reliably
                         access all of the rule table.
                       * IP fragment packets other than the first fragment
                         of a PDU produced garbage transport addresses (IP
                         port numbers).  They now produce 0.  The Accounting
                         Model defines attributes for each protocol, and
                         doesn't allow one to distinguish a 'first fragment'
                         from an unfragmented IP packet.
                       * A mistake in the code for optimised testing of
                         a group of rules could sometimes cause packet
                         matches to succeed when they should not.  This
                         has been corrected.
                  Notes:
                       * Rule files will need to be converted from the
                         old (version 2.x) form to the new one.  The
                         changes are straightforward, and are documented
                         in the file Converting.rules.ps

V2.3   25 Nov 94  Fourth full release, new features as follows:
                       * NeMaC now uses the names of flow attributes
                         as they appear in the meter MIB, i.e. TRANS
                         is used instead of DETAIL.  NeMaC does this
                         by allowing DETAIL to be a synonym for TRANS.
                         Old rule files will still work properly, but
                         new rule files should use TRANS.
                       * Gopher (port 70) and WWW (port 80, i.e. html)
                         have been added to NeMaC's list of IP port numbers.
                       * If NeMaC notices that a meter has been restarted,
                         i.e. it's sysUptime has jumped backwards, NeMaC
                         will automatically download its specified rule
                         file.  The check is made before each flow data
                         collection (intervals set by the -c option), and
                         at every 'keepalive' interval (set by the -k
                         option.  This feature can be used to minimise the
                         amount of flow data lost by a meter after a
                         power-fail restart.
                       * NeMaC now allows different collection and keepalive
                         intervals for each meter.  This is implmented by
                         allowing the -c and -k options to appear in NeMaC's
                         configuration file, and using an event queue
                         (instead of a simple idle loop) to order meter
                         activities.
                       * A mechanism for closing and reopening flow data
                         files has been implemented.  NeMaC tests for a
                         file called NeMaC.flag.  If it finds the flag
                         file it will close and reopen all its current
                         flow data files.  A new section has been added
                         to the manual explaining how to use this feature.
                  Bug fixes:
                       * Various bugs in NeMaC's parsing of rule
                         files have been corrected.
                       * Bugs in fd_filter and fd_extract have been
                         corrected; they will now work as documented!
                  Notes:
                       * NeTraMet memory management has been improved.
                         'Active flows' is now used instead of 'flows
                         in use' for controlling garbage collection.
                         The garbage collector is called if a new flow
                         is needed and the are no free flows.

V2.2   19 Jul 94  Third full release, new features as follows:
                       * fd_filter and fd_extract included in
                         manager directories as utility programs
                         for flow data files.  Documented in
                         fd_util.ps file.
                       * Port of both NeTraMet and NeMaC for Solaris,
                         using streams/dlpi instead of nit to watch
                         ethernet interface.
                       * Binaries for Solaris and Sunos available
                         via anonymous ftp.
                       * Make files for HPUX and linux added.
                         NeMaC has been ported to HPUX and linux.
                       * SamplingRate MIB variable implemented; allows
                         only 1 of every n packets to be processed.
                       * All four Novell IPX encapsulations now
                         recognised.
                  Bug fixes:
                       * PC NeTraMet now counts packets sent as well
                         as packets received.
                  Notes:
                       * NeMaC now gives sensible error messages if
                         it can't write meter variables.  If NeMaC
                         only has read access (i.e. it was given the
                         read snmp community name instead of the write
                         one) it can still collect data, but such
                         collections will not be recorded by the meter,
                         and therefore be noticed by the meter's
                         garbage collector.
                       * Solaris 2.3 dlpi bug corrupts some packet
                         headers.  Only affects CLNS handling by
                         Solaris version of NeTraMet.  This is fixed
                         in Solaris 2.4 - see the ether_pc.c file
                         for details.

V2.1   14 Jan 94  Second full release, new features as follows:
                       * Subroutines in rule tables implemented,
                         making it much easier to write rules to
                         handle large numbers of networks.
                       * Labels implemented for rules and actions,
                         i.e. no need to keep track of rule and
                         action numbers by hand.
                       * CLNS protocol now understood by NeTraMet
                       * Packets for protocols not understood by
                         NeTraMet can be counted as PeerType 'Other'.
                       * Ethernet II and SNAP encapsulations for IPX
                         now recognised (as well as 'Raw 802.2').
                       * Full (10-byte) IPX addresses can be used
                         instead of just (4-byte) net numbers.
                       * Make files for Ultrix added.  NeMaC has been
                         ported to Ultrix.
                  Bug fixes:
                       * MIB environment variable changed to MIBTXT to
                         match the documentation (was MIBFILE).
                  Notes:
                       * Make files changed to allow compilation with
                         Gnu C compiler, either by specifying gcc in
                         the make file, or by 'setenv CC gcc'.
                       * Documentation points out that NeTraMet write
                         community must have different name to read
                         communities, and that NeMaC must specify the
                         NeTraMet write community name.

      28 Oct 93   New: NeMaC only displays 'Rule/Action added' message
                       every tenth rule/action.

      22 Oct 93   Bug: NeMaC couldn't handle rule table with >255 rules.

V2.0   20 Oct 93   First full release of NeTraMet and NeMaC, with NeTraMet
                       Manual and full source code.

V1.0      Nov 92   Prototype meter using height-balanced trees instead of
                  rule table.  Presented at Washington IETF.

=======
NeTraMet Version History
========================

v4.4b6  22 Feb 00       Change to using autoconf Configuration
                       Header File.  The ntm_conf.h file (in the
                       base directory) is now included by all the
                       source programs.  It contains all the options
                       detetected by autoconfigure, together with
                       some defines giving NeTraMet's version number.
                       One advantage of this is that there is a lot
                       less text displayind while Making Netramet.

                       When NeMaC is shut down gracefully (by a
                       SIGTERM or SIGINT) it will now collect the
                       flow data gathered since the last collection
                       for all the meters it is controlling.
                          [This change was suggested by
                           Robert Strycharczuk, 10 Feb 00]

                       NeTraMet (on Unix and Cygwin32) has been
                       extended so as to handle PPP interfaces.
                       PPP flows are assumed to be IPv4 (the most
                       likely possibility), they have AdjacentType
                       AT_PPP (i.e. 23) and AdjacentAddresses 0.
                          [This change was suggested by
                           Gerald Richter, 10 Dec 99]

                       When displaying domain names instead of IP
                       addresses, nifty may have to wait a long time
                       for the DNS response.  It now displays a
                       'cross-hair' cursor while waiting on DNS.

                       nifty.srl has been modified to plots diamonds
                       instead of pluses for multicast flows.

                       Port NeTraMet to MS Windows, using the Cygwin32
                       environment and WinDump's BPF drivers
                       - ported libpcap to cygnus+windump
                       - changes to meter_ux for CYGWIN32 (can't
                         assume that pcap files work with select)
                       - changes to snmpapi.c and snmpclnt.c
                         (Cygwin32 doesn't have `timerset' defines)


>>>>>>> 1.1.1.2.2.4
v4.4b5  12 Jan 00       Allow fd_filter to have character constants
                       in tag specifications, e.g. DestKind = 'F';

                       Fix bugs relating to ASNs looked up using
                       OCX_BGP (i.e. in a bgp.txt file).  These were
                       - Lookup wasn't being done if DestASN was
                         saved but not SourceASN
                       - S/D ASN attributes weren't being set to zero
                         if the IP Address lookup failed (i.e. when
                         we couldn't find its ASN).

                       Correct Makefile.in files to set GF variable
                       (it was $GF by mistake).

v4.4b4  16 Nov 99       Update mib.txt to use RFC2720 version.

                       Add support for NetBSD on Alpha:
                       * Use XtPointer in nifty source, cast
                         to IntFromPtr when values are used
                       * Set __unix__ = !defined(DOS)
                         in btypes/types.h
                       * Use POINTER_DATATYPE instead of Bit32 for
                         subnet pointer arithmetic in integrat/subnetd.h
                       * Cast bytes to counter64 in getcounter64()
                         in manager/nmc_snmp.c
                       * Recognise NetBSD in configure.in
                       * Change source to use !defined(DOS)
                         instead of defined(__unix__)

v4.3    30 Sep 99
                       Added a GFLAG variable to the configure.in
                       script and the Makefiles.  By default this
                       is null.  Set it to -g to build executeables
                       which have symbolic information for debugging.

                       Replaced mib/mib.txt with a new version, using
                       the 'Proposed Standard' RTFM Meter MIB.

                       Added config support for Alpha (Tru64 Unix) systems.
                       This corrects several bugs introduced since 4.2;
                       they only showed up on a 64-bit machine.
                       * The Tru64 C compiler is much more 'picky' than gcc!
                         Cleaned up the source so as to get rid of
                         warning messages
                       * Change snmp library so as to use Int32 for
                         ASN.1 INTEGERs and Bit32 for TIMESTAMPs.
                         The original CMU code used 'unsigned long'
                         for both. Made corresponding changes to
                         the meter and manager programs.

                       NeTraMet and NeMaC as daemons: -D option
                       * NeMaC
                         ./NeMaC -D  runs NeMaC in its own Unix session
                       * NeTraMet
                         ./NeTraMet -D   and ./NetFlowMet -D
                         runs the Unix and NetFlow meters in their own
                         Unix session.  Before doing so it disables
                         the screen and keyboard, so -k -s are implied
                         by -D.
                       CAUTION: -d turns on diagnostic dumps of the
                       SNMP packets.  Don't set this by mistake for -D!

                       Implemented command-line defines for srl.
                       For example
                         ./srl -DW=16 "-Dext = DestPeerAddress/24" xxx.srl
                       defines w to be 16, and EXT to be DestPeerAddress/24.
                       Note the quotes around the second define; they are
                       required if the define text contains blanks.

                       Modified NeMaC ruleset parser to skip dots and
                       digits at the end of addresses.  This allows it
                       to download rulesets produced by an srl compiler
                       compiled with the V6 option set even if NeMaC
                       was compiled with the V6 option not set.

v4.3b10 26 May 99
                       Support for IPv6
                       * Controlled by V6 option in the source files.
                         To enable this:
                         a) If you run autoconf to build the Makefiles
                               change AC_DEFINE(V6, 0)
                               to     AC_DEFINE(V6, 1)
                            before running autoconf
                         b) Otherwise, in the configure script
                               change #define V6 0
                               to     #define V6 1
                            before running ./configure

                       * The SRL compiler allows V6 addresses, as
                         specified in RFC 2373.  Although v6 addresses
                         have a fairly simple form, it's easy to get
                         it wrong.  The compiler tries very hard to
                         produce helpful error messages for them.

                       * The NeTraMet meter handles v6 packets,
                         returning them to the manager with
                             SourcePeerType = IPv6
                         (IP and IPv4 are synonyms for IP version 4)

                       * The managers (NeMaC, nm_rc and nifty)
                         display IPv6 addresses as per RFC 2373.

                       * fd_util and fd_extract handle IPv6
                         addresses properly.

                       Other changes
                       * SRL compiler will allow redefinition of
                         'built-ins,' i.e. well-known ports, address
                         families and transport types.  A warning is
                         given telling the user what was declared.

                       * Lots of bugs fixed in SRL compiler handling
                         of syntax errors.  These either crashed the
                         compiler or sent it into infinite loops
                         while reading the source program.

v4.3b9  16 Feb 99
                       * The distribution file now has TCP_ATR set
                         by default, so that the TCP-based attributes
                         are available for use.  So as to minimise the
                         meter default memory requirements, several
                         new memory-allocation command-line options
                         have been implemented.  The complete set of
                         these is now:

                           -f fff   Max of fff flows
                           -u rrr   Max of rrr rules

                           -b bbb   Max of bbb TCP flows      <<< NEW
                           -t ttt   Max of ttt TCP streams    <<< NEW

                           -v ddd   Max of ddd distributions  <<< NEW
                           -e eee   Max of eee distrib events <<< NEW

                       * Implement ASN lookup in NeTraMet meter.
                         This uses Joel Apisdorf's bgp code from
                         OCxMON.  The src/meter Makefile contains
                         variable USE_OCX_BGP, which is commented
                         out by default.  Uncomment it, and make
                         will include ASN lookup in the meter.
                         To use it:
                          a) Set the environment variable DEFAULT_AS
                               (I set it to my own AS number)
                          b) The meter starts up by reading a file,
                               bgp.txt.  You can create this file
                               for your own network using SHOW IP BGP
                               on a Cisco router.  NOTE: a full bgp
                               routing table will take 5 to 10 MB of
                               memory space on the meter.
                          c) By default the meter looks up 'next-hop'
                               ASNs, i.e. the ASN the router would
                               send packets to.  The command-line
                               option -o will look up 'owner' ASNs
                               instead.

v4.3b8   4 Feb 99
                       * Implement distribution-valued attributes
                         in fd_filter

                       * Fix memory management problems for TCP
                         subflows in meter.  Implement TCP-related
                         distribution attributes in meter, NeMaC,
                         fd_filter and srl.

v4.3b7   8 Jan 99
                       * Implement TCPdata attribute in fd_filter

                       * Fix NEW_ATR vs TCP_ATR bugs in meter_ux.c
                         and nf_fwd.c

v4.3b6  23 Dec 98
                       * Fix bugs concerned with intermixing
                         of NEW_ATR and TCP_ATR

v4.3b5  26 Nov 98
                       * Fix bug in SRL compiler, which wasn't
                         distinguishing between
                             save sourcetransaddress;
                         and
                             save sourcetransaddress = 0;

v4.3b4  25 Nov 98
                       * Fix endian problems in netFlowMet,
                         reported by Kevin Hoadley.

v4.3b3  16 Nov 98
                       * Set up new CVS repository to make it
                         easier for co-developers to submit
                         code changes / suggestions.

v4.3b2  12 Nov 98
                       * Aufoconfigure changed to test for Motif,
                         since nifty requires Motif as well as X.

                       * Support for FreeBSD: changed source files
                         so as not to include malloc.h on systems
                         which don't have it!

                       * Documentation error for NeMaC.  Command
                         line option -P specifies open-append-close
                         behaviour for the >>log<< files only.
                         It was previously documented (see below)
                         as doing this for flow data files only.

v4.3b1  23 Oct 98       Changes contributed by Nicolai Guba (BT Labs) ..
                       * Command-line help is dispayed if no options
                         are specified for
                           NeMaC, nm_rc
                           NeTraMet (Unix meters, not PC meters)
                           NetFlowMet

                       * -b mmm   command-line option
                         Tells NeMaC and nm_rc to read the mib from
                         file mmm.

                       * The NeTraMet distribtion file, and the way
                         you install NeTraMet on a host has been
                         changed to make it more like the GNU programs.

                         The executable files are no longer in
                         separate directories.  Instead (by default)
                         they are built in the src/ directories.

                         To install NeTraMet into directory xyz
                         you can simply
                           ./configure
                           make install

                       OCxMON meter improvements ..
                       The NeTraMet meter now allocates as much of
                       its memory as possible when it starts up, so
                       as to minimise allocation overhead.  Space for
                       rulesets is allocated at startup, with a default
                       maximum of 2000 rules total for all rulesets.

                       * New meter command-line option:
                            -u nnnn
                         allocates space for a maximum of nnnn rules

v4.2.2  16 Nov 98
                       * Correct bug in nmc.h (inconsistency
                         introduced when de-implementing 'detail'
                         as synonym for 'trans' in attribute names.
                         This caused NeMaC and friends to crash

v4.2.1   2 Oct 98       Patch release ..
                       * NeMaC crashed with Owner names longer than
                         six characters.  This was because SET_STRING
                         only ever allocated RULE_ADDR_LEN chars!

                       * SRL programs which start with an imperative
                         statement now start with a GotoAct, Next
                         rule.  Without this they don't work!

                       * fd_extract and fd_util now handle 64-bit
                         counter attributes (e.g. topdus) properly.
                         'Editorial' improvements have been made to
                         the fd_util manual.

                       * A memory leak has been fixed in the SNMP
                         snmpapi.c.  Error logging has been added
                         for snmp error/info/debug messages; these
                         now go through log_msg(), as used for
                         other NeMaC errors.

v4.2     5 Aug 98
                       * The distribution file has been changed so
                         that it no longer has subdirectories for
                         the various operating systems.  The best
                         way to install NeTraMet is to use autoconfig;
                         see the INSTALL file  in the autoconf/
                         directory.

                       * The 'os-specific' directories are no longer
                         included in the distribution file.  Users
                         must build the version they need using
                         configure in the autoconfig directory.

               SRL Compiler
                       * The program srl is an optimising compiler
                         for SRL, the Simple Ruleset Language.  SRL
                         is documented in an Internet Draft, available
                         from the NeTraMet and RTFM home page.

                           srl [options] source

                         compiles the file 'source', producing a rules
                         file ready to be used by NeMaC.  Source files
                         will normally end with .srl and rules files
                         with .rules.  For example

                           srl test-prog.srl

                         produces test-prog.rules.

                         Compiler options:

                         -l     List source program
                         -s     Syntax check only
                         -ann   'Assembler output' level N
                                nn=0, rules in numeric form only.
                                  nnn   Requires NeMaC v4.2.
                                nn=1, attributes and actions given
                                       as words.  This is the default.
                                nn=2, as for nn=1, but don't delete
                                       intermediate files.
                         -Onn   Optimisation level.
                                nn=0, no optimisation at all.
                                nn=1, peephole optimising to delete
                                      redundant rules from intermediate
                                      files.  This is the default.
                                nn=2, optimise tests by mask length
                                      within expressions (shortest
                                      masks first, after allowing for
                                      overlapping addresses/masks).
                                nn=3, as for nn=2, but optimise
                                      expression between if clauses
                                      and between statements.

                       * srl extends the language (as described in
                         the Internet Draft by adding a number of
                         extra statements:

                            include fffff ;

                         Will read all the text from file fffff.
                         includes may be nested (i.e. an include
                         file may include other files).  srl looks
                         for the file in the same directory as the
                         source file.

                            optimise nn ;
                            optimise * ;
                            optimise ;

                         Allows you to change the optimisation level
                         as required for different parts of your
                         program.  optimise ; resets the level to
                         the value specified on the command line.
                         optimise * ; is used to indicate breaks
                         between optimised expression groups .

                            set nn ;
                            format aaa .. aaa ;
                            statistics ;

                         These three statements are passed on (via
                         the output file) to NeMaC.  String constants
                         in a format (specifying separators in flow
                         data files) may include C-style constants
                         (introduced with a \).

                       * A collection of SRL programs is provided in
                         the examples/srl directory.

v4.2b5  11 Jun 98
                       * Fix bug in getting reader_name.  This
                         prevented NeMaC et al from reading any
                         flows from the meter!

                        * Use riFlowRecords instead of msNbrFlows for
                          ms->NbrFlows.  This means that nifty will
                          display only the total flow for its current
                          ruleset; it used to display the total
                          number of flows for all rulesets.

v4.2b4   3 Jun 98
                       * Use LastTime instead of sysUptime to get
                         meter time in NeMaC, nm_rc and nifty.

                       * Fix bugs in SNMP library which caused
                         early timeout of some SNMP packets.

v4.2b3  22 May 98
                       * Implement better hashing algorithm for
                         flow table and rulesets.  Multiplies bytes
                         of peer and trans addresses by small primes,
                         and uses larger primes as the size of the
                         various hash tables.

                       * Fix sundry bugs revealed in beta testing.

v4.2b2  11 May 98
                 NetFlowMet  (NeTraMet + NetFlow = NetFlowMet):
                       * A new version of the meter has been added
                         to the distribution.  This takes NetFlow
                         data from a Cisco Router (I've tested it
                         using a 7200) and uses this to build the
                         flow table.

                         To start NetFlow on a router (in brief):
                         - start NetFlow on each interface
                           [no] ip route-cache flow
                         - start exporting the NetFlow data
                           [no] ip flow-export <IP addr> <UDP port>
                         <IP addr> is  the address of your NetFLowMet
                         meter, <UDP port> is the port NetFlowMet
                         will use to recieve the data.

                         You may specify the udp port number by
                         using the
                           -i pppp
                         option on NetFlowMet's command line.
                         If no -i option appears, port 9996 is used.
                         You may specify up to four port numbers
                         by giving a list of -i options, e.g.
                           -i 12001 -i 12002 -i12003
                         would listen for NetFLow data on UDP ports
                         12001, 12002 and 12003.

                         NetFlowMet provides five new attributes
                         which can be used in rulesets:

                         + MeterId  (8 bits, mask 255)
                               Index in -i option list, e.g. port
                               12002 above would produce flows with
                               MeterID = 2.
                         + SourceASN, DestASN  (16 bits, mask 255.255)
                               Autonomus System Numbers for source
                               and destination networks.  These may
                               be "Origin" or "Peer" ASNs; you must
                               specify which when you start flow export
                               from the router.
                         + SourcePrefix, DestPrefix  (8 bits, mask 255)
                               Mask length for source and destination
                               IP addresses (i.e. SourcePeerAddress
                               and DestPeerAddress).

                 Changes in downloading rules:
                       + A hashed search is used when translating
                         rulesets.  This should speed up the
                         translation process by a factor of 10x to
                         20x (NeMaC).

                       + Rules are now downloaded 10 at a time.
                         This dramatically reduces the time taken
                         to download rulesets (NeMaC).

                       + A meter bug which prevented downloading of
                         rulesets with more than 32767 rules has been
                         fixed (NeTraMet).

                 Changes to NeTraMet:
                       + When grabbing the value of an attribute from
                         a packet header, NeTraMet didn't check that
                         enough bytes were read.  This could have
                         caused problems with TCP packets with lots
                         of IP options.

                         NeTraMet now checks the data is there before
                         grabbing values from it.  If it's not, zero
                         is used instead.

                 Changes to NeMaC:
                       + When NeMaC is shut down gracefully (by a
                         SIGTERM or SIGINT signal) it now shuts down
                         the tasks it is running on all its meters.
                         It used to leave them running, which matched
                         what happened with v3 meters and managers.

                       + #EndData record added at end of every sample
                         in flow data files.  This allows real-time
                         processing of flow data - without this one
                         had to wait until the next sample started.

                       + The Unix SIGUSR1 signal is used as to
                         indicate that NeMaC should start a new flow
                         data file.  This provides an alternative to
                         using a 'flag' file to do this.

                       + The Unix SIGUSR2 signal is used to switch
                         testing on and off.

                       + New command line option:
                         -Y logname  tells NeMaC to send log messages
                                     messages to syslog.

                         Specifying -L logname writes the log to the
                         file 'logname'.  Specifying -Y logname writes
                         log messages to syslog, with 'logname' as the
                         identifying  program name within syslog.
                         You may specify both -Y and -L; this writes
                         the messages to both places.

                         If no logging is specified, the log will be
                         written to a NeMaC.log.nnn file, as usual.

                         If you wish to use the -Y option, you must
                         modify the Makefile (probably
                         autoconf\manager\Makefile.in)
                         to define the variable LOG_LOCAL.

                       + Changed behaviour when a meter fails to
                         respond to NeMaC's attempt to start it. NeMaC
                         used to ignore such meters; now it polls them
                         and will download rules when they restart.

                       + Fewer messages for 'normal' running.  Set
                         the 'verbose' option (-v) if you still wish
                         to see messages like 'xxx rules downloaded'

                       + Fixed 'file handle leak' bug, which used to
                         cause NeMaC to crash after many attempts to
                         contact a non-responding meter.



v4.1    24 Nov 97       Production release 4.1
                       * Documentation files are now in PDF format on
                         the NeTraMet home page, i.e.
                         http://www.auckland.ac.nz/net/Accounting

                       * The PC executable files have been separated
                         out from the 'distribution' file.  They're
                         in the file ntm41-pc.zip.

v4.1b15 22 Sep 97
                       * Use WORDS_BIGENDIAN and SIZEOF_LONG
                         defines to implement native Alpha code
                         for get and put of 64bit counters.
                         Use autoconfig to build this if you want
                         to try it (see below).

v4.1b14  9 Sep 97
                       * Fix 'endian' bug in nmc_c64.c (which
                         produced impossibly big counts in flow data
                         files when running NeMaC on linux).

                         These changes were implemented using the
                         WORDS_BIGENDIAN define in autoconfigure.
                         The recommended method of building NeTraMet
                         is to use autoconfig; see the INSTALL file
                         in the autoconf/ directory.

                       * Fix ASN1 OID encoding bug.  Symptoms were
                         that the NeTraMet meter would run normally
                         for about 30 days, then start sending back
                         flow data packages for flows which hadn't
                         been active.

                       * Change PC meter to initialise uptime counter
                         before starting packet drivers.

v4.1b13 17 Jul 97
                       * Owner names for NeMaC, nm_rc and nifty
                         A new parameter, the 'owner name'  has been
                         added for these programs.  It is an
                         alphameric identifier, up to 16 chars long.
                         The owner name is used to identify rulesets,
                         manager tasks and meter readers in the
                         meter control tables; this is neccessary
                         when the meter is running more than one rule
                         set.  The owner name follows the write
                         community name on the command line or
                         config file line.

                       * #Ruleset records in flow data files:
                         RuleSet numbers in flow data file records
                         no longer refer directly to the SET number
                         as they did in v3.  Instead they refer to
                         a ruleset's row in the meter RuleInfo Table.
                         The flow data file includes a new # record
                         to indicate the SET number for RuleInfo
                         rows.  Their format is as follows:

                           #Ruleset: x setname rfname owner

                         x       is the RuleSet number, as it
                                   appears in the flow data records
                         setname is the name from the SET statement
                               (for v3 AND V4.1 this is an integer)
                         rfname  is the name of the rule file
                         owner   is the owner name for this ruleset


v4.1b10 30 Jun 97
                       * New manager option:

                         -E nn   Specifies the timeout (in seconds)
                                 for rEeader rows.  If collections
                                 stop (e.g. because a manager has
                                 failed), the meter will delete the
                                 row after this time.  The default
                                 is 0, i.e. the row will never time
                                 out.

                       * Change to manager option:

                         -h pp   Specifies HighWaterMark for a manager
                                 task.  In v3 the meter default was
                                 65 (percent).  In v4.1 the default
                                 is 0 (no test for high water).

                       * MatchingStoD attribute:
                         The attribute 'matchingStoD' is set by the
                         Packet Matching Engine.  Its value is 1 if
                         the packet is being matched with its address
                         attributes in 'StoD' order, (i.e. as they
                         appear 'on the wire'), and 0 if the packet is
                         being matched with its addresses swapped.
                         See RFC 2063 for a detailed description of
                         packet matching.

                       * NeMaC keywords:
                         'nomatch' is now a synonym for 'retry.'
                         This name was discussed at the Montreal RTFM
                         WG session, and is used in the ruleset examples
                         given in RFC 2123, "Experiences with NeTraMet."


v4.1b4 22 May 97  SNMPv2, 32-bit PC meter
                       * NeTraMet and its manager/readers (NeMaC,
                         nm_rc, nm_st and nifty) all use SNMPv2
                         instead of SNMPv1.  They now implement the
                         Meter MIB of RFC2064 (and the newer RTFM
                         Internet Draft which updates it).

                         The most significant effects of this are:
                           v4 meters can run multiple rulesets
                              simultaneously, and
                           64-bit counters are used for packet
                              and byte counters.

                       * v4 managers will work properly with v3
                         meters.  v3 managers, however, will NOT
                         work with v4 meters.  To change to using
                         v4 you should change your managers first,
                         then your meters.

                       * There are two changes to the format of
                         flow data file records:
                           Dates now use four digits for the year
                             (1997 instead of 97)
                           The integer values used for PeerTypes
                             have changed.  You should not be
                             affected by this unless you have
                             analysis applications which use
                             PeerTypes to distinguish flows.

                       * The 32-bit version of the PC meter uses
                         all available memory.  16 MB of memory should
                         allow it to handle a table of 100,000 flows
                         or more.

                         The readme.txt file in the ntm41-b4.zip
                         file gives detailed setup instructions.

                 New options in Meters (PC and Unix):

                         -m pp  specifies the IP port number to
                                use for SNMP.  Default is 161

                         -l     specifies that meter should use
                                the length field from IP headers
                                for the number of bytes in IP
                                packets.  Default is to use the
                                MAC (hardware) packet size.



v3.5   6 Sep 96   Multiple ethernets for the PC meter:
                       * The PC meter (netramet.exe) can now handle
                         up to four interfaces.  New command line
                         options allow you to specify the interfaces,
                         as follows  ..

                         -i nn  specifies that the packet driver
                                using software interface nn (decimal)
                                is to be metered.
                                e.g. -i96 would meter interrupt 0x60

                         -h nn  as above, except that if you have a
                                packet driver which implements the
                                'high-performance' driver specification,
                                NeTraMet will take advantage of it.

                         -I nn  as above, except that no metering will
                                be performed on this interface, instead
                                it will be used only for IP packets
                                to or from the meter.

                         If no interface is specified as 'IP only,'
                         the first interface appearing as a -i or
                         -h option will be used as the meter's IP
                         interface.

v3.4   8 Aug 96   nifty: an X/Motif 'flow analyser' program
                       * Presented to RTFM WG at the Montreal IETF
                         as 'NetFlow,' renamed to avoid confusion
                         with Cisco's 'Net Flow Switching.'

                 Changes to NeTraMet:
                       * NeTraMet can monitor up to four interfaces
                         instead of only one.  Specify this with
                         a -i option for each one, e.g.
                            NeTraMet -inf0 -ile0 -wPASSWORD
                       * Meter performance statistics have been
                         implemented for the Unix meter. In
                         particular, aps and mps give average
                         and maximum packets per second, while
                         api and mpi give average and minimum
                         processor idle time percentage for
                         one-second intervals.
                       * NeTraMet has been restructured so as to
                         simplify the code for packet matching.

                 Make files for aix added.
                       * libpcap (current version) isn't implemented
                         for aix, so you can't (yet) build an aix
                         meter.  NeMac, nifty, etc work properly.

                 Known problems:
                       * If you start NeMaC with write access to a
                         meter, and NeMaC is already running on the
                         same host with write access to the same meter,
                         the meter gets confused.  In this situation
                         neither copy of NeMaC manages to read sensible
                         flow data from the meter.
                         Detour: before you start NeMaC, make sure it
                           isn't already running.
                         Cure: this will be addressed in version 4.1.
                           4.1. will implement the updated meter MIB
                           as set out in the current Internet Draft.

                 Bug fixes:
                       * Time for next collection have already
                         passed, e.g. because of network transit
                         delays in collecting flow data from many
                         meters.  NeMaC will not attempts to make
                         such 'missed' collections.
                       * NeMaC now displays (and logs) the meter
                         name correctly when it fails to establish
                         contact when starting a meter, and when it
                         looses or regains contact with a running
                         meter.
                       * NeMaC could create invalid flow data files
                         if it failed to start a meter properly, or
                         if an active flow data file was deleted.
                         This has been corrected.

V3.3    8 Nov 95  nm_rc: a remote console for NeTraMet
                       * nm_rc (in the /manager/ directory) combines
                            NeMaC and fd_filter to provide a simple
                            display of 'live' flow data from a single
                            meter sorted into traffic order, busiest
                            flows first.  (Briefly described in
                            doc/NeTraMet/rc-man.txt; a 'proper'
                            manual will be ready real soon now).

                 New example rule files (in examples/ directory)
                       * rules.two-adj-routers:  Meters traffic through
                            and between two routers, specified by their
                            adjacent (Ethernet) addresses.
                       * rules.two-ip-groups:  Meters traffic through
                            and between two groups of IP networks,
                            specified in a subroutine by their peer
                            (IP) network numbers.
                       * rules.rc.pr+bc:  Classifies traffic by protocol,
                            and looks at Ethernet broadcast packets in
                            detail.
                       * rules.rc.ports:  Classifies IP, IPX and
                            EtherTalk traffic by port.
                       * rules.rc.ip:     Classifies IP traffic by IP
                            address and port.
                       * rules.rc.ipx:    Classifies IPX traffic by IPX
                            address and port.

                 New options for NeMaC:
                       * -x    Don't write anything to the meter.
                            Use this if you use a second copy of NeMaC
                            (or nm_rc) to collect from a single meter.
                            Allowing two collectors to write allows
                            meter to recover flows after they've been
                            collected by only one of the two meters.
                       * -P    For each collection flow data files will
                            be opened, flow data appended to them,
                            then they will be closed.  If you move or
                            rename a closed data file a new one (with
                            the old name) will be created by the next
                            collection.  This is an alternative to using
                            the old 'flag file' method.
                       * -p    Open-append-close to NeMaC's log file as
                            well as to flow data files. Superset of -P
                       * -F name  Specifies name of flow data file.
                       * -L name  Specifies name of NeMaC log file.
                       * -c 0  Tells NeMaC to download rule file(s) to
                            the meter, then exit without collecting
                            and flow data.
                       * default values in NeMaC configuration file.
                            Since NeMaC command-line parameters can
                            displayed by any user via the Unix ps
                            command, you should specify write community
                            names in a configuration file.  Each record
                            in a configuration file specifies meter
                            parameters which override the default values
                            or the ones specified on the NeMaC command
                            line.  NeMaC now uses the meter name 'default'
                            to indicate that this record contains default
                            values for following records.  For example ..
                              ./NeMaC -f nm-config
                            tells NeMaC to read the file 'config,' which
                            contains the following records ..
                              -c900 -p -rrules.mynet  default
                                        meter1 write-1
                                        meter2 write-2
                              -c300     meter3 write-3
                            This starts three meters; all run rules.mynet,
                            and append to their flow data files.  meter3
                            is collected every 5 minutes, meter1 and meter2
                            are collected every 15 minutes.

                 Changes to NeTraMet options:
                       * PC & Unix meter: Option settings ..
                            Options no longer need spaces to separate
                            them from their arguments, e.g. -ile0
                       * PC & Unix meter: Read Communities ..
                            Only one read community can be specified.

                 Bug fixes:
                       * PC meter: -r option (to specify read community)
                            crashed meter.
                       * Solaris meter: FDDI interface didn't work.
                            pcap-dlpi.c didn't bind the dlpi stream
                            correctly.  Fixed by new version of
                            pcap-dlpi.c from lbl (included in src/meter)
                       * Unix meter: pcap socket open didn't specify
                            a timeout; 250ms now specified.  This prevents
                            Solaris from busy-waiting; allowing NeTraMet
                            to be run as a backround process.
                       * Linux meter: alters the timeout value of a
                            select() statement (this is a BSD feature).
                            Timeout value now reset to 250ms after each
                            select(); this prevents linux from
                            busy-waiting, allowing NeTraMet to be run
                            as a background process.

       8 Sep 95  Bug fixes as follows:
                       * snmplib/asn1.c changed to get integers correctly
                            out of SNMP packets.  Now works correctly
                            for OSF/1.
                       * PC meter: small memory model memcpy used to copy
                            strings from far memory.  Now uses qmove.
                            This caused snmp network managers to get
                            garbage when GETting addresses from the flow
                            table.
                       * Bug in meter/met_vars overwrote part of the
                            SNMP object tables when responding to a
                            request for a non-existent MIB object.  This
                            showed up as 'meter looses rule table when
                            a network manager such as OpenView probed
                            a meter's MIB.
                       * Ultrix Makefiles corrected.  These can now be
                            used to build meter and manager for DEC OSF/1.

       4 Jul 95  New options for NeMaC:
                       * -a sss  Collections will be made with a time lag
                            of sss seconds.  For example, 10-minute
                            collections with 30-second time lag will occur
                            at 1000'30, 1010'30, etc.
                       * -w nnn  Specifies doWnload level.  nnn=0 (the
                            default) downloads rules on collector startup
                            and after a meter restart.  nnn=1 downloads only
                            after a meter restart, and nnn=2 never downloads.
                 Bug Fixes:
                       * PC NeTraMet returned bad string for interface name.
                            NeTraMet fixed to return 'eth0,' NeMaC modified
                            to check the string, and use 'eth0' instead of
                            a bad string (from an old meter).

V3.2    8 Jun 95  NeTraMet meter reworked to use libcap to get packet headers:
                       * libpcap:
                         - libpcap is a generalised packet interface written
                           by Steve McCanne, Craig Leres and Van Jacobson
                           as part of tcpdump.
                         - libpcap is available from
                              ftp://ftp.ee.lbl.gov/libpcap-*.tar.Z
                         - to make NeTraMet you must first install it on
                           your Unix system so as to produce libpcap.a
                           The make files in the NeTraMet distribution
                           assume you have copied libpcap into the
                           same subdirectory as the Makefile.
                         - binary distribution files are provided for
                           linux (version 1.2.1) and Irix (5.2),
                           as well as Solaris (2.4) and SunOS (4.1.4).
                         - libpcap supports FDDI interfaces as well as
                           ethernet.  This is still being tested (8 Jun 95).
                       * -i option has been implemented in NeTraMet.
                           This tells NeTraMet which interface to monitor.
                           For example, -i le0  will monitor the le0
                           interace.  The interface name is displayed on
                           the NeTraMet console, and appears in the ##
                           header line of the flow data file.  If you
                           don't specify an interface libpcap will
                           use its default one.  The PC version of
                           NeTraMet doesn't allow you to specify the
                           interface name.
                       * 'other' packet handling has been extended.
                          'Other' packets set the SourcePeerAddress to
                          the packet's ether_type and the DestPeerAddress
                          to the packet's LSAP.  This allows you to use
                          NeTraMet to find out what packet types are
                          active on your network.
                       * All the source code (including the CMU SNMP
                         library) has been tidied up so as to remove
                         most of the compiler warning messages.  This
                         should make it easier to port to new systems.
                  Bug fixes:
                       * PC pointer problems cause PC Netramet to crash
                         at random times (from seconds to days).  Finding
                         more places which should use 'huge' pointers
                         instead of 'far' pointers seems to have cleared
                         (or at least reduced) this problem.
                       * PC string compare routine error.  Waterloo TCP's
                         qcmp routine compares two far pointers (same as
                         Unix memcmp).  Implementation bug meant that strings
                         which were same length and differed only in the last
                         byte were reported as being the same.  The effect
                         of this was masked because NeTraMet uses a hash
                         search of the flow table.
                       * NeTraMet crashed when it received an SNMP get
                         request for a MIB-1 objects which it didn't know
                         about.  NeTraMet implements nearly all of the
                         Accounting Meter MIB objects, but only a few MIB-1
                         objects.  The SNMP routines in met_vars.c have
                         been improved so as to give  a 'no such OID'
                         response (and keep running).
                       * NeMaC didn't handle end-of-file properly for
                         its configuration file.  This has been
                         corrected.

V3.1   16 Feb 95  New version using IANA-allocated MIB OID (mib-2 40):
                       * Rewritten and simplified MIB means that earlier
                         meters won't run with 3.1 NeMaC, and 3.1 meters
                         won't run with earlier NeMaCs.  i.e. both meter
                         and manager must move to 3.1 together.
                       * Extended and simplified rule matching.  Jumps
                         can be to the test or action part of the target
                         rule.  Attribute values can be pushed from the
                         packet (as well as from a rule), hence aggregate
                         and tally flows are no longer needed.  The
                         action table was only needed to support aggregate
                         and tally flows: it is no longer needed.
                       * Six new uesr-settable attributes are implemented.
                         SourceClass, DestClass, FlowClass and SourceKind,
                         DestKind, FlowKind allow a meter to pass information
                         gleaned during packet matching back to the flow
                         data file.
                       * NeMaC allows you to INCLUDE rule files into
                         other rule files.
                       * Emergency rule sets are implemented.  The meter
                         will switch to its emergency rule set if the % of
                         active flows gets greater than HighWaterMark.
                       * Collection times are synchronised by default, i.e.
                         they happen at multiples of the collection interval.
                         For example 15-min collections are made at 0, 15,
                         30 and 45 minutes past the hour.
                  Bug fixes:
                       * Rule tables with more than 1350 rules now work
                         properly on the PC meter.  This was a situation
                         where 'huge' pointers were required to reliably
                         access all of the rule table.
                       * IP fragment packets other than the first fragment
                         of a PDU produced garbage transport addresses (IP
                         port numbers).  They now produce 0.  The Accounting
                         Model defines attributes for each protocol, and
                         doesn't allow one to distinguish a 'first fragment'
                         from an unfragmented IP packet.
                       * A mistake in the code for optimised testing of
                         a group of rules could sometimes cause packet
                         matches to succeed when they should not.  This
                         has been corrected.
                  Notes:
                       * Rule files will need to be converted from the
                         old (version 2.x) form to the new one.  The
                         changes are straightforward, and are documented
                         in the file Converting.rules.ps

V2.3   25 Nov 94  Fourth full release, new features as follows:
                       * NeMaC now uses the names of flow attributes
                         as they appear in the meter MIB, i.e. TRANS
                         is used instead of DETAIL.  NeMaC does this
                         by allowing DETAIL to be a synonym for TRANS.
                         Old rule files will still work properly, but
                         new rule files should use TRANS.
                       * Gopher (port 70) and WWW (port 80, i.e. html)
                         have been added to NeMaC's list of IP port numbers.
                       * If NeMaC notices that a meter has been restarted,
                         i.e. it's sysUptime has jumped backwards, NeMaC
                         will automatically download its specified rule
                         file.  The check is made before each flow data
                         collection (intervals set by the -c option), and
                         at every 'keepalive' interval (set by the -k
                         option.  This feature can be used to minimise the
                         amount of flow data lost by a meter after a
                         power-fail restart.
                       * NeMaC now allows different collection and keepalive
                         intervals for each meter.  This is implmented by
                         allowing the -c and -k options to appear in NeMaC's
                         configuration file, and using an event queue
                         (instead of a simple idle loop) to order meter
                         activities.
                       * A mechanism for closing and reopening flow data
                         files has been implemented.  NeMaC tests for a
                         file called NeMaC.flag.  If it finds the flag
                         file it will close and reopen all its current
                         flow data files.  A new section has been added
                         to the manual explaining how to use this feature.
                  Bug fixes:
                       * Various bugs in NeMaC's parsing of rule
                         files have been corrected.
                       * Bugs in fd_filter and fd_extract have been
                         corrected; they will now work as documented!
                  Notes:
                       * NeTraMet memory management has been improved.
                         'Active flows' is now used instead of 'flows
                         in use' for controlling garbage collection.
                         The garbage collector is called if a new flow
                         is needed and the are no free flows.

V2.2   19 Jul 94  Third full release, new features as follows:
                       * fd_filter and fd_extract included in
                         manager directories as utility programs
                         for flow data files.  Documented in
                         fd_util.ps file.
                       * Port of both NeTraMet and NeMaC for Solaris,
                         using streams/dlpi instead of nit to watch
                         ethernet interface.
                       * Binaries for Solaris and Sunos available
                         via anonymous ftp.
                       * Make files for HPUX and linux added.
                         NeMaC has been ported to HPUX and linux.
                       * SamplingRate MIB variable implemented; allows
                         only 1 of every n packets to be processed.
                       * All four Novell IPX encapsulations now
                         recognised.
                  Bug fixes:
                       * PC NeTraMet now counts packets sent as well
                         as packets received.
                  Notes:
                       * NeMaC now gives sensible error messages if
                         it can't write meter variables.  If NeMaC
                         only has read access (i.e. it was given the
                         read snmp community name instead of the write
                         one) it can still collect data, but such
                         collections will not be recorded by the meter,
                         and therefore be noticed by the meter's
                         garbage collector.
                       * Solaris 2.3 dlpi bug corrupts some packet
                         headers.  Only affects CLNS handling by
                         Solaris version of NeTraMet.  This is fixed
                         in Solaris 2.4 - see the ether_pc.c file
                         for details.

V2.1   14 Jan 94  Second full release, new features as follows:
                       * Subroutines in rule tables implemented,
                         making it much easier to write rules to
                         handle large numbers of networks.
                       * Labels implemented for rules and actions,
                         i.e. no need to keep track of rule and
                         action numbers by hand.
                       * CLNS protocol now understood by NeTraMet
                       * Packets for protocols not understood by
                         NeTraMet can be counted as PeerType 'Other'.
                       * Ethernet II and SNAP encapsulations for IPX
                         now recognised (as well as 'Raw 802.2').
                       * Full (10-byte) IPX addresses can be used
                         instead of just (4-byte) net numbers.
                       * Make files for Ultrix added.  NeMaC has been
                         ported to Ultrix.
                  Bug fixes:
                       * MIB environment variable changed to MIBTXT to
                         match the documentation (was MIBFILE).
                  Notes:
                       * Make files changed to allow compilation with
                         Gnu C compiler, either by specifying gcc in
                         the make file, or by 'setenv CC gcc'.
                       * Documentation points out that NeTraMet write
                         community must have different name to read
                         communities, and that NeMaC must specify the
                         NeTraMet write community name.

      28 Oct 93   New: NeMaC only displays 'Rule/Action added' message
                       every tenth rule/action.

      22 Oct 93   Bug: NeMaC couldn't handle rule table with >255 rules.

V2.0   20 Oct 93   First full release of NeTraMet and NeMaC, with NeTraMet
                       Manual and full source code.

V1.0      Nov 92   Prototype meter using height-balanced trees instead of
                  rule table.  Presented at Washington IETF.