projects
/
project
/
odhcpd.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
1565d76
)
Fix prefix class IA_NA / IA_PD encoding
author
Steven Barth
<steven@midlink.org>
Wed, 4 Dec 2013 11:23:20 +0000
(12:23 +0100)
committer
Steven Barth
<steven@midlink.org>
Wed, 4 Dec 2013 11:23:20 +0000
(12:23 +0100)
src/dhcpv6-ia.c
patch
|
blob
|
history
diff --git
a/src/dhcpv6-ia.c
b/src/dhcpv6-ia.c
index
b0a31a2
..
a990001
100644
(file)
--- a/
src/dhcpv6-ia.c
+++ b/
src/dhcpv6-ia.c
@@
-600,7
+600,7
@@
static size_t append_reply(uint8_t *buf, size_t buflen, uint16_t status,
.addr = iface->ia_addr[i].addr
};
p.addr.s6_addr32[1] |= htonl(a->assigned);
.addr = iface->ia_addr[i].addr
};
p.addr.s6_addr32[1] |= htonl(a->assigned);
- size_t entrlen = sizeof(p);
+ size_t entrlen = sizeof(p)
- 4
;
#ifdef DHCPV6_OPT_PREFIX_CLASS
if (iface->ia_addr[i].has_class) {
#ifdef DHCPV6_OPT_PREFIX_CLASS
if (iface->ia_addr[i].has_class) {
@@
-609,14
+609,14
@@
static size_t append_reply(uint8_t *buf, size_t buflen, uint16_t status,
}
#endif
}
#endif
- if (datalen + entrlen > buflen || a->assigned == 0)
+ if (datalen + entrlen
+ 4
> buflen || a->assigned == 0)
continue;
memcpy(buf + datalen, &p, sizeof(p));
#ifdef DHCPV6_OPT_PREFIX_CLASS
memcpy(buf + datalen + sizeof(p), &pclass, sizeof(pclass));
#endif
continue;
memcpy(buf + datalen, &p, sizeof(p));
#ifdef DHCPV6_OPT_PREFIX_CLASS
memcpy(buf + datalen + sizeof(p), &pclass, sizeof(pclass));
#endif
- datalen += entrlen;
+ datalen += entrlen
+ 4
;
} else {
struct dhcpv6_ia_addr n = {
.type = htons(DHCPV6_OPT_IA_ADDR),
} else {
struct dhcpv6_ia_addr n = {
.type = htons(DHCPV6_OPT_IA_ADDR),
@@
-626,7
+626,7
@@
static size_t append_reply(uint8_t *buf, size_t buflen, uint16_t status,
.valid = htonl(prefix_valid)
};
n.addr.s6_addr32[3] = htonl(a->assigned);
.valid = htonl(prefix_valid)
};
n.addr.s6_addr32[3] = htonl(a->assigned);
- size_t entrlen = sizeof(n);
+ size_t entrlen = sizeof(n)
- 4
;
#ifdef DHCPV6_OPT_PREFIX_CLASS
if (iface->ia_addr[i].has_class) {
#ifdef DHCPV6_OPT_PREFIX_CLASS
if (iface->ia_addr[i].has_class) {
@@
-635,14
+635,14
@@
static size_t append_reply(uint8_t *buf, size_t buflen, uint16_t status,
}
#endif
}
#endif
- if (datalen + entrlen > buflen || a->assigned == 0)
+ if (datalen + entrlen
+ 4
> buflen || a->assigned == 0)
continue;
memcpy(buf + datalen, &n, sizeof(n));
#ifdef DHCPV6_OPT_PREFIX_CLASS
memcpy(buf + datalen + sizeof(n), &pclass, sizeof(pclass));
#endif
continue;
memcpy(buf + datalen, &n, sizeof(n));
#ifdef DHCPV6_OPT_PREFIX_CLASS
memcpy(buf + datalen + sizeof(n), &pclass, sizeof(pclass));
#endif
- datalen += entrlen;
+ datalen += entrlen
+ 4
;
}
// Calculate T1 / T2 based on non-deprecated addresses
}
// Calculate T1 / T2 based on non-deprecated addresses