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

	* ospf_packet.c: replace ospf_swap_iph_to... with
          sockopt_iphdrincl_swab_...

2004-10-03 James R. Leu <jleu at mindspring.com>

	* ospf_zebra.c: Read router id related messages from zebra daemon.
	  Schedule router-id update thread if it's changed.
	* ospfd.c: Remove own router-id selection function. Use router id from
	  zebra daemon if it isn't manually overriden in configuration.

2004-09-27 Paul Jakma <paul@dishone.st>

	* ospf_dump.c: (ospf_ip_header_dump) Use HAVE_IP_HDRINCL_BSD_ORDER
	  Apply to offset too. Print ip_cksum, lets not worry about
	  possible 2.0.37 compile problems.
	* ospf_packet.c: (ospf_swap_iph_to{n,h}) Use
	  HAVE_IP_HDRINCL_BSD_ORDER.
	  (ospf_recv_packet) ditto.
	  (ospf_write) Fixup iov argument to ospf_write_frags.
          (struct msghdr).msg_name is caddr_t on most platforms.
	  (ospf_recv_packet) ditto. And msg_flags is not always there
          memset struct then set fields we care about rather than 
          initialise all fields individually.

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

	* ospf_abr.c, ospf_dump.c, ospf_lsa.c, ospf_packet.c, ospf_vty.c,
	  ospf_zebra.c: Fix compiler warnings.

2004-09-24 Paul Jakma <paul@dishone.st>

        * ospf_apiserver.{c,h}: lists typedef removal cleanup.
          update some list loops to LIST_LOOP. some miscellaneous indent
          fixups.
          (ospf_apiserver_unregister_opaque_type) fix listnode_delete of
          referenced node in loop.
 	  (ospf_apiserver_term) loops calling ospf_apiserver_free, which
          deletes referenced nodes from apiserver_list, fixed.
        * ospf_interface.h: lists typedef removal cleanup.
        * ospf_opaque.{c,h}: lists typedef removal cleanup. update some list 
          loops to LIST_LOOP. miscellaneous style and indent fixups.
        * ospf_te.{c,h}: ditto
	* ospf_packet.c: lists typedef removal cleanup.
          (ospf_write) ifdef fragmentation support. move actual
	  fragmentation out to a new, similarly ifdefed, function.
	  (ospf_write_frags) fragmented write support, moved from previous.

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

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

2004-09-12 Paul Jakma <paul@dishone.st>

	* ospf_packet.c: Fix bugzilla #107
 	  (ospf_packet_max) get rid of the magic 88 constant
	  (ospf_swab_iph_ton) new function. set ip header to network order,
	  taking BSDisms into account.  
	  (ospf_swab_iph_toh) the inverse. 
	  (ospf_write) Add support for IP fragmentation, will only work on
	  linux though, other kernels make it impossible. get rid of the
	  magic 4 constant.  
	  (ospf_make_ls_upd) Bound check to end of stream, not to 
	  interface mtu.  
	  (ospf_ls_upd_packet_new) New function, allocate upd packet
	  taking oversized LSAs into account.
	  (ospf_ls_upd_queue_send) use ospf_ls_upd_packet_new to allocate,
	  rather than statically allocating mtu sized packet buffer, which
	  actually was wrong - it didnt take ip header into account, which
	  should not be included in packet buffer.
	  (ospf_ls_upd_send_queue_event) minor tweaks and remove
	  TODO comment.
	  
2004-08-31  David Wiggins  <dwiggins@bbn.com>

	* ospf_spf.c (ospf_spf_calculate): Many more comments and debug
	  print statements.  New function ospf_vertex_dump used in debugging.

2004-08-31  David Wiggins  <dwiggins@bbn.com>

	* ospf_spf.h (struct vertex): Comments for flags and structure members.

2004-08-31  David Wiggins  <dwiggins@bbn.com>

	* ospf_route.c: When finding an alternate route, log cost as well.

2004-08-31  David Wiggins  <dwiggins@bbn.com>

	* ospf_interface.c (ospf_lookup_if_params): Initialize af in
	  struct prefix allocated on stack.

2004-08-31  David Wiggins  <dwiggins@bbn.com>

	* ospf_packet.c (ospf_ls_ack_send_delayed): In p2mp mode, send
	  acks to AllSPFRouters, rather than All-DR.

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

	* ospf_vty.c: Don't print ospf network type under interface only
	  if interface is in broadcast mode and interface type really is
	  broadcast. Fixes Bugzilla #108.

2004-08-27  David Wiggins  <dwiggins@bbn.com>

	* ospf_spf.c (ospf_nexthop_calculation): Initialize address family
	  in on-stack struct prefix_ipv4.  Fixes point-to-multipoint SPF
	  calculation.

2004-08-26  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* ospf_packet.c (ospf_recv_packet): adjust size declaration of
	  buffer used to get interface index so that it compiles on other
	  than Linux and includes the required alignment space.  Probably
	  this was only working on sparc/sparc64 because most of
	  sockaddr_dl was not being written.

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

	* ospf_packet.c: update to match sockopt renames.
	
2004-08-04 Paul Jakma <paul@dishone.st>

	* ospf_spf.c: (ospf_spf_consider_nexthop) Add comment about issue.
	  Compare only against list head - all nexthops must be same cost
	  anyway, fixes a reference-listnode-after-delete bug noted by
	  Kir Kostuchenko.
	  (ospf_nexthop_calculation) Use ospf_spf_consider_nexthop for all
	  candidates attached to root.
	  
2004-07-27 Paul Jakma <paul@dishone.st>

        * ospf_packet.c: (ospf_ls_upd_send_queue_event) fix thinko from
          last fix for ospfd wedging due to oversize LSAs: dont list loop on
          ospf_ls_upd_queue_send() - guaranteed segfault.
          
2004-07-27 Paul Jakma <paul@dishone.st>

	* ospf_opaque.c: (ospf_opaque_lsa_flush_schedule) do not NULL out
	  the LSA as then free_opaque_info_per_id() can never unlock (and
	  free) the LSA. Reported by Gunnar Stigen.
	  
2004-07-23 Paul Jakma <paul@dishone.st>

	* ospf_network.c: Replace PKTINFO/RECVIF with call to
	  setsockopt_pktinfo
	* ospf_packet.c: Use getsockopt_pktinfo_ifindex and
	  SOPT_SIZE_CMSG_PKTINFO_IPV4.

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

	* ospf_packet.c: (ospf_ls_upd_send_queue_event) Partial fix for 
	  problem reported by Peter Frost amongst others, where function
	  will spin indefinitely if update list contains LSAs greater than
	  MTU-headers or other condition leading to update list never being
          cleared. Problem of what to do with these LSAs remains.
          (ospf_make_ls_upd) add comment about large LSA problem,
	  indentation cleanup.

2004-07-01  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* Makefile.am (lib_LTLIBRARIES): make libospf shared

2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* Makefile.am: Add shlib support.

2004-06-10 Hasso Tepper <hasso@estpak.ee>

	* *: Removed ifdefs HAVE_NSSA.

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

	* ospf_dump.c,ospf_lsa.c: Fix typos of merge of previous.
	  ospf_flood.c: (ospf_process_self_originated_lsa) fix zlog format

2004-05-31 Sagun Shakya <sagun.shakya@sun.com>

	* ospf_dump.c: (ospf_lsa_header_dump) LOOKUP can return null if
	  index is out of range.
	  ospf_flood.c: endianness fix
	  ospf_lsa.c: Missing ntohl's on (struct lsa *)->data->ls_seqnum
	  in various places.
	  
2004-05-10 Hasso Tepper <hasso@estpak.ee>

	* ospf_zebra.c, ospfd.c: Move ospf_prefix_list_update() function
	  to ospf_zebra.c from ospfd.c and add redistribution updates if
	  route-map is used in redistribution.
	* ospf_main.c: Remove now useless call to ospf_init().

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

	* ospf_zebra.c: Sync with lib/zclient changes
	
2004-05-05 Paul Jakma <paul@dishone.st>

	* ospf_network.c: (ospf_sock_init) Check whether IP_HDRINCL is
	  defined. Warn at compile and runtime. Use 
	  IPTOS_PREC_INTERNETCONTROL otherwise.
	* ospf_packet.c:  (ospf_associate_packet_vl) cleanup, move 
	  some of the checks up to ospf_read, return either a 
	  virtual link oi, or NULL. 
	  (ospf_read) Cleanup, make it responsible for checks. Remove
	  the nbr lookup - moved to ospf_neighbor. Adjust all nbr
	  lookups to use new wrappers exported by ospf_neighbor.
	* ospf_neighbor.h: Add ospf_neigbour_get and ospf_nbr_lookup.
	* ospf_neighbor.c: (ospf_neigbour_get) Index ospf_interface 
	  neighbour table by router-id for virtual-link ospf_interfaces, 
	  not by peer_addr (which breaks for asymmetric vlinks)
	  (ospf_nbr_lookup) add a wrapper for nbr lookups to deal with
	  above.
	* ospf_interface.c: (ospf_vl_set_params) Catch changes of interface
	  address for either end of a virtual-link, and hence potential cost
	  changes.
	  
2004-04-22 Hasso Tepper <hasso@estpak.ee>

	* ospf_zebra.c: Don't ignore reject/bh routes, it's the only way
	  to "summarize" routes in ASBR at the moment.

2004-04-20 Hasso Tepper <hasso@estpak.ee>

	* ospfd.c: Unset NP flag if area is going to be normal or stub.
	  Fixes UNH OSPF_NSSA.1.2a comment.
	* ospf_abr.c: Originate default into stub/nssa area even if
	  summaries are disabled.
	* ospf_zebra.c: Don't attempt to redistribute 127.0.0.0/8.

2004-04-19 Hasso Tepper <hasso@estpak.ee>

	* ospf_vty.c: Don't warn that export- and import-list can't be
	  configured to backbone area if they are applied and are working
	  fine.

2004-02-19 Sowmini Varadhan <sowmini.varadhan@sun.com>

	* ospf_packet.c: Don't drop packets in Solaris x86.
	  [quagga-dev 1005].

2004-03-18 Amir Guindehi <amir@datacore.ch>

	* ospf_opaque.c: Attempt to correct the incorrect behavior of
	Quagga's ospfd in the special situation that a node's opaque
	capability has changed as "ON -> OFF -> ON". [quagga-dev 843].

2004-02-19 Sowmini Varadhan <sowmini.varadhan@sun.com>

	* ospf_abr.c: (ospf_abr_update_aggregate) UNH 3.12b,c, address range
	  should be configured with the highest cost path within the range,
	  not lowest.
	  
2004-02-17 Paul Jakma <paul@dishone.st>

	* ospf_zebra.c: (ospf_interface_delete) Do not delete the interface
	  params, nor the interface structure, if an interface delete 
	  message is received from zebra.
	* ospf_interface.c: (ospf_if_delete_hook) Delete the interface
	  params and interface, ie that which was previously removed in
	  (ospf_interface_delete) above.

2004-02-11 Hasso Tepper <hasso@estpak.ee>
	* ospf_interface.c, ospf_zebra.c: Don't attempt to read path->oi->ifp
	  if oi doesn't exist any more.

2004-02-11 Vadim Suraev <vadim.suraev@terayon.com>
	* ospf_packet.c (ospf_ls_upd): Router should flush received network
	  LSA if it was originated with older router-id ([zebra 14710] #6).

2003-12-08 Mattias Amnefelt <mattiasa@kth.se>

	* ospf_packet.c: (ospf_recv_packet) OpenBSD now leaves iph.ip_len 
	  network byte order.

2003-12-05  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* ospfd.c (ospf_network_match_iface): Rewrite code for clarity
	while trying not to change semantics.  Add ifdefed-out code to
	avoid matching ppp interfaces whose destination address does not
	also match the prefix under consideration, to help out people with
	problems due to as-yet-unfixed bugs with p2p interfaces coming and
	going.

2003-07-25 kamatchi soundaram <kamatchi@tdd.sj.nec.com>

        * ospf_packet.c (ospf_ls_upd_send_queue_event): get next route
          node in body of the loop to avoid chance that route node
          is unlocked and deleted before the next iteration tries to 
          get next route node.

2003-05-24 Kenji Yabuuchi

	* ospf_interface.c(ospf_if_lookup_recv_if): Use the most specific
	  match for interface lookup.

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

	* ospf_vty.c: Show NSSA LSA route info in "show ip ospf database"
	output

2003-05-16 Hasso Tepper <hasso@estpak.ee>

	* ospf_lsa.c: Fix handling of NSSA

2003-04-23 Hasso Tepper <hasso@estpak.ee>

	* ospf_vty.c: fix "router xxx" node commands in vtysh

2003-04-19 Hasso Tepper <hasso@estpak.ee>

	* {ospf_abr,ospfd}.c: area id's DECIMAL -> ADDRESS
	* ospf_routemap.c: sync daemon's route-map commands to have same
	  syntax.
	
2003-04-19 Sergey Vyshnevetskiy <serg@vostok.net>

	* ospf_packet.c: Add missing param to zlog
	* ospf_flood.c: remove unused vars

2003-04-17 Denis Ovsienko <zebra@pilot.org.ua>

	* ospf_interface.c: fix incorrect memset

2003-04-10 Amir Guindehi <amir@datacore.ch>

	* ospf_lsa.[ch]: opaque LSA fix, use ospf_lookup.

2003-04-03 David Watson <dwatson@eecs.umich.edu>

	* ospf_lsa.c: byte order fix

2002-03-17  Amir Guindehi <amir@datacore.ch>

        * ospf_apiserver.[ch]: Merge Ralph Keller's OSPFAPI support.
        * ospf_api.[ch]: Merge Ralph Keller's OSPFAPI support.
	* ospfclient: OSPFAPI demonstration client.

2003-01-23  Masahiko Endo <endo@suri.co.jp>

	* ospf_ism.c: NSM event schedule bug fix.

2002-10-30  Greg Troxel <gdt@ir.bbn.com>

	* ospf_packet.c (ospf_make_md5_digest): MD5 length fix. 

2002-10-23  endo@suri.co.jp (Masahiko Endo)

	* ospf_opaque.c: Update Opaque LSA patch.

2002-10-23  Ralph Keller <keller@tik.ee.ethz.ch>

	* ospf_vty.c (show_ip_ospf_database): Fix CLI parse.

2002-10-23  Juris Kalnins <juris@mt.lv>

	* ospf_interface.c (ospf_if_stream_unset): When write queue
	becomes empty stop write timer.

2002-10-10  Greg Troxel <gdt@ir.bbn.com>

	* ospf_packet.c (ospf_check_md5_digest): Change >= to > to make it
	conform to RFC.

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

	* zebra-0.93 released.

2002-06-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospf_spf.c (ospf_nexthop_calculation): Add NULL set to oi and
	check of l2.  Reported by: Daniel Drown <dan-zebra@drown.org>
	(ospf_lsa_has_link): LSA Length calculation fix.  Reported by:
	Paul Jakma <paulj@alphyra.ie>.

	* ospfd.c (ospf_if_update): Fix nextnode reference bug.  Reported
	by: juris@mt.lv.

2002-01-21  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospfd.c: Merge [zebra 11445] Masahiko ENDO's Opaque-LSA support.

2001-08-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_interface.c (ospf_add_to_if): Use /32 address to register
	OSPF interface information.
	(ospf_delete_from_if): Likewise.

	* ospf_zebra.c (ospf_interface_address_delete): Likewise.

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

	* ospf_zebra.c (ospf_redistribute_unset): When redistribute type
	is OSPF, do not unset redistribute flag.

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-12  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospfd.c (ospf_config_write): auto-cost reference-bandwidth
	configuration display.

2001-07-24  David Watson <dwatson@eecs.umich.edu>

	* ospf_spf.c (ospf_spf_next): Modify ospf_vertex_add_parent to
	check for an existing link before connecting the parent and child.
	ospf_nexthop_calculation is also modified to check for duplicate
	entries when copying from the parent.  Finally, ospf_spf_next
	removes duplicates when it merges two equal cost candidates.

2001-07-23  itojun@iijlab.net

	* ospfd.c (show_ip_ospf_neighbor): Check ospf_top before use it
	[zebra 8549].

2001-07-23  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospf_packet.c (ospf_write): Remove defined(__OpenBSD__) to make
	it work on OpenBSD.

2001-06-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_zebra.c (config_write_ospf_default_metric): Display
	default-metric configuration.

2001-06-18  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospf_ia.h (OSPF_EXAMINE_SUMMARIES_ALL): Remove old macros.

2001-05-28  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ospf_snmp.c (ospfIfEntry): Fix interface lookup bug to avoid
	crush.
	(ospfIfMetricEntry): Likewise.

2001-03-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_packet.c (ospf_read): Fix typo.  Reported by: "Jen B
	Lin'Kova" <jen@stack.net>.

2001-03-15  Gleb Natapov <gleb@nbase.co.il>

	* ospf_interface.c (ip_ospf_network): Set interface parameter.
	(interface_config_write): Add check for OSPF_IFTYPE_LOOPBACK.

	* ospf_zebra.c (ospf_interface_add): Set interface parameter.

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

	* ospf_packet.c (ospf_recv_packet): Solaris also need to add
	(iph.ip_hl << 2) to iph.ip_len.

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

	* ospfd.h (OSPF_LS_REFRESH_TIME): Fix OSPF_LS_REFRESH_TIME value.
	Suggested by: David Watson <dwatson@eecs.umich.edu>.

	* ospf_zebra.c (zebra_init): Remove zebra node.

	* ospfd.c (ospf_area_range_set): Function name is changed from
	ospf_ara_range_cmd.
	(ospf_area_range_unset): New function which separated from DEFUN.
	New commands are added:
	"no area A.B.C.D range A.B.C.D/M advertise"
	"no area <0-4294967295> range A.B.C.D/M advertise"
	"no area A.B.C.D range A.B.C.D/M not-advertise"
	"no area <0-4294967295> range A.B.C.D/M not-advertise"
	
	* ospf_lsa.c (ospf_lsa_more_recent): Fix previous change.

2001-02-08  Matthew Grant <grantma@anathoth.gen.nz>

	* ospf_network.c (ospf_if_add_allspfrouters): Use
	setsockopt_multicast_ipv4.
	(ospf_if_drop_allspfrouters): Likewise.

	* ospf_lsa.c (ospf_router_lsa_install): Add rt_recalc flag.
	(ospf_network_lsa_install): Likewise.
	(ospf_summary_lsa_install): Likewise.
	(ospf_summary_asbr_lsa_install): Likewise.
	(ospf_external_lsa_install): Likewise.
	(ospf_lsa_install): Call ospf_lsa_different to check this LSA is
	new one or not.

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

	* ospf_zebra.c (ospf_interface_delete): Do not free interface
	structure when ospfd receive interface delete message to support
	pseudo interface.

2001-02-01  Dick Glasspool <dick@ipinfusion.com>

	* ospfd.c (area_range_notadvertise): Change area range "suppress"
	command to "not-advertise".

	* ospfd.h (OSPF_LS_REFRESH_TIME): Change OSPF_LS_REFRESH_TIME from
	1800 to 60.

	* ospf_abr.c (ospf_abr_update_aggregate): When update_aggregate is
	updating the area-range, the lowest cost is now saved.

	* ospf_lsa.c (ospf_lsa_more_recent): Routing to compare sequence
	numbers rather than creating overflow during calculation.

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

	* zebra-0.91 is released.

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

	* ospf_packet.c (ospf_db_desc_proc): Do not continue process when
	NSM_SeqNumberMismatch is scheduled.
	(ospf_ls_req): Free ls_upd when return from this function.
	(ospf_ls_upd_timer): When update list is empty do not call
	ospf_ls_upd_send().  Suggested by: endo@suri.co.jp (Masahiko
	Endo).

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

	* ospf_lsa.c (ospf_maxage_flood): Flood LSA when it reaches
	MaxAge.  RFC2328 Section 14.
	(ospf_maxage_lsa_remover): Call above function during removing
	MaxAge LSA.

2001-01-26  Dick Glasspool <dick@ipinfusion.com>

	* ospf_flood.c (ospf_flood_through_as): Function is updated for
	NSSA Translations now done at ospf_abr.c with no change in P-bit.

	* ospf_lsa.c (ospf_get_nssa_ip): Get 1st IP connection for Forward
	Addr.
	(ospf_install_flood_nssa):  Leave Type-7 LSA at Lock Count = 2. 

	* ospf_ase.c (ospf_ase_calculate_route): Add debug codes.

	* ospf_abr.c (ospf_abr_translate_nssa): Recalculate LSA checksum.

	* ospf_packet.h (OSPF_SEND_PACKET_LOOP): Added for test packet.

	* ospf_dump.c (ospf_lsa_type_msg): Add OSPF_GROUP_MEMBER_LSA and
	OSPF_AS_NSSA_LSA.

	* ospfd.c (data_injection): Function to inject LSA.  This is
	debugging command.

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

	* ospf_route.c (ospf_route_match_same): Remove function.
	(ospf_route_match_same_new): Renamed to ospf_route_match_same.

	* ospf_zebra.c (ospf_interface_address_delete): Add check for
	oi->address.  Suggested by Matthew Grant
	<grantma@anathoth.gen.nz>.
	(ospf_zebra_add): Remove function.
	(ospf_zebra_add_multipath): Rename to ospf_zebra_add.

	* ospf_interface.c: Remove HAVE_IF_PSEUDO part.

	* ospf_zebra.c: Likewise.

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

	* ospf_ase.c: Remove OLD_RIB part.

	* ospf_route.c: Likewise.

	* zebra-0.90 is released.

	* ospf_packet.c (ospf_recv_packet): Use ip_len adjestment code to
	NetBSD.

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

	* ospf_route.c (ospf_route_delete): Use
	ospf_zebra_delete_multipath.

2001-01-09  Matthew Grant <grantma@anathoth.gen.nz>

	* ospf_interface.c (ospf_if_cleanup): Function name is renamed
	from ospf_if_free().  Rewrite whole procudure to support primary
	address deletion.

	* ospf_zebra.c (ospf_interface_address_delete): Add primary
	address deletion process.

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

	* ospf_packet.c (ospf_recv_packet): OpenBSD has same ip_len
	treatment like FreeBSD.

2001-01-09  endo@suri.co.jp (Masahiko Endo)

	* ospf_packet.c (ospf_recv_packet): FreeBSD kernel network code
	strips IP header size from receiving IP Packet.  So we adjust
	ip_len to whole IP packet size by adding IP header size.

2001-01-08  endo@suri.co.jp (Masahiko Endo)

	* ospf_network.c (ospf_serv_sock): When socket() is failed return
	immediately.
	(ospf_serv_sock): Close socket when it is not used.

	* ospf_packet.c (ospf_write): Set sin_len when HAVE_SIN_LEN is
	defined.
	(ospf_write): When bind is fined, close sock.

2001-01-07  Gleb Natapov <gleb@nbase.co.il>

	* ospf_zebra.c (ospf_interface_state_up): Fixes coredump that
	appears when you try to configure bandwidth on the ppp interface
	that is not yet configured in ospfd.

2001-01-07  Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* ospf_route.c (show_ip_ospf_route_external): "show ip ospf route"
	will print nexthops for AS-external routes.

	* ospf_ase.c (ospf_ase_route_match_same): New function to compare
	ASE route under multipath environment.
	(ospf_ase_compare_tables): Likewise.

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

	* ospfd.h (OSPF_VTYSH_PATH): Change "/tmp/ospfd" to "/tmp/.ospfd".

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

	* ospf_route.c (ospf_route_install): Install multipath information
	to zebra daemon.

	* ospf_zebra.c (ospf_zebra_add_multipath): Function for passing
	multipath information to zebra daemon.

2000-12-25  Dick Glasspool <dick@ipinfusion.com>

	* ospf_packet.c (ospf_write): Call ospf_packet_delete when sendto
	fail.
	(DISCARD_LSA): Add argument N for logging point of DISCARD_LSA is
	called.

	* ospf_lsa.c (ospf_external_lsa_refresh): NSSA install_flood will
	leave Type-7 LSA at Lock Count = 2.

	* ospf_flood.c (ospf_flood_through): Flood_though_as updated for
	NSSA no P-bit off during Area flooding, but P-bit is turned off
	for mulitple NSSA AS flooding.

	* ospf_ase.c (ospf_ase_calculate_timer): Added calculations for
	Type-7 LSDB.

	* ospf_abr.c (ospf_abr_translate_nssa): Removed one unlock call.
	(ospf_abr_announce_nssa_defaults): Corrected Debug from EVENT to
	NSSA.

2000-12-25  Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* ospf_zebra.c (ospf_zebra_read_ipv4): Checking the age of the
	found LSA and if the LSA is MAXAGE we should call refresh instead
	of originate.

2000-12-18  Dick Glasspool <dick@ipinfusion.com>
	   	   
	* ospf_abr.c: Removed redundant "...flood" in
	announce_network_to_area().  Repaired nssa Unlock by using
	discard.

	* ospf_packet.c: Removed old NSSA translate during mk_ls_update.
	
	* ospfd.c: Free up all data bases including NSSA.

	* ospf_lsa.c: Now allow removal of XLATE LSA's Check in
	discard_callback. Added routine to get ip addr from within the
	ifp.

	* ospf_flood.c: Now set Forward Address for outgoing Type-7.

	* ospf_lsa.h: Added prototype for the below. struct in_addr
	ospf_get_ip_from_ifp (struct interface *ifp).

2000-12-14  Gleb Natapov <gleb@nbase.co.il>

	* ospf_packet.c (ospf_recv_packet): New OSPF pakcet read method.
	Now maximum packet length may be 65535 bytes (maximum IP packet
	length).

	* ospf_interface.c (ospf_if_stream_set): Don't make input buffer.

	* ospfd.c (config_write_network_area): Remove unnecessary area
	lookup code.

2000-12-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_packet.c (ospf_read): Accept packet bigger than MTU value.

2000-12-13  Gleb Natapov <gleb@nbase.co.il>

	* ospfd.c (config_write_network_area): Fix bug in
	config_write_network_area function.

2000-12-12  Gleb Natapov <gleb@nbase.co.il>

	* ospf_abr.c (ospf_abr_announce_network_to_area): Make Summary
	LSA's origination and refreshment as same as other type of LSA.

	* ospf_lsa.c (ospf_summary_lsa_refresh): Return struct ospf_lsa *.

	* ospf_lsa.c (ospf_summary_asbr_lsa_refresh): Likewise.

2000-12-08  Dick Glasspool <dick@ipinfusion.com>

	The bulk of NSSA changes are contained herein; This version will
	require manual setting of "always" for NSSA Translator, and will
	not perform aggregation yet.

	* ospf_dump.c: "debug ospf nssa" is added.

	* ospf_dump.h: Likewise.

	* ospf_packet.c (ospf_hello): Display router ID on Bad NSSA Hello.

	* ospfd.c: Discard_LSA to stay away from LOCAL_XLT Process NSSA
	'never, candidate, always'.  Change "suppress" to "not-advertise".

	* ospfd.h: Add TranslatorRole to struct ospf_area.  Add anyNSSA to
	struct ospf.

	* ospf_ase.c (ospf_ase_calculate_route): External to stay away
	from LOCAL_XLT

	* ospf_nsm.c (ospf_db_summary_add): External to stay away from
	LOCAL_XLT

	* ospf_abr.c: Major logic added for abr_nssa_task().  If ABR, and
	NSSA translator, then do it.  Approve the global list, and flush
	any unapproved.
	
	* ospf_lsa.h: New LSA flag OSPF_LSA_LOCAL_XLT to indicate that the
	Type-5 resulted from a Local Type-7 translation; not used for
	flooding, but used for flushing.

	* ospf_flood.c: New NSSA flooding.

2000-12-08  Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* ospfd.c (ospf_find_vl_data): New function for looking up virtual
	link data.
	(ospf_vl_set_security): Virtual link configuration with
	authentication.
	(ospf_vl_set_timers): Set timers for virtual link.

	* New commands are added.
	"area A.B.C.D virtual-link A.B.C.D"
	"area A.B.C.D virtual-link A.B.C.D hello-interval <1-65535> retransmit-interval <3-65535> transmit-delay <1-65535> dead-interval <1-65535>"
	"area A.B.C.D virtual-link A.B.C.D hello-interval <1-65535> retransmit-interval <3-65535> transmit-delay <1-65535> dead-interval <1-65535> authentication-key AUTH_KEY"
	"area A.B.C.D virtual-link A.B.C.D authentication-key AUTH_KEY"
	"area A.B.C.D virtual-link A.B.C.D hello-interval <1-65535> retransmit-interval <3-65535> transmit-delay <1-65535> dead-interval <1-65535> message-digest-key <1-255> md5 KEY"
	"area A.B.C.D virtual-link A.B.C.D message-digest-key <1-255> md5 KEY"

	* ospf_packet.c (ospf_check_md5_digest): Add neighbor's
	cryptographic sequence number treatment.
	(ospf_check_auth): OSPF input buffer is added to argument.
	(ospf_read): Save neighbor's cryptographic sequence number.

	* ospf_nsm.c (nsm_change_status): Clear cryptographic sequence
	number when neighbor status is changed to NSM down.

	* ospf_neighbor.c (ospf_nbr_new): Set zero to crypt_seqnum.

	* ospf_neighbor.h (struct ospf_neighbor): Add cryptographic
	sequence number to neighbor structure.

2000-11-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_snmp.c (ospfIfLookup): OSPF MIB updates.
	(ospfExtLsdbEntry): Add OspfExtLsdbTable treatment.

2000-11-28  Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* ospfd.c (ospf_interface_down): Clear a ls_upd_queue queue of the
	interface.
	(ospf_ls_upd_queue_empty): New function to empty ls update queue
	of the OSPF interface.
	(no_router_ospf): 'no router ospf' unregister redistribution
	requests from zebra.

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

	* ospf_ism.c (ism_change_status): Increment status change number.

	* ospf_interface.h (struct ospf_interface): Add new member for
	status change statistics.

	* Makefile.am: Update dependencies.

	* ospf_zebra.c (ospf_interface_add): OSPF SNMP interface update.
	(ospf_interface_delete): OSPF SNMP interface delete.

	* ospf_snmp.h: New file is added.

2000-11-23  Dick Glasspool <dick@ipinfusion.com>

	* ospfd.h: Add new ospf_area structure member for
	NSSATranslatorRole and NSSATranslator state.

	* ospfd.c: Provided for eventual commands to specify NSSA
	elections for "translator- ALWAYS/NEVER/CANDIDATE". Provided for
	decimal integer version of area-suppress.

	* ospf_flood.c: Flood Type-7's only into NSSA (not AS).

	* ospf_lsa.c: Undo some previous changes for NSSA.  If NSSA
	translator, advertise Nt bit.

	* ospf_route.c: 1st version of "sh ip os border-routers".

2000-11-23  Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* ospfd.c (area_vlink): Virtual link can not configured in stub
	area.

2000-11-23  Gleb Natapov <gleb@nbase.co.il>

	* ospf_packet.c (ospf_db_desc): In states Loading and Full the
	slave must resend its last Database Description packet in response
	to duplicate Database Description packets received from the
	master.  For this reason the slave must wait RouterDeadInterval
	seconds before freeing the last Database Description packet.
	Reception of a Database Description packet from the master after
	this interval will generate a SeqNumberMismatch neighbor
	event. RFC2328 Section 10.8
	(ospf_make_db_desc): DD Master flag treatment.

	* ospf_nsm.c (nsm_twoway_received): Move DD related procedure to
	nsm_change_status().
	(nsm_bad_ls_req): Likewise.
	(nsm_adj_ok): Likewise.
	(nsm_seq_number_mismatch): Likewise.
	(nsm_oneway_received): Likewise.

	* ospf_neighbor.h (struct ospf_neighbor): New structure member
	last_send_ts for timestemp when last Database Description packet
	was sent.

	* ospf_nsm.c (ospf_db_desc_timer): Make it sure nbr->last_send is
	there.  Call ospf_db_desc_resend() in any case.

2000-11-16  Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* ospf_lsa.c (lsa_link_broadcast_set): When there is no DR on
	network (suppose you have only one router with interface priority
	0). It's router LSA does not contain the link information about
	this network.

	* ospf_nsm.c (nsm_timer_set): When you change a priority of
	interface from/to 0 ISM_NeighborChange event should be scheduled
	in order to elect new DR/BDR on the network.

	* ospf_interface.c (ip_ospf_priority): Likewise.

	* ospf_flood.c (ospf_ls_retransmit_add): When we add some LSA into
	retransmit list we need to check whether the present old LSA in
	retransmit list is not more recent than the new
	one.

2000-11-09  Dick Glasspool <dick@ipinfusion.com>

	* ospf_packet.c: Allows for NSSA Type-7 LSA's throughout the NSSA
	area.  Any that exit the NSSA area are translated to type-5 LSA's.
	The instantiated image is restored after translation.
	(ospf_ls_upd_send_list): Renamed to ospf_ls_upd_queu_send().
	(ospf_ls_upd_send): Old function which enclosed by #ifdef 0 is
	removed.
	(ospf_ls_ack_send): Likewise.

	* ospf_flood.c: NSSA-LSA's without P-bit will be restricted to
	local area.  Otherwise they are allowed out the area to be
	translated by ospf_packet.c.

	* ospf_lsa.c: Undo some previous changes for NSSA.

	* ospf_lsdb.h: New access for type 7.

2000-11-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_route.c (ospf_path_exist): New function to check nexthop
	and interface are in current OSPF path or not.
	(ospf_route_copy_nexthops_from_vertex): Add nexthop to OSPF path
	when it is not there.  Reported by Michael Rozhavsky
	<mrozhavsky@opticalaccess.com>

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

	* ospf_dump.c (config_write_debug): Add seventh string "detail" is
	added for flag is OSPF_DEBUG_SEND | OSPF_DEBUG_RECV |
	OSPF_DEBUG_DETAIL.

2000-11-06   Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* ospf_lsa.c (router_lsa_flags): ASBR can't exit in stub area.

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

	* ospf_lsa.c (ospf_router_lsa_originate): Reduce unconditional
	logging.

2000-11-06  Dick Glasspool <dick@ipinfusion.com>

	* ospfd.h: Add ait_ntoa function prototype.

	* ospfd.c (ait_ntoa): New function for displaying area ID and
	Stub/NSSA status.
	(show_ip_ospf_interface_sub): Use ait_ntoa.
	(show_ip_ospf_nbr_static_detail_sub): Likewise.
	(show_ip_ospf_neighbor_detail_sub): Likewise.

	* ospf_route.c (ospf_intra_route_add): Set external routing type
	to ospf route.
	(ospf_intra_add_router): Likewise.
	(ospf_intra_add_transit): Likewise.
	(ospf_intra_add_stub): Likewise.
	(ospf_add_discard_route): Likewise.
	(show_ip_ospf_route_network): Use ait_ntoa.
	(show_ip_ospf_route_network): Likewise.
	(show_ip_ospf_route_router): Likewise.

	* ospf_lsa.c (show_lsa_detail): Use ait_ntoa.
	(show_lsa_detail_adv_router): Likewise.
	(show_ip_ospf_database_summary): Likewise.

	* ospf_route.h (struct route_standard): Add new member
	external_routing.

	* ospf_ia.c (process_summary_lsa): Set external routing tyep to ospf
	route.
	(ospf_update_network_route): Likewise.
	(ospf_update_router_route): Likewise.

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

	* ospf_flood.c (ospf_process_self_originated_lsa): Enclose
	OSPF_AS_NSSA_LSA treatment with #ifdef HAVE_NSSA.

2000-11-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Unconditional logging is enclosed with if (IS_DEBUG_OSPF_EVENT).
	Please specify "debug ospf event" for enable logging.

	* ospf_ism.c: Do not extern debug flag varible.  It is done by
	ospf_debug.h
	* ospf_asbr.c: Likewise.
	* ospf_lsa.c: Likewise.
	* ospf_nsm.c: Likewise.
	* ospf_zebra.c: Likewise.

	* ospf_dump.c (debug_ospf_event): New command "debug ospf event"
	is added.

	* ospfd.c (router_ospf): Change logging from vty_out() to
	zlog_info().
	(ospf_area_stub_cmd): Likewise.

	* ospf_dump.h: Extern term_debug flags.
	(OSPF_DEBUG_EVENT): Add new flag.
	(IS_DEBUG_OSPF_EVENT): Add new macro.

2000-11-03  Dick Glasspool <dick@ipinfusion.com>

	* ospf_flood.c (ospf_process_self_originated_lsa):
	OSPF_AS_NSSA_LSA is treated as same as OSPF_AS_EXTERNAL_LSA.
	(ospf_flood): Type-5's have no change.  Type-7's can be received,
	and will Flood the AS as Type-5's They will also flood the local
	NSSA Area as Type-7's.  The LSDB will be updated as Type-5's, and
	during re-fresh will be converted back to Type-7's (if within an
	NSSA).
	(ospf_flood_through): Incoming Type-7's were allowed here if our
	neighbor was an NSSA.  So Flood our area with the Type-7 and also
	if we are an ABR, flood thru AS as Type-5.

	* ospf_lsa.c (ospf_external_lsa_refresh): Flood NSSA both NSSA
	area and other area.

	* ospf_packet.c (ospf_db_desc_proc): When AS External LSA is
	exists in DD packet, make it sure that this area is not stub.
	(ospf_ls_upd_list_lsa): When LSA type is NSSA then set lsa's area
	to NULL.
	(ospf_ls_upd): If the LSA is AS External LSA and the area is stub
	then discard the lsa.  If the LSA is NSSA LSA and the area is not
	NSSA then discard the lsa.

2000-11-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospfd.c (ospf_interface_run): Fix bug of Hello packet's option
	is not properly set when interface comes up.

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

	* ospfd.h (OSPF_OPTION_O): Add new hello header option.

2000-11-01  Dick Glasspool <dick@ipinfusion.com>

	* ospf_lsa.h: Define OSPF_MAX_LSA to 8 when HAVE_NSSA is enabled.
	(OSPF_GROUP_MEMBER_LSA): Define OSPF_GROUP_MEMBER_LSA.

	* ospf_lsa.c (show_database_desc): Add "Group Membership LSA"
	string.

2000-10-31  Dick Glasspool <dick@ipinfusion.com>

	* ospf_lsa.h (OSPF_AS_NSSA_LSA): Define OSPF_AS_NSSA_LSA.
	
	* ospf_lsa.c (show_ip_ospf_database): NSSA database display
	function is added.  ALIASES which have "show ip ospf database
	nssa-external" is added.
	(show_ip_ospf_border_routers): New command "show ip ospf
	border-routers" is added.

2000-10-30  Dick Glasspool <dick@ipinfusion.com>

	* ospfd.c (router_ospf): NSSA Enabled message is added for
	testing.
	(ospf_area_type_set): Are type set for NSSA area.
	(ospf_area_stub_cmd): Special translation of no_summary into NSSA
	and summary information. If NSSA is enabled pass the information
	to ospf_area_type_set().
	(area_nssa): New commands are added:
	"area A.B.C.D nssa"
	"area <0-4294967295> nssa"
	"area A.B.C.D nssa no-summary"
	"area <0-4294967295> nssa no-summary"
	(ospf_no_area_stub_cmd): Special translation of no_summary into
	NSSA and summary information.  If external_routing is
	OSPF_AREA_NSSA unset area with ospf_area_type_set (area,
	OSPF_AREA_DEFAULT).
	(show_ip_ospf_area): Display NSSA status.
	(config_write_ospf_area): Show NSSA configuration.

	* ospf_packet.c (ospf_hello): For NSSA support, ensure that NP is
	on and E is off.

2000-10-26  Gleb Natapov <gleb@nbase.co.il>

	* ospf_lsa.c (ospf_network_lsa_body_set): The network-LSA lists
	those routers that are fully adjacent to the Designated Router;
	each fully adjacent router is identified by its OSPF Router ID.
	The Designated Router includes itself in this list. RFC2328,
	Section 12.4.2.

2000-10-23  Jochen Friedrich <jochen@scram.de>

	* ospf_snmp.c: ospf_oid and ospfd_oid are used in smux_open after
	it is registered.  So those variables must be static.

2000-10-18  K N Sridhar <sridhar@euler.ece.iisc.ernet.in>

	* ospfd.c: Add area_default_cost_decimal_cmd and
	no_area_default_cost_decimal_cmd alias.

2000-10-05  Gleb Natapov <gleb@nbase.co.il>

	* ospfd.c (ospf_network_new): Fix setting area format.
	(no_router_ospf): Check area existance when calling
	ospf_interface_down().

	* ospf_flood.c (ospf_external_info_check): Fix bug of refreshing
	default route.

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

	* zebra-0.89 is released.

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

	* ospf_snmp.c (ospfHostEntry): OSPF Host MIB is implemented.

	* ospfd.c (ospf_nbr_static_cmp): OSPF neighbor is sorted by it's
	address.

2000-09-28  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_interface.c (ospf_if_free):  Fix deleting self neighbor twice.

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

	* ospf_packet.c (ospf_read): Solaris on x86 has ip_len with host
	byte order.

2000-09-25  Toshiaki Takada  <takada@zebra.org>

	* ospfd.c (ospf_compatible_rfc1583), (no_ospf_compatible_rfc1583):
	Add CISCO compatible command.

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

	* ospf_abr.c (ospf_area_range_lookup): New function is added for
	area range lookup in OSPF-MIB.
	(ospf_area_range_lookup_next): Likewise.

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

	* ospfd.c (no_router_ospf): Delete virtual link before deleting
	area structure.

	* ospf_lsa.c (ospf_external_lsa_refresh_type): Check
	EXTERNAL_INFO(type).

	* ospfd.c (no_router_ospf): Call ospf_vl_delete() instead of
	ospf_vl_data_free().

	* ospf_interface.c (ospf_vl_shutdown): Execute ISM_InterfaceDown
	when ospf_vl_shutdown is called.
	(ospf_vl_delete): Call ospf_vl_shutdown() to delete virtual link
	interface's thread.

2000-09-21  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_lsa.c: New implementation of OSPF refresh.

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

	* ospf_snmp.c (ospfLsdbLookup): Add LSDB MIB implementation.

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

	* ospf_snmp.c (ospfStubAreaEntry): Add OSPF stub area MIB.

2000-09-18  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_route.h (route_standard):  Change member from `struct area'
	to area_id.

	* ospf_abr.c (ospf_abr_announce_network), (ospf_abr_should_announce),
	(ospf_abr_process_network_rt), (ospf_abr_announce_rtr), 
	(ospf_abr_process_router_rt):
	* ospf_ase.c (ospf_find_asbr_route),
	(ospf_find_asbr_router_through_area),
	* ospf_ia.c (ospf_find_abr_route), (ospf_ia_router_route),
	(process_summary_lsa), (ospf_update_network_route),
	(ospf_update_router_route):
	* ospf_route.c (ospf_intra_route_add), (ospf_intra_add_router),
	(ospf_intra_add_transit), (ospf_intra_add_stub),
	(ospf_route_table_dump), (show_ip_ospf_route_network),
	(show_ip_ospf_route_router), (ospf_asbr_route_cmp),
	(ospf_prune_unreachable_routers):
	* ospf_spf.c (ospf_rtrs_print):
	* ospfd.c (ospf_rtrs_free):  Fix the struct change above.

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

	* ospf_network.c (ospf_serv_sock_init): Enclose SO_BINDTODEVICE
	with ifdef.

2000-09-13  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_ism.c (ospf_elect_dr), (ospf_elect_bdr):  Fix DR election.

	* ospf_network.c (ospf_serv_sock_init):  Add socket option
	SO_BINDTODEVICE on read socket.

	* ospf_packet.c (ospf_hello):  Ignore Hello packet if E-bit does
	not match.

	* ospfd.c (ospf_area_check_free), (ospf_area_get),
	(ospf_area_add_if):  New function added.
	
2000-09-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_route.c (ospf_intra_add_router): Update ABR and ASBR router
	count.

	* ospf_spf.c (ospf_spf_init): Rest ABR and ASBR router count
	starting SPF calculation.

	* ospfd.h (struct ospf_area): Add ABR and ASBR router count.

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

	* ospfd.c (ospf_area_id_cmp): New area structure is sorted by area
	ID.

	* ospf_lsa.c (ospf_router_lsa_originate): For OSPF MIB update
	lsa_originate_count.
	(ospf_network_lsa_originate): Likewise.
	(ospf_summary_lsa_originate): Likewise.
	(ospf_summary_asbr_lsa_originate): Likewise.
	(ospf_external_lsa_originate): Likewise.

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

	* ospf_snmp.c (ospf_variables): ospfRouterID's type RouterID
	syntax is IpAddress.
	(ospf_admin_stat): New function for OSPF administrative status
	check.

2000-09-10  Jochen Friedrich <jochen@scram.de>

	* ospf_snmp.c: Implement OSPF MIB skeleton.

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

	* ospf_snmp.c: New file is added.

2000-09-07  David Lipovkov <davidl@nbase.co.il>

	* ospf_zebra.c (ospf_interface_delete): Add pseudo interface
	treatment.

	* ospf_interface.c (interface_config_write): Likewise.

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

	* zebra-0.88 is released.

2000-08-17  Michael Rozhavsky  <mike@nbase.co.il>

	* ospfd.c (ospf_area_free):  Remove virtual link configuration only
	when Area is removed.

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

	* ospfd.c (network_area): Revert check for EXTERNAL_INFO
	(ZEBRA_ROUTE_CONNECT).
	(no_network_area): Likewise.

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

	* ospfd.h (struct ospf): Add distance_table and
	distance_{all,intra,inter,external}.

	* ospf_zebra.c: Add OSPF distance related functions.

2000-08-15  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_asbr.c (ospf_external_info_find_lsa):  New function added.

	* ospf_lsa.c (ospf_default_external_info),
	(ospf_default_originate_timer), (ospf_external_lsa_refresh_default):
	New function added.

	* ospf_zebra.c
	(ospf_default_information_originate_metric_type_routemap),
	(ospf_default_information_originate_always_metric_type_routemap):
	Change name and add route-map function.
	(ospf_default_information_originate_metric_routemap),
	(ospf_default_information_originate_routemap),
	(ospf_default_information_originate_type_metric_routemap):
	New DEFUN added.

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

	* ospf_zebra.c (zebra_interface_if_set_value): Change ifindex
	restore size from two octet to four.

2000-08-14  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_ase.c (ospf_ase_incremental_update):  Implement incremental
	AS-external-LSA in 16.6 of RFC2328.

2000-08-14  Matthew Grant  <grantma@anathoth.gen.nz>

	* ospf_interface.c (ospf_if_get_output_cost):  Change cost
	calculation algorithm.

	* ospf_packet (ospf_ls_upd):  Fix problem of LSA retransmitting.

2000-08-11  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_lsa.c (ospf_maxage_lsa_remover):  Fix maxage remover for
	AS-external-LSAs.

2000-08-10  Toshiaki Takada  <takada@zebra.org>

	* ospfd.c (auto_cost_reference_bandwidth):  New DEFUN added.
	`auto-cost reference-bandwidth' OSPF router command added.

2000-08-08  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_routemap.c (ospf_route_map_update):  New function added.
	Add route-map event hook.

2000-08-08  Toshiaki Takada  <takada@zebra.org>

	* ospf_zebra.c (ospf_distribute_check_connected):  If redistribute
	prefix is connected route on OSPF enabled interface, suppress to
	announce it.

2000-08-08  Matthew Grant  <grantma@anathoth.gen.nz>

	* ospf_interface.c (ospf_if_get_output_cost):
	New function added.  Handle bandwidth parameter for cost
	calculation.

2000-08-08  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_interface.c (interface_config_write):  Show interface
	configuration regardless interface is down.

	* ospf_ase.c (ospf_ase_caocluate_route):  Whole rewritten external
	route calculate function.

2000-08-08  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_routemap.c:  New file added.

	* ospf_asbr.c (ospf_reset_route_map_set_values),
	(ospf_route_map_set_compare):  New function added.

	* ospf_lsa.c (ospf_external_lsa_body_set):  Set routemap metric
	with AS-external-LSA.

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

	* ospf_ase.c (ospf_ase_calculate_route_add): Pass new->cost to
	ospf_zebra_add as metric.
	(ospf_ase_calculate_route_add): Likewise.

	* ospf_route.c (ospf_route_install): Pass or->cost to
	ospf_zebra_add as metric.

	* ospf_zebra.c (ospf_zebra_add): Add metric arguemnt.
	(ospf_zebra_delete): Likewise.

2000-08-03  Matthew Grant  <grantma@anathoth.gen.nz>

	* ospf_flood.c (ospf_flood_delayed_lsa_ack):  New function added.
	Dispatch delayed-ACK with flooding AS-external-LSA across virtual
	link.

2000-07-31  Matthew Grant  <grantma@anathoth.gen.nz>

	* ospfd.c (show_ip_ospf_area):  Fix lack of VTY_NEWLINE when
	`show ip ospf'.

	* ospf_interface.c (ospf_if_free):  Fix bug of crash with
	Point-to-Point interface.

2000-07-27  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_flood.c (ospf_process_self_originated_lsa):
	Make sure to clear LSA->param (redistributed external information)
	before refreshment.

2000-07-27  Gleb Natapov  <gleb@nbase.co.il>

	* ospfd.c (refresh_group_limit), (refresh_per_slice),
	(refresh_age_diff):  New defun added.  Refresher related parameter
	can be configurable.

2000-07-27  Akihiro Mizutani  <mizutani@dml.com>

	* ospf_interface.c (interface_config_write):  Print `description'
	config directive to work.

2000-07-24  Akihiro Mizutani  <mizutani@dml.com>

	* ospf_interface.c (ospf_if_init): Use install_default for
	INTERFACE_NODE.

2000-07-24  Gleb Natapov  <gleb@nbase.co.il>
	
	* ospf_packet.c (ospf_ls_upd_send_list), (ospf_ls_upd_send_event),
	(ospf_ls_ack_send_list), (ospf_ls_ack_send_event): New function added.
	This make sending always as many LS update/Ack combined in one ospf
	packet.

2000-07-24  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_packet.c (ospf_ls_upd_list_lsa):  Set NULL to lsa->area if 
	LSA is AS-external-LSA.

	* ospf_nsm.c (nsm_reset_nbr):  Do not cancel Inactivity timer.

2000-07-21  Toshiaki Takada  <takada@zebra.org>

	* ospf_zebra.c (ospf_default_originate_timer):  Set timer for
	`default-information originate'.  Fix some default originate
	related functions.

2000-07-12  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.c (stream_put_ospf_metric):  New function added.

2000-07-12  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.c (show_ip_ospf_database_router),
	(show_ip_ospf_database_network), (show_ip_ospf_database_summary),
	(show_ip_ospf_database_summary_asbr), (show_ip_ospf_database_externel),
	(show_router_lsa), (show_any_lsa), (show_router_lsa_self),
	(show_any_lsa_self):  Functions removed.

	(show_lsa_prefix_set), (show_lsa_detail_proc), (show_lsa_detail),
	(show_lsa_detail_adv_router_proc), (show_lsa_detail_adv_router):
	New functions added.  Replace above functions.

	(show_ip_ospf_database_all), (show_ip_ospf_database_self_originated):
	Functions removed.
	(show_ip_ospf_database_summary):  New functions added.  Replace
	above functions.

	(show_ip_ospf_database_cmd):  DEFUN rearranged.
	(show_ip_ospf_database_type_id_cmd),
	(show_ip_ospf_database_type_id_adv_router_cmd),
	(show_ip_ospf_database_type_is_self_cmd):  New ALIASes added.
	(show_ip_ospf_database_type_adv_rotuer_cmd):  New DEFUN added.
	(show_ip_ospf_database_type_self_cmd):  New ALIAS added.

2000-07-11  Toshiaki Takada  <takada@zebra.org>

	* ospf_asbr.c (ospf_external_info_new),
	(ospf_external_info_free):  New functions added.

	* ospf_lsa.h (ospf_lsa):  Add new member `void *param' to set
	origination parameter for external-LSA.
	Remove member `redistribute'.

	* ospf_zebra.c (ospf_redistirbute_set):  When `redistribute'
	command executed, metric and metric-type values are overridden.
	If one of those is changed refresh AS-external-LSAs for appropriate
	type.

2000-07-11  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_lsa.c (ospf_summary_lsa_refresh),
	(ospf_summary_asbr_lsa_refresh):  Make sure to refresh summary-LSAs.

	* ospf_abr.c (set_metric):  New function added.

2000-07-07  Toshiaki Takada  <takada@zebra.org>

	* ospf_zebra.c (ospf_default_information_originate_metric_type),
	(ospf_default_information_originate_type_metric):  New defun added.
	Metic and Metric type can be set to default route.
	(ospf_default_information_originate_always_metric_type):
	(ospf_default_information_originate_always_type_metric):
	New defun added.  Metric and Metric type can be set to default
	always route.
	
	* ospf_zebra.c (ospf_default_metric), (no_ospf_default_metric):
	New defun added.

2000-07-06  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_flood.c (ospf_flood_through_area):  Fix bug of considering
	on the same interface the LSA was received from.

2000-07-06  Michael Rozhavsky  <mike@nbase.co.il>

	* ospfd.c (ospf_config_write):  Fix bug of printing `area stub'
	command with `write mem'.

	* ospfd.c (no_router_ospf):  Remove installed routes from zebra.

	* ospf_zebra.c (ospf_interface_delete):  Fix function to handle
	zebra interface delete event.

2000-07-06  Toshiaki Takada  <takada@zebra.org>

	* ospf_zebra.c (ospf_default_information_originate),
	(ospf_default_information_originate_always):  New DEFUN added.

2000-07-05  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_route.c (ospf_terminate):  Make sure to remove external route
	when SIGINT received.

2000-07-03  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_flood.c, ospf_ism.c, ospf_lsa,c, ospfd.c:  Make sure to free
	many structure with `no router ospf'.

2000-06-30  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_neighbor.c (ospf_nbr_new),
	ospf_nsm.c (nsm_timer_set):  Start LS update timer only
	when neighbor enters Exchange state.

2000-06-29  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_nsm.c (nsm_timer_set), (nsm_exchange_done),
	ospf_packet.c (ospf_db_desc_proc):
	Do not cancel DD retransmit timer when Master.

2000-06-29  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_abr.c (ospf_abr_announce_network_to_area),
	(ospf_abr_announce_rtr_to_area)
	ospf_ase.c (ospf_ase_rtrs_register_lsa),
	ospf_flood.c (ospf_process_self_originated_lsa),
	(ospf_flood_through_area), (ospf_ls_request_delete),
	ospf_interface.c (ospf_if_free),
	ospf_ism.c (ism_change_status),
	ospf_lsa.c (ospf_router_lsa_update_timer),
	(ospf_router_lsa_install), (ospf_network_lsa_install),
	(ospf_lsa_maxage_delete), (ospf_lsa_action),
	(ospf_schedule_lsa_flood_area),
	ospf_nsm.c (nsm_change_status),
	ospf_packet.c (ospf_make_ls_req_func), (ospf_make_ls_ack):
	Use ospf_lsa_{lock,unlock} for all looking-up of LSA.

	* ospf_flood.c (ospf_ls_request_free):  Function deleted.

	* ospf_lsa.c (ospf_discard_from_db):  New function added.

2000-06-26  Toshiaki Takada  <takada@zebra.org>

	* ospfd.h (ospf): struct member `external_lsa' name changed to
	`lsdb'.

2000-06-26  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.c (ospf_lsa_install), (ospf_router_lsa_install),
	(ospf_network_lsa_install), (ospf_summary_lsa_install),
	(ospf_summary_asbr_lsa_install), (ospf_external_lsa_install):
	Functions re-arranged.

	* ospf_lsa.c (IS_LSA_MAXAGE), (IS_LSA_SELF):  Macro added.
	
2000-06-20  Michael Rozhavsky <mike@nbase.co.il>

	* ospf_packet.c (ospf_ls_req), (ospf_ls_upd), (ospf_ls_ack):  Add
	verification of LS type.

2000-06-20  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_ase.c (ospf_ase_calculate_timer):  Add more sanity check
	whether rn->info is NULL.

2000-06-20  Toshiaki Takada  <takada@zebra.org>

	* ospfd.c (show_ip_ospf_interface_sub):  Show Router-ID of both
	DR and Backup correctly with `show ip ospf interface' command.

2000-06-20  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.c (ospf_lsa_lock), (ospf_lsa_unlock),
	(ospf_lsa_discard):  These functions are used for avoiding
	unexpected reference to freed LSAs.

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

	* ospf_packet.c (ospf_ls_upd): Initialize lsa by NULL to avoid
	warning.

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

	* ospf_ase.h (ospf_ase_rtrs_register_lsa): Add prototype.

2000-06-12  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.c (ospf_external_lsa_install):  Make sure to register
	LSA to rtrs_external when replacing AS-external-LSAs in LSDB.
	Fix core dump.

2000-06-10  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsdb.c (id_to_prefix), (ospf_lsdb_hash_key),
	(ospf_lsdb_hash_cmp), (ospf_lsdb_new), (ospf_lsdb_iterator),
	(lsdb_free), (ospf_lsdb_free), (ospf_lsdb_add),	(ospf_lsdb_delete),
	(find_lsa), (ospf_lsdb_lookup),	(find_by_id),
	(ospf_lsdb_lookup_by_id), (ospf_lsdb_lookup_by_header):  Functinos
	removed for migration to new_lsdb.

	* ospf_lsa.c (ospf_summary_lsa_install),
	(ospf_summary_asbr_lsa_install), (ospf_maxage_lsa_remover),
	(ospf_lsa_maxage_walker), (ospf_lsa_lookup),
	(ospf_lsa_lookup_by_id):  Use new_lsdb instead of ospf_lsdb.
	(count_lsa), (ospf_lsa_count_table), (ospf_lsa_count),
	(ospf_get_free_id_for_prefix):	Funcitions removed.
	
2000-06-09  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_ism.c (ism_interface_down):  Prevent some unneeded DR changes.

	* ospf_packet.c (ospf_db_desc_proc):  Fix memory leak.
	(ospf_hello):  Always copy router-ID when hello is received.

2000-06-08  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_lsa.h (struct ospf_lsa): Add member of pointer to struct
	ospf_area.

2000-06-08  Michael Rozhavsky <mike@nbase.co.il>

	* ospf_ase.c (ospf_asbr_route_same):  New function added.
	This function makes sure external route calculation more 
	precisely.

2000-06-07  Michael Rozhavsky <mike@nbase.co.il>

	* ospf_ism.c (ism_change_status):  Use ospf_lsa_flush_area for
	network-LSA deletion instead of using ospf_lsdb_delete.
	Also cancel network-LSA origination timer.

2000-06-07  Levi Harper  <lharper@kennedytech.com>

	* ospf_interface.c (ospf_if_down): Close read fd when an interface
	goes down.

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

	* ospf_asbr.c (ospf_external_info_lookup): Add explicit brace for
	avoid ambiguous else.

	* ospf_flood.c (ospf_external_info_check): Likewise.

2000-06-05  Toshiaki Takada  <takada@zebra.org>

	* ospf_nsm.c (nsm_adj_ok):  Fix bug of DR election.

2000-06-04  Toshiaki Takada  <takada@zebra.org>

	* ospf_zebra.c (ospf_default_information_originate),
	(no_ospf_default_information_originate):  New DEFUN added.

2000-06-03  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.h, ospf_asbr.h (external_info):  Struct moved from
	ospf_lsa.h to ospf_asbr.h.

	* ospf_lsa.c, ospf_asbr.c (ospf_external_info_add),
	(ospf_external_info_delete):  Function moved from ospf_lsa.c
	to ospf_asbr.c.

2000-06-03  Toshiaki Takada  <takada@zebra.org>

	* ospf_flood.c (ospf_external_info_check):  New function added.
	(ospf_process_self_orignated_lsa):  Make sure to flush
	self-originated AS-external-LSA, when router reboot and no longer
	originate those AS-external-LSA.

2000-06-02  Toshiaki Takada  <takada@zebra.org>

	* ospf_network.c (ospf_serv_sock):  Remove SO_DONTROUTE
	socket option.

	* ospf_packet.c (ospf_write):  Set MSG_DONTROUTE flag for
	unicast destination packets.

2000-06-02  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsdb.c (new_lsdb_delete):  Delete entry from LSDB only when
	specified LSA matches.

2000-06-02  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_network.c (ospf_serv_sock):  Set SO_DONTROUTE
	socket option.

2000-06-01  Akihiro Mizutani  <mizutani@dml.com>

	* ospf_dump.c:  Replace string `Debugging functions\n' with DEBUG_STR.
	Replace string `OSPF information\n' with OSPF_STR.

2000-06-01  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsdb.[ch]:  Use new_lsdb struct for network-LSA instead of
	ospf_lsdb.

2000-06-01  Toshiaki Takada  <takada@zebra.org>

	* ospf_dump.c (config_debug_ospf_packet), (config_debug_ospf_event),
	(config_debug_ospf_ism), (config_debug_ospf_nsm),
	(config_debug_ospf_lsa), (config_debug_ospf_zebra),
	(term_debug_ospf_packet), (term_debug_ospf_event),
	(term_debug_ospf_ism), (term_debug_ospf_nsm),
	(term_debug_ospf_lsa), (term_debug_ospf_zebra):  Repalce debug_ospf_*
	variable to use for debug option flags.
	
	(debug_ospf_packet), (debug_ospf_ism), (debug_ospf_nsm),
	(debug_ospf_lsa), (debug_ospf_zebra):  Set {config,term}_debug_*
	flags when vty->node is CONFIG_NODE, otherwise set only term_debug_*
	flags.

	* ospf_dump.h (CONF_DEBUG_PACKET_ON), (CONF_DEBUG_PACKET_OFF),
	(TERM_DEBUG_PACKET_ON), (TERM_DEBUG_PACKET_OFF),
	(CONF_DEBUG_ON), (CONF_DEBUG_OFF), (IS_CONF_DEBUG_OSPF_PACKET),
	(IS_CONF_DEBUG_OSPF):  New Macro added.
	
2000-05-31  Toshiaki Takada  <takada@zebra.org>

	* ospfd.c (clear_ip_ospf_neighbor):  New DEFUN added.
	Currently this command is used for only debugging.

	* ospf_nsm.c (nsm_change_status):  Make sure thread cancellation
	for network-LSA when DR has no full neighbors.
	
	* ospf_nsm.c (ospf_db_summary_clear):  New function added.

2000-05-30  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsdb.c (new_lsdb_insert):  LSAs are always freed by
	maxage_lsa_remover when LSA is replaced.

2000-05-25  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_flood.c (ospf_ls_retransmit_delete_nbr_all):  Add argument
	`struct ospf_area' to remove LSA from Link State retransmission list
	of neighbor from only one Area.

2000-05-24  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_lsdb.c (ospf_lsdb_add):  Preserve flags field when
	overriting old LSA with new LSA.

2000-05-24  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_lsa.c (ospf_router_lsa_body_set):  Fix bug of router-LSA
	size calculation.

2000-05-22  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_route.c (ospf_intra_add_stub):
	* ospf_spf.h (struct vertex):  Use u_int32_t for distance (cost)
	value instead of u_int16_t.

2000-05-22  Axel Gerlach <agerlach@datus.datus.com>

	* ospf_ia.c (ospf_ia_network_route):  Fix bug of Inter-area route
	equal cost path calculation.

2000-05-21  Toshiaki Takada  <takada@zebra.org>

	* ospf_ase.c (ospf_ase_calculate_route_delete):  New function added.
	Make sure, when rotuer route is deleted, related external routes
	are also deleted.

2000-05-20  Toshiaki Takada  <takada@zebra.org>

	* ospfd.c (ospf_interface_down):  Make sure interface flag is disable
	and set fd to -1.

2000-05-16  Toshiaki Takada  <takada@zebra.org>

	* ospf_asbr.c (ospf_asbr_should_announce), (ospf_asbr_route_remove):
	Functions removed.

	* ospfd.h (EXTERNAL_INFO):  Macro added.
	Substitute `ospf_top->external_info[type]' with it.

2000-05-16  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.c (ospf_rtrs_external_remove):  New function added.

2000-05-14  Gleb Natapov <gleb@nbase.co.il>

	* ospf_flood.c (ospf_ls_retransmit_delete_nbr_all)
	* ospf_lsdb.c (new_lsdb_insert)
	* ospf_packet.c (ospf_ls_ack):  Fix database synchonization problem.

2000-05-14  Gleb Natapov <gleb@nbase.co.il>

	* ospf_lsa.h (tv_adjust), (tv_ceil), (tv_floor), (int2tv),
	(tv_add), (tv_sub), (tv_cmp):  Prototype definition added.

	* ospf_nsm.h (ospf_db_summary_delete_all):  Prototype definition added.

2000-05-13  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.[ch] (ospf_lsa):  struct timestamp type is changed from
	time_t to struct timeval.
	(tv_adjust), (tv_ceil), (tv_floor), (int2tv), (tv_add),
	(tv_sub), (tv_cmp):  timeval utillity functions added.

2000-05-12  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.[ch] (ospf_schedule_update_router_lsas):  Delete function.
	Change to use macro OSPF_LSA_UPDATE_TIMER instead of using
	this function.
	router-LSA refresh timer related stuff is re-organized.

2000-05-10  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_interface.c (ospf_vl_set_params):
	* ospf_packet.c (ospf_check_network_mask):
	* ospf_spf.[ch] (ospf_spf_next):
	Remove field address from `struct vertex', and search for peer
	address of virtual link in function `ospf_vl_set_params' instead.

2000-05-10  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_packet.c (ospf_ls_upd):  Fix some memory leak related LSA.

2000-05-08  Thomas Molkenbur  <tmo@datus.com>

	* ospf_packet.c (ospf_packet_dup):  Replace ospf_steram_copy()
	with ospf_stream_dup() to fix memory leak.

2000-05-08  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_flood.c (ospf_flood_through_area):  Fix the problem of
	LSA update without DROther.

2000-05-04  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_spf.c (ospf_vertex_free):  Fix memory leak of SPF calculation.

2000-05-03  Toshiaki Takada  <takada@zebra.org>

	* ospf_neighbor.c (ospf_db_summary_add):  Use new_lsdb struct
	instead linked-list.
	(ospf_db_summary_count), (ospf_db_summary_isempty):
	New function added.

	* ospf_lsa.c (ospf_rotuer_lsa):  Re-arrange and divide functions.

2000-05-02  Gleb Natapov  <gleb@nbase.co.il>

	* ospf_lsdb.c (new_lsdb_cleanup):  Fix memory leak.  When LSDB are
	not needed any more, then free them.

2000-05-02  Toshiaki Takada  <takada@zebra.org>

	* ospfd.c (timers_spf), (no_timers_spf):  New defun added.
	SPF calculation timers related stuff is rearranged.

	* ospf_spf.c (ospf_spf_calculate_timer_add):  Function removed.
	SPF timer is scheduled by SPF calculation delay and holdtime
	configuration variable.

	* ospf_lsa.c (ospf_external_lsa_nexthop_get):  Set AS-external-LSA's
	forwarding address when nexthop learned by other protocols is
	in the OSPF domain. 

	* ospf_zebra.c (ospf_redistribute_source_metric_type),
	(ospf_redistribute_source_type_metric):  Re-arrange DEFUNs and
	ALIASes.

2000-05-01  Toshiaki Takada  <takada@zebra.org>

	* ospf_flood.c (ospf_ls_retransmit_count),
	(ospf_ls_retransmit_isempty):  New function added.

	(ospf_ls_retransmit_add), (ospf_ls_retransmit_delete),
	(ospf_ls_retransmit_clear), (ospf_ls_retransmit_lookup),
	(ospf_ls_retransmit_delete_all), (ospf_ls_retransmit_delete_nbr_all),
	(ospf_ls_retransmit_add_nbr_all):  Replace these functions to use
	new_lsdb.

2000-04-29  Toshiaki Takada  <takada@zebra.org>

	* ospfd.c (no_network_area):  Add check Area-ID whether specified
	Area-ID with prefix matches config.

2000-04-27  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.c (ospf_maxage_lsa_remover): Fix problem of
	remaining withdrawn routes on zebra.

2000-04-25  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_nsm.c (nsm_kill_nbr), (nsm_ll_down), (nsm_change_status),
	(ospf_nsm_event):  Fix network-LSA re-origination problem.

2000-04-24  Toshiaki Takada  <takada@zebra.org>

	* ospf_nsm.c (ospf_db_desc_timer): Fix bug of segmentation fault
	with DD retransmission.

	* ospf_nsm.c (nsm_kill_nbr): Fix bug of re-origination when
	a neighbor disappears.

2000-04-23  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_abr.c (ospf_abr_announce_network_to_area):  Fix bug of
	summary-LSAs reorigination.  Correctly copy OSPF_LSA_APPROVED
	flag to new LSA. when summary-LSA is reoriginatd.

	* ospf_flood.c (ospf_flood_through_area):  Fix bug of flooding
	procedure.  Change the condition of interface selection.

2000-04-21  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.c (ospf_refresher_register_lsa): Fix bug of refresh never
	occurs.

	* ospfd.c (show_ip_ospf_neighbor_id): New defun added.
	`show ip ospf neighbor' related commands are re-arranged.

2000-04-20  Toshiaki Takada  <takada@zebra.org>

	* ospf_dump.c (debug_ospf_zebra): New defun added.
	Suppress zebra related debug information.

2000-04-19  Toshiaki Takada  <takada@zebra.org>

	* ospf_zebra.c (ospf_distribute_list_update_timer),
	(ospf_distribute_list_update), (ospf_filter_update):
	New function added.  Re-organize `distribute-list' router ospf
	command.

2000-04-13  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_packet.c (ospf_make_ls_upd): Add check for MAX_AGE.

2000-04-14  Michael Rozhavsky  <mike@nbase.co.il>

	* ospf_packet.c (ospf_make_ls_upd): Increment LS age by configured 
	interface transmit_delay.

2000-04-14  Sira Panduranga Rao  <pandu@euler.ece.iisc.ernet.in>

	* ospf_interface.c (ip_ospf_cost), (no_ip_ospf_cost):
	Add to schedule router_lsa origination when the interface cost changes.

2000-04-12  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.c (ospf_refresher_register_lsa),
	(ospf_refresher_unregister_lsa): Fix bug of core dumped.

	* ospfd.c (no_router_ospf): Fix bug of core dumped.

2000-03-29  Toshiaki Takada  <takada@zebra.org>

	* ospf_nsm.c (nsm_oneway_received): Fix bug of MS flag unset.

2000-03-29  Michael Rozhavsky <mike@nbase.co.il>

	* ospf_lsa.c (ospf_network_lsa):
	* ospf_nsm.c (ospf_nsm_event): Fix bug of Network-LSA originated
	in stub network.

2000-03-28  Toshiaki Takada  <takada@zebra.org>

	* ospf_nsm.c (nsm_bad_ls_req), (nsm_seq_number_mismatch),
	(nsm_oneway_received): Fix bug of NSM state flapping between
	ExStart and Exchange.

2000-03-28  Toshiaki Takada  <takada@zebra.org>

	* ospf_packet.h (strcut ospf_header): Fix the size of ospf_header,
	change u_int8_t to u_char.

2000-03-27  Toshiaki Takada  <takada@zebra.org>

	* ospf_lsa.c (ospf_lsa_checksum): Take care of BIGENDIAN architecture.

2000-03-27  Toshiaki Takada  <takada@zebra.org>

	* ospfd.c (ospf_interface_run): Make sure Address family matches.

2000-03-26  Love <lha@s3.kth.se>

	* ospf_packet.c (ospf_write): Chack result of sendto().

2000-03-26  Sira Panduranga Rao  <pandu@euler.ece.iisc.ernet.in>

	* ospf_nsm.c (nsm_oneway_received): Fix bug of 1-WayReceived in NSM.

2000-03-23  Libor Pechacek  <farco@clnet.cz>

	* ospf_lsa.c (ospf_network_lsa)
	* ospf_lsdb.c (new_lsdb_insert): Fix bug of accessing to
	unallocated memory.

2000-03-23  Toshiaki Takada  <takada@zebra.org>

	* ospfd.c (ospf_config_write): Fix bug of duplicate line for
	`area A.B.C.D authentication'.

2000-03-22  Toshiaki Takada  <takada@zebra.org>

	* ospf_debug.c (debug_ospf_lsa), (no_debug_ospf_lsa): Defun added.
	Suppress all zlog related to LSAs with this config option.

2000-03-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ospf_nsm.c (ospf_nsm_event): Add check for NSM_InactivityTimer.

2000-03-21  Toshiaki Takada  <takada@zebra.org>

	* ospf_packet.c (ospf_ls_upd_timer), (ospf_ls_req):
	Fix bug of memory leak about linklist.

	* ospf_flood.c (ospf_flood_through_area): Likewise.

2000-03-18  Sira Panduranga Rao  <pandu@euler.ece.iisc.ernet.in>

	* ospf_flood.c (ospf_ls_retransmit_lookup): Add checksum comparison
	to identify LSA uniquely.  This fix routes lost.

2000-03-18  Toshiaki Takada  <takada@zebra.org>

	* ospf_ase.c (ospf_find_asbr_route): Add sanity check with router
	routing table.

2000-03-17  Alex Zinin  <zinin@amt.ru>
	
        * ospf_spf.[ch]: Bug fix.
        The 2nd stage of Dijkstra could consider one vertex
        more than once if there is more than one link
        between the routers, thus adding extra CPU overhead
        and extra next-hops.
        Fixed.

2000-03-15  Sira Panduranga Rao  <pandu@euler.ece.iisc.ernet.in>

        * ospf_nsm.c (nsm_inactivity_timer): Changed to call nsm_kill_nbr().

2000-03-14  Toshiaki Takada  <takada@zebra.org>

        * ospf_route.c (ospf_route_copy_nexthops): Fix bug of memory leak of
        ospf_path.  Actually ignore merging ospf_route with completely same 
        paths.

2000-03-12  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c (show_as_external_lsa_detail): fix bug of 
        external route tag byte order.

2000-03-11  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsdb.c (ospf_lsdb_insert): New function added.

2000-03-09  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c (ospf_external_lsa_install),
        (ospf_lsa_lookup), (show_ip_ospf_database_all),
        (show_ip_ospf_database_self_originate): Use struct new_lsdb for
        LSDB of AS-external-LSAs instead of ospf_lsdb.

        * ospf_lsa.c (ospf_lsa_unique_id): New function added.
        Use for assigning Unique Link State ID instead of
        ospf_get_free_id_for_prefix().

2000-03-09  Toshiaki Takada  <takada@zebra.org>

        * ospf_ase.c (ospf_ase_calculate_timer): Fix bug of segmentation
        fault reported by George Bonser <george@siteROCK.com>.

2000-03-07  Libor Pechacek  <farco@clnet.cz>

        * ospfd.c (ospf_interface_down): Fix bug of segmentation fault.

2000-03-06  Toshiaki Takada  <takada@zebra.org>

        * ospf_route.c (ospf_route_cmp): Change meaning of return values.

2000-03-02  Alex Zinin <zinin@amt.ru>
        * ospfd.h, ospf_ia.h
        New Shortcut ABR code. Now area's flag can be configured
        with Default, Enable, and Disable values.
        More info will be in the new ver of I-D soon (see IETF web).

2000-02-25  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c (ospf_lsa_header_set), (ospf_external_lsa_body_set),
        (osfp_external_lsa_originate), (ospf_external_lsa_queue),
        (ospf_external_lsa_originate_from_queue): New function added.
        (ospf_external_lsa): Function removed.

        * ospf_zebra.c (ospf_zebra_read_ipv4): Originate AS-external-LSA
        when listen a route from Zebra, instead creating external route.

        * ospf_asbr.c (ospf_asbr_route_add_flood_lsa),
        (ospf_asbr_route_add_queue_lsa),
        (ospf_asbr_route_install_lsa), (ospf_asbr_route_add):
        Functions removed.

        * ospf_ase.c (process_ase_lsa): Function will not be used.
        (ospf_ase_calculate), (ospf_ase_calculate_route_add),
        (ospf_ase_calculate_new_route), (ospf_ase_caluculate_asbr_route):
        process_ase_lsa () is separated to these functions.

        OSPF AS-external-LSA origination is whole re-organized.

2000-02-18  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.c (ospf_ls_upd): Fix bug of OSPF LSA memory leak.

        * ospf_asbr.c (ospf_asbr_route_add_flood_lsa),
        (ospf_asbr_route_add_queue_lsa): Fix bug of OSPF external route
        memory leak.

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

        * ospf_asbr.c (ospf_asbr_route_install_lsa): Re-calculate LSA
        checksum after change Advertised Router field.

2000-02-09  Toshiaki Takada  <takada@zebra.org>

        * ospf_asbr.c (ospf_external_route_lookup): Add new function.

2000-02-08  Toshiaki Takada  <takada@zebra.org>

        * ospfd.c (ospf_router_id_get), (ospf_router_id_update),
        (ospf_router_id_update_timer): Router ID decision algorithm is changed.
        Router ID is chosen from all of eligible interface addresses even if
        it is not enable to OSPF.

2000-02-08  Toshiaki Takada  <takada@zebra.org>

        * ospf_asbr.c (ospf_asbr_route_add): Function divided to
        ospf_asbr_route_add_flood_lsa, ospf_asbr_route_add_queue_lsa and
        ospf_asbr_route_install_lsa.  If Router-ID is not set, then LSA is
        waited to install to LSDB.
        `0.0.0.0 adv_router' AS-external-LSA origination bug was fixed.

2000-02-01  Sira Panduranga Rao  <pandu@euler.ece.iisc.ernet.in>

        * ospf_flood.c (ospf_ls_retransmit_lookup): Compare LS seqnum
        in the ACK before deleting.

        * ospf_packet.c (ospf_hello): Reset the flags after a shutdown
        and no shutdown of the interface.

2000-01-31  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.c (ospf_ls_req): Send multiple Link State Update
        packets respond to a Link State Request packet.

        * ospfd.c (show_ip_ospf_neighbor_detail_sub): Show thread state.

        * ospf_interface.c (ospf_vl_new): Crash when backbone area
        is not configured and set virtual-link to no-backbone area,
        bug fixed.

2000-01-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_neighbor.h (struct ospf_neighbor): Add pointer to last send
        LS Request LSA.

        * ospf_packet.c (ospf_ls_upd): Comment out LS request list
        treatment.  That should be done in OSPF flooding procedure.

        * ospf_flood.c (ospf_flood_through_area): Enclose
        ospf_check_nbr_loding inside if-else close.

2000-01-31  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.c (ospf_make_ls_upd): Fix bug of #LSAs counting.

2000-01-29  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.c (ospf_make_md5_digest): Fix bug of md5 authentication.

2000-01-28  Toshiaki Takada  <takada@zebra.org>

        * ospfd.c (show_ip_ospf): Show Number of ASE-LSAs.

2000-01-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_packet.c (ospf_make_db_desc): Don't use rm_list for
        removing LSA from nbr->db_summary.

2000-01-27  Sira Panduranga Rao <pandu@euler.ece.iisc.ernet.in>

        * ospf_packet.c (ospf_ls_upd_send): Set AllSPFRouters to
        destination when the link is point-to-point.
        (ospf_ls_ack_send_delayed): Likewise.

2000-01-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_flood.c (ospf_ls_request_delete_all): Fix bug of next
        pointer lookup after the node is freed.

2000-01-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_asbr.c (ospf_asbr_route_add): Instead of scanning all AS
        external route, use ospf_top->external_self.

2000-01-27  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c (ospf_forward_address_get): New function added.

        * ospf_asbr.c (ospf_asbr_check_lsas): Originate AS-external-LSA
        only when it should be replaced.

2000-01-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_flood.c (ospf_ls_retransmit_clear): Delete list node.

        * ospf_lsa.c (ospf_lsa_free): Reduce logging message using
        ospf_zlog value.

        * ospf_ism.c (ism_change_status): Fix bug of DR -> non DR status
        change.  Self originated LSA is freed but not deleted from lsdb.

2000-01-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_ism.c (ism_interface_down): Don't use router_id for
        detecting self neighbor structure.  Instead of that compare
        pointer itself.

        * ospf_neighbor.c (ospf_nbr_free): Cancel all timer when neighbor
        is deleted.
        (ospf_nbr_free): Free last send packet.

        * ospf_neighbor.h (struct ospf_neighbor): Remove host strucutre.
        Instead of that src is introduced.

        * ospf_nsm.h: Enclose macro defenition with do {} while (0).

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

        * ospfd.c: Change part of passive interface implementation.  For
        passive interface just disabling sending/receiving Hello on the
        interface.

2000-01-16  Kai Bankett <kai.bankett@vew-telnet.net>

        * ospf_interface.h (OSPF_IF_PASSIVE): Add passive flag.
        * ospf_interface.c (ospf_if_lookup_by_name): Add new function.
        * ospf_lsa.c (ospf_router_lsa): Skip passive interface.
        * ospfd.c (passive_interface): New command passive-interface is
        added.
        (ospf_config_write): Print passive interface.

2000-01-15  Toshiaki Takada  <takada@zebra.org>

        * ospf_interface.h (crypt_key): New struct added to store
        multiple cryptographic autheitication keys.
        (ospf_interface): struct changed.

        * ospf_interface.c: ospf_crypt_key_new, ospf_crypt_key_add,
        ospf_crypt_key_lookup, ospf_crypt_key_delete: new functions added.

        * ospf_packet.c (ip_ospf_message_digest_key): Changed to store
        multiple cryptographic authentication keys.

2000-01-14  Toshiaki Takada  <takada@zebra.org>

        * ospf_interface.c: DEFUN (if_ospf_*) commands changed name to
        ip_ospf_* ().
        Old notation `ospf *' still remains backward compatibility.

1999-12-29  Alex Zinin  <zinin@amt.ru>
        * ospf_lsa.c: ospf_lsa_more_recent() bug fix
        * ospf_nsm.c, ospf_packet.c: remove nbr data struct when
          int goes down, also check DD flags correctly (bug fix)

1999-12-28  Alex Zinin  <zinin@amt.ru>
        * "redistribute <source> metric-type (1|2) metric <XXX>" added

1999-12-23  Alex Zinin  <zinin@amt.ru>
        * added RFC1583Compatibility flag
        * added dynamic interface up/down functionality

1999-11-19  Toshiaki Takada  <takada@zebra.org>

        * ospf_neighbor.h (struct ospf_neighbor): Add member state_change
        for NSM state change statistics.

1999-11-19  Toshiaki Takada  <takada@zebra.org>

        * ospfd.c (show_ip_ospf_neighbor_detail),
        (show_ip_ospf_neighbor_int_detail): DEFUN Added.

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

        * ospf_asbr.c (ospf_asbr_check_lsas): Add check of
        lsa->refresh_list.

1999-11-11  Toshiaki Takada  <takada@zebra.org>

        * ospf_ia.[ch] (OSPF_EXAMINE_SUMMARIES_ALL): Macro added.
        This macro is expanded to ospf_examine_summaries ()
        for SUMMARY_LSA and SUMMARY_LSA_ASBR.
        (OSPF_EXAMINE_TRANSIT_SUMMARIES_ALL): Macro added.
        This macro is expanded to ospf_examine_transit_summaries ()
        for SUMMARY_LSA and SUMMARY_LSA_ASBR.

1999-11-11  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.[ch] (ospf_find_self_summary_lsa_by_prefix): Changed to
        macro OSPF_SUMMARY_LSA_SELF_FIND_BY_PREFIX.
        (ospf_find_self_summary_asbr_lsa_by_prefix): Changed to
        macro OSPF_SUMMARY_ASBR_LSA_SELF_FIND_BY_PREFIX.
        (ospf_find_self_external_lsa_by_prefix): Changed to
        macro OSPF_EXTERNAL_LSA_SELF_FIND_BY_PREFIX.

1999-11-11  Toshiaki Takada  <takada@zebra.org>

        * ospfd.c (ospf_abr_type): ospf_abr_type_cisco, ospf_abr_type_ibm,
        ospf_abr_type_shortcut and ospf_abr_type_standard DEFUNs are
        combined.
        * ospfd.c (no_ospf_abr_type): no_ospf_abr_type_cisco,
        no_ospf_abr_type_ibm and no_ospf_abr_type_shortcut DEFUNS are
        combined.

1999-11-10  Toshiaki Takada  <takada@zebra.org>

        * ospf_route.c (ospf_lookup_int_by_prefix): Move function to
        ospf_interface.c and change name to ospf_if_lookup_by_prefix ().

1999-11-01  Alex Zinin <zinin@amt.ru>
        * ospf_packet.c 
        some correction to LSU processing

        * ospf_lsa.c ospfd.h 
        randomize initial LSA refreshment interval
        and limit the size of LSA-group to 10
        to let randomization work more effectively.

1999-10-31  Alex Zinin <zinin@amt.ru>
        * ospf_interface.c 
        cancel t_network_lsa_self
        when freeing int structure

        *  ospf_abr.c ospf_asbr.c ospf_flood.c ospf_lsa.c 
           ospf_lsa.h ospf_lsdb.h ospfd.c ospfd.h

        Summary and ASE LSA refreshment functions
        added---LSA refreshment is paced to 70 LSAs
        per sec to avoid link overflow. Refreshment events
        are further randomized within a 10 sec interval
        to avoid syncing.
        
        Also the sigfault of memcmp() in ospf_lsa_is_different()
        is fixed.

1999-10-30  Alex Zinin <zinin@amt.ru>
        * ospf_nsm.c 
        Fix the bug where MAX_AGE LSAs
        are included into the DB summary.

        * ospf_interface.c 
        allocate 2*MTU input buffer instead of just MTU
        for the cases when the other router mistakenly
        sends larger packets thus causing fragmentation, etc.

        * ospf_nsm.c
        in nsm_reset_nbr() lists should be freed
        not when they are empty.

1999-10-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_zebra.c (ospf_acl_hook): Move OSPF_IS_ASBR and OSPF_IS_ABR
        check inside of if (ospf_top).

1999-10-29  Alex Zinin <zinin@amt.ru>
        * ospf_lsa.c ospf_lsdb.c :
        add assertion in lsa and lsa->data alloc functions,
        as well as in lsdb_add for new->data

        * ospf_lsdb.c: free hash table correctly

1999-10-28  John Capo <jc@irbs.com>

        * ospf_packet.h (OSPF_PACKET_MAX): Correct MAX packet length
        calculation

1999-10-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * OSPF-TRAP-MIB.txt: New file added. Edited version of RFC1850.

        * OSPF-MIB.txt: New file added.  Edited version of RFC1850.

1999-10-27  Alex Zinin  <zinin@amt.ru>
        * ospfd, ospf_zebra, ospf_abr
        "area import-list" command is added.
        This command allows to filter the inter-area routes
        injected into an area. Access list hook function
        extended to invalidate area exp/imp lists.

1999-10-25  Yoshinobu Inoue  <shin@nd.net.fujitsu.co.jp>

        * ospfd.c (ospf_interface_run): Enable to detect P2P network
        on an OSPF interface.

1999-10-19  Jordan Mendelson  <jordy@wserv.com>

        * ospf_lsdb.c (ospf_lsdb_add): Fix bug of crash
        in ospf_ls_retransmit_lookup ().

1999-10-19  Vladimir B. Grebenschikov <vova@express.ru>

        * ospf_route.c: Workaround about installation of OSPF routes into
        the zebra daemon.  Add checking of existance routes.  Free
        ospf_top->old_table if it exists.

1999-10-15  Jordan Mendelson <jordy@wserv.com>

        * Add support for MD5 authentication.

1999-10-12  Alex Zinin  <zinin@amt.ru>
        * ospfd.c, ospfd.h, ospf_abr.c:
          a new command "area export-list" was added, it allows
          the admin. to control which intra-area routes are
          announced to other areas by the ABR

1999-10-12  Alex Zinin  <zinin@amt.ru>
        * ospf_asbr.c (ospf_asbr_check_lsas): Fix bug of coredump
          when "no redistribute" is used after a distribute list
          denying some networks was used

1999-10-05  Toshiaki Takada  <takada@zebra.org>

        * ospf_route.c (ospf_path_dup): New function added.

1999-10-05  Toshiaki Takada  <takada@zebra.org>

        * ospf_interface.[ch]: Some of VL related funciton name changed.

1999-09-27  Alex Zinin  <zinin@amt.ru>

        * ospf_zebra.c: Distribute-list functionality added

1999-09-27  Toshiaki Takada  <takada@zebra.org>

        * ospfd.c (show_ip_ospf): Fix bug of segmentation fault when no ospf
        instance exists.

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

        * ospfd.c (ospf_interface_down): Fix bug of misusing nextnode()
        instead of node->next.  Reported by Hiroki Ishibashi
        <ishibasi@dcd.abk.nec.co.jp>.

        * ospf_route.c (show_ip_ospf_route): Add check for ospf is enabled
        or not.

1999-09-23  Alex Zinin  <zinin@amt.ru>

        * stub area support added

1999-09-23  Alex Zinin  <zinin@amt.ru>

        * fwd_addr in ASE-LSAs is now set correctly
        * ASE routing changed to check the fwd_addr
        and skip the route if the addr points to one
        of our interfaces to avoid loops.

1999-09-22  Alex Zinin  <zinin@amt.ru>

        * ospf_interface:
        ospf_vls_in_area() added, it returns 
        the number of VLs configured through the area

        * ospf_interface.c ospf_lsa.c ospf_lsdb.c ospfd.c 
        honor correct mem alloc

1999-09-22  Alex Zinin  <zinin@amt.ru>

        * memory.[ch]:
        Some OSPF mem types added,
        plus more info in "show mem"

1999-09-21  Alex Zinin  <zinin@amt.ru>

        * ospfd.c:
        "area range substitute" added.
        It can be used on NAT-enabled (IP-masquarade)
        routers to announce private networks
        from an area as public ones into the outside
        world (not in the RFC, btw :)

1999-09-21  Alex Zinin  <zinin@amt.ru>

        * ospfd.c:
        "area range suppress" added.
        This command allows to instruct the router
        to be silent about specific ranges, i.e.,
        it is a method of route filtering on area
        borders

1999-09-21  Alex Zinin  <zinin@amt.ru>

        * ospfd.c VLs removed when "no network area" executed

1999-09-20  Alex Zinin  <zinin@amt.ru>

        * ospf_ase.c bug fix for not-zero fwd_addr 
        and directly connected routes.

1999-09-20  Yon Uriarte <yon@plannet.de>

        * ospf_packet.c (ospf_make_ls_req): Introduce delta value for
        checking the length of OSPF packet exceeds MTU or not.

        * ospf_lsa.c (ospf_lsa_different): Apply ntohs for checking
        l1->data->length.

1999-09-18  Alex Zinin  <zinin@amt.ru>

        * ospf_lsa.c bug fix for ospf_network_lsa() to
        include itself into the RID list

1999-09-10  Alex Zinin  <zinin@amt.ru>

        * Alternative ABR behaviors IBM/Cisco/Shortcut
        implemented

1999-09-10  Alex Zinin  <zinin@amt.ru>

        * router and network-LSA origination
        changed to honor MinLSInterval

1999-09-08  Alex Zinin  <zinin@amt.ru>

        * modified ABR behavior to honor VLs and transit
          areas

1999-09-07  Alex Zinin  <zinin@amt.ru>

        * completed VL functionality

1999-09-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_asbr.c: New file.
        ospf_asbr.h: New file.

        * ospf_zebra.c (ospf_redistribute_connected): Add redistribute
        related stuff.

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

        * ospfd.h (OSPF_FLAG_VIRTUAL_LINK): Change OSPF_FLAG_VEND to
        OSPF_FLAG_VIRTUAL_LINK for comprehensiveness.

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

        * ospf_spf.c (ospf_spf_register): Change name from
        ospf_spf_route_add() to ospf_spf_register().
        Include "ospfd/ospf_abr.h" for ospf_abr_task() prototype.

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

        * ospf_lsa.c (ospf_external_lsa_install): Change to update
        lsa->data rather than install new one, when same id lsa is already
        installed.

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

        * ospf_lsa.c (ospf_router_lsa_install): Return lsa value.
        (ospf_network_lsa_install): Likewise.
        (ospf_summary_lsa_install): Likewise.
        (ospf_summary_asbr_lsa_install): Likewise.
        (ospf_external_lsa_install): Likewise.

        * ospf_spf.c (ospf_spf_calculate): Comment out debug function
        ospf_rtrs_print().

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

        * ospf_spf.c (ospf_rtrs_free): Add ospf_spf_calculate() for
        freeing rtrs.

1999-08-31  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c (show_ip_ospf_database_summary),
        (show_ip_ospf_database_summary_asbr),
        (show_ip_ospf_database_external): New function added.
        `show ip ospf database summary',
        `show ip ospf database asbr-summary'
        `show ip ospf database external' command can be used.

        * ospf_lsa.c (ospf_lsa_count_table): New function added.
        (show_ip_ospf_database_all): show nothing if a type of LSA
        does not exist.
        
1999-08-31  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_lsa.c (ospf_maxage_lsa_remover): Preserve next pointer when
        the node is deleted.

1999-08-31  Toshiaki Takada  <takada@zebra.org>

        * ospf_flood.c (ospf_ls_retransmit_lookup): change to return
        struct ospf_lsa *.
        (ospf_ls_request_new), (ospf_ls_request_free),
        (ospf_ls_request_add), (ospf_ls_request_delete),
        (ospf_ls_request_delete_all), (ospf_ls_request_lookup):
        New function added.

        * ospf_packet.c (ospf_ls_upd_send_lsa): New function added.

        * ospf_lsa.h (LS_AGE): Slightly change macro definition.

        * ospf_lsa.c (ospf_lsa_more_recent), (ospf_lsa_diffrent):
        Use LS_AGE macro.

1999-08-30  Alex Zinin <zinin@amt.ru>
        
        * ospfd.c
        fix a bug with area range config write
        added "show ip ospf" command, it will be enhanced later on

1999-08-30  Alex Zinin <zinin@amt.ru>

        * ospf_lsa.c
        updated ospf_router_lsa() to honor flags (B-bit)

1999-08-30  Alex Zinin <zinin@amt.ru>

        * ospf_abr.c
        wrote major functions implementing ABR activity

1999-08-30  Alex Zinin <zinin@amt.ru>

        * ospf_ia.c ospf_route.c ospf_route.h 
        fixed the bug with ospf_route.origin field.
        Now it holds pointer to lsa_header

1999-08-30  Alex Zinin <zinin@amt.ru>

        * ospf_flood.c ospf_flood.h:
        transformed ospf_flood_if_select into ospf_flood_through_area()
        added new ospf_flood_if_select() and ospf_flood_through_as()

1999-08-30  Toshiaki Takada  <takada@zebra.org>

        * ospf_flood.[ch]: New file added.

        * ospf_packet.c (ospf_lsa_flooding),
        (ospf_lsa_flooding_select_if): functions move to ospf_flood.c

        * ospf_neighbor.c (ospf_put_lsa_on_retransm_list),
        (ospf_remove_lsa_from_retransm_list),
        (ospf_nbr_remove_all_lsas_from_retransm_list),
        (ospf_lsa_remove_from_ls_retransmit):
        (ospf_lsa_retransmit): functions move to
        ospf_flood.c, and change function's name:

        ospf_put_lsa_on_retransm_list ()
          -> ospf_ls_retransmit_add ()
        ospf_remove_lsa_from_retransm_list ()
          -> ospf_ls_retransmit_delete ()
        ospf_nbr_remove_all_lsas_from_retransm_list ()
          -> ospf_ls_retransmit_clear ()
        ospf_lsa_remove_from_ls_retransmit ()
          -> ospf_ls_retransmit_delete_nbr_all ()
        ospf_lsa_retransmit ()
          -> ospf_ls_retransmit_add_nbr_all ()

        * ospf_lsa.c (ospf_lsa_lookup_from_list): function move to
        ospf_flood.c, and change name to ospf_ls_retransmit_lookup ().

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

        * ospf_neighbor.c (ospf_nbr_lookup_by_addr): Use
        route_node_lookup() instead of route_node_get().

        * ospf_packet.c (ospf_ls_upd): Temporary comment out (6) check.

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

        * ospf_route.c (ospf_lookup_int_by_prefix): Add check of
        oi->address.

1999-08-29  Alex Zinin <zinin@amt.ru>
        * ospf_lsa.c 
        MaxAge LSA deletion functions added.

1999-08-29  Alex Zinin <zinin@amt.ru>
        * ospf_neighbor.c 
        ospf_nbr_lookup_by_addr(): added route_unlock_node()
        when function returns NULL if (rn->info == NULL)

1999-08-29  Alex Zinin <zinin@amt.ru>
        * ospfd.c
        added a hack for area range deletion
        
1999-08-29  Alex Zinin <zinin@amt.ru>
        * ospf_lsa.h 
        included lsdb field into struct ospf_lsa, to find
        LSDB easier when removing MaxAge LSAs.

1999-08-29  Alex Zinin <zinin@amt.ru>
        * ospf_lsa.c ospf_neighbor.c ospf_nsm.c 
          ospf_packet.c changed to honor new retransmit list
          management functions

1999-08-29  Alex Zinin <zinin@amt.ru>
        * ospf_neighbor.c , .h added new retransmit list functions.

1999-08-29  Alex Zinin <zinin@amt.ru>
        * Makefile.in
        added ospf_ase, ospf_abr, ospf_ia

1999-08-29  Alex Zinin <zinin@amt.ru>
        * ospf_spf.c:
        - changed ospf_next_hop_calculation() to include interface
          and nexthop addr for directly connected routers---more informative
          and solves problem with route installation into the kernel
        - changed ospf_nexthop_out_if_addr() to support routers, not only
          transit networks
        - added ospf_process_stubs();

1999-08-29  Alex Zinin <zinin@amt.ru>
        * ospf_lsa.c:
        - changed ospf_router_lsa() to provide correct links
          for p-t-p interfaces;
        - changed ospf_summary_lsa_install() to support table
          of self-originated summary-LSAs;
        - added ospf_summary_asbr_lsa_install() and ospf_external_lsa_install()
        - changed ospf_lsa_install() accordingly
        - changed show_ip_ospf_database_router_links() to support p-t-p

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

        * ospf_packet.c (ospf_make_db_desc): Only master can clear more
        flag.

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

        * ospf_packet.c (ospf_read): Add check of IP src address.

1999-08-28  Alex Zinin <zinin@amt.ru>
        * ospf_neighbor.h
        added ospf_nbr_lookup_by_routerid()

1999-08-28  Alex Zinin <zinin@amt.ru>
        * ospfd.h
        added ABR/ASBR flag definitions and fields;
        added iflist field to area structure;
        summary_lsa_self and summary_lsa_asbr_self are changed
        to be route tables;
        added ranges field---configured area ranges;
        A separate Routers RT added;
        area range config commands and config write added


1999-08-28  Alex Zinin <zinin@amt.ru>
        * ospf_route.c :
        ospf_route_free()--added code to free the list of paths;
        The following functions added:
                ospf_intra_add_router();
                ospf_intra_add_transit();
                ospf_intra_add_stub();
        the last function uses new ospf_int_lookup_by_prefix();
        show_ip_ospf_route_cmd()--changed to support new RT structure;
        added ospf_cmp_routes()--general route comparision function;
        added ospf_route_copy_nexthops() and ospf_route_copy_nexthops_from_vertex()
        they are used in ASE and IA routing;
        added ospf_subst_route() and ospf_add_route();

1999-08-28  Alex Zinin <zinin@amt.ru>
        * ospf_route.h :
        changed struct ospf_path to include output interface,
        changed struct ospf_route to support IA and ASE routing.
        added prototypes of the function used in IA and ASE modules.

1999-08-28  Alex Zinin <zinin@amt.ru>
        * ospf_lsa.h ospf_lsa.c :
        added ospf_my_lsa(), an interface independent version of
        ospf_lsa_is_self_originated(), it will be used in ASE and IA-routing.

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

        * ospf_interface.c (interface_config_write): Add check for
        oi->nbr_self.

1999-08-25  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c (ospf_lsa_dup): New function added.

        * ospf_packet.c (ospf_write), (ospf_read): Print send/recv
        interface in debug message.

1999-08-25  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.c (ospf_ls_ack_send): The name is changed from
        `ospf_ls_ack_send'.
        (ospf_ls_ack_send_delayed) (ospf_ls_ack_timer): New function added.
        Delayed Link State Acknowledgment is scheduled by timer.

1999-08-25  Alex Zinin  <zinin@amt.ru>

        * ospf_lsa.c (ospf_router_lsa): Incorrectly included link to
        a stub network instead of link to a transit network into
        originated router-LSA, bug fixed.

1999-08-24  Toshiaki Takada  <takada@zebra.org>

        * ospfd.c (ospf_update_router_id): New function added.

        * ospf_network.c (ospf_write): Create new socket per transmission.
        And select outgoing interface whether dst is unicast or multicast.

        * ospf_packet.c: LSA flooding will work.        

1999-08-24  VOP <vop@unity.net>

        * ospf_route.c: Include "sockunion.h"

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

        * ospf_network.c (ospf_serv_sock_init): Enclose
        IPTOS_PREC_INTERNETCONTROL setting with #ifdef for OS which does
        not have the definition.

1999-08-23  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.c: Fix bug of DD processing.

1999-08-18  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c (show_ip_ospf_database): Show actual `LS age'.

1999-08-17  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.h (OSPF_MAX_LSA): The value of OSPF_MAX_LSA is
        corrected.  The bug of `mes_lookup' is fixed.  
        This had been reported by Poul-Henning Kamp <phk@freebsd.org>.

        * ospf_lsa.c (ospf_router_lsa_install): The name is changed from
        `ospf_add_router_lsa'.
        (ospf_network_lsa_install): The name is changed from
        `ospf_add_network_lsa'.

        * ospf_interface.h (ospf_interface): Add member `nbr_self'.

        * ospf_interface.c (ospf_if_is_enable): New function added.

1999-08-16  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.h (struct lsa_header): The name is changed from
        `struct ospf_lsa'.
        (struct ospf_lsa): New struct added to control each LSA's aging
        and timers.     

        * ospf_lsa.c (ospf_lsa_data_free): The name is change from
        `ospf_lsa_free'.
        (ospf_lsa_data_new), (ospf_lsa_new), (ospf_lsa_free),
        (ospf_lsa_different), (ospf_lsa_install): New function added.

        * ospf_packet.c (ospf_ls_upd_list_lsa): New function added.

1999-08-12  Toshiaki Takada  <takada@zebra.org>

        * ospf_nsm.c (nsm_reset_nbr): New function added.
        KillNbr and LLDown neighbor event call this function.
        
1999-08-10  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.c (ospf_ls_retransmit)
        (ospf_ls_upd_timer): New function added.
        Set retransmission timer for Link State Update.

1999-07-29  Toshiaki Takada  <takada@zebra.org>

        * ospf_ism.c (ospf_dr_election): Fix bug of DR election.

1999-07-28  Toshiaki Takada  <takada@zebra.org>

        * ospf_network.c (ospf_serv_sock_init): Set IP precedence field
        with IPTOS_PREC_INTERNET_CONTROL.

        * ospf_nsm.c (nsm_change_status): Schedule NeighborChange event
        if NSM status change.
        
        * ospf_packet.c (ospf_make_hello): Never include a neighbor in
        Hello packet, when the neighbor goes down.

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

        * Makefile.am (noinst_HEADERS): Add ospf_route.h.

        * ospf_route.c (show_ip_ospf_route): Add `show ip ospf route'
        command.

1999-07-25  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c (ospf_router_lsa): Fix bug of LS sequence number
        assignement.

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

        * ospf_route.c (ospf_route_table_free): New function added.

        * ospf_spf.c (ospf_spf_next): Free vertex w when cw's and w's
        distance is same.

        * ospfd.h (struct ospf): Add old_table.

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

        * ospf_lsa.c (ospf_lsa_is_self_originated): Fix bug of checking
        area->lsa as self LSA.  This should be area->lsa_self.

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

        * ospf_zebra.c (ospf_zebra_add): ospf_zebra_add
        (),ospf_zebra_delete () added.

        * ospf_spf.c (ospf_spf_calculate): Call ospf_intra_route_add ().

1999-07-24  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c: Change LS sequence number treatment.
        (ospf_lsa_is_self_originated): New function added.
        (show_ip_ospf_database_self_originated): New DEFUN added.
        
1999-07-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_interface.c (ospf_if_lookup_by_addr): Add loopback check.

1999-07-22  Toshiaki Takada  <takada@zebra.org>

        * ospf_spf.c (ospf_nexthop_new), (ospf_nexthop_free),
        (ospf_nexthop_dup): function added.
        (ospf_nexthop_calculation): function changed.

        * ospf_interface.c (ospf_if_lookup_by_addr): function added.
        
1999-07-21  Toshiaki Takada  <takada@zebra.org>

        * ospf_spf.c (ospf_spf_closest_vertex): function removed.
        
1999-07-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_spf.c (ospf_spf_next): Apply ntohs for fetching metric.

1999-07-21  Toshiaki Takada  <takada@zebra.org>

        * ospf_neighbor.c (ospf_nbr_lookup_by_router_id): fundtion removed.

        * ospf_lsa.c (show_ip_ospf_database_router): describe each
        connected link.

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

        * ospf_spf.c (ospf_spf_next): V is router LSA or network LSA so
        change behavior according to LSA type.
        (ospf_lsa_has_link): Link check function is added.

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

        * ospf_spf.c (ospf_spf_calculate_schedule): Add new function for
        SPF calcultion schedule addtition.
        (ospf_spf_calculate_timer_add): Rough 30 sec interval SPF calc
        timer is added.
        (ospf_spf_next_router): Delete ospf_spf_next_network ().

        * ospf_lsa.c (show_ip_ospf_database_all): Network-LSA display
        header typo correction.  Display of router LSA's #link added.

1999-07-19  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.c (ospf_check_network_mask): Added new function for
        receiving Raw IP packet on an appropriate interface.

1999-07-16  Toshiaki Takada  <takada@zebra.org>

        * ospfd.c (ospf_router_id): new DEFUN added.

1999-07-15  Toshiaki Takada  <takada@zebra.org>

        * ospf_spf.c (ospf_spf_init), (ospf_spf_free),
        (ospf_spf_has_vertex), (ospf_vertex_lookup),
        (ospf_spf_next_router), (ospf_spf_next_network),
        (ospf_spf_closest_vertex), (ospf_spf_calculate):
        function added.

1999-07-13  Toshiaki Takada  <takada@zebra.org>

        * ospf_ism.c: fix bug of DR Election.

        * ospf_nsm.c: fix bug of adjacency forming.

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

        * ospfd.c (ospf_init): Change to use install_default.

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

        * ospf_zebra.c (zebra_init): Install standard commands to
        ZEBRA_NODE.

1999-06-30  Toshiaki Takada  <takada@zebra.org>

        * ospf_dump.c: Whole debug command is improved.
        (ISM|NSM) (events|status|timers) debug option added.
        (show_debugging_ospf): new DEFUN added.

1999-06-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_lsa.c (ospf_lsa_lookup_from_list): Change !IPV4_ADDR_CMP to
        IPV4_ADDR_SAME.

1999-06-29  Toshiaki Takada  <takada@zebra.org>

        * ospf_dump.c (ospf_summary_lsa_dump): Add summary-LSA dump routine.
        (ospf_as_external_lsa_dump): Add AS-external-LSA dump routine.

        * ospf_nsm.c (nsm_twoway_received): fix condtion of adjacnet.

        * ospf_ism.c (ospf_dr_election): fix DR Election.
        
        * ospf_dump.c (ospf_nbr_state_message): fix `show ip ospf neighbor'
        command's state.

1999-06-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_dump.c (ospf_router_lsa_dump): Add router-LSA dump routine.

1999-06-28  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c (show_ip_ospf_database_network): fix bug of
        `show ip ospf database network' command output.

        * ospf_nsm.c (nsm_inactivity_timer): Clear list of Link State
        Retransmission, Database Summary and Link State Request.

        * ospf_packet.c (ospf_ls_req_timer): New function added.
        Set Link State Request retransmission timer.

1999-06-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * ospf_main.c (main): Change default output from ZLOG_SYSLOG to
        ZLOG_STDOUT.

        * ospfd.c (ospf_init): Register show_ip_ospf_interface_cmd and
        show_ip_ospf_neighbor_cmd to VIEW_NODE.

        * ospf_lsa.c (ospf_lsa_init): Register show_ip_ospf_database_cmd
        and show_ip_ospf_database_type_cmd to VIEW_NODE.

1999-06-25  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.c: fix bug of DD making.
        fix bug of LS-Update reading.
        
1999-06-23  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.c: All type of packets are changed to use
        fifo queue structure.
        (ospf_fill_header) function added.

1999-06-22  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.c (ospf_packet_new): New function added to handle
        sending ospf packet by fifo queue structure.
        (ospf_packet_free), (ospf_fifo_new), (ospf_fifo_push),
        (ospf_fifo_pop), (ospf_fifo_head), (ospf_fifo_flush),
        (ospf_fifo_free): Likewise.

1999-06-21  Toshiaki Takada  <takada@zebra.org>

        * ospf_nsm.c (ospf_db_desc_timer): function added.
        (nsm_timer_set) function added.
        * ospf_dump.c (ospf_option_dump): function added.
        * ospf_packet.c (ospf_ls_req) (ospf_make_ls_req): function added.

1999-06-20  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c (ospf_lsa_more_recent): function added.
        * ospf_neighbor.h (struct ospf_neighbor): Change member ms_flag
        to dd_flags.
        
1999-06-19  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c: DEFUN (show_ip_ospf_database) Added.
        * ospf_interface.c (if_ospf_cost), (if_ospf_dead_interval),
        (if_ospf_hello_interval), (if_ospf_priority),
        (if_ospf_retransmit_interval), (if_ospf_transmit_delay)
        argument changed from NUMBER to <range>.
        DEFUN (if_ospf_network_broadcast),
        DEFUN (if_ospf_network_non_broadcast),
        DEFUN (if_ospf_network_point_to_multipoint),
        DEFUN (if_ospf_network_point_to_point) functions are combined to
        DEFUN (if_ospf_network).
        
1999-06-18  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c: ospf_add_router_lsa (), ospf_add_network_lsa (),
        ospf_lsa_lookup (), ospf_lsa_count () Added.

1999-06-15  Toshiaki Takada  <takada@zebra.org>

        * DEFUN (ospf_debug_ism), DEFUN (ospf_debug_nsm),
        DEFUN (no_ospf_debug_ism), DEFUN (no_ospf_debug_nsm) Added.
        `debug ospf ism' command shows debug message.
        `debuf ospf nsm' command shows debug message.

1999-06-14  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c: ospf_network_lsa () Added.
        ospf_lsa_checksum () Added.
        * DEFUN (ospf_debug_packet), DEFUN (no_ospf_debug_packet) Added.
        `debug ospf packet' command shows debug message.

1999-06-13  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.h: Remove struct ospf_ls_req {}, ospf_ls_upd {},
        ospf_ls_ack {}.

1999-06-11  Toshiaki Takada  <takada@zebra.org>

        * ospf_dump.c: fix IP packet length treatment.

1999-06-10  Toshiaki Takada  <takada@zebra.org>

        * ospf_ism.h: Add OSPF_ISM_EVENT_EXECUTE() Macro Added.
        * ospf_nsm.h: Add OSPF_NSM_EVENT_EXECUTE() Macro Added.

        * ospf_packet.c: ospf_db_desc (), ospf_db_desc_send () Added.
        ospf_make_hello (), ospf_make_db_desc () Added.
        ospf_db_desc_proc () Added.n

        * Database Description packet can be processed.

1999-06-08  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.c: New file.
        
1999-06-07  Toshiaki Takada  <takada@zebra.org>

        * ospf_neighbor.c: ospf_fully_adjacent_count () Added.

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

        * ospf_spf.[ch]: New file.

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

        * ospf_zebra.c: Changed to use lib/zclient.c routines.

        * ospf_zebra.h (zebra_start): Remove struct zebra.

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

        * ospfd.c (ospf_config_write): Add cast (unsigned long int) to
        ntohl for sprintf warning.

1999-05-19  Toshiaki Takada  <takada@zebra.org>

        * ospf_ism.c (ospf_dr_election): Join AllDRouters Multicast group
        if interface state changes to DR or BDR.

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

        * ospf_main.c (signal_init): SIGTERM call sigint.
        (sigint): Logging more better message.

1999-05-12  Toshiaki Takada  <takada@zebra.org>

        * ospfd.c: Fix bug of `no router ospf' statement, it will work.

1999-05-11  Toshiaki Takada  <takada@zebra.org>

        * ospf_neighbor.c: ospf_nbr_free () Added.

1999-05-10  Toshiaki Takada  <takada@zebra.org>

        * ospfd.h: struct ospf_area { }, struct ospf_network { } Changed.
        * Fix bug of `no network' statement, it will work.

1999-05-07  Toshiaki Takada  <takada@zebra.org>

        * ospf_interface.c, ospf_zebra.c: Fix bug of last interface is not
        updated by ospf_if_update ().

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

        * Makefile.am (noinst_HEADERS): Add ospf_lsa.h for distribution.

1999-04-25  Toshiaki Takada <takada@zebra.org>

        * ospf_interface.c: DEFUN (no_if_ospf_cost),
        DEFUN (no_if_ospf_dead_interval),
        DEFUN (no_if_ospf_hello_interval),
        DEFUN (no_if_ospf_priority),
        DEFUN (no_if_ospf_retransmit_interval),
        DEFUN (no_if_ospf_transmit_delay) Added.

        interface_config_write () suppress showing interface
        default values.

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

        * ospf_dump.c (ospf_timer_dump): If thread is NULL return "inactive".

        * ospfd.c (ospf_if_update): Fix bug of using ospf_area { } instead
        of ospf_network { }.  So `router ospf' statement in ospfd.conf
        works again.
        (ospf_if_update): Call ospf_get_router_id for updating router ID.

1999-04-25  Toshiaki Takada  <takada@zebra.org>

        * ospf_interface.c: DEFUN (if_ospf_network) deleted.
        DEFUN (if_ospf_network_broadcast),
        DEFUN (if_ospf_network_non_broadcast),
        DEFUN (if_ospf_network_point_to_multipoint),
        DEFUN (if_ospf_network_point_to_point),
        DEFUN (no_if_ospf_network) Added.

1999-04-23  Toshiaki Takada  <takada@zebra.org>

        * ospfd.h: struct area { } changed to struct ospf_network { }.
        Add struct ospf_area { }.
        * ospfd.c: Add ospf_area_lookup_by_area_id (), ospf_network_new (),
        and ospf_network_free ().
        DEFUN (area_authentication), DEFUN (no_area_authentication) Added.

1999-04-22  Toshiaki Takada  <takada@zebra.org>

        * ospf_lsa.h: New file.
        * ospf_packet.h: LSA related struct definition are moved to
        ospf_lsa.h.
        * ospf_packet.c: ospf_verify_header () Added.

1999-04-21  Toshiaki Takada  <takada@zebra.org>

        * ospf_ism.c: ospf_elect_dr () and related function is changed.
        DR Election bug fixed.
        * ospf_dump.c: ospf_nbr_state_message (), ospf_timer_dump () Added.
        * ospfd.c: DEFUN (show_ip_ospf_neighbor) Added.

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

        * ospf_main.c (main): access_list_init () is added for vty
        connection filtering.

1999-04-16  Toshiaki Takada  <takada@zebra.org>

        * ospfd.c: DEFUN (show_ip_ospf_interface) Added.
        * ospf_neighbor.c: ospf_nbr_count () Added.
        
1999-04-15  Toshiaki Takada  <takada@zebra.org>

        * ospfd.h: struct ospf { } Changed.
        * ospfd.c: ospf_lookup_by_process_id () Deleted.
        * ospf_ism.c: ospf_wait_timer () Added. WaitTimer will work.

1999-04-14  Toshiaki Takada  <takada@zebra.org>

        * ospf_ism.c: ospf_elect_dr () Added.
        * ospf_network.c: ospf_if_ipmulticast () Added.

1999-04-11  Toshiaki Takada  <takada@zebra.org>

        * ospf_interface.c: interface_config_write (),
        DEFUN (if_ip_ospf_cost),
        DEFUN (if_ip_ospf_dead_interval),
        DEFUN (if_ip_ospf_hello_interval),
        DEFUN (if_ip_ospf_priority),
        DEFUN (if_ip_ospf_retransmit_interval) and
        DEFUN (if_ip_ospf_transmit_delay) Added.

1999-04-08  Toshiaki Takada  <takada@zebra.org>

        * ospf_dump.c: ospf_packet_db_desc_dump () Added.
        * ospf_neighbor.c: ospf_nbr_bidirectional () Added.
        * ospf_nsm.c: nsm_twoway_received () Added.

1999-04-02  Toshiaki Takada  <takada@zebra.org>

        * ospf_neighbor.c: New file.
        * ospf_neighbor.h: New file.
        * ospf_nsm.c: New file.
        * ospf_nsm.h: New file.
        * ospf_packet.c: Add ospf_make_header (), ospf_hello () and
        ospf_hello_send (). Now OSPFd can receive Hello and send Hello.

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

        * ospf_packet.c: Add ospf_recv_packet ().  Now OSPF Hello can receive.

1999-03-19  Toshiaki Takada  <takada@zebra.org>

        * ospf_packet.c: New file.
        * ospf_packet.h: New file.
        * ospf_network.c: New file.
        * ospf_network.h: New file.
        * ospfd.h: move OSPF message structure has moved to ospf_packet.h.

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

        * ospf_zebra.c (ospf_zebra_get_interface): Fix for IPv6 interface
        address.

        * Makefile.am (install-sysconfDATA): Overwrite install-sysconfDATA
        for install ospfd.conf.sample as owner read only file.

        * ospf_main.c (usage): Change to use ZEBRA_BUG_ADDRESS.

1999-03-15  Toshiaki Takada  <takada@zebra.org>

        * ospf_ism.c: New file.
        * ospf_ism.h: New file.
        * ospf_dump.c: New file.
        * ospf_dump.h: New file.

        * ospfd.h: Add (struct ospf), (struct config_network),
        (struct message) structure.

        * ospf_interface.c: Add ospf_if_match_network ().
        * ospf_interface.h (struct ospf_interface): Change struct members.

        * ospfd.c: ospf_lookup_by_process_id (), ospf_network_new (),
        DEFUN (network_area): Added.

        * ospfd.conf.sample: Change sample configuration.

1999-03-05  Toshiaki Takada  <takada@zebra.org>

        * ospf_interface.c: New file.
        * ospf_interface.h: New file.
        * ospf_zebra.h: New file.
        * ospf_zebra.c: Add interface function for zebra daemon.
        * ospfd.c: New file.

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

        * Move IPv6 codes and files to ospf6d directory.

1999-02-18  Peter Galbavy  <Peter.Galbavy@knowledge.com>

        * syslog support added

1998-12-22  Toshiaki Takada  <takada@zebra.org>

        * ospfd.h: New file.
        * ospf_lsa.h: New file.

1998-12-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

        * Makefile.am: New file.
        * ospf_main.c: New file.

