libnvmf\_config\_get\_discovered\_params(9) libnvme API manual libnvmf\_config\_get\_discovered\_params(9)

# [NAME](#NAME)

libnvmf\_config\_get\_discovered\_params - discovered controller parameters.

# [SYNOPSIS](#SYNOPSIS)

**int libnvmf\_config\_get\_discovered\_params** **(const struct libnvmf\_config \*config ,** **const char \*hostnqn ,** **bool is\_dc ,** **const char \*nqn ,** **const struct libnvmf\_params \*\*params );**

# [ARGUMENTS](#ARGUMENTS)

[config](#config)

the resolved configuration

[hostnqn](#hostnqn)

the host NQN that selects the file, or NULL for the top-level file

[is\_dc](#is_dc)

true for a discovery controller, false for an I/O controller

[nqn](#nqn)

the NQN of the discovered controller, or NULL

[params](#params)

set to the parameters, valid while *config* is alive

# [DESCRIPTION](#DESCRIPTION)

A controller found through discovery has no section in the configuration. Its parameters come from one file: the file whose \[Host] section has *hostnqn*. For a controller found through a discovery controller of *config*, use **libnvmf\_config\_conn\_get\_hostnqn** of that discovery controller's connection.

The parameters are the defaults of that file for a discovery controller or an I/O controller. If the file also has a section with nqn = *nqn*, its kxchap-secret and kxchap-ctrl-secret replace the defaults. That section is a \[Discovery Controller] section if *is\_dc* is true, a \[Subsystem] section otherwise. Its controller= lines do not matter. A section with the well-known discovery NQN never matches.

# [RETURN](#RETURN)

0 on success, -EINVAL if *config* or *params* is NULL, or -ENOENT if no file of *config* has *hostnqn*.

libnvmf\_config\_get\_discovered\_params October 2026

---

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