]> git.proxmox.com Git - mirror_edk2.git/blame - NetworkPkg/Application/IpsecConfig/Indexer.c
BaseTools/Capsule: Do not support -o with --dump-info
[mirror_edk2.git] / NetworkPkg / Application / IpsecConfig / Indexer.c
CommitLineData
a3bcde70
HT
1/** @file\r
2 The implementation of construct ENTRY_INDEXER in IpSecConfig application.\r
3\r
f75a7f56 4 Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
a3bcde70
HT
5\r
6 This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php.\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#include "IpSecConfig.h"\r
17#include "Indexer.h"\r
18#include "Helper.h"\r
19\r
20/**\r
21 Fill in SPD_ENTRY_INDEXER through ParamPackage list.\r
22\r
23 @param[in, out] Indexer The pointer to the SPD_ENTRY_INDEXER structure.\r
24 @param[in] ParamPackage The pointer to the ParamPackage list.\r
25\r
26 @retval EFI_SUCCESS Filled in SPD_ENTRY_INDEXER successfully.\r
27**/\r
28EFI_STATUS\r
29ConstructSpdIndexer (\r
30 IN OUT SPD_ENTRY_INDEXER *Indexer,\r
31 IN LIST_ENTRY *ParamPackage\r
32 )\r
33{\r
34 EFI_STATUS Status;\r
35 UINT64 Value64;\r
36 CONST CHAR16 *ValueStr;\r
37\r
38 ValueStr = NULL;\r
39\r
40 if (ShellCommandLineGetFlag (ParamPackage, L"-i")) {\r
41 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-i");\r
42 } else if (ShellCommandLineGetFlag (ParamPackage, L"-d")) {\r
43 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-d");\r
44 } else if (ShellCommandLineGetFlag (ParamPackage, L"-e")) {\r
45 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-e");\r
46 } else {\r
ca9b4d22 47 return EFI_INVALID_PARAMETER;\r
a3bcde70
HT
48 }\r
49\r
ca9b4d22
JW
50 if (ValueStr == NULL) {\r
51 return EFI_INVALID_PARAMETER;\r
52 }\r
f75a7f56 53\r
a3bcde70
HT
54 Value64 = StrToUInteger (ValueStr, &Status);\r
55 if (!EFI_ERROR (Status)) {\r
56 Indexer->Index = (UINTN) Value64;\r
ca9b4d22 57 ZeroMem (Indexer->Name, MAX_PEERID_LEN);\r
a3bcde70 58 } else {\r
ca9b4d22 59 UnicodeStrToAsciiStrS (ValueStr, (CHAR8 *) Indexer->Name, MAX_PEERID_LEN);\r
a3bcde70
HT
60 }\r
61\r
62 return EFI_SUCCESS;\r
63}\r
64\r
65/**\r
66 Fill in SAD_ENTRY_INDEXER through ParamPackage list.\r
67\r
68 @param[in, out] Indexer The pointer to the SAD_ENTRY_INDEXER structure.\r
69 @param[in] ParamPackage The pointer to the ParamPackage list.\r
70\r
71 @retval EFI_SUCCESS Filled in SPD_ENTRY_INDEXER successfully.\r
72 @retval EFI_INVALID_PARAMETER The mistaken user input in ParamPackage list.\r
73**/\r
74EFI_STATUS\r
75ConstructSadIndexer (\r
76 IN OUT SAD_ENTRY_INDEXER *Indexer,\r
77 IN LIST_ENTRY *ParamPackage\r
78 )\r
79{\r
80 EFI_STATUS Status;\r
81 EFI_STATUS Status1;\r
82 UINT64 Value64;\r
83 CONST CHAR16 *ValueStr;\r
84\r
85 ValueStr = NULL;\r
86\r
87 if (ShellCommandLineGetFlag (ParamPackage, L"-i")) {\r
88 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-i");\r
89 } else if (ShellCommandLineGetFlag (ParamPackage, L"-d")) {\r
90 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-d");\r
91 } else if (ShellCommandLineGetFlag (ParamPackage, L"-e")) {\r
92 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-e");\r
93 } else {\r
ca9b4d22 94 return EFI_INVALID_PARAMETER;\r
a3bcde70
HT
95 }\r
96\r
ca9b4d22
JW
97 if (ValueStr == NULL) {\r
98 return EFI_INVALID_PARAMETER;\r
99 }\r
a3bcde70
HT
100\r
101 Value64 = StrToUInteger (ValueStr, &Status);\r
102 if (!EFI_ERROR (Status)) {\r
103 Indexer->Index = (UINTN) Value64;\r
104 ZeroMem (&Indexer->SaId, sizeof (EFI_IPSEC_SA_ID));\r
105 } else {\r
106 if ((!ShellCommandLineGetFlag (ParamPackage, L"--lookup-spi")) ||\r
107 (!ShellCommandLineGetFlag (ParamPackage, L"--lookup-ipsec-proto")) ||\r
108 (!ShellCommandLineGetFlag (ParamPackage, L"--lookup-dest"))) {\r
109 ShellPrintHiiEx (\r
110 -1,\r
111 -1,\r
112 NULL,\r
113 STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS),\r
114 mHiiHandle,\r
115 mAppName,\r
116 L"--lookup-spi --lookup-ipsec-proto --lookup-dest"\r
117 );\r
118 return EFI_INVALID_PARAMETER;\r
119 }\r
120\r
121 Status = GetNumber (\r
122 L"--lookup-spi",\r
123 (UINT32) -1,\r
124 &Indexer->SaId.Spi,\r
125 sizeof (UINT32),\r
126 NULL,\r
127 ParamPackage,\r
128 FORMAT_NUMBER\r
129 );\r
130 Status1 = GetNumber (\r
131 L"--lookup-ipsec-proto",\r
132 0,\r
133 &Indexer->SaId.Proto,\r
134 sizeof (EFI_IPSEC_PROTOCOL_TYPE),\r
135 mMapIpSecProtocol,\r
136 ParamPackage,\r
137 FORMAT_STRING\r
138 );\r
139\r
140 if (EFI_ERROR (Status) || EFI_ERROR (Status1)) {\r
141 return EFI_INVALID_PARAMETER;\r
142 }\r
143\r
144 ValueStr = ShellCommandLineGetValue (ParamPackage, L"--lookup-dest");\r
145 ASSERT (ValueStr != NULL);\r
146\r
147 Status = EfiInetAddr2 ((CHAR16 *) ValueStr, &Indexer->SaId.DestAddress);\r
148 if (EFI_ERROR (Status)) {\r
149 ShellPrintHiiEx (\r
150 -1,\r
151 -1,\r
152 NULL,\r
153 STRING_TOKEN (STR_IPSEC_CONFIG_INCORRECT_PARAMETER_VALUE),\r
154 mHiiHandle,\r
155 mAppName,\r
156 L"--lookup-dest",\r
157 ValueStr\r
158 );\r
159 return EFI_INVALID_PARAMETER;\r
160 }\r
161 }\r
162\r
163 return EFI_SUCCESS;\r
164}\r
165\r
166/**\r
167 Fill in PAD_ENTRY_INDEXER through ParamPackage list.\r
168\r
169 @param[in, out] Indexer The pointer to the PAD_ENTRY_INDEXER structure.\r
170 @param[in] ParamPackage The pointer to the ParamPackage list.\r
171\r
172 @retval EFI_SUCCESS Filled in PAD_ENTRY_INDEXER successfully.\r
173 @retval EFI_INVALID_PARAMETER The mistaken user input in ParamPackage list.\r
174**/\r
175EFI_STATUS\r
176ConstructPadIndexer (\r
177 IN OUT PAD_ENTRY_INDEXER *Indexer,\r
178 IN LIST_ENTRY *ParamPackage\r
179 )\r
180{\r
181 EFI_STATUS Status;\r
182 UINT64 Value64;\r
183 CONST CHAR16 *ValueStr;\r
184\r
185 ValueStr = NULL;\r
186\r
187 if (ShellCommandLineGetFlag (ParamPackage, L"-i")) {\r
188 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-i");\r
189 } else if (ShellCommandLineGetFlag (ParamPackage, L"-d")) {\r
190 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-d");\r
191 } else if (ShellCommandLineGetFlag (ParamPackage, L"-e")) {\r
192 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-e");\r
193 } else {\r
ca9b4d22 194 return EFI_INVALID_PARAMETER;\r
a3bcde70
HT
195 }\r
196\r
ca9b4d22
JW
197 if (ValueStr == NULL) {\r
198 return EFI_INVALID_PARAMETER;\r
199 }\r
a3bcde70
HT
200\r
201 Value64 = StrToUInteger (ValueStr, &Status);\r
202\r
203 if (!EFI_ERROR (Status)) {\r
204 Indexer->Index = (UINTN) Value64;\r
205 ZeroMem (&Indexer->PadId, sizeof (EFI_IPSEC_PAD_ID));\r
206 } else {\r
207\r
208 if (ShellCommandLineGetFlag (ParamPackage, L"--lookup-peer-address")) {\r
209 ValueStr = ShellCommandLineGetValue (ParamPackage, L"--lookup-peer-address");\r
210 ASSERT (ValueStr != NULL);\r
211\r
212 Indexer->PadId.PeerIdValid = FALSE;\r
213 Status = EfiInetAddrRange ((CHAR16 *) ValueStr, &Indexer->PadId.Id.IpAddress);\r
214 if (EFI_ERROR (Status)) {\r
215 ShellPrintHiiEx (\r
216 -1,\r
217 -1,\r
218 NULL,\r
219 STRING_TOKEN (STR_IPSEC_CONFIG_INCORRECT_PARAMETER_VALUE),\r
220 mHiiHandle,\r
221 mAppName,\r
222 L"--lookup-peer-address",\r
223 ValueStr\r
224 );\r
225 return EFI_INVALID_PARAMETER;\r
226 }\r
227 } else {\r
228 ValueStr = ShellCommandLineGetValue (ParamPackage, L"--lookup-peer-id");\r
229 if (ValueStr == NULL) {\r
230 ShellPrintHiiEx (\r
231 -1,\r
232 -1,\r
233 NULL,\r
234 STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS),\r
235 mHiiHandle,\r
236 mAppName,\r
237 L"--lookup-peer-address --lookup-peer-id"\r
238 );\r
239 return EFI_INVALID_PARAMETER;\r
240 }\r
241\r
242 Indexer->PadId.PeerIdValid = TRUE;\r
a361d391 243 ZeroMem (Indexer->PadId.Id.PeerId, MAX_PEERID_LEN);\r
c960bdc2 244 StrnCpyS ((CHAR16 *) Indexer->PadId.Id.PeerId, MAX_PEERID_LEN / sizeof (CHAR16), ValueStr, MAX_PEERID_LEN / sizeof (CHAR16) - 1);\r
a3bcde70
HT
245 }\r
246 }\r
247\r
248 return EFI_SUCCESS;\r
249}\r
250\r
251CONSTRUCT_POLICY_ENTRY_INDEXER mConstructPolicyEntryIndexer[] = {\r
252 (CONSTRUCT_POLICY_ENTRY_INDEXER) ConstructSpdIndexer,\r
253 (CONSTRUCT_POLICY_ENTRY_INDEXER) ConstructSadIndexer,\r
254 (CONSTRUCT_POLICY_ENTRY_INDEXER) ConstructPadIndexer\r
255};\r