From: "Stephane A. Sezer" <[email protected]>
---
usr.sbin/rtadvd/config.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/usr.sbin/rtadvd/config.c b/usr.sbin/rtadvd/config.c
index 3c72a6d..1edea84 100644
--- a/usr.sbin/rtadvd/config.c
+++ b/usr.sbin/rtadvd/config.c
@@ -724,8 +724,12 @@ make_packet(struct rainfo *rainfo)
packlen += sizeof(struct nd_opt_dnssl);
+ /*
+ * Each domain in the packet is prefixed by a single byte
+ * containing its size.
+ */
TAILQ_FOREACH(dnsd, &dsl->dnssldoms, entry)
- domains_size += dnsd->length;
+ domains_size += 1 + dnsd->length;
domains_size = (domains_size + 7) & ~7;
@@ -850,7 +854,7 @@ make_packet(struct rainfo *rainfo)
size = 0;
TAILQ_FOREACH(dnsd, &dsl->dnssldoms, entry)
- size += dnsd->length;
+ size += 1 + dnsd->length;
/* align size on the next 8 byte boundary */
size = (size + 7) & ~7;
ndopt_dnssl->nd_opt_dnssl_len = 1 + size / 8;
--
Stephane A. Sezer