You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.6 KiB
93 lines
2.6 KiB
From 20700e3dea3c10aa2c9d4a724ec3d671455d556f Mon Sep 17 00:00:00 2001 |
|
From: Harald Hoyer <harald@redhat.com> |
|
Date: Mon, 12 Jan 2015 14:06:10 +0100 |
|
Subject: [PATCH] net-lib.sh:parse_iscsi_root() fix target parsing |
|
|
|
For targets with colons in the iSCSI target name: |
|
"iqn.2000-09.com.foo:storage-system.e2000:00000001cm1p1" |
|
|
|
the parser was confused with the optional iscsi_iface_name and |
|
iscsi_netdev_name. |
|
|
|
This patch reintroduces the old IQN, EUI and NAA parsing and enhances |
|
the fallback parser by checking the LUN for a numerical value. |
|
|
|
(cherry picked from commit 36e8ce4fb01824b49697bd0e7ad3ca3c4cfd4297) |
|
--- |
|
modules.d/40network/net-lib.sh | 50 ++++++++++++++++++++++++++-------- |
|
1 file changed, 38 insertions(+), 12 deletions(-) |
|
|
|
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh |
|
index 337817e3..f0850207 100755 |
|
--- a/modules.d/40network/net-lib.sh |
|
+++ b/modules.d/40network/net-lib.sh |
|
@@ -310,6 +310,23 @@ parse_iscsi_root() |
|
;; |
|
esac |
|
|
|
+ unset iscsi_target_name |
|
+ # extract target name |
|
+ case "$v" in |
|
+ *:iqn.*) |
|
+ iscsi_target_name=iqn.${v##*:iqn.} |
|
+ v=${v%:iqn.*}: |
|
+ ;; |
|
+ *:eui.*) |
|
+ iscsi_target_name=iqn.${v##*:eui.} |
|
+ v=${v%:iqn.*}: |
|
+ ;; |
|
+ *:naa.*) |
|
+ iscsi_target_name=iqn.${v##*:naa.} |
|
+ v=${v%:iqn.*}: |
|
+ ;; |
|
+ esac |
|
+ |
|
# parse the rest |
|
OLDIFS="$IFS" |
|
IFS=: |
|
@@ -319,24 +336,33 @@ parse_iscsi_root() |
|
iscsi_protocol=$1; shift # ignored |
|
iscsi_target_port=$1; shift |
|
|
|
- if [ $# -gt 3 ] && [ -n "$1$2" ]; then |
|
- iscsi_iface_name=$1; shift |
|
- iscsi_netdev_name=$1; shift |
|
+ if [ -n "$iscsi_target_name" ]; then |
|
+ if [ $# -eq 3 ]; then |
|
+ iscsi_iface_name=$1; shift |
|
+ fi |
|
+ if [ $# -eq 2 ]; then |
|
+ iscsi_netdev_name=$1; shift |
|
+ fi |
|
+ iscsi_lun=$1; shift |
|
+ if [ $# -ne 0 ]; then |
|
+ warn "Invalid parameter in iscsi: parameter!" |
|
+ return 1 |
|
+ fi |
|
+ return 0 |
|
fi |
|
|
|
- iscsi_lun=$1; shift |
|
|
|
- if [ $# -gt 2 ]; then |
|
- warn "Invalid parameter in iscsi: parameter!" |
|
- return 1 |
|
+ if [ $# -gt 3 ] && [ -n "$1$2" ]; then |
|
+ if [ -z "$3" ] || [ "$3" -ge 0 ] 2>/dev/null ; then |
|
+ iscsi_iface_name=$1; shift |
|
+ iscsi_netdev_name=$1; shift |
|
+ fi |
|
fi |
|
|
|
- if [ $# -eq 2 ]; then |
|
- iscsi_target_name="$1:$2" |
|
- else |
|
- iscsi_target_name="$1" |
|
- fi |
|
+ iscsi_lun=$1; shift |
|
|
|
+ iscsi_target_name=$(printf "%s:" "$@") |
|
+ iscsi_target_name=${iscsi_target_name%:} |
|
} |
|
|
|
ip_to_var() {
|
|
|