DPDK  19.11.14
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  RTE_FIB_TYPE_MAX
41 };
42 
44 typedef int (*rte_fib_modify_fn_t)(struct rte_fib *fib, uint32_t ip,
45  uint8_t depth, uint64_t next_hop, int op);
47 typedef void (*rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips,
48  uint64_t *next_hops, const unsigned int n);
49 
50 enum rte_fib_op {
51  RTE_FIB_ADD,
52  RTE_FIB_DEL,
53 };
54 
57  RTE_FIB_DIR24_8_1B,
58  RTE_FIB_DIR24_8_2B,
59  RTE_FIB_DIR24_8_4B,
60  RTE_FIB_DIR24_8_8B
61 };
62 
64 struct rte_fib_conf {
67  uint64_t default_nh;
68  int max_routes;
69  union {
70  struct {
71  enum rte_fib_dir24_8_nh_sz nh_sz;
72  uint32_t num_tbl8;
73  } dir24_8;
74  };
75 };
76 
90 __rte_experimental
91 struct rte_fib *
92 rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf);
93 
104 __rte_experimental
105 struct rte_fib *
106 rte_fib_find_existing(const char *name);
107 
116 __rte_experimental
117 void
118 rte_fib_free(struct rte_fib *fib);
119 
134 __rte_experimental
135 int
136 rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop);
137 
150 __rte_experimental
151 int
152 rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth);
153 
171 __rte_experimental
172 int
173 rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips,
174  uint64_t *next_hops, int n);
184 __rte_experimental
185 void *
186 rte_fib_get_dp(struct rte_fib *fib);
187 
197 __rte_experimental
198 struct rte_rib *
199 rte_fib_get_rib(struct rte_fib *fib);
200 
201 #ifdef __cplusplus
202 }
203 #endif
204 
205 #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:44
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)
uint64_t default_nh
Definition: rte_fib.h:67
__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:47
rte_fib_dir24_8_nh_sz
Definition: rte_fib.h:56
enum rte_fib_type type
Definition: rte_fib.h:65