DPDK  21.11.8
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_compat.h>
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 struct rte_fib;
27 struct rte_rib;
28 
30 #define RTE_FIB_MAXDEPTH 32
31 
36 };
37 
39 typedef int (*rte_fib_modify_fn_t)(struct rte_fib *fib, uint32_t ip,
40  uint8_t depth, uint64_t next_hop, int op);
42 typedef void (*rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips,
43  uint64_t *next_hops, const unsigned int n);
44 
45 enum rte_fib_op {
46  RTE_FIB_ADD,
47  RTE_FIB_DEL,
48 };
49 
52  RTE_FIB_DIR24_8_1B,
53  RTE_FIB_DIR24_8_2B,
54  RTE_FIB_DIR24_8_4B,
55  RTE_FIB_DIR24_8_8B
56 };
57 
75 };
76 
78 struct rte_fib_conf {
81  uint64_t default_nh;
82  int max_routes;
84  unsigned int rib_ext_sz;
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 struct rte_fib *
107 rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf);
108 
119 struct rte_fib *
120 rte_fib_find_existing(const char *name);
121 
128 void
129 rte_fib_free(struct rte_fib *fib);
130 
145 int
146 rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop);
147 
160 int
161 rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth);
162 
180 int
181 rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips,
182  uint64_t *next_hops, int n);
192 void *
193 rte_fib_get_dp(struct rte_fib *fib);
194 
204 struct rte_rib *
205 rte_fib_get_rib(struct rte_fib *fib);
206 
219 int
220 rte_fib_select_lookup(struct rte_fib *fib, enum rte_fib_lookup_type type);
221 
222 #ifdef __cplusplus
223 }
224 #endif
225 
226 #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:39
struct rte_fib * rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf)
rte_fib_type
Definition: rte_fib.h:33
void * rte_fib_get_dp(struct rte_fib *fib)
unsigned int rib_ext_sz
Definition: rte_fib.h:84
void rte_fib_free(struct rte_fib *fib)
rte_fib_lookup_type
Definition: rte_fib.h:59
uint64_t default_nh
Definition: rte_fib.h:81
struct rte_rib * rte_fib_get_rib(struct rte_fib *fib)
struct rte_fib * rte_fib_find_existing(const char *name)
void(* rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips, uint64_t *next_hops, const unsigned int n)
Definition: rte_fib.h:42
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:51
int rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop)
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)
enum rte_fib_type type
Definition: rte_fib.h:79