2 The implementation of construct ENTRY_INDEXER in IpSecConfig application.
4 Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
6 SPDX-License-Identifier: BSD-2-Clause-Patent
10 #include "IpSecConfig.h"
15 Fill in SPD_ENTRY_INDEXER through ParamPackage list.
17 @param[in, out] Indexer The pointer to the SPD_ENTRY_INDEXER structure.
18 @param[in] ParamPackage The pointer to the ParamPackage list.
20 @retval EFI_SUCCESS Filled in SPD_ENTRY_INDEXER successfully.
24 IN OUT SPD_ENTRY_INDEXER
*Indexer
,
25 IN LIST_ENTRY
*ParamPackage
30 CONST CHAR16
*ValueStr
;
34 if (ShellCommandLineGetFlag (ParamPackage
, L
"-i")) {
35 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-i");
36 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-d")) {
37 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-d");
38 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-e")) {
39 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-e");
41 return EFI_INVALID_PARAMETER
;
44 if (ValueStr
== NULL
) {
45 return EFI_INVALID_PARAMETER
;
48 Value64
= StrToUInteger (ValueStr
, &Status
);
49 if (!EFI_ERROR (Status
)) {
50 Indexer
->Index
= (UINTN
) Value64
;
51 ZeroMem (Indexer
->Name
, MAX_PEERID_LEN
);
53 UnicodeStrToAsciiStrS (ValueStr
, (CHAR8
*) Indexer
->Name
, MAX_PEERID_LEN
);
60 Fill in SAD_ENTRY_INDEXER through ParamPackage list.
62 @param[in, out] Indexer The pointer to the SAD_ENTRY_INDEXER structure.
63 @param[in] ParamPackage The pointer to the ParamPackage list.
65 @retval EFI_SUCCESS Filled in SPD_ENTRY_INDEXER successfully.
66 @retval EFI_INVALID_PARAMETER The mistaken user input in ParamPackage list.
70 IN OUT SAD_ENTRY_INDEXER
*Indexer
,
71 IN LIST_ENTRY
*ParamPackage
77 CONST CHAR16
*ValueStr
;
81 if (ShellCommandLineGetFlag (ParamPackage
, L
"-i")) {
82 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-i");
83 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-d")) {
84 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-d");
85 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-e")) {
86 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-e");
88 return EFI_INVALID_PARAMETER
;
91 if (ValueStr
== NULL
) {
92 return EFI_INVALID_PARAMETER
;
95 Value64
= StrToUInteger (ValueStr
, &Status
);
96 if (!EFI_ERROR (Status
)) {
97 Indexer
->Index
= (UINTN
) Value64
;
98 ZeroMem (&Indexer
->SaId
, sizeof (EFI_IPSEC_SA_ID
));
100 if ((!ShellCommandLineGetFlag (ParamPackage
, L
"--lookup-spi")) ||
101 (!ShellCommandLineGetFlag (ParamPackage
, L
"--lookup-ipsec-proto")) ||
102 (!ShellCommandLineGetFlag (ParamPackage
, L
"--lookup-dest"))) {
107 STRING_TOKEN (STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS
),
110 L
"--lookup-spi --lookup-ipsec-proto --lookup-dest"
112 return EFI_INVALID_PARAMETER
;
124 Status1
= GetNumber (
125 L
"--lookup-ipsec-proto",
127 &Indexer
->SaId
.Proto
,
128 sizeof (EFI_IPSEC_PROTOCOL_TYPE
),
134 if (EFI_ERROR (Status
) || EFI_ERROR (Status1
)) {
135 return EFI_INVALID_PARAMETER
;
138 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"--lookup-dest");
139 ASSERT (ValueStr
!= NULL
);
141 Status
= EfiInetAddr2 ((CHAR16
*) ValueStr
, &Indexer
->SaId
.DestAddress
);
142 if (EFI_ERROR (Status
)) {
147 STRING_TOKEN (STR_IPSEC_CONFIG_INCORRECT_PARAMETER_VALUE
),
153 return EFI_INVALID_PARAMETER
;
161 Fill in PAD_ENTRY_INDEXER through ParamPackage list.
163 @param[in, out] Indexer The pointer to the PAD_ENTRY_INDEXER structure.
164 @param[in] ParamPackage The pointer to the ParamPackage list.
166 @retval EFI_SUCCESS Filled in PAD_ENTRY_INDEXER successfully.
167 @retval EFI_INVALID_PARAMETER The mistaken user input in ParamPackage list.
170 ConstructPadIndexer (
171 IN OUT PAD_ENTRY_INDEXER
*Indexer
,
172 IN LIST_ENTRY
*ParamPackage
177 CONST CHAR16
*ValueStr
;
181 if (ShellCommandLineGetFlag (ParamPackage
, L
"-i")) {
182 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-i");
183 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-d")) {
184 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-d");
185 } else if (ShellCommandLineGetFlag (ParamPackage
, L
"-e")) {
186 ValueStr
= ShellCommandLineGetValue (ParamPackage
, L
"-e");
188 return EFI_INVALID_PARAMETER
;
191 if (ValueStr
== NULL
) {
192 return EFI_INVALID_PARAMETER
;
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 StrnCpyS ((CHAR16
*) Indexer
->PadId
.Id
.PeerId
, MAX_PEERID_LEN
/ sizeof (CHAR16
), ValueStr
, MAX_PEERID_LEN
/ sizeof (CHAR16
) - 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