nvmf: Use spdk_nvme_transport_id
The NVMe-oF target was written before we defined spdk_nvme_transport_id. Now that we have it, go back and replace all of the locations where we individually tracked traddr, trsvcid, trtype, etc. and use a trid. Change-Id: I84334a12c7581f414c1e84680f122fe885a3b9dd Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.gerrithub.io/370744 Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
This commit is contained in:
parent
29f6172a56
commit
1c83074299
@ -428,8 +428,7 @@ spdk_nvmf_construct_subsystem(const char *name, int32_t lcore,
|
||||
for (i = 0; i < num_listen_addresses; i++) {
|
||||
int nic_numa_node = spdk_get_ifaddr_numa_node(addresses[i].traddr);
|
||||
unsigned subsys_numa_node = spdk_env_get_socket_id(app_subsys->lcore);
|
||||
const char *adrfam_str;
|
||||
enum spdk_nvmf_adrfam adrfam;
|
||||
struct spdk_nvme_transport_id trid = {};
|
||||
|
||||
if (nic_numa_node >= 0) {
|
||||
if (subsys_numa_node != (unsigned)nic_numa_node) {
|
||||
@ -443,27 +442,23 @@ spdk_nvmf_construct_subsystem(const char *name, int32_t lcore,
|
||||
}
|
||||
}
|
||||
|
||||
if (addresses[i].transport == NULL) {
|
||||
if (spdk_nvme_transport_id_parse_trtype(&trid.trtype, addresses[i].transport)) {
|
||||
SPDK_ERRLOG("Missing listen address transport type\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
adrfam_str = addresses[i].adrfam;
|
||||
if (adrfam_str == NULL) {
|
||||
adrfam_str = "IPv4";
|
||||
if (spdk_nvme_transport_id_parse_adrfam(&trid.adrfam, addresses[i].adrfam)) {
|
||||
trid.adrfam = SPDK_NVMF_ADRFAM_IPV4;
|
||||
}
|
||||
|
||||
if (spdk_nvme_transport_id_parse_adrfam(&adrfam, adrfam_str)) {
|
||||
SPDK_ERRLOG("Unknown address family '%s'\n", adrfam_str);
|
||||
goto error;
|
||||
}
|
||||
snprintf(trid.traddr, sizeof(trid.traddr), "%s", addresses[i].traddr);
|
||||
snprintf(trid.trsvcid, sizeof(trid.trsvcid), "%s", addresses[i].trsvcid);
|
||||
|
||||
listen_addr = spdk_nvmf_tgt_listen(addresses[i].transport, adrfam,
|
||||
addresses[i].traddr, addresses[i].trsvcid);
|
||||
listen_addr = spdk_nvmf_tgt_listen(&trid);
|
||||
if (listen_addr == NULL) {
|
||||
SPDK_ERRLOG("Failed to listen on transport %s, adrfam %s, traddr %s, trsvcid %s\n",
|
||||
addresses[i].transport,
|
||||
adrfam_str,
|
||||
addresses[i].adrfam,
|
||||
addresses[i].traddr,
|
||||
addresses[i].trsvcid);
|
||||
goto error;
|
||||
|
@ -70,24 +70,19 @@ dump_nvmf_subsystem(struct spdk_json_write_ctx *w, struct nvmf_tgt_subsystem *tg
|
||||
|
||||
TAILQ_FOREACH(allowed_listener, &subsystem->allowed_listeners, link) {
|
||||
listen_addr = allowed_listener->listen_addr;
|
||||
const char *adrfam = spdk_nvme_transport_id_adrfam_str(listen_addr->adrfam);
|
||||
|
||||
spdk_json_write_object_begin(w);
|
||||
/* NOTE: "transport" is kept for compatibility; new code should use "trtype" */
|
||||
spdk_json_write_name(w, "transport");
|
||||
spdk_json_write_string(w, spdk_nvme_transport_id_trtype_str(listen_addr->trtype));
|
||||
spdk_json_write_string(w, spdk_nvme_transport_id_trtype_str(listen_addr->trid.trtype));
|
||||
spdk_json_write_name(w, "trtype");
|
||||
spdk_json_write_string(w, spdk_nvme_transport_id_trtype_str(listen_addr->trtype));
|
||||
|
||||
if (adrfam) {
|
||||
spdk_json_write_name(w, "adrfam");
|
||||
spdk_json_write_string(w, adrfam);
|
||||
}
|
||||
|
||||
spdk_json_write_string(w, spdk_nvme_transport_id_trtype_str(listen_addr->trid.trtype));
|
||||
spdk_json_write_name(w, "adrfam");
|
||||
spdk_json_write_string(w, spdk_nvme_transport_id_adrfam_str(listen_addr->trid.adrfam));
|
||||
spdk_json_write_name(w, "traddr");
|
||||
spdk_json_write_string(w, listen_addr->traddr);
|
||||
spdk_json_write_string(w, listen_addr->trid.traddr);
|
||||
spdk_json_write_name(w, "trsvcid");
|
||||
spdk_json_write_string(w, listen_addr->trsvcid);
|
||||
spdk_json_write_string(w, listen_addr->trid.trsvcid);
|
||||
spdk_json_write_object_end(w);
|
||||
}
|
||||
spdk_json_write_array_end(w);
|
||||
|
@ -68,10 +68,7 @@ typedef void (*spdk_nvmf_subsystem_connect_fn)(void *cb_ctx, struct spdk_nvmf_re
|
||||
typedef void (*spdk_nvmf_subsystem_disconnect_fn)(void *cb_ctx, struct spdk_nvmf_conn *conn);
|
||||
|
||||
struct spdk_nvmf_listen_addr {
|
||||
enum spdk_nvme_transport_type trtype;
|
||||
char *traddr;
|
||||
char *trsvcid;
|
||||
enum spdk_nvmf_adrfam adrfam;
|
||||
struct spdk_nvme_transport_id trid;
|
||||
TAILQ_ENTRY(spdk_nvmf_listen_addr) link;
|
||||
};
|
||||
|
||||
@ -138,8 +135,7 @@ struct spdk_nvmf_subsystem *spdk_nvmf_find_subsystem(const char *subnqn);
|
||||
|
||||
bool spdk_nvmf_subsystem_host_allowed(struct spdk_nvmf_subsystem *subsystem, const char *hostnqn);
|
||||
|
||||
struct spdk_nvmf_listen_addr *spdk_nvmf_tgt_listen(const char *trname, enum spdk_nvmf_adrfam adrfam,
|
||||
const char *traddr, const char *trsvcid);
|
||||
struct spdk_nvmf_listen_addr *spdk_nvmf_tgt_listen(struct spdk_nvme_transport_id *trid);
|
||||
|
||||
int spdk_nvmf_subsystem_add_listener(struct spdk_nvmf_subsystem *subsystem,
|
||||
struct spdk_nvmf_listen_addr *listen_addr);
|
||||
|
@ -99,7 +99,7 @@ nvmf_update_discovery_log(void)
|
||||
entry->subtype = subsystem->subtype;
|
||||
snprintf(entry->subnqn, sizeof(entry->subnqn), "%s", subsystem->subnqn);
|
||||
|
||||
transport = spdk_nvmf_transport_get(listen_addr->trtype);
|
||||
transport = spdk_nvmf_transport_get(listen_addr->trid.trtype);
|
||||
assert(transport != NULL);
|
||||
|
||||
transport->listen_addr_discover(listen_addr, entry);
|
||||
|
@ -97,15 +97,12 @@ spdk_nvmf_tgt_fini(void)
|
||||
}
|
||||
|
||||
struct spdk_nvmf_listen_addr *
|
||||
spdk_nvmf_listen_addr_create(enum spdk_nvme_transport_type trtype,
|
||||
enum spdk_nvmf_adrfam adrfam,
|
||||
const char *traddr,
|
||||
const char *trsvcid)
|
||||
spdk_nvmf_listen_addr_create(struct spdk_nvme_transport_id *trid)
|
||||
{
|
||||
struct spdk_nvmf_listen_addr *listen_addr;
|
||||
const struct spdk_nvmf_transport *transport;
|
||||
|
||||
transport = spdk_nvmf_transport_get(trtype);
|
||||
transport = spdk_nvmf_transport_get(trid->trtype);
|
||||
if (!transport) {
|
||||
return NULL;
|
||||
}
|
||||
@ -115,21 +112,7 @@ spdk_nvmf_listen_addr_create(enum spdk_nvme_transport_type trtype,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
listen_addr->trtype = trtype;
|
||||
listen_addr->adrfam = adrfam;
|
||||
|
||||
listen_addr->traddr = strdup(traddr);
|
||||
if (!listen_addr->traddr) {
|
||||
free(listen_addr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
listen_addr->trsvcid = strdup(trsvcid);
|
||||
if (!listen_addr->trsvcid) {
|
||||
free(listen_addr->traddr);
|
||||
free(listen_addr);
|
||||
return NULL;
|
||||
}
|
||||
listen_addr->trid = *trid;
|
||||
|
||||
return listen_addr;
|
||||
}
|
||||
@ -139,18 +122,10 @@ spdk_nvmf_listen_addr_destroy(struct spdk_nvmf_listen_addr *addr)
|
||||
{
|
||||
const struct spdk_nvmf_transport *transport;
|
||||
|
||||
transport = spdk_nvmf_transport_get(addr->trtype);
|
||||
transport = spdk_nvmf_transport_get(addr->trid.trtype);
|
||||
assert(transport != NULL);
|
||||
transport->listen_addr_remove(addr);
|
||||
|
||||
spdk_nvmf_listen_addr_cleanup(addr);
|
||||
}
|
||||
|
||||
void
|
||||
spdk_nvmf_listen_addr_cleanup(struct spdk_nvmf_listen_addr *addr)
|
||||
{
|
||||
free(addr->trsvcid);
|
||||
free(addr->traddr);
|
||||
free(addr);
|
||||
}
|
||||
|
||||
|
@ -91,10 +91,8 @@ struct spdk_nvmf_tgt {
|
||||
|
||||
extern struct spdk_nvmf_tgt g_nvmf_tgt;
|
||||
|
||||
struct spdk_nvmf_listen_addr *spdk_nvmf_listen_addr_create(enum spdk_nvme_transport_type trtype,
|
||||
enum spdk_nvmf_adrfam adrfam, const char *traddr, const char *trsvcid);
|
||||
struct spdk_nvmf_listen_addr *spdk_nvmf_listen_addr_create(struct spdk_nvme_transport_id *trid);
|
||||
void spdk_nvmf_listen_addr_destroy(struct spdk_nvmf_listen_addr *addr);
|
||||
void spdk_nvmf_listen_addr_cleanup(struct spdk_nvmf_listen_addr *addr);
|
||||
|
||||
#define OBJECT_NVMF_IO 0x30
|
||||
|
||||
|
@ -178,8 +178,7 @@ struct spdk_nvmf_rdma_session {
|
||||
};
|
||||
|
||||
struct spdk_nvmf_rdma_listen_addr {
|
||||
char *traddr;
|
||||
char *trsvcid;
|
||||
struct spdk_nvme_transport_id trid;
|
||||
struct rdma_cm_id *id;
|
||||
struct ibv_device_attr attr;
|
||||
struct ibv_comp_channel *comp_channel;
|
||||
@ -950,8 +949,6 @@ spdk_nvmf_rdma_listen_addr_free(struct spdk_nvmf_rdma_listen_addr *addr)
|
||||
return;
|
||||
}
|
||||
|
||||
free(addr->traddr);
|
||||
free(addr->trsvcid);
|
||||
free(addr);
|
||||
}
|
||||
static int
|
||||
@ -975,8 +972,7 @@ spdk_nvmf_rdma_listen_remove(struct spdk_nvmf_listen_addr *listen_addr)
|
||||
|
||||
pthread_mutex_lock(&g_rdma.lock);
|
||||
TAILQ_FOREACH_SAFE(addr, &g_rdma.listen_addrs, link, tmp) {
|
||||
if ((!strcasecmp(addr->traddr, listen_addr->traddr)) &&
|
||||
(!strcasecmp(addr->trsvcid, listen_addr->trsvcid))) {
|
||||
if (spdk_nvme_transport_id_compare(&listen_addr->trid, &addr->trid) == 0) {
|
||||
assert(addr->ref > 0);
|
||||
addr->ref--;
|
||||
if (!addr->ref) {
|
||||
@ -1016,7 +1012,7 @@ spdk_nvmf_rdma_addr_listen_init(struct spdk_nvmf_rdma_listen_addr *addr)
|
||||
addr->is_listened = true;
|
||||
|
||||
SPDK_NOTICELOG("*** NVMf Target Listening on %s port %d ***\n",
|
||||
addr->traddr, ntohs(rdma_get_src_port(addr->id)));
|
||||
addr->trid.traddr, ntohs(rdma_get_src_port(addr->id)));
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1103,8 +1099,7 @@ spdk_nvmf_rdma_listen(struct spdk_nvmf_listen_addr *listen_addr)
|
||||
pthread_mutex_lock(&g_rdma.lock);
|
||||
assert(g_rdma.event_channel != NULL);
|
||||
TAILQ_FOREACH(addr, &g_rdma.listen_addrs, link) {
|
||||
if ((!strcasecmp(addr->traddr, listen_addr->traddr)) &&
|
||||
(!strcasecmp(addr->trsvcid, listen_addr->trsvcid))) {
|
||||
if (spdk_nvme_transport_id_compare(&listen_addr->trid, &addr->trid) == 0) {
|
||||
addr->ref++;
|
||||
/* Already listening at this address */
|
||||
pthread_mutex_unlock(&g_rdma.lock);
|
||||
@ -1118,19 +1113,7 @@ spdk_nvmf_rdma_listen(struct spdk_nvmf_listen_addr *listen_addr)
|
||||
return -1;
|
||||
}
|
||||
|
||||
addr->traddr = strdup(listen_addr->traddr);
|
||||
if (!addr->traddr) {
|
||||
spdk_nvmf_rdma_listen_addr_free(addr);
|
||||
pthread_mutex_unlock(&g_rdma.lock);
|
||||
return -1;
|
||||
}
|
||||
|
||||
addr->trsvcid = strdup(listen_addr->trsvcid);
|
||||
if (!addr->trsvcid) {
|
||||
spdk_nvmf_rdma_listen_addr_free(addr);
|
||||
pthread_mutex_unlock(&g_rdma.lock);
|
||||
return -1;
|
||||
}
|
||||
addr->trid = listen_addr->trid;
|
||||
|
||||
rc = rdma_create_id(g_rdma.event_channel, &addr->id, addr, RDMA_PS_TCP);
|
||||
if (rc < 0) {
|
||||
@ -1142,8 +1125,8 @@ spdk_nvmf_rdma_listen(struct spdk_nvmf_listen_addr *listen_addr)
|
||||
|
||||
memset(&saddr, 0, sizeof(saddr));
|
||||
saddr.sin_family = AF_INET;
|
||||
saddr.sin_addr.s_addr = inet_addr(addr->traddr);
|
||||
saddr.sin_port = htons((uint16_t)strtoul(addr->trsvcid, NULL, 10));
|
||||
saddr.sin_addr.s_addr = inet_addr(addr->trid.traddr);
|
||||
saddr.sin_port = htons((uint16_t)strtoul(addr->trid.trsvcid, NULL, 10));
|
||||
rc = rdma_bind_addr(addr->id, (struct sockaddr *)&saddr);
|
||||
if (rc < 0) {
|
||||
SPDK_ERRLOG("rdma_bind_addr() failed\n");
|
||||
@ -1197,11 +1180,11 @@ spdk_nvmf_rdma_discover(struct spdk_nvmf_listen_addr *listen_addr,
|
||||
struct spdk_nvmf_discovery_log_page_entry *entry)
|
||||
{
|
||||
entry->trtype = SPDK_NVMF_TRTYPE_RDMA;
|
||||
entry->adrfam = listen_addr->adrfam;
|
||||
entry->adrfam = listen_addr->trid.adrfam;
|
||||
entry->treq.secure_channel = SPDK_NVMF_TREQ_SECURE_CHANNEL_NOT_SPECIFIED;
|
||||
|
||||
spdk_strcpy_pad(entry->trsvcid, listen_addr->trsvcid, sizeof(entry->trsvcid), ' ');
|
||||
spdk_strcpy_pad(entry->traddr, listen_addr->traddr, sizeof(entry->traddr), ' ');
|
||||
spdk_strcpy_pad(entry->trsvcid, listen_addr->trid.trsvcid, sizeof(entry->trsvcid), ' ');
|
||||
spdk_strcpy_pad(entry->traddr, listen_addr->trid.traddr, sizeof(entry->traddr), ' ');
|
||||
|
||||
entry->tsas.rdma.rdma_qptype = SPDK_NVMF_RDMA_QPTYPE_RELIABLE_CONNECTED;
|
||||
entry->tsas.rdma.rdma_prtype = SPDK_NVMF_RDMA_PRTYPE_NONE;
|
||||
|
@ -259,44 +259,33 @@ spdk_nvmf_delete_subsystem(struct spdk_nvmf_subsystem *subsystem)
|
||||
}
|
||||
|
||||
struct spdk_nvmf_listen_addr *
|
||||
spdk_nvmf_tgt_listen(const char *trname, enum spdk_nvmf_adrfam adrfam, const char *traddr,
|
||||
const char *trsvcid)
|
||||
spdk_nvmf_tgt_listen(struct spdk_nvme_transport_id *trid)
|
||||
{
|
||||
struct spdk_nvmf_listen_addr *listen_addr;
|
||||
const struct spdk_nvmf_transport *transport;
|
||||
enum spdk_nvme_transport_type trtype;
|
||||
int rc;
|
||||
|
||||
rc = spdk_nvme_transport_id_parse_trtype(&trtype, trname);
|
||||
if (rc) {
|
||||
SPDK_ERRLOG("Invalid transport type '%s'", trname);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
TAILQ_FOREACH(listen_addr, &g_nvmf_tgt.listen_addrs, link) {
|
||||
if (trtype == listen_addr->trtype &&
|
||||
(listen_addr->adrfam == adrfam) &&
|
||||
(strcmp(listen_addr->traddr, traddr) == 0) &&
|
||||
(strcmp(listen_addr->trsvcid, trsvcid) == 0)) {
|
||||
if (spdk_nvme_transport_id_compare(&listen_addr->trid, trid) == 0) {
|
||||
return listen_addr;
|
||||
}
|
||||
}
|
||||
|
||||
transport = spdk_nvmf_transport_get(trtype);
|
||||
transport = spdk_nvmf_transport_get(trid->trtype);
|
||||
if (!transport) {
|
||||
SPDK_ERRLOG("Unknown transport '%s'\n", trname);
|
||||
SPDK_ERRLOG("Unknown transport '%u'\n", trid->trtype);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
listen_addr = spdk_nvmf_listen_addr_create(trtype, adrfam, traddr, trsvcid);
|
||||
listen_addr = spdk_nvmf_listen_addr_create(trid);
|
||||
if (!listen_addr) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
rc = transport->listen_addr_add(listen_addr);
|
||||
if (rc < 0) {
|
||||
spdk_nvmf_listen_addr_cleanup(listen_addr);
|
||||
SPDK_ERRLOG("Unable to listen on address '%s'\n", traddr);
|
||||
free(listen_addr);
|
||||
SPDK_ERRLOG("Unable to listen on address '%s'\n", trid->traddr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -46,8 +46,7 @@ struct spdk_nvmf_tgt g_nvmf_tgt = {
|
||||
};
|
||||
|
||||
struct spdk_nvmf_listen_addr *
|
||||
spdk_nvmf_listen_addr_create(enum spdk_nvme_transport_type trtype, enum spdk_nvmf_adrfam adrfam,
|
||||
const char *traddr, const char *trsvcid)
|
||||
spdk_nvmf_listen_addr_create(struct spdk_nvme_transport_id *trid)
|
||||
{
|
||||
struct spdk_nvmf_listen_addr *listen_addr;
|
||||
|
||||
@ -56,29 +55,15 @@ spdk_nvmf_listen_addr_create(enum spdk_nvme_transport_type trtype, enum spdk_nvm
|
||||
return NULL;
|
||||
}
|
||||
|
||||
listen_addr->traddr = strdup(traddr);
|
||||
if (!listen_addr->traddr) {
|
||||
free(listen_addr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
listen_addr->trsvcid = strdup(trsvcid);
|
||||
if (!listen_addr->trsvcid) {
|
||||
free(listen_addr->traddr);
|
||||
free(listen_addr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
listen_addr->trtype = trtype;
|
||||
listen_addr->adrfam = adrfam;
|
||||
listen_addr->trid = *trid;
|
||||
|
||||
return listen_addr;
|
||||
}
|
||||
|
||||
void
|
||||
spdk_nvmf_listen_addr_cleanup(struct spdk_nvmf_listen_addr *addr)
|
||||
spdk_nvmf_listen_addr_destroy(struct spdk_nvmf_listen_addr *addr)
|
||||
{
|
||||
return;
|
||||
free(addr);
|
||||
}
|
||||
|
||||
int
|
||||
@ -139,6 +124,13 @@ spdk_nvme_transport_id_parse_trtype(enum spdk_nvme_transport_type *trtype, const
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
spdk_nvme_transport_id_compare(const struct spdk_nvme_transport_id *trid1,
|
||||
const struct spdk_nvme_transport_id *trid2)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
spdk_nvmf_session_destruct(struct spdk_nvmf_session *session)
|
||||
{
|
||||
@ -225,6 +217,7 @@ test_discovery_log(void)
|
||||
struct spdk_nvmf_discovery_log_page *disc_log;
|
||||
struct spdk_nvmf_discovery_log_page_entry *entry;
|
||||
struct spdk_nvmf_listen_addr *listen_addr;
|
||||
struct spdk_nvme_transport_id trid = {};
|
||||
|
||||
/* Reset discovery-related globals */
|
||||
g_nvmf_tgt.discovery_genctr = 0;
|
||||
@ -237,7 +230,11 @@ test_discovery_log(void)
|
||||
NULL, NULL, NULL);
|
||||
SPDK_CU_ASSERT_FATAL(subsystem != NULL);
|
||||
|
||||
listen_addr = spdk_nvmf_tgt_listen("RDMA", SPDK_NVMF_ADRFAM_IPV4, "1234", "5678");
|
||||
trid.trtype = SPDK_NVME_TRANSPORT_RDMA;
|
||||
trid.adrfam = SPDK_NVMF_ADRFAM_IPV4;
|
||||
snprintf(trid.traddr, sizeof(trid.traddr), "1234");
|
||||
snprintf(trid.trsvcid, sizeof(trid.trsvcid), "5678");
|
||||
listen_addr = spdk_nvmf_tgt_listen(&trid);
|
||||
SPDK_CU_ASSERT_FATAL(listen_addr != NULL);
|
||||
|
||||
SPDK_CU_ASSERT_FATAL(spdk_nvmf_subsystem_add_listener(subsystem, listen_addr) == 0);
|
||||
|
@ -46,9 +46,7 @@ SPDK_LOG_REGISTER_TRACE_FLAG("nvmf", SPDK_TRACE_NVMF)
|
||||
struct spdk_nvmf_tgt g_nvmf_tgt;
|
||||
|
||||
struct spdk_nvmf_listen_addr *
|
||||
spdk_nvmf_listen_addr_create(enum spdk_nvme_transport_type trtype, enum spdk_nvmf_adrfam adrfam,
|
||||
const char *traddr,
|
||||
const char *trsvcid)
|
||||
spdk_nvmf_listen_addr_create(struct spdk_nvme_transport_id *trid)
|
||||
{
|
||||
struct spdk_nvmf_listen_addr *listen_addr;
|
||||
|
||||
@ -57,21 +55,7 @@ spdk_nvmf_listen_addr_create(enum spdk_nvme_transport_type trtype, enum spdk_nvm
|
||||
return NULL;
|
||||
}
|
||||
|
||||
listen_addr->traddr = strdup(traddr);
|
||||
if (!listen_addr->traddr) {
|
||||
free(listen_addr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
listen_addr->trsvcid = strdup(trsvcid);
|
||||
if (!listen_addr->trsvcid) {
|
||||
free(listen_addr->traddr);
|
||||
free(listen_addr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
listen_addr->trtype = trtype;
|
||||
listen_addr->adrfam = adrfam;
|
||||
listen_addr->trid = *trid;
|
||||
|
||||
return listen_addr;
|
||||
}
|
||||
@ -79,17 +63,9 @@ spdk_nvmf_listen_addr_create(enum spdk_nvme_transport_type trtype, enum spdk_nvm
|
||||
void
|
||||
spdk_nvmf_listen_addr_destroy(struct spdk_nvmf_listen_addr *addr)
|
||||
{
|
||||
free(addr->trsvcid);
|
||||
free(addr->traddr);
|
||||
free(addr);
|
||||
}
|
||||
|
||||
void
|
||||
spdk_nvmf_listen_addr_cleanup(struct spdk_nvmf_listen_addr *addr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static int
|
||||
test_transport1_listen_addr_add(struct spdk_nvmf_listen_addr *listen_addr)
|
||||
{
|
||||
@ -135,6 +111,13 @@ spdk_nvme_transport_id_parse_trtype(enum spdk_nvme_transport_type *trtype, const
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
spdk_nvme_transport_id_compare(const struct spdk_nvme_transport_id *trid1,
|
||||
const struct spdk_nvme_transport_id *trid2)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t
|
||||
spdk_nvme_ctrlr_process_admin_completions(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
@ -181,21 +164,21 @@ static void
|
||||
test_spdk_nvmf_tgt_listen(void)
|
||||
{
|
||||
struct spdk_nvmf_listen_addr *listen_addr;
|
||||
struct spdk_nvme_transport_id trid = {};
|
||||
|
||||
/* Invalid trname */
|
||||
enum spdk_nvmf_adrfam adrfam = SPDK_NVMF_ADRFAM_IPV4;
|
||||
const char *traddr = "192.168.100.1";
|
||||
const char *trsvcid = "4420";
|
||||
CU_ASSERT(spdk_nvmf_tgt_listen("INVALID", adrfam, traddr, trsvcid) == NULL);
|
||||
/* Invalid trtype */
|
||||
trid.trtype = 55;
|
||||
trid.adrfam = SPDK_NVMF_ADRFAM_IPV4;
|
||||
snprintf(trid.traddr, sizeof(trid.traddr), "192.168.100.1");
|
||||
snprintf(trid.trsvcid, sizeof(trid.trsvcid), "4420");
|
||||
CU_ASSERT(spdk_nvmf_tgt_listen(&trid) == NULL);
|
||||
|
||||
/* Listen addr is not create and create valid listen addr */
|
||||
adrfam = SPDK_NVMF_ADRFAM_IPV4;
|
||||
traddr = "192.168.3.11";
|
||||
trsvcid = "3320";
|
||||
listen_addr = spdk_nvmf_tgt_listen("RDMA", adrfam, traddr, trsvcid);
|
||||
trid.trtype = SPDK_NVME_TRANSPORT_RDMA;
|
||||
trid.adrfam = SPDK_NVMF_ADRFAM_IPV4;
|
||||
snprintf(trid.traddr, sizeof(trid.traddr), "192.168.100.1");
|
||||
snprintf(trid.trsvcid, sizeof(trid.trsvcid), "4420");
|
||||
listen_addr = spdk_nvmf_tgt_listen(&trid);
|
||||
SPDK_CU_ASSERT_FATAL(listen_addr != NULL);
|
||||
CU_ASSERT(listen_addr->traddr != NULL);
|
||||
CU_ASSERT(listen_addr->trsvcid != NULL);
|
||||
spdk_nvmf_listen_addr_destroy(listen_addr);
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user