DPDK  20.11.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 <rte_compat.h>
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 struct rte_fib;
29 struct rte_rib;
30 
32 #define RTE_FIB_MAXDEPTH 32
33 
38 };
39 
41 typedef int (*rte_fib_modify_fn_t)(struct rte_fib *fib, uint32_t ip,
42  uint8_t depth, uint64_t next_hop, int op);
44 typedef void (*rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips,
45  uint64_t *next_hops, const unsigned int n);
46 
47 enum rte_fib_op {
48  RTE_FIB_ADD,
49  RTE_FIB_DEL,
50 };
51 
54  RTE_FIB_DIR24_8_1B,
55  RTE_FIB_DIR24_8_2B,
56  RTE_FIB_DIR24_8_4B,
57  RTE_FIB_DIR24_8_8B
58 };
59 
77 };
78 
80 struct rte_fib_conf {
83  uint64_t default_nh;
84  int max_routes;
85  union {
86  struct {
87  enum rte_fib_dir24_8_nh_sz nh_sz;
88  uint32_t num_tbl8;
89  } dir24_8;
90  };
91 };
92 
106 __rte_experimental
107 struct rte_fib *
108 rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf);
109 
120 __rte_experimental
121 struct rte_fib *
122 rte_fib_find_existing(const char *name);
123 
132 __rte_experimental
133 void
134 rte_fib_free(struct rte_fib *fib);
135 
150 __rte_experimental
151 int
152 rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop);
153 
166 __rte_experimental
167 int
168 rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth);
169 
187 __rte_experimental
188 int
189 rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips,
190  uint64_t *next_hops, int n);
200 __rte_experimental
201 void *
202 rte_fib_get_dp(struct rte_fib *fib);
203 
213 __rte_experimental
214 struct rte_rib *
215 rte_fib_get_rib(struct rte_fib *fib);
216 
229 __rte_experimental
230 int
231 rte_fib_select_lookup(struct rte_fib *fib, enum rte_fib_lookup_type type);
232 
233 #ifdef __cplusplus
234 }
235 #endif
236 
237 #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:41
rte_fib_type
Definition: rte_fib.h:35
__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:61
uint64_t default_nh
Definition: rte_fib.h:83
__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:44
rte_fib_dir24_8_nh_sz
Definition: rte_fib.h:53
enum rte_fib_type type
Definition: rte_fib.h:81