DPDK 21.11.9
|
#include <stddef.h>
#include <stdint.h>
#include <rte_arp.h>
#include <rte_common.h>
#include <rte_ether.h>
#include <rte_icmp.h>
#include <rte_ip.h>
#include <rte_sctp.h>
#include <rte_tcp.h>
#include <rte_udp.h>
#include <rte_vxlan.h>
#include <rte_byteorder.h>
#include <rte_esp.h>
#include <rte_higig.h>
#include <rte_ecpri.h>
#include <rte_bitops.h>
#include <rte_mbuf.h>
#include <rte_mbuf_dyn.h>
#include <rte_meter.h>
#include <rte_gtp.h>
#include <rte_l2tpv2.h>
#include <rte_ppp.h>
Go to the source code of this file.
Macros | |
#define | RTE_FLOW_CONNTRACK_PKT_STATE_VALID RTE_BIT32(0) |
#define | RTE_FLOW_CONNTRACK_PKT_STATE_CHANGED RTE_BIT32(1) |
#define | RTE_FLOW_CONNTRACK_PKT_STATE_INVALID RTE_BIT32(2) |
#define | RTE_FLOW_CONNTRACK_PKT_STATE_DISABLED RTE_BIT32(3) |
#define | RTE_FLOW_CONNTRACK_PKT_STATE_BAD RTE_BIT32(4) |
#define | RTE_FLOW_RESTORE_INFO_TUNNEL RTE_BIT64(0) |
#define | RTE_FLOW_RESTORE_INFO_ENCAPSULATED RTE_BIT64(1) |
#define | RTE_FLOW_RESTORE_INFO_GROUP_ID RTE_BIT64(2) |
Functions | |
__rte_experimental int | rte_flow_dev_dump (uint16_t port_id, struct rte_flow *flow, FILE *file, struct rte_flow_error *error) |
static __rte_experimental int | rte_flow_dynf_metadata_avail (void) |
__rte_experimental int | rte_flow_dynf_metadata_register (void) |
int | rte_flow_validate (uint16_t port_id, const struct rte_flow_attr *attr, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], struct rte_flow_error *error) |
struct rte_flow * | rte_flow_create (uint16_t port_id, const struct rte_flow_attr *attr, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], struct rte_flow_error *error) |
int | rte_flow_destroy (uint16_t port_id, struct rte_flow *flow, struct rte_flow_error *error) |
int | rte_flow_flush (uint16_t port_id, struct rte_flow_error *error) |
int | rte_flow_query (uint16_t port_id, struct rte_flow *flow, const struct rte_flow_action *action, void *data, struct rte_flow_error *error) |
int | rte_flow_isolate (uint16_t port_id, int set, struct rte_flow_error *error) |
int | rte_flow_error_set (struct rte_flow_error *error, int code, enum rte_flow_error_type type, const void *cause, const char *message) |
__rte_deprecated size_t | rte_flow_copy (struct rte_flow_desc *fd, size_t len, const struct rte_flow_attr *attr, const struct rte_flow_item *items, const struct rte_flow_action *actions) |
__rte_experimental int | rte_flow_conv (enum rte_flow_conv_op op, void *dst, size_t size, const void *src, struct rte_flow_error *error) |
__rte_experimental int | rte_flow_get_aged_flows (uint16_t port_id, void **contexts, uint32_t nb_contexts, struct rte_flow_error *error) |
__rte_experimental struct rte_flow_action_handle * | rte_flow_action_handle_create (uint16_t port_id, const struct rte_flow_indir_action_conf *conf, const struct rte_flow_action *action, struct rte_flow_error *error) |
__rte_experimental int | rte_flow_action_handle_destroy (uint16_t port_id, struct rte_flow_action_handle *handle, struct rte_flow_error *error) |
__rte_experimental int | rte_flow_action_handle_update (uint16_t port_id, struct rte_flow_action_handle *handle, const void *update, struct rte_flow_error *error) |
__rte_experimental int | rte_flow_action_handle_query (uint16_t port_id, const struct rte_flow_action_handle *handle, void *data, struct rte_flow_error *error) |
__rte_experimental int | rte_flow_tunnel_decap_set (uint16_t port_id, struct rte_flow_tunnel *tunnel, struct rte_flow_action **actions, uint32_t *num_of_actions, struct rte_flow_error *error) |
__rte_experimental int | rte_flow_tunnel_match (uint16_t port_id, struct rte_flow_tunnel *tunnel, struct rte_flow_item **items, uint32_t *num_of_items, struct rte_flow_error *error) |
__rte_experimental int | rte_flow_get_restore_info (uint16_t port_id, struct rte_mbuf *m, struct rte_flow_restore_info *info, struct rte_flow_error *error) |
__rte_experimental int | rte_flow_tunnel_action_decap_release (uint16_t port_id, struct rte_flow_action *actions, uint32_t num_of_actions, struct rte_flow_error *error) |
__rte_experimental int | rte_flow_tunnel_item_release (uint16_t port_id, struct rte_flow_item *items, uint32_t num_of_items, struct rte_flow_error *error) |
__rte_experimental int | rte_flow_pick_transfer_proxy (uint16_t port_id, uint16_t *proxy_port_id, struct rte_flow_error *error) |
__rte_experimental struct rte_flow_item_flex_handle * | rte_flow_flex_item_create (uint16_t port_id, const struct rte_flow_item_flex_conf *conf, struct rte_flow_error *error) |
__rte_experimental int | rte_flow_flex_item_release (uint16_t port_id, const struct rte_flow_item_flex_handle *handle, struct rte_flow_error *error) |
RTE generic flow API
This interface provides the ability to program packet matching and associated actions in hardware through flow rules.
Definition in file rte_flow.h.
#define RTE_FLOW_CONNTRACK_PKT_STATE_VALID RTE_BIT32(0) |
The packet is valid after conntrack checking.
Definition at line 1859 of file rte_flow.h.
#define RTE_FLOW_CONNTRACK_PKT_STATE_CHANGED RTE_BIT32(1) |
The state of the connection is changed.
Definition at line 1863 of file rte_flow.h.
#define RTE_FLOW_CONNTRACK_PKT_STATE_INVALID RTE_BIT32(2) |
Error is detected on this packet for this connection and an invalid state is set.
Definition at line 1868 of file rte_flow.h.
#define RTE_FLOW_CONNTRACK_PKT_STATE_DISABLED RTE_BIT32(3) |
The HW connection tracking module is disabled. It can be due to application command or an invalid state.
Definition at line 1873 of file rte_flow.h.
#define RTE_FLOW_CONNTRACK_PKT_STATE_BAD RTE_BIT32(4) |
The packet contains some bad field(s) and cannot continue with the conntrack module checking.
Definition at line 1878 of file rte_flow.h.
#define RTE_FLOW_RESTORE_INFO_TUNNEL RTE_BIT64(0) |
Indicate that the packet has a tunnel.
Definition at line 4617 of file rte_flow.h.
#define RTE_FLOW_RESTORE_INFO_ENCAPSULATED RTE_BIT64(1) |
Indicate that the packet has a non decapsulated tunnel header.
Definition at line 4622 of file rte_flow.h.
#define RTE_FLOW_RESTORE_INFO_GROUP_ID RTE_BIT64(2) |
Indicate that the packet has a group_id.
Definition at line 4627 of file rte_flow.h.
enum rte_flow_item_type |
Matching pattern item types.
Pattern items fall in two categories:
See the description of individual types for more information. Those marked with [META] fall into the second category.
Enumerator | |
---|---|
RTE_FLOW_ITEM_TYPE_END | [META] End marker for item lists. Prevents further processing of items, thereby ending the pattern. No associated specification structure. |
RTE_FLOW_ITEM_TYPE_VOID | [META] Used as a placeholder for convenience. It is ignored and simply discarded by PMDs. No associated specification structure. |
RTE_FLOW_ITEM_TYPE_INVERT | [META] Inverted matching, i.e. process packets that do not match the pattern. No associated specification structure. |
RTE_FLOW_ITEM_TYPE_ANY | Matches any protocol in place of the current layer, a single ANY may also stand for several protocol layers. See struct rte_flow_item_any. |
RTE_FLOW_ITEM_TYPE_PF |
[META] Matches traffic originating from (ingress) or going to (egress) the physical function of the current device. No associated specification structure. |
RTE_FLOW_ITEM_TYPE_VF |
[META] Matches traffic originating from (ingress) or going to (egress) a given virtual function of the current device. See struct rte_flow_item_vf. |
RTE_FLOW_ITEM_TYPE_PHY_PORT |
[META] Matches traffic originating from (ingress) or going to (egress) a physical port of the underlying device. See struct rte_flow_item_phy_port. |
RTE_FLOW_ITEM_TYPE_PORT_ID |
[META] Matches traffic originating from (ingress) or going to (egress) a given DPDK port ID. See struct rte_flow_item_port_id. |
RTE_FLOW_ITEM_TYPE_RAW | Matches a byte string of a given length at a given offset. See struct rte_flow_item_raw. |
RTE_FLOW_ITEM_TYPE_ETH | Matches an Ethernet header. See struct rte_flow_item_eth. |
RTE_FLOW_ITEM_TYPE_VLAN | Matches an 802.1Q/ad VLAN tag. See struct rte_flow_item_vlan. |
RTE_FLOW_ITEM_TYPE_IPV4 | Matches an IPv4 header. See struct rte_flow_item_ipv4. |
RTE_FLOW_ITEM_TYPE_IPV6 | Matches an IPv6 header. See struct rte_flow_item_ipv6. |
RTE_FLOW_ITEM_TYPE_ICMP | Matches an ICMP header. See struct rte_flow_item_icmp. |
RTE_FLOW_ITEM_TYPE_UDP | Matches a UDP header. See struct rte_flow_item_udp. |
RTE_FLOW_ITEM_TYPE_TCP | Matches a TCP header. See struct rte_flow_item_tcp. |
RTE_FLOW_ITEM_TYPE_SCTP | Matches a SCTP header. See struct rte_flow_item_sctp. |
RTE_FLOW_ITEM_TYPE_VXLAN | Matches a VXLAN header. See struct rte_flow_item_vxlan. |
RTE_FLOW_ITEM_TYPE_E_TAG | Matches a E_TAG header. See struct rte_flow_item_e_tag. |
RTE_FLOW_ITEM_TYPE_NVGRE | Matches a NVGRE header. See struct rte_flow_item_nvgre. |
RTE_FLOW_ITEM_TYPE_MPLS | Matches a MPLS header. See struct rte_flow_item_mpls. |
RTE_FLOW_ITEM_TYPE_GRE | Matches a GRE header. See struct rte_flow_item_gre. |
RTE_FLOW_ITEM_TYPE_FUZZY | [META] Fuzzy pattern match, expect faster than default. This is for device that support fuzzy matching option. Usually a fuzzy matching is fast but the cost is accuracy. See struct rte_flow_item_fuzzy. |
RTE_FLOW_ITEM_TYPE_GTP | Matches a GTP header. Configure flow for GTP packets. See struct rte_flow_item_gtp. |
RTE_FLOW_ITEM_TYPE_GTPC | Matches a GTP header. Configure flow for GTP-C packets. See struct rte_flow_item_gtp. |
RTE_FLOW_ITEM_TYPE_GTPU | Matches a GTP header. Configure flow for GTP-U packets. See struct rte_flow_item_gtp. |
RTE_FLOW_ITEM_TYPE_ESP | Matches a ESP header. See struct rte_flow_item_esp. |
RTE_FLOW_ITEM_TYPE_GENEVE | Matches a GENEVE header. See struct rte_flow_item_geneve. |
RTE_FLOW_ITEM_TYPE_VXLAN_GPE | Matches a VXLAN-GPE header. See struct rte_flow_item_vxlan_gpe. |
RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4 | Matches an ARP header for Ethernet/IPv4. See struct rte_flow_item_arp_eth_ipv4. |
RTE_FLOW_ITEM_TYPE_IPV6_EXT | Matches the presence of any IPv6 extension header. See struct rte_flow_item_ipv6_ext. |
RTE_FLOW_ITEM_TYPE_ICMP6 | Matches any ICMPv6 header. See struct rte_flow_item_icmp6. |
RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS | Matches an ICMPv6 neighbor discovery solicitation. See struct rte_flow_item_icmp6_nd_ns. |
RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA | Matches an ICMPv6 neighbor discovery advertisement. See struct rte_flow_item_icmp6_nd_na. |
RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT | Matches the presence of any ICMPv6 neighbor discovery option. See struct rte_flow_item_icmp6_nd_opt. |
RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH | Matches an ICMPv6 neighbor discovery source Ethernet link-layer address option. See struct rte_flow_item_icmp6_nd_opt_sla_eth. |
RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH | Matches an ICMPv6 neighbor discovery target Ethernet link-layer address option. See struct rte_flow_item_icmp6_nd_opt_tla_eth. |
RTE_FLOW_ITEM_TYPE_MARK | Matches specified mark field. See struct rte_flow_item_mark. |
RTE_FLOW_ITEM_TYPE_META | [META] Matches a metadata value. See struct rte_flow_item_meta. |
RTE_FLOW_ITEM_TYPE_GRE_KEY | Matches a GRE optional key field. The value should a big-endian 32bit integer. When this item present the K bit is implicitly matched as "1" in the default mask.
rte_be32_t *
|
RTE_FLOW_ITEM_TYPE_GTP_PSC | Matches a GTP extension header: PDU session container. Configure flow for GTP packets with extension header type 0x85. See struct rte_flow_item_gtp_psc. |
RTE_FLOW_ITEM_TYPE_PPPOES | Matches a PPPoE header. Configure flow for PPPoE session packets. See struct rte_flow_item_pppoe. |
RTE_FLOW_ITEM_TYPE_PPPOED | Matches a PPPoE header. Configure flow for PPPoE discovery packets. See struct rte_flow_item_pppoe. |
RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID | Matches a PPPoE optional proto_id field. It only applies to PPPoE session packets. See struct rte_flow_item_pppoe_proto_id. |
RTE_FLOW_ITEM_TYPE_NSH | Matches Network service header (NSH). See struct rte_flow_item_nsh. |
RTE_FLOW_ITEM_TYPE_IGMP | Matches Internet Group Management Protocol (IGMP). See struct rte_flow_item_igmp. |
RTE_FLOW_ITEM_TYPE_AH | Matches IP Authentication Header (AH). See struct rte_flow_item_ah. |
RTE_FLOW_ITEM_TYPE_HIGIG2 | Matches a HIGIG header. see struct rte_flow_item_higig2_hdr. |
RTE_FLOW_ITEM_TYPE_TAG | [META] Matches a tag value. See struct rte_flow_item_tag. |
RTE_FLOW_ITEM_TYPE_L2TPV3OIP | Matches a L2TPv3 over IP header. Configure flow for L2TPv3 over IP packets. See struct rte_flow_item_l2tpv3oip. |
RTE_FLOW_ITEM_TYPE_PFCP | Matches PFCP Header. See struct rte_flow_item_pfcp. |
RTE_FLOW_ITEM_TYPE_ECPRI | Matches eCPRI Header. Configure flow for eCPRI over ETH or UDP packets. See struct rte_flow_item_ecpri. |
RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT | Matches the presence of IPv6 fragment extension header. See struct rte_flow_item_ipv6_frag_ext. |
RTE_FLOW_ITEM_TYPE_GENEVE_OPT | Matches Geneve Variable Length Option See struct rte_flow_item_geneve_opt |
RTE_FLOW_ITEM_TYPE_INTEGRITY | [META] Matches on packet integrity. For some devices application needs to enable integration checks in HW before using this item.
|
RTE_FLOW_ITEM_TYPE_CONNTRACK | [META] Matches conntrack state.
|
RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR | [META] Matches traffic entering the embedded switch from the given ethdev.
|
RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT | [META] Matches traffic entering the embedded switch from the entity represented by the given ethdev.
|
RTE_FLOW_ITEM_TYPE_FLEX | Matches a configured set of fields at runtime calculated offsets over the generic network header with variable length and flexible pattern
|
RTE_FLOW_ITEM_TYPE_L2TPV2 | Matches L2TPv2 Header. See struct rte_flow_item_l2tpv2. |
RTE_FLOW_ITEM_TYPE_PPP | Matches PPP Header. See struct rte_flow_item_ppp. |
Definition at line 151 of file rte_flow.h.
Field bit offset calculation mode.
Definition at line 2035 of file rte_flow.h.
Flex item field tunnel mode
Definition at line 2068 of file rte_flow.h.
enum rte_flow_action_type |
Action types.
Each possible action is represented by a type. An action can have an associated configuration object. Several actions combined in a list can be assigned to a flow rule and are performed in order.
They fall in three categories:
Flow rules being terminating by default, not specifying any action of the fate kind results in undefined behavior. This applies to both ingress and egress.
PASSTHRU, when supported, makes a flow rule non-terminating.
Enumerator | |
---|---|
RTE_FLOW_ACTION_TYPE_END | End marker for action lists. Prevents further processing of actions, thereby ending the list. No associated configuration structure. |
RTE_FLOW_ACTION_TYPE_VOID | Used as a placeholder for convenience. It is ignored and simply discarded by PMDs. No associated configuration structure. |
RTE_FLOW_ACTION_TYPE_PASSTHRU | Leaves traffic up for additional processing by subsequent flow rules; makes a flow rule non-terminating. No associated configuration structure. |
RTE_FLOW_ACTION_TYPE_JUMP | RTE_FLOW_ACTION_TYPE_JUMP Redirects packets to a group on the current device. See struct rte_flow_action_jump. |
RTE_FLOW_ACTION_TYPE_MARK | Attaches an integer value to packets and sets RTE_MBUF_F_RX_FDIR and RTE_MBUF_F_RX_FDIR_ID mbuf flags. See struct rte_flow_action_mark. One should negotiate mark delivery from the NIC to the PMD. |
RTE_FLOW_ACTION_TYPE_FLAG | Flags packets. Similar to MARK without a specific value; only sets the RTE_MBUF_F_RX_FDIR mbuf flag. No associated configuration structure. One should negotiate flag delivery from the NIC to the PMD. |
RTE_FLOW_ACTION_TYPE_QUEUE | Assigns packets to a given queue index. See struct rte_flow_action_queue. |
RTE_FLOW_ACTION_TYPE_DROP | Drops packets. PASSTHRU overrides this action if both are specified. No associated configuration structure. |
RTE_FLOW_ACTION_TYPE_COUNT | Enables counters for this flow rule. These counters can be retrieved and reset through rte_flow_query() or rte_flow_action_handle_query() if the action provided via handle, see struct rte_flow_query_count. See struct rte_flow_action_count. |
RTE_FLOW_ACTION_TYPE_RSS | Similar to QUEUE, except RSS is additionally performed on packets to spread them among several queues according to the provided parameters. See struct rte_flow_action_rss. |
RTE_FLOW_ACTION_TYPE_PF |
Directs matching traffic to the physical function (PF) of the current device. No associated configuration structure. |
RTE_FLOW_ACTION_TYPE_VF |
Directs matching traffic to a given virtual function of the current device. See struct rte_flow_action_vf. |
RTE_FLOW_ACTION_TYPE_PHY_PORT |
Directs packets to a given physical port index of the underlying device. See struct rte_flow_action_phy_port. |
RTE_FLOW_ACTION_TYPE_PORT_ID |
Directs matching traffic to a given DPDK port ID. See struct rte_flow_action_port_id. |
RTE_FLOW_ACTION_TYPE_METER | Traffic metering and policing (MTR). See struct rte_flow_action_meter. See file rte_mtr.h for MTR object configuration. |
RTE_FLOW_ACTION_TYPE_SECURITY | Redirects packets to security engine of current device for security processing as specified by security session. See struct rte_flow_action_security. |
RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL |
Implements OFPAT_SET_MPLS_TTL ("MPLS TTL") as defined by the OpenFlow Switch Specification. See struct rte_flow_action_of_set_mpls_ttl. |
RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL |
Implements OFPAT_DEC_MPLS_TTL ("decrement MPLS TTL") as defined by the OpenFlow Switch Specification. No associated configuration structure. |
RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL |
Implements OFPAT_SET_NW_TTL ("IP TTL") as defined by the OpenFlow Switch Specification. See struct rte_flow_action_of_set_nw_ttl. |
RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL |
Implements OFPAT_DEC_NW_TTL ("decrement IP TTL") as defined by the OpenFlow Switch Specification. No associated configuration structure. |
RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT |
Implements OFPAT_COPY_TTL_OUT ("copy TTL "outwards" -- from next-to-outermost to outermost") as defined by the OpenFlow Switch Specification. No associated configuration structure. |
RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_IN |
Implements OFPAT_COPY_TTL_IN ("copy TTL "inwards" -- from outermost to next-to-outermost") as defined by the OpenFlow Switch Specification. No associated configuration structure. |
RTE_FLOW_ACTION_TYPE_OF_POP_VLAN | Implements OFPAT_POP_VLAN ("pop the outer VLAN tag") as defined by the OpenFlow Switch Specification. No associated configuration structure. |
RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN | Implements OFPAT_PUSH_VLAN ("push a new VLAN tag") as defined by the OpenFlow Switch Specification. See struct rte_flow_action_of_push_vlan. |
RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID | Implements OFPAT_SET_VLAN_VID ("set the 802.1q VLAN ID") as defined by the OpenFlow Switch Specification. See struct rte_flow_action_of_set_vlan_vid. |
RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP | Implements OFPAT_SET_LAN_PCP ("set the 802.1q priority") as defined by the OpenFlow Switch Specification. See struct rte_flow_action_of_set_vlan_pcp. |
RTE_FLOW_ACTION_TYPE_OF_POP_MPLS | Implements OFPAT_POP_MPLS ("pop the outer MPLS tag") as defined by the OpenFlow Switch Specification. See struct rte_flow_action_of_pop_mpls. |
RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS | Implements OFPAT_PUSH_MPLS ("push a new MPLS tag") as defined by the OpenFlow Switch Specification. See struct rte_flow_action_of_push_mpls. |
RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP | Encapsulate flow in VXLAN tunnel as defined in rte_flow_action_vxlan_encap action structure. See struct rte_flow_action_vxlan_encap. |
RTE_FLOW_ACTION_TYPE_VXLAN_DECAP | Decapsulate outer most VXLAN tunnel from matched flow. If flow pattern does not define a valid VXLAN tunnel (as specified by RFC7348) then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. |
RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP | Encapsulate flow in NVGRE tunnel defined in the rte_flow_action_nvgre_encap action structure. See struct rte_flow_action_nvgre_encap. |
RTE_FLOW_ACTION_TYPE_NVGRE_DECAP | Decapsulate outer most NVGRE tunnel from matched flow. If flow pattern does not define a valid NVGRE tunnel (as specified by RFC7637) then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. |
RTE_FLOW_ACTION_TYPE_RAW_ENCAP | Add outer header whose template is provided in its data buffer See struct rte_flow_action_raw_encap. |
RTE_FLOW_ACTION_TYPE_RAW_DECAP | Remove outer header whose template is provided in its data buffer. See struct rte_flow_action_raw_decap |
RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC |
Modify IPv4 source address in the outermost IPv4 header. If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV4, then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. See struct rte_flow_action_set_ipv4. |
RTE_FLOW_ACTION_TYPE_SET_IPV4_DST |
Modify IPv4 destination address in the outermost IPv4 header. If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV4, then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. See struct rte_flow_action_set_ipv4. |
RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC |
Modify IPv6 source address in the outermost IPv6 header. If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV6, then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. See struct rte_flow_action_set_ipv6. |
RTE_FLOW_ACTION_TYPE_SET_IPV6_DST |
Modify IPv6 destination address in the outermost IPv6 header. If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV6, then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. See struct rte_flow_action_set_ipv6. |
RTE_FLOW_ACTION_TYPE_SET_TP_SRC |
Modify source port number in the outermost TCP/UDP header. If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_TCP or RTE_FLOW_ITEM_TYPE_UDP, then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. See struct rte_flow_action_set_tp. |
RTE_FLOW_ACTION_TYPE_SET_TP_DST |
Modify destination port number in the outermost TCP/UDP header. If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_TCP or RTE_FLOW_ITEM_TYPE_UDP, then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. See struct rte_flow_action_set_tp. |
RTE_FLOW_ACTION_TYPE_MAC_SWAP | Swap the source and destination MAC addresses in the outermost Ethernet header. If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_ETH, then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. No associated configuration structure. |
RTE_FLOW_ACTION_TYPE_DEC_TTL |
Decrease TTL value directly No associated configuration structure. |
RTE_FLOW_ACTION_TYPE_SET_TTL |
Set TTL value See struct rte_flow_action_set_ttl |
RTE_FLOW_ACTION_TYPE_SET_MAC_SRC |
Set source MAC address from matched flow. If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_ETH, the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. See struct rte_flow_action_set_mac. |
RTE_FLOW_ACTION_TYPE_SET_MAC_DST |
Set destination MAC address from matched flow. If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_ETH, the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. See struct rte_flow_action_set_mac. |
RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ |
Increase sequence number in the outermost TCP header. Action configuration specifies the value to increase TCP sequence number as a big-endian 32 bit integer.
rte_be32_t *
Using this action on non-matching traffic will result in undefined behavior. |
RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ |
Decrease sequence number in the outermost TCP header. Action configuration specifies the value to decrease TCP sequence number as a big-endian 32 bit integer.
rte_be32_t *
Using this action on non-matching traffic will result in undefined behavior. |
RTE_FLOW_ACTION_TYPE_INC_TCP_ACK |
Increase acknowledgment number in the outermost TCP header. Action configuration specifies the value to increase TCP acknowledgment number as a big-endian 32 bit integer.
rte_be32_t *
Using this action on non-matching traffic will result in undefined behavior. |
RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK |
Decrease acknowledgment number in the outermost TCP header. Action configuration specifies the value to decrease TCP acknowledgment number as a big-endian 32 bit integer.
rte_be32_t *
Using this action on non-matching traffic will result in undefined behavior. |
RTE_FLOW_ACTION_TYPE_SET_TAG |
Set Tag. Tag is for internal flow usage only and is not delivered to the application. See struct rte_flow_action_set_tag. |
RTE_FLOW_ACTION_TYPE_SET_META |
Set metadata on ingress or egress path. See struct rte_flow_action_set_meta. |
RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP |
Modify IPv4 DSCP in the outermost IP header. If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV4, then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. See struct rte_flow_action_set_dscp. |
RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP |
Modify IPv6 DSCP in the outermost IP header. If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV6, then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. See struct rte_flow_action_set_dscp. |
RTE_FLOW_ACTION_TYPE_AGE | Report as aged flow if timeout passed without any matching on the flow. See struct rte_flow_action_age. See function rte_flow_get_aged_flows see enum RTE_ETH_EVENT_FLOW_AGED See struct rte_flow_query_age |
RTE_FLOW_ACTION_TYPE_SAMPLE | The matching packets will be duplicated with specified ratio and applied with own set of actions with a fate action. See struct rte_flow_action_sample. |
RTE_FLOW_ACTION_TYPE_SHARED |
Describe action shared across multiple flow rules. Allow multiple rules reference the same action by handle (see struct rte_flow_shared_action). |
RTE_FLOW_ACTION_TYPE_MODIFY_FIELD | Modify a packet header field, tag, mark or metadata. Allow the modification of an arbitrary header field via set, add and sub operations or copying its content into tag, meta or mark for future processing. See struct rte_flow_action_modify_field. |
RTE_FLOW_ACTION_TYPE_INDIRECT | An action handle is referenced in a rule through an indirect action. The same action handle may be used in multiple rules for the same or different ethdev ports. |
RTE_FLOW_ACTION_TYPE_CONNTRACK | [META] Enable tracking a TCP connection state.
|
RTE_FLOW_ACTION_TYPE_METER_COLOR | Color the packet to reflect the meter color result. Set the meter color in the mbuf to the selected color. See struct rte_flow_action_meter_color. |
RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR | At embedded switch level, sends matching traffic to the given ethdev.
|
RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT | At embedded switch level, send matching traffic to the entity represented by the given ethdev.
|
Definition at line 2208 of file rte_flow.h.
Hash function types.
Definition at line 2976 of file rte_flow.h.
The state of a TCP connection.
Definition at line 3468 of file rte_flow.h.
The last passed TCP packet flags of a connection.
Definition at line 3486 of file rte_flow.h.
enum rte_flow_field_id |
Field IDs for MODIFY_FIELD action.
Definition at line 3641 of file rte_flow.h.
enum rte_flow_modify_op |
Operation types for MODIFY_FIELD action.
Enumerator | |
---|---|
RTE_FLOW_MODIFY_SET | Set a new value. |
RTE_FLOW_MODIFY_ADD | Add a value to a field. |
RTE_FLOW_MODIFY_SUB | Subtract a value from a field. |
Definition at line 3708 of file rte_flow.h.
enum rte_flow_error_type |
Verbose error types.
Most of them provide the type of the object referenced by struct rte_flow_error.cause.
Definition at line 3811 of file rte_flow.h.
enum rte_flow_conv_op |
Conversion operations for flow API objects.
Enumerator | |
---|---|
RTE_FLOW_CONV_OP_NONE | No operation to perform. rte_flow_conv() simply returns 0. |
RTE_FLOW_CONV_OP_ATTR | Convert attributes structure. This is a basic copy of an attributes structure.
|
RTE_FLOW_CONV_OP_ITEM | Convert a single item. Duplicates
|
RTE_FLOW_CONV_OP_ACTION | Convert a single action. Duplicates
|
RTE_FLOW_CONV_OP_PATTERN | Convert an entire pattern. Duplicates all pattern items at once with the same constraints as RTE_FLOW_CONV_OP_ITEM.
|
RTE_FLOW_CONV_OP_ACTIONS | Convert a list of actions. Duplicates the entire list of actions at once with the same constraints as RTE_FLOW_CONV_OP_ACTION.
|
RTE_FLOW_CONV_OP_RULE | Convert a complete flow rule description. Comprises attributes, pattern and actions together at once with the usual constraints.
|
RTE_FLOW_CONV_OP_ITEM_NAME | Convert item type to its name string. Writes a NUL-terminated string to
|
RTE_FLOW_CONV_OP_ACTION_NAME | Convert action type to its name string. Writes a NUL-terminated string to
|
RTE_FLOW_CONV_OP_ITEM_NAME_PTR | Convert item type to pointer to item name. Retrieves item name pointer from its type. The string itself is not copied; instead, a unique pointer to an internal static constant storage is written to
|
RTE_FLOW_CONV_OP_ACTION_NAME_PTR | Convert action type to pointer to action name. Retrieves action name pointer from its type. The string itself is not copied; instead, a unique pointer to an internal static constant storage is written to
|
Definition at line 3878 of file rte_flow.h.
__rte_experimental int rte_flow_dev_dump | ( | uint16_t | port_id, |
struct rte_flow * | flow, | ||
FILE * | file, | ||
struct rte_flow_error * | error | ||
) |
Dump hardware internal representation information of rte flow to file.
[in] | port_id | The port identifier of the Ethernet device. |
[in] | flow | The pointer of flow rule to dump. Dump all rules if NULL. |
[in] | file | A pointer to a file for output. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
|
inlinestatic |
Check if mbuf dynamic field for metadata is registered.
Definition at line 4050 of file rte_flow.h.
__rte_experimental int rte_flow_dynf_metadata_register | ( | void | ) |
Register mbuf dynamic field and flag for metadata.
This function must be called prior to use SET_META action in order to register the dynamic mbuf field. Otherwise, the data cannot be delivered to application.
int rte_flow_validate | ( | uint16_t | port_id, |
const struct rte_flow_attr * | attr, | ||
const struct rte_flow_item | pattern[], | ||
const struct rte_flow_action | actions[], | ||
struct rte_flow_error * | error | ||
) |
Check whether a flow rule can be created on a given port.
The flow rule is validated for correctness and whether it could be accepted by the device given sufficient resources. The rule is checked against the current device mode and queue configuration. The flow rule may also optionally be validated against existing flow rules and device resources. This function has no effect on the target device.
The returned value is guaranteed to remain valid only as long as no successful calls to rte_flow_create() or rte_flow_destroy() are made in the meantime and no device parameter affecting flow rules in any way are modified, due to possible collisions or resource limitations (although in such cases EINVAL should not be returned).
port_id | Port identifier of Ethernet device. | |
[in] | attr | Flow rule attributes. |
[in] | pattern | Pattern specification (list terminated by the END pattern item). |
[in] | actions | Associated actions (list terminated by the END action). |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
-ENOSYS: underlying device does not support this functionality.
-EIO: underlying device is removed.
-EINVAL: unknown or invalid rule specification.
-ENOTSUP: valid but unsupported rule specification (e.g. partial bit-masks are unsupported).
-EEXIST: collision with an existing rule. Only returned if device supports flow rule collision checking and there was a flow rule collision. Not receiving this return code is no guarantee that creating the rule will not fail due to a collision.
-ENOMEM: not enough memory to execute the function, or if the device supports resource validation, resource limitation on the device.
-EBUSY: action cannot be performed due to busy device resources, may succeed if the affected queues or even the entire port are in a stopped state (see rte_eth_dev_rx_queue_stop() and rte_eth_dev_stop()).
struct rte_flow * rte_flow_create | ( | uint16_t | port_id, |
const struct rte_flow_attr * | attr, | ||
const struct rte_flow_item | pattern[], | ||
const struct rte_flow_action | actions[], | ||
struct rte_flow_error * | error | ||
) |
Create a flow rule on a given port.
port_id | Port identifier of Ethernet device. | |
[in] | attr | Flow rule attributes. |
[in] | pattern | Pattern specification (list terminated by the END pattern item). |
[in] | actions | Associated actions (list terminated by the END action). |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
int rte_flow_destroy | ( | uint16_t | port_id, |
struct rte_flow * | flow, | ||
struct rte_flow_error * | error | ||
) |
Destroy a flow rule on a given port.
Failure to destroy a flow rule handle may occur when other flow rules depend on it, and destroying it would result in an inconsistent state.
This function is only guaranteed to succeed if handles are destroyed in reverse order of their creation.
port_id | Port identifier of Ethernet device. | |
flow | Flow rule handle to destroy. | |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
int rte_flow_flush | ( | uint16_t | port_id, |
struct rte_flow_error * | error | ||
) |
Destroy all flow rules associated with a port.
In the unlikely event of failure, handles are still considered destroyed and no longer valid but the port must be assumed to be in an inconsistent state.
port_id | Port identifier of Ethernet device. | |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
int rte_flow_query | ( | uint16_t | port_id, |
struct rte_flow * | flow, | ||
const struct rte_flow_action * | action, | ||
void * | data, | ||
struct rte_flow_error * | error | ||
) |
Query an existing flow rule.
This function allows retrieving flow-specific data such as counters. Data is gathered by special actions which must be present in the flow rule definition.
port_id | Port identifier of Ethernet device. | |
flow | Flow rule handle to query. | |
action | Action definition as defined in original flow rule. | |
[in,out] | data | Pointer to storage for the associated query data type. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
int rte_flow_isolate | ( | uint16_t | port_id, |
int | set, | ||
struct rte_flow_error * | error | ||
) |
Restrict ingress traffic to the defined flow rules.
Isolated mode guarantees that all ingress traffic comes from defined flow rules only (current and future).
Besides making ingress more deterministic, it allows PMDs to safely reuse resources otherwise assigned to handle the remaining traffic, such as global RSS configuration settings, VLAN filters, MAC address entries, legacy filter API rules and so on in order to expand the set of possible flow rule types.
Calling this function as soon as possible after device initialization, ideally before the first call to rte_eth_dev_configure(), is recommended to avoid possible failures due to conflicting settings.
Once effective, leaving isolated mode may not be possible depending on PMD implementation.
Additionally, the following functionality has no effect on the underlying port and may return errors such as ENOTSUP ("not supported"):
port_id | Port identifier of Ethernet device. | |
set | Nonzero to enter isolated mode, attempt to leave it otherwise. | |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
int rte_flow_error_set | ( | struct rte_flow_error * | error, |
int | code, | ||
enum rte_flow_error_type | type, | ||
const void * | cause, | ||
const char * | message | ||
) |
Initialize flow error structure.
[out] | error | Pointer to flow error structure (may be NULL). |
code | Related error code (rte_errno). | |
type | Cause field and error types. | |
cause | Object responsible for the error. | |
message | Human-readable error message. |
__rte_deprecated size_t rte_flow_copy | ( | struct rte_flow_desc * | fd, |
size_t | len, | ||
const struct rte_flow_attr * | attr, | ||
const struct rte_flow_item * | items, | ||
const struct rte_flow_action * | actions | ||
) |
This interface is kept for compatibility with older applications but is implemented as a wrapper to rte_flow_conv(). It is deprecated due to its lack of flexibility and reliance on a type unusable with C++ programs (struct rte_flow_desc).
[in] | fd | Flow rule description. |
[in] | len | Total size of allocated data for the flow description. |
[in] | attr | Flow rule attributes. |
[in] | items | Pattern specification (list terminated by the END pattern item). |
[in] | actions | Associated actions (list terminated by the END action). |
__rte_experimental int rte_flow_conv | ( | enum rte_flow_conv_op | op, |
void * | dst, | ||
size_t | size, | ||
const void * | src, | ||
struct rte_flow_error * | error | ||
) |
Flow object conversion helper.
This function performs conversion of various flow API objects to a pre-allocated destination buffer. See enum rte_flow_conv_op for possible operations and details about each of them.
Since destination buffer must be large enough, it works in a manner reminiscent of snprintf():
size
is 0, dst
may be a NULL pointer, otherwise dst
must be non-NULL.src
to dst
according to op
regardless of the size
parameter.size
bytes can be written to dst
, output is truncated and may be inconsistent when the returned value is larger than that.dst
contents are unspecified.op | Operation to perform, related to the object type of dst . | |
[out] | dst | Destination buffer address. Must be suitably aligned by the caller. |
size | Destination buffer size in bytes. | |
[in] | src | Source object to copy. Depending on op , its type may differ from that of dst . |
[out] | error | Perform verbose error reporting if not NULL. Initialized in case of error only. |
src
to dst
on success, a negative errno value otherwise and rte_errno is set.__rte_experimental int rte_flow_get_aged_flows | ( | uint16_t | port_id, |
void ** | contexts, | ||
uint32_t | nb_contexts, | ||
struct rte_flow_error * | error | ||
) |
Get aged-out flows of a given port.
RTE_ETH_EVENT_FLOW_AGED event will be triggered when at least one new aged out flow was detected after the last call to rte_flow_get_aged_flows. This function can be called to get the aged flows asynchronously from the event callback or synchronously regardless the event. This is not safe to call rte_flow_get_aged_flows function with other flow functions from multiple threads simultaneously.
port_id | Port identifier of Ethernet device. | |
[in,out] | contexts | The address of an array of pointers to the aged-out flows contexts. |
[in] | nb_contexts | The length of context array pointers. |
[out] | error | Perform verbose error reporting if not NULL. Initialized in case of error only. |
__rte_experimental struct rte_flow_action_handle * rte_flow_action_handle_create | ( | uint16_t | port_id, |
const struct rte_flow_indir_action_conf * | conf, | ||
const struct rte_flow_action * | action, | ||
struct rte_flow_error * | error | ||
) |
Create an indirect action object that can be used in flow rules via its handle. The created object handle has single state and configuration across all the flow rules using it.
[in] | port_id | The port identifier of the Ethernet device. |
[in] | conf | Action configuration for the indirect action object creation. |
[in] | action | Specific configuration of the indirect action object. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
__rte_experimental int rte_flow_action_handle_destroy | ( | uint16_t | port_id, |
struct rte_flow_action_handle * | handle, | ||
struct rte_flow_error * | error | ||
) |
Destroy indirect action by handle.
[in] | port_id | The port identifier of the Ethernet device. |
[in] | handle | Handle for the indirect action object to be destroyed. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
__rte_experimental int rte_flow_action_handle_update | ( | uint16_t | port_id, |
struct rte_flow_action_handle * | handle, | ||
const void * | update, | ||
struct rte_flow_error * | error | ||
) |
Update in-place the action configuration and / or state pointed by action handle with the configuration provided as update argument. The update of the action configuration effects all flow rules reusing the action via handle. The update general pointer provides the ability of partial updating.
[in] | port_id | The port identifier of the Ethernet device. |
[in] | handle | Handle for the indirect action object to be updated. |
[in] | update | Update profile specification used to modify the action pointed by handle. update could be with the same type of the immediate action corresponding to the handle argument when creating, or a wrapper structure includes action configuration to be updated and bit fields to indicate the member of fields inside the action to update. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
__rte_experimental int rte_flow_action_handle_query | ( | uint16_t | port_id, |
const struct rte_flow_action_handle * | handle, | ||
void * | data, | ||
struct rte_flow_error * | error | ||
) |
Query the direct action by corresponding indirect action object handle.
Retrieve action-specific data such as counters. Data is gathered by special action which may be present/referenced in more than one flow rule definition.
port_id | Port identifier of Ethernet device. | |
[in] | handle | Handle for the action object to query. |
[in,out] | data | Pointer to storage for the associated query data type. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
__rte_experimental int rte_flow_tunnel_decap_set | ( | uint16_t | port_id, |
struct rte_flow_tunnel * | tunnel, | ||
struct rte_flow_action ** | actions, | ||
uint32_t * | num_of_actions, | ||
struct rte_flow_error * | error | ||
) |
Allocate an array of actions to be used in rte_flow_create, to implement tunnel-decap-set for the given tunnel. Sample usage: actions vxlan_decap / tunnel-decap-set(tunnel properties) / jump group 0 / end
port_id | Port identifier of Ethernet device. | |
[in] | tunnel | Tunnel properties. |
[out] | actions | Array of actions to be allocated by the PMD. This array should be concatenated with the actions array provided to rte_flow_create. |
[out] | num_of_actions | Number of actions allocated. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
__rte_experimental int rte_flow_tunnel_match | ( | uint16_t | port_id, |
struct rte_flow_tunnel * | tunnel, | ||
struct rte_flow_item ** | items, | ||
uint32_t * | num_of_items, | ||
struct rte_flow_error * | error | ||
) |
Allocate an array of items to be used in rte_flow_create, to implement tunnel-match for the given tunnel. Sample usage: pattern tunnel-match(tunnel properties) / outer-header-matches / inner-header-matches / end
port_id | Port identifier of Ethernet device. | |
[in] | tunnel | Tunnel properties. |
[out] | items | Array of items to be allocated by the PMD. This array should be concatenated with the items array provided to rte_flow_create. |
[out] | num_of_items | Number of items allocated. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
__rte_experimental int rte_flow_get_restore_info | ( | uint16_t | port_id, |
struct rte_mbuf * | m, | ||
struct rte_flow_restore_info * | info, | ||
struct rte_flow_error * | error | ||
) |
Populate the current packet processing state, if exists, for the given mbuf.
One should negotiate tunnel metadata delivery from the NIC to the HW.
port_id | Port identifier of Ethernet device. | |
[in] | m | Mbuf struct. |
[out] | info | Restore information. Upon success contains the HW state. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
__rte_experimental int rte_flow_tunnel_action_decap_release | ( | uint16_t | port_id, |
struct rte_flow_action * | actions, | ||
uint32_t | num_of_actions, | ||
struct rte_flow_error * | error | ||
) |
Release the action array as allocated by rte_flow_tunnel_decap_set.
port_id | Port identifier of Ethernet device. | |
[in] | actions | Array of actions to be released. |
[in] | num_of_actions | Number of elements in actions array. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
__rte_experimental int rte_flow_tunnel_item_release | ( | uint16_t | port_id, |
struct rte_flow_item * | items, | ||
uint32_t | num_of_items, | ||
struct rte_flow_error * | error | ||
) |
Release the item array as allocated by rte_flow_tunnel_match.
port_id | Port identifier of Ethernet device. | |
[in] | items | Array of items to be released. |
[in] | num_of_items | Number of elements in item array. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
__rte_experimental int rte_flow_pick_transfer_proxy | ( | uint16_t | port_id, |
uint16_t * | proxy_port_id, | ||
struct rte_flow_error * | error | ||
) |
Get a proxy port to manage "transfer" flows.
Managing "transfer" flows requires that the user communicate them via a port which has the privilege to control the embedded switch. For some vendors, all ports in a given switching domain have this privilege. For other vendors, it's only one port.
This API indicates such a privileged port (a "proxy") for a given port in the same switching domain.
port_id
doesn't have the corresponding method implemented, the API will return port_id
via proxy_port_id
.port_id | Indicates the port to get a "proxy" for | |
[out] | proxy_port_id | Indicates the "proxy" port |
[out] | error | If not NULL, allows the PMD to provide verbose report in case of error |
__rte_experimental struct rte_flow_item_flex_handle * rte_flow_flex_item_create | ( | uint16_t | port_id, |
const struct rte_flow_item_flex_conf * | conf, | ||
struct rte_flow_error * | error | ||
) |
Create the flex item with specified configuration over the Ethernet device.
port_id | Port identifier of Ethernet device. | |
[in] | conf | Item configuration. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
__rte_experimental int rte_flow_flex_item_release | ( | uint16_t | port_id, |
const struct rte_flow_item_flex_handle * | handle, | ||
struct rte_flow_error * | error | ||
) |
Release the flex item on the specified Ethernet device.
port_id | Port identifier of Ethernet device. | |
[in] | handle | Handle of the item existing on the specified device. |
[out] | error | Perform verbose error reporting if not NULL. PMDs initialize this structure in case of error only. |
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_HIGIG2.
Definition at line 677 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_ANY.
Definition at line 704 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_VF.
Definition at line 737 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_PHY_PORT.
Definition at line 772 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_PORT_ID.
Definition at line 802 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_RAW.
Definition at line 837 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_ETH.
Definition at line 885 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_VLAN.
Definition at line 927 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_IPV4.
Definition at line 946 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_IPV6.
Definition at line 987 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_ICMP.
Definition at line 1010 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_UDP.
Definition at line 1029 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_TCP.
Definition at line 1048 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_SCTP.
Definition at line 1067 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_VXLAN.
Definition at line 1099 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_E_TAG.
Definition at line 1127 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_NVGRE.
Definition at line 1152 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_MPLS.
Definition at line 1172 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_GRE.
Definition at line 1193 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_FUZZY.
Definition at line 1221 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_GTP.
Definition at line 1246 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_ESP.
Definition at line 1262 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_GENEVE.
Definition at line 1287 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_VXLAN_GPE.
Definition at line 1307 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4.
Definition at line 1332 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_IPV6_EXT.
Definition at line 1357 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_ICMP6.
Definition at line 1389 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS.
Definition at line 1411 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA.
Definition at line 1438 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT.
Definition at line 1464 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH.
Definition at line 1489 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH.
Definition at line 1514 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_META.
Definition at line 1536 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_GTP_PSC.
Definition at line 1553 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID.
Definition at line 1592 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_TAG.
Definition at line 1612 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_L2TPV3OIP.
Definition at line 1629 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_MARK.
Definition at line 1659 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_NSH.
Definition at line 1688 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_IGMP.
Definition at line 1714 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_AH.
Definition at line 1738 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_PFCP.
Definition at line 1760 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_ECPRI.
Definition at line 1780 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_GENEVE_OPT.
Definition at line 1804 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_CONNTRACK.
Definition at line 1896 of file rte_flow.h.
|
static |
Default mask for items based on struct rte_flow_item_ethdev
Definition at line 1915 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_L2TPV2.
Definition at line 1934 of file rte_flow.h.
|
static |
Default mask for RTE_FLOW_ITEM_TYPE_PPP.
Definition at line 1962 of file rte_flow.h.