diff --git a/include/spdk/nvme.h b/include/spdk/nvme.h index 89ae2061a..196ac954a 100644 --- a/include/spdk/nvme.h +++ b/include/spdk/nvme.h @@ -192,6 +192,9 @@ enum spdk_nvme_transport_type { SPDK_NVME_TRANSPORT_FC = SPDK_NVMF_TRTYPE_FC, }; +/* typedef added for coding style reasons */ +typedef enum spdk_nvme_transport_type spdk_nvme_transport_type_t; + /** * NVMe transport identifier. * diff --git a/include/spdk/nvmf.h b/include/spdk/nvmf.h index 17fa347aa..eda95f8a4 100644 --- a/include/spdk/nvmf.h +++ b/include/spdk/nvmf.h @@ -747,6 +747,43 @@ int spdk_nvmf_transport_destroy(struct spdk_nvmf_transport *transport); struct spdk_nvmf_transport *spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt, enum spdk_nvme_transport_type type); +/** + * Get the first transport registered with the given target + * + * \param tgt The NVMe-oF target + * + * \return The first transport registered on the target + */ +struct spdk_nvmf_transport *spdk_nvmf_transport_get_first(struct spdk_nvmf_tgt *tgt); + +/** + * Get the next transport in a target's list. + * + * \param transport A handle to a transport object + * + * \return The next transport associated with the NVMe-oF target + */ +struct spdk_nvmf_transport *spdk_nvmf_transport_get_next(struct spdk_nvmf_transport *transport); + +/** + * Get the opts for a given transport. + * + * \param transport The transport to query + * + * \return The opts associated with the given transport + */ +const struct spdk_nvmf_transport_opts *spdk_nvmf_get_transport_opts(struct spdk_nvmf_transport + *transport); + +/** + * Get the transport type for a given transport. + * + * \param transport The transport to query + * + * \return the transport type for the given transport + */ +spdk_nvme_transport_type_t spdk_nvmf_get_transport_type(struct spdk_nvmf_transport *transport); + /** * Function to be called once transport add is complete * diff --git a/lib/nvmf/transport.c b/lib/nvmf/transport.c index af4660c96..f01d67ac5 100644 --- a/lib/nvmf/transport.c +++ b/lib/nvmf/transport.c @@ -62,6 +62,18 @@ spdk_nvmf_get_transport_ops(enum spdk_nvme_transport_type type) return NULL; } +const struct spdk_nvmf_transport_opts * +spdk_nvmf_get_transport_opts(struct spdk_nvmf_transport *transport) +{ + return &transport->opts; +} + +spdk_nvme_transport_type_t +spdk_nvmf_get_transport_type(struct spdk_nvmf_transport *transport) +{ + return transport->ops->type; +} + struct spdk_nvmf_transport * spdk_nvmf_transport_create(enum spdk_nvme_transport_type type, struct spdk_nvmf_transport_opts *opts) @@ -100,6 +112,18 @@ spdk_nvmf_transport_create(enum spdk_nvme_transport_type type, return transport; } +struct spdk_nvmf_transport * +spdk_nvmf_transport_get_first(struct spdk_nvmf_tgt *tgt) +{ + return TAILQ_FIRST(&tgt->transports); +} + +struct spdk_nvmf_transport * +spdk_nvmf_transport_get_next(struct spdk_nvmf_transport *transport) +{ + return TAILQ_NEXT(transport, link); +} + int spdk_nvmf_transport_destroy(struct spdk_nvmf_transport *transport) {