1 /** @file
2   Define NVData structures used by the iSCSI configuration component.
3 
4 Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution.  The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9 
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT 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)
139 typedef 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
186