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
本文地址:http://com.8s8s.com/it/it31630.htm