xref: /dpdk/lib/node/rte_node_ip6_api.h (revision 2cfebc3f1046e4166e13b4f906e3ddc1c26c7eeb)
120365d79SSunil Kumar Kori /* SPDX-License-Identifier: BSD-3-Clause
220365d79SSunil Kumar Kori  * Copyright(C) 2023 Marvell.
320365d79SSunil Kumar Kori  */
420365d79SSunil Kumar Kori 
520365d79SSunil Kumar Kori #ifndef __INCLUDE_RTE_NODE_IP6_API_H__
620365d79SSunil Kumar Kori #define __INCLUDE_RTE_NODE_IP6_API_H__
720365d79SSunil Kumar Kori 
820365d79SSunil Kumar Kori /**
920365d79SSunil Kumar Kori  * @file rte_node_ip6_api.h
1020365d79SSunil Kumar Kori  *
1120365d79SSunil Kumar Kori  * @warning
1220365d79SSunil Kumar Kori  * @b EXPERIMENTAL:
1320365d79SSunil Kumar Kori  * All functions in this file may be changed or removed without prior notice.
1420365d79SSunil Kumar Kori  *
1520365d79SSunil Kumar Kori  * This API allows to do control path functions of ip6_* nodes
1620365d79SSunil Kumar Kori  * like ip6_lookup, ip6_rewrite.
1720365d79SSunil Kumar Kori  */
18719834a6SMattias Rönnblom #include <rte_common.h>
19719834a6SMattias Rönnblom #include <rte_compat.h>
20*2cfebc3fSRobin Jarry #include <rte_ip6.h>
21719834a6SMattias Rönnblom 
2220365d79SSunil Kumar Kori #ifdef __cplusplus
2320365d79SSunil Kumar Kori extern "C" {
2420365d79SSunil Kumar Kori #endif
2520365d79SSunil Kumar Kori 
2620365d79SSunil Kumar Kori /**
2720365d79SSunil Kumar Kori  * IP6 lookup next nodes.
2820365d79SSunil Kumar Kori  */
2920365d79SSunil Kumar Kori enum rte_node_ip6_lookup_next {
3020365d79SSunil Kumar Kori 	RTE_NODE_IP6_LOOKUP_NEXT_REWRITE,
3120365d79SSunil Kumar Kori 	/**< Rewrite node. */
3220365d79SSunil Kumar Kori 	RTE_NODE_IP6_LOOKUP_NEXT_PKT_DROP,
3320365d79SSunil Kumar Kori 	/**< Packet drop node. */
3420365d79SSunil Kumar Kori };
3520365d79SSunil Kumar Kori 
3620365d79SSunil Kumar Kori /**
3720365d79SSunil Kumar Kori  * Add IPv6 route to lookup table.
3820365d79SSunil Kumar Kori  *
3920365d79SSunil Kumar Kori  * @param ip
4020365d79SSunil Kumar Kori  *   IPv6 address of route to be added.
4120365d79SSunil Kumar Kori  * @param depth
4220365d79SSunil Kumar Kori  *   Depth of the rule to be added.
4320365d79SSunil Kumar Kori  * @param next_hop
4420365d79SSunil Kumar Kori  *   Next hop id of the rule result to be added.
4520365d79SSunil Kumar Kori  * @param next_node
4620365d79SSunil Kumar Kori  *   Next node to redirect traffic to.
4720365d79SSunil Kumar Kori  *
4820365d79SSunil Kumar Kori  * @return
4920365d79SSunil Kumar Kori  *   0 on success, negative otherwise.
5020365d79SSunil Kumar Kori  */
5120365d79SSunil Kumar Kori __rte_experimental
52*2cfebc3fSRobin Jarry int rte_node_ip6_route_add(const struct rte_ipv6_addr *ip, uint8_t depth, uint16_t next_hop,
5320365d79SSunil Kumar Kori 			   enum rte_node_ip6_lookup_next next_node);
5420365d79SSunil Kumar Kori 
5520365d79SSunil Kumar Kori /**
5620365d79SSunil Kumar Kori  * Add a next hop's rewrite data.
5720365d79SSunil Kumar Kori  *
5820365d79SSunil Kumar Kori  * @param next_hop
5920365d79SSunil Kumar Kori  *   Next hop id to add rewrite data to.
6020365d79SSunil Kumar Kori  * @param rewrite_data
6120365d79SSunil Kumar Kori  *   Rewrite data.
6220365d79SSunil Kumar Kori  * @param rewrite_len
6320365d79SSunil Kumar Kori  *   Length of rewrite data.
6420365d79SSunil Kumar Kori  * @param dst_port
6520365d79SSunil Kumar Kori  *   Destination port to redirect traffic to.
6620365d79SSunil Kumar Kori  *
6720365d79SSunil Kumar Kori  * @return
6820365d79SSunil Kumar Kori  *   0 on success, negative otherwise.
6920365d79SSunil Kumar Kori  */
7020365d79SSunil Kumar Kori __rte_experimental
7120365d79SSunil Kumar Kori int rte_node_ip6_rewrite_add(uint16_t next_hop, uint8_t *rewrite_data,
7220365d79SSunil Kumar Kori 			     uint8_t rewrite_len, uint16_t dst_port);
7320365d79SSunil Kumar Kori 
7420365d79SSunil Kumar Kori #ifdef __cplusplus
7520365d79SSunil Kumar Kori }
7620365d79SSunil Kumar Kori #endif
7720365d79SSunil Kumar Kori 
7820365d79SSunil Kumar Kori #endif /* __INCLUDE_RTE_NODE_IP6_API_H__ */
79