mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-25 03:40:07 +01:00
ndisc: adjust logging of timeouts for NDisc result
Previously, we would directly log get_expiry(), which is the absolute timestamp inn nm_utils_get_monotonic_timestamp_s() scale. This time scale starts counting somewhere around the time when the NetworkManager process starts, hence it is not very intuitive to look at. Instead, print the remaining time that is left counting from now. Since we anyway only track timeouts with a granularity of whole seconds, printing up to 4 decimal places is sufficiently precise.
This commit is contained in:
parent
28da0154fc
commit
b680cdd063
1 changed files with 31 additions and 7 deletions
|
|
@ -887,6 +887,23 @@ get_expiry_time (guint32 timestamp, guint32 lifetime)
|
|||
: (_item->lifetime) / 2); \
|
||||
})
|
||||
|
||||
static const char *
|
||||
_get_exp (char *buf, gsize buf_size, gint64 now_ns, gint32 expiry_time)
|
||||
{
|
||||
int l;
|
||||
|
||||
if (expiry_time == G_MAXINT32)
|
||||
return "permanent";
|
||||
l = g_snprintf (buf, buf_size,
|
||||
"%.4f",
|
||||
((double) ((expiry_time * NM_UTILS_NS_PER_SECOND) - now_ns)) / ((double) NM_UTILS_NS_PER_SECOND));
|
||||
nm_assert (l < buf_size);
|
||||
return buf;
|
||||
}
|
||||
|
||||
#define get_exp(buf, now_ns, item) \
|
||||
_get_exp ((buf), G_N_ELEMENTS (buf), (now_ns), (get_expiry (item)))
|
||||
|
||||
static void
|
||||
_config_changed_log (NMNDisc *ndisc, NMNDiscConfigMap changed)
|
||||
{
|
||||
|
|
@ -896,10 +913,14 @@ _config_changed_log (NMNDisc *ndisc, NMNDiscConfigMap changed)
|
|||
char changedstr[CONFIG_MAP_MAX_STR];
|
||||
char addrstr[INET6_ADDRSTRLEN];
|
||||
char str_pref[35];
|
||||
char str_exp[100];
|
||||
gint64 now_ns;
|
||||
|
||||
if (!_LOGD_ENABLED ())
|
||||
return;
|
||||
|
||||
now_ns = nm_utils_get_monotonic_timestamp_ns ();
|
||||
|
||||
priv = NM_NDISC_GET_PRIVATE (ndisc);
|
||||
rdata = &priv->rdata;
|
||||
|
||||
|
|
@ -910,35 +931,38 @@ _config_changed_log (NMNDisc *ndisc, NMNDiscConfigMap changed)
|
|||
NMNDiscGateway *gateway = &g_array_index (rdata->gateways, NMNDiscGateway, i);
|
||||
|
||||
inet_ntop (AF_INET6, &gateway->address, addrstr, sizeof (addrstr));
|
||||
_LOGD (" gateway %s pref %s exp %d", addrstr,
|
||||
_LOGD (" gateway %s pref %s exp %s", addrstr,
|
||||
nm_icmpv6_router_pref_to_string (gateway->preference, str_pref, sizeof (str_pref)),
|
||||
get_expiry (gateway));
|
||||
get_exp (str_exp, now_ns, gateway));
|
||||
}
|
||||
for (i = 0; i < rdata->addresses->len; i++) {
|
||||
NMNDiscAddress *address = &g_array_index (rdata->addresses, NMNDiscAddress, i);
|
||||
|
||||
inet_ntop (AF_INET6, &address->address, addrstr, sizeof (addrstr));
|
||||
_LOGD (" address %s exp %d", addrstr, get_expiry (address));
|
||||
_LOGD (" address %s exp %s", addrstr,
|
||||
get_exp (str_exp, now_ns, address));
|
||||
}
|
||||
for (i = 0; i < rdata->routes->len; i++) {
|
||||
NMNDiscRoute *route = &g_array_index (rdata->routes, NMNDiscRoute, i);
|
||||
|
||||
inet_ntop (AF_INET6, &route->network, addrstr, sizeof (addrstr));
|
||||
_LOGD (" route %s/%u via %s pref %s exp %d", addrstr, (guint) route->plen,
|
||||
_LOGD (" route %s/%u via %s pref %s exp %s", addrstr, (guint) route->plen,
|
||||
nm_utils_inet6_ntop (&route->gateway, NULL),
|
||||
nm_icmpv6_router_pref_to_string (route->preference, str_pref, sizeof (str_pref)),
|
||||
get_expiry (route));
|
||||
get_exp (str_exp, now_ns, route));
|
||||
}
|
||||
for (i = 0; i < rdata->dns_servers->len; i++) {
|
||||
NMNDiscDNSServer *dns_server = &g_array_index (rdata->dns_servers, NMNDiscDNSServer, i);
|
||||
|
||||
inet_ntop (AF_INET6, &dns_server->address, addrstr, sizeof (addrstr));
|
||||
_LOGD (" dns_server %s exp %d", addrstr, get_expiry (dns_server));
|
||||
_LOGD (" dns_server %s exp %s", addrstr,
|
||||
get_exp (str_exp, now_ns, dns_server));
|
||||
}
|
||||
for (i = 0; i < rdata->dns_domains->len; i++) {
|
||||
NMNDiscDNSDomain *dns_domain = &g_array_index (rdata->dns_domains, NMNDiscDNSDomain, i);
|
||||
|
||||
_LOGD (" dns_domain %s exp %d", dns_domain->domain, get_expiry (dns_domain));
|
||||
_LOGD (" dns_domain %s exp %s", dns_domain->domain,
|
||||
get_exp (str_exp, now_ns, dns_domain));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue