@@ -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), \
@@ -369,6 +369,7 @@ static void nvmf_connected(struct nvmf_discovery_ctx *dctx,
369369
370370static int create_discovery_log_ctx (struct nvme_global_ctx * ctx ,
371371 bool persistent ,
372+ const char * host_traddr , const char * host_iface ,
372373 struct nvme_fabrics_config * defcfg ,
373374 void * user_data , struct nvmf_discovery_ctx * * dctxp )
374375{
@@ -407,6 +408,14 @@ static int create_discovery_log_ctx(struct nvme_global_ctx *ctx,
407408 if (err )
408409 goto err ;
409410
411+ err = nvmf_discovery_ctx_host_traddr_set (dctx , host_traddr );
412+ if (err )
413+ goto err ;
414+
415+ err = nvmf_discovery_ctx_host_iface_set (dctx , host_iface );
416+ if (err )
417+ goto err ;
418+
410419 err = nvmf_discovery_ctx_default_fabrics_config_set (dctx , defcfg );
411420 if (err )
412421 goto err ;
@@ -427,6 +436,7 @@ static int discover_from_conf_file(struct nvme_global_ctx *ctx, nvme_host_t h,
427436 char * hostnqn = NULL , * hostid = NULL , * hostkey = NULL ;
428437 char * subsysnqn = NULL , * keyring = NULL , * tls_key = NULL ;
429438 _cleanup_free_ struct nvmf_discovery_ctx * dctx = NULL ;
439+ char * host_iface = NULL , * host_traddr = NULL ;
430440 char * tls_key_identity = NULL ;
431441 char * ptr , * * argv , * p , line [4096 ];
432442 int argc , ret = 0 ;
@@ -491,16 +501,17 @@ static int discover_from_conf_file(struct nvme_global_ctx *ctx, nvme_host_t h,
491501 .subsysnqn = subsysnqn ,
492502 .transport = transport ,
493503 .traddr = traddr ,
494- .host_traddr = cfg . host_traddr ,
495- .host_iface = cfg . host_iface ,
504+ .host_traddr = host_traddr ,
505+ .host_iface = host_iface ,
496506 .trsvcid = trsvcid ,
497507 };
498508
499509 struct cb_discovery_log_data dld = {
500510 .flags = flags ,
501511 .raw = raw ,
502512 };
503- ret = create_discovery_log_ctx (ctx , true, & cfg , & dld , & dctx );
513+ ret = create_discovery_log_ctx (ctx , true, host_traddr ,
514+ host_iface , & cfg , & dld , & dctx );
504515 if (ret )
505516 return ret ;
506517
@@ -581,6 +592,7 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
581592 char * subsysnqn = NVME_DISC_SUBSYS_NAME ;
582593 char * hostnqn = NULL , * hostid = NULL , * hostkey = NULL ;
583594 char * transport = NULL , * traddr = NULL , * trsvcid = NULL ;
595+ char * host_iface = NULL , * host_traddr = NULL ;
584596 char * keyring = NULL , * tls_key = NULL ;
585597 char * tls_key_identity = NULL ;
586598 char * config_file = PATH_NVMF_CONFIG ;
@@ -680,7 +692,8 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
680692 .raw = raw ,
681693 };
682694
683- ret = create_discovery_log_ctx (ctx , persistent , & cfg , & dld , & dctx );
695+ ret = create_discovery_log_ctx (ctx , persistent , host_traddr ,
696+ host_iface , & cfg , & dld , & dctx );
684697 if (ret )
685698 return ret ;
686699
@@ -709,8 +722,8 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
709722 .subsysnqn = subsysnqn ,
710723 .transport = transport ,
711724 .traddr = traddr ,
712- .host_traddr = cfg . host_traddr ,
713- .host_iface = cfg . host_iface ,
725+ .host_traddr = host_traddr ,
726+ .host_iface = host_iface ,
714727 .trsvcid = trsvcid ,
715728 };
716729
@@ -719,7 +732,7 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
719732 if (!ret ) {
720733 /* Check if device matches command-line options */
721734 if (!nvme_ctrl_config_match (c , transport , traddr , trsvcid , subsysnqn ,
722- cfg . host_traddr , cfg . host_iface )) {
735+ host_traddr , host_iface )) {
723736 fprintf (stderr ,
724737 "ctrl device %s found, ignoring non matching command-line options\n" ,
725738 device );
@@ -750,10 +763,10 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
750763 * for the udev rules). This ensures that host-traddr/
751764 * host-iface are consistent with the discovery controller (c).
752765 */
753- if (!cfg . host_traddr )
754- cfg . host_traddr = (char * )nvme_ctrl_get_host_traddr (c );
755- if (!cfg . host_iface )
756- cfg . host_iface = (char * )nvme_ctrl_get_host_iface (c );
766+ if (!host_traddr )
767+ host_traddr = (char * )nvme_ctrl_get_host_traddr (c );
768+ if (!host_iface )
769+ host_iface = (char * )nvme_ctrl_get_host_iface (c );
757770 }
758771 } else {
759772 /*
@@ -830,6 +843,7 @@ int nvmf_connect(const char *desc, int argc, char **argv)
830843 char * trsvcid = NULL , * hostnqn = NULL , * hostid = NULL ;
831844 char * hostkey = NULL , * ctrlkey = NULL , * keyring = NULL ;
832845 char * tls_key = NULL , * tls_key_identity = NULL ;
846+ char * host_iface = NULL , * host_traddr = NULL ;
833847 _cleanup_free_ char * hnqn = NULL ;
834848 _cleanup_free_ char * hid = NULL ;
835849 char * config_file = NULL ;
@@ -929,8 +943,8 @@ int nvmf_connect(const char *desc, int argc, char **argv)
929943 .subsysnqn = subsysnqn ,
930944 .transport = transport ,
931945 .traddr = traddr ,
932- .host_traddr = cfg . host_traddr ,
933- .host_iface = cfg . host_iface ,
946+ .host_traddr = host_traddr ,
947+ .host_iface = host_iface ,
934948 .trsvcid = trsvcid ,
935949 };
936950
@@ -941,7 +955,7 @@ int nvmf_connect(const char *desc, int argc, char **argv)
941955 }
942956
943957 ret = nvme_create_ctrl (ctx , subsysnqn , transport , traddr ,
944- cfg . host_traddr , cfg . host_iface , trsvcid , & c );
958+ host_traddr , host_iface , trsvcid , & c );
945959 if (ret )
946960 return ret ;
947961
@@ -1184,6 +1198,7 @@ int nvmf_config(const char *desc, int argc, char **argv)
11841198 char * subsysnqn = NULL ;
11851199 char * transport = NULL , * traddr = NULL ;
11861200 char * trsvcid = NULL , * hostnqn = NULL , * hostid = NULL ;
1201+ char * host_traddr = NULL , * host_iface = NULL ;
11871202 _cleanup_free_ char * hnqn = NULL ;
11881203 _cleanup_free_ char * hid = NULL ;
11891204 char * hostkey = NULL , * ctrlkey = NULL ;
@@ -1270,7 +1285,7 @@ int nvmf_config(const char *desc, int argc, char **argv)
12701285 return - ENODEV ;
12711286 }
12721287 c = nvme_lookup_ctrl (s , transport , traddr ,
1273- cfg . host_traddr , cfg . host_iface ,
1288+ host_traddr , host_iface ,
12741289 trsvcid , NULL );
12751290 if (!c ) {
12761291 fprintf (stderr , "Failed to lookup controller\n" );
0 commit comments