All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jie Zhou <jizh@linux.microsoft.com>
To: dev@dpdk.org
Cc: dmitry.kozliuk@gmail.com, xiaoyun.li@intel.com,
	roretzla@microsoft.com, pallavi.kadam@intel.com,
	thomas@monjalon.net, bruce.richardson@intel.com,
	ferruh.yigit@intel.com
Subject: [dpdk-dev] [PATCH v3 6/6] app/testpmd: enable testpmd on Windows
Date: Tue, 13 Apr 2021 10:19:23 -0700	[thread overview]
Message-ID: <1618334363-15147-7-git-send-email-jizh@linux.microsoft.com> (raw)
In-Reply-To: <1618334363-15147-1-git-send-email-jizh@linux.microsoft.com>

From: Jie Zhou <jizh@microsoft.com>

This patch is to enable testpmd on windows. It mainly includes:
- Disable unsupported Apps on Windows under app\ except testpmd
- Resolve name collisions with Windows types
- Add clock_gettime_monotic for testpmd on Windows
- Make printf format work for both Linux and Windows
- Replace htons with RTE_BE16
- Replace inet_aton with inet_pton
- Fix parse_fec_mode to return fec_capa to remove compilation warning
- Replace mman.h POSIX APIs with rte_mem_xxx APIs
- Use OS independant rte_rand

Signed-off-by: Jie Zhou <jizh@microsoft.com>
Signed-off-by: Jie Zhou <jizh@linux.microsoft.com>
---
 app/meson.build                         |  10 +-
 app/pdump/meson.build                   |   6 +
 app/proc-info/meson.build               |   6 +
 app/test-acl/meson.build                |   6 +
 app/test-bbdev/meson.build              |   6 +
 app/test-cmdline/meson.build            |   6 +
 app/test-compress-perf/meson.build      |   6 +
 app/test-crypto-perf/meson.build        |   6 +
 app/test-eventdev/meson.build           |   6 +
 app/test-fib/meson.build                |   6 +
 app/test-flow-perf/meson.build          |   6 +
 app/test-pipeline/meson.build           |   6 +
 app/test-pmd/cmdline.c                  |  12 +-
 app/test-pmd/cmdline_flow.c             | 440 ++++++++++++------------
 app/test-pmd/config.c                   |  35 +-
 app/test-pmd/csumonly.c                 |   2 +-
 app/test-pmd/icmpecho.c                 |   4 +-
 app/test-pmd/ieee1588fwd.c              |  10 +-
 app/test-pmd/meson.build                |   4 +
 app/test-pmd/parameters.c               |   8 +-
 app/test-pmd/testpmd.c                  |  44 ++-
 app/test-pmd/testpmd.h                  |   4 +-
 app/test-regex/meson.build              |   6 +
 app/test-sad/meson.build                |   6 +
 app/test/meson.build                    |   6 +
 lib/librte_eal/windows/include/rte_os.h |   8 +
 26 files changed, 404 insertions(+), 261 deletions(-)

diff --git a/app/meson.build b/app/meson.build
index 50a53dbde..b40b04ca7 100644
--- a/app/meson.build
+++ b/app/meson.build
@@ -1,10 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017-2019 Intel Corporation
 
-if is_windows
-	subdir_done()
-endif
-
 apps = [
 	'pdump',
 	'proc-info',
@@ -19,7 +15,11 @@ apps = [
 	'test-pipeline',
 	'test-pmd',
 	'test-regex',
-	'test-sad']
+	'test-sad'
+]
+
+# for BSD only
+lib_execinfo = cc.find_library('execinfo', required: false)
 
 default_cflags = machine_args + ['-DALLOW_EXPERIMENTAL_API']
 default_ldflags = []
diff --git a/app/pdump/meson.build b/app/pdump/meson.build
index 7bb908e04..db1fcadbf 100644
--- a/app/pdump/meson.build
+++ b/app/pdump/meson.build
@@ -1,5 +1,11 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files('main.c')
 deps += ['ethdev', 'kvargs', 'pdump']
diff --git a/app/proc-info/meson.build b/app/proc-info/meson.build
index f050c4a9b..82ed05bb0 100644
--- a/app/proc-info/meson.build
+++ b/app/proc-info/meson.build
@@ -1,5 +1,11 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files('main.c')
 deps += ['ethdev', 'metrics', 'security']
diff --git a/app/test-acl/meson.build b/app/test-acl/meson.build
index d5c2581b4..14d36b33e 100644
--- a/app/test-acl/meson.build
+++ b/app/test-acl/meson.build
@@ -1,5 +1,11 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2019 Intel Corporation
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files('main.c')
 deps += ['acl', 'net']
diff --git a/app/test-bbdev/meson.build b/app/test-bbdev/meson.build
index 6d50e0339..b4b767d89 100644
--- a/app/test-bbdev/meson.build
+++ b/app/test-bbdev/meson.build
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files('main.c',
 		'test_bbdev.c',
 		'test_bbdev_perf.c',
diff --git a/app/test-cmdline/meson.build b/app/test-cmdline/meson.build
index 9d0a9aeb6..089882120 100644
--- a/app/test-cmdline/meson.build
+++ b/app/test-cmdline/meson.build
@@ -1,5 +1,11 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2019 Intel Corporation
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files('commands.c', 'cmdline_test.c')
 deps += 'cmdline'
diff --git a/app/test-compress-perf/meson.build b/app/test-compress-perf/meson.build
index a1a484da9..6ff3c179e 100644
--- a/app/test-compress-perf/meson.build
+++ b/app/test-compress-perf/meson.build
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files('comp_perf_options_parse.c',
 		'main.c',
 		'comp_perf_test_verify.c',
diff --git a/app/test-crypto-perf/meson.build b/app/test-crypto-perf/meson.build
index 558c64878..eef7708e0 100644
--- a/app/test-crypto-perf/meson.build
+++ b/app/test-crypto-perf/meson.build
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files('cperf_ops.c',
 		'cperf_options_parsing.c',
 		'cperf_test_common.c',
diff --git a/app/test-eventdev/meson.build b/app/test-eventdev/meson.build
index 9e588d9ec..5af31fbb0 100644
--- a/app/test-eventdev/meson.build
+++ b/app/test-eventdev/meson.build
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Cavium, Inc
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files('evt_main.c',
 		'evt_options.c',
 		'evt_test.c',
diff --git a/app/test-fib/meson.build b/app/test-fib/meson.build
index f74ac651c..3360ea02b 100644
--- a/app/test-fib/meson.build
+++ b/app/test-fib/meson.build
@@ -1,5 +1,11 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2019 Intel Corporation
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files('main.c')
 deps += ['fib', 'lpm', 'net']
diff --git a/app/test-flow-perf/meson.build b/app/test-flow-perf/meson.build
index 6eaf83b41..5d5d70f18 100644
--- a/app/test-flow-perf/meson.build
+++ b/app/test-flow-perf/meson.build
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2020 Mellanox Technologies, Ltd
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files(
 	'actions_gen.c',
 	'flow_gen.c',
diff --git a/app/test-pipeline/meson.build b/app/test-pipeline/meson.build
index d5eddaba9..5e43d7d69 100644
--- a/app/test-pipeline/meson.build
+++ b/app/test-pipeline/meson.build
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2019 Intel Corporation
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files(
 	'config.c',
 	'init.c',
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index f44116b08..335ed534d 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -8,12 +8,14 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <string.h>
+
+#ifndef RTE_EXEC_ENV_WINDOWS
 #include <termios.h>
+#endif
 #include <unistd.h>
 #include <inttypes.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
-
 #include <sys/queue.h>
 
 #include <rte_common.h>
@@ -3502,7 +3504,7 @@ cmdline_parse_inst_t cmd_stop = {
 /* *** SET CORELIST and PORTLIST CONFIGURATION *** */
 
 unsigned int
-parse_item_list(char* str, const char* item_name, unsigned int max_items,
+parse_item_list(const char *str, const char *item_name, unsigned int max_items,
 		unsigned int *parsed_items, int check_unique_values)
 {
 	unsigned int nb_item;
@@ -16458,17 +16460,17 @@ cmd_set_port_fec_mode_parsed(
 {
 	struct cmd_set_port_fec_mode *res = parsed_result;
 	uint16_t port_id = res->port_id;
-	uint32_t mode;
+	uint32_t fec_capa;
 	int ret;
 
-	ret = parse_fec_mode(res->fec_value, &mode);
+	ret = parse_fec_mode(res->fec_value, &fec_capa);
 	if (ret < 0) {
 		printf("Unknown fec mode: %s for Port %d\n", res->fec_value,
 			port_id);
 		return;
 	}
 
-	ret = rte_eth_fec_set(port_id, mode);
+	ret = rte_eth_fec_set(port_id, fec_capa);
 	if (ret == -ENOTSUP) {
 		printf("Function not implemented\n");
 		return;
diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index fb7a3a8bd..9945adcf1 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -31,6 +31,12 @@
 
 #include "testpmd.h"
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+#ifndef IPDEFTTL
+#define IPDEFTTL 64
+#endif
+#endif
+
 /** Parser token indices. */
 enum index {
 	/* Special tokens. */
@@ -40,21 +46,21 @@ enum index {
 	END_SET,
 
 	/* Common tokens. */
-	INTEGER,
-	UNSIGNED,
-	PREFIX,
-	BOOLEAN,
-	STRING,
-	HEX,
-	FILE_PATH,
-	MAC_ADDR,
-	IPV4_ADDR,
-	IPV6_ADDR,
-	RULE_ID,
-	PORT_ID,
-	GROUP_ID,
-	PRIORITY_LEVEL,
-	SHARED_ACTION_ID,
+	COMMON_INTEGER,
+	COMMON_UNSIGNED,
+	COMMON_PREFIX,
+	COMMON_BOOLEAN,
+	COMMON_STRING,
+	COMMON_HEX,
+	COMMON_FILE_PATH,
+	COMMON_MAC_ADDR,
+	COMMON_IPV4_ADDR,
+	COMMON_IPV6_ADDR,
+	COMMON_RULE_ID,
+	COMMON_PORT_ID,
+	COMMON_GROUP_ID,
+	COMMON_PRIORITY_LEVEL,
+	COMMON_SHARED_ACTION_ID,
 
 	/* Top-level command. */
 	SET,
@@ -125,7 +131,7 @@ enum index {
 	SHARED_ACTION_DESTROY_ID,
 
 	/* Validate/create pattern. */
-	PATTERN,
+	ITEM_PATTERN,
 	ITEM_PARAM_IS,
 	ITEM_PARAM_SPEC,
 	ITEM_PARAM_LAST,
@@ -860,7 +866,7 @@ static const enum index next_vc_attr[] = {
 	TRANSFER,
 	TUNNEL_SET,
 	TUNNEL_MATCH,
-	PATTERN,
+	ITEM_PATTERN,
 	ZERO,
 };
 
@@ -871,7 +877,7 @@ static const enum index next_destroy_attr[] = {
 };
 
 static const enum index next_dump_attr[] = {
-	FILE_PATH,
+	COMMON_FILE_PATH,
 	END,
 	ZERO,
 };
@@ -1841,104 +1847,104 @@ static const struct token token_list[] = {
 		.help = "set command may end here",
 	},
 	/* Common tokens. */
-	[INTEGER] = {
+	[COMMON_INTEGER] = {
 		.name = "{int}",
 		.type = "INTEGER",
 		.help = "integer value",
 		.call = parse_int,
 		.comp = comp_none,
 	},
-	[UNSIGNED] = {
+	[COMMON_UNSIGNED] = {
 		.name = "{unsigned}",
 		.type = "UNSIGNED",
 		.help = "unsigned integer value",
 		.call = parse_int,
 		.comp = comp_none,
 	},
-	[PREFIX] = {
+	[COMMON_PREFIX] = {
 		.name = "{prefix}",
 		.type = "PREFIX",
 		.help = "prefix length for bit-mask",
 		.call = parse_prefix,
 		.comp = comp_none,
 	},
-	[BOOLEAN] = {
+	[COMMON_BOOLEAN] = {
 		.name = "{boolean}",
 		.type = "BOOLEAN",
 		.help = "any boolean value",
 		.call = parse_boolean,
 		.comp = comp_boolean,
 	},
-	[STRING] = {
+	[COMMON_STRING] = {
 		.name = "{string}",
 		.type = "STRING",
 		.help = "fixed string",
 		.call = parse_string,
 		.comp = comp_none,
 	},
-	[HEX] = {
+	[COMMON_HEX] = {
 		.name = "{hex}",
-		.type = "HEX",
+		.type = "COMMON_HEX",
 		.help = "fixed string",
 		.call = parse_hex,
 	},
-	[FILE_PATH] = {
+	[COMMON_FILE_PATH] = {
 		.name = "{file path}",
 		.type = "STRING",
 		.help = "file path",
 		.call = parse_string0,
 		.comp = comp_none,
 	},
-	[MAC_ADDR] = {
+	[COMMON_MAC_ADDR] = {
 		.name = "{MAC address}",
 		.type = "MAC-48",
 		.help = "standard MAC address notation",
 		.call = parse_mac_addr,
 		.comp = comp_none,
 	},
-	[IPV4_ADDR] = {
+	[COMMON_IPV4_ADDR] = {
 		.name = "{IPv4 address}",
 		.type = "IPV4 ADDRESS",
 		.help = "standard IPv4 address notation",
 		.call = parse_ipv4_addr,
 		.comp = comp_none,
 	},
-	[IPV6_ADDR] = {
+	[COMMON_IPV6_ADDR] = {
 		.name = "{IPv6 address}",
 		.type = "IPV6 ADDRESS",
 		.help = "standard IPv6 address notation",
 		.call = parse_ipv6_addr,
 		.comp = comp_none,
 	},
-	[RULE_ID] = {
+	[COMMON_RULE_ID] = {
 		.name = "{rule id}",
 		.type = "RULE ID",
 		.help = "rule identifier",
 		.call = parse_int,
 		.comp = comp_rule_id,
 	},
-	[PORT_ID] = {
+	[COMMON_PORT_ID] = {
 		.name = "{port_id}",
 		.type = "PORT ID",
 		.help = "port identifier",
 		.call = parse_port,
 		.comp = comp_port,
 	},
-	[GROUP_ID] = {
+	[COMMON_GROUP_ID] = {
 		.name = "{group_id}",
 		.type = "GROUP ID",
 		.help = "group identifier",
 		.call = parse_int,
 		.comp = comp_none,
 	},
-	[PRIORITY_LEVEL] = {
+	[COMMON_PRIORITY_LEVEL] = {
 		.name = "{level}",
 		.type = "PRIORITY",
 		.help = "priority level",
 		.call = parse_int,
 		.comp = comp_none,
 	},
-	[SHARED_ACTION_ID] = {
+	[COMMON_SHARED_ACTION_ID] = {
 		.name = "{shared_action_id}",
 		.type = "SHARED_ACTION_ID",
 		.help = "shared action id",
@@ -1969,7 +1975,7 @@ static const struct token token_list[] = {
 		.name = "shared_action",
 		.type = "{command} {port_id} [{arg} [...]]",
 		.help = "manage shared actions",
-		.next = NEXT(next_sa_subcmd, NEXT_ENTRY(PORT_ID)),
+		.next = NEXT(next_sa_subcmd, NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, port)),
 		.call = parse_sa,
 	},
@@ -1984,7 +1990,7 @@ static const struct token token_list[] = {
 		.name = "update",
 		.help = "update shared action",
 		.next = NEXT(NEXT_ENTRY(SHARED_ACTION_SPEC),
-			     NEXT_ENTRY(SHARED_ACTION_ID)),
+			     NEXT_ENTRY(COMMON_SHARED_ACTION_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, args.vc.attr.group)),
 		.call = parse_sa,
 	},
@@ -1998,42 +2004,42 @@ static const struct token token_list[] = {
 	[SHARED_ACTION_QUERY] = {
 		.name = "query",
 		.help = "query shared action",
-		.next = NEXT(NEXT_ENTRY(END), NEXT_ENTRY(SHARED_ACTION_ID)),
+		.next = NEXT(NEXT_ENTRY(END), NEXT_ENTRY(COMMON_SHARED_ACTION_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, args.sa.action_id)),
 		.call = parse_sa,
 	},
 	[VALIDATE] = {
 		.name = "validate",
 		.help = "check whether a flow rule can be created",
-		.next = NEXT(next_vc_attr, NEXT_ENTRY(PORT_ID)),
+		.next = NEXT(next_vc_attr, NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, port)),
 		.call = parse_vc,
 	},
 	[CREATE] = {
 		.name = "create",
 		.help = "create a flow rule",
-		.next = NEXT(next_vc_attr, NEXT_ENTRY(PORT_ID)),
+		.next = NEXT(next_vc_attr, NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, port)),
 		.call = parse_vc,
 	},
 	[DESTROY] = {
 		.name = "destroy",
 		.help = "destroy specific flow rules",
-		.next = NEXT(NEXT_ENTRY(DESTROY_RULE), NEXT_ENTRY(PORT_ID)),
+		.next = NEXT(NEXT_ENTRY(DESTROY_RULE), NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, port)),
 		.call = parse_destroy,
 	},
 	[FLUSH] = {
 		.name = "flush",
 		.help = "destroy all flow rules",
-		.next = NEXT(NEXT_ENTRY(PORT_ID)),
+		.next = NEXT(NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, port)),
 		.call = parse_flush,
 	},
 	[DUMP] = {
 		.name = "dump",
 		.help = "dump all flow rules to file",
-		.next = NEXT(next_dump_attr, NEXT_ENTRY(PORT_ID)),
+		.next = NEXT(next_dump_attr, NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, args.dump.file),
 			     ARGS_ENTRY(struct buffer, port)),
 		.call = parse_dump,
@@ -2042,8 +2048,8 @@ static const struct token token_list[] = {
 		.name = "query",
 		.help = "query an existing flow rule",
 		.next = NEXT(NEXT_ENTRY(QUERY_ACTION),
-			     NEXT_ENTRY(RULE_ID),
-			     NEXT_ENTRY(PORT_ID)),
+			     NEXT_ENTRY(COMMON_RULE_ID),
+			     NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, args.query.action.type),
 			     ARGS_ENTRY(struct buffer, args.query.rule),
 			     ARGS_ENTRY(struct buffer, port)),
@@ -2052,22 +2058,22 @@ static const struct token token_list[] = {
 	[LIST] = {
 		.name = "list",
 		.help = "list existing flow rules",
-		.next = NEXT(next_list_attr, NEXT_ENTRY(PORT_ID)),
+		.next = NEXT(next_list_attr, NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, port)),
 		.call = parse_list,
 	},
 	[AGED] = {
 		.name = "aged",
 		.help = "list and destroy aged flows",
-		.next = NEXT(next_aged_attr, NEXT_ENTRY(PORT_ID)),
+		.next = NEXT(next_aged_attr, NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, port)),
 		.call = parse_aged,
 	},
 	[ISOLATE] = {
 		.name = "isolate",
 		.help = "restrict ingress traffic to the defined flow rules",
-		.next = NEXT(NEXT_ENTRY(BOOLEAN),
-			     NEXT_ENTRY(PORT_ID)),
+		.next = NEXT(NEXT_ENTRY(COMMON_BOOLEAN),
+			     NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, args.isolate.set),
 			     ARGS_ENTRY(struct buffer, port)),
 		.call = parse_isolate,
@@ -2084,14 +2090,14 @@ static const struct token token_list[] = {
 		.name = "create",
 		.help = "create new tunnel object",
 		.next = NEXT(NEXT_ENTRY(TUNNEL_CREATE_TYPE),
-			     NEXT_ENTRY(PORT_ID)),
+			     NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, port)),
 		.call = parse_tunnel,
 	},
 	[TUNNEL_CREATE_TYPE] = {
 		.name = "type",
 		.help = "create new tunnel",
-		.next = NEXT(NEXT_ENTRY(FILE_PATH)),
+		.next = NEXT(NEXT_ENTRY(COMMON_FILE_PATH)),
 		.args = ARGS(ARGS_ENTRY(struct tunnel_ops, type)),
 		.call = parse_tunnel,
 	},
@@ -2099,21 +2105,21 @@ static const struct token token_list[] = {
 		.name = "destroy",
 		.help = "destroy tunel",
 		.next = NEXT(NEXT_ENTRY(TUNNEL_DESTROY_ID),
-			     NEXT_ENTRY(PORT_ID)),
+			     NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, port)),
 		.call = parse_tunnel,
 	},
 	[TUNNEL_DESTROY_ID] = {
 		.name = "id",
 		.help = "tunnel identifier to testroy",
-		.next = NEXT(NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct tunnel_ops, id)),
 		.call = parse_tunnel,
 	},
 	[TUNNEL_LIST] = {
 		.name = "list",
 		.help = "list existing tunnels",
-		.next = NEXT(NEXT_ENTRY(PORT_ID)),
+		.next = NEXT(NEXT_ENTRY(COMMON_PORT_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, port)),
 		.call = parse_tunnel,
 	},
@@ -2121,7 +2127,7 @@ static const struct token token_list[] = {
 	[DESTROY_RULE] = {
 		.name = "rule",
 		.help = "specify a rule identifier",
-		.next = NEXT(next_destroy_attr, NEXT_ENTRY(RULE_ID)),
+		.next = NEXT(next_destroy_attr, NEXT_ENTRY(COMMON_RULE_ID)),
 		.args = ARGS(ARGS_ENTRY_PTR(struct buffer, args.destroy.rule)),
 		.call = parse_destroy,
 	},
@@ -2137,7 +2143,7 @@ static const struct token token_list[] = {
 	[LIST_GROUP] = {
 		.name = "group",
 		.help = "specify a group",
-		.next = NEXT(next_list_attr, NEXT_ENTRY(GROUP_ID)),
+		.next = NEXT(next_list_attr, NEXT_ENTRY(COMMON_GROUP_ID)),
 		.args = ARGS(ARGS_ENTRY_PTR(struct buffer, args.list.group)),
 		.call = parse_list,
 	},
@@ -2151,14 +2157,14 @@ static const struct token token_list[] = {
 	[GROUP] = {
 		.name = "group",
 		.help = "specify a group",
-		.next = NEXT(next_vc_attr, NEXT_ENTRY(GROUP_ID)),
+		.next = NEXT(next_vc_attr, NEXT_ENTRY(COMMON_GROUP_ID)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_attr, group)),
 		.call = parse_vc,
 	},
 	[PRIORITY] = {
 		.name = "priority",
 		.help = "specify a priority level",
-		.next = NEXT(next_vc_attr, NEXT_ENTRY(PRIORITY_LEVEL)),
+		.next = NEXT(next_vc_attr, NEXT_ENTRY(COMMON_PRIORITY_LEVEL)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_attr, priority)),
 		.call = parse_vc,
 	},
@@ -2183,19 +2189,19 @@ static const struct token token_list[] = {
 	[TUNNEL_SET] = {
 		.name = "tunnel_set",
 		.help = "tunnel steer rule",
-		.next = NEXT(next_vc_attr, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(next_vc_attr, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct tunnel_ops, id)),
 		.call = parse_vc,
 	},
 	[TUNNEL_MATCH] = {
 		.name = "tunnel_match",
 		.help = "tunnel match rule",
-		.next = NEXT(next_vc_attr, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(next_vc_attr, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct tunnel_ops, id)),
 		.call = parse_vc,
 	},
 	/* Validate/create pattern. */
-	[PATTERN] = {
+	[ITEM_PATTERN] = {
 		.name = "pattern",
 		.help = "submit a list of pattern items",
 		.next = NEXT(next_item),
@@ -2262,7 +2268,7 @@ static const struct token token_list[] = {
 	[ITEM_ANY_NUM] = {
 		.name = "num",
 		.help = "number of layers covered",
-		.next = NEXT(item_any, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_any, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_any, num)),
 	},
 	[ITEM_PF] = {
@@ -2282,7 +2288,7 @@ static const struct token token_list[] = {
 	[ITEM_VF_ID] = {
 		.name = "id",
 		.help = "VF ID",
-		.next = NEXT(item_vf, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_vf, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_vf, id)),
 	},
 	[ITEM_PHY_PORT] = {
@@ -2296,7 +2302,7 @@ static const struct token token_list[] = {
 	[ITEM_PHY_PORT_INDEX] = {
 		.name = "index",
 		.help = "physical port index",
-		.next = NEXT(item_phy_port, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_phy_port, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_phy_port, index)),
 	},
 	[ITEM_PORT_ID] = {
@@ -2310,7 +2316,7 @@ static const struct token token_list[] = {
 	[ITEM_PORT_ID_ID] = {
 		.name = "id",
 		.help = "DPDK port ID",
-		.next = NEXT(item_port_id, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_port_id, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_port_id, id)),
 	},
 	[ITEM_MARK] = {
@@ -2323,7 +2329,7 @@ static const struct token token_list[] = {
 	[ITEM_MARK_ID] = {
 		.name = "id",
 		.help = "Integer value to match against",
-		.next = NEXT(item_mark, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_mark, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_mark, id)),
 	},
 	[ITEM_RAW] = {
@@ -2336,34 +2342,34 @@ static const struct token token_list[] = {
 	[ITEM_RAW_RELATIVE] = {
 		.name = "relative",
 		.help = "look for pattern after the previous item",
-		.next = NEXT(item_raw, NEXT_ENTRY(BOOLEAN), item_param),
+		.next = NEXT(item_raw, NEXT_ENTRY(COMMON_BOOLEAN), item_param),
 		.args = ARGS(ARGS_ENTRY_BF(struct rte_flow_item_raw,
 					   relative, 1)),
 	},
 	[ITEM_RAW_SEARCH] = {
 		.name = "search",
 		.help = "search pattern from offset (see also limit)",
-		.next = NEXT(item_raw, NEXT_ENTRY(BOOLEAN), item_param),
+		.next = NEXT(item_raw, NEXT_ENTRY(COMMON_BOOLEAN), item_param),
 		.args = ARGS(ARGS_ENTRY_BF(struct rte_flow_item_raw,
 					   search, 1)),
 	},
 	[ITEM_RAW_OFFSET] = {
 		.name = "offset",
 		.help = "absolute or relative offset for pattern",
-		.next = NEXT(item_raw, NEXT_ENTRY(INTEGER), item_param),
+		.next = NEXT(item_raw, NEXT_ENTRY(COMMON_INTEGER), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_raw, offset)),
 	},
 	[ITEM_RAW_LIMIT] = {
 		.name = "limit",
 		.help = "search area limit for start of pattern",
-		.next = NEXT(item_raw, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_raw, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_raw, limit)),
 	},
 	[ITEM_RAW_PATTERN] = {
 		.name = "pattern",
 		.help = "byte string to look for",
 		.next = NEXT(item_raw,
-			     NEXT_ENTRY(STRING),
+			     NEXT_ENTRY(COMMON_STRING),
 			     NEXT_ENTRY(ITEM_PARAM_IS,
 					ITEM_PARAM_SPEC,
 					ITEM_PARAM_MASK)),
@@ -2382,25 +2388,25 @@ static const struct token token_list[] = {
 	[ITEM_ETH_DST] = {
 		.name = "dst",
 		.help = "destination MAC",
-		.next = NEXT(item_eth, NEXT_ENTRY(MAC_ADDR), item_param),
+		.next = NEXT(item_eth, NEXT_ENTRY(COMMON_MAC_ADDR), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_eth, dst)),
 	},
 	[ITEM_ETH_SRC] = {
 		.name = "src",
 		.help = "source MAC",
-		.next = NEXT(item_eth, NEXT_ENTRY(MAC_ADDR), item_param),
+		.next = NEXT(item_eth, NEXT_ENTRY(COMMON_MAC_ADDR), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_eth, src)),
 	},
 	[ITEM_ETH_TYPE] = {
 		.name = "type",
 		.help = "EtherType",
-		.next = NEXT(item_eth, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_eth, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_eth, type)),
 	},
 	[ITEM_ETH_HAS_VLAN] = {
 		.name = "has_vlan",
 		.help = "packet header contains VLAN",
-		.next = NEXT(item_eth, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_eth, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_BF(struct rte_flow_item_eth,
 					   has_vlan, 1)),
 	},
@@ -2414,41 +2420,41 @@ static const struct token token_list[] = {
 	[ITEM_VLAN_TCI] = {
 		.name = "tci",
 		.help = "tag control information",
-		.next = NEXT(item_vlan, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_vlan, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_vlan, tci)),
 	},
 	[ITEM_VLAN_PCP] = {
 		.name = "pcp",
 		.help = "priority code point",
-		.next = NEXT(item_vlan, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_vlan, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_vlan,
 						  tci, "\xe0\x00")),
 	},
 	[ITEM_VLAN_DEI] = {
 		.name = "dei",
 		.help = "drop eligible indicator",
-		.next = NEXT(item_vlan, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_vlan, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_vlan,
 						  tci, "\x10\x00")),
 	},
 	[ITEM_VLAN_VID] = {
 		.name = "vid",
 		.help = "VLAN identifier",
-		.next = NEXT(item_vlan, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_vlan, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_vlan,
 						  tci, "\x0f\xff")),
 	},
 	[ITEM_VLAN_INNER_TYPE] = {
 		.name = "inner_type",
 		.help = "inner EtherType",
-		.next = NEXT(item_vlan, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_vlan, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_vlan,
 					     inner_type)),
 	},
 	[ITEM_VLAN_HAS_MORE_VLAN] = {
 		.name = "has_more_vlan",
 		.help = "packet header contains another VLAN",
-		.next = NEXT(item_vlan, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_vlan, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_BF(struct rte_flow_item_vlan,
 					   has_more_vlan, 1)),
 	},
@@ -2462,42 +2468,42 @@ static const struct token token_list[] = {
 	[ITEM_IPV4_TOS] = {
 		.name = "tos",
 		.help = "type of service",
-		.next = NEXT(item_ipv4, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_ipv4, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv4,
 					     hdr.type_of_service)),
 	},
 	[ITEM_IPV4_FRAGMENT_OFFSET] = {
 		.name = "fragment_offset",
 		.help = "fragmentation flags and fragment offset",
-		.next = NEXT(item_ipv4, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_ipv4, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv4,
 					     hdr.fragment_offset)),
 	},
 	[ITEM_IPV4_TTL] = {
 		.name = "ttl",
 		.help = "time to live",
-		.next = NEXT(item_ipv4, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_ipv4, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv4,
 					     hdr.time_to_live)),
 	},
 	[ITEM_IPV4_PROTO] = {
 		.name = "proto",
 		.help = "next protocol ID",
-		.next = NEXT(item_ipv4, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_ipv4, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv4,
 					     hdr.next_proto_id)),
 	},
 	[ITEM_IPV4_SRC] = {
 		.name = "src",
 		.help = "source address",
-		.next = NEXT(item_ipv4, NEXT_ENTRY(IPV4_ADDR), item_param),
+		.next = NEXT(item_ipv4, NEXT_ENTRY(COMMON_IPV4_ADDR), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv4,
 					     hdr.src_addr)),
 	},
 	[ITEM_IPV4_DST] = {
 		.name = "dst",
 		.help = "destination address",
-		.next = NEXT(item_ipv4, NEXT_ENTRY(IPV4_ADDR), item_param),
+		.next = NEXT(item_ipv4, NEXT_ENTRY(COMMON_IPV4_ADDR), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv4,
 					     hdr.dst_addr)),
 	},
@@ -2511,7 +2517,7 @@ static const struct token token_list[] = {
 	[ITEM_IPV6_TC] = {
 		.name = "tc",
 		.help = "traffic class",
-		.next = NEXT(item_ipv6, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_ipv6, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_ipv6,
 						  hdr.vtc_flow,
 						  "\x0f\xf0\x00\x00")),
@@ -2519,7 +2525,7 @@ static const struct token token_list[] = {
 	[ITEM_IPV6_FLOW] = {
 		.name = "flow",
 		.help = "flow label",
-		.next = NEXT(item_ipv6, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_ipv6, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_ipv6,
 						  hdr.vtc_flow,
 						  "\x00\x0f\xff\xff")),
@@ -2527,35 +2533,35 @@ static const struct token token_list[] = {
 	[ITEM_IPV6_PROTO] = {
 		.name = "proto",
 		.help = "protocol (next header)",
-		.next = NEXT(item_ipv6, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_ipv6, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv6,
 					     hdr.proto)),
 	},
 	[ITEM_IPV6_HOP] = {
 		.name = "hop",
 		.help = "hop limit",
-		.next = NEXT(item_ipv6, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_ipv6, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv6,
 					     hdr.hop_limits)),
 	},
 	[ITEM_IPV6_SRC] = {
 		.name = "src",
 		.help = "source address",
-		.next = NEXT(item_ipv6, NEXT_ENTRY(IPV6_ADDR), item_param),
+		.next = NEXT(item_ipv6, NEXT_ENTRY(COMMON_IPV6_ADDR), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv6,
 					     hdr.src_addr)),
 	},
 	[ITEM_IPV6_DST] = {
 		.name = "dst",
 		.help = "destination address",
-		.next = NEXT(item_ipv6, NEXT_ENTRY(IPV6_ADDR), item_param),
+		.next = NEXT(item_ipv6, NEXT_ENTRY(COMMON_IPV6_ADDR), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv6,
 					     hdr.dst_addr)),
 	},
 	[ITEM_IPV6_HAS_FRAG_EXT] = {
 		.name = "has_frag_ext",
 		.help = "fragment packet attribute",
-		.next = NEXT(item_ipv6, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_ipv6, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_BF(struct rte_flow_item_ipv6,
 					   has_frag_ext, 1)),
 	},
@@ -2569,28 +2575,28 @@ static const struct token token_list[] = {
 	[ITEM_ICMP_TYPE] = {
 		.name = "type",
 		.help = "ICMP packet type",
-		.next = NEXT(item_icmp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_icmp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_icmp,
 					     hdr.icmp_type)),
 	},
 	[ITEM_ICMP_CODE] = {
 		.name = "code",
 		.help = "ICMP packet code",
-		.next = NEXT(item_icmp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_icmp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_icmp,
 					     hdr.icmp_code)),
 	},
 	[ITEM_ICMP_IDENT] = {
 		.name = "ident",
 		.help = "ICMP packet identifier",
-		.next = NEXT(item_icmp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_icmp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_icmp,
 					     hdr.icmp_ident)),
 	},
 	[ITEM_ICMP_SEQ] = {
 		.name = "seq",
 		.help = "ICMP packet sequence number",
-		.next = NEXT(item_icmp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_icmp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_icmp,
 					     hdr.icmp_seq_nb)),
 	},
@@ -2604,14 +2610,14 @@ static const struct token token_list[] = {
 	[ITEM_UDP_SRC] = {
 		.name = "src",
 		.help = "UDP source port",
-		.next = NEXT(item_udp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_udp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_udp,
 					     hdr.src_port)),
 	},
 	[ITEM_UDP_DST] = {
 		.name = "dst",
 		.help = "UDP destination port",
-		.next = NEXT(item_udp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_udp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_udp,
 					     hdr.dst_port)),
 	},
@@ -2625,21 +2631,21 @@ static const struct token token_list[] = {
 	[ITEM_TCP_SRC] = {
 		.name = "src",
 		.help = "TCP source port",
-		.next = NEXT(item_tcp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_tcp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_tcp,
 					     hdr.src_port)),
 	},
 	[ITEM_TCP_DST] = {
 		.name = "dst",
 		.help = "TCP destination port",
-		.next = NEXT(item_tcp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_tcp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_tcp,
 					     hdr.dst_port)),
 	},
 	[ITEM_TCP_FLAGS] = {
 		.name = "flags",
 		.help = "TCP flags",
-		.next = NEXT(item_tcp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_tcp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_tcp,
 					     hdr.tcp_flags)),
 	},
@@ -2653,28 +2659,28 @@ static const struct token token_list[] = {
 	[ITEM_SCTP_SRC] = {
 		.name = "src",
 		.help = "SCTP source port",
-		.next = NEXT(item_sctp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_sctp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_sctp,
 					     hdr.src_port)),
 	},
 	[ITEM_SCTP_DST] = {
 		.name = "dst",
 		.help = "SCTP destination port",
-		.next = NEXT(item_sctp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_sctp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_sctp,
 					     hdr.dst_port)),
 	},
 	[ITEM_SCTP_TAG] = {
 		.name = "tag",
 		.help = "validation tag",
-		.next = NEXT(item_sctp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_sctp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_sctp,
 					     hdr.tag)),
 	},
 	[ITEM_SCTP_CKSUM] = {
 		.name = "cksum",
 		.help = "checksum",
-		.next = NEXT(item_sctp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_sctp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_sctp,
 					     hdr.cksum)),
 	},
@@ -2688,7 +2694,7 @@ static const struct token token_list[] = {
 	[ITEM_VXLAN_VNI] = {
 		.name = "vni",
 		.help = "VXLAN identifier",
-		.next = NEXT(item_vxlan, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_vxlan, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_vxlan, vni)),
 	},
 	[ITEM_E_TAG] = {
@@ -2701,7 +2707,7 @@ static const struct token token_list[] = {
 	[ITEM_E_TAG_GRP_ECID_B] = {
 		.name = "grp_ecid_b",
 		.help = "GRP and E-CID base",
-		.next = NEXT(item_e_tag, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_e_tag, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_e_tag,
 						  rsvd_grp_ecid_b,
 						  "\x3f\xff")),
@@ -2716,7 +2722,7 @@ static const struct token token_list[] = {
 	[ITEM_NVGRE_TNI] = {
 		.name = "tni",
 		.help = "virtual subnet ID",
-		.next = NEXT(item_nvgre, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_nvgre, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_nvgre, tni)),
 	},
 	[ITEM_MPLS] = {
@@ -2729,7 +2735,7 @@ static const struct token token_list[] = {
 	[ITEM_MPLS_LABEL] = {
 		.name = "label",
 		.help = "MPLS label",
-		.next = NEXT(item_mpls, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_mpls, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_mpls,
 						  label_tc_s,
 						  "\xff\xff\xf0")),
@@ -2737,7 +2743,7 @@ static const struct token token_list[] = {
 	[ITEM_MPLS_TC] = {
 		.name = "tc",
 		.help = "MPLS Traffic Class",
-		.next = NEXT(item_mpls, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_mpls, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_mpls,
 						  label_tc_s,
 						  "\x00\x00\x0e")),
@@ -2745,7 +2751,7 @@ static const struct token token_list[] = {
 	[ITEM_MPLS_S] = {
 		.name = "s",
 		.help = "MPLS Bottom-of-Stack",
-		.next = NEXT(item_mpls, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_mpls, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_mpls,
 						  label_tc_s,
 						  "\x00\x00\x01")),
@@ -2760,7 +2766,7 @@ static const struct token token_list[] = {
 	[ITEM_GRE_PROTO] = {
 		.name = "protocol",
 		.help = "GRE protocol type",
-		.next = NEXT(item_gre, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_gre, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gre,
 					     protocol)),
 	},
@@ -2770,14 +2776,14 @@ static const struct token token_list[] = {
 			"checksum (1b), undefined (1b), key bit (1b),"
 			" sequence number (1b), reserved 0 (9b),"
 			" version (3b)",
-		.next = NEXT(item_gre, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_gre, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gre,
 					     c_rsvd0_ver)),
 	},
 	[ITEM_GRE_C_BIT] = {
 		.name = "c_bit",
 		.help = "checksum bit (C)",
-		.next = NEXT(item_gre, NEXT_ENTRY(BOOLEAN), item_param),
+		.next = NEXT(item_gre, NEXT_ENTRY(COMMON_BOOLEAN), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_gre,
 						  c_rsvd0_ver,
 						  "\x80\x00\x00\x00")),
@@ -2785,7 +2791,7 @@ static const struct token token_list[] = {
 	[ITEM_GRE_S_BIT] = {
 		.name = "s_bit",
 		.help = "sequence number bit (S)",
-		.next = NEXT(item_gre, NEXT_ENTRY(BOOLEAN), item_param),
+		.next = NEXT(item_gre, NEXT_ENTRY(COMMON_BOOLEAN), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_gre,
 						  c_rsvd0_ver,
 						  "\x10\x00\x00\x00")),
@@ -2793,7 +2799,7 @@ static const struct token token_list[] = {
 	[ITEM_GRE_K_BIT] = {
 		.name = "k_bit",
 		.help = "key bit (K)",
-		.next = NEXT(item_gre, NEXT_ENTRY(BOOLEAN), item_param),
+		.next = NEXT(item_gre, NEXT_ENTRY(COMMON_BOOLEAN), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_gre,
 						  c_rsvd0_ver,
 						  "\x20\x00\x00\x00")),
@@ -2809,7 +2815,7 @@ static const struct token token_list[] = {
 	[ITEM_FUZZY_THRESH] = {
 		.name = "thresh",
 		.help = "match accuracy threshold",
-		.next = NEXT(item_fuzzy, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_fuzzy, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_fuzzy,
 					thresh)),
 	},
@@ -2823,20 +2829,20 @@ static const struct token token_list[] = {
 	[ITEM_GTP_FLAGS] = {
 		.name = "v_pt_rsv_flags",
 		.help = "GTP flags",
-		.next = NEXT(item_gtp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_gtp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_gtp,
 					v_pt_rsv_flags)),
 	},
 	[ITEM_GTP_MSG_TYPE] = {
 		.name = "msg_type",
 		.help = "GTP message type",
-		.next = NEXT(item_gtp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_gtp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_gtp, msg_type)),
 	},
 	[ITEM_GTP_TEID] = {
 		.name = "teid",
 		.help = "tunnel endpoint identifier",
-		.next = NEXT(item_gtp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_gtp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gtp, teid)),
 	},
 	[ITEM_GTPC] = {
@@ -2863,20 +2869,20 @@ static const struct token token_list[] = {
 	[ITEM_GENEVE_VNI] = {
 		.name = "vni",
 		.help = "virtual network identifier",
-		.next = NEXT(item_geneve, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_geneve, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_geneve, vni)),
 	},
 	[ITEM_GENEVE_PROTO] = {
 		.name = "protocol",
 		.help = "GENEVE protocol type",
-		.next = NEXT(item_geneve, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_geneve, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_geneve,
 					     protocol)),
 	},
 	[ITEM_GENEVE_OPTLEN] = {
 		.name = "optlen",
 		.help = "GENEVE options length in dwords",
-		.next = NEXT(item_geneve, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_geneve, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_geneve,
 						  ver_opt_len_o_c_rsvd0,
 						  "\x3f\x00")),
@@ -2892,7 +2898,7 @@ static const struct token token_list[] = {
 	[ITEM_VXLAN_GPE_VNI] = {
 		.name = "vni",
 		.help = "VXLAN-GPE identifier",
-		.next = NEXT(item_vxlan_gpe, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_vxlan_gpe, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_vxlan_gpe,
 					     vni)),
 	},
@@ -2907,7 +2913,7 @@ static const struct token token_list[] = {
 	[ITEM_ARP_ETH_IPV4_SHA] = {
 		.name = "sha",
 		.help = "sender hardware address",
-		.next = NEXT(item_arp_eth_ipv4, NEXT_ENTRY(MAC_ADDR),
+		.next = NEXT(item_arp_eth_ipv4, NEXT_ENTRY(COMMON_MAC_ADDR),
 			     item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_arp_eth_ipv4,
 					     sha)),
@@ -2915,7 +2921,7 @@ static const struct token token_list[] = {
 	[ITEM_ARP_ETH_IPV4_SPA] = {
 		.name = "spa",
 		.help = "sender IPv4 address",
-		.next = NEXT(item_arp_eth_ipv4, NEXT_ENTRY(IPV4_ADDR),
+		.next = NEXT(item_arp_eth_ipv4, NEXT_ENTRY(COMMON_IPV4_ADDR),
 			     item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_arp_eth_ipv4,
 					     spa)),
@@ -2923,7 +2929,7 @@ static const struct token token_list[] = {
 	[ITEM_ARP_ETH_IPV4_THA] = {
 		.name = "tha",
 		.help = "target hardware address",
-		.next = NEXT(item_arp_eth_ipv4, NEXT_ENTRY(MAC_ADDR),
+		.next = NEXT(item_arp_eth_ipv4, NEXT_ENTRY(COMMON_MAC_ADDR),
 			     item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_arp_eth_ipv4,
 					     tha)),
@@ -2931,7 +2937,7 @@ static const struct token token_list[] = {
 	[ITEM_ARP_ETH_IPV4_TPA] = {
 		.name = "tpa",
 		.help = "target IPv4 address",
-		.next = NEXT(item_arp_eth_ipv4, NEXT_ENTRY(IPV4_ADDR),
+		.next = NEXT(item_arp_eth_ipv4, NEXT_ENTRY(COMMON_IPV4_ADDR),
 			     item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_arp_eth_ipv4,
 					     tpa)),
@@ -2947,7 +2953,7 @@ static const struct token token_list[] = {
 	[ITEM_IPV6_EXT_NEXT_HDR] = {
 		.name = "next_hdr",
 		.help = "next header",
-		.next = NEXT(item_ipv6_ext, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_ipv6_ext, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv6_ext,
 					     next_hdr)),
 	},
@@ -2962,7 +2968,7 @@ static const struct token token_list[] = {
 	[ITEM_IPV6_FRAG_EXT_NEXT_HDR] = {
 		.name = "next_hdr",
 		.help = "next header",
-		.next = NEXT(item_ipv6_frag_ext, NEXT_ENTRY(UNSIGNED),
+		.next = NEXT(item_ipv6_frag_ext, NEXT_ENTRY(COMMON_UNSIGNED),
 			     item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_ipv6_frag_ext,
 					hdr.next_header)),
@@ -2970,7 +2976,7 @@ static const struct token token_list[] = {
 	[ITEM_IPV6_FRAG_EXT_FRAG_DATA] = {
 		.name = "frag_data",
 		.help = "Fragment flags and offset",
-		.next = NEXT(item_ipv6_frag_ext, NEXT_ENTRY(UNSIGNED),
+		.next = NEXT(item_ipv6_frag_ext, NEXT_ENTRY(COMMON_UNSIGNED),
 			     item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ipv6_frag_ext,
 					     hdr.frag_data)),
@@ -2985,14 +2991,14 @@ static const struct token token_list[] = {
 	[ITEM_ICMP6_TYPE] = {
 		.name = "type",
 		.help = "ICMPv6 type",
-		.next = NEXT(item_icmp6, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_icmp6, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_icmp6,
 					     type)),
 	},
 	[ITEM_ICMP6_CODE] = {
 		.name = "code",
 		.help = "ICMPv6 code",
-		.next = NEXT(item_icmp6, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_icmp6, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_icmp6,
 					     code)),
 	},
@@ -3007,7 +3013,7 @@ static const struct token token_list[] = {
 	[ITEM_ICMP6_ND_NS_TARGET_ADDR] = {
 		.name = "target_addr",
 		.help = "target address",
-		.next = NEXT(item_icmp6_nd_ns, NEXT_ENTRY(IPV6_ADDR),
+		.next = NEXT(item_icmp6_nd_ns, NEXT_ENTRY(COMMON_IPV6_ADDR),
 			     item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_icmp6_nd_ns,
 					     target_addr)),
@@ -3023,7 +3029,7 @@ static const struct token token_list[] = {
 	[ITEM_ICMP6_ND_NA_TARGET_ADDR] = {
 		.name = "target_addr",
 		.help = "target address",
-		.next = NEXT(item_icmp6_nd_na, NEXT_ENTRY(IPV6_ADDR),
+		.next = NEXT(item_icmp6_nd_na, NEXT_ENTRY(COMMON_IPV6_ADDR),
 			     item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_icmp6_nd_na,
 					     target_addr)),
@@ -3040,7 +3046,7 @@ static const struct token token_list[] = {
 	[ITEM_ICMP6_ND_OPT_TYPE] = {
 		.name = "type",
 		.help = "ND option type",
-		.next = NEXT(item_icmp6_nd_opt, NEXT_ENTRY(UNSIGNED),
+		.next = NEXT(item_icmp6_nd_opt, NEXT_ENTRY(COMMON_UNSIGNED),
 			     item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_icmp6_nd_opt,
 					     type)),
@@ -3058,7 +3064,7 @@ static const struct token token_list[] = {
 	[ITEM_ICMP6_ND_OPT_SLA_ETH_SLA] = {
 		.name = "sla",
 		.help = "source Ethernet LLA",
-		.next = NEXT(item_icmp6_nd_opt_sla_eth, NEXT_ENTRY(MAC_ADDR),
+		.next = NEXT(item_icmp6_nd_opt_sla_eth, NEXT_ENTRY(COMMON_MAC_ADDR),
 			     item_param),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_item_icmp6_nd_opt_sla_eth, sla)),
@@ -3076,7 +3082,7 @@ static const struct token token_list[] = {
 	[ITEM_ICMP6_ND_OPT_TLA_ETH_TLA] = {
 		.name = "tla",
 		.help = "target Ethernet LLA",
-		.next = NEXT(item_icmp6_nd_opt_tla_eth, NEXT_ENTRY(MAC_ADDR),
+		.next = NEXT(item_icmp6_nd_opt_tla_eth, NEXT_ENTRY(COMMON_MAC_ADDR),
 			     item_param),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_item_icmp6_nd_opt_tla_eth, tla)),
@@ -3091,7 +3097,7 @@ static const struct token token_list[] = {
 	[ITEM_META_DATA] = {
 		.name = "data",
 		.help = "metadata value",
-		.next = NEXT(item_meta, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_meta, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_MASK(struct rte_flow_item_meta,
 					     data, "\xff\xff\xff\xff")),
 	},
@@ -3105,7 +3111,7 @@ static const struct token token_list[] = {
 	[ITEM_GRE_KEY_VALUE] = {
 		.name = "value",
 		.help = "key value",
-		.next = NEXT(item_gre_key, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_gre_key, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARG_ENTRY_HTON(rte_be32_t)),
 	},
 	[ITEM_GTP_PSC] = {
@@ -3119,14 +3125,14 @@ static const struct token token_list[] = {
 	[ITEM_GTP_PSC_QFI] = {
 		.name = "qfi",
 		.help = "QoS flow identifier",
-		.next = NEXT(item_gtp_psc, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_gtp_psc, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gtp_psc,
 					qfi)),
 	},
 	[ITEM_GTP_PSC_PDU_T] = {
 		.name = "pdu_t",
 		.help = "PDU type",
-		.next = NEXT(item_gtp_psc, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_gtp_psc, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gtp_psc,
 					pdu_type)),
 	},
@@ -3147,7 +3153,7 @@ static const struct token token_list[] = {
 	[ITEM_PPPOE_SEID] = {
 		.name = "seid",
 		.help = "session identifier",
-		.next = NEXT(item_pppoes, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_pppoes, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_pppoe,
 					session_id)),
 	},
@@ -3156,7 +3162,7 @@ static const struct token token_list[] = {
 		.help = "match PPPoE session protocol identifier",
 		.priv = PRIV_ITEM(PPPOE_PROTO_ID,
 				sizeof(struct rte_flow_item_pppoe_proto_id)),
-		.next = NEXT(item_pppoe_proto_id, NEXT_ENTRY(UNSIGNED),
+		.next = NEXT(item_pppoe_proto_id, NEXT_ENTRY(COMMON_UNSIGNED),
 			     item_param),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_item_pppoe_proto_id, proto_id)),
@@ -3173,14 +3179,14 @@ static const struct token token_list[] = {
 	[ITEM_HIGIG2_CLASSIFICATION] = {
 		.name = "classification",
 		.help = "matches classification of higig2 header",
-		.next = NEXT(item_higig2, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_higig2, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_higig2_hdr,
 					hdr.ppt1.classification)),
 	},
 	[ITEM_HIGIG2_VID] = {
 		.name = "vid",
 		.help = "matches vid of higig2 header",
-		.next = NEXT(item_higig2, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_higig2, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_higig2_hdr,
 					hdr.ppt1.vid)),
 	},
@@ -3194,13 +3200,13 @@ static const struct token token_list[] = {
 	[ITEM_TAG_DATA] = {
 		.name = "data",
 		.help = "tag value to match",
-		.next = NEXT(item_tag, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_tag, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_tag, data)),
 	},
 	[ITEM_TAG_INDEX] = {
 		.name = "index",
 		.help = "index of tag array to match",
-		.next = NEXT(item_tag, NEXT_ENTRY(UNSIGNED),
+		.next = NEXT(item_tag, NEXT_ENTRY(COMMON_UNSIGNED),
 			     NEXT_ENTRY(ITEM_PARAM_IS)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_tag, index)),
 	},
@@ -3215,7 +3221,7 @@ static const struct token token_list[] = {
 	[ITEM_L2TPV3OIP_SESSION_ID] = {
 		.name = "session_id",
 		.help = "session identifier",
-		.next = NEXT(item_l2tpv3oip, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_l2tpv3oip, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_l2tpv3oip,
 					     session_id)),
 	},
@@ -3229,7 +3235,7 @@ static const struct token token_list[] = {
 	[ITEM_ESP_SPI] = {
 		.name = "spi",
 		.help = "security policy index",
-		.next = NEXT(item_esp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_esp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_esp,
 				hdr.spi)),
 	},
@@ -3243,7 +3249,7 @@ static const struct token token_list[] = {
 	[ITEM_AH_SPI] = {
 		.name = "spi",
 		.help = "security parameters index",
-		.next = NEXT(item_ah, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_ah, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ah, spi)),
 	},
 	[ITEM_PFCP] = {
@@ -3256,14 +3262,14 @@ static const struct token token_list[] = {
 	[ITEM_PFCP_S_FIELD] = {
 		.name = "s_field",
 		.help = "S field",
-		.next = NEXT(item_pfcp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_pfcp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_pfcp,
 				s_field)),
 	},
 	[ITEM_PFCP_SEID] = {
 		.name = "seid",
 		.help = "session endpoint identifier",
-		.next = NEXT(item_pfcp, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_pfcp, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_pfcp, seid)),
 	},
 	[ITEM_ECPRI] = {
@@ -3296,7 +3302,7 @@ static const struct token token_list[] = {
 		.help = "Physical Channel ID",
 		.next = NEXT(NEXT_ENTRY(ITEM_ECPRI_MSG_IQ_DATA_PCID,
 				ITEM_ECPRI_COMMON, ITEM_NEXT),
-				NEXT_ENTRY(UNSIGNED), item_param),
+				NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ecpri,
 				hdr.type0.pc_id)),
 	},
@@ -3312,7 +3318,7 @@ static const struct token token_list[] = {
 		.help = "Real-Time Control Data ID",
 		.next = NEXT(NEXT_ENTRY(ITEM_ECPRI_MSG_RTC_CTRL_RTCID,
 				ITEM_ECPRI_COMMON, ITEM_NEXT),
-				NEXT_ENTRY(UNSIGNED), item_param),
+				NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ecpri,
 				hdr.type2.rtc_id)),
 	},
@@ -3328,7 +3334,7 @@ static const struct token token_list[] = {
 		.help = "Measurement ID",
 		.next = NEXT(NEXT_ENTRY(ITEM_ECPRI_MSG_DLY_MSR_MSRID,
 				ITEM_ECPRI_COMMON, ITEM_NEXT),
-				NEXT_ENTRY(UNSIGNED), item_param),
+				NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_ecpri,
 				hdr.type5.msr_id)),
 	},
@@ -3344,21 +3350,21 @@ static const struct token token_list[] = {
 	[ITEM_GENEVE_OPT_CLASS]	= {
 		.name = "class",
 		.help = "GENEVE option class",
-		.next = NEXT(item_geneve_opt, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_geneve_opt, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_geneve_opt,
 					     option_class)),
 	},
 	[ITEM_GENEVE_OPT_TYPE] = {
 		.name = "type",
 		.help = "GENEVE option type",
-		.next = NEXT(item_geneve_opt, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_geneve_opt, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_geneve_opt,
 					option_type)),
 	},
 	[ITEM_GENEVE_OPT_LENGTH] = {
 		.name = "length",
 		.help = "GENEVE option data length (in 32b words)",
-		.next = NEXT(item_geneve_opt, NEXT_ENTRY(UNSIGNED), item_param),
+		.next = NEXT(item_geneve_opt, NEXT_ENTRY(COMMON_UNSIGNED), item_param),
 		.args = ARGS(ARGS_ENTRY_BOUNDED(
 				struct rte_flow_item_geneve_opt, option_len,
 				0, 31)),
@@ -3366,7 +3372,7 @@ static const struct token token_list[] = {
 	[ITEM_GENEVE_OPT_DATA] = {
 		.name = "data",
 		.help = "GENEVE option data pattern",
-		.next = NEXT(item_geneve_opt, NEXT_ENTRY(HEX), item_param),
+		.next = NEXT(item_geneve_opt, NEXT_ENTRY(COMMON_HEX), item_param),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_item_geneve_opt, data),
 			     ARGS_ENTRY_ARB(0, 0),
 			     ARGS_ENTRY_ARB
@@ -3415,7 +3421,7 @@ static const struct token token_list[] = {
 	[ACTION_JUMP_GROUP] = {
 		.name = "group",
 		.help = "group to redirect traffic to",
-		.next = NEXT(action_jump, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_jump, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_jump, group)),
 		.call = parse_vc_conf,
 	},
@@ -3429,7 +3435,7 @@ static const struct token token_list[] = {
 	[ACTION_MARK_ID] = {
 		.name = "id",
 		.help = "32 bit value to return with packets",
-		.next = NEXT(action_mark, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_mark, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_mark, id)),
 		.call = parse_vc_conf,
 	},
@@ -3451,7 +3457,7 @@ static const struct token token_list[] = {
 	[ACTION_QUEUE_INDEX] = {
 		.name = "index",
 		.help = "queue index to use",
-		.next = NEXT(action_queue, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_queue, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_queue, index)),
 		.call = parse_vc_conf,
 	},
@@ -3473,14 +3479,14 @@ static const struct token token_list[] = {
 	[ACTION_COUNT_ID] = {
 		.name = "identifier",
 		.help = "counter identifier to use",
-		.next = NEXT(action_count, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_count, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_count, id)),
 		.call = parse_vc_conf,
 	},
 	[ACTION_COUNT_SHARED] = {
 		.name = "shared",
 		.help = "shared counter",
-		.next = NEXT(action_count, NEXT_ENTRY(BOOLEAN)),
+		.next = NEXT(action_count, NEXT_ENTRY(COMMON_BOOLEAN)),
 		.args = ARGS(ARGS_ENTRY_BF(struct rte_flow_action_count,
 					   shared, 1)),
 		.call = parse_vc_conf,
@@ -3524,7 +3530,7 @@ static const struct token token_list[] = {
 	[ACTION_RSS_LEVEL] = {
 		.name = "level",
 		.help = "encapsulation level for \"types\"",
-		.next = NEXT(action_rss, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_rss, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY_ARB
 			     (offsetof(struct action_rss_data, conf) +
 			      offsetof(struct rte_flow_action_rss, level),
@@ -3545,7 +3551,7 @@ static const struct token token_list[] = {
 	[ACTION_RSS_KEY] = {
 		.name = "key",
 		.help = "RSS hash key",
-		.next = NEXT(action_rss, NEXT_ENTRY(HEX)),
+		.next = NEXT(action_rss, NEXT_ENTRY(COMMON_HEX)),
 		.args = ARGS(ARGS_ENTRY_ARB
 			     (offsetof(struct action_rss_data, conf) +
 			      offsetof(struct rte_flow_action_rss, key),
@@ -3560,7 +3566,7 @@ static const struct token token_list[] = {
 	[ACTION_RSS_KEY_LEN] = {
 		.name = "key_len",
 		.help = "RSS hash key length in bytes",
-		.next = NEXT(action_rss, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_rss, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY_ARB_BOUNDED
 			     (offsetof(struct action_rss_data, conf) +
 			      offsetof(struct rte_flow_action_rss, key_len),
@@ -3598,7 +3604,7 @@ static const struct token token_list[] = {
 	[ACTION_VF_ORIGINAL] = {
 		.name = "original",
 		.help = "use original VF ID if possible",
-		.next = NEXT(action_vf, NEXT_ENTRY(BOOLEAN)),
+		.next = NEXT(action_vf, NEXT_ENTRY(COMMON_BOOLEAN)),
 		.args = ARGS(ARGS_ENTRY_BF(struct rte_flow_action_vf,
 					   original, 1)),
 		.call = parse_vc_conf,
@@ -3606,7 +3612,7 @@ static const struct token token_list[] = {
 	[ACTION_VF_ID] = {
 		.name = "id",
 		.help = "VF ID",
-		.next = NEXT(action_vf, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_vf, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_vf, id)),
 		.call = parse_vc_conf,
 	},
@@ -3621,7 +3627,7 @@ static const struct token token_list[] = {
 	[ACTION_PHY_PORT_ORIGINAL] = {
 		.name = "original",
 		.help = "use original port index if possible",
-		.next = NEXT(action_phy_port, NEXT_ENTRY(BOOLEAN)),
+		.next = NEXT(action_phy_port, NEXT_ENTRY(COMMON_BOOLEAN)),
 		.args = ARGS(ARGS_ENTRY_BF(struct rte_flow_action_phy_port,
 					   original, 1)),
 		.call = parse_vc_conf,
@@ -3629,7 +3635,7 @@ static const struct token token_list[] = {
 	[ACTION_PHY_PORT_INDEX] = {
 		.name = "index",
 		.help = "physical port index",
-		.next = NEXT(action_phy_port, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_phy_port, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_phy_port,
 					index)),
 		.call = parse_vc_conf,
@@ -3645,7 +3651,7 @@ static const struct token token_list[] = {
 	[ACTION_PORT_ID_ORIGINAL] = {
 		.name = "original",
 		.help = "use original DPDK port ID if possible",
-		.next = NEXT(action_port_id, NEXT_ENTRY(BOOLEAN)),
+		.next = NEXT(action_port_id, NEXT_ENTRY(COMMON_BOOLEAN)),
 		.args = ARGS(ARGS_ENTRY_BF(struct rte_flow_action_port_id,
 					   original, 1)),
 		.call = parse_vc_conf,
@@ -3653,7 +3659,7 @@ static const struct token token_list[] = {
 	[ACTION_PORT_ID_ID] = {
 		.name = "id",
 		.help = "DPDK port ID",
-		.next = NEXT(action_port_id, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_port_id, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_port_id, id)),
 		.call = parse_vc_conf,
 	},
@@ -3668,7 +3674,7 @@ static const struct token token_list[] = {
 	[ACTION_METER_ID] = {
 		.name = "mtr_id",
 		.help = "meter id to use",
-		.next = NEXT(action_meter, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_meter, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_meter, mtr_id)),
 		.call = parse_vc_conf,
 	},
@@ -3684,7 +3690,7 @@ static const struct token token_list[] = {
 	[ACTION_OF_SET_MPLS_TTL_MPLS_TTL] = {
 		.name = "mpls_ttl",
 		.help = "MPLS TTL",
-		.next = NEXT(action_of_set_mpls_ttl, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_of_set_mpls_ttl, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_of_set_mpls_ttl,
 					mpls_ttl)),
 		.call = parse_vc_conf,
@@ -3708,7 +3714,7 @@ static const struct token token_list[] = {
 	[ACTION_OF_SET_NW_TTL_NW_TTL] = {
 		.name = "nw_ttl",
 		.help = "IP TTL",
-		.next = NEXT(action_of_set_nw_ttl, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_of_set_nw_ttl, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_of_set_nw_ttl,
 					nw_ttl)),
 		.call = parse_vc_conf,
@@ -3753,7 +3759,7 @@ static const struct token token_list[] = {
 	[ACTION_OF_PUSH_VLAN_ETHERTYPE] = {
 		.name = "ethertype",
 		.help = "EtherType",
-		.next = NEXT(action_of_push_vlan, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_of_push_vlan, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_action_of_push_vlan,
 			      ethertype)),
@@ -3771,7 +3777,7 @@ static const struct token token_list[] = {
 	[ACTION_OF_SET_VLAN_VID_VLAN_VID] = {
 		.name = "vlan_vid",
 		.help = "VLAN id",
-		.next = NEXT(action_of_set_vlan_vid, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_of_set_vlan_vid, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_action_of_set_vlan_vid,
 			      vlan_vid)),
@@ -3789,7 +3795,7 @@ static const struct token token_list[] = {
 	[ACTION_OF_SET_VLAN_PCP_VLAN_PCP] = {
 		.name = "vlan_pcp",
 		.help = "VLAN priority",
-		.next = NEXT(action_of_set_vlan_pcp, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_of_set_vlan_pcp, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_action_of_set_vlan_pcp,
 			      vlan_pcp)),
@@ -3806,7 +3812,7 @@ static const struct token token_list[] = {
 	[ACTION_OF_POP_MPLS_ETHERTYPE] = {
 		.name = "ethertype",
 		.help = "EtherType",
-		.next = NEXT(action_of_pop_mpls, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_of_pop_mpls, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_action_of_pop_mpls,
 			      ethertype)),
@@ -3824,7 +3830,7 @@ static const struct token token_list[] = {
 	[ACTION_OF_PUSH_MPLS_ETHERTYPE] = {
 		.name = "ethertype",
 		.help = "EtherType",
-		.next = NEXT(action_of_push_mpls, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_of_push_mpls, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_action_of_push_mpls,
 			      ethertype)),
@@ -3932,7 +3938,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_IPV4_SRC_IPV4_SRC] = {
 		.name = "ipv4_addr",
 		.help = "new IPv4 source address to set",
-		.next = NEXT(action_set_ipv4_src, NEXT_ENTRY(IPV4_ADDR)),
+		.next = NEXT(action_set_ipv4_src, NEXT_ENTRY(COMMON_IPV4_ADDR)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			(struct rte_flow_action_set_ipv4, ipv4_addr)),
 		.call = parse_vc_conf,
@@ -3949,7 +3955,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_IPV4_DST_IPV4_DST] = {
 		.name = "ipv4_addr",
 		.help = "new IPv4 destination address to set",
-		.next = NEXT(action_set_ipv4_dst, NEXT_ENTRY(IPV4_ADDR)),
+		.next = NEXT(action_set_ipv4_dst, NEXT_ENTRY(COMMON_IPV4_ADDR)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			(struct rte_flow_action_set_ipv4, ipv4_addr)),
 		.call = parse_vc_conf,
@@ -3966,7 +3972,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_IPV6_SRC_IPV6_SRC] = {
 		.name = "ipv6_addr",
 		.help = "new IPv6 source address to set",
-		.next = NEXT(action_set_ipv6_src, NEXT_ENTRY(IPV6_ADDR)),
+		.next = NEXT(action_set_ipv6_src, NEXT_ENTRY(COMMON_IPV6_ADDR)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			(struct rte_flow_action_set_ipv6, ipv6_addr)),
 		.call = parse_vc_conf,
@@ -3983,7 +3989,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_IPV6_DST_IPV6_DST] = {
 		.name = "ipv6_addr",
 		.help = "new IPv6 destination address to set",
-		.next = NEXT(action_set_ipv6_dst, NEXT_ENTRY(IPV6_ADDR)),
+		.next = NEXT(action_set_ipv6_dst, NEXT_ENTRY(COMMON_IPV6_ADDR)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			(struct rte_flow_action_set_ipv6, ipv6_addr)),
 		.call = parse_vc_conf,
@@ -4000,7 +4006,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_TP_SRC_TP_SRC] = {
 		.name = "port",
 		.help = "new source port number to set",
-		.next = NEXT(action_set_tp_src, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_set_tp_src, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_action_set_tp, port)),
 		.call = parse_vc_conf,
@@ -4017,7 +4023,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_TP_DST_TP_DST] = {
 		.name = "port",
 		.help = "new destination port number to set",
-		.next = NEXT(action_set_tp_dst, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_set_tp_dst, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_action_set_tp, port)),
 		.call = parse_vc_conf,
@@ -4048,7 +4054,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_TTL_TTL] = {
 		.name = "ttl_value",
 		.help = "new ttl value to set",
-		.next = NEXT(action_set_ttl, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_set_ttl, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_action_set_ttl, ttl_value)),
 		.call = parse_vc_conf,
@@ -4064,7 +4070,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_MAC_SRC_MAC_SRC] = {
 		.name = "mac_addr",
 		.help = "new source mac address",
-		.next = NEXT(action_set_mac_src, NEXT_ENTRY(MAC_ADDR)),
+		.next = NEXT(action_set_mac_src, NEXT_ENTRY(COMMON_MAC_ADDR)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_action_set_mac, mac_addr)),
 		.call = parse_vc_conf,
@@ -4080,7 +4086,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_MAC_DST_MAC_DST] = {
 		.name = "mac_addr",
 		.help = "new destination mac address to set",
-		.next = NEXT(action_set_mac_dst, NEXT_ENTRY(MAC_ADDR)),
+		.next = NEXT(action_set_mac_dst, NEXT_ENTRY(COMMON_MAC_ADDR)),
 		.args = ARGS(ARGS_ENTRY_HTON
 			     (struct rte_flow_action_set_mac, mac_addr)),
 		.call = parse_vc_conf,
@@ -4095,7 +4101,7 @@ static const struct token token_list[] = {
 	[ACTION_INC_TCP_SEQ_VALUE] = {
 		.name = "value",
 		.help = "the value to increase TCP sequence number by",
-		.next = NEXT(action_inc_tcp_seq, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_inc_tcp_seq, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARG_ENTRY_HTON(rte_be32_t)),
 		.call = parse_vc_conf,
 	},
@@ -4109,7 +4115,7 @@ static const struct token token_list[] = {
 	[ACTION_DEC_TCP_SEQ_VALUE] = {
 		.name = "value",
 		.help = "the value to decrease TCP sequence number by",
-		.next = NEXT(action_dec_tcp_seq, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_dec_tcp_seq, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARG_ENTRY_HTON(rte_be32_t)),
 		.call = parse_vc_conf,
 	},
@@ -4123,7 +4129,7 @@ static const struct token token_list[] = {
 	[ACTION_INC_TCP_ACK_VALUE] = {
 		.name = "value",
 		.help = "the value to increase TCP acknowledgment number by",
-		.next = NEXT(action_inc_tcp_ack, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_inc_tcp_ack, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARG_ENTRY_HTON(rte_be32_t)),
 		.call = parse_vc_conf,
 	},
@@ -4137,7 +4143,7 @@ static const struct token token_list[] = {
 	[ACTION_DEC_TCP_ACK_VALUE] = {
 		.name = "value",
 		.help = "the value to decrease TCP acknowledgment number by",
-		.next = NEXT(action_dec_tcp_ack, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_dec_tcp_ack, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARG_ENTRY_HTON(rte_be32_t)),
 		.call = parse_vc_conf,
 	},
@@ -4220,7 +4226,7 @@ static const struct token token_list[] = {
 	[ACTION_MODIFY_FIELD_DST_LEVEL] = {
 		.name = "dst_level",
 		.help = "destination field level",
-		.next = NEXT(action_modify_field_dst, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_modify_field_dst, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_modify_field,
 					dst.level)),
 		.call = parse_vc_conf,
@@ -4228,7 +4234,7 @@ static const struct token token_list[] = {
 	[ACTION_MODIFY_FIELD_DST_OFFSET] = {
 		.name = "dst_offset",
 		.help = "destination field bit offset",
-		.next = NEXT(action_modify_field_dst, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_modify_field_dst, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_modify_field,
 					dst.offset)),
 		.call = parse_vc_conf,
@@ -4249,7 +4255,7 @@ static const struct token token_list[] = {
 	[ACTION_MODIFY_FIELD_SRC_LEVEL] = {
 		.name = "src_level",
 		.help = "source field level",
-		.next = NEXT(action_modify_field_src, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_modify_field_src, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_modify_field,
 					src.level)),
 		.call = parse_vc_conf,
@@ -4257,7 +4263,7 @@ static const struct token token_list[] = {
 	[ACTION_MODIFY_FIELD_SRC_OFFSET] = {
 		.name = "src_offset",
 		.help = "source field bit offset",
-		.next = NEXT(action_modify_field_src, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_modify_field_src, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_modify_field,
 					src.offset)),
 		.call = parse_vc_conf,
@@ -4266,7 +4272,7 @@ static const struct token token_list[] = {
 		.name = "src_value",
 		.help = "source immediate value",
 		.next = NEXT(NEXT_ENTRY(ACTION_MODIFY_FIELD_WIDTH),
-			NEXT_ENTRY(UNSIGNED)),
+			NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_modify_field,
 					src.value)),
 		.call = parse_vc_conf,
@@ -4275,7 +4281,7 @@ static const struct token token_list[] = {
 		.name = "width",
 		.help = "number of bits to copy",
 		.next = NEXT(NEXT_ENTRY(ACTION_NEXT),
-			NEXT_ENTRY(UNSIGNED)),
+			NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_modify_field,
 					width)),
 		.call = parse_vc_conf,
@@ -4315,7 +4321,7 @@ static const struct token token_list[] = {
 	},
 	[SET_RAW_INDEX] = {
 		.name = "{index}",
-		.type = "UNSIGNED",
+		.type = "COMMON_UNSIGNED",
 		.help = "index of raw_encap/raw_decap data",
 		.next = NEXT(next_item),
 		.call = parse_port,
@@ -4348,14 +4354,14 @@ static const struct token token_list[] = {
 	[ACTION_SET_TAG_INDEX] = {
 		.name = "index",
 		.help = "index of tag array",
-		.next = NEXT(action_set_tag, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_set_tag, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY(struct rte_flow_action_set_tag, index)),
 		.call = parse_vc_conf,
 	},
 	[ACTION_SET_TAG_DATA] = {
 		.name = "data",
 		.help = "tag value",
-		.next = NEXT(action_set_tag, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_set_tag, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY
 			     (struct rte_flow_action_set_tag, data)),
 		.call = parse_vc_conf,
@@ -4363,7 +4369,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_TAG_MASK] = {
 		.name = "mask",
 		.help = "mask for tag value",
-		.next = NEXT(action_set_tag, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_set_tag, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY
 			     (struct rte_flow_action_set_tag, mask)),
 		.call = parse_vc_conf,
@@ -4379,7 +4385,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_META_DATA] = {
 		.name = "data",
 		.help = "metadata value",
-		.next = NEXT(action_set_meta, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_set_meta, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY
 			     (struct rte_flow_action_set_meta, data)),
 		.call = parse_vc_conf,
@@ -4387,7 +4393,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_META_MASK] = {
 		.name = "mask",
 		.help = "mask for metadata value",
-		.next = NEXT(action_set_meta, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_set_meta, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY
 			     (struct rte_flow_action_set_meta, mask)),
 		.call = parse_vc_conf,
@@ -4403,7 +4409,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_IPV4_DSCP_VALUE] = {
 		.name = "dscp_value",
 		.help = "new IPv4 DSCP value to set",
-		.next = NEXT(action_set_ipv4_dscp, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_set_ipv4_dscp, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY
 			     (struct rte_flow_action_set_dscp, dscp)),
 		.call = parse_vc_conf,
@@ -4419,7 +4425,7 @@ static const struct token token_list[] = {
 	[ACTION_SET_IPV6_DSCP_VALUE] = {
 		.name = "dscp_value",
 		.help = "new IPv6 DSCP value to set",
-		.next = NEXT(action_set_ipv6_dscp, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_set_ipv6_dscp, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY
 			     (struct rte_flow_action_set_dscp, dscp)),
 		.call = parse_vc_conf,
@@ -4437,7 +4443,7 @@ static const struct token token_list[] = {
 		.help = "flow age timeout value",
 		.args = ARGS(ARGS_ENTRY_BF(struct rte_flow_action_age,
 					   timeout, 24)),
-		.next = NEXT(action_age, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_age, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.call = parse_vc_conf,
 	},
 	[ACTION_SAMPLE] = {
@@ -4451,7 +4457,7 @@ static const struct token token_list[] = {
 	[ACTION_SAMPLE_RATIO] = {
 		.name = "ratio",
 		.help = "flow sample ratio value",
-		.next = NEXT(action_sample, NEXT_ENTRY(UNSIGNED)),
+		.next = NEXT(action_sample, NEXT_ENTRY(COMMON_UNSIGNED)),
 		.args = ARGS(ARGS_ENTRY_ARB
 			     (offsetof(struct action_sample_data, conf) +
 			      offsetof(struct rte_flow_action_sample, ratio),
@@ -4465,7 +4471,7 @@ static const struct token token_list[] = {
 	},
 	[ACTION_SAMPLE_INDEX_VALUE] = {
 		.name = "{index}",
-		.type = "UNSIGNED",
+		.type = "COMMON_UNSIGNED",
 		.help = "unsigned integer value",
 		.next = NEXT(NEXT_ENTRY(ACTION_NEXT)),
 		.call = parse_vc_action_sample_index,
@@ -4476,7 +4482,7 @@ static const struct token token_list[] = {
 		.name = "action_id",
 		.help = "specify a shared action id to destroy",
 		.next = NEXT(next_sa_destroy_attr,
-			     NEXT_ENTRY(SHARED_ACTION_ID)),
+			     NEXT_ENTRY(COMMON_SHARED_ACTION_ID)),
 		.args = ARGS(ARGS_ENTRY_PTR(struct buffer,
 					    args.sa_destroy.action_id)),
 		.call = parse_sa_destroy,
@@ -4486,7 +4492,7 @@ static const struct token token_list[] = {
 		.name = "action_id",
 		.help = "specify a shared action id to create",
 		.next = NEXT(next_sa_create_attr,
-			     NEXT_ENTRY(SHARED_ACTION_ID)),
+			     NEXT_ENTRY(COMMON_SHARED_ACTION_ID)),
 		.args = ARGS(ARGS_ENTRY(struct buffer, args.vc.attr.group)),
 	},
 	[ACTION_SHARED] = {
@@ -4866,7 +4872,7 @@ parse_vc(struct context *ctx, const struct token *token,
 	case TRANSFER:
 		out->args.vc.attr.transfer = 1;
 		return len;
-	case PATTERN:
+	case ITEM_PATTERN:
 		out->args.vc.pattern =
 			(void *)RTE_ALIGN_CEIL((uintptr_t)(out + 1),
 					       sizeof(double));
@@ -4947,7 +4953,7 @@ parse_vc_spec(struct context *ctx, const struct token *token,
 		return -1;
 	/* Parse parameter types. */
 	switch (ctx->curr) {
-		static const enum index prefix[] = NEXT_ENTRY(PREFIX);
+		static const enum index prefix[] = NEXT_ENTRY(COMMON_PREFIX);
 
 	case ITEM_PARAM_IS:
 		index = 0;
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index ef0b9784d..2dfb98ff1 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -38,7 +38,6 @@
 #include <rte_string_fns.h>
 #include <rte_cycles.h>
 #include <rte_flow.h>
-#include <rte_errno.h>
 #ifdef RTE_NET_IXGBE
 #include <rte_pmd_ixgbe.h>
 #endif
@@ -170,6 +169,27 @@ print_ethaddr(const char *name, struct rte_ether_addr *eth_addr)
 	printf("%s%s", name, buf);
 }
 
+#ifdef RTE_EXEC_ENV_WINDOWS
+static int
+clock_gettime_monotonic(struct timespec* tp)
+{
+	LARGE_INTEGER pf, pc;
+	LONGLONG nsec;
+
+	if (QueryPerformanceFrequency(&pf) == 0)
+		return -1;
+
+	if (QueryPerformanceCounter(&pc) == 0)
+		return -1;
+
+	nsec = pc.QuadPart * NS_PER_SEC / pf.QuadPart;
+	tp->tv_sec = nsec / NS_PER_SEC;
+	tp->tv_nsec = nsec - tp->tv_sec * NS_PER_SEC;
+
+	return 0;
+}
+#endif
+
 void
 nic_stats_display(portid_t port_id)
 {
@@ -182,6 +202,7 @@ nic_stats_display(portid_t port_id)
 	uint64_t diff_pkts_rx, diff_pkts_tx, diff_bytes_rx, diff_bytes_tx,
 								diff_ns;
 	uint64_t mpps_rx, mpps_tx, mbps_rx, mbps_tx;
+	int ret;
 	struct rte_eth_stats stats;
 
 	static const char *nic_stats_border = "########################";
@@ -202,7 +223,13 @@ nic_stats_display(portid_t port_id)
 	       "%-"PRIu64"\n", stats.opackets, stats.oerrors, stats.obytes);
 
 	diff_ns = 0;
-	if (clock_gettime(CLOCK_TYPE_ID, &cur_time) == 0) {
+
+#ifdef RTE_EXEC_ENV_WINDOWS
+	ret = clock_gettime_monotonic(&cur_time);
+#else
+	ret = clock_gettime(CLOCK_TYPE_ID, &cur_time);
+#endif
+	if (ret == 0) {
 		uint64_t ns;
 
 		ns = cur_time.tv_sec * NS_PER_SEC;
@@ -3404,13 +3431,13 @@ set_tx_pkt_split(const char *name)
 }
 
 int
-parse_fec_mode(const char *name, uint32_t *mode)
+parse_fec_mode(const char *name, uint32_t *fec_capa)
 {
 	uint8_t i;
 
 	for (i = 0; i < RTE_DIM(fec_mode_name); i++) {
 		if (strcmp(fec_mode_name[i].name, name) == 0) {
-			*mode = RTE_ETH_FEC_MODE_TO_CAPA(fec_mode_name[i].mode);
+			*fec_capa = RTE_ETH_FEC_MODE_TO_CAPA(fec_mode_name[i].mode);
 			return 0;
 		}
 	}
diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
index 6b4df335f..089936587 100644
--- a/app/test-pmd/csumonly.c
+++ b/app/test-pmd/csumonly.c
@@ -696,7 +696,7 @@ pkt_copy_split(const struct rte_mbuf *pkt)
 	mp = current_fwd_lcore()->mbp;
 
 	if (tx_pkt_split == TX_PKT_SPLIT_RND)
-		nb_seg = random() % tx_pkt_nb_segs + 1;
+		nb_seg = rte_rand() % tx_pkt_nb_segs + 1;
 	else
 		nb_seg = tx_pkt_nb_segs;
 
diff --git a/app/test-pmd/icmpecho.c b/app/test-pmd/icmpecho.c
index af6f7e790..8948f28eb 100644
--- a/app/test-pmd/icmpecho.c
+++ b/app/test-pmd/icmpecho.c
@@ -474,8 +474,8 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs)
 		}
 		icmp_h->icmp_type = RTE_IP_ICMP_ECHO_REPLY;
 		cksum = ~icmp_h->icmp_cksum & 0xffff;
-		cksum += ~htons(RTE_IP_ICMP_ECHO_REQUEST << 8) & 0xffff;
-		cksum += htons(RTE_IP_ICMP_ECHO_REPLY << 8);
+		cksum += ~RTE_BE16(RTE_IP_ICMP_ECHO_REQUEST << 8) & 0xffff;
+		cksum += RTE_BE16(RTE_IP_ICMP_ECHO_REPLY << 8);
 		cksum = (cksum & 0xffff) + (cksum >> 16);
 		cksum = (cksum & 0xffff) + (cksum >> 16);
 		icmp_h->icmp_cksum = ~cksum;
diff --git a/app/test-pmd/ieee1588fwd.c b/app/test-pmd/ieee1588fwd.c
index e3b98e3e0..9ad04e992 100644
--- a/app/test-pmd/ieee1588fwd.c
+++ b/app/test-pmd/ieee1588fwd.c
@@ -60,8 +60,9 @@ port_ieee1588_rx_timestamp_check(portid_t pi, uint32_t index)
 		printf("Port %u RX timestamp registers not valid\n", pi);
 		return;
 	}
-	printf("Port %u RX timestamp value %lu s %lu ns\n",
-		pi, timestamp.tv_sec, timestamp.tv_nsec);
+
+	printf("Port %u RX timestamp value %ju s %lu ns\n",
+		pi, (uintmax_t)timestamp.tv_sec, timestamp.tv_nsec);
 }
 
 #define MAX_TX_TMST_WAIT_MICROSECS 1000 /**< 1 milli-second */
@@ -83,9 +84,10 @@ port_ieee1588_tx_timestamp_check(portid_t pi)
 		       pi, MAX_TX_TMST_WAIT_MICROSECS);
 		return;
 	}
-	printf("Port %u TX timestamp value %lu s %lu ns validated after "
+
+	printf("Port %u TX timestamp value %ju s %lu ns validated after "
 	       "%u micro-second%s\n",
-	       pi, timestamp.tv_sec, timestamp.tv_nsec, wait_us,
+	       pi, (uintmax_t)timestamp.tv_sec, timestamp.tv_nsec, wait_us,
 	       (wait_us == 1) ? "" : "s");
 }
 
diff --git a/app/test-pmd/meson.build b/app/test-pmd/meson.build
index 7e9c7bdd6..02aea0255 100644
--- a/app/test-pmd/meson.build
+++ b/app/test-pmd/meson.build
@@ -4,6 +4,10 @@
 # override default name to drop the hyphen
 name = 'testpmd'
 cflags += '-Wno-deprecated-declarations'
+
+# Enable using internal APIs in testpmd
+cflags += ['-DALLOW_INTERNAL_API']
+
 sources = files('5tswap.c',
 	'cmdline.c',
 	'cmdline_flow.c',
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index f3954c1c6..b2024efe5 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -15,6 +15,7 @@
 
 #include <sys/queue.h>
 #include <sys/stat.h>
+#include <sys/socket.h>
 
 #include <stdint.h>
 #include <unistd.h>
@@ -211,7 +212,7 @@ usage(char* progname)
 
 #ifdef RTE_LIB_CMDLINE
 static int
-init_peer_eth_addrs(char *config_filename)
+init_peer_eth_addrs(const char *config_filename)
 {
 	FILE *config_file;
 	portid_t i;
@@ -723,13 +724,14 @@ launch_args_parse(int argc, char** argv)
 						 "Invalid tx-ip: %s", optarg);
 
 				*end++ = 0;
-				if (inet_aton(optarg, &in) == 0)
+
+				if (inet_pton(AF_INET, optarg, &in) == 0)
 					rte_exit(EXIT_FAILURE,
 						 "Invalid source IP address: %s\n",
 						 optarg);
 				tx_ip_src_addr = rte_be_to_cpu_32(in.s_addr);
 
-				if (inet_aton(end, &in) == 0)
+				if (inet_pton(AF_INET, end, &in) == 0)
 					rte_exit(EXIT_FAILURE,
 						 "Invalid destination IP address: %s\n",
 						 optarg);
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 96d2e0fce..1322185a4 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -9,7 +9,6 @@
 #include <string.h>
 #include <time.h>
 #include <fcntl.h>
-#include <sys/mman.h>
 #include <sys/types.h>
 #include <errno.h>
 #include <stdbool.h>
@@ -60,6 +59,10 @@
 #ifdef RTE_LIB_LATENCYSTATS
 #include <rte_latencystats.h>
 #endif
+#include <rte_eal_paging.h>
+#ifdef RTE_EXEC_ENV_WINDOWS
+#include <process.h>
+#endif
 
 #include "testpmd.h"
 
@@ -688,13 +691,11 @@ alloc_mem(size_t memsz, size_t pgsz, bool huge)
 	int flags;
 
 	/* allocate anonymous hugepages */
-	flags = MAP_ANONYMOUS | MAP_PRIVATE;
+	flags = RTE_MAP_ANONYMOUS | RTE_MAP_PRIVATE;
 	if (huge)
 		flags |= HUGE_FLAG | pagesz_flags(pgsz);
 
-	addr = mmap(NULL, memsz, PROT_READ | PROT_WRITE, flags, -1, 0);
-	if (addr == MAP_FAILED)
-		return NULL;
+	addr = rte_mem_map(NULL, memsz, RTE_PROT_READ | RTE_PROT_WRITE, flags, -1, 0);
 
 	return addr;
 }
@@ -728,7 +729,7 @@ create_extmem(uint32_t nb_mbufs, uint32_t mbuf_sz, struct extmem_param *param,
 
 		/* if we were told not to allocate hugepages, override */
 		if (!huge)
-			cur_pgsz = sysconf(_SC_PAGESIZE);
+			cur_pgsz = rte_mem_page_size();
 
 		ret = calc_mem_size(nb_mbufs, mbuf_sz, cur_pgsz, &mem_sz);
 		if (ret < 0) {
@@ -757,7 +758,7 @@ create_extmem(uint32_t nb_mbufs, uint32_t mbuf_sz, struct extmem_param *param,
 		}
 		/* lock memory if it's not huge pages */
 		if (!huge)
-			mlock(addr, mem_sz);
+			rte_mem_lock(addr, mem_sz);
 
 		/* populate IOVA addresses */
 		for (cur_page = 0; cur_page < n_pages; cur_page++) {
@@ -793,7 +794,7 @@ create_extmem(uint32_t nb_mbufs, uint32_t mbuf_sz, struct extmem_param *param,
 	if (iovas)
 		free(iovas);
 	if (addr)
-		munmap(addr, mem_sz);
+		rte_mem_unmap(addr, mem_sz);
 
 	return -1;
 }
@@ -835,7 +836,7 @@ setup_extmem(uint32_t nb_mbufs, uint32_t mbuf_sz, bool huge)
 
 	if (ret < 0) {
 		TESTPMD_LOG(ERR, "Cannot add memory to heap\n");
-		munmap(param.addr, param.len);
+		rte_mem_unmap(param.addr, param.len);
 		return -1;
 	}
 
@@ -846,6 +847,7 @@ setup_extmem(uint32_t nb_mbufs, uint32_t mbuf_sz, bool huge)
 
 	return 0;
 }
+
 static void
 dma_unmap_cb(struct rte_mempool *mp __rte_unused, void *opaque __rte_unused,
 	     struct rte_mempool_memhdr *memhdr, unsigned mem_idx __rte_unused)
@@ -878,7 +880,7 @@ dma_map_cb(struct rte_mempool *mp __rte_unused, void *opaque __rte_unused,
 	   struct rte_mempool_memhdr *memhdr, unsigned mem_idx __rte_unused)
 {
 	uint16_t pid = 0;
-	size_t page_size = sysconf(_SC_PAGESIZE);
+	size_t page_size = rte_mem_page_size();
 	int ret;
 
 	ret = rte_extmem_register(memhdr->addr, memhdr->len, NULL, 0,
@@ -1056,7 +1058,6 @@ mbuf_pool_create(uint16_t mbuf_seg_size, unsigned nb_mbuf,
 			rte_exit(EXIT_FAILURE, "Invalid mempool creation mode\n");
 		}
 	}
-
 err:
 	if (rte_mp == NULL) {
 		rte_exit(EXIT_FAILURE,
@@ -3061,6 +3062,7 @@ pmd_test_exit(void)
 						     NULL);
 		}
 	}
+
 	if (ports != NULL) {
 		no_link_check = 1;
 		RTE_ETH_FOREACH_DEV(pt_id) {
@@ -3074,7 +3076,6 @@ pmd_test_exit(void)
 			close_port(pt_id);
 		}
 	}
-
 	if (hot_plug) {
 		ret = rte_dev_event_monitor_stop();
 		if (ret) {
@@ -3761,7 +3762,9 @@ signal_handler(int signum)
 		f_quit = 1;
 		/* exit with the expected status */
 		signal(signum, SIG_DFL);
+#ifndef RTE_EXEC_ENV_WINDOWS
 		kill(getpid(), signum);
+#endif
 	}
 }
 
@@ -3824,8 +3827,8 @@ main(int argc, char** argv)
 	latencystats_enabled = 0;
 #endif
 
-	/* on FreeBSD, mlockall() is disabled by default */
-#ifdef RTE_EXEC_ENV_FREEBSD
+	/* on FreeBSD and Window, mlockall() is disabled by default */
+#if (defined(RTE_EXEC_ENV_FREEBSD) || defined (RTE_EXEC_ENV_WINDOWS))
 	do_mlockall = 0;
 #else
 	do_mlockall = 1;
@@ -3836,9 +3839,13 @@ main(int argc, char** argv)
 	if (argc > 1)
 		launch_args_parse(argc, argv);
 
-	if (do_mlockall && mlockall(MCL_CURRENT | MCL_FUTURE)) {
-		TESTPMD_LOG(NOTICE, "mlockall() failed with error \"%s\"\n",
-			strerror(errno));
+	if (do_mlockall) {
+		ret = rte_mem_lockall(RTE_MCL_CURRENT | RTE_MCL_FUTURE);
+		if (ret) {
+			RTE_LOG(ERR, EAL,
+				"rte_mem_lockall() failed with error %d\n", ret);
+		}
+
 	}
 
 	if (tx_first && interactive)
@@ -3971,10 +3978,11 @@ main(int argc, char** argv)
 			return 1;
 	}
 
+#ifndef RTE_EXEC_ENV_WINDOWS
 	ret = rte_eal_cleanup();
 	if (ret != 0)
 		rte_exit(EXIT_FAILURE,
 			 "EAL cleanup failed: %s\n", strerror(-ret));
-
+#endif
 	return EXIT_SUCCESS;
 }
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index a87ccb0f0..6a828583b 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -761,7 +761,7 @@ inc_tx_burst_stats(struct fwd_stream *fs, uint16_t nb_tx)
 }
 
 /* Prototypes */
-unsigned int parse_item_list(char* str, const char* item_name,
+unsigned int parse_item_list(const char *str, const char *item_name,
 			unsigned int max_items,
 			unsigned int *parsed_items, int check_unique_values);
 void launch_args_parse(int argc, char** argv);
@@ -881,7 +881,7 @@ void show_tx_pkt_segments(void);
 void set_tx_pkt_times(unsigned int *tx_times);
 void show_tx_pkt_times(void);
 void set_tx_pkt_split(const char *name);
-int parse_fec_mode(const char *name, enum rte_eth_fec_mode *mode);
+int parse_fec_mode(const char *name, uint32_t *fec_capa);
 void show_fec_capability(uint32_t num, struct rte_eth_fec_capa *speed_fec_capa);
 void set_nb_pkt_per_burst(uint16_t pkt_burst);
 char *list_pkt_forwarding_modes(void);
diff --git a/app/test-regex/meson.build b/app/test-regex/meson.build
index 472677fb6..02b101980 100644
--- a/app/test-regex/meson.build
+++ b/app/test-regex/meson.build
@@ -1,5 +1,11 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright 2020 Mellanox Technologies, Ltd
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files('main.c')
 deps = ['regexdev']
diff --git a/app/test-sad/meson.build b/app/test-sad/meson.build
index db15b658d..3d15727a0 100644
--- a/app/test-sad/meson.build
+++ b/app/test-sad/meson.build
@@ -1,5 +1,11 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2019 Intel Corporation
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 sources = files('main.c')
 deps += ['ipsec', 'net']
diff --git a/app/test/meson.build b/app/test/meson.build
index 76eaaea45..5de5a6fae 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -1,6 +1,12 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
+if is_windows
+	build = false
+	reason = 'not supported on Windows'
+	subdir_done()
+endif
+
 if not get_option('tests')
 	subdir_done()
 endif
diff --git a/lib/librte_eal/windows/include/rte_os.h b/lib/librte_eal/windows/include/rte_os.h
index 60a623d4c..095f5f13b 100644
--- a/lib/librte_eal/windows/include/rte_os.h
+++ b/lib/librte_eal/windows/include/rte_os.h
@@ -24,6 +24,14 @@ extern "C" {
 #define PATH_MAX _MAX_PATH
 #endif
 
+#define strcasecmp _stricmp
+#define open _open
+#define read _read
+
+#ifndef S_ISREG
+#define S_ISREG(mode)  (((mode)&S_IFMT) == S_IFREG)
+#endif
+
 #ifndef sleep
 #define sleep(x) Sleep(1000 * (x))
 #endif
-- 
2.30.0.vfs.0.2


  parent reply	other threads:[~2021-04-13 17:20 UTC|newest]

Thread overview: 232+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-18  6:26 [dpdk-dev] [PATCH] app/test-pmd: enable testpmd on windows Jie Zhou
2021-03-19 16:51 ` [dpdk-dev] [PATCH v2] " Jie Zhou
2021-03-21  1:01   ` Dmitry Kozlyuk
     [not found]     ` <BY5PR21MB1426269DDB5427AE20AE4935D0659@BY5PR21MB1426.namprd21.prod.outlook.com>
2021-03-22 22:23       ` [dpdk-dev] [EXTERNAL] " Dmitry Kozlyuk
2021-03-24  9:02         ` David Marchand
2021-03-31 19:10   ` [dpdk-dev] " Kadam, Pallavi
2021-04-02 22:14     ` Jie Zhou
2021-04-11 21:49       ` Dmitry Kozlyuk
2021-04-01  8:44   ` Tal Shnaiderman
2021-04-02 22:19     ` Jie Zhou
2021-04-11 21:39   ` Dmitry Kozlyuk
2021-04-13 17:19   ` [dpdk-dev] [PATCH v3 0/6] app/testpmd: enable testpmd on Windows Jie Zhou
2021-04-13 17:19     ` [dpdk-dev] [PATCH v3 1/6] app/testpmd: build libraries that testpmd depends on Jie Zhou
2021-04-13 18:49       ` Tal Shnaiderman
2021-04-13 17:19     ` [dpdk-dev] [PATCH v3 2/6] app/testpmd: define IPPROTO_RAW in in.h Jie Zhou
2021-04-13 18:50       ` Tal Shnaiderman
2021-04-13 17:19     ` [dpdk-dev] [PATCH v3 3/6] app/testpmd: add required Macros Jie Zhou
2021-04-13 17:19     ` [dpdk-dev] [PATCH v3 4/6] app/testpmd: add device event stubs on Windows Jie Zhou
2021-04-13 20:10       ` Dmitry Kozlyuk
2021-04-13 22:08         ` Jie Zhou
2021-04-13 17:19     ` [dpdk-dev] [PATCH v3 5/6] app/testpmd: add rte_mem_lockall in librte_eal Jie Zhou
2021-04-13 18:50       ` Tal Shnaiderman
2021-04-13 17:19     ` Jie Zhou [this message]
2021-04-13 18:58       ` [dpdk-dev] [PATCH v3 6/6] app/testpmd: enable testpmd on Windows Tal Shnaiderman
2021-04-13 22:07         ` Jie Zhou
2021-04-13 20:10       ` Dmitry Kozlyuk
2021-04-13 22:22         ` Jie Zhou
2021-04-14 17:16           ` Jie Zhou
2021-04-14 17:45             ` Dmitry Kozlyuk
2021-04-14 18:25               ` Jie Zhou
2021-04-16 17:34     ` [dpdk-dev] [PATCH v4 0/9] app/testpmd: Enable " Jie Zhou
2021-04-16 17:34       ` [dpdk-dev] [PATCH v4 1/9] lib: build libraries that testpmd depends on Jie Zhou
2021-04-16 17:34       ` [dpdk-dev] [PATCH v4 2/9] eal/windows: add necessary macros Jie Zhou
2021-04-16 17:34       ` [dpdk-dev] [PATCH v4 3/9] eal/windows: add device event stubs Jie Zhou
2021-04-16 17:34       ` [dpdk-dev] [PATCH v4 4/9] app/testpmd: resolve name collisions Jie Zhou
2021-04-16 17:34       ` [dpdk-dev] [PATCH v4 5/9] app/testpmd: add clock_gettime_monotonic Jie Zhou
2021-04-16 17:34       ` [dpdk-dev] [PATCH v4 6/9] app/testpmd: fix parse_fec_mode return type Jie Zhou
2021-04-16 17:34       ` [dpdk-dev] [PATCH v4 7/9] app/testpmd: replace POSIX specific code Jie Zhou
2021-04-16 17:35       ` [dpdk-dev] [PATCH v4 8/9] app/testpmd: fix headers inclusion Jie Zhou
2021-04-16 17:35       ` [dpdk-dev] [PATCH v4 9/9] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-04-16 17:57         ` [dpdk-dev] [PATCH v5 0/9] app/testpmd: enable " Jie Zhou
2021-04-16 17:57           ` [dpdk-dev] [PATCH v5 1/9] lib: build libraries that testpmd depends on Jie Zhou
2021-04-16 17:57           ` [dpdk-dev] [PATCH v5 2/9] eal/windows: add necessary macros Jie Zhou
2021-04-16 17:57           ` [dpdk-dev] [PATCH v5 3/9] eal/windows: add device event stubs Jie Zhou
2021-04-16 17:57           ` [dpdk-dev] [PATCH v5 4/9] app/testpmd: resolve name collisions Jie Zhou
2021-04-16 17:57           ` [dpdk-dev] [PATCH v5 5/9] app/testpmd: add clock_gettime_monotonic Jie Zhou
2021-04-18 17:20             ` Tal Shnaiderman
2021-04-19 18:04               ` Jie Zhou
2021-04-19 18:13                 ` Thomas Monjalon
2021-04-19 18:34                   ` [dpdk-dev] [EXTERNAL] " Tyler Retzlaff
2021-04-19 19:41                     ` Thomas Monjalon
2021-04-28  8:45                       ` Dmitry Kozlyuk
2021-04-29 19:52                         ` Jie Zhou
2021-04-16 17:57           ` [dpdk-dev] [PATCH v5 6/9] app/testpmd: fix parse_fec_mode return type Jie Zhou
2021-04-16 17:57           ` [dpdk-dev] [PATCH v5 7/9] app/testpmd: replace POSIX specific code Jie Zhou
2021-04-16 17:57           ` [dpdk-dev] [PATCH v5 8/9] app/testpmd: fix headers inclusion Jie Zhou
2021-04-16 17:57           ` [dpdk-dev] [PATCH v5 9/9] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-04-18 17:21             ` Tal Shnaiderman
2021-04-18 18:17               ` Thomas Monjalon
2021-04-18 19:11                 ` Tal Shnaiderman
2021-04-18 19:20                   ` Tal Shnaiderman
2021-04-19 17:37                     ` Jie Zhou
2021-04-19 23:19           ` [dpdk-dev] [PATCH v6 00/10] app/testpmd: enable " Jie Zhou
2021-04-19 23:19             ` [dpdk-dev] [PATCH v6 01/10] lib: build libraries that testpmd depends on Jie Zhou
2021-04-19 23:19             ` [dpdk-dev] [PATCH v6 02/10] eal/windows: add necessary macros Jie Zhou
2021-04-19 23:19             ` [dpdk-dev] [PATCH v6 03/10] eal/windows: add device event stubs Jie Zhou
2021-04-19 23:19             ` [dpdk-dev] [PATCH v6 04/10] app/testpmd: resolve name collisions Jie Zhou
2021-04-19 23:19             ` [dpdk-dev] [PATCH v6 05/10] app/testpmd: add clock_gettime_monotonic Jie Zhou
2021-04-20  9:09               ` Ananyev, Konstantin
2021-04-22 21:54                 ` Jie Zhou
2021-04-19 23:19             ` [dpdk-dev] [PATCH v6 06/10] app/testpmd: fix parse_fec_mode return type Jie Zhou
2021-04-19 23:19             ` [dpdk-dev] [PATCH v6 07/10] app/testpmd: replace POSIX specific code Jie Zhou
2021-04-19 23:19             ` [dpdk-dev] [PATCH v6 08/10] app/testpmd: fix headers inclusion Jie Zhou
2021-04-19 23:19             ` [dpdk-dev] [PATCH v6 09/10] app/testpmd: fix unused function warnings Jie Zhou
2021-04-19 23:20             ` [dpdk-dev] [PATCH v6 10/10] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-04-23  0:31             ` [dpdk-dev] [PATCH v7 00/10] app/testpmd: enable " Jie Zhou
2021-04-23  0:31               ` [dpdk-dev] [PATCH v7 01/10] lib: build libraries that testpmd depends on Jie Zhou
2021-04-23  0:31               ` [dpdk-dev] [PATCH v7 02/10] eal/windows: add necessary macros Jie Zhou
2021-04-23  0:31               ` [dpdk-dev] [PATCH v7 03/10] eal/windows: add device event stubs Jie Zhou
2021-04-23  0:31               ` [dpdk-dev] [PATCH v7 04/10] app/testpmd: resolve name collisions Jie Zhou
2021-04-23  0:31               ` [dpdk-dev] [PATCH v7 05/10] app/testpmd: add clock_gettime on Windows Jie Zhou
2021-04-23  0:31               ` [dpdk-dev] [PATCH v7 06/10] app/testpmd: fix parse_fec_mode return type Jie Zhou
2021-04-23  0:31               ` [dpdk-dev] [PATCH v7 07/10] app/testpmd: replace POSIX specific code Jie Zhou
2021-04-23  0:31               ` [dpdk-dev] [PATCH v7 08/10] app/testpmd: fix headers inclusion Jie Zhou
2021-04-23  0:31               ` [dpdk-dev] [PATCH v7 09/10] app/testpmd: fix unused function warnings Jie Zhou
2021-04-23  0:32               ` [dpdk-dev] [PATCH v7 10/10] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-04-27 20:01               ` [dpdk-dev] [PATCH v8 00/10] app/testpmd: enable " Jie Zhou
2021-04-27 20:01                 ` [dpdk-dev] [PATCH v8 01/10] lib: build libraries that testpmd depends on Jie Zhou
2021-04-27 20:01                 ` [dpdk-dev] [PATCH v8 02/10] eal/windows: add necessary macros Jie Zhou
2021-04-27 20:01                 ` [dpdk-dev] [PATCH v8 03/10] eal/windows: add device event stubs Jie Zhou
2021-04-27 20:01                 ` [dpdk-dev] [PATCH v8 04/10] app/testpmd: resolve name collisions Jie Zhou
2021-04-27 20:01                 ` [dpdk-dev] [PATCH v8 05/10] app/testpmd: add clock_gettime on Windows Jie Zhou
2021-04-27 20:01                 ` [dpdk-dev] [PATCH v8 06/10] app/testpmd: fix parse_fec_mode return type Jie Zhou
2021-04-27 20:01                 ` [dpdk-dev] [PATCH v8 07/10] app/testpmd: replace POSIX specific code Jie Zhou
2021-04-27 20:01                 ` [dpdk-dev] [PATCH v8 08/10] app/testpmd: fix headers inclusion Jie Zhou
2021-04-27 20:02                 ` [dpdk-dev] [PATCH v8 09/10] app/testpmd: fix unused function warnings Jie Zhou
2021-04-27 20:02                 ` [dpdk-dev] [PATCH v8 10/10] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-04-30 17:52                 ` [dpdk-dev] [PATCH v9 00/10] app/testpmd: enable " Jie Zhou
2021-04-30 17:52                   ` [dpdk-dev] [PATCH v9 01/10] lib: build libraries that testpmd depends on Jie Zhou
2021-05-03 17:36                     ` Tal Shnaiderman
2021-05-03 21:38                       ` Jie Zhou
2021-04-30 17:52                   ` [dpdk-dev] [PATCH v9 02/10] eal/windows: add necessary macros Jie Zhou
2021-05-03 17:36                     ` Tal Shnaiderman
2021-04-30 17:52                   ` [dpdk-dev] [PATCH v9 03/10] eal/windows: add device event stubs Jie Zhou
2021-05-03 17:43                     ` Tal Shnaiderman
2021-04-30 17:52                   ` [dpdk-dev] [PATCH v9 04/10] eal/Windows: add clock_gettime on Windows Jie Zhou
2021-05-03 17:37                     ` Tal Shnaiderman
2021-04-30 17:52                   ` [dpdk-dev] [PATCH v9 05/10] app/testpmd: resolve name collisions Jie Zhou
2021-05-03 17:37                     ` Tal Shnaiderman
2021-04-30 17:52                   ` [dpdk-dev] [PATCH v9 06/10] app/testpmd: fix parse_fec_mode return type Jie Zhou
2021-05-03 17:38                     ` Tal Shnaiderman
2021-05-03 21:43                       ` Jie Zhou
2021-05-03 22:53                         ` Jie Zhou
2021-04-30 17:52                   ` [dpdk-dev] [PATCH v9 07/10] app/testpmd: replace POSIX specific code Jie Zhou
2021-05-03 17:37                     ` Tal Shnaiderman
2021-05-03 21:41                       ` Jie Zhou
2021-04-30 17:52                   ` [dpdk-dev] [PATCH v9 08/10] app/testpmd: fix headers inclusion Jie Zhou
2021-05-03 17:44                     ` Tal Shnaiderman
2021-04-30 17:52                   ` [dpdk-dev] [PATCH v9 09/10] app/testpmd: fix unused function warnings Jie Zhou
2021-05-03 17:43                     ` Tal Shnaiderman
2021-04-30 17:52                   ` [dpdk-dev] [PATCH v9 10/10] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-05-03 17:38                     ` Tal Shnaiderman
2021-05-04  0:33                   ` [dpdk-dev] [PATCH v10 00/10] app/testpmd: enable " Jie Zhou
2021-05-04  0:34                     ` [dpdk-dev] [PATCH v10 01/10] lib: build libraries that testpmd depends on Jie Zhou
2021-05-04  0:34                     ` [dpdk-dev] [PATCH v10 02/10] eal/windows: add necessary macros Jie Zhou
2021-05-04  0:34                     ` [dpdk-dev] [PATCH v10 03/10] eal/windows: add device event stubs Jie Zhou
2021-05-04  0:34                     ` [dpdk-dev] [PATCH v10 04/10] eal/Windows: add clock_gettime on Windows Jie Zhou
2021-05-04  0:34                     ` [dpdk-dev] [PATCH v10 05/10] app/testpmd: resolve name collisions Jie Zhou
2021-05-04  0:34                     ` [dpdk-dev] [PATCH v10 06/10] app/testpmd: fix parse_fec_mode return type name Jie Zhou
2021-05-04  0:34                     ` [dpdk-dev] [PATCH v10 07/10] app/testpmd: replace POSIX specific code Jie Zhou
2021-05-05  8:34                       ` Tal Shnaiderman
2021-05-05 16:09                         ` Jie Zhou
2021-05-05 16:41                           ` Jie Zhou
2021-05-04  0:34                     ` [dpdk-dev] [PATCH v10 08/10] app/testpmd: fix headers inclusion Jie Zhou
2021-05-04  0:34                     ` [dpdk-dev] [PATCH v10 09/10] app/testpmd: fix unused function warnings Jie Zhou
2021-05-04  0:34                     ` [dpdk-dev] [PATCH v10 10/10] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-05-04  7:31                     ` [dpdk-dev] [PATCH v10 00/10] app/testpmd: enable " Thomas Monjalon
2021-05-05 16:00                       ` Jie Zhou
2021-05-04 23:51                     ` Kadam, Pallavi
2021-05-05 17:18                     ` [dpdk-dev] [PATCH v11 " Jie Zhou
2021-05-05 17:18                       ` [dpdk-dev] [PATCH v11 01/10] lib: build libraries that testpmd depends on Jie Zhou
2021-05-05 17:18                       ` [dpdk-dev] [PATCH v11 02/10] eal/windows: add necessary macros Jie Zhou
2021-05-05 17:18                       ` [dpdk-dev] [PATCH v11 03/10] eal/windows: add device event stubs Jie Zhou
2021-05-05 17:18                       ` [dpdk-dev] [PATCH v11 04/10] eal/Windows: add clock_gettime on Windows Jie Zhou
2021-05-05 17:18                       ` [dpdk-dev] [PATCH v11 05/10] app/testpmd: resolve name collisions Jie Zhou
2021-05-05 17:18                       ` [dpdk-dev] [PATCH v11 06/10] app/testpmd: fix parse_fec_mode return type name Jie Zhou
2021-05-05 17:18                       ` [dpdk-dev] [PATCH v11 07/10] app/testpmd: replace POSIX specific code Jie Zhou
2021-05-05 17:18                       ` [dpdk-dev] [PATCH v11 08/10] app/testpmd: fix headers inclusion Jie Zhou
2021-05-05 17:18                       ` [dpdk-dev] [PATCH v11 09/10] app/testpmd: fix unused function warnings Jie Zhou
2021-05-05 17:18                       ` [dpdk-dev] [PATCH v11 10/10] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-05-05 17:36                       ` [dpdk-dev] [PATCH v12 00/10] app/testpmd: enable " Jie Zhou
2021-05-05 17:36                         ` [dpdk-dev] [PATCH v12 01/10] lib: build libraries that testpmd depends on Jie Zhou
2021-05-05 17:36                         ` [dpdk-dev] [PATCH v12 02/10] eal/windows: add necessary macros Jie Zhou
2021-05-05 17:36                         ` [dpdk-dev] [PATCH v12 03/10] eal/windows: add device event stubs Jie Zhou
2021-05-05 17:36                         ` [dpdk-dev] [PATCH v12 04/10] eal/Windows: add clock_gettime on Windows Jie Zhou
2021-05-05 17:36                         ` [dpdk-dev] [PATCH v12 05/10] app/testpmd: resolve name collisions Jie Zhou
2021-05-05 17:36                         ` [dpdk-dev] [PATCH v12 06/10] app/testpmd: fix parse_fec_mode return type name Jie Zhou
2021-05-05 17:36                         ` [dpdk-dev] [PATCH v12 07/10] app/testpmd: replace POSIX specific code Jie Zhou
2021-05-05 17:36                         ` [dpdk-dev] [PATCH v12 08/10] app/testpmd: fix headers inclusion Jie Zhou
2021-05-05 17:36                         ` [dpdk-dev] [PATCH v12 09/10] app/testpmd: fix unused function warnings Jie Zhou
2021-05-05 17:36                         ` [dpdk-dev] [PATCH v12 10/10] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-05-05 19:12                         ` [dpdk-dev] [PATCH v13 00/10] app/testpmd: enable " Jie Zhou
2021-05-05 19:12                           ` [dpdk-dev] [PATCH v13 01/10] lib: build libraries that testpmd depends on Jie Zhou
2021-05-05 19:12                           ` [dpdk-dev] [PATCH v13 02/10] eal/windows: add necessary macros Jie Zhou
2021-06-20 23:28                             ` Dmitry Kozlyuk
2021-06-23 20:51                               ` Jie Zhou
2021-05-05 19:12                           ` [dpdk-dev] [PATCH v13 03/10] eal/windows: add device event stubs Jie Zhou
2021-06-20 23:28                             ` Dmitry Kozlyuk
2021-05-05 19:12                           ` [dpdk-dev] [PATCH v13 04/10] eal/Windows: add clock_gettime on Windows Jie Zhou
2021-06-20 23:30                             ` Dmitry Kozlyuk
2021-06-23 20:57                               ` Jie Zhou
2021-05-05 19:12                           ` [dpdk-dev] [PATCH v13 05/10] app/testpmd: resolve name collisions Jie Zhou
2021-06-20 23:30                             ` Dmitry Kozlyuk
2021-05-05 19:12                           ` [dpdk-dev] [PATCH v13 06/10] app/testpmd: fix parse_fec_mode return type name Jie Zhou
2021-05-05 19:12                           ` [dpdk-dev] [PATCH v13 07/10] app/testpmd: replace POSIX specific code Jie Zhou
2021-05-05 19:12                           ` [dpdk-dev] [PATCH v13 08/10] app/testpmd: fix headers inclusion Jie Zhou
2021-06-20 23:30                             ` Dmitry Kozlyuk
2021-06-23 20:58                               ` Jie Zhou
2021-05-05 19:12                           ` [dpdk-dev] [PATCH v13 09/10] app/testpmd: fix unused function warnings Jie Zhou
2021-06-20 23:30                             ` Dmitry Kozlyuk
2021-06-23 21:26                               ` Jie Zhou
2021-06-24 15:45                                 ` Tyler Retzlaff
2021-06-24 18:44                                   ` Dmitry Kozlyuk
2021-06-24 21:36                                     ` Jie Zhou
2021-05-05 19:12                           ` [dpdk-dev] [PATCH v13 10/10] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-06-20 23:30                             ` Dmitry Kozlyuk
2021-05-06  7:20                           ` [dpdk-dev] [PATCH v13 00/10] app/testpmd: enable " Tal Shnaiderman
2021-06-23 22:34                           ` [dpdk-dev] [PATCH v14 0/9] " Jie Zhou
2021-06-23 22:34                             ` [dpdk-dev] [PATCH v14 1/9] lib: build libraries that testpmd depends on Jie Zhou
2021-06-24 23:10                               ` Dmitry Kozlyuk
2021-06-28 10:01                               ` Andrew Rybchenko
2021-06-28 10:35                                 ` Andrew Rybchenko
2021-06-28 14:10                                   ` Tyler Retzlaff
2021-06-29 18:29                                     ` Jie Zhou
2021-06-23 22:34                             ` [dpdk-dev] [PATCH v14 2/9] eal/windows: add necessary macros Jie Zhou
2021-06-24 23:10                               ` Dmitry Kozlyuk
2021-06-23 22:34                             ` [dpdk-dev] [PATCH v14 3/9] eal/windows: add device event stubs Jie Zhou
2021-06-23 22:34                             ` [dpdk-dev] [PATCH v14 4/9] eal/Windows: add clock_gettime on Windows Jie Zhou
2021-06-24 23:10                               ` Dmitry Kozlyuk
2021-06-23 22:34                             ` [dpdk-dev] [PATCH v14 5/9] app/testpmd: resolve name collisions Jie Zhou
2021-06-23 22:34                             ` [dpdk-dev] [PATCH v14 6/9] app/testpmd: fix parse_fec_mode return type name Jie Zhou
2021-06-28 10:55                               ` Andrew Rybchenko
2021-06-28 14:29                                 ` Tyler Retzlaff
2021-06-29 18:34                                   ` Jie Zhou
2021-06-23 22:34                             ` [dpdk-dev] [PATCH v14 7/9] app/testpmd: replace POSIX specific code Jie Zhou
2021-06-24 23:10                               ` Dmitry Kozlyuk
2021-06-23 22:34                             ` [dpdk-dev] [PATCH v14 8/9] app/testpmd: fix unused function warnings Jie Zhou
2021-06-24 23:10                               ` Dmitry Kozlyuk
2021-06-23 22:34                             ` [dpdk-dev] [PATCH v14 9/9] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-06-29 20:23                             ` [dpdk-dev] [PATCH v15 0/9] app/testpmd: enable " Jie Zhou
2021-06-29 20:23                               ` [dpdk-dev] [PATCH v15 1/9] lib: build libraries that testpmd depends on Jie Zhou
2021-06-29 20:23                               ` [dpdk-dev] [PATCH v15 2/9] eal/windows: add necessary macros Jie Zhou
2021-06-29 20:23                               ` [dpdk-dev] [PATCH v15 3/9] eal/windows: add device event stubs Jie Zhou
2021-06-29 20:23                               ` [dpdk-dev] [PATCH v15 4/9] eal/Windows: add clock_gettime on Windows Jie Zhou
2021-06-29 20:23                               ` [dpdk-dev] [PATCH v15 5/9] app/testpmd: resolve name collisions Jie Zhou
2021-06-29 20:23                               ` [dpdk-dev] [PATCH v15 6/9] app/testpmd: fix parse_fec_mode return type name Jie Zhou
2021-06-29 20:23                               ` [dpdk-dev] [PATCH v15 7/9] app/testpmd: replace POSIX specific code Jie Zhou
2021-06-29 20:23                               ` [dpdk-dev] [PATCH v15 8/9] app/testpmd: fix unused function warnings Jie Zhou
2021-06-29 20:23                               ` [dpdk-dev] [PATCH v15 9/9] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-06-29 20:50                               ` [dpdk-dev] [PATCH v16 0/9] app/testpmd: enable " Jie Zhou
2021-06-29 20:50                                 ` [dpdk-dev] [PATCH v16 1/9] lib: build libraries that testpmd depends on Jie Zhou
2021-06-29 20:50                                 ` [dpdk-dev] [PATCH v16 2/9] eal/windows: add necessary macros Jie Zhou
2021-06-29 20:50                                 ` [dpdk-dev] [PATCH v16 3/9] eal/windows: add device event stubs Jie Zhou
2021-06-29 20:50                                 ` [dpdk-dev] [PATCH v16 4/9] eal/Windows: add clock_gettime on Windows Jie Zhou
2021-06-29 20:50                                 ` [dpdk-dev] [PATCH v16 5/9] app/testpmd: resolve name collisions Jie Zhou
2021-07-01 13:41                                   ` Andrew Rybchenko
2021-06-29 20:50                                 ` [dpdk-dev] [PATCH v16 6/9] app/testpmd: fix parse_fec_mode return type name Jie Zhou
2021-07-01 13:34                                   ` Andrew Rybchenko
2021-06-29 20:50                                 ` [dpdk-dev] [PATCH v16 7/9] app/testpmd: replace POSIX specific code Jie Zhou
2021-06-29 20:50                                 ` [dpdk-dev] [PATCH v16 8/9] app/testpmd: fix unused function warnings Jie Zhou
2021-06-29 20:50                                 ` [dpdk-dev] [PATCH v16 9/9] app/testpmd: enable building testpmd on Windows Jie Zhou
2021-07-01 13:49                                 ` [dpdk-dev] [PATCH v16 0/9] app/testpmd: enable " Andrew Rybchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1618334363-15147-7-git-send-email-jizh@linux.microsoft.com \
    --to=jizh@linux.microsoft.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=dmitry.kozliuk@gmail.com \
    --cc=ferruh.yigit@intel.com \
    --cc=pallavi.kadam@intel.com \
    --cc=roretzla@microsoft.com \
    --cc=thomas@monjalon.net \
    --cc=xiaoyun.li@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.