From 0d56cb81d54a49d516f55cf771ff93450b8dc310 Mon Sep 17 00:00:00 2001 From: Thomas Monjalon Date: Thu, 14 Nov 2013 23:19:47 +0100 Subject: [PATCH] app/testpmd: fix build without librte_cmdline Some features are not available if LIBRTE_CMDLINE is disabled: - interactive mode - ethernet address parsing Note: ethernet address parsing could be rewritten without cmdline dependency. Signed-off-by: Thomas Monjalon Acked-by: Olivier Matz --- app/test-pmd/Makefile | 2 ++ app/test-pmd/parameters.c | 29 +++++++++++++++++++++++++++-- app/test-pmd/testpmd.c | 5 ++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/app/test-pmd/Makefile b/app/test-pmd/Makefile index 761d1daefa..f0d4b4de4f 100644 --- a/app/test-pmd/Makefile +++ b/app/test-pmd/Makefile @@ -44,7 +44,9 @@ CFLAGS += $(WERROR_FLAGS) # SRCS-$(CONFIG_RTE_TEST_PMD) := testpmd.c SRCS-$(CONFIG_RTE_TEST_PMD) += parameters.c +ifeq ($(CONFIG_RTE_LIBRTE_CMDLINE),y) SRCS-$(CONFIG_RTE_TEST_PMD) += cmdline.c +endif SRCS-$(CONFIG_RTE_TEST_PMD) += config.c SRCS-$(CONFIG_RTE_TEST_PMD) += iofwd.c SRCS-$(CONFIG_RTE_TEST_PMD) += macfwd.c diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index e5b026c6cc..f537e497a0 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -71,27 +71,37 @@ #include #include #include +#ifdef RTE_LIBRTE_CMDLINE #include #include +#endif #include "testpmd.h" static void usage(char* progname) { - printf("usage: %s [--interactive|-i] [--help|-h] | [" + printf("usage: %s " +#ifdef RTE_LIBRTE_CMDLINE + "[--interactive|-i] " +#endif + "[--help|-h] | [" "--coremask=COREMASK --portmask=PORTMASK --numa " "--mbuf-size= | --total-num-mbufs= | " "--nb-cores= | --nb-ports= | " +#ifdef RTE_LIBRTE_CMDLINE "--eth-peers-configfile= | " "--eth-peer=X,M:M:M:M:M:M | " +#endif "--pkt-filter-mode= |" "--rss-ip | --rss-udp | " "--rxpt= | --rxht= | --rxwt= | --rxfreet= | " "--txpt= | --txht= | --txwt= | --txfreet= | " "--txrst= | --txqflags= ]\n", progname); +#ifdef RTE_LIBRTE_CMDLINE printf(" --interactive: run in interactive mode.\n"); +#endif printf(" --help: display this message and quit.\n"); printf(" --nb-cores=N: set the number of forwarding cores " "(1 <= N <= %d).\n", nb_lcores); @@ -118,10 +128,12 @@ usage(char* progname) printf(" --total-num-mbufs=N: set the number of mbufs to be allocated " "in mbuf pools.\n"); printf(" --max-pkt-len=N: set the maximum size of packet to N bytes.\n"); +#ifdef RTE_LIBRTE_CMDLINE printf(" --eth-peers-configfile=name: config file with ethernet addresses " "of peer ports.\n"); printf(" --eth-peer=X,M:M:M:M:M:M: set the MAC address of the X peer " "port (0 <= X < %d).\n", RTE_MAX_ETHPORTS); +#endif printf(" --pkt-filter-mode=N: set Flow Director mode " "(N: none (default mode) or signature or perfect).\n"); printf(" --pkt-filter-report-hash=N: set Flow Director report mode " @@ -182,6 +194,7 @@ usage(char* progname) " Used mainly with PCAP drivers.\n"); } +#ifdef RTE_LIBRTE_CMDLINE static int init_peer_eth_addrs(char *config_filename) { @@ -210,6 +223,7 @@ init_peer_eth_addrs(char *config_filename) nb_peer_eth_addrs = (portid_t) i; return 0; } +#endif /* * Parse the coremask given as argument (hexadecimal string) and set @@ -469,9 +483,11 @@ launch_args_parse(int argc, char** argv) static struct option lgopts[] = { { "help", 0, 0, 0 }, +#ifdef RTE_LIBRTE_CMDLINE { "interactive", 0, 0, 0 }, { "eth-peers-configfile", 1, 0, 0 }, { "eth-peer", 1, 0, 0 }, +#endif { "ports", 1, 0, 0 }, { "nb-cores", 1, 0, 0 }, { "nb-ports", 1, 0, 0 }, @@ -522,18 +538,26 @@ launch_args_parse(int argc, char** argv) argvopt = argv; - while ((opt = getopt_long(argc, argvopt, "ih", +#ifdef RTE_LIBRTE_CMDLINE +#define SHORTOPTS "ih" +#else +#define SHORTOPTS "h" +#endif + while ((opt = getopt_long(argc, argvopt, SHORTOPTS, lgopts, &opt_idx)) != EOF) { switch (opt) { +#ifdef RTE_LIBRTE_CMDLINE case 'i': printf("Interactive-mode selected\n"); interactive = 1; break; +#endif case 0: /*long options */ if (!strcmp(lgopts[opt_idx].name, "help")) { usage(argv[0]); rte_exit(EXIT_SUCCESS, "Displayed help\n"); } +#ifdef RTE_LIBRTE_CMDLINE if (!strcmp(lgopts[opt_idx].name, "interactive")) { printf("Interactive-mode selected\n"); interactive = 1; @@ -567,6 +591,7 @@ launch_args_parse(int argc, char** argv) peer_addr[c]; nb_peer_eth_addrs++; } +#endif if (!strcmp(lgopts[opt_idx].name, "nb-ports")) { n = atoi(optarg); if (n > 0 && n <= nb_ports) diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 60364904c1..04dca57a2a 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -1793,9 +1793,12 @@ main(int argc, char** argv) for (port_id = 0; port_id < nb_ports; port_id++) rte_eth_promiscuous_enable(port_id); +#ifdef RTE_LIBRTE_CMDLINE if (interactive == 1) prompt(); - else { + else +#endif + { char c; int rc; -- 2.20.1