aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/tools/ipc.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2017-10-09 13:27:00 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2017-10-09 13:31:18 +0200
commit6051d70ebfd7abedfd09ef9b992528eb2b598546 (patch)
tree42abe1cad3c4afd19a2a6f6f17fab7f2ead5be9b /src/tools/ipc.c
parentroutingtable: iterate progressively (diff)
downloadwireguard-monolithic-historical-6051d70ebfd7abedfd09ef9b992528eb2b598546.tar.xz
wireguard-monolithic-historical-6051d70ebfd7abedfd09ef9b992528eb2b598546.zip
tools: warn once on unrecognized items
DaveM suggests we do in fact do this. Others on the same thread weren't happy about the length of the proposed message, so we also give a bit of a less dramatic warning. This reverts commit a2cc976a3b572cf308cc2d97c080eacac60416fe.
Diffstat (limited to 'src/tools/ipc.c')
-rw-r--r--src/tools/ipc.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/tools/ipc.c b/src/tools/ipc.c
index a460d28..521a904 100644
--- a/src/tools/ipc.c
+++ b/src/tools/ipc.c
@@ -91,6 +91,15 @@ static int add_next_to_inflatable_buffer(struct inflatable_buffer *buffer)
return 0;
}
+static void warn_unrecognized(const char *which)
+{
+ static bool once = false;
+ if (once)
+ return;
+ once = true;
+ fprintf(stderr, "Warning: one or more unrecognized %s attributes", which);
+}
+
static FILE *userspace_interface_file(const char *interface)
{
struct stat sbuf;
@@ -421,6 +430,8 @@ static int userspace_get_device(struct wgdevice **out, const char *interface)
peer->tx_bytes = NUM(0xffffffffffffffffULL);
else if (!strcmp(key, "errno"))
ret = -NUM(0x7fffffffU);
+ else
+ warn_unrecognized("daemon");
}
ret = -EPROTO;
err:
@@ -692,6 +703,8 @@ static int parse_allowedip(const struct nlattr *attr, void *data)
if (!mnl_attr_validate(attr, MNL_TYPE_U8))
ctx->allowedip->cidr = mnl_attr_get_u8(attr);
break;
+ default:
+ warn_unrecognized("netlink");
}
return MNL_CB_OK;
@@ -761,6 +774,8 @@ static int parse_peer(const struct nlattr *attr, void *data)
break;
case WGPEER_A_ALLOWEDIPS:
return mnl_attr_parse_nested(attr, parse_allowedips, ctx);
+ default:
+ warn_unrecognized("netlink");
}
return MNL_CB_OK;
@@ -794,6 +809,10 @@ static int parse_device(const struct nlattr *attr, void *data)
struct get_device_ctx *ctx = data;
switch (mnl_attr_get_type(attr)) {
+ case WGDEVICE_A_IFINDEX:
+ if (!mnl_attr_validate(attr, MNL_TYPE_U32))
+ ctx->device->ifindex = mnl_attr_get_u32(attr);
+ break;
case WGDEVICE_A_IFNAME:
if (!mnl_attr_validate(attr, MNL_TYPE_STRING))
strncpy(ctx->device->name, mnl_attr_get_str(attr), sizeof(ctx->device->name) - 1);
@@ -816,6 +835,8 @@ static int parse_device(const struct nlattr *attr, void *data)
break;
case WGDEVICE_A_PEERS:
return mnl_attr_parse_nested(attr, parse_peers, ctx);
+ default:
+ warn_unrecognized("netlink");
}
return MNL_CB_OK;