blob: 56ebb503c00b0cab130c97805be7f5718eea650f [file] [log] [blame]
Vishal Bhoj82c80712015-12-15 21:13:33 +05301/** @file
2 Define NVData structures used by the iSCSI configuration component.
3
4Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR>
5This program and the accompanying materials
6are licensed and made available under the terms and conditions of the BSD License
7which accompanies this distribution. The full text of the license may be found at
8http://opensource.org/licenses/bsd-license.php
9
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13**/
14
15#ifndef _ISCSI_NVDATASTRUC_H_
16#define _ISCSI_NVDATASTRUC_H_
17
18#include <Guid/IScsiConfigHii.h>
19
20#define VAR_EQ_TEST_NAME 0x100
21#define CONFIGURATION_VARSTORE_ID 0x6666
22
23#define FORMID_MAIN_FORM 1
24#define FORMID_MAC_FORM 2
25#define FORMID_ATTEMPT_FORM 3
26#define FORMID_ORDER_FORM 4
27#define FORMID_DELETE_FORM 5
28
29#define ISCSI_NAME_IFR_MIN_SIZE 4
30#define ISCSI_NAME_IFR_MAX_SIZE 223
31#define ISCSI_NAME_MAX_SIZE 224
32
33#define ATTEMPT_NAME_MAX_SIZE 96
34#define ATTEMPT_NAME_SIZE 10
35
36#define CONNECT_MIN_RETRY 0
37#define CONNECT_MAX_RETRY 16
38
39#define CONNECT_MIN_TIMEOUT 100
40#define CONNECT_MAX_TIMEOUT 20000
41#define CONNECT_DEFAULT_TIMEOUT 1000
42
43#define ISCSI_MAX_ATTEMPTS_NUM 255
44
45#define ISCSI_DISABLED 0
46#define ISCSI_ENABLED 1
47#define ISCSI_ENABLED_FOR_MPIO 2
48
49#define IP_MODE_IP4 0
50#define IP_MODE_IP6 1
51#define IP_MODE_AUTOCONFIG 2
52
53#define ISCSI_AUTH_TYPE_NONE 0
54#define ISCSI_AUTH_TYPE_CHAP 1
55#define ISCSI_AUTH_TYPE_KRB 2
56
57#define IP4_MIN_SIZE 7
58#define IP4_MAX_SIZE 15
59#define IP4_STR_MAX_SIZE 16
60
61//
62// Macros used for an IPv4 or an IPv6 address.
63//
64#define IP_MIN_SIZE 2
65#define IP_MAX_SIZE 39
66#define IP_STR_MAX_SIZE 40
67
68#define LUN_MIN_SIZE 1
69#define LUN_MAX_SIZE 20
70
71#define ISCSI_CHAP_UNI 0
72#define ISCSI_CHAP_MUTUAL 1
73
74#define TARGET_PORT_MIN_NUM 0
75#define TARGET_PORT_MAX_NUM 65535
76#define LABEL_END 0xffff
77
78#define KEY_INITIATOR_NAME 0x101
79#define KEY_DHCP_ENABLE 0x102
80#define KEY_LOCAL_IP 0x103
81#define KEY_SUBNET_MASK 0x104
82#define KEY_GATE_WAY 0x105
83#define KEY_TARGET_IP 0x106
84#define KEY_CHAP_NAME 0x107
85#define KEY_CHAP_SECRET 0x108
86#define KEY_REVERSE_CHAP_NAME 0x109
87#define KEY_REVERSE_CHAP_SECRET 0x10a
88#define KEY_SAVE_CHANGES 0x10b
89#define KEY_TARGET_NAME 0x10c
90#define KEY_BOOT_LUN 0x10d
91
92#define KEY_ADD_ATTEMPT 0x10e
93#define KEY_SAVE_ATTEMPT_CONFIG 0x10f
94#define KEY_ORDER_ATTEMPT_CONFIG 0x110
95#define KEY_SAVE_ORDER_CHANGES 0x111
96#define KEY_IGNORE_ORDER_CHANGES 0x112
97#define KEY_ATTEMPT_NAME 0x113
98#define KEY_SAVE_DELETE_ATTEMPT 0x114
99#define KEY_IGNORE_DELETE_ATTEMPT 0x115
100#define KEY_DELETE_ATTEMPT 0x116
101
102#define KEY_IP_MODE 0x11c
103#define KEY_AUTH_TYPE 0x11d
104#define KEY_CONFIG_ISID 0x11e
105
106#define ATTEMPT_ENTRY_LABEL 0x9000
107#define KEY_ATTEMPT_ENTRY_BASE 0xa000
108#define KEY_DE_ATTEMPT_ENTRY_BASE 0xb000
109
110#define KEY_DEVICE_ENTRY_BASE 0x1000
111#define KEY_MAC_ENTRY_BASE 0x2000
112#define MAC_ENTRY_LABEL 0x3000
113#define ORDER_ENTRY_LABEL 0x4000
114#define DELETE_ENTRY_LABEL 0x5000
115#define CONFIG_OPTION_OFFSET 0x9000
116
117#define ISCSI_LUN_STR_MAX_LEN 21
118#define ISCSI_CHAP_SECRET_MIN_LEN 12
119#define ISCSI_CHAP_SECRET_MAX_LEN 16
120//
121// ISCSI_CHAP_SECRET_STORAGE = ISCSI_CHAP_SECRET_MAX_LEN + sizeof (NULL-Terminator)
122//
123#define ISCSI_CHAP_SECRET_STORAGE 17
124#define ISCSI_CHAP_NAME_MAX_LEN 126
125#define ISCSI_CHAP_NAME_STORAGE 127
126
127#define KERBEROS_SECRET_MIN_LEN 12
128#define KERBEROS_SECRET_MAX_LEN 16
129#define KERBEROS_SECRET_STORAGE 17
130#define KERBEROS_NAME_MAX_LEN 96
131#define KERBEROS_KDC_PORT_MIN_NUM 0
132#define KERBEROS_KDC_PORT_MAX_NUM 65535
133
134#define ISID_CONFIGURABLE_MIN_LEN 6
135#define ISID_CONFIGURABLE_MAX_LEN 12
136#define ISID_CONFIGURABLE_STORAGE 13
137
138#pragma pack(1)
139typedef struct _ISCSI_CONFIG_IFR_NVDATA {
140 CHAR16 InitiatorName[ISCSI_NAME_MAX_SIZE];
141 CHAR16 AttemptName[ATTEMPT_NAME_MAX_SIZE];
142
143 UINT8 Enabled;
144 UINT8 IpMode;
145
146 UINT8 ConnectRetryCount;
147 UINT8 Padding1;
148 UINT16 ConnectTimeout; // Timeout value in milliseconds.
149
150 UINT8 InitiatorInfoFromDhcp;
151 UINT8 TargetInfoFromDhcp;
152 CHAR16 LocalIp[IP4_STR_MAX_SIZE];
153 CHAR16 SubnetMask[IP4_STR_MAX_SIZE];
154 CHAR16 Gateway[IP4_STR_MAX_SIZE];
155
156 CHAR16 TargetName[ISCSI_NAME_MAX_SIZE];
157 CHAR16 TargetIp[IP_STR_MAX_SIZE];
158 UINT16 TargetPort;
159 CHAR16 BootLun[ISCSI_LUN_STR_MAX_LEN];
160
161 UINT8 AuthenticationType;
162
163 UINT8 CHAPType;
164 CHAR16 CHAPName[ISCSI_CHAP_NAME_STORAGE];
165 CHAR16 CHAPSecret[ISCSI_CHAP_SECRET_STORAGE];
166 CHAR16 ReverseCHAPName[ISCSI_CHAP_NAME_STORAGE];
167 CHAR16 ReverseCHAPSecret[ISCSI_CHAP_SECRET_STORAGE];
168
169 BOOLEAN MutualRequired;
170 UINT8 Padding2;
171 CHAR16 KerberosUserName[KERBEROS_NAME_MAX_LEN];
172 CHAR16 KerberosUserSecret[KERBEROS_SECRET_STORAGE];
173 CHAR16 KerberosKDCName[KERBEROS_NAME_MAX_LEN];
174 CHAR16 KerberosKDCRealm[KERBEROS_NAME_MAX_LEN];
175 CHAR16 KerberosKDCIp[IP_STR_MAX_SIZE];
176 UINT16 KerberosKDCPort;
177
178 UINT8 DynamicOrderedList[ISCSI_MAX_ATTEMPTS_NUM];
179 UINT8 DeleteAttemptList[ISCSI_MAX_ATTEMPTS_NUM];
180
181 CHAR16 IsId[ISID_CONFIGURABLE_STORAGE];
182} ISCSI_CONFIG_IFR_NVDATA;
183#pragma pack()
184
185#endif