about summary refs log tree commit diff
path: root/src/platform/tests/dump.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2014-07-06 03:04:17 +0200
committerMichael Biebl <biebl@debian.org>2014-07-06 03:04:17 +0200
commit3ce667b6ee6b86291bbe60ef93cba7f11a5c5400 (patch)
treeaf3daa7221e898b72f3de26eb2cf0c1b1c8661b0 /src/platform/tests/dump.c
parentf02d31d95af29678092d1ff01f714621bc9dcc0f (diff)
parent33491bc4279481db8ae47213e34a6d695a0e8830 (diff)
Merge tag 'upstream/0.9.10.0'
Upstream version 0.9.10.0
Diffstat (limited to 'src/platform/tests/dump.c')
-rw-r--r--src/platform/tests/dump.c136
1 files changed, 136 insertions, 0 deletions
diff --git a/src/platform/tests/dump.c b/src/platform/tests/dump.c
new file mode 100644
index 00000000..e97ef138
--- /dev/null
+++ b/src/platform/tests/dump.c
@@ -0,0 +1,136 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <arpa/inet.h>
+
+#include "nm-platform.h"
+#include "nm-linux-platform.h"
+#include "nm-fake-platform.h"
+
+static void
+dump_interface (NMPlatformLink *link)
+{
+	GArray *ip6_addresses;
+	GArray *ip4_addresses;
+	const NMPlatformIP6Address *ip6_address;
+	const NMPlatformIP4Address *ip4_address;
+	GArray *ip6_routes;
+	GArray *ip4_routes;
+	const NMPlatformIP6Route *ip6_route;
+	const NMPlatformIP4Route *ip4_route;
+	char networkstr[INET6_ADDRSTRLEN];
+	char gatewaystr[INET6_ADDRSTRLEN];
+	int vlan_id, vlan_parent;
+	const char *address;
+	size_t addrlen;
+	int i;
+
+	g_assert (link->up || !link->connected);
+
+	printf ("%d: %s: %s", link->ifindex, link->name, link->type_name);
+	if (link->up)
+		printf (" %s", link->connected ? "CONNECTED" : "DISCONNECTED");
+	else
+		printf (" DOWN");
+	if (!link->arp)
+		printf (" noarp");
+	if (link->master)
+		printf (" master %d", link->master);
+	if (link->parent)
+		printf (" parent %d", link->parent);
+	printf (" mtu %d", link->mtu);
+	printf ("\n");
+	if (link->driver)
+		printf ("    driver: %s\n", link->driver);
+	printf ("    UDI: %s\n", link->udi);
+	if (!nm_platform_vlan_get_info (link->ifindex, &vlan_parent, &vlan_id))
+		g_assert_not_reached ();
+	if (vlan_parent)
+		printf ("    vlan parent %d id %d\n", vlan_parent, vlan_id);
+
+	if (nm_platform_link_is_software (link->ifindex))
+		printf ("    class software\n");
+	if (nm_platform_link_supports_slaves (link->ifindex))
+		printf ("    class supports-slaves\n");
+	if (nm_platform_link_supports_carrier_detect (link->ifindex))
+		printf ("    feature carrier-detect\n");
+	if (nm_platform_link_supports_vlans (link->ifindex))
+		printf ("    feature vlans\n");
+
+	address = nm_platform_link_get_address (link->ifindex, &addrlen);
+	if (address) {
+		printf ("    link-address ");
+		for (i = 0; i < addrlen; i++)
+			printf ("%s%02hhx", i ? ":" : "", address[i]);
+		printf ("\n");
+	}
+
+	ip4_addresses = nm_platform_ip4_address_get_all (link->ifindex);
+	ip6_addresses = nm_platform_ip6_address_get_all (link->ifindex);
+
+	g_assert (ip4_addresses);
+	g_assert (ip6_addresses);
+
+	for (i = 0; i < ip4_addresses->len; i++) {
+		ip4_address = &g_array_index (ip4_addresses, NMPlatformIP4Address, i);
+		printf ("    ip4-address %s\n", nm_platform_ip4_address_to_string (ip4_address));
+	}
+
+	for (i = 0; i < ip6_addresses->len; i++) {
+		ip6_address = &g_array_index (ip6_addresses, NMPlatformIP6Address, i);
+		printf ("    ip6-address %s\n", nm_platform_ip6_address_to_string (ip6_address));
+	}
+
+	g_array_unref (ip4_addresses);
+	g_array_unref (ip6_addresses);
+
+	ip4_routes = nm_platform_ip4_route_get_all (link->ifindex, TRUE);
+	ip6_routes = nm_platform_ip6_route_get_all (link->ifindex, TRUE);
+
+	g_assert (ip4_routes);
+	g_assert (ip6_routes);
+
+	for (i = 0; i < ip4_routes->len; i++) {
+		ip4_route = &g_array_index (ip4_routes, NMPlatformIP4Route, i);
+		inet_ntop (AF_INET, &ip4_route->network, networkstr, sizeof (networkstr));
+		inet_ntop (AF_INET, &ip4_route->gateway, gatewaystr, sizeof (gatewaystr));
+		printf ("    ip4-route %s/%d via %s\n", networkstr, ip4_route->plen, gatewaystr);
+	}
+
+	for (i = 0; i < ip6_routes->len; i++) {
+		ip6_route = &g_array_index (ip6_routes, NMPlatformIP6Route, i);
+		inet_ntop (AF_INET6, &ip6_route->network, networkstr, sizeof (networkstr));
+		inet_ntop (AF_INET6, &ip6_route->gateway, gatewaystr, sizeof (gatewaystr));
+		printf ("    ip6-route %s/%d via %s\n", networkstr, ip6_route->plen, gatewaystr);
+	}
+
+	g_array_unref (ip4_routes);
+	g_array_unref (ip6_routes);
+}
+
+static void
+dump_all (void)
+{
+	GArray *links = nm_platform_link_get_all ();
+	int i;
+
+	for (i = 0; i < links->len; i++)
+		dump_interface (&g_array_index (links, NMPlatformLink, i));
+}
+
+int
+main (int argc, char **argv)
+{
+#if !GLIB_CHECK_VERSION (2, 35, 0)
+	g_type_init ();
+#endif
+
+	g_assert (argc <= 2);
+	if (argc > 1 && !g_strcmp0 (argv[1], "--fake"))
+		nm_fake_platform_setup ();
+	else
+		nm_linux_platform_setup ();
+
+	dump_all ();
+
+	return EXIT_SUCCESS;
+}