2005-04-15 Paul Jakma <paul@dishone.st>

	* topology/Makefile.am: random.c is a source of libtopology, so list
	  it.

2005-04-12 Hasso Tepper <hasso at quagga.net>

	* isis_adjacency.c: Fix typo introduced with listloop cleanup.

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

	* isis_zebra.h (isis_zebra_finish): Remove declaration of unused
	  function.
	* isis_zebra.c (isis_zebra_route_add_ipv4): Call zclient_send_message
	  to send the message to zebra instead of calling writen directly, since
	  zclient_send_message understands non-blocking I/O and will manage
	  the buffer queue appropriately.
	  (isis_zebra_finish): Remove unused function, particularly since
	  the zclient_free function has been removed.

2005-04-10 Paul Jakma <paul@dishone.st>

	* Makefile.am: topology should not be a conditional SUBDIR,
	  otherwise make dist breaks.
	* topology/Makefile.am: remove EXTRA_DIST of files which dont
	  exist in that directory, broke make dist.
	* isisd.c: (show_isis_generated_topology_cmd) convert LIST_LOOP
	* isis_lsp.c: (generate_topology_lsps) ditto
	  (build_topology_lsp_data) ditto

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

	* isis_zebra.c: (isis_zebra_if_del) Must use if_lookup_by_name_len.

2005-04-02 Hasso Tepper <hasso at quagga.net>

	* Makefile.am: Variables to handle conditonal compiling of topology
	  generator code.
	* isis_lsp.c: lsppdu_realloc() is used by topology generator.
	* isisd.c: Rename show_isis_topology_cmd to not conflict the one in
	  the isis_spf.c.
	* isisd.h: Remove TOPOLOGY_GENERATE define, it will be defined in
	  toplevel config.h if topology generator is enabled.
	* topology/Makefile.am: Handle the libtoolized Quagga libraries.

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 


