]> granicus.if.org Git - strace/commitdiff
rtnl_tc_action: decode tcamsg netlink attributes
authorJingPiao Chen <chenjingpiao@gmail.com>
Mon, 4 Sep 2017 06:56:44 +0000 (14:56 +0800)
committerDmitry V. Levin <ldv@altlinux.org>
Thu, 7 Sep 2017 11:35:04 +0000 (11:35 +0000)
* rtnl_tc_action.c (tcamsg_nla_decoders): New array.
(decode_tcamsg): Use it.

rtnl_tc_action.c

index ca0b72be3b23ae3f4e5ddf81b48c4523f254896d..499c69acd7f5108d657c8d66357386c0967242e8 100644 (file)
 
 #include "xlat/rtnl_tc_action_attrs.h"
 
+static const nla_decoder_t tcamsg_nla_decoders[] = {
+       [TCA_ACT_KIND]          = decode_nla_str,
+       [TCA_ACT_OPTIONS]       = NULL, /* unimplemented */
+       [TCA_ACT_INDEX]         = decode_nla_u32,
+       [TCA_ACT_STATS]         = decode_nla_tc_stats,
+       [TCA_ACT_PAD]           = NULL,
+       [TCA_ACT_COOKIE]        = NULL /* default parser */
+};
+
 DECL_NETLINK_ROUTE_DECODER(decode_tcamsg)
 {
        struct tcamsg tca = { .tca_family = family };
@@ -49,6 +58,7 @@ DECL_NETLINK_ROUTE_DECODER(decode_tcamsg)
                tprints(", ");
                decode_nlattr(tcp, addr + offset, len - offset,
                              rtnl_tc_action_attrs, "TCA_ACT_???",
-                             NULL, 0, NULL);
+                             tcamsg_nla_decoders,
+                             ARRAY_SIZE(tcamsg_nla_decoders), NULL);
        }
 }