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

	* ospf6_route.c: (ospf6_route_show, ospf6_route_show_detail) Protect
	  against the possibility that the string returned by if_indextoname
	  may not terminate with '\0'.

2005-03-02 Vincent Jardin <Vincent.Jardin@6wind.com>

	* ospf6_zebra.c: Fix core dump when router-id is provided with
	  an empty ospf6d.conf file (no context router ospf6) because
	  ospf6_create has not been called yet.

2005-01-25 Paul Jakma <paul@dishone.st>

	* ospf6_asbr.c: Add "hsls" to the zroute_name const char array.

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

	* *.c: Change level of debug messages to LOG_DEBUG.

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

	* ospf6_main.c: (main) The 2nd argument to openzlog has been removed.
	  Note that stdout logging will no longer be enabled by default when
	  not running as a daemon.

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

	* ospf6_main.c: (sigint,sigterm) Use zlog_notice for termination
	  message.
	  (main) Remove commented-out call to pid_output_lock (which should
	  never be called other than from inside pid_output).  And use
	  zlog_notice to print the startup message, which now includes
	  the vty port.

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

	* ospf6_snmp.c: Fix compile: listnode -> struct listnode *.

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

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

2004-11-05 Phil Spagnolo <phillip.a.spagnolo@boeing.com>
       * ospf6_flood.c:  When adding a thread to retransmit an lsa after 
    rxmt_interval, the ospf6d used thread_add_event().  However, 
    thread_add_event() executes immediately and ignores the delay parameter.  
    This was causing unnecesary unicast LSU sends.  Adding the thread has 
    been changed to use thread_add_timer() which will expire after delay.  
    After the fix results appear consistent with expectation.

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

	* ospf6_snmp.c: Remove defaults used to initialize smux connection to
	  snmpd. Connection is initialized only if smux peer is configured.

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

	* osp6_top.c, ospf6_top.h: Better handling for router-id. If we use
	  common one, don't output it into configuration - only statically
	  configured one.

2004-10-10 Paul Jakma <paul@dishone.st>

	* Makefile.am: fix listing of ospf_snmp.c in noinst_HEADERS
	* ospf6_route.c: Add const qualifier to various char arrays of
          constants. signed/unsigned fixes.
          (ospf6_linkstate_table_show) argv is const
        * ospf6_snmp.c: listnode typedef is dead.
          (ospf6_snmp_init) Take struct thread_master arg, needed for
          smux_init.
        * ospf6_snmp.h: update ospf6_snmp_init declaration.
        * ospf6d.c: (ospf6_init) add const qualifier to sargv, pass master
          to ospf_snmp6_init.
	* ospf6_asbr.c: const char update.
	* ospf6_interface.c: ditto, plus signed/unsigned fixes.
	  (ipv6_ospf6_cost) Check whether cost fits in u_int32_t and use
          strtoul.
	* ospf6_intra.c: const char update. Parenthesise expression.
	* ospf6_lsa.c: signed/unsigned and const char updates.
	* ospf6_proto.c: ditto.
	* ospf6_message.c: ditto.
	* ospf6_lsdb.c: signed/unsigned update.
	* ospf6_main.c: const char update.
	* ospf6_neighbor.c: ditto.
	* ospf6_spf.c: ditto.
	* ospf6_top.c: ditto.
	
2004-10-06  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_snmp.c: add partial support for SNMP
	(i.e. ospfv3AreaLsdbTable).
	* OSPFv3-MIB.txt: Net-SNMP translate Unsigned32 range
	(0..'FFFFFFFF'h) incorrectly to (0..-1). Those parts for
	Unsigned32 range are changed to (0..4294967295).
	Also, doubtful 'not-accessible's are changed to read-only.

2004-10-06  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_snmp.[ch], OSPFV3-MIB.txt: start supporting SNMP.
	it follows draft-ietf-ospf-ospfv3-mib-08.txt, but change
	OSPFv3 tree to {experimental 102} based on
	http://www.iana.org/assignments/smi-numbers:
	Prefix: iso.org.dod.internet.experimental (1.3.6.1.3.)
	   102   OSPFv3    OSPF for IPv6   [Joyal]

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

	* ospf6_zebra.c: Use router id from zebra daemon if it wasn't set in
	configuration.

2004-09-25  Hasso Tepper  <hasso at estpak.ee>

	* ospf6_asbr.c, ospf6_lsa.c, ospf6_proto.c, ospf6_proto.h: Fix
	compiler warnings.

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

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

2004-09-13  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_intra.c, ospf6_route.[ch]: try to fix assertion failure
	in brouter's route_remove
	* ospf6d.h: version 0.9.7o

2004-09-12  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_route.c: route_count_assert bug fix
	* ospf6d.h: version 0.9.7n

2004-09-03  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_area.c, ospf6_route.c, ospf6_top.c, ospf6d.c:
	"show intra-route" function and "show SPF result" function is
	changed.
	* ospf6_neighbor.c: Changed to update stub intra-prefix origination
	when it is not DR.
	* ospf6_route.h: resolv conflict between best flag and
	active-summary flag.
	* ospf6d.h: version 0.9.7m

2004-09-02  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_asbr.c: E-bit check in examining AS-External-LSA
	* ospf6_abr.c: E-bit set in receiving Inter-Area-Router-LSA

2004-09-02  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* *.[ch]: Logging LSAs of particular type is added.
	lsa_handler is now using vector in order to adjust
	existing LSA modules.
	* ospf6d.h: version 0.9.7l

2004-08-28  Hasso Tepper  <hasso at quagga.net>

	* ospf6_main.c: Modify for sigevents.

2004-08-26  Hasso Tepper  <hasso@estpak.ee>

	* ospf6_interface.c, ospf6_top.c, ospf6d.c: for vtysh.

2004-08-19  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_asbr.c: Bug in ASBR check fixed.
	* ospf6d.h: version 0.9.7k

2004-08-19  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_asbr.c: Bug in AS-External Origination fixed.
	* ospf6d.h: version 0.9.7j

2004-08-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* *.c: Area support almost done. (almost ! ;p)
	* ospf6d.h: version 0.9.7i

2004-08-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_message.c: Bug cause BadLSReq is fixed.
	* ospf6_abr.c: Border Router check.
	* ospf6d.h: version 0.9.7h

2004-08-14  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_area.[ch], ospf6_abr.[ch]: area range,
	border-routers, Inter-Area-Router-LSA origination
	* ospf6d.h: version 0.9.7g

2004-08-12  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* *.[c,h]: LSA refreshing is changed and cleaned up.
	* ospf6d.h: version 0.9.7f

2004-08-01  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_abr.[ch]: add files for abr function.
	* *.c: VTY_NEWLINE -> VNL
	* ospf6d.h: version 0.9.7e
	  show database functions are rewritten.

2004-07-23  Hasso Tepper  <hasso@estpak.ee>

	* ospf6_interface.c, ospf6_zebra.c: use ifp->mtu6 instead of
	  ifp->mtu.

2004-07-23 Paul Jakma <paul@dishone.st>

	* ospf6_main.c: Delete LOG_PERROR, not portable.
	* ospf6_network.c: (ospf6_set_pktinfo) use setsockopt_ipv6_pktinfo

2004-07-06  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_message.c, ospf6_interface.c: add a command to configure
	ospf6 ifmtu on a interface.
	* ospf6d.h: version 0.9.7d

2004-05-18  Hasso Tepper <hasso@estpak.ee>

	* *.*: Merge rewritten ospf6d from Zebra repository.
	* ospf6_network.c, ospf6_main.c: Merged privs stuff back in.
	* ospf6_zebra.c: Sync back to zclient changes.
	* ospf6_asbr.c: Added isis to the routings list.
	* ospf6_main.c: "version.h" -> <lib/version.h>

2004-05-17  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_flood.[ch], ospf6_lsa.[ch], ospf6_lsdb.h, ospf6_message.c
	ospf6_neighbor.c: Fix crash bug and change the way to count
        how many neighbors include paticular LSA on its retrans-list.
	* ospf6d.h: version 0.9.7c

2004-05-03  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_message.[ch], ospf6_interface.c: adjust send/recv buffer
	size to interface MTUs.
	* ospf6d.h: version 0.9.7b

2003-08-18  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* *.[ch]: rewrite all source code from scratch
	* ospf6d.h: version 0.9.7

2003-08-11  Taisuke Sasaki <sasaki@soft.net.fujitsu.co.jp>

        * ospf6_ism.c: DR Election bug fix.

2003-04-25  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_asbr.c: AS-External LSA refresh was based on the
	prefix of the obsolete LSA. It was wrong so fixed.
	* version: 0.9.6p

2002-11-09  Vincent Jardin  <jardin@6wind.com>

	* ospf6_interface.c: update link-local address on interface creation.

2002-11-09  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_asbr.c: apply MinLSInterval to AS-External-LSA origination.
	* ospf6_lsa.c: change not to issue flooding caused by expire event
	when the received LSA is (already) MaxAge.
	* ospf6_spf.c: fix a bug which is that ospf6d calculates
	wrong nexthop when failed to find Link-LSA for the neighbor.
	* ospf6_damp.c ospf6_dbex.c ospf6_neighbor.c ospf6_spf.c:
	some clean up
	* version: 0.9.6o

2002-10-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_asbr.c: bug of failing ASE lsa refresh fixed.
	* version: 0.9.6n

2002-10-01  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_asbr.c: AS-External-LSA origination function
	is re-written.
	* ospf6_damp.[ch]: New feature that damps flaps is added.
	* version: 0.9.6m

2002-07-14  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_spf.c: unwanted assert() in ospf6_spf_nexthop_calculation()
	is deleted.
	* version: 0.9.6l

2002-07-14  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_dbex.c: bug that ospf6d fails to refresh self-originated
	LSA if he have not the LSA before has been fixed.
	* ospf6_asbr.c: bug of failing removing ASE LSA when remove
	message arrived from zebra has been fixed.
	* version: 0.9.6k

2002-07-13  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_zebra.c: bug reported [zebra 14642] fixed.
	The bug was related to the synchronization between zebra
	and ospf6d. Now synchronization will be correctly done.
	* version: 0.9.6j

2002-07-07  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_lsdb.c: bug fixed in ospf6_lsdb_type_router ().
	* ospf6_dbex.c: because of retrans list structure changed
	due to LSDB change, removal of old instance from retrans-list
	is not necessary anymore. this caused crash but now fixed.
	* version: 0.9.6i

2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.93 released.

2002-07-07  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_lsdb.c: entirely rewritten. now ospf6d uses
	radix tree by using lib/table.[ch] for LSDB lookup.
	* ospf6_abr.c, ospf6_asbr.c, ospf6_intra.c: hook changed
	due to rewriting of lsdb module.
	* ospf6_neighbor.c: lack of check existence and find correct
	instance of the LSA which is going to be removed from neighbor's
	retransmission was filled.
	* version: 0.9.6h

2002-07-07  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_intra.c: bug fix for Intra-route deletion.
	* ospf6_route.c: bug fix for path comparison.
	* version: 0.9.6g

2002-06-28  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_route.c: some logs trying to find the situation
	when assert occur are added. route duration statistics
	added.
	* ospf6_zebra.c: trying to fix the problem reported by
	[zebra 14318] but not yet sure.
	* version: 0.9.6f

2002-06-25  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_intra.c: new file for management of intra-prefix LSA.
	* ospf6_abr.c: inter area route calculation code added.
	* version: 0.9.6e

2002-06-22  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_asbr.c: All AS-External route was removed when
	one of the ASBR path was gone, but the route from other ASBR
	path should stay remained. this bug is fixed.
	* version: 0.9.6d

2002-06-22  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_route.c: route table calculation bug fixed. [zebra 14105]
	* ospf6_spf.c, ospf6_route.c, etc.: log message cleaned up.
	* version: 0.9.6c

2002-04-27  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_route.c: [zebra 13514] bug fix.
	thanks to Harald Koch.
	* version: 0.9.6b

2002-04-22  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_dump.c: fix bug of log function
	* ospf6_area.c: fix bug of intra route deletion
	* version: 0.9.6a

2002-04-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* merged with "current" version.
	* version: 0.9.6

2001-03-11  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_lsdb.c ospf6_spf.c: log message changed for debug.

2001-02-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* version: 0.9.5i

	* ospf6_asbr.c: Added code that finds alternative
	AS-External route when remove AS-External route.
	This is temporary fix ...

	* ospf6_redistribute.c: remove redistributed routes
	immediately when 'no redistribute ...'

2001-02-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* version: 0.9.5h

	* ospf6_spf.c, ospf6_lsa.c: Change to originate Link-LSA on
	point-to-point links.

	* ospf6_message.c: Bug of log messages of self-originated
	Hello packet fixed.

2001-02-09  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* version: 0.9.5g
	* ospf6_asbr.c: fix for the bug that AS-External route
	is not get removed.

2001-02-09  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_lsdb.c: crash bug while receiving wrong LSA scope bit
	has been temporarily fixed

2001-12-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_asbr.[ch]: The byte order bug in encoding/decoding
	the bits/metric field in AS-External-LSA fixed.
	Fixed to update E-bit in Router-LSA of itself.
	Reported by Taisuke Sasaki ([zebra 11548]).

	* README: updated.

	* version: 0.9.5f

2001-11-21  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_prefix.c: Intra-prefix-LSA bug fixed.
	* ospf6_abr.[ch]: added (only just placeholder yet)

2001-11-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_route.c: fix to overwrite a prefix when another
	addition to the prefix is given. freeze function changed
	not to remove routes by default.

	* version: 0.9.5e

2001-11-19  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* version: 0.9.5d

	* ospf6_lsa.c ospf6_spf.c: SPF Calculations are now
	scheduled by hook.

	* ospf6_route.c: ospf6_route_add bug fix,
	ospf6_route_remove_all corrected.

2001-11-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_hook.[ch]: added.
	* Almost half of the code has been rewritten.
	especially, ospf6_route.[ch]. Hook call has been injected
	much.
	* ospf6_asbr.[ch]: added.

2001-10-17  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_dbex.c: ospf6d was wrong to omit reoriginating
	of LSA when the self-originated LSA was received from others.
	fixed.
	* ospf6d.h: version: 0.9.5c

2001-10-16  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_lsa.c: 'force-prefix' was not executed. fixed.
	* ospf6d.h: version: 0.9.5b

2001-10-13  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_interface.c: 'passive-interface' is now moved to
	'ipv6 ospf6 passive' in INTERFACE NODE. 'prefix-list' which
	specifies the filter prefix for connected address prefix also
	moved to INTERFACE NODE as 'ipv6 ospf6 advertise prefix-list WORD'.
	The old obsoleted commands are still acceptable though. New command
	'ipv6 ospf6 advertise force-prefix' added, which which tells ospf6d
	to advertise rather prefix than stub local-address even on loopback
	or pointopoint interfaces.

	* ospf6_dump.c: 'ospf6 debug hello' -> 'ospf6 debug message hello'.
	same for other message type. The older is still acceptable.

	* ospf6_lsa.c: Changed AS-External generation to new one which uses
	LSA hooks. Delete old garbage.

2001-10-02  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6d.c: turn off and turn on sequence with
	'no interface' 'interface' cmds was not work. fixed.

	* ospf6_lsa.c: generating Intra-Area-Prefix-LSA for stub
	did not care duplicate prefixes. fixed.

2001-09-07  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_message.c: There was a bug that prevent LSDB
	to syncronize. It was a DbDesc packet bug that Slave
	sends two different DbDesc packet on the same sequence
	number. This cause many LSAs are dropped when Exchanging
	LSDB, because the latter DbDesc packet that have the same
	sequence number will be ignored as duplicate packet.
	This seems to be exist at least before 0.9.4 version.
	Now this is the most stable candidate.

	* ospf6d.h: version 0.9.5a

2001-09-06  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_zebra.c ospf6_spf.c ospf6_lsa.c :
	delete nexthop check to certify the nexthop is Link-local address.
	Suppress Link-LSA origination on links other than Broadcast.
	SPF's nexthop calculation first checks linklocal address
	in Link-LSA, then checks source address of neighbor's packets.

	* ospf6_interface.c ospf6_ism.c ospf6_lsa.c ospf6_nsm.c:
	intra-area-prefix-lsa origination func moved to new one.

	* ospf6_interface.h ospf6d.[ch] ospf6_lsa.c: 
	interface_area_cmd now changed to have 'passive'
	and 'prefix-list' option.

	* ospf6_prefix.c:
	clean up.

2001-09-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_dbex.c ospf6_interface.c ospf6_ism.c ospf6_lsa.[ch]:
	clean up and new LSA origination functions added.

	* ospf6_route.c ospf6_lsdb.c: make vty function more
	clean/understandable.

	* ospf6d.h: version 0.9.5

2001-08-24  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospf6_lsdb.c: Use IS_LSA_MAXAGE macro instead of
	ospf6_lsa_is_maxage.

	* ospf6_lsa.h (IS_LSA_MAXAGE): Add new macro to check MaxAge.

2001-08-21  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_lsdb.c: if There's no previous prefix
	ospf6d was wrongly not calculate the prefix.
	this reported by (v6 16029) is fixed.

	* ospf6_neighbor.c: Instance of LSA Summary included
	in DbDesc packet was wrongly freed. The bug cause
	malformed DbDesc, ExChange <-> ExStart flapping,
	and then crash.

	* ospf6d.h: version 0.9.4

2001-08-21  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_route.[ch]: Showing format is changed.
	'show ipv6 route ospf6' -> 'show ipv6 ospf6 route'
	'show ipv6 route ospf6 external' ->
	'show ipv6 ospf6 route redistribute'

	* ospf6_lsdb.c ospf6_lsa.c ospf6_neighbor.c ospf6_interface.c:
	memory leak in LS list fixed.

	* all: clean up

	* ospf6d.h: version 0.9.3

2001-08-20  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospf6d.c (ospf6_timeval_sub_equal): Remove function.

	* ospf6_spf.c (ospf6_timeval_cmp): Rewrite ospf6_timeval_cmp().
	(ospf6_timeval_add_equal): Function moved from ospf6d.c
	
2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.92a released.

2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.92 released.

2001-08-09  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_lsdb.c ospf6_neighbor.c:
	LSDB function/structure and LS list function has been rewritten.
	memory leak has been decreased.

	* ospf6_lsa.[ch] ospf6_dbex.c: garbage code has been deleted.

	* ospf6d.h: version 0.9.2

2001-08-07  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_dbex.c ospf6_lsdb.c:
	Retransmition list had a critical bug that breaks LSDB
	synchronization. When new LSA be added to retrans-list,
	old must be removed, but it was not. So new LSA dropped,
	and LSA Acknowledgement did not work. The bug was fixed.

	* ospf6d.h: version 0.9.1

2001-06-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_spf.c: crash bug fix in temporary treat code for
	Router-LSA whose LS-ID != 0

	* ospf6_dbex.c: RFC2328 13.(4) was wrongly coded.
	    (4) Else if the LSA's LS age is equal to MaxAge, and there is
            currently *NO* instance of the LSA in the router's link state
	    ...

	* ospf6_lsa.c: RFC2328 13.1 checksum tie breaker
	had been neglected, and has just added now.

	* ospf6d.h: version 0.9.0
	ospf6d expected to work with hitachi gr2000 from these fixes.

2001-06-12  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_lsa.c: Fix bug in creating Intra-Area-Prefix-LSA.
	DR was mis-include others prefixes advertised by their Link-LSA.

	* ospf6_route.c: Fix bug in calculating intra area routes.
	Not all prefixes in Intra-Area-Prefix-LSA was calculated.

	* ospf6_spf.c:
	Changed to quit when a error occured in calculating SPF tree.
	Very messy hack for the bug reported by [zebra 8807]. This
	is not tested yet.
	Changed to quit SPF calculation when a nexthop calculation
	errors.

	* ospf6_zebra.c:
	Support for interface address deletion.

	* ospf6d.h:
	version: 0.8.y

2001-04-18  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6d.h
	Due to previous change (DR Election algorithm changed),
	backward compatibility will be lost from this version.
	version: 0.8.x

2001-04-18  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_message.c ospf6_ism.c:
	Bug of router_id comparison

2001-04-17  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_dbex.c: ospf6_dbex_is_maxage_to_be_dropped() had
	some bug causing Loading state lasts long.
	version: 0.8.v

2001-04-08  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_route.c: BUG in AS-External route calculation fixed.
	It was using OLD LSDB...
	Version: 0.8.u-

2001-04-08  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_area.c, ospf6_dbex.c, ospf6_interface.c,
	ospf6_lsa.c, ospf6_lsdb.c, ospf6_lsdb.h, ospf6_message.c,
	ospf6_neighbor.c, ospf6_neighbor.h, ospf6_nsm.c,
	ospf6_redistribute.c, ospf6_route.c, ospf6_spf.c:
	Delete old LSDB function.

	* ospf6d.h:
	Version: 0.8.u

2001-04-05  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_area.c, ospf6_area.h, ospf6_dbex.c, ospf6_interface.c,
	ospf6_interface.h, ospf6_lsa.c, ospf6_lsdb.c, ospf6_lsdb.h,
	ospf6_message.c, ospf6_nsm.c, ospf6_redistribute.c, ospf6_route.c,
	ospf6_spf.c, ospf6_top.c, ospf6_top.h, ospf6d.h:
	Changed to use New LSDB.
	Version: 0.8.t

2001-04-02  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_lsa.c:
	Interface stub check in Intra-Area-Prefix-LSA origination 
	was wrong. - fixed.

	* ospf6_area.h, ospf6_dbex.c, ospf6_interface.c,
	ospf6_interface.h, ospf6_lsa.c, ospf6_lsa.h, ospf6_lsdb.c,
	ospf6_message.c, ospf6_neighbor.c, ospf6_nsm.c,
	ospf6_redistribute.c, ospf6_top.c, ospf6_top.h, ospf6d.c:
	New LSDB functions, but not changed to be used.

	* ospf6d.h:
	Version: 0.8.s

2001-03-28  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_area.c ospf6_area.h ospf6_dbex.c ospf6_dump.c
	ospf6_interface.c ospf6_interface.h ospf6_lsa.c
	ospf6_message.c ospf6_redistribute.c ospf6_spf.c ospf6_top.c
	ospf6_top.h ospf6_zebra.c ospf6d.c ospf6d.h: cleaning.

2001-03-24  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6d.h:
	version: 0.8.r

	* ospf6_neighbor.[ch], ospf6_lsa.[ch]:
	just clean up and log clearify.

	* ospf6_message.[ch]:
	Packet receiving function and dumping OSPFv3 packet has been
	changed simple and clean.

	* ospf6_dbex.[ch], ospf6_interface.[ch], ospf6_lsdb.[ch],
	  ospf6_neighbor.[ch], ospf6_nsm.[ch]:
	LSList(i.e. summary list, request list, retrans list, etc) have
	been rewritten based on new LSDB module. The main LSDB have not
	yet shifted to this new module, but will shift eventually.
	This change expected to resolve the problem that the ospf6d keeps
	on sending redundant LSUpdate/LSAck.

	* ospf6_interface.c: changed default MTU from 1500 to 1280.
	It was possible that the ospf6d could not send packet (e.g.
	LSUpdate in response to LSReq in my case) when the packet
	size accidentally reached near 1500 (I was forget about IP
	header :p). It is a bit illegal to set MTU 1280 constantly,
	but I failed once with I/F MTU from kernel (through zebra),
	and thinks that 1280 is more stable than kernel variable.
	Comments will be appriciated.

2001-03-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_dbex.c, ospf6_interface.c, ospf6_ism.c, ospf6_lsdb.[ch],
	  ospf6_neighbor.c, ospf6_spf.c, ospf6d.c:
	Fix for crash. ospf6d has ever been crashing when
	'no interface' command executed, and when starting up with
	the configuration which does not include 'router ospf6'.
	these has been fixed.

2001-02-24  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_lsa.c, ospf6_message.c:
	LSA summary (exchanged while Adjacency bring up) may expire
	(may reach MaxAge). Handling this has been added but
	it's a little bit quick hack.

	* ospf6_message.c:
	Thread chain bug fixed. Read network thread chain has been cut
	when receive packets on not-enabled interface. this was wrong
	and fixed.

2001-02-24  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_message.c:
	I/F MTU check part on sending packet had some bug, and it's fixed.
	Ospf6d has believed a value from zebra as I/F MTU, but from now
	I/F MTU is set to constant 1500. This is workaround for ATM.

2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.91 is released.

2001-01-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* just code clean up of almost all module.
	* ospf6_dump.c, ospf6_lsa.c: file dependency.
	* ospf6_mesg.[ch]: changed filename to ospf6_message.[ch]

2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.90 is released.

2001-01-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_mesg.c,ospf6_lsa.c: doubly cancel thread bug fixed.
	version 0.8.k CRASHed for this.
	* ospf6_lsa.c: bug of logging fixed.
	version: 0.8.l

2001-01-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_neighbor.c: fix typo when trying to delete
	MaxAge AS-External LSA. MaxAge LSA remaining bug is expected
	to be fixed.
	version: 0.8.k

2001-01-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_mesg.c: add I/F Mtu check for sending LS Update.

	* ospf6_dbex.c, ospf6_mesg.c, ospf6_neighbor.c, ospf6_neighbor.h,
	ospf6_spf.c: Changed type of hisaddr field in ospf6_neighbor
	structure, from sockaddr_in6 to in6_addr. No protocol/processing
	changed.

2001-01-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_mesg.c, ospf6_neighbor.[ch]: Speed up of
	Database Exchange.
	version: 0.8.j

	Because the LS Request list was checked only when attempt
	to send (retransmit) LS Request packet, Loading state lasted
	long (for RxmtInterval) unexpectedly. This was fixed; LS Request
	packet will be send as soon as one received a LS Update packet.

2001-01-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6d.h (OSPF6_VTYSH_PATH): Change "/tmp/ospf6d" to
	/tmp/.ospf6d".

2000-12-29  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_dump.[ch]: simplified.

2000-12-19  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_route.c: Fix bug of using unavailable route.
	version: 0.8.d

2000-11-30  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_spf.c: calculate statistics. version: 0.8.d

2000-11-26  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_mesg.c, ospf6_nsm.c: LSDB sync bug fixed.
	version: 0.8.c

2000-11-26  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_dbex.c: Start debugging and cleaning.

	* ospf6_area.c, ospf6_dbex.c, ospf6_interface.c, ospf6_lsa.c,
	ospf6_proto.c, ospf6_top.c: add some function to clarify codes.

2000-11-26  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_spf.c: Delete old garbage (which was enclosed by #if 0)

	* ospf6_redistribute.c: "redistribute ospf6" was generated in
	"router ospf6" in config file. It is a bug, and fixed.
	wrong warning message was deleted.

	* ospf6_main.c: If daemon mode, ospf6d was silent even if
	the config file was wrong. It is a bug, and fixed.

	* ospf6_route.c, ospf6_zebra.c: Zebra syncronization method
	has been changed. delete garbages. allow nexthop of :: in case
	of connected route.

	* ospf6_dbex.c: Delete annoying log messages.

	* ospf6_lsa.c: Changed string for LSA log.

2000-11-21  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_spf.c: some careless bug fixed.

	* ospf6_route.c: changed not to send garbage route
          whose nexthop is not linklocal address.

2000-11-09  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

        * ospf6_rtable.c: renamed to ospf6_route.c
        whole functionality has been rewritten as new code.
        new functions not yet installs routes; the old
        functions still remains. cleaning log messages.

	* ospf6_spf.c: whole functionality has been rewritten
	as new code. new command "show ipv6 ospf6 spf node",
	"show ipv6 ospf6 spf tree", "show ipv6 ospf6 spf table"
	has been added. Memory leak was fixed. cleaning log messages.

	* ospf6d version: 0.7.c

2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.89 is released.

2000-09-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6_lsdb.c (ospf6_lsdb_remove_maxage_lsa): Fix compile
	warnings.

2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.88 is released.

2000-08-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6_rtable.h (struct ospf6_nexthop): Change ifindex type from
	unsigned long to unsigned int.

2000-04-28  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6d.h: Include some headers for avoid warning.

	* ospf6_routemap.h: Add newfile.

1999-11-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6_network.c: Respect IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP
	rather than RFC2133.

1999-10-21  Jun-ichiro itojun Hagino <itojun@itojun.org>

	* ospf6_network.c (ospf6_ipv6_decode_ipv4): Fix bug of conversion
	from IPv4 Mapped Address to IPv4 address.

1999-08-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6_lsa.c (construct_link_lsa): Enclose KAME specific part by
	#ifdef/#endif.

1999-07-29  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* ospf6_mesg.c: add new message process function.

1999-07-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6_main.c (sighup): Call of log_rotate() removed.

1999-07-24  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	ospf6_dbex.{c,h}: variable "acknowledge" has been deleted.

1999-07-22  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* *.{c,h}: lsa data structure has been drastically
	changed.

1999-07-16  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* *.{c,h}: bug of updating LSA's which is self
	originated has been fixed.

1999-07-14  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* *.{c,h} : log clean up.

1999-07-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6d.c (ospf6_init): Change to use install_default.

1999-07-03  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	* ospf6_rtable.c (nexthop_*): added some function that handles
	new nexthop structure.

1999-07-01  Rick Payne <rickp@rossfell.co.uk>

	* ospf6_zebra.c (ospf6_zebra_init): Install standard commands to
	ZEBRA_NODE.

1999-06-09  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	* ospf6_rtable.h: added for new routing table of ospf6d

1999-05-14  Stephen R. van den Berg <srb@cuci.nl>

	* ospf6_main.c (signal_init): SIGTERM call sigint.
	(sigint): Loggging more better message.

1999-05-13  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	*ospf6_spf.c (get_prefix_lsa_of_vertex): bug fix about network vertex.

1999-05-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6_network.c (send_linkstate_ack): Check HAVE_SIN6_SCOPE_ID
	is defined.
	* ospf6_mesg.c (make_hello): Likewise.
	* ospf6_lsa.c (lsa_flood): Likewise.

1999-05-07  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	* ospf6_spf.c, etc: Many bug fix.
        intra-area-prefix-LSA treatment changed.
        network byte order of neighbor ifid changed.

1999-05-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6_zebra.h (struct zebra): Add hitory entry to structure.

1999-05-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6_main.c (main): Add KAME check for binding vty socket.
	(main): Delete old interface get routine garbage.

	* ospf6d.c: Change all `show ip6' statement to `show ipv6'.
	(show_ipv6_ospf6_requestlist): Add description.

1999-05-04  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	* ospf6_lsa.c, etc: Many bug fix, now two routers
	on the same segment can become FULL neighbor state
	each other.

1999-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am: Add file dependency.
	(depend): Add target.

1999-05-02  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	* Clean up and fix have been almost done. This code
	now testing stage of Intra area routing.

	* Configuration Vty become more similar to Cisco.

1999-04-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Trim training newline from zlog format arguemnt.
	
	* ospf6_dump.c (ospf6_err): Commented out ospf6_err and
	ospf6_warn.  Same kind of function should be implemented as
	zlog_err or zlog_warn or someting.

	* ospf6d.c: Change OSPF_NODE to OSPF6_NODE.
	Change OSPF_DEFAULT_CONFIG to OSPF6_DEFAULT_CONFIG.
	

1999-04-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6_mesg.c (make_hello): Add check of SIN6_LEN

1999-04-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf6_neighbor.c: Change list_clear_all to list_delete_all_node.
	Remove list_delete_all fuction and use lib/linklist.c's one.
	
1999-04-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* mcast_join(),mcast_leave()'s argument socket length is removed.

1999-04-08    <kunihiro@zebra.org>

	* ospf6_zebra.h (ospf_zebra_read): Fix typo.

	* ospf6_interface.h: Tempolary add struct rt_addrinfo.

1999-03-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Merge from ospfd-zebra-990303 codes.

1999-02-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.in: add new file.

	* Makefile.am: @INCLUDES@ is added for OS/library specific IPv6
	directory search.

	* Import files from Yasuhiro Ohara <yasu@sfc.wide.ad.jp>'s ospfd.
	Impterted files are:
	Makefile.am, ospf_area.h, ospf_dump.c, ospf_interface.c,
	ospf_interface.h, ospf_lsa.c, ospf_lsa.h, ospf_main.c,
	ospf_mesg.c, ospf_mesg.h, ospf_neighbor.c,
	ospf_neighbor.h,ospf_network.c, ospf_network.h, ospf_proto.h,
	ospf_spf.c, ospf_spf.h, ospf_types.h, ospfd.c, ospfd.h
