DPDK  20.05.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 
15 #include <rte_compat.h>
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 struct rte_fib;
22 struct rte_rib;
23 
25 #define RTE_FIB_MAXDEPTH 32
26 
31  RTE_FIB_TYPE_MAX
32 };
33 
35 typedef int (*rte_fib_modify_fn_t)(struct rte_fib *fib, uint32_t ip,
36  uint8_t depth, uint64_t next_hop, int op);
38 typedef void (*rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips,
39  uint64_t *next_hops, const unsigned int n);
40 
41 enum rte_fib_op {
42  RTE_FIB_ADD,
43  RTE_FIB_DEL,
44 };
45 
48  RTE_FIB_DIR24_8_1B,
49  RTE_FIB_DIR24_8_2B,
50  RTE_FIB_DIR24_8_4B,
51  RTE_FIB_DIR24_8_8B
52 };
53 
55 struct rte_fib_conf {
58  uint64_t default_nh;
59  int max_routes;
60  union {
61  struct {
62  enum rte_fib_dir24_8_nh_sz nh_sz;
63  uint32_t num_tbl8;
64  } dir24_8;
65  };
66 };
67 
81 __rte_experimental
82 struct rte_fib *
83 rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf);
84 
95 __rte_experimental
96 struct rte_fib *
97 rte_fib_find_existing(const char *name);
98 
107 __rte_experimental
108 void
109 rte_fib_free(struct rte_fib *fib);
110 
125 __rte_experimental
126 int
127 rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop);
128 
141 __rte_experimental
142 int
143 rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth);
144 
162 __rte_experimental
163 int
164 rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips,
165  uint64_t *next_hops, int n);
175 __rte_experimental
176 void *
177 rte_fib_get_dp(struct rte_fib *fib);
178 
188 __rte_experimental
189 struct rte_rib *
190 rte_fib_get_rib(struct rte_fib *fib);
191 
192 #ifdef __cplusplus
193 }
194 #endif
195 
196 #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:35
rte_fib_type
Definition: rte_fib.h:28
__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:58
__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:38
rte_fib_dir24_8_nh_sz
Definition: rte_fib.h:47
enum rte_fib_type type
Definition: rte_fib.h:56