libnvme(9) API Manual libnvme(9)

# [NAME](#NAME)

struct nbft\_ssns - Subsystem Namespace (SSNS) Descriptor (Figure 17)

# [SYNOPSIS](#SYNOPSIS)

struct nbft\_ssns {  
**\_\_u8 structure\_id;**  
**\_\_le16 index;**  
**\_\_le16 flags;**  
**\_\_u8 trtype;**  
**\_\_le16 trflags;**  
**\_\_u8 primary\_discovery\_ctrl\_index;**  
**\_\_u8 reserved1;**  
**struct nbft\_heap\_obj subsys\_traddr\_obj;**  
**struct nbft\_heap\_obj subsys\_trsvcid\_obj;**  
**\_\_le16 subsys\_port\_id;**  
**\_\_le32 nsid;**  
**\_\_u8 nidt;**  
**\_\_u8 nid\[16];**  
**\_\_u8 security\_desc\_index;**  
**\_\_u8 primary\_hfi\_desc\_index;**  
**\_\_u8 reserved2;**  
**struct nbft\_heap\_obj secondary\_hfi\_assoc\_obj;**  
**struct nbft\_heap\_obj subsys\_ns\_nqn\_obj;**  
**struct nbft\_heap\_obj ssns\_extended\_info\_desc\_obj;**  
**\_\_u8 reserved3\[62];**  
};

# [Members](#Members)

[structure\_id](#structure_id)

Structure ID: This field shall be set to 4h (i.e., SSNS; #NBFT\_DESC\_SSNS).

[index](#index)

SSNS Descriptor Index: This field indicates the number of this Subsystem Namespace Descriptor in the Subsystem Namespace Descriptor List.

[flags](#flags)

SSNS Flags, see *enum nbft\_ssns\_flags*.

[trtype](#trtype)

Transport Type, see *enum nbft\_trtype*.

[trflags](#trflags)

Transport Specific Flags, see *enum nbft\_ssns\_trflags*.

[primary\_discovery\_ctrl\_index](#primary_discovery_ctrl_index)

Primary Discovery Controller Index: The Discovery Descriptor Index field of the Discovery Descriptor (see *struct nbft\_discovery*) that is associated with this SSNS Descriptor. If a Discovery controller was used to establish this record this value shall be set to a non-zero value. If this namespace was associated with multiple Discovery controllers, those Discovery controllers shall have records in the Discovery Descriptor to facilitate multi-path rediscovery as required. If no Discovery controller was utilized to inform this namespace record, this field shall be cleared to 0h.

[reserved1](#reserved1)

Reserved.

[subsys\_traddr\_obj](#subsys_traddr_obj)

Subsystem Transport Address Heap Object Reference: This field indicates the location and size of a heap object containing the Subsystem Transport Address. For IP based transports types, shall be an IP Address.

[subsys\_trsvcid\_obj](#subsys_trsvcid_obj)

Subsystem Transport Service Identifier Heap Object Reference: This field indicates the location and size of a heap object containing an array of bytes indicating the Subsystem Transport Service Identifier. See *enum nbft\_trtype*.

[subsys\_port\_id](#subsys_port_id)

Subsystem Port ID: Port in the NVM subsystem associated with this transport address used by the pre-OS driver.

[nsid](#nsid)

Namespace ID: This field indicates the namespace [identifier (NSID)](/man/os/nvme-cli/identifier.NSID) of the namespace indicated by this descriptor. This field shall be cleared to 0h if not specified by the user. If this value is cleared to 0h, then consumers of the NBFT shall rely on the NID.

[nidt](#nidt)

Namespace Identifier [Type (NIDT)](/man/os/nvme-cli/Type.NIDT): This field contains the value of the Namespace Identifier [Type (NIDT)](/man/os/nvme-cli/Type.NIDT) field in the Namespace Identification Descriptor for the namespace indicated by this descriptor. If a namespace supports multiple NIDT entries for uniqueness, the order of preference is NIDT field value of 3h (i.e., UUID) before 2h (i.e., NSGUID), and 2h before 1h (i.e., EUI-64).

[nid](#nid)

Namespace [Identifier (NID)](/man/os/nvme-cli/Identifier.NID): This field contains the value of the Namespace [Identifier (NID)](/man/os/nvme-cli/Identifier.NID) field in the Namespace Identification Descriptor for the namespace indicated by this descriptor.

[security\_desc\_index](#security_desc_index)

Security Profile Descriptor Index: If the Use Security Flag bit in the SSNS Flags field is set to 1h, then this field indicates the value of the Security Profile Descriptor Index field of the Security Profile Descriptor (see *struct nbft\_security*) associated with this namespace. If the Use Security Flag bit is cleared to 0h, then no Security Profile Descriptor is associated with this namespace and this field is reserved.

[primary\_hfi\_desc\_index](#primary_hfi_desc_index)

Primary HFI Descriptor Index: This field indicates the value of the HFI Descriptor Index field of the HFI Descriptor (see *struct nbft\_hfi*) for the interface associated with this namespace. If multiple HFIs are associated with this record, subsequent interfaces should be populated in the Secondary HFI Associations field.

[reserved2](#reserved2)

Reserved.

[secondary\_hfi\_assoc\_obj](#secondary_hfi_assoc_obj)

Secondary HFI Associations Heap Object Reference: If this field is set to a non-zero value, then this field indicates an array of bytes, in which each byte contains the value of the HFI Descriptor Index field of an HFI Descriptor in the HFI Descriptor List. If this field is cleared to 0h, then no secondary HFI associations are specified.

[subsys\_ns\_nqn\_obj](#subsys_ns_nqn_obj)

Subsystem and Namespace NQN Heap Object Reference: This field indicates the location and size of a heap object containing the Subsystem and Namespace NQN.

[ssns\_extended\_info\_desc\_obj](#ssns_extended_info_desc_obj)

SSNS Extended Information Descriptor Heap Object Reference: If the SSNS Extended Info In-use Flag bit is set to 1h, then this field indicates the offset in bytes of a heap object containing an SSNS Extended Information Descriptor (see *struct nbft\_ssns\_ext\_info*) heap object from byte offset 0h of the NBFT Table Header. If the SSNS Extended Info In-use Flag bit is cleared to 0h, then this field is reserved.

[reserved3](#reserved3)

Reserved.

struct nbft\_ssns September 2026

---

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