1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2020 Mellanox Technologies, Ltd
4 * The file contains the implementations of the method to
5 * fill items, actions & attributes in their corresponding
6 * arrays, and then generate rte_flow rule.
8 * After the generation. The rule goes to validation then
9 * creation state and then return the results.
15 #include "items_gen.h"
16 #include "actions_gen.h"
20 fill_attributes(struct rte_flow_attr *attr,
21 uint64_t *flow_attrs, uint16_t group)
24 for (i = 0; i < MAX_ATTRS_NUM; i++) {
25 if (flow_attrs[i] == 0)
27 if (flow_attrs[i] & INGRESS)
29 else if (flow_attrs[i] & EGRESS)
31 else if (flow_attrs[i] & TRANSFER)
38 generate_flow(uint16_t port_id,
42 uint64_t *flow_actions,
44 uint32_t outer_ip_src,
48 struct rte_flow_error *error)
50 struct rte_flow_attr attr;
51 struct rte_flow_item items[MAX_ITEMS_NUM];
52 struct rte_flow_action actions[MAX_ACTIONS_NUM];
53 struct rte_flow *flow = NULL;
55 memset(items, 0, sizeof(items));
56 memset(actions, 0, sizeof(actions));
57 memset(&attr, 0, sizeof(struct rte_flow_attr));
59 fill_attributes(&attr, flow_attrs, group);
61 fill_actions(actions, flow_actions,
62 outer_ip_src, next_table, hairpinq,
63 encap_data, decap_data);
65 fill_items(items, flow_items, outer_ip_src);
67 flow = rte_flow_create(port_id, &attr, items, actions, error);