Hi, This makes icmp6 ready for 64 bit time_t by adding a range check and an explicit cast.
ok? bluhm Index: netinet6/icmp6.c =================================================================== RCS file: /data/mirror/openbsd/cvs/src/sys/netinet6/icmp6.c,v retrieving revision 1.123 diff -u -p -r1.123 icmp6.c --- netinet6/icmp6.c 28 Mar 2013 16:45:16 -0000 1.123 +++ netinet6/icmp6.c 3 Apr 2013 22:13:36 -0000 @@ -1819,11 +1819,15 @@ ni6_store_addrs(struct icmp6_nodeinfo *n if (ifa6->ia6_lifetime.ia6t_expire == 0) ltime = ND6_INFINITE_LIFETIME; else { - if (ifa6->ia6_lifetime.ia6t_expire > - time_second) - ltime = htonl(ifa6->ia6_lifetime.ia6t_expire - time_second); - else + time_t diff = ifa6->ia6_lifetime.ia6t_expire - + time_second; + + if (diff <= 0) ltime = 0; + else if (diff >= ND6_INFINITE_LIFETIME) + ltime = ND6_INFINITE_LIFETIME; + else + ltime = htonl((u_int32_t)diff); } bcopy(<ime, cp, sizeof(u_int32_t));