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