diff options
author | Mikael Magnusson <mikma@users.sourceforge.net> | 2019-04-11 01:25:39 +0200 |
---|---|---|
committer | Mikael Magnusson <mikma@users.sourceforge.net> | 2019-11-15 00:11:29 +0100 |
commit | d213b1eb83ef68562a7de6f621a1a396927b5215 (patch) | |
tree | 93fa8c2a3689e53f04f3d1137eebcbc1284c5ce4 | |
parent | c8f6b79a45bc581c7de3ed3e4094d426c36f834d (diff) |
Wireguard: Implement copy_config
-rw-r--r-- | proto/wireguard/wireguard.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/proto/wireguard/wireguard.c b/proto/wireguard/wireguard.c index 35b69c54..bea7e33f 100644 --- a/proto/wireguard/wireguard.c +++ b/proto/wireguard/wireguard.c @@ -979,6 +979,30 @@ wg_dump(struct proto *P) } } +static void +wg_copy_config(struct proto_config *DEST, struct proto_config *SRC) +{ + struct wg_config *dest = (struct wg_config *)DEST; + struct wg_config *src = (struct wg_config *)SRC; + + dest->ifname = src->ifname; + dest->socket_path = src->socket_path; + dest->private_key = src->private_key; + dest->listen_port = src->listen_port; + + struct peer_config *spc = NULL; + WALK_LIST(spc,src->peers) + { + struct peer_config *dpc = cfg_allocz(sizeof(struct peer_config)); + dpc->public_key = spc->public_key; + dpc->listen_port = spc->listen_port; + dpc->endpoint = spc->endpoint; + dpc->remote_port = spc->remote_port; + dpc->allowedip = spc->allowedip; + add_tail(&dest->peers, (node*)spc); + } +} + struct peer_config *peer_new(struct wg_config *c) { struct peer_config *pc = cfg_allocz(sizeof(struct peer_config)); @@ -1062,6 +1086,7 @@ struct protocol proto_wireguard = { .start = wg_start, .shutdown = wg_shutdown, .dump = wg_dump, + .copy_config = wg_copy_config, /* .multitable = 1, .preference = DEF_PREF_PIPE, .cleanup = wg_cleanup, |