mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-06 16:20:08 +00:00
[ospfd] Do not use stale Network/Router LSAs
Should a self originated Network/Router LSA with higher LS seq. nr. be received we should flood and install it in the LSDB but we cannot use it for our internal calculations as it is stale. Reorginate an new LSA to replace the stale one as soon as possible.
This commit is contained in:
parent
650f76c2e1
commit
bd24624252
@ -133,10 +133,8 @@ ospf_process_self_originated_lsa (struct ospf *ospf,
|
||||
{
|
||||
case OSPF_ROUTER_LSA:
|
||||
/* Originate a new instance and schedule flooding */
|
||||
/* It shouldn't be necessary, but anyway */
|
||||
ospf_lsa_unlock (&area->router_lsa_self);
|
||||
area->router_lsa_self = ospf_lsa_lock (new);
|
||||
|
||||
if (area->router_lsa_self)
|
||||
area->router_lsa_self->data->ls_seqnum = new->data->ls_seqnum;
|
||||
ospf_router_lsa_timer_add (area);
|
||||
return;
|
||||
case OSPF_NETWORK_LSA:
|
||||
@ -170,9 +168,8 @@ ospf_process_self_originated_lsa (struct ospf *ospf,
|
||||
}
|
||||
#endif /* HAVE_OPAQUE_LSA */
|
||||
|
||||
ospf_lsa_unlock (&oi->network_lsa_self);
|
||||
oi->network_lsa_self = ospf_lsa_lock (new);
|
||||
|
||||
if (oi->network_lsa_self)
|
||||
oi->network_lsa_self->data->ls_seqnum = new->data->ls_seqnum;
|
||||
/* Schedule network-LSA origination. */
|
||||
ospf_network_lsa_timer_add (oi);
|
||||
return;
|
||||
|
@ -2451,7 +2451,10 @@ ospf_router_lsa_install (struct ospf *ospf,
|
||||
if (rt_recalc)
|
||||
ospf_spf_calculate_schedule (ospf);
|
||||
|
||||
if (IS_LSA_SELF (new))
|
||||
/* Only install LSA if it is originated/refreshed by us.
|
||||
* If LSA was received by flooding, the RECEIVED flag is set so do
|
||||
* not link the LSA */
|
||||
if (IS_LSA_SELF (new) && !CHECK_FLAG (new->flags, OSPF_LSA_RECEIVED))
|
||||
{
|
||||
/* Set router-LSA refresh timer. */
|
||||
OSPF_TIMER_OFF (area->t_router_lsa_self);
|
||||
|
Loading…
Reference in New Issue
Block a user