mchristi eaa2605
From e35bdee97477e65866b2c110f0e4b1affe4e983d Mon Sep 17 00:00:00 2001
mchristi eaa2605
From: Harish Zunjarrao <harish.zunjarrao@qlogic.com> 
mchristi eaa2605
Date: Wed, 12 Oct 2011 19:12:03 +0530
mchristi eaa2605
Subject: [PATCH 1/2] iscsi tools: Add Netconfig support through libiscsi
mchristi eaa2605
mchristi eaa2605
Signed-off-by: Harish Zunjarrao <harish.zunjarrao@qlogic.com>
mchristi eaa2605
Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
mchristi eaa2605
---
mchristi eaa2605
 libiscsi/libiscsi.c |   25 +++++++++++++++++++++++++
mchristi eaa2605
 libiscsi/libiscsi.h |   16 ++++++++++++++++
mchristi eaa2605
 2 files changed, 41 insertions(+), 0 deletions(-)
mchristi eaa2605
mchristi eaa2605
diff --git a/libiscsi/libiscsi.c b/libiscsi/libiscsi.c
mchristi eaa2605
index 42f2e3b..dc63fcd 100644
mchristi eaa2605
--- a/libiscsi/libiscsi.c
mchristi eaa2605
+++ b/libiscsi/libiscsi.c
mchristi eaa2605
@@ -38,9 +38,13 @@
mchristi eaa2605
 #include "fw_context.h"
mchristi eaa2605
 #include "iscsid_req.h"
mchristi eaa2605
 #include "iscsi_err.h"
mchristi eaa2605
+#include "iscsi_ipc.h"
mchristi eaa2605
+#include "transport.h"
mchristi eaa2605
 
mchristi eaa2605
 #define CHECK(a) { context->error_str[0] = 0; rc = a; if (rc) goto leave; }
mchristi eaa2605
 
mchristi eaa2605
+extern struct iscsi_ipc *ipc;
mchristi eaa2605
+
mchristi eaa2605
 /* UGLY, not thread safe :( */
mchristi eaa2605
 static int sysfs_initialized = 0;
mchristi eaa2605
 
mchristi eaa2605
@@ -610,3 +614,24 @@ int libiscsi_get_firmware_initiator_name(char *initiatorname)
mchristi eaa2605
 
mchristi eaa2605
 	return 0;
mchristi eaa2605
 }
mchristi eaa2605
+
mchristi eaa2605
+int libiscsi_set_netconfig(struct libiscsi_context *context,
mchristi eaa2605
+			   uint32_t host_no, char *transport_name,
mchristi eaa2605
+			    struct iovec *iovs, int param_count)
mchristi eaa2605
+{
mchristi eaa2605
+	struct iscsi_transport *t = NULL;
mchristi eaa2605
+	int fd;
mchristi eaa2605
+	int rc = 1;
mchristi eaa2605
+
mchristi eaa2605
+	t = iscsi_sysfs_get_transport_by_name(transport_name);
mchristi eaa2605
+	if (!t)
mchristi eaa2605
+		return ENODEV;
mchristi eaa2605
+
mchristi eaa2605
+	fd = ipc->ctldev_open();
mchristi eaa2605
+	if (fd < 0)
mchristi eaa2605
+		return ENODEV;
mchristi eaa2605
+
mchristi eaa2605
+	rc = ipc->set_net_config(t->handle, host_no, iovs, param_count);
mchristi eaa2605
+	ipc->ctldev_close();
mchristi eaa2605
+	return rc;
mchristi eaa2605
+}
mchristi eaa2605
diff --git a/libiscsi/libiscsi.h b/libiscsi/libiscsi.h
mchristi eaa2605
index 756590e..61ce0ea 100644
mchristi eaa2605
--- a/libiscsi/libiscsi.h
mchristi eaa2605
+++ b/libiscsi/libiscsi.h
mchristi eaa2605
@@ -335,6 +335,22 @@ PUBLIC int libiscsi_get_firmware_network_config(
mchristi eaa2605
  */
mchristi eaa2605
 PUBLIC int libiscsi_get_firmware_initiator_name(char *initiatorname);
mchristi eaa2605
 
mchristi eaa2605
+/** \brief Set Network Configuration Settings
mchristi eaa2605
+ *
mchristi eaa2605
+ * Set Network Configuration Settings
mchristi eaa2605
+ *
mchristi eaa2605
+ * \param context              libiscsi context to operate on.
mchristi eaa2605
+ * \param host_no              Host number of the port.
mchristi eaa2605
+ * \param transport_name       Transport Class Name.
mchristi eaa2605
+ * \param iovs                 Pointer to IO Vectors of Netconfig paramaters.
mchristi eaa2605
+ * \param param_count          Number to IO Vectors.
mchristi eaa2605
+ *
mchristi eaa2605
+ * \return              0 on success, ENODEV when set netconfig failed.
mchristi eaa2605
+ */
mchristi eaa2605
+PUBLIC int libiscsi_set_netconfig(struct libiscsi_context *context,
mchristi eaa2605
+				  uint32_t host_no, char *transport_name,
mchristi eaa2605
+				  struct iovec *iovs, int param_count);
mchristi eaa2605
+
mchristi eaa2605
 #undef PUBLIC
mchristi eaa2605
 
mchristi eaa2605
 #ifdef __cplusplus
mchristi eaa2605
-- 
mchristi eaa2605
1.7.1
mchristi eaa2605