]> git.proxmox.com Git - mirror_edk2.git/blame - NetworkPkg/Application/IpsecConfig/Indexer.c
Update ipsecconfig and ping6 due to ShellLib update.
[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
4 Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
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
47 ASSERT (FALSE);\r
48 }\r
49\r
50 ASSERT (ValueStr != NULL);\r
51\r
52 Value64 = StrToUInteger (ValueStr, &Status);\r
53 if (!EFI_ERROR (Status)) {\r
54 Indexer->Index = (UINTN) Value64;\r
55 Indexer->Name = NULL;\r
56 } else {\r
57 UnicodeStrToAsciiStr (ValueStr, (CHAR8 *) Indexer->Name);\r
58 }\r
59\r
60 return EFI_SUCCESS;\r
61}\r
62\r
63/**\r
64 Fill in SAD_ENTRY_INDEXER through ParamPackage list.\r
65\r
66 @param[in, out] Indexer The pointer to the SAD_ENTRY_INDEXER structure.\r
67 @param[in] ParamPackage The pointer to the ParamPackage list.\r
68\r
69 @retval EFI_SUCCESS Filled in SPD_ENTRY_INDEXER successfully.\r
70 @retval EFI_INVALID_PARAMETER The mistaken user input in ParamPackage list.\r
71**/\r
72EFI_STATUS\r
73ConstructSadIndexer (\r
74 IN OUT SAD_ENTRY_INDEXER *Indexer,\r
75 IN LIST_ENTRY *ParamPackage\r
76 )\r
77{\r
78 EFI_STATUS Status;\r
79 EFI_STATUS Status1;\r
80 UINT64 Value64;\r
81 CONST CHAR16 *ValueStr;\r
82\r
83 ValueStr = NULL;\r
84\r
85 if (ShellCommandLineGetFlag (ParamPackage, L"-i")) {\r
86 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-i");\r
87 } else if (ShellCommandLineGetFlag (ParamPackage, L"-d")) {\r
88 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-d");\r
89 } else if (ShellCommandLineGetFlag (ParamPackage, L"-e")) {\r
90 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-e");\r
91 } else {\r
92 ASSERT (FALSE);\r
93 }\r
94\r
95 ASSERT (ValueStr != NULL);\r
96\r
97 Value64 = StrToUInteger (ValueStr, &Status);\r
98 if (!EFI_ERROR (Status)) {\r
99 Indexer->Index = (UINTN) Value64;\r
100 ZeroMem (&Indexer->SaId, sizeof (EFI_IPSEC_SA_ID));\r
101 } else {\r
102 if ((!ShellCommandLineGetFlag (ParamPackage, L"--lookup-spi")) ||\r
103 (!ShellCommandLineGetFlag (ParamPackage, L"--lookup-ipsec-proto")) ||\r
104 (!ShellCommandLineGetFlag (ParamPackage, L"--lookup-dest"))) {\r
105 ShellPrintHiiEx (\r
106 -1,\r
107 -1,\r
108 NULL,\r
109 STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS),\r
110 mHiiHandle,\r
111 mAppName,\r
112 L"--lookup-spi --lookup-ipsec-proto --lookup-dest"\r
113 );\r
114 return EFI_INVALID_PARAMETER;\r
115 }\r
116\r
117 Status = GetNumber (\r
118 L"--lookup-spi",\r
119 (UINT32) -1,\r
120 &Indexer->SaId.Spi,\r
121 sizeof (UINT32),\r
122 NULL,\r
123 ParamPackage,\r
124 FORMAT_NUMBER\r
125 );\r
126 Status1 = GetNumber (\r
127 L"--lookup-ipsec-proto",\r
128 0,\r
129 &Indexer->SaId.Proto,\r
130 sizeof (EFI_IPSEC_PROTOCOL_TYPE),\r
131 mMapIpSecProtocol,\r
132 ParamPackage,\r
133 FORMAT_STRING\r
134 );\r
135\r
136 if (EFI_ERROR (Status) || EFI_ERROR (Status1)) {\r
137 return EFI_INVALID_PARAMETER;\r
138 }\r
139\r
140 ValueStr = ShellCommandLineGetValue (ParamPackage, L"--lookup-dest");\r
141 ASSERT (ValueStr != NULL);\r
142\r
143 Status = EfiInetAddr2 ((CHAR16 *) ValueStr, &Indexer->SaId.DestAddress);\r
144 if (EFI_ERROR (Status)) {\r
145 ShellPrintHiiEx (\r
146 -1,\r
147 -1,\r
148 NULL,\r
149 STRING_TOKEN (STR_IPSEC_CONFIG_INCORRECT_PARAMETER_VALUE),\r
150 mHiiHandle,\r
151 mAppName,\r
152 L"--lookup-dest",\r
153 ValueStr\r
154 );\r
155 return EFI_INVALID_PARAMETER;\r
156 }\r
157 }\r
158\r
159 return EFI_SUCCESS;\r
160}\r
161\r
162/**\r
163 Fill in PAD_ENTRY_INDEXER through ParamPackage list.\r
164\r
165 @param[in, out] Indexer The pointer to the PAD_ENTRY_INDEXER structure.\r
166 @param[in] ParamPackage The pointer to the ParamPackage list.\r
167\r
168 @retval EFI_SUCCESS Filled in PAD_ENTRY_INDEXER successfully.\r
169 @retval EFI_INVALID_PARAMETER The mistaken user input in ParamPackage list.\r
170**/\r
171EFI_STATUS\r
172ConstructPadIndexer (\r
173 IN OUT PAD_ENTRY_INDEXER *Indexer,\r
174 IN LIST_ENTRY *ParamPackage\r
175 )\r
176{\r
177 EFI_STATUS Status;\r
178 UINT64 Value64;\r
179 CONST CHAR16 *ValueStr;\r
180\r
181 ValueStr = NULL;\r
182\r
183 if (ShellCommandLineGetFlag (ParamPackage, L"-i")) {\r
184 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-i");\r
185 } else if (ShellCommandLineGetFlag (ParamPackage, L"-d")) {\r
186 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-d");\r
187 } else if (ShellCommandLineGetFlag (ParamPackage, L"-e")) {\r
188 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-e");\r
189 } else {\r
190 ASSERT (FALSE);\r
191 }\r
192\r
193 ASSERT (ValueStr != NULL);\r
194\r
195 Value64 = StrToUInteger (ValueStr, &Status);\r
196\r
197 if (!EFI_ERROR (Status)) {\r
198 Indexer->Index = (UINTN) Value64;\r
199 ZeroMem (&Indexer->PadId, sizeof (EFI_IPSEC_PAD_ID));\r
200 } else {\r
201\r
202 if (ShellCommandLineGetFlag (ParamPackage, L"--lookup-peer-address")) {\r
203 ValueStr = ShellCommandLineGetValue (ParamPackage, L"--lookup-peer-address");\r
204 ASSERT (ValueStr != NULL);\r
205\r
206 Indexer->PadId.PeerIdValid = FALSE;\r
207 Status = EfiInetAddrRange ((CHAR16 *) ValueStr, &Indexer->PadId.Id.IpAddress);\r
208 if (EFI_ERROR (Status)) {\r
209 ShellPrintHiiEx (\r
210 -1,\r
211 -1,\r
212 NULL,\r
213 STRING_TOKEN (STR_IPSEC_CONFIG_INCORRECT_PARAMETER_VALUE),\r
214 mHiiHandle,\r
215 mAppName,\r
216 L"--lookup-peer-address",\r
217 ValueStr\r
218 );\r
219 return EFI_INVALID_PARAMETER;\r
220 }\r
221 } else {\r
222 ValueStr = ShellCommandLineGetValue (ParamPackage, L"--lookup-peer-id");\r
223 if (ValueStr == NULL) {\r
224 ShellPrintHiiEx (\r
225 -1,\r
226 -1,\r
227 NULL,\r
228 STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS),\r
229 mHiiHandle,\r
230 mAppName,\r
231 L"--lookup-peer-address --lookup-peer-id"\r
232 );\r
233 return EFI_INVALID_PARAMETER;\r
234 }\r
235\r
236 Indexer->PadId.PeerIdValid = TRUE;\r
237 StrnCpy ((CHAR16 *) Indexer->PadId.Id.PeerId, ValueStr, ARRAY_SIZE (Indexer->PadId.Id.PeerId) - 1);\r
238 }\r
239 }\r
240\r
241 return EFI_SUCCESS;\r
242}\r
243\r
244CONSTRUCT_POLICY_ENTRY_INDEXER mConstructPolicyEntryIndexer[] = {\r
245 (CONSTRUCT_POLICY_ENTRY_INDEXER) ConstructSpdIndexer,\r
246 (CONSTRUCT_POLICY_ENTRY_INDEXER) ConstructSadIndexer,\r
247 (CONSTRUCT_POLICY_ENTRY_INDEXER) ConstructPadIndexer\r
248};\r