sd-netlink: unify sd_netlink_message_append_in{,6}_addr() and _sockaddr_in{,6}()
This commit is contained in:
parent
bd930cbdeb
commit
67b19a4961
|
@ -334,36 +334,46 @@ int sd_netlink_message_append_data(sd_netlink_message *m, unsigned short type, c
|
|||
return 0;
|
||||
}
|
||||
|
||||
int sd_netlink_message_append_in_addr(sd_netlink_message *m, unsigned short type, const struct in_addr *data) {
|
||||
int netlink_message_append_in_addr_union(sd_netlink_message *m, unsigned short type, int family, const union in_addr_union *data) {
|
||||
int r;
|
||||
|
||||
assert_return(m, -EINVAL);
|
||||
assert_return(!m->sealed, -EPERM);
|
||||
assert_return(data, -EINVAL);
|
||||
assert_return(IN_SET(family, AF_INET, AF_INET6), -EINVAL);
|
||||
|
||||
r = message_attribute_has_type(m, NULL, type, NETLINK_TYPE_IN_ADDR);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = add_rtattr(m, type, data, sizeof(struct in_addr));
|
||||
r = add_rtattr(m, type, data, FAMILY_ADDRESS_SIZE(family));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sd_netlink_message_append_in_addr(sd_netlink_message *m, unsigned short type, const struct in_addr *data) {
|
||||
return netlink_message_append_in_addr_union(m, type, AF_INET, (const union in_addr_union *) data);
|
||||
}
|
||||
|
||||
int sd_netlink_message_append_in6_addr(sd_netlink_message *m, unsigned short type, const struct in6_addr *data) {
|
||||
return netlink_message_append_in_addr_union(m, type, AF_INET6, (const union in_addr_union *) data);
|
||||
}
|
||||
|
||||
int netlink_message_append_sockaddr_union(sd_netlink_message *m, unsigned short type, const union sockaddr_union *data) {
|
||||
int r;
|
||||
|
||||
assert_return(m, -EINVAL);
|
||||
assert_return(!m->sealed, -EPERM);
|
||||
assert_return(data, -EINVAL);
|
||||
assert_return(IN_SET(data->sa.sa_family, AF_INET, AF_INET6), -EINVAL);
|
||||
|
||||
r = message_attribute_has_type(m, NULL, type, NETLINK_TYPE_IN_ADDR);
|
||||
r = message_attribute_has_type(m, NULL, type, NETLINK_TYPE_SOCKADDR);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = add_rtattr(m, type, data, sizeof(struct in6_addr));
|
||||
r = add_rtattr(m, type, data, data->sa.sa_family == AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
@ -371,41 +381,14 @@ int sd_netlink_message_append_in6_addr(sd_netlink_message *m, unsigned short typ
|
|||
}
|
||||
|
||||
int sd_netlink_message_append_sockaddr_in(sd_netlink_message *m, unsigned short type, const struct sockaddr_in *data) {
|
||||
int r;
|
||||
|
||||
assert_return(m, -EINVAL);
|
||||
assert_return(!m->sealed, -EPERM);
|
||||
assert_return(data, -EINVAL);
|
||||
|
||||
r = message_attribute_has_type(m, NULL, type, NETLINK_TYPE_SOCKADDR);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = add_rtattr(m, type, data, sizeof(struct sockaddr_in));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
return 0;
|
||||
return netlink_message_append_sockaddr_union(m, type, (const union sockaddr_union *) data);
|
||||
}
|
||||
|
||||
int sd_netlink_message_append_sockaddr_in6(sd_netlink_message *m, unsigned short type, const struct sockaddr_in6 *data) {
|
||||
int r;
|
||||
|
||||
assert_return(m, -EINVAL);
|
||||
assert_return(!m->sealed, -EPERM);
|
||||
assert_return(data, -EINVAL);
|
||||
|
||||
r = message_attribute_has_type(m, NULL, type, NETLINK_TYPE_SOCKADDR);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = add_rtattr(m, type, data, sizeof(struct sockaddr_in6));
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
return 0;
|
||||
return netlink_message_append_sockaddr_union(m, type, (const union sockaddr_union *) data);
|
||||
}
|
||||
|
||||
|
||||
int sd_netlink_message_append_ether_addr(sd_netlink_message *m, unsigned short type, const struct ether_addr *data) {
|
||||
int r;
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
#include "sd-netlink.h"
|
||||
|
||||
#include "in-addr-util.h"
|
||||
#include "socket-util.h"
|
||||
#include "util.h"
|
||||
|
||||
int rtnl_message_new_synthetic_error(sd_netlink *rtnl, int error, uint32_t serial, sd_netlink_message **ret);
|
||||
|
@ -58,3 +60,6 @@ int rtnl_log_create_error(int r);
|
|||
(sd_netlink_destroy_t) _destroy_, \
|
||||
userdata, __func__); \
|
||||
})
|
||||
|
||||
int netlink_message_append_in_addr_union(sd_netlink_message *m, unsigned short type, int family, const union in_addr_union *data);
|
||||
int netlink_message_append_sockaddr_union(sd_netlink_message *m, unsigned short type, const union sockaddr_union *data);
|
||||
|
|
Loading…
Reference in a new issue