summaryrefslogtreecommitdiffstats
path: root/ospf6d
diff options
context:
space:
mode:
authorDinesh Dutt <ddutt@cumulusnetworks.com>2013-08-25 03:03:39 +0000
committerDavid Lamparter <equinox@opensourcerouting.org>2013-11-07 18:15:43 -0800
commit7cf997226e86d98839f1e7872ca98b023ffea98e (patch)
tree4407f125907aa5ac7a524d7bf71b9e0028f4c6cb /ospf6d
parent01879114f73adaf1cd4c9f5e7ae1550b72ff9ca9 (diff)
downloadquagga-7cf997226e86d98839f1e7872ca98b023ffea98e.tar.bz2
quagga-7cf997226e86d98839f1e7872ca98b023ffea98e.tar.xz
ospf6d: don't send LSAck on an interface if we've flooded the LSU out that i/f
If we flood an LSA back out the same interface we received it from, don't send an LSAck out that interface for that LSA. This is as per RFC 2328, section 13.5 Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Reviewed-by: Pradosh Mohapatra <pmohapat at cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'ospf6d')
-rw-r--r--ospf6d/ospf6_flood.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/ospf6d/ospf6_flood.c b/ospf6d/ospf6_flood.c
index 7f6b2850..dc9ecbfb 100644
--- a/ospf6d/ospf6_flood.c
+++ b/ospf6d/ospf6_flood.c
@@ -387,11 +387,15 @@ ospf6_flood_interface (struct ospf6_neighbor *from,
/* (4) If the new LSA was received on this interface,
and the interface state is BDR, examin next interface */
- if (from && from->ospf6_if == oi && oi->state == OSPF6_INTERFACE_BDR)
+ if (from && from->ospf6_if == oi)
{
- if (is_debug)
- zlog_debug ("Received is from the I/F, itself BDR, next interface");
- return;
+ if (oi->state == OSPF6_INTERFACE_BDR)
+ {
+ if (is_debug)
+ zlog_debug ("Received is from the I/F, itself BDR, next interface");
+ return;
+ }
+ SET_FLAG(lsa->flag, OSPF6_LSA_FLOODBACK);
}
/* (5) flood the LSA out the interface. */
@@ -560,15 +564,6 @@ ospf6_acknowledge_lsa_bdrouter (struct ospf6_lsa *lsa, int ismore_recent,
assert (from && from->ospf6_if);
oi = from->ospf6_if;
- /* LSA has been flood back out receiving interface.
- No acknowledgement sent. */
- if (CHECK_FLAG (lsa->flag, OSPF6_LSA_FLOODBACK))
- {
- if (is_debug)
- zlog_debug ("No acknowledgement (BDR & FloodBack)");
- return;
- }
-
/* LSA is more recent than database copy, but was not flooded
back out receiving interface. Delayed acknowledgement sent
if advertisement received from Designated Router,