Blame view
include/linux/genetlink.h
2.63 KB
482a8524f
|
1 2 |
#ifndef __LINUX_GENERIC_NETLINK_H #define __LINUX_GENERIC_NETLINK_H |
985f302cb
|
3 |
#include <linux/types.h> |
482a8524f
|
4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <linux/netlink.h> #define GENL_NAMSIZ 16 /* length of family name */ #define GENL_MIN_ID NLMSG_MIN_TYPE #define GENL_MAX_ID 1023 struct genlmsghdr { __u8 cmd; __u8 version; __u16 reserved; }; #define GENL_HDRLEN NLMSG_ALIGN(sizeof(struct genlmsghdr)) |
eb328111e
|
18 |
#define GENL_ADMIN_PERM 0x01 |
334c29a64
|
19 20 21 |
#define GENL_CMD_CAP_DO 0x02 #define GENL_CMD_CAP_DUMP 0x04 #define GENL_CMD_CAP_HASPOL 0x08 |
eb328111e
|
22 |
|
482a8524f
|
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
/* * List of reserved static generic netlink identifiers: */ #define GENL_ID_GENERATE 0 #define GENL_ID_CTRL NLMSG_MIN_TYPE /************************************************************************** * Controller **************************************************************************/ enum { CTRL_CMD_UNSPEC, CTRL_CMD_NEWFAMILY, CTRL_CMD_DELFAMILY, CTRL_CMD_GETFAMILY, CTRL_CMD_NEWOPS, CTRL_CMD_DELOPS, CTRL_CMD_GETOPS, |
2dbba6f77
|
41 42 43 |
CTRL_CMD_NEWMCAST_GRP, CTRL_CMD_DELMCAST_GRP, CTRL_CMD_GETMCAST_GRP, /* unused */ |
482a8524f
|
44 45 46 47 48 49 50 51 52 |
__CTRL_CMD_MAX, }; #define CTRL_CMD_MAX (__CTRL_CMD_MAX - 1) enum { CTRL_ATTR_UNSPEC, CTRL_ATTR_FAMILY_ID, CTRL_ATTR_FAMILY_NAME, |
eb328111e
|
53 54 55 56 |
CTRL_ATTR_VERSION, CTRL_ATTR_HDRSIZE, CTRL_ATTR_MAXATTR, CTRL_ATTR_OPS, |
2dbba6f77
|
57 |
CTRL_ATTR_MCAST_GROUPS, |
482a8524f
|
58 59 60 61 |
__CTRL_ATTR_MAX, }; #define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1) |
eb328111e
|
62 63 64 65 |
enum { CTRL_ATTR_OP_UNSPEC, CTRL_ATTR_OP_ID, CTRL_ATTR_OP_FLAGS, |
eb328111e
|
66 67 68 69 |
__CTRL_ATTR_OP_MAX, }; #define CTRL_ATTR_OP_MAX (__CTRL_ATTR_OP_MAX - 1) |
2dbba6f77
|
70 71 72 73 74 75 76 77 |
enum { CTRL_ATTR_MCAST_GRP_UNSPEC, CTRL_ATTR_MCAST_GRP_NAME, CTRL_ATTR_MCAST_GRP_ID, __CTRL_ATTR_MCAST_GRP_MAX, }; #define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1) |
f408e0ce4
|
78 79 80 81 82 |
#ifdef __KERNEL__ /* All generic netlink requests are serialized by a global lock. */ extern void genl_lock(void); extern void genl_unlock(void); |
86b1309c7
|
83 84 85 |
#ifdef CONFIG_PROVE_LOCKING extern int lockdep_genl_is_held(void); #endif |
f408e0ce4
|
86 |
|
b4e16611c
|
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
/** * rcu_dereference_genl - rcu_dereference with debug checking * @p: The pointer to read, prior to dereferencing * * Do an rcu_dereference(p), but check caller either holds rcu_read_lock() * or genl mutex. Note : Please prefer genl_dereference() or rcu_dereference() */ #define rcu_dereference_genl(p) \ rcu_dereference_check(p, lockdep_genl_is_held()) /** * genl_dereference - fetch RCU pointer when updates are prevented by genl mutex * @p: The pointer to read, prior to dereferencing * * Return the value of the specified RCU-protected pointer, but omit * both the smp_read_barrier_depends() and the ACCESS_ONCE(), because * caller holds genl mutex. */ #define genl_dereference(p) \ rcu_dereference_protected(p, lockdep_genl_is_held()) |
f408e0ce4
|
107 |
#endif /* __KERNEL__ */ |
482a8524f
|
108 |
#endif /* __LINUX_GENERIC_NETLINK_H */ |