2006-06-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_snmp.c: (ospfTrapNbrStateChange, ospfTrapIfStateChange) Improve
	  info log message to indicate why the trap is being sent.

2006-06-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_dump.c: (config_write_debug) Fix typo to show debug ospf nsm
	  status properly (not ism status).

2006-06-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* ospf_vty.c: ({no_,}ospf_passive_interface) Replace if_lookup_by_name
	  with a call to if_get_by_name -- if the interface does not exist
	  already, it should be created.  And remove the obsolete warning
	  message.

2006-06-15 Paul Jakma <paul.jakma@sun.com>

	* ospf_interface.h: (struct ospf_if_info) Add reference counts
	  for multicast group memberships. Add various macros to help
	  manipulate/check membership state.
	* ospf_interface.c: (ospf_if_set_multicast) Maintain the
	  ospf_if_info reference counts, and only actually drop
	  memberships if it hits 0, to avoid losing membership when
	  OSPF is disabled on an interface with multiple active OSPF
	  interfaces.
	* ospf_packet.c: (ospf_{hello,read}) Use the new macros to
	  check/set
	  multicast membership.
	* ospf_vty.c: (show_ip_ospf_interface_sub) ditto.
	  
2006-05-31 Paul Jakma <paul.jakma@sun.com>

	* ospf_lsdb.c: (ospf_lsdb_delete) robustify against NULL arguments,
	  print warning.
	* ospf_lsa.c: (ospf_discard_from_db) ditto.
	  (ospf_maxage_lsa_remover) Check lsa->lsdb for validity, possible
	  mitigation (but not solution) for bug #269.

2006-05-30 Paul Jakma <paul.jakma@sun.com>

	* ospf_packet.c: (ospf_read) Debug message about packets
	  received on unenabled interfaces should be conditional on
	  debug being set.

2006-05-13 Paul Jakma <paul.jakma@sun.com>

	* ospf_lsa.c: (ospf_translated_nssa_refresh) fix the sanity
	  check to match the assert, small error in CID #13 fix.

2006-05-12 Paul Jakma <paul.jakma@sun.com>

	* ospf_lsa.c: (ospf_lsa_action) Get rid of the ospf_lookup
	  call, which is not checked for NULL return, by stripping out
	  functionality which is never used, hence fixing Coverity CID
	  #29.
	  (struct lsa_action) remove unused member.
	  (ospf_translated_nssa_refresh) Add non-assert sanity check,
	  in case DEBUG isn't defined.
	  Debug message when no type7 exists should print the ID from
	  the type5, not the type7, fixes CID #13.
 	* ospf_interface.c: (ospf_if_exists) Fix missing NULL return
	  check on ospf_lookup, CID #27.
	* ospf_asbr.c: (ospf_redistribute_withdraw) remove ospf_lookup
	  call by taking the struct ospf * as argument, which the
	  caller has, fixing CID #28.
	* ospf_asbr.h: (ospf_redistribute_withdraw) update declaration
	* ospf_zebra.c: (ospf_redistribute_unset) update call to
	  ospf_redistribute_withdraw to match.
	* ospf_ia.c: (ospf_update_router_route) ospf->backbone could be
	  NULL when passed to ospf_find_asbr_route_through_area,
	  check for NULL first, CID #14.
	* ospf_ism.c: (ism_change_state) NULL check on oi->area is
	  useless, it's always valid. Only possibility where it
 	  couldn't be is if there is a race between abr_task and
	  cleaning up oi's, in which case a NULL check here isn't going
	  to do anything. Fixes CID #15.

2006-05-11 Paul Jakma <paul.jakma@sun.com>

	* ospf_vty.c: (general) Audit ospf_lookup calls in commands,
	  ensure check for NULL result, make vty messages consistent. 
	  (show_ip_ospf_interface) Missing NULL check on ospf_lookup
	  result, fixes Coverity CID #70.
	  (no_ospf_area_filter_list) Check NULL result from
	  ospf_area_lookup_by_area_id, fixes Coverity CID #69
	* ospf_route.c: (ospf_route_delete_same_ext) Fix deref before
	  NULL check by moving into check-protected block, fix CID #49.
	* ospf_abr.c: (ospf_area_range_cost_set) Shouldn't create a new
	  range, should just lookup to see if one exists, the new range
	  is just leaked. Fixes CID #46.
	* ospf_lsa.c: (ospf_default_originate_timer) Let the thread
	  take (struct ospf *) as thread argument, rather than (struct
	  ospf *)->default_originate, thus avoiding having to call
	  ospf_lookup.
	* ospf_zebra.c: (ospf_redistribute_default_set) change setup
	  of ospf_default_originate_timer thread to match.
	* ospfd.c: (ospf_router_id_update) ditto.

2006-04-24 Paul Jakma <paul.jakma@sun.com>

	* (general) More Virtual-link fixes, again with much help in
	  testing / debug from Juergen Kammer. Primarily in SPF.
	* ospf_spf.h: Add guard. ospf_interface.h will include this
	  header.
	* ospf_interface.h: Modify ospf_vl_lookup definition to take
	  struct ospf as argument, so as to allow for NULL area
	  argument.
	  (struct ospf_vl_data) Remove out_oi, instead add a struct
	  vertex_nexthop, to use as initial nexthop for backbone paths
	  through a vlink.
	* ospf_interface.c: (ospf_vl_lookup) Modified to allow
	  NULL area to be passed to indicate "any" (first) area.
	  Add extra debug.
	  (ospf_vl_set_params) vl_oi -> nexthop. Add extra debug.
	  (ospf_vl_up_check) Fix debug, inet_ntoa returns a static
	  buffer..
	* ospf_route.c: (ospf_intra_add_router) Vlinks dont go through
	  backbone, don't bother checking.
	* ospf_spf.c: (static struct list vertex_list) Record vertices
	  that will need to be freed.
	  (cmp) Order network before router vertices, as required,
	  wasn't implemented.
	  (vertex_nexthop_free) Mild additional robustness check.
	  (vertex_parent_free) Take void argument, as this function
	  is passed as list deconstructor for vertex parent list.
	  (ospf_vertex_new) More debug. Set deconstructor for parent
	  list. Track allocated vertices on the vertex_list.
	  (ospf_vertex_free) Get rid of the tricky recursive cleanup of
	  vertices. Now frees only the given vertex. 
	  (ospf_vertex_add_parent) Fix assert.
	  (ospf_nexthop_calculation) Fix calculation of nexthop for
	  VLink vertices, lookup the vl_data and use its previously
	  recorded nexthop information.
	  (ospf_spf_calculate) Vertices are freed simply by deleting
	  vertex_list nodes and letting ospf_vertex_free as deconstructor
	  work per-node.
	  (ospf_spf_calculate_timer) Trivial optimisation, leave
	  backbone SPF calculation till last to reduce SPF churn on
	  VLink updates.
	* ospf_vty.c: (ospf_find_vl_data) update call to ospf_vl_lookup
	  (no_ospf_area_vlink_cmd) ditto.
	  (show_ip_ospf_interface_sub) For Vlinks, the peer address is
	  more interesting than the output interface.

2006-04-03 Paul Jakma <paul.jakma@sun.com>

	* (general) Fix issues with handling of Vlinks and entries
	  in the nbrs route-table which were highlighted by the
	  nsm/nbr_self fixes from bug #234. Many thanks to Juergen
	  Kammer for his help and efforts in testing out debug patches to
	  pinpoint the issue.
	* ospf_interface.c: (ospf_vl_new) Add nbr_self for Vlink.
	* ospf_neighbor.c: (ospf_nbr_key) new static function, helper
	  to create key in nbrs table for a given nbr.
	  (ospf_nbr_delete) Use ospf_nbr_key. Add an assert() to
	  document an expected state.
	  (ospf_nbr_add_self) Ditto.
	  (ospf_nbr_lookup_by_addr) Add an assert.
	* ospf_nsm.c: (nsm_kill_nbr) Can never kill the nbr_self
	  psuedo-neighbour.

2006-03-27 Paul Jakma <paul.jakma@sun.com>

	* ospf_lsa.c: (ospf_lsa_checksum) Add an explicit cast to avoid
	  the ambiguities of ANSI and C99 C with respect to type
	  conversion. Detailed problem report and test case with
	  example data supplied by Dmitry Ivanov <dimss@telecentrs.lv>.

2006-03-25 Paul Jakma <paul.jakma@sun.com>

	* ospf_interface.c: (ospf_if_lookup_recv_if) Ignore loopbacks,
	  we can never ever receive packets on those. Should fix
	  case where CARP is run with address in same subnet as real
	  interface. Problem report and diagnosis thanks to:
	  Landon Fuller <landonf@opendarwin.org>.
	  However, ospf_read() still can't deal deterministically with
	  multiple interfaces in same subnet.

2006-03-23 Steve Lawson <steve.lawson@aheadcomusa.com>

	* ospf_lsa.c: (ospf_lsa_install) Fix incorrect byte-order 
	  conversion of OSPF_MAX_SEQUENCE_NUMBER

2006-01-19 Paul Jakma <paul.jakma@sun.com>

        * (general) various miscellaneous compiler warning fixes.
           Remove redundant break statements from switch clauses
           which return.
           return from main, not exit, cause it annoys SOS.
           Remove stray semi-colons which cause empty-statement
           warnings.

2006-01-18 Juergen Kammer <j.kammer@eurodata.de>

	* ospf_lsa.c: (ospf_router_lsa_new) dont take reference to the
	  stream data until it is constructed, data reference is
	  volatile due to the potential resize in link_info_set

2006-01-18 Paul Jakma <paul.jakma@sun.com>

	* ospf_lsa.c: (link_info_set) Resize the stream if required and
	  possible. Return number of links added.
	  (lsa_link_*_set) use return value from previous.
	* ospf_lsa.h: Add OSPF_ROUTER_LSA_LINK_SIZE define.
	  
2006-01-17 Paul Jakma <paul.jakma@sun.com>

	* ospf_packet.c: (ospf_verify_header) print out the types
	  involved if there's a mismatch.
	* ospf_zebra.c: (ospf_zebra_add) Adjust to new zserv format.

2006-01-10 Len Sorensen <lennartsorensen@ruggedcom.com>

	* (general) Bug #234, see also [quagga-dev 3902].
	  Fix problem with nbr_self not being properly reinitialised
	  when an interface comes up, after having been down.
	  Some re-arrangement done by Paul Jakma, any bugs introduced
	  on top of Len's suggested changes are his.
	* ospf_neighbor.c: (ospf_nbr_add_self) centralise
	  initialisation of nbr_self parameters here.
	* ospf_interface.c: (ospf_if_new) deleting initialisation of
	  parameters of nbr_self, just rely on call to
	  ospf_nbr_add_self.
	  (ospf_if_cleanup) ditto.
	* ospfd.c: (ospf_network_run) ditto.

2006-01-10 Juris Kalnins <juris@mt.lv>

	* ospf_zebra.c: (ospf_interface_address_delete) fix rare leak of 
	  struct connected in an error case.
	* ospf_packet.c: (ospf_make_md5_digest) fix odd, if not
	  undefined effect, assignment of an increment expression.

2006-01-10 Paul Jakma <paul.jakma@sun.com>

	* ospfd.c: (ospf_network_run) checking to see if router-id
	  is set should be on ospf->router_id, not router_id_static.
	  This was causing ospfd to not start if router-id had not
	  been configured statically.
	  (ospf_if_update) ditto.
	* ospf_vty.c: (config_write_ospf_distribute) trim down
	  redundant strings.

2005-11-26 Paul Jakma <paul.jakma@sun.com>

	* ospf_api.c: (struct opaque_lsa) change from gcc zero-length
	  array to C99 incomplete type array.
	* (general) s/graceful/deferred/ in all files, the former term 
	   is confusing wrt OSPF Graceful-Restart.
	* ospfd.c: (ospf_deferred_shutdown_check) dont return
	  a function which returns void. SOS complains about this.
	  (ospf_finish)

2005-11-20 Paul Jakma <paul.jakma@sun.com>

        * ospfd.h: remove the OSPF_ROUTER_ID_UPDATE_DELAY define
          (struct ospf) remove the router_id timer thread.
          remove export of ospf_router_id_update_timer.   
        * ospfd.c: (ospf_router_id_update) call ospf_if_update to
          poke interfaces into action after ID has been configured.
          (ospf_router_id_update_timer) removed.
          (ospf_finish_final) t_router_id_update timer is gone.
          (ospf_network_run) router-id update timer gone.
          call ospf_router_id_update directly if ID not configured.
          In the per-iface loop, don't ospf_if_up interfaces if
          ID is still not configured. The update function will call
          ospf_if_update anyway.
          (ospf_if_update) ID update timer is gone. Just return if no
          ID is set.
        * ospf_vty.c: (ospf_router_id) call ospf_router_id_update, no
          timer needed.
        * ospf_zebra.c: (ospf_router_id_update_zebra) call
          ospf_router_id_update directly, not via timer.  
        * ospf_abr.c: (ospf_abr_announce_network_to_area) check
          returned LSA of ospf_summary_lsa_refresh and print warning if
          it failed.
          (ospf_abr_announce_network_to_area) similar
          (ospf_abr_announce_rtr_to_area) similar 
        * ospf_lsa.c: (ospf_router_lsa_new) check LSA returned is valid.
          (ospf_router_lsa_originate) similar
          (ospf_router_lsa_refresh, ospf_network_lsa_new) similar  
          (ospf_summary_lsa_new) Check ID is valid.
          (ospf_summary_lsa_originate) ditto, and check returned LSA from
           previous function is !NULL.
          (ospf_summary_lsa_refresh) check ospf_summary_lsa_new return
           is !NULL.
          (ospf_summary_asbr_lsa_new) ID valid check.
          (ospf_summary_asbr_lsa_originate) similar.

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

	* ospf_dump.h: Define OSPF_TIME_DUMP_SIZE as appropriate buffer size
	  for use with ospf_timer_dump and ospf_timeval_dump.
	* ospf_vty.c: Change all buffer sizes used with ospf_timer_dump and
	  ospf_timeval_dump to have size OSPF_TIME_DUMP_SIZE.
	  (show_ip_ospf_interface_sub) Fix possible buffer overflow in
	  call to ospf_timer_dump.

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

	* ospf_ism.h: (OSPF_ISM_TIMER_OFF) Improve macro syntax by enclosing
	  in 'do {...} while(0)'.

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

	* ospfd.c: (ospf_new) stub-shutdown should just default to
	  unconfigured, too strange otherwise.
	  (ospf_finish_final) t_opaque_lsa_self TIMER_OFF should be
	  preprocessor conditional on HAVE_OPAQUE_LSA.
	* ospfd.h: (struct ospf) remove the SHUTDOWN_DEFAULT define.
	  no longer used, plus it wasn't in range that the command
	  accepted.
	* ospf_zebra.h: Depends on vty.h, include it.

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

	* ospf_spf.c: (ospf_canonical_nexthops_free) Free only
	  the nexthops pointing to the root vertex. We may visit a
	  vertex twice or the vertex may have some inherited nexthops,
	  if we free other nexthops we could crash.
 
2005-11-04 Paul Jakma <paul.jakma@sun.com>

	* ospf_{dump,spf,vty}.c: Oops, use the internal tv_sub
	  function rather than unportable timersub.

2005-11-03 Paul Jakma <paul.jakma@sun.com>

	* ospf_apiserver.c: (apiserver_sync_callback) stray semi-colon
	* ospf_packet.c: include checksum.h, remove the in_cksum extern
	* prototypes.
	* ospf_te.h: Add braces, quell warning.
	* ospf_packet.c: Change level of some warnings to
	  informational.

2005-10-29 Paul Jakma <paul.jakma@sun.com>

	* (general) RFC3137 stub-router support
	* ospfd.h: Add OSPF_OUTPUT_COST_INFINITE define.
	  (struct ospf_master) Add a OSPF_MASTER_SHUTDOWN flag for
	  options, to allow shutdown to distinguish between complete
	  shutdown and shutdown of a subset of ospf instances.
	  (struct ospf)
	  Add stub_router_{startup,shutdown_}time, configuration of startup
	  and shutdown time for stub-router.
	  Add t_graceful_shutdown struct thread, timer for graceful
	  shutdown, if needed.
	  (struct ospf_area) Add stub_router_state - run time state of
	  stub-router for an area. Add flags for ADMIN, IS and WAS
	  states.
	  Add t_stub_router, timer thread to resend router-lsa for an
	  area.
	* ospf_lsa.c: (ospf_link_cost) new simple function to spit out
	  either the given lnks cost or infinite cost if stub-router is
	  in effect.
	  (lsa_link_{ptop,broadcast,virtuallink,ptomp}_set) use
	  previous function for transit-links.
	  (ospf_stub_router_timer) timer thread for end of startup stub
	  router. Change state as required for the area and setup
	  re-origination of router-lsa.
	  (ospf_stub_router_check) Check/do whether stub-router should be
	  enabled, and whether it requires timer to be setup.
	  (ospf_router_lsa_new) call previous function at top.
	  (ospf_router_lsa_originate) no external callers, made static.
	* ospf_lsa.h: (ospf_router_lsa_originate) removed.
	* ospf_main.c: (sigint) make static.
	  remove call to exit, as ospf_terminate now deals with
	  exiting.
	* ospf_route.c: (ospf_terminate) removed, now in ospfd.c.
	* ospf_vty.c: (show_ip_ospf_area) print out state of
	  stub-router, if active.
	  (show_ip_ospf) print out configuration of stub-router
	  support, and details of graceful-shutdown if the timer is
	  active.
	  ((no)?ospf_max_metric_router_lsa_{admin,startup,shutdown}) new
	  commands to (de-)?configure stub-router support.
	  (config_write_stub_router) write out config of stub-router.
	  (ospf_config_write) call previous.
	  (ospf_vty_init) install the new stub-router commands.
	* ospfd.c: various functions made static.
	  (ospf_new) Set defaults for stub-router. Graceful shutdown
	  is made to default on, just to be adventerous.
	  (ospf_graceful_shutdown_finish) new function, final part of
	  shutdown.
	  (ospf_graceful_shutdown_timer) timer thread wrapper for
	  graceful-shutdown.
	  (ospf_graceful_shutdown_check) check whether to setup timer
	  for shutdown or proceed directly to final shutdown.
	  (ospf_terminate) moved here from ospf_route.c, call
	  ospf_finish for each instance.
	  (ospf_finish) renamed to ospf_finish_final and made static.
	  (ospf_finish) new function, exported wrapper around
	  ospf_graceful_shutdown_check.
	  (ospf_finish_final) complete shutdown of an instance.
	  Add missing TIMER_OFF's of two timer threads.
	  (ospf_area_free) opaque self lsa timer should be turned off.

2005-10-23 Paul Jakma <paul.jakma@sun.com>

	* ospf_apiserver.c: (ospf_apiserver_term) This function should
	  not have side-effects (eg segv) if no apiserver instances are
	  active, ie be robust.
	* ospf_vty.c: (show_ip_ospf) fix display of SPF timer if it
	  has not yet been run.

2005-10-21 Paul Jakma <paul.jakma@sun.com>

	* ospf_dump.c: (ospf_timeval_dump) fix ms adjustment, thanks to
	  Andrew Schorr.
	* ospf_vty.c: (ospf_config_write) fix write out of spf timers
	  configuration.

2005-10-21 Paul Jakma <paul.jakma@sun.com>

	* (general) SPF millisecond resolution timer with adaptive,
	  linear back-off holdtime. Prettification of ospf_timer_dump.
	* ospf_dump.c: (ospf_timeval_dump) new function. The guts of
	  ospf_timer_dump, but made to be more dynamic in printing out
	  the relative timeval, sliding the precision printed out
	  according to the value.
	  (ospf_timer_dump) guts moved to ospf_timeval_dump.
	* ospf_dump.h: export ospf_timeval_dump.
	* ospf_flood.c: (ospf_flood) remove gettimeofday, use
	  the libzebra exported recent_time instead, as it's not
	  terribly critical to have time exactly right - the dropped
	  LSA will be retransmited to us if we don't ACK it.
	* ospf_packet.c: (ospf_ls_upd_timer) Ditto, but here we're
	  not transmitting, just putting LSA back on update transmit list.
	* ospfd.h: delay and holdtimes should be unsigned.
	  Add spf_max_holdtime and spf_hold_multiplier.
	  Update default defines for delay and hold time to be in msec.
	  (struct ospf) change the SPF timestamp to a struct timeval.
	  Remove ospf_timers_spf_(un)?set.
	* ospfd.c: (ospf_timers_spf_{set,unset}) removed.
	  (ospf_new) initialise spf_max_holdtime and spf_hold_multiplier
	* ospf_spf.c: (ospf_spf_calculate) SPF timestamp is a timeval
	  now, update with gettimeofday.
	  (ospf_spf_calculate_schedule) Change SPF timers to millisecond
	  resolution.
	  Make the holdtime be adaptive, with a linear increase in
	  holdtime ever consecutive SPF run which occurs within holdtime
	  of previous SPF, bounded by spf_max_holdtime.
	* ospf_vty.c: Update spf timers commands.
	  (ospf_timers_spf_set) trivial helper. 
	  (ospf_timers_throttle_spf_cmd) new command to set SPF delay,
	  initial hold and max hold times with millisecond resolution.
	  (ospf_timers_spf_cmd) Deprecated. Accept the old values,
	  convert to msec, truncate to new limits.
	  (no_ospf_timers_throttle_spf_cmd) set timers to defaults.
	  (no_ospf_timers_spf_cmd) deprecated form, same as previous.
	  (show_ip_ospf_cmd) Display SPF parameters and times.
	  (show_ip_ospf_neighbour_header) Centralise the 'sh ip os ne'
	  header.
	  (show_ip_ospf_neighbor_sub) Fix the field widths. Get rid of
	  the multiple spaces which were making the lines even longer.
	  (show_ip_ospf_neighbor_cmd) Use show_ip_ospf_neighbour_header
	  (show_ip_ospf_neighbor_all_cmd) ditto and fix the field
	  widths for NBMA neighbours.
	  (show_ip_ospf_neighbor_int) Use header function.
	  (show_ip_ospf_nbr_nbma_detail_sub) use sizeof for timebuf,
	  local array - safer.
	  (show_ip_ospf_neighbor_detail_sub) ditto
	  (ospf_vty_init) install the new SPF throttle timer commands.
	  
2005-10-21 Paul Jakma <paul.jakma@sun.com>

	* (general) OSPF fast, sub-second hello and 1s dead-interval
	  support.
	* ospf_dump.c: (ospf_timer_dump) Print out milliseconds too.
	  Callers typically specify a length of 9, so most see
	  millisecs unless they specify the additional length.
	* ospf_interface.h: (struct ospf_interface) new interface param, 
	  fast_hello.
	* ospf_interface.c: (ospf_if_table_lookup) add brackets,
	  gcc warning fix.
	  (ospf_new_if_params) Initialise fast_hello param.
	  (ospf_free_if_params) Check whether fast_hello is configured.
	  (ospf_if_new_hook) set fast_hello to default.
	* ospf_ism.h: Wrap OSPF_ISM_TIMER_ON inside do {} while (0) to
	  prevent funny side-effects from its if statement when this
	  macro is used conditionally by other macros.
	  (OSPF_ISM_TIMER_MSEC_ON) new macro, set in milliseconds.
	  (OSPF_HELLO_TIMER_ON) new macro to set hello timer according
	  to whether fast_hello is set.
	* ospf_ism.c: Update all setting of the hello timer to use
	  either OSPF_ISM_TIMER_MSEC_ON or OSPF_HELLO_TIMER_ON. The
	  former is used when hello is to be sent immediately.
	* ospf_nsm.c: ditto
	* ospf_packet.c: (ospf_hello) hello-interval is not checked
	  for mismatch if fast_hello is set.
	  (ospf_read) Annoying nit, fix "no ospf_interface" to be debug
	  rather than a warning, as it can be perfectly normal to
	  receive packets when logical subnets are used.
	  (ospf_make_hello) Set hello-interval to 0 if fast-hellos are
	  configured.
	* ospf_vty.c: (ospf_auto_cost_reference_bandwidth) annoying
	  nit, don't vty_out if this command is given, it gets tired
	  quick.
	  (show_ip_ospf_interface_sub) Print the hello-interval 
	  according to whether fast-hello is set or not.
	  Print the extra 5 millisec characters from (ospf_timer_dump)
	  if fast-hello is configured.
	  (ospf_vty_dead_interval_set) new function, common to all
	  forms of dead-interval command, to set dead-interval and
	  fast-hello correctly. If a dead-interval is given, unset
	  fast-hello, else if a hello-multiplier is set, set
          dead-interval to 1 and fast-hello to given multiplier.
	  (ip_ospf_dead_interval_addr_cmd) use
	  ospf_vty_dead_interval_set().
	  (ip_ospf_dead_interval_minimal_addr_cmd) ditto.
	  (no_ip_ospf_dead_interval) Unset fast-hello.
	  (no_ip_ospf_hello_interval) Bug-fix, unset of hello-interval
	  should set it to OSPF_HELLO_INTERVAL_DEFAULT, not
	  OSPF_ROUTER_DEAD_INTERVAL_DEFAULT.
	  (config_write_interface) Write out fast-hello.
	  (ospf_config_write) Write a comment about 
	  "auto-cost reference-bandwidth" having to be equal on all
	  routers. Hopefully just as noticeable as old practice of
	  writing to vty, but less annoying.
	  (ospf_vty_if_init) install the two new dead-interval
	  commands.
	* ospfd.h: Add defines for OSPF_ROUTER_DEAD_INTERVAL_MINIMAL
	  and OSPF_FAST_HELLO_DEFAULT.

2005-10-18 Paul Jakma <paul.jakma@sun.com>

	* (general) SPF memory management cleanup and fix for rare
	  double-free bug.
	* ospf_spf.h: (struct vertex_parent) New struct to hold parent
	  specific data, eg the backlink and the parent vertex pointer,
	  and point to the appropriate general struct vertex_nexthop.
	  (struct vertex_nexthop) remove parent vertex pointer, so
	  this struct can be shared across vertices.
	  (struct vertex) rename list child to list children. Remove
	  list of nexthops, replace with list of vertex_parents.
	* ospf_spf.c: (update_stat) trivial, remove cast from void *.
	  (vertex_nexthop_new) remove init of parent - field is gone
          from struct vertex_nexthop.
          (ospf_canonical_nexthops_free) Remove the canonical
          vertex_nexthop memory objects. These are the vertex_nexthops
          attached to the first level of router vertices from the root.
          (vertex_parent_new) new function, create a vertex_parent.
          (vertex_parent_free) ditto, but free it.
          (ospf_vertex_new) Update to match changes to struct vertex.
          (ospf_vertex_free) Recursively free a struct vertex and its
          children. The parent list is used as a reference count.
          vertex_nexthops must be free seperately, if required.
          (ospf_vertex_dump) update to match struct vertex changes.
          Print out backlink of parents too.
          (ospf_vertex_add_parent) ditto.
          (ospf_lsa_has_link) update comment.
          (ospf_nexthop_add_unique) removed, not needed anymore.
          (ospf_nexthop_merge) ditto.
          (ospf_spf_consider_nexthop) renamed to ospf_spf_add_parent.
          Simplified to just create vertex_parent and add it.
          (ospf_spf_flush_parents) new function, flush out the parent
	  list.
	  (ospf_nexthop_calculation) Take the relevant route_lsa_link
	  as an argument, which simplifies things and removes the need
	  for the hack in ospf_nexthop_add_unique - ospf_spf_next
	  already knew exactly which link the cost calculated was for.
	  Update to match struct vertex changes too.
	  (ospf_spf_next) Don't create a vertex for W unnecessarily, if
          it's there's a vertex already created for W, use it, and
          hence there's no need to free it either.
          Update some manipulation/comparisons of distance to match.
          Flush the parent list if a lower cost path is found.
          (ospf_spf_route_free) unused, removed.
          (ospf_spf_dump) match the struct vertex changes, and dump the
          ifname if possible.
          (ospf_spf_calculate) At end of SPF, free the canonical nexthops
          and call ospf_vertex_free on the root vertex to free the
	  entire tree.
	* ospf_interface.c: (ospf_vl_set_params) match struct vertex
          changes.
        * ospf_route.c: (ospf_intra_route_add) ditto
          (ospf_route_copy_nexthops_from_vertex) ditto
          
2005-10-11 Paul Jakma <paul.jakma@sun.com>

	* ospf_api.c: sign warnings.
	* ospf_apiserver.c: sign warning and convert all the struct
	  in_addr initialisations so as not to make assumptions about
	  how this struct is organised, initialise the s_addr member
	  explicitely.
	* ospf_packet.c: Add const qualifier to auth_key.

2005-10-06 Alain Ritoux <alain.ritoux@6wind.com>

	* ospf_snmp.c: Avoid mixing interface and ospf_interface objects
	  which now allows snmpwalk to work with ospfIfTable and 
	  also with ospfIfMetricTable

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

	* ospf_dump.c: Remove local hard-coded table ospf_redistributed_proto.
	  (ospf_redist_string) New function implemented using new library
	  function zebra_route_string().  Note that there are a few differences
	  in the output that will result: the new function returns strings
	  that are lower-case, whereas the old table was mixed case.  Also,
	  the old table mapped ZEBRA_ROUTE_OSPF6 to "OSPFv3", whereas the
	  new function returns "ospf6".
	* ospfd.h: Remove extern struct message ospf_redistributed_proto[],
	  and add extern const char *ospf_redist_string(u_int route_type)
	  instead.
	* ospf_asbr.c: (ospf_external_info_add) In two messages, use
	  ospf_redist_string instead of LOOKUP(ospf_redistributed_proto).
	* ospf_vty.c: Remove local hard-coded table distribute_str.
	  (config_write_ospf_redistribute,config_write_ospf_distribute): Use
	  new library function zebra_route_string() instead of distribute_str[].
	* ospf_zebra.c: (ospf_redistribute_set,ospf_redistribute_unset,
	  ospf_redistribute_default_set,ospf_redistribute_check)
	  In debug messages, use ospf_redist_string() instead of
	  LOOKUP(ospf_redistributed_proto).

2005-09-30 Vincent Jardin <vincent.jardin@6wind.com>

	* ospf_dump.c, ospf_ia.c, ospf_spf.c, ospf_ase.c:
	  remove unused DEBUG

2005-09-29 Alain Ritoux <alain.ritoux@6wind.com>

	* ospf_ism.c: generate SNMP traps on Interface state change
	* ospf_nsm.c: generate SNMP traps on Neighbour state change
	* ospf_snmp.[ch]: support for SNMP traps for interface and neighbours.

2005-09-29 Alain Ritoux <alain.ritoux@6wind.com>

	* ospf_vty.c: forece default route LSA to be re_issued whenever
	  cost is changed ( [no] ip ospf area XXX default-cost YYY)
	  Support ignore-mtu option
	* ospfd.h: define OSPF_MTU_IGNORE_DEFAULT
	* ospf_packet.c: support ignore-mtu option
	* ospf_interface.h: field added for skipping MTU check 
	* ospf_interface.c: fix memory leak in ospf_crypt_key_delete()
	  Set mtu_ignore field to default value
	* ospf_abr.[ch]: export ospf_abr_announce_network_to_area()
	* ospf_ism.h: add MACRO to convert internal ISM status into SNMP
	  correct values
	* ospf_snmp.c: add sanity check on LSA type in lsdb_lookup_next()
	  convert OSPFIFSTATE internal status into SNMP values

2005-09-28 Alain Ritoux <alain.ritoux@6wind.com>

	* ospf_packet.c: use new md5 API

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

	* ospf_lsa.h: (ospf_external_lsa_flush) Comment out the 5th argument
	  (nexthop) since it is not used in the function (except inside
	  some commented-out code).
	* ospf_lsa.c: (ospf_external_lsa_flush,ospf_external_lsa_refresh)
	  Comment out the 5th argument to ospf_external_lsa_flush.
	* ospf_asbr.c: (ospf_redistribute_withdraw) Comment out 5th arg
	  to ospf_external_lsa_flush.
	* ospf_vty.c: (no_ospf_default_information_originate) Eliminate 5th
	  uninitialized nexthop arg to ospf_external_lsa_flush.
	* ospf_zebra.c: (ospf_zebra_read_ipv4) Comment out 5th arg
	  to ospf_external_lsa_flush.
	* ospfd.c: (ospf_network_set) Comment out 5th arg
	  to ospf_external_lsa_flush.

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

	* ospf_opaque.c:
	  (ospf_opaque_lsa_refresh_schedule,ospf_opaque_lsa_flush_schedule)
	  No need to call ospf_lookup(), just use lsa0->area->ospf instead.

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

	* ospf_vty.c: Make "show ip ospf neighbor xxx" commands work.
	  Interface should be specified by name now.

2005-08-17 Hasso Tepper <hasso at quagga.net>

	* ospf_vty.c: Check carefully if interface exists before trying to
	  print info about it.

2005-08-05 Hasso Tepper <hasso at quagga.net>

	* ospf_zebra.c: Don't assert/stop before type == ZEBRA_ROUTE_MAX if
	  dealing with routemaps. There is ospf->route_map[ZEBRA_ROUTE_MAX]
	  for default-information.

2005-07-26 Paul Jakma <paul.jakma@sun.com>

	* ospf_abr.c: (ospf_abr_announce_network_to_area) SET_FLAG
	  should be on lsa not old, which may be freed for one thing,
	  obviously.

2005-07-12 Paul Jakma <paul.jakma@sun.com>

	* ospfd.h: add OSPF_ABR_DEFAULT for convenience, make 
	  OSPF_ABR_CISCO be the default ABR type.
	* ospfd.c: (ospf_new) initialise abr_type to OSPF_ABR_DEFAULT
	* ospf_vty.c: (no_ospf_abr_type_cmd) add standard as a negatable
	  abr_type. default abr_type should be OSPF_ABR_DEFAULT.
	  (ospf_config_write) test whether default abr_type against
	  OSPF_ABR_DEFAULT, rather than any specific ABR_TYPE.

2005-06-20 Hasso Tepper <hasso at quagga.net>

	* ospf_nsm.c: Make database exchange for NSSA database work. 

2005-06-13 Paul Jakma <paul.jakma@sun.com>

	* ospf_spf.c: Try get more information on a SEGV under 
	  ospf_spf_vertex_add_parent.
	  (ospf_vertex_free) NULL out the child and nexthop lists
	  (ospf_vertex_add_parent) nexthop and child can not be NULL
	  vertex_nexthop's parent->child list can not be NULL
	  (ospf_spf_next) w and cw are per-loop iteration variables, move
	  declarations into loop body.
	  
2005-06-07 Hasso Tepper <hasso at quagga.net>

	* ospf_apiserver.c: Fix obvious error in notifying clients about ISM
	  changes - oi->ifp->status doesn't give to us info about ISM,
	  oi->state does.

2005-06-01  Akihiro Mizutani  <mizutani@net-chef.net>

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

2005-05-26 Paul Jakma <paul.jakma@sun.com>

	* ospf_abr.c: (ospf_abr_update_aggregate) Fix comment, cost bug itself
	  had been fixed long ago by Sowmini.

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

	* ospf_interface.c: (ospf_if_table_lookup) Fix a serious bug
	  a less serious one. 
	  1: this function is supposed to lookup
	  entries in the oifs ospf_interface route_table and return either
	  an existing oi or NULL to indicate not found, its caller depends
	  on this, yet this function uses route_node_get which /always/
	  returns a route_node - one is created if none exists. Use
	  route_node_lookup instead. This should fix root cause of the
	  reports of the (ospf_add_to_if) assert being hit.
	  2: oi's are inserted into this table with prefixlength set to
	  /32 (indeed, it should be a hash table, not a route_table),
	  however prefixlength to lookup was not changed, if no valid entry
	  can be inserted other than /32, then nothng but /32 should be
	  looked up. This possibly only worked by fluke..
	  Fix confirmed by 2 reporters (one list, one IRC), definitely a
	  backport candidate once it has been incubated in HEAD for a while.
	  Thanks to Patrick Friedel and Ivan Warren for testing.
	  
2005-05-11 Paul Jakma <paul.jakma@sun.com>

	* (general) Fix memory leaks in opaque AS-scope LSAs, reported and
	  with much debugging done by by scott collins <scollins@agile.tv>.
	* ospf_lsa.c: (ospf_discard_from_db) dont call
	  ospf_ase_unregister_external_lsa for opaque-lsa's, opaques are
	  never registered with ase in the first place.
	* ospf_packet.c: (general) Disabuse opaque related code of its
          tendency to try gather up things into temporary lists.
          (ospf_ls_upd) remove the temporary lists opaque uses, call
          opaque functions inline, just like all other types.
          (ospf_ls_ack) ditto.
          (ospf_recv_packet) fixup sign warning.
        * ospf_opaque.c: (general) fix the unneeded use of lists, and
          untwist some of the logic.
          (ospf_opaque_self_originated_lsa_received) take a single LSA
          as argument, not a list of them. Remove the list loop. Logic 
          otherwise unchanged.
          (ospf_opaque_ls_ack_received) Mostly ditto. But untwist the logic,
          move the actions up into the switch block, remove the goto's and
          sanitise the logic near the end a bit.
        * ospf_opaque.h: Adjust definitions of aforementioned functions
          in ospf_opaque.c to match.
         
2005-05-07 Yar Tikhiy <yar@comp.chem.msu.su>

	* ospf_network.c: Log ifindex on multicast membership leave/join
	  events.

2005-05-06 Paul Jakma <paul.jakma@sun.com>

        * (general) extern and static qualifiers added. 
          unspecified arguments in definitions fixed, typically they should
          be 'void'.
          function casts added for callbacks.
          Guards added to headers which lacked them.
          Proper headers included rather than relying on incomplete
          definitions.
          gcc noreturn function attribute where appropriate.
        * ospf_opaque.c: remove the private definition of ospf_lsa's 
          ospf_lsa_refresh_delay.
        * ospf_lsa.h: export ospf_lsa_refresh_delay
        * ospf_packet.c: (ospf_make_md5_digest) make *auth_key const, 
          correct thing to do - removes need for the casts later.
        * ospf_vty.c: Use vty.h's VTY_GET_INTEGER rather than ospf_vty's
          home-brewed versions, shuts up several warnings.
        * ospf_vty.h: remove VTY_GET_UINT32. VTY_GET_IPV4_ADDRESS and
          VTY_GET_IPV4_PREFIX moved to lib/vty.h.
        * ospf_zebra.c: (ospf_distribute_list_update_timer) hacky
          overloading of the THREAD_ARG pointer should at least use
          uintptr_t.

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.

