diff options
Diffstat (limited to 'main/open-iscsi')
-rw-r--r-- | main/open-iscsi/APKBUILD | 49 | ||||
-rw-r--r-- | main/open-iscsi/CVE-2009-1297.patch | 31 | ||||
-rw-r--r-- | main/open-iscsi/iscsid.confd | 13 | ||||
-rw-r--r-- | main/open-iscsi/iscsid.initd | 124 | ||||
-rw-r--r-- | main/open-iscsi/open-iscsi-2.0.871-makefile-cleanup.patch | 33 |
5 files changed, 250 insertions, 0 deletions
diff --git a/main/open-iscsi/APKBUILD b/main/open-iscsi/APKBUILD new file mode 100644 index 0000000000..37d5f37409 --- /dev/null +++ b/main/open-iscsi/APKBUILD @@ -0,0 +1,49 @@ +# Maintainer: Leonardo Arena <rnalrd@gmail.com> +pkgname=open-iscsi +pkgver=2.0.871 +_realver=2.0-871 +pkgrel=3 +pkgdesc="High performance, transport independent, multi-platform iSCSI initiator" +url="http://www.open-iscsi.org" +license="GPL-2" +depends= +makedepends= +install="" +subpackages="$pkgname-doc" +source="http://www.open-iscsi.org/bits/$pkgname-$_realver.tar.gz + CVE-2009-1297.patch + open-iscsi-2.0.871-makefile-cleanup.patch + iscsid.initd + iscsid.confd" + +_builddir="$srcdir"/$pkgname-$_realver + +prepare() { + cd "$_builddir" + patch -p0 < ../../CVE-2009-1297.patch || return 1 + patch -p1 < ../../open-iscsi-2.0.871-makefile-cleanup.patch || return 1 +} + +build() { + cd "$_builddir" + make user || return 1 +} + +package() { + cd "$_builddir" + make DESTDIR="$pkgdir" install_user + mkdir -p $pkgdir/usr/bin + mkdir -p $pkgdir/usr/sbin + mv $pkgdir/sbin/iscsi-iname $pkgdir/usr/bin + mv $pkgdir/sbin/iscsi_discovery $pkgdir/usr/bin + mv $pkgdir/sbin/iscsiadm $pkgdir/usr/bin + mv $pkgdir/sbin/iscsid $pkgdir/usr/sbin + install -Dm755 ../../iscsid.initd "$pkgdir"/etc/init.d/iscsid + install -Dm644 ../../iscsid.confd "$pkgdir"/etc/conf.d/iscsid +} + +md5sums="0c403e8c9ad41607571ba0e6e8ff196e open-iscsi-2.0-871.tar.gz +d1584790b4e12f087e60089880b53d2b CVE-2009-1297.patch +734300d7b7590dc9ae9b2fb7f5b51bf0 open-iscsi-2.0.871-makefile-cleanup.patch +3e89cb86395756dafebc4f1490f0de10 iscsid.initd +b762b687d4628791b4362df22cf22d34 iscsid.confd" diff --git a/main/open-iscsi/CVE-2009-1297.patch b/main/open-iscsi/CVE-2009-1297.patch new file mode 100644 index 0000000000..d1728fff7e --- /dev/null +++ b/main/open-iscsi/CVE-2009-1297.patch @@ -0,0 +1,31 @@ +--- utils.orig/iscsi_discovery 2009-10-26 23:09:08.000000000 +0100 ++++ utils/iscsi_discovery 2009-10-26 23:11:56.000000000 +0100 +@@ -104,24 +104,22 @@ + + connected=0 + discovered=0 +- df=/tmp/discovered.$$ + + dbg "starting discovery to $ip" +- iscsiadm -m discovery --type sendtargets --portal ${ip}:${port} > ${df} +- while read portal target ++ disc="$(iscsiadm -m discovery --type sendtargets --portal ${ip}:${port})" ++ echo "${disc}" | while read portal target + do + portal=${portal%,*} + select_transport +- done < ${df} ++ done + +- discovered=$(cat ${df} | wc -l) ++ discovered=$(echo "${disc}" | wc -l) + if [ ${discovered} = 0 ]; then + echo "failed to discover targets at ${ip}" + exit 2 + else + echo "discovered ${discovered} targets at ${ip}" + fi +- /bin/rm -f ${df} + } + + try_login() diff --git a/main/open-iscsi/iscsid.confd b/main/open-iscsi/iscsid.confd new file mode 100644 index 0000000000..1c4cc40542 --- /dev/null +++ b/main/open-iscsi/iscsid.confd @@ -0,0 +1,13 @@ +# /etc/conf.d/iscsid + +# config file to use +CONFIG_FILE=/etc/iscsi/iscsid.conf + +# you need to specify an initiatorname in the file +INITIATORNAME_FILE=/etc/iscsi/initiatorname.iscsi + +# options to pass to iscsid +OPTS="-i ${INITIATORNAME_FILE}" + +# Start automatic targets when iscsid is started +AUTOSTARTTARGETS="yes" diff --git a/main/open-iscsi/iscsid.initd b/main/open-iscsi/iscsid.initd new file mode 100644 index 0000000000..572b0a6ae5 --- /dev/null +++ b/main/open-iscsi/iscsid.initd @@ -0,0 +1,124 @@ +#!/sbin/runscript + +opts="${opts} starttargets stoptargets restarttargets" + +depend() { + after modules + use net +} + +checkconfig() { + if [ ! -e /etc/conf.d/${SVCNAME} ]; then + eerror "Config file /etc/conf.d/${SVCNAME} does not exist!" + return 1 + fi + if [ ! -e "${CONFIG_FILE}" ]; then + eerror "Config file ${CONFIG_FILE} does not exist!" + return 1 + fi + if [ ! -e ${INITIATORNAME_FILE} ] || [ ! "$(grep "^InitiatorName=iqn\." ${INITIATORNAME_FILE})" ]; then + ewarn "${INITIATORNAME_FILE} should contain a string with your initiatior name." + IQN=iqn.$(date +%Y-%m).$(hostname -f | awk 'BEGIN { FS=".";}{x=NF; while (x>0) {printf $x ;x--; if (x>0) printf ".";} print ""}'):openiscsi + IQN=${IQN}-$(echo ${RANDOM}${RANDOM}${RANDOM}${RANDOM}${RANDOM} | md5sum | sed -e "s/\(.*\) -/\1/g" -e 's/ //g') + ebegin "Creating InitiatorName ${IQN} in ${INITIATORNAME_FILE}" + echo "InitiatorName=${IQN}" >> "${INITIATORNAME_FILE}" + eend $? + fi +} + +do_modules() { + msg="$1" + shift + modules="${1}" + shift + modopts="$@" + for m in ${modules} + do + if [ -n "$(find /lib/modules/`uname -r` | grep ${m})" ] + then + ebegin "${msg} ${m}" + modprobe ${modopts} ${m} + ret=$? + eend ${ret} + if [ ${ret} -ne 0 ]; then + return ${ret} + fi + else + ebegin "${msg} ${m}: not found" + return 1 + fi + done + return 0 +} + +start() { + ebegin "Checking open-iSCSI configuration" + checkconfig + ret=$? + if [ $ret -ne 0 ]; then + eend 1 + return 1 + fi + ebegin "Loading iSCSI modules" + do_modules 'Loading' 'libiscsi scsi_transport_iscsi iscsi_tcp' + ret=$? + if [ $ret -ne 0 ]; then + eend 1 + return 1 + fi + + ebegin "Starting ${SVCNAME}" + start-stop-daemon --start --quiet --exec /usr/sbin/iscsid -- ${OPTS} + ret=$? + if [ $ret -ne 0 ]; then + eend $? + return $? + fi + + # Start automatic targets when iscsid is started + if [ "${AUTOSTARTTARGETS}" = "yes" ]; then + starttargets + return $? + fi + return 0 +} + +stop() { + stoptargets + ebegin "Stopping ${SVCNAME}" + start-stop-daemon --signal HUP --stop --quiet --exec /usr/sbin/iscsid #--pidfile $PID_FILE + eend $? + + # ugly, but pid file is not removed by iscsid + rm -f $PID_FILE + + do_modules 'Removing iSCSI modules' 'iscsi_tcp scsi_transport_iscsi libiscsi' '-r' + eend $? +} + +starttargets() { + ebegin "Setting up iSCSI targets" + /usr/bin/iscsiadm -m node --loginall=automatic + ret=$? + eend $ret + return $ret +} + +stoptargets() { + ebegin "Disconnecting iSCSI targets" + sync + /usr/bin/iscsiadm -m node --logoutall=all + ret=$? + eend $ret + return $ret +} + +restarttargets() { + stoptargets + starttargets +} + +status() { + ebegin "Showing current active iSCSI sessions" + /usr/bin/iscsiadm -m session +} diff --git a/main/open-iscsi/open-iscsi-2.0.871-makefile-cleanup.patch b/main/open-iscsi/open-iscsi-2.0.871-makefile-cleanup.patch new file mode 100644 index 0000000000..6ca2a4eaba --- /dev/null +++ b/main/open-iscsi/open-iscsi-2.0.871-makefile-cleanup.patch @@ -0,0 +1,33 @@ +diff -Nuar open-iscsi-2.0-871.orig/usr/Makefile open-iscsi-2.0-871/usr/Makefile +--- open-iscsi-2.0-871.orig/usr/Makefile 2009-07-10 20:55:58.000000000 -0700 ++++ open-iscsi-2.0-871/usr/Makefile 2009-11-12 00:58:16.467960344 -0800 +@@ -48,14 +48,14 @@ + all: $(PROGRAMS) + + iscsid: $(COMMON_SRCS) $(IPC_OBJ) $(INITIATOR_SRCS) iscsid.o +- $(CC) $(CFLAGS) $^ -o $@ ++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ + + iscsiadm: $(COMMON_SRCS) $(FW_BOOT_SRCS) strings.o discovery.o iscsiadm.o +- $(CC) $(CFLAGS) $^ -o $@ ++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ + + iscsistart: $(IPC_OBJ) $(ISCSI_LIB_SRCS) $(INITIATOR_SRCS) $(FW_BOOT_SRCS) \ + iscsistart.o statics.o +- $(CC) $(CFLAGS) -static $^ -o $@ ++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ + clean: + rm -f *.o $(PROGRAMS) .depend $(LIBSYS) + +diff -Nuar open-iscsi-2.0-871.orig/utils/Makefile open-iscsi-2.0-871/utils/Makefile +--- open-iscsi-2.0-871.orig/utils/Makefile 2009-07-10 20:55:58.000000000 -0700 ++++ open-iscsi-2.0-871/utils/Makefile 2009-11-12 00:58:56.404623435 -0800 +@@ -6,7 +6,7 @@ + all: $(PROGRAMS) + + iscsi-iname: md5.o iscsi-iname.o +- $(CC) $(CFLAGS) $^ $(DBM_LIB) -o $@ ++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(DBM_LIB) $^ + + clean: + rm -f *.o $(PROGRAMS) .depend |