case 3.1 ospf_router_lsa_originate |--ospf_router_lsa_body_set |--router_lsa_link_set |--lsa_link_broadcast_set A router originates a router-LSA for each area that it belongs to. Such an LSA describes the collected states of the router’s links to the area. case 3.2 nsm_inactivity_timer |--nsm_kill_nbr |--nsm_change_state(NSM_Full-->NSM_Down) |--ospf_router_lsa_timer_add |--OSPF_ISM_EVENT_EXECUTE (ISM_NeighborChange) case 3.3 see case 3.1 case 3.4 Part A ism_change_state(ISM_Waiting-->ISM_DR) |--ospf_network_lsa_timer_add |--ospf_network_lsa_originate |--ospf_network_lsa_new |-- if (oi->full_nbrs == 0)return NULL; Part B nsm_change_state(NSM_Loading-->NSM_Full) |--ospf_network_lsa_timer_add case 3.5 nsm_change_state(NSM_Loading-->NSM_Full or NSM_Full-->NSM_Down) |--ospf_network_lsa_timer_add |--ospf_network_lsa_originate |--ospf_network_lsa_refresh |--ospf_network_lsa_body_set case 3.6 data structure: ospf{} |--new_rtrs(route_table{}) |--info(list{})--ospf_route new_rtrs is constructed in ospf_spf_calculate |--ospf_intra_add_router
originate/refresh summary lsa ospf_abr_task |--ospf_abr_process_router_rt |--ospf_find_asbr_route |--ospf_abr_announce_rtr |--ospf_abr_announce_rtr_to_area |--ospf_summary_asbr_lsa_refresh remove summary lsa ospf_abr_task |--ospf_abr_unapprove_summaries |--ospf_abr_remove_unapproved_summaries case 3.7 data structure: ospf{} |--new_rtrs(route_table{}) |--info--ospf_route{} ospf_abr_task |--ospf_abr_process_network_rt |--ospf_abr_announce_network |--ospf_abr_announce_network_to_area |--ospf_summary_lsa_refresh case 3.8 ospf_abr_task |--ospf_abr_process_router_rt |--ospf_find_asbr_route |--ospf_abr_announce_rtr if (or->path_type == OSPF_PATH_INTER_AREA) if (!OSPF_IS_AREA_BACKBONE (area)) |--ospf_abr_announce_rtr_to_area |--ospf_summary_asbr_lsa_refresh case 3.9 ospf_abr_task |--ospf_abr_process_network_rt |--ospf_abr_announce_network if (or->path_type == OSPF_PATH_INTER_AREA) if (!OSPF_IS_AREA_BACKBONE (area)) |--ospf_abr_announce_network_to_area |--ospf_summary_lsa_refresh case 3.10 ospf_abr_task |--ospf_abr_process_network_rt |--ospf_abr_announce_network if (or->path_type == OSPF_PATH_INTER_AREA) if (!OSPF_IS_AREA_BACKBONE (area)) |--ospf_abr_announce_network_to_area |--ospf_summary_lsa_refresh
ospf_abr_task |--ospf_abr_unapprove_summaries |--ospf_abr_remove_unapproved_summaries case 3.12 ospf_area{} |--ranges(route_table)--ospf_area_range{} ospf_abr_task |--ospf_abr_prepare_aggregates |--ospf_abr_process_network_rt |--ospf_abr_announce_network |--ospf_abr_update_aggregate |--ospf_abr_announce_aggregates |--ospf_abr_announce_network_to_area ospf_area_range |--ospf_area_range_set |--ospf_area_range_new |--ospf_area_range_add |--ospf_schedule_abr_task case 3.13 ospf_abr_announce_aggregates case 3.14 ospf_abr_announce_aggregates 
|