DPDK  21.11.7
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 
17 #include <stdlib.h>
18 #include <stdint.h>
19 
20 #include <rte_compat.h>
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
29 enum {
34 };
35 
36 struct rte_rib;
37 struct rte_rib_node;
38 
40 struct rte_rib_conf {
46  size_t ext_sz;
47  /* size of rte_rib_node's pool */
48  int max_nodes;
49 };
50 
60 static inline uint32_t
61 rte_rib_depth_to_mask(uint8_t depth)
62 {
63  return (uint32_t)(UINT64_MAX << (32 - depth));
64 }
65 
77 struct rte_rib_node *
78 rte_rib_lookup(struct rte_rib *rib, uint32_t ip);
79 
90 struct rte_rib_node *
91 rte_rib_lookup_parent(struct rte_rib_node *ent);
92 
106 struct rte_rib_node *
107 rte_rib_lookup_exact(struct rte_rib *rib, uint32_t ip, uint8_t depth);
108 
132 struct rte_rib_node *
133 rte_rib_get_nxt(struct rte_rib *rib, uint32_t ip, uint8_t depth,
134  struct rte_rib_node *last, int flag);
135 
146 void
147 rte_rib_remove(struct rte_rib *rib, uint32_t ip, uint8_t depth);
148 
162 struct rte_rib_node *
163 rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth);
164 
176 int
177 rte_rib_get_ip(const struct rte_rib_node *node, uint32_t *ip);
178 
190 int
191 rte_rib_get_depth(const struct rte_rib_node *node, uint8_t *depth);
192 
203 void *
204 rte_rib_get_ext(struct rte_rib_node *node);
205 
217 int
218 rte_rib_get_nh(const struct rte_rib_node *node, uint64_t *nh);
219 
231 int
232 rte_rib_set_nh(struct rte_rib_node *node, uint64_t nh);
233 
247 struct rte_rib *
248 rte_rib_create(const char *name, int socket_id,
249  const struct rte_rib_conf *conf);
250 
260 struct rte_rib *
261 rte_rib_find_existing(const char *name);
262 
269 void
270 rte_rib_free(struct rte_rib *rib);
271 
272 #ifdef __cplusplus
273 }
274 #endif
275 
276 #endif /* _RTE_RIB_H_ */
int rte_rib_get_nh(const struct rte_rib_node *node, uint64_t *nh)
int rte_rib_set_nh(struct rte_rib_node *node, uint64_t nh)
void * rte_rib_get_ext(struct rte_rib_node *node)
void rte_rib_remove(struct rte_rib *rib, uint32_t ip, uint8_t depth)
struct rte_rib * rte_rib_find_existing(const char *name)
struct rte_rib_node * rte_rib_lookup_parent(struct rte_rib_node *ent)
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)
struct rte_rib_node * rte_rib_lookup_exact(struct rte_rib *rib, uint32_t ip, uint8_t depth)
struct rte_rib_node * rte_rib_lookup(struct rte_rib *rib, uint32_t ip)
int rte_rib_get_depth(const struct rte_rib_node *node, uint8_t *depth)
struct rte_rib * rte_rib_create(const char *name, int socket_id, const struct rte_rib_conf *conf)
size_t ext_sz
Definition: rte_rib.h:46
int rte_rib_get_ip(const struct rte_rib_node *node, uint32_t *ip)
static uint32_t rte_rib_depth_to_mask(uint8_t depth)
Definition: rte_rib.h:61
struct rte_rib_node * rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth)
void rte_rib_free(struct rte_rib *rib)