]> granicus.if.org Git - strace/blobdiff - rtnl_netconf.c
CREDITS.in: use UTF-8 consistently
[strace] / rtnl_netconf.c
index 852e908ddb37e880e54cf9b000b78435bed4bb1f..f01c543f526d6c1223f60071f23418f33a82d5d1 100644 (file)
 #ifdef HAVE_STRUCT_NETCONFMSG
 
 # include "netlink_route.h"
+# include "nlattr.h"
 # include "print_fields.h"
 
 # include <linux/netconf.h>
+# include "netlink.h"
+
+# include "xlat/rtnl_netconf_attrs.h"
+
+static const nla_decoder_t netconfmsg_nla_decoders[] = {
+       [NETCONFA_IFINDEX]                      = decode_nla_ifindex,
+       [NETCONFA_FORWARDING]                   = decode_nla_s32,
+       [NETCONFA_RP_FILTER]                    = decode_nla_s32,
+       [NETCONFA_MC_FORWARDING]                = decode_nla_s32,
+       [NETCONFA_PROXY_NEIGH]                  = decode_nla_s32,
+       [NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN]  = decode_nla_s32,
+       [NETCONFA_INPUT]                        = decode_nla_s32
+};
 
 DECL_NETLINK_ROUTE_DECODER(decode_netconfmsg)
 {
@@ -42,6 +56,15 @@ DECL_NETLINK_ROUTE_DECODER(decode_netconfmsg)
 
        PRINT_FIELD_XVAL("{", ncm, ncm_family, addrfams, "AF_???");
        tprints("}");
+
+       const size_t offset = NLMSG_ALIGN(sizeof(ncm));
+       if (len > offset) {
+               tprints(", ");
+               decode_nlattr(tcp, addr + offset, len - offset,
+                             rtnl_netconf_attrs, "NETCONFA_???",
+                             netconfmsg_nla_decoders,
+                             ARRAY_SIZE(netconfmsg_nla_decoders), NULL);
+       }
 }
 
 #endif