rework IPv6 address dump logic
[project/odhcpd.git] / src / dhcpv6-ia.c
index 84f368e..fb50448 100644 (file)
@@ -88,8 +88,7 @@ int setup_dhcpv6_ia_interface(struct interface *iface, bool enable)
                                return -1;
                        }
 
-                       if (lease->dhcpv4_leasetime > 0)
-                               a->leasetime = lease->dhcpv4_leasetime;
+                       a->leasetime = lease->dhcpv4_leasetime;
 
                        a->clid_len = duid_len;
                        a->length = 128;
@@ -243,8 +242,12 @@ void dhcpv6_write_statefile(void)
                int fd = open(config.dhcp_statefile, O_CREAT | O_WRONLY | O_CLOEXEC, 0644);
                if (fd < 0)
                        return;
-
-               lockf(fd, F_LOCK, 0);
+               int ret;
+               ret = lockf(fd, F_LOCK, 0);
+               if (ret < 0) {
+                       close(fd);
+                       return;
+               }
                if (ftruncate(fd, 0) < 0) {}
 
                FILE *fp = fdopen(fd, "w");
@@ -719,16 +722,11 @@ static size_t append_reply(uint8_t *buf, size_t buflen, uint16_t status,
        } else {
                if (a) {
                        uint32_t leasetime;
-                       if (a->leasetime > 0)
+                       if (a->leasetime)
                                leasetime = a->leasetime;
                        else
                                leasetime = iface->dhcpv4_leasetime;
 
-                       if (leasetime == 0)
-                               leasetime = 3600;
-                       else if (leasetime < 60)
-                               leasetime = 60;
-
                        uint32_t pref = leasetime;
                        uint32_t valid = leasetime;