summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
authorJeremy Sowden <jeremy@azazel.net>2020-03-04 00:15:30 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2020-03-05 12:39:50 +0100
commit1074015187d54ced41341aeb7f9e6021580ad1d3 (patch)
tree4a429abe788b33ce933440f438fc233cbc9b6801 /src/main.c
parent6ca4dfa45345dc4ac18a83be5e2326bad5a69fe6 (diff)
main: add more information to `nft -V`.
In addition to the package-version and release-name, output the CLI implementation (if any) and whether mini-gmp was used, e.g.: $ ./src/nft -V nftables v0.9.3 (Topsy) cli: linenoise json: yes minigmp: no libxtables: yes [pablo@netfilter.org: add json and libxtables, use -V ] Signed-off-by: Jeremy Sowden <jeremy@azazel.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c46
1 files changed, 45 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index 6ab1b89f..fefa3186 100644
--- a/src/main.c
+++ b/src/main.c
@@ -27,6 +27,7 @@ static struct nft_ctx *nft;
enum opt_vals {
OPT_HELP = 'h',
OPT_VERSION = 'v',
+ OPT_VERSION_LONG = 'V',
OPT_CHECK = 'c',
OPT_FILE = 'f',
OPT_INTERACTIVE = 'i',
@@ -46,7 +47,7 @@ enum opt_vals {
OPT_TERSE = 't',
OPT_INVALID = '?',
};
-#define OPTSTRING "+hvd:cf:iI:jvnsNaeSupypTt"
+#define OPTSTRING "+hvVd:cf:iI:jvnsNaeSupypTt"
static const struct option options[] = {
{
@@ -141,6 +142,7 @@ static void show_help(const char *name)
"Options:\n"
" -h, --help Show this help\n"
" -v, --version Show version information\n"
+" -V Show extended version information\n"
"\n"
" -c, --check Check commands validity without actually applying the changes.\n"
" -f, --file <filename> Read input from <filename>\n"
@@ -164,6 +166,45 @@ static void show_help(const char *name)
name, DEFAULT_INCLUDE_PATH);
}
+static void show_version(void)
+{
+ const char *cli, *minigmp, *json, *xt;
+
+#if defined(HAVE_LIBREADLINE)
+ cli = "readline";
+#elif defined(HAVE_LIBLINENOISE)
+ cli = "linenoise";
+#else
+ cli = "no";
+#endif
+
+#if defined(HAVE_MINIGMP)
+ minigmp = "yes";
+#else
+ minigmp = "no";
+#endif
+
+#if defined(HAVE_JSON)
+ json = "yes";
+#else
+ json = "no";
+#endif
+
+#if defined(HAVE_XTABLES)
+ xt = "yes";
+#else
+ xt = "no";
+#endif
+
+ printf("%s v%s (%s)\n"
+ " cli: %s\n"
+ " json: %s\n"
+ " minigmp: %s\n"
+ " libxtables: %s\n",
+ PACKAGE_NAME, PACKAGE_VERSION, RELEASE_NAME,
+ cli, minigmp, json, xt);
+}
+
static const struct {
const char *name;
enum nft_debug_level level;
@@ -272,6 +313,9 @@ int main(int argc, char * const *argv)
printf("%s v%s (%s)\n",
PACKAGE_NAME, PACKAGE_VERSION, RELEASE_NAME);
exit(EXIT_SUCCESS);
+ case OPT_VERSION_LONG:
+ show_version();
+ exit(EXIT_SUCCESS);
case OPT_CHECK:
nft_ctx_set_dry_run(nft, true);
break;