From: "Stephane A. Sezer" <[email protected]>
---
usr.sbin/rtadvd/config.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/usr.sbin/rtadvd/config.c b/usr.sbin/rtadvd/config.c
index 2c003a3..6e3f185 100644
--- a/usr.sbin/rtadvd/config.c
+++ b/usr.sbin/rtadvd/config.c
@@ -785,8 +785,6 @@ make_packet(struct rainfo *rainfo)
buf += sizeof(struct nd_opt_mtu);
}
-
-
TAILQ_FOREACH(pfx, &rainfo->prefixes, entry) {
u_int32_t vltime, pltime;
struct timeval now;
@@ -832,6 +830,10 @@ make_packet(struct rainfo *rainfo)
TAILQ_FOREACH(rds, &rainfo->rdnsss, entry) {
ndopt_rdnss = (struct nd_opt_rdnss *)buf;
ndopt_rdnss->nd_opt_rdnss_type = ND_OPT_RDNSS;
+ /*
+ * An IPv6 address is 16 bytes, so multiply the number of
+ * addresses by two to get a size in units of 8 bytes.
+ */
ndopt_rdnss->nd_opt_rdnss_len = 1 + rds->servercnt * 2;
ndopt_rdnss->nd_opt_rdnss_reserved = 0;
ndopt_rdnss->nd_opt_rdnss_lifetime = htonl(rds->lifetime);
@@ -844,8 +846,6 @@ make_packet(struct rainfo *rainfo)
TAILQ_FOREACH(dsl, &rainfo->dnssls, entry) {
u_int32_t size;
- char *curlabel_begin;
- char *curlabel_end;
ndopt_dnssl = (struct nd_opt_dnssl *)buf;
ndopt_dnssl->nd_opt_dnssl_type = ND_OPT_DNSSL;
@@ -855,20 +855,21 @@ make_packet(struct rainfo *rainfo)
size = 0;
TAILQ_FOREACH(dnsd, &dsl->dnssldoms, entry)
size += 1 + dnsd->length;
- /* align size on the next 8 byte boundary */
+ /* Align size on the next 8 byte boundary. */
size = (size + 7) & ~7;
ndopt_dnssl->nd_opt_dnssl_len = 1 + size / 8;
buf += sizeof(struct nd_opt_dnssl);
TAILQ_FOREACH(dnsd, &dsl->dnssldoms, entry) {
+ char *curlabel_begin;
+ char *curlabel_end;
+ size_t curlabel_size;
+
curlabel_begin = dnsd->domain;
- while ((curlabel_end = strchr(curlabel_begin, '.')) &&
- (curlabel_end - curlabel_begin) > 0)
+ while ((curlabel_end = strchr(curlabel_begin, '.')) !=
NULL &&
+ (curlabel_size = curlabel_end - curlabel_begin) > 0)
{
- size_t curlabel_size;
-
- curlabel_size = curlabel_end - curlabel_begin;
*buf = curlabel_size;
++buf;
strncpy(buf, curlabel_begin, curlabel_size);
--
Stephane A. Sezer