From: Daniel Wagner Date: Wed, 18 Jan 2023 09:39:51 +0000 (+0100) Subject: fabrics: Add support for binary output X-Git-Tag: v2.3~19^2~4 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=e7fecb54e50495950923e76c4b946f6849c7a325;p=users%2Fsagi%2Fnvme-cli.git fabrics: Add support for binary output The command line help says we support binary output, thus add this feature. Signed-off-by: Daniel Wagner --- diff --git a/fabrics.c b/fabrics.c index 735d3cd7..3e6ac493 100644 --- a/fabrics.c +++ b/fabrics.c @@ -357,27 +357,42 @@ static int __discover(nvme_ctrl_t c, struct nvme_fabrics_config *defcfg, nvme_subsystem_t s = nvme_ctrl_get_subsystem(c); nvme_host_t h = nvme_subsystem_get_host(s); uint64_t numrec; - int err; - err = nvmf_get_discovery_log(c, &log, MAX_DISC_RETRIES); - if (err) { - if (err > 0) - nvme_show_status(err); - else - fprintf(stderr, "failed to get discovery log: %s\n", - nvme_strerror(errno)); - return err; - } + struct nvme_get_discovery_args args = { + .c = c, + .args_size = sizeof(args), + .max_retries = MAX_DISC_RETRIES, + .result = 0, + .timeout = NVME_DEFAULT_IOCTL_TIMEOUT, + .lsp = 0, + }; + log = nvmf_get_discovery_wargs(&args); + if (!log) { + fprintf(stderr, "failed to get discovery log: %s\n", + nvme_strerror(errno)); + return errno; + } numrec = le64_to_cpu(log->numrec); if (raw) save_discovery_log(raw, log); else if (!connect) { - if (flags == JSON) - json_discovery_log(log, numrec); - else + switch (flags) { + case NORMAL: print_discovery_log(log, numrec); + break; + case JSON: + json_discovery_log(log, numrec); + break; + case BINARY: + d_raw((unsigned char *)log, + sizeof(struct nvmf_discovery_log) + + numrec * sizeof(struct nvmf_disc_log_entry)); + break; + default: + break; + } } else if (connect) { int i;