diff options
Diffstat (limited to 'src/vnet/dpo')
-rw-r--r-- | src/vnet/dpo/dpo.c | 15 | ||||
-rw-r--r-- | src/vnet/dpo/dpo.h | 25 |
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 |