2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* isis_zebra.c: (isis_zebra_if_del) Call if_delete_retain instead
	  of if_delete, since it is generally not safe to remove interface
	  structures.  After deleting, set ifp->ifindex to IFINDEX_INTERNAL.
	  (zebra_interface_if_lookup) Tighten up code.

2005-03-07 Michael Sandee <voidptr@voidptr.sboost.org>

	* isis_spf.c: host.name might be NULL.

2005-02-23 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* isis_main.c: (reload) Call vty_reset instead of vty_finish (both
	  functions were exactly the same).

2005-01-18 Hasso Tepper <hasso at quagga.net>

	* *.c: Changed many functions to static. Some commented out
	  functions and some tiny related fixes. No functional changes.

2005-01-01 Hasso Tepper <hasso at quagga.net>

	* isis_common.h, isisd.c, isis_pdu.c: Implement authentication in
	  SNPs correctly - ie. make it conditional like it is in IOS.

2004-12-29 Hasso Tepper <hasso at quagga.net>

	* isis_circuit.c, isis_csm.c, isis_zebra.c: Don't crash during
	  interface up/down events. I'm not sure whether logic is correct
	  though. Needs rethink anyway, seems. Replace if_is_up() with
	  if_is_operative() and add some more.

2004-12-24 Hasso Tepper <hasso at quagga.net>

	* *.c: zlog_* cleanup. Mostly changed level of debug messages to
	  LOG_DEBUG.

2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* isis_main.c: (main) The 2nd argument to openzlog has been removed.

2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* isis_main.c: (sigint,sigterm) Use zlog_notice for termination message.
	  (terminate) This function should be static, not global.
	  (main) Use zlog_notice for startup announcement, and remove
	  ifdef ZEBRA_VERSION.

2004-11-25 Hasso Tepper <hasso at quagga.net>

	* isis_main.c: Make group to run as configurable.

2004-11-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* dict.c: Include "zassert.h" instead of <assert.h>.

2004-10-13 Hasso Tepper <hasso at quagga.net>

	* isis_main.c: Initialize access list. Although we haven't route
	  filtering yet, it's needed to limit access to vty.

2004-10-11 Hasso Tepper <hasso at quagga.net>

	* isis_routemap.c, isisd.c: Make more strings const.
	* isisd.h: Make min_bcast_mtu unsigned.

2004-10-07 Hasso Tepper <hasso at quagga.net>

	* *.[c|h]: Fix warnings: make strings const, signed -> unsigned,
	  remove or comment out unused variables etc.
	* isis_lsp.c: Clean lsp_print_detail() a bit, add TE TLV's and
	  removed old code.
	* isis_circuit.c: Remove old ip/ipv6 address commands code.

2004-10-03 Hasso Tepper <hasso at quagga.net>

	* isis_zebra.c: Read router id related messages from zebra daemon.
	* isis_lsp.c: Use router id in IP address TLV in LSP's. It's how Junos
	  routers behave as well.
	* isis_tlv.h: Export add_tlv() function.

2004-09-27 Hasso Tepper <hasso at quagga.net>

	* isis_pdu.c: Fix accessing NULL found by valgrind.

2004-09-26 Hasso Tepper <hasso at quagga.net>

	* isis_circuit.c: Fix previous commit. Don't schedule LSP regeneration
	  and don't crash if circuit->area == NULL.

2004-09-26 Hasso Tepper <hasso at quagga.net>

	* *.[c|h]: Fix a lot of compiler warnings.
	* isis_events.c: Remove isis_event_int_reach_change() function, as it
	  doesn't make sense for now. Call lsp_regenerate_schedule() directly
	  where needed.

2004-09-26 Hasso Tepper <hasso at quagga.net>

	* isis_lsp.h: Cast-as-lvalue extension is deprecated and is not
	  accpted any more in gcc-4.0.

2004-09-24 Hasso Tepper <hasso at quagga.net>

	* isisd.c: thread_master *master is already defined in isis_main.c.
	* isis_misc.[c|h], isis_lsp.[c|h]: Move static variables out of
	  header files.

2004-09-23 Hasso Tepper <hasso at quagga.net>

	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.

2004-09-21 LIU Xin <lx at ns.6test.edu.cn>

	* isis_dr.c: Update dis_record of adjacencies when isisd becomes DIS.

2004-09-21 Hasso Tepper <hasso at quagga.net>

	* isis_lsp.c: Put IPv4 prefixes into reachability TLVs, not
	  addresses. Make IPv6 work with other prefix lengths than % 8 == 0.

2004-09-20 LIU Xin <lx at ns.6test.edu.cn>

	* isis_dr.c, isis_events.c: Remove hello multiplier usage while
	  scheduling DIS election.
	* isis_pdu.c: Don't call isis_event_dis_status_change() whenever
	  l[1|2]_desig_is is different from hdr.lan_id.

2004-09-19 Hasso Tepper <hasso at quagga.net>

	* isis_spf.h: Renamed t_spf_periodic to t_spf as it's not used to
	  store pointer to periodic SPF thread only.
	* isis_spf.c: Cleaned up SPF threads schedule code. IPv4 and IPv6
	  threads are independant now. Used macros wherever possible.
	* isis_lsp.c: Fixed bug in scheduling LSP regeneration.

2004-09-17 LIU Xin <lx at ns.6test.edu.cn>
	
	* isis_circuit.c: According to RFC1142 the first DIS election will be
	started 2 * HelloTimer seconds after the initialization.

2004-09-15 Laurent Rabret <laurent.rabret at francetelecom.com>

	* isis_pdu.c: Fix error in same subnet comparison. The previous
	  algorithm only worked when netmask % 8 == 0.
	* isisd.c: Show domain and area passwords in configuration.
	* iso_checksum.c: Fixed error in the checksum calculation. The previous
	  algorithm could produce a bad checksum if the 2 complement's vs 1
	  complement's adaptation was required.
	* isis_pdu.c: Authentication in LSPs does not mean authentication in
	  SNPs.
	* isis_tlv.c: Fix errors in password checking.

2004-09-14 Hasso Tepper <hasso at quagga.net>

	* isis_circuit.c: Mostly cosmetical changes in isis_circuit_add_addr()
	  and add calls to isis_event_int_reach_change(). Implement
	  isis_circuit_del_addr(). Cancel t_run_dr threads is circuit goes
	  down.
	* isis_events.c: Implement isis_event_int_reach_change(). I'm not sure
	  yet how this stuff should work, but it allows be to start debug
	  threads which act very weird at the moment.
	* isis_tlv.c: Much less verbose by default.
	* isis_zebra.c: Added extreme debugging output. Call connected_free()
	  after isis_circuit_del_addr, not before.
	* isisd.conf.sample: Update it a little bit. 10000 seconds hello time
	  was certainly too much IMHO.

2004-09-14 LIU Xin <lx at ns.6test.edu.cn>

	* isis_pdu.c: Update l1_desig_is only if neighbor really is DIS.

2004-09-10 LIU Xin <lx at ns.6test.edu.cn>
	
	* isis_pdu.c: Goto out only if no adjacency exist.
	* isis_circuit.c: Don't crash while executing "isis circuit-type"
	  command if circuit exists, but circuit->area is still NULL.
	* isis_lsp.c: Set pointers to thread to NULL before initiating new
	  thread in lsp_l1_refresh_pseudo(), lsp_l2_refresh_pseudo() and
	  lsp_tick() functions.

2004-05-19 Laurent Rabret <laurent.rabret at francetelecom.com>

	* isis_constants.h: change the ISIS Hello interval from 1 to 10 (cisco's
	  default value).
	* isis_main.c: suppress a bad "#if 0 #endif" block for isis to be
	  activated on startup.
	* isis_tlv.[c|h]: LSP recognition of the ISIS Graceful Restart LSP (not
	  implemented yet).

2004-05-19 Rivo Nurges <rix at estpak.ee>

	* *.c: Removing many useless net/ethernet.h includes and some tiny
	  fixes to make it compile on NetBSD and OpenBSD.

2004-05-08 Paul Jakma <paul@dishone.st>

	* isis_zebra.c: Sync with zclient changes.

2004-02-11 Hasso Tepper <hasso@estpak.ee>
  * many *.c files: Replace thread_add_xxx() and thread_cancel() with
    THREAD_XXX_ON and THREAD_XXX_OFF macros.

2004-01-27 Hasso Tepper <hasso@estpak.ee>
  * isis_circuit.c: Commented out "(no) ip address" commands so it doesn't
    confuse vtysh.

2003-12-31 Hasso Tepper <hasso@estpak.ee>
  * isis_dr.c: Fix some threads related bugs.

2003-12-23 Hasso Tepper <hasso@estpak.ee>
  Some fixes done by me and Cougar <cougar@random.ee>.
  * isis_adjacency.c: Two bugfixes by Cougar:
    After down state neigbour was deleted but not removed from neighbours list.
    Don't show random expire time during neighbour initialisation.
  * isis_circuit.c: Don't show interface addresses in config by Cougar.
  * isis_constants.h, isis_misc.c: Show other well-known NLPID names as well
    by Cougar.
  * isisd.c: Two tiny CLI fixes by me.
  * isis_lsp.c: Bugfix in lsp_print_detail() by Cougar.
    Show IPv4 external and IPv6 TLV's in "show isis database detail" by me.
  * isis_misc.c: Net address format fix by Cougar.
  * isis_spf.c: Dead loop fix in isis_spf_preload_tent() by Cougar
  * isis_zebra.c: Ignore distance when adding route to zebra for now by me.
  * isis_tlv.c: Parse external IPv4 TLV's correctly by me.

Version 0.0.7 to 0.0.8
======================

o A bug in handling of other ISs fragments fixed
o hello interval now specified in *seconds*
o replaced the adj->ipv[46]_addr tables with linked lists

Version 0.0.6 to 0.0.7 (Oct 29 2002)
======================

o changed to zebra-0.93b
o fixed a seg in SPF
o handling/generation of LSP fragments
o domain/area/circuit password

Version 0.0.5 to 0.0.6 (Jul 4 2002)
======================

o lots of changes to SPF
 - runs the SPF for IPv4 and IPv6 separately
 - a number of bugs fixed
 - simplified the implementation 
 - "7.2.7 Removal of excess paths" implemented
o ported to freebsd  (tested in 4.5-STABLE and 4.6-STABLE) 
o moved to zebra-0.93-pre2
o "show isis topology" command added 
o "show (ip|ipv6) route isis commands added to zebra
o a number of fixes and additions (e.g. checksum calculation and DIS state
change event) by BeomSeok Gwak added

Version 0.0.4 to 0.0.5 (Apr 26 2002)
======================

o changed to zebra-0.93-pre1
o number of memory leaks + small bugs fixed
o a bug related to processing of neigbors when installing routes fixed

Version 0.0.3 to 0.0.4 (Feb 27 2002)
======================

o initial version of SPT algorithm
o installing routes though zebrad
o isis debug commands
o work on IS-IS events (e.g. circuit state change)

Version 0.0.2 to 0.0.3 (Jan 17 2002)
======================

o LSP handling improved
o generation of pseudonode LSPs
o DR election enhanced
o support for p2p interfaces
o support for topology simulation 
o more detailed output for show commands

Version 0.0.1 to 0.0.2 (Dec 13 2001)
======================

o circuit state machine (isis_csm.[ch]) added
o lot of work on LSP generation 
o ISO checksum 
o uses DGRAM sockets instead of RAW
o gets IP(v6) addresses from zebra
o debug can be controlled with "debug isis" command
o read support for TE tlvs
o work started on p2p interfaces
o work started on isis events 


