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