Browse Source

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.
master
Harald Hoyer 10 years ago
parent
commit
36e8ce4fb0
  1. 42
      modules.d/40network/net-lib.sh

42
modules.d/40network/net-lib.sh

@ -308,6 +308,23 @@ parse_iscsi_root() @@ -308,6 +308,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=:
@ -317,24 +334,33 @@ parse_iscsi_root() @@ -317,24 +334,33 @@ parse_iscsi_root()
iscsi_protocol=$1; shift # ignored
iscsi_target_port=$1; shift

if [ $# -gt 3 ] && [ -n "$1$2" ]; then
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 [ $# -gt 2 ]; then
if [ $# -ne 0 ]; then
warn "Invalid parameter in iscsi: parameter!"
return 1
fi
return 0
fi

if [ $# -eq 2 ]; then
iscsi_target_name="$1:$2"
else
iscsi_target_name="$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

iscsi_lun=$1; shift

iscsi_target_name=$(printf "%s:" "$@")
iscsi_target_name=${iscsi_target_name%:}
}

ip_to_var() {

Loading…
Cancel
Save