summaryrefslogtreecommitdiff
path: root/usr/fwparam_ibft/iscsi_obp.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/fwparam_ibft/iscsi_obp.h')
-rw-r--r--usr/fwparam_ibft/iscsi_obp.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/usr/fwparam_ibft/iscsi_obp.h b/usr/fwparam_ibft/iscsi_obp.h
new file mode 100644
index 0000000..8580052
--- /dev/null
+++ b/usr/fwparam_ibft/iscsi_obp.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) IBM Corporation. 2007
+ * Author: Doug Maxey <dwm@austin.ibm.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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ISCSI_OBP_H_
+#define ISCSI_OBP_H_
+
+enum ofw_dev_type {
+ OFW_DT_NONE,
+ OFW_DT_BLOCK,
+ OFW_DT_NETWORK,
+ OFW_DT_ISCSI,
+};
+
+enum obp_tftp_qual {
+ OBP_QUAL_NONE,
+ OBP_QUAL_BOOTP,
+ OBP_QUAL_DHCPV6,
+ OBP_QUAL_IPV6,
+ OBP_QUAL_ISCSI,
+ OBP_QUAL_PING,
+ OBP_QUAL_COUNT, /* Numnber of defined OBP qualifiers */
+};
+
+enum obp_param {
+ /*
+ * Defined iscsi boot parameters.
+ */
+ OBP_PARAM_NONE,
+ OBP_PARAM_BLKSIZE, /* default is 512 */
+ OBP_PARAM_BOOTP_RETRIES, /* default 5 */
+ OBP_PARAM_CHAPID, /* target chap id */
+ OBP_PARAM_CHAPPW, /* target chap password */
+ OBP_PARAM_CIADDR, /* client (my) ip addr */
+ OBP_PARAM_DHCP, /* dhcp server address */
+ OBP_PARAM_FILENAME, /* boot filename */
+ OBP_PARAM_GIADDR, /* gateway addr */
+ OBP_PARAM_ICHAPID, /* initiator chapid */
+ OBP_PARAM_ICHAPPW, /* initiator chap password */
+ OBP_PARAM_ILUN, /* misnomer, really the target lun */
+ OBP_PARAM_INAME, /* NB: target iqn */
+ OBP_PARAM_IPORT, /* initiator port, defaults to 3260 */
+ OBP_PARAM_ISID, /* session id */
+ OBP_PARAM_ISNS, /* sns server address */
+ OBP_PARAM_ITNAME, /* NB: Initiator iqn */
+ OBP_PARAM_SIADDR, /* iscsi server ip address. */
+ OBP_PARAM_SLP, /* slp server address */
+ OBP_PARAM_SUBNET_MASK,
+ OBP_PARAM_TFTP_RETRIES, /* default 5 */
+ OBP_PARAM_TIMEOUT, /* ping timeout period. */
+
+ OBP_PARAM_COUNT, /* number of defined OBP_PARAMs */
+};
+
+struct ofw_obp_param {
+ unsigned char len; /* length of value string. */
+ char val[1]; /* string value from the property */
+};
+
+struct ofw_dev {
+ char *prop_path; /* where we found these properties. */
+ enum ofw_dev_type type; /* known type of boot device. */
+ int qual_count; /* count of qualifiers. */
+ enum obp_tftp_qual quals[OBP_QUAL_COUNT];
+ struct ofw_obp_param *param[OBP_PARAM_COUNT];
+ int cfg_part; /* boot partition number. */
+ char *dev_path; /* path to this ofw device. */
+ unsigned char mac[6]; /* The binary mac address. */
+};
+
+const char *obp_qual_set(struct ofw_dev *ofwdev, const char *qual);
+void add_obp_parm(struct ofw_dev *ofwdev, enum obp_param parm, const char *str);
+void obp_parm_addr(struct ofw_dev *ofwdev, const char *parm, const char *addr);
+void obp_parm_iqn(struct ofw_dev *ofwdev, const char *parm, const char *iqn);
+void obp_parm_hexnum(struct ofw_dev *ofwdev, const char *parm,
+ const char *numstr);
+void obp_parm_str(struct ofw_dev *ofwdev, const char *parm, const char *str);
+
+#endif /* ISCSI_OBP_H_ */