summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2018-05-21 17:06:09 +0200
committerLubomir Rintel <lkundrak@v3.sk>2019-06-14 11:04:06 +0200
commit197fcb7a2e61b78c7b84659a7baf7dd1cf1e5864 (patch)
treec06d4aa1f437dbcbc09cdf4ffb715bf44ba66e52
parent204d9d747e132b554a6b476dfeb3171e5d8ebaf3 (diff)
downloadNetworkManager-lr/alternatives-two.tar.gz
cli: allow being called as ifup/ifdownlr/alternatives-two
Use that as an alias of "nmcli dev connect" or "nmcli dev disconnect" respectively. Don't advertise it really because it's not really a preferred way for doing things, but it will help transitioning away from legacy iniscripts while still keeping some compatibility.
-rw-r--r--clients/cli/nmcli.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/clients/cli/nmcli.c b/clients/cli/nmcli.c
index ad45f179a5..6da3ace6aa 100644
--- a/clients/cli/nmcli.c
+++ b/clients/cli/nmcli.c
@@ -959,6 +959,9 @@ nmc_cleanup (NmCli *nmc)
int
main (int argc, char *argv[])
{
+ char *basename;
+ char *ifupdown[5] = { 0, };
+
/* Set locale to use environment variables */
setlocale (LC_ALL, "");
@@ -978,6 +981,21 @@ main (int argc, char *argv[])
g_unix_signal_add (SIGTERM, signal_handler, GINT_TO_POINTER (SIGTERM));
g_unix_signal_add (SIGINT, signal_handler, GINT_TO_POINTER (SIGINT));
+ basename = strrchr (argv[0], '/');
+ if (basename)
+ basename++;
+ else
+ basename = argv[0];
+ if (NM_IN_STRSET (basename, "ifup", "ifdown")) {
+ ifupdown[0] = "nmcli";
+ ifupdown[1] = "connection";
+ ifupdown[2] = &basename[2]; /* up/down */
+ ifupdown[3] = "filename";
+ ifupdown[4] = g_strdup_printf ("%s/ifcfg-%s", SYSCONFDIR "/sysconfig/network-scripts", argv[1]);
+ argv = ifupdown;
+ argc = G_N_ELEMENTS (ifupdown);
+ }
+
if (process_command_line (&nm_cli, argc, argv))
g_main_loop_run (loop);
@@ -992,6 +1010,7 @@ main (int argc, char *argv[])
g_main_loop_unref (loop);
nmc_cleanup (&nm_cli);
+ g_free (ifupdown[4]);
return nm_cli.return_value;
}