diff options
author | Thomas Haller <thaller@redhat.com> | 2018-02-02 09:58:38 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2018-02-07 13:37:12 +0100 |
commit | b680cdd06325a15ef3ca38caedcd53dd1525a5cd (patch) | |
tree | dd8e4e031ca44433f64a0b283ede8d7f426fe51d /src/ndisc | |
parent | 28da0154fcf005a8391a540f2c5a5055ca1da33f (diff) | |
download | NetworkManager-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.c | 38 |
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)); } } |