nvme: export transport ID trtype and adrfam parsers

Change-Id: I8d417c5baa68832c568c3df0927d84e2f44bb887
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
Daniel Verkamp 2017-03-01 13:11:54 -07:00 committed by Ben Walker
parent 007196152f
commit a3a3d7dddf
2 changed files with 32 additions and 6 deletions

View File

@ -195,6 +195,24 @@ struct spdk_nvme_transport_id {
*/
int spdk_nvme_transport_id_parse(struct spdk_nvme_transport_id *trid, const char *str);
/**
* Parse the string representation of a transport ID tranport type.
*
* \param trtype Output transport type (allocated by caller).
* \param str Input string representation of transport type (e.g. "PCIe", "RDMA")
* \return 0 if parsing was successful and trtype is filled out, or negated errno values on failure.
*/
int spdk_nvme_transport_id_parse_trtype(enum spdk_nvme_transport_type *trtype, const char *str);
/**
* Parse the string representation of a tranport ID address family.
*
* \param adrfam Output address family (allocated by caller).
* \param str Input string representation of address family (e.g. "IPv4", "IPv6")
* \return 0 if parsing was successful and adrfam is filled out, or negated errno values on failure.
*/
int spdk_nvme_transport_id_parse_adrfam(enum spdk_nvmf_adrfam *adrfam, const char *str);
/**
* Determine whether the NVMe library can handle a specific NVMe over Fabrics transport type.
*

View File

@ -443,9 +443,13 @@ spdk_nvme_probe(const struct spdk_nvme_transport_id *trid, void *cb_ctx,
return rc;
}
static int
parse_trtype(enum spdk_nvme_transport_type *trtype, const char *str)
int
spdk_nvme_transport_id_parse_trtype(enum spdk_nvme_transport_type *trtype, const char *str)
{
if (trtype == NULL || str == NULL) {
return -EINVAL;
}
if (strcasecmp(str, "PCIe") == 0) {
*trtype = SPDK_NVME_TRANSPORT_PCIE;
} else if (strcasecmp(str, "RDMA") == 0) {
@ -456,9 +460,13 @@ parse_trtype(enum spdk_nvme_transport_type *trtype, const char *str)
return 0;
}
static int
parse_adrfam(enum spdk_nvmf_adrfam *adrfam, const char *str)
int
spdk_nvme_transport_id_parse_adrfam(enum spdk_nvmf_adrfam *adrfam, const char *str)
{
if (adrfam == NULL || str == NULL) {
return -EINVAL;
}
if (strcasecmp(str, "IPv4") == 0) {
*adrfam = SPDK_NVMF_ADRFAM_IPV4;
} else if (strcasecmp(str, "IPv6") == 0) {
@ -524,12 +532,12 @@ spdk_nvme_transport_id_parse(struct spdk_nvme_transport_id *trid, const char *st
str += val_len;
if (strcasecmp(key, "trtype") == 0) {
if (parse_trtype(&trid->trtype, val) != 0) {
if (spdk_nvme_transport_id_parse_trtype(&trid->trtype, val) != 0) {
SPDK_ERRLOG("Unknown trtype '%s'\n", val);
return -EINVAL;
}
} else if (strcasecmp(key, "adrfam") == 0) {
if (parse_adrfam(&trid->adrfam, val) != 0) {
if (spdk_nvme_transport_id_parse_adrfam(&trid->adrfam, val) != 0) {
SPDK_ERRLOG("Unknown adrfam '%s'\n", val);
return -EINVAL;
}