projects
/
project
/
odhcpd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
router: reduce dns lifetime to 10x maximum interval
[project/odhcpd.git]
/
src
/
dhcpv6-ia.c
diff --git
a/src/dhcpv6-ia.c
b/src/dhcpv6-ia.c
index
c5f8783
..
30bffbc
100644
(file)
--- a/
src/dhcpv6-ia.c
+++ b/
src/dhcpv6-ia.c
@@
-92,14
+92,15
@@
int setup_dhcpv6_ia_interface(struct interface *iface, bool enable)
struct lease *lease;
list_for_each_entry(lease, &leases, head) {
// Construct entry
struct lease *lease;
list_for_each_entry(lease, &leases, head) {
// Construct entry
- struct dhcpv6_assignment *a = calloc(1, sizeof(*a) + lease->duid_len);
+ size_t duid_len = lease->duid_len ? lease->duid_len : 14;
+ struct dhcpv6_assignment *a = calloc(1, sizeof(*a) + duid_len);
if (!a) {
syslog(LOG_ERR, "Calloc failed for static lease assignment on interface %s",
iface->ifname);
return -1;
}
if (!a) {
syslog(LOG_ERR, "Calloc failed for static lease assignment on interface %s",
iface->ifname);
return -1;
}
- a->clid_len =
lease->
duid_len;
+ a->clid_len = duid_len;
a->length = 128;
if (lease->hostid) {
a->assigned = lease->hostid;
a->length = 128;
if (lease->hostid) {
a->assigned = lease->hostid;
@@
-572,7
+573,7
@@
void dhcpv6_ia_postupdate(struct interface *iface, time_t now)
int minprefix = -1;
for (size_t i = 0; i < iface->ia_addr_len; ++i) {
int minprefix = -1;
for (size_t i = 0; i < iface->ia_addr_len; ++i) {
- if (iface->ia_addr[i].preferred > now &&
+ if (iface->ia_addr[i].preferred >
(uint32_t)
now &&
iface->ia_addr[i].prefix < 64 &&
iface->ia_addr[i].prefix > minprefix)
minprefix = iface->ia_addr[i].prefix;
iface->ia_addr[i].prefix < 64 &&
iface->ia_addr[i].prefix > minprefix)
minprefix = iface->ia_addr[i].prefix;
@@
-739,7
+740,7
@@
static size_t append_reply(uint8_t *buf, size_t buflen, uint16_t status,
size_t entrlen = sizeof(n) - 4;
if (iface->managed < RELAYD_MANAGED_NO_AFLAG && i != m &&
size_t entrlen = sizeof(n) - 4;
if (iface->managed < RELAYD_MANAGED_NO_AFLAG && i != m &&
- addrs[i].prefix
=
= 64)
+ addrs[i].prefix
<
= 64)
continue;
if (datalen + entrlen + 4 > buflen || a->assigned == 0)
continue;
if (datalen + entrlen + 4 > buflen || a->assigned == 0)