summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/libospf.h1
-rw-r--r--ospfd/ospf_lsa.c7
2 files changed, 8 insertions, 0 deletions
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