summaryrefslogtreecommitdiff
path: root/proto
diff options
context:
space:
mode:
authorMikael Magnusson <mikma@users.sourceforge.net>2019-09-29 15:25:16 +0200
committerMikael Magnusson <mikma@users.sourceforge.net>2020-05-08 18:52:55 +0200
commit31ad8c90ce074910dcad7535cd5f56f0e5b1e958 (patch)
tree12fbea3d211d77c21f9aafd3c6344d904ce3f990 /proto
parentc4c07589c792ca6e47f7a154905fc23949d17845 (diff)
Wireguard: Refactor dump_peer
Diffstat (limited to 'proto')
-rw-r--r--proto/wireguard/wireguard.c57
1 files changed, 36 insertions, 21 deletions
diff --git a/proto/wireguard/wireguard.c b/proto/wireguard/wireguard.c
index b0095aa7..eabaa79c 100644
--- a/proto/wireguard/wireguard.c
+++ b/proto/wireguard/wireguard.c
@@ -16,6 +16,8 @@
#include "sysdep/unix/wg_user.h"
#include "wireguard.h"
+static ip_addr allowedip_to_ipa(struct wg_allowedip *allowedip);
+
static
int get_device(struct wg_proto *p, wg_device **pdev, const char *device_name)
{
@@ -157,6 +159,21 @@ dump(void *ptr, size_t len)
fprintf(stderr, "\n");
}
+static void
+dump_peer(struct wg_peer *peer)
+{
+ wg_key_b64_string base64;
+ wg_key_to_base64(base64, peer->public_key);
+ debug("WG: peer %s\n", base64);
+
+ struct wg_allowedip *allowedip = NULL;
+ wg_for_each_allowedip(peer, allowedip) {
+ ip_addr ip = allowedip_to_ipa(allowedip);
+
+ debug("allowedip %I/%d\n", ip, allowedip->cidr);
+ }
+}
+
static wg_peer *
add_peer(wg_device *dev, const wg_key pubkey)
{
@@ -228,6 +245,20 @@ set_peer_tunnel_ep(wg_peer *peer, ip_addr tunnel_ep_addr, u16 udp_dest_port)
return 0;
}
+static ip_addr
+allowedip_to_ipa(struct wg_allowedip *allowedip)
+{
+ switch (allowedip->family) {
+ case AF_INET:
+ return ipa_from_in4(allowedip->ip4);
+ break;
+ case AF_INET6:
+ return ipa_from_in6(allowedip->ip6);
+ }
+
+ return IPA_NONE;
+}
+
static void
init_allowed_ip(struct wg_allowedip *allowedip, u8 net_type, struct network *n)
{
@@ -261,7 +292,7 @@ add_allowed_ip(u8 net_type, struct network *n, wg_peer *peer)
return 0;
}
-static void
+static bool
remove_allowed_ip(wg_peer *peer, struct wg_allowedip *allowedip)
{
struct wg_allowedip *ip = NULL;
@@ -307,8 +338,10 @@ remove_allowed_ip(wg_peer *peer, struct wg_allowedip *allowedip)
}
free(ip);
- break;
+ return true;
}
+
+ return false;
}
static void
@@ -641,25 +674,7 @@ wg_dump(struct proto *P)
log(L_TRACE "WG: dump peers");
wg_for_each_peer(p->dev, peer) {
- wg_key_b64_string base64;
- wg_key_to_base64(base64, peer->public_key);
- debug("WG: peer %s\n", base64);
-
- struct wg_allowedip *allowedip = NULL;
- wg_for_each_allowedip(peer, allowedip) {
- ip_addr ip;
-
- switch (allowedip->family) {
- case AF_INET:
- ip = ipa_from_in4(allowedip->ip4);
- break;
- case AF_INET6:
- ip = ipa_from_in6(allowedip->ip6);
- break;
- }
-
- debug("allowedip %I/%d\n", ip, allowedip->cidr);
- }
+ dump_peer(peer);
}
}