* for IPv4 Longest Prefix Match
*/
+#include <stdint.h>
+
#include <rte_compat.h>
#ifdef __cplusplus
RTE_FIB_DIR24_8_8B
};
+/** Type of lookup function implementation */
+enum rte_fib_lookup_type {
+ RTE_FIB_LOOKUP_DEFAULT,
+ /**< Selects the best implementation based on the max simd bitwidth */
+ RTE_FIB_LOOKUP_DIR24_8_SCALAR_MACRO,
+ /**< Macro based lookup function */
+ RTE_FIB_LOOKUP_DIR24_8_SCALAR_INLINE,
+ /**<
+ * Lookup implementation using inlined functions
+ * for different next hop sizes
+ */
+ RTE_FIB_LOOKUP_DIR24_8_SCALAR_UNI,
+ /**<
+ * Unified lookup function for all next hop sizes
+ */
+ RTE_FIB_LOOKUP_DIR24_8_VECTOR_AVX512
+ /**< Vector implementation using AVX512 */
+};
+
/** FIB configuration structure */
struct rte_fib_conf {
enum rte_fib_type type; /**< Type of FIB struct */
struct rte_rib *
rte_fib_get_rib(struct rte_fib *fib);
+/**
+ * Set lookup function based on type
+ *
+ * @param fib
+ * FIB object handle
+ * @param type
+ * type of lookup function
+ *
+ * @return
+ * 0 on success
+ * -EINVAL on failure
+ */
+__rte_experimental
+int
+rte_fib_select_lookup(struct rte_fib *fib, enum rte_fib_lookup_type type);
+
#ifdef __cplusplus
}
#endif