2 The implementation of construct ENTRY_INDEXER in IpSecConfig application.
4 Copyright (c) 2009 - 2018, 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");
47 return EFI_INVALID_PARAMETER
;
50 if (ValueStr
== NULL
) {
51 return EFI_INVALID_PARAMETER
;
54 Value64
= StrToUInteger (ValueStr
, &Status
);
55 if (!EFI_ERROR (Status
)) {
56 Indexer
->Index
= (UINTN
) Value64
;
57 ZeroMem (Indexer
->Name
, MAX_PEERID_LEN
);
59 UnicodeStrToAsciiStrS (ValueStr
, (CHAR8
*) Indexer
->Name
, MAX_PEERID_LEN
);
66 Fill in SAD_ENTRY_INDEXER through ParamPackage list.
68 @param[in, out] Indexer The pointer to the SAD_ENTRY_INDEXER structure.
69 @param[in] ParamPackage The pointer to the ParamPackage list.
71 @retval EFI_SUCCESS Filled in SPD_ENTRY_INDEXER successfully.
72 @retval EFI_INVALID_PARAMETER The mistaken user input in ParamPackage list.
76 IN OUT SAD_ENTRY_INDEXER
*Indexer
,
77 IN LIST_ENTRY
*ParamPackage
83 CONST CHAR16
*ValueStr
;
87 if (ShellCommandLineGetFlag (ParamPackage
, L
"-i")) {
88 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-i");
89 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-d")) {
90 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-d");
91 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-e")) {
92 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-e");
94 return EFI_INVALID_PARAMETER
;
97 if (ValueStr
== NULL
) {
98 return EFI_INVALID_PARAMETER
;
101 Value64
= StrToUInteger (ValueStr
, &Status
);
102 if (!EFI_ERROR (Status
)) {
103 Indexer
->Index
= (UINTN
) Value64
;
104 ZeroMem (&Indexer
->SaId
, sizeof (EFI_IPSEC_SA_ID
));
106 if ((!ShellCommandLineGetFlag (ParamPackage
, L
"--lookup-spi")) ||
107 (!ShellCommandLineGetFlag (ParamPackage
, L
"--lookup-ipsec-proto")) ||
108 (!ShellCommandLineGetFlag (ParamPackage
, L
"--lookup-dest"))) {
113 STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS
),
116 L
"--lookup-spi --lookup-ipsec-proto --lookup-dest"
118 return EFI_INVALID_PARAMETER
;
130 Status1
= GetNumber (
131 L
"--lookup-ipsec-proto",
133 &Indexer
->SaId
.Proto
,
134 sizeof (EFI_IPSEC_PROTOCOL_TYPE
),
140 if (EFI_ERROR (Status
) || EFI_ERROR (Status1
)) {
141 return EFI_INVALID_PARAMETER
;
144 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"--lookup-dest");
145 ASSERT (ValueStr
!= NULL
);
147 Status
= EfiInetAddr2 ((CHAR16
*) ValueStr
, &Indexer
->SaId
.DestAddress
);
148 if (EFI_ERROR (Status
)) {
153 STRING_TOKEN (STR_IPSEC_CONFIG_INCORRECT_PARAMETER_VALUE
),
159 return EFI_INVALID_PARAMETER
;
167 Fill in PAD_ENTRY_INDEXER through ParamPackage list.
169 @param[in, out] Indexer The pointer to the PAD_ENTRY_INDEXER structure.
170 @param[in] ParamPackage The pointer to the ParamPackage list.
172 @retval EFI_SUCCESS Filled in PAD_ENTRY_INDEXER successfully.
173 @retval EFI_INVALID_PARAMETER The mistaken user input in ParamPackage list.
176 ConstructPadIndexer (
177 IN OUT PAD_ENTRY_INDEXER
*Indexer
,
178 IN LIST_ENTRY
*ParamPackage
183 CONST CHAR16
*ValueStr
;
187 if (ShellCommandLineGetFlag (ParamPackage
, L
"-i")) {
188 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-i");
189 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-d")) {
190 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-d");
191 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-e")) {
192 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-e");
194 return EFI_INVALID_PARAMETER
;
197 if (ValueStr
== NULL
) {
198 return EFI_INVALID_PARAMETER
;
201 Value64
= StrToUInteger (ValueStr
, &Status
);
203 if (!EFI_ERROR (Status
)) {
204 Indexer
->Index
= (UINTN
) Value64
;
205 ZeroMem (&Indexer
->PadId
, sizeof (EFI_IPSEC_PAD_ID
));
208 if (ShellCommandLineGetFlag (ParamPackage
, L
"--lookup-peer-address")) {
209 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"--lookup-peer-address");
210 ASSERT (ValueStr
!= NULL
);
212 Indexer
->PadId
.PeerIdValid
= FALSE
;
213 Status
= EfiInetAddrRange ((CHAR16
*) ValueStr
, &Indexer
->PadId
.Id
.IpAddress
);
214 if (EFI_ERROR (Status
)) {
219 STRING_TOKEN (STR_IPSEC_CONFIG_INCORRECT_PARAMETER_VALUE
),
222 L
"--lookup-peer-address",
225 return EFI_INVALID_PARAMETER
;
228 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"--lookup-peer-id");
229 if (ValueStr
== NULL
) {
234 STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS
),
237 L
"--lookup-peer-address --lookup-peer-id"
239 return EFI_INVALID_PARAMETER
;
242 Indexer
->PadId
.PeerIdValid
= TRUE
;
243 ZeroMem (Indexer
->PadId
.Id
.PeerId
, MAX_PEERID_LEN
);
244 StrnCpyS ((CHAR16
*) Indexer
->PadId
.Id
.PeerId
, MAX_PEERID_LEN
/ sizeof (CHAR16
), ValueStr
, MAX_PEERID_LEN
/ sizeof (CHAR16
) - 1);
251 CONSTRUCT_POLICY_ENTRY_INDEXER mConstructPolicyEntryIndexer
[] = {
252 (CONSTRUCT_POLICY_ENTRY_INDEXER
) ConstructSpdIndexer
,
253 (CONSTRUCT_POLICY_ENTRY_INDEXER
) ConstructSadIndexer
,
254 (CONSTRUCT_POLICY_ENTRY_INDEXER
) ConstructPadIndexer