DPDK 25.07.0
rte_fib.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2018 Vladimir Medvedkin <medvedkinv@gmail.com>
3 * Copyright(c) 2019 Intel Corporation
4 */
5
6#ifndef _RTE_FIB_H_
7#define _RTE_FIB_H_
8
18#include <stdint.h>
19
20#include <rte_common.h>
21#include <rte_rcu_qsbr.h>
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27struct rte_fib;
28struct rte_rib;
29
30/* Maximum length of a FIB name. */
31#define RTE_FIB_NAMESIZE 64
32
34#define RTE_FIB_MAXDEPTH 32
35
37#define RTE_FIB_RCU_DQ_RECLAIM_MAX 16
39#define RTE_FIB_RCU_DQ_RECLAIM_SZ 128
40
47};
48
53};
54
56typedef int (*rte_fib_modify_fn_t)(struct rte_fib *fib, uint32_t ip,
57 uint8_t depth, uint64_t next_hop, int op);
59typedef void (*rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips,
60 uint64_t *next_hops, const unsigned int n);
61
62enum rte_fib_op {
63 RTE_FIB_ADD,
64 RTE_FIB_DEL,
65};
66
69 RTE_FIB_DIR24_8_1B,
70 RTE_FIB_DIR24_8_2B,
71 RTE_FIB_DIR24_8_4B,
72 RTE_FIB_DIR24_8_8B
73};
74
92};
93
95#define RTE_FIB_F_LOOKUP_NETWORK_ORDER 1
96#define RTE_FIB_ALLOWED_FLAGS (RTE_FIB_F_LOOKUP_NETWORK_ORDER)
97
102 uint64_t default_nh;
103 int max_routes;
105 unsigned int rib_ext_sz;
106 union {
107 struct {
108 enum rte_fib_dir24_8_nh_sz nh_sz;
109 uint32_t num_tbl8;
110 } dir24_8;
111 };
112 unsigned int flags;
113};
114
118 struct rte_rcu_qsbr *v;
126 uint32_t dq_size;
128 uint32_t reclaim_thd;
132 uint32_t reclaim_max;
133};
134
142void
143rte_fib_free(struct rte_fib *fib);
144
158struct rte_fib *
159rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf)
161
172struct rte_fib *
173rte_fib_find_existing(const char *name);
174
189int
190rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop);
191
204int
205rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth);
206
224int
225rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips,
226 uint64_t *next_hops, int n);
236void *
237rte_fib_get_dp(struct rte_fib *fib);
238
248struct rte_rib *
249rte_fib_get_rib(struct rte_fib *fib);
250
263int
264rte_fib_select_lookup(struct rte_fib *fib, enum rte_fib_lookup_type type);
265
282__rte_experimental
283int
284rte_fib_rcu_qsbr_add(struct rte_fib *fib, struct rte_fib_rcu_config *cfg);
285
286#ifdef __cplusplus
287}
288#endif
289
290#endif /* _RTE_FIB_H_ */
#define __rte_dealloc(dealloc, argno)
Definition: rte_common.h:339
#define __rte_malloc
Definition: rte_common.h:328
void * rte_fib_get_dp(struct rte_fib *fib)
int rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth)
rte_fib_lookup_type
Definition: rte_fib.h:76
@ RTE_FIB_LOOKUP_DIR24_8_SCALAR_UNI
Definition: rte_fib.h:86
@ RTE_FIB_LOOKUP_DIR24_8_SCALAR_INLINE
Definition: rte_fib.h:81
@ RTE_FIB_LOOKUP_DIR24_8_SCALAR_MACRO
Definition: rte_fib.h:79
@ RTE_FIB_LOOKUP_DEFAULT
Definition: rte_fib.h:77
@ RTE_FIB_LOOKUP_DIR24_8_VECTOR_AVX512
Definition: rte_fib.h:90
void(* rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips, uint64_t *next_hops, const unsigned int n)
Definition: rte_fib.h:59
__rte_experimental int rte_fib_rcu_qsbr_add(struct rte_fib *fib, struct rte_fib_rcu_config *cfg)
rte_fib_dir24_8_nh_sz
Definition: rte_fib.h:68
struct rte_rib * rte_fib_get_rib(struct rte_fib *fib)
int rte_fib_select_lookup(struct rte_fib *fib, enum rte_fib_lookup_type type)
int(* rte_fib_modify_fn_t)(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop, int op)
Definition: rte_fib.h:56
rte_fib_qsbr_mode
Definition: rte_fib.h:42
@ RTE_FIB_QSBR_MODE_DQ
Definition: rte_fib.h:44
@ RTE_FIB_QSBR_MODE_SYNC
Definition: rte_fib.h:46
struct rte_fib struct rte_fib * rte_fib_find_existing(const char *name)
void rte_fib_free(struct rte_fib *fib)
int rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips, uint64_t *next_hops, int n)
int rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop)
rte_fib_type
Definition: rte_fib.h:50
@ RTE_FIB_DUMMY
Definition: rte_fib.h:51
@ RTE_FIB_DIR24_8
Definition: rte_fib.h:52
struct rte_fib * rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf) __rte_malloc __rte_dealloc(rte_fib_free
uint64_t default_nh
Definition: rte_fib.h:102
unsigned int flags
Definition: rte_fib.h:112
enum rte_fib_type type
Definition: rte_fib.h:100
unsigned int rib_ext_sz
Definition: rte_fib.h:105
struct rte_rcu_qsbr * v
Definition: rte_fib.h:118
enum rte_fib_qsbr_mode mode
Definition: rte_fib.h:122
uint32_t reclaim_max
Definition: rte_fib.h:132
uint32_t reclaim_thd
Definition: rte_fib.h:128
uint32_t dq_size
Definition: rte_fib.h:126