DPDK 25.03.0-rc1
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
31#define RTE_FIB_MAXDEPTH 32
32
34#define RTE_FIB_RCU_DQ_RECLAIM_MAX 16
36#define RTE_FIB_RCU_DQ_RECLAIM_SZ 128
37
44};
45
50};
51
53typedef int (*rte_fib_modify_fn_t)(struct rte_fib *fib, uint32_t ip,
54 uint8_t depth, uint64_t next_hop, int op);
56typedef void (*rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips,
57 uint64_t *next_hops, const unsigned int n);
58
59enum rte_fib_op {
60 RTE_FIB_ADD,
61 RTE_FIB_DEL,
62};
63
66 RTE_FIB_DIR24_8_1B,
67 RTE_FIB_DIR24_8_2B,
68 RTE_FIB_DIR24_8_4B,
69 RTE_FIB_DIR24_8_8B
70};
71
89};
90
92#define RTE_FIB_F_LOOKUP_NETWORK_ORDER 1
93#define RTE_FIB_ALLOWED_FLAGS (RTE_FIB_F_LOOKUP_NETWORK_ORDER)
94
99 uint64_t default_nh;
100 int max_routes;
102 unsigned int rib_ext_sz;
103 union {
104 struct {
105 enum rte_fib_dir24_8_nh_sz nh_sz;
106 uint32_t num_tbl8;
107 } dir24_8;
108 };
109 unsigned int flags;
110};
111
115 struct rte_rcu_qsbr *v;
123 uint32_t dq_size;
125 uint32_t reclaim_thd;
129 uint32_t reclaim_max;
130};
131
139void
140rte_fib_free(struct rte_fib *fib);
141
155struct rte_fib *
156rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf)
158
169struct rte_fib *
170rte_fib_find_existing(const char *name);
171
186int
187rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop);
188
201int
202rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth);
203
221int
222rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips,
223 uint64_t *next_hops, int n);
233void *
234rte_fib_get_dp(struct rte_fib *fib);
235
245struct rte_rib *
246rte_fib_get_rib(struct rte_fib *fib);
247
260int
261rte_fib_select_lookup(struct rte_fib *fib, enum rte_fib_lookup_type type);
262
279__rte_experimental
280int
281rte_fib_rcu_qsbr_add(struct rte_fib *fib, struct rte_fib_rcu_config *cfg);
282
283#ifdef __cplusplus
284}
285#endif
286
287#endif /* _RTE_FIB_H_ */
#define __rte_dealloc(dealloc, argno)
Definition: rte_common.h:301
#define __rte_malloc
Definition: rte_common.h:290
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:73
@ RTE_FIB_LOOKUP_DIR24_8_SCALAR_UNI
Definition: rte_fib.h:83
@ RTE_FIB_LOOKUP_DIR24_8_SCALAR_INLINE
Definition: rte_fib.h:78
@ RTE_FIB_LOOKUP_DIR24_8_SCALAR_MACRO
Definition: rte_fib.h:76
@ RTE_FIB_LOOKUP_DEFAULT
Definition: rte_fib.h:74
@ RTE_FIB_LOOKUP_DIR24_8_VECTOR_AVX512
Definition: rte_fib.h:87
void(* rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips, uint64_t *next_hops, const unsigned int n)
Definition: rte_fib.h:56
__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:65
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:53
rte_fib_qsbr_mode
Definition: rte_fib.h:39
@ RTE_FIB_QSBR_MODE_DQ
Definition: rte_fib.h:41
@ RTE_FIB_QSBR_MODE_SYNC
Definition: rte_fib.h:43
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:47
@ RTE_FIB_DUMMY
Definition: rte_fib.h:48
@ RTE_FIB_DIR24_8
Definition: rte_fib.h:49
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:99
unsigned int flags
Definition: rte_fib.h:109
enum rte_fib_type type
Definition: rte_fib.h:97
unsigned int rib_ext_sz
Definition: rte_fib.h:102
struct rte_rcu_qsbr * v
Definition: rte_fib.h:115
enum rte_fib_qsbr_mode mode
Definition: rte_fib.h:119
uint32_t reclaim_max
Definition: rte_fib.h:129
uint32_t reclaim_thd
Definition: rte_fib.h:125
uint32_t dq_size
Definition: rte_fib.h:123