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 34extern "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 */ 71int 72kdlifconfig(TIUSER *tiptr, int af, void *myIPaddr, void *mymask, 73 struct in_addr *mybraddr, struct in_addr *gateway, char *ifname); 74int 75ksetifflags(TIUSER *tiptr, uint_t value, char *ifname); 76int 77kifioctl(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 */ 88typedef 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 */ 100typedef 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 */ 123typedef 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 */ 146typedef 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 152void 153ld_ib_prop(); 154 155void 156iscsi_boot_prop_free(); 157 158void 159get_iscsi_bootpath_vhci(char *bootpath); 160 161void 162get_iscsi_bootpath_phy(char *bootpath); 163 164#ifdef __cplusplus 165} 166#endif 167 168#endif /* _BOOTPROPS_H */ 169