summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVijayabhaskar Katamreddy <vkatamre@cisco.com>2018-03-14 14:04:27 -0700
committerNeale Ranns <nranns@cisco.com>2018-03-15 13:16:39 +0000
commitb9ca61be1af028a3c7d7004373e8447cae766132 (patch)
tree04ff7b815a5e061a8ceb0983c2785de58ae42d94
parent92b44ea50a21b878b35f081bfc90c06b799c0c03 (diff)
Add a helper function to fetch vlib node index for already stacked dpos
Change-Id: Ie07c6f3723312ce88046570dcbe591b72724657b Signed-off-by: Vijayabhaskar Katamreddy <vkatamre@cisco.com>
-rw-r--r--src/vnet/dpo/dpo.c15
-rw-r--r--src/vnet/dpo/dpo.h25
2 files changed, 40 insertions, 0 deletions
diff --git a/src/vnet/dpo/dpo.c b/src/vnet/dpo/dpo.c
index f4e7fab7bcd..85f2c5d3622 100644
--- a/src/vnet/dpo/dpo.c
+++ b/src/vnet/dpo/dpo.c
@@ -433,6 +433,21 @@ dpo_get_next_node (dpo_type_t child_type,
}
/**
+ * @brief return already stacked up next node index for a given
+ * child_type/child_proto and parent_type/patent_proto.
+ * The VLIB graph arc used is taken from the parent and child types
+ * passed.
+ */
+u32
+dpo_get_next_node_by_type_and_proto (dpo_type_t child_type,
+ dpo_proto_t child_proto,
+ dpo_type_t parent_type,
+ dpo_proto_t parent_proto)
+{
+ return (dpo_edges[child_type][child_proto][parent_type][parent_proto]);
+}
+
+/**
* @brief Stack one DPO object on another, and thus establish a child parent
* relationship. The VLIB graph arc used is taken from the parent and child types
* passed.
diff --git a/src/vnet/dpo/dpo.h b/src/vnet/dpo/dpo.h
index 4d484786fba..21a2ae2a33d 100644
--- a/src/vnet/dpo/dpo.h
+++ b/src/vnet/dpo/dpo.h
@@ -446,4 +446,29 @@ extern void dpo_register(dpo_type_t type,
extern dpo_type_t dpo_register_new_type(const dpo_vft_t *vft,
const char * const * const * nodes);
+/**
+ * @brief Return already stacked up next node index for a given
+ * child_type/child_proto and parent_type/patent_proto.
+ * The VLIB graph arc used is taken from the parent and child types
+ * passed.
+ *
+ * @param child_type
+ * Child DPO type.
+ *
+ * @param child_proto
+ * Child DPO proto
+ *
+ * @param parent_type
+ * Parent DPO type.
+ *
+ * @param parent_proto
+ * Parent DPO proto
+ *
+ * @return The VLIB Graph node index
+ */
+extern u32
+dpo_get_next_node_by_type_and_proto (dpo_type_t child_type,
+ dpo_proto_t child_proto,
+ dpo_type_t parent_type,
+ dpo_proto_t parent_proto);
#endif