doc: add Meson coding style to contributors guide
[dpdk.git] / lib / librte_node / rte_node_ip4_api.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2020 Marvell International Ltd.
3  */
4
5 #ifndef __INCLUDE_RTE_NODE_IP4_API_H__
6 #define __INCLUDE_RTE_NODE_IP4_API_H__
7
8 /**
9  * @file rte_node_ip4_api.h
10  *
11  * @warning
12  * @b EXPERIMENTAL:
13  * All functions in this file may be changed or removed without prior notice.
14  *
15  * This API allows to do control path functions of ip4_* nodes
16  * like ip4_lookup, ip4_rewrite.
17  *
18  */
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23 #include <rte_common.h>
24 #include <rte_compat.h>
25
26 /**
27  * IP4 lookup next nodes.
28  */
29 enum rte_node_ip4_lookup_next {
30         RTE_NODE_IP4_LOOKUP_NEXT_REWRITE,
31         /**< Rewrite node. */
32         RTE_NODE_IP4_LOOKUP_NEXT_PKT_DROP,
33         /**< Packet drop node. */
34         RTE_NODE_IP4_LOOKUP_NEXT_MAX,
35         /**< Number of next nodes of lookup node. */
36 };
37
38 /**
39  * Add ipv4 route to lookup table.
40  *
41  * @param ip
42  *   IP address of route to be added.
43  * @param depth
44  *   Depth of the rule to be added.
45  * @param next_hop
46  *   Next hop id of the rule result to be added.
47  * @param next_node
48  *   Next node to redirect traffic to.
49  *
50  * @return
51  *   0 on success, negative otherwise.
52  */
53 __rte_experimental
54 int rte_node_ip4_route_add(uint32_t ip, uint8_t depth, uint16_t next_hop,
55                            enum rte_node_ip4_lookup_next next_node);
56
57 /**
58  * Add a next hop's rewrite data.
59  *
60  * @param next_hop
61  *   Next hop id to add rewrite data to.
62  * @param rewrite_data
63  *   Rewrite data.
64  * @param rewrite_len
65  *   Length of rewrite data.
66  * @param dst_port
67  *   Destination port to redirect traffic to.
68  *
69  * @return
70  *   0 on success, negative otherwise.
71  */
72 __rte_experimental
73 int rte_node_ip4_rewrite_add(uint16_t next_hop, uint8_t *rewrite_data,
74                              uint8_t rewrite_len, uint16_t dst_port);
75
76 #ifdef __cplusplus
77 }
78 #endif
79
80 #endif /* __INCLUDE_RTE_NODE_IP4_API_H__ */