static int iplink_filter_req(struct nlmsghdr *nlh, int reqlen)
{
- __u32 filt_mask;
+ __u32 filt_mask = 0;
int err;
- filt_mask = RTEXT_FILTER_VF;
+ if (filter.vfinfo)
+ filt_mask |= RTEXT_FILTER_VF;
if (!show_stats)
filt_mask |= RTEXT_FILTER_SKIP_STATS;
err = addattr32(nlh, reqlen, IFLA_EXT_MASK, filt_mask);
.i.ifi_family = filter.family,
.i.ifi_index = index,
};
- __u32 filt_mask = RTEXT_FILTER_VF;
+ __u32 filt_mask = 0;
struct nlmsghdr *answer;
+ if (filter.vfinfo)
+ filt_mask |= RTEXT_FILTER_VF;
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) {
ipaddr_reset_filter(oneline, 0);
filter.showqueue = 1;
filter.family = preferred_family;
+ filter.vfinfo = 1;
if (action == IPADD_FLUSH) {
if (argc <= 0) {
invarg("\"proto\" value is invalid\n", *argv);
filter.have_proto = true;
filter.proto = proto;
+ } else if (strcmp(*argv, "novf") == 0) {
+ filter.vfinfo = 0;
} else {
if (strcmp(*argv, "dev") == 0)
NEXT_ARG();
* the link device
*/
if (filter_dev && filter.group == -1 && do_link == 1) {
- if (iplink_get(filter_dev, RTEXT_FILTER_VF) < 0) {
+ if (iplink_get(filter_dev, filter.vfinfo ? RTEXT_FILTER_VF : 0) < 0) {
perror("Cannot send link get request");
delete_json_obj();
exit(1);