tree 61179eacb8d5baa5f2c9e6331da3f919de1e4b1d
parent f7010770fbac47b1fc9fb723b1d2019eb23c04f2
author Yonghong Song <yhs@fb.com> 1536191885 -0700
committer Alexei Starovoitov <ast@kernel.org> 1536298448 -0700

tools/bpf: add more netlink functionalities in lib/bpf

This patch added a few netlink attribute parsing functions
and the netlink API functions to query networking links, tc classes,
tc qdiscs and tc filters. For example, the following API is
to get networking links:
  int nl_get_link(int sock, unsigned int nl_pid,
                  dump_nlmsg_t dump_link_nlmsg,
                  void *cookie);

Note that when the API is called, the user also provided a
callback function with the following signature:
  int (*dump_nlmsg_t)(void *cookie, void *msg, struct nlattr **tb);

The "cookie" is the parameter the user passed to the API and will
be available for the callback function.
The "msg" is the information about the result, e.g., ifinfomsg or
tcmsg. The "tb" is the parsed netlink attributes.

Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
