Don't request statistics we do not intend to render. This avoids the
possibility of a truncated IFLA_VFINFO_LIST when statistics are not
requested as well as the fetching of unnecessary data.

Signed-off-by: Edwin Peer <edwin.p...@broadcom.com>
---
 ip/ipaddress.c | 6 +++++-
 ip/iplink.c    | 3 +++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 0bbcee2b3bb2..75511881050d 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -1882,9 +1882,13 @@ static int ipaddr_flush(void)
 
 static int iplink_filter_req(struct nlmsghdr *nlh, int reqlen)
 {
+       __u32 filt_mask;
        int err;
 
-       err = addattr32(nlh, reqlen, IFLA_EXT_MASK, RTEXT_FILTER_VF);
+       filt_mask = RTEXT_FILTER_VF;
+       if (!show_stats)
+               filt_mask |= RTEXT_FILTER_SKIP_STATS;
+       err = addattr32(nlh, reqlen, IFLA_EXT_MASK, filt_mask);
        if (err)
                return err;
 
diff --git a/ip/iplink.c b/ip/iplink.c
index 27c9be442a7a..6a973213dc11 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
@@ -1116,6 +1116,9 @@ int iplink_get(char *name, __u32 filt_mask)
                          !check_ifname(name) ? IFLA_IFNAME : IFLA_ALT_IFNAME,
                          name, strlen(name) + 1);
        }
+
+       if (!show_stats)
+               filt_mask |= RTEXT_FILTER_SKIP_STATS;
        addattr32(&req.n, sizeof(req), IFLA_EXT_MASK, filt_mask);
 
        if (rtnl_talk(&rth, &req.n, &answer) < 0)
-- 
2.30.0

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to