DPDK  21.08.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 
22 #include <stdint.h>
23 
24 #include <rte_compat.h>
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 struct rte_fib;
31 struct rte_rib;
32 
34 #define RTE_FIB_MAXDEPTH 32
35 
40 };
41 
43 typedef int (*rte_fib_modify_fn_t)(struct rte_fib *fib, uint32_t ip,
44  uint8_t depth, uint64_t next_hop, int op);
46 typedef void (*rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips,
47  uint64_t *next_hops, const unsigned int n);
48 
49 enum rte_fib_op {
50  RTE_FIB_ADD,
51  RTE_FIB_DEL,
52 };
53 
56  RTE_FIB_DIR24_8_1B,
57  RTE_FIB_DIR24_8_2B,
58  RTE_FIB_DIR24_8_4B,
59  RTE_FIB_DIR24_8_8B
60 };
61 
79 };
80 
82 struct rte_fib_conf {
85  uint64_t default_nh;
86  int max_routes;
87  union {
88  struct {
89  enum rte_fib_dir24_8_nh_sz nh_sz;
90  uint32_t num_tbl8;
91  } dir24_8;
92  };
93 };
94 
108 __rte_experimental
109 struct rte_fib *
110 rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf);
111 
122 __rte_experimental
123 struct rte_fib *
124 rte_fib_find_existing(const char *name);
125 
134 __rte_experimental
135 void
136 rte_fib_free(struct rte_fib *fib);
137 
152 __rte_experimental
153 int
154 rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop);
155 
168 __rte_experimental
169 int
170 rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth);
171 
189 __rte_experimental
190 int
191 rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips,
192  uint64_t *next_hops, int n);
202 __rte_experimental
203 void *
204 rte_fib_get_dp(struct rte_fib *fib);
205 
215 __rte_experimental
216 struct rte_rib *
217 rte_fib_get_rib(struct rte_fib *fib);
218 
231 __rte_experimental
232 int
233 rte_fib_select_lookup(struct rte_fib *fib, enum rte_fib_lookup_type type);
234 
235 #ifdef __cplusplus
236 }
237 #endif
238 
239 #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:43
rte_fib_type
Definition: rte_fib.h:37
__rte_experimental void rte_fib_free(struct rte_fib *fib)
__rte_experimental int rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth)
rte_fib_lookup_type
Definition: rte_fib.h:63
uint64_t default_nh
Definition: rte_fib.h:85
__rte_experimental struct rte_rib * rte_fib_get_rib(struct rte_fib *fib)
__rte_experimental struct rte_fib * rte_fib_find_existing(const char *name)
__rte_experimental int rte_fib_select_lookup(struct rte_fib *fib, enum rte_fib_lookup_type type)
__rte_experimental int rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop)
__rte_experimental struct rte_fib * rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf)
__rte_experimental void * rte_fib_get_dp(struct rte_fib *fib)
__rte_experimental int rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips, uint64_t *next_hops, int n)
void(* rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips, uint64_t *next_hops, const unsigned int n)
Definition: rte_fib.h:46
rte_fib_dir24_8_nh_sz
Definition: rte_fib.h:55
enum rte_fib_type type
Definition: rte_fib.h:83