From 6876790da137cabc1a1b70ba4df8a5494473f647 Mon Sep 17 00:00:00 2001 From: Olivier Matz Date: Tue, 22 Nov 2016 14:52:16 +0100 Subject: [PATCH] examples/l2fwd: rework long options parsing Do the same than in l3fwd to avoid strcmp() for long options. For l2fwd, there is no long option that take advantage of this new mechanism as --mac-updating and --no-mac-updating are directly setting a flag without needing an entry in the switch/case. So this patch just prepares the framework in case a new long option is added in the future. Signed-off-by: Olivier Matz --- examples/l2fwd/main.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/examples/l2fwd/main.c b/examples/l2fwd/main.c index b2f58519c7..97d6454303 100644 --- a/examples/l2fwd/main.c +++ b/examples/l2fwd/main.c @@ -392,6 +392,29 @@ l2fwd_parse_timer_period(const char *q_arg) return n; } +static const char short_options[] = + "p:" /* portmask */ + "q:" /* number of queues */ + "T:" /* timer period */ + ; + +#define CMD_LINE_OPT_MAC_UPDATING "mac-updating" +#define CMD_LINE_OPT_NO_MAC_UPDATING "no-mac-updating" + +enum { + /* long options mapped to a short option */ + + /* first long only option value must be >= 256, so that we won't + * conflict with short options */ + CMD_LINE_OPT_MIN_NUM = 256, +}; + +static const struct option lgopts[] = { + { CMD_LINE_OPT_MAC_UPDATING, no_argument, &mac_updating, 1}, + { CMD_LINE_OPT_NO_MAC_UPDATING, no_argument, &mac_updating, 0}, + {NULL, 0, 0, 0} +}; + /* Parse the argument given in the command line of the application */ static int l2fwd_parse_args(int argc, char **argv) @@ -400,15 +423,10 @@ l2fwd_parse_args(int argc, char **argv) char **argvopt; int option_index; char *prgname = argv[0]; - static struct option lgopts[] = { - { "mac-updating", no_argument, &mac_updating, 1}, - { "no-mac-updating", no_argument, &mac_updating, 0}, - {NULL, 0, 0, 0} - }; argvopt = argv; - while ((opt = getopt_long(argc, argvopt, "p:q:T:", + while ((opt = getopt_long(argc, argvopt, short_options, lgopts, &option_index)) != EOF) { switch (opt) { -- 2.20.1