1  /* SPDX-License-Identifier: GPL-2.0 */
2  #ifndef DRBD_GENL_STRUCT_H
3  #define DRBD_GENL_STRUCT_H
4  
5  /**
6   * struct drbd_genlmsghdr - DRBD specific header used in NETLINK_GENERIC requests
7   * @minor:
8   *     For admin requests (user -> kernel): which minor device to operate on.
9   *     For (unicast) replies or informational (broadcast) messages
10   *     (kernel -> user): which minor device the information is about.
11   *     If we do not operate on minors, but on connections or resources,
12   *     the minor value shall be (~0), and the attribute DRBD_NLA_CFG_CONTEXT
13   *     is used instead.
14   * @flags: possible operation modifiers (relevant only for user->kernel):
15   *     DRBD_GENL_F_SET_DEFAULTS
16   * @volume:
17   *     When creating a new minor (adding it to a resource), the resource needs
18   *     to know which volume number within the resource this is supposed to be.
19   *     The volume number corresponds to the same volume number on the remote side,
20   *     whereas the minor number on the remote side may be different
21   *     (union with flags).
22   * @ret_code: kernel->userland unicast cfg reply return code (union with flags);
23   */
24  struct drbd_genlmsghdr {
25  	__u32 minor;
26  	union {
27  	__u32 flags;
28  	__s32 ret_code;
29  	};
30  };
31  
32  /* To be used in drbd_genlmsghdr.flags */
33  enum {
34  	DRBD_GENL_F_SET_DEFAULTS = 1,
35  };
36  
37  enum drbd_state_info_bcast_reason {
38  	SIB_GET_STATUS_REPLY = 1,
39  	SIB_STATE_CHANGE = 2,
40  	SIB_HELPER_PRE = 3,
41  	SIB_HELPER_POST = 4,
42  	SIB_SYNC_PROGRESS = 5,
43  };
44  
45  /* hack around predefined gcc/cpp "linux=1",
46   * we cannot possibly include <1/drbd_genl.h> */
47  #undef linux
48  
49  #include <linux/drbd.h>
50  #define GENL_MAGIC_VERSION	1
51  #define GENL_MAGIC_FAMILY	drbd
52  #define GENL_MAGIC_FAMILY_HDRSZ	sizeof(struct drbd_genlmsghdr)
53  #define GENL_MAGIC_INCLUDE_FILE <linux/drbd_genl.h>
54  #include <linux/genl_magic_struct.h>
55  
56  #endif
57