On Mon, 5 Jun 2pp017 19:53:00 +0300, "Dmitry V. Levin" <l...@altlinux.org> wrote: > On Mon, Jun 05, 2017 at 03:07:04PM +0800, JingPiao Chen wrote: >> On Sun, Jun 04, 2017 at 10:40:09PM +0300, Dmitry V. Levin wrote: > [...] >> > getfdnlproto (get_fd_nl_family in my edition) is not cheap >> > (it invokes syscalls), needless calls should be avoided. >> >> I have read your code, I will rebase my code after you merge >> ldv/netlink branch. > > The first portion of netlink commits is merged now, > it's time to rebase. Thanks!
JingPiao, great work! I have really wanted this. Do you have a plan to work on decoding NETLINK_GENERIC? I'm interested in the area. If you don't have a plan, I would like to finish the following stub. Masatake YAMATO diff --git a/netlink.c b/netlink.c index f9ff465..215807a 100644 --- a/netlink.c +++ b/netlink.c @@ -110,6 +110,26 @@ static const struct { [NETLINK_XFRM] = { nl_xfrm_types, "XFRM_MSG_???" } }; +static struct xlat *build_genl_types_cache(void) +{ + static bool tried_once; + if (tried_once) + return NULL; + tried_once = true; + + /* STUB: This must be built dynamically. */ + static struct xlat dummy [] = { + { + 0x0010, "nlctrl", + }, + { + 0x0019, "tcp_metrics", + }, + XLAT_END + }; + return &(dummy[0]); +} + /* * As all valid netlink families are positive integers, use unsigned int * for family here to filter out NL_FAMILY_ERROR and NL_FAMILY_DEFAULT. @@ -117,6 +137,18 @@ static const struct { static void decode_nlmsg_type(const uint16_t type, const unsigned int family) { + if (family == NETLINK_GENERIC) { + static struct xlat *genl_types; + + if (!genl_types) + genl_types = build_genl_types_cache(); + if (genl_types) { + printxval(genl_types, type, + "GENERIC_TYPE_???"); + return; + } + } + if (family < ARRAY_SIZE(nlmsg_types) && nlmsg_types[family].xlat) { if (family == NETLINK_NETFILTER) { ------------------------------------------------------------------------------ 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