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;