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