From 28e3973e0a652fef3499c6f5ca89755d960376fe Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Thu, 11 Apr 2019 01:26:03 +0200 Subject: Wireguard: Fixes --- proto/wireguard/wireguard.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'proto/wireguard') 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 -- cgit v1.2.3