Example session:

  $ ./strace -yy -e 'sendto' ip tcp_metrics > /dev/null
  sendto(4<NETLINK:[GENERIC:7939]>, {{len=20, type=tcp_metrics, ...
  +++ exited with 0 +++

type= is decoded well.

* netlink.c (nlmsg_types): Remove const modifiers to allow to
install a xlat table for decoding the field made at run-time.
Add an element for NETLINK_GENERIC.
(decode_nlmsg_type): Install the xlat table to the NETLINK_GENERIC
element of nlmsg_types.

Signed-off-by: Masatake YAMATO <yam...@redhat.com>
---
 netlink.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/netlink.c b/netlink.c
index 049843d..541fa59 100644
--- a/netlink.c
+++ b/netlink.c
@@ -100,11 +100,12 @@ get_fd_nl_family(struct tcb *const tcp, const int fd)
        return NL_FAMILY_ERROR;
 }
 
-static const struct {
-       const struct xlat *const xlat;
+static struct {
+       const struct xlat *xlat;
        const char *const dflt;
 } nlmsg_types[] = {
        [NETLINK_AUDIT] = { nl_audit_types, "AUDIT_???" },
+       [NETLINK_GENERIC] = { NULL, "GENERIC_FAMILY_???" },
        [NETLINK_NETFILTER] = { nl_netfilter_subsys_ids, "NFNL_SUBSYS_???" },
        [NETLINK_ROUTE] = { nl_route_types, "RTM_???" },
        [NETLINK_SELINUX] = { nl_selinux_types, "SELNL_MSG_???" },
@@ -119,6 +120,9 @@ static const struct {
 static void
 decode_nlmsg_type(const uint16_t type, const unsigned int family)
 {
+       if (!nlmsg_types[NETLINK_GENERIC].xlat)
+               nlmsg_types[NETLINK_GENERIC].xlat = genl_families_xlat();
+
        if (family < ARRAY_SIZE(nlmsg_types)
            && nlmsg_types[family].xlat) {
                if (family == NETLINK_NETFILTER) {
-- 
2.9.4


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to