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 <lesliemonis@gmail.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
"+---(%s)", cls_id_str);
strcat(buf, str);
"+---(%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] ");
if (tb[TCA_KIND] == NULL) {
strcat(buf, " [unknown qdisc kind] ");
if (filter_classid && t->tcm_handle != filter_classid)
return 0;
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");
if (tb[TCA_KIND] == NULL) {
fprintf(stderr, "print_class: NULL kind\n");
- 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 ||
if (tb[TCA_KIND] == NULL && (n->nlmsg_type == RTM_NEWTFILTER ||
n->nlmsg_type == RTM_GETTFILTER ||
if (filter_ifindex && filter_ifindex != t->tcm_ifindex)
return 0;
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");
if (tb[TCA_KIND] == NULL) {
fprintf(stderr, "print_qdisc: NULL kind\n");
- 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;
if (tb[TCA_KIND] == NULL)
return -1;