DPDK  25.03.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
24 extern "C" {
25 #endif
26 
27 struct rte_fib;
28 struct rte_rib;
29 
31 #define RTE_FIB_MAXDEPTH 32
32 
34 #define RTE_FIB_RCU_DQ_RECLAIM_MAX 16
35 
36 #define RTE_FIB_RCU_DQ_RECLAIM_SZ 128
37 
44 };
45 
50 };
51 
53 typedef int (*rte_fib_modify_fn_t)(struct rte_fib *fib, uint32_t ip,
54  uint8_t depth, uint64_t next_hop, int op);
56 typedef void (*rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips,
57  uint64_t *next_hops, const unsigned int n);
58 
59 enum 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 
96 struct rte_fib_conf {
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 
139 void
140 rte_fib_free(struct rte_fib *fib);
141 
155 struct rte_fib *
156 rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf)
158 
169 struct rte_fib *
170 rte_fib_find_existing(const char *name);
171 
186 int
187 rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop);
188 
201 int
202 rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth);
203 
221 int
222 rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips,
223  uint64_t *next_hops, int n);
233 void *
234 rte_fib_get_dp(struct rte_fib *fib);
235 
245 struct rte_rib *
246 rte_fib_get_rib(struct rte_fib *fib);
247 
260 int
261 rte_fib_select_lookup(struct rte_fib *fib, enum rte_fib_lookup_type type);
262 
279 __rte_experimental
280 int
281 rte_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_ */
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
enum rte_fib_qsbr_mode mode
Definition: rte_fib.h:119
unsigned int flags
Definition: rte_fib.h:109
rte_fib_type
Definition: rte_fib.h:47
uint32_t reclaim_thd
Definition: rte_fib.h:125
void * rte_fib_get_dp(struct rte_fib *fib)
uint32_t dq_size
Definition: rte_fib.h:123
unsigned int rib_ext_sz
Definition: rte_fib.h:102
void rte_fib_free(struct rte_fib *fib)
__rte_experimental int rte_fib_rcu_qsbr_add(struct rte_fib *fib, struct rte_fib_rcu_config *cfg)
rte_fib_lookup_type
Definition: rte_fib.h:73
rte_fib_qsbr_mode
Definition: rte_fib.h:39
uint64_t default_nh
Definition: rte_fib.h:99
#define __rte_dealloc(dealloc, argno)
Definition: rte_common.h:305
#define __rte_malloc
Definition: rte_common.h:294
struct rte_rib * rte_fib_get_rib(struct rte_fib *fib)
struct rte_rcu_qsbr * v
Definition: rte_fib.h:115
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
int rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips, uint64_t *next_hops, int n)
rte_fib_dir24_8_nh_sz
Definition: rte_fib.h:65
struct rte_fib * rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf) __rte_malloc __rte_dealloc(rte_fib_free
int rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop)
uint32_t reclaim_max
Definition: rte_fib.h:129
int rte_fib_select_lookup(struct rte_fib *fib, enum rte_fib_lookup_type type)
int rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth)
struct rte_fib struct rte_fib * rte_fib_find_existing(const char *name)
enum rte_fib_type type
Definition: rte_fib.h:97