diff options
author | Mikael Magnusson <mikma@users.sourceforge.net> | 2019-04-11 01:26:03 +0200 |
---|---|---|
committer | Mikael Magnusson <mikma@users.sourceforge.net> | 2021-01-12 23:34:17 +0100 |
commit | 9856e23c3e39805fd56740aefc800b2a40c34ef7 (patch) | |
tree | 0c4418de4c0c1d90f5bdd1f625b6ef45f123d965 | |
parent | 56efa9ddc4d85428dcdf2ed3f8acafdbaf8d503b (diff) |
Wireguard: Fixes
-rw-r--r-- | proto/wireguard/wireguard.c | 14 |
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 |