projects
/
project
/
odhcpd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add missing NDP sync features
[project/odhcpd.git]
/
src
/
dhcpv6-ia.c
diff --git
a/src/dhcpv6-ia.c
b/src/dhcpv6-ia.c
index
3a12114
..
fe47130
100644
(file)
--- a/
src/dhcpv6-ia.c
+++ b/
src/dhcpv6-ia.c
@@
-258,6
+258,8
@@
void dhcpv6_write_statefile(void)
for (size_t i = 0; i < addrlen; ++i) {
if (addrs[i].prefix > 96)
continue;
for (size_t i = 0; i < addrlen; ++i) {
if (addrs[i].prefix > 96)
continue;
+ if (c->valid_until <= now)
+ continue;
addr = addrs[i].addr;
if (c->length == 128)
addr = addrs[i].addr;
if (c->length == 128)
@@
-718,8
+720,14
@@
static size_t append_reply(uint8_t *buf, size_t buflen, uint16_t status,
datalen += sizeof(stat);
} else {
if (a) {
datalen += sizeof(stat);
} else {
if (a) {
- uint32_t pref = 3600;
- uint32_t valid = 3600;
+ uint32_t leasetime = iface->dhcpv4_leasetime;
+ if (leasetime == 0)
+ leasetime = 3600;
+ else if (leasetime < 60)
+ leasetime = 60;
+
+ uint32_t pref = leasetime;
+ uint32_t valid = leasetime;
struct odhcpd_ipaddr *addrs = (a->managed) ? a->managed : iface->ia_addr;
size_t addrlen = (a->managed) ? (size_t)a->managed_size : iface->ia_addr_len;
struct odhcpd_ipaddr *addrs = (a->managed) ? a->managed : iface->ia_addr;
size_t addrlen = (a->managed) ? (size_t)a->managed_size : iface->ia_addr_len;