Commit 2b14ffc3 authored by Konrad Sztyber's avatar Konrad Sztyber Committed by Jim Harris
Browse files

nvmf: method for getting DH-HMAC-CHAP keys



This is a helper function that returns host's key in a thread-safe
manner.  To ensure that a key object remains valid, even if the host is
removed immediately after calling this function, it's duplicated and
users are required to release it with spdk_keyring_put_key().

Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I2b56c1835c119b0dcf134ce45d93792710bd1cf0
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22667


Reviewed-by: default avatarSeung yeon Shin <syeon.shin@samsung.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarBen Walker <ben@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 091d5877
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -413,6 +413,7 @@ void nvmf_subsystem_remove_all_listeners(struct spdk_nvmf_subsystem *subsystem,
struct spdk_nvmf_ctrlr *nvmf_subsystem_get_ctrlr(struct spdk_nvmf_subsystem *subsystem,
		uint16_t cntlid);
bool nvmf_subsystem_host_auth_required(struct spdk_nvmf_subsystem *subsystem, const char *hostnqn);
struct spdk_key *nvmf_subsystem_get_dhchap_key(struct spdk_nvmf_subsystem *subsys, const char *nqn);
struct spdk_nvmf_subsystem_listener *nvmf_subsystem_find_listener(
	struct spdk_nvmf_subsystem *subsystem,
	const struct spdk_nvme_transport_id *trid);
+16 −0
Original line number Diff line number Diff line
@@ -1232,6 +1232,22 @@ nvmf_subsystem_host_auth_required(struct spdk_nvmf_subsystem *subsystem, const c
	return status;
}

struct spdk_key *
nvmf_subsystem_get_dhchap_key(struct spdk_nvmf_subsystem *subsystem, const char *hostnqn)
{
	struct spdk_nvmf_host *host;
	struct spdk_key *key = NULL;

	pthread_mutex_lock(&subsystem->mutex);
	host = nvmf_subsystem_find_host(subsystem, hostnqn);
	if (host != NULL && host->dhchap_key != NULL) {
		key = spdk_key_dup(host->dhchap_key);
	}
	pthread_mutex_unlock(&subsystem->mutex);

	return key;
}

struct spdk_nvmf_host *
spdk_nvmf_subsystem_get_first_host(struct spdk_nvmf_subsystem *subsystem)
{