app/flow-perf: move flow options as global

With flow_options defined as global struct, it's possible
to use sub-functions to handle run-time options.

It's helpful to avoid too many tabs warnings.

Signed-off-by: Rongwei Liu <rongweil@nvidia.com>
Acked-by: Wisam Jaddo <wisamm@nvidia.com>
This commit is contained in:
Rongwei Liu 2021-11-11 16:23:36 +02:00 committed by Thomas Monjalon
parent f2a66612ee
commit 26bd02e8c5

View File

@ -126,6 +126,337 @@ static struct multi_cores_pool mc_pool = {
.cores_count = 1,
};
static const struct option_dict {
const char *str;
const uint64_t mask;
uint64_t *map;
uint8_t *map_idx;
} flow_options[] = {
{
.str = "ether",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_ETH),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "ipv4",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV4),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "ipv6",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV6),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "vlan",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VLAN),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "tcp",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_TCP),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "udp",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_UDP),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "vxlan",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VXLAN),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "vxlan-gpe",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VXLAN_GPE),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "gre",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GRE),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "geneve",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GENEVE),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "gtp",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GTP),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "meta",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_META),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "tag",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_TAG),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "icmpv4",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_ICMP),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "icmpv6",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_ICMP6),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "ingress",
.mask = INGRESS,
.map = &flow_attrs[0],
.map_idx = &attrs_idx
},
{
.str = "egress",
.mask = EGRESS,
.map = &flow_attrs[0],
.map_idx = &attrs_idx
},
{
.str = "transfer",
.mask = TRANSFER,
.map = &flow_attrs[0],
.map_idx = &attrs_idx
},
{
.str = "port-id",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_PORT_ID),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "rss",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_RSS),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "queue",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_QUEUE),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "jump",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_JUMP),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "mark",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_MARK),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "count",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_COUNT),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-meta",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_SET_META),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-tag",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_SET_TAG),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "drop",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_DROP),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-src-mac",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_MAC_SRC
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-dst-mac",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_MAC_DST
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-src-ipv4",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-dst-ipv4",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_IPV4_DST
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-src-ipv6",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-dst-ipv6",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_IPV6_DST
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-src-tp",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_TP_SRC
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-dst-tp",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_TP_DST
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "inc-tcp-ack",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_INC_TCP_ACK
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "dec-tcp-ack",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "inc-tcp-seq",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "dec-tcp-seq",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-ttl",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_TTL
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "dec-ttl",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_DEC_TTL
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-ipv4-dscp",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-ipv6-dscp",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "flag",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_FLAG
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "meter",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_METER
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "vxlan-encap",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "vxlan-decap",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_VXLAN_DECAP
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
};
static void
usage(char *progname)
{
@ -253,337 +584,6 @@ args_parse(int argc, char **argv)
int opt_idx;
size_t i;
static const struct option_dict {
const char *str;
const uint64_t mask;
uint64_t *map;
uint8_t *map_idx;
} flow_options[] = {
{
.str = "ether",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_ETH),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "ipv4",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV4),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "ipv6",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_IPV6),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "vlan",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VLAN),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "tcp",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_TCP),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "udp",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_UDP),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "vxlan",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VXLAN),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "vxlan-gpe",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_VXLAN_GPE),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "gre",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GRE),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "geneve",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GENEVE),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "gtp",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_GTP),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "meta",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_META),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "tag",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_TAG),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "icmpv4",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_ICMP),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "icmpv6",
.mask = FLOW_ITEM_MASK(RTE_FLOW_ITEM_TYPE_ICMP6),
.map = &flow_items[0],
.map_idx = &items_idx
},
{
.str = "ingress",
.mask = INGRESS,
.map = &flow_attrs[0],
.map_idx = &attrs_idx
},
{
.str = "egress",
.mask = EGRESS,
.map = &flow_attrs[0],
.map_idx = &attrs_idx
},
{
.str = "transfer",
.mask = TRANSFER,
.map = &flow_attrs[0],
.map_idx = &attrs_idx
},
{
.str = "port-id",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_PORT_ID),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "rss",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_RSS),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "queue",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_QUEUE),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "jump",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_JUMP),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "mark",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_MARK),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "count",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_COUNT),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-meta",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_SET_META),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-tag",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_SET_TAG),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "drop",
.mask = FLOW_ACTION_MASK(RTE_FLOW_ACTION_TYPE_DROP),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-src-mac",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_MAC_SRC
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-dst-mac",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_MAC_DST
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-src-ipv4",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-dst-ipv4",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_IPV4_DST
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-src-ipv6",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-dst-ipv6",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_IPV6_DST
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-src-tp",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_TP_SRC
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-dst-tp",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_TP_DST
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "inc-tcp-ack",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_INC_TCP_ACK
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "dec-tcp-ack",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "inc-tcp-seq",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "dec-tcp-seq",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-ttl",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_TTL
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "dec-ttl",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_DEC_TTL
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-ipv4-dscp",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "set-ipv6-dscp",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "flag",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_FLAG
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "meter",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_METER
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "vxlan-encap",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
{
.str = "vxlan-decap",
.mask = FLOW_ACTION_MASK(
RTE_FLOW_ACTION_TYPE_VXLAN_DECAP
),
.map = &flow_actions[0],
.map_idx = &actions_idx
},
};
static const struct option lgopts[] = {
/* Control */
{ "help", 0, 0, 0 },