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
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() {