version 1.08
------------

 . added perl/Tk interface for netl.  this is located in face/perltk.  
   you will need a modern version of Perl and Tk to run it.  I use perl
   5.005 and Tk 8.x.
 . changed the pipe interface so that string messages can be passed
   through them when netl dies.  this is helpful for explaining to user
   who is using the tk version of netl what went wrong when they do dumb
   things like not running as root.
 . use the die() function to stop netl instead of exit().
 . added the 'dir lib' and 'dir dump' rules netl.  see the netl.conf(5)
   man page.
 . you are now able to have multiple actions associated with the same
   filter.  <dump,log> is equivalent to dl.
 . wrote .spec files for two rpm packages netl-*.rpm is the base dist,
   and tknetl-*.rpm will be the tknetl front end package.
 . netlcc.pl (and therfore netlcc) is now generated by a C program which
   knows where the correct directories for this version of netl will be.
 . rewrote netlcc in sh.  will be keeping the perl version handy for a
   while.
 . fixed a bug in the alias generation part of the compiler (actually
   located in resolve.c), and fixed the associated test cases.

version 1.07
------------

 . added hwcode file to the MANIFEST file so that it gets distributed
   with the rest of netl.
 . updated configure and Makefile so that the dump directory selection
   actually works.
 . removed fred.o module from the netl modules, as it was a duplicate of
   something else.

version 1.06
------------

 . internal version only

version 1.05
------------

 . modified hwpassive to use a hash function infront of the linked list.
   this should make the hardware address lookups faster.  (hash function is 
   xor each of the bytes in the address together, not the best distribution,
   but it is blindingly fast)
 . added `hwpassive:print', `hwpassive:lookhw:' and `hwpassive:lookip' dcp
   commands to hwpassive.  print prints the database to log, and lookhw
   and lookip do hardware address and ip address lookups respectively.
 . added time stamps on each hwpassive entry.  it now keeps track of the
   first, and last times the entry was seen.  this also modifies the `update'
   flag, so hwpassive will re-write the hwpassive database on nearly
   every invocation now.
 . corrected BYTE_ORDER typo in include/global.h which allows netl to
   compile under sparc-linux.  updated compiler.c and test cases for
   SPARC byte orders.
 . wrote hwlookup to interactm with the ethernet address database offline
   (ie when hwpassive isn't running).  updated hwpassive so that it will
   remove duplicate entries on startup.  i'm not certain how they were
   introduced in the first place.
 . changed Makefile to install *all* netl files in the LIBPATH, as well
   as BIN and SUPATHs.  this allows you to keep more than one version of
   netl on the same system.  why you would *want* to do that, i know not,
   but you *can* do it if you wish.

version 1.04
------------

 . added a bazillion test cases.  most notably, filter test cases.
 . corrected multiple flags being set with the flag= rule.
   (i was and'ing in config.y when i should have been or'ing)
 . tcp4_next is a module which logs the first packet, as per the rule,
   and the next 5 packets which match the same signature (address/port
   combinations) regardless of set/cleared flags.  this was a user
   request.
 . finally wrote hwpassive.   implemented as a netl module.
 . hwpassive listens for dcp "hwpassive:write" which indicates
   the database should be dumped to disk.
 . corrected the spelling for the --foreground option.
 . added bit mask support for IP addresses.  for srcip= and dstip=
   you may now add a /int to specify a mask.  for example, 10.0.0.0/8
   will log 10.*.*.* and 150.135.0.0/16 will log 150.135.*.*
 . this is a MAJOR API revision.
 . fixed minor bug in neta.  icmp.code was not being correctly decoded.
   (the integer output had been correct)
 . wrote a pipe output module.  this executes `pipeprog' in the current
   directory, and passes it (as the first argument) a file descriptor.
   each packet is written to this file descriptor from netl, with an
   extra header, containing only the length of the packet.
 . wrote a catch module in the core for the purposes of implementing
   a dandy-handy pipeprog, as mentioned in the last entry.
 . began work on a Perl/Tk interface for netl.  the primary motivation
   for this was as an application to the `pipe' output module (actually,
   each motivated the other).  for now, this will be a seperate dist,
   until it gathers some serious steam.
 . wrote a configure script.  autoconf was to complicated for the simplicity
   of my configurations.  i may regret this, if netl gets ported to any
   other platforms...	

version 1.03
------------

 . bug fix: netl does not load incomplete IPv6 modules by default.

version 1.02
------------

 . switched to flex/bison to parse the configuration files.
 . created new modular design.  see netl_module(1)
 . this is a MAJOR (internal) revision
 . re-did the man pages.  they still aren't that good, but at least they
   are up to date again.  actually it's nice to have documentation on the
   new module system.
 . wrote netlcc front end and compiler.c back end for the netl compiler.
   see netlcc(1) for details.
 . moved the dump directory from /tmp/netl to /usr/local/lib/netl/dump
 . added --dump-dir option for specifying an alternate dump directory.
 . began preliminary support for IPv6.  see info in man page on -6 option,
   and the netl.conf(5) man page.  aside from the fact that this code
   is virtually untested, the main missing piece is the check for source
   and destination IP addresses.
 . wrote some regression tests which are based on the compiler output.  
   they are designed to test both config.y and compiler.c
 . fixed tdr so that it doesn't delete your /dev/null file if you
   run as root!

version 1.01
------------

 . modified the header files such that they would compile under glibc2

version 1.00
------------

 . no major changes, but netl doesn't really feel developmental anymore
   so i now declare it to be in the `released' state.  q.e.d.
		[ q.e.d. is latin for `so what', or at least so tyler says ]

version .95.3
-------------

 . added dl action type.  this is a combination of the log and dump action
   codes.

 . made the dump file names truly unique.  we now use the pid, time and
   *sequence* to make sure that all netl dump files are (theoretically)
   unique.  sequence is the new one.  the form is now
   /tmp/netl/name-pid-time-sequence.dg
   where name is the name you specify in configuration, pid is the 
   process id, time is seconds since 00:00:00 GMT, 1 January 1970, and 
   sequence is the number of datagrams which have been dumped by this 
   particular netl process.
   if this file happens to exist, then it will be overwritten.

 . added raw and ip (generic) protocols.

version .95.2
-------------

 . mostly internal stuff.  added parse.c and grab.c modules, which contain
   code that used to be in the netl.c main module.  this is so that all the 
   network specific code is in grab.c, the true nightmare for porting is
   in this file... so if i can port grab.c to win32... then i'm done.

 . the \ character now works in the config file, if you want to have
   multiple line rules.  very unix-esq.

version .95.1
-------------

 . minor changes

version .95
-----------

 . created man page documentation.

 . added `detect' config line, see the netl(8) man page for details.
   this will reduce the amount of configuration you will have to do
   in the netl.conf file.

 . modified dist version of netl.conf so that it's more portable.
   in particular, i put in literal port numbers rather than using
   port names.

 . dcp.pl uses perl native Socket module instead of using net cat.
   `dcp.pl -o' uses the old method.

version .94
-----------

 . changed all the struct declarations to typedef declarations.  get off my
   back ok?  i've been programming perl for so long, forgot some of that
   strange C language. 

 . no longer depending on linux .h files for IP (and sub) headers.  this
   is for portability reasons.  if you are doing a port, make sure you get
   the endian type right!  there are now three global headers:
	global.h - general global stuff (endian integer conversion etc.)
	ether.h - ethernet specific data types, #defines
	ip.h - ip protocol specific data types, #defines
   logically, if your adding an interface (ATM, token ring, ppp, etc.)
   you'd want to start in ether.h.  if your adding an OS, look at global.h
   first.  if you want to add a protocol (IPX, etc.) start with ip.h and
   modify/add to these files.  if your trying to do all of this at once,
   god help you. 

 . fixed the clearipcache() function.  thus now, when you send a 
   netl:readconfig, netl will clear the ip cache before reading the file,
   avoiding all sorts of potential duplicates.  though you probably have
   an enormous amount of memory like me and don't care... 

 . added some global options with ports to win32 in mind.  NO_SYSLOGD, if 
   defined in global.h will not even compile with the syslogd library stuff.  
   this is a good idea if your running from a non unix system.  note that 
   syslogd is really nice in that it partially compresses lines by indicating 
   repeated lines.  this won't save you if you get strobed, but will keep your 
   log file neat if some one ping -f's you from only one site.

 . added NO_TEEOUT option which is defined for unix.  the -o option should 
   only be necessary in win32 only.  even then, you should only compile with
   this option if your thinking of using it.  -o copies output to the specified
   file.

0.93 (and 0.92)
---------------

 a. -z option allows you to run netl in the foreground.  output is sent to
    stdout instead of syslogd.

 b. you can include configuration lines in the command line.  when you do
    this, the config file /etc/netl.conf will NOT be read.  note that (a)
    and (b) are meant to be used in concert with each other for testing
    and quick monitoring. 

 c. dcp is partially implemented.  netl will listen to port 47 udp
    (silently) if you `listen 47' in your config file.  when you send the
    message `netl:readconfig' netl is suppose to re read your config file. 
    dcp.pl is a perl script (you'll need net cat for this to work) which
    sends this message.  what is left to do for dcp?
	1. generic server side dcp interface libdcp.a file or somesuch.
	2. more solid C version of dcp client.

 d. netl is now officially under the GPL, see COPYING for more information.

 e. icmp codes are now included in some .h file somewhere rather than
    depending on your linux being overly up to date.

 f. neta no longer swaps source/destination ip/ethernet addresses
    inappropriately. 

 g. started work on hwpassive, which is no where near complete.

 h. tdr.pl is no included with netl distribution for convenience.  get
    your own version at: 

http://www.u.arizona.edu/~ollisg/core.html
	[ CORE ]

netl 0.91
---------

 minor updates

netl 0.90
---------

 initial release
