for (ssize_t i = 0; !change && i < len; ++i) {
if (!IN6_ARE_ADDR_EQUAL(&addr[i].addr.in6, &iface->addr6[i].addr.in6) ||
addr[i].prefix != iface->addr6[i].prefix ||
- (addr[i].preferred > (uint32_t)now) != (iface->addr6[i].preferred > (uint32_t)now) ||
- addr[i].valid < iface->addr6[i].valid || addr[i].preferred < iface->addr6[i].preferred)
+ (addr[i].preferred_lt > (uint32_t)now) != (iface->addr6[i].preferred_lt > (uint32_t)now) ||
+ addr[i].valid < iface->addr6[i].valid || addr[i].preferred_lt < iface->addr6[i].preferred_lt)
change = true;
}
iface->invalid_addr6 = new_invalid_addr6;
iface->invalid_addr6_len++;
memcpy(&iface->invalid_addr6[pos], &iface->addr6[i], sizeof(*iface->invalid_addr6));
- iface->invalid_addr6[pos].valid = iface->invalid_addr6[pos].preferred = (uint32_t)now;
+ iface->invalid_addr6[pos].valid = iface->invalid_addr6[pos].preferred_lt = (uint32_t)now;
if (iface->invalid_addr6[pos].prefix < 64)
iface->invalid_addr6[pos].prefix = 64;
if (nla[IFA_CACHEINFO]) {
struct ifa_cacheinfo *ifc = nla_data(nla[IFA_CACHEINFO]);
- addrs[ctxt->ret].preferred = ifc->ifa_prefered;
+ addrs[ctxt->ret].preferred_lt = ifc->ifa_prefered;
addrs[ctxt->ret].valid = ifc->ifa_valid;
}
if (ifa->ifa_flags & IFA_F_DEPRECATED)
- addrs[ctxt->ret].preferred = 0;
+ addrs[ctxt->ret].preferred_lt = 0;
if (ifa->ifa_family == AF_INET6 &&
ifa->ifa_flags & IFA_F_TENTATIVE)
static int prefix6_cmp(const void *va, const void *vb)
{
const struct odhcpd_ipaddr *a = va, *b = vb;
- uint32_t a_pref = IN6_IS_ADDR_ULA(&a->addr.in6) ? 1 : a->preferred;
- uint32_t b_pref = IN6_IS_ADDR_ULA(&b->addr.in6) ? 1 : b->preferred;
- return (a_pref < b_pref) ? 1 : (a_pref > b_pref) ? -1 : 0;
+ uint32_t a_pref_lt = IN6_IS_ADDR_ULA(&a->addr.in6) ? 1 : a->preferred_lt;
+ uint32_t b_pref_lt = IN6_IS_ADDR_ULA(&b->addr.in6) ? 1 : b->preferred_lt;
+ return (a_pref_lt < b_pref_lt) ? 1 : (a_pref_lt > b_pref_lt) ? -1 : 0;
}
qsort(addr, ctxt.ret, sizeof(*addr), v6 ? prefix6_cmp : prefix_cmp);
for (ssize_t i = 0; i < ctxt.ret; ++i) {
- if (addr[i].preferred < UINT32_MAX - now)
- addr[i].preferred += now;
+ if (addr[i].preferred_lt < UINT32_MAX - now)
+ addr[i].preferred_lt += now;
if (addr[i].valid < UINT32_MAX - now)
addr[i].valid += now;
.tstamp = 0 };
time_t now = odhcpd_time();
- if (addr->preferred) {
- int64_t preferred = addr->preferred - now;
- if (preferred < 0)
- preferred = 0;
- else if (preferred > UINT32_MAX)
- preferred = UINT32_MAX;
+ if (addr->preferred_lt) {
+ int64_t preferred_lt = addr->preferred_lt - now;
+ if (preferred_lt < 0)
+ preferred_lt = 0;
+ else if (preferred_lt > UINT32_MAX)
+ preferred_lt = UINT32_MAX;
- cinfo.ifa_prefered = preferred;
+ cinfo.ifa_prefered = preferred_lt;
}
if (addr->valid) {