From: Leslie Monis Date: Thu, 16 Jan 2020 15:57:01 +0000 (+0530) Subject: tc: parse attributes with NLA_F_NESTED flag X-Git-Tag: v5.6.0~22^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eae5f4b5c88eb60465d8b70c52efff57039d0024;p=thirdparty%2Fiproute2.git tc: parse attributes with NLA_F_NESTED flag The kernel now requires all new nested attributes to set the NLA_F_NESTED flag. Enable tc {qdisc,class,filter} to parse attributes that have the NLA_F_NESTED flag set. Signed-off-by: Leslie Monis Signed-off-by: David Ahern --- diff --git a/tc/tc_class.c b/tc/tc_class.c index c7e3cfdf6..39bea9712 100644 --- a/tc/tc_class.c +++ b/tc/tc_class.c @@ -246,8 +246,8 @@ static void graph_cls_show(FILE *fp, char *buf, struct hlist_head *root_list, "+---(%s)", cls_id_str); strcat(buf, str); - parse_rtattr(tb, TCA_MAX, (struct rtattr *)cls->data, - cls->data_len); + parse_rtattr_flags(tb, TCA_MAX, (struct rtattr *)cls->data, + cls->data_len, NLA_F_NESTED); if (tb[TCA_KIND] == NULL) { strcat(buf, " [unknown qdisc kind] "); @@ -327,7 +327,7 @@ int print_class(struct nlmsghdr *n, void *arg) if (filter_classid && t->tcm_handle != filter_classid) return 0; - parse_rtattr(tb, TCA_MAX, TCA_RTA(t), len); + parse_rtattr_flags(tb, TCA_MAX, TCA_RTA(t), len, NLA_F_NESTED); if (tb[TCA_KIND] == NULL) { fprintf(stderr, "print_class: NULL kind\n"); diff --git a/tc/tc_filter.c b/tc/tc_filter.c index dcddca77e..c591a19f3 100644 --- a/tc/tc_filter.c +++ b/tc/tc_filter.c @@ -267,7 +267,7 @@ int print_filter(struct nlmsghdr *n, void *arg) return -1; } - parse_rtattr(tb, TCA_MAX, TCA_RTA(t), len); + parse_rtattr_flags(tb, TCA_MAX, TCA_RTA(t), len, NLA_F_NESTED); if (tb[TCA_KIND] == NULL && (n->nlmsg_type == RTM_NEWTFILTER || n->nlmsg_type == RTM_GETTFILTER || diff --git a/tc/tc_qdisc.c b/tc/tc_qdisc.c index 75a146721..181fe2f04 100644 --- a/tc/tc_qdisc.c +++ b/tc/tc_qdisc.c @@ -235,7 +235,7 @@ int print_qdisc(struct nlmsghdr *n, void *arg) if (filter_ifindex && filter_ifindex != t->tcm_ifindex) return 0; - parse_rtattr(tb, TCA_MAX, TCA_RTA(t), len); + parse_rtattr_flags(tb, TCA_MAX, TCA_RTA(t), len, NLA_F_NESTED); if (tb[TCA_KIND] == NULL) { fprintf(stderr, "print_qdisc: NULL kind\n"); @@ -461,7 +461,7 @@ static int tc_qdisc_block_exists_cb(struct nlmsghdr *n, void *arg) if (len < 0) return -1; - parse_rtattr(tb, TCA_MAX, TCA_RTA(t), len); + parse_rtattr_flags(tb, TCA_MAX, TCA_RTA(t), len, NLA_F_NESTED); if (tb[TCA_KIND] == NULL) return -1;