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 <andreas@fatal.se>
This commit is contained in:
parent
f4af851bac
commit
080b3ad428
|
|
@ -95,7 +95,8 @@ static void read_mroute_list(FILE *ofp)
|
||||||
char obuf[256];
|
char obuf[256];
|
||||||
|
|
||||||
oiflist[0] = 0;
|
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)
|
&pkts, &b, &w, oiflist) < 6)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue