From 4baf5962e99778f6fac18e0cfaec2ef52d50af2d Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Wed, 1 Feb 2017 10:16:20 -0700 Subject: [PATCH] nvmf_tgt: Use new ip parsing utility function Change-Id: Ia6575f8d7fb8be8002a5c1fec0abf04f837a0545 Signed-off-by: Ben Walker --- app/nvmf_tgt/conf.c | 117 +++----------------------------------------- 1 file changed, 8 insertions(+), 109 deletions(-) diff --git a/app/nvmf_tgt/conf.c b/app/nvmf_tgt/conf.c index a0ddf4f1f..8315bce48 100644 --- a/app/nvmf_tgt/conf.c +++ b/app/nvmf_tgt/conf.c @@ -50,6 +50,7 @@ #include "spdk/bdev.h" #include "spdk/nvme.h" #include "spdk/nvmf.h" +#include "spdk/string.h" #define MAX_LISTEN_ADDRESSES 255 #define MAX_HOSTS 255 @@ -232,108 +233,6 @@ spdk_nvmf_parse_nvmf_tgt(void) return 0; } -static int -spdk_nvmf_parse_addr(char *listen_addr, char **host, char **port) -{ - int n, len; - const char *p, *q; - - if (listen_addr == NULL) { - SPDK_ERRLOG("Invalid listen addr for Fabric Interface (NULL)\n"); - return -1; - } - - *host = NULL; - *port = NULL; - - if (listen_addr[0] == '[') { - /* IPv6 */ - p = strchr(listen_addr + 1, ']'); - if (p == NULL) { - return -1; - } - p++; - n = p - listen_addr; - *host = calloc(1, n + 1); - if (!*host) { - return -1; - } - memcpy(*host, listen_addr, n); - (*host)[n] = '\0'; - if (p[0] == '\0') { - *port = calloc(1, PORTNUMSTRLEN); - if (!*port) { - free(*host); - return -1; - } - snprintf(*port, PORTNUMSTRLEN, "%d", SPDK_NVMF_DEFAULT_SIN_PORT); - } else { - if (p[0] != ':') { - free(*host); - return -1; - } - q = strchr(listen_addr, '@'); - if (q == NULL) { - q = listen_addr + strlen(listen_addr); - } - len = q - p - 1; - - *port = calloc(1, len + 1); - if (!*port) { - free(*host); - return -1; - } - memcpy(*port, p + 1, len); - } - } else { - /* IPv4 */ - p = strchr(listen_addr, ':'); - if (p == NULL) { - p = listen_addr + strlen(listen_addr); - } - n = p - listen_addr; - *host = calloc(1, n + 1); - if (!*host) { - return -1; - } - memcpy(*host, listen_addr, n); - (*host)[n] = '\0'; - if (p[0] == '\0') { - *port = calloc(1, PORTNUMSTRLEN); - if (!*port) { - free(*host); - return -1; - } - snprintf(*port, PORTNUMSTRLEN, "%d", SPDK_NVMF_DEFAULT_SIN_PORT); - } else { - if (p[0] != ':') { - free(*host); - return -1; - } - q = strchr(listen_addr, '@'); - if (q == NULL) { - q = listen_addr + strlen(listen_addr); - } - - if (q == p) { - free(*host); - return -1; - } - - len = q - p - 1; - *port = calloc(1, len + 1); - if (!*port) { - free(*host); - return -1; - } - memcpy(*port, p + 1, len); - - } - } - - return 0; -} - static bool probe_cb(void *cb_ctx, const struct spdk_nvme_transport_id *trid, struct spdk_nvme_ctrlr_opts *opts) @@ -489,7 +388,7 @@ spdk_nvmf_parse_subsystem(struct spdk_conf_section *sp) /* Parse Listen sections */ for (i = 0; i < MAX_LISTEN_ADDRESSES; i++) { char *transport_name, *listen_addr; - char *traddr, *trsvcid; + const char *traddr, *trsvcid; int numa_node = -1; transport_name = spdk_conf_section_get_nmval(sp, "Listen", i, 0); @@ -499,9 +398,11 @@ spdk_nvmf_parse_subsystem(struct spdk_conf_section *sp) break; } - ret = spdk_nvmf_parse_addr(listen_addr, &traddr, &trsvcid); + listen_addr = strdup(listen_addr); + + ret = spdk_parse_ip_addr(listen_addr, &traddr, &trsvcid); if (ret < 0) { - SPDK_ERRLOG("Unable to parse transport address '%s'\n", listen_addr); + SPDK_ERRLOG("Unable to parse listen address '%s'\n", listen_addr); continue; } @@ -522,12 +423,10 @@ spdk_nvmf_parse_subsystem(struct spdk_conf_section *sp) if (ret < 0) { SPDK_ERRLOG("Failed to listen on traddr=%s, trsvcid=%s\n", traddr, trsvcid); - free(traddr); - free(trsvcid); + free(listen_addr); return -1; } - free(traddr); - free(trsvcid); + free(listen_addr); } /* Parse Host sections */