1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 #ifndef _BOOTPROPS_H 27 #define _BOOTPROPS_H 28 29 #include <sys/types.h> 30 #include <netinet/in.h> 31 #include <sys/t_kuser.h> 32 33 #ifdef __cplusplus 34 extern "C" { 35 #endif 36 37 /* 38 * Boot properties related to netboot: 39 */ 40 #define BP_HOST_IP "host-ip" 41 #define BP_SUBNET_MASK "subnet-mask" 42 #define BP_ROUTER_IP "router-ip" 43 #define BP_BOOT_MAC "boot-mac" 44 #define BP_SERVER_IP "server-ip" 45 #define BP_SERVER_NAME "server-name" 46 #define BP_SERVER_PATH "server-path" 47 #define BP_SERVER_ROOTOPTS "server-rootopts" 48 #define BP_BOOTP_RESPONSE "bootp-response" 49 50 /* 51 * Boot properties related to iscsiboot: 52 */ 53 #define BP_NETWORK_INTERFACE "network-interface" 54 #define BP_ISCSI_TARGET_NAME "iscsi-target-name" 55 #define BP_ISCSI_TARGET_IP "iscsi-target-ip" 56 #define BP_ISCSI_INITIATOR_ID "iscsi-initiator-id" 57 #define BP_ISCSI_PORT "iscsi-port" 58 #define BP_ISCSI_TPGT "iscsi-tpgt" 59 #define BP_ISCSI_LUN "iscsi-lun" 60 #define BP_ISCSI_PAR "iscsi-partition" 61 #define BP_ISCSI_NETWORK_BOOTPATH "iscsi-network-bootpath" 62 #define BP_ISCSI_DISK "/iscsi-hba/disk" 63 #define BP_BOOTPATH "bootpath" 64 #define BP_CHAP_USER "chap-user" 65 #define BP_CHAP_PASSWORD "chap-password" 66 #define BP_LOCAL_MAC_ADDRESS "local-mac-address" 67 68 /* 69 * kifconf prototypes 70 */ 71 int 72 kdlifconfig(TIUSER *tiptr, int af, void *myIPaddr, void *mymask, 73 struct in_addr *mybraddr, struct in_addr *gateway, char *ifname); 74 int 75 ksetifflags(TIUSER *tiptr, uint_t value, char *ifname); 76 int 77 kifioctl(TIUSER *tiptr, int cmd, struct netbuf *nbuf, char *ifname); 78 79 /* 80 * Boot properties related to iscsi boot: 81 */ 82 #define IB_BOOT_MACLEN 6 83 #define IB_IP_BUFLEN 16 84 85 /* 86 * iSCSI boot initiator's properties 87 */ 88 typedef struct _ib_ini_prop { 89 uchar_t *ini_name; 90 size_t ini_name_len; 91 uchar_t *ini_chap_name; 92 size_t ini_chap_name_len; 93 uchar_t *ini_chap_sec; 94 size_t ini_chap_sec_len; 95 } ib_ini_prop_t; 96 97 /* 98 * iSCSI boot nic's properties 99 */ 100 typedef struct _ib_nic_prop { 101 uchar_t nic_mac[6]; 102 uchar_t nic_vlan[2]; 103 union { 104 struct in_addr u_in4; 105 struct in6_addr u_in6; 106 } nic_ip_u; 107 union { 108 struct in_addr u_in4; 109 struct in6_addr u_in6; 110 } nic_gw_u; 111 union { 112 struct in_addr u_in4; 113 struct in6_addr u_in6; 114 } nic_dhcp_u; 115 int sin_family; 116 uchar_t sub_mask_prefix; 117 118 } ib_nic_prop_t; 119 120 /* 121 * iSCSI boot target's properties 122 */ 123 typedef struct _ib_tgt_prop { 124 union { 125 struct in_addr u_in4; 126 struct in6_addr u_in6; 127 }tgt_ip_u; 128 int sin_family; 129 uint32_t tgt_port; 130 uchar_t tgt_boot_lun[8]; 131 uchar_t *tgt_name; 132 size_t tgt_name_len; 133 uchar_t *tgt_chap_name; 134 size_t tgt_chap_name_len; 135 uchar_t *tgt_chap_sec; 136 size_t tgt_chap_sec_len; 137 int lun_online; 138 uchar_t *tgt_boot_par; 139 size_t tgt_boot_par_len; 140 uint16_t tgt_tpgt; 141 } ib_tgt_prop_t; 142 143 /* 144 * iSCSI boot properties 145 */ 146 typedef struct _ib_boot_prop { 147 ib_ini_prop_t boot_init; 148 ib_nic_prop_t boot_nic; 149 ib_tgt_prop_t boot_tgt; 150 } ib_boot_prop_t; 151 152 void 153 ld_ib_prop(); 154 155 void 156 iscsi_boot_prop_free(); 157 158 void 159 get_iscsi_bootpath_vhci(char *bootpath); 160 161 void 162 get_iscsi_bootpath_phy(char *bootpath); 163 164 #ifdef __cplusplus 165 } 166 #endif 167 168 #endif /* _BOOTPROPS_H */ 169