On Wed, 7 Mar 2018 11:43:33 +0300 Sergei Shtylyov <[email protected]> wrote:
> Hello! > > On 3/7/2018 4:03 AM, Stephen Hemminger wrote: > > > From: Stephen Hemminger <[email protected]> > > > > Every non-multicast route prints an error message. > > Kernel doesn't filter out unicast routes, it is up to filter function > > to do this. > > > > Signed-off-by: Stephen Hemminger <[email protected]> > > --- > > ip/ipmroute.c | 7 +++---- > > 1 file changed, 3 insertions(+), 4 deletions(-) > > > > diff --git a/ip/ipmroute.c b/ip/ipmroute.c > > index aa5029b44f41..03ca0575e571 100644 > > --- a/ip/ipmroute.c > > +++ b/ip/ipmroute.c > > @@ -75,15 +75,14 @@ int print_mroute(const struct sockaddr_nl *who, struct > > nlmsghdr *n, void *arg) > > fprintf(stderr, "BUG: wrong nlmsg len %d\n", len); > > return -1; > > } > > - if (r->rtm_type != RTN_MULTICAST) { > > - fprintf(stderr, "Not a multicast route (type: %s)\n", > > - rtnl_rtntype_n2a(r->rtm_type, b1, sizeof(b1))); > > + > > + if (r->rtm_type != RTN_MULTICAST) > > return 0; > > - } > > > > parse_rtattr(tb, RTA_MAX, RTM_RTA(r), len); > > table = rtm_get_table(r, tb); > > > > + > > Why? > > > if (filter.tb > 0 && filter.tb != table) > > return 0; > > > > MBR, Sergei The kernel dumps all routes in response to the RTM_GETROUTE and therefore all routes show up in print_mroute. On my system (which has no mcast), I get this with standard 4.14 kernel and ip commands. $ ip mroute Not a multicast route (type: unicast) Not a multicast route (type: unicast) Not a multicast route (type: unicast) Not a multicast route (type: unicast) Not a multicast route (type: unicast) Not a multicast route (type: broadcast) Not a multicast route (type: local) Not a multicast route (type: local) Not a multicast route (type: broadcast) Not a multicast route (type: broadcast) Not a multicast route (type: local)
