* @brief
* A Data-Path Object is an object that represents actions that are
* applied to packets are they are switched through VPP.
- *
+ *
* The DPO is a base class that is specialised by other objects to provide
- * concreate actions
+ * concrete actions
*
* The VLIB graph nodes are graph of types, the DPO graph is a graph of instances.
*/
* the third dimension in dpo_nodes is lost, hence, the edge index from each
* node MUST be the same.
* Including both the child and parent protocol is required to support the
- * case where it changes as the grapth is traversed, most notablly when an
+ * case where it changes as the graph is traversed, most notably when an
* MPLS label is popped.
*
* Note that this array is child type specific, not child instance specific.
static u32 ****dpo_edges;
/**
- * @brief The DPO type value that can be assigend to the next dynamic
+ * @brief The DPO type value that can be assigned to the next dynamic
* type registration.
*/
static dpo_type_t dpo_dynamic = DPO_LAST;
* the destination is written in a single u64 write - hence atomically w.r.t
* any packets inflight.
*/
- *((u64*)dst) = *(u64*)src;
+ *((u64*)dst) = *(u64*)src;
dpo_lock(dst);
- dpo_unlock(&tmp);
+ dpo_unlock(&tmp);
}
int
parent_proto, ~0);
/*
- * if the edge index has not yet been created for this node to node transistion
+ * if the edge index has not yet been created for this node to node transition
*/
if (~0 == dpo_edges[child_type][child_proto][parent_type][parent_proto])
{
dpo_copy(&tmp, parent);
/*
- * get the edge index for the parent to child VLIB graph transisition
+ * get the edge index for the parent to child VLIB graph transition
*/
tmp.dpoi_next_node = edge;
}
}
dpo_stack_i(edge, dpo, parent);
+
+ /* should free this local vector to avoid memory leak */
+ vec_free(parent_indices);
}
static clib_error_t *
return (NULL);
}
-VLIB_INIT_FUNCTION(dpo_module_init);
+/* *INDENT-OFF* */
+VLIB_INIT_FUNCTION(dpo_module_init) =
+{
+ .runs_before = VLIB_INITS ("ip_main_init"),
+};
+/* *INDENT-ON* */
static clib_error_t *
dpo_memory_show (vlib_main_t * vm,