Message ID | 20190123064145.26169-1-xiyou.wangcong@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | stephen hemminger |
Headers | show |
Series | [iproute2] tc: add performance counters for basic filter | expand |
On Tue, 22 Jan 2019 22:41:45 -0800 Cong Wang <xiyou.wangcong@gmail.com> wrote: > + if (tb[TCA_BASIC_PCNT]) { > + if (RTA_PAYLOAD(tb[TCA_BASIC_PCNT]) < sizeof(*pf)) { > + fprintf(f, "Broken perf counters\n"); > + return -1; Errors should go to stderr not f (which is stdout).
On Wed, Jan 23, 2019 at 12:43 PM Stephen Hemminger <stephen@networkplumber.org> wrote: > > On Tue, 22 Jan 2019 22:41:45 -0800 > Cong Wang <xiyou.wangcong@gmail.com> wrote: > > > + if (tb[TCA_BASIC_PCNT]) { > > + if (RTA_PAYLOAD(tb[TCA_BASIC_PCNT]) < sizeof(*pf)) { > > + fprintf(f, "Broken perf counters\n"); > > + return -1; > > Errors should go to stderr not f (which is stdout). Ok, I copy the code from u32 filter, so it has the same issue.
diff --git a/tc/f_basic.c b/tc/f_basic.c index af98c088..97d43d49 100644 --- a/tc/f_basic.c +++ b/tc/f_basic.c @@ -110,6 +110,7 @@ static int basic_print_opt(struct filter_util *qu, FILE *f, struct rtattr *opt, __u32 handle) { struct rtattr *tb[TCA_BASIC_MAX+1]; + struct tc_basic_pcnt *pf = NULL; if (opt == NULL) return 0; @@ -125,6 +126,19 @@ static int basic_print_opt(struct filter_util *qu, FILE *f, sprint_tc_classid(rta_getattr_u32(tb[TCA_BASIC_CLASSID]), b1)); } + if (tb[TCA_BASIC_PCNT]) { + if (RTA_PAYLOAD(tb[TCA_BASIC_PCNT]) < sizeof(*pf)) { + fprintf(f, "Broken perf counters\n"); + return -1; + } + pf = RTA_DATA(tb[TCA_BASIC_PCNT]); + } + + if (show_stats && NULL != pf) + fprintf(f, " (rule hit %llu success %llu)", + (unsigned long long) pf->rcnt, + (unsigned long long) pf->rhit); + if (tb[TCA_BASIC_EMATCHES]) print_ematch(f, tb[TCA_BASIC_EMATCHES]);
Sample output: filter protocol arp pref 49152 basic chain 0 filter protocol arp pref 49152 basic chain 0 handle 0x1 (rule hit 3 success 3) action order 1: gact action pass random type none pass val 0 index 1 ref 1 bind 1 installed 81 sec used 4 sec Action statistics: Sent 126 bytes 3 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 Cc: Jamal Hadi Salim <jhs@mojatatu.com> Cc: Jiri Pirko <jiri@resnulli.us> Cc: David Ahern <dsahern@gmail.com> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> --- tc/f_basic.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)