summaryrefslogtreecommitdiff
path: root/libopeniscsiusr
diff options
context:
space:
mode:
authorGris Ge <fge@redhat.com>2018-04-13 20:14:42 +0800
committerGris Ge <fge@redhat.com>2018-04-13 20:14:42 +0800
commitebc1673cd0978f4d656687e909833806a84833d7 (patch)
treeced0e976b0e7857271123b8e2814c236166ab4ef /libopeniscsiusr
parent87ea50a1c3a97abd5d223bd7f8530109062f1239 (diff)
downloadopen-iscsi-ebc1673cd0978f4d656687e909833806a84833d7.tar.gz
libopeniscsiusr: Fix iscsi_iface_get() on default interfaces.
Issue: Command `iscsiadm -m iface default` will got failure: iSCSI ERROR: Failed to open /etc/iscsi/ifaces/default using read mode: 2 No such file or directory # idbm.c:_idbm_recs_read():743 Fix: If `iscsi_iface_get()` specified the default iface, just copy from build config instead of looking up the idbm. Signed-off-by: Gris Ge <fge@redhat.com>
Diffstat (limited to 'libopeniscsiusr')
-rw-r--r--libopeniscsiusr/iface.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libopeniscsiusr/iface.c b/libopeniscsiusr/iface.c
index 903bcd8..95870bf 100644
--- a/libopeniscsiusr/iface.c
+++ b/libopeniscsiusr/iface.c
@@ -876,6 +876,17 @@ int iscsi_iface_get(struct iscsi_context *ctx, const char *iface_name,
*iface = NULL;
+ size_t i = 0;
+ for (; i < sizeof(_DEFAULT_IFACES)/sizeof(struct iscsi_iface); ++i) {
+ if (strcmp(iface_name, _DEFAULT_IFACES[i].name) == 0) {
+ *iface = calloc(1, sizeof(struct iscsi_iface));
+ _alloc_null_check(ctx, *iface, rc, out);
+ memcpy(*iface, &_DEFAULT_IFACES[i],
+ sizeof(struct iscsi_iface));
+ goto out;
+ }
+ }
+
rc = _idbm_lock(ctx);
if (rc != LIBISCSI_OK)
return rc;
@@ -886,6 +897,7 @@ int iscsi_iface_get(struct iscsi_context *ctx, const char *iface_name,
_idbm_unlock(ctx);
+out:
return rc;
}