]> git.ipfire.org Git - thirdparty/wireguard-tools.git/commitdiff
wg-quick: allow for saving existing interface
authorJason A. Donenfeld <Jason@zx2c4.com>
Tue, 31 Oct 2017 16:51:38 +0000 (17:51 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Tue, 31 Oct 2017 16:51:38 +0000 (17:51 +0100)
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
src/wg-quick.8
src/wg-quick.bash

index 2839cc9d905336648b209faf8b70d5c7653e45bc..053d3e13c857935be4b936c39bc3244a393245b6 100644 (file)
@@ -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
index 17fe672d6350977c87014d7759b7bac4e35df596..da4c0d4bcfc5ecca5b6688af74cb8a9107a877e3 100755 (executable)
@@ -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