Skip to content

Commit

Permalink
fabrics: add 'concat' option
Browse files Browse the repository at this point in the history
Add an option 'concat' to enable secure concatenation for TCP.

Signed-off-by: Hannes Reinecke <[email protected]>
  • Loading branch information
hreinecke committed Jan 23, 2024
1 parent 53e3a65 commit fad70ea
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 1 deletion.
5 changes: 5 additions & 0 deletions doc/config-schema.json.in
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,11 @@
"type": "boolean",
"default": false
},
"concat": {
"description": "Enable secure concatenation",
"type": "boolean",
"default": false
},
"persistent": {
"description": "Create persistent discovery connection",
"type": "boolean"
Expand Down
7 changes: 6 additions & 1 deletion src/nvme/fabrics.c
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,7 @@ static struct nvme_fabrics_config *merge_config(nvme_ctrl_t c,
MERGE_CFG_OPTION(ctrl_cfg, cfg, hdr_digest, false);
MERGE_CFG_OPTION(ctrl_cfg, cfg, data_digest, false);
MERGE_CFG_OPTION(ctrl_cfg, cfg, tls, false);
MERGE_CFG_OPTION(ctrl_cfg, cfg, concat, false);

return ctrl_cfg;
}
Expand Down Expand Up @@ -289,6 +290,7 @@ void nvmf_update_config(nvme_ctrl_t c, const struct nvme_fabrics_config *cfg)
UPDATE_CFG_OPTION(ctrl_cfg, cfg, hdr_digest, false);
UPDATE_CFG_OPTION(ctrl_cfg, cfg, data_digest, false);
UPDATE_CFG_OPTION(ctrl_cfg, cfg, tls, false);
UPDATE_CFG_OPTION(ctrl_cfg, cfg, concat, false);
}

static int __add_bool_argument(char **argstr, char *tok, bool arg)
Expand Down Expand Up @@ -637,7 +639,9 @@ static int build_options(nvme_host_t h, nvme_ctrl_t c, char **argstr)
(!strcmp(transport, "tcp") &&
add_bool_argument(r, argstr, data_digest, cfg->data_digest)) ||
(!strcmp(transport, "tcp") &&
add_bool_argument(r, argstr, tls, cfg->tls))) {
add_bool_argument(r, argstr, tls, cfg->tls)) ||
(!strcmp(transport, "tcp") &&
add_bool_argument(r, argstr, concat, cfg->concat))) {
free(*argstr);
return -1;
}
Expand Down Expand Up @@ -705,6 +709,7 @@ static int __nvmf_supported_options(nvme_root_t r)
nvme_msg(r, LOG_DEBUG, "%s ", v);

parse_option(r, v, cntlid);
parse_option(r, v, concat);
parse_option(r, v, ctrl_loss_tmo);
parse_option(r, v, data_digest);
parse_option(r, v, dhchap_ctrl_secret);
Expand Down
2 changes: 2 additions & 0 deletions src/nvme/fabrics.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
* @hdr_digest: Generate/verify header digest (TCP)
* @data_digest: Generate/verify data digest (TCP)
* @tls: Start TLS on the connection (TCP)
* @concat: Enable secure concatenation (TCP)
*/
struct nvme_fabrics_config {
char *host_traddr;
Expand All @@ -63,6 +64,7 @@ struct nvme_fabrics_config {
bool hdr_digest;
bool data_digest;
bool tls;
bool concat;
};

/**
Expand Down
4 changes: 4 additions & 0 deletions src/nvme/json.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ static void json_update_attributes(nvme_ctrl_t c,
data_digest, val_obj);
JSON_UPDATE_BOOL_OPTION(cfg, key_str,
tls, val_obj);
JSON_UPDATE_BOOL_OPTION(cfg, key_str,
concat, val_obj);
if (!strcmp("persistent", key_str) &&
!nvme_ctrl_is_persistent(c))
nvme_ctrl_set_persistent(c, true);
Expand Down Expand Up @@ -325,6 +327,7 @@ static void json_update_port(struct json_object *ctrl_array, nvme_ctrl_t c)
JSON_BOOL_OPTION(cfg, port_obj, hdr_digest);
JSON_BOOL_OPTION(cfg, port_obj, data_digest);
JSON_BOOL_OPTION(cfg, port_obj, tls);
JSON_BOOL_OPTION(cfg, port_obj, concat);
if (nvme_ctrl_is_persistent(c))
json_object_object_add(port_obj, "persistent",
json_object_new_boolean(true));
Expand Down Expand Up @@ -501,6 +504,7 @@ static void json_dump_ctrl(struct json_object *ctrl_array, nvme_ctrl_t c)
JSON_BOOL_OPTION(cfg, ctrl_obj, hdr_digest);
JSON_BOOL_OPTION(cfg, ctrl_obj, data_digest);
JSON_BOOL_OPTION(cfg, ctrl_obj, tls);
JSON_BOOL_OPTION(cfg, ctrl_obj, concat);
if (nvme_ctrl_is_persistent(c))
json_object_object_add(ctrl_obj, "persistent",
json_object_new_boolean(true));
Expand Down
1 change: 1 addition & 0 deletions src/nvme/private.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ struct nvme_host {

struct nvme_fabric_options {
bool cntlid;
bool concat;
bool ctrl_loss_tmo;
bool data_digest;
bool dhchap_ctrl_secret;
Expand Down

0 comments on commit fad70ea

Please sign in to comment.