- p->nd_opt_pi_valid_time = htonl(addr->valid);
- p->nd_opt_pi_preferred_time = htonl(addr->preferred);
+ p->nd_opt_pi_valid_time = htonl(TIME_LEFT(addr->valid, now));
+ if (addr->preferred > (uint32_t)now)
+ p->nd_opt_pi_preferred_time = htonl(TIME_LEFT(addr->preferred, now));
+ else if (addr->valid - now < 7200)
+ p->nd_opt_pi_valid_time = 0;
+