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
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
27
28#define GENL_ID_GENERATE 0
29#define GENL_ID_CTRL NLMSG_MIN_TYPE
30
31
32
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,
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#ifdef __KERNEL__
84
85
86extern void genl_lock(void);
87extern void genl_unlock(void);
88#ifdef CONFIG_PROVE_LOCKING
89extern int lockdep_genl_is_held(void);
90#endif
91
92
93
94
95
96
97
98
99#define rcu_dereference_genl(p) \
100 rcu_dereference_check(p, lockdep_genl_is_held())
101
102
103
104
105
106
107
108
109
110#define genl_dereference(p) \
111 rcu_dereference_protected(p, lockdep_genl_is_held())
112
113#define MODULE_ALIAS_GENL_FAMILY(family)\
114 MODULE_ALIAS_NET_PF_PROTO_NAME(PF_NETLINK, NETLINK_GENERIC, "-family-" family)
115
116#endif
117
118#endif
119