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.

