mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-08-15 04:35:14 +00:00
ip link: fix display of interface groups
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 <stefan.tomanek@wertarbyte.de>
This commit is contained in:
parent
3140e9a3a3
commit
c4fdf75d3d
@ -8,6 +8,7 @@ const char *rtnl_rtscope_n2a(int id, char *buf, int len);
|
||||
const char *rtnl_rttable_n2a(__u32 id, char *buf, int len);
|
||||
const char *rtnl_rtrealm_n2a(int id, char *buf, int len);
|
||||
const char *rtnl_dsfield_n2a(int id, char *buf, int len);
|
||||
const char *rtnl_group_n2a(int id, char *buf, int len);
|
||||
|
||||
int rtnl_rtprot_a2n(__u32 *id, const char *arg);
|
||||
int rtnl_rtscope_a2n(__u32 *id, const char *arg);
|
||||
|
@ -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,12 @@ int print_linkinfo(const struct sockaddr_nl *who,
|
||||
if (do_link && tb[IFLA_LINKMODE])
|
||||
print_linkmode(fp, tb[IFLA_LINKMODE]);
|
||||
|
||||
if (tb[IFLA_GROUP]) {
|
||||
SPRINT_BUF(b1);
|
||||
int group = *(int*)RTA_DATA(tb[IFLA_GROUP]);
|
||||
fprintf(fp, "group %s ", rtnl_group_n2a(group, b1, sizeof(b1)));
|
||||
}
|
||||
|
||||
if (filter.showqueue)
|
||||
print_queuelen(fp, tb);
|
||||
|
||||
@ -1050,7 +1056,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) {
|
||||
|
@ -500,3 +500,22 @@ int rtnl_group_a2n(int *id, const char *arg)
|
||||
*id = i;
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char *rtnl_group_n2a(int id, char *buf, int len)
|
||||
{
|
||||
struct rtnl_hash_entry *entry;
|
||||
int i;
|
||||
|
||||
if (!rtnl_group_init)
|
||||
rtnl_group_initialize();
|
||||
|
||||
for (i=0; i<256; i++) {
|
||||
entry = rtnl_group_hash[i];
|
||||
if (entry && entry->id == id) {
|
||||
return entry->name;
|
||||
}
|
||||
}
|
||||
|
||||
snprintf(buf, len, "%d", id);
|
||||
return buf;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user