]> git.proxmox.com Git - mirror_edk2.git/blame - NetworkPkg/Application/IpsecConfig/Indexer.c
MdeModulePkg/StatusCodeHandlerRuntimeDxe: make global variable static
[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 5\r
ecf98fbc 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
a3bcde70
HT
7\r
8**/\r
9\r
10#include "IpSecConfig.h"\r
11#include "Indexer.h"\r
12#include "Helper.h"\r
13\r
14/**\r
15 Fill in SPD_ENTRY_INDEXER through ParamPackage list.\r
16\r
17 @param[in, out] Indexer The pointer to the SPD_ENTRY_INDEXER structure.\r
18 @param[in] ParamPackage The pointer to the ParamPackage list.\r
19\r
20 @retval EFI_SUCCESS Filled in SPD_ENTRY_INDEXER successfully.\r
21**/\r
22EFI_STATUS\r
23ConstructSpdIndexer (\r
24 IN OUT SPD_ENTRY_INDEXER *Indexer,\r
25 IN LIST_ENTRY *ParamPackage\r
26 )\r
27{\r
28 EFI_STATUS Status;\r
29 UINT64 Value64;\r
30 CONST CHAR16 *ValueStr;\r
31\r
32 ValueStr = NULL;\r
33\r
34 if (ShellCommandLineGetFlag (ParamPackage, L"-i")) {\r
35 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-i");\r
36 } else if (ShellCommandLineGetFlag (ParamPackage, L"-d")) {\r
37 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-d");\r
38 } else if (ShellCommandLineGetFlag (ParamPackage, L"-e")) {\r
39 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-e");\r
40 } else {\r
ca9b4d22 41 return EFI_INVALID_PARAMETER;\r
a3bcde70
HT
42 }\r
43\r
ca9b4d22
JW
44 if (ValueStr == NULL) {\r
45 return EFI_INVALID_PARAMETER;\r
46 }\r
f75a7f56 47\r
a3bcde70
HT
48 Value64 = StrToUInteger (ValueStr, &Status);\r
49 if (!EFI_ERROR (Status)) {\r
50 Indexer->Index = (UINTN) Value64;\r
ca9b4d22 51 ZeroMem (Indexer->Name, MAX_PEERID_LEN);\r
a3bcde70 52 } else {\r
ca9b4d22 53 UnicodeStrToAsciiStrS (ValueStr, (CHAR8 *) Indexer->Name, MAX_PEERID_LEN);\r
a3bcde70
HT
54 }\r
55\r
56 return EFI_SUCCESS;\r
57}\r
58\r
59/**\r
60 Fill in SAD_ENTRY_INDEXER through ParamPackage list.\r
61\r
62 @param[in, out] Indexer The pointer to the SAD_ENTRY_INDEXER structure.\r
63 @param[in] ParamPackage The pointer to the ParamPackage list.\r
64\r
65 @retval EFI_SUCCESS Filled in SPD_ENTRY_INDEXER successfully.\r
66 @retval EFI_INVALID_PARAMETER The mistaken user input in ParamPackage list.\r
67**/\r
68EFI_STATUS\r
69ConstructSadIndexer (\r
70 IN OUT SAD_ENTRY_INDEXER *Indexer,\r
71 IN LIST_ENTRY *ParamPackage\r
72 )\r
73{\r
74 EFI_STATUS Status;\r
75 EFI_STATUS Status1;\r
76 UINT64 Value64;\r
77 CONST CHAR16 *ValueStr;\r
78\r
79 ValueStr = NULL;\r
80\r
81 if (ShellCommandLineGetFlag (ParamPackage, L"-i")) {\r
82 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-i");\r
83 } else if (ShellCommandLineGetFlag (ParamPackage, L"-d")) {\r
84 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-d");\r
85 } else if (ShellCommandLineGetFlag (ParamPackage, L"-e")) {\r
86 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-e");\r
87 } else {\r
ca9b4d22 88 return EFI_INVALID_PARAMETER;\r
a3bcde70
HT
89 }\r
90\r
ca9b4d22
JW
91 if (ValueStr == NULL) {\r
92 return EFI_INVALID_PARAMETER;\r
93 }\r
a3bcde70
HT
94\r
95 Value64 = StrToUInteger (ValueStr, &Status);\r
96 if (!EFI_ERROR (Status)) {\r
97 Indexer->Index = (UINTN) Value64;\r
98 ZeroMem (&Indexer->SaId, sizeof (EFI_IPSEC_SA_ID));\r
99 } else {\r
100 if ((!ShellCommandLineGetFlag (ParamPackage, L"--lookup-spi")) ||\r
101 (!ShellCommandLineGetFlag (ParamPackage, L"--lookup-ipsec-proto")) ||\r
102 (!ShellCommandLineGetFlag (ParamPackage, L"--lookup-dest"))) {\r
103 ShellPrintHiiEx (\r
104 -1,\r
105 -1,\r
106 NULL,\r
107 STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS),\r
108 mHiiHandle,\r
109 mAppName,\r
110 L"--lookup-spi --lookup-ipsec-proto --lookup-dest"\r
111 );\r
112 return EFI_INVALID_PARAMETER;\r
113 }\r
114\r
115 Status = GetNumber (\r
116 L"--lookup-spi",\r
117 (UINT32) -1,\r
118 &Indexer->SaId.Spi,\r
119 sizeof (UINT32),\r
120 NULL,\r
121 ParamPackage,\r
122 FORMAT_NUMBER\r
123 );\r
124 Status1 = GetNumber (\r
125 L"--lookup-ipsec-proto",\r
126 0,\r
127 &Indexer->SaId.Proto,\r
128 sizeof (EFI_IPSEC_PROTOCOL_TYPE),\r
129 mMapIpSecProtocol,\r
130 ParamPackage,\r
131 FORMAT_STRING\r
132 );\r
133\r
134 if (EFI_ERROR (Status) || EFI_ERROR (Status1)) {\r
135 return EFI_INVALID_PARAMETER;\r
136 }\r
137\r
138 ValueStr = ShellCommandLineGetValue (ParamPackage, L"--lookup-dest");\r
139 ASSERT (ValueStr != NULL);\r
140\r
141 Status = EfiInetAddr2 ((CHAR16 *) ValueStr, &Indexer->SaId.DestAddress);\r
142 if (EFI_ERROR (Status)) {\r
143 ShellPrintHiiEx (\r
144 -1,\r
145 -1,\r
146 NULL,\r
147 STRING_TOKEN (STR_IPSEC_CONFIG_INCORRECT_PARAMETER_VALUE),\r
148 mHiiHandle,\r
149 mAppName,\r
150 L"--lookup-dest",\r
151 ValueStr\r
152 );\r
153 return EFI_INVALID_PARAMETER;\r
154 }\r
155 }\r
156\r
157 return EFI_SUCCESS;\r
158}\r
159\r
160/**\r
161 Fill in PAD_ENTRY_INDEXER through ParamPackage list.\r
162\r
163 @param[in, out] Indexer The pointer to the PAD_ENTRY_INDEXER structure.\r
164 @param[in] ParamPackage The pointer to the ParamPackage list.\r
165\r
166 @retval EFI_SUCCESS Filled in PAD_ENTRY_INDEXER successfully.\r
167 @retval EFI_INVALID_PARAMETER The mistaken user input in ParamPackage list.\r
168**/\r
169EFI_STATUS\r
170ConstructPadIndexer (\r
171 IN OUT PAD_ENTRY_INDEXER *Indexer,\r
172 IN LIST_ENTRY *ParamPackage\r
173 )\r
174{\r
175 EFI_STATUS Status;\r
176 UINT64 Value64;\r
177 CONST CHAR16 *ValueStr;\r
178\r
179 ValueStr = NULL;\r
180\r
181 if (ShellCommandLineGetFlag (ParamPackage, L"-i")) {\r
182 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-i");\r
183 } else if (ShellCommandLineGetFlag (ParamPackage, L"-d")) {\r
184 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-d");\r
185 } else if (ShellCommandLineGetFlag (ParamPackage, L"-e")) {\r
186 ValueStr = ShellCommandLineGetValue (ParamPackage, L"-e");\r
187 } else {\r
ca9b4d22 188 return EFI_INVALID_PARAMETER;\r
a3bcde70
HT
189 }\r
190\r
ca9b4d22
JW
191 if (ValueStr == NULL) {\r
192 return EFI_INVALID_PARAMETER;\r
193 }\r
a3bcde70
HT
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
a361d391 237 ZeroMem (Indexer->PadId.Id.PeerId, MAX_PEERID_LEN);\r
c960bdc2 238 StrnCpyS ((CHAR16 *) Indexer->PadId.Id.PeerId, MAX_PEERID_LEN / sizeof (CHAR16), ValueStr, MAX_PEERID_LEN / sizeof (CHAR16) - 1);\r
a3bcde70
HT
239 }\r
240 }\r
241\r
242 return EFI_SUCCESS;\r
243}\r
244\r
245CONSTRUCT_POLICY_ENTRY_INDEXER mConstructPolicyEntryIndexer[] = {\r
246 (CONSTRUCT_POLICY_ENTRY_INDEXER) ConstructSpdIndexer,\r
247 (CONSTRUCT_POLICY_ENTRY_INDEXER) ConstructSadIndexer,\r
248 (CONSTRUCT_POLICY_ENTRY_INDEXER) ConstructPadIndexer\r
249};\r