diff options
author | Andrey Vagin <avagin@openvz.org> | 2013-03-21 12:33:48 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-03-21 12:38:03 -0400 |
commit | eaaa31392690c7609f7afeec5ba38a79d009842d (patch) | |
tree | 226d0deb15b150c1473b5f813414330d28814855 /include/uapi | |
parent | 0f29c768646809264d603574b4a1b15d2ff7ad79 (diff) |
netlink: Diag core and basic socket info dumping (v2)
The netlink_diag can be built as a module, just like it's done in
unix sockets.
The core dumping message carries the basic info about netlink sockets:
family, type and protocol, portis, dst_group, dst_portid, state.
Groups can be received as an optional parameter NETLINK_DIAG_GROUPS.
Netlink sockets cab be filtered by protocols.
The socket inode number and cookie is reserved for future per-socket info
retrieving. The per-protocol filtering is also reserved for future by
requiring the sdiag_protocol to be zero.
The file /proc/net/netlink doesn't provide enough information for
dumping netlink sockets. It doesn't provide dst_group, dst_portid,
groups above 32.
v2: fix NETLINK_DIAG_MAX. Now it's equal to the last constant.
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Gao feng <gaofeng@cn.fujitsu.com>
Cc: Thomas Graf <tgraf@suug.ch>
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/uapi')
-rw-r--r-- | include/uapi/linux/netlink_diag.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/include/uapi/linux/netlink_diag.h b/include/uapi/linux/netlink_diag.h new file mode 100644 index 000000000000..88009a31cd06 --- /dev/null +++ b/include/uapi/linux/netlink_diag.h | |||
@@ -0,0 +1,42 @@ | |||
1 | #ifndef __NETLINK_DIAG_H__ | ||
2 | #define __NETLINK_DIAG_H__ | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | |||
6 | struct netlink_diag_req { | ||
7 | __u8 sdiag_family; | ||
8 | __u8 sdiag_protocol; | ||
9 | __u16 pad; | ||
10 | __u32 ndiag_ino; | ||
11 | __u32 ndiag_show; | ||
12 | __u32 ndiag_cookie[2]; | ||
13 | }; | ||
14 | |||
15 | struct netlink_diag_msg { | ||
16 | __u8 ndiag_family; | ||
17 | __u8 ndiag_type; | ||
18 | __u8 ndiag_protocol; | ||
19 | __u8 ndiag_state; | ||
20 | |||
21 | __u32 ndiag_portid; | ||
22 | __u32 ndiag_dst_portid; | ||
23 | __u32 ndiag_dst_group; | ||
24 | __u32 ndiag_ino; | ||
25 | __u32 ndiag_cookie[2]; | ||
26 | }; | ||
27 | |||
28 | enum { | ||
29 | NETLINK_DIAG_MEMINFO, | ||
30 | NETLINK_DIAG_GROUPS, | ||
31 | |||
32 | __NETLINK_DIAG_MAX, | ||
33 | }; | ||
34 | |||
35 | #define NETLINK_DIAG_MAX (__NETLINK_DIAG_MAX - 1) | ||
36 | |||
37 | #define NDIAG_PROTO_ALL ((__u8) ~0) | ||
38 | |||
39 | #define NDIAG_SHOW_MEMINFO 0x00000001 /* show memory info of a socket */ | ||
40 | #define NDIAG_SHOW_GROUPS 0x00000002 /* show groups of a netlink socket */ | ||
41 | |||
42 | #endif | ||