

NNSTAT RELEASE 3.0 CHANGES:

A. NEW FEATURES:

A.1 Ultrix Support

    #ifdef'd code added for Ultrix operating system:  analyze.c,
    filbuf.c, packet.h, statspy.c, sobj.h  [Mogul, DEC]
   
A.2 Little-endian Support

    Changes for little-endian machines: filter.c, parse.c, sobjbp.c,
    statspy.c, sobj.h  [Mogul, DEC]

A.4 Language Extensions

    Extended the configuration language to include all features
    described in original SIGCOMM article on statspy: boolean
    expressions, symmetric IF statement, SELECT/CASE statement:
    analyze.c, attach.c, cmds.c, remote.c, reply.c, scan.h, sobj.h,
    stat.h [ISI]

A.5 Better Compilation Algorithm

    Improved the fundamental compilation algorithm in statspy as
    explained in ISI Report RR-88-207, to produce more efficient
    execution for complex nested IF statements.  This change interacts
    heavily with the compilation of boolean expressions and symmetric
    IF statements.  The original algorithm was essentially "one-pass",
    in which compilation was driven by the recursive descent parsing of
    the source.  The new algorithm builds an intermediate tree during
    the recursive descent, then compiles this tree in a separate
    depth-first tree-walk:  attach.c  [ISI]

A.6 Line Numbers in Error Messages
    
    Counts line numbers as it parses configuration file, and supplies
    the latest line number in an error messages: cmds.lex, rspy.c,
    statspy.c  [Schaefer, Cisco]

A.7 New 'include' Command

    New command 'include <filename>' inserts contents of specified file
    in place of command: cmds.c, scan.c, scan.h [Cherenson, SGI].
    
A.8 New 'file' Command
    
    A new local command 'file "pathname"' was added to statspy and rspy.
    This command causes succeeding command output to be written into the
    specified file instead of being displayed on the terminal:  cmds.c,
    collect.c, rspy.c, sobjbp.c, statspy.c [ISI].  'file ""' returns output
    to the terminal.  There is a special interpretation for BP/BP2 class
    objects (see below).
    
A.9 Revisions to bin-packet Class

    There were major revisions in the bin-packet (BP) object class,
    resulting from the needs of a graduate student at USC to collect packet
    traces [ISI].
    
   * A binary version of the BP class, "bin-pkt2" (BP2), was added.
     This concatenates the two input fields into one value and saves
     it in the circular buffer: sobjbp.c, scan.c.  
     
     For example, the source and destination IP addresses from 
     successive packets can be saved with:
            record IP.srchost, IP.dsthost in Objname BP2(100);
   
   * A second, optional, parameter was added to BP and BP2: the
     maximum length to capture.  This defaults to the field length
     (or, for the entire packet, to the snaplen captured from the
     network interface).  Note that BP can now capture the full
     snaplen intercepted by the Ethernet interface: parse.c, sobjbp.c.
   
   * If XPARSE is defined, read operations in statspy, rspy, or collect
     will display BP/BP2 entries with timestamps in milliseconds
     since the beginning of statspy execution.  Otherwise, the time
     in seconds from recording the entry until the current (display)
     time will be presented: parse.c, sobjbp.c.
     
   * The new "file" command in statspy (see above) causes read output 
     to be written into a file rather than displayed on the console.  
     However, for BP/BP2, the "file" command is different: a read
     command writes the entire circular buffer contents into the
     specified file in BINARY: sobjbp.c.  The fbinary ormat is defined
     by the struct bpe_entry in sobjbp.c.
     
     This special interpretation of the "file" command for BP/BP2 works
     remotely through rspy as well as locally within statspy.
     
   * The circular buffer format was changed to be more space-efficient:
     sobjbp.c
   
   * To accomodate the changes above, the encoding of BP objects in
     XDR was changed in a manner that is NOT upwards compatible with
     prior releases.  BEWARE!

A.10 Revisions to working-set class: [ISI]

   * A binary version of the WS class, "working-set2" (WS2), was added.
     This concatenates the two input fields into one value and uses the
     result to build a LRU stack: sobjws.c., scan.c.

   * The algorithm efficiency was improved by adding a hash table
     for matching: sobjws.c
   
   * The output display format was improved and streamlined: sobjws.c.  
         
A.11 Filter Object Improvements
        
   * Local read operation on an RF or EQ object displays the parameter
     value(s): filter.c [ISI]

   * RF supports an optional third parameter, a mask to be ANDed with
     the field before the range comparison is made.  RF now does
     fullword comparisons whenever possible.
     
A.12 Parse Extensions

    Parse() can now recognize IP multicast (Class D) network numbers; in
    addition, ICMP codes are parsed as well as ICMP types: parse.c
    [SGI]
    
A.13 One-column Mode

    The statspy display routines go to some trouble to format the
    output nicely, using multiple columns when possible.  However,
    the new parameter -1 on statspy or rspy will force the output
    to use a single column: rspy.c, statio.c, statspy.c [SGI]
    
A.14 Testing Facility

    The release now includes a facility for testing, in which the
    Ethernet interface is replaced by a driver testif.c that reads
    packets (in Sun OS 3 NIT format) from a file: cmds.c, statspy.c,
    testif.c  [ISI]
    
A.15 Experimental Fields

    Experimental fields in parse() are now invisible unless included by
    #define XPARSE.  Also, experimental field "interval" now records
    interarrival time in millisecs: parse.c [ISI]

A.16 System V Support

    A few changes were made to support System V: rspy.c, statspy.c [SGI]

    
B. BUG FIXES:

B.1 Detach bug
    
    Revised the algorithm for detaching, to cure a long-standing
    problem that detaching arbitrary subtrees in the presence of
    indirection could leave unchained subtrees.  Required new
    indirection count in SOPC structure, rewrite of tree_prune(),
    PrSOPCdel():  analyze.c, attach.c, sobj.h  [ISI]

B.2 Collect missing polls

   Fixed a 'collect'  bug that caused some periodic polls to be
   missed:  logfile.c [ISI]

B.3 Memory Leaks

    Minor memory leaks were fixed in Get_SOBJ(), Unget_SOBJ(), Make_RF(),
    Make_EQ(), Make_BP2(), make_hist(): attach.c, filter.c, sobjbp.c,
    sobjhist.c [Schaefer, Cisco; ISI]

B.4 Mode Errors in Configuration Programs

    Prior statspy releases allowed (1) filter invocations of non-filter
    objects ("if ... freq-all { ... };"), but the execution results
    would not be correct; and allowed (2) record invocations of filter
    objects ("record ... in EQF(3);"), but detach would be confused.
    Case (1) now produces an error message ("Filter object required"),
    while case (2) is allowed and detach still works correctly.
    attach.c [Schaefer, Cisco]

B.5 Bugs in RF

    Fixed several bugs in RF filters: filter.c [ISI]

B.6 FO() failure

    Invocation of a freq-only object with an empty parameter list caused
    a program failure: sobjfo.c, sobjfob.c [ISI].

B.7 Numeric Input Conversion Bug

    An old bug has been fixed in numberic input conversion (I've lost track
    of what it was): scan.c [ISI]
    

C. INTERNAL HOUSECLEANING:

C.1 List_XX Moved to Objects

    Made a major reorganization that simplified and clarified the
    structure:  each "List_XX" routine used by collect and rspy to
    format a remote read of object class XX has been moved from
    statio.c into the source module for its object class.  The "list"
    operation has thus become one of the primitive operations on an
    object, and therefore it has been added to the transfer vector for
    each class.  The drawback is that all the statistical object
    modules must be loaded with rspy and collect.  [Note that most of
    the class-specific declarations of XDR format now in stat.h could
    now be moved into the corresponding object.c modules, but this was
    not done.]  filter.c, sobjXX.c (all XX), reply.c, sobj.h   [ISI]

C.2 Ethernet Interface Modularization

    Following a suggestion made by Jeff Mogul, the Makefile was
    parametrized with the identity of the ethernet interface module.
    This led naturally to disentangling the baroque etherif.c into
    three alternative modules:  etherif3.c [Sun OS 3 NIT], etherif4.c
    [Sun OS 4 NIT], and testif.c [test driver]: etherif3.c, etherif4.c,
    testif.c, Makefile [Mogul, DEC; ISI].

C.3 Miscellaneous

   * A pointer to the parameter value array  (parmp) was added to
     "struct invokes" used in compilation:  analyze.c, stat.h  [ISI]
   
   * A few obsolete declarations removed. 

   * The collect program was revised to make the logic clearer:
     collect.c, logfile.c [ISI].

   * An RT dependence was moved from parse() back into its caller in
     etherifrt.c: etherifrt.c, parse.c [ISI].
     
____________________________________________________________________
____________________________________________________________________
RELEASE 2.4 CHANGES:

 NEW FEATURES:
                      
  01Nov89: Add new objects to count bytes: FAB, FOB, MAB, MSB: attach.c, reply.c,
            scan.c,  sobjfob.c (new), sobjmfb.c(new), statio.c, sobj.h, stat.h
            
            In addition, there are new versions of the sample configurations
            that use the byte-counting objects: parm.sample1B, parm.sample2B,
            parm.sample3B, parm.sample4B.  There is also a new version of
            the count-totals awk script to total bytes as well as packets:
            dailytotalsB.awk.
                   
  01Nov89: Add new field "length": etherif.c, parse.c.

  30Nov89: rspy queries version number of statspy, using new command VERSION:
                analyze.c, rspy.c

  30Nov89: Terse mode in collect program: collect.c, statio.c [Katz, Merit].
  
 BUG FIXES:
        
  29Nov89: Use correct #include file ioctl.h for SUN OS3.x: statspy.c
                [Walker, NASA].

  29Nov89: Fix bug in Check_restrict call: analyze.c [Varadhan, OSU]

  29Nov89: Fix initialization bug in Get_SOBJ(): analyze.c.

 INTERNAL HOUSECLEANING:

  29Nov89: Use in_addr structs in restrict structure: statspy.c [Varadhan, OSU]

  01Nov89: Change some internal calling sequences: MA_list, FAO_list, ReadFO:
                 sobjfa.c, sobjfa2.c, sobjfo.c, sobjma.c, sobjma2.c, statio.c.

  09Nov89: Changes for later support of symif statement (see SIGCOMM paper):                         analyze.c, parse.c, sobj.h, statspy.c.

----------------------------------------------------------------------------
----------------------------------------------------------------------------
RELEASE 2.3 CHANGES:

25Jan89: Fixed typo in sobjma2.c [Katz: Merit]

27Jan89: Fixed typedef: collect.h [Katz: Merit]

27Jan89: Added check for max number of hosts: collect.c [Katz: Merit]

11Mar89: Added omitted initialization statement to  Get_SOBJ() [Katz: Merit]

5Sep89:  Fix alignment/SPARC problem in print_val(): statio.c [Wood: LANL]

13Oct89: Added access controls: analyze.c, cmds.c, scan.c, scan.h, stat.h,
                   statspy.c, rspy.c [Katz: Merit]

13Oct89: Added new collect parameters: -u (universal time), -m (mode):
                   collect.c, statio.c, logfile.c [Katz: Merit]

13Oct89: For IBM PC RT, work around compiler bug: enum.c [Katz: Merit]

13Oct89: IBM PC RT stuff: statspy.c [Katz: Merit]

13Oct89: Add new statspy parameter: -s scheduling_priority: 
                   statspy.c [Katz: Merit]

15Oct89: SPARC alignment changes for Sun4 hardware: parse.c [Wood: LANL]

15Oct89: IBM PC RT NIT provision: parse.c, parse.h [Katz] 

16Oct89: Look up default Ethernet interface using IOCTL: statspy.c

17Oct89: Add support for 'subnet' command and subnets: analyze.c, cmds.c, 
           parse.c, reply.c, rspy.c scan.c, scan.h, sobj.h, stat.h [AKS/RTB]

RELEASE 2.3.1 CHANGES:

14Dec89: Fix bug introduced into print_val(): statio.c, statspy.c
