Commit 288abf51 authored by Jamal Hadi Salim's avatar Jamal Hadi Salim Committed by Stephen Hemminger

actions: correctly report the number of actions flushed

This also fixes a long standing bug of not sanely reporting the
action chain ordering

Sample scenario test

on window 1(event window):
run "tc monitor" and observe events

on window 2:
sudo tc actions add action drop index 10
sudo tc actions add action ok index 12
sudo tc actions ls action gact
sudo tc actions flush action gact

See the event window reporting two entries
(doing another listing should show empty generic actions)
Signed-off-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
parent 9282d08d
......@@ -249,37 +249,38 @@ static int
tc_print_one_action(FILE * f, struct rtattr *arg)
{
struct rtattr *tb[TCA_ACT_MAX + 1];
struct rtattr *tb[TCA_MAX + 1];
int err = 0;
struct action_util *a = NULL;
if (arg == NULL)
return -1;
parse_rtattr_nested(tb, TCA_ACT_MAX, arg);
if (tb[TCA_ACT_KIND] == NULL) {
parse_rtattr_nested(tb, TCA_MAX, arg);
if (tb[TCA_KIND] == NULL) {
fprintf(stderr, "NULL Action!\n");
return -1;
}
a = get_action_kind(RTA_DATA(tb[TCA_ACT_KIND]));
a = get_action_kind(RTA_DATA(tb[TCA_KIND]));
if (NULL == a)
return err;
if (tab_flush) {
fprintf(f," %s \n", a->id);
__u32 *delete_count = RTA_DATA(tb[TCA_FCNT]);
fprintf(f," %s (%d entries)\n", a->id, *delete_count);
tab_flush = 0;
return 0;
}
err = a->print_aopt(a,f,tb[TCA_ACT_OPTIONS]);
err = a->print_aopt(a,f,tb[TCA_OPTIONS]);
if (0 > err)
return err;
if (show_stats && tb[TCA_ACT_STATS]) {
if (show_stats && tb[TCA_STATS]) {
fprintf(f, "\tAction statistics:\n");
print_tcstats2_attr(f, tb[TCA_ACT_STATS], "\t", NULL);
fprintf(f, "\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment