summaryrefslogtreecommitdiffstats
path: root/vnet/vnet/fib/fib_entry.c
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2016-11-10 20:35:14 +0000
committerDamjan Marion <dmarion.lists@gmail.com>2016-11-12 00:06:39 +0000
commitad95b5df2728f9061f8cd8c3d06a41a9c2c943bd (patch)
treedc8933e3b091e0b35988d030511783a533dd0193 /vnet/vnet/fib/fib_entry.c
parentf5179c71449792a059be2b753f4c43ba8c438d71 (diff)
pseudo atomic adjacency updates
When an adjacency changes from incomplete to complete (arp to rewrite) and vice-versa, that update must produce valid behavour w.r.t. the packets that continue to encounter it. Change-Id: Icc2709aff9807c5d24f91ef7649268991ad9a45d Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'vnet/vnet/fib/fib_entry.c')
-rw-r--r--vnet/vnet/fib/fib_entry.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/vnet/vnet/fib/fib_entry.c b/vnet/vnet/fib/fib_entry.c
index 1047c50e1d2..4080b7622d1 100644
--- a/vnet/vnet/fib/fib_entry.c
+++ b/vnet/vnet/fib/fib_entry.c
@@ -393,6 +393,7 @@ fib_entry_back_walk_notify (fib_node_t *node,
if (FIB_NODE_BW_REASON_FLAG_EVALUATE & ctx->fnbw_reason ||
FIB_NODE_BW_REASON_FLAG_ADJ_UPDATE & ctx->fnbw_reason ||
+ FIB_NODE_BW_REASON_FLAG_ADJ_DOWN & ctx->fnbw_reason ||
FIB_NODE_BW_REASON_FLAG_INTERFACE_UP & ctx->fnbw_reason ||
FIB_NODE_BW_REASON_FLAG_INTERFACE_DOWN & ctx->fnbw_reason ||
FIB_NODE_BW_REASON_FLAG_INTERFACE_DELETE & ctx->fnbw_reason)
@@ -411,6 +412,11 @@ fib_entry_back_walk_notify (fib_node_t *node,
ctx->fnbw_reason = FIB_NODE_BW_REASON_FLAG_EVALUATE;
/*
+ * ... and nothing is forced sync from now on.
+ */
+ ctx->fnbw_flags &= ~FIB_NODE_BW_FLAG_FORCE_SYNC;
+
+ /*
* propagate the backwalk further if we haven't already reached the
* maximum depth.
*/