diff options
author | Steven Barth <steven@midlink.org> | 2015-09-01 15:29:31 +0200 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2015-09-01 15:29:31 +0200 |
commit | b8f53276092dc48409006fec3c1e90383820cbc5 (patch) | |
tree | ce85383c34fafc3d154bd660a573911bdb4d5a74 | |
parent | 5b12eeba475a3301c362cf59f138ec7aa60d2dd9 (diff) |
Fixup RAs/DHCPv6 announcing incorrect addresses
-rw-r--r-- | src/dhcpv6-ia.c | 2 | ||||
-rw-r--r-- | src/router.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/dhcpv6-ia.c b/src/dhcpv6-ia.c index a4598df..d301b4f 100644 --- a/src/dhcpv6-ia.c +++ b/src/dhcpv6-ia.c @@ -739,7 +739,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 && - addrs[i].prefix == 64) + addrs[i].prefix <= 64) continue; if (datalen + entrlen + 4 > buflen || a->assigned == 0) diff --git a/src/router.c b/src/router.c index 853b9e8..9c9b55a 100644 --- a/src/router.c +++ b/src/router.c @@ -244,15 +244,15 @@ static uint64_t send_router_advert(struct interface *iface, const struct in6_add odhcpd_get_mac(iface, adv.lladdr.data); // If not currently shutting down - struct odhcpd_ipaddr *addrs = NULL; + struct odhcpd_ipaddr addrs[8]; ssize_t ipcnt = 0; int64_t minvalid = INT64_MAX; int64_t maxvalid = 0; // If not shutdown if (iface->timer_rs.cb) { - addrs = iface->ia_addr; ipcnt = iface->ia_addr_len; + memcpy(addrs, iface->ia_addr, ipcnt * sizeof(*addrs)); // Check default route if (parse_routes(addrs, ipcnt)) |