Re: [PATCH net-next 1/3] netlink: make nla_nest_start() add NLA_F_NESTED flag

Jiri Pirko
2019-04-26T10:51:26Z

Fri, Apr 26, 2019 at 11:13:06AM CEST, mkubecek@suse.cz 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@suse.cz>

Acked-by: Jiri Pirko <jiri@mellanox.com>