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