summaryrefslogtreecommitdiffstats
path: root/src/rgw/rgw_kmip_client.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /src/rgw/rgw_kmip_client.h
parentInitial commit. (diff)
downloadceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz
ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/rgw/rgw_kmip_client.h')
-rw-r--r--src/rgw/rgw_kmip_client.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/rgw/rgw_kmip_client.h b/src/rgw/rgw_kmip_client.h
new file mode 100644
index 000000000..299292113
--- /dev/null
+++ b/src/rgw/rgw_kmip_client.h
@@ -0,0 +1,65 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab ft=cpp
+
+#pragma once
+
+class RGWKMIPManager;
+
+class RGWKMIPTransceiver {
+public:
+ enum kmip_operation {
+ CREATE,
+ LOCATE,
+ GET,
+ GET_ATTRIBUTES,
+ GET_ATTRIBUTE_LIST,
+ DESTROY
+ };
+ CephContext *cct;
+ kmip_operation operation;
+ char *name = 0;
+ char *unique_id = 0;
+ // output - must free
+ char *out = 0; // unique_id, several
+ struct { // unique_ids, locate
+ char **strings;
+ int string_count;
+ } outlist[1] = {{0, 0}};
+ struct { // key, get
+ unsigned char *data;
+ int keylen;
+ } outkey[1] = {0, 0};
+ // end must free
+ int ret;
+ bool done;
+ ceph::mutex lock = ceph::make_mutex("rgw_kmip_req::lock");
+ ceph::condition_variable cond;
+
+ int wait(optional_yield y);
+ RGWKMIPTransceiver(CephContext * const cct,
+ kmip_operation operation)
+ : cct(cct),
+ operation(operation),
+ ret(-EDOM),
+ done(false)
+ {}
+ ~RGWKMIPTransceiver();
+
+ int send();
+ int process(optional_yield y);
+};
+
+class RGWKMIPManager {
+protected:
+ CephContext *cct;
+ bool is_started = false;
+ RGWKMIPManager(CephContext *cct) : cct(cct) {};
+public:
+ virtual ~RGWKMIPManager() { };
+ virtual int start() = 0;
+ virtual void stop() = 0;
+ virtual int add_request(RGWKMIPTransceiver*) = 0;
+};
+
+void rgw_kmip_client_init(RGWKMIPManager &);
+void rgw_kmip_client_cleanup();