pseudo atomic adjacency updates
[vpp.git] / vnet / vnet / fib / fib_entry.c
index 1047c50..4080b76 100644 (file)
@@ -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)
@@ -410,6 +411,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.