Version 0.32 to 0.33 (19-NOV-1997)
====================

Bug fixes
---------

 - SSCOP did poll sequence number comparisons in the (data) sequence number
   space, typically leading to periodic SSCOP restarts (reported by Heikki
   Vatiainen)
 - atmsigd now releases calls on receipt of STATUS with call state 0 (reported
   by Heikki Vatiainen)
 - qgen tried to print the names of unnamed groups (fix by Simon Leinen)
 - make clean  in qgen left all the .c and .h files produced by qgen
 - minor fixes to signaling message format description (qgen/msg.fmt,
   previously qgen/uni*)
 - /usr/include/atm.h was calling itself "atmlib" (found by Leena Chandran)
 - atmsigd: the address format of the calling party number was used to
   determine the format of the called party number in a SETUP message
 - added some semicolons to Rules.make for bash 2.0 compatibility (by Tan Chang
   Hu and Rolf Kunisch)
 - select/poll indicated an exception when a non-blocking connect terminated.
   Now it indicates writability, and an error only if the connect failed.
 - LES/BUS can now co-exist at the same address (by Heikki Vatiainen)
 - fixed race condition between asynchronous release (e.g. on ATMARP idle timer
   expiration) and signaling demon response
 - fixed a typo "[itf]." instead of "[itf.]" in atmsigd.conf.8
 - "ATM drivers" kernel configuration section is no longer a top-level menu
   item but it's now under "Network devices"
 - sigd_close forgot to purge VCs not connected to devices (e.g. closing ones),
   so they hung
 - the list of unconnected VCs was sometimes garbled
 - atmsigd printed null string for as_itf_notify message name when debugging
 - Arequipa: check_aq_vcc also accepted VCs that were already released by
   signaling
 - ATM_VF_PARTIAL and ATM_VF_BOUND had the same value
 - atmaddr still used old calling convention of ATM_GETNAMES
 - the atmarpd man page referred to atmarpd as "atmsigd"
 - various atmtcp bug fixes
 - atm_recvmsg sometimes returned with interrupts disabled (reported by Pete
   Wyckoff)
 - fixed ttcp_atm dependencies (.depend contains dependencies for "ttcp.o")
 - UNI message format: "more" was missing for def_pck_size
 - eni/suni didn't compile as modules (fixed by Pete Wyckoff and Ladislav
   Lhotka)
 - further net/atm/Makefile cleanup
 - arequipa_close always left the socket with arequipa_expect enabled. Now it
   returns it to the previous state.
 - ENI driver was leaking buffer memory on failure of set_tx
 - atmarpd didn't print symbolic names of "new" flags (ATF_ARPSRV, etc.)
 - ATM ARP server didn't make client entries public (reported by Tom Mahieu)
 - drivers/atm/Config.in had extra "endmenu" (fixed by Ladislav Lhotka)
 - atmarpd got confused when receiving InARP reply without source ATM address
 - atmsigd sometimes didn't stop timers if Q.2963.1 wasn't enabled
 - when rejecting a call, the kernel freed the VCC twice

New features
------------

 - merged source tree (except Arequipa, single-copy, and various NIC drivers)
   with 2.1.65-Linus tree
 - qgen can now handle repeated information elements
 - added ATM_SETESI[F] ioctl and esi utility (boards without a real ESI in ROM
   should now set the default ESI to 0x000000000000)
 - new socket option SO_ATMSAP along with struct atm_sap (using a fixed-size
   BLLI array instead of the linked list in struct sockaddr_atmsvc)
 - added Q.2963.1 PCR modification in signaling and the ENI driver
 - aread: new option -c to print received data as characters (similar to od -c)
 - new tool test/align to test handling of mis-alignment in NIC drivers
 - atmsigd now supports policy restrictions for incoming/outgoing calls (see
   atmsigd.conf.4, "policy")
 - atmsigd can now also use a pair of named pipes (or, actually, any named
   object in the file system) for communicating with the user of signaling
   (normally the kernel)
 - new tool called "isp" (for "Internal Signaling Protocol") to talk ISP with
   atmsigd over named pipes
 - new functions sap2text and text2sap to converts SAPs to/from textual
   representation, and a sap(7) man page
 - new traffic parameter field "pcr" to indicate the desired PCR. min_pcr and
   max_pcr can the be used to indicate the acceptable range.
 - new function atm_pcr_goal to help drivers to interpret traffic parameters

Other changes
-------------

 - removed some more obsolete CLIP-related ioctls
 - qgen: simplified generation of engines with a prefix other than "q" or "qd"
 - ENI and ZATM drivers now use shareable interrupts
 - cleaned up some 32bit-isms in ENI driver
 - cleaned up several 32bit-isms in SSCOP (reported by Tan Chang Hu)
 - SSCOP: work-arounds for buggy ntohl prototype in some early versions of
   glibc (reported by Tan Chang Hu, further explored by David S. Miller and
   Richard Henderson)
 - started updating the ZATM driver for 2.1 (still crashes under load)
 - added missing 2.1 pieces in ENI's SUNI driver
 - added __initfunc and __initdata where appropriate
 - tools tree now compiles under 0.31 (2.0.25 kernel) and 0.33 (2.1.55 kernel)
 - gratuitous improvement of identifier tree allocation in qgen
 - the interface number is now optional for sonetdiag (like for atmdiag)
 - started implementing the kernel side of point-to-multipoint signaling
   support
 - /proc/atm/arp now displays "resolving" or "expired" (with the number of
   times the entry is referenced) instead of "incomplete".
 - moved ATM_MAX_BLLI from linux/atm.h to linux/atmsap.h
 - changed ttcp_atm to use SO_ATMSAP (if available) to set BHLI
   Note: ttcp_atm previously didn't use a BHLI, so old and new versions of
   ttcp_atm don't interoperate.
 - updated all other programs using SAPs too, except for LANE
 - ENI: failure to allocate a traffic shaper now yields EBUSY instead of EAGAIN
 - instead of just complaining, the ENI driver now handles all kinds of
   mis-alignment in the TX path properly
 - re-implemented send and receive side of Arequipa
 - merged qgen/uni3x and qgen/uni40 into msg.fmt
 - added missing Q.2931/UNI 4.0 items to qgen/q2931.h and msg.fmt
 - also added BLLI L3 H.310 codepoint with related encodings
 - various file name and identifier changes to give a more appropriate name
   (e.g. "uni" or "call") to something that's never been Q.2931
 - added library dependencies
 - atmsigd produces more readable and usually more comprehensive debugging
   output
 - atmsigd.conf.4 now mentions that -d is the debugging output addict's choice
 - all programs accepting -l syslog now also accept -l stderr. (This is useful
   for atmsigd if atmsigd.conf sets logging to something else.)
 - atmsigd now issues ATM_GETADDR ioctls on the signaling socket, not on the
   kernel socket
 - WARNING: text2qos: "pcr" is no longer a synonym for "max_pcr" !
 - text2qos now refuses min_pcr=max
 - device driver interface: removed vcc->peek; device drivers now choose their
   own allocation strategy (change motivated by bug report from Furquan Ansari)
 - drive driver interface: new helper functions atm_charge/atm_return to handle
   buffer space allocation
 - device driver interface: vcc->push no longer allocates buffer space. This is
   now done by the driver, via atm_charge
 - updated eni, zatm, and atmtcp to use the new mechanism
 - zero padding in eni driver failed due to mis-alignment on some systems
   (fixed by Pete Wyckoff)
 - various compiler warnings removed (by Pete Wyckoff)
 - removed support for pre-AREQUIPA_WORK mechanism
 - arequipa close mechanism cleanup
 - further cleaned up QOS parameter checking
 - new ISP message as_identify for parallel call processing (not supported yet)
 - zatm: renamed  struct zatm_thist  to  struct zatm_t_hist  after wondering
   myself what on earth "this t" could be ...
 - doc/Makefile now invokes dvips with -o


Version 0.31 to 0.32 (10-JUL-1997)
====================

Bug fixes
---------

 - manipulation of local ATM addresses didn't check for permission

New features
------------

 - ilmid now supports the system group and a couple of ILMI MIB objects (by
   Scott Shumate)
 - device and VCC allocation is now dynamic
 - E.164 addressing support and corrections to address coding in uni3x/uni40
   (by S. A.  Wright, T. C. Jepsen, and Z. Zhang)
 - support for device de-allocation via per-device operation dev_close

Other changes
-------------

 - upgrade to kernel version 2.1.37
 - ENI driver cleanup (uses readl/writel, skb_put, etc.)
 - socket option handling has changed: optval is now void * (to improve
   compile-time type checking) and optlen is int (not int *) in getsockopt
 - socket option "names" now encode the level and the size (based on an idea of
   Elwyn Davies)
 - cleaned up some of the #includes in net/atm/proc.c
 - total rewrite of ATMTCP (now the data forwarding is done in user space,
   which makes things slower but a lot more flexible)
 - separated PDU parsing and printing from SSCOP state machine
 - new per-device operation dev_close to shut down devices
 - changed a few DIAG_WARNs to DIAG_INFO in ilmid

Removed features
----------------

 - polled ATM devices are no longer supported
 - CLIP is gone (use ATMARP instead)
 - Arequipa and LANE don't work yet (will come back later)


Version 0.30 to 0.31 (22-APR-1997)
====================

Bug fixes
---------

 - atmarpd even refused IP address changes by the ATMARP server, which
   typically led to the creation of one extra SVC
 - ATMARP timeouts were computed at the wrong place (found by Gerald Hanusch)
 - aqtest's usage didn't mention the -v option
 - some tools used 0x%p instead of %p (which is fine in the kernel, by the way)
 - skb_migrate didn't update skb->list
 - zeppelin: incurred spurious core dumps on unsuccessful attempts to connect
   to LANE servers, ESI parsing from command line seg faulted, obtaining ESI
   from NIC left an ATM socket hanging, man page didn't describe all options
   (by Marko Kiiskila and Heikki Vatiainen)

Other changes
-------------

 - arequipa_close now only returns after the Arequipa connection has been
   successfully closed. This allows applications to reliably close and
   re-create Arequipa SVCs, e.g. to change the traffic parameters.
 - the arequipad operations 3rd party close and synchronization are now handled
   inside the kernel and survive arequipad restarts


Version 0.29 to 0.30 (10-APR-1997)
====================

Bug fixes
---------

 - atmtcp didn't use vcc->push and therefore got the buffer usage accounting
   wrong (fix by Gerald Hanusch)
 - when closing a VC, the ENI driver didn't wait until all TX data has really
   left the board, which created a close/open race (found by Richard Jones)
 - SSCOP sometimes omitted the last element in a STAT PDU (fix - even with
   optimization vs. Q.2110 - by Ngo Bach Long)
 - atmarpd allowed ARP information to change permanent entries (found by Gerald
   Hanusch)
 - atmsigd's get_pvc used the maximum SDU size, thereby wasting buffer space
   very quickly, which led to signaling problems (reported by Richard Jones and
   Rik Wade)
 - oops, the BUGS file was always one version number ahead
 - ATMARP had a race between packets sent by the remote station and the
   ATMARP_MKIP ioctl. This caused the dreaded "unknown hw protocol 0xaaaa"
   error. (Finally fixed thanks to a dump provided by Patrick Flynn)
 - Arequipa had the same race for AREQUIPA_INCOMING. This probably caused the
   occasional "loss" (they were actually kept in vcc->recvq until the
   connection was closed) of the first packet(s).


Version 0.28 to 0.29 (4-APR-1997)
====================

Bug fixes
---------

 - saal/sscop.c: NORMALIZE macro was weird and broken (fix by Ngo Bach Long)
 - InARP queries didn't contain the target ATM address, even if it is known,
   which stretches the allowances RFC1577 makes for violating RFC1293 (found
   by Juha Heinanen)
 - tcp_conn_request: Arequipa modification to MTU size calculation used wrong
   socket (fix by Gerald Hanusch)
 - kernel ATMARP table handling had some obscure races
 - temporary work-around: added A2T_LOCAL when using A2T_NAME in atmsigd and
   atmarpd. Before, systems using ANS where the name server is reached via (IP
   over) ATM exhibited truly bizarre failure patterns when refreshing ATMARP
   entries. (With a lot of help from Juha Heinanen)
 - ditto for arequipad, although the effects were less dramatic
 - atmarpd: if not using -m, incoming connections for which a valid entry
   already existed (e.g. due to manual configuration) were not entered in the
   kernel ATMARP table until after the entry timed out for the first time (by
   Gerald Hanusch)
 - skb data areas are now aligned using skb_reserve instead of directly
   tampering with skb->data (and forgetting skb->tail in the process ...)
   (found by Uwe Dannowski)

New features
------------

 - atmarpd is now automatically notified of IP over ATM interfaces already
   existing at startup. This greatly simplifies the atmarpd restart ritual.
   (All ATMARP table entries and the default QoS are still lost, though.)

Other changes
-------------

 - cleaned up some weird and partially dead code in arpd/arp.c (found by
   Gerald Hanusch)
 - removed superfluous continue in arp.c:atmarp_setentry
 - device-driver specific declarations now reside in
   /usr/include/linux/atm_<drv_name>.h, so that disgusting hacks like
   #include "/usr/src/linux/..." can be avoided (based on proposal by Uwe
   Dannowski)
 - updated the list of supported NICs in README and the on-line help
 - arpd/atmarpd.8: documented that atmarpd -m may violate RFC1577 in subtle
   ways (pointed out by Gerald Hanusch)
 - updated MPR usage description to version 1.5 and removed mpr.patch
 - removed MEM_DEBUG from the build process (MPR 1.5 initializes itself
   automatically)


Version 0.27 to 0.28 (27-MAR-1997)
====================

Bug fixes
---------

 - atmarpd restarted timers on as_valid -> as_valid transitions, illegally
   delayed necessary refreshes (reported by Juha Heinanen)
 - SSCOP cleared POLL timer on IDLE timer expiry (fix by Ngo Bach Long)
 - atmsigd didn't initialize "now" soon enough, causing an unnecessary
   retransmission of the first BGN PDU (by Ngo Bach Long)
 - atmsigd responded to RELEASE COMPLETE in ss_rel_ind with a STATUS instead of
   entering ss_wait_close (by Steve Pope)

New features
------------

 - new tool aqpvc to declare incoming Arequipa traffic on a PVC to the system
   (caveat: removing such a PVC can turn out to be surprisingly difficult)

Other changes
-------------

 - removed some useless code in atmarpd's handling of VC disconnects
 - removed unused signaling state ss_hold (equivalent to ss_wait_rel)


Version 0.26 to 0.27 (11-MAR-1997)
====================

Bug fixes
---------

 - oops, forgot to include atm/lib/rtf2e164_cc.pl in the distribution
 - atmsigd's VCI allocation in -N mode was too simplistic and failed after some
   signaling activity (reported by Richard Jones)
 - atm_connect was rejecting ATM_{VPI,VCI}_ANY
 - aq_prev in the list of Arequipa connections wasn't set properly, leading to
   random crashes when using Arequipa (found and fixed by Richard Jones, after
   weeks of tearing his hair out)
 - arequipa_close didn't remove the Arequipa route, which kept the upper layer
   protocol connection alive for a rather long time (reported by Richard Jones)

New features
------------

 - ilmid enhancements: vastly improved retry mechanism, workaround for a bug in
   the ATML Virata switch, -v option for very detailed debug output (Scott
   Shumate)
 - atmsigd now also accepts the signaling VC as a command line argument
 - qos2text appended colon to traffic type even if nothing else followed
 - new program debug/aqtest to test Arequipa (based on work by Mehdi Tazi)

Other changes
-------------

 - added a few missing NULLs to struct atmdev_ops initialization in various
   drivers (this change does not alter any semantics)
 - changed  printk ...%lx... (unsigned long) ptr  to  ...%p... ptr at many
   places
 - removed atm/lib/rtf2cc.pl and atm/lib/cc.inc (they were only used by an
   interim version of cc_len)
 - atmarp's usage no longer contains lines longer than 80 characters
 - added get_logfile() and get_verbosity() to libatm (for ilmid, by Scott
   Shumate)
 - select() consumed CPU time unnecessarily if testing for one direction while
   there's a lot of activity in the other direction (e.g. atmarpd wasted cycles
   in select() for each outbound packet while waiting for ARP messages)
 - the value of ATM_AAL0 has changed (from zero to 13), so all programs using
   AAL0 need to be recompiled
 - MAX_ATM_QOS_LEN has changed, so most programs using qos2text need to be
   recompiled
 - the AAL can now also be set along with the QoS parameters. This approach
   should be used instead of specifying it in the socket() call.
 - if no AAL is specified, the kernel now defaults to AAL5 (was AAL0)
 - updated most demons, tools, and library functions to set the AAL along with
   the QoS parameters
   

Version 0.25 to 0.26 (29-JAN-1997)
====================

Bug fixes
---------

 - ATMARP VCCs could stay around forever even after timing out, because the
   process was not woken up.
 - the ATMARP "fix" in 0.25 introduced an infinite loop. Fixed that one too.
 - bit 8 in octets 6 and 7 of BLLI ("ext") were set to 1 instead of 0 when
   using ATM_L2_USER/ATM_L3_USER (reported by ukl2@rz.uni-karlsruhe.de)
 - qlib added silly offset (which fortunately happened to be zero most of the
   time) to dumps of large fields (fixed by Jean-Francois Moine)
 - IP over ATM restricted MTU changes to valid Ethernet MTU sizes
 - LANE: fixed two bugs that crashed zeppelin when the connection to the
   servers failed (by Marko Kiiskila)

New features
------------

 - lib/ans.c now properly computes the length of the country prefix of E.164
   addresses for reverse lookups (needs file /etc/e164_cc, see USAGE)
 - if the new -m option is set, atmarpd now merges incoming calls into the
   ATMARP table if the ATM address is known (see atmarpd.8 for details)
 - included an RPM spec file (this is still very experimental)
 - NICStAR driver now also works with IP over ATM (by Stuart Daniel)
 - usage.txt: added description of how to run ATM NICs back-to-back (by Richard
   Jones)

Other changes
-------------

 - signaling traces now also include SAAL up/down transitions
 - qgen no longer (unnecessarily) depends on libatm.a
 - started work on letting qgen handle items that appear at more than one
   place, e.g. repeated IEs (after an idea by Jean-Francois Moine)
 - did some cleanup and added comments to qlib.[ch]
 - added -m option to atmarp in config/redhat-4.0/atm.init
 - added new make target "filenames" to generate a list of all the files which
   are installed
 - config/redhat-4.0 now contains an example hosts.atm file and also a Makefile
   for more convenient installation
 - atmsigd now reads atmsigd.conf before parsing the command-line options,
   thereby allowing values set in the file to be superseeded
 - atmsigd now also logs the internal reference and the caller's address on
   calls establishment
 - ilmid: very dirty hack to give switches some time to process ILMI cold start
   (by Joseph Evans)


Version 0.24 to 0.25 (20-DEC-1996)
====================

Bug fixes
---------

 - net/atm/atmarp.c:idle_timer_check only expired every other entry (reported
   by Marko Kiiskila)

New features
------------

 - LANE now also supports IPX (SNAP and 802.3; by Marko Kiiskila)
 - NICStAR driver now supports VPI != 0 and has configurable settings in
   nicstar.h (by Stuart Daniel)

Other changes
-------------

 - ENI: TX DMA scratch are is now stored per device. This should allow multiple
   NICs to coexist.


Version 0.23 to 0.24 (29-NOV-1996)
====================

Bug fixes
---------

 - atm/test/window.c was missing in 0.23
 - atm/debug/delay didn't build unless atm/lib headers were already installed
   in /usr/include
 - atm/debug/znth had undefined return value
 - SSCOP: fixed typo (that could probably kill the SSCOP connection in case of
   a retransmission); fix by Olivier Bonaventure
 - corrected unnecessarily large buffer allocation in zatm.c:pool_index (by
   Jonathan Larmour)
 - hosts2ans.pl generated reverse addresses for the domain "ATM.INT" instead of
   "ATMA.INT"
 - atmarpd "forgot" any pre-set QOS when receiving new ARP information for the
   respective entry (reported by Gerald Hanusch)
 - window scale didn't scale the window sent in the SYNACK packet (reported by
   Juan-Antonio Ibanez)
 - LANE: better connection failure handling in zeppelin (by Marko Kiiskila)
 - LEC kernel timer wasn't restarted when restarting zeppelin (found by Gerald
   Hanusch, fixed by Marko Kiiskila)
 - LANE: le_flush_request was sent too early when establishing connection (by
   Marko Kiiskila)
 - zeppelin stopped operation (unwantedly) in random cases when LANE servers
   were down (by Marko Kiiskila)
 - LANE: non-blocking connections, VCC and LE ARP timeouts, and TLV fields in
   LE_CONFIG_RESPONSE fixed (by Marko Kiiskila)

New features
------------

 - atm2text now also uses ANS
 - signaling traces now also contain error reports from qgen
 - added new build-time configuration option "CISCO" (in atm/Rules.make) to
   work around a bug in Cisco's point-to-multipoint signaling
 - included example configuration files for RedHat 4.0 (see
   atm/config/redhat-4.0/README)

Other changes
-------------

 - local variable "link" in atm/debug/delay.c:loop was shadowing "link" system
   call
 - cleaned up various Makefiles
 - qgen: bytes left in qet_space are now more meaningful
 - named (ANS) now also starts even if atmsigd is not running and retries to
   create the ATM socket in 15 minute intervals until is succeeds (by Marko
   Kiiskila)
 - LANE: (too) short le_flush_responses (Cisco 7010, sw ??.??) are now handled
   (by Marko Kiiskila)


Version 0.22 to 0.23 (16-NOV-1996)
====================

Bug fixes
---------

 - fixed stupid typos in atm/lib/atmres.h and an unnecessary dependency on
   libresolv.a in atm/lib/Makefile (reported by Gerald Hanusch)
 - fixed warning about implicit declaration of function bigphysarea_init in
   init/main.c
 - I think I fixed the SSCOP VR(MR) problems that were first reported by
   Edouard Lamboray in '95, then by Heinz Schuerch, and that finally led to a
   total SSCOP breakdown (in 0.22) reported by Gerald Hanusch

New features
------------

 - integrated the IDT 77201 (NICStAR) driver by Matt Welsh and Stuart Daniel
   <stuartd@eecs.umich.edu>. Note that this driver currently only supports
   native ATM.
 - new throughput and latency benchmark test/window (by Matt Welsh)

Other changes
-------------

 - upgrade to kernel version 2.0.25
 - changed drivers/atm/eni.c:do_tx:dma to static in order to reduce kernel
   stack use (by 480 bytes). Note that this hack may crash systems with more
   than one ENI adapter.
 - qlib now also complains if changing a field without a fixed list of values
 - made a few changes to the native ATM data delivery path to handle some
   strangeness required by the IDT driver


Version 0.21 to 0.22 (13-NOV-1996)
====================

Bug fixes
---------

 - (dummy) depend target was missing in atm/man (reported by Bernd Wolf)
 - net/atm/arequipa.c:make_aq_vcc didn't set ATM_VF_AQINUSE, thereby allowing
   race conditions to slip through
 - fixed a few potential race conditions when activating Arequipa
 - text2qos didn't complain if unit was omitted after multiplier, allowing
   misleading settings like pcr=50M (that's 19.2 Gbps)
 - SSCOP: took wrong branch if POLL_AFTER_RETRANSMISSION was enabled (fix by
   Jonathan Larmour)
 - SSCOP: rel_ind for ENDAK and BGREJ PDU in sscop_inconn was sent with "user"
   = 1 (must be 0 for "Source := SSCOP")
 - initialize_vr_mr now initializes vr_mr to a constant value (instead of
   garbage plus constant value)
 - atm_recvmsg now ignores msg->msg_name, as it should by POSIX 1003.1g (fix by
   Mike Wooten)
 - atm_sendmsg now fails with EISCONN instead of with EINVAL if msg->msg_name
   is set, as it should by POSIX 1003.1g (reported by Mike Wooten)
 - atm_recvmsg and atm_sendmsg now return ENOTCONN if not connected and
   EOPNOTSUP if flags are passed, as they should by POSIX 1003.1g
 - the QOS zeppelin uses for its connections can now be set with the option -q
 - atmarpd didn't include the QOS in PVC entries, so atmarp -a complained about
   them

New features
------------

 - kernel changes to support tcpdump with LANE (by Marko Kiiskila)
 - patch for tcpdump 3.0.4 (installed as tcpdump_atm) to support Classical IP
   and LANE (by Marko Kiiskila)
 - patch for BIND 4.9.5 to support ANS (ATM Name Service) functionality (by
   Marko Kiiskila)
 - added hierarchy extra/ for packages for which only patches are contained in
   the ATM on Linux distribution
 - enhanced text2atm to use ANS if local lookups fail (atm2text will be updated
   later)
 - wrote script extra/hosts2ans.pl to convert hosts.atm file to ANS zone files

Other changes
-------------

 - changed ATM_VF_AQINUSE to ATM_VF_AQDANG and changed aq_list membership to
   be for dangling VCs only
 - added the new command-line options to ttcp_atm's online help (finally !)
 - atm_sendmsg now returns error codes from the driver's send function
   (suggested by Jonathan Larmour)
 - text2qos now performs a syntax check if NULL is passed in the qos argument
 - various minor LANE cleanup (Marko Kiiskila)
 - upgraded to the latest version of t2a.pl
 - {A2T,T2A}_REMOTE is obsolete; instead, {A2T,T2A}_LOCAL should be used if
   ANS lookups are _not_ desired


Version 0.20 to 0.21 (18-OCT-1996)
====================

Bug fixes
---------

 - net/atm/common.c:atm_connect didn't refuse traffic_class == ATM_NONE in both
   directions
 - include/linux/atmsvc.h:SELECT_TOP_PCR didn't default to ATM_MAX_PCR if
   min_pcr == 0 && max_pcr == 0
 - debug/delay swallowed one-byte packets
 - oops, forgot man/Makefile, so qos.7 wasn't installed
 - atmarpd left max_sdu at zero for automatically generated entries
 - atmarpd now only uses the default QOS if the traffic type is set in neither
   direction
 - signaling: if the listen queue was full, new connections were rejected with
   as_close instead of as_reject, thereby upsetting atmsigd
 - svc_accept didn't adjust the listen queue quota when rejecting incoming
   connection requests
 - fixed a few bad font selections in atmsigd(8)

New features
------------

 - included the window scale patch by Randy Scott <scottr@belle.bork.com> and
   Robert Hill <rhill@tisl.ukans.edu>
 - -q option for ilmid to set the QOS (like in atmsigd)
 - new script mkbindist to install the utilities into a tar.gz file

Other changes
-------------

 - debug/delay now prints the usage if invoked without arguments
 - removed the pretentious usec resolution for delays in debug/delay
 - removed the UBR semantics change warning
 - qos.7: clarified that bps are the user data rate
 - arequipa_attach_unchecked now also adjusts the upper layer MTU (which can
   violate RFC1122, but I'll tackle that later)
 - text2qos now also accepts fractional values, e.g. 9.6kbps


Version 0.19 to 0.20 (14-OCT-1996)
====================

Bug fixes
---------

 - fixed a few typos and errors in the 0.18 to 0.19 change log
 - signaling traces only included hl_type bytes instead of hl_length
   bytes
 - TNET1570 driver: various fixes (DMA allocation, seg ring overflow,
   timeouts, etc.) (Christian Paetz)
 - TNET1570 driver: removed most compiler warnings (Christian Paetz)
 - listen() on an arequipa_preset() socket and arequipa_preset() on a listening
   socket now both return EPROTO
 - oops, forgot to enable the "rm" in  make uninstall
 - kernel didn't set interface number field in act_create messages to atmarpd

New features
------------

 - added ioctl ATM_SETSC to enable or disable RX and TX single-copy per VC
 - new device driver operation change_qos (not yet implemented)
 - TNET1570 driver supports DEC Alphas and 64 bit PCI transfer (for CIA PCI
   chipsets) (Christian Paetz)
 - TNET1570 driver also supports the UniNET1570 board (Christian Paetz)
 - new functions text2qos and qos2text to convert between textual and binary
   QOS specifications (the format is described in  man qos)
 - atmarp -q ip_addr qos  sets the default QOS to use for all VCs created for
   that IP interface
 - new utility debug/delay to use machine as AAL5-level delay line

Other changes
-------------

 - NLPIDs and vendor-specific application identifiers are now collected in
   the new file /usr/include/atmsap.h
 - SO_ATMQOS now attempts to change the QOS settings when invoked on an active
   connection
 - included Matt Welsh's bigphysarea patch (this isn't related to ATM, but it
   keeps my development source tree simpler)
 - arequipa_preset now initializes max_sdu to RFC1626_MTU+RFC1483LLC_LEN if
   zero
 - atmarp: new option  qos <spec>  to set the QOS parameters (uses text2qos)
   Use of  pcr <pcr>  is deprecated.
 - ttcp_atm's -P option now also accepts a QOS specification string. (use of
   -P <number>  is deprecated.
 - atmsigd: new option  -q <qos> and configuration clause  io qos <qos>  to
   set the QOS of the signaling VC. Use of  -P <pcr>  or  io pcr <pcr>  is
   deprecated.
 - removed the backward compatibility  #define class traffic_class  in
   linux/atm.h
 - removed obsolete keywords from atmsigd.conf language
 - atmarp -a now also includes QOS parameters
 - UBR now respects txtp.max_pcr if set
 - new rules for the use of [rt]xtp.traffic_class: both fields must be either
   equal or zero, e.g. ATM_CBR in TX and ATM_UBR in RX no longer works
 - doc/usage.tex now points to the man pages instead of repeating their content


Version 0.18 to 0.19 (27-SEP-1996)
====================

Bug fixes
---------

 - sscop.c:data_sd had a comparison inversed, so generation of USTAT PDUs was
   wrong in some cases (by Juhana Rasanen)
 - sigd_enq: accessed vcc->qos without checking for vcc == NULL, causing an
   "Oops" in atmaddr
 - svc_accept: generated a general protection fault when atmsigd was killed
   while a process was waiting for new incoming connections
 - atmaddr didn't zero the address structure before calling text2atm
 - LANE: fixed usage of kernel timers and LE_ARP_REQUESTs should now get sent
   until the entry expires or a response is received (by Marko Kiiskila)
 - less compiler warnings from LANE servers (Marko Kiiskila)
 - SSCOP: fixed SDU size in AA-RETRIEVE.indication (reported by Heinz Schuerch)
 - NULL encapsulation for ATMARP works now (reported by Gerald Hanusch)
 - fixed stray EINVAL from get{sock,peer}name on PVCs (reported by Gerald
   Hanusch)
 - clip now sets max_sdu to RFC1626_MTU+RFC1483LLC_LEN when using LLC/SNAP
   encapsulation
 - if parsing of a Q.2931 message fails, atmsigd now aborts the call instead of
   (stupidly) trying to process the incomplete and probably inconsistent data
 - SUNI driver didn't properly mask out unused highest bits of some statistics
   counters, thereby yielding absurdly high values
 - zatm: changed timing of RX channel closing, so the dreaded "can't close RX
   channel" message should be history
 - fixed race between Arequipa attachment due to packet reception and closing
   of the Arequipa VC
 - local address validity check (for ATM_???ADDR) was all wrong (reported by
   David Simpson)
 - message dumper ignored fatal errors if debugging was not enabled

New features
------------

 - man pages for lecs, les, bus, and zeppelin (Marko Kiiskila)
 - configuration file name for les and bus can be defined (Marko Kiiskila)
 - zatm: new kernel configuration option CONFIG_ATM_ZATM_EXACT_TS now supports
   reception timestamps with microsecond resolution (the accuracy is only in
   the ms range, though)
 - new utility znth (ZeitNet Timer History) to monitor timer synchronization
 - LANE now supports up to 4 LEC network interfaces (Marko Kiiskila)
 - the Q.2931 message parser now recovers nicely from IE errors, logs the
   event, and continues parsing. The higher layers of the signaling stack
   don't use this information yet, though.

Other changes
-------------

 - Arequipa's BHLI now uses a "vendor-specific application identifier" under
   the EPFL OUI
 - moved buffer/queue handling from lib/libatmd to saal/, because it is rather
   SSCOP-specific anyway
 - atm_release_vcc now complains if rx_inuse != 0 when closing (if this ever
   happens, it may point out dangerous races with upper layer protocols)
 - SO_ATMQOS now issues a warning when using UBR with {min,max}_pcr != 0
 - max_sdu is now set by atmarpd to MTU+RFC1483LLC_LEN (atmarp could still
   override this, if necessary)
 - atmdump: new option -i to display the arrival interval instead of the
   absolute time. Also changed the time format to be more readable.
 - updated the kernel configuration documentation to indicate that the SMC
   ATM Power155 adapters are compatible with the Efficient ENI-155
 - atmarpd now deletes the old table file (containing stale information) if
   invoked with -d (debug)


Version 0.17 to 0.18 (9-SEP-1996)
====================

Bug fixes
---------

 - atmsigd didn't respond to SETUP followed by RELEASE with a RELEASE COMPLETE
 - atmsigd now implements incoming call rejection (as_indicate -> as_close)
 - kernel now opens the VC before sending the as_accept. This a) allows to
   check if the parameters are acceptable, and b) avoids a race condition
   between the sender and the local VC open procedure, which frequently led to
   loss of the beginning of the first PDU sent on a new connection.
 - qdump: _q_parse used the wrong length when dumping variable-length fields,
   yielding a fatal internal error
 - clip didn't set rxtp.max_sdu
 - svc_accept didn't set ATM_VF_HASQOS, so getsockopt SO_ATMQOS didn't work
   (by Marko Kiiskila)
 - ttcp_atm calculated Mbps as 2^20 bits/sec instead of 10^6, thereby making
   all results come out approximately 5% too low (by Fraz Ahmad)
 - added $(LDLIBS) to linking of lane/lecs (by Lawrence MacIntyre)
 - interface number allocation in clip and atmarp did not check for collision
   with the respective other name space
 - atmarp's -c option didn't work when omitting the "atm" in the interface name

New features
------------

 - new man page: arequipad.8

Other changes
-------------

 - simplified the internal signaling protocol by adding the as_reject message
   (sent by kernel in response to as_indicate; not acknowledged by demon)
 - packets received from Arequipa are no longer forwarded to other hosts
 - further ilmid improvements to use RSTADDR less frequently (by Gerald
   Hanusch; with a slight modification)


Version 0.16 to 0.17 (2-SEP-1996)
====================

Bug fixes
---------

 - lib/diag.c didn't fflush when logging to a file
 - arequipad didn't accept the -l option
 - qgen: possible weird crashes because second.c:find_required accessed
   value->tag even if vt_id
 - qgen: fixed wrong PC indication in one error message in _q_parse
 - make spotless didn't know about new $(*PGMS) targets
 - atmsigd: fixed memory leak when sending messages to the kernel
 - atmarpd: fixed memory leak when sending messages to the network
 - atmsigd: didn't send final as_close when kernel closed connection
   immediately after requesting it (as_connect)
 - several minor corrections

New features
------------

 - added make target "uninstall" to remove all files installed by
   make install
 - atmsigd has two new options: -D dump_dir to set the dump directory and
   -t trace_length to set the length of the trace buffer
 - wrote a few man pages: atmarp.8, atmarpd.8, atmsigd.8, atmsigd.conf.4
 - added automatic support for memory debugging if MPR is installed (and
   included a patch to make MPR 1.1 work with ELF). atmarpd and atmsigd
   currently use this feature.

Other changes
-------------

 - changed "class" to "traffic_class" everywhere
 - make install  is now implemented in a more elegant way
 - q.dump is now much better at finding symbolic names for numbers
 - q.dump no longer prints zero-length fields
 - qgen no longer includes constructor "microcode" in dumper
 - atmarp now gives more informative error messages on ioctl failure
 - removed obsolete ioctls SIOCGIFATMADDR and SIOCSIFATMADDR
 - added hack to allow ilmid to be less hostile to locally configured addresses
   (by Gerald Hanusch; with slight modifications)
 - atmarpd now automatically sets ATF_PERM of PVC entries with NULL
   encapsulation


Version 0.15 to 0.16 (29-AUG-1996)
====================

Bug fixes
---------

 - fixed an "unterminated character constant" warning by CPP in qgen/uni3x
 - atm/sigd/q2931.c always tried to read the Cause IE of RELEASE COMPLETE
   messages even if it wasn't included
 - LANE: fixed buffer allocation and VCC timeouts (Marko Kiiskila)
 - LANE: when connecting directly to LES, name of the ELAN was not set
   properly (discoverd by Gerald Hanusch; fixed by Marko Kiiskila)
 - LANE, ATMARP, signaling: control sockets didn't account for messages sent
   back from demons (fixed by Marko Kiiskila)
 - permanent ATMARP entries for SVCs were ignored if no ATMARP server was
   configured (reported by Gerald Hanusch)
 - atmarp option "temp" mis-spelled as "term" (fixed by Gerald Hanusch)
 - forgot to undo experimental rcvbuf/sndbuf change to unsigned long
 - make modules didn't generate ATM modules
 - atmtcp_attach_hook wasn't defined when compiling ATMTCP as a module
 - ATM patch set dev->ip_atm to ether_arp in net/ppp.c and net/eql.c, so they
   failed to work as modules

New features
------------

 - added LANE servers (LECS, LES, and BUS) by Marko Kiiskila
 - Rules.make: new variable INSTROOT for easier cross-installation
 - atmsigd: added option -P to set the maximum PCR used on the signaling VC
 - atmarp: added option "pcr <value>" (proposed by Gerald Hanusch)
 - added the usual  -l <logfile>  option to arequipad

Other changes
-------------

 - upgrade to kernel version 2.0.14
 - SVCs can now be bound with any SEL value
 - messages of size > quota can be sent if the send buffer is empty
 - ilmid no longer empties the address list when refreshing the NSAP address
   (by Gerald Hanusch)
 - LANE client should now survive network reset (e.g. restart) gracefully
   (Marko Kiiskila)
 - LANE: major cleanup of zeppelin code (Marko Kiiskila)
 - improved loadable module support for eni and zatm (i.e. loading works now)
 - the message dumper can now be linked to programs that also use the
   compilation/parsing functions


Version 0.14 to 0.15 (31-JUL-1996)
====================

Bug fixes
---------

 - zatm: fixed traffic shaper settings for UBR (with a little help from Joern
   Wohlrab)
 - atmsigd compilation didn't use the same UNI version configuration as qgen
 - field "class" in struct atm_traform broke compilation of ATM applications
   written in C++, so it has been renamed to "traffic_class" (reported by
   Furquan Ansari)
 - AAL parameters IE wasn't included in CONNECT, which violated RFC1755
   (discovered by Robert Olsson)
 - zatm: removed broken sanity check for in-sequence skb delivery on RX
 - clip didn't have clip_open function, so SIOCSIFFLAGS on the interface failed
   with ENODEV
 - single-copy compiles again
 - zatm: driver doesn't pretend any longer to support single-copy (but
   single-copy will come back later)
 - QOS IE was sent with the wrong coding standard when using UNI 3.1 (with help
   from Fraz Ahmad)
 - zatm: forgot to remove some debugging code (around ZATM_TUNE)
 - qlib.c didn't zero the length array, leading to (rare) "not enough space"
   errors from QMSG (actually, the "break" mechanism seems to be flaky - will
   have to check)
 - fixed Arequipa race condition when the upper layer protocol and signaling
   decided to close the SVC at the same time
 - alloc_tx used to return NULL in out of memory conditions, thereby possibly
   hanging atm_sendmsg

New features
------------

 - ttcp_atm now also accepts names with -p
 - (finally !) added send/receive buffer limits and cleaned up the use of
   vcc->[rt]x_{inuse,quota}
 - added mkdiff script for automatic generation of diffs
 - Arequipa now works for PVCs too (but arequipad is now required for any
   use of Arequipa, not only for incoming connections)

Other changes
-------------

 - atm/atm-<version>.patch is now called atm/atm.patch (to make the diffs more
   useful)
 - the maximum SDU size is now checked in net/atm/common.c:adjust_tp
 - text2atm/atm2text now accepts/generates E.164 addresses with a leading +
   sign, as required by ANS (atm95-1532)
 - internal signaling protocol: added message as_error to un-overload as_close
 - internal signaling protocol: split as_establish into as_connect and
   as_accept
 - internal signaling prococol: as_close.reply no longer contains positive
   numbers
 - internal signaling prococol: as_bind now also carries the AAL type
 - atmsigd: now also checks the AAL type in as_bind messages
 - kernel signaling: a few minor changes
 - STANDARDS (i.e. UNI version) configuration option has been moved from
   atm/qgen/Makefile to atm/Rules.make
 - atmsigd's startup message now gives more useful indication of which UNI
   version(s) it supports
 - signaling no longer uses sa[sp]_[rt]xtp, so ...
 - sa[sp]_[rt]xtp is gone
 - removed atm/sigd/svc.c from the distribution. We now have many other tools
   for testing SVCs, so it's superfluous.
 - atmarpd: revalidation is now less frequent (use -DFREQUENT_REVAL for
   the faster timeout)
 - ioctl CLIP_PVC now returns the number of the new interface and clip prints
   its name to standard output (like atmarp -c)
 - clip now issues the CLIP_PVC ioctl after binding, which avoids wasting
   interface numbers on failed setup attempts
 - atmsigd -d now sets the debug level for qgen and SSCOP to DIAG_INFO, and
   doesn't set q_dump
 - zatm: added protection against I > M
 - atm_peek_aal5 now only aligns to page boundaries for pdu_size >= PAGE_SIZE
 - eni driver now spits out CRC error messages at most every other second
 - zatm driver now repeats RX error messages at most every other second
 - ttcp_atm now sleeps for a second after setting up an SVC, because the
   switch seems to lag behind (need to examine this further)
 - moved SAAL from sigd/ to saal/ (for sharing with UNI 4.0 signaling)
 - Arequipa sockets are now closed via arequipad instead of via atmsigd (new
   ioctls AREQUIPA_CTRL and AREQUIPA_CLS3RD)
 - various minor changes


Version 0.13 to 0.14 (19-JUL-1996)
====================

Bug fixes
---------

 - LANE: reaction to LE_ARP_RESPONSE's wasn't always correct
 - LANE: compiler warnings fixed
 - LANE: comparing ATM addresses in checking whether connection is formed was
   wrong
 - zntune didn't divide by 1024 when displaying the "k"
 - .depend wasn't deleted by make spotless
 - ATM_GETSTAT and ATM_GETSTATZ used wrong argument type for coding ioctl
   number. WARNING: programs using ATM_GETSTAT{,Z} need to be recompiled.
 - requests to set up SVCs with ATM_NONE in both directions are now caught by
   svc_connect (used to yield an invalid SETUP message)
 - signaling: fixed connection identifier setting when acting as network side
   (fix by Elwyn B Davies)
 - ATMARP server ARP entries were undeletable
 - atmarp showed wrong argument in error message when given an invalid ATM
   address
 - zatm: do_tx left interrupts turned off when returning with RING_BUSY
 - LANE ARP hash table handling bugs fixed
 - atmarp: act_create is now only sent on interface creation
 - atmarp: act_down is now only sent once per transition
 - demon control SVCs are no longer closed when atmsigd dies (new VCC flag
   ATM_VF_META)
 - netdevice notifier is now properly unregistered when atmarpd goes down
   (not doing so caused endless loop in kernel on atmarpd restart)
 - sigd_enq{_atomic} never calls schedule()
 - atmsigd no longer "forgets" to bring up ARP server SVC before sending an
   InARP
 - atmarpd no longer dies with "timer in state 3" when the ARP server becomes
   unreachable
 - atm/atmarp.c: clip_create() now refuses creation of already existing
   interface
 - Documentation/Configure.help gave an obsolete URL for CONFIG_AREQUIPA
   and doc/usage.tex also mentioned the old file name
 - Arequipa didn't work in the outbound direction for TCP, because
   net/ipv4/tcp.c was missing in the kernel patch
 - drivers/atm/eni.c:foo raced with initialization of eni_boards if the
   board lost the signal _immediately_ after being initialized
 - atmarpd: fixed a few uninitialized entry->timer pointers (discovered by
   Gerald Hanusch)
 - atmarpd: arps entry should no longer get stuck in as_resolv

New features
------------

 - compiles on SparcLinux too (but only atmtcp works)

Other changes
-------------

 - upgrade to kernel version 2.0.0
 - BHLI matching changed: SAPs without BHLI are now incompatible with calls
   that specify a BHLI
 - LANE: interface stays up when zeppelin dies -> possibility for
   wrapper script around zeppelin
 - LANE: LUNI interoperability test (ATM Forum/96-0805) is now followed
   in setting ELAN name in LE_CONFIG_RESPONSE and LE_JOIN_RESPONSE,
   there is also a delay of 1 second before sending LE_CONFIG_REQUEST and
   LE_JOIN_REQUEST. This allows 'slow' LE servers to catch up.
 - LANE: no longer uses sa[sp]_[rt]xtp
 - LANE: now adjusts better to ATM address changes
 - zeppelin: new option -m to select debugging output
 - updated aping, aread, awrite, br, bw, atmdump, ilmid, atmarp, clip, atmarpd,
   and zeppelin to use setsockopt SO_ATMQOS
 - added option -x for ilmid to disable variable bindings (caused
   interoperability problems with certain switches, e.g. the LS100)
 - changed SO_CIRANGE into a pair of ioctls
 - changed return value of fetch() (passed to atm_vcc->peek) from unsigned long
   to __u32
 - atmarp now accepts  arpsrv  option also for -d
 - zatm driver can now also read ESIs of rev. 10 boards (with help from Nikos
   Anerousis)
 - awrite: fixed txtp.max_sdu calculation in awrite (was using uninitialized
   variable "offset")
 - atmarpd: IP interface removal now has the desired effect (used to do
   nothing)
 - atmarpd: now reports and ignores unexpected interface transitions
 - added sigd_enq_atomic for atomic sigd_enq (so that non-Arequipa SVCs can
   still use the "safe" but non-atomic version)
 - made SIOCGIF* failures in atmarpd non-fatal (itf.c:itf_up was handling them
   anyway)
 - moved Arequipa-specific code from net/atm/clip.c to net/atm/arequipa.c, and
   put code common to CLIP, Arequipa, and - to a lesser extent - ATMARP into
   net/atm/ipcommon.[ch]
 - Arequipa can now be complied without CLIP
 - various minor documentation changes
 - moved ATM device initialization from net/atm/pvc.c to drivers/block/genhd.c,
   where most other devices are initialized too
 - preparation for new binary locations: tools build process now knows about
   four types of programs: for booting, for system use, for users, and for
   internal use during build
 - make install  now hides the  for  loops
 - non-user binaries are now installed in /usr/local/sbin
 - struct atm_iobuf.buffer is now of type void * (was int*). Also,
   ATM_GETNAMES now returns the length in bytes in that field.


Version 0.12 to 0.13 (7-JUN-1996)
====================

Bug fixes
---------

 - BHLI type used the ATM_HL_* values (which are off by one) in qgen/uni3x
 - atmarpd ended up in a tight select-accept loop if atmsigd went away
 - removed sleep in ZATM's do_tx (so it works with IP over ATM again)

New features
------------

 - added experimental support for Application requested IP over ATM (Arequipa),
   prototyped by Jean-Michel Pittet
 - new traffic class ATM_ANYCLASS to accept incoming SVCs without looking at
   the traffic parameters
 - added (untested) support for SO_BCTXOPT/SO_BCRXOPT

Other changes
-------------

 - SVCs used to listen are now marked as "LISTEN" in /proc/atm/svc
 - added option -Q <atm_addr> to ttcp_atm to support AREQUIPA
 - cleaned up the FILE macro and removed atm_dir in net/atm/proc.c


Version 0.11 to 0.12 (3-JUN-1996)
====================

Bug fixes
---------

 - atm/lib/Makefile: had to comment out PGMS=test
 - distribution didn't include atm/doc/usage.txt
 - patch didn't include arch/i386/config.in
 - return 0;  was missing at the end of net/atm/mmuio.c:mmu_step
 - atm/ilmid didn't install into INSTBIN; also made some other Makefile
   changes
 - read() returned garbage instead of error when network drops connections
 - POLL_AFTER_RETRANSMISSION in SSCOP didn't even compile
 - SVCs: bind to wildcard addresses should now work even if no local address
   is known yet
 - make clean  in atm/qgen left some dirt
 - ATM drivers didn't free skbs when detecting an error in TX direction
 - SIOCMKCLIP was in the wrong #ifdef, so CLIP had to be enabled to make
   ATMARP usable
 - signaling didn't respond properly to messages with non-existent call
   reference

New features
------------

 - merged in LAN Emulation client support written by Marko Kiiskila
 - new socket option SO_ATMQOS at SOL_ATM to set/get QOS parameters

Other changes
-------------

 - t2a.pl now also works with Perl 5.001
 - changed the TX side of the ZATM driver to use a ring instead of a list in
   order to improve stability and throughput (needs some more testing)


Version 0.10 to 0.11 (21-MAY-1996)
====================

Bug fixes
---------

 - README.DRIVERS still referenced INSTALL (it's now in USAGE)
 - sap_decode didn't clear BLLI part of address structure
 - trying to connect to NULL address fails locally instead of yielding an
   invalid SETUP message
 - bind now properly sets the local address
 - SVC getname now returns the traffic parameters
 - oops, zatm open_tx didn't return PCR
 - awrite printed errors for connect() as "bind: ..."
 - atmsigd no longer generates dummy call references (0x7fffff)
 - atmtcp: changed a few kfree_skb to dev_kfree_skb, which should make it
   work better (does anybody care to try ?)
 - some more dev_kfree_skb fixed for control messages from or to demons (led
   to some minor memory leaks)
 - various major fixes for CBR SVCs
 - RELEASE was signaled for SVCs before all data was sent
 - single copy tried to access mem_map with user space addresses, leading to
   crashes or worse
 - zatm: sleep_on was racing with TX completion in close_tx, leading to hangs
 - zatm: now fails attempts to open AAL0 VCs (used to accept them and to
   crash later)
 - BHLI encoding/decoding was broken in several ways

New features
------------

 - hacked in primitive leaf-only p2m support (based on an idea by Marko
   Kiiskil{)
 - the socket layer, and the zatm, eni, and atmtcp drivers now support
   two-phase connect
 - PVCs now respect max_pcr (SVCs can't for now)
 - lib/diag.c can now also log to a file or to syslog, and atmarpd, atmsigd,
   and ilmid now have a -l option to use that
 - new option  -c config_file  for atmsigd
 - zatm and atmtcp now also support timestamps (but zatm timestamps can be
   improved a lot by using the timestamps the uPD98401 generates)
 - Classical IP over ATM support is now configurable
 - added on-line help texts for configuration
 - added atm/test/aping, a round-trip tester for PVCs
 - added "flags" field to struct atm_dev and to atm_dev_register, on request
   by Bureau 13

Other changes
-------------

 - past versions of the BUGS list aren't included in the distribution anymore
   because I didn't update them anyway
 - invalid connect() calls now return an error instead of panicing atmsigd
 - text2atm no longer clobbers sas_addr.{blli,bhli}
 - greatly simplified zatm traffic shaper settings calculation (and it's
   better than before too)
 - atmsigd: diagnostics class "sig" (in atmsigd.conf) now also includes "SAP"
 - DPRINTK now uses GNU-specific #define foo(bar...)
 - signaling: PCR is now also indicated (0) for directions in which ATM_NONE
   is requested, which is probably "cleaner" (for CBR)
 - added logging priorities to most printks
 - the default location for atmsigd.conf changed from . to /etc
 - ipv4/af_inet.c: atmtcp_attach_hook is now only included when using ATM over
   TCP
 - configuration options for extended driver debugging, (old) CLIP, and
   ATM over TCP are turned off by default


Version 0.9 to 0.10 (21-MAR-1996)
===================

Bug fixes
---------

 - zatm: deallocated UBR shaper when closing UBR VC, which the other UBR VCs
   didn't really appreciate
 - fixed nasty memory leak for native ATM (spotted by Rolf Fiedler)

New features
------------

 - added Rolf Fiedler's driver for his adapter based on the TI TNETA1570
 - single-copy is back again !

Other changes
-------------

 - eni buffers are now slightly (50%) bigger, allowing for more effective
   overlapped operations
 - documented zntune


Version 0.8 to 0.9 (14-MAR-1996)
==================

Bug fixes
---------

 - oops, accidently removed ZN1221 from drivers/pci/pci.c (so /proc/pci
   reported it as "unknown")
 - sigd didn't poll for the default interface on startup
 - atmarpd didn't initialize timer field in newly allocated table entries,
   which led to crashes
 - removed a few stray debugging printks in net/atm/svc.c:svc_bind
 - ATMARP tried to send queued packet before adding new table entry, so the
   packet was always discarded
 - sigd/sap.c: didn't allow to use different traffic classes for fwd and bwd
   direction
 - atm2text accepted SVC addresses of all zeroes
 - atmsigd didn't refresh its local address list properly after ilmid restart
 - net/atm/common.c: returned positive error codes (-vcc->reply) instead of
   negative ones
 - forgot to include maint/zntune.c in the distribution

New features
------------

 - sigd/svc now accepts ATM addresses in all formats supported by text2atm

Other changes
-------------

 - upgraded to kernel version 1.3.73
 - the called party number must now match the local address (if bound)
 - renamed ttcp.atm to ttcp_atm
 - all executables are now explicitly linked (so make works even without
   dependencies)


Version 0.7 to 0.8 (12-MAR-1996)
==================

Bug fixes
---------

 - fixed stray segmentation violation in arpd/arp.c:learn
 - fixed coding standard of the QoS IE if using UNI 3.0 (and made coding
   standard variable)
 - made coding standard variable for Cause IE
 - SSCOP didn't properly set N(MR)
 - list elements in STAT PDUs had host byte order
 - SSCF didn't call sscop_estab_resp on restart (AA-EST.ind in 1/1)
 - signaling didn't handle SAPs with >= 2 BLLI IEs properly
 - uni3x: iso_hli and user_hli were confined to 7 bytes, but UNI allows up to 8
 - q_read choked on non-variable-length fields
 - qgen sometimes didn't read all IEs of a signaling message
 - fixed usage line of test/bw
 - qgen no longer complains about missing required fields after a break
 - fixed compiler warning in zntune.c
 - fixed ATMARP table additions (caused GPF when flushing ATMARP entry at
   the end of the table and possibly other problems)
 - qgen: q_put or'ed data instead of overwriting it, which caused problems
   only on surprisingly few occasions

New features
------------

 - atm2text and text2atm now also do name lookups via a /etc/hosts.atm file
 - atmaddr, atmarpd, and atmsigd now pretty-print addresses using name
   translation (unless invoked with -n)
 - atmarpd now dumps its table into /var/run/atmarpd.table and atmarp -a
   reads it from there
 - started modularizing the ENI and ZATM drivers
 - ilmid and atmsigd now support multiple interfaces (untested)

Other changes
-------------

 - the documentation is now available in LaTeX and in ASCII
 - rewrote most of the SAP handling code (now everything is in sigd/sap.c)
 - proto.c:lookup_sap now picks wildcard SAP last
 - signaling always includes SSCS type = 0 in SETUP messages (for LANE)
 - changed the message format for the the kernel-demon signaling protocol
 - qgen is now a bit more tolerant when being fed with bad data
 - qgen now assumes that q_report(Q_FATAL,...) doesn't return
 - marked sigd/test.c as obsolete
 - svc_accept failing in atm_connect no longer returns success
 - atmsigd -n is now atmsigd -N
 - qgen now puts the PC in q.out.c and qd.out.c at the beginning of the code
   line and not on a line by itself


Version 0.6 to 0.7 (2-FEB-1996)
==================

Bug fixes
---------

 - removed TTL setting ioctl (1234) used for something entirely unrelated to
   ATM, oops
 - changed kfree_skb in atm_pop_raw to dev_kfree_skb (this fixes the socket
   "leak")
 - more unusual configurations (no PCI, no IP, no /proc) should compile now
 - atm_equal didn't recognize wildcards in embedded E.164 addresses
 - fixed net/atm/proc.c:svc_addr (too many bugs to mention)
 - atmarpd didn't check for ARP traffic on inbound connections
 - atmarpd didn't properly merge incoming connections with existing entries
 - various other ATMARP fixes
 - free list was too short in ENI driver for worst case fragmentation on
   2 MB boards
 - signaling didn't set ISO/IEC TR9577 IPI and NLPID correctly in active open
 - getname looked at *sockaddr_len, which is uninitialized (need to fix this
   later in the common socket code)
 - SSCOP generated incorrect error code ("1" instead of "B") for BGN PDU
   problems

New features
------------

 - new ioctls ATM_GETADDR, ATM_RSTADDR, ATM_ADDADDR, and ATM_DELADDR to
   manage local ATM addresses
 - signaling now handles incoming RESTART, SAAL failure, and SAAL
   re-establishment
 - ATMARP now times out idle connection; ATMARP_MKIP ioctl takes a timeout
   argument
 - ATMARP (kernel) now queues one skb per pending ARP request and limits the
   rate of requests for the same address (default 2 req/min)
 - atmsigd now prints cause values when receiving a RELEASE or a RELEASE
   COMPLETE and returns more informative error codes
 - atmarpd falls back to PVC-only operation if signaling is unavailable at
   startup
 - kernel can now assign next free number on IP interface creation (atmarp
   prints the interface name)
 - qgen -D generates a Q.2931 message dumper (see USAGE for details)
 - qgen now checks for proper use of repetition indicator (but doesn't
   support repeated IEs yet)
 - protocols and device drivers can now use their own memory allocator in the
   TX direction by changing vcc->alloc_tx

Other changes
-------------

 - upgraded to kernel version 1.3.53
 - build process now uses Perl
 - ATM ioctls writing back data now always return the size of the data
   structure written
 - struct atmif_sioc now has a length field (recompile all atmarpd, ilmid,
   debug/ed, and everything in maint)
 - PHY driver no longer has to check validity (permissions and access) for
   "standard" ioctls
 - signaling should now also work on an interface > 0 (but there's still only
   one interface using signaling per host)
 - make install  now adds /usr/include/atm.h and /usr/include/atmd.h
 - atmarpd now also displays if SVC has been opened actively or passively
 - atmaddr(8) now uses new ioctls and has different command-line syntax
   and even has a man page
 - example IP addresses in USAGE now conform to RFC1597
 - diagnostics now also include the application name (optional)


Version 0.5 to 0.6 (21-DEC-1995)
==================

Bug fixes
---------

 - ARP ioctls stopped working for most non-ATM devices, oops
 - ATMTCP driver counted lack of memory as rx_err instead of rx_drop
 - select on driver using polling may have hung
 - atmarp man page and usage didn't indicate that the interface number is
   optional
 - restricted atmarpd and signaling control, and SIOCSIFATMADDR to the super
   user
 - atmtcp: fixed handling of VPI/VCI <= 0 for setsockopt(SO_CIRANGE)
 - eni and zn driver had static UBR shaper pointer, making it difficult to have
   more than one such device per system
 - eni driver initialization didn't work properly in systems with ASIC Tonga
 - suni.[ch]: confused MC (Master Config) and MCT (Master ConTrol) registers
 - (SVC) accept now returns PVC -EAGAIN as -EBUSY because the operation cannot
   be retried
 - qgen: fixed several bugs in case handling (and made defaults work for
   parsing)
 - svc_dup passed PF_ATMSVC instead of AAL to svc_create
 - plugged a few skb leaks in svc_accept
 - text2atm didn't properly NUL-terminate E.164 addresses

New features
------------

 - ZN1221 driver works partially for AAL5 (still hangs after a few dozen MB)
   (also wrote maint/zntune to monitor/adjust free buffer pools)
 - ENI driver now supports new Tonga ASIC boards
 - added Scott Shumate's ILMI demon (for automatic address registration)
 - text2atm: added wildcard support for SVCs (syntax: addr/bits)
 - new library function atm_equal to compare SVC addresses
 - new ioctl ATM_GETTYPE to obtain interface type name
 - new ioctl ATM_GETESI to obtain ESI (parallels /proc/atm/devices)
 - new ioctls SONET_SETFRAMING, SONET_GETFRAMING, and SONET_GETFRSENSE to
   handle SONET vs. SDH framing
 - added socket option SO_AALTYPE (SOL_AAL) to query AAL type (getsockopt
   only)
 - signaling demon is now notified on address changes (new message
   as_itf_notify)

Other changes
-------------

 - known bugs are now listed in a file called BUGS
 - all utility programs (aread, awrite, atmdump, br, bw, clip, ttcp) now use
   the notation [itf.]vpi.vci for PVCs (was  itf vpi vci , except for ttcp,
   where it was only  vpi vci  (no itf))
 - all ioctl values have changed
   Note: most programs have to be recompiled because of this
 - sigd and arpd now register their control sockets via ioctls
 - (old) clip now creates interfaces with an ioctl
 - text2atm now returns the wildcard length, i.e. a non-zero return value
   no longer implies failure
 - push_oam now returns an int (was void)
 - push_oam now has several flags (in a bit set) instead of the immed
   argument
 - the peek function must now update the statistics if it rejects a packet
 - (ATM device) close is now only invoked after a successful open
 - the SUNI_GETLOOP ioctl now has an int * argument (was unsigned long *)
 - uPD98402 driver no longer tries to detect return of the signal (didn't
   work anyway - would have to sample section errors)
 - ATMARP no longer supports mixed PVC/SVC entries (I'm sure this will be
   missed a lot :-)
 - ATMARP no longer supports "IP address discovery" via InARP for PVCs
   (maybe later)
 - specifying an invalid AAL now yields EPROTOTYPE
 - specifying an invalid address family (connect, bind) now yields EAFNOSUPPORT
 - make install  now also installs libraries (in /usr/lib)
 - improved many header file comments
 - re-arranged some comments to simplify automated document generation
 - added copyright statement
 - UNI 3.0 IE fields are now always recognized (but we shouldn't generate them)
 - UNI 3.0 wants octet 5a when using BCOB-X, so we'll set it to twice "No
   indication"
 - aread, awrite, br, bw, ttcp, atmsigd, and atmdump now set max_sdu
 - aread and awrite no longer print strerror(errno) on success


Version 0.4 to 0.5 (26-OCT-1995)
==================

Bug fixes
---------

 - now only root can open a CLIP socket (thereby creating an IP interface)
 - now only root can issue CLIP_NULENCAP and CLIP_LLCENCAP ioctls
 - atmdump: forgot  default  in getopt switch
 - eni driver: called misc_int on every interrupt
 - Q.2931 message description: various fixes and improvements
 - linux/atm.h: ATM_*_UNSPEC used the same value as ATM_*_ANY, oops !
 - SSCOP is now more careful about not accessing the descriptor if it might
   possibly have been deleted
 - typo in SSCF leading to wrong response to AA-RECOVER.indication
 - SSCOP now correctly copies N(PS) from POLL to STAT PDUs
 - SSCF now discards data when not ready instead of issuing a fatal error
 - AAL initialization failure no longer leaks memory
 - closing an SVC without VCC no longer yields a GPF

New features
------------

 - ZN1221 driver is starting to work
 - new, ARP-based mechanism for IP over ATM (with atmarpd, atmarp, etc.)
 - /proc/atm/pvc now displays more information for CLIP PVCs (after a patch
   by Raghavan Menon)
 - added max_pcr to struct atm_trafprm (also fixed a few comments in atm.h)
   Note: all programs using sockaddr_atm* will have to be recompiled.
 - qgen now handles value lists in named selections
 - signaling now supports bhli/blli, plus various other minor extensions
 - new ioctls to set/get local ATM address
 - added library with address to/from text conversion functions
 - finally implemented getname()

Other changes
-------------

 - eni driver: avoided potential generation of superfluous code if extended
   debugging is disabled
 - eni driver: detects new boards using ASIC PCI chip (doesn't support them
   yet, though)
 - qgen: semicolon is now comment character and no longer used to terminate
   clauses
 - qgen: replaced term "item" with "field"
 - linux/include/atmsap.h: removed obsolete comment "protocol cannot be fully
   encoded in current structure". Also re-arranged some comments to simplify
   automated document generation.
 - saal,sscf,sscop: callbacks don't pass the pointer to the descriptor of the
   calling protocol anymore
 - SSCOP no longer prints a number for non-'V' errors
 - improved handling of STATUS messages
 - select now indicates ready for writing if max_sdu packet can be enqueued
   without blocking
 - select can now also be used to check status of non-blocking connect
 - moved some common demon functions from sigd into a common demon library


Version 0.3 to 0.4 (27-SEP-1995)
==================

Bug fixes
---------

 - various minor documentation fixes
 - clip.c:atm_push_clip now updates statistics before forwarding the skb to
   the upper layer (which may free and overwrite the skb)

New features
------------

 - added partial UNI 3.x signaling
 - added various adapter debugging programs to the distribution
 - new config option CONFIG_ATM_ENI_DEBUG to enable extended debugging
   in eni driver

Other changes
-------------

 - upgraded to kernel version 1.3.24
 - changed the distribution directory structure (programs are now in maint/,
   test/, ip/, debug/, and sigd/, see INSTALL)
 - ATM interfaces are no longer named, only numbered. This affects the
   ATM_GETNAMES ioctl, all ioctls using struct atmif_sioc, the usage of atmdiag
   and sonetdiag, and various diagnostic kernel messages.
 - ATM socket state is now recorded in field "flags" (this also replaces the
   SVC fields "released", "registered", and "state")
 - added #ifdef __KERNEL__ to some header files
 - added "int immed" argument to send_oam
 - some minor modifications to the distribution process (mkdist)
 - removed devmap.c
 - SVC sockets no longer hang if the signaling demon dies


Version 0.2 to 0.3 (8-SEP-1995)
==================

Bug fixes
---------

 - select(2) didn't work (was sleeping on sock->wait instead of
   &ATM_SD(sock)->sleep)
 - ENI driver did allow binding to VPI/VCI already in use
 - ENI driver now properly handles PDUs with CRC errors
 - ENI driver had race condition when discarding PDUs causing new PDUs to be
   shifted in adapter memory by one word (which confused the driver quite a
   bit)
 - ENI driver now enables VC _after_ setting all pointers (caused crashes if
   data was already coming in while opening VC)
 - various bugs fixes related to SVC sockets
 - fixed GPF (in kernel) when running atmdiag without arguments
 - atmdiag now left-adjusts interface names
 - fixed ttcp.atm crash when not specifying vpi.vci
 - clip_xmit now checks for NULL vcc (e.g. after failure to connect)

New features
------------

 - zatm driver now reads ESI correctly
 - blocking svc_connect is now interruptible
 - atmdump now also displays the numeric PTI value of incoming cells
 - added RX/TX buffer quotas (default is 64 kB)
 - added OAM hooks to device driver interface (but there's no OAM support yet)

Other changes
-------------

 - ENI driver now checks ID field of reassembly buffer descriptors
 - ENI driver now uses vremap
 - ENI driver now prints more useful physical layer type information (e.g.
   "MMF" and "UTP" instead of "UTOPIA")
 - some redesign of the protocol used for signaling between kernel and demon
 - disabled "Grr, servicing VCC twice" message in ENI driver
 - device drivers now have to adapt AAL0 cell header byte order
 - some cleanup in common.c:atm_getsockopt
 - device drivers are now required to use the peek function; protocols now
   must provide it


Version 0.1 to 0.2 (15-AUG-1995)
==================

Bug fixes
---------

 - VCC family field is now correctly set to protocol family in
   common.c:atm_create (was pvc.c:pvc_create). With protocol set to zero,
   this created all types of strange problems, because the family field
   is used to indicate whether an VCC slot is busy/free.
 - fixed race condition in common.c:atm_read (reader might have blocked
   even if data is ready)
 - fixed dereferencing of uninitialized skb->dev pointer in
   clip.c:atm_push_clip
 - SIOCSIFATMTCP now refuses to attach the same socket twice
 - zatm.c: fixed setting of the VPI/VCI mask
 - USAGE said ttcp uses -B for the bandwidth, but it's -P
 - mkdist didn't include man pages

New features
------------

 - added some /proc/atm functionality
 - added support for ATM_{VPI,VCI}_ANY
 - SIOCSIFATMTCP now returns the interface number and atmtcp(8) prints it
 - wrote atmtcp man page
 - added kernel part of SVC support

Other changes
-------------

 - common.c: only root is now allowed to bind to reserved VCIs
 - Classical IP interfaces are now removed by downing by ifconfig; clip(8)
   returns immediately
 - PVC-connect for non-existing device now returns ENODEV instead of EINVAL
 - new field (type) in struct atm_dev to indicate device type
 - moved getsockopt(SO_CIRANGE) to common.c (removed atmtcp's own version)
 - added ci_range to struct atm_dev (and removed it from atmtcp's private
   structure)
 - added code to read the ESI to zatm.c (but that code doesn't seem to work
   yet)
