]> git.meshlink.io Git - meshlink/commitdiff
Add the tincctl exchange and exchange-all commands.
authorGuus Sliepen <guus@tinc-vpn.org>
Tue, 15 Jan 2013 12:31:51 +0000 (13:31 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Tue, 15 Jan 2013 12:31:51 +0000 (13:31 +0100)
These are identical to an export/export-all followed by an import, and make
it simpler to exchange host config files with other nodes.

doc/tinc.texi
doc/tincctl.8.in
src/tincctl.c

index 1959ea3bde519674780646fa78bdcffc78be89f6..35575e94c22aad345d69026e724cc8ce731c7ee6 100644 (file)
@@ -1513,11 +1513,12 @@ tincctl -n @var{netname} import
 @end example
 
 If you are the owner of bar yourself, and you have SSH access to that computer,
-you can also swap the host configuration files using the following commands:
+you can also swap the host configuration files using the following command:
 
 @example
-tincctl -n @var{netname} export | ssh bar.example.org tincctl -n @var{netname} import
-ssh bar.example.org tincctl -n @var{netname} export | tincctl -n @var{netname} import
+tincctl -n @var{netname} export \
+    | ssh bar.example.org tincctl -n @var{netname} exchange \
+    | tincctl -n @var{netname} import
 @end example
 
 You should repeat this for all nodes you ConnectTo, or which ConnectTo you.
@@ -2202,6 +2203,12 @@ Export all host configuration files to standard output.
 Import host configuration file(s) generated by the tincctl export command from standard input.
 Already existing host configuration files are not overwritten unless the option --force is used.
 
+@item exchange [--force]
+The same as export followed by import.
+
+@item exchange-all [--force]
+The same as export-all followed by import.
+
 @item start [tincd options]
 Start @samp{tincd}, optionally with the given extra options.
 
index 2b8f6d5b631e3a85be510fb90ff5c70445da8c65..4e29437832f282d72f40e457f0a9438c5c44c846 100644 (file)
@@ -86,6 +86,10 @@ export command from standard input.
 Already existing host configuration files are not overwritten unless the option
 .Fl -force
 is used.
+.It exchange Op Fl -force
+The same as export followed by import.
+.It exchange-all Op Fl -force
+The same as export-all followed by import.
 .It start Op tincd options
 Start
 .Xr tincd 8 ,
index aee09085d3daf03a1cc53aade2d619f50259613f..6b36aa740f241f4e9a2db3106cd66d1a3d61d774 100644 (file)
@@ -153,6 +153,8 @@ static void usage(bool status) {
                                "  export                     Export host configuration of local node to standard output\n"
                                "  export-all                 Export all host configuration files to standard output\n"
                                "  import [--force]           Import host configuration file(s) from standard input\n"
+                               "  exchange [--force]         Same as export followed by import\n"
+                               "  exchange-all [--force]     Same as export-all followed by import\n"
                                "\n");
                printf("Report bugs to tinc@tinc-vpn.org.\n");
        }
@@ -1883,7 +1885,10 @@ static int cmd_export(int argc, char *argv[]) {
        if(!name)
                return 1;
 
-       return export(name, stdout);
+       int result = export(name, stdout);
+       if(!tty)
+               fclose(stdout);
+       return result;
 }
 
 static int cmd_export_all(int argc, char *argv[]) {
@@ -1915,6 +1920,8 @@ static int cmd_export_all(int argc, char *argv[]) {
        }
 
        closedir(dir);
+       if(!tty)
+               fclose(stdout);
        return result;
 }
 
@@ -1929,7 +1936,7 @@ static int cmd_import(int argc, char *argv[]) {
 
        char buf[4096];
        char name[4096];
-       char *filename;
+       char *filename = NULL;
        int count = 0;
        bool firstline = true;
 
@@ -1991,6 +1998,14 @@ static int cmd_import(int argc, char *argv[]) {
        }
 }
 
+static int cmd_exchange(int argc, char *argv[]) {
+       return cmd_export(argc, argv) ?: cmd_import(argc, argv);
+}
+
+static int cmd_exchange_all(int argc, char *argv[]) {
+       return cmd_export_all(argc, argv) ?: cmd_import(argc, argv);
+}
+
 static const struct {
        const char *command;
        int (*function)(int argc, char *argv[]);
@@ -2021,6 +2036,8 @@ static const struct {
        {"export", cmd_export},
        {"export-all", cmd_export_all},
        {"import", cmd_import},
+       {"exchange", cmd_exchange},
+       {"exchange-all", cmd_exchange_all},
        {NULL, NULL},
 };