[PATCH] ip link: fix display and filtering of ifgroups
From: Stefan Tomanek <hidden>
Date: 2013-08-01 12:16:37
Subsystem:
the rest · Maintainer:
Linus Torvalds
This change adds the interface group to the output of "ip link show". It also makes "ip link" print _all_ devices if no group filter is specified; previously, only interfaces of the default group (0) were shown. Signed-off-by: Stefan Tomanek <redacted> --- ip/ipaddress.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 013b4cb..cf4015a 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c@@ -418,7 +418,7 @@ int print_linkinfo(const struct sockaddr_nl *who, if (tb[IFLA_GROUP]) { int group = *(int*)RTA_DATA(tb[IFLA_GROUP]); - if (group != filter.group) + if (filter.group != -1 && group != filter.group) return -1; }
@@ -458,6 +458,11 @@ int print_linkinfo(const struct sockaddr_nl *who, if (do_link && tb[IFLA_LINKMODE]) print_linkmode(fp, tb[IFLA_LINKMODE]); + if (tb[IFLA_GROUP]) { + int group = *(int*)RTA_DATA(tb[IFLA_GROUP]); + fprintf(fp, "group %d ", group); + } + if (filter.showqueue) print_queuelen(fp, tb);
@@ -1050,7 +1055,7 @@ static int ipaddr_list_flush_or_save(int argc, char **argv, int action) if (filter.family == AF_UNSPEC) filter.family = preferred_family; - filter.group = INIT_NETDEV_GROUP; + filter.group = -1; if (action == IPADD_FLUSH) { if (argc <= 0) {
--
1.7.10.4