ubus: fix invalid ipv6-prefix json
[project/odhcpd.git] / src / dhcpv6.c
index 3edde95..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);
                        }