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.

153 lines
3.9 KiB

From f86fa29cda6dcea1320de29864173d4de47c5bb7 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 9 Sep 2014 13:33:16 +0200
Subject: [PATCH] network/net-lib.sh:parse_iscsi_root() do not enforce target
name
https://bugzilla.redhat.com/show_bug.cgi?id=1078867
cherry-picked from 29763cb72d17fe8d22766170ec06b32419829243
---
modules.d/40network/net-lib.sh | 112 +++++++++++++++------------------
1 file changed, 50 insertions(+), 62 deletions(-)
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
index c8f92048..e2901dad 100755
--- a/modules.d/40network/net-lib.sh
+++ b/modules.d/40network/net-lib.sh
@@ -271,66 +271,46 @@ parse_iscsi_root()
local v
v=${1#iscsi:}
-# extract authentication info
+ # extract authentication info
case "$v" in
- *@*:*:*:*:*)
- authinfo=${v%%@*}
- v=${v#*@}
- # allow empty authinfo to allow having an @ in iscsi_target_name like this:
- # netroot=iscsi:@192.168.1.100::3260::iqn.2009-01.com.example:testdi@sk
- if [ -n "$authinfo" ]; then
- OLDIFS="$IFS"
- IFS=:
- set $authinfo
- IFS="$OLDIFS"
- if [ $# -gt 4 ]; then
- warn "Wrong authentication info in iscsi: parameter!"
- return 1
- fi
- iscsi_username=$1
- iscsi_password=$2
- if [ $# -gt 2 ]; then
- iscsi_in_username=$3
- iscsi_in_password=$4
- fi
- fi
- ;;
- esac
-
-# extract target ip
- case "$v" in
- [[]*[]]:*)
- iscsi_target_ip=${v#[[]}
- iscsi_target_ip=${iscsi_target_ip%%[]]*}
- v=${v#[[]$iscsi_target_ip[]]:}
- ;;
- *)
- iscsi_target_ip=${v%%[:]*}
- v=${v#$iscsi_target_ip:}
- ;;
+ *@*:*:*:*:*)
+ authinfo=${v%%@*}
+ v=${v#*@}
+ # allow empty authinfo to allow having an @ in iscsi_target_name like this:
+ # netroot=iscsi:@192.168.1.100::3260::iqn.2009-01.com.example:testdi@sk
+ if [ -n "$authinfo" ]; then
+ OLDIFS="$IFS"
+ IFS=:
+ set $authinfo
+ IFS="$OLDIFS"
+ if [ $# -gt 4 ]; then
+ warn "Wrong authentication info in iscsi: parameter!"
+ return 1
+ fi
+ iscsi_username=$1
+ iscsi_password=$2
+ if [ $# -gt 2 ]; then
+ iscsi_in_username=$3
+ iscsi_in_password=$4
+ fi
+ fi
+ ;;
esac
-# extract target name
+ # extract target ip
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.*}:
- ;;
- *)
- warn "Invalid iscii target name, should begin with 'iqn.' or 'eui.' or 'naa.'"
- return 1
- ;;
+ [[]*[]]:*)
+ iscsi_target_ip=${v#[[]}
+ iscsi_target_ip=${iscsi_target_ip%%[]]*}
+ v=${v#[[]$iscsi_target_ip[]]:}
+ ;;
+ *)
+ iscsi_target_ip=${v%%[:]*}
+ v=${v#$iscsi_target_ip:}
+ ;;
esac
-# parse the rest
+ # parse the rest
OLDIFS="$IFS"
IFS=:
set $v
@@ -338,17 +318,25 @@ parse_iscsi_root()
iscsi_protocol=$1; shift # ignored
iscsi_target_port=$1; shift
- if [ $# -eq 3 ]; then
- iscsi_iface_name=$1; shift
- fi
- if [ $# -eq 2 ]; then
- iscsi_netdev_name=$1; shift
+
+ if [ $# -gt 3 ] && [ -n "$1$2" ]; then
+ iscsi_iface_name=$1; shift
+ iscsi_netdev_name=$1; shift
fi
+
iscsi_lun=$1; shift
- if [ $# -ne 0 ]; then
- warn "Invalid parameter in iscsi: parameter!"
- return 1
+
+ if [ $# -gt 2 ]; then
+ warn "Invalid parameter in iscsi: parameter!"
+ return 1
fi
+
+ if [ $# -eq 2 ]; then
+ iscsi_target_name="$1:$2"
+ else
+ iscsi_target_name="$1"
+ fi
+
}
ip_to_var() {