[NetworkManager/f20] improve platform to string functions
thaller
thaller at fedoraproject.org
Mon Feb 24 17:37:13 UTC 2014
commit fa6659072a0f2ea4558e78008f2efba5bd901d13
Author: Thomas Haller <thaller at redhat.com>
Date: Tue Feb 18 13:34:13 2014 +0100
improve platform to string functions
0048-platform-to-string.patch | 384 +++++++++++++++++++++++++++++++++++++++++
NetworkManager.spec | 3 +
2 files changed, 387 insertions(+), 0 deletions(-)
---
diff --git a/0048-platform-to-string.patch b/0048-platform-to-string.patch
new file mode 100644
index 0000000..685ea35
--- /dev/null
+++ b/0048-platform-to-string.patch
@@ -0,0 +1,384 @@
+From 21a9b646ed49d1269c65a7ffca946c9340972bab Mon Sep 17 00:00:00 2001
+From: Thomas Haller <thaller at redhat.com>
+Date: Mon, 21 Oct 2013 14:36:59 +0200
+Subject: [PATCH 1/3] core: omit "dev -" for *_to_string of NMPlatformIP*
+ addresses and routes
+
+The NMPlatformIP[46]Address and NMPlatformIP[46]Route structs have a
+field 'dev'. Before this field was always printed in the *_to_string
+functions and a missing device was signaled as ' dev -'.
+This had the advantage, that the output contained the same fields
+regardless whether there was a device set or not.
+
+Change it, not to print the device if it is not set. This has the
+advantage, that it looks better in the logfiles.
+
+(cherry picked from commit 69d154012d5f144c97d07f965bad35e1d9306900)
+
+Signed-off-by: Thomas Haller <thaller at redhat.com>
+---
+ src/platform/nm-platform.c | 36 ++++++++++++++++++++++++++++--------
+ 1 file changed, 28 insertions(+), 8 deletions(-)
+
+diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
+index 0b56464..da6c72d 100644
+--- a/src/platform/nm-platform.c
++++ b/src/platform/nm-platform.c
+@@ -1714,15 +1714,20 @@ nm_platform_ip4_address_to_string (const NMPlatformIP4Address *address)
+ static char buffer[256];
+ char s_address[INET_ADDRSTRLEN];
+ const char *s_dev;
++ char *str_dev;
+
+ g_return_val_if_fail (address, "(unknown)");
+
+ inet_ntop (AF_INET, &address->address, s_address, sizeof (s_address));
++
+ s_dev = address->ifindex > 0 ? nm_platform_link_get_name (address->ifindex) : NULL;
++ str_dev = s_dev ? g_strconcat (" dev ", s_dev, NULL) : NULL;
+
+- g_snprintf (buffer, sizeof (buffer), "%s/%d lft %u pref %u time %u dev %s",
++ g_snprintf (buffer, sizeof (buffer), "%s/%d lft %u pref %u time %u%s",
+ s_address, address->plen, (guint)address->lifetime, (guint)address->preferred,
+- (guint)address->timestamp, s_dev ? s_dev : "-");
++ (guint)address->timestamp,
++ str_dev ? str_dev : "");
++ g_free (str_dev);
+ return buffer;
+ }
+
+@@ -1746,11 +1751,14 @@ nm_platform_ip6_address_to_string (const NMPlatformIP6Address *address)
+ char s_address[INET6_ADDRSTRLEN];
+ const char *s_dev;
+ char *str_flags;
++ char *str_dev;
+
+ g_return_val_if_fail (address, "(unknown)");
+
+ inet_ntop (AF_INET6, &address->address, s_address, sizeof (s_address));
++
+ s_dev = address->ifindex > 0 ? nm_platform_link_get_name (address->ifindex) : NULL;
++ str_dev = s_dev ? g_strconcat (" dev ", s_dev, NULL) : NULL;
+
+ rtnl_addr_flags2str(address->flags, s_flags, sizeof (s_flags));
+
+@@ -1770,11 +1778,13 @@ nm_platform_ip6_address_to_string (const NMPlatformIP6Address *address)
+
+ str_flags = s_flags[0] ? g_strconcat (" flags ", s_flags, NULL) : NULL;
+
+- g_snprintf (buffer, sizeof (buffer), "%s/%d lft %u pref %u time %u dev %s%s",
++ g_snprintf (buffer, sizeof (buffer), "%s/%d lft %u pref %u time %u%s%s",
+ s_address, address->plen, (guint)address->lifetime, (guint)address->preferred,
+- (guint)address->timestamp, s_dev ? s_dev : "-",
++ (guint)address->timestamp,
++ str_dev ? str_dev : "",
+ str_flags ? str_flags : "");
+ g_free (str_flags);
++ g_free (str_dev);
+ return buffer;
+ }
+
+@@ -1796,16 +1806,21 @@ 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;
+
+ 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;
+
+- g_snprintf (buffer, sizeof (buffer), "%s/%d via %s dev %s metric %u mss %u",
+- s_network, route->plen, s_gateway, s_dev ? s_dev : "-",
++ g_snprintf (buffer, sizeof (buffer), "%s/%d via %s%s metric %u mss %u",
++ s_network, route->plen, s_gateway,
++ str_dev ? str_dev : "",
+ route->metric, route->mss);
++ g_free (str_dev);
+ return buffer;
+ }
+
+@@ -1827,16 +1842,21 @@ 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;
+
+ 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;
+
+- g_snprintf (buffer, sizeof (buffer), "%s/%d via %s dev %s metric %u mss %u",
+- s_network, route->plen, s_gateway, s_dev ? s_dev : "-",
++ g_snprintf (buffer, sizeof (buffer), "%s/%d via %s%s metric %u mss %u",
++ s_network, route->plen, s_gateway,
++ str_dev ? str_dev : "",
+ route->metric, route->mss);
++ g_free (str_dev);
+ return buffer;
+ }
+
+--
+1.8.5.3
+
+
+From 442d7195c74e415f15fa0264eca6e7bcf7f278e6 Mon Sep 17 00:00:00 2001
+From: Thomas Haller <thaller at redhat.com>
+Date: Mon, 2 Dec 2013 21:12:05 +0100
+Subject: [PATCH 2/3] core: print peer_address in NMPlatform address_to_string
+
+(cherry picked from commit 1b0f832c7f7c02d29b9421005c78d52ad6a47905)
+
+Signed-off-by: Thomas Haller <thaller at redhat.com>
+---
+ src/platform/nm-platform.c | 22 ++++++++++++++++++++--
+ 1 file changed, 20 insertions(+), 2 deletions(-)
+
+diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
+index da6c72d..677c23a 100644
+--- a/src/platform/nm-platform.c
++++ b/src/platform/nm-platform.c
+@@ -1713,21 +1713,30 @@ 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_peer = NULL;
+
+ g_return_val_if_fail (address, "(unknown)");
+
+ inet_ntop (AF_INET, &address->address, s_address, sizeof (s_address));
+
++ if (address->peer_address) {
++ inet_ntop (AF_INET, &address->peer_address, s_peer, sizeof (s_peer));
++ 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;
+
+- g_snprintf (buffer, sizeof (buffer), "%s/%d lft %u pref %u time %u%s",
++ g_snprintf (buffer, sizeof (buffer), "%s/%d lft %u pref %u time %u%s%s",
+ s_address, address->plen, (guint)address->lifetime, (guint)address->preferred,
+ (guint)address->timestamp,
++ str_peer ? str_peer : "",
+ str_dev ? str_dev : "");
+ g_free (str_dev);
++ g_free (str_peer);
+ return buffer;
+ }
+
+@@ -1749,14 +1758,21 @@ nm_platform_ip6_address_to_string (const NMPlatformIP6Address *address)
+ static char buffer[256];
+ 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_peer = NULL;
+
+ g_return_val_if_fail (address, "(unknown)");
+
+ inet_ntop (AF_INET6, &address->address, s_address, sizeof (s_address));
+
++ if (!IN6_IS_ADDR_UNSPECIFIED (&address->peer_address)) {
++ inet_ntop (AF_INET6, &address->peer_address, s_peer, sizeof (s_peer));
++ 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;
+
+@@ -1778,13 +1794,15 @@ nm_platform_ip6_address_to_string (const NMPlatformIP6Address *address)
+
+ str_flags = s_flags[0] ? g_strconcat (" flags ", s_flags, NULL) : NULL;
+
+- g_snprintf (buffer, sizeof (buffer), "%s/%d lft %u pref %u time %u%s%s",
++ g_snprintf (buffer, sizeof (buffer), "%s/%d lft %u pref %u time %u%s%s%s",
+ s_address, address->plen, (guint)address->lifetime, (guint)address->preferred,
+ (guint)address->timestamp,
++ str_peer ? str_peer : "",
+ str_dev ? str_dev : "",
+ str_flags ? str_flags : "");
+ g_free (str_flags);
+ g_free (str_dev);
++ g_free (str_peer);
+ return buffer;
+ }
+
+--
+1.8.5.3
+
+
+From aaa86cd61058c8a97c8149b2ebd6eca449aae5b7 Mon Sep 17 00:00:00 2001
+From: Thomas Haller <thaller at redhat.com>
+Date: Tue, 18 Feb 2014 12:52:16 +0100
+Subject: [PATCH 3/3] platform: refactor address_to_string() to return device
+ as numeric if ifname is unknown
+
+(cherry picked from commit a6767f215e0b7ab55949e4410d399f315a225578)
+
+Signed-off-by: Thomas Haller <thaller at redhat.com>
+---
+ src/platform/nm-platform.c | 57 +++++++++++++++++++++++++++-------------------
+ 1 file changed, 33 insertions(+), 24 deletions(-)
+
+diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
+index 677c23a..37d4318 100644
+--- a/src/platform/nm-platform.c
++++ b/src/platform/nm-platform.c
+@@ -1696,6 +1696,27 @@ nm_platform_route_flush (int ifindex)
+
+ /******************************************************************/
+
++#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
+@@ -1714,8 +1735,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)");
+@@ -1727,15 +1747,13 @@ 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",
+ s_address, address->plen, (guint)address->lifetime, (guint)address->preferred,
+ (guint)address->timestamp,
+ str_peer ? str_peer : "",
+- str_dev ? str_dev : "");
+- g_free (str_dev);
++ str_dev);
+ g_free (str_peer);
+ return buffer;
+ }
+@@ -1759,9 +1777,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)");
+@@ -1773,8 +1790,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));
+
+@@ -1798,10 +1814,9 @@ 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 : "");
+ g_free (str_flags);
+- g_free (str_dev);
+ g_free (str_peer);
+ return buffer;
+ }
+@@ -1823,22 +1838,19 @@ 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",
+ s_network, route->plen, s_gateway,
+- str_dev ? str_dev : "",
++ str_dev,
+ route->metric, route->mss);
+- g_free (str_dev);
+ return buffer;
+ }
+
+@@ -1859,22 +1871,19 @@ 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",
+ s_network, route->plen, s_gateway,
+- str_dev ? str_dev : "",
++ str_dev,
+ route->metric, route->mss);
+- g_free (str_dev);
+ return buffer;
+ }
+
+--
+1.8.5.3
+
diff --git a/NetworkManager.spec b/NetworkManager.spec
index 19a149c..1052134 100644
--- a/NetworkManager.spec
+++ b/NetworkManager.spec
@@ -98,6 +98,7 @@ Patch44: 0044-ipv6-privacy.patch
Patch45: 0045-platform-caching.patch
Patch46: 0046-suppress-invalid-warnings.patch
Patch47: 0047-fix-address-timestamps-in-platform.patch
+Patch48: 0048-platform-to-string.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -310,6 +311,7 @@ by nm-connection-editor and nm-applet in a non-graphical environment.
%patch45 -p1 -b .0045-platform-caching.orig
%patch46 -p1 -b .0046-suppress-invalid-warnings.orig
%patch47 -p1 -b .0047-fix-address-timestamps-in-platform.orig
+%patch48 -p1 -b .0048-platform-to-string.orig
%build
@@ -536,6 +538,7 @@ fi
%changelog
* Mon Feb 24 2014 Thomas Haller <thaller at redhat.com> - 0.9.9.0-31.git20131003
- fix timestamps for addresses received from kernel/platform
+- improve platform to_string functions to show all address/route paramters
* Sun Feb 16 2014 Thomas Haller <thaller at redhat.com> - 0.9.9.0-30.git20131003
- revert previous snapshot release 0.9.9.0-29.git20140131, instead based on 0.9.9.0-28.git20131003
More information about the scm-commits
mailing list