From: Mark Borst Date: Wed, 2 Dec 2009 00:15:15 +0000 (-0800) Subject: iproute: "ip mroute show" doesn't show all output interfaces X-Git-Tag: v2.6.31~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=080b3ad42820e002b91ab4e3ddb728d2c6763b58;p=thirdparty%2Fiproute2.git iproute: "ip mroute show" doesn't show all output interfaces The command "ip mroute show" will only show the first Oif. mark@flappie:~$ ip mroute show (192.168.1.1, 224.0.0.123) Iif: _rename Oifs: eth1 mark@flappie:~$ cat /proc/net/ip_mr_cache Group Origin Iif Pkts Bytes Wrong Oifs 7B0000E0 0101A8C0 2 0 0 0 0:1 1:1 This shows 2 Oifs here. However, ipmroute.c, function read_mroute_list(), uses sscanf() with a %s mask for oiflist, which stops after the first whitespace (i.e. after Oif 0:1). The patch below fixes this to read until the newline (though I'm not sure whether this is the proper way to fix it). After this patch: mark@flappie:~/iproute-20090324/ip$ ./ip mroute show (192.168.1.1, 224.0.0.123) Iif: _rename Oifs: eth1 eth0 This patch originally submitted as http://bugs.debian.org/550097 Signed-off-by: Andreas Henriksson --- diff --git a/ip/ipmroute.c b/ip/ipmroute.c index 8f4b0612c..977143cc3 100644 --- a/ip/ipmroute.c +++ b/ip/ipmroute.c @@ -95,7 +95,8 @@ static void read_mroute_list(FILE *ofp) char obuf[256]; oiflist[0] = 0; - if (sscanf(buf, "%x%x%d%u%u%u%s", maddr.data, msrc.data, &vifi, + if (sscanf(buf, "%x%x%d%u%u%u %[^\n]", + maddr.data, msrc.data, &vifi, &pkts, &b, &w, oiflist) < 6) continue;