if (enable && iface->dhcpv6) {
int sock = socket(AF_INET6, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_UDP);
if (sock < 0) {
- syslog(LOG_ERR, "Failed to create DHCPv6 server socket: %s",
- strerror(errno));
+ syslog(LOG_ERR, "Failed to create DHCPv6 server socket: %m");
return -1;
}
0, IN6ADDR_ANY_INIT, 0};
if (bind(sock, (struct sockaddr*)&bind_addr, sizeof(bind_addr))) {
- syslog(LOG_ERR, "Failed to open DHCPv6 server socket: %s",
- strerror(errno));
+ syslog(LOG_ERR, "Failed to open DHCPv6 server socket: %m");
return -1;
}
if (IN6_IS_ADDR_UNSPECIFIED(&cerid.addr)) {
struct odhcpd_ipaddr *addrs;
- ssize_t len = odhcpd_get_interface_addresses(0, true, &addrs);
+ ssize_t len = netlink_get_interface_addrs(0, true, &addrs);
for (ssize_t i = 0; i < len; ++i)
if (IN6_IS_ADDR_UNSPECIFIED(&cerid.addr)
|| memcmp(&addrs[i].addr, &cerid.addr, sizeof(cerid.addr)) < 0)
- cerid.addr = addrs[i].addr;
+ cerid.addr = addrs[i].addr.in6;
free(addrs);
}