DPDK  24.03.0
rte_lpm6.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2014 Intel Corporation
3  */
4 #ifndef _RTE_LPM6_H_
5 #define _RTE_LPM6_H_
6 
12 #include <stdint.h>
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 
19 #define RTE_LPM6_MAX_DEPTH 128
20 #define RTE_LPM6_IPV6_ADDR_SIZE 16
21 
22 #define RTE_LPM6_NAMESIZE 32
23 
25 struct rte_lpm6;
26 
29  uint32_t max_rules;
30  uint32_t number_tbl8s;
31  int flags;
32 };
33 
53 struct rte_lpm6 *
54 rte_lpm6_create(const char *name, int socket_id,
55  const struct rte_lpm6_config *config);
56 
67 struct rte_lpm6 *
68 rte_lpm6_find_existing(const char *name);
69 
77 void
78 rte_lpm6_free(struct rte_lpm6 *lpm);
79 
94 int
95 rte_lpm6_add(struct rte_lpm6 *lpm, const uint8_t *ip, uint8_t depth,
96  uint32_t next_hop);
97 
113 int
114 rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, const uint8_t *ip, uint8_t depth,
115  uint32_t *next_hop);
116 
129 int
130 rte_lpm6_delete(struct rte_lpm6 *lpm, const uint8_t *ip, uint8_t depth);
131 
146 int
147 rte_lpm6_delete_bulk_func(struct rte_lpm6 *lpm,
148  uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE], uint8_t *depths, unsigned n);
149 
156 void
157 rte_lpm6_delete_all(struct rte_lpm6 *lpm);
158 
171 int
172 rte_lpm6_lookup(const struct rte_lpm6 *lpm, const uint8_t *ip, uint32_t *next_hop);
173 
190 int
191 rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
192  uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
193  int32_t *next_hops, unsigned int n);
194 
195 #ifdef __cplusplus
196 }
197 #endif
198 
199 #endif
int rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm, uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE], int32_t *next_hops, unsigned int n)
uint32_t number_tbl8s
Definition: rte_lpm6.h:30
int rte_lpm6_delete(struct rte_lpm6 *lpm, const uint8_t *ip, uint8_t depth)
int rte_lpm6_lookup(const struct rte_lpm6 *lpm, const uint8_t *ip, uint32_t *next_hop)
int rte_lpm6_add(struct rte_lpm6 *lpm, const uint8_t *ip, uint8_t depth, uint32_t next_hop)
struct rte_lpm6 * rte_lpm6_create(const char *name, int socket_id, const struct rte_lpm6_config *config)
int rte_lpm6_delete_bulk_func(struct rte_lpm6 *lpm, uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE], uint8_t *depths, unsigned n)
int rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, const uint8_t *ip, uint8_t depth, uint32_t *next_hop)
struct rte_lpm6 * rte_lpm6_find_existing(const char *name)
void rte_lpm6_delete_all(struct rte_lpm6 *lpm)
void rte_lpm6_free(struct rte_lpm6 *lpm)
uint32_t max_rules
Definition: rte_lpm6.h:29