Module Name:    src
Committed By:   sborrill
Date:           Mon Feb 21 17:48:43 UTC 2011

Modified Files:
        src/external/bsd/iscsi/dist: configure.ac
        src/external/bsd/iscsi/dist/src/initiator: iscsi-initiator.c
        src/external/bsd/iscsi/dist/src/lib: initiator.c

Log Message:
man page claims that you can use auth type = none, but in reality this
didn't work (insisted on a username being given and then used, plus always
advertised CHAP to the target). Make initiator work as advertised (i.e.
defaults to auth type none and so don't require a username).

To use CHAP you should explicitly request CHAP:
iscsi-initiator -a chap -u user -h targetname /mountpoint

For backwards compatibility, if a username is given (-u) and no auth type
is specified (-a), it will default to CHAP, i.e. to use none, just give no
username:
iscsi-initiator -h targetname /mountpoint


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/external/bsd/iscsi/dist/configure.ac
cvs rdiff -u -r1.5 -r1.6 \
    src/external/bsd/iscsi/dist/src/initiator/iscsi-initiator.c
cvs rdiff -u -r1.3 -r1.4 src/external/bsd/iscsi/dist/src/lib/initiator.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/bsd/iscsi/dist/configure.ac
diff -u src/external/bsd/iscsi/dist/configure.ac:1.4 src/external/bsd/iscsi/dist/configure.ac:1.5
--- src/external/bsd/iscsi/dist/configure.ac:1.4	Mon Apr 19 08:09:02 2010
+++ src/external/bsd/iscsi/dist/configure.ac	Mon Feb 21 17:48:43 2011
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.57)
-AC_INIT([netbsd-iscsi],[20100416],[Alistair Crooks <a...@netbsd.org>])
+AC_INIT([netbsd-iscsi],[20110221],[Alistair Crooks <a...@netbsd.org>])
 
 AC_CONFIG_SRCDIR([src/lib/protocol.c])
 AC_CONFIG_AUX_DIR([buildaux])

Index: src/external/bsd/iscsi/dist/src/initiator/iscsi-initiator.c
diff -u src/external/bsd/iscsi/dist/src/initiator/iscsi-initiator.c:1.5 src/external/bsd/iscsi/dist/src/initiator/iscsi-initiator.c:1.6
--- src/external/bsd/iscsi/dist/src/initiator/iscsi-initiator.c:1.5	Mon Feb 21 17:24:19 2011
+++ src/external/bsd/iscsi/dist/src/initiator/iscsi-initiator.c	Mon Feb 21 17:48:43 2011
@@ -618,11 +618,22 @@
 					*argv, i);
 		}
 	}
-	if (iscsi_initiator_getvar(&ini, "user") == NULL) {
-		iscsi_err(__FILE__, __LINE__, "user must be specified with -u\n");
+	if (!strcmp(iscsi_initiator_getvar(&ini, "auth type"), "chap") &&
+	    iscsi_initiator_getvar(&ini, "user") == NULL) {
+		iscsi_err(__FILE__, __LINE__, "user must be specified with "
+		    "-u if using CHAP authentication\n");
 		exit(EXIT_FAILURE);
 	}
 
+	if (strcmp(iscsi_initiator_getvar(&ini, "auth type"), "none") &&
+	    iscsi_initiator_getvar(&ini, "user") != NULL) {
+		/* 
+		 * For backwards compatibility, default to using CHAP
+		 * if username given
+		 */
+		iscsi_initiator_setvar(&ini, "auth type", "chap");
+	}
+
 	if (iscsi_initiator_start(&ini) == -1) {
 		iscsi_err(__FILE__, __LINE__, "initiator_init() failed\n");
 		exit(EXIT_FAILURE);

Index: src/external/bsd/iscsi/dist/src/lib/initiator.c
diff -u src/external/bsd/iscsi/dist/src/lib/initiator.c:1.3 src/external/bsd/iscsi/dist/src/lib/initiator.c:1.4
--- src/external/bsd/iscsi/dist/src/lib/initiator.c:1.3	Wed Feb  9 00:59:23 2011
+++ src/external/bsd/iscsi/dist/src/lib/initiator.c	Mon Feb 21 17:48:43 2011
@@ -211,10 +211,10 @@
 	}
 	s = *sess;
 	user = NULL;
-        if (s->sess_params.cred.user) {
+        auth_type = s->sess_params.auth_type;
+        if (s->sess_params.cred.user && auth_type != AuthNone) {
                 user = s->sess_params.cred.user;
         }
-        auth_type = s->sess_params.auth_type;
         mutual_auth = s->sess_params.mutual_auth;
 	(void) memset(s, 0x0, sizeof(*s));
 	s->state = INITIATOR_SESSION_STATE_INITIALIZING;
@@ -468,7 +468,11 @@
 	if (security == IS_SECURITY) {
 		PARAM_TEXT_ADD(sess->params, "InitiatorName", "iqn.1994-04.org.NetBSD.iscsi-initiator:agc", text, len, textsize, 1, return -1);
 		PARAM_TEXT_ADD(sess->params, "InitiatorAlias", "NetBSD", text, len, textsize, 1, return -1);
-		PARAM_TEXT_ADD(sess->params, "AuthMethod", "CHAP,None", text, len, textsize, 1, return -1);
+		if (sess->sess_params.auth_type != AuthNone) {
+			PARAM_TEXT_ADD(sess->params, "AuthMethod", "CHAP,None", text, len, textsize, 1, return -1);
+		} else {
+			PARAM_TEXT_ADD(sess->params, "AuthMethod", "None", text, len, textsize, 1, return -1);
+		}
 	} else {
 		PARAM_TEXT_ADD(sess->params, "HeaderDigest", "None", text, len, textsize, 1, return -1);
 		PARAM_TEXT_ADD(sess->params, "DataDigest", "None", text, len, textsize, 1, return -1);
@@ -890,11 +894,13 @@
 			INIT_CLEANUP;
 			return -1;
 		}
-		sess->sess_params.cred.user =
-				strdup(iscsi_initiator_getvar(ini, "user"));
 		cp = iscsi_initiator_getvar(ini, "auth type");
 		if (strcmp(cp, "none") == 0) {
 			sess->sess_params.auth_type = AuthNone;
+			sess->sess_params.cred.user = NULL;
+		} else {
+			sess->sess_params.cred.user =
+				strdup(iscsi_initiator_getvar(ini, "user"));	
 		}
 		cp = iscsi_initiator_getvar(ini, "mutual auth");
 		if (strcmp(cp, "none") == 0) {
@@ -3678,7 +3684,11 @@
 		INIT_CLEANUP;
 		return -1;
 	}
-	sess->sess_params.cred.user = strdup(user);
+	if (user)
+		sess->sess_params.cred.user = strdup(user);
+	else
+		sess->sess_params.cred.user = NULL;
+	
 	sess->sess_params.auth_type = auth_type;
 	sess->sess_params.mutual_auth = mutual_auth;
 	sess->sess_params.digest_wanted = digest_type;

Reply via email to