X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fodhcpd.git;a=blobdiff_plain;f=src%2Fdhcpv6-ia.c;h=d103ecb422adfc3e398d9f36d703666fb1f39d7d;hp=6ece528bd6e71fd6e1ca3a946d2371508f3ccdae;hb=0a9d2fcf8e955b7e7a3247ef354a2d4e12a17f62;hpb=a5ebe69d1bc387937bc5448534751123833585fd diff --git a/src/dhcpv6-ia.c b/src/dhcpv6-ia.c index 6ece528..d103ecb 100644 --- a/src/dhcpv6-ia.c +++ b/src/dhcpv6-ia.c @@ -800,9 +800,6 @@ static size_t append_reply(uint8_t *buf, size_t buflen, uint16_t status, #endif datalen += entrlen + 4; } else { - if (!a->accept_reconf && iface->managed < RELAYD_MANAGED_NO_AFLAG) - prefix_pref = 1; - struct dhcpv6_ia_addr n = { .type = htons(DHCPV6_OPT_IA_ADDR), .len = htons(sizeof(n) - 4), @@ -813,6 +810,10 @@ static size_t append_reply(uint8_t *buf, size_t buflen, uint16_t status, n.addr.s6_addr32[3] = htonl(a->assigned); size_t entrlen = sizeof(n) - 4; + if (!a->accept_reconf && iface->managed < RELAYD_MANAGED_NO_AFLAG && + addrs[i].prefix == 64) + n.preferred = htonl(1); + #ifdef DHCPV6_OPT_PREFIX_CLASS if (iface->ia_addr[i].has_class) { entrlen += sizeof(pclass);