summaryrefslogtreecommitdiff
path: root/src/ndisc
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-02-02 09:58:38 +0100
committerThomas Haller <thaller@redhat.com>2018-02-07 13:37:12 +0100
commitb680cdd06325a15ef3ca38caedcd53dd1525a5cd (patch)
treedd8e4e031ca44433f64a0b283ede8d7f426fe51d /src/ndisc
parent28da0154fcf005a8391a540f2c5a5055ca1da33f (diff)
downloadNetworkManager-b680cdd06325a15ef3ca38caedcd53dd1525a5cd.tar.gz
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.
Diffstat (limited to 'src/ndisc')
-rw-r--r--src/ndisc/nm-ndisc.c38
1 files changed, 31 insertions, 7 deletions
diff --git a/src/ndisc/nm-ndisc.c b/src/ndisc/nm-ndisc.c
index 6b44a96cfe..3d3dc523ef 100644
--- a/src/ndisc/nm-ndisc.c
+++ b/src/ndisc/nm-ndisc.c
@@ -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));
}
}