diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index 8d5619bc7..2efa22e26 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -1121,6 +1121,9 @@ struct spdk_nvme_ctrlr *spdk_nvme_get_ctrlr_by_trid_unsafe( const struct spdk_nvme_transport_id *trid); const struct spdk_nvme_transport *nvme_get_transport(const char *transport_name); +const struct spdk_nvme_transport *nvme_get_first_transport(void); +const struct spdk_nvme_transport *nvme_get_next_transport(const struct spdk_nvme_transport + *transport); /* Transport specific functions */ struct spdk_nvme_ctrlr *nvme_transport_ctrlr_construct(const struct spdk_nvme_transport_id *trid, diff --git a/lib/nvme/nvme_transport.c b/lib/nvme/nvme_transport.c index 3598349e7..7557b6fa6 100644 --- a/lib/nvme/nvme_transport.c +++ b/lib/nvme/nvme_transport.c @@ -46,6 +46,18 @@ struct spdk_nvme_transport { TAILQ_HEAD(nvme_transport_list, spdk_nvme_transport) g_spdk_nvme_transports = TAILQ_HEAD_INITIALIZER(g_spdk_nvme_transports); +const struct spdk_nvme_transport * +nvme_get_first_transport(void) +{ + return TAILQ_FIRST(&g_spdk_nvme_transports); +} + +const struct spdk_nvme_transport * +nvme_get_next_transport(const struct spdk_nvme_transport *transport) +{ + return TAILQ_NEXT(transport, link); +} + /* * Unfortunately, due to NVMe PCIe multiprocess support, we cannot store the * transport object in either the controller struct or the admin qpair. THis means