11.1Smlelstv#!/bin/sh 21.1Smlelstv# 31.5Skre# $NetBSD: iscsid_volumes,v 1.5 2023/12/25 08:29:05 kre Exp $ 41.1Smlelstv# 51.1Smlelstv 61.1Smlelstv# PROVIDE: iscsid_volumes 71.1Smlelstv# REQUIRE: iscsid 81.1Smlelstv# BEFORE: securelevel mountcritremote 91.1Smlelstv 101.1Smlelstv$_rc_subr_loaded . /etc/rc.subr 111.1Smlelstv 121.1Smlelstvname="iscsid_volumes" 131.1Smlelstvrcvar=$name 141.1Smlelstvstart_cmd="iscsid_volumes_start" 151.1Smlelstvstop_cmd="iscsid_volumes_stop" 161.1Smlelstv 171.1Smlelstviscsid_volumes_start() 181.1Smlelstv{ 191.2Smartin test -f /etc/iscsi/volumes || return 0 201.1Smlelstv 211.1Smlelstv while read host target digest auth user alias; do 221.1Smlelstv case $host in 231.3Smlelstv \#*|"") ;; 241.1Smlelstv *) 251.1Smlelstv topts='' 261.1Smlelstv case $digest in 271.1Smlelstv *d*) topts="$topts -d";; 281.1Smlelstv esac 291.1Smlelstv case $digest in 301.1Smlelstv *h*) topts="$topts -h";; 311.1Smlelstv esac 321.1Smlelstv 331.1Smlelstv pass="-" 341.1Smlelstv mpass="-" 351.1Smlelstv 361.3Smlelstv if [ -f /etc/iscsi/auths ]; then 371.3Smlelstv while read entry dummy; do 381.4Smlelstv 391.4Smlelstv case $entry in 401.4Smlelstv *:chap:*|\ 411.4Smlelstv *:CHAP:*|\ 421.4Smlelstv *:none:*) 431.4Smlelstv dummy=${entry#*:} 441.4Smlelstv entry=${entry%%:*}:${dummy#*:} 451.4Smlelstv ;; 461.4Smlelstv esac 471.4Smlelstv 481.3Smlelstv case $entry in 491.3Smlelstv \#*|"") ;; 501.3Smlelstv "$user":*) pass=${entry#*:} ;; 511.3Smlelstv "$target":*) mpass=${entry#*:} ;; 521.3Smlelstv esac 531.3Smlelstv done < /etc/iscsi/auths 541.3Smlelstv fi 551.1Smlelstv 561.1Smlelstv case $host in 571.1Smlelstv *:*) 581.1Smlelstv port=${host#*:} 591.1Smlelstv host=${host%%:*} 601.1Smlelstv ;; 611.1Smlelstv *) 621.1Smlelstv port=3260 631.1Smlelstv ;; 641.1Smlelstv esac 651.1Smlelstv 661.1Smlelstv echo "Add target ${alias:-$target}" 671.1Smlelstv 681.1Smlelstv out=$(/sbin/iscsictl add_target$topts \ 691.1Smlelstv -a "$host" \ 701.1Smlelstv -p "$port" \ 711.1Smlelstv -n "$target" \ 721.1Smlelstv -t "$auth" \ 731.1Smlelstv -u "$user" \ 741.1Smlelstv -s "$pass" \ 751.1Smlelstv -S "$mpass" \ 761.4Smlelstv ${alias:+-N} ${alias:+"$alias"}) 771.1Smlelstv echo "$out" 781.1Smlelstv 791.1Smlelstv case $out in 801.1Smlelstv Added\ Target\ [1-9]*,\ Portal\ [1-9]*\ ) 811.1Smlelstv out=${out% } 821.1Smlelstv portal=${out##* } 831.1Smlelstv echo "Login $target via Portal $portal" 841.1Smlelstv /sbin/iscsictl login -P "$portal" 851.1Smlelstv ;; 861.1Smlelstv esac 871.1Smlelstv esac 881.1Smlelstv done < /etc/iscsi/volumes 891.1Smlelstv} 901.1Smlelstv 911.1Smlelstviscsid_volumes_stop() 921.1Smlelstv{ 931.2Smartin test -f /etc/iscsi/volumes || return 0 941.1Smlelstv 951.1Smlelstv while read host target digest auth user alias; do 961.1Smlelstv case $host in 971.3Smlelstv \#*|"") ;; 981.1Smlelstv *) 991.1Smlelstv echo "Remove target ${alias:-$target}" 1001.1Smlelstv 1011.5Skre /sbin/iscsictl list_sessions | 1021.5Skre while read key1 num key2 sesstarget; do 1031.5Skre if [ x"$key1" = x"Session" ] && 1041.5Skre [ x"$key2" = x"Target" ] && 1051.5Skre [ x"$sesstarget" = x"$target" ] 1061.5Skre then 1071.5Skre /sbin/iscsictl logout -I "$num" | 1081.5Skre grep -v '^OK$' 1091.1Smlelstv fi 1101.1Smlelstv done 1111.1Smlelstv 1121.5Skre /sbin/iscsictl list_targets | 1131.5Skre while read num talias ttarget; do 1141.1Smlelstv if [ x"$ttarget" = x"$target" ]; then 1151.1Smlelstv /sbin/iscsictl remove_target -I "$num" 1161.1Smlelstv fi 1171.1Smlelstv done 1181.1Smlelstv ;; 1191.1Smlelstv esac 1201.1Smlelstv done < /etc/iscsi/volumes 1211.1Smlelstv} 1221.1Smlelstv 1231.1Smlelstvload_rc_config $name 1241.1Smlelstvrun_rc_command "$1" 125