DPDK  20.05.0-rc0
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 
15 #include <rte_compat.h>
16 
17 struct rte_fib;
18 struct rte_rib;
19 
21 #define RTE_FIB_MAXDEPTH 32
22 
27  RTE_FIB_TYPE_MAX
28 };
29 
31 typedef int (*rte_fib_modify_fn_t)(struct rte_fib *fib, uint32_t ip,
32  uint8_t depth, uint64_t next_hop, int op);
34 typedef void (*rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips,
35  uint64_t *next_hops, const unsigned int n);
36 
37 enum rte_fib_op {
38  RTE_FIB_ADD,
39  RTE_FIB_DEL,
40 };
41 
44  RTE_FIB_DIR24_8_1B,
45  RTE_FIB_DIR24_8_2B,
46  RTE_FIB_DIR24_8_4B,
47  RTE_FIB_DIR24_8_8B
48 };
49 
51 struct rte_fib_conf {
54  uint64_t default_nh;
55  int max_routes;
56  union {
57  struct {
58  enum rte_fib_dir24_8_nh_sz nh_sz;
59  uint32_t num_tbl8;
60  } dir24_8;
61  };
62 };
63 
77 __rte_experimental
78 struct rte_fib *
79 rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf);
80 
91 __rte_experimental
92 struct rte_fib *
93 rte_fib_find_existing(const char *name);
94 
103 __rte_experimental
104 void
105 rte_fib_free(struct rte_fib *fib);
106 
121 __rte_experimental
122 int
123 rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop);
124 
137 __rte_experimental
138 int
139 rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth);
140 
158 __rte_experimental
159 int
160 rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips,
161  uint64_t *next_hops, int n);
171 __rte_experimental
172 void *
173 rte_fib_get_dp(struct rte_fib *fib);
174 
184 __rte_experimental
185 struct rte_rib *
186 rte_fib_get_rib(struct rte_fib *fib);
187 
188 #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:31
rte_fib_type
Definition: rte_fib.h:24
__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)
uint64_t default_nh
Definition: rte_fib.h:54
__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_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:34
rte_fib_dir24_8_nh_sz
Definition: rte_fib.h:43
enum rte_fib_type type
Definition: rte_fib.h:52