summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Christie <michaelc@cs.wisc.edu>2010-01-29 17:46:54 -0600
committerMike Christie <michaelc@cs.wisc.edu>2010-03-22 17:32:06 -0500
commitac9070ddffbea0e8cce6ba68f6ea1378215591ee (patch)
treee128cb07a5731c2e5c34a6edf57fab2e55bb2722
parent8c24522b2ce48136d4eac0d1137685327bd3a212 (diff)
downloadopen-iscsi-ac9070ddffbea0e8cce6ba68f6ea1378215591ee.tar.gz
iscsi tools: mv iscsid request helpers to its own file
This patch just moves the iscsid request helpers to its own file iscsid_req.c/iscsid_req.h. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
-rw-r--r--usr/Makefile2
-rw-r--r--usr/config.h1
-rw-r--r--usr/discovery.c8
-rw-r--r--usr/iscsiadm.c9
-rw-r--r--usr/iscsid.c3
-rw-r--r--usr/iscsid_req.c219
-rw-r--r--usr/iscsid_req.h37
-rw-r--r--usr/iscsistart.c5
-rw-r--r--usr/session_info.c4
-rw-r--r--usr/session_mgmt.c1
-rw-r--r--usr/util.c219
-rw-r--r--usr/util.h14
12 files changed, 295 insertions, 227 deletions
diff --git a/usr/Makefile b/usr/Makefile
index 4bde4be..f533177 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -38,7 +38,7 @@ SYSDEPS_SRCS = $(wildcard ../utils/sysdeps/*.o)
# sources shared between iscsid, iscsiadm and iscsistart
ISCSI_LIB_SRCS = util.o io.o auth.o login.o log.o md5.o sha1.o iface.o idbm.o \
sysfs.o host.o session_info.o iscsi_sysfs.o iscsi_net_util.o \
- $(SYSDEPS_SRCS)
+ iscsid_req.o $(SYSDEPS_SRCS)
# core initiator files
INITIATOR_SRCS = initiator.o scsi.o actor.o event_poll.o mgmt_ipc.o isns.o \
transport.o cxgb3i.o be2iscsi.o
diff --git a/usr/config.h b/usr/config.h
index 8fd1f77..2ade266 100644
--- a/usr/config.h
+++ b/usr/config.h
@@ -26,6 +26,7 @@
#include "types.h"
#include "auth.h" /* for the username and password sizes */
#include "list.h"
+#include "iscsi_proto.h"
#include "iscsi_net_util.h"
/* ISIDs now have a typed naming authority in them. We use an OUI */
diff --git a/usr/discovery.c b/usr/discovery.c
index 473b839..ccb4f13 100644
--- a/usr/discovery.c
+++ b/usr/discovery.c
@@ -39,9 +39,9 @@
#include "log.h"
#include "idbm.h"
#include "iscsi_settings.h"
-#include "util.h"
#include "sysdeps.h"
#include "fw_context.h"
+#include "iscsid_req.h"
#ifdef SLP_ENABLE
#include "iscsi-slp-discovery.h"
@@ -129,7 +129,7 @@ int discovery_offload_sendtargets(int host_no, int do_login,
* and get back the results. We should do this since it would
* allows us to then process the results like software iscsi.
*/
- rc = do_iscsid(&req, &rsp, 1);
+ rc = iscsid_exec_req(&req, &rsp, 1);
if (rc) {
log_error("Could not offload sendtargets to %s.\n",
drec->address);
@@ -563,7 +563,7 @@ static int request_initiator_name(void)
memset(&req, 0, sizeof(req));
req.command = MGMT_IPC_CONFIG_INAME;
- rc = do_iscsid(&req, &rsp, 1);
+ rc = iscsid_exec_req(&req, &rsp, 1);
if (rc)
return EIO;
@@ -573,7 +573,7 @@ static int request_initiator_name(void)
memset(&req, 0, sizeof(req));
req.command = MGMT_IPC_CONFIG_IALIAS;
- rc = do_iscsid(&req, &rsp, 0);
+ rc = iscsid_exec_req(&req, &rsp, 0);
if (rc)
/* alias is optional so return ok */
return 0;
diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c
index 3a141f5..09b6bad 100644
--- a/usr/iscsiadm.c
+++ b/usr/iscsiadm.c
@@ -46,6 +46,7 @@
#include "sysdeps.h"
#include "idbm_fields.h"
#include "session_mgmt.h"
+#include "iscsid_req.h"
struct iscsi_ipc *ipc = NULL; /* dummy */
static char program_name[] = "iscsiadm";
@@ -203,7 +204,7 @@ static void kill_iscsid(int priority)
memset(&req, 0, sizeof(req));
req.command = MGMT_IPC_IMMEDIATE_STOP;
- rc = do_iscsid(&req, &rsp, 0);
+ rc = iscsid_exec_req(&req, &rsp, 0);
if (rc) {
iscsid_handle_error(rc);
log_error("Could not stop iscsid. Trying sending iscsid "
@@ -537,7 +538,7 @@ static char *get_config_file(void)
memset(&req, 0, sizeof(req));
req.command = MGMT_IPC_CONFIG_FILE;
- rc = do_iscsid(&req, &rsp, 1);
+ rc = iscsid_exec_req(&req, &rsp, 1);
if (rc)
return NULL;
@@ -587,7 +588,7 @@ session_stats(void *data, struct session_info *info)
req.command = MGMT_IPC_SESSION_STATS;
req.u.session.sid = info->sid;
- rc = do_iscsid(&req, &rsp, 1);
+ rc = iscsid_exec_req(&req, &rsp, 1);
if (rc)
return EIO;
@@ -1006,7 +1007,7 @@ static int isns_dev_attr_query(discovery_rec_t *drec,
memset(&req, 0, sizeof(iscsiadm_req_t));
req.command = MGMT_IPC_ISNS_DEV_ATTR_QUERY;
- err = do_iscsid(&req, &rsp, 1);
+ err = iscsid_exec_req(&req, &rsp, 1);
if (err) {
iscsid_handle_error(err);
return EIO;
diff --git a/usr/iscsid.c b/usr/iscsid.c
index c939119..29fcc9e 100644
--- a/usr/iscsid.c
+++ b/usr/iscsid.c
@@ -47,6 +47,7 @@
#include "session_info.h"
#include "sysdeps.h"
#include "discoveryd.h"
+#include "iscsid_req.h"
/* global config info */
struct iscsi_daemon_config daemon_config;
@@ -269,7 +270,7 @@ static int sync_session(void *data, struct session_info *info)
memcpy(&req.u.session.rec, &rec, sizeof(node_rec_t));
retry:
- rc = do_iscsid(&req, &rsp, 0);
+ rc = iscsid_exec_req(&req, &rsp, 0);
if (rc == MGMT_IPC_ERR_ISCSID_NOTCONN && retries < 30) {
retries++;
sleep(1);
diff --git a/usr/iscsid_req.c b/usr/iscsid_req.c
new file mode 100644
index 0000000..4f3b439
--- /dev/null
+++ b/usr/iscsid_req.c
@@ -0,0 +1,219 @@
+/*
+ * iscsid communication helpers
+ *
+ * Copyright (C) 2004 Dmitry Yusupov, Alex Aizman
+ * Copyright (C) 2006 - 2010 Mike Christie
+ * Copyright (C) 2006 - 2010 Red Hat, Inc. All rights reserved.
+ * maintained by open-iscsi@googlegroups.com
+ *
+ * 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.
+ */
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/un.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include "initiator.h"
+#include "log.h"
+#include "mgmt_ipc.h"
+#include "util.h"
+#include "config.h"
+
+static void iscsid_startup(void)
+{
+ char *startup_cmd;
+
+ startup_cmd = cfg_get_string_param(CONFIG_FILE, "iscsid.startup");
+ if (!startup_cmd) {
+ log_error("iscsid is not running. Could not start it up "
+ "automatically using the startup command in the "
+ "/etc/iscsi/iscsid.conf iscsid.startup setting. "
+ "Please check that the file exists or that your "
+ "init scripts have started iscsid.");
+ return;
+ }
+
+ system(startup_cmd);
+}
+
+#define MAXSLEEP 128
+
+static mgmt_ipc_err_e iscsid_connect(int *fd, int start_iscsid)
+{
+ int nsec;
+ struct sockaddr_un addr;
+
+ *fd = socket(AF_LOCAL, SOCK_STREAM, 0);
+ if (*fd < 0) {
+ log_error("can not create IPC socket (%d)!", errno);
+ return MGMT_IPC_ERR_ISCSID_NOTCONN;
+ }
+
+ memset(&addr, 0, sizeof(addr));
+ addr.sun_family = AF_LOCAL;
+ memcpy((char *) &addr.sun_path + 1, ISCSIADM_NAMESPACE,
+ strlen(ISCSIADM_NAMESPACE));
+ /*
+ * Trying to connect with exponential backoff
+ */
+ for (nsec = 1; nsec <= MAXSLEEP; nsec <<= 1) {
+ if (connect(*fd, (struct sockaddr *) &addr, sizeof(addr)) == 0)
+ /* Connection established */
+ return MGMT_IPC_OK;
+
+ /* If iscsid isn't there, there's no sense
+ * in retrying. */
+ if (errno == ECONNREFUSED) {
+ if (start_iscsid && nsec == 1)
+ iscsid_startup();
+ else
+ break;
+ }
+
+ /*
+ * Delay before trying again
+ */
+ if (nsec <= MAXSLEEP/2)
+ sleep(nsec);
+ }
+ log_error("can not connect to iSCSI daemon (%d)!", errno);
+ return MGMT_IPC_ERR_ISCSID_NOTCONN;
+}
+
+mgmt_ipc_err_e iscsid_request(int *fd, iscsiadm_req_t *req, int start_iscsid)
+{
+ int err;
+
+ err = iscsid_connect(fd, start_iscsid);
+ if (err)
+ return err;
+
+ if ((err = write(*fd, req, sizeof(*req))) != sizeof(*req)) {
+ log_error("got write error (%d/%d) on cmd %d, daemon died?",
+ err, errno, req->command);
+ close(*fd);
+ return MGMT_IPC_ERR_ISCSID_COMM_ERR;
+ }
+ return MGMT_IPC_OK;
+}
+
+mgmt_ipc_err_e iscsid_response(int fd, iscsiadm_cmd_e cmd, iscsiadm_rsp_t *rsp)
+{
+ mgmt_ipc_err_e iscsi_err;
+ int err;
+
+ if ((err = recv(fd, rsp, sizeof(*rsp), MSG_WAITALL)) != sizeof(*rsp)) {
+ log_error("got read error (%d/%d), daemon died?", err, errno);
+ iscsi_err = MGMT_IPC_ERR_ISCSID_COMM_ERR;
+ } else
+ iscsi_err = rsp->err;
+ close(fd);
+
+ if (!iscsi_err && cmd != rsp->command)
+ iscsi_err = MGMT_IPC_ERR_ISCSID_COMM_ERR;
+ return iscsi_err;
+}
+
+mgmt_ipc_err_e iscsid_exec_req(iscsiadm_req_t *req, iscsiadm_rsp_t *rsp,
+ int start_iscsid)
+{
+ int fd;
+ mgmt_ipc_err_e err;
+
+ err = iscsid_request(&fd, req, start_iscsid);
+ if (err)
+ return err;
+
+ return iscsid_response(fd, req->command, rsp);
+}
+
+int iscsid_req_wait(iscsiadm_cmd_e cmd, int fd)
+{
+ iscsiadm_rsp_t rsp;
+
+ memset(&rsp, 0, sizeof(iscsiadm_rsp_t));
+ return iscsid_response(fd, cmd, &rsp);
+}
+
+int iscsid_req_by_rec_async(iscsiadm_cmd_e cmd, node_rec_t *rec, int *fd)
+{
+ iscsiadm_req_t req;
+
+ memset(&req, 0, sizeof(iscsiadm_req_t));
+ req.command = cmd;
+ memcpy(&req.u.session.rec, rec, sizeof(node_rec_t));
+
+ return iscsid_request(fd, &req, 1);
+}
+
+int iscsid_req_by_rec(iscsiadm_cmd_e cmd, node_rec_t *rec)
+{
+ int err, fd;
+
+ err = iscsid_req_by_rec_async(cmd, rec, &fd);
+ if (err)
+ return err;
+ return iscsid_req_wait(cmd, fd);
+}
+
+int iscsid_req_by_sid_async(iscsiadm_cmd_e cmd, int sid, int *fd)
+{
+ iscsiadm_req_t req;
+
+ memset(&req, 0, sizeof(iscsiadm_req_t));
+ req.command = cmd;
+ req.u.session.sid = sid;
+
+ return iscsid_request(fd, &req, 1);
+}
+
+int iscsid_req_by_sid(iscsiadm_cmd_e cmd, int sid)
+{
+ int err, fd;
+
+ err = iscsid_req_by_sid_async(cmd, sid, &fd);
+ if (err)
+ return err;
+ return iscsid_req_wait(cmd, fd);
+}
+
+void iscsid_handle_error(mgmt_ipc_err_e err)
+{
+ static char *err_msgs[] = {
+ /* 0 */ "",
+ /* 1 */ "unknown error",
+ /* 2 */ "not found",
+ /* 3 */ "no available memory",
+ /* 4 */ "encountered connection failure",
+ /* 5 */ "encountered iSCSI login failure",
+ /* 6 */ "encountered iSCSI database failure",
+ /* 7 */ "invalid parameter",
+ /* 8 */ "connection timed out",
+ /* 9 */ "internal error",
+ /* 10 */ "encountered iSCSI logout failure",
+ /* 11 */ "iSCSI PDU timed out",
+ /* 12 */ "iSCSI driver not found. Please make sure it is loaded, and retry the operation",
+ /* 13 */ "daemon access denied",
+ /* 14 */ "iSCSI driver does not support requested capability.",
+ /* 15 */ "already exists",
+ /* 16 */ "Unknown request",
+ /* 17 */ "encountered iSNS failure",
+ /* 18 */ "could not communicate to iscsid",
+ /* 19 */ "encountered non-retryable iSCSI login failure",
+ /* 20 */ "could not connect to iscsid",
+ };
+ log_error("initiator reported error (%d - %s)", err, err_msgs[err]);
+}
diff --git a/usr/iscsid_req.h b/usr/iscsid_req.h
new file mode 100644
index 0000000..3bba2f4
--- /dev/null
+++ b/usr/iscsid_req.h
@@ -0,0 +1,37 @@
+/*
+ * iscsid communication helpers
+ *
+ * Copyright (C) 2010 Mike Christie
+ * Copyright (C) 2010 Red Hat, Inc. All rights reserved.
+ * maintained by open-iscsi@googlegroups.com
+ *
+ * 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.
+ */
+
+#ifndef ISCSID_REQ_H_
+#define ISCSID_REQ_H
+
+struct iscsiadm_req;
+struct iscsiadm_rsp;
+struct node_rec;
+
+extern int iscsid_exec_req(struct iscsiadm_req *req, struct iscsiadm_rsp *rsp,
+ int iscsid_start);
+extern void iscsid_handle_error(int err);
+extern int iscsid_req_wait(int cmd, int fd);
+extern int iscsid_req_by_rec_async(int cmd, struct node_rec *rec, int *fd);
+extern int iscsid_req_by_rec(int cmd, struct node_rec *rec);
+extern int iscsid_req_by_sid_async(int cmd, int sid, int *fd);
+extern int iscsid_req_by_sid(int cmd, int sid);
+
+#endif
diff --git a/usr/iscsistart.c b/usr/iscsistart.c
index 2080066..63d3e5f 100644
--- a/usr/iscsistart.c
+++ b/usr/iscsistart.c
@@ -46,6 +46,7 @@
#include "fw_context.h"
#include "iface.h"
#include "sysdeps.h"
+#include "iscsid_req.h"
/* global config info */
/* initiator needs initiator name/alias */
@@ -118,7 +119,7 @@ static int stop_event_loop(void)
memset(&req, 0, sizeof(req));
req.command = MGMT_IPC_IMMEDIATE_STOP;
- rc = do_iscsid(&req, &rsp, 0);
+ rc = iscsid_exec_req(&req, &rsp, 0);
if (rc) {
iscsid_handle_error(rc);
log_error("Could not stop event_loop\n");
@@ -149,7 +150,7 @@ static int login_session(struct node_rec *rec)
memcpy(&req.u.session.rec, rec, sizeof(*rec));
retry:
- rc = do_iscsid(&req, &rsp, 0);
+ rc = iscsid_exec_req(&req, &rsp, 0);
/*
* handle race where iscsid proc is starting up while we are
* trying to connect.
diff --git a/usr/session_info.c b/usr/session_info.c
index 1124a06..cecd8e8 100644
--- a/usr/session_info.c
+++ b/usr/session_info.c
@@ -3,7 +3,6 @@
#include <errno.h>
#include "list.h"
-#include "util.h"
#include "log.h"
#include "iscsi_sysfs.h"
#include "version.h"
@@ -13,6 +12,7 @@
#include "transport.h"
#include "initiator.h"
#include "iface.h"
+#include "iscsid_req.h"
int session_info_create_list(void *data, struct session_info *info)
{
@@ -107,7 +107,7 @@ static int print_iscsi_state(int sid, char *prefix)
req.command = MGMT_IPC_SESSION_INFO;
req.u.session.sid = sid;
- err = do_iscsid(&req, &rsp, 1);
+ err = iscsid_exec_req(&req, &rsp, 1);
/*
* for drivers like qla4xxx, iscsid does not display
* anything here since it does not know about it.
diff --git a/usr/session_mgmt.c b/usr/session_mgmt.c
index 547e7eb..2ff974e 100644
--- a/usr/session_mgmt.c
+++ b/usr/session_mgmt.c
@@ -30,6 +30,7 @@
#include "session_info.h"
#include "iscsi_sysfs.h"
#include "log.h"
+#include "iscsid_req.h"
static void log_login_msg(struct node_rec *rec, int rc)
{
diff --git a/usr/util.c b/usr/util.c
index b472383..552845b 100644
--- a/usr/util.c
+++ b/usr/util.c
@@ -1,3 +1,23 @@
+/*
+ * Misc helpers
+ *
+ * Copyright (C) 2004 Dmitry Yusupov, Alex Aizman
+ * Copyright (C) 2006 - 2010 Mike Christie
+ * Copyright (C) 2006 - 2010 Red Hat, Inc. All rights reserved.
+ * maintained by open-iscsi@googlegroups.com
+ *
+ * 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.
+ */
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
@@ -5,22 +25,10 @@
#include <string.h>
#include <errno.h>
#include <ctype.h>
-#include <sys/un.h>
-#include <sys/time.h>
#include <sys/resource.h>
#include "log.h"
-#include "actor.h"
-#include "iscsi_ipc.h"
-#include "mgmt_ipc.h"
-#include "config.h"
-#include "initiator.h"
-#include "version.h"
#include "iscsi_settings.h"
-#include "iscsi_sysfs.h"
-#include "iscsi_proto.h"
-#include "transport.h"
-#include "idbm.h"
#include "iface.h"
#include "session_info.h"
@@ -210,193 +218,6 @@ char *cfg_get_string_param(char *pathname, const char *key)
return value;
}
-/* TODO: move iscsid client helpers to file */
-static void iscsid_startup(void)
-{
- char *startup_cmd;
-
- startup_cmd = cfg_get_string_param(CONFIG_FILE, "iscsid.startup");
- if (!startup_cmd) {
- log_error("iscsid is not running. Could not start it up "
- "automatically using the startup command in the "
- "/etc/iscsi/iscsid.conf iscsid.startup setting. "
- "Please check that the file exists or that your "
- "init scripts have started iscsid.");
- return;
- }
-
- system(startup_cmd);
-}
-
-#define MAXSLEEP 128
-
-static mgmt_ipc_err_e iscsid_connect(int *fd, int start_iscsid)
-{
- int nsec;
- struct sockaddr_un addr;
-
- *fd = socket(AF_LOCAL, SOCK_STREAM, 0);
- if (*fd < 0) {
- log_error("can not create IPC socket (%d)!", errno);
- return MGMT_IPC_ERR_ISCSID_NOTCONN;
- }
-
- memset(&addr, 0, sizeof(addr));
- addr.sun_family = AF_LOCAL;
- memcpy((char *) &addr.sun_path + 1, ISCSIADM_NAMESPACE,
- strlen(ISCSIADM_NAMESPACE));
- /*
- * Trying to connect with exponential backoff
- */
- for (nsec = 1; nsec <= MAXSLEEP; nsec <<= 1) {
- if (connect(*fd, (struct sockaddr *) &addr, sizeof(addr)) == 0)
- /* Connection established */
- return MGMT_IPC_OK;
-
- /* If iscsid isn't there, there's no sense
- * in retrying. */
- if (errno == ECONNREFUSED) {
- if (start_iscsid && nsec == 1)
- iscsid_startup();
- else
- break;
- }
-
- /*
- * Delay before trying again
- */
- if (nsec <= MAXSLEEP/2)
- sleep(nsec);
- }
- log_error("can not connect to iSCSI daemon (%d)!", errno);
- return MGMT_IPC_ERR_ISCSID_NOTCONN;
-}
-
-mgmt_ipc_err_e iscsid_request(int *fd, iscsiadm_req_t *req, int start_iscsid)
-{
- int err;
-
- err = iscsid_connect(fd, start_iscsid);
- if (err)
- return err;
-
- if ((err = write(*fd, req, sizeof(*req))) != sizeof(*req)) {
- log_error("got write error (%d/%d) on cmd %d, daemon died?",
- err, errno, req->command);
- close(*fd);
- return MGMT_IPC_ERR_ISCSID_COMM_ERR;
- }
- return MGMT_IPC_OK;
-}
-
-mgmt_ipc_err_e iscsid_response(int fd, iscsiadm_cmd_e cmd, iscsiadm_rsp_t *rsp)
-{
- mgmt_ipc_err_e iscsi_err;
- int err;
-
- if ((err = recv(fd, rsp, sizeof(*rsp), MSG_WAITALL)) != sizeof(*rsp)) {
- log_error("got read error (%d/%d), daemon died?", err, errno);
- iscsi_err = MGMT_IPC_ERR_ISCSID_COMM_ERR;
- } else
- iscsi_err = rsp->err;
- close(fd);
-
- if (!iscsi_err && cmd != rsp->command)
- iscsi_err = MGMT_IPC_ERR_ISCSID_COMM_ERR;
- return iscsi_err;
-}
-
-mgmt_ipc_err_e do_iscsid(iscsiadm_req_t *req, iscsiadm_rsp_t *rsp,
- int start_iscsid)
-{
- int fd;
- mgmt_ipc_err_e err;
-
- err = iscsid_request(&fd, req, start_iscsid);
- if (err)
- return err;
-
- return iscsid_response(fd, req->command, rsp);
-}
-
-int iscsid_req_wait(iscsiadm_cmd_e cmd, int fd)
-{
- iscsiadm_rsp_t rsp;
-
- memset(&rsp, 0, sizeof(iscsiadm_rsp_t));
- return iscsid_response(fd, cmd, &rsp);
-}
-
-int iscsid_req_by_rec_async(iscsiadm_cmd_e cmd, node_rec_t *rec, int *fd)
-{
- iscsiadm_req_t req;
-
- memset(&req, 0, sizeof(iscsiadm_req_t));
- req.command = cmd;
- memcpy(&req.u.session.rec, rec, sizeof(node_rec_t));
-
- return iscsid_request(fd, &req, 1);
-}
-
-int iscsid_req_by_rec(iscsiadm_cmd_e cmd, node_rec_t *rec)
-{
- int err, fd;
-
- err = iscsid_req_by_rec_async(cmd, rec, &fd);
- if (err)
- return err;
- return iscsid_req_wait(cmd, fd);
-}
-
-int iscsid_req_by_sid_async(iscsiadm_cmd_e cmd, int sid, int *fd)
-{
- iscsiadm_req_t req;
-
- memset(&req, 0, sizeof(iscsiadm_req_t));
- req.command = cmd;
- req.u.session.sid = sid;
-
- return iscsid_request(fd, &req, 1);
-}
-
-int iscsid_req_by_sid(iscsiadm_cmd_e cmd, int sid)
-{
- int err, fd;
-
- err = iscsid_req_by_sid_async(cmd, sid, &fd);
- if (err)
- return err;
- return iscsid_req_wait(cmd, fd);
-}
-
-void iscsid_handle_error(mgmt_ipc_err_e err)
-{
- static char *err_msgs[] = {
- /* 0 */ "",
- /* 1 */ "unknown error",
- /* 2 */ "not found",
- /* 3 */ "no available memory",
- /* 4 */ "encountered connection failure",
- /* 5 */ "encountered iSCSI login failure",
- /* 6 */ "encountered iSCSI database failure",
- /* 7 */ "invalid parameter",
- /* 8 */ "connection timed out",
- /* 9 */ "internal error",
- /* 10 */ "encountered iSCSI logout failure",
- /* 11 */ "iSCSI PDU timed out",
- /* 12 */ "iSCSI driver not found. Please make sure it is loaded, and retry the operation",
- /* 13 */ "daemon access denied",
- /* 14 */ "iSCSI driver does not support requested capability.",
- /* 15 */ "already exists",
- /* 16 */ "Unknown request",
- /* 17 */ "encountered iSNS failure",
- /* 18 */ "could not communicate to iscsid",
- /* 19 */ "encountered non-retryable iSCSI login failure",
- /* 20 */ "could not connect to iscsid",
- };
- log_error("initiator reported error (%d - %s)", err, err_msgs[err]);
-}
-
int __iscsi_match_session(node_rec_t *rec, char *targetname,
char *address, int port, struct iface_rec *iface)
{
diff --git a/usr/util.h b/usr/util.h
index 96b9e26..87b2bb2 100644
--- a/usr/util.h
+++ b/usr/util.h
@@ -3,8 +3,6 @@
#include <stdint.h>
-struct iscsiadm_req;
-struct iscsiadm_rsp;
struct node_rec;
struct iface_rec;
struct session_info;
@@ -13,18 +11,6 @@ extern int oom_adjust(void);
extern void daemon_init(void);
extern int increase_max_files(void);
-extern int do_iscsid(struct iscsiadm_req *req, struct iscsiadm_rsp *rsp,
- int iscsid_start);
-extern void iscsid_handle_error(int err);
-extern int iscsid_request(int *fd, struct iscsiadm_req *req,
- int iscsid_start);
-extern int iscsid_response(int fd, int cmd, struct iscsiadm_rsp *rsp);
-extern int iscsid_req_wait(int cmd, int fd);
-extern int iscsid_req_by_rec_async(int cmd, struct node_rec *rec, int *fd);
-extern int iscsid_req_by_rec(int cmd, struct node_rec *rec);
-extern int iscsid_req_by_sid_async(int cmd, int sid, int *fd);
-extern int iscsid_req_by_sid(int cmd, int sid);
-
extern char *str_to_ipport(char *str, int *port, int *tgpt);
extern int iscsi_match_session(void *data, struct session_info *info);