odhcpd: Replace strerror(errno) with %m format
[project/odhcpd.git] / src / dhcpv6.c
index b94e84d..e092c10 100644 (file)
@@ -53,8 +53,7 @@ int dhcpv6_setup_interface(struct interface *iface, bool enable)
        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;
                }
 
@@ -76,8 +75,7 @@ int dhcpv6_setup_interface(struct interface *iface, bool enable)
                                        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;
                }
 
@@ -331,12 +329,12 @@ static void handle_client_request(void *addr, void *data, size_t len,
 
                        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);
                        }
@@ -483,17 +481,17 @@ static struct odhcpd_ipaddr *relay_link_address(struct interface *iface)
        struct odhcpd_ipaddr *addr = NULL;
        time_t now = odhcpd_time();
 
-       for (size_t i = 0; i < iface->ia_addr_len; i++) {
-               if (iface->ia_addr[i].valid <= (uint32_t)now)
+       for (size_t i = 0; i < iface->addr6_len; i++) {
+               if (iface->addr6[i].valid <= (uint32_t)now)
                        continue;
 
-               if (iface->ia_addr[i].preferred > (uint32_t)now) {
-                       addr = &iface->ia_addr[i];
+               if (iface->addr6[i].preferred > (uint32_t)now) {
+                       addr = &iface->addr6[i];
                        break;
                }
 
-               if (!addr || (iface->ia_addr[i].valid > addr->valid))
-                       addr = &iface->ia_addr[i];
+               if (!addr || (iface->addr6[i].valid > addr->valid))
+                       addr = &iface->addr6[i];
        }
 
        return addr;