1 /*
2 * This file and its contents are supplied under the terms of the
3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 * You may only use this file in accordance with the terms of version
5 * 1.0 of the CDDL.
6 *
7 * A full copy of the text of the CDDL should have accompanied this
8 * source. A copy of the CDDL is also available via the Internet at
9 * http://www.illumos.org/license/CDDL.
10 */
11
12 /*
13 * Copyright 2017 Nexenta Systems, Inc. All rights reserved.
14 */
15
16 #ifndef _KRRP_PARAMS_H_
17 #define _KRRP_PARAMS_H_
18
19 #ifndef _KERNEL
20 #include <libnvpair.h>
21 #else
22 #include <sys/nvpair.h>
23 #endif
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 #define KRRP_PARAM_MAP(X) \
30 X(SVC_ENABLED, BOOLEAN) \
31 X(SRV_RUNNING, BOOLEAN) \
32 \
33 X(LISTENING_ADDRESS, STRING) \
34 X(REMOTE_HOST, STRING) \
35 X(PORT, UINT16) \
36 X(CONN_TIMEOUT, UINT32) \
37 \
38 X(DBLK_DATA_SIZE, UINT32) \
39 X(DBLK_HEAD_SIZE, UINT32) \
40 X(DBLKS_PER_PDU, UINT16) \
41 X(MAX_MEMORY, UINT16) \
42 X(USE_PREALLOCATION, BOOLEAN) \
43 X(DISABLE_FLOW_CONTROL, BOOLEAN) \
44 X(FAKE_MODE, BOOLEAN) \
45 X(FAKE_DATA_SIZE, UINT64) \
46 \
47 X(SESS_ID, STRING) \
48 X(SESS_KSTAT_ID, STRING) \
49 X(SESS_COMPOUND, BOOLEAN) \
50 X(SESS_SENDER, BOOLEAN) \
51 X(SESS_RUNNING, BOOLEAN) \
52 X(SESS_STARTED, BOOLEAN) \
53 X(SESSIONS, NVLIST_ARRAY) \
54 \
55 X(ERROR_SRC, UINT32) \
56 X(ERROR_CODE, INT32) \
57 X(ERROR_NAME, STRING) \
58 X(ERROR_EXCODE, INT32) \
59 X(ERROR_FLAGS, UINT32) \
60 X(ERROR_MSG, STRING) \
61 \
62 X(SRC_DATASET, STRING) \
63 X(DST_DATASET, STRING) \
64 X(SRC_SNAPSHOT, STRING) \
65 X(COMMON_SNAPSHOT, STRING) \
66 X(FORCE_RECEIVE, BOOLEAN) \
67 X(SEND_RECURSIVE, BOOLEAN) \
68 X(SEND_PROPERTIES, BOOLEAN) \
69 X(INCLUDE_ALL_SNAPSHOTS, BOOLEAN) \
70 X(ENABLE_STREAM_CHKSUM, BOOLEAN) \
71 X(STREAM_EMBEDDED_BLOCKS, BOOLEAN) \
72 X(STREAM_COMPRESSED_BLOCKS, BOOLEAN) \
73 X(STREAM_LARGE_BLOCKS, BOOLEAN) \
74 X(IGNORE_PROPS_LIST, NVLIST) \
75 X(REPLACE_PROPS_LIST, NVLIST) \
76 X(RESUME_TOKEN, STRING) \
77 X(SKIP_SNAPS_MASK, STRING) \
78 \
79 X(ONLY_ONCE, BOOLEAN) \
80 X(GRACEFUL_SHUTDOWN, BOOLEAN) \
81 X(UEVENT_TYPE, UINT32) \
82 \
83 X(AUTH_REQUIRED, BOOLEAN) \
84 X(AUTH_DATA, STRING) \
85 \
86 X(CFG_TYPE, INT32) \
87 \
88 X(THROTTLE, UINT32) \
89 \
90 X(SESS_PRIVATE_DATA, NVLIST) \
91 \
92 X(STREAM_KEEP_SNAPS, UINT32) \
93 \
94 X(STREAM_DISCARD_HEAD, BOOLEAN) \
95 X(STREAM_LEAVE_TAIL, BOOLEAN) \
96
97 typedef enum {
98 KRRP_PARAM_UNKNOWN = 0,
99 #define KRRP_PARAM_EXPAND(enum_name, dtype) KRRP_PARAM_##enum_name,
100 KRRP_PARAM_MAP(KRRP_PARAM_EXPAND)
101 #undef KRRP_PARAM_EXPAND
102 KRRP_PARAM_LAST /* To exclude lint-errors */
103 } krrp_param_t;
104
105 typedef struct krrp_param_nvlist_array_s {
106 nvlist_t **array;
107 uint_t nelem;
108 } krrp_param_array_t;
109
110 int krrp_param_get(krrp_param_t, nvlist_t *, void *);
111 int krrp_param_put(krrp_param_t, nvlist_t *, void *);
112 boolean_t krrp_param_exists(krrp_param_t, nvlist_t *);
113
114 #ifdef __cplusplus
115 }
116 #endif
117
118 #endif /* _KRRP_PARAMS_H_ */