Major changes between version 0.3 and 0.4.
------------------------------------------

* Fixed bugs in the options file parser that caused core dumps
  when compiled as a QMAGIC executable.

* Fixed various bugs in the timer code that caused early timeouts.

* Fixed bugs in the filter code that caused IP packets to get ignored
  when determining the idle timeout.

Major changes between version 0.3 and 0.4.
------------------------------------------

* ANSIized the code. This caught a bunch of coding inconsistencies,
  but did not result in any major changes. Things compile clean
  with -Wall now.

* Added in addroute and delroute script options to allow users to do local
  routing work when diald starts and ends.

* Added in primitive ability to use more than one device. diald searches
  for an unlocked device on a list and uses that one. Note that it
  will try to run the same connect script regardless of the device
  it gets. This isn't really ideal. Eventually I'll have to rewrite
  the option syntax to accommodate a proper modem server format.

* Fixed modem locking bugs. You can all stop sending me messages
  about this now.

* Added in an option to allow diald to work with dynamic slip and ppp
  addresses.

* Added in an accounting log file. This is intended to record information
  salient to getting charges reimbursed by an accounting department.
  Check out the option "-accounting-log" in the man page.

* Added a "netmask" option to diald, acts like "netmask" in pppd.

* Changed name of "default" option to "defaultroute" to match pppd.

* Fixed some more problems with the modem hanging for 30 seconds when
  dialing went wrong, or some other process mucked up the modem device.

* Rewrote the packet filtering code. The goal of the rewrite was a redesign
  to accommodate a possible future move of the packet filtering code into
  the kernel. This would allow diald to act as a firewall as well as a
  dialer daemon. There are some minor user visible differences as a result.
  The most notable is that the "filter" command has been replaced
  with the commands "accept" and "reject". Note that the "reject" command
  does not actually do anything yet, for now it is equivalent to an
  accept command with timeout 0.  The other visible change is the
  ability to define variable names and protocol rule names in the
  configuration files. Note that diald does NOT yet actually act as 
  a firewall, and will never do so without kernel modifications.

* Added options to allow run time definition of variable names for
  filter rules, as well as named protocol rules. As a result I have
  moved the default definitions out of the code and into the file
  /etc/diald.defs. This file is the first file read when diald starts.

Major changes between version 0.2 and 0.3.
------------------------------------------
This is a bug fix release.

* I think I finally tracked down the cause of those intermittent
  modem "hangs" were the OS waited 30 seconds for some buffers to drain
  before finishing a close. This problem should be gone.

* Spelling fixes thanks to Hugues Lafarge <hugues@afp.com>.

* Stupid bug that causes SLIP mode to hang up immediately fixed.
  SLIP mode should actually work now.

* Diald wasn't seeing SIGHUP's in SLIP mode. I forgot to set the
  session group and controlling tty. Fixing this caused, pppd SIGHUP's
  to break. The solution is to give pppd the controlling tty in fork
  just before exec.

* Added a "disconnect" script ala pppd. I don't need this myself,
  but maybe someone out there will.

Major changes between version 0.1 and 0.2.
------------------------------------------
diald has been almost completely rewritten (twice!) since the
first release. There are many changes. Here are the high points:

* The ppp-on script is no longer used. Diald will run a connect
  script (chat works nicely) by itself, and then run pppd if needed.
  This is so diald can know the pid of the pppd process, which allows
  diald to know what ppp interface (ppp0, ppp1, etc.) the pppd is
  running on, and allows diald to know what process to kill to take
  down the link. The old diald just issued a killall -INT pppd,
  which prohibited more than one diald running, or a diald controlled
  pppd running together with a non-diald controlled pppd.

* There are LOTS of configurable options now. Look at the usage
  line (just run diald without any options) or read the man page.
  The man page still needs some work, but I hope it will be enough
  to get experienced users up and running. (Hey, this is still ALPHA
  software, I only have so much spare time).

* The entire mechanism for controlling the state of the link has been
  replaced by a formal state machine. I think this machine guarantees
  that no more than one child process can be active at a time, and
  will even kill off child processes that are taking to long to do
  their tasks. Let me know if you have problems with this. The old diald
  could be forced to spawn hundreds of chat scripts or pppd daemons.

* Diald no longer uses slattach to set up the slip link. It just does it
  by itself. This allows it to know which slip device it is using,
  which should allow multiple diald's to run at the same time.

* The policy for bringing up and shutting down the link is now very
  configurable, down to the level of choosing what packets
  should bring the link up and keep it alive, together with
  multiple timeouts on connections over the link.
  Look at the manual page and the sample diald.conf files in the
  doc subdirectory. Ask me if you are having problems configuring
  diald to do something you want. It will help me to write a better
  manual page, and will point deficiencies in the current design.

* UUCP style locks are now placed on the call-out device.
