libnvme(9)
π libnvme(9) β the API Manual, bestie edition π
okay so real talk, this is a page from the libnvme API Manual (that's the manual name, and yes it's iconic) and today we're deep-diving one very specific little struct. grab a strawberry drink, we're doing this π
πΈ NAME πΈ
struct nvmf_auth_kxchap_reply β the KX-HMAC-CHAP_Reply message, and it goes from host to controller. that's the direction, no cap. it's giving "the host replies, the controller listens" β¨
π SYNOPSIS π
bestie, here's the whole thing, literally copied exactly because we do not mess with the source of truth:
struct nvmf_auth_kxchap_reply {
__u8 auth_type;
__u8 auth_id;
__u16 rsvd2;
__le16 t_id;
__u8 hl;
__u8 rsvd7;
__u8 cvalid;
__u8 rsvd9;
__le16 kxvlen;
__le32 seqnum;
__u8 rval_cval_kxv[];
};
look at her. the flexible array member at the end? main character energy, fr fr π
β¨ Members β¨
okay now the field-by-field vibe check, and every single one is here because I would never do you dirty like that:
auth_typeβ the Authentication Type. seeenum nvmf_auth_protocol_idfor the lore. πauth_idβ the Authentication Identifier. seeenum nvmf_auth_kxchap_id, that's where the deets live.rsvd2β Reserved. that's it. she's reserved. respect her privacy πt_idβ the Transaction Identifier. iykyk π¦hlβ Hash Length, aka length in bytes of the selected hash function. yes it's an abbreviation, yes it ate πrsvd7β Reserved. again. still reserved. still not our business.cvalidβ Challenge Valid, and this one's important bestie: it's01hif the Challenge Value insiderval_cval_kxvis valid (that means bidirectional authentication was requested), and00hotherwise. lowkey the whole plot device of this struct πrsvd9β Reserved. three for three on the silent treatment, honestly iconic.kxvlenβ KX Value Length, aka length in bytes of the KX Value carried inrval_cval_kxv. and listen: it gets cleared to0hif no key exchange is performed. periodt.seqnumβ the Sequence Number, aka (S2). yes it has a nickname. we love a nickname πrval_cval_kxvβ okay this is the big one, the triple threat, the group chat of fields. it's the Response Value (R1,hlbytes), then the Challenge Value (C2,hlbytes, cleared to0hifcvalidis00h), then the KX Value (KXh,kxvlenbytes). and heads up: the KX Value is absent ifkxvlenis cleared to0h. so if you were expectingKXhand got nothing, that's why, don't panic π₯
ngl the reserved fields are just there holding space and honestly? same.
π that's the whole page, no skips, no cuts, every byte accounted for. stay hydrated, read your enums, and remember: the KX Value is only there if kxvlen says so π
signed off with love β this was struct nvmf_auth_kxchap_reply from libnvme(9), dated October 2026, and yes the date is in the future, she's ahead of her time π§ββοΈβ¨
π¦ where this page comes from
- arch rolling: nvme-cli 3.2-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms