summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlynne <lynne@voltanet.io>2021-06-11 10:38:42 -0400
committerlynne <lynne@voltanet.io>2021-06-18 11:48:18 -0400
commitc5467a12ea002f4fbedf179e826445d9e3dbd4b8 (patch)
tree6d21479d1076024a5b5c250a2a476ae828ceee37
parent9b1bc4d661381a822d3285b62177c182ede8afcc (diff)
ospf6: Drop LSA with bad seqnumber
In RFC 2328 seqnumber 0x80000000 is reserved and not used. If an LSA is received with seqnumber the LSA is now dropped and a debug error log is printed. Signed-off-by: Lynne Morrison <lynne@voltanet.io>
-rw-r--r--ospf6d/ospf6_flood.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ospf6d/ospf6_flood.c b/ospf6d/ospf6_flood.c
index ac16e53d63..eea5247d0b 100644
--- a/ospf6d/ospf6_flood.c
+++ b/ospf6d/ospf6_flood.c
@@ -811,6 +811,18 @@ void ospf6_receive_lsa(struct ospf6_neighbor *from,
ismore_recent = 1;
assert(from);
+ /* if we receive a LSA with invalid seqnum drop it */
+ if (ntohl(lsa_header->seqnum) - 1 == OSPF_MAX_SEQUENCE_NUMBER) {
+ if (IS_OSPF6_DEBUG_EXAMIN_TYPE(lsa_header->type)) {
+ zlog_debug(
+ "received lsa [%s Id:%pI4 Adv:%pI4] with invalid seqnum 0x%x, ignore",
+ ospf6_lstype_name(lsa_header->type),
+ &lsa_header->id, &lsa_header->adv_router,
+ ntohl(lsa_header->seqnum));
+ }
+ return;
+ }
+
/* make lsa structure for received lsa */
new = ospf6_lsa_create(lsa_header);