]> git.proxmox.com Git - mirror_frr.git/blobdiff - ospfd/ChangeLog
[ospfd] cleanup NSM neighbour delete through a new Deleted NSM state
[mirror_frr.git] / ospfd / ChangeLog
index a5a1753aa2bd8594b3032c5e87a89ea6fc017022..7c374fb82467ec08c41e852cf2169a34643ff6d7 100644 (file)
@@ -1,3 +1,297 @@
+2006-07-07 Paul Jakma <paul.jakma@sun.com>
+
+       * ospf_nsm.h: Add a NSM_Deleted neighbour state, to act as dummy
+         state indicating the neighbour is to be deleted.
+       * ospf_nsm.c: (general) Use the NSM_Deleted state to delete
+         neighbours, thus allowing code to be slightly more obvious
+         in its flow.
+         (nsm_timer_set) Add NSM_Deleted. Add another timer the code
+         missed.
+         (nsm_kill_nbr) No need for special case call to nsm_change_state
+         anymore.
+         Make the assert and error-handling for same case more readable
+         (Andrew Schorr)
+         Remove the call to ospf_nbr_delete, nsm_change_state can do
+         this generally now via NSM_Deleted.
+         (struct ... NSM) Add the dummy NSM_Deleted state, the 3 events
+         that can lead to nsm_kill_nbr all now transition the NBR to
+         NSM_Deleted and the general change_state function can be left
+         to do the work.
+         (ospf_nsm_event) Special casing of events and early-return can
+         be removed now.
+         On transition into Deleted, delete the nbr.
+       * ospf_dump.c: (ospf_nsm_state_msg) Add Deleted.
+
+2006-07-06 Paul Jakma <paul.jakma@sun.com>
+
+       * ospf_nsm.c: (ospf_nsm_event) LLDown event also results in nbr
+         being deleted, requires early-return too. Likely explains
+         some crash reports after interface events.
+
+2006-07-04 Paul Jakma <paul.jakma@sun.com>
+
+       * ospf_nsm.c: (general) Various small cleanups from Andrew's
+         review of last set of patches.
+         (nsm_timer_set) Loading, Full and default can share
+         same code too.
+         (nsm_should_adj) Can just be one big OR.
+         (nsm_twoway_received) Collapse into return statement.
+
+2006-07-02 Paul Jakma <paul.jakma@sun.com>
+
+       * ospf_nsm.c: (nsm_should_adj) New function, just consolidate the
+         10.4 adjacency check from nsm_twoway_received/nsm_adj_ok.
+         (nsm_twoway_received/nsm_adj_ok) Use former.
+         (nsm_clear_adj) clear adjacency related state for a
+         neighbour, needed for some state changes from > ExStart down
+         to ExStart or less, which need not go through nsm_reset_nbr.
+         (nsm_reset_nbr) move code to former. Should be static.
+         (ospf_nsm_event) Don't allow action functions to change
+         next_state if the NSM tables do not indicate next_state is
+         conditional, log warning if one tries - existing code
+         appears fine though.
+         Remove long dead code.
+         Use nsm_clear_adj for state changes that take down
+         adjacencies to TwoWay/ExStart.
+         (nsm_timer_set) ls_req timer should be OFF in early states.
+         Compact several identical sections.
+         Set inactivity timer to OFF for Down, for documentary
+         purposes.
+         (nsm_kill_nbr) Oops, action function shouldn't try return
+         1 for error.
+       * ospf_lsa.c: (ospf_translated_nssa_refresh) CID #13.
+
+2006-06-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+       * ospf_vty.c: (show_ip_ospf_neighbor_id) Should show all instances
+         of that neighbor (since it may appear on multiple interfaces)
+         instead of bailing out after showing the first match.
+
+2006-06-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+       * ospf_nsm.c: (nsm_twoway_received) When deciding whether to
+         change from state Init to ExStart, the test for whether the
+         neighboring router is DR or BDR should be against the
+         local router's notion of DR/BDR, not the neighbor's view.
+
+2006-06-28 Erik Muller <erikm@internap.com>
+
+       * ospfd.h: Define 2 new struct ospf config flags:
+         OSPF_LOG_ADJACENCY_CHANGES and OSPF_LOG_ADJACENCY_DETAIL
+       * ospf_nsm.c (nsm_change_state): Log adjacency changes if
+         requested.
+       * ospf_vty.c (ospf_log_adjacency_changes): New command function
+         to implement ospf subcommand "log-adjacency-changes [detail]".
+         (no_ospf_log_adjacency_changes) Turn off log-adjacency-changes.
+         (show_ip_ospf) Show whether adjacency changes are logged.
+         (ospf_config_write) Add "log-adjacency-changes [detail]" to config.
+         (ospf_vty_init) Add ospf_log_adjacency_changes and
+         no_ospf_log_adjacency_changes.
+
+2006-06-26 Paul Jakma <paul.jakma@sun.com>
+
+       * ospf_abr.c: (general) NSSA translate-candidate ABRs need to
+         be ASBRs, or other routers may rightfully refuse to install
+         translated type-5s LSAs. reported by dendroot@gmail.com.
+         (ospf_abr_nssa_check_status) Detect change in translator
+         state when ABR, and inc/dec redistribute count as when we
+         leave/enter the disabled state - so that translate-enabled
+         ABR properly sets ASBR bit on non-NSSA areas.
+         Run the resulting function through indent to clean it up.
+       * ospf_lsa.c: (router_lsa_flags) For purposes of ASBR bit,
+         NSSA area is same as stub area.
+         
+2006-06-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+       * ospf_snmp.c: (ospfTrapNbrStateChange, ospfTrapIfStateChange) Improve
+         info log message to indicate why the trap is being sent.
+
+2006-06-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+       * ospf_dump.c: (config_write_debug) Fix typo to show debug ospf nsm
+         status properly (not ism status).
+
+2006-06-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+       * ospf_vty.c: ({no_,}ospf_passive_interface) Replace if_lookup_by_name
+         with a call to if_get_by_name -- if the interface does not exist
+         already, it should be created.  And remove the obsolete warning
+         message.
+
+2006-06-15 Paul Jakma <paul.jakma@sun.com>
+
+       * ospf_interface.h: (struct ospf_if_info) Add reference counts
+         for multicast group memberships. Add various macros to help
+         manipulate/check membership state.
+       * ospf_interface.c: (ospf_if_set_multicast) Maintain the
+         ospf_if_info reference counts, and only actually drop
+         memberships if it hits 0, to avoid losing membership when
+         OSPF is disabled on an interface with multiple active OSPF
+         interfaces.
+       * ospf_packet.c: (ospf_{hello,read}) Use the new macros to
+         check/set
+         multicast membership.
+       * ospf_vty.c: (show_ip_ospf_interface_sub) ditto.
+         
+2006-05-31 Paul Jakma <paul.jakma@sun.com>
+
+       * ospf_lsdb.c: (ospf_lsdb_delete) robustify against NULL arguments,
+         print warning.
+       * ospf_lsa.c: (ospf_discard_from_db) ditto.
+         (ospf_maxage_lsa_remover) Check lsa->lsdb for validity, possible
+         mitigation (but not solution) for bug #269.
+
+2006-05-30 Paul Jakma <paul.jakma@sun.com>
+
+       * ospf_packet.c: (ospf_read) Debug message about packets
+         received on unenabled interfaces should be conditional on
+         debug being set.
+
+2006-05-23 Paul Jakma <paul.jakma@sun.com>
+
+       * ospf_vty.c: (general) Replace in-place route redistribution
+         command and help strings with the new auto-generated defines
+         from lib/route_types.h
+
+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.