2005-04-15 Zhipeng Gong <zpgong@cdc.3upsystems.com>

	* ospf_abr.c: (ospf_abr_announce_network_to_area) dont forget
	  to approve LSAs for the case where metric has changed, lsa gets
	  flushed otherwise. (backport candidate).

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

	* ospf_zebra.c (ospf_zebra_add): Call zclient_send_message instead
	  of writen.

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

	* ospf_interface.h: (ospf_if_lookup_by_name) Remove declaration of a
	  function that does not exist.

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

	* ospf_zebra.c: (zebra_interface_if_lookup) Must use
	  if_lookup_by_name_len.

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

	* ospf_interface.c: (ospf_vl_new) Use strnlen to fix call to if_create.

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

	* ospf_vty.c: (show_ip_ospf_interface_sub) Show ifindex and interface
	  flags to help with debugging.
	* ospf_zebra.c: (ospf_interface_delete) After deleting, set ifp->ifindex
	  to IFINDEX_INTERNAL.
	  (zebra_interface_if_lookup) Make function static.  Tighten up code.

2005-03-31 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_dump.c: (show_debugging_ospf) Show if ospf event debugging
	  is turned on.

2005-03-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_zebra.c: (ospf_interface_state_up) If the MTU of an operative
	  interface changes, print a debug message and call ospf_if_reset()
	  to simulate down/up on the interface.
	* ospf_interface.h: Declare new function ospf_if_reset().
	* ospf_interface.c: (ospf_if_reset) New function to call ospf_if_down
	  and ospf_if_up for all ospf interfaces attached to an interface.

2005-03-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_packet.c: (ospf_write_frags) Enhance error message to
	  show MTU.  Also make function static.
	  (ospf_write) Enhance error message to show interface name and MTU.
	  Also make function static.

2005-03-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_vty.c: (show_ip_ospf_interface_sub) Display interface MTU and
	  bandwidth; this is useful for debugging problems.  Also, the function
	  should be static.

2005-03-27 Hasso Tepper <hasso at quagga.net>

	* ospf_snmp.c: Don't crash in snmp query if ospf instance doesn't
	  exist at all.

2005-03-25 Hasso Tepper <hasso at quagga.net>

	* ospfd.h: Include log.h, fixes compile with gcc-4.0.

2005-03-13 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_lsa.c: (ospf_lsa_refresh_walker) If the system clock jumps
	  backward, then current time may be less than
	  ospf->lsa_refresher_started.  This was causing invalid values
	  for ospf->lsa_refresh_queue.index resulting in infinite loops.
	  Problem fixed by casting the expression to unsigned before taking
	  the modulus.

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

	* ospfd.h: Add new field struct stream *ibuf to struct ospf.
	* ospfd.c: (ospf_new) Check return code from ospf_sock_init.
	  Allocate ibuf using stream_new(OSPF_MAX_PACKET_SIZE+1).
	  (ospf_finish) Call stream_free(ospf->ibuf.
	* ospf_packet.c: (ospf_read) Call stream_reset(ospf->ibuf) and then
	  pass it to ospf_recv_packet for use in receiving the packet
	  (instead of allocating a new stream for each packet received).
	  Eliminate all calls to stream_free(ibuf).
	  (ospf_recv_packet) The struct stream *ibuf is now passed in as
	  an argument.  No need to use recvfrom to peek at the packet
	  header (to see how big it is), just use ospf->ibuf which is
	  always large enough (this eliminates a system call to recvfrom).
	  Therefore, no need to allocate a stream just for this packet,
	  and no need to free it when done.

2005-02-23 Vincenzo Eramo <eramo at infocom.ing.uniroma1.it>

	* ospf_lsa.h: New flag to the LSA structure for the SPF calculation.
	* ospf_lsdb.h: Export ospf_lsdb_clean_stat() function.
	* ospf_spf.h: Add link to the LSA stat structure into vertex.
	* ospf_spf.c: New functions cmp() and update_stat() to manage
	  candidates. Remove ospf_spf_has_vertex(), ospf_vertex_lookup(),
	  ospf_install_candidate() and ospf_spf_register() functions not needed
	  any more. Update ospf_vertex_new(), ospf_spf_next() and
	  ospf_spf_calculate() functions to use pqueue instead of linked list.

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

	* ospf_ase.c: Don't show messages related to the ase calculations if
	  we are not debugging.

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

	* ospf_api.h: char isn't always signed, but it has to be it here.

2005-02-19 Paul Jakma <paul.jakma@sun.com>

	* ospf_packet.c: (ospf_stream_copy) remove
	  (ospf_packet_dup) use stream_copy instead of ospf_stream_copy

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

	* ospf_packet.c: (ospf_recv_packet) If there is somehow a runt
	  packet in the queue, it must be discarded.  Improve warning messages.
	  Fix scope to static.
	  (ospf_read) Fix bug: should reset the read thread in all cases
	  to make sure we continue to get incoming messages.

2005-02-15 Paul Jakma <paul.jakma@sun.com>

	* ospf_packet.c: (ospf_recv_packet) Fix silly error wrt allocating
	  ibuf. Thanks Andrew.

2005-02-14 Paul Jakma <paul.jakma@sun.com>

	* ospf_packet.c: (ospf_recv_packet) use stream_recvmsg.

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

	* ospf_lsdb.c: Fix sum of checksums calculation.

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

	* ospf_packet.c: (ospf_write) If sendmsg fails, give more info in the
	  error message.
	  
2005-02-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_interface.h: Reduce structure padding by putting new u_char
	  field multicast_memberships in a better spot (grouped with
	  other u_char fields type and state).

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

	* ospf_interface.h: Improve passive_interface comment.  Add new
	  multicast_memberships bitmask to struct ospf_interface to track
	  active multicast subscriptions.  Declare new function
	  ospf_if_set_multicast.
	* ospf_interface.c: (ospf_if_set_multicast) New function to configure
	  multicast memberships properly based on the current
	  multicast_memberships status and the current values of the
	  ospf_interface state, type, and passive_interface status.
	  (ospf_if_up) Remove call to ospf_if_add_allspfrouters (this is
	  now handled by ism_change_state's call to ospf_if_set_multicast).
	  (ospf_if_down) Remove call to ospf_if_drop_allspfrouters (now
	  handled by ism_change_state).
	* ospf_ism.c: (ospf_dr_election) Remove logic to join or leave
	  the DRouters multicast group (now handled by ism_change_state's call
	  to ospf_if_set_multicast).
	  (ism_change_state) Add call to ospf_if_set_multicast to change
	  multicast memberships as necessary to reflect the new interface state.
	* ospf_packet.c: (ospf_hello) When a Hello packet is received on a
	  passive interface: 1. Increase the severity of the error message
	  from LOG_INFO to LOG_WARNING; 2. Add more information to the error
	  message (packet destination address and interface address);
	  and 3. If the packet was sent to ospf-all-routers, then try
	  to fix the multicast group memberships.
	  (ospf_read) When a packet is received on an interface whose state
	  is ISM_Down, enhance the warning message to show the packet
	  destination address, and try to update/fix the multicast group
	  memberships if the packet was sent to a multicast address.
	  When a packet is received for ospf-designated-routers, but the
	  current interface state is not DR or BDR, then increase the
	  severity level of the error message from LOG_INFO to LOG_WARNING,
	  and try to fix the multicast group memberships.
	* ospf_vty.c: (ospf_passive_interface) Call ospf_if_set_multicast for
	  any ospf interface that may have changed from active to passive.
	  (no_ospf_passive_interface) Call ospf_if_set_multicast for
	  any ospf interface that may have changed from passive to active.
	  (show_ip_ospf_interface_sub) Show multicast group memberships.

2005-02-08 Paul Jakma <paul@dishone.st>

	* ospf_packet.c: (various) Remove unneeded stream_set_putp abuse.

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

	* ospf_packet.c: (ospf_read) Fix bug: must check for state ISM_Down,
	  not for event ISM_InterfaceDown.  And improve the message by
	  adding the interface flags.

2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_network.c: (ospf_sock_init) Save errno before calling
	  ospfd_privs.change.

2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_packet.c: (ospf_packet_add) If oi->obuf is NULL, print
	an error message and return.
	(ospf_read) If the interface state is ISM_InterfaceDown, issue
	a warning message and ignore the packet.

2005-01-10  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* ospf_packet.h: Remove commented out definition of
	OSPF_MAX_PACKET; neither it or the uncommented one are used any more.

	* ospf_packet.c (ospf_make_ls_upd): Leave room for authentication
	when deciding if an update will fit.
	(ospf_packet_authspace): Factor out calculation of size required
	for authentication.
	(ospf_make_db_desc): Use ospf_max_packet, not OSPF_MAX_PACKET.
	Don't confuse readers that there is a macro.

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

	* ospf_network.c: Improve all setsockopt error messages to give detailed
	  information on the arguments.

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

	* ospf_packet.c: (ospf_db_desc) Reduce severity of "Negotiation done"
	  messages from LOG_WARNING to LOG_INFO, since this seems to be
	  normal.

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

	* ospf_packet.c: (ospf_read) Always look up the interface if
	  ospf_recv_packet returns NULL ifp, since some platforms such
	  as Solaris 8 appear to support ifindex retrieval but don't.

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

	* ospf_dump.c: Show debug configuration in vtysh.
	* ospf_vty.c: Fix "show ip ospf" output. Router can't be elected in
	  any case if it's configured as "translate-never".
	* ospf_lsdb.[ch]: New function to calculate sum of checksums.
	* ospf_vty.c: Bugfix to show really number of AS external LSAs, not
	  number of all LSAs with AS scope, this includes opaque as LSAs as
	  well, show this number separately. Show numbers and sums of
	  checksums for each type of LSAs.
	* ospf_lsa.c: Calculate checksum before putting LSA into database.

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

	* ospf_interface.h: Declare new function ospf_default_iftype.
	* ospf_interface.c: (ospf_default_iftype) New function to centralize
	  this logic in one place.
	* ospf_zebra.c: (ospf_interface_add) Use new function
	  ospf_default_iftype.
	* ospf_vty.c: (no_ip_ospf_network,config_write_interface) Fix logic
	  by using new function ospf_default_iftype.

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

	* ospf_packet.c: (ospf_db_desc) Should be static, not global.
	  (ospf_hello,ospf_db_desc,ospf_ls_upd,ospf_ls_ack) Improve warning
	  messages to include identifying information (e.g. router id).
	* ospf_nsm.c: (nsm_change_state) Improve info message to include
	  router id and state names.

2004-12-09  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* ospf_apiserver.c (ospf_apiserver_term): Obtain struct
	ospf_apiserver * from listnode.  Remove unused variables.  Follows
	suggestion from Jay Fenlason.

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

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

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

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

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

	* ospf_packet.c: (ospf_db_desc) Reduce priority on a debug message
	  from LOG_NOTICE to LOG_DEBUG.

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

	* ospf_main.c: (sigint) Use zlog_notice for termination message.
	  (main) Issue a startup announcement using zlog_notice.

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

	* ospf_packet.c: (ospf_db_desc_proc) Fix spelling of packet in warning
	  message and in comment.
	  (ospf_db_desc) Warning message that a packet is being discarded
	  should give the router id of the packet source.  Fix spelling
	  of packet in two warning messages.
	  (ospf_ls_req) Warning message that a link state request is being
	  discarded should give the router id of the neighbor that sent it.

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

	* ospf_main.c: Remove #include "debug.h" (was not being used, and
	  lib/debug.h has now been deleted).

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

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

2004-11-15  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* ospf_packet.c (ospf_recv_packet): Assume CMSG_SPACE is present
	and works (lib/zebra.h provides if OS doesn't).

2004-11-15 Paul Jakma <paul@dishone.st>

	* ospf_{apiserver,te}.c: ospf_lsa_free's should be ospf_lsa_unlock.

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

	* ospf_ia.c: (process_summary_lsa) Only an ABR has any reason to
          ignore stub area summary default. Even so it seems a strange
          check, add a comment to that effect.

2004-11-04 Paul Jakma <paul@dishone.st>

	* ospfd.c: (ospf_network_match_iface) revert to previous network
          statement match behaviour.

2004-11-02 Paul Jakma <paul@dishone.st>

	* ospf_packet.c: (ospf_write_frags) remove iov arg, msg already points
	  to it. Add convenience pointer to msg->msg_iov[1], and use this,
	  fixing the unfortunate borkenness introduced in moving of this code 
	  to a function.
	  (ospf_write) remove iovp and fix up call to previous.
	  (ospf_ls_upd_packet_new) cast size to long int - unfortunately 
          glibc's size_t format modifier is not portable.

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

	* ospf_packet.c: (ospf_write_frags) Add debug output
	  (ospf_write) set type early, so we can pass it to
	  ospf_write_frags.
	  (ospf_ls_upd_packet_new) print size in debug output when too large
	  packet is encountered.
	* ospf_zebra.c: (ospf_distribute_list_update_timer) Ugly misuse of
	  THREAD_ARG to store an integer, but it should at least use same
          same type to retrieve the value. Assert value is sane.

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

	* ospf_network.c: (ospf_sock_init) call neutral setsock_ifindex()
          function.
        * ospf_packet.c: (ospf_read) manually look up ifindex
          if system could not have returned one, eg openbsd, thanks to Rivo
	  Nurges for highlighting problem and fix.
          Change setsockopt_pktinfo to setsockopt_ifindex.

2004-10-19 Andrew J. Schorr <aschorr@telemetry-investments.com>

	* ospf_snmp.c: (ospf_snmp_if_update) Fix logic to handle PtP links
	  with dedicated subnets properly.
	* ospf_lsa.c: (lsa_link_ptop_set) ditto.
	* ospfd.c: (ospf_network_match_iface) ditto.
	  (ospf_network_run) ditto.
	* ospf_interface.c: (ospf_if_is_configured) ditto.
	  (ospf_if_lookup_by_prefix) ditto.
	  (ospf_if_lookup_recv_if) ditto.
	* ospf_vty.c: (show_ip_ospf_interface_sub) Display the peer or
	  broadcast address if present.

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

	* ospf_main.c: Unbreak compilation with ospfapi disabled.
	* ospf_snmp.c: Remove defaults used to initialize smux connection to
	  snmpd. Connection is initialized only if smux peer is configured.

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

	* ospf_main.c, ospf_opaque.c: Unbreak ospfclient compilation - move
	  static variable from ospf_main.c into ospf_opaque.c.

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

	* ospf_main.c, ospf_opaque.c: Disable ospfapi init by default. New
	  command line switch to enable it.

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

	* ospf_dump.c: (ospf_ip_header_dump) Assume header is in host order
	  remove ntohs that should have dissappeared. Take struct ip
	  as argument, caller has to know there's an IP header at start of
	  stream anyway.
	* ospf_dump.h: update declaration of ospf_ip_header_dump.
	* ospf_packet.c: (ospf_write) correct call to 
	  sockopt_iphdrincl_swab_htosys which was munging the header.
	  (ospf_recv_packet) ip_len is needed for old OpenBSD fixup.
	  (ospf_read) sockopt_iphdrincl_swab_systoh ip header as soon as
	  we have it.
	* (global) Const char update and signed/unsigned fixes.
	* (various headers) size defines should be unsigned.
	* ospf_interface.h: remove duplicated defines, include the
	  authoritative header - though, these defines should probably
          be moved to a dedicated header, or ospfd.h.
	* ospf_lsa.h: (struct lsa) ls_seqnum should be unsigned.
	* ospf_packet.c: (ospf_write) cast result of shift to unsigned.
	  
2004-10-08 Hasso Tepper <hasso at quagga.net>
	
	* *.[c|h]: Fix compiler warnings: make some strings const, signed ->
	  unsigned, remove unused variables etc.

2004-10-07  Greg Troxel  <gdt@claude.ir.bbn.com>

	* ospf_apiserver.c (ospf_apiserver_unregister_opaque_type): Don't
	use of variable names 'node' and 'nextnode' to avoid possible
	conflict with list macros.  Move variable declaration inside for
	loop after a statement to top of function.

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

	* ospf_snmp.c: Missed list typedef update
	* ospf_dump.c: Include sockopt.h for header swab functions.

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.

