libnvme(9) API Manual libnvme(9)

# [NAME](#NAME)

struct nvmf\_auth\_negotiate - AUTH\_Negotiate message, host to controller

# [SYNOPSIS](#SYNOPSIS)

struct nvmf\_auth\_negotiate {  
**\_\_u8 auth\_type;**  
**\_\_u8 auth\_id;**  
**\_\_u16 rsvd2;**  
**\_\_le16 t\_id;**  
**\_\_u8 sc\_c;**  
**\_\_u8 napd;**  
**\_\_u8 apd\[];**  
};

# [Members](#Members)

[auth\_type](#auth_type)

Authentication Type, see *enum nvmf\_auth\_protocol\_id*. Cleared to 0h (i.e., common messages).

[auth\_id](#auth_id)

Authentication Identifier, see *enum nvmf\_auth\_id*. Cleared to 0h (i.e., AUTH\_Negotiate).

[rsvd2](#rsvd2)

Reserved

[t\_id](#t_id)

Transaction Identifier

[sc\_c](#sc_c)

Secure Channel Concatenation, see *enum nvmf\_auth\_sc\_c*

[napd](#napd)

Number of Authentication Protocol Descriptors

[apd](#apd)

Authentication Protocol Descriptor list, *napd* entries of 64 bytes each. Currently always a *struct nvmf\_auth\_kxchap\_protocol\_descriptor*, the only authentication protocol defined.

struct nvmf\_auth\_negotiate October 2026

---

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