diff --git a/lib/libospf.h b/lib/libospf.h index c8ada9d3c5..161c7635d8 100644 --- a/lib/libospf.h +++ b/lib/libospf.h @@ -52,6 +52,7 @@ extern "C" { #define OSPF_DEFAULT_DESTINATION 0x00000000 /* 0.0.0.0 */ #define OSPF_INITIAL_SEQUENCE_NUMBER 0x80000001U #define OSPF_MAX_SEQUENCE_NUMBER 0x7fffffffU +#define OSPF_INVALID_SEQUENCE_NUMBER 0x80000000U /* OSPF Interface Types */ #define OSPF_IFTYPE_NONE 0 diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c index a67b6c6c19..92558e3c51 100644 --- a/ospfd/ospf_lsa.c +++ b/ospfd/ospf_lsa.c @@ -3648,6 +3648,7 @@ void ospf_flush_self_originated_lsas_now(struct ospf *ospf) struct ospf_interface *oi; struct ospf_lsa *lsa; struct route_node *rn; + struct ospf_if_params *oip; int need_to_flush_ase = 0; ospf->inst_shutdown = 1; @@ -3680,6 +3681,12 @@ void ospf_flush_self_originated_lsas_now(struct ospf *ospf) ospf_lsa_flush_area(oi->network_lsa_self, area); ospf_lsa_unlock(&oi->network_lsa_self); oi->network_lsa_self = NULL; + + oip = ospf_lookup_if_params( + oi->ifp, oi->address->u.prefix4); + if (oip) + oip->network_lsa_seqnum = htonl( + OSPF_INVALID_SEQUENCE_NUMBER); } if (oi->type != OSPF_IFTYPE_VIRTUALLINK