---
name: "libnvmf_tid_set_identity-libnvme3"
section: "2"
platform: "linux"
package: "nvme-cli"
version: "3.2-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libnvmf_tid_set_identity-libnvme3"
---

# libnvmf\_tid\_set\_identity-libnvme3(2)

Set the subsystem and host identity together.

## NAME

libnvmf\_tid\_set\_identity - Set the subsystem and host identity together.

## SYNOPSIS

**int libnvmf\_tid\_set\_identity** **(struct libnvmf\_tid \*tid** *,* **const char \*subsysnqn** *,* **const char \*hostnqn** *,* **const char \*hostid** *);*

## ARGUMENTS

- tid

  The transport ID.

- subsysnqn

  Subsystem NQN, or NULL to leave it unchanged.

- hostnqn

  Host NQN, or NULL to leave it unchanged.

- hostid

  Host Identifier, or NULL to leave it unchanged (or derive it).

## DESCRIPTION

Identity is applied after addressing -- which subsystem, and which host persona, are decided by context.  A NULL argument leaves that field as-is, which is why the three are set through one call rather than per-field setters (addressing has none: it is construction-only).

hostid is never left to chance: when no hostid is set but the resulting hostnqn carries a UUID (nqn.2014-08.org.nvmexpress:uuid:\<X\>), the hostid is derived from it -- the deterministic, per-host value (TP4126), never a random one.  A hostid without a hostnqn is rejected: one host is one (hostnqn, hostid) pair.

## RETURN

0 on success; -EINVAL for a NULL *tid* or a hostid without a hostnqn; -ENOMEM on allocation failure.
