Skip to content

Commit 3962a45

Browse files
committed
fabrics: add fabrics config option 'tls'
Add an option 'tls' to the fabrics config to start TLS encryption on the connection. Signed-off-by: Hannes Reinecke <[email protected]>
1 parent 5aea021 commit 3962a45

4 files changed

Lines changed: 19 additions & 1 deletion

File tree

doc/config-schema.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,11 @@
140140
"type": "boolean",
141141
"default": false
142142
},
143+
"tls": {
144+
"description": "Enable TLS encryption",
145+
"type": "boolean",
146+
"default": false
147+
},
143148
"persistent": {
144149
"description": "Create persistent discovery connection",
145150
"type": "boolean"

src/nvme/fabrics.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ static struct nvme_fabrics_config *merge_config(nvme_ctrl_t c,
187187
UPDATE_CFG_OPTION(ctrl_cfg, cfg, disable_sqflow, false);
188188
UPDATE_CFG_OPTION(ctrl_cfg, cfg, hdr_digest, false);
189189
UPDATE_CFG_OPTION(ctrl_cfg, cfg, data_digest, false);
190+
UPDATE_CFG_OPTION(ctrl_cfg, cfg, tls, false);
190191

191192
return ctrl_cfg;
192193
}
@@ -495,7 +496,9 @@ static int build_options(nvme_host_t h, nvme_ctrl_t c, char **argstr)
495496
(!strcmp(transport, "tcp") &&
496497
add_bool_argument(argstr, "hdr_digest", cfg->hdr_digest)) ||
497498
(!strcmp(transport, "tcp") &&
498-
add_bool_argument(argstr, "data_digest", cfg->data_digest))) {
499+
add_bool_argument(argstr, "data_digest", cfg->data_digest)) ||
500+
(!strcmp(transport, "tcp") &&
501+
add_bool_argument(argstr, "tls", cfg->tls))) {
499502
free(*argstr);
500503
return -1;
501504
}
@@ -708,6 +711,11 @@ nvme_ctrl_t nvmf_connect_disc_entry(nvme_host_t h,
708711
if (e->treq & NVMF_TREQ_DISABLE_SQFLOW)
709712
disable_sqflow = true;
710713

714+
if (e->trtype == NVMF_TRTYPE_TCP &&
715+
(e->treq & NVMF_TREQ_REQUIRED ||
716+
e->treq & NVMF_TREQ_NOT_REQUIRED))
717+
c->cfg.tls = true;
718+
711719
ret = nvmf_add_ctrl(h, c, cfg, disable_sqflow);
712720
if (!ret)
713721
return c;

src/nvme/fabrics.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
* @disable_sqflow: Disable controller sq flow control
3434
* @hdr_digest: Generate/verify header digest (TCP)
3535
* @data_digest: Generate/verify data digest (TCP)
36+
* @tls: Start TLS on the connection (TCP)
3637
*/
3738
struct nvme_fabrics_config {
3839
char *host_traddr;
@@ -51,6 +52,7 @@ struct nvme_fabrics_config {
5152
bool disable_sqflow;
5253
bool hdr_digest;
5354
bool data_digest;
55+
bool tls;
5456
};
5557

5658
/**

src/nvme/json.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ static void json_update_attributes(nvme_ctrl_t c,
6262
hdr_digest, val_obj);
6363
JSON_UPDATE_BOOL_OPTION(cfg, key_str,
6464
data_digest, val_obj);
65+
JSON_UPDATE_BOOL_OPTION(cfg, key_str,
66+
tls, val_obj);
6567
if (!strcmp("persistent", key_str) &&
6668
!nvme_ctrl_is_persistent(c))
6769
nvme_ctrl_set_persistent(c, true);
@@ -220,6 +222,7 @@ static void json_update_port(struct json_object *ctrl_array, nvme_ctrl_t c)
220222
JSON_BOOL_OPTION(cfg, port_obj, disable_sqflow);
221223
JSON_BOOL_OPTION(cfg, port_obj, hdr_digest);
222224
JSON_BOOL_OPTION(cfg, port_obj, data_digest);
225+
JSON_BOOL_OPTION(cfg, port_obj, tls);
223226
if (nvme_ctrl_is_persistent(c))
224227
json_object_add_value_bool(port_obj, "persistent", true);
225228
if (nvme_ctrl_is_discovery_ctrl(c))

0 commit comments

Comments
 (0)