genetlink.h revision b4397f580e6eb3f20e8c433833be20283b44a3bc
1#ifndef __LINUX_GENERIC_NETLINK_H
2#define __LINUX_GENERIC_NETLINK_H
3
4#include <linux/types.h>
5#include <linux/netlink.h>
6
7#define GENL_NAMSIZ	16	/* length of family name */
8
9#define GENL_MIN_ID	NLMSG_MIN_TYPE
10#define GENL_MAX_ID	1023
11
12struct genlmsghdr {
13	__u8	cmd;
14	__u8	version;
15	__u16	reserved;
16};
17
18#define GENL_HDRLEN	NLMSG_ALIGN(sizeof(struct genlmsghdr))
19
20#define GENL_ADMIN_PERM		0x01
21#define GENL_CMD_CAP_DO		0x02
22#define GENL_CMD_CAP_DUMP	0x04
23#define GENL_CMD_CAP_HASPOL	0x08
24
25/*
26 * List of reserved static generic netlink identifiers:
27 */
28#define GENL_ID_GENERATE	0
29#define GENL_ID_CTRL		NLMSG_MIN_TYPE
30
31/**************************************************************************
32 * Controller
33 **************************************************************************/
34
35enum {
36	CTRL_CMD_UNSPEC,
37	CTRL_CMD_NEWFAMILY,
38	CTRL_CMD_DELFAMILY,
39	CTRL_CMD_GETFAMILY,
40	CTRL_CMD_NEWOPS,
41	CTRL_CMD_DELOPS,
42	CTRL_CMD_GETOPS,
43	CTRL_CMD_NEWMCAST_GRP,
44	CTRL_CMD_DELMCAST_GRP,
45	CTRL_CMD_GETMCAST_GRP, /* unused */
46	__CTRL_CMD_MAX,
47};
48
49#define CTRL_CMD_MAX (__CTRL_CMD_MAX - 1)
50
51enum {
52	CTRL_ATTR_UNSPEC,
53	CTRL_ATTR_FAMILY_ID,
54	CTRL_ATTR_FAMILY_NAME,
55	CTRL_ATTR_VERSION,
56	CTRL_ATTR_HDRSIZE,
57	CTRL_ATTR_MAXATTR,
58	CTRL_ATTR_OPS,
59	CTRL_ATTR_MCAST_GROUPS,
60	__CTRL_ATTR_MAX,
61};
62
63#define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1)
64
65enum {
66	CTRL_ATTR_OP_UNSPEC,
67	CTRL_ATTR_OP_ID,
68	CTRL_ATTR_OP_FLAGS,
69	__CTRL_ATTR_OP_MAX,
70};
71
72#define CTRL_ATTR_OP_MAX (__CTRL_ATTR_OP_MAX - 1)
73
74enum {
75	CTRL_ATTR_MCAST_GRP_UNSPEC,
76	CTRL_ATTR_MCAST_GRP_NAME,
77	CTRL_ATTR_MCAST_GRP_ID,
78	__CTRL_ATTR_MCAST_GRP_MAX,
79};
80
81#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
82
83
84#endif	/* __LINUX_GENERIC_NETLINK_H */
85