summaryrefslogtreecommitdiff
path: root/extras/multipath-tools/multipath/main.h
diff options
context:
space:
mode:
Diffstat (limited to 'extras/multipath-tools/multipath/main.h')
-rw-r--r--extras/multipath-tools/multipath/main.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/extras/multipath-tools/multipath/main.h b/extras/multipath-tools/multipath/main.h
new file mode 100644
index 0000000000..ada7a7394b
--- /dev/null
+++ b/extras/multipath-tools/multipath/main.h
@@ -0,0 +1,131 @@
+/*
+ * Soft: Description here...
+ *
+ * Version: $Id: main.h,v 0.0.1 2003/09/18 15:13:38 cvaroqui Exp $
+ *
+ * Author: Copyright (C) 2003 Christophe Varoqui
+ *
+ * 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.
+ *
+ * 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.
+ */
+
+#ifndef _MAIN_H
+#define _MAIN_H
+
+/* local includes */
+#include "sg_include.h"
+
+/* exerpt from "sg_err.h" */
+#define SCSI_CHECK_CONDITION 0x2
+#define SCSI_COMMAND_TERMINATED 0x22
+#define SG_ERR_DRIVER_SENSE 0x08
+
+/* exerpt from "scsi.h" */
+#define SCSI_IOCTL_GET_IDLUN 0x5382
+#define SCSI_IOCTL_GET_BUS_NUMBER 0x5386
+
+/* global defs */
+#define WWID_SIZE 33
+#define SERIAL_SIZE 14
+#define MAX_DEVS 128
+#define MAX_MP MAX_DEVS / 2
+#define MAX_MP_PATHS MAX_DEVS / 4
+#define FILE_NAME_SIZE 256
+#define DEF_TIMEOUT 60000
+#define EBUFF_SZ 256
+#define TUR_CMD_LEN 6
+#define DM_TARGET "multipath"
+#define PIDFILE "/var/run/multipathd.pid"
+#define RUN "/var/run/multipath.run"
+#define MAXTRY 50
+
+/* Storage controlers cpabilities */
+#define FAILOVER 0
+#define MULTIBUS 1
+#define GROUP_BY_SERIAL 2
+#define GROUP_BY_TUR 4
+
+#define PINDEX(x,y) mp[(x)].pindex[(y)]
+
+/* global types */
+struct scsi_idlun {
+ int dev_id;
+ int host_unique_id;
+ int host_no;
+};
+
+struct sg_id {
+ int host_no;
+ int channel;
+ int scsi_id;
+ int lun;
+ int scsi_type;
+ short h_cmd_per_lun;
+ short d_queue_depth;
+ int unused1;
+ int unused2;
+};
+
+struct scsi_dev {
+ char dev[FILE_NAME_SIZE];
+ struct scsi_idlun scsi_id;
+ int host_no;
+};
+
+struct path {
+ char dev[FILE_NAME_SIZE];
+ char sg_dev[FILE_NAME_SIZE];
+ struct scsi_idlun scsi_id;
+ struct sg_id sg_id;
+ char wwid[WWID_SIZE];
+ char vendor_id[8];
+ char product_id[16];
+ char rev[4];
+ char serial[SERIAL_SIZE];
+ int iopolicy;
+ int tur;
+};
+
+struct multipath {
+ char wwid[WWID_SIZE];
+ int npaths;
+ long size;
+ int pindex[MAX_MP_PATHS];
+};
+
+struct env {
+ int max_devs;
+ int verbose;
+ int quiet;
+ int dry_run;
+ int iopolicy;
+ int with_sysfs;
+ int major;
+ int minor;
+ char sysfs_path[FILE_NAME_SIZE];
+ char hotplugdev[FILE_NAME_SIZE];
+};
+
+/* Build version */
+#define PROG "multipath"
+
+#define VERSION_CODE 0x000012
+#define DATE_CODE 0x021504
+
+#define MULTIPATH_VERSION(version) \
+ (version >> 16) & 0xFF, \
+ (version >> 8) & 0xFF, \
+ version & 0xFF
+
+#define VERSION_STRING PROG" v%d.%d.%d (%.2d/%.2d, 20%.2d)\n", \
+ MULTIPATH_VERSION(VERSION_CODE), \
+ MULTIPATH_VERSION(DATE_CODE)
+
+#endif