@@ -810,12 +810,12 @@ struct nvme_fabrics_config *nvme_ctrl_get_config(nvme_ctrl_t c)
810810 return & c -> cfg ;
811811}
812812
813- const char * nvme_ctrl_get_dhchap_key (nvme_ctrl_t c )
813+ const char * nvme_ctrl_get_dhchap_host_key (nvme_ctrl_t c )
814814{
815815 return c -> dhchap_key ;
816816}
817817
818- void nvme_ctrl_set_dhchap_key (nvme_ctrl_t c , const char * key )
818+ void nvme_ctrl_set_dhchap_host_key (nvme_ctrl_t c , const char * key )
819819{
820820 if (c -> dhchap_key ) {
821821 free (c -> dhchap_key );
@@ -825,6 +825,21 @@ void nvme_ctrl_set_dhchap_key(nvme_ctrl_t c, const char *key)
825825 c -> dhchap_key = strdup (key );
826826}
827827
828+ const char * nvme_ctrl_get_dhchap_key (nvme_ctrl_t c )
829+ {
830+ return c -> dhchap_ctrl_key ;
831+ }
832+
833+ void nvme_ctrl_set_dhchap_key (nvme_ctrl_t c , const char * key )
834+ {
835+ if (c -> dhchap_ctrl_key ) {
836+ free (c -> dhchap_ctrl_key );
837+ c -> dhchap_ctrl_key = NULL ;
838+ }
839+ if (key )
840+ c -> dhchap_ctrl_key = strdup (key );
841+ }
842+
828843void nvme_ctrl_set_discovered (nvme_ctrl_t c , bool discovered )
829844{
830845 c -> discovered = discovered ;
@@ -898,6 +913,7 @@ void nvme_deconfigure_ctrl(nvme_ctrl_t c)
898913 FREE_CTRL_ATTR (c -> serial );
899914 FREE_CTRL_ATTR (c -> sqsize );
900915 FREE_CTRL_ATTR (c -> dhchap_key );
916+ FREE_CTRL_ATTR (c -> dhchap_ctrl_key );
901917 FREE_CTRL_ATTR (c -> address );
902918 FREE_CTRL_ATTR (c -> dctype );
903919 FREE_CTRL_ATTR (c -> cntrltype );
@@ -1146,6 +1162,7 @@ static int nvme_configure_ctrl(nvme_root_t r, nvme_ctrl_t c, const char *path,
11461162 const char * name )
11471163{
11481164 DIR * d ;
1165+ char * host_key ;
11491166
11501167 d = opendir (path );
11511168 if (!d ) {
@@ -1166,10 +1183,18 @@ static int nvme_configure_ctrl(nvme_root_t r, nvme_ctrl_t c, const char *path,
11661183 c -> queue_count = nvme_get_ctrl_attr (c , "queue_count" );
11671184 c -> serial = nvme_get_ctrl_attr (c , "serial" );
11681185 c -> sqsize = nvme_get_ctrl_attr (c , "sqsize" );
1169- c -> dhchap_key = nvme_get_ctrl_attr (c , "dhchap_ctrl_secret" );
1170- if (c -> dhchap_key && !strcmp (c -> dhchap_key , "none" )) {
1171- free (c -> dhchap_key );
1172- c -> dhchap_key = NULL ;
1186+ host_key = nvme_get_ctrl_attr (c , "dhchap_secret" );
1187+ if (host_key && (!strcmp (c -> s -> h -> dhchap_key , host_key ) ||
1188+ !strcmp ("none" , host_key ))) {
1189+ free (host_key );
1190+ host_key = NULL ;
1191+ }
1192+ if (host_key )
1193+ c -> dhchap_key = host_key ;
1194+ c -> dhchap_ctrl_key = nvme_get_ctrl_attr (c , "dhchap_ctrl_secret" );
1195+ if (c -> dhchap_ctrl_key && !strcmp (c -> dhchap_ctrl_key , "none" )) {
1196+ free (c -> dhchap_ctrl_key );
1197+ c -> dhchap_ctrl_key = NULL ;
11731198 }
11741199 c -> cntrltype = nvme_get_ctrl_attr (c , "cntrltype" );
11751200 c -> dctype = nvme_get_ctrl_attr (c , "dctype" );
0 commit comments