Fri, Apr 26, 2019 at 11:13:06AM CEST, mkubecek@xxxxxxx wrote: >Even if the NLA_F_NESTED flag was introduced more than 11 years ago, most >netlink based interfaces (including recently added ones) are still not >setting it in kernel generated messages. Without the flag, message parsers >not aware of attribute semantics (e.g. wireshark dissector or libmnl's >mnl_nlmsg_fprintf()) cannot recognize nested attributes and won't display >the structure of their contents. > >Unfortunately we cannot just add the flag everywhere as there may be >userspace applications which check nlattr::nla_type directly rather than >through a helper masking out the flags. Therefore the patch renames >nla_nest_start() to nla_nest_start_noflag() and introduces nla_nest_start() >as a wrapper adding NLA_F_NESTED. The calls which add NLA_F_NESTED manually >are rewritten to use nla_nest_start(). > >Except for changes in include/net/netlink.h, the patch was generated using >this semantic patch: > >@@ expression E1, E2; @@ >-nla_nest_start(E1, E2) >+nla_nest_start_noflag(E1, E2) > >@@ expression E1, E2; @@ >-nla_nest_start_noflag(E1, E2 | NLA_F_NESTED) >+nla_nest_start(E1, E2) > >Signed-off-by: Michal Kubecek <mkubecek@xxxxxxx> Acked-by: Jiri Pirko <jiri@xxxxxxxxxxxx>