+ if (maxival < 4000 || maxival > MaxRtrAdvInterval * 1000)
+ maxival = MaxRtrAdvInterval * 1000;
+
+ if (maxival > minvalid / 3) {
+ maxival = minvalid / 3;
+
+ if (maxival < 4000)
+ maxival = 4000;
+ }
+
+ minival = (maxival * 3) / 4;
+
+ search->lifetime = htonl(maxival / 100);
+ dns.lifetime = search->lifetime;
+
+ odhcpd_urandom(&msecs, sizeof(msecs));
+ msecs = (labs(msecs) % (maxival - minival)) + minival;
+
+ struct icmpv6_opt adv_interval = {
+ .type = ND_OPT_RTR_ADV_INTERVAL,
+ .len = 1,
+ .data = {0, 0, maxival >> 24, maxival >> 16, maxival >> 8, maxival}
+ };
+
+ struct iovec iov[RA_IOV_LEN] = {
+ {&adv, (uint8_t*)&adv.prefix[cnt] - (uint8_t*)&adv},