From b72893a6f200da99adeed1c378db8c5d44f688cb Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Wed, 25 Sep 2019 13:53:34 +0900 Subject: [PATCH] lib/iscsi: Portal group holds CHAP params and passes them to connections This is another preparation to support per portal group CHAP authentication for discovery session. Add CHAP params into struct spdk_iscsi_portal_grp, and initialize them by global parameters at spdk_iscsi_portal_grp_create(). Copy CHAP params from portal group to connection at spdk_iscsi_conn_construct(). Signed-off-by: Shuhei Matsumoto Change-Id: I1ecb812266ac3d090f8e6db21d1d6a090f1811d9 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/469368 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Ben Walker --- lib/iscsi/conn.c | 8 ++++---- lib/iscsi/portal_grp.c | 7 +++++++ lib/iscsi/portal_grp.h | 8 ++++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/iscsi/conn.c b/lib/iscsi/conn.c index debfd34bb..d7f602a08 100644 --- a/lib/iscsi/conn.c +++ b/lib/iscsi/conn.c @@ -222,10 +222,10 @@ spdk_iscsi_conn_construct(struct spdk_iscsi_portal *portal, conn->nop_outstanding = false; conn->data_out_cnt = 0; conn->data_in_cnt = 0; - conn->disable_chap = g_spdk_iscsi.disable_chap; - conn->require_chap = g_spdk_iscsi.require_chap; - conn->mutual_chap = g_spdk_iscsi.mutual_chap; - conn->chap_group = g_spdk_iscsi.chap_group; + conn->disable_chap = portal->group->disable_chap; + conn->require_chap = portal->group->require_chap; + conn->mutual_chap = portal->group->mutual_chap; + conn->chap_group = portal->group->chap_group; pthread_mutex_unlock(&g_spdk_iscsi.mutex); conn->MaxRecvDataSegmentLength = 8192; /* RFC3720(12.12) */ diff --git a/lib/iscsi/portal_grp.c b/lib/iscsi/portal_grp.c index e9d5e0e3c..31bbddc41 100644 --- a/lib/iscsi/portal_grp.c +++ b/lib/iscsi/portal_grp.c @@ -366,6 +366,13 @@ spdk_iscsi_portal_grp_create(int tag) pg->ref = 0; pg->tag = tag; + pthread_mutex_lock(&g_spdk_iscsi.mutex); + pg->disable_chap = g_spdk_iscsi.disable_chap; + pg->require_chap = g_spdk_iscsi.require_chap; + pg->mutual_chap = g_spdk_iscsi.mutual_chap; + pg->chap_group = g_spdk_iscsi.chap_group; + pthread_mutex_unlock(&g_spdk_iscsi.mutex); + TAILQ_INIT(&pg->head); return pg; diff --git a/lib/iscsi/portal_grp.h b/lib/iscsi/portal_grp.h index 1c6262db0..726277ea5 100644 --- a/lib/iscsi/portal_grp.h +++ b/lib/iscsi/portal_grp.h @@ -53,8 +53,12 @@ struct spdk_iscsi_portal { }; struct spdk_iscsi_portal_grp { - int ref; - int tag; + int ref; + int tag; + bool disable_chap; + bool require_chap; + bool mutual_chap; + int32_t chap_group; TAILQ_ENTRY(spdk_iscsi_portal_grp) tailq; TAILQ_HEAD(, spdk_iscsi_portal) head; };