summaryrefslogtreecommitdiff
path: root/proto/wireguard/wireguard.c
diff options
context:
space:
mode:
authorMikael Magnusson <mikma@users.sourceforge.net>2019-04-11 01:26:03 +0200
committerMikael Magnusson <mikma@users.sourceforge.net>2020-05-08 18:52:55 +0200
commit172c4e49ee8b2fc4d27842c30e9b45635149e56f (patch)
tree6c3452ad8c0b2a5b1f03e6e64db6cea69643a4d1 /proto/wireguard/wireguard.c
parentfb479b973f8ae9ee15003b8da0d08e3748fba31e (diff)
Wireguard: Fixes
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 bea7e33f..a998f014 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
@@ -957,6 +965,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