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