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

Reply via email to