static bool disc_ctrl_config_match(nvme_ctrl_t c, struct tr_config *trcfg)
 {
-       if (!strcmp0(nvme_ctrl_get_transport(c), trcfg->transport) &&
+       if (nvme_ctrl_is_discovery_ctrl(c) &&
+           !strcmp0(nvme_ctrl_get_transport(c), trcfg->transport) &&
            !strcasecmp0(nvme_ctrl_get_traddr(c), trcfg->traddr) &&
            !strcmp0(nvme_ctrl_get_trsvcid(c), trcfg->trsvcid) &&
            !strcmp0(nvme_ctrl_get_host_traddr(c), trcfg->host_traddr) &&
 static bool ctrl_config_match(nvme_ctrl_t c, struct tr_config *trcfg)
 {
        if (!strcmp0(nvme_ctrl_get_subsysnqn(c), trcfg->subsysnqn) &&
-           disc_ctrl_config_match(c, trcfg))
+           !strcmp0(nvme_ctrl_get_transport(c), trcfg->transport) &&
+           !strcasecmp0(nvme_ctrl_get_traddr(c), trcfg->traddr) &&
+           !strcmp0(nvme_ctrl_get_trsvcid(c), trcfg->trsvcid) &&
+           !strcmp0(nvme_ctrl_get_host_traddr(c), trcfg->host_traddr) &&
+           !strcmp0(nvme_ctrl_get_host_iface(c), trcfg->host_iface))
                return true;
 
        return false;