1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(C) 2023 Marvell. 3 */ 4 5 #ifndef __INCLUDE_RTE_NODE_IP6_API_H__ 6 #define __INCLUDE_RTE_NODE_IP6_API_H__ 7 8 /** 9 * @file rte_node_ip6_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 ip6_* nodes 16 * like ip6_lookup, ip6_rewrite. 17 */ 18 #ifdef __cplusplus 19 extern "C" { 20 #endif 21 22 #include <rte_common.h> 23 #include <rte_compat.h> 24 25 /** 26 * IP6 lookup next nodes. 27 */ 28 enum rte_node_ip6_lookup_next { 29 RTE_NODE_IP6_LOOKUP_NEXT_REWRITE, 30 /**< Rewrite node. */ 31 RTE_NODE_IP6_LOOKUP_NEXT_PKT_DROP, 32 /**< Packet drop node. */ 33 RTE_NODE_IP6_LOOKUP_NEXT_MAX, 34 /**< Number of next nodes of lookup node. */ 35 }; 36 37 /** 38 * Add IPv6 route to lookup table. 39 * 40 * @param ip 41 * IPv6 address of route to be added. 42 * @param depth 43 * Depth of the rule to be added. 44 * @param next_hop 45 * Next hop id of the rule result to be added. 46 * @param next_node 47 * Next node to redirect traffic to. 48 * 49 * @return 50 * 0 on success, negative otherwise. 51 */ 52 __rte_experimental 53 int rte_node_ip6_route_add(const uint8_t *ip, uint8_t depth, uint16_t next_hop, 54 enum rte_node_ip6_lookup_next next_node); 55 56 /** 57 * Add a next hop's rewrite data. 58 * 59 * @param next_hop 60 * Next hop id to add rewrite data to. 61 * @param rewrite_data 62 * Rewrite data. 63 * @param rewrite_len 64 * Length of rewrite data. 65 * @param dst_port 66 * Destination port to redirect traffic to. 67 * 68 * @return 69 * 0 on success, negative otherwise. 70 */ 71 __rte_experimental 72 int rte_node_ip6_rewrite_add(uint16_t next_hop, uint8_t *rewrite_data, 73 uint8_t rewrite_len, uint16_t dst_port); 74 75 #ifdef __cplusplus 76 } 77 #endif 78 79 #endif /* __INCLUDE_RTE_NODE_IP6_API_H__ */ 80