diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-10-31 17:51:38 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-10-31 17:51:38 +0100 |
commit | b139499b28c418b7ddd1336998169ebe5b216e14 (patch) | |
tree | 5dd25420b5f9bf3dae1717f25f6f467b5ace1d4b /src/tools | |
parent | contrib: add reresolve-dns (diff) | |
download | wireguard-monolithic-historical-b139499b28c418b7ddd1336998169ebe5b216e14.tar.xz wireguard-monolithic-historical-b139499b28c418b7ddd1336998169ebe5b216e14.zip |
wg-quick: allow for saving existing interface
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/wg-quick.8 | 5 | ||||
-rwxr-xr-x | src/tools/wg-quick.bash | 11 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/tools/wg-quick.8 b/src/tools/wg-quick.8 index 2839cc9..053d3e1 100644 --- a/src/tools/wg-quick.8 +++ b/src/tools/wg-quick.8 @@ -9,6 +9,8 @@ wg-quick - set up a WireGuard interface simply .I up | .I down +| +.I save ] [ .I CONFIG_FILE | @@ -24,7 +26,8 @@ Use \fIup\fP to add and set up an interface, and use \fIdown\fP to tear down and an interface. Running \fIup\fP adds a WireGuard interface, brings up the interface with the supplied IP addresses, sets up mtu and routes, and optionally runs pre/post up scripts. Running \fIdown\fP optionally saves the current configuration, removes the WireGuard interface, and optionally -runs pre/post down scripts. +runs pre/post down scripts. Running \fIsave\fP saves the configuration of an existing +interface without bringing the interface down. \fICONFIG_FILE\fP is a configuration file, whose filename is the interface name followed by `.conf'. Otherwise, \fIINTERFACE\fP is an interface name, with configuration diff --git a/src/tools/wg-quick.bash b/src/tools/wg-quick.bash index 17fe672..da4c0d4 100755 --- a/src/tools/wg-quick.bash +++ b/src/tools/wg-quick.bash @@ -213,7 +213,7 @@ execute_hooks() { cmd_usage() { cat >&2 <<-_EOF - Usage: $PROGRAM [ up | down ] [ CONFIG_FILE | INTERFACE ] + Usage: $PROGRAM [ up | down | save ] [ CONFIG_FILE | INTERFACE ] CONFIG_FILE is a configuration file, whose filename is the interface name followed by \`.conf'. Otherwise, INTERFACE is an interface name, with @@ -264,6 +264,11 @@ cmd_down() { execute_hooks "${POST_DOWN[@]}" } +cmd_save() { + [[ " $(wg show interfaces) " == *" $INTERFACE "* ]] || die "\`$INTERFACE' is not a WireGuard interface" + save_config +} + # ~~ function override insertion point ~~ if [[ $# -eq 1 && ( $1 == --help || $1 == -h || $1 == help ) ]]; then @@ -276,6 +281,10 @@ elif [[ $# -eq 2 && $1 == down ]]; then auto_su parse_options "$2" cmd_down +elif [[ $# -eq 2 && $1 == save ]]; then + auto_su + parse_options "$2" + cmd_save else cmd_usage exit 1 |