2 The implementation of construct ENTRY_INDEXER in IpSecConfig application.
4 Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php.
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 #include "IpSecConfig.h"
21 Fill in SPD_ENTRY_INDEXER through ParamPackage list.
23 @param[in, out] Indexer The pointer to the SPD_ENTRY_INDEXER structure.
24 @param[in] ParamPackage The pointer to the ParamPackage list.
26 @retval EFI_SUCCESS Filled in SPD_ENTRY_INDEXER successfully.
30 IN OUT SPD_ENTRY_INDEXER
*Indexer
,
31 IN LIST_ENTRY
*ParamPackage
36 CONST CHAR16
*ValueStr
;
40 if (ShellCommandLineGetFlag (ParamPackage
, L
"-i")) {
41 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-i");
42 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-d")) {
43 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-d");
44 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-e")) {
45 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-e");
50 ASSERT (ValueStr
!= NULL
);
52 Value64
= StrToUInteger (ValueStr
, &Status
);
53 if (!EFI_ERROR (Status
)) {
54 Indexer
->Index
= (UINTN
) Value64
;
57 UnicodeStrToAsciiStr (ValueStr
, (CHAR8
*) Indexer
->Name
);
64 Fill in SAD_ENTRY_INDEXER through ParamPackage list.
66 @param[in, out] Indexer The pointer to the SAD_ENTRY_INDEXER structure.
67 @param[in] ParamPackage The pointer to the ParamPackage list.
69 @retval EFI_SUCCESS Filled in SPD_ENTRY_INDEXER successfully.
70 @retval EFI_INVALID_PARAMETER The mistaken user input in ParamPackage list.
74 IN OUT SAD_ENTRY_INDEXER
*Indexer
,
75 IN LIST_ENTRY
*ParamPackage
81 CONST CHAR16
*ValueStr
;
85 if (ShellCommandLineGetFlag (ParamPackage
, L
"-i")) {
86 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-i");
87 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-d")) {
88 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-d");
89 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-e")) {
90 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-e");
95 ASSERT (ValueStr
!= NULL
);
97 Value64
= StrToUInteger (ValueStr
, &Status
);
98 if (!EFI_ERROR (Status
)) {
99 Indexer
->Index
= (UINTN
) Value64
;
100 ZeroMem (&Indexer
->SaId
, sizeof (EFI_IPSEC_SA_ID
));
102 if ((!ShellCommandLineGetFlag (ParamPackage
, L
"--lookup-spi")) ||
103 (!ShellCommandLineGetFlag (ParamPackage
, L
"--lookup-ipsec-proto")) ||
104 (!ShellCommandLineGetFlag (ParamPackage
, L
"--lookup-dest"))) {
109 STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS
),
112 L
"--lookup-spi --lookup-ipsec-proto --lookup-dest"
114 return EFI_INVALID_PARAMETER
;
126 Status1
= GetNumber (
127 L
"--lookup-ipsec-proto",
129 &Indexer
->SaId
.Proto
,
130 sizeof (EFI_IPSEC_PROTOCOL_TYPE
),
136 if (EFI_ERROR (Status
) || EFI_ERROR (Status1
)) {
137 return EFI_INVALID_PARAMETER
;
140 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"--lookup-dest");
141 ASSERT (ValueStr
!= NULL
);
143 Status
= EfiInetAddr2 ((CHAR16
*) ValueStr
, &Indexer
->SaId
.DestAddress
);
144 if (EFI_ERROR (Status
)) {
149 STRING_TOKEN (STR_IPSEC_CONFIG_INCORRECT_PARAMETER_VALUE
),
155 return EFI_INVALID_PARAMETER
;
163 Fill in PAD_ENTRY_INDEXER through ParamPackage list.
165 @param[in, out] Indexer The pointer to the PAD_ENTRY_INDEXER structure.
166 @param[in] ParamPackage The pointer to the ParamPackage list.
168 @retval EFI_SUCCESS Filled in PAD_ENTRY_INDEXER successfully.
169 @retval EFI_INVALID_PARAMETER The mistaken user input in ParamPackage list.
172 ConstructPadIndexer (
173 IN OUT PAD_ENTRY_INDEXER
*Indexer
,
174 IN LIST_ENTRY
*ParamPackage
179 CONST CHAR16
*ValueStr
;
183 if (ShellCommandLineGetFlag (ParamPackage
, L
"-i")) {
184 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-i");
185 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-d")) {
186 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-d");
187 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-e")) {
188 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-e");
193 ASSERT (ValueStr
!= NULL
);
195 Value64
= StrToUInteger (ValueStr
, &Status
);
197 if (!EFI_ERROR (Status
)) {
198 Indexer
->Index
= (UINTN
) Value64
;
199 ZeroMem (&Indexer
->PadId
, sizeof (EFI_IPSEC_PAD_ID
));
202 if (ShellCommandLineGetFlag (ParamPackage
, L
"--lookup-peer-address")) {
203 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"--lookup-peer-address");
204 ASSERT (ValueStr
!= NULL
);
206 Indexer
->PadId
.PeerIdValid
= FALSE
;
207 Status
= EfiInetAddrRange ((CHAR16
*) ValueStr
, &Indexer
->PadId
.Id
.IpAddress
);
208 if (EFI_ERROR (Status
)) {
213 STRING_TOKEN (STR_IPSEC_CONFIG_INCORRECT_PARAMETER_VALUE
),
216 L
"--lookup-peer-address",
219 return EFI_INVALID_PARAMETER
;
222 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"--lookup-peer-id");
223 if (ValueStr
== NULL
) {
228 STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS
),
231 L
"--lookup-peer-address --lookup-peer-id"
233 return EFI_INVALID_PARAMETER
;
236 Indexer
->PadId
.PeerIdValid
= TRUE
;
237 ZeroMem (Indexer
->PadId
.Id
.PeerId
, MAX_PEERID_LEN
);
238 StrnCpy ((CHAR16
*) Indexer
->PadId
.Id
.PeerId
, ValueStr
, ARRAY_SIZE (Indexer
->PadId
.Id
.PeerId
) - 1);
245 CONSTRUCT_POLICY_ENTRY_INDEXER mConstructPolicyEntryIndexer
[] = {
246 (CONSTRUCT_POLICY_ENTRY_INDEXER
) ConstructSpdIndexer
,
247 (CONSTRUCT_POLICY_ENTRY_INDEXER
) ConstructSadIndexer
,
248 (CONSTRUCT_POLICY_ENTRY_INDEXER
) ConstructPadIndexer