mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-02 20:06:06 +00:00
ospfd, ospf6d: perform GR consistency check only when necessary
The GR code should check for topology changes only upon the receipt of Router-LSAs and Network-LSAs. Other LSAs types don't affect the topology as far as a restarting router is concerned. This optimization reduces unnecessary computations when the restarting router receives thousands of inter-area LSAs or external LSAs while coming back up. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
3d2533ed58
commit
cb1f47c2eb
@ -1105,9 +1105,12 @@ void ospf6_receive_lsa(struct ospf6_neighbor *from,
|
||||
&new->refresh);
|
||||
}
|
||||
|
||||
/* GR: check for network topology change. */
|
||||
struct ospf6 *ospf6 = from->ospf6_if->area->ospf6;
|
||||
struct ospf6_area *area = from->ospf6_if->area;
|
||||
if (ospf6->gr_info.restart_in_progress)
|
||||
if (ospf6->gr_info.restart_in_progress &&
|
||||
(new->header->type == ntohs(OSPF6_LSTYPE_ROUTER) ||
|
||||
new->header->type == ntohs(OSPF6_LSTYPE_NETWORK)))
|
||||
ospf6_gr_check_lsdb_consistency(ospf6, area);
|
||||
|
||||
return;
|
||||
|
@ -2102,6 +2102,14 @@ static void ospf_ls_upd(struct ospf *ospf, struct ip *iph,
|
||||
if (ospf_flood(oi->ospf, nbr, current, lsa)
|
||||
< 0) /* Trap NSSA later. */
|
||||
DISCARD_LSA(lsa, 5);
|
||||
|
||||
/* GR: check for network topology change. */
|
||||
if (ospf->gr_info.restart_in_progress &&
|
||||
((lsa->data->type == OSPF_ROUTER_LSA ||
|
||||
lsa->data->type == OSPF_NETWORK_LSA)))
|
||||
ospf_gr_check_lsdb_consistency(oi->ospf,
|
||||
oi->area);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -2214,9 +2222,6 @@ static void ospf_ls_upd(struct ospf *ospf, struct ip *iph,
|
||||
|
||||
assert(listcount(lsas) == 0);
|
||||
list_delete(&lsas);
|
||||
|
||||
if (ospf->gr_info.restart_in_progress)
|
||||
ospf_gr_check_lsdb_consistency(oi->ospf, oi->area);
|
||||
}
|
||||
|
||||
/* OSPF Link State Acknowledgment message read -- RFC2328 Section 13.7. */
|
||||
|
Loading…
Reference in New Issue
Block a user