These are identical to an export/export-all followed by an import, and make
it simpler to exchange host config files with other nodes.
@end example
If you are the owner of bar yourself, and you have SSH access to that computer,
@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:
-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.
@end example
You should repeat this for all nodes you ConnectTo, or which ConnectTo you.
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.
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.
@item start [tincd options]
Start @samp{tincd}, optionally with the given extra options.
Already existing host configuration files are not overwritten unless the option
.Fl -force
is used.
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 ,
.It start Op tincd options
Start
.Xr tincd 8 ,
" 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"
" 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");
}
"\n");
printf("Report bugs to tinc@tinc-vpn.org.\n");
}
- return export(name, stdout);
+ int result = export(name, stdout);
+ if(!tty)
+ fclose(stdout);
+ return result;
}
static int cmd_export_all(int argc, char *argv[]) {
}
static int cmd_export_all(int argc, char *argv[]) {
+ if(!tty)
+ fclose(stdout);
char buf[4096];
char name[4096];
char buf[4096];
char name[4096];
int count = 0;
bool firstline = true;
int count = 0;
bool firstline = true;
+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[]);
static const struct {
const char *command;
int (*function)(int argc, char *argv[]);
{"export", cmd_export},
{"export-all", cmd_export_all},
{"import", cmd_import},
{"export", cmd_export},
{"export-all", cmd_export_all},
{"import", cmd_import},
+ {"exchange", cmd_exchange},
+ {"exchange-all", cmd_exchange_all},