import iscsi-initiator-utils-6.2.1.2-0.gita8fcb37.el8

This commit is contained in:
CentOS Sources 2021-03-30 11:41:39 -04:00 committed by Stepan Oksanichenko
parent 4813118dad
commit 5418325ed5
31 changed files with 335 additions and 1082 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/open-iscsi-d791ce0.tar.gz
SOURCES/open-iscsi-a8fcb37.tar.gz

View File

@ -1 +1 @@
8724d0141bb4777e5728c3c16b2f89f123e0f8b0 SOURCES/open-iscsi-d791ce0.tar.gz
3d93416258a292dbb4ce43a8ef2be2d94bbb85f2 SOURCES/open-iscsi-a8fcb37.tar.gz

View File

@ -1,25 +0,0 @@
From 0c3953aebf69e23d7012a813ca2b35c5709acb02 Mon Sep 17 00:00:00 2001
From: Patrick McCarty <patrick.mccarty@intel.com>
Date: Wed, 8 Jan 2020 11:04:17 -0800
Subject: [PATCH] Fix bug with libopeniscsiusr.pc
The library name is libopeniscsiusr, so the -l linker option should be
`-lopeniscsiusr` instead of `-liscsiusr`.
---
libopeniscsiusr/libopeniscsiusr.pc.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libopeniscsiusr/libopeniscsiusr.pc.in b/libopeniscsiusr/libopeniscsiusr.pc.in
index f0fb583..6bbee47 100644
--- a/libopeniscsiusr/libopeniscsiusr.pc.in
+++ b/libopeniscsiusr/libopeniscsiusr.pc.in
@@ -5,5 +5,5 @@ Name: libopeniscsiusr
Version: __VERSION__
Description: iSCSI userspace library
Requires:
-Libs: -L${libdir} -liscsiusr
+Libs: -L${libdir} -lopeniscsiusr
Cflags: -I${includedir}
--
2.21.1

View File

@ -1,29 +0,0 @@
From e9c9117b7a84866366691110496984fc651e3e43 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Fri, 17 Jan 2020 13:42:10 -0800
Subject: [PATCH 1/1] Revert "Out-of-bounds read: Overrunning array of 8 2-byte
elements"
It's been reported that this breaks IPv6 discovery with qedi controllers
This reverts commit af48f0d68db48cd492d0e27e046fc011be236fd3.
---
iscsiuio/src/uip/ipv6.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/iscsiuio/src/uip/ipv6.c b/iscsiuio/src/uip/ipv6.c
index 5710199..05efa73 100644
--- a/iscsiuio/src/uip/ipv6.c
+++ b/iscsiuio/src/uip/ipv6.c
@@ -521,7 +521,7 @@ static void ipv6_insert_protocol_chksum(struct ipv6_hdr *ipv6)
sum = 0;
ptr = (u16_t *)&ipv6->ipv6_src;
- for (i = 0; i < sizeof(struct ipv6_addr); i += 2) {
+ for (i = 0; i < sizeof(struct ipv6_addr); i++) {
sum += HOST_TO_NET16(*ptr);
ptr++;
}
--
2.21.1

View File

@ -1,661 +0,0 @@
From 9d36121534183195bd2892447ca07724013cef57 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Sun, 24 Nov 2019 13:51:09 -0800
Subject: [PATCH 1/1] configuration support for CHAP algorithms
Introduces support for preference lists in configuration files, and uses
that for the 'node.session.auth.chap_algs' setting.
This is also re-used for discovery authentication, rather than have two
different configurations.
---
etc/iscsid.conf | 7 ++
libopeniscsiusr/default.c | 3 +
libopeniscsiusr/idbm.c | 95 +++++++++++++++++++++++++
libopeniscsiusr/idbm.h | 9 +++
libopeniscsiusr/idbm_fields.h | 1 +
usr/auth.c | 64 ++++++++++++-----
usr/auth.h | 3 +
usr/config.h | 1 +
usr/idbm.c | 126 ++++++++++++++++++++++++++++++----
usr/idbm.h | 2 +
usr/idbm_fields.h | 1 +
usr/initiator.h | 1 +
usr/initiator_common.c | 2 +
usr/login.c | 11 +++
14 files changed, 294 insertions(+), 32 deletions(-)
diff --git a/etc/iscsid.conf b/etc/iscsid.conf
index 2f3a28c..420145b 100644
--- a/etc/iscsid.conf
+++ b/etc/iscsid.conf
@@ -57,6 +57,13 @@ node.leading_login = No
# to CHAP. The default is None.
#node.session.auth.authmethod = CHAP
+# To configure which CHAP algorithms to enable set
+# node.session.auth.chap_algs to a comma seperated list.
+# The algorithms should be listen with most prefered first.
+# Valid values are MD5, SHA1, SHA256, and SHA3-256.
+# The default is MD5.
+#node.session.auth.chap_algs = SHA3-256,SHA256,SHA1,MD5
+
# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
#node.session.auth.username = username
diff --git a/libopeniscsiusr/default.c b/libopeniscsiusr/default.c
index d01d892..d3b3da3 100644
--- a/libopeniscsiusr/default.c
+++ b/libopeniscsiusr/default.c
@@ -78,6 +78,9 @@ void _default_node(struct iscsi_node *node)
node->session.initial_login_retry_max = DEF_INITIAL_LOGIN_RETRIES_MAX;
node->session.reopen_max = DEF_SESSION_REOPEN_MAX;
node->session.auth.authmethod = 0;
+ /* TYPE_INT_LIST fields should be initialized to ~0 to indicate unset values */
+ memset(node->session.auth.chap_algs, ~0, sizeof(node->session.auth.chap_algs));
+ node->session.auth.chap_algs[0] = ISCSI_AUTH_CHAP_ALG_MD5;
node->session.auth.password_length = 0;
node->session.auth.password_in_length = 0;
node->session.err_tmo.abort_timeout = DEF_ABORT_TIMEO;
diff --git a/libopeniscsiusr/idbm.c b/libopeniscsiusr/idbm.c
index 342aab5..d1fc03d 100644
--- a/libopeniscsiusr/idbm.c
+++ b/libopeniscsiusr/idbm.c
@@ -73,6 +73,7 @@
#define TYPE_INT32 6
#define TYPE_INT64 7
#define TYPE_BOOL 8
+#define TYPE_INT_LIST 9
#define MAX_KEYS 256 /* number of keys total(including CNX_MAX) */
#define NAME_MAXVAL 128 /* the maximum length of key name */
#define VALUE_MAXVAL 256 /* the maximum length of 223 bytes in the RFC. */
@@ -248,6 +249,39 @@ do { \
_n++; \
} while(0)
+#define ARRAY_LEN(x) ( sizeof(x) / sizeof((x)[0]) )
+
+/* Options list type, rather than matching a single value this populates an
+ * array with a list of values in user specified order.
+ * Requires a table matching config strings to values.
+ **/
+#define _rec_int_list(_key, _recs, _org, _name, _show, _tbl, _n, _mod) \
+do {\
+ _recs[_n].type = TYPE_INT_LIST; \
+ _strncpy(_recs[_n].name, _key, NAME_MAXVAL); \
+ for (unsigned int _i = 0; _i < ARRAY_LEN(_org->_name); _i++) { \
+ if (_org->_name[_i] != ~0UL) { \
+ for (unsigned int _j = 0; _j < ARRAY_LEN(_tbl); _j++) { \
+ if (_tbl[_j].value == _org->_name[_i]) { \
+ strcat(_recs[_n].value, _tbl[_j].name); \
+ strcat(_recs[_n].value, ","); \
+ break; \
+ } \
+ } \
+ } \
+ } \
+ /* delete traling ',' */ \
+ if (strrchr(_recs[_n].value, ',')) \
+ *strrchr(_recs[_n].value, ',') = '\0'; \
+ _recs[_n].data = &_org->_name; \
+ _recs[_n].data_len = sizeof(_org->_name); \
+ _recs[_n].visible = _show; \
+ _recs[_n].opts[0] = (void *)&_tbl; \
+ _recs[_n].numopts = ARRAY_LEN(_tbl); \
+ _recs[_n].can_modify = _mod; \
+ _n++; \
+} while(0)
+
enum modify_mode {
_CANNOT_MODIFY,
_CAN_MODIFY,
@@ -557,6 +591,11 @@ void _idbm_node_print(struct iscsi_node *node, FILE *f, bool show_secret)
_idbm_recs_free(recs);
}
+struct int_list_tbl {
+ const char *name;
+ unsigned int value;
+};
+
static int _idbm_rec_update_param(struct iscsi_context *ctx,
struct idbm_rec *recs, char *name,
char *value, int line_number)
@@ -564,8 +603,14 @@ static int _idbm_rec_update_param(struct iscsi_context *ctx,
int rc = LIBISCSI_OK;
int i = 0;
int j = 0;
+ int k = 0;
int passwd_done = 0;
char passwd_len[8];
+ struct int_list_tbl *tbl = NULL;
+ char *tmp_value;
+ int *tmp_data;
+ bool *found;
+ char *token;
assert(ctx != NULL);
assert(recs != NULL);
@@ -642,6 +687,47 @@ setup_passwd_len:
else
goto unknown_value;
goto updated;
+ case TYPE_INT_LIST:
+ if (!recs[i].data)
+ continue;
+ tbl = (void *)recs[i].opts[0];
+ /* strsep is destructive, make a copy to work with */
+ tmp_value = strdup(value);
+ k = 0;
+ tmp_data = malloc(recs[i].data_len);
+ memset(tmp_data, ~0, recs[i].data_len);
+ found = calloc(recs[i].numopts, sizeof(bool));
+next_token: while ((token = strsep(&tmp_value, ", \n"))) {
+ if (!strlen(token))
+ continue;
+ if ((k * (int)sizeof(int)) >= (recs[i].data_len)) {
+ _warn(ctx, "Too many values set for '%s'"
+ ", continuing without processing them all",
+ recs[i].name);
+ break;
+ }
+ for (j = 0; j < recs[i].numopts; j++) {
+ if (!strcmp(token, tbl[j].name)) {
+ if ((found[j])) {
+ _warn(ctx, "Ignoring repeated value '%s'"
+ " for '%s'", token, recs[i].name);
+ goto next_token;
+ }
+ ((unsigned *)tmp_data)[k++] = tbl[j].value;
+ found[j] = true;
+ goto next_token;
+ }
+ }
+ _warn(ctx, "Ignoring unknown value '%s'"
+ " for '%s'", token, recs[i].name);
+ }
+ memcpy(recs[i].data, tmp_data, recs[i].data_len);
+ free(tmp_value);
+ free(tmp_data);
+ tmp_value = NULL;
+ tmp_data = NULL;
+ token = NULL;
+ goto updated;
default:
unknown_value:
_error(ctx, "Got unknown data type %d "
@@ -881,6 +967,13 @@ void _idbm_free(struct idbm *db)
free(db);
}
+static struct int_list_tbl chap_algs[] = {
+ { "MD5", ISCSI_AUTH_CHAP_ALG_MD5 },
+ { "SHA1", ISCSI_AUTH_CHAP_ALG_SHA1 },
+ { "SHA256", ISCSI_AUTH_CHAP_ALG_SHA256 },
+ { "SHA3-256", ISCSI_AUTH_CHAP_ALG_SHA3_256 },
+};
+
static void _idbm_node_rec_link(struct iscsi_node *node, struct idbm_rec *recs)
{
int num = 0;
@@ -943,6 +1036,8 @@ static void _idbm_node_rec_link(struct iscsi_node *node, struct idbm_rec *recs)
_rec_uint32(SESSION_PASSWORD_IN_LEN, recs, node,
session.auth.password_in_length, IDBM_HIDE, num,
_CAN_MODIFY);
+ _rec_int_list(SESSION_CHAP_ALGS, recs, node, session.auth.chap_algs,
+ IDBM_SHOW, chap_algs, num, _CAN_MODIFY);
_rec_int64(SESSION_REPLACEMENT_TMO, recs, node,
session.tmo.replacement_timeout, IDBM_SHOW, num,
_CAN_MODIFY);
diff --git a/libopeniscsiusr/idbm.h b/libopeniscsiusr/idbm.h
index c84d332..5a4d2fa 100644
--- a/libopeniscsiusr/idbm.h
+++ b/libopeniscsiusr/idbm.h
@@ -49,6 +49,14 @@ enum iscsi_auth_method {
ISCSI_AUTH_METHOD_CHAP,
};
+enum iscsi_chap_algs {
+ ISCSI_AUTH_CHAP_ALG_MD5 = 5,
+ ISCSI_AUTH_CHAP_ALG_SHA1 = 6,
+ ISCSI_AUTH_CHAP_ALG_SHA256 = 7,
+ ISCSI_AUTH_CHAP_ALG_SHA3_256 = 8,
+ AUTH_CHAP_ALG_MAX_COUNT = 5,
+};
+
enum iscsi_startup_type {
ISCSI_STARTUP_MANUAL,
ISCSI_STARTUP_AUTOMATIC,
@@ -93,6 +101,7 @@ struct iscsi_auth_config {
char username_in[AUTH_STR_MAX_LEN];
unsigned char password_in[AUTH_STR_MAX_LEN];
uint32_t password_in_length;
+ unsigned int chap_algs[AUTH_CHAP_ALG_MAX_COUNT];
};
/* all TCP options go in this structure.
diff --git a/libopeniscsiusr/idbm_fields.h b/libopeniscsiusr/idbm_fields.h
index 29a2090..8bf17b0 100644
--- a/libopeniscsiusr/idbm_fields.h
+++ b/libopeniscsiusr/idbm_fields.h
@@ -120,6 +120,7 @@
#define SESSION_USERNAME_IN "node.session.auth.username_in"
#define SESSION_PASSWORD_IN "node.session.auth.password_in"
#define SESSION_PASSWORD_IN_LEN "node.session.auth.password_in_length"
+#define SESSION_CHAP_ALGS "node.session.auth.chap_algs"
#define SESSION_REPLACEMENT_TMO "node.session.timeo.replacement_timeout"
#define SESSION_ABORT_TMO "node.session.err_timeo.abort_timeout"
#define SESSION_LU_RESET_TMO "node.session.err_timeo.lu_reset_timeout"
diff --git a/usr/auth.c b/usr/auth.c
index 5c819c2..a222c53 100644
--- a/usr/auth.c
+++ b/usr/auth.c
@@ -1806,7 +1806,7 @@ acl_chk_chap_alg_list(unsigned int option_count, const int *option_list)
return 0;
}
-static int
+int
acl_set_chap_alg_list(struct iscsi_acl *client, unsigned int option_count,
const int *option_list)
{
@@ -1819,22 +1819,54 @@ acl_set_chap_alg_list(struct iscsi_acl *client, unsigned int option_count,
}
int
-acl_init_chap_digests(int *value_list) {
+acl_init_chap_digests(int *value_list, unsigned *chap_algs, int conf_count) {
EVP_MD_CTX *context = EVP_MD_CTX_new();
int i = 0;
- if (EVP_DigestInit_ex(context, EVP_sha3_256(), NULL)) {
- value_list[i++] = AUTH_CHAP_ALG_SHA3_256;
- }
- if (EVP_DigestInit_ex(context, EVP_sha256(), NULL)) {
- value_list[i++] = AUTH_CHAP_ALG_SHA256;
- }
- if (EVP_DigestInit_ex(context, EVP_sha1(), NULL)) {
- value_list[i++] = AUTH_CHAP_ALG_SHA1;
- }
- if (EVP_DigestInit_ex(context, EVP_md5(), NULL)) {
- value_list[i++] = AUTH_CHAP_ALG_MD5;
+ for (int j = 0; j < conf_count; j++) {
+ switch (chap_algs[j]) {
+ case AUTH_CHAP_ALG_MD5:
+ if (EVP_DigestInit_ex(context, EVP_md5(), NULL)) {
+ value_list[i++] = AUTH_CHAP_ALG_MD5;
+ } else {
+ log_warning("Ignoring CHAP algorthm request for "
+ "MD5 due to crypto lib configuration");
+ }
+ break;
+ case AUTH_CHAP_ALG_SHA1:
+ if (EVP_DigestInit_ex(context, EVP_sha1(), NULL)) {
+ value_list[i++] = AUTH_CHAP_ALG_SHA1;
+ } else {
+ log_warning("Ignoring CHAP algorthm request for "
+ "SHA1 due to crypto lib configuration");
+ }
+ break;
+ case AUTH_CHAP_ALG_SHA256:
+ if (EVP_DigestInit_ex(context, EVP_sha256(), NULL)) {
+ value_list[i++] = AUTH_CHAP_ALG_SHA256;
+ } else {
+ log_warning("Ignoring CHAP algorthm request for "
+ "SHA256 due to crypto lib configuration");
+ }
+ break;
+ case AUTH_CHAP_ALG_SHA3_256:
+ if (EVP_DigestInit_ex(context, EVP_sha3_256(), NULL)) {
+ value_list[i++] = AUTH_CHAP_ALG_SHA3_256;
+ } else {
+ log_warning("Ignoring CHAP algorthm request for "
+ "SHA3-256 due to crypto lib configuration");
+ }
+ break;
+ case ~0:
+ /* unset value in array, just ignore */
+ break;
+ default:
+ log_warning("Ignoring unknown CHAP algorithm request "
+ "'%d'", chap_algs[j]);
+ break;
+ }
}
+
return i;
}
@@ -1926,12 +1958,6 @@ acl_init(int node_type, int buf_desc_count, struct auth_buffer_desc *buff_desc)
return AUTH_STATUS_ERROR;
}
- if (acl_set_chap_alg_list(client, acl_init_chap_digests(value_list),
- value_list) != AUTH_STATUS_NO_ERROR) {
- client->phase = AUTH_PHASE_ERROR;
- return AUTH_STATUS_ERROR;
- }
-
return AUTH_STATUS_NO_ERROR;
}
diff --git a/usr/auth.h b/usr/auth.h
index f6dbbe4..16cdb24 100644
--- a/usr/auth.h
+++ b/usr/auth.h
@@ -271,6 +271,9 @@ extern int acl_send_transit_bit(struct iscsi_acl *client, int *value);
extern int acl_set_user_name(struct iscsi_acl *client, const char *username);
extern int acl_set_passwd(struct iscsi_acl *client,
const unsigned char *pw_data, unsigned int pw_len);
+extern int acl_set_chap_alg_list(struct iscsi_acl *client, unsigned int option_count,
+ const int *option_list);
+extern int acl_init_chap_digests(int *value_list, unsigned int *chap_algs, int count);
extern int acl_set_auth_rmt(struct iscsi_acl *client, int auth_rmt);
extern int acl_set_ip_sec(struct iscsi_acl *client, int ip_sec);
extern int acl_get_dbg_status(struct iscsi_acl *client, int *value);
diff --git a/usr/config.h b/usr/config.h
index 250879d..79059ec 100644
--- a/usr/config.h
+++ b/usr/config.h
@@ -58,6 +58,7 @@ struct iscsi_auth_config {
char username_in[AUTH_STR_MAX_LEN];
unsigned char password_in[AUTH_STR_MAX_LEN];
unsigned int password_in_length;
+ unsigned int chap_algs[AUTH_CHAP_ALG_MAX_COUNT];
};
/* all per-connection timeouts go in this structure.
diff --git a/usr/idbm.c b/usr/idbm.c
index 0c6870c..749203a 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -51,6 +51,8 @@
static struct idbm *db;
+#define ARRAY_LEN(x) ( sizeof(x) / sizeof((x)[0]) )
+
#define __recinfo_str(_key, _info, _rec, _name, _show, _n, _mod) do { \
_info[_n].type = TYPE_STR; \
strlcpy(_info[_n].name, _key, NAME_MAXVAL); \
@@ -165,6 +167,42 @@ static struct idbm *db;
_n++; \
} while(0)
+#define __recinfo_int_list(_key,_info,_rec,_name,_show,_tbl,_n,_mod) do { \
+ _info[_n].type = TYPE_INT_LIST; \
+ strlcpy(_info[_n].name, _key, NAME_MAXVAL); \
+ for(int _i = 0; _i < ARRAY_LEN(_rec->_name); _i++) { \
+ if (_rec->_name[_i] != ~0) { \
+ for (int _j = 0; _j < ARRAY_LEN(_tbl); _j++) { \
+ if (_tbl[_j].value == _rec->_name[_i]) { \
+ strcat(_info[_n].value, _tbl[_j].name); \
+ strcat(_info[_n].value, ","); \
+ break; \
+ } \
+ } \
+ } \
+ } \
+ /* delete trailing ',' */ \
+ if (strrchr(_info[_n].value, ',')) \
+ *strrchr(_info[_n].value, ',') = '\0'; \
+ _info[_n].data = &_rec->_name; \
+ _info[_n].data_len = sizeof(_rec->_name); \
+ _info[_n].visible = _show; \
+ _info[_n].opts[0] = (void *)&_tbl; \
+ _info[_n].numopts = ARRAY_LEN(_tbl); \
+ _info[_n].can_modify = _mod; \
+ _n++; \
+} while (0)
+
+static struct int_list_tbl {
+ const char *name;
+ int value;
+} chap_algs [] = {
+ { "MD5", AUTH_CHAP_ALG_MD5 },
+ { "SHA1", AUTH_CHAP_ALG_SHA1 },
+ { "SHA256", AUTH_CHAP_ALG_SHA256 },
+ { "SHA3-256", AUTH_CHAP_ALG_SHA3_256 },
+};
+
static int idbm_remove_disc_to_node_link(node_rec_t *rec, char *portal);
static void
@@ -199,6 +237,10 @@ idbm_recinfo_discovery(discovery_rec_t *r, recinfo_t *ri)
__recinfo_int(DISC_ST_PASSWORD_IN_LEN, ri, r,
u.sendtargets.auth.password_in_length, IDBM_HIDE,
num, 1);
+ /* reusing SESSION_CHAP_ALGS */
+ __recinfo_int_list(SESSION_CHAP_ALGS, ri, r,
+ u.sendtargets.auth.chap_algs,
+ IDBM_SHOW, chap_algs, num, 1);
__recinfo_int(DISC_ST_LOGIN_TMO, ri, r,
u.sendtargets.conn_timeo.login_timeout,
IDBM_SHOW, num, 1);
@@ -431,6 +473,8 @@ idbm_recinfo_node(node_rec_t *r, recinfo_t *ri)
session.auth.password_in, IDBM_MASKED, num, 1);
__recinfo_int(SESSION_PASSWORD_IN_LEN, ri, r,
session.auth.password_in_length, IDBM_HIDE, num, 1);
+ __recinfo_int_list(SESSION_CHAP_ALGS, ri, r,
+ session.auth.chap_algs, IDBM_SHOW, chap_algs, num, 1);
__recinfo_int(SESSION_REPLACEMENT_TMO, ri, r,
session.timeo.replacement_timeout,
IDBM_SHOW, num, 1);
@@ -940,6 +984,9 @@ idbm_discovery_setup_defaults(discovery_rec_t *rec, discovery_type_e type)
rec->u.sendtargets.auth.authmethod = 0;
rec->u.sendtargets.auth.password_length = 0;
rec->u.sendtargets.auth.password_in_length = 0;
+ /* TYPE_INT_LIST fields should be initialized to ~0 to indicate unset values */
+ memset(rec->u.sendtargets.auth.chap_algs, ~0, sizeof(rec->u.sendtargets.auth.chap_algs));
+ rec->u.sendtargets.auth.chap_algs[0] = AUTH_CHAP_ALG_MD5;
rec->u.sendtargets.conn_timeo.login_timeout=15;
rec->u.sendtargets.conn_timeo.auth_timeout = 45;
rec->u.sendtargets.conn_timeo.active_timeout=30;
@@ -973,59 +1020,109 @@ int idbm_rec_update_param(recinfo_t *info, char *name, char *value,
int i;
int passwd_done = 0;
char passwd_len[8];
+ char *tmp_value, *token;
+ bool *found;
+ int *tmp_data;
setup_passwd_len:
for (i=0; i<MAX_KEYS; i++) {
if (!strcmp(name, info[i].name)) {
- int j;
+ int j,k;
+ struct int_list_tbl *tbl;
log_debug(7, "updated '%s', '%s' => '%s'", name,
info[i].value, value);
/* parse recinfo by type */
- if (info[i].type == TYPE_INT) {
+ switch (info[i].type) {
+ case TYPE_INT:
if (!info[i].data)
continue;
*(int*)info[i].data =
strtoul(value, NULL, 10);
goto updated;
- } else if (info[i].type == TYPE_UINT8) {
+ case TYPE_UINT8:
if (!info[i].data)
continue;
*(uint8_t *)info[i].data =
strtoul(value, NULL, 10);
goto updated;
- } else if (info[i].type == TYPE_UINT16) {
+ case TYPE_UINT16:
if (!info[i].data)
continue;
*(uint16_t *)info[i].data =
strtoul(value, NULL, 10);
goto updated;
- } else if (info[i].type == TYPE_UINT32) {
+ case TYPE_UINT32:
if (!info[i].data)
continue;
*(uint32_t *)info[i].data =
strtoul(value, NULL, 10);
goto updated;
- } else if (info[i].type == TYPE_STR) {
+ case TYPE_STR:
if (!info[i].data)
continue;
strlcpy((char*)info[i].data,
value, info[i].data_len);
goto updated;
- }
- for (j=0; j<info[i].numopts; j++) {
- if (!strcmp(value, info[i].opts[j])) {
- if (!info[i].data)
+ case TYPE_INT_O:
+ for (j=0; j<info[i].numopts; j++) {
+ if (!strcmp(value, info[i].opts[j])) {
+ if (!info[i].data)
+ continue;
+
+ *(int*)info[i].data = j;
+ goto updated;
+ }
+ }
+ case TYPE_INT_LIST:
+ if (!info[i].data)
+ continue;
+ tbl = (void *)info[i].opts[0];
+ /* strsep is destructive, make a copy to work with */
+ tmp_value = strdup(value);
+ k = 0;
+ tmp_data = malloc(info[i].data_len);
+ memset(tmp_data, ~0, info[i].data_len);
+ found = calloc(info[i].numopts, sizeof(bool));
+
+next_token: while ((token = strsep(&tmp_value, ", \n"))) {
+ if (!strlen(token))
continue;
-
- *(int*)info[i].data = j;
- goto updated;
+ if ((k * (int)sizeof(int)) >= (info[i].data_len)) {
+ log_warning("Too many values set for '%s'"
+ ", continuing without processing them all",
+ info[i].name);
+ break;
+ }
+ for (j = 0; j < info[i].numopts; j++) {
+ if (!strcmp(token, tbl[j].name)) {
+ if ((found[j])) {
+ log_warning("Ignoring repeated "
+ "value '%s' "
+ "for '%s'", token,
+ info[i].name);
+ goto next_token;
+ }
+ ((int*)tmp_data)[k++] = tbl[j].value;
+ found[j] = true;
+ goto next_token;
+ }
+ }
+ log_warning("Ignoring unknown value '%s'"
+ " for '%s'", token, info[i].name);
}
+ memcpy(info[i].data, tmp_data, info[i].data_len);
+ free(tmp_value);
+ free(tmp_data);
+ tmp_value = NULL;
+ tmp_data = NULL;
+ token = NULL;
+ goto updated;
}
if (line_number) {
log_warning("config file line %d contains "
@@ -3098,6 +3195,9 @@ void idbm_node_setup_defaults(node_rec_t *rec)
rec->session.initial_login_retry_max = DEF_INITIAL_LOGIN_RETRIES_MAX;
rec->session.reopen_max = DEF_SESSION_REOPEN_MAX;
rec->session.auth.authmethod = 0;
+ /* TYPE_INT_LIST fields should be initialized to ~0 to indicate unset values */
+ memset(rec->session.auth.chap_algs, ~0, sizeof(rec->session.auth.chap_algs));
+ rec->session.auth.chap_algs[0] = AUTH_CHAP_ALG_MD5;
rec->session.auth.password_length = 0;
rec->session.auth.password_in_length = 0;
rec->session.err_timeo.abort_timeout = DEF_ABORT_TIMEO;
diff --git a/usr/idbm.h b/usr/idbm.h
index c6982e4..d1a7f63 100644
--- a/usr/idbm.h
+++ b/usr/idbm.h
@@ -46,6 +46,8 @@
#define TYPE_UINT8 3
#define TYPE_UINT16 4
#define TYPE_UINT32 5
+#define TYPE_INT_LIST 6
+
#define MAX_KEYS 256 /* number of keys total(including CNX_MAX) */
#define NAME_MAXVAL 128 /* the maximum length of key name */
#define VALUE_MAXVAL 256 /* the maximum length of 223 bytes in the RFC. */
diff --git a/usr/idbm_fields.h b/usr/idbm_fields.h
index 142c7ae..4a967fc 100644
--- a/usr/idbm_fields.h
+++ b/usr/idbm_fields.h
@@ -30,6 +30,7 @@
#define SESSION_USERNAME_IN "node.session.auth.username_in"
#define SESSION_PASSWORD_IN "node.session.auth.password_in"
#define SESSION_PASSWORD_IN_LEN "node.session.auth.password_in_length"
+#define SESSION_CHAP_ALGS "node.session.auth.chap_algs"
#define SESSION_REPLACEMENT_TMO "node.session.timeo.replacement_timeout"
#define SESSION_ABORT_TMO "node.session.err_timeo.abort_timeout"
#define SESSION_LU_RESET_TMO "node.session.err_timeo.lu_reset_timeout"
diff --git a/usr/initiator.h b/usr/initiator.h
index eccafb9..6a49ea6 100644
--- a/usr/initiator.h
+++ b/usr/initiator.h
@@ -243,6 +243,7 @@ typedef struct iscsi_session {
char username_in[AUTH_STR_MAX_LEN];
uint8_t password_in[AUTH_STR_MAX_LEN];
int password_in_length;
+ unsigned int chap_algs[AUTH_CHAP_ALG_MAX_COUNT];
iscsi_conn_t conn[ISCSI_CONN_MAX];
uint64_t param_mask;
diff --git a/usr/initiator_common.c b/usr/initiator_common.c
index 790f13d..81da8fd 100644
--- a/usr/initiator_common.c
+++ b/usr/initiator_common.c
@@ -94,6 +94,8 @@ int iscsi_setup_authentication(struct iscsi_session *session,
memcpy(session->password_in, auth_cfg->password_in,
session->password_in_length);
+ memcpy(session->chap_algs, auth_cfg->chap_algs, sizeof(auth_cfg->chap_algs));
+
if (session->password_length || session->password_in_length) {
/* setup the auth buffers */
session->auth_buffers[0].address = &session->auth_client_block;
diff --git a/usr/login.c b/usr/login.c
index d7dad21..1251e61 100644
--- a/usr/login.c
+++ b/usr/login.c
@@ -1262,6 +1262,17 @@ check_for_authentication(iscsi_session_t *session,
goto end;
}
+ int value_list[AUTH_CHAP_ALG_MAX_COUNT];
+
+ if (acl_set_chap_alg_list(auth_client,
+ acl_init_chap_digests(value_list,
+ session->chap_algs,
+ AUTH_CHAP_ALG_MAX_COUNT),
+ value_list) != AUTH_STATUS_NO_ERROR) {
+ log_error("Couldn't set CHAP algorithm list");
+ goto end;
+ }
+
if (acl_set_ip_sec(auth_client, 1) != AUTH_STATUS_NO_ERROR) {
log_error("Couldn't set IPSec");
goto end;
--
2.21.1

View File

@ -1,25 +0,0 @@
From a89f547c29f5d3f61a10eb1847b992f9f7f9a65a Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Wed, 8 Jan 2020 14:00:35 -0800
Subject: [PATCH 1/1] enable all CHAP digest functions by default
---
etc/iscsid.conf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/etc/iscsid.conf b/etc/iscsid.conf
index 420145b..c1960e5 100644
--- a/etc/iscsid.conf
+++ b/etc/iscsid.conf
@@ -62,7 +62,7 @@ node.leading_login = No
# The algorithms should be listen with most prefered first.
# Valid values are MD5, SHA1, SHA256, and SHA3-256.
# The default is MD5.
-#node.session.auth.chap_algs = SHA3-256,SHA256,SHA1,MD5
+node.session.auth.chap_algs = SHA3-256,SHA256,SHA1,MD5
# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
--
2.21.1

View File

@ -1,24 +1,26 @@
From 2d84ee02e9ac69928261b38b5876bebb2349bd65 Mon Sep 17 00:00:00 2001
From 0a6af5e7283ed2733753998043adac090ef12dd0 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 4 Jun 2019 13:23:32 -0700
Subject: [PATCH] service file tweaks
Subject: [PATCH] unit file tweaks
---
etc/systemd/iscsi-mark-root-nodes | 30 ++++++++++++++++++++++++++++++
etc/systemd/iscsi-shutdown.service | 14 ++++++++++++++
etc/systemd/iscsi.service | 23 +++++++++++++----------
etc/systemd/iscsid.service | 6 ++++--
etc/systemd/iscsiuio.service | 2 +-
5 files changed, 62 insertions(+), 13 deletions(-)
etc/systemd/iscsi-mark-root-nodes | 34 ++++++++++++++++++++++++++++++
etc/systemd/iscsi-onboot.service | 15 +++++++++++++
etc/systemd/iscsi-shutdown.service | 15 +++++++++++++
etc/systemd/iscsi.service | 16 +++++++-------
etc/systemd/iscsid.service | 3 +--
etc/systemd/iscsiuio.service | 4 +---
6 files changed, 74 insertions(+), 13 deletions(-)
create mode 100755 etc/systemd/iscsi-mark-root-nodes
create mode 100644 etc/systemd/iscsi-onboot.service
create mode 100644 etc/systemd/iscsi-shutdown.service
diff --git a/etc/systemd/iscsi-mark-root-nodes b/etc/systemd/iscsi-mark-root-nodes
new file mode 100755
index 0000000..c693707
index 0000000..9d48805
--- /dev/null
+++ b/etc/systemd/iscsi-mark-root-nodes
@@ -0,0 +1,30 @@
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+ISCSIADM=/usr/sbin/iscsiadm
@ -30,7 +32,11 @@ index 0000000..c693707
+ portal=${p%,*}
+ transport=${t%:}
+
+ $ISCSIADM -m node -p $portal -T $target -o update -n node.startup -v onboot
+ # use session number to find the iface name in use
+ num=${num#[}; num=${num%]}
+ iface=$(iscsiadm -m session -r $num | grep iface.iscsi_ifacename | cut -d= -f2)
+
+ $ISCSIADM -m node -p $portal -T $target -I $iface -o update -n node.startup -v onboot
+
+ start_iscsid=1
+
@ -49,12 +55,33 @@ index 0000000..c693707
+ systemctl --no-block start iscsiuio.service
+fi
+
diff --git a/etc/systemd/iscsi-onboot.service b/etc/systemd/iscsi-onboot.service
new file mode 100644
index 0000000..42ced68
--- /dev/null
+++ b/etc/systemd/iscsi-onboot.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Special handling of early boot iSCSI sessions
+Documentation=man:iscsiadm(8) man:iscsid(8)
+DefaultDependencies=no
+RefuseManualStart=true
+Before=iscsi.service
+After=systemd-remount-fs.service
+ConditionDirectoryNotEmpty=/sys/class/iscsi_session
+
+[Service]
+Type=oneshot
+ExecStart=-/usr/libexec/iscsi-mark-root-nodes
+
+[Install]
+WantedBy=sysinit.target
diff --git a/etc/systemd/iscsi-shutdown.service b/etc/systemd/iscsi-shutdown.service
new file mode 100644
index 0000000..69c1c77
index 0000000..caee933
--- /dev/null
+++ b/etc/systemd/iscsi-shutdown.service
@@ -0,0 +1,14 @@
@@ -0,0 +1,15 @@
+[Unit]
+Description=Logout off all iSCSI sessions on shutdown
+Documentation=man:iscsid(8) man:iscsiadm(8)
@ -68,71 +95,72 @@ index 0000000..69c1c77
+[Service]
+Type=oneshot
+RemainAfterExit=true
+ExecStart=-/usr/bin/true
+ExecStop=-/usr/sbin/iscsiadm -m node --logoutall=all
diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service
index e475888..eadfcec 100644
index 2f2bf81..175cb2c 100644
--- a/etc/systemd/iscsi.service
+++ b/etc/systemd/iscsi.service
@@ -1,18 +1,21 @@
@@ -1,18 +1,18 @@
[Unit]
Description=Login and scanning of iSCSI devices
-Documentation=man:iscsiadm(8) man:iscsid(8)
Documentation=man:iscsiadm(8) man:iscsid(8)
-Before=remote-fs.target
-After=network.target network-online.target iscsid.service
-Requires=iscsid.service
-ConditionPathExists=/etc/iscsi/initiatorname.iscsi
+Documentation=man:iscsid(8) man:iscsiadm(8)
-After=network.target network-online.target
-After=iscsid.service iscsi-init.service
-Requires=iscsid.socket iscsi-init.service
+DefaultDependencies=no
+Conflicts=shutdown.target
+After=systemd-remount-fs.service network.target iscsid.service iscsiuio.service
+Before=remote-fs-pre.target
+After=network.target network-online.target iscsid.service iscsiuio.service systemd-remount-fs.service
+Wants=remote-fs-pre.target iscsi-shutdown.service
+ConditionDirectoryNotEmpty=|/var/lib/iscsi/nodes
+ConditionDirectoryNotEmpty=|/sys/class/iscsi_session
+ConditionDirectoryNotEmpty=/var/lib/iscsi/nodes
[Service]
Type=oneshot
-ExecStart=/sbin/iscsiadm -m node --loginall=automatic
-ExecStop=/sbin/iscsiadm -m node --logoutall=automatic
-ExecStop=/sbin/iscsiadm -m node --logoutall=manual
-SuccessExitStatus=21
-SuccessExitStatus=21 15
RemainAfterExit=true
+ExecStart=-/usr/libexec/iscsi-mark-root-nodes
+ExecStart=-/usr/sbin/iscsiadm -m node --loginall=automatic
+ExecReload=-/usr/sbin/iscsiadm -m node --loginall=automatic
+SuccessExitStatus=21
[Install]
-WantedBy=remote-fs.target
+WantedBy=sysinit.target
WantedBy=remote-fs.target
diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service
index 4fef168..8d50cf0 100644
index 648ceea..28402fb 100644
--- a/etc/systemd/iscsid.service
+++ b/etc/systemd/iscsid.service
@@ -1,14 +1,16 @@
[Unit]
Description=Open-iSCSI
-Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8)
+Documentation=man:iscsid(8) man:iscsiadm(8)
@@ -4,12 +4,11 @@ Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8)
DefaultDependencies=no
+Conflicts=shutdown.target
After=network.target iscsiuio.service
Before=remote-fs-pre.target
-Wants=remote-fs-pre.target
[Service]
Type=notify
NotifyAccess=main
-ExecStart=/sbin/iscsid -f
+ExecStart=/usr/sbin/iscsid -f
+ExecStop=/usr/sbin/iscsiadm -k 0 2
KillMode=mixed
Restart=on-failure
diff --git a/etc/systemd/iscsiuio.service b/etc/systemd/iscsiuio.service
index e4d9fd0..8620cde 100644
index 923e019..fc0be93 100644
--- a/etc/systemd/iscsiuio.service
+++ b/etc/systemd/iscsiuio.service
@@ -11,7 +11,7 @@ Before=remote-fs-pre.target iscsid.service
@@ -2,17 +2,15 @@
Description=iSCSI UserSpace I/O driver
Documentation=man:iscsiuio(8)
DefaultDependencies=no
-Conflicts=shutdown.target
Requires=iscsid.service
BindTo=iscsid.service
After=network.target
Before=remote-fs-pre.target iscsid.service
-Wants=remote-fs-pre.target
[Service]
Type=notify
NotifyAccess=main
@ -142,5 +170,5 @@ index e4d9fd0..8620cde 100644
Restart=on-failure
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From 97071360caa6868c21a161047ed471790c405efb Mon Sep 17 00:00:00 2001
From 45878c9461298c9da68a626d990dc4ef99e01baa Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Tue, 13 Aug 2013 10:59:44 -0700
Subject: [PATCH] idmb_rec_write, check for tpgt first
@ -11,10 +11,10 @@ for splitting it up.
1 file changed, 5 insertions(+), 13 deletions(-)
diff --git a/usr/idbm.c b/usr/idbm.c
index be4d4e3..a7da540 100644
index 42c2699..e6ede85 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -2078,6 +2078,10 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
@@ -2178,6 +2178,10 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
goto free_portal;
}
@ -25,7 +25,7 @@ index be4d4e3..a7da540 100644
rc = stat(portal, &statb);
if (rc) {
rc = 0;
@@ -2086,22 +2090,10 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
@@ -2186,22 +2190,10 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
* set the tgpt. In new versions you must pass all the info in
* from the start
*/
@ -50,5 +50,5 @@ index be4d4e3..a7da540 100644
* Old style portal as a file, but with tpgt. Let's update it.
*/
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From 4c6e7c0fcc6da66cf81c0714bf907762194eedf2 Mon Sep 17 00:00:00 2001
From cfd9fc81e11c462b682ead4e05721772b20f7546 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Tue, 13 Aug 2013 11:34:31 -0700
Subject: [PATCH] idbm_rec_write, seperate old and new style writes
@ -9,10 +9,10 @@ Duplicates a small bit of code, but easier to understand and extened.
1 file changed, 86 insertions(+), 43 deletions(-)
diff --git a/usr/idbm.c b/usr/idbm.c
index a7da540..2f5e309 100644
index e6ede85..bc51388 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -2030,12 +2030,7 @@ mkdir_portal:
@@ -2130,12 +2130,7 @@ mkdir_portal:
return f;
}
@ -26,7 +26,7 @@ index a7da540..2f5e309 100644
{
struct stat statb;
FILE *f;
@@ -2048,39 +2043,8 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
@@ -2148,39 +2143,8 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
return ISCSI_ERR_NOMEM;
}
@ -66,7 +66,7 @@ index a7da540..2f5e309 100644
rc = stat(portal, &statb);
if (rc) {
@@ -2101,11 +2065,11 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
@@ -2201,11 +2165,11 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
log_error("Could not convert %s: %s", portal,
strerror(errno));
rc = ISCSI_ERR_IDBM;
@ -80,7 +80,7 @@ index a7da540..2f5e309 100644
}
mkdir_portal:
@@ -2116,24 +2080,103 @@ mkdir_portal:
@@ -2216,24 +2180,103 @@ mkdir_portal:
log_error("Could not make dir %s: %s",
portal, strerror(errno));
rc = ISCSI_ERR_IDBM;
@ -189,5 +189,5 @@ index a7da540..2f5e309 100644
idbm_unlock();
free_portal:
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From 6051b9ef3cdf206630969940aba980f4088e2e14 Mon Sep 17 00:00:00 2001
From 2b1c0c5f1f2dbc516a9b51950a82eac091dbce2c Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Tue, 13 Aug 2013 12:39:07 -0700
Subject: [PATCH] idbw_rec_write, pick tpgt from existing record
@ -12,7 +12,7 @@ updated new style record instead.
1 file changed, 40 insertions(+)
diff --git a/usr/idbm.c b/usr/idbm.c
index 2f5e309..a2332cc 100644
index bc51388..f1e5c88 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -28,6 +28,7 @@
@ -23,21 +23,21 @@ index 2f5e309..a2332cc 100644
#include <sys/stat.h>
#include <sys/file.h>
#include <inttypes.h>
@@ -164,6 +165,8 @@ static struct idbm *db;
_n++; \
} while(0)
@@ -203,6 +204,8 @@ static struct int_list_tbl {
{ "SHA3-256", AUTH_CHAP_ALG_SHA3_256 },
};
+static int idbm_remove_disc_to_node_link(node_rec_t *rec, char *portal);
+
static void
idbm_recinfo_discovery(discovery_rec_t *r, recinfo_t *ri)
{
@@ -2107,12 +2110,49 @@ static int idbm_rec_write_old(node_rec_t *rec)
@@ -2207,12 +2210,49 @@ static int idbm_rec_write_old(node_rec_t *rec)
FILE *f;
char *portal;
int rc = 0;
+ glob_t globbuf;
+ int i;
+ size_t i;
+ int tpgt = PORTAL_GROUP_TAG_UNKNOWN;
portal = malloc(PATH_MAX);
@ -83,5 +83,5 @@ index 2f5e309..a2332cc 100644
rec->name, rec->conn[0].address, rec->conn[0].port);
--
2.21.0
2.26.2

View File

@ -1,16 +1,16 @@
From 6602f08bfcc2b2e75d1a58671cb160c96cf2d99b Mon Sep 17 00:00:00 2001
From 97b1242450df25648d203acf7cc297cd46d10e8c Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 19 Nov 2012 16:37:13 -0800
Subject: [PATCH] update initscripts and docs
---
README | 10 ++++------
etc/iscsid.conf | 21 ++++++++++-----------
README | 12 +++++-------
etc/iscsid.conf | 23 +++++++++++------------
usr/idbm.c | 4 ++++
3 files changed, 18 insertions(+), 17 deletions(-)
3 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/README b/README
index 2499d9a..c05814a 100644
index 508c9d7..b62a14e 100644
--- a/README
+++ b/README
@@ -77,11 +77,6 @@ the cache sync command will fail.
@ -25,16 +25,21 @@ index 2499d9a..c05814a 100644
The userspace components iscsid, iscsiadm and iscsistart require the
open-isns library, which can be found here:
https://github.com/gonzoleeman/open-isns/releases
@@ -1151,7 +1146,7 @@ Red Hat or Fedora:
@@ -1163,11 +1158,11 @@ Red Hat or Fedora:
-----------------
To start open-iscsi in Red Hat/Fedora you can do:
- service open-iscsi start
+ service iscsi start
- systemctl start open-iscsi
+ systemctl start iscsi
To get open-iscsi to automatically start at run time you may have to
run:
@@ -1353,6 +1348,9 @@ iscsid will only perform rediscovery when it gets a SCN from the server.
- systemctl enable open-iscsi
+ systemctl enable iscsi
And, to automatically mount a file system during startup
you must have the partition entry in /etc/fstab marked with the "_netdev"
@@ -1370,6 +1365,9 @@ iscsid will only perform rediscovery when it gets a SCN from the server.
# linux-isns (SLES's iSNS server) where it sometimes does not send SCN
# events in the proper format, so they may not get handled.
@ -45,18 +50,20 @@ index 2499d9a..c05814a 100644
--------
diff --git a/etc/iscsid.conf b/etc/iscsid.conf
index 70985af..2f3a28c 100644
index f21ed3d..420145b 100644
--- a/etc/iscsid.conf
+++ b/etc/iscsid.conf
@@ -19,7 +19,7 @@
@@ -19,8 +19,8 @@
# the time then leave this attribute commented out.
#
# Default for Fedora and RHEL. (uncomment to activate).
-# iscsid.startup = /bin/systemctl start iscsid.socket iscsiuio.soccket
-# iscsid.startup = /bin/systemctl start iscsid.socket iscsiuio.socket
-#
+iscsid.startup = /bin/systemctl start iscsid.socket iscsiuio.socket
#
+#
# Default if you are not using systemd (uncomment to activate)
# iscsid.startup = /usr/bin/service start iscsid
@@ -41,8 +41,8 @@
# To request that the iscsi initd scripts startup a session set to "automatic".
# node.startup = automatic
@ -68,7 +75,7 @@ index 70985af..2f3a28c 100644
# For "automatic" startup nodes, setting this to "Yes" will try logins on each
# available iface until one succeeds, and then stop. The default "No" will try
@@ -264,28 +264,27 @@ node.conn[0].iscsi.MaxXmitDataSegmentLength = 0
@@ -271,28 +271,27 @@ node.conn[0].iscsi.MaxXmitDataSegmentLength = 0
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
# To allow the targets to control the setting of the digest checking,
@ -105,10 +112,10 @@ index 70985af..2f3a28c 100644
# For multipath configurations, you may want more than one session to be
# created on each iface record. If node.session.nr_sessions is greater
diff --git a/usr/idbm.c b/usr/idbm.c
index a2332cc..aed08f2 100644
index f1e5c88..0f0f17a 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -521,9 +521,13 @@ idbm_recinfo_node(node_rec_t *r, recinfo_t *ri)
@@ -566,9 +566,13 @@ idbm_recinfo_node(node_rec_t *r, recinfo_t *ri)
IDBM_SHOW, "None", "CRC32C", "CRC32C,None",
"None,CRC32C", num, 1);
sprintf(key, CONN_DATA_DIGEST, i);
@ -123,5 +130,5 @@ index a2332cc..aed08f2 100644
__recinfo_int_o2(key, ri, r, conn[i].iscsi.IFMarker, IDBM_SHOW,
"No", "Yes", num, 1);
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From 9cae86dd15bf78ee9d221f722f723062eb6ad3d8 Mon Sep 17 00:00:00 2001
From b2af45f06a9b4d78c5dbb9421ac94f62d5e6f884 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 19 Nov 2012 16:38:45 -0800
Subject: [PATCH] use var for config
@ -147,10 +147,10 @@ index c05814a..326c3b0 100644
Note that for iSNS the poll_interval does not have to be set. If not set,
iscsid will only perform rediscovery when it gets a SCN from the server.
diff --git a/doc/iscsiadm.8 b/doc/iscsiadm.8
index bf23dd2..9cfce16 100644
index 22263eb..f47afac 100644
--- a/doc/iscsiadm.8
+++ b/doc/iscsiadm.8
@@ -228,7 +228,7 @@ This option is only valid for ping submode.
@@ -229,7 +229,7 @@ This option is only valid for ping submode.
.TP
\fB\-I\fR, \fB\-\-interface=\fI[iface]\fR
The interface argument specifies the iSCSI interface to use for the operation.
@ -159,7 +159,7 @@ index bf23dd2..9cfce16 100644
iSCSI (qla4xxx) the iface config must have the hardware address
(iface.hwaddress = port's MAC address)
and the driver/transport_name (iface.transport_name). The iface's name is
@@ -301,7 +301,7 @@ If no other options are specified: for \fIdiscovery\fR, \fIdiscoverydb\fR and
@@ -309,7 +309,7 @@ If no other options are specified: for \fIdiscovery\fR, \fIdiscoverydb\fR and
\fInode\fR, all of their respective records are displayed; for \fIsession\fR,
all active sessions and connections are displayed; for \fIfw\fR, all boot
firmware values are displayed; for \fIhost\fR, all iSCSI hosts are displayed;
@ -168,7 +168,7 @@ index bf23dd2..9cfce16 100644
.TP
\fB\-n\fR, \fB\-\-name=\fIname\fR
In node mode, specify a field \fIname\fR in a record. In flashnode submode
@@ -640,10 +640,10 @@ The configuration file read by \fBiscsid\fR and \fBiscsiadm\fR on startup.
@@ -648,10 +648,10 @@ The configuration file read by \fBiscsid\fR and \fBiscsiadm\fR on startup.
The file containing the iSCSI InitiatorName and InitiatorAlias read by
\fBiscsid\fR and \fBiscsiadm\fR on startup.
.TP
@ -195,10 +195,10 @@ index 6f9218f..0da0551 100644
.SH "SEE ALSO"
diff --git a/usr/idbm.c b/usr/idbm.c
index aed08f2..15802c3 100644
index 0f0f17a..27cad0a 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -2968,9 +2968,9 @@ free_info:
@@ -3068,9 +3068,9 @@ free_info:
int idbm_init(idbm_get_config_file_fn *fn)
{
/* make sure root db dir is there */
@ -212,7 +212,7 @@ index aed08f2..15802c3 100644
return errno;
}
diff --git a/usr/idbm.h b/usr/idbm.h
index 18c5025..6bdfd60 100644
index 46cd82a..ce098b7 100644
--- a/usr/idbm.h
+++ b/usr/idbm.h
@@ -30,12 +30,13 @@
@ -251,5 +251,5 @@ index 6c06f7f..c8b9de9 100644
struct iface_rec;
struct list_head;
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From 1ddee25396962a6bd966b98311881ed6d4cba87c Mon Sep 17 00:00:00 2001
From 8312003a6a9e41d8d20eb8225ec8c4b2860351ec Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 19 Nov 2012 16:40:04 -0800
Subject: [PATCH] use red hat for name
@ -22,10 +22,10 @@ index 6a413f6..dd77ed9 100644
.SH AUTHORS
Open-iSCSI project <http://www.open-iscsi.com/>
diff --git a/utils/iscsi-iname.c b/utils/iscsi-iname.c
index da850dc..29aa4ad 100644
index 0f587e1..0e15650 100644
--- a/utils/iscsi-iname.c
+++ b/utils/iscsi-iname.c
@@ -80,7 +80,7 @@ main(int argc, char *argv[])
@@ -89,7 +89,7 @@ main(int argc, char *argv[])
exit(0);
}
} else {
@ -35,5 +35,5 @@ index da850dc..29aa4ad 100644
/* try to feed some entropy from the pool to MD5 in order to get
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From af721a438031fa9f79db5de3b018c4b532ac2e0c Mon Sep 17 00:00:00 2001
From 8b4da8007ef59bbc833fed882ddae57bbcd51f1c Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 26 Jan 2015 12:57:11 -0800
Subject: [PATCH] libiscsi
@ -3914,12 +3914,12 @@ index 0000000..a21f888
+ return rc;
+}
diff --git a/usr/Makefile b/usr/Makefile
index 3bb0cb4..8ae6e07 100644
index 21bb154..885243a 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -37,7 +37,7 @@ PKG_CONFIG = /usr/bin/pkg-config
CFLAGS ?= -O2 -g
WARNFLAGS ?= -Wall -Wstrict-prototypes
WARNFLAGS ?= -Wall -Wextra -Werror -Wstrict-prototypes -fno-common
CFLAGS += $(WARNFLAGS) -I../include -I. -D_GNU_SOURCE \
- -I$(TOPDIR)/libopeniscsiusr
+ -I$(TOPDIR)/libopeniscsiusr -DISNS_ENABLE
@ -3927,7 +3927,7 @@ index 3bb0cb4..8ae6e07 100644
ISCSI_LIB = -L$(TOPDIR)/libopeniscsiusr -lopeniscsiusr
LDFLAGS += $(shell $(PKG_CONFIG) --libs libkmod)
diff --git a/usr/discovery.c b/usr/discovery.c
index 199c160..d17a250 100644
index 7dec696..2cf1838 100644
--- a/usr/discovery.c
+++ b/usr/discovery.c
@@ -36,6 +36,7 @@
@ -3965,13 +3965,13 @@ index 199c160..d17a250 100644
}
+#endif
int discovery_fw(void *data, struct iface_rec *iface,
struct list_head *rec_list)
int discovery_fw(void *data,
__attribute__((unused))struct iface_rec *iface,
diff --git a/usr/idbm.c b/usr/idbm.c
index 15802c3..3184c77 100644
index 27cad0a..2498a03 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -1725,9 +1725,9 @@ int idbm_print_all_discovery(int info_level)
@@ -1825,9 +1825,9 @@ int idbm_print_all_discovery(int info_level)
* fn should return -1 if it skipped the rec, an ISCSI_ERR error code if
* the operation failed or 0 if fn was run successfully.
*/
@ -3985,10 +3985,10 @@ index 15802c3..3184c77 100644
DIR *iface_dirfd;
struct dirent *iface_dent;
diff --git a/usr/idbm.h b/usr/idbm.h
index 6bdfd60..c6982e4 100644
index ce098b7..d1a7f63 100644
--- a/usr/idbm.h
+++ b/usr/idbm.h
@@ -103,6 +103,9 @@ struct rec_op_data {
@@ -105,6 +105,9 @@ struct rec_op_data {
node_rec_t *match_rec;
idbm_iface_op_fn *fn;
};
@ -3999,16 +3999,16 @@ index 6bdfd60..c6982e4 100644
char *targetname, bool ruw_lock);
extern int idbm_for_each_node(int *found, void *data,
diff --git a/usr/iscsi_ipc.h b/usr/iscsi_ipc.h
index 47857dd..fb8e965 100644
index 47857dd..596543b 100644
--- a/usr/iscsi_ipc.h
+++ b/usr/iscsi_ipc.h
@@ -162,4 +162,6 @@ struct iscsi_ipc {
char *host_stats);
};
+struct iscsi_ipc *ipc;
+extern struct iscsi_ipc *ipc;
+
#endif /* ISCSI_IPC_H */
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From 3df19ccba0af40da8cdb15c41e1bcd08ce25fbd9 Mon Sep 17 00:00:00 2001
From 676f48d6e70f8406b36a004669d923825db51e2f Mon Sep 17 00:00:00 2001
From: Jiri Konecny <jkonecny@redhat.com>
Date: Mon, 11 May 2015 13:16:26 +0200
Subject: [PATCH] Add macros to release GIL lock
@ -52,5 +52,5 @@ index 8800853..40b5955 100644
libiscsi_get_error_string(context));
return NULL;
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From bca0b3a085b7a169aa40d81ed7997c73fde8b4d3 Mon Sep 17 00:00:00 2001
From 2c28c620727e522f022689312d76f107eb8ef18f Mon Sep 17 00:00:00 2001
From: Peter Hatina <phatina@redhat.com>
Date: Mon, 5 Oct 2015 16:50:36 -0700
Subject: [PATCH] libiscsi introduce sessions API
@ -242,7 +242,7 @@ index 756590e..a9891f4 100644
*
* Set the given nodes iSCSI parameter named by \e parameter to value \e value.
diff --git a/usr/iscsi_sysfs.c b/usr/iscsi_sysfs.c
index 418f51b..6febba2 100644
index 435c576..e549afe 100644
--- a/usr/iscsi_sysfs.c
+++ b/usr/iscsi_sysfs.c
@@ -3,6 +3,7 @@
@ -286,5 +286,5 @@ index 1d0377f..909db34 100644
int *nr_found,
iscsi_sysfs_iface_op_fn *fn);
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From 2e660a78632545e98f7c9e2ffb8518512c0db5ff Mon Sep 17 00:00:00 2001
From c53c576c09c5a3a1654b7a1f08fcc222a102499d Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 28 Feb 2017 09:00:41 -0800
Subject: [PATCH] libiscsi: fix discovery request timeout regression
@ -28,5 +28,5 @@ index 755c18c..bb17dfc 100644
rc = idbm_bind_ifaces_to_nodes(discovery_fw, &drec, &ifaces, &rec_list);
if (rc) {
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From 3040b7530eda1ab5625d76783dc7b8cf595a0ef0 Mon Sep 17 00:00:00 2001
From cf4db608004f7c1f137ed556e3ba6b6f4d65da96 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 28 Feb 2017 10:06:42 -0800
Subject: [PATCH] libiscsi format-security build errors
@ -31,5 +31,5 @@ index bb17dfc..7003388 100644
}
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From 123fc55dd8ad98c9afd39bf0824b3d31d5e93214 Mon Sep 17 00:00:00 2001
From a86a677762cf5fd45a43029a4fd3dd83d1a87a98 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Thu, 24 May 2018 15:17:05 -0700
Subject: [PATCH] libiscsi fix build to use libopeniscsiusr
@ -32,5 +32,5 @@ index 53f9746..f2cf248 100644
# Flags for the tests
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From 039700890e11dff3323241349d3858f258c09cc0 Mon Sep 17 00:00:00 2001
From 55af753f593243bcd1ab4c7e82620bdee432915b Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Thu, 7 Nov 2019 09:16:17 -0800
Subject: [PATCH] libiscsi: fix build against latest upstream, again
@ -62,5 +62,5 @@ index 7003388..c598aee 100644
strcpy(context->error_str, "No such node");
rc = ENODEV;
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From d0689253c9e2eb78fc5296adb109aba4d35a13fd Mon Sep 17 00:00:00 2001
From d410fe4b6eb2347f2160b8aaab24a639de99c23c Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 19 Nov 2012 17:09:24 -0800
Subject: [PATCH] remove the offload boot supported ifdef
@ -8,10 +8,10 @@ Subject: [PATCH] remove the offload boot supported ifdef
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/usr/iface.c b/usr/iface.c
index 645b0b8..9cd07fd 100644
index 11f3d2a..65c1615 100644
--- a/usr/iface.c
+++ b/usr/iface.c
@@ -993,6 +993,7 @@ int iface_setup_from_boot_context(struct iface_rec *iface,
@@ -998,6 +998,7 @@ int iface_setup_from_boot_context(struct iface_rec *iface,
{
struct iscsi_transport *t = NULL;
uint32_t hostno;
@ -19,7 +19,7 @@ index 645b0b8..9cd07fd 100644
if (strlen(context->initiatorname))
strlcpy(iface->iname, context->initiatorname,
@@ -1006,10 +1007,7 @@ int iface_setup_from_boot_context(struct iface_rec *iface,
@@ -1011,10 +1012,7 @@ int iface_setup_from_boot_context(struct iface_rec *iface,
return 0;
}
} else if (strlen(context->iface)) {
@ -30,7 +30,7 @@ index 645b0b8..9cd07fd 100644
memset(transport_name, 0, ISCSI_TRANSPORT_NAME_MAXLEN);
/* make sure offload driver is loaded */
@@ -1035,9 +1033,6 @@ int iface_setup_from_boot_context(struct iface_rec *iface,
@@ -1040,9 +1038,6 @@ int iface_setup_from_boot_context(struct iface_rec *iface,
}
strlcpy(iface->netdev, context->iface, sizeof(iface->netdev));
@ -41,5 +41,5 @@ index 645b0b8..9cd07fd 100644
return 0;
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From ccb9d70a0dad7c42f926f1680ae708a5ae3d3696 Mon Sep 17 00:00:00 2001
From 49dc2a687175f9671a159df38971a15287dae18c Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 24 Feb 2014 09:33:33 -0800
Subject: [PATCH] Revert "iscsiadm: return error when login fails"
@ -30,5 +30,5 @@ index 0500f15..1e1f2bc 100644
}
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From f524e332835b2b59d3f3ff8a67814ef2d58a2857 Mon Sep 17 00:00:00 2001
From e35261316aaa598c4146a5396745cb76571e94fe Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Fri, 25 May 2018 09:39:07 -0700
Subject: [PATCH] dont install scripts
@ -21,5 +21,5 @@ index 4ab091f..7e6b734 100644
$(INSTALL) -m 755 $^ $(DESTDIR)$(sbindir)
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From e2b8215b80cc037ecbcb9eef50e432c31d5e56eb Mon Sep 17 00:00:00 2001
From e186e959ddc2a47e7cfe1f5a8ea4d3fa8248a478 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Wed, 30 May 2018 16:08:30 -0700
Subject: [PATCH] use /var/lib/iscsi in libopeniscsiusr
@ -12,7 +12,7 @@ Subject: [PATCH] use /var/lib/iscsi in libopeniscsiusr
5 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/libopeniscsiusr/idbm.h b/libopeniscsiusr/idbm.h
index 3fd0864..c84d332 100644
index cc90388..5a4d2fa 100644
--- a/libopeniscsiusr/idbm.h
+++ b/libopeniscsiusr/idbm.h
@@ -31,7 +31,8 @@
@ -105,5 +105,5 @@ index 39e07b3..9eba7fa 100644
/* Might be public in the future */
__DLL_LOCAL void iscsi_node_free(struct iscsi_node *node);
--
2.21.0
2.26.2

View File

@ -1,15 +1,15 @@
From 44bb05de04c0f8819c1fdae8f567dd802a8444e8 Mon Sep 17 00:00:00 2001
From 0c300716226027d75afa2b9e5f052fa4868204ae Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Wed, 5 Jun 2019 09:08:39 -0700
Subject: [PATCH] Coverity scan fixes
---
iscsiuio/src/unix/libs/qedi.c | 2 +-
iscsiuio/src/unix/main.c | 12 ++++++++++--
iscsiuio/src/unix/main.c | 3 +++
libopeniscsiusr/idbm.c | 11 +++++------
usr/idbm.c | 10 ++++------
usr/iscsid.c | 2 +-
5 files changed, 21 insertions(+), 16 deletions(-)
5 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/iscsiuio/src/unix/libs/qedi.c b/iscsiuio/src/unix/libs/qedi.c
index 3414cb5..a359700 100644
@ -25,22 +25,10 @@ index 3414cb5..a359700 100644
if (bd_cons != bd_prod) {
diff --git a/iscsiuio/src/unix/main.c b/iscsiuio/src/unix/main.c
index 5e3f66c..4c50890 100644
index 0c9ad49..f83f305 100644
--- a/iscsiuio/src/unix/main.c
+++ b/iscsiuio/src/unix/main.c
@@ -341,7 +341,10 @@ int main(int argc, char *argv[])
/* parent: wait for child msg then exit */
close(pipefds[1]);
- read(pipefds[0], msgbuf, sizeof(msgbuf));
+ if (read(pipefds[0], msgbuf, sizeof(msgbuf)) < 0) {
+ fprintf(stderr, "ERR: Waiting for child process failed\n");
+ exit(1);
+ }
exit(0);
}
@@ -387,6 +390,9 @@ int main(int argc, char *argv[])
@@ -391,6 +391,9 @@ int main(int argc, char *argv[])
sigaddset(&set, SIGTERM);
sigaddset(&set, SIGUSR1);
rc = pthread_sigmask(SIG_SETMASK, &set, NULL);
@ -50,22 +38,11 @@ index 5e3f66c..4c50890 100644
/* Spin off the signal handling thread */
pthread_attr_init(&attr);
@@ -416,7 +422,9 @@ int main(int argc, char *argv[])
if (!foreground) {
/* signal parent they can go away now */
close(pipefds[0]);
- write(pipefds[1], "ok\n", 3);
+ if (write(pipefds[1], "ok\n", 3) < 0) {
+ LOG_ERR("Failed to signal parent process of completed initialization");
+ }
close(pipefds[1]);
}
diff --git a/libopeniscsiusr/idbm.c b/libopeniscsiusr/idbm.c
index d020e6c..342aab5 100644
index 7bc2381..7d4c338 100644
--- a/libopeniscsiusr/idbm.c
+++ b/libopeniscsiusr/idbm.c
@@ -287,12 +287,11 @@ int _idbm_lock(struct iscsi_context *ctx)
@@ -321,12 +321,11 @@ int _idbm_lock(struct iscsi_context *ctx)
return 0;
}
@ -84,10 +61,10 @@ index d020e6c..342aab5 100644
fd = open(LOCK_FILE, O_RDWR | O_CREAT, 0666);
diff --git a/usr/idbm.c b/usr/idbm.c
index 3184c77..0c6870c 100644
index 2498a03..a4bc745 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -1339,12 +1339,10 @@ int idbm_lock(void)
@@ -1439,12 +1439,10 @@ int idbm_lock(void)
return 0;
}
@ -105,10 +82,10 @@ index 3184c77..0c6870c 100644
fd = open(LOCK_FILE, O_RDWR | O_CREAT, 0666);
diff --git a/usr/iscsid.c b/usr/iscsid.c
index 8f1c597..96a6452 100644
index e501498..dd94a16 100644
--- a/usr/iscsid.c
+++ b/usr/iscsid.c
@@ -489,8 +489,8 @@ int main(int argc, char *argv[])
@@ -495,8 +495,8 @@ int main(int argc, char *argv[])
log_close(log_pid);
exit(ISCSI_ERR);
}
@ -119,5 +96,5 @@ index 8f1c597..96a6452 100644
if ((control_fd = ipc->ctldev_open()) < 0) {
log_close(log_pid);
--
2.21.0
2.26.2

View File

@ -1,4 +1,4 @@
From 4142125fa296d21a307fb2370b2d4d7e8487f22c Mon Sep 17 00:00:00 2001
From c852ca6300bc3fcf765744506222ff6da4296127 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Wed, 16 Oct 2019 23:17:20 -0700
Subject: [PATCH] fix upstream build breakage of iscsiuio LDFLAGS
@ -8,7 +8,7 @@ Subject: [PATCH] fix upstream build breakage of iscsiuio LDFLAGS
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/iscsiuio/configure.ac b/iscsiuio/configure.ac
index b41df0e..a856cc5 100644
index 8099f09..733214d 100644
--- a/iscsiuio/configure.ac
+++ b/iscsiuio/configure.ac
@@ -67,10 +67,10 @@ AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
@ -25,5 +25,5 @@ index b41df0e..a856cc5 100644
AC_CONFIG_COMMANDS([default],[[
if [ -n "$SOURCE_DATE_EPOCH" ] ; then
--
2.21.0
2.26.2

View File

@ -1,130 +0,0 @@
From 77150edd697669467ff9f8775b93bd9d7a34cadf Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Mon, 28 Oct 2019 10:20:56 -0700
Subject: [PATCH] improve systemd service files for boot session handling
---
etc/systemd/iscsi-mark-root-nodes | 6 +++++-
etc/systemd/iscsi-onboot.service | 15 +++++++++++++++
etc/systemd/iscsi-shutdown.service | 1 +
etc/systemd/iscsi.service | 11 ++++-------
etc/systemd/iscsid.service | 4 +---
etc/systemd/iscsiuio.service | 1 -
6 files changed, 26 insertions(+), 12 deletions(-)
create mode 100644 etc/systemd/iscsi-onboot.service
diff --git a/etc/systemd/iscsi-mark-root-nodes b/etc/systemd/iscsi-mark-root-nodes
index c693707..9d48805 100755
--- a/etc/systemd/iscsi-mark-root-nodes
+++ b/etc/systemd/iscsi-mark-root-nodes
@@ -9,7 +9,11 @@ while read t num p target flash; do
portal=${p%,*}
transport=${t%:}
- $ISCSIADM -m node -p $portal -T $target -o update -n node.startup -v onboot
+ # use session number to find the iface name in use
+ num=${num#[}; num=${num%]}
+ iface=$(iscsiadm -m session -r $num | grep iface.iscsi_ifacename | cut -d= -f2)
+
+ $ISCSIADM -m node -p $portal -T $target -I $iface -o update -n node.startup -v onboot
start_iscsid=1
diff --git a/etc/systemd/iscsi-onboot.service b/etc/systemd/iscsi-onboot.service
new file mode 100644
index 0000000..42ced68
--- /dev/null
+++ b/etc/systemd/iscsi-onboot.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Special handling of early boot iSCSI sessions
+Documentation=man:iscsiadm(8) man:iscsid(8)
+DefaultDependencies=no
+RefuseManualStart=true
+Before=iscsi.service
+After=systemd-remount-fs.service
+ConditionDirectoryNotEmpty=/sys/class/iscsi_session
+
+[Service]
+Type=oneshot
+ExecStart=-/usr/libexec/iscsi-mark-root-nodes
+
+[Install]
+WantedBy=sysinit.target
diff --git a/etc/systemd/iscsi-shutdown.service b/etc/systemd/iscsi-shutdown.service
index 69c1c77..caee933 100644
--- a/etc/systemd/iscsi-shutdown.service
+++ b/etc/systemd/iscsi-shutdown.service
@@ -11,4 +11,5 @@ RefuseManualStop=yes
[Service]
Type=oneshot
RemainAfterExit=true
+ExecStart=-/usr/bin/true
ExecStop=-/usr/sbin/iscsiadm -m node --logoutall=all
diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service
index eadfcec..175cb2c 100644
--- a/etc/systemd/iscsi.service
+++ b/etc/systemd/iscsi.service
@@ -1,21 +1,18 @@
[Unit]
Description=Login and scanning of iSCSI devices
-Documentation=man:iscsid(8) man:iscsiadm(8)
+Documentation=man:iscsiadm(8) man:iscsid(8)
DefaultDependencies=no
-Conflicts=shutdown.target
-After=systemd-remount-fs.service network.target iscsid.service iscsiuio.service
Before=remote-fs-pre.target
+After=network.target network-online.target iscsid.service iscsiuio.service systemd-remount-fs.service
Wants=remote-fs-pre.target iscsi-shutdown.service
-ConditionDirectoryNotEmpty=|/var/lib/iscsi/nodes
-ConditionDirectoryNotEmpty=|/sys/class/iscsi_session
+ConditionDirectoryNotEmpty=/var/lib/iscsi/nodes
[Service]
Type=oneshot
RemainAfterExit=true
-ExecStart=-/usr/libexec/iscsi-mark-root-nodes
ExecStart=-/usr/sbin/iscsiadm -m node --loginall=automatic
ExecReload=-/usr/sbin/iscsiadm -m node --loginall=automatic
SuccessExitStatus=21
[Install]
-WantedBy=sysinit.target
+WantedBy=remote-fs.target
diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service
index 8d50cf0..28402fb 100644
--- a/etc/systemd/iscsid.service
+++ b/etc/systemd/iscsid.service
@@ -1,8 +1,7 @@
[Unit]
Description=Open-iSCSI
-Documentation=man:iscsid(8) man:iscsiadm(8)
+Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8)
DefaultDependencies=no
-Conflicts=shutdown.target
After=network.target iscsiuio.service
Before=remote-fs-pre.target
@@ -10,7 +9,6 @@ Before=remote-fs-pre.target
Type=notify
NotifyAccess=main
ExecStart=/usr/sbin/iscsid -f
-ExecStop=/usr/sbin/iscsiadm -k 0 2
KillMode=mixed
Restart=on-failure
diff --git a/etc/systemd/iscsiuio.service b/etc/systemd/iscsiuio.service
index 8620cde..fc0be93 100644
--- a/etc/systemd/iscsiuio.service
+++ b/etc/systemd/iscsiuio.service
@@ -2,7 +2,6 @@
Description=iSCSI UserSpace I/O driver
Documentation=man:iscsiuio(8)
DefaultDependencies=no
-Conflicts=shutdown.target
Requires=iscsid.service
BindTo=iscsid.service
After=network.target
--
2.21.0

View File

@ -1,4 +1,4 @@
From c589d94293f3bee77c34ca61371ddfbeef71f2af Mon Sep 17 00:00:00 2001
From d7b7bd54b7d99ee865f629fac5f0b622d46e2c95 Mon Sep 17 00:00:00 2001
From: Chris Leech <cleech@redhat.com>
Date: Mon, 21 Jan 2013 15:43:36 -0800
Subject: [PATCH] use Red Hat version string to match RPM package version
@ -8,18 +8,18 @@ Subject: [PATCH] use Red Hat version string to match RPM package version
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/usr/version.h b/usr/version.h
index 615f533..a1f6cc2 100644
index 115a11c..1214f3b 100644
--- a/usr/version.h
+++ b/usr/version.h
@@ -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-878"
+#define ISCSI_VERSION_STR "6.2.0.878-2"
-#define ISCSI_VERSION_STR "2.1.2"
+#define ISCSI_VERSION_STR "6.2.1.2-0"
#define ISCSI_VERSION_FILE "/sys/module/scsi_transport_iscsi/version"
#endif
--
2.21.0
2.26.2

View File

@ -0,0 +1,44 @@
From 84a8601fe7b9b5337af95835aaa5aae1bfd88d95 Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 11 Aug 2020 21:00:29 +0200
Subject: [PATCH] iscsi_if.h replace zero-length array with flexible-array
member
---
include/iscsi_if.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/iscsi_if.h b/include/iscsi_if.h
index 5a1c614..e8cee0d 100644
--- a/include/iscsi_if.h
+++ b/include/iscsi_if.h
@@ -337,7 +337,7 @@ enum iscsi_param_type {
struct iscsi_param_info {
uint32_t len; /* Actual length of the param value */
uint16_t param; /* iscsi param */
- uint8_t value[0]; /* length sized value follows */
+ uint8_t value[]; /* length sized value follows */
} __attribute__((__packed__));
struct iscsi_iface_param_info {
@@ -346,7 +346,7 @@ struct iscsi_iface_param_info {
uint16_t param; /* iscsi param value */
uint8_t iface_type; /* IPv4 or IPv6 */
uint8_t param_type; /* iscsi_param_type */
- uint8_t value[0]; /* length sized value follows */
+ uint8_t value[]; /* length sized value follows */
} __attribute__((__packed__));
/*
@@ -723,7 +723,7 @@ enum iscsi_flashnode_param {
struct iscsi_flashnode_param_info {
uint32_t len; /* Actual length of the param */
uint16_t param; /* iscsi param value */
- uint8_t value[0]; /* length sized value follows */
+ uint8_t value[]; /* length sized value follows */
} __attribute__((__packed__));
enum iscsi_discovery_parent_type {
--
2.26.2

View File

@ -0,0 +1,56 @@
From af428f588f8023784c6f4b0a25d13b70fb7216ab Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Tue, 3 Mar 2020 10:35:40 -0800
Subject: [PATCH] stop using Werror for now
need to work through these warning that only appear on s390x
Werror seems bad for release, makes packaging a nightmare when new
compilers come around
---
Makefile | 2 +-
usr/Makefile | 2 +-
usr/initiator.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index 7e6b734..0069e75 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@
DESTDIR ?=
prefix = /usr
-exec_prefix = /
+exec_prefix = /usr
sbindir = $(exec_prefix)/sbin
bindir = $(exec_prefix)/bin
mandir = $(prefix)/share/man
diff --git a/usr/Makefile b/usr/Makefile
index 885243a..1a743d1 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -35,7 +35,7 @@ endif
PKG_CONFIG = /usr/bin/pkg-config
CFLAGS ?= -O2 -g
-WARNFLAGS ?= -Wall -Wextra -Werror -Wstrict-prototypes -fno-common
+WARNFLAGS ?= -Wall -Wextra -Wstrict-prototypes -fno-common
CFLAGS += $(WARNFLAGS) -I../include -I. -D_GNU_SOURCE \
-I$(TOPDIR)/libopeniscsiusr -DISNS_ENABLE
CFLAGS += $(shell $(PKG_CONFIG) --cflags libkmod)
diff --git a/usr/initiator.c b/usr/initiator.c
index 684647c..a5a9d08 100644
--- a/usr/initiator.c
+++ b/usr/initiator.c
@@ -580,7 +580,7 @@ __session_conn_reopen(iscsi_conn_t *conn, queue_task_t *qtask, int do_stop,
int redirected)
{
iscsi_session_t *session = conn->session;
- uint32_t delay;
+ uint32_t delay = 0;
log_debug(1, "re-opening session %d (reopen_cnt %d)", session->id,
session->reopen_cnt);
--
2.26.2

View File

@ -1,6 +1,6 @@
%global open_iscsi_version 2.0
%global open_iscsi_build 878
%global commit0 d791ce020673381cf3b559866d1f61e0411126a6
%global open_iscsi_version 2.1
%global open_iscsi_build 2
%global commit0 a8fcb3737cabcf79a3a3663f43930a158d606782
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})
%if 0%{?rhel} > 7
@ -13,7 +13,7 @@
Summary: iSCSI daemon and utility programs
Name: iscsi-initiator-utils
Version: 6.%{open_iscsi_version}.%{open_iscsi_build}
Release: 4.git%{shortcommit0}%{?dist}
Release: 0.git%{shortcommit0}%{?dist}
Group: System Environment/Daemons
License: GPLv2+
URL: http://www.open-iscsi.org
@ -21,7 +21,7 @@ Source0: https://github.com/open-iscsi/open-iscsi/archive/%{commit0}.tar.gz#/ope
Source4: 04-iscsi
Source5: iscsi-tmpfiles.conf
Patch0001: 0001-service-file-tweaks.patch
Patch0001: 0001-unit-file-tweaks.patch
Patch0002: 0002-idmb_rec_write-check-for-tpgt-first.patch
Patch0003: 0003-idbm_rec_write-seperate-old-and-new-style-writes.patch
Patch0004: 0004-idbw_rec_write-pick-tpgt-from-existing-record.patch
@ -41,23 +41,22 @@ Patch0017: 0017-dont-install-scripts.patch
Patch0018: 0018-use-var-lib-iscsi-in-libopeniscsiusr.patch
Patch0019: 0019-Coverity-scan-fixes.patch
Patch0020: 0020-fix-upstream-build-breakage-of-iscsiuio-LDFLAGS.patch
Patch0021: 0021-improve-systemd-service-files-for-boot-session-handl.patch
Patch0022: 0022-use-Red-Hat-version-string-to-match-RPM-package-vers.patch
Patch0023: 0001-configuration-support-for-CHAP-algorithms.patch
Patch0024: 0001-Fix-bug-with-libopeniscsiusr.pc.patch
Patch0025: 0001-enable-all-CHAP-digest-functions-by-default.patch
Patch0026: 0001-Revert-Out-of-bounds-read-Overrunning-array-of-8-2-b.patch
Patch0021: 0021-use-Red-Hat-version-string-to-match-RPM-package-vers.patch
Patch0022: 0022-iscsi_if.h-replace-zero-length-array-with-flexible-a.patch
Patch0023: 0023-stop-using-Werror-for-now.patch
BuildRequires: flex bison doxygen kmod-devel systemd-units
BuildRequires: autoconf automake libtool libmount-devel openssl-devel
BuildRequires: isns-utils-devel
BuildRequires: systemd-devel
# For dir ownership
Requires: %{name}-iscsiuio >= %{version}-%{release}
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
# Old NetworkManager expects the dispatcher scripts in a different place
Conflicts: NetworkManager < 1.20
%global _hardened_build 1
%global __provides_exclude_from ^(%{python2_sitearch}/.*\\.so|%{python3_sitearch}/.*\\.so)$
@ -70,21 +69,21 @@ Protocol networks.
# I don't think we're ready to expose these just yet
# For now just add the needed library to the base package
#%package -n libopeniscsiusr
#%%package -n libopeniscsiusr
#Summary: library providing access to Open-iSCSI initiator functionality
#Group: Development/Libraries
#License: BSD
#%description -n libopeniscsiusr
#%%description -n libopeniscsiusr
#The libopeniscsiusr library provides a C API for access to the Open-iSCSI
#initiator. It is used by the Open-iSCSI command line tools.
#%package -n libopeniscsiusr-devel
#%%package -n libopeniscsiusr-devel
#Summary: Development files for libopeniscsiusr
#Group: Development/Libraries
#Requires: libopeniscsiusr = %{version}-%{release}
#Requires: libopeniscsiusr = %%{version}-%%{release}
#%description -n libopeniscsiusr-devel
#%%description -n libopeniscsiusr-devel
#The libopeniscsiusr-devel package contains libraries and header files for
#developing applications that use libopeniscsiusr.
@ -119,7 +118,8 @@ BuildRequires: python2-setuptools
%description -n python2-%{name}
The %{name}-python2 package contains Python %{python2_version} bindings to the
libiscsi interface for interacting with %{name}
%endif # with python2
%endif
# ended with python2
%package -n python3-%{name}
%{?python_provide:%python_provide python3-%{name}}
@ -152,7 +152,8 @@ cd ..
pushd libiscsi
%if %{with python2}
%py2_build
%endif # with python2
%endif
# ended with python2
%py3_build
touch -r libiscsi.doxy html/*
popd
@ -161,7 +162,7 @@ popd
%install
%{__make} DESTDIR=%{?buildroot} install_programs install_doc install_etc install_libopeniscsiusr
# upstream makefile doesn't get everything the way we like it
#rm $RPM_BUILD_ROOT%{_sbindir}/iscsi_discovery
#rm $RPM_BUILD_ROOT%%{_sbindir}/iscsi_discovery
rm $RPM_BUILD_ROOT%{_mandir}/man8/iscsi_discovery.8
rm $RPM_BUILD_ROOT%{_mandir}/man8/iscsi_fw_login.8
%{__install} -pm 755 usr/iscsistart $RPM_BUILD_ROOT%{_sbindir}
@ -179,12 +180,13 @@ rm $RPM_BUILD_ROOT%{_mandir}/man8/iscsi_fw_login.8
%{__install} -d $RPM_BUILD_ROOT%{_sharedstatedir}/iscsi/ifaces
# for %%ghost
%{__install} -d $RPM_BUILD_ROOT/var/lock/iscsi
touch $RPM_BUILD_ROOT/var/lock/iscsi/lock
%{__install} -d $RPM_BUILD_ROOT%{_rundir}/lock/iscsi
touch $RPM_BUILD_ROOT%{_rundir}/lock/iscsi/lock
%{__install} -d $RPM_BUILD_ROOT%{_unitdir}
%{__install} -pm 644 etc/systemd/iscsi.service $RPM_BUILD_ROOT%{_unitdir}
# %%{__install} -pm 644 etc/systemd/iscsi-init.service $RPM_BUILD_ROOT%%{_unitdir}
%{__install} -pm 644 etc/systemd/iscsi-onboot.service $RPM_BUILD_ROOT%{_unitdir}
%{__install} -pm 644 etc/systemd/iscsi-shutdown.service $RPM_BUILD_ROOT%{_unitdir}
%{__install} -pm 644 etc/systemd/iscsid.service $RPM_BUILD_ROOT%{_unitdir}
@ -195,8 +197,8 @@ touch $RPM_BUILD_ROOT/var/lock/iscsi/lock
%{__install} -d $RPM_BUILD_ROOT%{_libexecdir}
%{__install} -pm 755 etc/systemd/iscsi-mark-root-nodes $RPM_BUILD_ROOT%{_libexecdir}
%{__install} -d $RPM_BUILD_ROOT%{_sysconfdir}/NetworkManager/dispatcher.d
%{__install} -pm 755 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/NetworkManager/dispatcher.d
%{__install} -d $RPM_BUILD_ROOT%{_prefix}/lib/NetworkManager/dispatcher.d
%{__install} -pm 755 %{SOURCE4} $RPM_BUILD_ROOT%{_prefix}/lib/NetworkManager/dispatcher.d
%{__install} -d $RPM_BUILD_ROOT%{_tmpfilesdir}
%{__install} -pm 644 %{SOURCE5} $RPM_BUILD_ROOT%{_tmpfilesdir}/iscsi.conf
@ -209,12 +211,14 @@ touch $RPM_BUILD_ROOT/var/lock/iscsi/lock
%if %{with python2}
%{__install} -d $RPM_BUILD_ROOT%{python2_sitearch}
%endif # with python2
%endif
# ended with python2
%{__install} -d $RPM_BUILD_ROOT%{python3_sitearch}
pushd libiscsi
%if %{with python2}
%py2_install
%endif # with python2
%endif
# ended with python2
%py3_install
popd
@ -294,15 +298,15 @@ fi
%dir %{_sharedstatedir}/iscsi/slp
%dir %{_sharedstatedir}/iscsi/ifaces
%dir %{_sharedstatedir}/iscsi/send_targets
%ghost %{_var}/lock/iscsi
%ghost %{_var}/lock/iscsi/lock
%ghost %{_rundir}/lock/iscsi
%{_unitdir}/iscsi.service
%{_unitdir}/iscsi-onboot.service
# %%{_unitdir}/iscsi-init.service
%{_unitdir}/iscsi-shutdown.service
%{_unitdir}/iscsid.service
%{_unitdir}/iscsid.socket
%{_libexecdir}/iscsi-mark-root-nodes
%{_sysconfdir}/NetworkManager/dispatcher.d/04-iscsi
%{_prefix}/lib/NetworkManager
%{_tmpfilesdir}/iscsi.conf
%dir %{_sysconfdir}/iscsi
%attr(0600,root,root) %config(noreplace) %{_sysconfdir}/iscsi/iscsid.conf
@ -321,19 +325,20 @@ fi
%exclude %{_includedir}/libopeniscsiusr.h
%exclude %{_includedir}/libopeniscsiusr_common.h
%exclude %{_includedir}/libopeniscsiusr_iface.h
%exclude %{_includedir}/libopeniscsiusr_node.h
%exclude %{_includedir}/libopeniscsiusr_session.h
%exclude %{_libdir}/pkgconfig/libopeniscsiusr.pc
# %files -n libopeniscsiusr
# %{_libdir}/libopeniscsiusr.so.*
# %%files -n libopeniscsiusr
# %%{_libdir}/libopeniscsiusr.so.*
#
# %files -n libopeniscsiusr-devel
# %{_libdir}/libopeniscsiusr.so
# %{_includedir}/libopeniscsiusr.h
# %{_includedir}/libopeniscsiusr_common.h
# %{_includedir}/libopeniscsiusr_iface.h
# %{_includedir}/libopeniscsiusr_session.h
# %{_libdir}/pkgconfig/libopeniscsiusr.pc
# %%files -n libopeniscsiusr-devel
# %%{_libdir}/libopeniscsiusr.so
# %%{_includedir}/libopeniscsiusr.h
# %%{_includedir}/libopeniscsiusr_common.h
# %%{_includedir}/libopeniscsiusr_iface.h
# %%{_includedir}/libopeniscsiusr_session.h
# %%{_libdir}/pkgconfig/libopeniscsiusr.pc
%files iscsiuio
%{_sbindir}/iscsiuio
@ -350,12 +355,18 @@ fi
%if %{with python2}
%files -n python2-%{name}
%{python2_sitearch}/*
%endif # with python2
%endif
# ended with python2
%files -n python3-%{name}
%{python3_sitearch}/*
%changelog
* Thu Aug 20 2020 Chris Leech - 6.2.0.878-5.gitd791ce0
- 1849931, 1869438 go back to MD5 CHAP only by default
new CHAP modes can cause issue with some targets,
so SHA1/SHA256/SHA3-256 modes must be configured to enable now
* Tue Mar 24 2020 Chris Leech <cleech@redhat.com> - 6.2.0.878-3.gitd791ce0
- 1801577 new service file not enabled on upgrade, spec change to use triggers for that