}
int sd_netlink_message_read_data(sd_netlink_message *m, unsigned short type, size_t *ret_size, void **ret_data) {
- void *attr_data, *data;
+ void *attr_data;
int r;
assert_return(m, -EINVAL);
return r;
if (ret_data) {
+ void *data;
+
data = memdup(attr_data, r);
if (!data)
return -ENOMEM;
int sd_netlink_message_read_string_strdup(sd_netlink_message *m, unsigned short type, char **data) {
void *attr_data;
- char *str;
int r;
assert_return(m, -EINVAL);
return r;
if (data) {
+ char *str;
+
str = strndup(attr_data, r);
if (!str)
return -ENOMEM;
}
int sd_netlink_message_read_string(sd_netlink_message *m, unsigned short type, const char **data) {
- int r;
void *attr_data;
+ int r;
assert_return(m, -EINVAL);
r = netlink_message_read_internal(m, type, &attr_data, NULL);
if (r < 0)
return r;
- else if (strnlen(attr_data, r) >= (size_t) r)
+
+ if (strnlen(attr_data, r) >= (size_t) r)
return -EIO;
if (data)
}
int sd_netlink_message_read_u8(sd_netlink_message *m, unsigned short type, uint8_t *data) {
- int r;
void *attr_data;
+ int r;
assert_return(m, -EINVAL);
r = netlink_message_read_internal(m, type, &attr_data, NULL);
if (r < 0)
return r;
- else if ((size_t) r < sizeof(uint8_t))
+
+ if ((size_t) r < sizeof(uint8_t))
return -EIO;
if (data)
r = netlink_message_read_internal(m, type, &attr_data, &net_byteorder);
if (r < 0)
return r;
- else if ((size_t) r < sizeof(uint16_t))
+
+ if ((size_t) r < sizeof(uint16_t))
return -EIO;
if (data) {
r = netlink_message_read_internal(m, type, &attr_data, &net_byteorder);
if (r < 0)
return r;
- else if ((size_t) r < sizeof(uint32_t))
+
+ if ((size_t) r < sizeof(uint32_t))
return -EIO;
if (data) {
}
int sd_netlink_message_read_ether_addr(sd_netlink_message *m, unsigned short type, struct ether_addr *data) {
- int r;
void *attr_data;
+ int r;
assert_return(m, -EINVAL);
r = netlink_message_read_internal(m, type, &attr_data, NULL);
if (r < 0)
return r;
- else if ((size_t) r < sizeof(struct ether_addr))
+
+ if ((size_t) r < sizeof(struct ether_addr))
return -EIO;
if (data)
}
int netlink_message_read_hw_addr(sd_netlink_message *m, unsigned short type, struct hw_addr_data *data) {
- int r;
void *attr_data;
+ int r;
assert_return(m, -EINVAL);
r = netlink_message_read_internal(m, type, &attr_data, NULL);
if (r < 0)
return r;
- else if (r > HW_ADDR_MAX_SIZE)
+
+ if (r > HW_ADDR_MAX_SIZE)
return -EIO;
if (data) {
}
int sd_netlink_message_read_cache_info(sd_netlink_message *m, unsigned short type, struct ifa_cacheinfo *info) {
- int r;
void *attr_data;
+ int r;
assert_return(m, -EINVAL);
r = netlink_message_read_internal(m, type, &attr_data, NULL);
if (r < 0)
return r;
- else if ((size_t) r < sizeof(struct ifa_cacheinfo))
+
+ if ((size_t) r < sizeof(struct ifa_cacheinfo))
return -EIO;
if (info)
r = netlink_message_read_internal(m, type, &attr_data, NULL);
if (r < 0)
return r;
- else if ((size_t) r < FAMILY_ADDRESS_SIZE(family))
+
+ if ((size_t) r < FAMILY_ADDRESS_SIZE(family))
return -EIO;
if (data)
addrlen = sizeof(nl->sockaddr);
- r = bind(nl->fd, &nl->sockaddr.sa, addrlen);
/* ignore EINVAL to allow binding an already bound socket */
- if (r < 0 && errno != EINVAL)
+ if (bind(nl->fd, &nl->sockaddr.sa, addrlen) < 0 && errno != EINVAL)
return -errno;
- r = getsockname(nl->fd, &nl->sockaddr.sa, &addrlen);
- if (r < 0)
+ if (getsockname(nl->fd, &nl->sockaddr.sa, &addrlen) < 0)
return -errno;
return broadcast_groups_get(nl);
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
size_t size;
- if (!group && new_msg->nlmsg_pid != nl->sockaddr.nl.nl_pid)
+ if (group == 0 && new_msg->nlmsg_pid != nl->sockaddr.nl.nl_pid)
/* not broadcast and not for us */
continue;
if (r < 0)
return r;
- m->broadcast = !!group;
+ m->broadcast = group != 0;
m->hdr = memdup(new_msg, new_msg->nlmsg_len);
if (!m->hdr)