aboutsummaryrefslogtreecommitdiffstats
path: root/src/vlib/node.c
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2017-06-29 00:19:08 -0700
committerNeale Ranns <nranns@cisco.com>2017-06-29 00:19:13 -0700
commitc02bd03ddf5eec9e9c79811360685f13e4ba8ee1 (patch)
treec9f3a245464529de69943f30a9699574c4081d7e /src/vlib/node.c
parent25ff2ea3a31e422094f6d91eab46222a29a77c4b (diff)
VPP debug image with worker threads hit assert on adding IP route with traffic (VPP-892)
When stacking DPOs the VLIB graph is also updated to add the edge between the nodes, if this edge does not yet exist. This addition should be done with the workers stopped. Change-Id: I327e4d7d26f0b23eb280f17e4619ff2093ff7940 Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src/vlib/node.c')
-rw-r--r--src/vlib/node.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/vlib/node.c b/src/vlib/node.c
index eecad2747ba..2cda0f06475 100644
--- a/src/vlib/node.c
+++ b/src/vlib/node.c
@@ -151,6 +151,26 @@ vlib_node_runtime_update (vlib_main_t * vm, u32 node_index, u32 next_index)
vlib_worker_thread_barrier_release (vm);
}
+uword
+vlib_node_get_next (vlib_main_t * vm, uword node_index, uword next_node_index)
+{
+ vlib_node_main_t *nm = &vm->node_main;
+ vlib_node_t *node;
+ uword *p;
+
+ node = vec_elt (nm->nodes, node_index);
+
+ /* Runtime has to be initialized. */
+ ASSERT (nm->flags & VLIB_NODE_MAIN_RUNTIME_STARTED);
+
+ if ((p = hash_get (node->next_slot_by_node, next_node_index)))
+ {
+ return p[0];
+ }
+
+ return (~0);
+}
+
/* Add next node to given node in given slot. */
uword
vlib_node_add_next_with_slot (vlib_main_t * vm,