Blame view

include/linux/genetlink.h 2.63 KB
482a8524f   Thomas Graf   [NETLINK]: Generi...
1
2
  #ifndef __LINUX_GENERIC_NETLINK_H
  #define __LINUX_GENERIC_NETLINK_H
985f302cb   Jaswinder Singh Rajput   headers_check fix...
3
  #include <linux/types.h>
482a8524f   Thomas Graf   [NETLINK]: Generi...
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   Thomas Graf   [GENL]: Provide m...
18
  #define GENL_ADMIN_PERM		0x01
334c29a64   Jamal Hadi Salim   [GENETLINK]: Move...
19
20
21
  #define GENL_CMD_CAP_DO		0x02
  #define GENL_CMD_CAP_DUMP	0x04
  #define GENL_CMD_CAP_HASPOL	0x08
eb328111e   Thomas Graf   [GENL]: Provide m...
22

482a8524f   Thomas Graf   [NETLINK]: Generi...
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   Johannes Berg   [GENETLINK]: Dyna...
41
42
43
  	CTRL_CMD_NEWMCAST_GRP,
  	CTRL_CMD_DELMCAST_GRP,
  	CTRL_CMD_GETMCAST_GRP, /* unused */
482a8524f   Thomas Graf   [NETLINK]: Generi...
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   Thomas Graf   [GENL]: Provide m...
53
54
55
56
  	CTRL_ATTR_VERSION,
  	CTRL_ATTR_HDRSIZE,
  	CTRL_ATTR_MAXATTR,
  	CTRL_ATTR_OPS,
2dbba6f77   Johannes Berg   [GENETLINK]: Dyna...
57
  	CTRL_ATTR_MCAST_GROUPS,
482a8524f   Thomas Graf   [NETLINK]: Generi...
58
59
60
61
  	__CTRL_ATTR_MAX,
  };
  
  #define CTRL_ATTR_MAX (__CTRL_ATTR_MAX - 1)
eb328111e   Thomas Graf   [GENL]: Provide m...
62
63
64
65
  enum {
  	CTRL_ATTR_OP_UNSPEC,
  	CTRL_ATTR_OP_ID,
  	CTRL_ATTR_OP_FLAGS,
eb328111e   Thomas Graf   [GENL]: Provide m...
66
67
68
69
  	__CTRL_ATTR_OP_MAX,
  };
  
  #define CTRL_ATTR_OP_MAX (__CTRL_ATTR_OP_MAX - 1)
2dbba6f77   Johannes Berg   [GENETLINK]: Dyna...
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   James Chapman   netlink: Export g...
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   Pravin B Shelar   genetlink: Add lo...
83
84
85
  #ifdef CONFIG_PROVE_LOCKING
  extern int lockdep_genl_is_held(void);
  #endif
f408e0ce4   James Chapman   netlink: Export g...
86

b4e16611c   Jesse Gross   genetlink: Add rc...
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   James Chapman   netlink: Export g...
107
  #endif /* __KERNEL__ */
482a8524f   Thomas Graf   [NETLINK]: Generi...
108
  #endif	/* __LINUX_GENERIC_NETLINK_H */