Provided by: dpdk-doc_24.11.2-2_all bug

NAME

       rte_flow.h

SYNOPSIS

       #include <stddef.h>
       #include <stdint.h>
       #include <rte_compat.h>
       #include <rte_common.h>
       #include <rte_ether.h>
       #include <rte_arp.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_esp.h>
       #include <rte_higig.h>
       #include <rte_ecpri.h>
       #include <rte_bitops.h>
       #include <rte_mbuf_dyn.h>
       #include <rte_meter.h>
       #include <rte_gtp.h>
       #include <rte_l2tpv2.h>
       #include <rte_ppp.h>
       #include <rte_gre.h>
       #include <rte_macsec.h>
       #include <rte_ib.h>
       #include 'rte_ethdev.h'

   Data Structures
       struct rte_flow_attr
       struct rte_flow_item_quota
       struct rte_flow_item_higig2_hdr
       struct rte_flow_item_any
       struct rte_flow_item_port_id
       struct rte_flow_item_raw
       struct rte_flow_item_eth
       struct rte_flow_item_vlan
       struct rte_flow_item_ipv4
       struct rte_flow_item_ipv6
       struct rte_flow_item_ipv6_routing_ext
       struct rte_flow_item_icmp
       struct rte_flow_item_udp
       struct rte_flow_item_tcp
       struct rte_flow_item_sctp
       struct rte_flow_item_vxlan
       struct rte_flow_item_e_tag
       struct rte_flow_item_nvgre
       struct rte_flow_item_mpls
       struct rte_flow_item_gre
       struct rte_flow_item_gre_opt
       struct rte_flow_item_macsec
       struct rte_flow_item_fuzzy
       struct rte_flow_item_gtp
       struct rte_flow_item_esp
       struct rte_flow_item_geneve
       struct rte_flow_item_vxlan_gpe
       struct rte_flow_item_arp_eth_ipv4
       struct rte_flow_item_ipv6_ext
       struct rte_flow_item_ipv6_frag_ext
       struct rte_flow_item_icmp6
       struct rte_flow_item_icmp6_echo
       struct rte_flow_item_icmp6_nd_ns
       struct rte_flow_item_icmp6_nd_na
       struct rte_flow_item_icmp6_nd_opt
       struct rte_flow_item_icmp6_nd_opt_sla_eth
       struct rte_flow_item_icmp6_nd_opt_tla_eth
       struct rte_flow_item_meta
       struct rte_flow_item_gtp_psc
       struct rte_flow_item_pppoe
       struct rte_flow_item_pppoe_proto_id
       struct rte_flow_item_tag
       struct rte_flow_item_l2tpv3oip
       struct rte_flow_item_mark
       struct rte_flow_item_nsh
       struct rte_flow_item_igmp
       struct rte_flow_item_ah
       struct rte_flow_item_pfcp
       struct rte_flow_item_ecpri
       struct rte_flow_item_geneve_opt
       struct rte_flow_item_integrity
       struct rte_flow_item_conntrack
       struct rte_flow_item_ethdev
       struct rte_flow_item_l2tpv2
       struct rte_flow_item_ppp
       struct rte_flow_item_ib_bth
       struct rte_flow_item_random
       struct rte_flow_item
       struct rte_flow_item_flex
       struct rte_flow_item_flex_field
       struct rte_flow_item_flex_link
       struct rte_flow_item_flex_conf
       struct rte_flow_item_meter_color
       struct rte_flow_item_aggr_affinity
       struct rte_flow_item_tx_queue
       struct rte_flow_item_ptype
       struct rte_flow_field_data
       struct rte_flow_item_compare
       struct rte_flow_action_quota
       struct rte_flow_query_quota
       struct rte_flow_update_quota
       struct rte_flow_action_mark
       struct rte_flow_action_jump
       struct rte_flow_action_queue
       struct rte_flow_action_age
       struct rte_flow_query_age
       struct rte_flow_update_age
       struct rte_flow_action_count
       struct rte_flow_query_count
       struct rte_flow_action_rss
       struct rte_flow_action_vf
       struct rte_flow_action_port_id
       struct rte_flow_action_meter
       struct rte_flow_action_security
       struct rte_flow_action_nat64
       struct rte_flow_action_of_push_vlan
       struct rte_flow_action_of_set_vlan_vid
       struct rte_flow_action_of_set_vlan_pcp
       struct rte_flow_action_of_pop_mpls
       struct rte_flow_action_of_push_mpls
       struct rte_flow_action_vxlan_encap
       struct rte_flow_action_nvgre_encap
       struct rte_flow_action_raw_encap
       struct rte_flow_action_raw_decap
       struct rte_flow_action_set_ipv4
       struct rte_flow_action_set_ipv6
       struct rte_flow_action_ipv6_ext_push
       struct rte_flow_action_ipv6_ext_remove
       struct rte_flow_action_set_tp
       struct rte_flow_action_set_ttl
       struct rte_flow_action_set_mac
       struct rte_flow_action_set_tag
       struct rte_flow_action_set_meta
       struct rte_flow_action_set_dscp
       struct rte_flow_tcp_dir_param
       struct rte_flow_action_conntrack
       struct rte_flow_modify_conntrack
       struct rte_flow_action_meter_color
       struct rte_flow_action_ethdev
       struct rte_flow_action_modify_field
       struct rte_flow_action_meter_mark
       struct rte_flow_update_meter_mark
       struct rte_flow_indirect_update_flow_meter_mark
       struct rte_flow_action_prog_argument
       struct rte_flow_action_prog
       struct rte_flow_action_jump_to_table_index
       struct rte_flow_action
       struct rte_flow_action_sample
       struct rte_flow_error
       struct rte_flow_conv_rule
       struct rte_flow_desc
       struct rte_flow_indir_action_conf
       struct rte_flow_restore_info
       struct rte_flow_port_info
       struct rte_flow_queue_info
       struct rte_flow_port_attr
       struct rte_flow_queue_attr
       struct rte_flow_pattern_template_attr
       struct rte_flow_actions_template_attr
       struct rte_flow_template_table_attr
       struct rte_flow_op_attr
       struct rte_flow_op_result
       struct rte_flow_action_indirect_list

   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)
       #define RTE_FLOW_PORT_FLAG_STRICT_QUEUE   RTE_BIT32(0)
       #define RTE_FLOW_PORT_FLAG_SHARE_INDIRECT   RTE_BIT32(1)

       Flags for template table attribute.
       Each bit is an optional hint for table specialization, offering a potential optimization at driver layer.
       The driver can ignore the hints silently. The hints do not replace any matching criteria.

           #define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_WIRE_ORIG   RTE_BIT32(0)
           #define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_VPORT_ORIG   RTE_BIT32(1)
           #define RTE_FLOW_TABLE_SPECIALIZE_RESIZABLE   RTE_BIT32(2)

   Enumerations
       enum rte_flow_item_type { RTE_FLOW_ITEM_TYPE_END, RTE_FLOW_ITEM_TYPE_VOID, RTE_FLOW_ITEM_TYPE_INVERT,
           RTE_FLOW_ITEM_TYPE_ANY, RTE_FLOW_ITEM_TYPE_PORT_ID, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_ETH,
           RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_ICMP,
           RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_SCTP, RTE_FLOW_ITEM_TYPE_VXLAN,
           RTE_FLOW_ITEM_TYPE_E_TAG, RTE_FLOW_ITEM_TYPE_NVGRE, RTE_FLOW_ITEM_TYPE_MPLS, RTE_FLOW_ITEM_TYPE_GRE,
           RTE_FLOW_ITEM_TYPE_FUZZY, RTE_FLOW_ITEM_TYPE_GTP, RTE_FLOW_ITEM_TYPE_GTPC, RTE_FLOW_ITEM_TYPE_GTPU,
           RTE_FLOW_ITEM_TYPE_ESP, RTE_FLOW_ITEM_TYPE_GENEVE, RTE_FLOW_ITEM_TYPE_VXLAN_GPE,
           RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4, RTE_FLOW_ITEM_TYPE_IPV6_EXT, RTE_FLOW_ITEM_TYPE_ICMP6,
           RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS, RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA, RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT,
           RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH, RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH,
           RTE_FLOW_ITEM_TYPE_MARK, RTE_FLOW_ITEM_TYPE_META, RTE_FLOW_ITEM_TYPE_GRE_KEY,
           RTE_FLOW_ITEM_TYPE_GTP_PSC, RTE_FLOW_ITEM_TYPE_PPPOES, RTE_FLOW_ITEM_TYPE_PPPOED,
           RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID, RTE_FLOW_ITEM_TYPE_NSH, RTE_FLOW_ITEM_TYPE_IGMP,
           RTE_FLOW_ITEM_TYPE_AH, RTE_FLOW_ITEM_TYPE_HIGIG2, RTE_FLOW_ITEM_TYPE_TAG,
           RTE_FLOW_ITEM_TYPE_L2TPV3OIP, RTE_FLOW_ITEM_TYPE_PFCP, RTE_FLOW_ITEM_TYPE_ECPRI,
           RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT, RTE_FLOW_ITEM_TYPE_GENEVE_OPT, RTE_FLOW_ITEM_TYPE_INTEGRITY,
           RTE_FLOW_ITEM_TYPE_CONNTRACK, RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR,
           RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT, RTE_FLOW_ITEM_TYPE_FLEX, RTE_FLOW_ITEM_TYPE_L2TPV2,
           RTE_FLOW_ITEM_TYPE_PPP, RTE_FLOW_ITEM_TYPE_GRE_OPTION, RTE_FLOW_ITEM_TYPE_MACSEC,
           RTE_FLOW_ITEM_TYPE_METER_COLOR, RTE_FLOW_ITEM_TYPE_IPV6_ROUTING_EXT,
           RTE_FLOW_ITEM_TYPE_ICMP6_ECHO_REQUEST, RTE_FLOW_ITEM_TYPE_ICMP6_ECHO_REPLY, RTE_FLOW_ITEM_TYPE_QUOTA,
           RTE_FLOW_ITEM_TYPE_AGGR_AFFINITY, RTE_FLOW_ITEM_TYPE_TX_QUEUE, RTE_FLOW_ITEM_TYPE_IB_BTH,
           RTE_FLOW_ITEM_TYPE_PTYPE, RTE_FLOW_ITEM_TYPE_RANDOM, RTE_FLOW_ITEM_TYPE_COMPARE }
       enum rte_flow_quota_state { RTE_FLOW_QUOTA_STATE_PASS, RTE_FLOW_QUOTA_STATE_BLOCK }
       enum rte_flow_item_flex_field_mode { FIELD_MODE_DUMMY = 0, FIELD_MODE_FIXED, FIELD_MODE_OFFSET,
           FIELD_MODE_BITMASK }
       enum rte_flow_item_flex_tunnel_mode { FLEX_TUNNEL_MODE_SINGLE = 0, FLEX_TUNNEL_MODE_OUTER,
           FLEX_TUNNEL_MODE_INNER, FLEX_TUNNEL_MODE_MULTI, FLEX_TUNNEL_MODE_TUNNEL }
       enum rte_flow_field_id { RTE_FLOW_FIELD_START = 0, RTE_FLOW_FIELD_MAC_DST, RTE_FLOW_FIELD_MAC_SRC,
           RTE_FLOW_FIELD_VLAN_TYPE, RTE_FLOW_FIELD_VLAN_ID, RTE_FLOW_FIELD_MAC_TYPE, RTE_FLOW_FIELD_IPV4_DSCP,
           RTE_FLOW_FIELD_IPV4_TTL, RTE_FLOW_FIELD_IPV4_SRC, RTE_FLOW_FIELD_IPV4_DST, RTE_FLOW_FIELD_IPV6_DSCP,
           RTE_FLOW_FIELD_IPV6_HOPLIMIT, RTE_FLOW_FIELD_IPV6_SRC, RTE_FLOW_FIELD_IPV6_DST,
           RTE_FLOW_FIELD_TCP_PORT_SRC, RTE_FLOW_FIELD_TCP_PORT_DST, RTE_FLOW_FIELD_TCP_SEQ_NUM,
           RTE_FLOW_FIELD_TCP_ACK_NUM, RTE_FLOW_FIELD_TCP_FLAGS, RTE_FLOW_FIELD_UDP_PORT_SRC,
           RTE_FLOW_FIELD_UDP_PORT_DST, RTE_FLOW_FIELD_VXLAN_VNI, RTE_FLOW_FIELD_GENEVE_VNI,
           RTE_FLOW_FIELD_GTP_TEID, RTE_FLOW_FIELD_TAG, RTE_FLOW_FIELD_MARK, RTE_FLOW_FIELD_META,
           RTE_FLOW_FIELD_POINTER, RTE_FLOW_FIELD_VALUE, RTE_FLOW_FIELD_IPV4_ECN, RTE_FLOW_FIELD_IPV6_ECN,
           RTE_FLOW_FIELD_GTP_PSC_QFI, RTE_FLOW_FIELD_METER_COLOR, RTE_FLOW_FIELD_IPV6_PROTO,
           RTE_FLOW_FIELD_FLEX_ITEM, RTE_FLOW_FIELD_HASH_RESULT, RTE_FLOW_FIELD_GENEVE_OPT_TYPE,
           RTE_FLOW_FIELD_GENEVE_OPT_CLASS, RTE_FLOW_FIELD_GENEVE_OPT_DATA, RTE_FLOW_FIELD_MPLS,
           RTE_FLOW_FIELD_TCP_DATA_OFFSET, RTE_FLOW_FIELD_IPV4_IHL, RTE_FLOW_FIELD_IPV4_TOTAL_LEN,
           RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN, RTE_FLOW_FIELD_IPV4_PROTO, RTE_FLOW_FIELD_IPV6_FLOW_LABEL,
           RTE_FLOW_FIELD_IPV6_TRAFFIC_CLASS, RTE_FLOW_FIELD_ESP_SPI, RTE_FLOW_FIELD_ESP_SEQ_NUM,
           RTE_FLOW_FIELD_ESP_PROTO, RTE_FLOW_FIELD_RANDOM, RTE_FLOW_FIELD_VXLAN_LAST_RSVD }
       enum rte_flow_item_compare_op
       enum rte_flow_action_type { RTE_FLOW_ACTION_TYPE_END, RTE_FLOW_ACTION_TYPE_VOID,
           RTE_FLOW_ACTION_TYPE_PASSTHRU, RTE_FLOW_ACTION_TYPE_JUMP, RTE_FLOW_ACTION_TYPE_MARK,
           RTE_FLOW_ACTION_TYPE_FLAG, RTE_FLOW_ACTION_TYPE_QUEUE, RTE_FLOW_ACTION_TYPE_DROP,
           RTE_FLOW_ACTION_TYPE_COUNT, RTE_FLOW_ACTION_TYPE_RSS, RTE_FLOW_ACTION_TYPE_PF,
           RTE_FLOW_ACTION_TYPE_VF, RTE_FLOW_ACTION_TYPE_PORT_ID, RTE_FLOW_ACTION_TYPE_METER,
           RTE_FLOW_ACTION_TYPE_SECURITY, RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL, RTE_FLOW_ACTION_TYPE_OF_POP_VLAN,
           RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN, RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID,
           RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP, RTE_FLOW_ACTION_TYPE_OF_POP_MPLS,
           RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS, RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP,
           RTE_FLOW_ACTION_TYPE_VXLAN_DECAP, RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP, RTE_FLOW_ACTION_TYPE_NVGRE_DECAP,
           RTE_FLOW_ACTION_TYPE_RAW_ENCAP, RTE_FLOW_ACTION_TYPE_RAW_DECAP, RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC,
           RTE_FLOW_ACTION_TYPE_SET_IPV4_DST, RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC,
           RTE_FLOW_ACTION_TYPE_SET_IPV6_DST, RTE_FLOW_ACTION_TYPE_SET_TP_SRC, RTE_FLOW_ACTION_TYPE_SET_TP_DST,
           RTE_FLOW_ACTION_TYPE_MAC_SWAP, RTE_FLOW_ACTION_TYPE_DEC_TTL, RTE_FLOW_ACTION_TYPE_SET_TTL,
           RTE_FLOW_ACTION_TYPE_SET_MAC_SRC, RTE_FLOW_ACTION_TYPE_SET_MAC_DST, RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ,
           RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ, RTE_FLOW_ACTION_TYPE_INC_TCP_ACK, RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK,
           RTE_FLOW_ACTION_TYPE_SET_TAG, RTE_FLOW_ACTION_TYPE_SET_META, RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP,
           RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP, RTE_FLOW_ACTION_TYPE_AGE, RTE_FLOW_ACTION_TYPE_SAMPLE,
           RTE_FLOW_ACTION_TYPE_SHARED, RTE_FLOW_ACTION_TYPE_MODIFY_FIELD, RTE_FLOW_ACTION_TYPE_INDIRECT,
           RTE_FLOW_ACTION_TYPE_CONNTRACK, RTE_FLOW_ACTION_TYPE_METER_COLOR,
           RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR, RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT,
           RTE_FLOW_ACTION_TYPE_METER_MARK, RTE_FLOW_ACTION_TYPE_SEND_TO_KERNEL, RTE_FLOW_ACTION_TYPE_QUOTA,
           RTE_FLOW_ACTION_TYPE_SKIP_CMAN, RTE_FLOW_ACTION_TYPE_IPV6_EXT_PUSH,
           RTE_FLOW_ACTION_TYPE_IPV6_EXT_REMOVE, RTE_FLOW_ACTION_TYPE_INDIRECT_LIST, RTE_FLOW_ACTION_TYPE_PROG,
           RTE_FLOW_ACTION_TYPE_NAT64, RTE_FLOW_ACTION_TYPE_JUMP_TO_TABLE_INDEX }
       enum rte_flow_quota_mode { RTE_FLOW_QUOTA_MODE_PACKET = 1, RTE_FLOW_QUOTA_MODE_L2 = 2,
           RTE_FLOW_QUOTA_MODE_L3 = 3 }
       enum rte_flow_update_quota_op { RTE_FLOW_UPDATE_QUOTA_SET, RTE_FLOW_UPDATE_QUOTA_ADD }
       enum rte_flow_nat64_type { RTE_FLOW_NAT64_6TO4 = 0, RTE_FLOW_NAT64_4TO6 = 1 }
       enum rte_flow_conntrack_state { RTE_FLOW_CONNTRACK_STATE_SYN_RECV, RTE_FLOW_CONNTRACK_STATE_ESTABLISHED,
           RTE_FLOW_CONNTRACK_STATE_FIN_WAIT, RTE_FLOW_CONNTRACK_STATE_CLOSE_WAIT,
           RTE_FLOW_CONNTRACK_STATE_LAST_ACK, RTE_FLOW_CONNTRACK_STATE_TIME_WAIT }
       enum rte_flow_conntrack_tcp_last_index { RTE_FLOW_CONNTRACK_FLAG_NONE = 0, RTE_FLOW_CONNTRACK_FLAG_SYN =
           RTE_BIT32(0), RTE_FLOW_CONNTRACK_FLAG_SYNACK = RTE_BIT32(1), RTE_FLOW_CONNTRACK_FLAG_FIN =
           RTE_BIT32(2), RTE_FLOW_CONNTRACK_FLAG_ACK = RTE_BIT32(3), RTE_FLOW_CONNTRACK_FLAG_RST = RTE_BIT32(4)
           }
       enum rte_flow_modify_op { RTE_FLOW_MODIFY_SET = 0, RTE_FLOW_MODIFY_ADD, RTE_FLOW_MODIFY_SUB }
       enum rte_flow_error_type { RTE_FLOW_ERROR_TYPE_NONE, RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
           RTE_FLOW_ERROR_TYPE_HANDLE, RTE_FLOW_ERROR_TYPE_ATTR_GROUP, RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY,
           RTE_FLOW_ERROR_TYPE_ATTR_INGRESS, RTE_FLOW_ERROR_TYPE_ATTR_EGRESS, RTE_FLOW_ERROR_TYPE_ATTR_TRANSFER,
           RTE_FLOW_ERROR_TYPE_ATTR, RTE_FLOW_ERROR_TYPE_ITEM_NUM, RTE_FLOW_ERROR_TYPE_ITEM_SPEC,
           RTE_FLOW_ERROR_TYPE_ITEM_LAST, RTE_FLOW_ERROR_TYPE_ITEM_MASK, RTE_FLOW_ERROR_TYPE_ITEM,
           RTE_FLOW_ERROR_TYPE_ACTION_NUM, RTE_FLOW_ERROR_TYPE_ACTION_CONF, RTE_FLOW_ERROR_TYPE_ACTION,
           RTE_FLOW_ERROR_TYPE_STATE }
       enum rte_flow_conv_op { RTE_FLOW_CONV_OP_NONE, RTE_FLOW_CONV_OP_ATTR, RTE_FLOW_CONV_OP_ITEM,
           RTE_FLOW_CONV_OP_ITEM_MASK, RTE_FLOW_CONV_OP_ACTION, RTE_FLOW_CONV_OP_PATTERN,
           RTE_FLOW_CONV_OP_ACTIONS, RTE_FLOW_CONV_OP_RULE, RTE_FLOW_CONV_OP_ITEM_NAME,
           RTE_FLOW_CONV_OP_ACTION_NAME, RTE_FLOW_CONV_OP_ITEM_NAME_PTR, RTE_FLOW_CONV_OP_ACTION_NAME_PTR }
       enum rte_flow_table_insertion_type { RTE_FLOW_TABLE_INSERTION_TYPE_PATTERN,
           RTE_FLOW_TABLE_INSERTION_TYPE_INDEX, RTE_FLOW_TABLE_INSERTION_TYPE_INDEX_WITH_PATTERN }
       enum rte_flow_table_hash_func { RTE_FLOW_TABLE_HASH_FUNC_DEFAULT, RTE_FLOW_TABLE_HASH_FUNC_LINEAR,
           RTE_FLOW_TABLE_HASH_FUNC_CRC32, RTE_FLOW_TABLE_HASH_FUNC_CRC16 }
       enum rte_flow_op_status { RTE_FLOW_OP_SUCCESS, RTE_FLOW_OP_ERROR }
       enum rte_flow_query_update_mode { RTE_FLOW_QU_QUERY_FIRST = 1, RTE_FLOW_QU_UPDATE_FIRST }
       enum rte_flow_encap_hash_field { RTE_FLOW_ENCAP_HASH_FIELD_SRC_PORT,
           RTE_FLOW_ENCAP_HASH_FIELD_NVGRE_FLOW_ID }

   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)
       __rte_experimental int rte_flow_actions_update (uint16_t port_id, struct rte_flow *flow, const struct
           rte_flow_action actions[], 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 int rte_flow_get_q_aged_flows (uint16_t port_id, uint32_t queue_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 uint64_t rte_flow_restore_info_dynflag (void)
       __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)
       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_experimental int rte_flow_info_get (uint16_t port_id, struct rte_flow_port_info *port_info, struct
           rte_flow_queue_info *queue_info, struct rte_flow_error *error)
       __rte_experimental int rte_flow_configure (uint16_t port_id, const struct rte_flow_port_attr *port_attr,
           uint16_t nb_queue, const struct rte_flow_queue_attr *queue_attr[], struct rte_flow_error *error)
       __rte_experimental struct rte_flow_pattern_template * rte_flow_pattern_template_create (uint16_t port_id,
           const struct rte_flow_pattern_template_attr *template_attr, const struct rte_flow_item pattern[],
           struct rte_flow_error *error)
       __rte_experimental int rte_flow_pattern_template_destroy (uint16_t port_id, struct
           rte_flow_pattern_template *pattern_template, struct rte_flow_error *error)
       __rte_experimental struct rte_flow_actions_template * rte_flow_actions_template_create (uint16_t port_id,
           const struct rte_flow_actions_template_attr *template_attr, const struct rte_flow_action actions[],
           const struct rte_flow_action masks[], struct rte_flow_error *error)
       __rte_experimental int rte_flow_actions_template_destroy (uint16_t port_id, struct
           rte_flow_actions_template *actions_template, struct rte_flow_error *error)
       __rte_experimental bool rte_flow_template_table_resizable (__rte_unused uint16_t port_id, const struct
           rte_flow_template_table_attr *tbl_attr)
       __rte_experimental struct rte_flow_template_table * rte_flow_template_table_create (uint16_t port_id,
           const struct rte_flow_template_table_attr *table_attr, struct rte_flow_pattern_template
           *pattern_templates[], uint8_t nb_pattern_templates, struct rte_flow_actions_template
           *actions_templates[], uint8_t nb_actions_templates, struct rte_flow_error *error)
       __rte_experimental int rte_flow_template_table_destroy (uint16_t port_id, struct rte_flow_template_table
           *template_table, struct rte_flow_error *error)
       __rte_experimental int rte_flow_group_set_miss_actions (uint16_t port_id, uint32_t group_id, const struct
           rte_flow_group_attr *attr, const struct rte_flow_action actions[], struct rte_flow_error *error)
       __rte_experimental struct rte_flow * rte_flow_async_create (uint16_t port_id, uint32_t queue_id, const
           struct rte_flow_op_attr *op_attr, struct rte_flow_template_table *template_table, const struct
           rte_flow_item pattern[], uint8_t pattern_template_index, const struct rte_flow_action actions[],
           uint8_t actions_template_index, void *user_data, struct rte_flow_error *error)
       __rte_experimental struct rte_flow * rte_flow_async_create_by_index (uint16_t port_id, uint32_t queue_id,
           const struct rte_flow_op_attr *op_attr, struct rte_flow_template_table *template_table, uint32_t
           rule_index, const struct rte_flow_action actions[], uint8_t actions_template_index, void *user_data,
           struct rte_flow_error *error)
       __rte_experimental struct rte_flow * rte_flow_async_create_by_index_with_pattern (uint16_t port_id,
           uint32_t queue_id, const struct rte_flow_op_attr *op_attr, struct rte_flow_template_table
           *template_table, uint32_t rule_index, const struct rte_flow_item pattern[], uint8_t
           pattern_template_index, const struct rte_flow_action actions[], uint8_t actions_template_index, void
           *user_data, struct rte_flow_error *error)
       __rte_experimental int rte_flow_async_destroy (uint16_t port_id, uint32_t queue_id, const struct
           rte_flow_op_attr *op_attr, struct rte_flow *flow, void *user_data, struct rte_flow_error *error)
       __rte_experimental int rte_flow_async_actions_update (uint16_t port_id, uint32_t queue_id, const struct
           rte_flow_op_attr *op_attr, struct rte_flow *flow, const struct rte_flow_action actions[], uint8_t
           actions_template_index, void *user_data, struct rte_flow_error *error)
       __rte_experimental int rte_flow_push (uint16_t port_id, uint32_t queue_id, struct rte_flow_error *error)
       __rte_experimental int rte_flow_pull (uint16_t port_id, uint32_t queue_id, struct rte_flow_op_result
           res[], uint16_t n_res, struct rte_flow_error *error)
       __rte_experimental struct rte_flow_action_handle * rte_flow_async_action_handle_create (uint16_t port_id,
           uint32_t queue_id, const struct rte_flow_op_attr *op_attr, const struct rte_flow_indir_action_conf
           *indir_action_conf, const struct rte_flow_action *action, void *user_data, struct rte_flow_error
           *error)
       __rte_experimental int rte_flow_async_action_handle_destroy (uint16_t port_id, uint32_t queue_id, const
           struct rte_flow_op_attr *op_attr, struct rte_flow_action_handle *action_handle, void *user_data,
           struct rte_flow_error *error)
       __rte_experimental int rte_flow_async_action_handle_update (uint16_t port_id, uint32_t queue_id, const
           struct rte_flow_op_attr *op_attr, struct rte_flow_action_handle *action_handle, const void *update,
           void *user_data, struct rte_flow_error *error)
       __rte_experimental int rte_flow_async_action_handle_query (uint16_t port_id, uint32_t queue_id, const
           struct rte_flow_op_attr *op_attr, const struct rte_flow_action_handle *action_handle, void *data,
           void *user_data, struct rte_flow_error *error)
       __rte_experimental int rte_flow_action_handle_query_update (uint16_t port_id, struct
           rte_flow_action_handle *handle, const void *update, void *query, enum rte_flow_query_update_mode
           mode, struct rte_flow_error *error)
       __rte_experimental int rte_flow_async_action_handle_query_update (uint16_t port_id, uint32_t queue_id,
           const struct rte_flow_op_attr *attr, struct rte_flow_action_handle *handle, const void *update, void
           *query, enum rte_flow_query_update_mode mode, void *user_data, struct rte_flow_error *error)
       __rte_experimental struct rte_flow_action_list_handle * rte_flow_action_list_handle_create (uint16_t
           port_id, const struct rte_flow_indir_action_conf *conf, const struct rte_flow_action *actions, struct
           rte_flow_error *error)
       __rte_experimental struct rte_flow_action_list_handle * rte_flow_async_action_list_handle_create
           (uint16_t port_id, uint32_t queue_id, const struct rte_flow_op_attr *attr, const struct
           rte_flow_indir_action_conf *conf, const struct rte_flow_action *actions, void *user_data, struct
           rte_flow_error *error)
       __rte_experimental int rte_flow_action_list_handle_destroy (uint16_t port_id, struct
           rte_flow_action_list_handle *handle, struct rte_flow_error *error)
       __rte_experimental int rte_flow_async_action_list_handle_destroy (uint16_t port_id, uint32_t queue_id,
           const struct rte_flow_op_attr *op_attr, struct rte_flow_action_list_handle *handle, void *user_data,
           struct rte_flow_error *error)
       __rte_experimental int rte_flow_action_list_handle_query_update (uint16_t port_id, const struct
           rte_flow_action_list_handle *handle, const void **update, void **query, enum
           rte_flow_query_update_mode mode, struct rte_flow_error *error)
       __rte_experimental int rte_flow_async_action_list_handle_query_update (uint16_t port_id, uint32_t
           queue_id, const struct rte_flow_op_attr *attr, const struct rte_flow_action_list_handle *handle,
           const void **update, void **query, enum rte_flow_query_update_mode mode, void *user_data, struct
           rte_flow_error *error)
       __rte_experimental int rte_flow_calc_table_hash (uint16_t port_id, const struct rte_flow_template_table
           *table, const struct rte_flow_item pattern[], uint8_t pattern_template_index, uint32_t *hash, struct
           rte_flow_error *error)
       __rte_experimental int rte_flow_calc_encap_hash (uint16_t port_id, const struct rte_flow_item pattern[],
           enum rte_flow_encap_hash_field dest_field, uint8_t hash_len, uint8_t *hash, struct rte_flow_error
           *error)
       __rte_experimental int rte_flow_template_table_resize (uint16_t port_id, struct rte_flow_template_table
           *table, uint32_t nb_rules, struct rte_flow_error *error)
       __rte_experimental int rte_flow_async_update_resized (uint16_t port_id, uint32_t queue, const struct
           rte_flow_op_attr *attr, struct rte_flow *rule, void *user_data, struct rte_flow_error *error)
       __rte_experimental int rte_flow_template_table_resize_complete (uint16_t port_id, struct
           rte_flow_template_table *table, struct rte_flow_error *error)

   Variables
       static const struct rte_flow_item_quota rte_flow_item_quota_mask
       static const struct rte_flow_item_higig2_hdr rte_flow_item_higig2_hdr_mask
       static const struct rte_flow_item_any rte_flow_item_any_mask
       static const struct rte_flow_item_port_id rte_flow_item_port_id_mask
       static const struct rte_flow_item_raw rte_flow_item_raw_mask
       static const struct rte_flow_item_eth rte_flow_item_eth_mask
       static const struct rte_flow_item_vlan rte_flow_item_vlan_mask
       static const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask
       static const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask
       static const struct rte_flow_item_icmp rte_flow_item_icmp_mask
       static const struct rte_flow_item_udp rte_flow_item_udp_mask
       static const struct rte_flow_item_tcp rte_flow_item_tcp_mask
       static const struct rte_flow_item_sctp rte_flow_item_sctp_mask
       static const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask
       static const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask
       static const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask
       static const struct rte_flow_item_mpls rte_flow_item_mpls_mask
       static const struct rte_flow_item_gre rte_flow_item_gre_mask
       static const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask
       static const struct rte_flow_item_gtp rte_flow_item_gtp_mask
       static const struct rte_flow_item_esp rte_flow_item_esp_mask
       static const struct rte_flow_item_geneve rte_flow_item_geneve_mask
       static const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask
       static const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask
       static const struct rte_flow_item_ipv6_ext rte_flow_item_ipv6_ext_mask
       static const struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask
       static const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask
       static const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask
       static const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask
       static const struct rte_flow_item_icmp6_nd_opt_sla_eth rte_flow_item_icmp6_nd_opt_sla_eth_mask
       static const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask
       static const struct rte_flow_item_meta rte_flow_item_meta_mask
       static const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask
       static const struct rte_flow_item_pppoe_proto_id rte_flow_item_pppoe_proto_id_mask
       static const struct rte_flow_item_tag rte_flow_item_tag_mask
       static const struct rte_flow_item_l2tpv3oip rte_flow_item_l2tpv3oip_mask
       static const struct rte_flow_item_mark rte_flow_item_mark_mask
       static const struct rte_flow_item_nsh rte_flow_item_nsh_mask
       static const struct rte_flow_item_igmp rte_flow_item_igmp_mask
       static const struct rte_flow_item_ah rte_flow_item_ah_mask
       static const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask
       static const struct rte_flow_item_ecpri rte_flow_item_ecpri_mask
       static const struct rte_flow_item_geneve_opt rte_flow_item_geneve_opt_mask
       static const struct rte_flow_item_conntrack rte_flow_item_conntrack_mask
       static const struct rte_flow_item_ethdev rte_flow_item_ethdev_mask
       static const struct rte_flow_item_l2tpv2 rte_flow_item_l2tpv2_mask
       static const struct rte_flow_item_ppp rte_flow_item_ppp_mask
       static const struct rte_flow_item_ib_bth rte_flow_item_ib_bth_mask
       static const struct rte_flow_item_random rte_flow_item_random_mask
       static const struct rte_flow_item_meter_color rte_flow_item_meter_color_mask
       static const struct rte_flow_item_aggr_affinity rte_flow_item_aggr_affinity_mask
       static const struct rte_flow_item_tx_queue rte_flow_item_tx_queue_mask
       static const struct rte_flow_item_ptype rte_flow_item_ptype_mask

Detailed Description

       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.

Macro Definition Documentation

   #define RTE_FLOW_CONNTRACK_PKT_STATE_VALID   RTE_BIT32(0)
       The packet is valid after conntrack checking.

       Definition at line 1947 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 1951 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 1956 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 1961 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 1966 of file rte_flow.h.

   #define RTE_FLOW_RESTORE_INFO_TUNNEL   RTE_BIT64(0)
       Indicate that the packet has a tunnel.

       Definition at line 5233 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 5238 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 5243 of file rte_flow.h.

   #define RTE_FLOW_PORT_FLAG_STRICT_QUEUE   RTE_BIT32(0)
       Indicate all operations for a given flow rule will strictly happen on the same queue
       (create/destroy/query/update).

       Definition at line 5488 of file rte_flow.h.

   #define RTE_FLOW_PORT_FLAG_SHARE_INDIRECT   RTE_BIT32(1)
       Indicate all steering objects should be created on contexts of the host port, providing indirect object
       sharing between ports.

       Definition at line 5495 of file rte_flow.h.

   #define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_WIRE_ORIG   RTE_BIT32(0)
       Specialize table for transfer flows which come only from wire. It allows PMD not to allocate resources
       for non-wire originated traffic. This bit is not a matching criteria, just an optimization hint. Flow
       rules which match non-wire originated traffic will be missed if the hint is supported.

       Definition at line 5886 of file rte_flow.h.

   #define RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_VPORT_ORIG   RTE_BIT32(1)
       Specialize table for transfer flows which come only from vport (e.g. VF, SF). It allows PMD not to
       allocate resources for non-vport originated traffic. This bit is not a matching criteria, just an
       optimization hint. Flow rules which match non-vport originated traffic will be missed if the hint is
       supported.

       Definition at line 5894 of file rte_flow.h.

   #define RTE_FLOW_TABLE_SPECIALIZE_RESIZABLE   RTE_BIT32(2)
       Specialize table for resize.

       Definition at line 5898 of file rte_flow.h.

Enumeration Type Documentation

   enum rte_flow_item_type
       Matching pattern item types.

       Pattern items fall in two categories:

       • Matching  protocol  headers  and  packet data, usually associated with a specification structure. These
         must be stacked in the same order as the protocol layers to match inside  packets,  starting  from  the
         lowest.

       • Matching meta-data or affecting pattern processing, often without a specification structure. Since they
         do not match packet contents, their position in the list is usually not relevant.

       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_PORT_ID

       Deprecated

       See also
           RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR

           RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT

       [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

       Deprecated

       See also
           RTE_FLOW_ITEM_TYPE_VXLAN

       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.

       spec/mask type:

       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.

       See also
           struct rte_flow_item_integrity.

       RTE_FLOW_ITEM_TYPE_CONNTRACK
              [META]

       Matches conntrack state.

       See also
           struct rte_flow_item_conntrack.

       RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR
              [META]

       Matches traffic entering the embedded switch from the given ethdev.

       See also
           struct rte_flow_item_ethdev

       RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT
              [META]

       Matches traffic entering the embedded switch from the entity represented by the given ethdev.

       See also
           struct rte_flow_item_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

       See also
           struct rte_flow_item_flex.

       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.

       RTE_FLOW_ITEM_TYPE_GRE_OPTION
              Matches GRE optional fields.

       See struct rte_flow_item_gre_opt.

       RTE_FLOW_ITEM_TYPE_MACSEC
              Matches MACsec Ethernet Header.

       See struct rte_flow_item_macsec.

       RTE_FLOW_ITEM_TYPE_METER_COLOR
              Matches Meter Color Marker.

       See struct rte_flow_item_meter_color.

       RTE_FLOW_ITEM_TYPE_IPV6_ROUTING_EXT
              Matches the presence of IPv6 routing extension header.

       See also
           struct rte_flow_item_ipv6_routing_ext.

       RTE_FLOW_ITEM_TYPE_ICMP6_ECHO_REQUEST
              Matches an ICMPv6 echo request.

       See also
           struct rte_flow_item_icmp6_echo.

       RTE_FLOW_ITEM_TYPE_ICMP6_ECHO_REPLY
              Matches an ICMPv6 echo reply.

       See also
           struct rte_flow_item_icmp6_echo.

       RTE_FLOW_ITEM_TYPE_QUOTA
              Match Quota state

       See also
           struct rte_flow_item_quota

       RTE_FLOW_ITEM_TYPE_AGGR_AFFINITY
              Matches  on the aggregated port of the received packet. Used in case multiple ports are aggregated
              to the a DPDK port. First port is number 1.

       See also
           struct rte_flow_item_aggr_affinity.

       RTE_FLOW_ITEM_TYPE_TX_QUEUE
              Match Tx queue number. This is valid only for egress rules.

       See also
           struct rte_flow_item_tx_queue

       RTE_FLOW_ITEM_TYPE_IB_BTH
              Matches an InfiniBand base transport header in RoCE packet.

       See also
           struct rte_flow_item_ib_bth.

       RTE_FLOW_ITEM_TYPE_PTYPE
              Matches the packet type as defined in rte_mbuf_ptype.

       See struct rte_flow_item_ptype.

       RTE_FLOW_ITEM_TYPE_RANDOM
              [META]

       Matches a random value.

       This value is not based on the packet data/headers. The application shouldn't assume that this  value  is
       kept during the lifetime of the packet.

       See also
           struct rte_flow_item_random.

       RTE_FLOW_ITEM_TYPE_COMPARE
              Match packet with various comparison types.

       See struct rte_flow_item_compare.

       Definition at line 153 of file rte_flow.h.

   enum rte_flow_quota_state
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       QUOTA state.

       See also
           struct rte_flow_item_quota

       Enumerator

       RTE_FLOW_QUOTA_STATE_PASS
              PASS quota state

       RTE_FLOW_QUOTA_STATE_BLOCK
              BLOCK quota state

       Definition at line 737 of file rte_flow.h.

   enum rte_flow_item_flex_field_mode
       Field bit offset calculation mode.

       Enumerator

       FIELD_MODE_DUMMY
              Dummy field, used for byte boundary alignment in pattern. Pattern mask and data are ignored in the
              match. All configuration parameters besides field size are ignored.

       FIELD_MODE_FIXED
              Fixed  offset  field.  The bit offset from header beginning is permanent and defined by field_base
              parameter.

       FIELD_MODE_OFFSET
              The field bit offset is extracted from other header field (indirect offset field).  The  resulting
              field offset to match is calculated as:

       field_base + (*offset_base & offset_mask) << offset_shift

       FIELD_MODE_BITMASK
              The  field  bit offset is extracted from other header field (indirect offset field), the latter is
              considered as bitmask containing some number of one bits, the resulting field offset to  match  is
              calculated as:

       field_base + bitcount(*offset_base & offset_mask) << offset_shift

       Definition at line 2158 of file rte_flow.h.

   enum rte_flow_item_flex_tunnel_mode
       Flex item field tunnel mode

       Enumerator

       FLEX_TUNNEL_MODE_SINGLE
              The  protocol header can be present in the packet only once. No multiple flex item flow inclusions
              (for inner/outer) are allowed. No any relations with tunnel protocols are imposed. The drivers can
              optimize hardware resource usage to handle match on single flex item of specific type.

       FLEX_TUNNEL_MODE_OUTER
              Flex item presents outer header only.

       FLEX_TUNNEL_MODE_INNER
              Flex item presents inner header only.

       FLEX_TUNNEL_MODE_MULTI
              Flex item presents either inner or outer header. The driver handles as  many  multiple  inners  as
              hardware supports.

       FLEX_TUNNEL_MODE_TUNNEL
              Flex item presents tunnel protocol header.

       Definition at line 2191 of file rte_flow.h.

   enum rte_flow_field_id
       Packet header field IDs, used by RTE_FLOW_ACTION_TYPE_MODIFY_FIELD and RTE_FLOW_ITEM_TYPE_COMPARE.

       Enumerator

       RTE_FLOW_FIELD_START
              Start of a packet.

       RTE_FLOW_FIELD_MAC_DST
              Destination MAC Address.

       RTE_FLOW_FIELD_MAC_SRC
              Source MAC Address.

       RTE_FLOW_FIELD_VLAN_TYPE
              VLAN Tag Identifier.

       RTE_FLOW_FIELD_VLAN_ID
              VLAN Identifier.

       RTE_FLOW_FIELD_MAC_TYPE
              EtherType.

       RTE_FLOW_FIELD_IPV4_DSCP
              IPv4 DSCP.

       RTE_FLOW_FIELD_IPV4_TTL
              IPv4 Time To Live.

       RTE_FLOW_FIELD_IPV4_SRC
              IPv4 Source Address.

       RTE_FLOW_FIELD_IPV4_DST
              IPv4 Destination Address.

       RTE_FLOW_FIELD_IPV6_DSCP
              IPv6 DSCP.

       RTE_FLOW_FIELD_IPV6_HOPLIMIT
              IPv6 Hop Limit.

       RTE_FLOW_FIELD_IPV6_SRC
              IPv6 Source Address.

       RTE_FLOW_FIELD_IPV6_DST
              IPv6 Destination Address.

       RTE_FLOW_FIELD_TCP_PORT_SRC
              TCP Source Port Number.

       RTE_FLOW_FIELD_TCP_PORT_DST
              TCP Destination Port Number.

       RTE_FLOW_FIELD_TCP_SEQ_NUM
              TCP Sequence Number.

       RTE_FLOW_FIELD_TCP_ACK_NUM
              TCP Acknowledgment Number.

       RTE_FLOW_FIELD_TCP_FLAGS
              TCP Flags.

       RTE_FLOW_FIELD_UDP_PORT_SRC
              UDP Source Port Number.

       RTE_FLOW_FIELD_UDP_PORT_DST
              UDP Destination Port Number.

       RTE_FLOW_FIELD_VXLAN_VNI
              VXLAN Network Identifier.

       RTE_FLOW_FIELD_GENEVE_VNI
              GENEVE Network Identifier.

       RTE_FLOW_FIELD_GTP_TEID
              GTP Tunnel Endpoint Identifier.

       RTE_FLOW_FIELD_TAG
              Tag value.

       RTE_FLOW_FIELD_MARK
              Mark value.

       RTE_FLOW_FIELD_META
              Metadata value.

       RTE_FLOW_FIELD_POINTER
              Memory pointer.

       RTE_FLOW_FIELD_VALUE
              Immediate value.

       RTE_FLOW_FIELD_IPV4_ECN
              IPv4 ECN.

       RTE_FLOW_FIELD_IPV6_ECN
              IPv6 ECN.

       RTE_FLOW_FIELD_GTP_PSC_QFI
              GTP QFI.

       RTE_FLOW_FIELD_METER_COLOR
              Meter color marker.

       RTE_FLOW_FIELD_IPV6_PROTO
              IPv6 next header.

       RTE_FLOW_FIELD_FLEX_ITEM
              Flex item.

       RTE_FLOW_FIELD_HASH_RESULT
              Hash result.

       RTE_FLOW_FIELD_GENEVE_OPT_TYPE
              GENEVE option type.

       RTE_FLOW_FIELD_GENEVE_OPT_CLASS
              GENEVE option class.

       RTE_FLOW_FIELD_GENEVE_OPT_DATA
              GENEVE option data.

       RTE_FLOW_FIELD_MPLS
              MPLS header.

       RTE_FLOW_FIELD_TCP_DATA_OFFSET
              TCP data offset.

       RTE_FLOW_FIELD_IPV4_IHL
              IPv4 IHL.

       RTE_FLOW_FIELD_IPV4_TOTAL_LEN
              IPv4 total length.

       RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN
              IPv6 payload length.

       RTE_FLOW_FIELD_IPV4_PROTO
              IPv4 next protocol.

       RTE_FLOW_FIELD_IPV6_FLOW_LABEL
              IPv6 flow label.

       RTE_FLOW_FIELD_IPV6_TRAFFIC_CLASS
              IPv6 traffic class.

       RTE_FLOW_FIELD_ESP_SPI
              ESP SPI.

       RTE_FLOW_FIELD_ESP_SEQ_NUM
              ESP Sequence Number.

       RTE_FLOW_FIELD_ESP_PROTO
              ESP next protocol value.

       RTE_FLOW_FIELD_RANDOM
              Random value.

       RTE_FLOW_FIELD_VXLAN_LAST_RSVD
              VXLAN last reserved byte.

       Definition at line 2387 of file rte_flow.h.

   enum rte_flow_item_compare_op
       Expected operation types for compare item.

       Definition at line 2540 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:

       • Actions that modify the fate of matching traffic, for instance by dropping or assigning it  a  specific
         destination.

       • Actions  that  modify  matching  traffic  contents  or  its  properties.  This includes adding/removing
         encapsulation, encryption, compression and marks.

       • Actions related to the flow rule itself, such as updating counters or making it non-terminating.

       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.

       See also
           rte_eth_rx_metadata_negotiate()

           RTE_ETH_RX_METADATA_USER_MARK

       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.

       See also
           rte_eth_rx_metadata_negotiate()

           RTE_ETH_RX_METADATA_USER_FLAG

       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

       Deprecated

       See also
           RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR

           RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT

       Directs matching traffic to the physical function (PF) of the current device.

       No associated configuration structure.

       RTE_FLOW_ACTION_TYPE_VF

       Deprecated

       See also
           RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR

           RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT

       Directs matching traffic to a given virtual function of the current device.

       See struct rte_flow_action_vf.

       RTE_FLOW_ACTION_TYPE_PORT_ID

       Deprecated

       See also
           RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR

           RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT

       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_DEC_NW_TTL

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       Implements OFPAT_DEC_NW_TTL ('decrement IP TTL') 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

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       Decrease TTL value directly

       No associated configuration structure.

       RTE_FLOW_ACTION_TYPE_SET_TTL

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       Set TTL value

       See struct rte_flow_action_set_ttl

       RTE_FLOW_ACTION_TYPE_SET_MAC_SRC

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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.

       conf type:

       rte_be32_t *

       Using this action on non-matching traffic will result in undefined behavior.

       RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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.

       conf type:

       rte_be32_t *

       Using this action on non-matching traffic will result in undefined behavior.

       RTE_FLOW_ACTION_TYPE_INC_TCP_ACK

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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.

       conf type:

       rte_be32_t *

       Using this action on non-matching traffic will result in undefined behavior.

       RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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.

       conf type:

       rte_be32_t *

       Using this action on non-matching traffic will result in undefined behavior.

       RTE_FLOW_ACTION_TYPE_SET_TAG

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       Set metadata on ingress or egress path.

       See struct rte_flow_action_set_meta.

       RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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

       Warning
           This is a legacy action.

       See also
           RTE_FLOW_ACTION_TYPE_MODIFY_FIELD

       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_q_aged_flows    See     function
       rte_flow_get_aged_flows  see  enum  RTE_ETH_EVENT_FLOW_AGED  See  struct  rte_flow_query_age  See  struct
       rte_flow_update_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

       Deprecated

       See also
           RTE_FLOW_ACTION_TYPE_INDIRECT

       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.

       See also
           struct rte_flow_action_conntrack.

       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.

       See also
           struct rte_flow_action_ethdev

       RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT
              At embedded switch level, send matching traffic to the entity represented by the given ethdev.

       See also
           struct rte_flow_action_ethdev

       RTE_FLOW_ACTION_TYPE_METER_MARK
              Traffic metering and marking (MTR).

       See also
           struct rte_flow_action_meter_mark See file rte_mtr.h for MTR profile object configuration.

       RTE_FLOW_ACTION_TYPE_SEND_TO_KERNEL
              Send packets to the kernel, without going to userspace at all. The packets will be received by the
              kernel  driver  sharing  the same device as the DPDK port on which this action is configured. This
              action mostly suits bifurcated driver model.

       No associated configuration structure.

       RTE_FLOW_ACTION_TYPE_QUOTA
              Apply the quota verdict (PASS or BLOCK) to a flow.

       See also
           struct rte_flow_action_quota

           struct rte_flow_query_quota

           struct rte_flow_update_quota

       RTE_FLOW_ACTION_TYPE_SKIP_CMAN
              Skip congestion management configuration.

       Using rte_eth_cman_config_set(), the application can configure ethdev Rx  queue's  congestion  mechanism.
       This flow action allows to skip the congestion configuration applied to the given ethdev Rx queue.

       RTE_FLOW_ACTION_TYPE_IPV6_EXT_PUSH
              RTE_FLOW_ACTION_TYPE_IPV6_EXT_PUSH

       Push IPv6 extension into IPv6 packet.

       See also
           struct rte_flow_action_ipv6_ext_push.

       RTE_FLOW_ACTION_TYPE_IPV6_EXT_REMOVE
              RTE_FLOW_ACTION_TYPE_IPV6_EXT_REMOVE

       Remove IPv6 extension from IPv6 packet whose type is provided in its configuration buffer.

       See also
           struct rte_flow_action_ipv6_ext_remove.

       RTE_FLOW_ACTION_TYPE_INDIRECT_LIST
              Action handle to reference flow actions list.

       See also
           struct rte_flow_action_indirect_list

       RTE_FLOW_ACTION_TYPE_PROG
              Program  action.  These  actions  are  defined  by the program currently loaded on the device. For
              example, these actions are applicable to devices that can be programmed through the P4 language.

       See also
           struct rte_flow_action_prog.

       RTE_FLOW_ACTION_TYPE_NAT64
              NAT64 translation of IPv4/IPv6 headers.

       See also
           struct rte_flow_action_nat64

       RTE_FLOW_ACTION_TYPE_JUMP_TO_TABLE_INDEX
              RTE_FLOW_ACTION_TYPE_JUMP_TO_TABLE_INDEX,

       Redirects packets to a particular index in a flow table.

       See also
           struct rte_flow_action_jump_to_table_index.

       Definition at line 2590 of file rte_flow.h.

   enum rte_flow_quota_mode
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       QUOTA operational mode.

       See also
           struct rte_flow_action_quota

       Enumerator

       RTE_FLOW_QUOTA_MODE_PACKET
              Count packets.

       RTE_FLOW_QUOTA_MODE_L2
              Count packet bytes starting from L2.

       RTE_FLOW_QUOTA_MODE_L3
              Count packet bytes starting from L3.

       Definition at line 3276 of file rte_flow.h.

   enum rte_flow_update_quota_op
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Indirect QUOTA update operations.

       See also
           struct rte_flow_update_quota

       Enumerator

       RTE_FLOW_UPDATE_QUOTA_SET
              Set new quota value.

       RTE_FLOW_UPDATE_QUOTA_ADD
              Increase quota value.

       Definition at line 3315 of file rte_flow.h.

   enum rte_flow_nat64_type
       NAT64 translation type for IP headers.

       Enumerator

       RTE_FLOW_NAT64_6TO4
              IPv6 to IPv4 headers translation.

       RTE_FLOW_NAT64_4TO6
              IPv4 to IPv6 headers translation.

       Definition at line 3607 of file rte_flow.h.

   enum rte_flow_conntrack_state
       The state of a TCP connection.

       Enumerator

       RTE_FLOW_CONNTRACK_STATE_SYN_RECV
              SYN-ACK packet was seen.

       RTE_FLOW_CONNTRACK_STATE_ESTABLISHED
              3-way handshake was done.

       RTE_FLOW_CONNTRACK_STATE_FIN_WAIT
              First FIN packet was received to close the connection.

       RTE_FLOW_CONNTRACK_STATE_CLOSE_WAIT
              First FIN was ACKed.

       RTE_FLOW_CONNTRACK_STATE_LAST_ACK
              Second FIN was received, waiting for the last ACK.

       RTE_FLOW_CONNTRACK_STATE_TIME_WAIT
              Second FIN was ACKed, connection was closed.

       Definition at line 3953 of file rte_flow.h.

   enum rte_flow_conntrack_tcp_last_index
       The last passed TCP packet flags of a connection.

       Enumerator

       RTE_FLOW_CONNTRACK_FLAG_NONE
              No Flag.

       RTE_FLOW_CONNTRACK_FLAG_SYN
              With SYN flag.

       RTE_FLOW_CONNTRACK_FLAG_SYNACK
              With SYNACK flag.

       RTE_FLOW_CONNTRACK_FLAG_FIN
              With FIN flag.

       RTE_FLOW_CONNTRACK_FLAG_ACK
              With ACK flag.

       RTE_FLOW_CONNTRACK_FLAG_RST
              With RST flag.

       Definition at line 3971 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 4123 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.

       Enumerator

       RTE_FLOW_ERROR_TYPE_NONE
              No error.

       RTE_FLOW_ERROR_TYPE_UNSPECIFIED
              Cause unspecified.

       RTE_FLOW_ERROR_TYPE_HANDLE
              Flow rule (handle).

       RTE_FLOW_ERROR_TYPE_ATTR_GROUP
              Group field.

       RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY
              Priority field.

       RTE_FLOW_ERROR_TYPE_ATTR_INGRESS
              Ingress field.

       RTE_FLOW_ERROR_TYPE_ATTR_EGRESS
              Egress field.

       RTE_FLOW_ERROR_TYPE_ATTR_TRANSFER
              Transfer field.

       RTE_FLOW_ERROR_TYPE_ATTR
              Attributes structure.

       RTE_FLOW_ERROR_TYPE_ITEM_NUM
              Pattern length.

       RTE_FLOW_ERROR_TYPE_ITEM_SPEC
              Item specification.

       RTE_FLOW_ERROR_TYPE_ITEM_LAST
              Item specification range.

       RTE_FLOW_ERROR_TYPE_ITEM_MASK
              Item specification mask.

       RTE_FLOW_ERROR_TYPE_ITEM
              Specific pattern item.

       RTE_FLOW_ERROR_TYPE_ACTION_NUM
              Number of actions.

       RTE_FLOW_ERROR_TYPE_ACTION_CONF
              Action configuration.

       RTE_FLOW_ERROR_TYPE_ACTION
              Specific action.

       RTE_FLOW_ERROR_TYPE_STATE
              Current device state.

       Definition at line 4346 of file rte_flow.h.

   enum rte_flow_conv_op
       Conversion operations for flow API objects.

       See also
           rte_flow_conv()

       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.

       • src type:

       const struct rte_flow_attr *

       • dst type:

       struct rte_flow_attr *

       RTE_FLOW_CONV_OP_ITEM
              Convert a single item.

       Duplicates spec, last and mask but not outside objects.

       • src type:

       const struct rte_flow_item *

       • dst type:

       struct rte_flow_item *

       RTE_FLOW_CONV_OP_ITEM_MASK
              Convert a single item mask.

       Duplicates only mask.

       • src type:

       const struct rte_flow_item *

       • dst type:

       struct rte_flow_item *

       RTE_FLOW_CONV_OP_ACTION
              Convert a single action.

       Duplicates conf but not outside objects.

       • src type:

       const struct rte_flow_action *

       • dst type:

       struct rte_flow_action *

       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.

       • src type:

       const struct rte_flow_item *

       • dst type:

       struct rte_flow_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.

       • src type:

       const struct rte_flow_action *

       • dst type:

       struct rte_flow_action *

       RTE_FLOW_CONV_OP_RULE
              Convert a complete flow rule description.

       Comprises attributes, pattern and actions together at once with the usual constraints.

       • src type:

       const struct rte_flow_conv_rule *

       • dst type:

       struct rte_flow_conv_rule *

       RTE_FLOW_CONV_OP_ITEM_NAME
              Convert item type to its name string.

       Writes a NUL-terminated string to dst. Like snprintf(), the returned value excludes the terminator  which
       is always written nonetheless.

       • src type:

       (const void *)enum rte_flow_item_type

       • dst type:

       char *

       RTE_FLOW_CONV_OP_ACTION_NAME
              Convert action type to its name string.

       Writes  a NUL-terminated string to dst. Like snprintf(), the returned value excludes the terminator which
       is always written nonetheless.

       • src type:

       (const void *)enum rte_flow_action_type

       • dst type:

       char *

       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 dst.

       • src type:

       (const void *)enum rte_flow_item_type

       • dst type:

       const char **

       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 dst.

       • src type:

       (const void *)enum rte_flow_action_type

       • dst type:

       const char **

       Definition at line 4412 of file rte_flow.h.

   enum rte_flow_table_insertion_type
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Template table flow rules insertion type.

       Enumerator

       RTE_FLOW_TABLE_INSERTION_TYPE_PATTERN
              Pattern-based insertion.

       RTE_FLOW_TABLE_INSERTION_TYPE_INDEX
              Index-based insertion.

       RTE_FLOW_TABLE_INSERTION_TYPE_INDEX_WITH_PATTERN
              Index-based insertion with pattern.

       Definition at line 5907 of file rte_flow.h.

   enum rte_flow_table_hash_func
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Template table hash index calculation function.

       Enumerator

       RTE_FLOW_TABLE_HASH_FUNC_DEFAULT
              Default hash calculation.

       RTE_FLOW_TABLE_HASH_FUNC_LINEAR
              Linear hash calculation.

       RTE_FLOW_TABLE_HASH_FUNC_CRC32
              32-bit checksum hash calculation.

       RTE_FLOW_TABLE_HASH_FUNC_CRC16
              16-bit checksum hash calculation.

       Definition at line 5928 of file rte_flow.h.

   enum rte_flow_op_status
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Asynchronous operation status.

       Enumerator

       RTE_FLOW_OP_SUCCESS
              The operation was completed successfully.

       RTE_FLOW_OP_ERROR
              The operation was not completed successfully.

       Definition at line 6368 of file rte_flow.h.

   enum rte_flow_query_update_mode
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Query and update operational mode.

       See also
           rte_flow_action_handle_query_update()

           rte_flow_async_action_handle_query_update()

       Enumerator

       RTE_FLOW_QU_QUERY_FIRST
              Query before update.

       RTE_FLOW_QU_UPDATE_FIRST
              Query after update.

       Definition at line 6593 of file rte_flow.h.

   enum rte_flow_encap_hash_field
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Destination field type for the hash calculation, when encap action is used. The encap field  implies  the
       size, meaning XXX_SRC_PORT hash len is 2 bytes, while XXX_NVGRE_FLOW_ID hash len is 1 byte.

       See also
           function rte_flow_calc_encap_hash

       Enumerator

       RTE_FLOW_ENCAP_HASH_FIELD_SRC_PORT
              Calculate hash placed in UDP source port field.

       RTE_FLOW_ENCAP_HASH_FIELD_NVGRE_FLOW_ID
              Calculate hash placed in NVGRE flow ID field.

       Definition at line 6990 of file rte_flow.h.

Function Documentation

   __rte_experimental  int  rte_flow_dev_dump  (uint16_t  port_id,  struct  rte_flow * flow, FILE * file, struct
       rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Dump hardware internal representation information of rte flow to file.

       Parameters
           port_id The port identifier of the Ethernet device.
           flow The pointer of flow rule to dump. Dump all rules if NULL.
           file A pointer to a file for output.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           0 on success, a negative value otherwise.

   static __rte_experimental int rte_flow_dynf_metadata_avail (void) [inline],  [static]
       Check if mbuf dynamic field for metadata is registered.

       Returns
           True if registered, false otherwise.

       Definition at line 4596 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.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   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).

       Parameters
           port_id Port identifier of Ethernet device.
           attr Flow rule attributes.
           pattern Pattern specification (list terminated by the END pattern item).
           actions Associated actions (list terminated by the END action).
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           0 if flow rule is valid and can be created. A negative errno value otherwise (rte_errno is also set),
           the following errors are defined:

       -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.

       Parameters
           port_id Port identifier of Ethernet device.
           attr Flow rule attributes.
           pattern Pattern specification (list terminated by the END pattern item).
           actions Associated actions (list terminated by the END action).
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           A valid handle in case of success, NULL otherwise and rte_errno is set to the positive version of one
           of the error codes defined for rte_flow_validate().

   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.

       Parameters
           port_id Port identifier of Ethernet device.
           flow Flow rule handle to destroy.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental  int  rte_flow_actions_update  (uint16_t  port_id,  struct  rte_flow  * flow, const struct
       rte_flow_action actions[], struct rte_flow_error * error)
       Update a flow rule with new actions on a given port.

       Parameters
           port_id Port identifier of Ethernet device.
           flow Flow rule handle to update.
           actions Associated actions (list terminated by the END action).
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   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.

       Parameters
           port_id Port identifier of Ethernet device.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   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.

       See also
           RTE_FLOW_ACTION_TYPE_COUNT

       Parameters
           port_id Port identifier of Ethernet device.
           flow Flow rule handle to query.
           action Action definition as defined in original flow rule.
           data Pointer to storage for the associated query data type.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   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). When enabled with a bifurcated driver, non-matched packets  are  routed  to  the  kernel  driver
       interface. When disabled (the default), there may be some default rules routing traffic to the DPDK port.

       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'):

       • Toggling promiscuous mode.

       • Toggling allmulticast mode.

       • Configuring MAC addresses.

       • Configuring multicast addresses.

       • Configuring VLAN filters.

       • Configuring Rx filters through the legacy API (e.g. FDIR).

       • Configuring global RSS settings.

       Parameters
           port_id Port identifier of Ethernet device.
           set Nonzero to enter isolated mode, attempt to leave it otherwise.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   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.

       Parameters
           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.

       Returns
           Negative error code (errno value) and rte_errno is set.

   __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)
       Deprecated
           Copy an rte_flow rule description.

       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).

       Parameters
           fd Flow rule description.
           len Total size of allocated data for the flow description.
           attr Flow rule attributes.
           items Pattern specification (list terminated by the END pattern item).
           actions Associated actions (list terminated by the END action).

       Returns
           If  len  is  greater or equal to the size of the flow, the total size of the flow description and its
           data. If len is lower than the size of the flow, the number of bytes that would have been written  to
           desc had it been sufficient. Nothing is written.

   __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():

       • If size is 0, dst may be a NULL pointer, otherwise dst must be non-NULL.

       • If positive, the returned value represents the number of bytes needed to store the conversion of src to
         dst according to op regardless of the size parameter.

       • Since  no  more than size bytes can be written to dst, output is truncated and may be inconsistent when
         the returned value is larger than that.

       • In case of conversion error, a negative error code is returned and dst contents are unspecified.

       Parameters
           op Operation to perform, related to the object type of dst.
           dst Destination buffer address. Must be suitably aligned by the caller.
           size Destination buffer size in bytes.
           src Source object to copy. Depending on op, its type may differ from that of dst.
           error Perform verbose error reporting if not NULL. Initialized in case of error only.

       Returns
           The number of bytes required to convert src to dst on success, a negative errno value  otherwise  and
           rte_errno is set.

       See also
           rte_flow_conv_op

   __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.

       Parameters
           port_id Port identifier of Ethernet device.
           contexts The address of an array of pointers to the aged-out flows contexts.
           nb_contexts The length of context array pointers.
           error Perform verbose error reporting if not NULL. Initialized in case of error only.

       Returns
           if  nb_contexts  is  0,  return the amount of all aged contexts. if nb_contexts is not 0 , return the
           amount of aged flows reported in the context array, otherwise negative errno value.

       See also
           rte_flow_action_age

           RTE_ETH_EVENT_FLOW_AGED

   __rte_experimental int rte_flow_get_q_aged_flows (uint16_t port_id,  uint32_t  queue_id,  void  **  contexts,
       uint32_t nb_contexts, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Get aged-out flows of a given port on the given flow queue.

       If   application   configure   port   attribute   with   RTE_FLOW_PORT_FLAG_STRICT_QUEUE,   there  is  no
       RTE_ETH_EVENT_FLOW_AGED event and this function must be called to get the aged flows synchronously.

       If application configure port attribute without RTE_FLOW_PORT_FLAG_STRICT_QUEUE,  RTE_ETH_EVENT_FLOW_AGED
       event will be triggered at least one new aged out flow was detected on any flow queue after the last call
       to  rte_flow_get_q_aged_flows.  In addition, the queue_id will be ignored. This function can be called to
       get the aged flows asynchronously from the event callback or synchronously regardless the event.

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue to query. Ignored when RTE_FLOW_PORT_FLAG_STRICT_QUEUE not set.
           contexts The address of an array of pointers to the aged-out flows contexts.
           nb_contexts The length of context array pointers.
           error Perform verbose error reporting if not NULL. Initialized in case of error only.

       Returns
           if nb_contexts is 0, return the amount of all aged contexts. if nb_contexts is not  0  ,  return  the
           amount of aged flows reported in the context array, otherwise negative errno value.

       See also
           rte_flow_action_age

           RTE_ETH_EVENT_FLOW_AGED

           rte_flow_port_flag

   __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)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       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.

       Parameters
           port_id The port identifier of the Ethernet device.
           conf Action configuration for the indirect action object creation.
           action Specific configuration of the indirect action object.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           A valid handle in case of success, NULL otherwise and rte_errno is set to  one  of  the  error  codes
           defined:

           • (ENODEV) if port_id invalid.

           • (ENOSYS) if underlying device does not support this functionality.

           • (EIO) if underlying device is removed.

           • (EINVAL) if action invalid.

           • (ENOTSUP) if action valid but unsupported.

   __rte_experimental  int  rte_flow_action_handle_destroy  (uint16_t  port_id,  struct rte_flow_action_handle *
       handle, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Destroy indirect action by handle.

       Parameters
           port_id The port identifier of the Ethernet device.
           handle Handle for the indirect action object to be destroyed.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns

           • (0) if success.

           • (-ENODEV) if port_id invalid.

           • (-ENOSYS) if underlying device does not support this functionality.

           • (-EIO) if underlying device is removed.

           • (-ENOENT) if action pointed by action handle was not found.

           • (-EBUSY) if action pointed by action handle still used by some rules rte_errno is also set.

   __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)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       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.

       Parameters
           port_id The port identifier of the Ethernet device.
           handle Handle for the indirect action object to be updated.
           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.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns

           • (0) if success.

           • (-ENODEV) if port_id invalid.

           • (-ENOSYS) if underlying device does not support this functionality.

           • (-EIO) if underlying device is removed.

           • (-EINVAL) if update invalid.

           • (-ENOTSUP) if update valid but unsupported.

           • (-ENOENT) if indirect action object pointed by handle was not found. rte_errno is also set.

   __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)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       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.

       See also
           RTE_FLOW_ACTION_TYPE_COUNT

       Parameters
           port_id Port identifier of Ethernet device.
           handle Handle for the action object to query.
           data Pointer to storage for the associated query data type.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __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

       Parameters
           port_id Port identifier of Ethernet device.
           tunnel Tunnel properties.
           actions Array of actions to be allocated by the PMD. This  array  should  be  concatenated  with  the
           actions array provided to rte_flow_create.
           num_of_actions Number of actions allocated.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __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

       Parameters
           port_id Port identifier of Ethernet device.
           tunnel Tunnel properties.
           items  Array  of  items  to be allocated by the PMD. This array should be concatenated with the items
           array provided to rte_flow_create.
           num_of_items Number of items allocated.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental uint64_t rte_flow_restore_info_dynflag (void)
       On  reception  of  a mbuf from HW, a call to rte_flow_get_restore_info() may be required to retrieve some
       metadata. This function returns the associated mbuf ol_flags.

       Note:  the  dynamic  flag  is  registered  during  a   call   to   rte_eth_rx_metadata_negotiate()   with
       RTE_ETH_RX_METADATA_TUNNEL_ID.

       Returns
           The offload flag indicating rte_flow_get_restore_info() must be called.

   __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)
       If a mbuf contains the rte_flow_restore_info_dynflag() flag in  ol_flags,  populate  the  current  packet
       processing state.

       One should negotiate tunnel metadata delivery from the NIC to the HW.

       See also
           rte_eth_rx_metadata_negotiate()

           RTE_ETH_RX_METADATA_TUNNEL_ID

       Parameters
           port_id Port identifier of Ethernet device.
           m Mbuf struct.
           info Restore information. Upon success contains the HW state.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __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.

       Parameters
           port_id Port identifier of Ethernet device.
           actions Array of actions to be released.
           num_of_actions Number of elements in actions array.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __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.

       Parameters
           port_id Port identifier of Ethernet device.
           items Array of items to be released.
           num_of_items Number of elements in item array.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   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.

       Note
           If the PMD serving port_id doesn't have the corresponding method implemented,  the  API  will  return
           port_id via proxy_port_id.

       Parameters
           port_id Indicates the port to get a 'proxy' for
           proxy_port_id Indicates the 'proxy' port
           error If not NULL, allows the PMD to provide verbose report in case of error

       Returns
           0 on success, a negative error code otherwise

   __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)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Create the flex item with specified configuration over the Ethernet device.

       Parameters
           port_id Port identifier of Ethernet device.
           conf Item configuration.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           Non-NULL opaque pointer on success, NULL otherwise and rte_errno is set.

   __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.

       Parameters
           port_id Port identifier of Ethernet device.
           handle Handle of the item existing on the specified device.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental int rte_flow_info_get (uint16_t port_id, struct  rte_flow_port_info  *  port_info,  struct
       rte_flow_queue_info * queue_info, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Get information about flow engine resources.

       Parameters
           port_id Port identifier of Ethernet device.
           port_info  A  pointer  to  a  structure  of  type  rte_flow_port_info to be filled with the resources
           information of the port.
           queue_info A pointer to a structure of type rte_flow_queue_info to be filled  with  the  asynchronous
           queues information.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental int rte_flow_configure (uint16_t port_id, const  struct  rte_flow_port_attr  *  port_attr,
       uint16_t nb_queue, const struct rte_flow_queue_attr * queue_attr[], struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Configure the port's flow API engine.

       This API can only be invoked before the application starts using the rest of the flow library functions.

       The  API  can be invoked multiple times to change the settings. The port, however, may reject changes and
       keep the old config.

       Parameters  in  configuration  attributes  must  not  exceed  numbers  of  resources  returned   by   the
       rte_flow_info_get API.

       Parameters
           port_id Port identifier of Ethernet device.
           port_attr Port configuration attributes.
           nb_queue Number of flow queues to be configured.
           queue_attr  Array  that  holds  attributes  for  each  flow  queue.  Number  of  elements  is  set in
           port_attr.nb_queues.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental  struct  rte_flow_pattern_template  *  rte_flow_pattern_template_create (uint16_t port_id,
       const struct rte_flow_pattern_template_attr * template_attr, const struct rte_flow_item pattern[], struct
       rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Create flow pattern template.

       The pattern template defines common matching fields without values. For example, matching on 5 tuple  TCP
       flow,  the template will be eth(null) + IPv4(source + dest) + TCP(s_port + d_port), while values for each
       rule will be set during the flow rule creation. The number and order of items in the template must be the
       same at the rule creation.

       Parameters
           port_id Port identifier of Ethernet device.
           template_attr Pattern template attributes.
           pattern Pattern specification (list terminated by the END pattern item). The spec member of  an  item
           is not used unless the end member is used.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           Handle on success, NULL otherwise and rte_errno is set.

   __rte_experimental int rte_flow_pattern_template_destroy (uint16_t port_id, struct  rte_flow_pattern_template
       * pattern_template, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Destroy flow pattern template.

       This function may be called only when there are no more tables referencing this template.

       Parameters
           port_id Port identifier of Ethernet device.
           pattern_template Handle of the template to be destroyed.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental struct rte_flow_actions_template  *  rte_flow_actions_template_create  (uint16_t  port_id,
       const  struct  rte_flow_actions_template_attr  *  template_attr,  const struct rte_flow_action actions[],
       const struct rte_flow_action masks[], struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Create flow actions template.

       The actions template holds a list of action types without values. For example, the template to change TCP
       ports is TCP(s_port + d_port), while values for each rule will be set during the flow rule creation.  The
       number and order of actions in the template must be the same at the rule creation.

       Parameters
           port_id Port identifier of Ethernet device.
           template_attr Template attributes.
           actions Associated actions (list terminated by the END action). The spec member is only used if masks
           spec is non-zero.
           masks List of actions that marks which of the action's member is constant. A mask has the same format
           as  the  corresponding  action.  If the action field in masks is not 0, the corresponding value in an
           action from actions will be the part of the template and used in all flow rules. The order of actions
           in masks is the same as in actions. In case of indirect actions present in actions, the actual action
           type should be present in mask.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           Handle on success, NULL otherwise and rte_errno is set.

   __rte_experimental  int rte_flow_actions_template_destroy (uint16_t port_id, struct rte_flow_actions_template
       * actions_template, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Destroy flow actions template.

       This function may be called only when there are no more tables referencing this template.

       Parameters
           port_id Port identifier of Ethernet device.
           actions_template Handle to the template to be destroyed.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental  bool  rte_flow_template_table_resizable  (__rte_unused  uint16_t  port_id,  const  struct
       rte_flow_template_table_attr * tbl_attr)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Query whether a table can be resized.

       Parameters
           port_id Port identifier of Ethernet device.
           tbl_attr Template table.

       Returns
           True if the table can be resized.

   __rte_experimental struct rte_flow_template_table * rte_flow_template_table_create (uint16_t  port_id,  const
       struct rte_flow_template_table_attr * table_attr, struct rte_flow_pattern_template * pattern_templates[],
       uint8_t   nb_pattern_templates,   struct   rte_flow_actions_template   *   actions_templates[],   uint8_t
       nb_actions_templates, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Create flow template table.

       A template table consists of multiple pattern templates and actions templates associated  with  a  single
       set of rule attributes (group ID, priority and traffic direction).

       Each  rule  is free to use any combination of pattern and actions templates and specify particular values
       for items and actions it would like to change.

       Parameters
           port_id Port identifier of Ethernet device.
           table_attr Template table attributes.
           pattern_templates Array of pattern templates to be used in this table.
           nb_pattern_templates The number of pattern templates in the pattern_templates array.
           actions_templates Array of actions templates to be used in this table.
           nb_actions_templates The number of actions templates in the actions_templates array.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           Handle on success, NULL otherwise and rte_errno is set.

   __rte_experimental  int  rte_flow_template_table_destroy  (uint16_t port_id, struct rte_flow_template_table *
       template_table, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Destroy flow template table.

       This function may be called only when there are no more flow rules referencing this table.

       Parameters
           port_id Port identifier of Ethernet device.
           template_table Handle to the table to be destroyed.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental  int  rte_flow_group_set_miss_actions  (uint16_t  port_id, uint32_t group_id, const struct
       rte_flow_group_attr * attr, const struct rte_flow_action actions[], struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Set group miss actions.

       Parameters
           port_id Port identifier of Ethernet device.
           group_id Identifier of a group to set miss actions for.
           attr Group attributes.
           actions List of group miss actions.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental struct rte_flow * rte_flow_async_create (uint16_t port_id, uint32_t queue_id, const struct
       rte_flow_op_attr  *  op_attr, struct rte_flow_template_table * template_table, const struct rte_flow_item
       pattern[],   uint8_t   pattern_template_index,   const   struct   rte_flow_action   actions[],    uint8_t
       actions_template_index, void * user_data, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Enqueue rule creation operation.

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue used to insert the rule.
           op_attr Rule creation operation attributes.
           template_table Template table to select templates from.
           pattern  List  of  pattern  items  to  be  used. The list order should match the order in the pattern
           template. The spec is the only relevant member of the item that is being used.
           pattern_template_index Pattern template index in the table.
           actions List of actions to be used. The list order should match the order in the actions template.
           actions_template_index Actions template index in the table.
           user_data The user data that will be returned on the completion events.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           Handle  on  success,  NULL otherwise and rte_errno is set. The rule handle doesn't mean that the rule
           has been populated. Only completion result indicates that if there was success or failure.

   __rte_experimental struct rte_flow * rte_flow_async_create_by_index  (uint16_t  port_id,  uint32_t  queue_id,
       const  struct  rte_flow_op_attr  *  op_attr,  struct  rte_flow_template_table  * template_table, uint32_t
       rule_index, const struct rte_flow_action actions[], uint8_t  actions_template_index,  void  *  user_data,
       struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Enqueue rule creation operation.

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue used to insert the rule.
           op_attr Rule creation operation attributes.
           template_table Template table to select templates from.
           rule_index Rule index in the table.
           actions List of actions to be used. The list order should match the order in the actions template.
           actions_template_index Actions template index in the table.
           user_data The user data that will be returned on the completion events.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           Handle on success, NULL otherwise and rte_errno is set. The rule handle doesn't mean  that  the  rule
           has been populated. Only completion result indicates that if there was success or failure.

   __rte_experimental  struct rte_flow * rte_flow_async_create_by_index_with_pattern (uint16_t port_id, uint32_t
       queue_id, const struct rte_flow_op_attr  *  op_attr,  struct  rte_flow_template_table  *  template_table,
       uint32_t  rule_index,  const struct rte_flow_item pattern[], uint8_t pattern_template_index, const struct
       rte_flow_action actions[], uint8_t actions_template_index, void  *  user_data,  struct  rte_flow_error  *
       error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Enqueue  rule  creation  by  index  with  pattern  operation. Packets are only matched if there is a rule
       inserted at the index.

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue used to insert the rule.
           op_attr Rule creation operation attributes.
           template_table Template table to select templates from.
           rule_index Rule index in the table. Inserting a rule to already occupied index results  in  undefined
           behavior.
           pattern  List  of  pattern  items  to  be  used. The list order should match the order in the pattern
           template. The spec is the only relevant member of the item that is being used.
           pattern_template_index Pattern template index in the table.
           actions List of actions to be used. The list order should match the order in the actions template.
           actions_template_index Actions template index in the table.
           user_data The user data that will be returned on the completion events.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           Handle  on  success,  NULL otherwise and rte_errno is set. The rule handle doesn't mean that the rule
           has been populated. Only completion result indicates that if there was success or failure.

   __rte_experimental  int  rte_flow_async_destroy  (uint16_t   port_id,   uint32_t   queue_id,   const   struct
       rte_flow_op_attr * op_attr, struct rte_flow * flow, void * user_data, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Enqueue rule destruction operation.

       This function enqueues a destruction operation on the queue. Application should assume that after calling
       this  function  the  rule  handle is not valid anymore. Completion indicates the full removal of the rule
       from the HW.

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue which is used to destroy the rule. This must match the queue on  which  the  rule
           was created.
           op_attr Rule destruction operation attributes.
           flow Flow handle to be destroyed.
           user_data The user data that will be returned on the completion events.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental int rte_flow_async_actions_update  (uint16_t  port_id,  uint32_t  queue_id,  const  struct
       rte_flow_op_attr  *  op_attr,  struct  rte_flow  *  flow, const struct rte_flow_action actions[], uint8_t
       actions_template_index, void * user_data, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Enqueue rule update operation.

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue used to insert the rule.
           op_attr Rule creation operation attributes.
           flow Flow rule to be updated.
           actions List of actions to be used. The list order should match the order in the actions template.
           actions_template_index Actions template index in the table.
           user_data The user data that will be returned on the completion events.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental int rte_flow_push (uint16_t port_id, uint32_t queue_id, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Push  all  internally  stored  rules  to  the  HW.  Postponed rules are rules that were inserted with the
       postpone flag set. Can be used to notify the HW about batch of rules prepared by the  SW  to  reduce  the
       number of communications between the HW and SW.

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue to be pushed.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental int rte_flow_pull (uint16_t port_id, uint32_t queue_id, struct  rte_flow_op_result  res[],
       uint16_t n_res, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Pull  a  rte flow operation. The application must invoke this function in order to complete the flow rule
       offloading and to retrieve the flow rule operation status.

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue which is used to pull the operation.
           res Array of results that will be set.
           n_res Maximum number of results that can be returned. This value is equal to  the  size  of  the  res
           array.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           Number of results that were pulled, a negative errno value otherwise and rte_errno is set.

   __rte_experimental struct rte_flow_action_handle  *  rte_flow_async_action_handle_create  (uint16_t  port_id,
       uint32_t  queue_id,  const  struct  rte_flow_op_attr * op_attr, const struct rte_flow_indir_action_conf *
       indir_action_conf, const struct rte_flow_action * action,  void  *  user_data,  struct  rte_flow_error  *
       error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Enqueue indirect action creation operation.

       See also
           rte_flow_action_handle_create

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue which is used to create the rule.
           op_attr Indirect action creation operation attributes.
           indir_action_conf Action configuration for the indirect action object creation.
           action Specific configuration of the indirect action object.
           user_data The user data that will be returned on the completion events.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           A valid handle in case of success, NULL otherwise and rte_errno is set.

   __rte_experimental int  rte_flow_async_action_handle_destroy  (uint16_t  port_id,  uint32_t  queue_id,  const
       struct  rte_flow_op_attr  *  op_attr,  struct  rte_flow_action_handle  * action_handle, void * user_data,
       struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Enqueue indirect action destruction operation. The destroy queue must be the same as the queue  on  which
       the action was created.

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue which is used to destroy the rule.
           op_attr Indirect action destruction operation attributes.
           action_handle Handle for the indirect action object to be destroyed.
           user_data The user data that will be returned on the completion events.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental int rte_flow_async_action_handle_update (uint16_t port_id, uint32_t queue_id, const struct
       rte_flow_op_attr * op_attr, struct rte_flow_action_handle * action_handle, const void *  update,  void  *
       user_data, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Enqueue indirect action update operation.

       See also
           rte_flow_action_handle_create

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue which is used to update the rule.
           op_attr Indirect action update operation attributes.
           action_handle Handle for the indirect action object to be updated.
           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.
           user_data The user data that will be returned on the completion events.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental int rte_flow_async_action_handle_query (uint16_t port_id, uint32_t queue_id, const  struct
       rte_flow_op_attr  *  op_attr,  const  struct  rte_flow_action_handle * action_handle, void * data, void *
       user_data, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Enqueue indirect action query operation.

       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. Data will be available only when completion
       event returns.

       See also
           rte_flow_async_action_handle_query

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue which is used to query the action.
           op_attr Indirect action update operation attributes.
           action_handle Handle for the action object to query.
           data Pointer to storage for the associated query data type. The out data will be available only  when
           completion event returns from rte_flow_pull.
           user_data The user data that will be returned on the completion events.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

   __rte_experimental int rte_flow_action_handle_query_update (uint16_t port_id, struct rte_flow_action_handle *
       handle, const void * update, void * query, enum rte_flow_query_update_mode mode, struct rte_flow_error  *
       error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Query  and/or  update  indirect  flow  action. If both query and update not NULL, the function atomically
       queries and updates indirect action. Query and  update  are  carried  in  order  specified  in  the  mode
       parameter. If ether query or update is NULL, the function executes complementing operation.

       Parameters
           port_id Port identifier of Ethernet device.
           handle Handle for the indirect action object to be updated.
           update If not NULL, update profile specification used to modify the action pointed by handle.
           query If not NULL pointer to storage for the associated query data type.
           mode Operational mode.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

           • (-ENODEV) if port_id invalid.

           • (-ENOTSUP) if underlying device does not support this functionality.

           • (-EINVAL) if handle or mode invalid or both query and update are NULL.

   __rte_experimental int rte_flow_async_action_handle_query_update (uint16_t port_id, uint32_t queue_id,  const
       struct  rte_flow_op_attr  *  attr,  struct  rte_flow_action_handle  * handle, const void * update, void *
       query, enum rte_flow_query_update_mode mode, void * user_data, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Enqueue async indirect flow action query and/or update

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue which is used to update the rule.
           attr Indirect action update operation attributes.
           handle Handle for the indirect action object to be updated.
           update If not NULL, update profile specification used to modify the action pointed by handle.
           query If not NULL, pointer to storage for the associated query data type. Query  result  returned  on
           async completion event.
           mode Operational mode.
           user_data The user data that will be returned on async completion event.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           0 on success, a negative errno value otherwise and rte_errno is set.

           • (-ENODEV) if port_id invalid.

           • (-ENOTSUP) if underlying device does not support this functionality.

           • (-EINVAL) if handle or mode invalid or both update and query are NULL.

   __rte_experimental struct rte_flow_action_list_handle * rte_flow_action_list_handle_create (uint16_t port_id,
       const  struct  rte_flow_indir_action_conf  *  conf,  const  struct  rte_flow_action  *  actions,   struct
       rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Create  an  indirect  flow  action  object  from  flow actions list. The object is identified by a unique
       handle. The handle has single state and configuration across all the flow rules using it.

       Parameters
           port_id The port identifier of the Ethernet device.
           conf Action configuration for the indirect action list creation.
           actions Specific configuration of the indirect action lists.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns
           A  valid  handle  in  case  of success, NULL otherwise and rte_errno is set to one of the error codes
           defined:

           • (-ENODEV) if port_id invalid.

           • (-ENOSYS) if underlying device does not support this functionality.

           • (-EIO) if underlying device is removed.

           • (-EINVAL) if actions list invalid.

           • (-ENOTSUP) if action list element valid but unsupported.

   __rte_experimental struct rte_flow_action_list_handle  *  rte_flow_async_action_list_handle_create  (uint16_t
       port_id, uint32_t queue_id, const struct rte_flow_op_attr * attr, const struct rte_flow_indir_action_conf
       * conf, const struct rte_flow_action * actions, void * user_data, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Async  function  call  to  create  an  indirect  flow action object from flow actions list. The object is
       identified by a unique handle. The handle has single state and configuration across all  the  flow  rules
       using it.

       Parameters
           port_id The port identifier of the Ethernet device.
           queue_id Flow queue which is used to update the rule.
           attr Indirect action update operation attributes.
           conf Action configuration for the indirect action list creation.
           actions Specific configuration of the indirect action list.
           user_data The user data that will be returned on async completion event.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns
           A valid handle in case of success, NULL otherwise and rte_errno is set to  one  of  the  error  codes
           defined:

           • (-ENODEV) if port_id invalid.

           • (-ENOSYS) if underlying device does not support this functionality.

           • (-EIO) if underlying device is removed.

           • (-EINVAL) if actions list invalid.

           • (-ENOTSUP) if action list element valid but unsupported.

   __rte_experimental      int      rte_flow_action_list_handle_destroy      (uint16_t      port_id,      struct
       rte_flow_action_list_handle * handle, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Destroy indirect actions list by handle.

       Parameters
           port_id The port identifier of the Ethernet device.
           handle Handle for the indirect actions list to be destroyed.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns

           • (0) if success.

           • (-ENODEV) if port_id invalid.

           • (-ENOSYS) if underlying device does not support this functionality.

           • (-EIO) if underlying device is removed.

           • (-ENOENT) if actions list pointed by action handle was not found.

           • (-EBUSY) if actions list pointed by action handle still used

   __rte_experimental  int rte_flow_async_action_list_handle_destroy (uint16_t port_id, uint32_t queue_id, const
       struct rte_flow_op_attr * op_attr, struct rte_flow_action_list_handle * handle, void * user_data,  struct
       rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Enqueue  indirect  action  list destruction operation. The destroy queue must be the same as the queue on
       which the action was created.

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue which is used to destroy the rule.
           op_attr Indirect action destruction operation attributes.
           handle Handle for the indirect action object to be destroyed.
           user_data The user data that will be returned on the completion events.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns

           • (0) if success.

           • (-ENODEV) if port_id invalid.

           • (-ENOSYS) if underlying device does not support this functionality.

           • (-EIO) if underlying device is removed.

           • (-ENOENT) if actions list pointed by action handle was not found.

           • (-EBUSY) if actions list pointed by action handle still used

   __rte_experimental    int    rte_flow_action_list_handle_query_update   (uint16_t   port_id,   const   struct
       rte_flow_action_list_handle   *   handle,   const   void    **    update,    void    **    query,    enum
       rte_flow_query_update_mode mode, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Query  and/or  update  indirect  flow  actions  list.  If  both  query  and update not NULL, the function
       atomically queries and updates indirect action. Query and update are carried in order  specified  in  the
       mode parameter. If ether query or update is NULL, the function executes complementing operation.

       Parameters
           port_id Port identifier of Ethernet device.
           handle Handle for the indirect actions list object to be updated.
           update  If  the  action  list  handle was created from n actions A1 / A2 ... An / END non-NULL update
           parameter is an array [U1, U2, ... Un] where Ui points to Ai update context or NULL if Ai should  not
           be updated.
           query  If  the  action  list  handle  was  created from n actions A1 / A2 ... An / END non-NULL query
           parameter is an array [Q1, Q2, ... Qn] where Qi points to Ai query context or NULL if Ai  should  not
           be queried.
           mode Operational mode.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns

           • (0) if success.

       • (-ENODEV) if port_id invalid.

       • (-ENOTSUP) if underlying device does not support this functionality.

       • (-EINVAL) if handle or mode invalid or both query and update are NULL.

   __rte_experimental int rte_flow_async_action_list_handle_query_update (uint16_t port_id,  uint32_t  queue_id,
       const  struct  rte_flow_op_attr  * attr, const struct rte_flow_action_list_handle * handle, const void **
       update, void ** query, enum rte_flow_query_update_mode mode, void * user_data,  struct  rte_flow_error  *
       error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Enqueue  async  indirect  flow  actions  list  query and/or update If both query and update not NULL, the
       function atomically queries and updates indirect action. Query and update are carried in order  specified
       in the mode parameter. If ether query or update is NULL, the function executes complementing operation.

       Parameters
           port_id Port identifier of Ethernet device.
           queue_id Flow queue which is used to update the rule.
           attr Indirect action update operation attributes.
           handle Handle for the indirect actions list object to be updated.
           update  If  the  action  list  handle was created from n actions A1 / A2 ... An / END non-NULL update
           parameter is an array [U1, U2, ... Un] where Ui points to Ai update context or NULL if Ai should  not
           be updated.
           query  If  the  action  list  handle  was  created from n actions A1 / A2 ... An / END non-NULL query
           parameter is an array [Q1, Q2, ... Qn] where Qi points to Ai query context or NULL if Ai  should  not
           be queried. Query result returned on async completion event.
           mode Operational mode.
           user_data The user data that will be returned on async completion event.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns

           • (0) if success.

       • (-ENODEV) if port_id invalid.

       • (-ENOTSUP) if underlying device does not support this functionality.

       • (-EINVAL) if handle or mode invalid or both update and query are NULL.

   __rte_experimental int rte_flow_calc_table_hash (uint16_t port_id,  const  struct  rte_flow_template_table  *
       table,  const  struct  rte_flow_item  pattern[],  uint8_t pattern_template_index, uint32_t * hash, struct
       rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Calculate the hash for a given pattern in a given table as calculated by the HW.

       Parameters
           port_id Port identifier of Ethernet device.
           table The table the SW wishes to simulate.
           pattern The values to be used in the hash calculation.
           pattern_template_index The pattern index in the table to be used for the calculation.
           hash Used to return the calculated hash.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns

           • (0) if success.

           • (-ENODEV) if port_id invalid.

           • (-ENOTSUP) if underlying device does not support this functionality.

   __rte_experimental int rte_flow_calc_encap_hash (uint16_t port_id, const struct rte_flow_item pattern[], enum
       rte_flow_encap_hash_field dest_field, uint8_t hash_len, uint8_t * hash, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Simulate  HW hash calculation that is done when an encap action is being used. This hash can be stored in
       tunnel outer header to improve packet distribution.

       Parameters
           port_id Port identifier of Ethernet device.
           pattern The values to be used in the hash calculation.
           dest_field Type of destination field for hash calculation.
           hash_len The length of the hash pointer in bytes. Should be according to dest_field.
           hash Used to return the calculated hash. It will be written in network order, so hash[0] is the  MSB.
           The number of bytes is based on the destination field type.
           error  Perform  verbose  error reporting if not NULL. PMDs initialize this structure in case of error
           only.

       Returns

           • (0) if success.

           • (-ENODEV) if port_id invalid.

           • (-ENOTSUP) if underlying device does not support this functionality.

           • (-EINVAL) if pattern doesn't hold enough information to calculate the  hash  or  the  dest  is  not
             supported.

   __rte_experimental  int  rte_flow_template_table_resize  (uint16_t  port_id, struct rte_flow_template_table *
       table, uint32_t nb_rules, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Update template table for new flow rules capacity.

       Parameters
           port_id Port identifier of Ethernet device.
           table Template table to modify.
           nb_rules New flow rules capacity.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns

           • (0) if success.

           • (-ENODEV) if port_id invalid.

           • (-ENOTSUP) if underlying device does not support this functionality.

           • (-EINVAL)  if  table is not resizable or table resize to nb_rules is not supported or unrecoverable
             table error.

   __rte_experimental  int  rte_flow_async_update_resized  (uint16_t  port_id,  uint32_t  queue,  const   struct
       rte_flow_op_attr * attr, struct rte_flow * rule, void * user_data, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Update  rule  for  the  new  table configuration after table resize. Must be called for each rule created
       before table resize. If called for rule created after table resize returns success.

       Parameters
           port_id Port identifier of Ethernet device.
           queue Flow queue for async operation.
           attr Async operation attributes.
           rule Flow rule to update.
           user_data The user data that will be returned on async completion event.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns

           • (0) if success.

           • (-ENODEV) if port_id invalid.

           • (-ENOTSUP) if underlying device does not support this functionality.

           • (-EINVAL)  if  table  was  not resized. If rule cannot be updated after table resize, unrecoverable
             table error.

   __rte_experimental     int     rte_flow_template_table_resize_complete     (uint16_t     port_id,      struct
       rte_flow_template_table * table, struct rte_flow_error * error)
       Warning
           EXPERIMENTAL: this API may change without prior notice.

       Resume  normal  operational  mode  after table was resized and table rules were updated for the new table
       configuration.

       Parameters
           port_id Port identifier of Ethernet device.
           table Template table that undergoing resize operation.
           error Perform verbose error reporting if not NULL. PMDs initialize this structure in  case  of  error
           only.

       Returns

           • (0) if success.

           • (-ENODEV) if port_id invalid.

           • (-ENOTSUP) if underlying device does not support this functionality.

           • (-EBUSY) if not all table rules were updated.

           • (-EINVAL) if table cannot complete table resize, unrecoverable error.

Variable Documentation

   const struct rte_flow_item_quota rte_flow_item_quota_mask [static]
       Initial value:.PP
       = {
           .state = (enum rte_flow_quota_state)0xff
       }
       Default mask for RTE_FLOW_ITEM_TYPE_QUOTA

       Definition at line 755 of file rte_flow.h.

   const struct rte_flow_item_higig2_hdr rte_flow_item_higig2_hdr_mask [static]
       Initial value:.PP
       = {
           .hdr = {
               .ppt1 = {
                   .classification = RTE_BE16(UINT16_MAX),
                   .vid = RTE_BE16(0xfff),
               },
           },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_HIGIG2.

       Definition at line 771 of file rte_flow.h.

   const struct rte_flow_item_any rte_flow_item_any_mask [static]
       Initial value:.PP
       = {
           .num = 0x00000000,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_ANY.

       Definition at line 798 of file rte_flow.h.

   const struct rte_flow_item_port_id rte_flow_item_port_id_mask [static]
       Initial value:.PP
       = {
           .id = 0xffffffff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_PORT_ID.

       Definition at line 823 of file rte_flow.h.

   const struct rte_flow_item_raw rte_flow_item_raw_mask [static]
       Initial value:.PP
       = {
           .relative = 1,
           .search = 1,
           .reserved = 0x3fffffff,
           .offset = 0xffffffff,
           .limit = 0xffff,
           .length = 0xffff,
           .pattern = NULL,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_RAW.

       Definition at line 858 of file rte_flow.h.

   const struct rte_flow_item_eth rte_flow_item_eth_mask [static]
       Initial value:.PP
       = {
           .hdr.dst_addr.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
           .hdr.src_addr.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
           .hdr.ether_type = RTE_BE16(0x0000),
       }
       Default mask for RTE_FLOW_ITEM_TYPE_ETH.

       Definition at line 905 of file rte_flow.h.

   const struct rte_flow_item_vlan rte_flow_item_vlan_mask [static]
       Initial value:.PP
       = {
           .hdr.vlan_tci = RTE_BE16(0x0fff),
           .hdr.eth_proto = RTE_BE16(0x0000),
       }
       Default mask for RTE_FLOW_ITEM_TYPE_VLAN.

       Definition at line 946 of file rte_flow.h.

   const struct rte_flow_item_ipv4 rte_flow_item_ipv4_mask [static]
       Initial value:.PP
       = {
           .hdr = {
               .src_addr = RTE_BE32(0xffffffff),
               .dst_addr = RTE_BE32(0xffffffff),
           },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_IPV4.

       Definition at line 965 of file rte_flow.h.

   const struct rte_flow_item_ipv6 rte_flow_item_ipv6_mask [static]
       Initial value:.PP
       = {
           .hdr = {
               .src_addr = RTE_IPV6_MASK_FULL,
               .dst_addr = RTE_IPV6_MASK_FULL,
           },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_IPV6.

       Definition at line 1006 of file rte_flow.h.

   const struct rte_flow_item_icmp rte_flow_item_icmp_mask [static]
       Initial value:.PP
       = {
           .hdr = {
               .icmp_type = 0xff,
               .icmp_code = 0xff,
           },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_ICMP.

       Definition at line 1037 of file rte_flow.h.

   const struct rte_flow_item_udp rte_flow_item_udp_mask [static]
       Initial value:.PP
       = {
           .hdr = {
               .src_port = RTE_BE16(0xffff),
               .dst_port = RTE_BE16(0xffff),
           },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_UDP.

       Definition at line 1056 of file rte_flow.h.

   const struct rte_flow_item_tcp rte_flow_item_tcp_mask [static]
       Initial value:.PP
       = {
           .hdr = {
               .src_port = RTE_BE16(0xffff),
               .dst_port = RTE_BE16(0xffff),
           },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_TCP.

       Definition at line 1075 of file rte_flow.h.

   const struct rte_flow_item_sctp rte_flow_item_sctp_mask [static]
       Initial value:.PP
       = {
           .hdr = {
               .src_port = RTE_BE16(0xffff),
               .dst_port = RTE_BE16(0xffff),
           },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_SCTP.

       Definition at line 1094 of file rte_flow.h.

   const struct rte_flow_item_vxlan rte_flow_item_vxlan_mask [static]
       Initial value:.PP
       = {
           .hdr.vni = { 0xff, 0xff, 0xff },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_VXLAN.

       Definition at line 1130 of file rte_flow.h.

   const struct rte_flow_item_e_tag rte_flow_item_e_tag_mask [static]
       Initial value:.PP
       = {
           .rsvd_grp_ecid_b = RTE_BE16(0x3fff),
       }
       Default mask for RTE_FLOW_ITEM_TYPE_E_TAG.

       Definition at line 1158 of file rte_flow.h.

   const struct rte_flow_item_nvgre rte_flow_item_nvgre_mask [static]
       Initial value:.PP
       = {
           .tni =  { 0xff, 0xff, 0xff },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_NVGRE.

       Definition at line 1183 of file rte_flow.h.

   const struct rte_flow_item_mpls rte_flow_item_mpls_mask [static]
       Initial value:.PP
       = {
           .label_tc_s = { 0xff, 0xff, 0xf0 },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_MPLS.

       Definition at line 1203 of file rte_flow.h.

   const struct rte_flow_item_gre rte_flow_item_gre_mask [static]
       Initial value:.PP
       = {
           .protocol = RTE_BE16(0xffff),
       }
       Default mask for RTE_FLOW_ITEM_TYPE_GRE.

       Definition at line 1224 of file rte_flow.h.

   const struct rte_flow_item_fuzzy rte_flow_item_fuzzy_mask [static]
       Initial value:.PP
       = {
           .thresh = 0xffffffff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_FUZZY.

       Definition at line 1272 of file rte_flow.h.

   const struct rte_flow_item_gtp rte_flow_item_gtp_mask [static]
       Initial value:.PP
       = {
           .hdr.teid = RTE_BE32(UINT32_MAX),
       }
       Default mask for RTE_FLOW_ITEM_TYPE_GTP.

       Definition at line 1306 of file rte_flow.h.

   const struct rte_flow_item_esp rte_flow_item_esp_mask [static]
       Initial value:.PP
       = {
           .hdr = {
               .spi = RTE_BE32(0xffffffff),
           },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_ESP.

       Definition at line 1322 of file rte_flow.h.

   const struct rte_flow_item_geneve rte_flow_item_geneve_mask [static]
       Initial value:.PP
       = {
           .vni =  { 0xff, 0xff, 0xff },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_GENEVE.

       Definition at line 1347 of file rte_flow.h.

   const struct rte_flow_item_vxlan_gpe rte_flow_item_vxlan_gpe_mask [static]
       Initial value:.PP
       = {
           .hdr.vni =  { 0xff, 0xff, 0xff },
       }

       Deprecated

       See also
           rte_flow_item_vxlan_mask

       Default mask for RTE_FLOW_ITEM_TYPE_VXLAN_GPE.

       Definition at line 1384 of file rte_flow.h.

   const struct rte_flow_item_arp_eth_ipv4 rte_flow_item_arp_eth_ipv4_mask [static]
       Initial value:.PP
       = {
           .hdr.arp_data.arp_sha.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
           .hdr.arp_data.arp_sip = RTE_BE32(UINT32_MAX),
           .hdr.arp_data.arp_tha.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
           .hdr.arp_data.arp_tip = RTE_BE32(UINT32_MAX),
       }
       Default mask for RTE_FLOW_ITEM_TYPE_ARP_ETH_IPV4.

       Definition at line 1418 of file rte_flow.h.

   const struct rte_flow_item_ipv6_ext rte_flow_item_ipv6_ext_mask [static]
       Initial value:.PP
       = {
           .next_hdr = 0xff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_IPV6_EXT.

       Definition at line 1443 of file rte_flow.h.

   const struct rte_flow_item_icmp6 rte_flow_item_icmp6_mask [static]
       Initial value:.PP
       = {
           .type = 0xff,
           .code = 0xff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_ICMP6.

       Definition at line 1475 of file rte_flow.h.

   const struct rte_flow_item_icmp6_nd_ns rte_flow_item_icmp6_nd_ns_mask [static]
       Initial value:.PP
       = {
           .target_addr = RTE_IPV6_MASK_FULL,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_ICMP6_ND_NS.

       Definition at line 1507 of file rte_flow.h.

   const struct rte_flow_item_icmp6_nd_na rte_flow_item_icmp6_nd_na_mask [static]
       Initial value:.PP
       = {
           .target_addr = RTE_IPV6_MASK_FULL,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_ICMP6_ND_NA.

       Definition at line 1532 of file rte_flow.h.

   const struct rte_flow_item_icmp6_nd_opt rte_flow_item_icmp6_nd_opt_mask [static]
       Initial value:.PP
       = {
           .type = 0xff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT.

       Definition at line 1556 of file rte_flow.h.

   const struct rte_flow_item_icmp6_nd_opt_sla_eth rte_flow_item_icmp6_nd_opt_sla_eth_mask [static]
       Initial value:.PP
       = {
           .sla.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_SLA_ETH.

       Definition at line 1581 of file rte_flow.h.

   const struct rte_flow_item_icmp6_nd_opt_tla_eth rte_flow_item_icmp6_nd_opt_tla_eth_mask [static]
       Initial value:.PP
       = {
           .tla.addr_bytes = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_ICMP6_ND_OPT_TLA_ETH.

       Definition at line 1606 of file rte_flow.h.

   const struct rte_flow_item_meta rte_flow_item_meta_mask [static]
       Initial value:.PP
       = {
           .data = UINT32_MAX,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_META.

       Definition at line 1628 of file rte_flow.h.

   const struct rte_flow_item_gtp_psc rte_flow_item_gtp_psc_mask [static]
       Initial value:.PP
       = {
           .hdr.qfi = 0x3f,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_GTP_PSC.

       Definition at line 1645 of file rte_flow.h.

   const struct rte_flow_item_pppoe_proto_id rte_flow_item_pppoe_proto_id_mask [static]
       Initial value:.PP
       = {
           .proto_id = RTE_BE16(0xffff),
       }
       Default mask for RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID.

       Definition at line 1684 of file rte_flow.h.

   const struct rte_flow_item_tag rte_flow_item_tag_mask [static]
       Initial value:.PP
       = {
           .data = 0xffffffff,
           .index = 0xff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_TAG.

       Definition at line 1704 of file rte_flow.h.

   const struct rte_flow_item_l2tpv3oip rte_flow_item_l2tpv3oip_mask [static]
       Initial value:.PP
       = {
           .session_id = RTE_BE32(UINT32_MAX),
       }
       Default mask for RTE_FLOW_ITEM_TYPE_L2TPV3OIP.

       Definition at line 1721 of file rte_flow.h.

   const struct rte_flow_item_mark rte_flow_item_mark_mask [static]
       Initial value:.PP
       = {
           .id = 0xffffffff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_MARK.

       Definition at line 1751 of file rte_flow.h.

   const struct rte_flow_item_nsh rte_flow_item_nsh_mask [static]
       Initial value:.PP
       = {
           .mdtype = 0xf,
           .next_proto = 0xff,
           .spi = 0xffffff,
           .sindex = 0xff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_NSH.

       Definition at line 1779 of file rte_flow.h.

   const struct rte_flow_item_igmp rte_flow_item_igmp_mask [static]
       Initial value:.PP
       = {
           .group_addr = 0xffffffff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_IGMP.

       Definition at line 1804 of file rte_flow.h.

   const struct rte_flow_item_ah rte_flow_item_ah_mask [static]
       Initial value:.PP
       = {
           .spi = 0xffffffff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_AH.

       Definition at line 1827 of file rte_flow.h.

   const struct rte_flow_item_pfcp rte_flow_item_pfcp_mask [static]
       Initial value:.PP
       = {
           .s_field = 0x01,
           .seid = RTE_BE64(UINT64_C(0xffffffffffffffff)),
       }
       Default mask for RTE_FLOW_ITEM_TYPE_PFCP.

       Definition at line 1849 of file rte_flow.h.

   const struct rte_flow_item_ecpri rte_flow_item_ecpri_mask [static]
       Initial value:.PP
       = {
           .hdr = {
               .common = {
                   .u32 = 0x0,
               },
           },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_ECPRI.

       Definition at line 1869 of file rte_flow.h.

   const struct rte_flow_item_geneve_opt rte_flow_item_geneve_opt_mask [static]
       Initial value:.PP
       = {
           .option_type = 0xff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_GENEVE_OPT.

       Definition at line 1893 of file rte_flow.h.

   const struct rte_flow_item_conntrack rte_flow_item_conntrack_mask [static]
       Initial value:.PP
       = {
           .flags = 0xffffffff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_CONNTRACK.

       Definition at line 1984 of file rte_flow.h.

   const struct rte_flow_item_ethdev rte_flow_item_ethdev_mask [static]
       Initial value:.PP
       = {
           .port_id = 0xffff,
       }
       Default mask for items based on struct rte_flow_item_ethdev

       Definition at line 2000 of file rte_flow.h.

   const struct rte_flow_item_l2tpv2 rte_flow_item_l2tpv2_mask [static]
       Initial value:.PP
       = {

           .hdr = {
               .common = {
                   .flags_version = RTE_BE16(0xcb0f),
               },
           },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_L2TPV2.

       Definition at line 2019 of file rte_flow.h.

   const struct rte_flow_item_ppp rte_flow_item_ppp_mask [static]
       Initial value:.PP
       = {
           .hdr = {
               .addr = 0xff,
               .ctrl = 0xff,
               .proto_id = RTE_BE16(0xffff),
           }
       }
       Default mask for RTE_FLOW_ITEM_TYPE_PPP.

       Definition at line 2047 of file rte_flow.h.

   const struct rte_flow_item_ib_bth rte_flow_item_ib_bth_mask [static]
       Initial value:.PP
       = {
           .hdr = {
               .opcode = 0xff,
               .dst_qp =  { 0xff, 0xff, 0xff },
           },
       }
       Default mask for RTE_FLOW_ITEM_TYPE_IB_BTH.

       Definition at line 2067 of file rte_flow.h.

   const struct rte_flow_item_random rte_flow_item_random_mask [static]
       Initial value:.PP
       = {
           .value = UINT32_MAX,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_RANDOM.

       Definition at line 2089 of file rte_flow.h.

   const struct rte_flow_item_meter_color rte_flow_item_meter_color_mask [static]
       Initial value:.PP
       = {
           .color = RTE_COLORS,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_METER_COLOR.

       Definition at line 2316 of file rte_flow.h.

   const struct rte_flow_item_aggr_affinity rte_flow_item_aggr_affinity_mask [static]
       Initial value:.PP
       = {
           .affinity = 0xff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_AGGR_AFFINITY.

       Definition at line 2342 of file rte_flow.h.

   const struct rte_flow_item_tx_queue rte_flow_item_tx_queue_mask [static]
       Initial value:.PP
       = {
           .tx_queue = 0xffff,
       }
       Default mask for RTE_FLOW_ITEM_TX_QUEUE.

       Definition at line 2361 of file rte_flow.h.

   const struct rte_flow_item_ptype rte_flow_item_ptype_mask [static]
       Initial value:.PP
       = {
           .packet_type = 0xffffffff,
       }
       Default mask for RTE_FLOW_ITEM_TYPE_PTYPE.

       Definition at line 2378 of file rte_flow.h.

Author

       Generated automatically by Doxygen for DPDK from the source code.

DPDK                                             Version 24.11.2                                   rte_flow.h(3)