On Wed, 11 Jul 2018 13:36:03 +0200 Vincent Bernat <vinc...@bernat.im> wrote:
> Since 9516823051ce, "ip addr show label lo:1" doesn't work > anymore (doesn't show any address, despite a matching label). > Reverting to return 0 instead of -1 fix the issue. > > However, the condition says: "if we filter by label [...] and the > label does NOT match the interface name". This makes little sense to > compare the label with the interface name. There is also a logic > around filter family being provided or not. The match against the > label is done by ifa_label_match_rta() in print_addrinfo() and > ipaddr_filter(). > > Just removing the condition makes "ip addr show" works as expected > with or without specifying a label, both when the label is matching > and not matching. It also works if we specify a label and the label is > the interface name. The flush operation also works as expected. > > Fixes: 9516823051ce ("ipaddress: Improve print_linkinfo()") > Signed-off-by: Vincent Bernat <vinc...@bernat.im> > --- > ip/ipaddress.c | 5 ----- > 1 file changed, 5 deletions(-) > > diff --git a/ip/ipaddress.c b/ip/ipaddress.c > index 5009bfe6d2e3..20ef6724944e 100644 > --- a/ip/ipaddress.c > +++ b/ip/ipaddress.c > @@ -837,11 +837,6 @@ int print_linkinfo(const struct sockaddr_nl *who, > if (!name) > return -1; > > - if (filter.label && > - (!filter.family || filter.family == AF_PACKET) && > - fnmatch(filter.label, name, 0)) > - return -1; > - > if (tb[IFLA_GROUP]) { > int group = rta_getattr_u32(tb[IFLA_GROUP]); > If this is a regression, it should go to iproute2 not iproute2-next. Surprised by the solution since it is removing code that was there before the commit you referenced in Fixes.