summaryrefslogtreecommitdiff
path: root/src/network/networkctl.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2016-02-19 20:43:03 +0100
committerLennart Poettering <lennart@poettering.net>2016-02-21 20:40:57 +0100
commitb295beea88a7f2c48897b2887acbe99937335c8f (patch)
tree944f3498c7e8aaa35a5010910987100033b39992 /src/network/networkctl.c
parent7cececb2ea707a6d9b063538cf986fd27edd8cd3 (diff)
networkd: rework how carrier bindings are serialized
Instead of serializing the interface name, expose the interface index, since that's the only stable identifier.
Diffstat (limited to 'src/network/networkctl.c')
-rw-r--r--src/network/networkctl.c31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/network/networkctl.c b/src/network/networkctl.c
index c5da24e75b..8abb1eff9a 100644
--- a/src/network/networkctl.c
+++ b/src/network/networkctl.c
@@ -662,6 +662,30 @@ static int dump_lldp_neighbors(const char *prefix, int ifindex) {
return c;
}
+static void dump_ifindexes(const char *prefix, const int *ifindexes) {
+ unsigned c;
+
+ assert(prefix);
+
+ if (!ifindexes || ifindexes[0] <= 0)
+ return;
+
+ for (c = 0; ifindexes[c] > 0; c++) {
+ char name[IF_NAMESIZE+1];
+
+ printf("%*s",
+ (int) strlen(prefix),
+ c == 0 ? prefix : "");
+
+ if (if_indextoname(ifindexes[c], name))
+ fputs(name, stdout);
+ else
+ printf("%i", ifindexes[c]);
+
+ fputc('\n', stdout);
+ }
+}
+
static void dump_list(const char *prefix, char **l) {
char **i;
@@ -689,8 +713,7 @@ static int link_status_one(
const char *driver = NULL, *path = NULL, *vendor = NULL, *model = NULL, *link = NULL;
const char *on_color_operational, *off_color_operational,
*on_color_setup, *off_color_setup;
- _cleanup_strv_free_ char **carrier_bound_to = NULL;
- _cleanup_strv_free_ char **carrier_bound_by = NULL;
+ _cleanup_free_ int *carrier_bound_to = NULL, *carrier_bound_by = NULL;
int r;
assert(rtnl);
@@ -777,8 +800,8 @@ static int link_status_one(
dump_list(" NTP: ", ntp);
- dump_list("Carrier Bound To: ", carrier_bound_to);
- dump_list("Carrier Bound By: ", carrier_bound_by);
+ dump_ifindexes("Carrier Bound To: ", carrier_bound_to);
+ dump_ifindexes("Carrier Bound By: ", carrier_bound_by);
(void) sd_network_link_get_timezone(info->ifindex, &tz);
if (tz)