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__ */ 81