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