diff options
Diffstat (limited to 'usr/fwparam_ibft/iscsi_obp.h')
-rw-r--r-- | usr/fwparam_ibft/iscsi_obp.h | 93 |
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_ */ |