DPDK
25.11.0
Toggle main menu visibility
Loading...
Searching...
No Matches
rte_fib6.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_FIB6_H_
7
#define _RTE_FIB6_H_
8
17
18
#include <stdint.h>
19
20
#include <
rte_common.h
>
21
#include <
rte_ip6.h
>
22
#include <
rte_rcu_qsbr.h
>
23
24
#ifdef __cplusplus
25
extern
"C"
{
26
#endif
27
28
#define RTE_FIB6_IPV6_ADDR_SIZE (RTE_DEPRECATED(RTE_FIB6_IPV6_ADDR_SIZE) RTE_IPV6_ADDR_SIZE)
30
#define RTE_FIB6_MAXDEPTH (RTE_DEPRECATED(RTE_FIB6_MAXDEPTH) RTE_IPV6_MAX_DEPTH)
31
32
/* Maximum length of a FIB name. */
33
#define RTE_FIB6_NAMESIZE 64
34
35
struct
rte_fib6;
36
struct
rte_rib6;
37
39
#define RTE_FIB6_RCU_DQ_RECLAIM_MAX 16
41
#define RTE_FIB6_RCU_DQ_RECLAIM_SZ 128
42
44
enum
rte_fib6_qsbr_mode
{
46
RTE_FIB6_QSBR_MODE_DQ
= 0,
48
RTE_FIB6_QSBR_MODE_SYNC
49
};
50
52
enum
rte_fib6_type
{
53
RTE_FIB6_DUMMY
,
54
RTE_FIB6_TRIE
55
};
56
58
typedef
int (*
rte_fib6_modify_fn_t
)(
struct
rte_fib6 *fib,
59
const
struct
rte_ipv6_addr
*ip, uint8_t depth,
60
uint64_t next_hop,
int
op);
62
typedef
void (*
rte_fib6_lookup_fn_t
)(
void
*fib,
63
const
struct
rte_ipv6_addr
*ips,
64
uint64_t *next_hops,
const
unsigned
int
n);
65
66
enum
rte_fib6_op {
67
RTE_FIB6_ADD,
68
RTE_FIB6_DEL,
69
};
70
72
enum
rte_fib_trie_nh_sz
{
73
RTE_FIB6_TRIE_2B = 1,
74
RTE_FIB6_TRIE_4B,
75
RTE_FIB6_TRIE_8B
76
};
77
79
enum
rte_fib6_lookup_type
{
80
RTE_FIB6_LOOKUP_DEFAULT
,
82
RTE_FIB6_LOOKUP_TRIE_SCALAR
,
83
RTE_FIB6_LOOKUP_TRIE_VECTOR_AVX512
84
};
85
87
struct
rte_fib6_conf
{
88
enum
rte_fib6_type
type
;
90
uint64_t
default_nh
;
91
int
max_routes;
93
unsigned
int
rib_ext_sz
;
94
union
{
95
struct
{
96
enum
rte_fib_trie_nh_sz
nh_sz;
97
uint32_t num_tbl8;
98
} trie;
99
};
100
};
101
103
struct
rte_fib6_rcu_config
{
105
struct
rte_rcu_qsbr *
v
;
109
enum
rte_fib6_qsbr_mode
mode
;
113
uint32_t
dq_size
;
115
uint32_t
reclaim_thd
;
119
uint32_t
reclaim_max
;
120
};
121
129
void
130
rte_fib6_free
(
struct
rte_fib6 *fib);
131
145
struct
rte_fib6 *
146
rte_fib6_create
(
const
char
*name,
int
socket_id,
struct
rte_fib6_conf
*conf)
147
__rte_malloc
__rte_dealloc
(
rte_fib6_free
, 1);
148
159
struct
rte_fib6 *
160
rte_fib6_find_existing
(
const
char
*name);
161
176
int
177
rte_fib6_add
(
struct
rte_fib6 *fib,
const
struct
rte_ipv6_addr
*ip,
178
uint8_t depth, uint64_t next_hop);
179
192
int
193
rte_fib6_delete
(
struct
rte_fib6 *fib,
194
const
struct
rte_ipv6_addr
*ip, uint8_t depth);
195
213
int
214
rte_fib6_lookup_bulk
(
struct
rte_fib6 *fib,
215
const
struct
rte_ipv6_addr
*ips,
216
uint64_t *next_hops,
int
n);
217
227
void
*
228
rte_fib6_get_dp
(
struct
rte_fib6 *fib);
229
239
struct
rte_rib6 *
240
rte_fib6_get_rib
(
struct
rte_fib6 *fib);
241
254
int
255
rte_fib6_select_lookup
(
struct
rte_fib6 *fib,
enum
rte_fib6_lookup_type
type);
256
271
__rte_experimental
272
int
273
rte_fib6_rcu_qsbr_add
(
struct
rte_fib6 *fib,
struct
rte_fib6_rcu_config
*cfg);
274
275
#ifdef __cplusplus
276
}
277
#endif
278
279
#endif
/* _RTE_FIB6_H_ */
rte_common.h
__rte_dealloc
#define __rte_dealloc(dealloc, argno)
Definition
rte_common.h:339
__rte_malloc
#define __rte_malloc
Definition
rte_common.h:328
rte_fib6_lookup_type
rte_fib6_lookup_type
Definition
rte_fib6.h:79
RTE_FIB6_LOOKUP_TRIE_VECTOR_AVX512
@ RTE_FIB6_LOOKUP_TRIE_VECTOR_AVX512
Definition
rte_fib6.h:83
RTE_FIB6_LOOKUP_DEFAULT
@ RTE_FIB6_LOOKUP_DEFAULT
Definition
rte_fib6.h:80
RTE_FIB6_LOOKUP_TRIE_SCALAR
@ RTE_FIB6_LOOKUP_TRIE_SCALAR
Definition
rte_fib6.h:82
rte_fib6_lookup_bulk
int rte_fib6_lookup_bulk(struct rte_fib6 *fib, const struct rte_ipv6_addr *ips, uint64_t *next_hops, int n)
rte_fib6_get_rib
struct rte_rib6 * rte_fib6_get_rib(struct rte_fib6 *fib)
rte_fib6_type
rte_fib6_type
Definition
rte_fib6.h:52
RTE_FIB6_TRIE
@ RTE_FIB6_TRIE
Definition
rte_fib6.h:54
RTE_FIB6_DUMMY
@ RTE_FIB6_DUMMY
Definition
rte_fib6.h:53
rte_fib6_find_existing
struct rte_fib6 struct rte_fib6 * rte_fib6_find_existing(const char *name)
rte_fib6_delete
int rte_fib6_delete(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip, uint8_t depth)
rte_fib6_qsbr_mode
rte_fib6_qsbr_mode
Definition
rte_fib6.h:44
RTE_FIB6_QSBR_MODE_DQ
@ RTE_FIB6_QSBR_MODE_DQ
Definition
rte_fib6.h:46
RTE_FIB6_QSBR_MODE_SYNC
@ RTE_FIB6_QSBR_MODE_SYNC
Definition
rte_fib6.h:48
rte_fib6_get_dp
void * rte_fib6_get_dp(struct rte_fib6 *fib)
rte_fib6_rcu_qsbr_add
__rte_experimental int rte_fib6_rcu_qsbr_add(struct rte_fib6 *fib, struct rte_fib6_rcu_config *cfg)
rte_fib6_select_lookup
int rte_fib6_select_lookup(struct rte_fib6 *fib, enum rte_fib6_lookup_type type)
rte_fib_trie_nh_sz
rte_fib_trie_nh_sz
Definition
rte_fib6.h:72
rte_fib6_free
void rte_fib6_free(struct rte_fib6 *fib)
rte_fib6_add
int rte_fib6_add(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip, uint8_t depth, uint64_t next_hop)
rte_fib6_modify_fn_t
int(* rte_fib6_modify_fn_t)(struct rte_fib6 *fib, const struct rte_ipv6_addr *ip, uint8_t depth, uint64_t next_hop, int op)
Definition
rte_fib6.h:58
rte_fib6_create
struct rte_fib6 * rte_fib6_create(const char *name, int socket_id, struct rte_fib6_conf *conf) __rte_malloc __rte_dealloc(rte_fib6_free
rte_fib6_lookup_fn_t
void(* rte_fib6_lookup_fn_t)(void *fib, const struct rte_ipv6_addr *ips, uint64_t *next_hops, const unsigned int n)
Definition
rte_fib6.h:62
rte_ip6.h
rte_rcu_qsbr.h
rte_fib6_conf
Definition
rte_fib6.h:87
rte_fib6_conf::type
enum rte_fib6_type type
Definition
rte_fib6.h:88
rte_fib6_conf::default_nh
uint64_t default_nh
Definition
rte_fib6.h:90
rte_fib6_conf::rib_ext_sz
unsigned int rib_ext_sz
Definition
rte_fib6.h:93
rte_fib6_rcu_config
Definition
rte_fib6.h:103
rte_fib6_rcu_config::v
struct rte_rcu_qsbr * v
Definition
rte_fib6.h:105
rte_fib6_rcu_config::mode
enum rte_fib6_qsbr_mode mode
Definition
rte_fib6.h:109
rte_fib6_rcu_config::reclaim_max
uint32_t reclaim_max
Definition
rte_fib6.h:119
rte_fib6_rcu_config::reclaim_thd
uint32_t reclaim_thd
Definition
rte_fib6.h:115
rte_fib6_rcu_config::dq_size
uint32_t dq_size
Definition
rte_fib6.h:113
rte_ipv6_addr
Definition
rte_ip6.h:53
lib
fib
rte_fib6.h
Generated by
1.17.0