a->broadcast.s_addr = a->in_addr.in.s_addr | htobe32(UINT32_C(0xffffffff) >> a->prefixlen);
}
-static struct ifa_cacheinfo *address_set_cinfo(const Address *a, struct ifa_cacheinfo *cinfo) {
+static struct ifa_cacheinfo *address_set_cinfo(Manager *m, const Address *a, struct ifa_cacheinfo *cinfo) {
usec_t now_usec;
+ assert(m);
assert(a);
assert(cinfo);
- now_usec = now(CLOCK_BOOTTIME);
+ assert_se(sd_event_now(m->event, CLOCK_BOOTTIME, &now_usec) >= 0);
*cinfo = (struct ifa_cacheinfo) {
.ifa_valid = MIN(usec_sub_unsigned(a->lifetime_valid_usec, now_usec) / USEC_PER_SEC, UINT32_MAX),
return cinfo;
}
-static void address_set_lifetime(Address *a, const struct ifa_cacheinfo *cinfo) {
+static void address_set_lifetime(Manager *m, Address *a, const struct ifa_cacheinfo *cinfo) {
usec_t now_usec;
+ assert(m);
assert(a);
assert(cinfo);
- now_usec = now(CLOCK_BOOTTIME);
+ assert_se(sd_event_now(m->event, CLOCK_BOOTTIME, &now_usec) >= 0);
if (cinfo->ifa_valid == UINT32_MAX)
a->lifetime_valid_usec = USEC_INFINITY;
}
r = sd_netlink_message_append_cache_info(m, IFA_CACHEINFO,
- address_set_cinfo(address, &(struct ifa_cacheinfo) {}));
+ address_set_cinfo(link->manager, address, &(struct ifa_cacheinfo) {}));
if (r < 0)
return r;
/* update flags and etc. */
address->flags = tmp->flags;
address->scope = tmp->scope;
- address_set_lifetime(address, &cinfo);
+ address_set_lifetime(m, address, &cinfo);
address_enter_configured(address);
log_address_debug(address, "Received updated", link);
} else {
- address_set_lifetime(tmp, &cinfo);
+ address_set_lifetime(m, tmp, &cinfo);
address_enter_configured(tmp);
log_address_debug(tmp, "Received new", link);
r = address_add(link, tmp);
if (r < 0) {
log_link_warning_errno(link, r, "Failed to remember foreign address %s, ignoring: %m",
- IN_ADDR_PREFIX_TO_STRING(tmp->family, &tmp->in_addr, tmp->prefixlen));
+ IN_ADDR_PREFIX_TO_STRING(tmp->family, &tmp->in_addr, tmp->prefixlen));
return 0;
}
const struct in_addr *br_addresses;
struct in_addr ipv4address;
uint32_t lifetime_sec;
- usec_t lifetime_usec;
+ usec_t lifetime_usec, now_usec;
int r;
assert(link);
assert(uplink);
+ assert(uplink->manager);
assert(uplink->dhcp_lease);
r = sd_dhcp_lease_get_address(uplink->dhcp_lease, &ipv4address);
if (r < 0)
return log_link_warning_errno(uplink, r, "Failed to get lifetime of DHCPv4 lease: %m");
- lifetime_usec = usec_add(lifetime_sec * USEC_PER_SEC, now(CLOCK_BOOTTIME));
+ assert_se(sd_event_now(uplink->manager->event, CLOCK_BOOTTIME, &now_usec) >= 0);
+ lifetime_usec = usec_add(lifetime_sec * USEC_PER_SEC, now_usec);
r = sd_dhcp_lease_get_6rd(uplink->dhcp_lease, &ipv4masklen, &sixrd_prefixlen, &sixrd_prefix, &br_addresses, NULL);
if (r < 0)
union in_addr_union server_address;
const struct in_addr *br_addresses;
uint32_t lifetime_sec;
- usec_t lifetime_usec;
+ usec_t lifetime_usec, now_usec;
Link *link;
int r;
assert(uplink);
+ assert(uplink->manager);
assert(uplink->dhcp_lease);
r = sd_dhcp_lease_get_address(uplink->dhcp_lease, &ipv4address);
if (r < 0)
return log_link_warning_errno(uplink, r, "Failed to get lifetime of DHCPv4 lease: %m");
- lifetime_usec = usec_add(lifetime_sec * USEC_PER_SEC, now(CLOCK_BOOTTIME));
+ assert_se(sd_event_now(uplink->manager->event, CLOCK_BOOTTIME, &now_usec) >= 0);
+ lifetime_usec = usec_add(lifetime_sec * USEC_PER_SEC, now_usec);
r = sd_dhcp_lease_get_server_identifier(uplink->dhcp_lease, &server_address.in);
if (r < 0)
int r;
assert(link);
+ assert(link->manager);
assert(link->network);
assert(link->dhcp_lease);
if (!FLAGS_SET(link->network->keep_configuration, KEEP_CONFIGURATION_DHCP)) {
uint32_t lifetime_sec;
+ usec_t now_usec;
r = sd_dhcp_lease_get_lifetime(link->dhcp_lease, &lifetime_sec);
if (r < 0)
return log_link_warning_errno(link, r, "DHCP error: no lifetime: %m");
- lifetime_usec = usec_add(lifetime_sec * USEC_PER_SEC, now(CLOCK_BOOTTIME));
+ assert_se(sd_event_now(link->manager->event, CLOCK_BOOTTIME, &now_usec) >= 0);
+ lifetime_usec = usec_add(lifetime_sec * USEC_PER_SEC, now_usec);
} else
lifetime_usec = USEC_INFINITY;
void ndisc_vacuum(Link *link) {
NDiscRDNSS *r;
NDiscDNSSL *d;
- usec_t time_now;
+ usec_t now_usec;
assert(link);
+ assert(link->manager);
/* Removes all RDNSS and DNSSL entries whose validity time has passed */
- time_now = now(CLOCK_BOOTTIME);
+ assert_se(sd_event_now(link->manager->event, CLOCK_BOOTTIME, &now_usec) >= 0);
SET_FOREACH(r, link->ndisc_rdnss)
- if (r->lifetime_usec < time_now)
+ if (r->lifetime_usec < now_usec)
free(set_remove(link->ndisc_rdnss, r));
SET_FOREACH(d, link->ndisc_dnssl)
- if (d->lifetime_usec < time_now)
+ if (d->lifetime_usec < now_usec)
free(set_remove(link->ndisc_dnssl, d));
}
return r;
if (route->lifetime_usec != USEC_INFINITY) {
+ usec_t now_usec;
+
+ assert_se(sd_event_now(link->manager->event, CLOCK_BOOTTIME, &now_usec) >= 0);
r = sd_netlink_message_append_u32(m, RTA_EXPIRES,
- MIN(DIV_ROUND_UP(usec_sub_unsigned(route->lifetime_usec, now(CLOCK_BOOTTIME)), USEC_PER_SEC), UINT32_MAX));
+ MIN(DIV_ROUND_UP(usec_sub_unsigned(route->lifetime_usec, now_usec), USEC_PER_SEC), UINT32_MAX));
if (r < 0)
return r;
}