diff options
author | Thomas Haller <thaller@redhat.com> | 2014-02-18 12:52:16 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2014-02-18 13:21:47 +0100 |
commit | a6767f215e0b7ab55949e4410d399f315a225578 (patch) | |
tree | 96a969d61cae367da222fd99792f278eb40e2c94 | |
parent | fae47c19169309bbce7d05e82a25c88635c0b307 (diff) | |
download | NetworkManager-a6767f215e0b7ab55949e4410d399f315a225578.tar.gz |
platform: refactor address_to_string() to return device as numeric if ifname is unknown
Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r-- | src/platform/nm-platform.c | 57 |
1 files changed, 33 insertions, 24 deletions
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c index 8485e74ebe..fcd4b192c5 100644 --- a/src/platform/nm-platform.c +++ b/src/platform/nm-platform.c @@ -1813,6 +1813,27 @@ source_to_string (NMPlatformSource source) return "unknown"; } +#define TO_STRING_DEV_BUF_SIZE (5+15+1) +static void +_to_string_dev (int ifindex, char *buf, size_t size) +{ + g_assert (buf && size >= TO_STRING_DEV_BUF_SIZE); + + if (ifindex){ + const char *name = ifindex > 0 ? nm_platform_link_get_name (ifindex) : NULL; + + strcpy (buf, " dev "); + buf += 5; + size -= 5; + + if (name) + g_strlcpy (buf, name, size); + else + g_snprintf (buf, size, "%d", ifindex); + } else + buf[0] = 0; +} + /** * nm_platform_ip4_address_to_string: * @route: pointer to NMPlatformIP4Address address structure @@ -1831,8 +1852,7 @@ nm_platform_ip4_address_to_string (const NMPlatformIP4Address *address) static char buffer[256]; char s_address[INET_ADDRSTRLEN]; char s_peer[INET_ADDRSTRLEN]; - const char *s_dev; - char *str_dev; + char str_dev[TO_STRING_DEV_BUF_SIZE]; char *str_peer = NULL; g_return_val_if_fail (address, "(unknown)"); @@ -1844,16 +1864,14 @@ nm_platform_ip4_address_to_string (const NMPlatformIP4Address *address) str_peer = g_strconcat (" ptp ", s_peer, NULL); } - s_dev = address->ifindex > 0 ? nm_platform_link_get_name (address->ifindex) : NULL; - str_dev = s_dev ? g_strconcat (" dev ", s_dev, NULL) : NULL; + _to_string_dev (address->ifindex, str_dev, sizeof (str_dev)); g_snprintf (buffer, sizeof (buffer), "%s/%d lft %u pref %u time %u%s%s src %s", s_address, address->plen, (guint)address->lifetime, (guint)address->preferred, (guint)address->timestamp, str_peer ? str_peer : "", - str_dev ? str_dev : "", + str_dev, source_to_string (address->source)); - g_free (str_dev); g_free (str_peer); return buffer; } @@ -1877,9 +1895,8 @@ nm_platform_ip6_address_to_string (const NMPlatformIP6Address *address) char s_flags[256]; char s_address[INET6_ADDRSTRLEN]; char s_peer[INET6_ADDRSTRLEN]; - const char *s_dev; char *str_flags; - char *str_dev; + char str_dev[TO_STRING_DEV_BUF_SIZE]; char *str_peer = NULL; g_return_val_if_fail (address, "(unknown)"); @@ -1891,8 +1908,7 @@ nm_platform_ip6_address_to_string (const NMPlatformIP6Address *address) str_peer = g_strconcat (" ptp ", s_peer, NULL); } - s_dev = address->ifindex > 0 ? nm_platform_link_get_name (address->ifindex) : NULL; - str_dev = s_dev ? g_strconcat (" dev ", s_dev, NULL) : NULL; + _to_string_dev (address->ifindex, str_dev, sizeof (str_dev)); rtnl_addr_flags2str(address->flags, s_flags, sizeof (s_flags)); @@ -1916,11 +1932,10 @@ nm_platform_ip6_address_to_string (const NMPlatformIP6Address *address) s_address, address->plen, (guint)address->lifetime, (guint)address->preferred, (guint)address->timestamp, str_peer ? str_peer : "", - str_dev ? str_dev : "", + str_dev, str_flags ? str_flags : "", source_to_string (address->source)); g_free (str_flags); - g_free (str_dev); g_free (str_peer); return buffer; } @@ -1942,23 +1957,20 @@ nm_platform_ip4_route_to_string (const NMPlatformIP4Route *route) { static char buffer[256]; char s_network[INET_ADDRSTRLEN], s_gateway[INET_ADDRSTRLEN]; - const char *s_dev; - char *str_dev; + char str_dev[TO_STRING_DEV_BUF_SIZE]; g_return_val_if_fail (route, "(unknown)"); inet_ntop (AF_INET, &route->network, s_network, sizeof(s_network)); inet_ntop (AF_INET, &route->gateway, s_gateway, sizeof(s_gateway)); - s_dev = route->ifindex > 0 ? nm_platform_link_get_name (route->ifindex) : NULL; - str_dev = s_dev ? g_strconcat (" dev ", s_dev, NULL) : NULL; + _to_string_dev (route->ifindex, str_dev, sizeof (str_dev)); g_snprintf (buffer, sizeof (buffer), "%s/%d via %s%s metric %u mss %u src %s", s_network, route->plen, s_gateway, - str_dev ? str_dev : "", + str_dev, route->metric, route->mss, source_to_string (route->source)); - g_free (str_dev); return buffer; } @@ -1979,23 +1991,20 @@ nm_platform_ip6_route_to_string (const NMPlatformIP6Route *route) { static char buffer[256]; char s_network[INET6_ADDRSTRLEN], s_gateway[INET6_ADDRSTRLEN]; - const char *s_dev; - char *str_dev; + char str_dev[TO_STRING_DEV_BUF_SIZE]; g_return_val_if_fail (route, "(unknown)"); inet_ntop (AF_INET6, &route->network, s_network, sizeof(s_network)); inet_ntop (AF_INET6, &route->gateway, s_gateway, sizeof(s_gateway)); - s_dev = route->ifindex > 0 ? nm_platform_link_get_name (route->ifindex) : NULL; - str_dev = s_dev ? g_strconcat (" dev ", s_dev, NULL) : NULL; + _to_string_dev (route->ifindex, str_dev, sizeof (str_dev)); g_snprintf (buffer, sizeof (buffer), "%s/%d via %s%s metric %u mss %u src %s", s_network, route->plen, s_gateway, - str_dev ? str_dev : "", + str_dev, route->metric, route->mss, source_to_string (route->source)); - g_free (str_dev); return buffer; } |