diff options
author | Linus Nordberg <linus@nordberg.se> | 2019-04-08 12:05:10 +0200 |
---|---|---|
committer | Linus Nordberg <linus@nordberg.se> | 2019-04-08 12:05:10 +0200 |
commit | 41949a5cc1f9878310f20b6bed3febb4eba14ffb (patch) | |
tree | 2d39b8643a8064596165990c1bff7342c3135d1e | |
parent | add instructions for intalling dependencies (diff) | |
download | wg-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.c | 25 | ||||
-rw-r--r-- | common.h | 3 | ||||
-rw-r--r-- | wg-dynamic-client.c | 21 | ||||
-rw-r--r-- | wg-dynamic-server.c | 21 |
4 files changed, 25 insertions, 45 deletions
@@ -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; +} @@ -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] = {}; |