projects
/
project
/
odhcpd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dhcpv6: fix handling of infinite lifetimes
[project/odhcpd.git]
/
src
/
dhcpv6-ia.c
diff --git
a/src/dhcpv6-ia.c
b/src/dhcpv6-ia.c
index
74e3441
..
de44581
100644
(file)
--- a/
src/dhcpv6-ia.c
+++ b/
src/dhcpv6-ia.c
@@
-728,13
+728,19
@@
static size_t append_reply(uint8_t *buf, size_t buflen, uint16_t status,
m = i;
for (size_t i = 0; i < addrlen; ++i) {
m = i;
for (size_t i = 0; i < addrlen; ++i) {
- uint32_t prefix_pref = addrs[i].preferred
- now
;
- uint32_t prefix_valid = addrs[i].valid
- now
;
+ uint32_t prefix_pref = addrs[i].preferred;
+ uint32_t prefix_valid = addrs[i].valid;
if (addrs[i].prefix > 96 ||
addrs[i].preferred <= (uint32_t)now)
continue;
if (addrs[i].prefix > 96 ||
addrs[i].preferred <= (uint32_t)now)
continue;
+ if (prefix_pref != UINT32_MAX)
+ prefix_pref -= now;
+
+ if (prefix_valid != UINT32_MAX)
+ prefix_valid -= now;
+
if (a->length < 128) {
struct dhcpv6_ia_prefix p = {
.type = htons(DHCPV6_OPT_IA_PREFIX),
if (a->length < 128) {
struct dhcpv6_ia_prefix p = {
.type = htons(DHCPV6_OPT_IA_PREFIX),