libnvmf\_tid\_from\_fields(9) libnvme API manual libnvmf\_tid\_from\_fields(9)

# [NAME](#NAME)

libnvmf\_tid\_from\_fields - Allocate a TID from individual field strings.

# [SYNOPSIS](#SYNOPSIS)

**int libnvmf\_tid\_from\_fields** **(const char \*transport ,** **const char \*traddr ,** **const char \*trsvcid ,** **const char \*subsysnqn ,** **const char \*host\_traddr ,** **const char \*host\_iface ,** **const char \*hostnqn ,** **const char \*hostid ,** **struct libnvmf\_tid \*\*out );**

# [ARGUMENTS](#ARGUMENTS)

[transport](#transport)

Transport type (e.g. "tcp", "rdma", "fc").

[traddr](#traddr)

Transport address.

[trsvcid](#trsvcid)

Transport service ID (e.g. "8009").

[subsysnqn](#subsysnqn)

Subsystem NQN.

[host\_traddr](#host_traddr)

Host transport address, or NULL.

[host\_iface](#host_iface)

Host interface name, or NULL.

[hostnqn](#hostnqn)

Host NQN, or NULL.

[hostid](#hostid)

Host Identifier, or NULL.

[out](#out)

The allocated TID on success; NULL on error.

# [DESCRIPTION](#DESCRIPTION)

Convenience constructor. NULL fields are stored as NULL. For an IP transport (tcp, rdma) a numeric traddr/host\_traddr is canonicalized; a hostname is rejected -- resolving it is the caller's job, not libnvme's.

# [RETURN](#RETURN)

0 on success (\**out* is the allocated TID); -EINVAL if *out* is NULL or traddr/host\_traddr is not numeric on an IP transport; -ENOMEM on allocation failure.

libnvmf\_tid\_from\_fields October 2026

---

Document: libnvmf_tid_from_fields-libnvme3(2) from nvme-cli 3.2-r0 (Chainguard OS)
Source: https://github.com/linux-nvme/nvme-cli
