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.
Showing the changes to include/uapi/linux (1 of 5 files). Show all
Unified · Split
| @@ -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 | ||