OBS User unknown 2007-01-15 23:27:31 +00:00 committed by Git OBS Bridge
commit 9105d32d29
14 changed files with 1136 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

81
boot.open-iscsi Normal file
View File

@ -0,0 +1,81 @@
#!/bin/bash
#
# /etc/init.d/iscsi
#
### BEGIN INIT INFO
# Provides: iscsiboot
# Required-Start:
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start: B
# Default-Stop:
# Short-Description: Starts the iSCSI initiator daemon
#
### END INIT INFO
PID_FILE=/var/run/iscsi.pid
CONFIG_FILE=/etc/iscsid.conf
DAEMON=/sbin/iscsid
ARGS="-c $CONFIG_FILE -p $PID_FILE"
# Source LSB init functions
. /etc/rc.status
#
# This service is run right after booting. So all activated targets
# must be enabled during mkinitrd run and thus should not be removed
# when the open-iscsi service is stopped.
#
iscsi_mark_root_nodes()
{
TARGETS=$($ISCSIADM -m session 2> /dev/null | sed 's@\[[^:]*:\(.*\)\] .*@\1@g')
for rec in $TARGETS; do
STARTUP=`$ISCSIADM -m node -r $rec | grep "node.conn\[0\].startup" | cut -d' ' -f3`
if [ $STARTUP != "onboot" ] ; then
$ISCSIADM -m node -r $rec -o update -n node.conn[0].startup -v onboot
fi
done
}
# Reset status of this service
rc_reset
# We only need to start this for root on iSCSI
if ! grep -q iscsi_tcp /proc/modules ; then
rc_failed 7
rc_exit
fi
case "$1" in
start)
[ ! -d /var/lib/open-iscsi ] && mkdir -p /var/lib/open-iscsi
echo -n "Starting iSCSI initiator for the root device: "
startproc $DAEMON $ARGS
rc_status -v
iscsi_mark_root_nodes
;;
stop)
rc_failed 0
;;
status)
echo -n "Checking for iSCSI initiator service: "
if checkproc $DAEMON ; then
rc_status -v
else
rc_failed 3
rc_status -v
fi
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
rc_exit

140
iscsi-iname.c Normal file
View File

@ -0,0 +1,140 @@
/*
* iSCSI InitiatorName creation utility
* Copyright (C) 2001 Cisco Systems, Inc.
* maintained by linux-iscsi-devel@lists.sourceforge.net
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* See the file COPYING included with this distribution for more details.
*
* $Id: iscsi-iname.c,v 1.4 2004/12/03 19:36:13 mikenc Exp $
*
* iscsi-iname.c - Compute an iSCSI InitiatorName for this host.
* Note that to ensure uniqueness, the system time is
* a factor. This name must be cached and only regenerated
* if there is no cached value.
*/
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/utsname.h>
#include <sys/time.h>
#include "md5.h"
#define TARGET_NAME_MAXLEN 255
#define RANDOM_NUM_GENERATOR "/dev/urandom"
int
main(int argc, char *argv[])
{
char iname[TARGET_NAME_MAXLEN + 1];
struct timeval time;
struct utsname system_info;
long hostid;
struct MD5Context context;
unsigned char digest[16];
unsigned char *bytes = digest;
unsigned char entropy[16];
int e;
int fd;
char *prefix;
/* initialize */
memset(iname, 0, sizeof (iname));
memset(digest, 0, sizeof (digest));
memset(&context, 0, sizeof (context));
MD5Init(&context);
/* take a prefix if given, otherwise use a default. */
if (argc > 1 && argv[1]) {
prefix = argv[1];
if (( strcmp(prefix, "-h") == 0 ) ||
( strcmp(prefix, "--help") == 0 )) {
printf("\nDisplays the iSCSI initiator name\n");
return 0;
} else if ( strcmp(prefix, "-p") == 0 ) {
prefix = argv[2];
} else {
printf("\nUsage: iscsi-iname [-h | --help | "
"-p <prefix>]\n");
return 0;
}
} else {
prefix = "iqn.1987-05.com.cisco:01";
}
/* try to feed some entropy from the pool to MD5 in order to get
* uniqueness properties
*/
if ((fd = open(RANDOM_NUM_GENERATOR, O_RDONLY))) {
e = read(fd, &entropy, 16);
if (e >= 1)
MD5Update(&context, (md5byte *)entropy, e);
close(fd);
}
/* time the name is created is a factor in order to get
* uniqueness properties
*/
if (gettimeofday(&time, NULL) < 0) {
perror("error: gettimeofday failed");
return 1;
}
MD5Update(&context, (md5byte *) & time.tv_sec, sizeof (time.tv_sec));
MD5Update(&context, (md5byte *) & time.tv_usec, sizeof (time.tv_usec));
/* hostid */
hostid = gethostid();
MD5Update(&context, (md5byte *) & hostid, sizeof (hostid));
/* get the hostname and system name */
if (uname(&system_info) < 0) {
perror("error: uname failed");
return 1;
}
MD5Update(&context, (md5byte *) system_info.sysname,
sizeof (system_info.sysname));
MD5Update(&context, (md5byte *) system_info.nodename,
sizeof (system_info.nodename));
MD5Update(&context, (md5byte *) system_info.release,
sizeof (system_info.release));
MD5Update(&context, (md5byte *) system_info.version,
sizeof (system_info.version));
MD5Update(&context, (md5byte *) system_info.machine,
sizeof (system_info.machine));
/* compute the md5 hash of all the bits we just collected */
MD5Final(digest, &context);
/* vary which md5 bytes we pick (though we probably don't need to do
* this, since hopefully MD5 produces results such that each byte is as
* good as any other).
*/
if ((fd = open(RANDOM_NUM_GENERATOR, O_RDONLY))) {
if (read(fd, entropy, 1) == 1)
bytes = &digest[(entropy[0] % (sizeof(digest) - 6))];
close(fd);
}
/* print the prefix followed by 6 bytes of the MD5 hash */
sprintf(iname, "%s.%x%x%x%x%x%x", prefix,
bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5]);
iname[sizeof (iname) - 1] = '\0';
printf("%s\n", iname);
return 0;
}

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2bd837f02a8f82c9782346b91836e17172f6f62ecc4b2224739eb2e8d5d9ea08
size 177056

226
open-iscsi-713.diff Normal file
View File

@ -0,0 +1,226 @@
Index: kernel/scsi_transport_iscsi.c
===================================================================
--- kernel/scsi_transport_iscsi.c (revision 707)
+++ kernel/scsi_transport_iscsi.c (revision 713)
@@ -33,7 +33,7 @@
#define ISCSI_SESSION_ATTRS 11
#define ISCSI_CONN_ATTRS 11
#define ISCSI_HOST_ATTRS 0
-#define ISCSI_TRANSPORT_VERSION "2.0-707"
+#define ISCSI_TRANSPORT_VERSION "2.0-711"
struct iscsi_internal {
int daemon_pid;
Index: doc/iscsid.8
===================================================================
--- doc/iscsid.8 (revision 707)
+++ doc/iscsid.8 (revision 713)
@@ -15,11 +15,11 @@
.TP
.BI [-c|--config=]\fIconfig\-file\fP
Read configuration from \fIconfig\-file\fR rather than the default
-\fI/etc/iscsid.conf\fR file.
+\fI/etc/iscsi/iscsid.conf\fR file.
.TP
.BI [-i|--initiatorname=]\fIiname\-file\fP
Read initiator name from \fIiname\-file\fR rather than the default
-\fI/etc/initiatorname.iscsi\fR file.
+\fI/etc/iscsi/initiatorname.iscsi\fR file.
.TP
.BI [-f|--foreground]
run
@@ -47,14 +47,14 @@
.SH FILES
.TP
-/etc/iscsid.conf
+/etc/iscsi/iscsid.conf
The configuration file read by
.B iscsid
and
.B iscsiadm
on startup.
.TP
-/etc/initiatorname.iscsi
+/etc/iscsi/initiatorname.iscsi
The file containing the iSCSI initiatorname
and initiatoralias read by
.B iscsid
@@ -62,7 +62,7 @@
.B iscsiadm
on startup.
.TP
-/var/db/iscsi/*.db
+/etc/iscsi/nodes
Open-iSCSI persistent configuration database
.SH "SEE ALSO"
Index: usr/idbm.c
===================================================================
--- usr/idbm.c (revision 707)
+++ usr/idbm.c (revision 713)
@@ -961,15 +961,14 @@
discovery_rec_t *drec;
node_rec_t *nrec;
- /* sync default configuration */
- idbm_sync_config(db, 1);
-
/* allocate new discovery record and initialize with defaults */
drec = malloc(sizeof(discovery_rec_t));
if (!drec) {
log_error("out of memory on discovery record allocation");
return NULL;
}
+ drec->type = type;
+
if (drec->type == DISCOVERY_TYPE_SENDTARGETS) {
memcpy(drec, &db->drec_st, sizeof(discovery_rec_t));
} else if (drec->type == DISCOVERY_TYPE_SLP) {
@@ -988,7 +987,6 @@
memcpy(nrec, &db->nrec, sizeof(node_rec_t));
/* update discovery record */
- drec->type = type;
if (drec->type == DISCOVERY_TYPE_SENDTARGETS) {
strncpy(drec->u.sendtargets.address, ip, NI_MAXHOST);
drec->u.sendtargets.port = port;
@@ -1138,6 +1136,9 @@
void
idbm_sendtargets_defaults(idbm_t *db, struct iscsi_sendtargets_config *cfg)
{
+ /* sync default configuration */
+ idbm_sync_config(db, 1);
+
memcpy(cfg, &db->drec_st.u.sendtargets,
sizeof(struct iscsi_sendtargets_config));
}
Index: usr/initiator.c
===================================================================
--- usr/initiator.c (revision 707)
+++ usr/initiator.c (revision 713)
@@ -1528,6 +1528,10 @@
log_debug(6, "looking for session [%s,%s,%d]",
rec->name, rec->conn[0].address, rec->conn[0].port);
+ if (strlen(rec->name) != strlen(targetname) ||
+ strlen(rec->conn[0].address) != strlen(address))
+ return 0;
+
if (!strncmp(rec->name, targetname, strlen(rec->name)) &&
!strncmp(rec->conn[0].address, address,
strlen(rec->conn[0].address)) &&
Index: usr/version.h
===================================================================
--- usr/version.h (revision 707)
+++ usr/version.h (revision 713)
@@ -6,7 +6,7 @@
* This may not be the same value as the kernel versions because
* some other maintainer could merge a patch without going through us
*/
-#define ISCSI_VERSION_STR "2.0-707"
+#define ISCSI_VERSION_STR "2.0-711"
#define ISCSI_VERSION_FILE "/sys/module/scsi_transport_iscsi/version"
#endif
Index: etc/initd/initd.suse
===================================================================
--- etc/initd/initd.suse (revision 707)
+++ etc/initd/initd.suse (revision 713)
@@ -15,7 +15,7 @@
### END INIT INFO
PID_FILE=/var/run/iscsi.pid
-CONFIG_FILE=/etc/iscsid.conf
+CONFIG_FILE=/etc/iscsi/iscsid.conf
DAEMON=/sbin/iscsid
ISCSIADM=/sbin/iscsiadm
ARGS="-c $CONFIG_FILE -p $PID_FILE"
@@ -59,7 +59,7 @@
$ISCSIADM -m session | while read line; do
set ${line}
TARGET=$(echo $line | cut -d" " -f4)
- PORTAL=$(echo $line | cut -d" " -f3 | sed 's/,.//')
+ PORTAL=$(echo $line | cut -d" " -f3 | sed 's/,.*//')
STARTUP=`$ISCSIADM -m node --targetname $TARGET -p $PORTAL | grep "node.conn\[0\].startup" | cut -d' ' -f3`
NODE=`$ISCSIADM -m node --targetname $TARGET -p $PORTAL | grep "node.name" | cut -d' ' -f3`
if [ $STARTUP != "onboot" ] ; then
@@ -85,7 +85,7 @@
$ISCSIADM -m session | while read line; do
set ${line}
TARGET=$(echo $line | cut -d" " -f4)
- PORTAL=$(echo $line | cut -d" " -f3 | sed 's/,.//')
+ PORTAL=$(echo $line | cut -d" " -f3 | sed 's/,.*//')
NODE=`$ISCSIADM -m node --targetname $TARGET -p $PORTAL | grep "node.name" | cut -d' ' -f3`
echo -e "\t$NODE"
done
Index: etc/initd/initd.debian
===================================================================
--- etc/initd/initd.debian (revision 707)
+++ etc/initd/initd.debian (revision 713)
@@ -6,7 +6,7 @@
PID_FILE=/var/run/iscsid.pid
CONFIG_FILE=/etc/iscsid.conf
-DAEMON=/usr/sbin/iscsid
+DAEMON=/sbin/iscsid
PATH=/sbin:/bin:/usr/sbin:/usr/bin
Index: README
===================================================================
--- README (revision 707)
+++ README (revision 713)
@@ -123,7 +123,7 @@
Usage: iscsid [OPTION]
- -c, --config=[path] Execute in the config file (/etc/iscsid.conf).
+ -c, --config=[path] Execute in the config file (/etc/iscsi/iscsid.conf).
-f, --foreground run iscsid in the foreground
-d, --debug debuglevel print debugging information
-u, --uid=uid run as uid, default is current user
@@ -141,10 +141,10 @@
The database contains two tables:
-- Discovery table (discovery.db);
-- Node table (node.db).
+- Discovery table (/etc/iscsi/send_targets);
+- Node table (/etc/iscsi/nodes).
-The regular place for iSCSI database files: /var/db/iscsi/*.db
+The regular place for iSCSI database files: /etc/iscsi/nodes
The iscsiadm utility is a command-line tool to manage (update, delete,
insert, query) the persistent database.
@@ -250,7 +250,7 @@
6. Configuration
================
-The default configuration file is /etc/iscsid.conf. This file contains
+The default configuration file is /etc/iscsi/iscsid.conf. This file contains
only configuration that could be overwritten by iSCSI Discovery,
or manualy updated via iscsiadm utility. Its OK if this file does not
exist in which case compiled-in default configuration will take place
@@ -333,9 +333,9 @@
Once iscsi is up, you can perform discovery to targets using:
iscsiadm -m discovery -t sendtargets -p 192.168.1.1:3260
-While discovery targets are kept in the discovery.db, they are
+While discovery targets are kept in the discovery db, they are
usefull only for re-discovery. The discovered targets (a.k.a. nodes)
-are stored as records in the xxx.db.
+are stored as records in the node db.
The discovered targets are not logged into yet. Rather than logging
into the discovered nodes (making LUs from those nodes available as
@@ -350,7 +350,7 @@
iscsiadm -m node -T targetname -p ip:port --op update -n node.conn[0].startup -v automatic
Or to set the "node.conn[0].statup" attribute to "startup" as default for
-all sessions add the following to the /etc/iscsid.conf:
+all sessions add the following to the /etc/iscsi/iscsid.conf:
node.conn[0].startup = automatic

View File

@ -0,0 +1,111 @@
diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c
index 07922ca..873607b 100644
--- a/usr/iscsiadm.c
+++ b/usr/iscsiadm.c
@@ -260,6 +260,19 @@ session_logout(int rid, node_rec_t *rec)
}
static int
+session_active(int rid)
+{
+ iscsiadm_req_t req;
+ iscsiadm_rsp_t rsp;
+
+ memset(&req, 0, sizeof(req));
+ req.command = MGMT_IPC_SESSION_ACTIVE;
+ req.u.session.rid = rid;
+
+ return do_iscsid(&ipc_fd, &req, &rsp);
+}
+
+static int
config_init(void)
{
int rc;
@@ -726,6 +739,12 @@ main(int argc, char **argv)
goto out;
}
} else if (op == OP_DELETE) {
+ rc = session_active(rid);
+ if (rc > 0 && rc != MGMT_IPC_ERR_NOT_FOUND) {
+ iscsid_handle_error(rc);
+ rc = -1;
+ goto out;
+ }
if (idbm_delete_node(db, &rec)) {
log_error("can not delete record");
rc = -1;
diff --git a/usr/mgmt_ipc.c b/usr/mgmt_ipc.c
index d1f1eaf..4682b34 100644
--- a/usr/mgmt_ipc.c
+++ b/usr/mgmt_ipc.c
@@ -123,6 +123,27 @@ mgmt_ipc_session_login(struct mgmt_ipc_d
}
static mgmt_ipc_err_e
+mgmt_ipc_session_active(queue_task_t *qtask, int rid)
+{
+ iscsi_session_t *session;
+ struct qelem *item;
+ int i;
+
+ for (i = 0; i < num_providers; i++) {
+ item = provider[i].sessions.q_forw;
+ while (item != &provider[i].sessions) {
+ session = (iscsi_session_t *)item;
+ if (session->nrec.id == rid)
+ return MGMT_IPC_ERR_ACTIVE;
+
+ item = item->q_forw;
+ }
+ }
+
+ return MGMT_IPC_ERR_NOT_FOUND;
+}
+
+static mgmt_ipc_err_e
mgmt_ipc_session_activelist(queue_task_t *qtask, iscsiadm_rsp_t *rsp)
{
iscsi_session_t *session;
@@ -383,6 +404,9 @@ mgmt_ipc_handle(struct mgmt_ipc_db *dbt,
rsp.err = mgmt_ipc_session_sync(dbt, qtask, req.u.session.rid,
req.u.session.sid);
break;
+ case MGMT_IPC_SESSION_ACTIVE:
+ rsp.err = mgmt_ipc_session_active(qtask, req.u.session.rid);
+ break;
case MGMT_IPC_SESSION_ACTIVELIST:
rsp.err = mgmt_ipc_session_activelist(qtask, &rsp);
immrsp = 1;
diff --git a/usr/mgmt_ipc.h b/usr/mgmt_ipc.h
index be12070..9564ed5 100644
--- a/usr/mgmt_ipc.h
+++ b/usr/mgmt_ipc.h
@@ -42,6 +42,7 @@ typedef enum mgmt_ipc_err {
MGMT_IPC_ERR_ACCESS = 13,
MGMT_IPC_ERR_TRANS_CAPS = 14,
MGMT_IPC_ERR_EXISTS = 15,
+ MGMT_IPC_ERR_ACTIVE = 16,
} mgmt_ipc_err_e;
typedef enum iscsiadm_cmd {
@@ -58,6 +59,7 @@ typedef enum iscsiadm_cmd {
MGMT_IPC_CONFIG_FILE = 10,
MGMT_IPC_IMMEDIATE_STOP = 11,
MGMT_IPC_SESSION_SYNC = 12,
+ MGMT_IPC_SESSION_ACTIVE = 13,
} iscsiadm_cmd_e;
/* IPC Request */
diff --git a/usr/util.c b/usr/util.c
index a4c0b5a..ba63850 100644
--- a/usr/util.c
+++ b/usr/util.c
@@ -194,6 +194,7 @@ void iscsid_handle_error(int err)
/* 13 */ "daemon access denied",
/* 14 */ "iSCSI transport capability failure",
/* 15 */ "already exists",
+ /* 16 */ "session still active",
};
log_error("initiator reported error (%d - %s)", err, err_msgs[err]);
}

View File

@ -0,0 +1,20 @@
--- open-iscsi-0.5-454/usr/Makefile 2006/02/09 09:41:31 1.7
+++ open-iscsi-0.5-454/usr/Makefile 2006/02/09 09:42:46
@@ -33,7 +33,7 @@
OPTFLAGS ?= -O2 -fno-inline -g
WARNFLAGS ?= -Wall -Wstrict-prototypes
CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -I../include -D$(OSNAME) $(IPC_CFLAGS)
-PROGRAMS = iscsid iscsiadm iscsistart
+PROGRAMS = iscsid iscsiadm iscsistart iscsi-iname
# sources shared between iscsid and iscsiadm
COMMON_SRCS = util.o io.o auth.o login.o log.o md5.o sha1.o idbm.o
@@ -47,5 +47,8 @@
iscsistart: $(IPC_OBJ) $(ISCSI_LIB_SRCS) $(INITIATOR_SRCS) iscsistart.o
$(CC) $^ $(DBM_LIB) -o $@
+iscsi-iname: md5.o iscsi-iname.o
+ $(CC) $^ -o $@
+
clean:
rm -f *.o $(PROGRAMS)

View File

@ -0,0 +1,32 @@
From nobody Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Mon May 22 14:28:05 2006 +0200
Subject: [PATCH] initd.suse: start iscsi after xendomains
open-iscsi should be started after xendomains to have all devices
available. This is required as Xen might rearrange the network.
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
etc/initd/initd.suse | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
25917dc6bf253ff53a4d14a88d5dc5d145928824
diff --git a/etc/initd/initd.suse b/etc/initd/initd.suse
index 13e05d3..8862210 100644
--- a/etc/initd/initd.suse
+++ b/etc/initd/initd.suse
@@ -5,7 +5,7 @@ #
### BEGIN INIT INFO
# Provides: iscsi
# Required-Start: $network
-# Should-Start:
+# Should-Start: xendomains
# Required-Stop:
# Should-Stop:
# Default-Start: 3 5
--
1.3.1

21
open-iscsi-suse.diff Normal file
View File

@ -0,0 +1,21 @@
Index: etc/initd/initd.suse
===================================================================
--- etc/initd/initd.suse (revision 713)
+++ etc/initd/initd.suse (working copy)
@@ -23,16 +23,9 @@
# Source LSB init functions
. /etc/rc.status
-. /etc/sysconfig/open-iscsi
-
# Reset status of this service
rc_reset
-iscsi_discovery()
-{
- $ISCSIADM -m discovery --type=$ISCSI_DISCOVERY --portal=$ISCSI_PORTAL > /dev/null
-}
-
iscsi_login_all_nodes()
{
$ISCSIADM -m node 2> /dev/null | while read line; do

103
open-iscsi-use-dev-urandom Normal file
View File

@ -0,0 +1,103 @@
Index: usr/auth.c
===================================================================
--- usr/auth.c (revision 713)
+++ usr/auth.c (working copy)
@@ -28,6 +28,8 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
#include "auth.h"
#include "initiator.h"
@@ -186,20 +188,32 @@
long r;
unsigned n;
+ int fd;
+ fd = open("/dev/urandom", O_RDONLY);
while (length > 0) {
- r = rand();
+ if (fd)
+ read(fd, &r, sizeof(long));
+ else
+ r = rand();
r = r ^ (r >> 8);
r = r ^ (r >> 4);
n = r & 0x7;
- r = rand();
+ if (fd)
+ read(fd, &r, sizeof(long));
+ else
+ r = rand();
r = r ^ (r >> 8);
r = r ^ (r >> 5);
n = (n << 3) | (r & 0x7);
- r = rand();
+ if (fd)
+ read(fd, &r, sizeof(long));
+ else
+ r = rand();
+
r = r ^ (r >> 8);
r = r ^ (r >> 5);
n = (n << 2) | (r & 0x3);
@@ -207,6 +221,8 @@
*data++ = n;
length--;
}
+ if (fd)
+ close(fd);
}
/**
Index: usr/chap.c
===================================================================
--- usr/chap.c (revision 713)
+++ usr/chap.c (working copy)
@@ -324,6 +324,7 @@
char text[CHAP_CHALLENGE_MAX * 2 + 8];
static int chap_id;
int i;
+ int fd;
value = text_key_find(conn, "CHAP_A");
if (!value)
@@ -353,7 +354,8 @@
* wise, or should we rather always use the max. allowed length of
* 1024 for the (unencoded) challenge?
*/
- conn->auth.chap.challenge_size = (rand() % (CHAP_CHALLENGE_MAX / 2)) + CHAP_CHALLENGE_MAX / 2;
+ conn->auth.chap.challenge_size = (sizeof(int) % (CHAP_CHALLENGE_MAX / 2)) +
+ CHAP_CHALLENGE_MAX / 2;
conn->auth.chap.challenge = xmalloc(conn->auth.chap.challenge_size);
if (!conn->auth.chap.challenge)
@@ -362,11 +364,21 @@
p = text;
strcpy(p, "0x");
p += 2;
+
+ fd = open("/dev/urandom", O_RDONLY);
+ if (fd) {
+ read(fd, conn->auth.chap.challenge,
+ sizeof(int) * conn->auth.chap.challenge_size);
+ }
+
for (i = 0; i < conn->auth.chap.challenge_size; i++) {
- conn->auth.chap.challenge[i] = rand();
+ if (!fd) {
+ conn->auth.chap.challenge[i] = rand();
+ }
sprintf(p, "%.2hhx", conn->auth.chap.challenge[i]);
p += 2;
}
+ if (fd) close(fd);
text_key_add(conn, "CHAP_C", text);
return 0;

166
open-iscsi.changes Normal file
View File

@ -0,0 +1,166 @@
-------------------------------------------------------------------
Fri Oct 20 14:14:33 CEST 2006 - hare@suse.de
- Update to svn r713
- Use /dev/urandom instead of rand() (#180837)
- Fixup init script
-------------------------------------------------------------------
Fri Oct 6 15:19:31 CEST 2006 - hare@suse.de
- Update to official version 2.0-707
-------------------------------------------------------------------
Fri Jul 28 13:19:29 CEST 2006 - olh@suse.de
- remove unused boot.proc from boot.open-iscsi (#181972)
-------------------------------------------------------------------
Thu Jun 1 17:06:24 CEST 2006 - hare@suse.de
- Added new startmode 'onboot' for root on iSCSI
- Added new init script boot.open-iscsi startup
iscsid as early as possible (#176804)
-------------------------------------------------------------------
Wed May 31 08:30:29 CEST 2006 - hare@suse.de
- update to svn r595
- Include local patches
- Fix lockup on target restart for real (#176151)
-------------------------------------------------------------------
Mon May 22 14:17:33 CEST 2006 - hare@suse.de
- update to svn r581
- Fix lockup when target is restarted (#176151)
- Start open-iscsi after Xen (#177381)
-------------------------------------------------------------------
Fri May 19 10:38:38 CEST 2006 - hare@suse.de
- update to svn r574
- Fix machine hang during error recovery (#174166)
- Display chap secrets for yast (#149055)
-------------------------------------------------------------------
Tue May 2 15:27:21 CEST 2006 - hare@suse.de
- update to svn r564
(contains all local changes)
-------------------------------------------------------------------
Tue Apr 25 17:41:17 MDT 2006 - wrwhitehead@novell.com
- Fix communication hang (#157463).
- The iscsi-tcp_data_ready callback needs to empty out the
tcp receive queue rather than just rely on the callback to
occur for every message in the receive queue.
-------------------------------------------------------------------
Fri Apr 21 09:50:46 CEST 2006 - hare@suse.de
- update to svn r545
Fixes a crash with Wasabi targets (#157463).
-------------------------------------------------------------------
Wed Mar 22 15:09:01 CET 2006 - hare@suse.de
- Add rcopen-iscsi link (#158230)
- Check for active records before deletion (#149935)
- Do not display error messages on startup if no
records are found.
-------------------------------------------------------------------
Fri Mar 10 14:16:23 CET 2006 - hare@suse.de
- Update to svn r520 (contains all local changes)
- Add documentation for discovery types (#149936)
-------------------------------------------------------------------
Tue Feb 28 09:55:57 CET 2006 - hare@suse.de
- Fixed type of portal_group_tag (#153638)
-------------------------------------------------------------------
Tue Feb 21 09:31:55 CET 2006 - hare@suse.de
- Fixed open-iscsi startup script (#148982)
-------------------------------------------------------------------
Mon Feb 20 15:25:22 CET 2006 - hare@suse.de
- Update to svn r495
- Implement iSCSI boot support (FATE #140350)
-------------------------------------------------------------------
Thu Feb 9 10:57:53 CET 2006 - hare@suse.de
- Update to svn r488 to match kernel revision
(#149412).
- Remove obsolete patches.
-------------------------------------------------------------------
Wed Jan 25 21:38:58 CET 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
-------------------------------------------------------------------
Mon Jan 23 12:25:05 CET 2006 - hare@suse.de
- Update to svn r473
- Enhance start script
- Fix appearent login failures.
-------------------------------------------------------------------
Fri Jan 20 15:36:38 CET 2006 - hare@suse.de
- Update to svn r471
- Fix start script.
-------------------------------------------------------------------
Mon Jan 16 15:27:43 CET 2006 - hare@suse.de
- Add Provides/Obsoletes tag.
-------------------------------------------------------------------
Fri Jan 13 17:14:16 CET 2006 - hare@suse.de
- Rebasing package to open-iscsi-0.5-454
- Update to svn r457
-------------------------------------------------------------------
Mon Dec 19 09:18:38 CET 2005 - hare@suse.de
- Update to svn r446.
-------------------------------------------------------------------
Thu Nov 3 13:39:51 CET 2005 - hare@suse.de
- Update to svn r436.
-------------------------------------------------------------------
Thu Sep 8 09:23:32 CEST 2005 - hare@suse.de
- Update to svn r408.
(Added NOOP IN handling)
- Removed obsolete patches
-------------------------------------------------------------------
Mon Aug 22 14:29:49 CEST 2005 - hare@suse.de
- Update to svn r401.
- Fixed package to install properly.
- Fixed init script
- Added iscsi-iname to generate iSCSI Initiatorname.
-------------------------------------------------------------------
Mon Aug 8 11:40:21 CEST 2005 - hare@suse.de
- Update to svn r389.
-------------------------------------------------------------------
Thu Jul 7 09:10:35 CEST 2005 - hare@suse.de
- Initial version 0.3rc6-369

209
open-iscsi.spec Normal file
View File

@ -0,0 +1,209 @@
#
# spec file for package open-iscsi (Version 2.0.713)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: open-iscsi
URL: http://www.open-iscsi.org
License: GNU General Public License (GPL) - all versions
Group: Productivity/Networking/Other
Prereq: %fillup_prereq %insserv_prereq
Autoreqprov: on
Version: 2.0.713
Release: 1
Provides: linux-iscsi
Obsoletes: linux-iscsi
%define iscsi_release 707
Summary: Linux* Open-iSCSI Software Initiator
Source: %{name}-2.0-707.tar.gz
Source3: boot.open-iscsi
Source12: iscsi-iname.c
Patch1: %{name}-713.diff
Patch2: %{name}-suse.diff
Patch3: %{name}-use-dev-urandom
Patch12: %{name}-start-iscsi-after-xen
Patch21: %{name}-check-active-sessions-before-delete
Patch22: %{name}-iscsi-iname-Makefile.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Open-iSCSI is a high-performance, transport independent, multi-platform
implementation of RFC3720 iSCSI.
Open-iSCSI is partitioned into user and kernel parts.
The kernel portion of Open-iSCSI is a from-scratch code licensed under
GPL. The kernel part implements iSCSI data path (that is, iSCSI Read
and iSCSI Write), and consists of two loadable modules: iscsi_if.ko and
iscsi_tcp.ko.
User space contains the entire control plane: configuration manager,
iSCSI Discovery, Login and Logout processing, connection-level error
processing, Nop-In and Nop-Out handling, and (in the future:) Text
processing, iSNS, SLP, Radius, etc.
The user space Open-iSCSI consists of a daemon process called iscsid,
and a management utility iscsiadm.
Authors:
--------
open-iscsi@googlegroups.com
%prep
%setup -n %{name}-2.0-707
%patch1 -p0
%patch2 -p0
%patch3 -p0
%patch12 -p1
%patch22 -p1
cp %{S:12} usr/
%build
%{__make} OPTFLAGS="${RPM_OPT_FLAGS}" -C usr
%install
[ "${RPM_BUILD_ROOT}" != "/" -a -d ${RPM_BUILD_ROOT} ] && rm -rf ${RPM_BUILD_ROOT}
make DESTDIR=${RPM_BUILD_ROOT} install_programs
make DESTDIR=${RPM_BUILD_ROOT} install_etc
make DESTDIR=${RPM_BUILD_ROOT} install_initd_suse
make DESTDIR=${RPM_BUILD_ROOT} install_doc
install -D -m 755 usr/iscsi-iname ${RPM_BUILD_ROOT}/sbin/iscsi-iname
install -D -m 755 %{S:3} ${RPM_BUILD_ROOT}/etc/init.d/boot.open-iscsi
(cd ${RPM_BUILD_ROOT}/sbin; ln -sf /etc/init.d/open-iscsi rcopen-iscsi)
%clean
[ "${RPM_BUILD_ROOT}" != "/" -a -d ${RPM_BUILD_ROOT} ] && rm -rf ${RPM_BUILD_ROOT}
%post
%{fillup_and_insserv -Y boot.open-iscsi}
if [ -f /etc/initiatorname.iscsi ] ; then
mv /etc/initiatorname.iscsi /etc/iscsi
fi
if [ ! -f /etc/iscsi/initiatorname.iscsi ]; then
cat << EOF >> /etc/iscsi/initiatorname.iscsi
## DO NOT EDIT OR REMOVE THIS FILE!
## If you remove this file, the iSCSI daemon will not start.
## If you change the InitiatorName, existing access control lists
## may reject this initiator. The InitiatorName must be unique
## for each iSCSI initiator. Do NOT duplicate iSCSI InitiatorNames.
EOF
ISSUEDATE="1996-04"
INAME=$(/sbin/iscsi-iname -p iqn.$ISSUEDATE.de.suse:01)
printf "InitiatorName=$INAME\n" >>/etc/iscsi/initiatorname.iscsi
chmod 0600 /etc/iscsi/initiatorname.iscsi
fi
if [ -f /var/lib/iscsi/discovery ]; then
mv /var/lib/iscsi/discovery /var/lib/open-iscsi
fi
if [ -f /var/lib/iscsi/node ] ; then
mv /var/lib/iscsi/node /var/lib/open-iscsi
fi
%postun
%{insserv_cleanup}
%files
%defattr(-,root,root)
%attr(0600,root,root) %config(noreplace) /etc/iscsi/iscsid.conf
%config /etc/init.d/open-iscsi
%config /etc/init.d/boot.open-iscsi
%dir /etc/iscsi
/sbin/*
%doc COPYING README
%doc %{_mandir}/man8/*
%changelog -n open-iscsi
* Fri Oct 20 2006 - hare@suse.de
- Update to svn r713
- Use /dev/urandom instead of rand() (#180837)
- Fixup init script
* Fri Oct 06 2006 - hare@suse.de
- Update to official version 2.0-707
* Fri Jul 28 2006 - olh@suse.de
- remove unused boot.proc from boot.open-iscsi (#181972)
* Thu Jun 01 2006 - hare@suse.de
- Added new startmode 'onboot' for root on iSCSI
- Added new init script boot.open-iscsi startup
iscsid as early as possible (#176804)
* Wed May 31 2006 - hare@suse.de
- update to svn r595
- Include local patches
- Fix lockup on target restart for real (#176151)
* Mon May 22 2006 - hare@suse.de
- update to svn r581
- Fix lockup when target is restarted (#176151)
- Start open-iscsi after Xen (#177381)
* Fri May 19 2006 - hare@suse.de
- update to svn r574
- Fix machine hang during error recovery (#174166)
- Display chap secrets for yast (#149055)
* Tue May 02 2006 - hare@suse.de
- update to svn r564
(contains all local changes)
* Tue Apr 25 2006 - wrwhitehead@novell.com
- Fix communication hang (#157463).
- The iscsi-tcp_data_ready callback needs to empty out the
tcp receive queue rather than just rely on the callback to
occur for every message in the receive queue.
* Fri Apr 21 2006 - hare@suse.de
- update to svn r545
Fixes a crash with Wasabi targets (#157463).
* Wed Mar 22 2006 - hare@suse.de
- Add rcopen-iscsi link (#158230)
- Check for active records before deletion (#149935)
- Do not display error messages on startup if no
records are found.
* Fri Mar 10 2006 - hare@suse.de
- Update to svn r520 (contains all local changes)
- Add documentation for discovery types (#149936)
* Tue Feb 28 2006 - hare@suse.de
- Fixed type of portal_group_tag (#153638)
* Tue Feb 21 2006 - hare@suse.de
- Fixed open-iscsi startup script (#148982)
* Mon Feb 20 2006 - hare@suse.de
- Update to svn r495
- Implement iSCSI boot support (FATE #140350)
* Thu Feb 09 2006 - hare@suse.de
- Update to svn r488 to match kernel revision
(#149412).
- Remove obsolete patches.
* Wed Jan 25 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
* Mon Jan 23 2006 - hare@suse.de
- Update to svn r473
- Enhance start script
- Fix appearent login failures.
* Fri Jan 20 2006 - hare@suse.de
- Update to svn r471
- Fix start script.
* Mon Jan 16 2006 - hare@suse.de
- Add Provides/Obsoletes tag.
* Fri Jan 13 2006 - hare@suse.de
- Rebasing package to open-iscsi-0.5-454
- Update to svn r457
* Mon Dec 19 2005 - hare@suse.de
- Update to svn r446.
* Thu Nov 03 2005 - hare@suse.de
- Update to svn r436.
* Thu Sep 08 2005 - hare@suse.de
- Update to svn r408.
(Added NOOP IN handling)
- Removed obsolete patches
* Mon Aug 22 2005 - hare@suse.de
- Update to svn r401.
- Fixed package to install properly.
- Fixed init script
- Added iscsi-iname to generate iSCSI Initiatorname.
* Mon Aug 08 2005 - hare@suse.de
- Update to svn r389.
* Thu Jul 07 2005 - hare@suse.de
- Initial version 0.3rc6-369

0
ready Normal file
View File