projects
/
project
/
odhcpd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dhcpv6-ia: use dhcp leasetime to set preferred/valid statefull lifetimes
[project/odhcpd.git]
/
src
/
dhcpv6-ia.c
diff --git
a/src/dhcpv6-ia.c
b/src/dhcpv6-ia.c
index ee0acafe5c38cef5fd04ccd4fcbf76c32a6e0f7d..d8187ffeb8dd50fd998ef3a9771c04080bcc9a34 100644
(file)
--- a/
src/dhcpv6-ia.c
+++ b/
src/dhcpv6-ia.c
@@
-823,7
+823,7
@@
static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status,
if (a->leasetime)
leasetime = a->leasetime;
else
if (a->leasetime)
leasetime = a->leasetime;
else
- leasetime = iface->dhcp
v4
_leasetime;
+ leasetime = iface->dhcp_leasetime;
uint32_t pref = leasetime;
uint32_t valid = leasetime;
uint32_t pref = leasetime;
uint32_t valid = leasetime;
@@
-842,9
+842,15
@@
static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status,
if (prefix_pref != UINT32_MAX)
prefix_pref -= now;
if (prefix_pref != UINT32_MAX)
prefix_pref -= now;
+ if (prefix_pref > leasetime)
+ prefix_pref = leasetime;
+
if (prefix_valid != UINT32_MAX)
prefix_valid -= now;
if (prefix_valid != UINT32_MAX)
prefix_valid -= now;
+ if (prefix_valid > leasetime)
+ prefix_valid = leasetime;
+
if (a->flags & OAF_DHCPV6_PD) {
struct dhcpv6_ia_prefix o_ia_p = {
.type = htons(DHCPV6_OPT_IA_PREFIX),
if (a->flags & OAF_DHCPV6_PD) {
struct dhcpv6_ia_prefix o_ia_p = {
.type = htons(DHCPV6_OPT_IA_PREFIX),