aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/tools/show.c
diff options
context:
space:
mode:
authorLuis Ressel <aranea@aixah.de>2019-03-25 14:53:09 +0100
committerLuis Ressel <aranea@aixah.de>2019-03-28 15:03:05 +0100
commitf50ef1676fe5861c9071910d2caf64593a28d837 (patch)
treee7efdc112f08cb56c204c2a9daec46607b51891d /src/tools/show.c
parenttools: avoid unneccessary next_peer assignments in sort_peers() (diff)
downloadwireguard-monolithic-historical-f50ef1676fe5861c9071910d2caf64593a28d837.tar.xz
wireguard-monolithic-historical-f50ef1676fe5861c9071910d2caf64593a28d837.zip
[WIP] wg: Support human-readable peer nameslr/peer-names
TODO: * Refactor the inflatable_buffer code from ipc.c and use it for both the wgpeer_name array and the names. * ugly_print, dumb_print * Make wgpeer_names part of wgdevice? * Check for dupes? * Test! Signed-off-by: Luis Ressel <aranea@aixah.de>
Diffstat (limited to 'src/tools/show.c')
-rw-r--r--src/tools/show.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/tools/show.c b/src/tools/show.c
index ff0897d..ca26cc6 100644
--- a/src/tools/show.c
+++ b/src/tools/show.c
@@ -22,6 +22,7 @@
#include "ipc.h"
#include "terminal.h"
#include "encoding.h"
+#include "peer_names.h"
#include "subcommands.h"
static int peer_cmp(const void *first, const void *second)
@@ -205,8 +206,9 @@ static void show_usage(void)
fprintf(stderr, "Usage: %s %s { <interface> | all | interfaces } [public-key | private-key | listen-port | fwmark | peers | preshared-keys | endpoints | allowed-ips | latest-handshakes | transfer | persistent-keepalive | dump]\n", PROG_NAME, COMMAND_NAME);
}
-static void pretty_print(struct wgdevice *device)
+static void pretty_print(struct wgdevice *device, struct wgpeer_names *names)
{
+ char *name;
struct wgpeer *peer;
struct wgallowedip *allowedip;
@@ -226,6 +228,8 @@ static void pretty_print(struct wgdevice *device)
}
for_each_wgpeer(device, peer) {
terminal_printf(TERMINAL_FG_YELLOW TERMINAL_BOLD "peer" TERMINAL_RESET ": " TERMINAL_FG_YELLOW "%s" TERMINAL_RESET "\n", key(peer->public_key));
+ if ((name = peer_names_get(names, peer->public_key)))
+ terminal_printf(" " TERMINAL_BOLD "name" TERMINAL_RESET ": %s\n", name);
if (peer->flags & WGPEER_HAS_PRESHARED_KEY)
terminal_printf(" " TERMINAL_BOLD "preshared key" TERMINAL_RESET ": %s\n", masked_key(peer->preshared_key));
if (peer->endpoint.addr.sa_family == AF_INET || peer->endpoint.addr.sa_family == AF_INET6)
@@ -398,6 +402,7 @@ int show_main(int argc, char *argv[])
interface = interfaces;
for (size_t len = 0; (len = strlen(interface)); interface += len + 1) {
struct wgdevice *device = NULL;
+ struct wgpeer_names names;
if (ipc_get_device(&device, interface) < 0) {
fprintf(stderr, "Unable to access interface %s: %s\n", interface, strerror(errno));
@@ -410,9 +415,12 @@ int show_main(int argc, char *argv[])
break;
}
} else {
- pretty_print(device);
+ if (!peer_names_open(&names, device) && errno)
+ perror("peer_names_open");
+ pretty_print(device, &names);
if (strlen(interface + len + 1))
printf("\n");
+ peer_names_free(&names);
}
free_wgdevice(device);
ret = 0;
@@ -438,6 +446,7 @@ int show_main(int argc, char *argv[])
show_usage();
else {
struct wgdevice *device = NULL;
+ struct wgpeer_names names;
if (ipc_get_device(&device, argv[1]) < 0) {
perror("Unable to access interface");
@@ -446,8 +455,12 @@ int show_main(int argc, char *argv[])
if (argc == 3) {
if (!ugly_print(device, argv[2], false))
ret = 1;
- } else
- pretty_print(device);
+ } else {
+ if (!peer_names_open(&names, device) && errno)
+ perror("peer_names_open");
+ pretty_print(device, &names);
+ peer_names_free(&names);
+ }
free_wgdevice(device);
}
return ret;