case NVMF_TRTYPE_FC:
switch (e->adrfam) {
case NVMF_ADDR_FAMILY_FC:
- nvme_chomp(e->traddr, NVMF_TRADDR_SIZE),
+ nvme_chomp(e->traddr, NVMF_TRADDR_SIZE);
traddr = e->traddr;
- trsvcid = NULL;
break;
default:
nvme_msg(h->r, LOG_ERR,
return NULL;
}
case NVMF_TRTYPE_LOOP:
+ nvme_chomp(e->traddr, NVMF_TRADDR_SIZE);
+ traddr = strlen(e->traddr) ? e->traddr : NULL;
break;
default:
nvme_msg(h->r, LOG_ERR, "skipping unsupported transport %d\n",
goto out_free_name;
}
- if (strcmp(c->transport, "loop")) {
- c->address = nvme_get_attr(path, "address");
- if (!c->address) {
- errno = ENVME_CONNECT_INVAL_TR;
- ret = -1;
- goto out_free_name;
- }
+ c->address = nvme_get_attr(path, "address");
+ if (!c->address && strcmp(c->transport, "loop")) {
+ errno = ENVME_CONNECT_INVAL_TR;
+ ret = -1;
+ goto out_free_name;
}
subsys_name = nvme_ctrl_lookup_subsystem_name(h->r, name);
errno = ENXIO;
return NULL;
}
- if (!strcmp(transport, "loop"))
- goto skip_address;
/* Parse 'address' string into components */
addr = nvme_get_attr(path, "address");
if (!addr) {
char *rpath = NULL, *p = NULL, *_a = NULL;
+ /* loop transport might not have an address */
+ if (!strcmp(transport, "loop"))
+ goto skip_address;
+
/* Older kernel don't support pcie transport addresses */
if (strcmp(transport, "pcie")) {
free(transport);