Subject: Re: [patch iproute2] tc: move action cookie print out of the stats if

From: Stephen Hemminger <[email-masked]>
Date: Fri, 24 Nov 2017 09:11:42 -0800

On Fri, 24 Nov 2017 09:28:21 +0100
Jiri Pirko <[email-masked]> wrote:

> From: Jiri Pirko <[email-masked]>
> 
> Cookie print was made dependent on show_stats for no good reason. Fix
> this bu pushing cookie print ot of the stats if.
> 
> Fixes: fd8b3d2c1b9b ("actions: Add support for user cookies")
> Signed-off-by: Jiri Pirko <[email-masked]>
> ---
>  tc/m_action.c | 17 ++++++++---------
>  1 file changed, 8 insertions(+), 9 deletions(-)
> 
> diff --git a/tc/m_action.c b/tc/m_action.c
> index 0dce97f..c2fc4f1 100644
> --- a/tc/m_action.c
> +++ b/tc/m_action.c
> @@ -301,19 +301,18 @@ static int tc_print_one_action(FILE *f, struct rtattr *arg)
>  		return err;
>  
>  	if (show_stats && tb[TCA_ACT_STATS]) {
> -
>  		fprintf(f, "\tAction statistics:\n");
>  		print_tcstats2_attr(f, tb[TCA_ACT_STATS], "\t", NULL);
> -		if (tb[TCA_ACT_COOKIE]) {
> -			int strsz = RTA_PAYLOAD(tb[TCA_ACT_COOKIE]);
> -			char b1[strsz * 2 + 1];
> -
> -			fprintf(f, "\n\tcookie len %d %s ", strsz,
> -				hexstring_n2a(RTA_DATA(tb[TCA_ACT_COOKIE]),
> -					      strsz, b1, sizeof(b1)));
> -		}
>  		fprintf(f, "\n");
>  	}
> +	if (tb[TCA_ACT_COOKIE]) {
> +		int strsz = RTA_PAYLOAD(tb[TCA_ACT_COOKIE]);
> +		char b1[strsz * 2 + 1];
> +
> +		fprintf(f, "\tcookie len %d %s\n", strsz,
> +			hexstring_n2a(RTA_DATA(tb[TCA_ACT_COOKIE]),
> +				      strsz, b1, sizeof(b1)));
> +	}
>  
>  	return 0;
>  }

Yes, it should not be under stats flag.
The general model is that -s is for statistics only; and -d is for read only detail values.
So this makes sense.

The problem is that the format of the action cookie needs to be same on command line
argument and on display; i.e drop the length part of the display .