summaryrefslogtreecommitdiff
path: root/proto/wireguard/wireguard.c
diff options
context:
space:
mode:
Diffstat (limited to 'proto/wireguard/wireguard.c')
-rw-r--r--proto/wireguard/wireguard.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/proto/wireguard/wireguard.c b/proto/wireguard/wireguard.c
index e4efdd66..f0ac45e6 100644
--- a/proto/wireguard/wireguard.c
+++ b/proto/wireguard/wireguard.c
@@ -210,7 +210,7 @@ user_put_device(wg_device *dev, byte **buf, uint *size)
}
wg_puts("\n", buf, size);
- if (size > 0)
+ if (*size > 0)
return 0;
else
return -1;
@@ -280,7 +280,7 @@ int get_device(struct wg_proto *p, wg_device **pdev, const char *device_name)
wg_key_from_base64(dev->private_key, c->private_key);
wg_generate_public_key(dev->public_key, dev->private_key);
}
- if (dev->listen_port)
+ if (c->listen_port)
dev->flags |= WGDEVICE_HAS_LISTEN_PORT;
dev->listen_port = c->listen_port;
debug("listen port %d\n", c->listen_port);
@@ -371,6 +371,14 @@ wg_if_notify(struct proto *P, unsigned flags, struct iface *i)
debug("WG: found ifname\n");
p->iface = i;
}
+
+ if (flags & IF_CHANGE_UP)
+ {
+ debug("WG: IF_CHANGE_UP %s\n", i->name);
+
+ int res = set_device(p);
+ log(L_TRACE "WG: wg_set_device %d", res);
+ }
}
static void
@@ -956,6 +964,8 @@ wg_shutdown(struct proto *P)
int res = set_device(p);
log(L_TRACE "WG: flush wg_set_device %d", res);
}
+
+ return PS_DOWN;
}
static void