DPDK 26.11.0-rc2
rte_rib6.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_RIB6_H_
7#define _RTE_RIB6_H_
8
17#include <rte_memcpy.h>
18#include <rte_ip6.h>
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
27enum {
32};
33
34struct rte_rib6;
35struct rte_rib6_node;
36
44 size_t ext_sz;
45 /* size of rte_rib6_node's pool */
46 int max_nodes;
47};
48
60struct rte_rib6_node *
61rte_rib6_lookup(struct rte_rib6 *rib,
62 const struct rte_ipv6_addr *ip);
63
74struct rte_rib6_node *
75rte_rib6_lookup_parent(struct rte_rib6_node *ent);
76
90struct rte_rib6_node *
91rte_rib6_lookup_exact(struct rte_rib6 *rib,
92 const struct rte_ipv6_addr *ip, uint8_t depth);
93
117struct rte_rib6_node *
118rte_rib6_get_nxt(struct rte_rib6 *rib,
119 const struct rte_ipv6_addr *ip,
120 uint8_t depth, struct rte_rib6_node *last, int flag);
121
132void
133rte_rib6_remove(struct rte_rib6 *rib,
134 const struct rte_ipv6_addr *ip, uint8_t depth);
135
149struct rte_rib6_node *
150rte_rib6_insert(struct rte_rib6 *rib,
151 const struct rte_ipv6_addr *ip, uint8_t depth);
152
164int
165rte_rib6_get_ip(const struct rte_rib6_node *node,
166 struct rte_ipv6_addr *ip);
167
179int
180rte_rib6_get_depth(const struct rte_rib6_node *node, uint8_t *depth);
181
192void *
193rte_rib6_get_ext(struct rte_rib6_node *node);
194
206int
207rte_rib6_get_nh(const struct rte_rib6_node *node, uint64_t *nh);
208
220int
221rte_rib6_set_nh(struct rte_rib6_node *node, uint64_t nh);
222
230void
231rte_rib6_free(struct rte_rib6 *rib);
232
246struct rte_rib6 *
247rte_rib6_create(const char *name, int socket_id,
248 const struct rte_rib6_conf *conf)
250
260struct rte_rib6 *
261rte_rib6_find_existing(const char *name);
262
263#ifdef __cplusplus
264}
265#endif
266
267#endif /* _RTE_RIB6_H_ */
#define __rte_dealloc(dealloc, argno)
Definition: rte_common.h:367
#define __rte_malloc
Definition: rte_common.h:356
int rte_rib6_get_nh(const struct rte_rib6_node *node, uint64_t *nh)
int rte_rib6_set_nh(struct rte_rib6_node *node, uint64_t nh)
void rte_rib6_remove(struct rte_rib6 *rib, const struct rte_ipv6_addr *ip, uint8_t depth)
struct rte_rib6 * rte_rib6_create(const char *name, int socket_id, const struct rte_rib6_conf *conf) __rte_malloc __rte_dealloc(rte_rib6_free
void * rte_rib6_get_ext(struct rte_rib6_node *node)
struct rte_rib6_node * rte_rib6_lookup_exact(struct rte_rib6 *rib, const struct rte_ipv6_addr *ip, uint8_t depth)
struct rte_rib6_node * rte_rib6_insert(struct rte_rib6 *rib, const struct rte_ipv6_addr *ip, uint8_t depth)
@ RTE_RIB6_GET_NXT_COVER
Definition: rte_rib6.h:31
@ RTE_RIB6_GET_NXT_ALL
Definition: rte_rib6.h:29
struct rte_rib6_node * rte_rib6_lookup_parent(struct rte_rib6_node *ent)
void rte_rib6_free(struct rte_rib6 *rib)
int rte_rib6_get_ip(const struct rte_rib6_node *node, struct rte_ipv6_addr *ip)
struct rte_rib6_node * rte_rib6_lookup(struct rte_rib6 *rib, const struct rte_ipv6_addr *ip)
struct rte_rib6_node * rte_rib6_get_nxt(struct rte_rib6 *rib, const struct rte_ipv6_addr *ip, uint8_t depth, struct rte_rib6_node *last, int flag)
int rte_rib6_get_depth(const struct rte_rib6_node *node, uint8_t *depth)
struct rte_rib6 struct rte_rib6 * rte_rib6_find_existing(const char *name)
size_t ext_sz
Definition: rte_rib6.h:44