aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordberg.se>2019-04-08 12:05:10 +0200
committerLinus Nordberg <linus@nordberg.se>2019-04-08 12:05:10 +0200
commit41949a5cc1f9878310f20b6bed3febb4eba14ffb (patch)
tree2d39b8643a8064596165990c1bff7342c3135d1e
parentadd instructions for intalling dependencies (diff)
downloadwg-dynamic-41949a5cc1f9878310f20b6bed3febb4eba14ffb.tar.xz
wg-dynamic-41949a5cc1f9878310f20b6bed3febb4eba14ffb.zip
Address three issues from review by Tharre
1. print_to_buf() return int 2. print_to_buf() don't fatal() without errno 3. data_attr_cb() don't duplicate
-rw-r--r--common.c25
-rw-r--r--common.h3
-rw-r--r--wg-dynamic-client.c21
-rw-r--r--wg-dynamic-server.c21
4 files changed, 25 insertions, 45 deletions
diff --git a/common.c b/common.c
index 9da90fd..15e46b3 100644
--- a/common.c
+++ b/common.c
@@ -352,7 +352,7 @@ void send_later(struct wg_dynamic_request *req, unsigned char *const buf,
req->buflen = msglen;
}
-size_t print_to_buf(char *buf, size_t bufsize, size_t offset, char *fmt, ...)
+int print_to_buf(char *buf, size_t bufsize, size_t offset, char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
@@ -361,7 +361,7 @@ size_t print_to_buf(char *buf, size_t bufsize, size_t offset, char *fmt, ...)
if (n < 0)
fatal("Failed snprintf");
if (n + offset >= bufsize)
- fatal("Outbuffer too small");
+ die("Outbuffer too small");
return n;
}
@@ -433,3 +433,24 @@ void iface_get_all_addrs(uint8_t family, mnl_cb_t data_cb, void *cb_data)
mnl_socket_close(nl);
}
+
+int data_attr_cb(const struct nlattr *attr, void *data)
+{
+ const struct nlattr **tb = data;
+ int type = mnl_attr_get_type(attr);
+
+ /* skip unsupported attribute in user-space */
+ if (mnl_attr_type_valid(attr, IFA_MAX) < 0)
+ return MNL_CB_OK;
+
+ switch (type) {
+ case IFA_ADDRESS:
+ if (mnl_attr_validate(attr, MNL_TYPE_BINARY) < 0) {
+ perror("mnl_attr_validate");
+ return MNL_CB_ERROR;
+ }
+ break;
+ }
+ tb[type] = attr;
+ return MNL_CB_OK;
+}
diff --git a/common.h b/common.h
index 0441fa4..8d33d25 100644
--- a/common.h
+++ b/common.h
@@ -90,9 +90,10 @@ bool handle_request(int fd, struct wg_dynamic_request *req,
size_t send_message(int fd, unsigned char *buf, size_t *len);
void send_later(struct wg_dynamic_request *req, unsigned char *const buf,
size_t msglen);
-size_t print_to_buf(char *buf, size_t bufsize, size_t len, char *fmt, ...);
+int print_to_buf(char *buf, size_t bufsize, size_t len, char *fmt, ...);
uint32_t current_time();
void close_connection(int *fd, struct wg_dynamic_request *req);
bool is_link_local(unsigned char *addr);
void iface_get_all_addrs(uint8_t family, mnl_cb_t data_cb, void *cb_data);
+int data_attr_cb(const struct nlattr *attr, void *data);
#endif
diff --git a/wg-dynamic-client.c b/wg-dynamic-client.c
index 33256dd..2838eaf 100644
--- a/wg-dynamic-client.c
+++ b/wg-dynamic-client.c
@@ -45,27 +45,6 @@ static void usage()
die("usage: %s <wg-interface>\n", progname);
}
-int data_attr_cb(const struct nlattr *attr, void *data)
-{
- const struct nlattr **tb = data;
- int type = mnl_attr_get_type(attr);
-
- /* skip unsupported attribute in user-space */
- if (mnl_attr_type_valid(attr, IFA_MAX) < 0)
- return MNL_CB_OK;
-
- switch (type) {
- case IFA_ADDRESS:
- if (mnl_attr_validate(attr, MNL_TYPE_BINARY) < 0) {
- perror("mnl_attr_validate");
- return MNL_CB_ERROR;
- }
- break;
- }
- tb[type] = attr;
- return MNL_CB_OK;
-}
-
int data_cb(const struct nlmsghdr *nlh, void *data)
{
struct nlattr *tb[IFA_MAX + 1] = {};
diff --git a/wg-dynamic-server.c b/wg-dynamic-server.c
index fc8098c..29c01d3 100644
--- a/wg-dynamic-server.c
+++ b/wg-dynamic-server.c
@@ -47,27 +47,6 @@ static void usage()
die("usage: %s <wg-interface>\n", progname);
}
-static int data_attr_cb(const struct nlattr *attr, void *data)
-{
- const struct nlattr **tb = data;
- int type = mnl_attr_get_type(attr);
-
- /* skip unsupported attribute in user-space */
- if (mnl_attr_type_valid(attr, IFA_MAX) < 0)
- return MNL_CB_OK;
-
- switch (type) {
- case IFA_ADDRESS:
- if (mnl_attr_validate(attr, MNL_TYPE_BINARY) < 0) {
- perror("mnl_attr_validate");
- return MNL_CB_ERROR;
- }
- break;
- }
- tb[type] = attr;
- return MNL_CB_OK;
-}
-
static int data_cb(const struct nlmsghdr *nlh, void *data)
{
struct nlattr *tb[IFA_MAX + 1] = {};