@@ -100,8 +100,8 @@ static const char *nvmf_context = "execution context identification string";
100100 OPT_STRING("nqn", 'n', "STR", &subsysnqn, nvmf_nqn), \
101101 OPT_STRING("traddr", 'a', "STR", &traddr, nvmf_traddr), \
102102 OPT_STRING("trsvcid", 's', "STR", &trsvcid, nvmf_trsvcid), \
103- OPT_STRING("host-traddr", 'w', "STR", &c. host_traddr, nvmf_htraddr), \
104- OPT_STRING("host-iface", 'f', "STR", &c. host_iface, nvmf_hiface), \
103+ OPT_STRING("host-traddr", 'w', "STR", &host_traddr, nvmf_htraddr), \
104+ OPT_STRING("host-iface", 'f', "STR", &host_iface, nvmf_hiface), \
105105 OPT_STRING("hostnqn", 'q', "STR", &hostnqn, nvmf_hostnqn), \
106106 OPT_STRING("hostid", 'I', "STR", &hostid, nvmf_hostid), \
107107 OPT_STRING("dhchap-secret", 'S', "STR", &hostkey, nvmf_hostkey), \
@@ -368,6 +368,7 @@ static void nvmf_connected(struct nvmf_discovery_ctx *dctx,
368368
369369static int create_discovery_log_ctx (struct nvme_global_ctx * ctx ,
370370 bool persistent ,
371+ const char * host_traddr , const char * host_iface ,
371372 struct nvme_fabrics_config * defcfg ,
372373 void * user_data , struct nvmf_discovery_ctx * * dctxp )
373374{
@@ -406,6 +407,14 @@ static int create_discovery_log_ctx(struct nvme_global_ctx *ctx,
406407 if (err )
407408 goto err ;
408409
410+ err = nvmf_discovery_ctx_host_traddr_set (dctx , host_traddr );
411+ if (err )
412+ goto err ;
413+
414+ err = nvmf_discovery_ctx_host_iface_set (dctx , host_iface );
415+ if (err )
416+ goto err ;
417+
409418 err = nvmf_discovery_ctx_default_fabrics_config_set (dctx , defcfg );
410419 if (err )
411420 goto err ;
@@ -426,6 +435,7 @@ static int discover_from_conf_file(struct nvme_global_ctx *ctx, nvme_host_t h,
426435 char * hostnqn = NULL , * hostid = NULL , * hostkey = NULL ;
427436 char * subsysnqn = NULL , * keyring = NULL , * tls_key = NULL ;
428437 _cleanup_free_ struct nvmf_discovery_ctx * dctx = NULL ;
438+ char * host_iface = NULL , * host_traddr = NULL ;
429439 char * tls_key_identity = NULL ;
430440 char * ptr , * * argv , * p , line [4096 ];
431441 int argc , ret = 0 ;
@@ -490,16 +500,17 @@ static int discover_from_conf_file(struct nvme_global_ctx *ctx, nvme_host_t h,
490500 .subsysnqn = subsysnqn ,
491501 .transport = transport ,
492502 .traddr = traddr ,
493- .host_traddr = cfg . host_traddr ,
494- .host_iface = cfg . host_iface ,
503+ .host_traddr = host_traddr ,
504+ .host_iface = host_iface ,
495505 .trsvcid = trsvcid ,
496506 };
497507
498508 struct cb_discovery_log_data dld = {
499509 .flags = flags ,
500510 .raw = raw ,
501511 };
502- ret = create_discovery_log_ctx (ctx , true, & cfg , & dld , & dctx );
512+ ret = create_discovery_log_ctx (ctx , true, host_traddr ,
513+ host_iface , & cfg , & dld , & dctx );
503514 if (ret )
504515 return ret ;
505516
@@ -580,6 +591,7 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
580591 char * subsysnqn = NVME_DISC_SUBSYS_NAME ;
581592 char * hostnqn = NULL , * hostid = NULL , * hostkey = NULL ;
582593 char * transport = NULL , * traddr = NULL , * trsvcid = NULL ;
594+ char * host_iface = NULL , * host_traddr = NULL ;
583595 char * keyring = NULL , * tls_key = NULL ;
584596 char * tls_key_identity = NULL ;
585597 char * config_file = PATH_NVMF_CONFIG ;
@@ -679,7 +691,8 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
679691 .raw = raw ,
680692 };
681693
682- ret = create_discovery_log_ctx (ctx , persistent , & cfg , & dld , & dctx );
694+ ret = create_discovery_log_ctx (ctx , persistent , host_traddr ,
695+ host_iface , & cfg , & dld , & dctx );
683696 if (ret )
684697 return ret ;
685698
@@ -708,8 +721,8 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
708721 .subsysnqn = subsysnqn ,
709722 .transport = transport ,
710723 .traddr = traddr ,
711- .host_traddr = cfg . host_traddr ,
712- .host_iface = cfg . host_iface ,
724+ .host_traddr = host_traddr ,
725+ .host_iface = host_iface ,
713726 .trsvcid = trsvcid ,
714727 };
715728
@@ -718,7 +731,7 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
718731 if (!ret ) {
719732 /* Check if device matches command-line options */
720733 if (!nvme_ctrl_config_match (c , transport , traddr , trsvcid , subsysnqn ,
721- cfg . host_traddr , cfg . host_iface )) {
734+ host_traddr , host_iface )) {
722735 fprintf (stderr ,
723736 "ctrl device %s found, ignoring non matching command-line options\n" ,
724737 device );
@@ -749,10 +762,10 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
749762 * for the udev rules). This ensures that host-traddr/
750763 * host-iface are consistent with the discovery controller (c).
751764 */
752- if (!cfg . host_traddr )
753- cfg . host_traddr = (char * )nvme_ctrl_get_host_traddr (c );
754- if (!cfg . host_iface )
755- cfg . host_iface = (char * )nvme_ctrl_get_host_iface (c );
765+ if (!host_traddr )
766+ host_traddr = (char * )nvme_ctrl_get_host_traddr (c );
767+ if (!host_iface )
768+ host_iface = (char * )nvme_ctrl_get_host_iface (c );
756769 }
757770 } else {
758771 /*
@@ -829,6 +842,7 @@ int nvmf_connect(const char *desc, int argc, char **argv)
829842 char * trsvcid = NULL , * hostnqn = NULL , * hostid = NULL ;
830843 char * hostkey = NULL , * ctrlkey = NULL , * keyring = NULL ;
831844 char * tls_key = NULL , * tls_key_identity = NULL ;
845+ char * host_iface = NULL , * host_traddr = NULL ;
832846 _cleanup_free_ char * hnqn = NULL ;
833847 _cleanup_free_ char * hid = NULL ;
834848 char * config_file = NULL ;
@@ -928,8 +942,8 @@ int nvmf_connect(const char *desc, int argc, char **argv)
928942 .subsysnqn = subsysnqn ,
929943 .transport = transport ,
930944 .traddr = traddr ,
931- .host_traddr = cfg . host_traddr ,
932- .host_iface = cfg . host_iface ,
945+ .host_traddr = host_traddr ,
946+ .host_iface = host_iface ,
933947 .trsvcid = trsvcid ,
934948 };
935949
@@ -940,7 +954,7 @@ int nvmf_connect(const char *desc, int argc, char **argv)
940954 }
941955
942956 ret = nvme_create_ctrl (ctx , subsysnqn , transport , traddr ,
943- cfg . host_traddr , cfg . host_iface , trsvcid , & c );
957+ host_traddr , host_iface , trsvcid , & c );
944958 if (ret )
945959 return ret ;
946960
@@ -1183,6 +1197,7 @@ int nvmf_config(const char *desc, int argc, char **argv)
11831197 char * subsysnqn = NULL ;
11841198 char * transport = NULL , * traddr = NULL ;
11851199 char * trsvcid = NULL , * hostnqn = NULL , * hostid = NULL ;
1200+ char * host_traddr = NULL , * host_iface = NULL ;
11861201 _cleanup_free_ char * hnqn = NULL ;
11871202 _cleanup_free_ char * hid = NULL ;
11881203 char * hostkey = NULL , * ctrlkey = NULL ;
@@ -1269,7 +1284,7 @@ int nvmf_config(const char *desc, int argc, char **argv)
12691284 return - ENODEV ;
12701285 }
12711286 c = nvme_lookup_ctrl (s , transport , traddr ,
1272- cfg . host_traddr , cfg . host_iface ,
1287+ host_traddr , host_iface ,
12731288 trsvcid , NULL );
12741289 if (!c ) {
12751290 fprintf (stderr , "Failed to lookup controller\n" );
0 commit comments