DPDK  20.05.0-rc0
rte_rib.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_RIB_H_
7 #define _RTE_RIB_H_
8 
14 #include <rte_compat.h>
15 
19 enum {
24 };
25 
26 struct rte_rib;
27 struct rte_rib_node;
28 
30 struct rte_rib_conf {
36  size_t ext_sz;
37  /* size of rte_rib_node's pool */
38  int max_nodes;
39 };
40 
50 static inline uint32_t
51 rte_rib_depth_to_mask(uint8_t depth)
52 {
53  return (uint32_t)(UINT64_MAX << (32 - depth));
54 }
55 
67 __rte_experimental
68 struct rte_rib_node *
69 rte_rib_lookup(struct rte_rib *rib, uint32_t ip);
70 
81 __rte_experimental
82 struct rte_rib_node *
83 rte_rib_lookup_parent(struct rte_rib_node *ent);
84 
98 __rte_experimental
99 struct rte_rib_node *
100 rte_rib_lookup_exact(struct rte_rib *rib, uint32_t ip, uint8_t depth);
101 
125 __rte_experimental
126 struct rte_rib_node *
127 rte_rib_get_nxt(struct rte_rib *rib, uint32_t ip, uint8_t depth,
128  struct rte_rib_node *last, int flag);
129 
140 __rte_experimental
141 void
142 rte_rib_remove(struct rte_rib *rib, uint32_t ip, uint8_t depth);
143 
157 __rte_experimental
158 struct rte_rib_node *
159 rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth);
160 
172 __rte_experimental
173 int
174 rte_rib_get_ip(struct rte_rib_node *node, uint32_t *ip);
175 
187 __rte_experimental
188 int
189 rte_rib_get_depth(struct rte_rib_node *node, uint8_t *depth);
190 
201 __rte_experimental
202 void *
203 rte_rib_get_ext(struct rte_rib_node *node);
204 
216 __rte_experimental
217 int
218 rte_rib_get_nh(struct rte_rib_node *node, uint64_t *nh);
219 
231 __rte_experimental
232 int
233 rte_rib_set_nh(struct rte_rib_node *node, uint64_t nh);
234 
248 __rte_experimental
249 struct rte_rib *
250 rte_rib_create(const char *name, int socket_id, struct rte_rib_conf *conf);
251 
261 __rte_experimental
262 struct rte_rib *
263 rte_rib_find_existing(const char *name);
264 
273 __rte_experimental
274 void
275 rte_rib_free(struct rte_rib *rib);
276 
277 #endif /* _RTE_RIB_H_ */
__rte_experimental void * rte_rib_get_ext(struct rte_rib_node *node)
__rte_experimental int rte_rib_get_ip(struct rte_rib_node *node, uint32_t *ip)
__rte_experimental struct rte_rib_node * rte_rib_get_nxt(struct rte_rib *rib, uint32_t ip, uint8_t depth, struct rte_rib_node *last, int flag)
__rte_experimental int rte_rib_set_nh(struct rte_rib_node *node, uint64_t nh)
__rte_experimental struct rte_rib_node * rte_rib_lookup_exact(struct rte_rib *rib, uint32_t ip, uint8_t depth)
__rte_experimental int rte_rib_get_nh(struct rte_rib_node *node, uint64_t *nh)
__rte_experimental void rte_rib_remove(struct rte_rib *rib, uint32_t ip, uint8_t depth)
__rte_experimental struct rte_rib_node * rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth)
__rte_experimental struct rte_rib * rte_rib_find_existing(const char *name)
__rte_experimental struct rte_rib_node * rte_rib_lookup_parent(struct rte_rib_node *ent)
__rte_experimental struct rte_rib * rte_rib_create(const char *name, int socket_id, struct rte_rib_conf *conf)
size_t ext_sz
Definition: rte_rib.h:36
__rte_experimental struct rte_rib_node * rte_rib_lookup(struct rte_rib *rib, uint32_t ip)
__rte_experimental int rte_rib_get_depth(struct rte_rib_node *node, uint8_t *depth)
static uint32_t rte_rib_depth_to_mask(uint8_t depth)
Definition: rte_rib.h:51
__rte_experimental void rte_rib_free(struct rte_rib *rib)