xref: /freebsd/sys/contrib/dpdk_rte_lpm/dpdk_lpm6.h (revision 4d846d260e2b9a3d4d0a701462568268cbfe7a5b)
1537d1343SAlexander V. Chernikov /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3537d1343SAlexander V. Chernikov  *
4537d1343SAlexander V. Chernikov  * Copyright (c) 2020 Alexander V. Chernikov
5537d1343SAlexander V. Chernikov  *
6537d1343SAlexander V. Chernikov  * Redistribution and use in source and binary forms, with or without
7537d1343SAlexander V. Chernikov  * modification, are permitted provided that the following conditions
8537d1343SAlexander V. Chernikov  * are met:
9537d1343SAlexander V. Chernikov  * 1. Redistributions of source code must retain the above copyright
10537d1343SAlexander V. Chernikov  *    notice, this list of conditions and the following disclaimer.
11537d1343SAlexander V. Chernikov  * 2. Redistributions in binary form must reproduce the above copyright
12537d1343SAlexander V. Chernikov  *    notice, this list of conditions and the following disclaimer in the
13537d1343SAlexander V. Chernikov  *    documentation and/or other materials provided with the distribution.
14537d1343SAlexander V. Chernikov  *
15537d1343SAlexander V. Chernikov  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16537d1343SAlexander V. Chernikov  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17537d1343SAlexander V. Chernikov  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18537d1343SAlexander V. Chernikov  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19537d1343SAlexander V. Chernikov  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20537d1343SAlexander V. Chernikov  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21537d1343SAlexander V. Chernikov  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22537d1343SAlexander V. Chernikov  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23537d1343SAlexander V. Chernikov  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24537d1343SAlexander V. Chernikov  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25537d1343SAlexander V. Chernikov  * SUCH DAMAGE.
26537d1343SAlexander V. Chernikov  *
27537d1343SAlexander V. Chernikov  * $FreeBSD$
28537d1343SAlexander V. Chernikov  */
29537d1343SAlexander V. Chernikov 
30537d1343SAlexander V. Chernikov /*
31537d1343SAlexander V. Chernikov  * Contains various definitions shared between the parts of a routing subsystem.
32537d1343SAlexander V. Chernikov  *
33537d1343SAlexander V. Chernikov  */
34537d1343SAlexander V. Chernikov 
35537d1343SAlexander V. Chernikov #ifndef	_NETINET6_DPDK_LPM6_H_
36537d1343SAlexander V. Chernikov #define _NETINET6_DPDK_LPM6_H_
37537d1343SAlexander V. Chernikov 
38537d1343SAlexander V. Chernikov /** LPM structure. */
39537d1343SAlexander V. Chernikov struct rte_lpm6;
40537d1343SAlexander V. Chernikov 
41537d1343SAlexander V. Chernikov /** LPM configuration structure. */
42537d1343SAlexander V. Chernikov struct rte_lpm6_config {
43537d1343SAlexander V. Chernikov 	uint32_t max_rules;      /**< Max number of rules. */
44537d1343SAlexander V. Chernikov 	uint32_t number_tbl8s;   /**< Number of tbl8s to allocate. */
45537d1343SAlexander V. Chernikov 	int flags;               /**< This field is currently unused. */
46537d1343SAlexander V. Chernikov };
47537d1343SAlexander V. Chernikov 
48537d1343SAlexander V. Chernikov struct rte_lpm6 *
49537d1343SAlexander V. Chernikov rte_lpm6_create(const char *name, int socket_id,
50537d1343SAlexander V. Chernikov 		const struct rte_lpm6_config *config);
51537d1343SAlexander V. Chernikov void
52537d1343SAlexander V. Chernikov rte_lpm6_free(struct rte_lpm6 *lpm);
53537d1343SAlexander V. Chernikov int
54537d1343SAlexander V. Chernikov rte_lpm6_add(struct rte_lpm6 *lpm, const uint8_t *ip, uint8_t depth,
55537d1343SAlexander V. Chernikov 	     uint32_t next_hop, int is_new_rule);
56537d1343SAlexander V. Chernikov 
57537d1343SAlexander V. Chernikov #endif
58