Adding app version display 05/45305/1
authorDeepak S <deepak.s@linux.intel.com>
Tue, 17 Oct 2017 01:03:51 +0000 (18:03 -0700)
committerDeepak S <deepak.s@linux.intel.com>
Tue, 17 Oct 2017 01:04:46 +0000 (18:04 -0700)
Change-Id: Ie96af26119cef7e8340fff958253c259b46675f4
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
VNFs/UDP_Replay/main.c
common/vnf_common/config_parse.c
common/vnf_common/version.h [new file with mode: 0644]

index 2830aa4..2e1638e 100644 (file)
@@ -88,6 +88,7 @@ performance of the solution should be sufficient for testing the UDP NAT perform
 #include <lib_arp.h>
 #include "l2_proto.h"
 #include "interface.h"
+#include "version.h"
 #include "l3fwd_common.h"
 #include "l3fwd_lpm4.h"
 #include "l3fwd_lpm6.h"
@@ -2121,6 +2122,7 @@ print_usage(const char *prgname)
                "  [--enable-jumbo [--max-pkt-len PKTLEN]]\n"
                "  -p PORTMASK: hexadecimal bitmask of ports to configure\n"
                "  -P : enable promiscuous mode\n"
+               "  -v version: display app version\n"
                "  --config (port,queue,lcore): rx queues configuration\n"
                "  --eth-dest=X,MM:MM:MM:MM:MM:MM: optional, ethernet destination for port X\n"
                "  --no-numa: optional, disable numa awareness\n"
@@ -2294,6 +2296,7 @@ parse_eth_dest(const char *optarg)
 #define CMD_LINE_OPT_NO_HW_CSUM "no-hw-csum"
 #define CMD_LINE_OPT_IPV6 "ipv6"
 #define CMD_LINE_OPT_ENABLE_JUMBO "enable-jumbo"
+#define CMD_LINE_OPT_VERSION "version"
 #define CMD_LINE_OPT_HASH_ENTRY_NUM "hash-entry-num"
 
 /* Parse the argument given in the command line of the application */
@@ -2302,7 +2305,7 @@ parse_args(int argc, char **argv)
 {
        int opt, ret;
        char **argvopt;
-       int option_index;
+       int option_index, v_present = 0;
        char *prgname = argv[0];
        static struct option lgopts[] = {
                {CMD_LINE_OPT_CONFIG, 1, 0, 0},
@@ -2311,13 +2314,14 @@ parse_args(int argc, char **argv)
                {CMD_LINE_OPT_NO_HW_CSUM, 0, 0, 0},
                {CMD_LINE_OPT_IPV6, 0, 0, 0},
                {CMD_LINE_OPT_ENABLE_JUMBO, 0, 0, 0},
+               {CMD_LINE_OPT_VERSION, 0, 0, 0},
                {CMD_LINE_OPT_HASH_ENTRY_NUM, 1, 0, 0},
                {NULL, 0, 0, 0}
        };
 
        argvopt = argv;
 
-       while ((opt = getopt_long(argc, argvopt, "s:p:P",
+       while ((opt = getopt_long(argc, argvopt, "v:s:p:P",
                                lgopts, &option_index)) != EOF) {
 
                switch (opt) {
@@ -2378,6 +2382,15 @@ parse_args(int argc, char **argv)
                        }
 #endif
 
+                       if (!strncmp(lgopts[option_index].name, CMD_LINE_OPT_VERSION,
+                               sizeof (CMD_LINE_OPT_VERSION))) {
+                         if (v_present)
+                                 rte_panic("Error: VERSION is provided more than once\n");
+                         v_present = 1;
+                         printf("Version: %s\n", VERSION_STR);
+                         exit(0);
+      }
+
                        if (!strncmp(lgopts[option_index].name, CMD_LINE_OPT_ENABLE_JUMBO,
                                sizeof (CMD_LINE_OPT_ENABLE_JUMBO))) {
                                struct option lenopts = {"max-pkt-len", required_argument, 0, 0};
@@ -2745,6 +2758,11 @@ main(int argc, char **argv)
        uint32_t size;
        struct pipeline_params *params;
 
+       /* parse application arguments (after the EAL ones) */
+       ret = parse_args(argc, argv);
+       if (ret < 0)
+               rte_exit(EXIT_FAILURE, "Invalid UDP_Replay parameters\n");
+
        /* init EAL */
        ret = rte_eal_init(argc, argv);
        if (ret < 0)
@@ -2752,10 +2770,6 @@ main(int argc, char **argv)
        argc -= ret;
        argv += ret;
        timer_lcore = rte_lcore_id();
-       /* parse application arguments (after the EAL ones) */
-       ret = parse_args(argc, argv);
-       if (ret < 0)
-               rte_exit(EXIT_FAILURE, "Invalid UDP_Replay parameters\n");
 
        if (check_lcore_params() < 0)
                rte_exit(EXIT_FAILURE, "check_lcore_params failed\n");
index eeb547e..48921f4 100644 (file)
@@ -30,6 +30,7 @@
 #include <rte_string_fns.h>
 
 #include "app.h"
+#include "version.h"
 #include "parser.h"
 
 /**
@@ -201,8 +202,8 @@ struct app_pipeline_params default_pipeline_params = {
 };
 
 static const char app_usage[] =
-       "Usage: %s [-f CONFIG_FILE] [-s SCRIPT_FILE] [-p PORT_MASK] "
-       "[-l LOG_LEVEL] [--preproc PREPROCESSOR] [--preproc-args ARGS]\n"
+       "Usage: %s [--version] [-f CONFIG_FILE] [-s SCRIPT_FILE] [-p PORT_MASK] "
+       "[-l LOG_LEVEL] [--disable-hw-csum] [--preproc PREPROCESSOR] [--preproc-args ARGS]\n"
        "\n"
        "Arguments:\n"
        "\t-f CONFIG_FILE: Default config file is %s\n"
@@ -210,6 +211,7 @@ static const char app_usage[] =
                "config file when not provided)\n"
        "\t-s SCRIPT_FILE: No CLI script file is run when not specified\n"
        "\t-l LOG_LEVEL: 0 = NONE, 1 = HIGH PRIO (default), 2 = LOW PRIO\n"
+       "\t--version application version\n"
        "\t--disable-hw-csum Disable TCP/UDP HW checksum\n"
        "\t--preproc PREPROCESSOR: Configuration file pre-processor\n"
        "\t--preproc-args ARGS: Arguments to be passed to pre-processor\n"
@@ -3231,7 +3233,7 @@ app_config_args(struct app_params *app, int argc, char **argv)
 {
        const char *optname;
        int opt, option_index;
-       int f_present, s_present, p_present, l_present;
+       int f_present, s_present, p_present, l_present, v_present;
        int preproc_present, preproc_params_present, disable_csum_present;
        int hwlb_present;
        int flow_dir_present;
@@ -3243,6 +3245,7 @@ app_config_args(struct app_params *app, int argc, char **argv)
                { "preproc-args", 1, 0, 0 },
                { "hwlb", 1, 0, 0 },
                { "flow_dir", 0, 0, 0 },
+               { "version", 0, 0, 0 },
                { NULL,  0, 0, 0 }
        };
 
@@ -3252,6 +3255,7 @@ app_config_args(struct app_params *app, int argc, char **argv)
        f_present = 0;
        s_present = 0;
        p_present = 0;
+       v_present = 0;
        l_present = 0;
        disable_csum_present = 0;
        preproc_present = 0;
@@ -3261,7 +3265,7 @@ app_config_args(struct app_params *app, int argc, char **argv)
        flow_dir_present = 0;
 
 
-       while ((opt = getopt_long(argc, argv, "f:s:p:l:", lgopts,
+       while ((opt = getopt_long(argc, argv, "f:v:s:p:l:", lgopts,
                        &option_index)) != EOF)
                switch (opt) {
                case 'f':
@@ -3332,6 +3336,15 @@ app_config_args(struct app_params *app, int argc, char **argv)
                case 0:
                        optname = lgopts[option_index].name;
 
+                       if (strcmp(optname, "version") == 0) {
+                         if (v_present)
+                                 rte_panic("Error: VERSION is provided "
+                                         "more than once\n");
+                          v_present = 1;
+                          printf("Version: %s\n", VERSION_STR);
+                          exit(0);
+                       }
+
                        if (strcmp(optname, "hwlb") == 0) {
                                if (hwlb_present)
                                        rte_panic("Error: hwlb argument "
diff --git a/common/vnf_common/version.h b/common/vnf_common/version.h
new file mode 100644 (file)
index 0000000..00d8f45
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+// Copyright (c) 2017 Intel Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+*/
+
+#ifndef __INCLUDE_VER_H__
+#define __INCLUDE_VER_H__
+
+#define STRINGIFY(s) #s
+#define SSTR(s) STRINGIFY(s)
+
+/* PROGRAM_NAME defined through Makefile */
+#define VERSION_MAJOR 0
+#define VERSION_MINOR 39
+#define VERSION_REV   0
+
+#if VERSION_REV > 0
+#define VERSION_STR "v" SSTR(VERSION_MAJOR) "." SSTR(VERSION_MINOR) "." SSTR(VERSION_REV)
+#else
+#define VERSION_STR "v" SSTR(VERSION_MAJOR) "." SSTR(VERSION_MINOR)
+#endif
+
+
+#endif