Wed, Mar 08, 2017 at 01:04:42PM CET, ji...@kernel.org wrote: >From: Jiri Kosina <jkos...@suse.cz> > >Support the new TCA_DUMP_INVISIBLE netlink attribute that allows asking >kernel to perform 'full qdisc dump', as for historical reasons some of the >default qdiscs are being hidden by the kernel. > >The command syntax is being extended by voluntary 'invisible' argument to >'tc qdisc show'. > >Signed-off-by: Jiri Kosina <jkos...@suse.cz> >---
[...] >@@ -325,7 +328,25 @@ static int tc_qdisc_list(int argc, char **argv) > filter_ifindex = t.tcm_ifindex; > } > >- if (rtnl_dump_request(&rth, RTM_GETQDISC, &t, sizeof(t)) < 0) { >+ if (dump_invisible) { >+ struct { >+ struct nlmsghdr n; >+ struct tcmsg t; >+ char buf[256]; >+ } req = { >+ .n.nlmsg_type = RTM_GETQDISC, >+ .n.nlmsg_len = NLMSG_LENGTH(sizeof(struct tcmsg)), >+ }; >+ >+ req.t.tcm_family = AF_UNSPEC; >+ >+ addattr(&req.n, 256, TCA_DUMP_INVISIBLE); >+ if (rtnl_dump_request_n(&rth, &req.n) < 0) { Jirko, you ignore the values that were previously set in "t". I think that you can change this to do rtnl_dump_request_n always and simplify the code a bit. >+ perror("Cannot send dump request"); >+ return 1; >+ } >+ >+ } else if (rtnl_dump_request(&rth, RTM_GETQDISC, &t, sizeof(t)) < 0) { > perror("Cannot send dump request"); > return 1; > } >-- >Jiri Kosina >SUSE Labs >