wg-quick: use addconf instead of setconf

The example in the man page at some point changed:

-    \fBPostUp = wg set %i private-key <(pass WireGuard/private-keys/%i)\fP
+    \fBPreUp = wg set %i private-key <(pass WireGuard/private-keys/%i)\fP

This is actually wrong because PreUp is followed by set_config(), which
calls `wg setconf`, which in turn deletes the private key from the
interface because it is missing from the configuration. Replacing this
with `wg addconf` is safe to do because the interface is newly created.

Suggested-by: Matthias Dressel <code@deadcode.eu>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
Jason A. Donenfeld 2025-06-19 16:58:39 +02:00
parent d3b40aff96
commit 0b7d9821f2
5 changed files with 5 additions and 5 deletions

View file

@ -1047,7 +1047,7 @@ static void set_routes(const char *iface, unsigned int netid)
static void set_config(const char *iface, const char *config)
{
FILE *config_writer;
_cleanup_free_ char *cmd = concat("wg setconf ", iface, " /proc/self/fd/0", NULL);
_cleanup_free_ char *cmd = concat("wg addconf ", iface, " /proc/self/fd/0", NULL);
int ret;
printf("[#] %s\n", cmd);

View file

@ -370,7 +370,7 @@ add_route() {
}
set_config() {
cmd wg setconf "$REAL_INTERFACE" <(echo "$WG_CONFIG")
cmd wg addconf "$REAL_INTERFACE" <(echo "$WG_CONFIG")
}
save_config() {

View file

@ -338,7 +338,7 @@ add_route() {
}
set_config() {
echo "$WG_CONFIG" | cmd wg setconf "$INTERFACE" /dev/stdin
echo "$WG_CONFIG" | cmd wg addconf "$INTERFACE" /dev/stdin
}
save_config() {

View file

@ -249,7 +249,7 @@ add_default() {
}
set_config() {
cmd wg setconf "$INTERFACE" <(echo "$WG_CONFIG")
cmd wg addconf "$INTERFACE" <(echo "$WG_CONFIG")
}
save_config() {

View file

@ -338,7 +338,7 @@ add_route() {
}
set_config() {
cmd wg setconf "$REAL_INTERFACE" <(echo "$WG_CONFIG")
cmd wg addconf "$REAL_INTERFACE" <(echo "$WG_CONFIG")
}
save_config() {