diff options
author | Thomas Haller <thaller@redhat.com> | 2015-05-05 01:25:19 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-05-06 12:33:28 +0200 |
commit | e211ddcbe7914a45c63ef9d6ad76fdbb080ccf08 (patch) | |
tree | 0db7d652f2909172aa98856f1f8ae52a9e0ad675 | |
parent | bd6bb16bd6c5c8c2ab83a1623ca4c56435d666d4 (diff) | |
download | NetworkManager-e211ddcbe7914a45c63ef9d6ad76fdbb080ccf08.tar.gz |
platform: print more fields in nm_platform_link_to_string()
-rw-r--r-- | src/platform/nm-platform.c | 91 |
1 files changed, 67 insertions, 24 deletions
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c index 9bc9684d82..961b368c86 100644 --- a/src/platform/nm-platform.c +++ b/src/platform/nm-platform.c @@ -2316,27 +2316,30 @@ nm_platform_link_to_string (const NMPlatformLink *link) { char master[20]; char parent[20]; - char str_flags[64]; - char *driver, *udi; char str_vlan[64]; - GString *str; + GString *str_flags; + char str_addrmode[30]; + gs_free char *str_addr = NULL; + gs_free char *str_inet6_token = NULL; if (!link) return "(unknown link)"; - str = g_string_new (NULL); + str_flags = g_string_new (NULL); if (!link->arp) - g_string_append (str, "NOARP,"); + g_string_append (str_flags, "NOARP,"); if (link->up) - g_string_append (str, "UP"); + g_string_append (str_flags, "UP"); else - g_string_append (str, "DOWN"); + g_string_append (str_flags, "DOWN"); if (link->connected) - g_string_append (str, ",LOWER_UP"); + g_string_append (str_flags, ",LOWER_UP"); if (link->flags) { - rtnl_link_flags2str (link->flags, str_flags, sizeof (str_flags)); - g_string_append_printf (str, ";%s", str_flags); + char str_flags_buf[64]; + + rtnl_link_flags2str (link->flags, str_flags_buf, sizeof (str_flags_buf)); + g_string_append_printf (str_flags, ";%s", str_flags_buf); } if (link->master) @@ -2354,24 +2357,64 @@ nm_platform_link_to_string (const NMPlatformLink *link) else str_vlan[0] = '\0'; - driver = link->driver ? g_strdup_printf (" driver '%s'", link->driver) : NULL; - udi = link->udi ? g_strdup_printf (" udi '%s'", link->udi) : NULL; - - g_snprintf (_nm_platform_to_string_buffer, sizeof (_nm_platform_to_string_buffer), "%d: %s%s <%s> mtu %d%s " + if (link->inet6_addr_gen_mode_inv) { + switch ((guint8) ~link->inet6_addr_gen_mode_inv) { + case 0: + g_snprintf (str_addrmode, sizeof (str_addrmode), " addrgenmode eui64"); + break; + case 1: + g_snprintf (str_addrmode, sizeof (str_addrmode), " addrgenmode none"); + break; + default: + g_snprintf (str_addrmode, sizeof (str_addrmode), " addrgenmode %d", (int) (guint8) (~link->inet6_addr_gen_mode_inv)); + break; + } + } else + str_addrmode[0] = '\0'; + + if (link->addr.len) + str_addr = nm_utils_hwaddr_ntoa (link->addr.data, MIN (link->addr.len, sizeof (link->addr.data))); + if (link->inet6_token.is_valid) + str_inet6_token = nm_utils_hwaddr_ntoa (&link->inet6_token.iid, sizeof (link->inet6_token.iid)); + + g_snprintf (_nm_platform_to_string_buffer, sizeof (_nm_platform_to_string_buffer), + "%d: " /* ifindex */ + "%s" /* name */ + "%s " /* parent */ + "<%s> " /* flags */ + "mtu %d" + "%s " /* master */ + "%s" /* vlan */ + "arp %u " /* arptype */ "%s" /* link->type */ "%s%s" /* kind */ - "%s" /* vlan */ - "%s%s", - link->ifindex, link->name, parent, str->str, + "%s" /* is-in-udev */ + "%s" /* addr-gen-mode */ + "%s%s" /* addr */ + "%s%s" /* inet6_token */ + "%s%s" /* driver */ + "%s%s", /* udi */ + link->ifindex, + link->name, + parent, + str_flags->str, link->mtu, master, - nm_link_type_to_string (link->type), - link->type != NM_LINK_TYPE_UNKNOWN && link->kind ? " kind " : "", - link->type != NM_LINK_TYPE_UNKNOWN && link->kind ? link->kind : "", str_vlan, - driver ? driver : "", udi ? udi : ""); - g_string_free (str, TRUE); - g_free (driver); - g_free (udi); + link->arptype, + nm_link_type_to_string (link->type), + link->kind ? (strcmp (nm_link_type_to_string (link->type), link->kind) ? "/" : "*") : "", + link->kind && strcmp (nm_link_type_to_string (link->type), link->kind) ? link->kind : "", + link->is_in_udev ? " +U" : " -U", + str_addrmode, + str_addr ? " addr " : "", + str_addr ? str_addr : "", + str_inet6_token ? " inet6token " : "", + str_inet6_token ? str_inet6_token : "", + link->driver ? " driver " : "", + link->driver ? link->driver : "", + link->udi ? " udi " : "", + link->udi ? link->udi : ""); + g_string_free (str_flags, TRUE); return _nm_platform_to_string_buffer; } |