|
Tomas Bzatek |
878886 |
From 0441d0f93788b617a38b75e4a44744406976c822 Mon Sep 17 00:00:00 2001
|
|
Tomas Bzatek |
878886 |
From: Tomas Bzatek <tbzatek@redhat.com>
|
|
Tomas Bzatek |
878886 |
Date: Mon, 31 Jul 2023 16:48:28 +0200
|
|
Tomas Bzatek |
878886 |
Subject: [PATCH] iscsi: Fix login on firmware-discovered nodes
|
|
Tomas Bzatek |
878886 |
|
|
Tomas Bzatek |
878886 |
There's currently no way to distinguish between force-no-auth and
|
|
Tomas Bzatek |
878886 |
use-fw-discovered-auth-info scenarios from the D-Bus API so let's
|
|
Tomas Bzatek |
878886 |
assume that the caller wants to retain the firmware-discovered auth
|
|
Tomas Bzatek |
878886 |
info unless overriden with specific CHAP credentials.
|
|
Tomas Bzatek |
878886 |
---
|
|
Tomas Bzatek |
878886 |
.../data/org.freedesktop.UDisks2.iscsi.xml | 3 +++
|
|
Tomas Bzatek |
878886 |
modules/iscsi/udisksiscsiutil.c | 27 ++++++++++++++++++-
|
|
Tomas Bzatek |
878886 |
2 files changed, 29 insertions(+), 1 deletion(-)
|
|
Tomas Bzatek |
878886 |
|
|
Tomas Bzatek |
878886 |
diff --git a/modules/iscsi/data/org.freedesktop.UDisks2.iscsi.xml b/modules/iscsi/data/org.freedesktop.UDisks2.iscsi.xml
|
|
Tomas Bzatek |
878886 |
index cf262deb68..e8a717ff1d 100644
|
|
Tomas Bzatek |
878886 |
--- a/modules/iscsi/data/org.freedesktop.UDisks2.iscsi.xml
|
|
Tomas Bzatek |
878886 |
+++ b/modules/iscsi/data/org.freedesktop.UDisks2.iscsi.xml
|
|
Tomas Bzatek |
878886 |
@@ -162,6 +162,9 @@
|
|
Tomas Bzatek |
878886 |
<parameter>reverse-password</parameter> will be used for CHAP
|
|
Tomas Bzatek |
878886 |
authentication.
|
|
Tomas Bzatek |
878886 |
|
|
Tomas Bzatek |
878886 |
+ Firmware-discovered nodes retain their authentication info unless
|
|
Tomas Bzatek |
878886 |
+ overriden with specified credentials (see above).
|
|
Tomas Bzatek |
878886 |
+
|
|
Tomas Bzatek |
878886 |
All the additional options are transformed into the interface
|
|
Tomas Bzatek |
878886 |
parameters. For example, if an automatic node startup is desired, the
|
|
Tomas Bzatek |
878886 |
<parameter>node.startup</parameter> needs to be set to
|
|
Tomas Bzatek |
878886 |
diff --git a/modules/iscsi/udisksiscsiutil.c b/modules/iscsi/udisksiscsiutil.c
|
|
Tomas Bzatek |
878886 |
index b279442876..fb4f5ea167 100644
|
|
Tomas Bzatek |
878886 |
--- a/modules/iscsi/udisksiscsiutil.c
|
|
Tomas Bzatek |
878886 |
+++ b/modules/iscsi/udisksiscsiutil.c
|
|
Tomas Bzatek |
878886 |
@@ -264,6 +264,31 @@ iscsi_params_pop_chap_data (GVariant *params,
|
|
Tomas Bzatek |
878886 |
return g_variant_dict_end (&dict);
|
|
Tomas Bzatek |
878886 |
}
|
|
Tomas Bzatek |
878886 |
|
|
Tomas Bzatek |
878886 |
+static gboolean
|
|
Tomas Bzatek |
878886 |
+is_auth_required (struct libiscsi_context *ctx,
|
|
Tomas Bzatek |
878886 |
+ struct libiscsi_node *node,
|
|
Tomas Bzatek |
878886 |
+ struct libiscsi_auth_info *auth_info)
|
|
Tomas Bzatek |
878886 |
+{
|
|
Tomas Bzatek |
878886 |
+ char val[LIBISCSI_VALUE_MAXLEN + 1] = {'\0',};
|
|
Tomas Bzatek |
878886 |
+ int ret;
|
|
Tomas Bzatek |
878886 |
+
|
|
Tomas Bzatek |
878886 |
+ /* TODO: No way to distinguish between the "no auth requested" and
|
|
Tomas Bzatek |
878886 |
+ * "retain discovered auth info" scenarios from the D-Bus API.
|
|
Tomas Bzatek |
878886 |
+ */
|
|
Tomas Bzatek |
878886 |
+
|
|
Tomas Bzatek |
878886 |
+ /* In case CHAP auth is requested, let's use it unconditionally */
|
|
Tomas Bzatek |
878886 |
+ if (auth_info->method != libiscsi_auth_none)
|
|
Tomas Bzatek |
878886 |
+ return TRUE;
|
|
Tomas Bzatek |
878886 |
+
|
|
Tomas Bzatek |
878886 |
+ /* Avoid auth override on firmware-discovered nodes */
|
|
Tomas Bzatek |
878886 |
+ ret = libiscsi_node_get_parameter (ctx, node, "node.discovery_type", val);
|
|
Tomas Bzatek |
878886 |
+ if (ret == 0 && g_strcmp0 (val, "fw") == 0)
|
|
Tomas Bzatek |
878886 |
+ return FALSE;
|
|
Tomas Bzatek |
878886 |
+
|
|
Tomas Bzatek |
878886 |
+ /* Not a firmware-discovered node, maintain legacy rules */
|
|
Tomas Bzatek |
878886 |
+ return TRUE;
|
|
Tomas Bzatek |
878886 |
+}
|
|
Tomas Bzatek |
878886 |
+
|
|
Tomas Bzatek |
878886 |
gint
|
|
Tomas Bzatek |
878886 |
iscsi_login (UDisksLinuxModuleISCSI *module,
|
|
Tomas Bzatek |
878886 |
const gchar *name,
|
|
Tomas Bzatek |
878886 |
@@ -317,7 +342,7 @@ iscsi_login (UDisksLinuxModuleISCSI *module,
|
|
Tomas Bzatek |
878886 |
err = iscsi_perform_login_action (module,
|
|
Tomas Bzatek |
878886 |
ACTION_LOGIN,
|
|
Tomas Bzatek |
878886 |
&node,
|
|
Tomas Bzatek |
878886 |
- &auth_info,
|
|
Tomas Bzatek |
878886 |
+ is_auth_required (ctx, &node, &auth_info) ? &auth_info : NULL,
|
|
Tomas Bzatek |
878886 |
errorstr);
|
|
Tomas Bzatek |
878886 |
}
|
|
Tomas Bzatek |
878886 |
|