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_ */