6#include <netlink-private/netlink.h>
7#include <netlink/cli/utils.h>
9static void print_usage(
void)
11 fprintf(stderr,
"Usage: nl-list-caches\n");
15static char *id_attr_list(
struct nl_object_ops *ops,
char *buf,
size_t len)
17 if (ops->oo_attrs2str != NULL)
18 return ops->oo_attrs2str(ops->oo_id_attrs, buf, len);
25static void print(
struct nl_cache_ops *ops,
void *arg)
30 " hdrsize: %d bytes\n" \
32 " request-update: %s\n" \
34 ops->co_name, ops->co_hdrsize,
35 nl_nlfamily2str(ops->co_protocol, buf,
sizeof(buf)),
36 ops->co_request_update ?
"yes" :
"no",
37 ops->co_msg_parser ?
"yes" :
"no");
39 if (ops->co_obj_ops) {
40 struct nl_object_ops *obj_ops = ops->co_obj_ops;
41 const char *dump_names[NL_DUMP_MAX+1] = {
48 printf(
" cacheable object:\n" \
50 " size: %zu bytes\n" \
51 " constructor: %s\n" \
55 " id attributes: %s\n" \
57 obj_ops->oo_name, obj_ops->oo_size,
58 obj_ops->oo_constructor ?
"yes" :
"no",
59 obj_ops->oo_free_data ?
"yes" :
"no",
60 obj_ops->oo_clone ?
"yes" :
"no",
61 obj_ops->oo_compare ?
"yes" :
"no",
62 id_attr_list(obj_ops, buf,
sizeof(buf)));
64 for (i = 0; i <= NL_DUMP_MAX; i++)
65 if (obj_ops->oo_dump[i])
103int main(
int argc,
char *argv[])
105 if (argc > 1 && !strcasecmp(argv[1],
"-h"))
void nl_cache_ops_foreach(void(*cb)(struct nl_cache_ops *, void *), void *arg)
Call a function for each registered cache operation.
Definition of a Generic Netlink command.
struct nla_policy * c_attr_policy
Attribute validation policy, enforced before the callback is called.
int c_id
Numeric command identifier (required)
char * c_name
Human readable name (required)
int(* c_msg_parser)(struct nl_cache_ops *, struct genl_cmd *, struct genl_info *, void *)
Called whenever a message for this command is received.
int c_maxattr
Maximum attribute identifier that the command is prepared to handle.
Definition of a Generic Netlink family.
int o_ncmds
Number of elements in o_cmds array.
unsigned int o_hdrsize
Length of user header.
char * o_name
Human readable name, used by genl_ops_resolve() to resolve numeric id.
int o_id
Numeric identifier, automatically filled in by genl_ops_resolve()
struct genl_cmd * o_cmds
Optional array defining the available Generic Netlink commands.